From d90bb008540a838e43887bd0115b1ae9cfdb7a8c Mon Sep 17 00:00:00 2001 From: Kurdistan Tech Ministry Date: Mon, 3 Nov 2025 02:49:12 +0300 Subject: [PATCH] =?UTF-8?q?config:=20Adr=C3=AAs=C3=AAn=20multisig=20y?= =?UTF-8?q?=C3=AAn=20rast=C3=AEn=20z=C3=AAde=20kir?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Multisig Members (3/5): • Serok: 5D74yW53pg3gCaLMzGvZUNxiqTZMwFXA85bB2QYfcYh5Tdc4 • SerokiMeclise: 5GTRuK96TkmjUSuQnkjBJBCEmHSDSdW22ptWosxCBWACfsZp • Xezinedar: 5DRTYPChot1UPDHEeJVTtuE8dLDgCVvAcWbdnc8zwwpYYjeR • Noter: 5DFwqK698vL4gXHEcanaewnAqhxJ2rjhAogpSTHw3iwGDwd3 • Berdevk: 5F4V6dzpe72dE2C7YN3y7VGznMTWPFeSKL3ANhp4XasXjfvj Guhertin: ✅ ReservesDashboardPage.tsx - SPECIFIC_ADDRESSES bi adrêsên rastîn ✅ USDT_MULTISIG_SETUP.md - Tabloya adrêsên tije ✅ MULTISIG_CONFIG.md (nû) - Referansa bilez û complete config Ewlekarî: 🔒 Tenê public addresses hate paylaşkirin 🔒 Seed phrases/private keys NEHATINE dîtin 🔒 On-chain verification ji bo unique roles amade ye 🤖 Bi [Claude Code](https://claude.com/claude-code) re hate çêkirin Co-Authored-By: Claude --- MULTISIG_CONFIG.md | 138 ++++++++++++++++++++++++++++ USDT_MULTISIG_SETUP.md | 10 +- src/pages/ReservesDashboardPage.tsx | 7 +- 3 files changed, 147 insertions(+), 8 deletions(-) create mode 100644 MULTISIG_CONFIG.md diff --git a/MULTISIG_CONFIG.md b/MULTISIG_CONFIG.md new file mode 100644 index 00000000..f20fb4b2 --- /dev/null +++ b/MULTISIG_CONFIG.md @@ -0,0 +1,138 @@ +# 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: +```typescript +const SPECIFIC_ADDRESSES = { + Noter: '5DFwqK698vL4gXHEcanaewnAqhxJ2rjhAogpSTHw3iwGDwd3', + Berdevk: '5F4V6dzpe72dE2C7YN3y7VGznMTWPFeSKL3ANhp4XasXjfvj', +}; +``` + +### Verification: +1. 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) + ``` + +2. Verify multisig members match: + ```javascript + 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 + +1. **On-chain Setup:** + ```bash + # Create wUSDT asset with multisig as admin + assets.create(2, , 1000000) + assets.setMetadata(2, "Wrapped USDT", "wUSDT", 6) + ``` + +2. **Verify Multisig:** + ``` + Visit: http://localhost:8080/reserves + Check: Multisig Members tab + ``` + +3. **Test Transaction:** + ```bash + # 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 diff --git a/USDT_MULTISIG_SETUP.md b/USDT_MULTISIG_SETUP.md index 13e938b6..35e22b31 100644 --- a/USDT_MULTISIG_SETUP.md +++ b/USDT_MULTISIG_SETUP.md @@ -10,11 +10,11 @@ USDT Treasury, kullanıcıların gerçek USDT'yi chain'de wUSDT olarak kullanabi | # | Rol | Tiki | Unique | AccountId | Sorumluluk | |---|-----|------|--------|-----------|------------| -| 1️⃣ | **Founder/Başkan** | Serok | ✅ | `5Grw...` | Stratejik liderlik, son karar mercii | -| 2️⃣ | **Meclis Başkanı** | SerokiMeclise | ✅ | `5FHn...` | Yasama kontrolü, demokratik denetim | -| 3️⃣ | **Hazine Müdürü** | Xezinedar | ✅ | `5FLS...` | Treasury yönetimi, reserve management | -| 4️⃣ | **Noter** | Noter | ❌ | `5DAA...` | Hukuki belgelendirme, işlem kayıtları | -| 5️⃣ | **Sözcü/Temsilci** | Berdevk | ❌ | `5HGj...` | İletişim, şeffaflık, topluluk bilgilendirme | +| 1️⃣ | **Founder/Başkan** | Serok | ✅ | `5D74yW53pg3gCaLMzGvZUNxiqTZMwFXA85bB2QYfcYh5Tdc4` | Stratejik liderlik, son karar mercii | +| 2️⃣ | **Meclis Başkanı** | SerokiMeclise | ✅ | `5GTRuK96TkmjUSuQnkjBJBCEmHSDSdW22ptWosxCBWACfsZp` | Yasama kontrolü, demokratik denetim | +| 3️⃣ | **Hazine Müdürü** | Xezinedar | ✅ | `5DRTYPChot1UPDHEeJVTtuE8dLDgCVvAcWbdnc8zwwpYYjeR` | Treasury yönetimi, reserve management | +| 4️⃣ | **Noter** | Noter | ❌ | `5DFwqK698vL4gXHEcanaewnAqhxJ2rjhAogpSTHw3iwGDwd3` | Hukuki belgelendirme, işlem kayıtları | +| 5️⃣ | **Sözcü/Temsilci** | Berdevk | ❌ | `5F4V6dzpe72dE2C7YN3y7VGznMTWPFeSKL3ANhp4XasXjfvj` | İletişim, şeffaflık, topluluk bilgilendirme | ### Açıklama: - **Unique Roller (3):** Chain'de sadece 1 kişi bu role sahip olabilir (blockchain garantili) diff --git a/src/pages/ReservesDashboardPage.tsx b/src/pages/ReservesDashboardPage.tsx index 698d026f..09be1bf7 100644 --- a/src/pages/ReservesDashboardPage.tsx +++ b/src/pages/ReservesDashboardPage.tsx @@ -5,10 +5,11 @@ import { Button } from '@/components/ui/button'; import { ReservesDashboard } from '@/components/ReservesDashboard'; import { USDTBridge } from '@/components/USDTBridge'; -// TODO: Replace with actual addresses when multisig is set up +// USDT Treasury Multisig Member Addresses const SPECIFIC_ADDRESSES = { - Noter: '5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy', // Example address - Berdevk: '5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw', // Example address + // Non-unique roles - manually specified + Noter: '5DFwqK698vL4gXHEcanaewnAqhxJ2rjhAogpSTHw3iwGDwd3', + Berdevk: '5F4V6dzpe72dE2C7YN3y7VGznMTWPFeSKL3ANhp4XasXjfvj', }; const ReservesDashboardPage = () => {