mirror of
https://gitlab.com/pezkuwichain/pezkuwi-sdk.git
synced 2026-10-20 18:56:23 +00:00
The single-key custodial model (see prior commit's own doc comment: "Custodial: A single keypair controls both sides") was replaced with a 3-of-5 multisig spanning the Serok/SerokiMeclise/Xezinedar/Berdevk/ Noter tiki role-holders (full record in res/validators-tiki.md, outside this repo). Discovered along the way: wUSDT's ~100M supply had zero real USDT backing on Polkadot Asset Hub - Treasury_1 (the actual asset owner, not the seed_path wallet this tool assumed) held 0 USDT/DOT there, with ~99M of the 100M supply sitting undistributed in Treasury_1's own account. Migrated Pezkuwi Asset Hub custody in one atomic batch (transfer 1M wUSDT to the multisig, set_team, then transfer_ownership last) signed by Treasury_1 - tx 0xd5dc550c5cf04f323e5c1d9c13f2056acafc9f56404c657b9743c15ff3a3aacb, verified on-chain. listen_deposits/listen_withdrawals no longer sign and submit mint/burn/transfer - no key this process holds has authority over the multisig account. They now only detect on-chain events and record status=pending_multisig_approval with the exact call parameters an operator needs; actual approval happens through pwap-web's existing multisig UI (shared/lib/multisig.ts, shared/lib/usdt.ts), not this relayer. BridgeConfig gained custody_multisig_polkadot/_pezkuwi fields. Added pezkuwi-subxt/pezkuwi-subxt-signer alongside the existing vanilla subxt dependency: vanilla subxt's codegen hardcodes the `sp_runtime` module path and its default signed-extension handling produced "bad signature" on submission against this chain's actual metadata - pezkuwi-subxt (following vendor/pezkuwi-subxt's own grant_noter_tiki.rs example: PezkuwiConfig, XCM v3, sudo_unchecked_weight) is what actually signs and submits successfully. Also used to grant the Xezinedar and Berdevk tiki roles (previously missing signatories for the multisig) to two validators via a relay-chain sudo XCM Transact, since the People chain has no local Sudo pallet.
23 lines
1.7 KiB
JSON
23 lines
1.7 KiB
JSON
{
|
|
"polkadot_rpc": "wss://polkadot-asset-hub-rpc.polkadot.io",
|
|
"pezkuwi_rpc": "wss://asset-hub-rpc.pezkuwichain.io",
|
|
"polkadot_usdt_asset_id": 1984,
|
|
"pezkuwi_wusdt_asset_id": 1000,
|
|
"min_deposit": 10000000,
|
|
"min_withdraw": 10000000,
|
|
"fee_basis_points": 10,
|
|
"seed_path": "bridge_seed.json",
|
|
"db_path": "bridge_db.json",
|
|
"custody_multisig_polkadot": "15sF76THfpefUaKomHZSpssayRbsp6Yt6ESgMrLjzJCmpe66",
|
|
"custody_multisig_pezkuwi": "5GvwxmCDp3PC33KHoeWSgj3S7ocE7nzk1jiCCZMPSDBFeNcj",
|
|
"_custody_migration_2026-07-13": {
|
|
"note": "Custody is no longer a single hot key. wUSDT (asset 1000) owner/issuer/admin/freezer on Pezkuwi Asset Hub is now the 3-of-5 multisig below - seed_path/BRIDGE_SEED_MNEMONIC in this file is stale and must not be used to mint/burn/transfer_ownership going forward. listen_deposits/listen_withdrawals in src/main.rs were updated the same day: they now only detect events and record status=pending_multisig_approval - actual mint/burn/release requires 3 of the 5 signatories to approve via pwap-web's multisig UI (shared/lib/multisig.ts, shared/lib/usdt.ts).",
|
|
"multisig_threshold": 3,
|
|
"multisig_signatories": 5,
|
|
"multisig_account_pezkuwi_prefix42": "5GvwxmCDp3PC33KHoeWSgj3S7ocE7nzk1jiCCZMPSDBFeNcj",
|
|
"multisig_account_polkadot_prefix0": "15sF76THfpefUaKomHZSpssayRbsp6Yt6ESgMrLjzJCmpe66",
|
|
"pezkuwi_side_status": "live - owns wUSDT asset 1000, seeded with 1,000,000 wUSDT (tx 0xd5dc550c5cf04f323e5c1d9c13f2056acafc9f56404c657b9743c15ff3a3aacb)",
|
|
"polkadot_side_status": "address computed, zero balance - no real USDT has ever been deposited by this ecosystem on Polkadot Asset Hub; needs at least existential DOT + real USDT deposits to become useful",
|
|
"details_doc": "/home/myhez/res/validators-tiki.md"
|
|
}
|
|
} |