mirror of
https://github.com/pezkuwichain/pwap.git
synced 2026-04-22 02:07:55 +00:00
c48ded7ff2
Restructured the project to support multiple frontend applications: - Move web app to web/ directory - Create pezkuwi-sdk-ui/ for Polkadot SDK clone (planned) - Create mobile/ directory for mobile app development - Add shared/ directory with common utilities, types, and blockchain code - Update README.md with comprehensive documentation - Remove obsolete DKSweb/ directory This monorepo structure enables better code sharing and organized development across web, mobile, and SDK UI projects.
3.4 KiB
3.4 KiB
USDT Treasury Multisig Configuration
🔐 Multisig Members (3/5 Threshold)
1️⃣ Serok (Founder) - UNIQUE ✅
Address: 5D74yW53pg3gCaLMzGvZUNxiqTZMwFXA85bB2QYfcYh5Tdc4
Public Key: 0x2e09d02b815849b92dd5a5aa0d5591e1b1c82311a9385975ebb0ff2cc34e6727
Source: On-chain (pallet-tiki)
2️⃣ SerokiMeclise (Parliament Speaker) - UNIQUE ✅
Address: 5GTRuK96TkmjUSuQnkjBJBCEmHSDSdW22ptWosxCBWACfsZp
Public Key: 0xc245deedbf626ba3400df709befe52d938eca44e863ea5bd59b0a81f3c41f632
Source: On-chain (pallet-tiki)
3️⃣ Xezinedar (Treasurer) - UNIQUE ✅
Address: 5DRTYPChot1UPDHEeJVTtuE8dLDgCVvAcWbdnc8zwwpYYjeR
Public Key: 0x3c10328e0bcfbb03969f72ed0630f091e4603f2a865c8184d33f4bfa3385db02
Source: On-chain (pallet-tiki)
4️⃣ Noter (Notary) - Specified
Address: 5DFwqK698vL4gXHEcanaewnAqhxJ2rjhAogpSTHw3iwGDwd3
Public Key: 0x34cefb7e586c150b771813a210d6d5a2a60c8d8bc2b2fecf58fd0af11341167f
Source: Hardcoded (non-unique role)
5️⃣ Berdevk (Spokesperson) - Specified
Address: 5F4V6dzpe72dE2C7YN3y7VGznMTWPFeSKL3ANhp4XasXjfvj
Public Key: 0x8489bfd011f05bff909dff31d7fee6182ce058673cbf98b03a8c904f89e8f43e
Source: Hardcoded (non-unique role)
🎯 Multisig Address Calculation
Sorted Member Addresses (Required for multisig):
1. 5D74yW53pg3gCaLMzGvZUNxiqTZMwFXA85bB2QYfcYh5Tdc4 (Serok)
2. 5DFwqK698vL4gXHEcanaewnAqhxJ2rjhAogpSTHw3iwGDwd3 (Noter)
3. 5DRTYPChot1UPDHEeJVTtuE8dLDgCVvAcWbdnc8zwwpYYjeR (Xezinedar)
4. 5F4V6dzpe72dE2C7YN3y7VGznMTWPFeSKL3ANhp4XasXjfvj (Berdevk)
5. 5GTRuK96TkmjUSuQnkjBJBCEmHSDSdW22ptWosxCBWACfsZp (SerokiMeclise)
Threshold: 3/5
Multisig Address:
To be calculated using: calculateMultisigAddress(sortedMembers, 3)
Formula: Substrate multisig address derivation
Note: Multisig address will be deterministically derived from sorted member addresses and threshold.
📋 Quick Reference
Frontend Config Location:
src/pages/ReservesDashboardPage.tsx
How to Update:
const SPECIFIC_ADDRESSES = {
Noter: '5DFwqK698vL4gXHEcanaewnAqhxJ2rjhAogpSTHw3iwGDwd3',
Berdevk: '5F4V6dzpe72dE2C7YN3y7VGznMTWPFeSKL3ANhp4XasXjfvj',
};
Verification:
-
Check on-chain tiki holders for unique roles:
api.query.tiki.tikiHolder(Tiki.Serok) api.query.tiki.tikiHolder(Tiki.SerokiMeclise) api.query.tiki.tikiHolder(Tiki.Xezinedar) -
Verify multisig members match:
import { getMultisigMembers } from '@/lib/multisig'; const members = await getMultisigMembers(api, SPECIFIC_ADDRESSES); console.log(members);
🔒 Security Reminders
✅ PUBLIC (Safe to share):
- Account addresses (5xxx...)
- Public keys (0xxx...)
- Multisig configuration
🔴 NEVER SHARE:
- Seed phrases (12/24 words)
- Private keys
- Mnemonic words
- JSON keystore passwords
🚀 Next Steps
-
On-chain Setup:
# Create wUSDT asset with multisig as admin assets.create(2, <multisig_address>, 1000000) assets.setMetadata(2, "Wrapped USDT", "wUSDT", 6) -
Verify Multisig:
Visit: http://localhost:8080/reserves Check: Multisig Members tab -
Test Transaction:
# Create a test multisig tx # First member initiates # 2 more members approve # Execute when 3/5 reached
Last Updated: 2025-11-03 Status: ✅ Configured and Ready