இணையச் சங்கிலியுடன் இடைச்செயல்படும்போது சரியான நூலகத்தைத் தேர்ந்தெடுக்கவும், கணு அமல்படுத்தும் மதிப்போடு ஓர் அளவுருவை ஒப்பிட்டுச் சரிபார்க்கவும், ஓர் அடையாளங்காட்டியையோ உறுதிப்பாட்டையோ நீங்களே மீண்டும் கணக்கிடவும் இந்தப் பக்கத்தைப் பயன்படுத்துங்கள். இங்குள்ள ஒவ்வொரு மதிப்பும் சங்கிலி 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-பிட் சொற்கள்; சங்கிலி-15 பிரிப்பு முதல் 86 சுற்று மாறிலிகள் கணு மூலக்குறியீட்டில் (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 சங்கிலியில் சரிபார்க்கப்படுவதைத் தடுக்கிறது. சங்கிலி 20 இலும் M சங்கிலி அடையாளங்காட்டியை மட்டுமே பிணைக்கிறது: 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 — சங்கிலிகள் 15 முதல் 19 வரை போலவே சங்கிலி 20 இலும் எட்டு 1,312-பைட் விசைகள், தோற்ற 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 இல்லாத ஒரு production நிரூபணம் அடுக்கு 10-இல் 1,298,729 பைட்டுகளாகவும் அடுக்கு 12-இல் 1,359,978 பைட்டுகளாகவும் இருந்தது; keccak கொண்ட ஒரு அடுக்கு-10 நிரூபணம் 3,198,430 பைட்டுகள். இது இயல்புநிலை வரம்பான 2 MiB-ஐ விட அதிகம், சங்கிலிகள் 13 முதல் 15 வரையிலான 8 MiB-ஐ விடக் குறைவு. ஓய்வுபெற்ற 2-உள்ளீடு-2-வெளியீடு தொகுப்பு விருந்தினர் நிரலின் ஒரு அடுக்கு-14 நிரூபணம் சங்கிலி 8-இல் 1,321,773 பைட்டுகளாகவும், சங்கிலி 13-இல் 1,418,406 முதல் 1,420,423 பைட்டுகளாகவும் அளவிடப்பட்டது. சங்கிலி 14-இன் 4-உள்ளீடு-4-வெளியீடு மறைக்கப்பட்ட-சொத்து தொகுப்பு விருந்தினர் நிரல் இரண்டு ஹாஷ் அட்டவணைகளும் இல்லாமல் அடுக்கு 14-இலேயே உள்ளது. அதன் நிரூபணங்கள் சங்கிலி 14-இல் (2026-09-20) 1,422,116 மற்றும் 1,423,170 பைட்டுகளாக அளவிடப்பட்டன. சங்கிலி 15 அதே விருந்தினர் நிரலை நிலைநிறுத்தியது (hc_bundle மாறவில்லை). அங்கு ஒரு தொகுப்பு நிரூபணம் public_log_height 4 என அறிவித்தது. இது எட்டுப் பிணைப்புச் சொற்களின் உயரம். சரிபார்ப்பு விசையை உருவாக்கும் முன்பே வேறு எந்த மதிப்பையும் கணு மறுத்தது. 2026-09-19 அன்று சங்கிலி 13-இல் (அடுக்கு 16) உருவாக்கப்பட்ட, keccak கொண்ட ERC-20 approve அழைப்பு நிரூபணம் 3,412,405 பைட்டுகள். fullnode v0.5.6 முதல் வந்த ஒவ்வொரு சங்கிலியும் அடுக்கு 16-இல் அந்த அழைப்பை மறுக்கிறது.
கட்டுப்பாட்டுத் தொகுதி 7-இன் மறைப்பு நெடுவரிசைகளும் அட்டவணைக் குறைந்தபட்ச அளவுகளும் ஹாஷ் இல்லாத நிரூபணத்தின் அளவை ஏறத்தாழ 5% கூட்டுகின்றன. 2026-09-28 அன்று fullnode அளவிட்டபடி, 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%-க்கும் குறைவு. 2026-09-30 அன்று சங்கிலி 18-இல் (Apple Silicon) அளவிடப்பட்டவை: 1,364,940 முதல் 1,375,371 பைட்டுகள் வரையிலான அங்கீகார நிரூபணங்கள் (அடுக்கு 10), 1,494,151 முதல் 1,504,260 பைட்டுகள் வரையிலான தொகுப்பு நிரூபணங்கள் (அடுக்கு 14, விருந்தினர் நிரல் v3), அழைப்பு நிரூபணங்கள்: ஹாஷ் அட்டவணை இல்லாமல் அடுக்கு 14-இல் 1,498,589 பைட்டுகள், SHA-256 அட்டவணையுடன் அடுக்கு 14-இல் 1,911,152, Keccak அட்டவணையுடன் அடுக்கு 12-இல் 3,346,865. இவை அனைத்தும் சங்கிலிகள் 18 முதல் 20 வரையிலான 4 MiB உச்சவரம்புக்குள் அடங்குகின்றன.
ஏற்கெனவே தயாராக உள்ள சரிபார்ப்பு விசையுடன் சரிபார்ப்புக்கு ஏறத்தாழ 16 ms ஆகிறது. ஒரு (tier, heights) விசை முதன்முறையாக உருவாக்கப்படும்போது ஏறத்தாழ 230 ms ஆகிறது. test FRI சுயவிவரம் (16 வினவல்கள்) சோதனைத் தொகுப்புக்காக மட்டுமே உள்ளது, அது பாதுகாப்பற்றது. சங்கிலி 20-இன் ஜெனிசிஸ் production-ஐ நிலைநிறுத்துகிறது. Fullnode v0.6.8 எந்தக் கட்டுப்பாட்டையும் மாற்றவில்லை. சங்கிலிகள் 17 முதல் 19 வரை பயன்படுத்திய அதே hc_bundle, hc_auth ஆகியவற்றையே சங்கிலி 20-உம் நிலைநிறுத்துகிறது.
நீங்கள் மீண்டும் உருவாக்கக்கூடிய ஹாஷ் கட்டமைப்புகள்
டொமைனுடன் BLAKE3: blake3(domain || data). டொமைன் சரத்துக்குப் பின் பிரிப்பான் எதுவும் இல்லை.
பிணைப்பு டொமைன். சங்கிலி 20-இன் ஜெனிசிஸ் binding_domain: 1 என அமைக்கிறது (fullnode v0.6.8, தணிக்கை v6 BIND-1). அத்தகைய சங்கிலியில், இதுவரை சங்கிலி அடையாளத்தை மட்டும் பிணைத்த ஒவ்வொரு நிரூபணப் பிணைப்பும் ஒவ்வொரு கையொப்பமிட்ட செயல் செய்தியும் இப்போது ஜெனிசிஸ் ஹாஷையும் பிணைக்கின்றன. டொமைனின் பதிப்பு எண் ஒன்று உயர்கிறது. 32-பைட் ஜெனிசிஸ் ஹாஷ் முன்படிமத்தில் சங்கிலி அடையாளத்துக்கு முன்னால், முதலில் வருகிறது. எனவே ஒரு சங்கிலிக்காக உருவாக்கப்பட்ட நிரூபணமோ கையொப்பமோ வேறு எந்தச் சங்கிலியிலும் சரிபார்ப்பில் ஏற்கப்படாது. மறுவெட்டு செய்வதுபோல அதே சங்கிலி அடையாளத்தையும் விசைகளையும் மீண்டும் பயன்படுத்தும் சங்கிலியிலும் இது பொருந்தும். பிணைப்புச் சொற்கள் நிரூபணங்களின் பொது உள்ளீடு என்பதால் எந்த விருந்தினர் நிரலும் சரிபார்ப்பு விசையும் மாறவில்லை. அட்டவணை இரண்டு வடிவங்களையும் தருகிறது. சங்கிலிகள் 14 முதல் 19 வரை முதல் வடிவத்தைப் பைட்டுக்குப் பைட் அப்படியே பயன்படுத்துகின்றன. ஏற்கெனவே ஜெனிசிஸுடன் பிணைக்கப்பட்டு மாறாமல் இருப்பவை: வாக்குகளும் முன்மொழிவுகளும் (consensus_domain: 1 முதல்), v2 Registration, ஒரு AdmitValidator வாக்கு. மாற்றப்படாதது: பாலத்தின் mint இணைக் கையொப்பம் (மேலே காண்க). சங்கிலி 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')). இது எட்டு little-endian u32 சொற்கள். இங்கு ' என்பது bundle.proof, bundle.auth_proof, ஒரு Aggregate-இன் proof ஆகியவற்றை வெற்று வெக்டரால் மாற்றுகிறது. bincode நிலையான-அகல little-endian முழுஎண்களைப் பயன்படுத்துகிறது. ஒவ்வொரு தொகுப்பு நிரூபணமும் அங்கீகார நிரூபணமும் இந்தச் சொற்களின் மீது உருவாக்கப்பட்டு, இவற்றுக்கு எதிராகவே சரிபார்க்கப்படுகின்றன |
| அழைப்புப் பிணைப்பு | blake3("rand-call-bind-1" || …). சங்கிலி 20-இல் ஜெனிசிஸ் ஹாஷ் முதலில் வரும் rand-call-bind-2. இது பரிவர்த்தனைப் பிணைப்பின் அதே கட்டமைப்பு, ஆனால் Call-இன் (அல்லது Invoke-இன்) சொந்த proof-உம் வெறுமையாக்கப்படுகிறது. சங்கிலி 20 போன்ற hardening_v6 ஜெனிசிஸில், ஒரு அழைப்பு நிரூபணத்தின் பொதுப் பகுதி என்பது நிரலின் deploy-நேரப் பொதுச் சொற்களும் அவற்றைத் தொடர்ந்து இந்த எட்டுச் சொற்களும் ஆகும். ஒரு Invoke-இன் பொதுப் பகுதி இவற்றுக்குப் பின் அதன் நிலைமாற்றத்தைச் சூழல் சொற்களாகச் சேர்க்கிறது |
| நிரல் அடையாளம் | blake3("rand-program" || base_pc as 4 LE bytes || words as 4 LE bytes each) |
| p2p அடையாளம் | blake3("rand-p2p-identity" || seed)-இலிருந்து பெறப்படும் ed25519 விசை |
| பாலச் சொத்து அடையாளம் (ஒவ்வொரு ஆதாரத்துக்கும்) | 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 பைட்டுகள். hex ஆகவும் rpl1… ஆகவும் காட்டப்படுகிறது |
| RPL டோக்கன் சொத்து அடையாளம், பாலம் வழியானது | blake3("rand-rpl-asset" || bincode(name, symbol, BRIDGE_DECIMALS, salt)). ஒரு (chain, token) இணையின் மீது அல்ல, ஏனெனில் பாலம் வழியான ஒரு டோக்கன் பல ஆதாரங்களில் பரவியுள்ளது |
| பால வைப்பு மறைப்பு | r = blake3("rand-deposit-r-1" || mu). ஒரு BridgeAttest-க்கு அனுமதி ஏற்கும் ஒரே r இதுதான் (இல்லையெனில் WrongDepositBlinding) |
| பாலக் கட்டணக் குறிப்பு மறைப்புகள் (சங்கிலி 20) | வைப்பின் கட்டணக் குறிப்பு: r = blake3("rand-bridge-fee-r-1" || mu). எரிப்பின் கட்டணக் குறிப்பு: r = blake3("rand-bridge-burn-fee-r-1" || txid). இரண்டும் எட்டு little-endian சொற்களாகப் படிக்கப்படுகின்றன. இந்தக் குறிப்புகளுக்கு உறை இல்லை. ஒவ்வொரு புலமும் பொதுவானது, உரிமையாளர் ஜெனிசிஸின் bridge.fees.recipient |
| பாலப் பெறுநர் | முழு மறைக்கப்பட்ட முகவரியின் மீது blake3("rand-shielded-recipient" || pk_bytes || kem_ek) |
faucet 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). mint-இன் உடற்பகுதியில் blake3(bincode(envelope)) அடங்கும். சங்கிலி 20-இல் ஜெனிசிஸ் ஹாஷ் முதலில் வரும் rand-rpl-mint-2, rand-rpl-authority-2 |
Registration செய்தி | சங்கிலி 20 போல staking.registration_v2 அல்லது binding_domain: 1 கொண்ட ஜெனிசிஸில் blake3("rand-register-2" || bincode(genesis_hash, chain_id, validator, payout)) (அங்கு 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-இல், 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)-ஐச் சுற்றி blake3("rand-state-admitted-1" || inner || admitted_root). இங்கு program_state_root = blake3("rand-program-state-1" || cells_root || vaults_root) (RPL-2). இரண்டு faucet எண்ணிகளும் நடப்பிலுள்ள இரண்டு விலைகளும் ஒவ்வொன்றும் 8 big-endian பைட்டுகள். வெளி உறை அனுமதிக்கப்பட்ட தொகுதிக்கு உறுதியளிக்கிறது (staking.admission_by_vote). சங்கிலி 19-இல் இது byte_price வரையிலான அதே புலங்களின் மீது blake3("rand-state-7" || …) ஆக இருந்தது. சங்கிலிகள் 15 முதல் 17 வரை இருந்ததுபோல, ஜெனிசிஸின் staking பிரிவு tokens_root-க்குப் பின் மூன்று புலங்களை rand-state-5-இன் கீழ் சேர்க்கிறது. ஜெனிசிஸின் gas.dynamic பிரிவு இரண்டு விலைகளைச் சேர்த்து டொமைனை rand-state-7-க்கு மாற்றுகிறது. சங்கிலி 14-இல் முதல் ஆறு புலங்களின் மீது rand-state-4. bridge, tokens அல்லது aggregation பிரிவு இல்லாத சங்கிலியில் முதல் நான்கு புலங்களின் மீது rand-state-2 (ஒருமித்த ஒப்புதல்) |
டொமைன் குறியுடன் 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], பின்னர் 4-சொல் சால்ட், பின்னர் உள்ளீடுகள் |
BUNDLE | 11 | ஓய்வுபெற்ற 2-உள்ளீடு-2-வெளியீடு தொகுப்பின் 47 பொதுச் சொற்கள் மீதான டைஜஸ்ட்; எந்தச் சங்கிலியும் இனி அந்த கெஸ்ட்டைப் பொருத்துவதில்லை |
| மறைக்கப்பட்ட தொகுப்பு | 64 | சங்கிலிகள் 14 முதல் 16 வரை மறைக்கப்பட்ட-சொத்துத் தொகுப்பின் 81 சொற்கள் மீதான டைஜஸ்ட்: நங்கூரம், நான்கு நலிஃபையர்கள், நான்கு உறுதிப்பாடுகள், fee, burn_a, burn_r (ஒவ்வொன்றும் இரண்டு சொற்கள்), burn_asset, time, இறுதியாகக் களங்கச் சொல். சங்கிலிகள் 17 முதல் 20 வரை (தொகுப்பு கெஸ்ட் v3) இது 89 சொற்கள்: அங்கீகார உறுதிப்பாடு c-இன் எட்டுச் சொற்கள் களங்கச் சொல்லுக்கு உடனடியாக முன் அமைகின்றன. தனிப்பட்ட சொத்து A இதில் இல்லை. இந்தக் குறிச்சொல் நோடு-சார்ந்தது, உள்ளிணைக்கப்பட்ட குறிச்சொற்கள் 1 முதல் 15 வரையிலிருந்து விலகி அமைகிறது |
AUTH | 65 | அங்கீகார உறுதிப்பாடு c = H(65, nk || salt), 16 சொற்கள், ஒவ்வொரு தொகுப்புக்கும் புதிய 256-பிட் சால்ட்டுடன்; தொகுப்புச் சான்று தன் டைஜஸ்ட்டுக்குள்ளும், அங்கீகாரச் சான்று தன் எட்டு வெளியீட்டுச் சொற்களாகவும் இதை வெளியிடுகின்றன, தொகுப்பு இதை auth_commit ஆகக் கொண்டுசெல்கிறது (சங்கிலிகள் 17 முதல் 20 வரை). 64 போலவே நோடு-சார்ந்தது |
PUB | 15 | H_PUB: தலைப்பு [15, n_pub, 0], சால்ட் இல்லை; ஒரு நிரலுக்கு, சங்கிலி 20-இல் சொற்கள் பயன்படுத்தலின்போது நிலைநிறுத்தப்படுகின்றன (அதிகபட்சம் 32,768), ஒவ்வொரு அழைப்பின் பகுதியும் அந்தச் சொற்களையும் அதைத் தொடர்ந்து அழைப்புப் பிணைப்பின் எட்டுச் சொற்களையும் கொண்டது, அழைப்பு அந்தப் பகுதியின் டைஜஸ்ட்டுக்கு எதிராகச் சரிபார்க்கப்படுகிறது; தொகுப்புச் சான்றுக்கும் அங்கீகாரச் சான்றுக்கும் பகுதி என்பது பரிவர்த்தனையின் எட்டுப் பிணைப்புச் சொற்கள்; max_program_public_words இல்லாத ஜெனிசிஸ் வெற்றுப் பகுதியை மட்டுமே ஏற்கிறது |
hc, H_IN, H_PUB ஆகியவை எளிய செய்தி-முன்னொட்டு ஸ்பான்ஜ்கள் அல்ல: cpu அட்டவணையிலுள்ள டைஜஸ்ட் வரிசைகள் ஒவ்வொரு வரிசைமாற்றத்துக்கும் சரியாக நான்கு சொற்களை உள்வாங்கும்படி தலைப்பு கொள்ளளவுக்குள் செல்கிறது. இவற்றைக் கையால் கணக்கிடாமல், உள்ளிணைக்கப்பட்ட crate (randprotocol_zkvm::hash::{input_digest, public_digest}, isa::Program::digest) கொண்டு மீளுருவாக்குங்கள்.
எளிய ஸ்பான்ஜ் திணிப்பு செய்வதில்லை, எனவே முதல் தொகுதிக்குள் [a], [a, 0] இரண்டும் ஒரே ஹாஷைத் தருகின்றன. மேலே உள்ள ஒவ்வொரு கட்டமைப்பும் நிலையான நீளமுள்ள செய்தியை அதன் சொந்தக் குறிச்சொல்லின் கீழ் ஹாஷ் செய்கிறது. நீளம் மாறக்கூடிய தரவுக்காக, கட்டுப்பாட்டுத் தொகுப்பு 7 நீளம்-பிணைந்த ஸ்பான்ஜ் ஒன்றைச் சேர்த்தது (hash::sponge_hash_len, POSEIDON2_LEN syscall): இது [0, 0, 0, 0, n, 0, 0, 0] என்ற நிலையிலிருந்து தொடங்குகிறது, n என்பது சொற்களின் எண்ணிக்கை, குறைந்தது ஒருமுறை வரிசைமாற்றம் செய்கிறது. இது அதே சொற்களின் வேறொரு ஹாஷ்; சங்கிலியிலுள்ள எந்த நோட்டும், நலிஃபையரும், மூலமும், டைஜஸ்ட்டும் இதைப் பயன்படுத்துவதில்லை.
நினைவில் கொள்ள வேண்டிய இரண்டு பண்புகள்: hc பிணைக்கிறது ஆனால் மறைப்பதில்லை (சால்ட் இல்லை, எனவே ஊகிக்கப்பட்ட நிரலை உறுதிப்படுத்த முடியும், ஒரே நிரலின் இரண்டு பயன்படுத்தல்களை இணைத்தறிய முடியும்), H_IN பிணைப்பதோடு மறைக்கவும் செய்கிறது (ஒவ்வொரு சான்றுக்கும் புதிய 128-பிட் சால்ட்), எனவே சால்ட் வைத்திருப்பவர் அதைத் திறக்கும் வரை H_IN-ஐ வெளியிடுவது உள்ளீடுகளைப் பற்றி எதையும் வெளிப்படுத்துவதில்லை.
விசை வருவிப்புகள்
| விசை | மூலம் |
|---|---|
| Dilithium2 விசை ஜோடி (நோடு) | 32-பைட் விதையிலிருந்து தீர்மானகரமாக |
| libp2p ed25519 (நோடு) | blake3("rand-p2p-identity" || seed) |
பார்வை விசை, pk, ovk, ML-KEM விசை ஜோடி (வாலட்) | மேலே அட்டவணைப்படுத்தியபடி செலவு விசையின் Poseidon2 வருவிப்புகள்; ML-KEM ஜோடி MlKem768::from_seed(kem_seed) |
ஆய்வுக் கட்டுரைகள் பக்கத்திலுள்ள கட்டுரைகள் பாதுகாப்பு வாதங்களைத் தருகின்றன: குவாண்டத்துக்குப் பிந்தைய தேர்வுகள், FRI நம்பகத்தன்மைக் கணக்கீடும் 80 வினவல்கள் ஏன் வைக்கப்படுகின்றன என்பதும், தடம்-நீள வரம்பு.