Rand Protocol
ஆவணமாக்கல்
அடிப்படைக் கருத்துகள்

நோட்டுகளும் உறுதிமொழி மரமும்

ஒவ்வொரு பரிமாற்றமும் கட்டமைக்கப்படும் நோட்டு மாதிரி - உறுதிமொழிகள், செல்லாததாக்கிகள், உறைகள், ஆழம்-32 மரம், நங்கூரங்கள், நங்கூரச் சாளரம் மற்றும் நேரச் சாளரம் - மேலும் ஒரு பணப்பை தனக்குரிய நோட்டுகளை எவ்வாறு தேடிக் கண்டறிகிறது என்பதும்.

இந்தப் பக்கத்தைக் குளத்தைப் படிக்கும் எதையும் உருவாக்க அல்லது தணிக்கை செய்யப் பயன்படுத்துங்கள்: தனது குறிப்புகளைத் தேடும் பணப்பை, உறுதிமொழிகளையும் செல்லாக்கிகளையும் பின்தொடரும் குறியீட்டாக்கி, அல்லது ஒரு பரிவர்த்தனை எதை வெளியிடுகிறது என்பதைச் சரிபார்க்கும் கருவி. இந்தச் சங்கிலியில் மதிப்பு என்பது குறிப்புகளின் ஒரு கணம்; சங்கிலி அவற்றின் உறுதிமொழிகளை வைத்திருக்கிறது, அவற்றின் உள்ளடக்கத்தை ஒருபோதும் அல்ல.

ஒரு குறிப்பு

ஒரு குறிப்பு என்பது { pk, from, amount, asset, time, r }: 32 பிட்கள் கொண்ட 28 சொற்கள், 112 பைட்டுகள், pk(8) from(8) amount_lo amount_hi asset time r(8) என அமைக்கப்பட்டவை. pk என்பது உரிமையாளரின் குறிப்புப் பொது மதிப்பு (பார்வைச் சாவியிலிருந்து பெறப்பட்டது), from அனுப்புநருடையது, amount அலகுகளில் ஒரு u64 (1 RAND = 10⁹ அலகுகள்), asset ஒரு u32 (RAND-க்கு 0, இல்லையெனில் பாலம் வழியாக வந்ததோ உள்நாட்டு டோக்கனோ, ஒரு RPL டோக்கனுக்கான டோக்கன் பதிவேட்டின் அடர்த்தியான குறியெண்; காண்க RPL டோக்கன்கள்), time அனுப்புநர் இலக்கு வைத்த ஒரு பிளாக் உயரம், r மறைப்புக்கான எட்டு சீரற்ற சொற்கள்.

எளிய உரை சங்கிலியில் ஒருபோதும் தோன்றாது. தோன்றுவது:

  • அதன் உறுதிமொழி cm = H(CM, words), டொமைன் குறி 4-இன் கீழ் 28 சொற்களின் Poseidon2 ஹாஷ், மரத்தின் ஓர் இலையாகச் சேர்க்கப்படுகிறது;
  • அதன் உறை, உரிமையாளர் அல்லது தனது வெளிச்செல் பார்வைச் சாவி மூலம் அனுப்புநர் மட்டுமே படிக்கும்படி உரிமையாளரின் முகவரிக்கு முத்திரையிடப்பட்ட எளிய உரை. சங்கிலி 18 முதல் (சங்கிலி 20 உட்பட) உறை ஒரு மறையாக்கப்பட்ட மெமோவையும் சுமக்கிறது. பொதுப் புலங்களிலிருந்து சங்கிலி கணக்கிடும் சில குறிப்புகளுக்கு உறையே இல்லை (கீழே).

குறிப்பைச் செலவழிப்பது அதன் செல்லாக்கியை H(NF, nk, cm) வெளியிடுகிறது; இது உரிமையாளரின் பார்வைச் சாவி மற்றும் உறுதிமொழியின், டொமைன் குறி 3-இன் கீழான Poseidon2 ஹாஷ். nk இல்லாமல் ஒரு செல்லாக்கியை அதன் உறுதிமொழியுடன் இணைக்க முடியாது. இரட்டைச் செலவைத் தடுப்பது செல்லாக்கிக் கணமே.

உறை

Envelope { kem_ct, to_receiver, to_sender, body }
பகுதிபைட்டுகள்அது என்ன
kem_ct1,088பெறுநரின் முகவரிக்கான ஒரு ML-KEM-768 உள்ளடைப்பு
to_receiver60உள்ளடைக்கப்பட்ட இரகசியத்தின் கீழ் சுற்றப்பட்ட, ஒவ்வொரு பரிவர்த்தனைக்குமான சாவி TxKey
to_sender60அனுப்புநரின் வெளிச்செல் பார்வைச் சாவி ovk-இன் கீழ் சுற்றப்பட்ட அதே TxKey
body652TxKey-இன் கீழ் 112-பைட் குறிப்பும் 512-பைட் மெமோ புலமும் (சங்கிலி 17 வரை 140 பைட்டுகள், குறிப்பு மட்டும்)

ஒவ்வொரு பகுதியும் ChaCha20-Poly1305 ஆகும்; முன்னால் சேர்க்கப்பட்ட சீரற்ற 12-பைட் நான்ஸும் 16-பைட் குறிச்சொல்லும் கொண்டது; தொடர்புடைய தரவு என்பது ஒரு குறிச்சொல் (rand-envelope-receiver, rand-envelope-sender, rand-envelope-body), அதைத் தொடர்ந்து குறிப்பின் உறுதிமொழி. எனவே ஒரு சாவி தான் முத்திரையிடாத உறையைத் திறக்க முடியாது, திறக்கப்பட்ட குறிப்பு அது அமர்ந்துள்ள இலையுடன் பிணைக்கப்படுகிறது. அது 1,860 பைட்டுகள் மறையாக்க உரை; bincode-இன் நீள முன்னொட்டுகள் பரிமாற்றத்தில் அதை 1,892 ஆக்குகின்றன. சங்கிலி 20-இன் ஜெனிசிஸ் envelope_bytes: 1860 என அமைக்கிறது, அதன் பேரேடு வேறு எந்த நீளமுள்ள குறிப்பு உறையையும் மறுக்கிறது (envelope is 1348 bytes, this chain requires exactly 1860); அதைப் பற்றி வேறு எதையும் அது சரிபார்ப்பதில்லை. சங்கிலி 17 வரை உறையில் மெமோ புலம் இல்லை, அது 1,348 பைட்டுகள் (பரிமாற்றத்தில் 1,380), பேரேடு அதற்கு 2,048 பைட்டுகள் என்ற உச்சவரம்பை மட்டுமே விதித்தது; ஜெனிசிஸில் envelope_bytes இல்லாத சங்கிலியில் இன்னும் அதுவே விதி.

மெமோ புலம் len (u16 LE) ‖ UTF-8 text ‖ zero padding, 512 பைட்டுகள், எனவே அதிகபட்சம் 510 பைட்டு உரை. மெமோ இருந்தாலும் இல்லாவிட்டாலும், சங்கிலி 20-இல் உள்ள ஒவ்வொரு குறிப்பு உறையிலும் அது உள்ளது: மீதி வெளியீடு, போலி வெளியீடு, மெமோ இல்லாத செலுத்துகை ஆகியவை ஒரே விதமாக நிரப்பப்படுகின்றன; ஒரு மெமோவையோ, அதன் நீளத்தையோ, அது இல்லாததையோ சங்கிலியில் எதுவும் வேறுபடுத்திக் காட்டுவதில்லை. மெமோ குறிப்பிலோ, உறுதிமொழியிலோ, எந்த நிரூபணத்திலோ இல்லை. குறிப்பை ஏற்கெனவே படிக்கக்கூடியவர்களால் மட்டுமே அதைப் படிக்க முடியும்: உரிமையாளர், ovk மூலம் அனுப்புநர், அல்லது அந்த வெளியீட்டின் TxKey கையளிக்கப்பட்ட எவரும். தவறான வடிவிலான மெமோ புலம் (தவறான நீளம், செல்லாத UTF-8, பூஜ்யமல்லாத நிரப்பு) மெமோ இல்லாததாகத் திறக்கிறது, உரிமையாளர் குறிப்பை இழக்க ஒருபோதும் காரணமாவதில்லை. எவரும் ஒரு பொது முகவரிக்குத் தூசு குறிப்பைச் செலுத்த முடியும் என்பதால், மெமோ யாருடைய உரையாகவும் இருக்கலாம்: rand பணப்பை செய்வதுபோல், கட்டுப்பாட்டு எழுத்துகளையும் Unicode வடிவமைப்பு எழுத்துகளையும் மாற்றி, நம்பகமற்றதாகக் காட்டுங்கள். rand send --memo செலுத்துகை வெளியீட்டில் ஒன்றை முத்திரையிடுகிறது; rand notes --memo, rand history --memo அதைக் காட்டுகின்றன.

மரம், நங்கூரங்கள், சாளரங்கள்

உறுதிமொழிகள் ஒரே ஆழம்-32 Poseidon2 மரத்தில் பழையது முதலாகச் சேர்க்கப்படுகின்றன, ஒருபோதும் நீக்கப்படுவதில்லை. இலை i என்பது சங்கிலி இதுவரை உருவாக்கிய i-ஆவது குறிப்பு; ஜெனிசிஸ் வைப்புக் குறிப்புகளே முதல் இலைகள். ஒரு தொகுப்பு எதை நகர்த்தினாலும், போலிகள் உட்பட, நான்கு இலைகளையும் நான்கு செல்லாக்கிகளையும் சேர்க்கிறது. வெற்று இலை முழுவதும் பூஜ்யங்கள்; ஒரு கணு என்பது H(NODE, left, right) (டொமைன் குறி 7). ஒரு நோடு முன்விளிம்பை மட்டுமே வைத்திருக்கிறது, எனவே ஒருமித்த நிலை ஒருபோதும் இலைகளை வைத்திருப்பதில்லை; rand_getWitness சேமிக்கப்பட்ட இலைகளிலிருந்து தேவைக்கேற்ப முழு மரத்தையும் மீண்டும் கட்டமைக்கிறது, அதனால்தான் ஒரு நோடு வழங்கும் வாசிப்புகளில் அதுவே மிகச் செலவானது.

ஒரு தொகுப்பு தனது உள்ளீடுகளின் உறுப்பினத்தன்மையை ஒரு நங்கூரத்துக்கு, அதாவது ஒரு மர வேருக்கு, எதிராக நிரூபிக்கிறது. இரண்டு விதிகள் நங்கூரத்தை நேர்மையாக வைக்கின்றன:

மாறிலிமதிப்புவிதி
ANCHOR_WINDOW256 பிளாக்குகள்; சங்கிலி 20-இல் 1,024நங்கூரம் கடைசி window பிளாக்-இறுதி வேர்களில் ஒன்றாக இருக்க வேண்டும்; பிளாக்கின் நடுவில் மரம் கடந்து செல்லும் வேர் ஒருபோதும் நங்கூரம் ஆகாது
TIME_WINDOW256 பிளாக்குகள்; சங்கிலி 20-இல் 1,024தொகுப்பின் time [height − window, height]-க்குள் இருக்க வேண்டும்

ஜெனிசிஸ் proof_window_blocks (v0.6.8, 256 முதல் 4,096) அமைக்காவிட்டால் இரண்டு சாளரங்களும் 256 பிளாக்குகள்; அது இரண்டையும் சேர்த்தே மாற்றுகிறது. சங்கிலி 20 1,024 என அமைக்கிறது; சங்கிலிகள் 14 முதல் 19 வரை அந்தப் புலம் இல்லை.

நிரூபணம் உண்மையான நேரம் எடுப்பதால் சாளரங்கள் உள்ளன: ஒரு அடுக்கு-14 தொகுப்பு நிரூபணத்துக்கு ஒரு மடிக்கணினியில் அளவிடப்பட்ட நேரம் சுமார் 100 வினாடிகள் (சங்கிலி 17 முதல் பணப்பை இரண்டாவதாக ஒரு அடுக்கு-10 அங்கீகார நிரூபணத்தையும் உருவாக்குகிறது, சுமார் 7 வினாடிகள்). சங்கிலி 18-இன் 1.17 s பிளாக்குகளில் 256 பிளாக்குகள் சுமார் ஐந்து நிமிடங்கள்; மெதுவான நிரூபிப்பாளரில் ஒப்படைக்கப்பட்ட நிரூபணம் 294 s-இல் மறுக்கப்பட்டது; சங்கிலி 20-இன் 1,024 பிளாக்குகள், அங்கு எக்ஸ்ப்ளோரர் தெரிவித்த 1.34 s-இல் சுமார் 23 நிமிடங்கள். போட்டியில் தோற்கும் பணப்பைக்கு anchor is not one of the last 1024 roots எனத் தெரிவிக்கப்படுகிறது, அது மீண்டும் நிரூபிக்கிறது. அளவுரு இல்லாத rand_getAnchor தலைப் பிளாக்கின் இறுதி வேரைத் தருகிறது; ஒரு நிரூபிப்பாளர் அடிப்படையாகக் கொள்ள வேண்டிய ஒரே நங்கூரம் அதுவே.

தொகுப்பு

மதிப்பை நகர்த்தும் ஒவ்வொரு பரிவர்த்தனையும் சரியாக ஒரு நிலையான 4-உள்ளீடு-4-வெளியீடு மறைக்கப்பட்ட-சொத்துத் தொகுப்பைச் சுமக்கிறது (சங்கிலி 14 முதல்; சங்கிலி 13 வரை அது 2-உள்ளீடு-2-வெளியீடு). அது மறைக்கப்பட்ட-சொத்து zkVM விருந்தினர் நிரலால் நிரூபிக்கப்படுகிறது; அந்நிரலின் சுருக்கம் hc_bundle ஜெனிசிஸ் கோப்பில் நிலைநிறுத்தப்பட்டுள்ளது (சங்கிலிகள் 17 முதல் 20 வரை 60af094acfe65d85fdb18fb3d06cf9085dcf28c96e59e87f1ee527226e6e3fce, தொகுப்பு விருந்தினர் v3; சங்கிலிகள் 14, 15-இல் அது 83d3a3704a1fcdb9bae7136c0a947ffa34bd53f055388395ed705fe8cacd0ef8, விருந்தினர் v1):

Bundle { anchor, nullifiers[4], commitments[4], fee, burn_a, burn_r, burn_asset, time, envelopes[4], proof,
         auth_commit, auth_proof }     // the last two since chain 17

இடங்கள் 0–1, உள்ளீடும் வெளியீடும், ஒரு தனிப்பட்ட சொத்து A-ஐச் சுமக்கின்றன; இடங்கள் 2–3 எப்போதும் RAND-ஐச் சுமக்கின்றன. RAND மட்டுமான செலுத்துகையில் இடங்கள் 0–1 போலிகள், மதிப்பும் கட்டணமும் இடங்கள் 2–3 வழியாக நகர்கின்றன. டோக்கன் பரிமாற்றத்தில் டோக்கன் இடங்கள் 0–1 வழியாக நகர்கிறது, RAND கட்டணம் அதே நிரூபணத்தின் இடங்கள் 2–3-இலிருந்து செலுத்தப்படுகிறது. A நிரூபணத்தின் ஒரு சாட்சிச் சொல், எந்தப் பொதுப் புலத்திலும் இல்லை; எனவே எந்த RPL டோக்கனின் பரிமாற்றமும் burn_a = burn_r = burn_asset = 0 உடன் கூடிய Action::None ஆகும், புலத்துக்குப் புலம் ஒரு RAND செலுத்துகையின் வடிவம்.

ஒவ்வொரு உண்மையான உள்ளீடும் anchor-இன் கீழ் ஓர் இலை என்றும் அதன் இடத்தின் சொத்தைச் சுமக்கிறது என்றும், நான்கு செல்லாக்கிகளும் வெளியிடப்பட்டவையே என்றும், ஒவ்வொரு குழுவும் சமநிலையில் உள்ளது (தனிப்பட்ட சொத்தில் in0 + in1 = out0 + out1 + burn_a, RAND-இல் in2 + in3 = out2 + out3 + fee + burn_r) என்றும், செலவழிப்பவர் சாவிகளை வைத்திருக்கிறார் என்றும் நிரூபணம் கூறுகிறது — எந்த இலைகள், எந்தத் தொகைகள், எந்தச் சொத்து, யார் என்பதை வெளிப்படுத்தாமல். குளத்தை விட்டு வெளியேறும் மதிப்பைப் பற்றித் தொகுப்பு வெளியிடும் ஒரே பொது அறிக்கை மூன்று எரிப்புப் புலங்களே: burn_a, burn_asset ஆகியவை TokenBurn அல்லது BridgeBurn-இல் மட்டுமே பூஜ்யமல்லாதவை, அங்கு அவை செயலின் தொகைக்கும் சொத்துக்கும் சமம்; burn_r என்பது எரிக்கப்பட்ட RAND, Bond (பங்கு வைப்பு) மற்றும் RegisterAggregator (பிணைத்தொகை) ஆகியவற்றில் மட்டுமே பூஜ்யமல்லாதது. கட்டணம் எப்போதும் RAND.

சங்கிலி 17 முதல் செலவழிக்கும் அதிகாரம் இரண்டு நிரூபணங்களுக்கு இடையே பிரிக்கப்பட்டுள்ளது (பிளவுபட்ட அங்கீகாரம்). முந்தைய விருந்தினர் நிரல்கள் செலவுச் சாவியை எடுத்த இடத்தில், தொகுப்பு விருந்தினர் v3 பார்வைச் சாவி nk-ஐயும் ஒரு சால்ட்டையும் எடுக்கிறது: அது pk_self = H(PK, nk)-ஐப் பெறுகிறது, ஒவ்வொரு உள்ளீடும் அதற்குச் சொந்தமாக இருக்க வேண்டும் என்று கோருகிறது, c = H(AUTH, nk ‖ salt)-ஐத் தான் வெளியிடும் சுருக்கத்தில் இணைக்கிறது. இரண்டாவது விருந்தினர் நிரலான அங்கீகார விருந்தினர் (ஜெனிசிஸ் hc_auth, 1e4e347f44cf86750b30a9a4bdf9ec9256efe353d4ff8017451eca7d195639c1) செலவுச் சாவி sk-ஐயும் அதே சால்ட்டையும் எடுத்து, nk = H(NK, sk)-ஐப் பெற்று, அதே c-ஐ வெளியிடுகிறது. தொகுப்பு c-ஐ auth_commit ஆகவும், அங்கீகார விருந்தினரின் அடுக்கு-10 நிரூபணத்தை auth_proof ஆகவும் சுமக்கிறது; இரண்டு நிரூபணங்களும் ஒரே பரிவர்த்தனைப் பிணைப்புக்கு எதிராகச் சரிபார்க்கப்பட வேண்டும் என்றும் c-இன் இரு மதிப்புகளும் ஒத்துப்போக வேண்டும் என்றும் பேரேடு கோருகிறது. ஆகவே nk-ஐயும் சால்ட்டையும் வைத்திருக்கும் ஒரு நிரூபிப்பாளர் தொகுப்பு நிரூபணத்தை உருவாக்க முடியும், ஆனால் அங்கீகார நிரூபணத்தை அல்ல; ஒப்படைக்கப்பட்ட நிரூபணம் இதன் மீதே நிற்கிறது. சால்ட் ஒவ்வொரு தொகுப்புக்கும் புதிதான 256 சீரற்ற பிட்கள், எனவே auth_commit பொதுவானது, எதையும் இணைப்பதில்லை. தனக்குத் தானே நிரூபிக்கும் பணப்பையும் இரண்டு நிரூபணங்களையும் உருவாக்குகிறது, எனவே சுயமாக நிரூபிக்கப்பட்ட பரிவர்த்தனையும் ஒப்படைக்கப்பட்ட பரிவர்த்தனையும் சங்கிலியில் ஒரே மாதிரித் தெரிகின்றன.

வடிவம் நிலையானது, எனவே இடங்கள் பெரும்பாலும் போலிகளாக இருக்கும்: போலி உள்ளீடு என்பது செலவிடுபவருக்குச் சொந்தமான பூஜ்ய மதிப்புள்ள நோட் (அதன் நலிஃபையர் அப்போதும் வெளியிடப்படுகிறது), போலி வெளியீடு என்பது பூஜ்யத் தொகையுள்ள நோட், மீதி பூஜ்யமாக இருந்தாலும் மீதி வெளியீடு இருக்கும். மீதி இல்லாதபோது வேறுபட்டுத் தோன்றும் பரிவர்த்தனை, மீதி இல்லை என்பதைக் கசியவிடும். வாலட்டுகளுக்கு இதன் விளைவு: ஒரு தொகுப்பின் இரண்டு குழுக்களில் ஒவ்வொன்றும் அதிகபட்சம் இரண்டு நோட்டுகளையே செலவிடும். ஒரு RAND கொடுப்பனவு, ஒரு பிணை, ஒரு நிறுவுதல் அல்லது ஒரு அழைப்பு அதிகபட்சம் இரண்டு RAND நோட்டுகளைச் செலவிடும்; ஒரு டோக்கன் பரிமாற்றம் அல்லது எரிப்பு அந்த டோக்கனின் அதிகபட்சம் இரண்டு நோட்டுகளையும், கட்டணத்துக்கு அதிகபட்சம் இரண்டு RAND நோட்டுகளையும் செலவிடும். ஒரு குழுவில் மூன்று அல்லது அதற்கு மேற்பட்ட நோட்டுகளில் பரவியுள்ள மதிப்பை, தன் சொந்த முகவரிக்கு அனுப்புவதன் மூலம் முதலில் ஒருங்கிணைக்க வேண்டும்.

சங்கிலி 14 முதல் நிரூபணம் அதன் பரிவர்த்தனையுடனும் பிணைக்கப்பட்டுள்ளது: நிரூபணங்கள் வெறுமையாக்கப்பட்ட முழுப் பரிவர்த்தனையின் ஹாஷ் மீது அது உருவாக்கப்பட்டு, அதற்கு எதிராகச் சரிபார்க்கப்படுகிறது; எனவே அதை வேறொரு செயலுக்கோ, வேறு உறைகளுக்கோ, வேறொரு சங்கிலிக்கோ நகலெடுக்க முடியாது; சங்கிலி 20-இல் அந்த ஹாஷ் ஜெனிசிஸ் ஹாஷையும் உள்ளடக்குகிறது, எனவே அதே chain id-ஐப் பகிரும் சங்கிலிக்கும் நகலெடுக்க முடியாது (பரிவர்த்தனைகள்).

எது பொதுவானது, எது மறைக்கப்பட்டது

சங்கிலியில் பொதுவானதுமறைக்கப்பட்டது
RAND அல்லது எந்த RPL டோக்கனின் பரிமாற்றம்நங்கூரம், நான்கு நலிஃபையர்களும், நான்கு உறுதிப்பாடுகளும், கட்டணம், burn_a = burn_r = burn_asset = 0, time, நான்கு உறை மறையுரைகள், நிரூபணம், auth_commit மற்றும் அங்கீகார நிரூபணம்யார் அனுப்பினார், யாருக்குச் செலுத்தப்படுகிறது, தொகை, குறிப்பு, எந்தச் சொத்து நகர்ந்தது, மீதி, எந்த இலைகள் செலவிடப்பட்டன, எந்த இடங்கள் போலிகள்
டோக்கன் எரிப்பு அல்லது பிரிட்ஜ் எரிப்புஒரு பரிமாற்றம் வெளியிடும் அனைத்தும், burn_asset மற்றும் burn_a செயலின் சொத்துக்கும் தொகைக்கும் சமமாக (பிரிட்ஜ் எரிப்பில், ரிலேயர் கட்டணம், ஆதார டோக்கன் மற்றும் சேருமிடமும்)எந்த நோட்டுகள் எரிக்கப்பட்டன, அவற்றை யார் எரித்தார்
ஃபாசெட் அச்சிடல்உறுதிப்பாடு, உறை, தொகை, அச்சிட்ட சரிபார்ப்பாளர், மேலும் சங்கிலி 14 முதல் நோட்டின் திறப்பு (pk, time, r), அதிலிருந்து ஏற்பு உறுதிப்பாட்டை மீளக் கணக்கிடுகிறதுநோட்டின் ஒவ்வொரு பிந்தைய செலவும்
ஜெனிசிஸ் வைப்புஜெனிசிஸ் கோப்பில் { cm, envelope, amount, opening: { pk, time, r } }, பட்டியலிடப்பட்ட டோக்கனின் நோட்டுக்குத் திறப்பில் asset உடன் (சங்கிலி 20-இன் ஜெனிசிஸ் இரண்டு zUSD நோட்டுகளைக் கொண்டுள்ளது): உரிமையாளரின் pk, தொகை, சொத்து ஆகியவை வடிவமைப்பின்படியே பொதுவானவைபின்னர் எப்போது, எதற்குள் செலவிடப்படுகிறது
திரும்பப் பெறுதல், பிரிட்ஜ் வைப்பு, டோக்கன் அச்சிடல் அல்லது பதிவின் தொடக்க அச்சிடல்தொகை, பெறுநர், நோட்டின் time மற்றும் மறைப்புக் காரணி r (உறுதிப்பாட்டைச் சங்கிலியே கணக்கிடுகிறது)நோட்டின் ஒவ்வொரு பிந்தைய செலவும்
இன்வோக்கின் செலுத்துகை அல்லது நிரல் அச்சிடல் (சங்கிலி 20)தொகை, சொத்து, பெறுநர் மற்றும் r; நோட்டின் time தொகுப்பினுடையதுநோட்டின் ஒவ்வொரு பிந்தைய செலவும்
பிரிட்ஜ் கட்டண நோட் (சங்கிலி 20)தொகை, சொத்து மற்றும் time, வருவிக்கப்பட்ட மறைப்புக் காரணி, உரிமையாளராக ஜெனிசிஸ் கருவூலம், உறை இல்லைநோட்டின் ஒவ்வொரு பிந்தைய செலவும்

மதிப்பு பொதுவான தொகையுடன் தொகுப்பில் நுழைகிறது — ஃபாசெட் அச்சிடல், ஜெனிசிஸ் வைப்பு, சரிபார்ப்பாளரின் திரும்பப் பெறுதல், பிரிட்ஜ் சான்றளிப்பும் அதன் கட்டண நோட்டும், டோக்கன் அச்சிடல், நிரல் பெட்டகத்தின் செலுத்துகை — பொதுவான கட்டணமாகவோ எரிப்பாகவோ வெளியேறுகிறது. இடையில் உள்ள அனைத்தும் நோட்டுகளே.

இந்த அட்டவணை சங்கிலி 20-இன் நிரூபணங்கள் மறைப்பதைக் காட்டுகிறது; இது எப்போதும் உண்மையாக இருந்ததில்லை. சங்கிலிகள் 14, 15-இல் தொகுப்பு நிரூபணமே கூடுதலாக வெளிப்படுத்தியது (2026-09-27 zkVM மதிப்பாய்வு, INT-2 / GV-1): ஒவ்வொரு அட்டவணையின் LogUp இயங்கு மொத்தமும் மறைக்கப்படாமல் வெளியிடப்பட்டது; v1 கெஸ்ட் போலி உள்ளீட்டுக்கு Merkle மற்றும் சொத்துச் சோதனைகளைத் தவிர்த்தது, ஒவ்வொரு Merkle பாதை பிட்டிலும் கிளைத்தது; எனவே எந்த நான்கு உள்ளீட்டு இடங்கள் உண்மையானவை, அதனால் அது ஒரு டோக்கனை நகர்த்தியதா அல்லது RAND-ஐ மட்டுமா, ஒவ்வொரு செலவிடப்பட்ட இலைக் குறியீட்டிலும் உள்ள 1 பிட்டுகளின் எண்ணிக்கை ஆகியவற்றை ஒரு தொகுப்பு நிரூபணத்திலிருந்து யார் வேண்டுமானாலும் படிக்க முடிந்தது. இரண்டு மாற்றங்கள் இதை மூடின. சங்கிலி 16 கட்டுப்பாட்டுத் தொகுப்பு 7-க்கு மாறியது; அது ஒவ்வொரு LogUp முனையத்தையும் மறைக்கிறது, அறிவிக்கப்பட்ட ஒவ்வொரு அட்டவணையையும் குறைந்தது 2^7 வரிசைகளாக்குகிறது; மேலும் கிளையற்ற தொகுப்பு கெஸ்ட் v2-க்கு மாறியது, அதில் போலியோ உண்மையோ ஒவ்வொரு இடமும் அதே அறிவுறுத்தல்கள் வழியாக முழு உறுப்பினர் மற்றும் சொத்துச் சோதனையை இயக்குகிறது. சங்கிலிகள் 17 முதல் 20 வரை இயக்கும் கெஸ்ட் v3, செலவுச் சாவியின் இடத்தில் nk மற்றும் உப்புடன் கூடிய v2-இன் தொடர்பே; அதுவும் கிளையற்றது. சங்கிலிகள் 14, 15-இல் உறுதிசெய்யப்பட்ட தொகுப்புகள் கசியவிட்டவை அப்படியே இருக்கும். சங்கிலி 20-இல் ஒரு நிரூபணம் இன்னும் காட்டுவது அதன் தலைப்பு மட்டுமே: ஒரு தொகுப்புக்கு அது ஒரே நிலையான வடிவம் (அடுக்கு 14, ஒவ்வொரு தொகுப்பிலும் அறிவிக்கப்பட்ட கேஸ் வரம்பு 20,479); ஒரு Call அல்லது Invoke-க்கு அது அடுக்கு, அறிவிக்கப்பட்ட கேஸ் வரம்பு, அழைப்பு keccak அல்லது sha256 முன்தொகுப்பைப் பயன்படுத்தியதா, தோராயமாக எத்தனை முறை என்பவை (நிரூபணங்கள்).

உறை இல்லாத நோட்டுகள்

பெரும்பாலான நோட்டுகள் அவற்றின் உறையைத் திறப்பதன் மூலம் கண்டறியப்படுகின்றன. சில நோட்டுகளைச் சங்கிலி பொதுப் புலங்களிலிருந்து கணக்கிடுகிறது; அவற்றுக்கு உறை இல்லை, அல்லது அதை நம்பக்கூடாது.

  • பிரிட்ஜ் கட்டண நோட்டுகள் (சங்கிலி 20). bridge.fees-இன் கீழ், ஒவ்வொரு வைப்பிலும் ஒவ்வொரு எரிப்பிலும் சங்கிலி ஜெனிசிஸ் கருவூலத்துக்கு ஒரு zUSD நோட்டைச் சேர்க்கிறது (RPL டோக்கன்கள்). அதற்கு உறை இல்லை: சேமிப்பகம் அதை யாருக்கும் முத்திரையிடப்படாத வெற்று உறையுடன் அட்டவணைப்படுத்துகிறது; rand_getCompactBlocks மற்றும் rand_getCommitments அதை அப்படியே காட்டுகின்றன: வைப்பினுடையது வைப்பு நோட்டுக்குப் பின்னும், எரிப்பினுடையது தொகுப்பின் நான்கு நோட்டுகளுக்குப் பின்னும். நோட்டின் ஒவ்வொரு சொல்லும் பொதுவானது: பரிவர்த்தனையிலிருந்தும் ஜெனிசிஸ் விகிதத்திலிருந்தும் தொகை, பரிவர்த்தனையிலிருந்து சொத்து மற்றும் time, from = 0, மறைப்புக் காரணி வைப்புக்கு blake3("rand-bridge-fee-r-1" ‖ mu) அல்லது எரிப்புக்கு blake3("rand-bridge-burn-fee-r-1" ‖ txid), உரிமையாளர் ஜெனிசிஸ் recipient.
  • உறை எதையும் பிணைக்காத நோட்டுகள். பிரிட்ஜ் வைப்பு, டோக்கன் அச்சிடல், பதிவின் தொடக்க அச்சிடல், மேலும் சங்கிலி 20-இல் இன்வோக்கின் செலுத்துகைகள் மற்றும் நிரல் அச்சிடல்கள் ஆகியவை பரிவர்த்தனையைச் சமர்ப்பித்தவர் முத்திரையிட்ட உறையைக் கொண்டுள்ளன; ஆனால் சங்கிலி நோட்டைச் செயலின் பொதுப் புலங்களிலிருந்து கணக்கிடுகிறது, உறையை அதற்கு எதிராக ஒருபோதும் சோதிப்பதில்லை. கவனக்குறைவான அல்லது பகைமையுள்ள சமர்ப்பிப்பாளர் குப்பையை முத்திரையிடலாம்; எனவே பெறுநர் அதைச் சார்ந்திருக்கக் கூடாது.

ஆகவே rand வாலட் இந்த நோட்டுகளைத் தானே மீளக் கட்டமைக்கிறது (wallet::rebuilt_notes_with), சோதனை மறைவிலக்கத்துடன் இணையாக ஒரு பொதுச் சுற்றில்: தன் சொந்த pk-ஐக் குறிப்பிடும் அத்தகைய ஒவ்வொரு பரிவர்த்தனைக்கும், தன் முகவரி கருவூலமாக இருக்கும்போது கட்டண நோட்டுகளுக்கும், அது நோட்டைக் கணக்கிட்டு, அது ஹாஷ் ஆகும் உறுதிப்பாட்டைக் கொண்ட இலையில் பதிவு செய்கிறது. மீளக் கட்டமைக்கப்பட்ட நோட் ஒரு வேட்பாளர் மட்டுமே: ஒரு பரிவர்த்தனை, கட்டண விகிதம் அல்லது ஒரு ஹாஷ் பற்றிப் பொய் சொல்லும் கணு ஒரு நோட்டைக் கண்டறியப்படாமல் செய்யலாம், ஆனால் ஒருபோதும் வரவு வைக்க முடியாது. v0.6.8 முதல் rand_getBlocks திருப்பும் தலைப்புகள் வைப்பு, அச்சிடல் மற்றும் பதிவுப் பரிவர்த்தனைகளை public_notes-இல் கொண்டுள்ளன, பிரிட்ஜ் கட்டணங்கள் உள்ள சங்கிலியில் எரிப்புகளையும், நிரூபணங்கள் நீக்கப்பட்டு, அவற்றின் உண்மையான id-இன் கீழ்; எனவே இந்தச் சுற்று தலைப்புப் பக்கங்களை மட்டுமே படிக்கிறது. v0.6.8-இல் இன்வோக்குகள் public_notes-இல் இல்லை; எனவே v0.6.8 கணுவுக்கு எதிராக வாலட் இன்வோக்கின் செலுத்துகையை அதன் உறை வழியாக மட்டுமே கண்டறிகிறது; அந்த உறையை இன்வோக் செய்பவர் முத்திரையிடுகிறார், எதுவும் அதைச் சோதிப்பதில்லை. Fullnode main d0bb73fb முதல் இன்வோக்குகளையும் அங்கே கொண்டுள்ளது, நிரூபணங்கள் நீக்கப்பட்டு; இது கணுவுக்கு மட்டுமான மாற்றம், சங்கிலி 20-இன் கணுத் தொகுப்பில் இன்னும் வெளியிடப்படவில்லை; இதற்கு வாலட்டில் எந்த மாற்றமும் தேவையில்லை.

ஸ்கேனிங்: ஒரு வாலட் தன் நோட்டுகளை எவ்வாறு கண்டறிகிறது

ஒரு கணு “இதோ முழு மரம்” என்று பதிலளிக்கிறது, ஒருபோதும் “இதோ உங்கள் இருப்பு” என்று அல்ல. ஒரு வாலட்:

  1. rand_getCommitments(from_index, limit) (ஒரு அழைப்புக்கு அதிகபட்சம் 1,000) அல்லது தொகுதிவாரி ஓட்டம் rand_getCompactBlocks(from_height, to_height) (ஒரு அழைப்புக்கு அதிகபட்சம் 128 தொகுதிகள்) மூலம் இலைகளைப் பக்கம் பக்கமாகப் பெறுகிறது; தொகுப்பைக் கொண்ட ஒவ்வொரு பரிவர்த்தனையும் அங்கே நான்கு நோட்டுகளையும் நான்கு நலிஃபையர்களையும் பட்டியலிடுகிறது; எந்த வாசகராலும் போலி இடத்தை உண்மையான இடத்திலிருந்து வேறுபடுத்த முடியாது;
  2. ஒவ்வொரு உறையையும் சோதனை மறைவிலக்கம் செய்கிறது: பெறுநராகத் தன் ML-KEM டிகேப்சுலேஷன் சாவி மூலமும், அனுப்புநராக ovk மூலமும்; pk தன்னுடையதாக உள்ள நோட்டுகளை வைத்துக்கொள்கிறது; பொதுத் தொகையுள்ள நோட்டுகளை அவற்றின் பரிவர்த்தனைகளிலிருந்து மீளக் கட்டமைக்கிறது (மேலே);
  3. வைத்துக்கொண்ட ஒவ்வொரு நோட்டின் நலிஃபையரையும் கணக்கிட்டு, rand_getNullifiers(from_height, limit)-இல் தோன்றுபவற்றைக் குறிக்கிறது;
  4. மீதமுள்ளவற்றைக் கூட்டுகிறது.

எவ்வளவு தூரம் ஸ்கேன் செய்ய வேண்டும் என்பதை rand_getTreeInfo கூறுகிறது: { "next_index", "root", "nullifiers" }. ஒரு செலவுக்கு, வாலட்டுக்கு ஒவ்வொரு உண்மையான உள்ளீட்டின் 32-நிலை Merkle பாதை தேவை. rand வாலட் உறுதிப்பாட்டு மரத்தின் தன் சொந்த நகலை வைத்துள்ளது; அது அதே rand_getCommitments பக்கங்களிலிருந்து ஸ்கேனின்போது கட்டப்படுகிறது; ஒவ்வொரு பாதையையும் வாலட்டே கணக்கிடுகிறது; எனவே ஓர் அனுப்புதல் கணுவிடம் கேட்கும் ஒரே மரக் கேள்வி rand_getAnchor, அது எந்த இலையையும் குறிப்பிடுவதில்லை. rand_getWitness(index) பிற கிளையன்ட்டுகளுக்காகக் கணுவில் தொடர்ந்து உள்ளது. அழைப்பவர் எந்த இலையைச் செலவிடப் போகிறார் என்பதை அது கணுவுக்குத் தெரிவிக்கிறது; உள்ளூர் மரத்துக்கு முன் இதுவே தொகுப்பின் மிகப் பெரிய கசிவாக இருந்தது: அதைப் பயன்படுத்த வேண்டிய கிளையன்ட் தன் சொந்தக் கணுவை இயக்க வேண்டும், அல்லது தனக்குத் தேவையான சாட்சிகளுடன் தேவையற்ற சாட்சிகளையும் சேர்த்துக் கேட்க வேண்டும்.

rand sync        # scanned 41 leaves and 37 blocks; 1 notes, 1 unspent
rand notes       # index, asset, amount, height, spent, pending, memo
rand history     # notes this wallet created for others, opened through ovk

rand send --no-wait கட்டளைக்கும், அதன் நல்லிஃபையரையோ அல்லது time + window வரம்பைத் தாண்டிய பிளாக்குகளையோ காணும் அடுத்த sync கட்டளைக்கும் இடையில் ஒரு நோட் pending நிலையில் இருக்கும் (chain 20 இல் 1,024, rand_getLimits.proof_window_blocks இலிருந்து படிக்கப்படுகிறது; அது இல்லையெனில் 256). அதன் பிறகு அந்தத் தொகுப்பு ஒருபோதும் ஏற்கப்பட முடியாது, நோட் மீண்டும் செலவிடக்கூடியதாகிறது.

fullnode கமிட் c0878c3f (சங்கிலி 21) உடன் 2026-10-12 அன்று இறுதியாகச் சரிபார்க்கப்பட்டது. நிரலும் இந்தப் பக்கமும் முரண்படும் இடங்களில் நிரலே சரியானது; எங்களுக்குத் தெரிவியுங்கள்.