دا پاڼه وکاروئ ترڅو کله چې له ځنځیر سره متقابل عمل کوئ سم کتابتون وټاکئ، یو پارامیټر د هغه څه سره پرتله کړئ چې نوډ یې پلي کوي، او یو پېژندونکی یا یوه ژمنه پخپله بیا محاسبه کړئ. دلته هر ارزښت هماغه دی چې کوډ یې په ځنځیر 20 (fullnode v0.6.8) کې چلوي.
بنسټیز توکي او د هغوی کارونې
| بنسټیز توکی | پارامیټرونه | کارونه |
|---|---|---|
| Dilithium2 | 1,312 بایټه عامه کیلي، 2,420 بایټه لاسلیک؛ د کیلي جوړې له 32 بایټه تخم څخه اخیستل کېږي | د تصدیقوونکو رایې او د بلاک وړاندیزونه؛ د فاسیټ مینټونه؛ Unbond، Withdraw او د یوه تصدیقوونکي Registration؛ د یوه AdmitValidator رایې (ځنځیر 20)؛ د راټولوونکي کړنې؛ د یوه RPL ټوکن د Key د مینټ واک (TokenMint، SetAuthority)؛ د پل د ساتونکو پوسټ-کوانټم ګډ لاسلیکونه، د هغه د ځنډولو کیلي او، په ځنځیر 20 کې، په یوه بدلون کې د نویو کیلیو د ملکیت ثبوتونه (لاندې) |
| ML-KEM-768 | 1,184 بایټه د کپسول کولو کیلي، 1,088 بایټه سایفرټېکسټ | د یوې نوټ لفافې د هرې راکړې ورکړې ځانګړې کیلي د ترلاسه کوونکي پتې ته مهرول؛ د یوې غوښتنې د ننوت لفافه یوه پلټونکي ته مهرول؛ د ثبوت جوړونې یوه دنده یوه جوړه شوي ثبوت جوړوونکي ته مهرول |
| ChaCha20-Poly1305 | 32 بایټه کیلي، تصادفي 12 بایټه نانس چې مخې ته نښلول کېږي، 16 بایټه ټګ | د لفافې هره برخه: د نوټونو متنونه، پېچل شوې د راکړې ورکړې کیلي، د غوښتنې د ننوت ټرانسکرېپټونه؛ د یوه جوړه شوي ثبوت جوړوونکي دندې او ځوابونه |
| BLAKE3 | 32 بایټه وتنه، تل د یوه ډومین تار سره چې مخې ته نښلول کېږي | پتې، د راکړې ورکړې پېژندونکي، د راکړې ورکړې تړنه او د غوښتنې تړنه، د پروګرام پېژندونکي، د ټوکن د شتمنۍ پېژندونکي، د حالت ریښه او د هغې Merkle ونې، د p2p هویت، د لاسلیک پیغامونه، د پل د شتمنۍ پېژندونکي، د پل د یوې زیرمې پټوونکی او د پل د فیس د نوټونو پټوونکي |
| Poseidon2 پر Goldilocks | پلنوالی 8، نرخ 4، ظرفیت 4، بې ډکونې د بیا لیکلو سپنج؛ د پیغام عناصر 32 بیټي کلمې دي؛ د پړاو 86 ثابتونه د ځنځیر 15 له پرې کېدو راهیسې د نوډ په سرچینه (poseidon2_constants.rs) کې یو لفظي جدول دی، هماغه ارزښتونه چې مخکې د تخم لرونکي انتخاب له لارې تولیدېدل | په یوه ثبوت کې دننه هر څه: کیلي، د نوټونو ژمنې، باطلوونکي، د ژمنو ونه، د پروګرام ډایجسټ hc، د ننوت ژمنې H_IN او H_PUB، د بنډل ډایجسټ، د اجازې ژمنه |
| secp256k1 ECDSA + keccak256 | ټیټ-s لاسلیکونه، د Ethereum په ډول 20 بایټه د ساتونکو پتې، mu = keccak256(keccak256(body)) | د پل د ساتونکو تصدیقونه، ترڅو هماغه کیلي پر EVM قراردادونو، د Solana پر پروګرام او پر Rand کار وکړي؛ په Rand کې هر تصدیق لاندې Dilithium2 کوروم ته هم اړتیا لري |
| bech32m (BIP-350) | د انسان لپاره د لوستلو وړ برخه rpl، 32 بایټه محتوا، 52 د معلوماتو توري + 6 د چکسم توري = 62 | د یوه RPL ټوکن د شتمنۍ د پېژندونکي متني بڼه rpl1… |
| Plonky3 دستهيي STARK | Goldilocks p = 2⁶⁴ − 2³² + 1، پټوونکی FRI، پراختیا 8، د قاتولو درجه 8، 80 پوښتنې، د کار-ثبوت 20 بیټه | هر بنډل ثبوت، د اجازې ثبوت او د غوښتنې ثبوت؛ یو بنډل ثبوت او د هغه د اجازې ثبوت د خپلې راکړې ورکړې اته د تړنې کلمې د خپلې عامې ننوت برخې په توګه لېږدوي |
د سپینې پاڼې هدفي پارامیټرونه په ځینو ځایونو کې له هغه څه توپیر لري چې پلي کول یې چلوي (د بېلګې په توګه د پاڼې 384 بیټي ټرانسکرېپټ هش د zkVM د Poseidon2 ټرانسکرېپټ په مقابل کې). دا پاڼې کوډ تشریح کوي.
پر پل پوسټ-کوانټم ګډ لاسلیکونه
د پل د ساتونکو تصدیقونه secp256k1 ECDSA دي، چې یو کوانټم مخالف یې جعل کولی شي. له ځنځیر 14 راهیسې هر BridgeAttest — که زیرمه وي او که د ساتونکو د ټولګې بدلون — باید د هماغو ساتونکو له خوا پر هماغه ډایجسټ د Dilithium2 لاسلیکونو یو کوروم هم ولېږدوي:
M = "rand-bridge-pq-cosign-1" || rand_chain_id (u64 BE) || mu // 63 bytes, deterministic signing
چېرته چې mu = keccak256(keccak256(body)) هغه څه دي چې ECDSA کوروم یې لاسلیکوي. په M کې د Rand د ځنځیر پېژندونکی د testnet یو ګډ لاسلیک په بل Rand ځنځیر کې له تاییدېدو ساتي، که څه هم د ساتونکو کیلي بیا کارول شوې وي. M یوازې د ځنځیر پېژندونکی تړي، په ځنځیر 20 کې هم: دا هغه یوازینی لاسلیک شوی پیغام دی چې binding_domain د جینیسس هش شاته نه دی لېږدولی، ځکه هغه ساتونکي ډیمونونه چې لاسلیک یې کوي په بل ریپازیټوري کې دي. د یوه ځنځیر یوه کاپي چې هماغه د ځنځیر پېژندونکی او هماغه د ساتونکو ټولګه ولري، د خپلو زیرمو ګډ لاسلیکونه به ومني؛ د ساتونکو د ټولګې شاخص په M کې نشته، نو یو ګډ لاسلیک د ECDSA ټولګې له بدلون وروسته هم اعتبار لري. د کړنې pq_signatures ساحه د PqSignature { index: u8, signature } لړلیک دی، چې لومړی ارزانه او بیا ګرانه ازموینې پرې کېږي: quorum(n) ≤ len ≤ n (PqNoQuorum)، شاخصونه په کلکه زیاتېدونکي (PqIndexOrder)، هر شاخص له n څخه ټیټ (PqIndexOutOfRange)، هر لاسلیک دقیقاً 2,420 بایټه (PqBadSignatureLength)، او په پای کې هر لاسلیک د pq_guardians[index] لاندې تایید شوی (PqBadSignature). اړینه نه ده چې PQ لاسلیکوونکي هماغه ECDSA لاسلیکوونکي وي؛ هر کوروم په خپل سر شمېرل کېږي. دا ساحه د راکړې ورکړې په تړنه کې دننه ده، نو په یوه کاپي کې نه لرې کېدای شي او نه بدلېدای شي.
د PQ ټولګه د جینیسس bridge.pq_guardians ده — په ځنځیر 20 کې اته 1,312 بایټه کیلي، لکه په ځنځیرونو 15 تر 19 کې، چې د شاخص له مخې د جینیسس له ECDSA ټولګې، د ساتونکو له 1مې ټولګې، سره سمون لري (ځنځیر 14 شپږ کیلي درلودې، د 0 ټولګې سره سمې). د ECDSA د ساتونکو د ټولګې بدلون هېڅکله دا نه بدلوي. په ځنځیر 14 کې دا د ځنځیر د ټول عمر لپاره ثابته وه؛ له ځنځیر 15 راهیسې جینیسس د پل rules_v2 ډله لري، چې له مخې یې یو PQ کوروم کولی شي ټوله PQ ټولګه (RotatePqGuardians) یا د ځنډولو کیلي (RotatePauseKey) بدله کړي، هر یو د پل د rotation_nonce لاندې. د ځنځیر 20 جینیسس bridge.rotation زیاتوي: بدلون باید V2 کړنه وي، چې د هرې نوې کیلي خپل Dilithium2 لاسلیک پر هماغه پیغام ولري (د ملکیت ثبوت)، او په ځنځیر کې له ثبتېدو یوه ورځ وروسته اغېزمن کېږي، مګر دا چې اوسنۍ د ځنډولو کیلي یې لغوه کړي (پل). rand_getBridgeState کیلي وړاندې کوي او یو ډیکوډ شوی bridge_attest pq_signers ښيي، یعنې هغه شاخصونه چې لاسلیک یې کړی. هماغه PQ کوروم د پل د حکومتولۍ پیغامونو ته اجازه ورکوي، چې هر یو یې ثابت لویپایي ترتیب لري او د ځنځیر پېژندونکی او یو نانس پکې شامل دي. په ځنځیر 20 کې (جینیسس binding_domain: 1) د هر ډومین د نسخې شمېره 2 ده او 32 بایټه جینیسس هش د ډومین او د ځنځیر پېژندونکي ترمنځ ځای لري؛ ځنځیرونه 14 تر 19 د -1 بڼې کاروي:
| پیغام | ډومین (ځنځیرونه 14–19 / ځنځیر 20) | لاسلیکوونکی |
|---|---|---|
M_pause | rand-bridge-pause-1 / -2 | د جینیسس یوازینۍ د ځنډولو کیلي (Dilithium2)، چې ځنډولی شي خو هېڅکله ځنډ نه شي لرې کولی |
M_unpause | rand-bridge-pq-unpause-1 / -2 | د PQ ساتونکو یو کوروم |
M_list | rand-bridge-pq-list-1 / -2 | د PQ ساتونکو یو کوروم (ListBacking) |
M_register | rand-bridge-pq-register-1 / -2 | د PQ ساتونکو یو کوروم (RegisterBridgedToken) |
M_rotate_pq | rand-bridge-pq-rotate-pq-1 / -2 | د اوسنۍ PQ ټولګې یو کوروم (RotatePqGuardians، rules_v2 ځنځیرونه)؛ په ځنځیر 20 کې هره نوې کیلي هم، د خپل ملکیت د ثبوت په توګه |
M_rotate_pause | rand-bridge-pq-rotate-pause-1 / -2 | د اوسنۍ PQ ټولګې یو کوروم (RotatePauseKey، rules_v2 ځنځیرونه)؛ په ځنځیر 20 کې نوې کیلي هم |
M_cancel | rand-bridge-cancel-rotation-1 / -2، د وروستي kind بایټ سره | اوسنۍ د ځنډولو کیلي (CancelRotation، هغه ځنځیرونه چې bridge.rotation لري: ځنځیر 20) |
STARK په تولید کې
zkVM په د محدودیتونو په 8مه ټولګه کې دی: نهه لازمي جدولونه (program، cpu، memory، alu، range، nibble، poseidon2، input، public) او سربېره پر دې یو keccak او یو sha256 جدول چې یو ثبوت یې یوازې هغه وخت لري چې د هغه مېلمه پروګرام اړوند سیستمي غوښتنه کړې وي؛ دا جدولونه په اوولسو بسونو سره نښلول شوي او د یوه دستهيي STARK په توګه ثابتېږي. د محدودیتونو له 7مې ټولګې راهیسې هر اعلان شوی جدول لږ تر لږه 2⁷ قطارونه لري او د هر جدول LogUp پای د اوولسم بس، BLIND، له لارې پټ شوی دی. د یوه ثبوت عامه انٹرفېس 35 د ساحې عناصر دي (pv::NUM): د ننوتو pc، پوړ، د وتنې اته کلمې، د پروګرام ډایجسټ hc (8 کلمې)، مالګه لرونکې د خصوصي ننوت ژمنه H_IN (8)، بې مالګې د عامې برخې ډایجسټ H_PUB (8) او، د محدودیتونو له 8مې ټولګې راهیسې، اعلان شوی د ګاز حد GAS_LIMIT.
| پارامیټر | تولید | یادونه |
|---|---|---|
| د FRI پوښتنې | 80 | د محدودیتونو د 3 او 4 ټولګو 27 پوښتنو ته بیا تنظیم د 2026-09-12 له پلټنې وروسته بېرته واخیستل شو: یوازې ~42 ثابت شوي بیټونه یې پرېښي وو |
| پراختیا | 8 (log_blowup = 3) | د هر جدول د محدودیت اعظمي درجه د 8 له سقف لاندې ټاکل شوې |
| د قاتولو درجه | 8 | |
| د کار-ثبوت بیټونه | 20 | |
| سالمیت | 3·80 + 20 = 260 بیټه اټکلي (ethSTARK)؛ د نږدېوالي تشو لاندې شاوخوا 86 بیټه ثابت شوي | |
| صفر پوهه | احصایوي: LDE او د FRI دستهيي پولینومیال تصادفي شوي، نو د یوې اجرا دوه ثبوتونه سره توپیر لري | د محدودیتونو له 7مې ټولګې راهیسې هر اعلان شوی جدول لږ تر لږه 2⁷ قطاره دی، چې له هغو 82 ټکو ډېر دي چې یو ثبوت یې پرانیزي، او د LogUp پایونه پټ شوي دي |
| پوړونه | 10, 12, 14, 16, 18, 20 | یو ثبوت پوړ ښکاره کوي، خو هېڅکله د دورو شمېر نه؛ له fullnode v0.5.6 راهیسې د 14 پوړ څخه پورته د غوښتنې ثبوت ردېږي (CallTierTooHigh)، بنډل ثبوت په 14 پوړ او د اجازې ثبوت په 10 پوړ ټاکل شوی |
| د ثبوت سقف | د جینیسس max_proof_bytes: په ځنځیرونو 17 تر 20 کې 4 MiB (4,194,304)؛ په ځنځیرونو 13 تر 16 کې 8 MiB؛ په هغه جینیسس کې چې دا نه لري، لکه ځنځیر 12، 2 MiB (MAX_PROOF_BYTES) | 2 MiB له هر هغه بې هش جدوله ثبوت څخه پورته دی چې پلي شوي مېلمه پروګرامونه یې جوړولی شي، او له keccak لرونکي ثبوت څخه ښکته دی؛ 4 MiB دواړه مني |
| ګاز | د cpu هر قطار لپاره 1؛ د Poseidon2 د جذب هر قطار لپاره 3؛ د SHA256 هر قطار لپاره 64؛ د KECCAK هر قطار لپاره 192 | د cpu جدول په GAS ستن کې راټولېږي او ثابتېږي چې له GAS_LIMIT څخه زیات نه دی؛ تاییدوونکی هغه حد ردوي چې له gas_max(t, k, s) = (2ᵗ − 1) + 2ᵗ⁻² + 191·(2ᵏ/32) + 63·(2ˢ/64) څخه پورته وي، چې د بې هشه 10 پوړ سرلیک لپاره 1,279 او د 14 پوړ سرلیک لپاره 20,479 دی |
د محدودیتونو په ټولګه 6 کې اندازه شوې کچې (Apple Silicon، د خپرونې جوړښت): یو keccak-پرته تولیدي ثبوت په پوړ 10 کې 1,298,729 بایټه او په پوړ 12 کې 1,359,978 بایټه و؛ یو keccak لرونکی د پوړ 10 ثبوت 3,198,430 بایټه و، چې د 2 MiB له ډیفالټ څخه زیات او د ځنځیرونو 13 تر 15 له 8 MiB څخه کم و. د تقاعد شوي 2-in-2-out بنډل د میلمه پروګرام د پوړ 14 ثبوت په ځنځیر 8 کې 1,321,773 بایټه، او په ځنځیر 13 کې له 1,418,406 تر 1,420,423 بایټه اندازه شو. د ځنځیر 14 د پټې شتمنۍ 4-in-4-out بنډل میلمه پروګرام پرته له کوم هش جدول څخه په پوړ 14 کې پاتې کېږي، او ثبوتونه یې په ځنځیر 14 کې (2026-09-20) 1,422,116 او 1,423,170 بایټه اندازه شول، او ځنځیر 15 همدا میلمه پروګرام ثابت کړ (hc_bundle نه دی بدل شوی)؛ هلته یو بنډل ثبوت public_log_height 4 اعلان کړ، چې د اتو تړونکو کلمو لوړوالی دی، او نوډ د تاییدوونکي کیلي له جوړولو مخکې هر بل ارزښت رد کړ. د ERC-20 approve د غوښتنې keccak لرونکی ثبوت چې د 2026-09-19 په نېټه په ځنځیر 13 کې جوړ شو (پوړ 16) 3,412,405 بایټه دی؛ د fullnode v0.5.6 راهیسې هر ځنځیر دا غوښتنه په پوړ 16 کې ردوي.
د محدودیتونو د ټولګې 7 د پټونې ستنې او د جدولونو لږترلږه کچې یو هش-پرته ثبوت شاوخوا 5% لوړوي: د fullnode له خوا د 2026-09-28 په نېټه اندازه شوي، fib په پوړ 10 کې 1,367,688 بایټه او په پوړ 12 کې 1,424,299 بایټه دی، یو keccak لرونکی د پوړ 10 ثبوت 3,283,898 بایټه، او د پوړ 14 د پټې شتمنۍ بنډل ثبوت 1,498,821 (میلمه v1) او 1,497,156 (میلمه v2) بایټه. له هغه راهیسې یو بنډل ثبوت public_log_height 7 اعلانوي. د محدودیتونو ټولګه 8 له 1% څخه کم زیاتوالی راولي. په ځنځیر 18 کې د 2026-09-30 په نېټه (Apple Silicon) اندازه شوي: د تصدیق ثبوتونه له 1,364,940 تر 1,375,371 بایټه (پوړ 10)، بنډل ثبوتونه له 1,494,151 تر 1,504,260 بایټه (پوړ 14، میلمه v3)، او د غوښتنې ثبوتونه: په پوړ 14 کې پرته له هش جدول 1,498,589 بایټه، په پوړ 14 کې د SHA-256 له جدول سره 1,911,152 بایټه او په پوړ 12 کې د Keccak له جدول سره 3,346,865 بایټه. ټول د ځنځیرونو 18 تر 20 د 4 MiB په سقف کې ځایېږي.
تایید د ګرمې تاییدوونکې کیلي سره شاوخوا 16 ms وخت نیسي، او هغه لومړی ځل چې د (tier, heights) کیلي جوړېږي شاوخوا 230 ms. د test FRI پروفایل (16 پوښتنې) یوازې د ازموینو د ټولګې لپاره شته او ناامن دی؛ د ځنځیر 20 جنسیس production ثابتوي. Fullnode v0.6.8 هېڅ محدودیت نه بدلوي: ځنځیر 20 همغه hc_bundle او hc_auth ثابتوي چې ځنځیرونه 17 تر 19 یې ثابتوي.
هغه هش جوړښتونه چې تاسو یې بیا جوړولی شئ
BLAKE3 له ډومېن سره: blake3(domain || data)، د ډومېن متن پرته له جلاکوونکي.
د تړلو ډومېن. د ځنځیر 20 جنسیس binding_domain: 1 ټاکي (fullnode v0.6.8، د v6 پلټنه، BIND-1). په داسې ځنځیر کې هر د ثبوت تړل او د لاسلیک شوي عمل هر پیغام چې پخوا یې یوازې د ځنځیر پېژند تاړه، اوس د جنسیس هش هم تړي: د ډومېن د نسخې شمېره یو زیاتېږي او 32-بایټه جنسیس هش د هش په ننوتي کې لومړی، د ځنځیر له پېژند مخکې، راځي. یو ثبوت یا لاسلیک چې د یوه ځنځیر لپاره جوړ شوی وي بیا په بل هېڅ ځنځیر نه تاییدېږي، حتی په هغه ځنځیر هم نه چې د ځنځیر همغه پېژند او کیلي بیا کاروي، لکه یو بیا پرې شوی ځنځیر. تړونکې کلمې د ثبوتونو عامه ننوتنه ده، نو هېڅ میلمه پروګرام یا تاییدوونکې کیلي بدله نه شوه. جدول دواړه بڼې ورکوي؛ ځنځیرونه 14 تر 19 لومړۍ بڼه، بایټ په بایټ، کاروي. هغه چې له مخکې جنسیس ته تړل شوي وو او نه دي بدل شوي: رایې او وړاندیزونه (له consensus_domain: 1 راهیسې)، د v2 Registration، او د AdmitValidator رایه. هغه چې نه دی لېږدول شوی: د پل د سکې جوړونې ګډ لاسلیک (پورته). یوه بټوه په ځنځیر 20 کې د لېږلو لپاره v0.6.8 ته اړتیا لري، او بڼه د ځنځیر د پېژند له مخې ټاکي، نه د هغه څه له مخې چې یو نوډ یې ادعا کوي؛ rand_getLimits.binding_domain یې راپوروي.
| ارزښت | جوړښت |
|---|---|
| ښکاره پته | blake3("rand-address" || dilithium2_public_key)، base58 |
| د راکړې ورکړې پېژند | blake3("rand-txid-3" || bincode(view))، چې پکې view هغه راکړه ورکړه ده چې د بنډل د ثبوت بایټونه یې په blake3(proof) او د تصدیق ثبوت یې په blake3(auth_proof) بدل شوي وي؛ auth_commit لکه څنګه چې دی شاملېږي. تر ځنځیر 16 پورې ډومېن rand-txid-2 و، پرته له تصدیق ساحو |
| د راکړې ورکړې تړل | په ځنځیرونو 14 تر 19 کې blake3("rand-tx-bind-1" || bincode(chain_id, bundle', action'))؛ په ځنځیر 20 کې blake3("rand-tx-bind-2" || bincode(genesis_hash, chain_id, bundle', action')). اته u32 کلمې په کوچنيپای ترتیب، چې پکې ' د bundle.proof، bundle.auth_proof او د یوه Aggregate proof په تش وېکټور بدلوي؛ bincode د ثابتپلن کوچنيپای عددونو سره. هر بنډل ثبوت او د تصدیق ثبوت پر همدې کلمو جوړېږي او د همدوی پر وړاندې تاییدېږي |
| د غوښتنې تړل | blake3("rand-call-bind-1" || …)، یا په ځنځیر 20 کې rand-call-bind-2 چې جنسیس هش پکې لومړی راځي: د راکړې ورکړې د تړلو همغه جوړښت چې د Call (یا Invoke) خپل proof هم پکې تش شوی وي. په یوه hardening_v6 جنسیس، لکه ځنځیر 20، د غوښتنې د ثبوت عامه برخه د پروګرام د ځای پر ځای کولو د وخت عامې کلمې دي چې وروسته یې دا اته کلمې راځي، او د Invoke ثبوت له دوی وروسته خپل لېږد د شرایطو د کلمو په توګه زیاتوي |
| د پروګرام پېژند | blake3("rand-program" || base_pc as 4 LE bytes || words as 4 LE bytes each) |
| د همتا-پر-همتا هویت | ed25519 کیلي له blake3("rand-p2p-identity" || seed) څخه |
| د پل د شتمنۍ پېژند (د هرې پشتوانې لپاره) | blake3("rand-bridge-asset" || token_chain as 2 BE bytes || token_address (32 bytes)) — rand_bridgeAssetId یې محاسبه کوي او rand_getAssets یې د پشتوانې په هر قطار کې چاپوي؛ دا په شبکه کې د سرچینې سکه پېژني، نه ټوکن |
| د RPL ټوکن د شتمنۍ پېژند، اصلي | blake3("rand-rpl-asset" || bincode(name, symbol, decimals, authority, initial: Option<InitialMint>, salt))، salt د جوړونکي له خوا غوره شوي 32 بایټه؛ د شپاړسیز او rpl1… په بڼه ښودل کېږي |
| د RPL ټوکن د شتمنۍ پېژند، له پله راغلی | blake3("rand-rpl-asset" || bincode(name, symbol, BRIDGE_DECIMALS, salt)) — د (chain, token) د جوړې پر سر نه، ځکه چې له پله راغلی یو ټوکن څو پشتوانې پوښي |
| د پل د زیرمې پټونه | r = blake3("rand-deposit-r-1" || mu)، یوازینی r چې منل یې د BridgeAttest لپاره قبلوي (که نه نو WrongDepositBlinding) |
| د پل د فیس د یادښتونو پټونې (ځنځیر 20) | د زیرمې د فیس یادښت: r = blake3("rand-bridge-fee-r-1" || mu)؛ د سوځولو د فیس یادښت: r = blake3("rand-bridge-burn-fee-r-1" || txid)؛ دواړه د اتو کوچنيپای کلمو په توګه لوستل کېږي. دا یادښتونه پوښ نه لري: هره ساحه یې عامه ده، او مالک یې د جنسیس bridge.fees.recipient دی |
| د پل ترلاسه کوونکی | blake3("rand-shielded-recipient" || pk_bytes || kem_ek) د بشپړې پټې پتې پر سر |
د وړیا ورکړې Mint پیغام | blake3("rand-mint-2" || bincode(chain_id, cm, pk, time, r, envelope, amount))؛ په ځنځیر 20 کې blake3("rand-mint-3" || bincode(genesis_hash, chain_id, cm, pk, time, r, envelope, amount)) |
د TokenMint، SetAuthority پیغامونه | blake3("rand-rpl-mint-1" or "rand-rpl-authority-1", chain_id || asset_id || nonce || body)؛ د سکې جوړونې بدنه blake3(bincode(envelope)) لري. په ځنځیر 20 کې rand-rpl-mint-2 او rand-rpl-authority-2، چې جنسیس هش پکې لومړی راځي |
د Registration پیغام | blake3("rand-register-2" || bincode(genesis_hash, chain_id, validator, payout)) په هغه جنسیس چې staking.registration_v2 یا binding_domain: 1 ولري، لکه ځنځیر 20 (هلته د v1 نوملیکنه ردېږي)؛ په نورو ځایونو کې blake3("rand-register" || bincode(chain_id, payout)) |
د AdmitValidator رایه (ځنځیر 20) | blake3("rand-admit-validator-1" || genesis_hash || candidate_address)، چې هر رایه ورکوونکی اعتبارورکوونکی یې لاسلیکوي |
د Unbond پیغام | blake3("rand-unbond" || bincode(chain_id, validator, amount, nonce))؛ په ځنځیر 20 کې blake3("rand-unbond-2" || bincode(genesis_hash, chain_id, validator, amount, nonce)) |
د Withdraw پیغام | blake3("rand-withdraw" || bincode(chain_id, validator, amount, nonce, time, r, envelope))؛ په ځنځیر 20 کې rand-withdraw-2، چې جنسیس هش پکې لومړی راځي |
| د Merkle غوټه (د حالت ونې) | blake3("rand-merkle-node" || left || right) |
| د ټوکن د ثبت پاڼه | blake3("rand-token-leaf-1" || bincode(TokenInfo))، د شاخص په ترتیب، د tokens_root لاندې |
| د حالت ریښه | په ځنځیر 20 کې، blake3("rand-state-admitted-1" || inner || admitted_root) د inner = blake3("rand-state-8" || tree_root || nullifier_root || validators_root || programs_root || bridge_root || tokens_root || faucet_epoch || faucet_minted_in_epoch || bond_queue_root || gas_price || byte_price || program_state_root) شاوخوا، چې پکې program_state_root = blake3("rand-program-state-1" || cells_root || vaults_root) (RPL-2) دی، د وړیا ورکړې دوه شمېرونکي او دوه ژوندۍ بیې هر یو 8 لویپای بایټه دي، او بهرنی پوښ د منل شویو ټولګه ژمنه کوي (staking.admission_by_vote). د ځنځیر 19 ریښه blake3("rand-state-7" || …) وه چې تر byte_price پورې د همدې ساحو پر سر وه (د جنسیس staking برخه درې نورې ساحې د tokens_root وروسته د rand-state-5 لاندې زیاتوي، لکه په ځنځیرونو 15 تر 17 کې؛ د جنسیس gas.dynamic برخه دوه بیې زیاتوي او ډومېن rand-state-7 ته لېږدوي)؛ په ځنځیر 14 کې rand-state-4 د لومړیو شپږو پر سر؛ rand-state-2 د لومړیو څلورو پر سر په هغه ځنځیر کې چې bridge، tokens یا aggregation برخه نه لري (اجماع) |
Poseidon2 د ډومېن له نښې سره: H(domain, msg) = sponge_hash([domain, msg...])، نښه لومړۍ جذب شوې کلمه ده، هره کلمه د Goldilocks یو عنصر دی، او د 4 عنصرونو لنډیز په اتو u32 کلمو وېشل کېږي (د هر عنصر ټیټه نیمایي، بیا لوړه نیمایي). د ډومېن نښې:
| ټګ | ارزښت | جوړښت |
|---|---|---|
NK | 1 | د لید کیلي nk = H(1, sk) |
PK | 2 | د نوټ عامه ارزښت pk = H(2, nk) |
NF | 3 | باطلوونکی H(3, nk || cm) |
CM | 4 | د نوټ ژمنه H(4, pk(8) || from(8) || amount_lo || amount_hi || asset || time || r(8)) — 28 کلمې |
OVK, KEM_SEED | 5, 6 | د وتونکو معاملو د لید کیلي او د ML-KEM تخم، د کاونټر-حالت پراخ هش [domain, nk, counter] له لارې |
NODE | 7 | د ونې غوټه H(7, left || right)؛ تشه پاڼه ټوله صفرونه ده |
HC | 8 | د پروګرام ډایجسټ؛ ټګ، base_pc او len د لومړي پرمیوټیشن د ظرفیت په لینونو کې ځای لري، بیا کلمې په هر بلاک کې څلور څلور جذبېږي |
OUT | 9 | د انتقال د مېلمه پروګرام د وتو ډایجسټ |
IN | 10 | H_IN: د ظرفیت سرلیک [10, n_in, 0]، بیا ۴-کلمهيي مالګه، بیا ننوتې |
BUNDLE | 11 | د تقاعد شوي ۲-ننوتو-۲-وتو بنډل ډایجسټ چې ۴۷ عامه کلمې پوښي؛ نور هېڅ چېن دا مېلمه پروګرام نه ټاکي |
| پټ بنډل | 64 | د پټې شتمنۍ د بنډل ډایجسټ چې له ۱۴ تر ۱۶ چېنونو کې ۸۱ کلمې پوښي: لنګر، څلور باطلوونکي، څلور ژمنې، fee، burn_a، burn_r (هر یو دوه کلمې)، burn_asset، time، او د ککړتیا کلمه په پای کې. له ۱۷ تر ۲۰ چېنونو کې (د بنډل مېلمه پروګرام v3) دا ۸۹ کلمې دي: د اجازې د ژمنې c اته کلمې د ککړتیا له کلمې سمدستي مخکې راځي. خصوصي شتمني A په کې نه ده. دا ټګ د غوټې محلي دی او له شاملو شویو ټګونو ۱ تر ۱۵ څخه لرې پروت دی |
AUTH | 65 | د اجازې ژمنه c = H(65, nk || salt)، ۱۶ کلمې، په هر بنډل کې د نوې ۲۵۶-بټي مالګې سره؛ د بنډل ثبوت یې د خپل ډایجسټ دننه او د اجازې ثبوت یې د خپلو اتو وتو کلمو په توګه خپروي، او بنډل یې د auth_commit په توګه لېږدوي (چېنونه ۱۷ تر ۲۰). د غوټې محلي دی، لکه 64 |
PUB | 15 | H_PUB: سرلیک [15, n_pub, 0]، پرته له مالګې؛ د پروګرام لپاره، په چېن ۲۰ کې کلمې د ځای پر ځای کولو پر مهال ټاکل کېږي (تر ټولو ډېر 32,768)، د هر کال برخه همدا کلمې دي چې وروسته یې د کال د تړلو اته کلمې راځي، او کال د همدې برخې د ډایجسټ پر وړاندې ازمویل کېږي؛ د بنډل ثبوت او د اجازې ثبوت لپاره برخه د معاملې اته د تړلو کلمې دي؛ هغه جینیسس چې max_program_public_words ونلري یوازې تشه برخه مني |
hc، H_IN او H_PUB ساده سپنجونه نه دي چې پیغام یې په سر کې مختاړی ولري: سرلیک ظرفیت ته ځي ترڅو د cpu جدول کې د ډایجسټ قطارونه په هر پرمیوټیشن کې دقیقاً څلور کلمې جذب کړي. دا د لاس پر ځای د شامل شوي crate (randprotocol_zkvm::hash::{input_digest, public_digest}، isa::Program::digest) په مرسته بیا جوړ کړئ.
ساده سپنج ډکول (padding) نه کوي، نو د لومړي بلاک دننه [a] او [a, 0] یو شان هش کېږي. پورته هر جوړښت یو ثابت-اوږدوالي پیغام د خپل ټګ لاندې هش کوي. د هغو معلوماتو لپاره چې اوږدوالی یې بدلېدای شي، د محدودیتونو ټولګې ۷ یو اوږدوالي-تړلی سپنج (hash::sponge_hash_len، د POSEIDON2_LEN syscall) زیات کړ: دا له حالت [0, 0, 0, 0, n, 0, 0, 0] څخه پیلېږي، چې n د کلمو شمېر دی، او لږ تر لږه یو ځل پرمیوټیشن کوي. دا د همغو کلمو یو بل هش دی، او په چېن کې هېڅ نوټ، باطلوونکی، ریښه یا ډایجسټ یې نه کاروي.
دوه ځانګړنې باید په یاد وساتل شي: hc تړونکی دی خو پټوونکی نه دی (مالګه نه لري، نو یو اټکل شوی پروګرام تاییدېدای شي او د یو پروګرام دوه ځای پر ځای کېدنې سره تړل کېدای شي)، او H_IN هم پټوونکی دی او هم تړونکی (په هر ثبوت کې نوې ۱۲۸-بټي مالګه)، نو د H_IN خپرول د ننوتو په اړه هېڅ نه څرګندوي تر هغه چې د مالګې خاوند یې پرانیزي.
د کیليګانو اشتقاق
| کیلي | سرچینه |
|---|---|
| د Dilithium2 کیلي جوړه (غوټه) | له ۳۲-بایټي تخم څخه ټاکلې |
| libp2p ed25519 (غوټه) | blake3("rand-p2p-identity" || seed) |
د لید کیلي، pk، ovk، د ML-KEM کیلي جوړه (والټ) | د لګښت د کیلي Poseidon2 اشتقاقونه، لکه پورته جدول کې؛ د ML-KEM جوړه MlKem768::from_seed(kem_seed) ده |
د مقالو په پاڼه کې مقالې امنیتي استدلالونه وړاندې کوي: د کوانټم وروسته انتخابونه، د FRI د سلامتۍ حساب او دا چې ولې ۸۰ پوښتنې ساتل کېږي، او د ټریس د اوږدوالي حد.