Rand Protocol
ஆவணமாக்கல்
வழிகாட்டிகள்

zkVM எவ்வாறு செயல்படுகிறது

ஒரு நிரலின் உள்ளீட்டைக் காட்டாமலேயே அது சரியாக இயங்கியது என்பதை Rand எவ்வாறு நிரூபிக்கிறது - RISC-V இயந்திரம், ஒன்பது அட்டவணைகளாகப் பிரிக்கப்பட்ட இயக்கச் சுவடு, அவற்றை இணைக்கும் பஸ்கள், பல்லுறுப்புக்கோவைச் சமன்பாடுகளாக விதிகள், உறுதிப்பாடு (commitment), FRI, Fiat-Shamir, பூஜ்ய அறிவு எங்கிருந்து வருகிறது, ஒரு சரிபார்ப்பாளர் (validator) எதைச் சரிபார்க்கிறார், மற்றும் ஒவ்வொரு FRI, ஹாஷ் அளவுருவும் ஏன் அதன் தற்போதைய மதிப்பைக் கொண்டுள்ளது.

இந்தப் பக்கம் Rand-இல் உள்ள ஒவ்வொரு நிரூபணத்தின் பின்னாலும் இயங்கும் இயந்திரத்தை விளக்குகிறது. அது எதை நிரூபிக்கிறது, ஒரு நிரலின் இயக்கம் சில மில்லிவினாடிகளில் செல்லுபடியாக்குநர் சரிபார்க்கக்கூடிய ஒன்றாக எவ்வாறு மாறுகிறது, தனியுரிமை எங்கிருந்து வருகிறது என்பவற்றைப் புரிந்துகொள்ள இதைப் படியுங்கள். ஒரு நிரூபணத்தின் செலவு என்ன, வாலெட் அதை எவ்வாறு உருவாக்குகிறது என்பவற்றுக்கு நிரூபணங்கள் பக்கத்தைப் பாருங்கள். அளவுருக்களுக்கும் ஹாஷ் கட்டமைப்புகளுக்கும் குறியாக்கவியல் பக்கத்தைப் பாருங்கள். நிரல் எழுதப்படும் அறிவுறுத்தல் தொகுப்புக்கு RISC-V ISA பக்கத்தைப் பாருங்கள்.

ஒவ்வொரு நிரூபணமும் கூறும் ஒரே கூற்று

சங்கிலி இயக்கும் ஒவ்வொரு நிரலுக்கும் zkVM ஒரே வகைக் கூற்றை நிரூபிக்கிறது:

டைஜஸ்ட் hc கொண்ட ஒரு நிரல், base_pc-இல் தொடங்கி, H_IN உறுதிப்படுத்தும் ஒரு தனிப்பட்ட உள்ளீட்டின் மீதும் H_PUB உறுதிப்படுத்தும் ஒரு பொது உள்ளீட்டுப் பகுதியின் மீதும் இயக்கப்பட்டு, 2ᵗ − 1 சுழற்சிகளுக்குள் நின்றது, அதிகபட்சம் GAS_LIMIT gas செலவிட்டது, இந்த எட்டு வெளியீட்டுச் சொற்களை எழுதியது.

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

நிரூபண அமைப்பு Plonky3 கொண்டு கட்டப்பட்ட ஒரு STARK ஆகும். அதற்கு ஒரு ஹாஷ் சார்பைத் தவிர வேறு எதுவும் தேவையில்லை: அமைப்புச் சடங்கும் இல்லை, நீள்வட்ட வளைவுகளும் இல்லை; எனவே Shor வழிமுறை உடைக்க அதில் எதுவும் இல்லை.

செயலாக்கக் குழாய்

 secret input ──► run the program ──► execution trace ──► polynomials ──► commit ──► FRI ──► proof
 (keys,           (RV32IM emulator)   (nine tables,      (one per       (8× code,   (80 queries,
  notes, paths)                        one row per step)  column)        Merkle)     20-bit grinding)

 every validator:  recompute the challenges from the Merkle roots, open 80 random positions,
                   check the rules there  →  ≈ 16 ms

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

1. நிரலை இயக்கி அனைத்தையும் பதிவுசெய்தல்

இயந்திரம் ஒரு 32-பிட் RISC-V செயலி: RV32IM, ஆனால் FENCE, CSR அறிவுறுத்தல்கள், EBREAK ஆகியவை இல்லாமல் (RISC-V ISA). நிரூபிப்பவர் முதலில் நிரலை ஒரு போலியாக்கியில் இயக்கி, ஒவ்வொரு கடிகாரத் துடிப்புக்கும் ஒரு வரிசையைப் பதிவுசெய்கிறார். அந்தப் பதிவே இயக்கச் சுவடு. அதை வைத்திருக்கும் எவரும் இயக்கத்தைப் படிப்படியாக மீண்டும் இயக்க முடியும்; சுவட்டைத் தன்னிடம் வைத்திருக்காமலேயே அது சரியானது என்று சரிபார்ப்பவரை நம்பவைப்பதற்காகவே திட்டத்தின் மீதிப் பகுதி உள்ளது.

ஒரு நிரல் எட்டு சிஸ்டம் அழைப்புகள் வழியாக மட்டுமே வெளியுலகுடன் தொடர்புகொள்கிறது:

சிஸ்டம் அழைப்புஎண்அது செய்வது
HALT0நிறுத்துதல்; எட்டு வெளியீட்டுச் சொற்களும் இறுதியானவை
WRITE_OUTPUT1எட்டு பொது வெளியீட்டுச் சொற்களில் ஒன்றை அமைத்தல்
READ_INPUT2தனிப்பட்ட உள்ளீட்டின் ஒரு சொல்லைப் படித்தல்
POSEIDON23நினைவகத்தில் உள்ள ஒரு இடையகத்தை அதே இடத்தில் ஹாஷ் செய்தல்
KECCAK4ஒரு Keccak-f[1600] வரிசைமாற்றம்
SHA2565ஒரு SHA-256 சுருக்கம்
READ_PUBLIC6பொது உள்ளீட்டுப் பகுதியின் ஒரு சொல்லைப் படித்தல்
POSEIDON2_LEN7செய்தியின் நீளத்தை ஹாஷுக்குள் பிணைக்கும் POSEIDON2 (கட்டுப்பாட்டுத் தொகுப்பு 7)

குறிப்பு உறுதிப்பாடுகள், செல்லாக்கிகள், Merkle பாதைகள் ஆகியவை இயந்திரத்துக்குள் கட்டமைக்கப்படவில்லை. அவை, டொமைன் குறியிடப்பட்ட செய்தியை நினைவகத்தில் அமைத்து POSEIDON2-ஐ அழைக்கும் சாதாரண விருந்தினர் நிரல் குறியீடு. அந்த சிஸ்டம் அழைப்பு திணிப்பு செய்வதில்லை; எனவே [a], [a, 0] இரண்டும் ஒரே ஹாஷைத் தருகின்றன. வெளியிடப்பட்ட விருந்தினர் நிரல்கள் நிலையான நீளச் செய்திகளில் மட்டுமே அதை அழைக்கின்றன. நீளம் மாறக்கூடிய தரவை ஹாஷ் செய்யும் புதிய நிரல் POSEIDON2_LEN-ஐப் பயன்படுத்துகிறது (RISC-V ISA).

இடைநிறுத்தம் இல்லை

முடிக்க மறுக்கும் அறிவுறுத்தல் எதுவும் செயலியில் இல்லை; எனவே ஒரு சரிபார்ப்பு தோல்வியடையும்போது நிரல் நிற்க முடியாது. அதற்குப் பதிலாகத் தொகுப்பு விருந்தினர் நிரல் தோல்வியைப் பதிவுசெய்கிறது: தோல்வியடையும் ஒவ்வொரு சரிபார்ப்பும் bad எனும் பதிவேட்டில் 1-ஐ OR செய்கிறது; வெளியீட்டு டைஜஸ்ட்டுக்குள் கடைசியாக ஹாஷ் செய்யப்படும் சொல் bad ஆகும்:

D = H(64; anchor, nf₀..₃, cm₀..₃, fee, burn_a, burn_r, burn_asset, time, c, bad)

c என்பது அங்கீகார நிரூபணமும் வெளியிடும் அங்கீகார உறுதிப்பாடு (சங்கிலி 17 முதல்; சங்கிலிகள் 14 முதல் 16 வரையிலான டைஜஸ்ட்டில் c இல்லை).

சங்கிலி D-இன் முன்னுருவை ஒருபோதும் அனுப்புநரிடமிருந்து பெறுவதில்லை. அது பரிவர்த்தனையின் பொதுப் புலங்களிலிருந்து முன்னுருவை மீண்டும் கட்டமைத்து, bad = 0 என்று தானே அமைத்து, ஹாஷ் செய்து, ஒப்பிடுகிறது. ஏமாற்றுபவர் ஒரு சரிபார்ப்பு தோல்வியடைந்த இயக்கத்துக்கு முற்றிலும் செல்லுபடியான நிரூபணத்தை உருவாக்க முடியும்; ஆனால் அந்த இயக்கம் H(…, 1)-ஐ வெளியிட்டது, சங்கிலி தேடுவதோ H(…, 0). இவ்விரண்டையும் பொருத்த ஒரு ஹாஷ் மோதல் தேவை.

2. சுவட்டை ஒன்பது அட்டவணைகளாகப் பிரித்தல்

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

அட்டவணைஅடுக்கு t-இல் வரிசைகள்அது பதிவுசெய்வது
programஅறிவிக்கப்பட்டது, ≥ 2⁷நிரலின் அறிவுறுத்தல் சொற்கள், சுற்றுக்குள் குறிவிலக்கப்பட்டவை; CPU எதைப் பெறலாம் என்பதை நிர்ணயிக்கிறது
cpu2ᵗஒவ்வொரு சுழற்சிக்கும் ஒரு வரிசை; அதற்கு முன் நிரலையும் தனிப்பட்ட உள்ளீட்டையும் பொதுப் பகுதியையும் ஹாஷ் செய்யும் வரிசைகள்; 35 பொது மதிப்புகளைக் கொண்டுள்ளது
memoryஅறிவிக்கப்பட்டது, ≥ 2ᵗ⁺²பதிவேடுகளும் RAM-உம், (வெளி, முகவரி, நேரம்) வாரியாக வரிசைப்படுத்தப்பட்டவை
alu2ᵗ⁺¹ஒவ்வொரு எண்கணித, தருக்க, நகர்த்தல், ஒப்பீடு, பெருக்கல், வகுத்தல் செயல்பாடும், பைட் கூறுகளின் மீது
range, nibbleஒவ்வொன்றும் 256நிலையான தேடல் அட்டவணைகள்: பைட்டுகள், இரண்டின் அடுக்குகள், 4-பிட் AND/OR/XOR
poseidon22ᵗ⁺²ஹாஷ் வரிசைமாற்றம், ஒவ்வொரு சுற்றுக்கும் ஒரு வரிசை
inputஅறிவிக்கப்பட்டது, ≥ 2⁷உறுதிப்படுத்தப்பட்ட தனிப்பட்ட உள்ளீட்டுச் சொற்கள்
publicஅறிவிக்கப்பட்டது, ≥ 2⁷பொதுப் பகுதிச் சொற்கள் (ஒரு தொகுப்புக்கு, பரிவர்த்தனைப் பிணைப்பு)

மேலும் இரண்டு அட்டவணைகள், keccak, sha256, அவற்றை அழைத்த நிரலின் நிரூபணத்தில் மட்டுமே இருக்கும்; இருக்கும்போது ஒவ்வொன்றும் குறைந்தது 2⁷ வரிசைகள் கொண்டவை; தொகுப்பு விருந்தினர் நிரல் இவற்றில் எதையும் பயன்படுத்துவதில்லை. அறிவிக்கப்பட்ட ஒவ்வொரு அட்டவணைக்குமான 2⁷ வரிசைகள் என்ற குறைந்தபட்ச வரம்பு கட்டுப்பாட்டுத் தொகுப்பு 7 உடன் வந்தது (பிரிவு 9).

அடுக்கு t என்பது 10, 12, 14, 16, 18, 20 ஆகியவற்றில் ஒன்று; அது அட்டவணைகளின் அளவை நிர்ணயிக்கிறது. ஒவ்வொரு தொகுப்பும் அடுக்கு 14-இல் நிரூபிக்கப்படுகிறது: 16,384 வரிசைகள் கொண்ட CPU அட்டவணை, அதில் விருந்தினர் நிரல் சுமார் 12,400 வரிசைகளைப் பயன்படுத்துகிறது. அங்கீகார விருந்தினர் நிரல் அடுக்கு 10-இல் 250 சுழற்சிகள் இயங்குகிறது. மீதி திணிப்பு; எனவே ஒரு நிரலுக்கு எந்த அடுக்கு தேவைப்பட்டது என்பதை மட்டுமே நிரூபணம் வெளிப்படுத்துகிறது, அதற்குள் அது எத்தனை படிகள் எடுத்தது என்பதை ஒருபோதும் அல்ல (அடுக்குகள்).

RAM-ஐச் சரிபார்க்கக்கூடியதாக்குவது நினைவக அட்டவணைதான். அது முகவரி வாரியாகவும் பின்னர் நேரம் வாரியாகவும் வரிசைப்படுத்தப்பட்டிருப்பதால், “ஒரு வாசிப்பு அந்த முகவரிக்குக் கடைசியாக எழுதப்பட்ட மதிப்பைத் தருகிறது” என்பது அடுத்தடுத்த இரண்டு வரிசைகளுக்கு இடையிலான ஒரு விதியாகிறது.

3. அட்டவணைகளை பஸ்கள் மூலம் இணைத்தல்

CPU பயன்படுத்திய கூட்டுத்தொகை ALU கணக்கிட்ட கூட்டுத்தொகைதான் என்று சரிபார்ப்பவருக்கு எப்படித் தெரியும்? பஸ்கள் மூலம். CPU-க்கு ஒரு கூட்டல் தேவைப்படும்போது அது (op, a, b, c) என்ற செய்தியை அனுப்புகிறது; ALU தான் கணக்கிடும் ஒவ்வொரு வரிசைக்கும் ஒரு செய்தியைப் பெறுகிறது. இயந்திரத்தில் பதினேழு பஸ்கள் உள்ளன:

பஸ்இடையில்
PROGRAM, PROGRAM_WORDcpu ← program: அறிவுறுத்தல் பெறுதல்கள், நிரல் டைஜஸ்ட் உள்வாங்கும் சொற்கள்
MEMORYcpu ↔ memory: ஒவ்வொரு வாசிப்பும் எழுதுதலும்
ALUcpu → alu
RANGE8, POW2, AND4, OR4, XOR4நிலையான அட்டவணைகளுக்கு எதிரான பைட் வரம்புச் சரிபார்ப்புகள், நகர்த்தல்கள், பிட்வாரிச் செயல்பாடுகள்
POSEIDON2cpu → poseidon2: ஒவ்வொரு வரிசைமாற்றத்துக்கும் ஒரு செய்தி
INPUT_DIGEST, INPUT_READcpu ← input: உள்ளீட்டு டைஜஸ்ட் உள்வாங்கும் சொற்கள், நிரலின் வாசிப்புகள்
PUBLIC_DIGEST, PUBLIC_READcpu ← public: பொதுப் பகுதிக்கான அதே இணை
KECCAK, SHA256cpu → விருப்பத்தேர்வு ஹாஷ் அட்டவணைகள்
BLINDஒவ்வொரு அட்டவணையும் → நிலையான சுழற்சியில் அடுத்த அட்டவணை: முதல் வரிசையில் ஒவ்வொன்றும் ஒரு சீரற்ற மதிப்பு (கட்டுப்பாட்டுத் தொகுப்பு 7)

பஸ்கள் மடக்கை-வகைக்கெழு வாதம் (LogUp) மூலம் சரிபார்க்கப்படுகின்றன. அட்டவணைகள் உறுதிப்படுத்தப்பட்ட பிறகு ஒரு சீரற்ற மதிப்பு α எடுக்கப்படுகிறது; ஒவ்வொரு அட்டவணையும் தான் அனுப்பும் அல்லது பெறும் செய்திகளின் மீது ±1/(α − m)-இன் தொடர் கூட்டுத்தொகையைப் பராமரிக்கிறது. அனுப்பப்பட்ட ஒவ்வொரு செய்தியும் பெறப்பட்டால், அதாவது இரு பக்கங்களிலும் ஒரே பல்கணம் இருந்தால், அப்போது மட்டுமே கூட்டுத்தொகைகள் சரியாக ஒன்றையொன்று ரத்துசெய்கின்றன. போலியாக்கப்பட்ட ஒரு செய்தி ஒரு மீதியை விட்டுச்செல்கிறது; சீரற்ற α அதை மிக அதிக நிகழ்தகவுடன் வெளிப்படுத்துகிறது. நினைவக பஸ் அதற்கு நெருங்கிய ஒரு முறையான பல்கண வரிசைமாற்றச் சரிபார்ப்பைப் பயன்படுத்துகிறது.

ஒவ்வொரு அட்டவணையும் தனது தொடர் கூட்டுத்தொகையின் இறுதி மதிப்பான அதன் முனைமதிப்பை வெளியிடுகிறது; முனைமதிப்புகளின் கூட்டுத்தொகை பூஜ்ஜியம் என்று சரிபார்ப்பவர் சரிபார்க்கிறார். கட்டுப்பாட்டுத் தொகுப்பு 6 வரை, ஒரு முனைமதிப்பு அதன் அட்டவணையின் உள்ளடக்கத்தின் சரிபார்க்கக்கூடிய சார்பாக இருந்தது. கட்டுப்பாட்டுத் தொகுப்பு 7 முதல், ஒவ்வொரு அட்டவணையும் ஐந்து கூடுதல் நெடுவரிசைகளைக் கொண்டுள்ளது; தனது முதல் வரிசையில் BLIND பஸ்ஸில் ஒரு சீரற்ற மதிப்பை அனுப்பி, அண்டை அட்டவணையின் மதிப்பைப் பெறுகிறது. ஒவ்வொரு முனைமதிப்பும் சவால் புலத்தின் ஒரு சீரான உறுப்பால் நகர்கிறது; கூட்டுத்தொகை பூஜ்ஜியமாகவே இருக்கிறது.

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

4. சுவட்டை வெளியுலகுடன் நங்கூரமிடுதல்

முப்பத்தைந்து பொது மதிப்புகள் சுவட்டிலிருந்து வெளியேறுகின்றன, அனைத்தும் CPU அட்டவணையில்:

மதிப்புகள்அவை என்ன
1நுழைவு pc
1அடுக்கு
8வெளியீட்டுச் சொற்கள் (ஒரு தொகுப்புக்கு, சுருக்கம் D)
8hc, நிரல் சுருக்கம்; நிரல் அட்டவணையின் சொற்களிலிருந்து தடத்தின் உள்ளேயே கணக்கிடப்படுகிறது
8H_IN, தனிப்பட்ட உள்ளீட்டுச் சுருக்கம்; முதலில் ஒரு புதிய 128-பிட் சால்ட், பின்னர் உள்ளீடு என்பதன் மீது கணக்கிடப்படுகிறது
8H_PUB, பொதுப் பகுதிச் சுருக்கம்; சால்ட் சேர்க்கப்படாதது
1GAS_LIMIT, நிரூபிப்பவர் அறிவிக்கும் கேஸ் உச்சவரம்பு (கட்டுப்பாட்டுத் தொகுப்பு 8)

hc சுற்றுக்குள் கணக்கிடப்படுவதால், வேறொரு நிரலைப் பற்றிய நிரூபணம் தொகுப்பு guest நிரலைப் பற்றிய நிரூபணமாகக் கடந்துசெல்ல முடியாது. சரிபார்ப்பவர் எந்த அறிவுறுத்தல் சொல்லையும் பார்ப்பதில்லை; அவர் hc-ஐத் தாம் எதிர்பார்க்கும் சுருக்கத்துடன் ஒப்பிடுகிறார். H_IN-இல் சால்ட் சேர்க்கப்பட்டிருப்பதால், அது தனிப்பட்ட உள்ளீட்டை வெளிப்படுத்தாமலேயே அதனுடன் பிணைக்கிறது; அந்த உள்ளீட்டை ஊகிக்கக்கூடிய ஒருவருக்கும் அது வெளிப்படுவதில்லை. H_PUB-இல் சால்ட் இல்லாததால், சரிபார்ப்பவர் தம்மிடம் ஏற்கெனவே உள்ள சொற்களிலிருந்து அதை மீண்டும் கணக்கிட முடியும். ஒரு தொகுப்புக்கு அந்தச் சொற்கள் பரிவர்த்தனைப் பிணைப்பு ஆகும்: நிரூபண பைட்டுகள் வெறுமையாக்கப்பட்ட பரிவர்த்தனையின் மீது blake3("rand-tx-bind-1" ‖ chain_id ‖ tx). எனவே வேறு சேருமிடம், குறிப்புரை, உறை அல்லது சங்கிலி அடையாளம் கொண்ட பரிவர்த்தனைக்கு நகலெடுக்கப்பட்ட நிரூபணம் சரிபார்ப்பில் தேறாது. சங்கிலி 20-இல் (தொடக்கத் தொகுதி binding_domain: 1) அது blake3("rand-tx-bind-2" ‖ genesis_hash ‖ chain_id ‖ tx) ஆகும்; எனவே அதே சங்கிலி அடையாளம் இருந்தாலும் ஒரு நிரூபணம் வேறொரு சங்கிலியில் சரிபார்ப்பில் தேறாது. இந்தச் சொற்கள் ஒரு பொது உள்ளீடு என்பதால், இந்த மாற்றம் சுற்றில் எதையும் மாற்றவில்லை. அங்கீகார நிரூபணமும் இதே எட்டுச் சொற்களின் மீதே உருவாக்கப்படுகிறது. சங்கிலி 20-இல் ஓர் அழைப்பு நிரூபணமும் இதே முறையில் பிணைக்கப்படுகிறது: அதன் பகுதி, நிரலின் பயன்படுத்தல் நேரப் பொதுச் சொற்களையும் அவற்றைத் தொடர்ந்து ஓர் அழைப்புப் பிணைப்பின் எட்டுச் சொற்களையும் கொண்டது (rand-call-bind-2; சங்கிலி 20-க்கு முன் rand-call-bind-1). எனவே வேறொரு கட்டணத் தொகுப்பின் கீழ் நகலெடுக்கப்பட்ட அழைப்பு நிரூபணம் சரிபார்ப்பில் தேறாது.

கேஸ் என்பது ஓர் இயக்கத்தின் சுமையை இயந்திரம் அளக்கும் அளவீடு; கட்டுப்பாட்டுத் தொகுப்பு 8 முதல் அது சுற்றில் உள்ளது. CPU அட்டவணையில் ஒரு GAS நெடுவரிசை உள்ளது. அது 1-இல் தொடங்கி, ஒவ்வொரு வரிசைக்கும் 1, ஒரு Poseidon2 உள்வாங்கல் வரிசைக்கு 3, ஒரு SHA256 வரிசைக்கு 64, ஒரு KECCAK வரிசைக்கு 192 எனக் கூடுகிறது. HALT வரிசையில், வேறுபாட்டின் வரம்புச் சரிபார்க்கப்பட்ட நான்கு உறுப்புகள் மூலம் சுற்று GAS ≤ GAS_LIMIT என்பதை நிரூபிக்கிறது. அந்த உறுப்புகள் ஒருபோதும் திறக்கப்படுவதில்லை: வரம்பு பொதுவானது, ஓர் இயக்கம் செலவிட்ட கேஸ் பொதுவானதல்ல. நிரூபணத்தின் சொந்தத் தலைப்புக்குத் தேவைப்படக்கூடியதை விட அதிகமான வரம்பை, சாவியை உருவாக்கும் முன்பே சரிபார்ப்பவர் நிராகரிக்கிறார்:

gas_max(t, k, s) = (2ᵗ − 1) + 2ᵗ⁻² + 191·(2ᵏ / 32) + 63·(2ˢ / 64)

இங்கு k, s என்பவை முறையே keccak, sha256 அட்டவணைகளின் அறிவிக்கப்பட்ட மடக்கை உயரங்கள்; இல்லாத அட்டவணைக்கு அதற்குரிய உறுப்பு பூஜ்ஜியம். ஹாஷ் இல்லாத அடுக்கு-10 தலைப்பின் உச்சவரம்பு 1,279; அடுக்கு-14 தலைப்பின் உச்சவரம்பு 20,479. சங்கிலி ஓர் அழைப்புக்கு அதன் அறிவிக்கப்பட்ட வரம்பின் அடிப்படையில் விலை நிர்ணயிக்கிறது (கட்டணங்கள்).

5. விதிகளைப் பல்லுறுப்புக்கோவை முற்றொருமைகளாக மாற்றுதல்

ஒவ்வொரு நெடுவரிசையும் Goldilocks களத்தில் உள்ள எண்களின் பட்டியல், அதாவது p = 2⁶⁴ − 2³² + 1 மட்டுக்கான முழு எண்கள். n எண்களின் பட்டியலும், n-ஐ விடக் குறைந்த படி கொண்ட ஒரு பல்லுறுப்புக்கோவையும் ஒன்றே: களத்தின் {1, ω, ω², …} என்ற உட்குலத்தின் மீது அந்த எண்களை வரிசைப்படுத்தும்போது அவற்றின் வழியே செல்லும் பல்லுறுப்புக்கோவை அது. 2³² வரையிலான ஒவ்வோர் இரண்டின் அடுக்கு அளவிலும் Goldilocks-இல் இத்தகைய உட்குலங்கள் உள்ளன; எனவே இந்த மாற்றம் ஒரு விரைவு Fourier உருமாற்றமாகும்.

அப்போது இயந்திரத்தின் ஒரு விதி, நெடுவரிசைப் பல்லுறுப்புக்கோவைகளுக்கு இடையிலான ஒரு சமன்பாடாகிறது. “அறிவுறுத்தல் தாவாவிட்டால் நிரல் எண்ணி நான்கால் முன்னேறும்” என்பது திட்ட வடிவில் பின்வருமாறு ஆகிறது:

is_jump(x)·(pc(ωx) − target(x)) + (1 − is_jump(x))·(pc(ωx) − pc(x) − 4) = 0

இது உட்குலத்தின் ஒவ்வொரு x-க்கும் பொருந்த வேண்டும்; இங்கு pc(ωx) என்பது “அடுத்த வரிசை” எனப் பொருள்படும். ஓர் அட்டவணையின் இத்தகைய விதிகளின் முழுத் தொகுப்பே அதன் AIR (இயற்கணித இடைநிலைப் பிரதிநிதித்துவம்). CPU, ALU விதிகள் படி 8 வரை செல்கின்றன; மற்றவை 2 முதல் 4 வரையிலேயே இருக்கின்றன.

உட்குலத்தின் ஒவ்வொரு புள்ளியிலும் பூஜ்ஜியமாகும் ஒரு பல்லுறுப்புக்கோவை Z(x) = xⁿ − 1-ஆல் வகுபடும். நிரூபிப்பவர் எல்லா விதிகளையும் சீரற்ற எடைகளுடன் C(x) என்ற ஒரே பல்லுறுப்புக்கோவையாக இணைத்து, Z(x)-ஆல் வகுக்கிறார். ஒவ்வொரு வரிசையிலும் ஒவ்வொரு விதியும் பொருந்தினால், ஈவு உண்மையிலேயே தாழ்ந்த படி கொண்ட பல்லுறுப்புக்கோவையாக இருக்கும். ஒரு வரிசையில் ஒரு விதி தவறினாலும் அது அப்படி இருக்காது. “16,000 சுழற்சி கொண்ட ஓர் இயக்கத்தின் ஒவ்வொரு படியும் சரியாக இருந்ததா?” என்ற கேள்வி, “இந்தச் சார்பு தாழ்ந்த படி கொண்ட ஒரு பல்லுறுப்புக்கோவைக்கு அருகில் உள்ளதா?” என்பதாக மாறிவிட்டது. அந்தக் கேள்விக்கு, சீரற்ற முறையில் தேர்ந்தெடுத்த சில மதிப்புகளைப் பார்த்தே விடையளிக்க முடியும்.

6. கேள்விகள் தெரியும் முன்பே உறுதிப்பூட்டுதல்

சரிபார்ப்பவரின் சீரற்ற கேள்விகளைப் பார்க்கும் முன்பே நிரூபிப்பவர் தம் பல்லுறுப்புக்கோவைகளை நிலைநிறுத்த வேண்டும்; இல்லையெனில் அவர் தம் பதில்களை அவற்றுக்கேற்ப வடிவமைத்துவிடலாம். அவர் ஒவ்வொரு நெடுவரிசையையும் அட்டவணையை விட எட்டு மடங்கு பெரிய ஒரு களப்பகுதியின் மீது மதிப்பிட்டு (விரிவாக்கம் 8, குறியீட்டு விகிதம் 1/8), அந்த மதிப்புகளின் மீதான ஒரு Merkle மூலத்தை வெளியிடுகிறார். அந்த மிகைமை ஒரு Reed–Solomon குறியீடு: தாழ்ந்த படி கொண்ட ஒரு பல்லுறுப்புக்கோவை அதன் மதிப்புகளில் எந்த எட்டில் ஒரு பங்காலும் நிர்ணயிக்கப்படுகிறது. எனவே தடத்தின் ஒரே ஒரு வரிசையை மாற்றும் ஏமாற்றுபவரும், ஒத்திசைவைக் காக்க நீட்டிக்கப்பட்ட குறிச்சொல்லின் பெரும்பகுதியை மாற்ற வேண்டியிருக்கும்; சீரற்ற மாதிரிச் சோதனைகள் அந்தச் சேதத்தின் மீதே விழும்.

Merkle மரங்கள் Goldilocks மீது Poseidon2-ஐப் பயன்படுத்துகின்றன: அகலம் 8, S-box x⁷, 4 முழுச் சுற்றுகள், 22 பகுதிச் சுற்றுகள், மீண்டும் 4 முழுச் சுற்றுகள், நான்கு கள உறுப்புகள் கொண்ட சுருக்கங்கள் (சுமார் 256 பிட்கள்). ஒவ்வோர் இலையும் நான்கு புதிய சீரற்ற உறுப்புகளுடன் ஹாஷ் செய்யப்படுவதால், ஒரு மூலம் அதன் கீழுள்ள மதிப்புகளைப் பற்றி எதையும் வெளிப்படுத்துவதில்லை. இதே வரிசைமாற்றமே இயந்திரத்தினுள் குறிப்பு உறுதிப்பாடாகவும் செல்லாக்கி ஹாஷாகவும் செயல்படுகிறது. அதன் 86 சுற்று மாறிலிகள் கணுவின் மூலக்குறியீட்டில் (poseidon2_constants.rs) நேரடி அட்டவணையாக உள்ளன; எனவே எந்த நூலக மேம்படுத்தலும் அவற்றை மாற்ற முடியாது.

7. FRI மூலம் மாதிரிச் சோதனை

இப்போது சரிபார்ப்பவரிடம் Merkle மூலங்கள் உள்ளன. அவர் முதலில் ஈவைத் தடத்துடன் பிணைக்கிறார்: அட்டவணையின் களப்பகுதிக்கு வெளியே z என்ற ஒரு சீரற்ற புள்ளியைத் தேர்ந்தெடுத்து, அங்கு ஒவ்வொரு நெடுவரிசையின் மதிப்பையும் ஈவின் மதிப்பையும் கேட்டு, C(z) = Q(z)·Z(z) என்பதை நேரடியாகச் சோதிக்கிறார். உறுதிப்பூட்டப்பட்ட சார்புகள் உண்மையிலேயே தாழ்ந்த படி கொண்ட பல்லுறுப்புக்கோவைகள்தாம் என உறுதிசெய்வதே மீதமுள்ளது; FRI சோதிப்பது அதைத்தான்.

FRI மடித்தல் மூலம் செயல்படுகிறது. ஒரு பல்லுறுப்புக்கோவையை இரட்டை, ஒற்றைப் பகுதிகளாகப் பிரிக்கவும்: f(x) = fₑ(x²) + x·fₒ(x²). சரிபார்ப்பவர் தரும் ஒரு சீரற்ற β-க்கு, f′(y) = fₑ(y) + β·fₒ(y) பாதி அளவுள்ள களப்பகுதியில் பாதிப் படி கொண்டது. நிரூபிப்பவர் f′-க்கு உறுதிப்பூட்டி, ஒரு புதிய β-ஐப் பெற்று, ஒரு மாறிலி மட்டும் எஞ்சும் வரை மீண்டும் மீண்டும் மடிக்கிறார் (Rand ஒவ்வொரு சுற்றிலும் எட்டு மடங்கு வரை மடிக்கிறது); அந்த மாறிலியை அவர் வெளிப்படையாக அனுப்புகிறார். பின்னர் ஒரு வினவல் முதல் அடுக்கில் ஒரு சீரற்ற நிலையைத் தேர்ந்தெடுத்து அதைக் கீழ்நோக்கிப் பின்தொடர்கிறது; மேலே திறக்கப்பட்ட மதிப்புகள் கீழுள்ள மதிப்பாக மடிகின்றனவா என ஒவ்வோர் அடுக்கிலும் சோதிக்கிறது. தாழ்ந்த படியிலிருந்து வெகு தொலைவில் இருந்த ஒரு சார்பால் அந்த வாக்குறுதிகள் அனைத்தையும் ஒத்திசைவாகக் காக்க முடியாது.

Rand 80 வினவல்களை இயக்குகிறது. நிரூபிக்கப்பட்ட அருகாமை இடைவெளித் தேற்றத்தின் கீழ், ஒவ்வொரு வினவலும் ஏமாற்றுபவருக்கு அதிகபட்சம் 9/16 வாய்ப்பையே விட்டுவைக்கிறது; எனவே 80 வினவல்கள் (9/16)⁸⁰ ≈ 2⁻⁶⁶·⁴ தருகின்றன. பயன்பாட்டிலுள்ள STARK-கள் சார்ந்திருக்கும் ethSTARK ஊகத்தின் கீழ், ஒவ்வொரு வினவலும் 1/8 வாய்ப்பையே விட்டுவைக்கிறது; இது இன்னும் மிகக் குறைவு.

8. உரையாடலை நீக்குதல்

மேலே உள்ள அனைத்தும் ஓர் உரையாடலாக விவரிக்கப்பட்டன; ஆனால் ஒரு பரிவர்த்தனை, எந்த உறுதிப்படுத்துநரும் தனியாகச் சோதிக்கக்கூடிய ஒரே செய்தியாக இருக்க வேண்டும். Fiat–Shamir உருமாற்றம் சரிபார்ப்பவரை நீக்குகிறது: நிரூபிப்பவர் ஒவ்வொரு “சீரற்ற” சவாலையும், அதுவரை உறுதிப்பூட்டப்பட்ட அனைத்தின் ஹாஷாக, ஒரு Poseidon2 இருவழி ஸ்பாஞ்ச் மூலம் கணக்கிடுகிறார். எந்த உறுதிப்பாட்டை மாற்றினாலும் அதற்குப் பிந்தைய ஒவ்வொரு சவாலும் மாறுகிறது; எனவே சவால்களுக்கு ஏற்றவாறு உறுதிப்பாடுகளை நிரூபிப்பவர் தேர்ந்தெடுக்க முடியாது.

இது விட்டுச்செல்லும் இடைவெளிகளை மேலும் இரண்டு நடவடிக்கைகள் அடைக்கின்றன:

  • நீட்டிப்புக் களம். 2⁶⁴ உறுப்புகள் கொண்ட களம் சவால்களைத் தேர்ந்தெடுப்பதற்கு மிகச் சிறியது: ஏமாற்றுபவருக்கு ஒரு சவால், பல்லுறுப்புக்கோவையின் சில தவறான மதிப்புகளில் ஒன்றின் மீது விழ வேண்டும்; எத்தனை வினவல்கள் இயக்கப்பட்டாலும் அவர் சுமார் N/2⁶⁴ நிகழ்தகவுடன் வெற்றிபெறுவார். எனவே தடம் Goldilocks-இலேயே இருக்கிறது; ஆனால் ஒவ்வொரு சவாலும் அதன் இருபடி நீட்டிப்பிலிருந்து, சுமார் 2¹²⁸ உறுப்புகளிலிருந்து, எடுக்கப்படுகிறது.
  • அரைத்தல். வினவல் நிலைகள் வருவிக்கப்படும் முன், படியெடுப்புடன் சேர்த்த ஹாஷ் 20 பூஜ்ஜிய பிட்களுடன் தொடங்கும் ஒரு நான்ஸை நிரூபிப்பவர் கண்டறிய வேண்டும்; இதற்குச் சுமார் பத்து லட்சம் ஹாஷ்கள் தேவை. நேர்மையான நிரூபிப்பவர் அதை ஒருமுறை செலுத்துகிறார். தம் போலியை வினவல் நிலைகள் தவறவிடும் வரை அவற்றை மீண்டும் மீண்டும் உருட்டும் ஏமாற்றுபவர் ஒவ்வொரு முயற்சிக்கும் அதைச் செலுத்துகிறார். Rand-இல் எங்குமுள்ள ஒரே வேலைச் சான்று இதுதான்; இதற்கும் ஒருமித்த கருத்து நெறிமுறைக்கும் எந்தத் தொடர்பும் இல்லை.

கூட்டினால்: வினவல்களிலிருந்து 66.4 பிட்களும் அரைத்தலிலிருந்து 20 பிட்களும் சேர்ந்து நிரூபிக்கப்பட்ட 86 பிட்கள் கிடைக்கின்றன; ஊகத்தின் கீழ் சுமார் 100 பிட்கள். அங்கு நீட்டிப்புக் களத்தின் உறுப்பே வரம்பாகிறது.

9. பூஜ்ஜிய அறிவு எங்கிருந்து வருகிறது

ஒரு STARK தானாகவே பூஜ்ஜிய அறிவு கொண்டதல்ல: வினவல் நிலைகளில் திறக்கப்படும் மதிப்புகள் தடப் பல்லுறுப்புக்கோவைகளின் மதிப்புகளே; கவனமின்றி இருந்தால் அவை தகவலைக் கசியவிடும். Rand-இன் அமைப்பு நான்கு அடுக்குகளைச் சேர்க்கிறது:

  1. உறுதிப்பூட்டப்படும் ஒவ்வொரு பல்லுறுப்புக்கோவையும் சீரற்றதாக்கப்படுகிறது (Plonky3-இன் மறைக்கும் FRI நான்கு சீரற்ற குறிச்சொற்களைக் கலக்கிறது); எனவே திறக்கப்பட்ட 80 மதிப்புகளையும், தடத்தை ஒருபோதும் பார்க்காத ஒருவர் பரவல் அளவில் மீண்டும் உருவாக்க முடியும்;
  2. ஒவ்வொரு Merkle இலையிலும் சால்ட் சேர்க்கப்படுகிறது; எனவே மூலங்களும் அங்கீகாரப் பாதைகளும் எதையும் வெளிப்படுத்துவதில்லை;
  3. நிரூபிப்பவரின் சீரற்ற தன்மை ஒவ்வொரு நிரூபணத்துக்கும் இயக்க முறைமையிலிருந்து புதிதாக எடுக்கப்படுகிறது; எனவே ஒரே கட்டணச் செலுத்தலின் இரண்டு நிரூபணங்கள் ஒன்றுக்கொன்று தொடர்பற்றவையாகத் தோன்றுகின்றன;
  4. அறிவிக்கப்பட்ட ஒவ்வொரு அட்டவணையிலும் குறைந்தது 2⁷ வரிசைகள் உள்ளன; ஒவ்வொரு LogUp முனையமும் மறைக்கப்படுகிறது (கட்டுப்பாட்டுத் தொகுப்பு 7). ஒரு நிரூபணம் ஒவ்வோர் அட்டவணையையும் 80 வினவல் புள்ளிகளிலும் களப்பகுதிக்கு வெளியே உள்ள இரண்டு புள்ளிகளிலும் திறக்கிறது. மறைக்கும் உறுதிப்பாடு அட்டவணையில் உள்ள வரிசைகளின் எண்ணிக்கை அளவுக்குச் சீரற்ற வரிசைகளைக் கலக்கிறது; எனவே ஓர் அட்டவணை குறைந்தது 82 வரிசைகள் கொண்டிருக்கும் வரை மட்டுமே மறைந்திருக்கும். அந்த நிபந்தனையை நிறைவுசெய்யும் மிகச் சிறிய இரண்டின் அடுக்கு 128.

அடுக்கு 4 ஒரு திருத்தம். 2026-09-27 மதிப்பாய்வு, 31 அல்லது அதற்குக் குறைவான உள்ளீட்டுச் சொற்களைக் கொண்ட அழைப்புகளின் தனிப்பட்ட உள்ளீடுகளை உற்பத்தி நிரூபணங்களிலிருந்து மீட்டெடுத்தது; ஒரு நிரலின் குறுகிய நிரல் அட்டவணையிலிருந்து அதன் fetch எண்ணிக்கைகளைப் படித்தது; ஒரு தொகுப்பின் உண்மையான உள்ளீட்டு இடங்களை அதன் போலி இடங்களிலிருந்து, மறைக்கப்படாத முனைய மதிப்புகளைக் கொண்டு வேறுபடுத்தியது. அந்த நிரூபணங்கள் chain 15 மற்றும் அதற்கு முந்தையவற்றில் உருவாக்கப்பட்டவை. Chain 16 (கிளையற்ற தொகுப்பு விருந்தினர் நிரலுடன் கூடிய கட்டுப்பாட்டுத் தொகுப்பு 7) இம்மூன்றையும் மூடியது; chains 18 முதல் 20 வரை அத்திருத்தங்கள் தொடர்கின்றன.

உத்தரவாதம் என்பது சீரற்ற ஆரக்கிள் மாதிரியில் புள்ளியியல் பூஜ்ஜிய அறிவு. ஒரு நிரூபணம் எதை மறைப்பதில்லை என்பது துல்லியமானது: அதன் அடுக்கு, அது அறிவிக்கும் அட்டவணை உயரங்கள், அதன் பொது மதிப்புகள் (அவற்றுள் கேஸ் வரம்பும் அடங்கும்). அறிவிக்கப்பட்ட keccak அல்லது sha256 உயரம் 0 எனில், அந்த இயக்கம் அந்த hash-ஐ ஒருபோதும் பயன்படுத்தவில்லை என்று பொருள்; எனவே ஓர் அழைப்பு நிரூபணத்தின் தலைப்பு, அந்த அழைப்பு hash செய்ததா என்பதையும், அடிமட்ட அளவுக்கு மேல், எத்தனை முறை என்பதை இரண்டு மடங்குக்குள்ளான துல்லியத்துடனும் காட்டுகிறது. ஒரு தொகுப்புக்கு, பொது மதிப்புகளும் புலங்களும் இவை: நங்கூரம், நான்கு nullifier-கள், நான்கு உறுதிப்பாடுகள், கட்டணம், எரிப்புகள், எரிப்புச் சொத்து, நேரம், அங்கீகார உறுதிப்பாடு, பரிவர்த்தனைப் பிணைப்பு. ஒரு பரிமாற்றம் நகர்த்தும் சொத்து ஒரு தனிப்பட்ட உள்ளீடு; எனவே ஒரு zUSD கொடுப்பனவும் ஒரு RAND கொடுப்பனவும் சங்கிலியில் ஒரே மாதிரியாகத் தோன்றும். hc தீர்மானகரமானது; எனவே ஒரு நிரூபணம் தொகுப்பு விருந்தினர் நிரலைச் சார்ந்தது என்பதை (மதிப்பை நகர்த்தும் ஒவ்வொரு நிரூபணமும் அவ்வாறே), அல்லது ஓர் அழைப்புக்கு, அது எந்த வரிசைப்படுத்தப்பட்ட நிரலை இயக்கியது என்பதை யார் வேண்டுமானாலும் அறியலாம்.

10. ஒரு சரிபார்ப்பாளர் எதைச் சரிபார்க்கிறார்

Machine::verify_public(hc, words, proof) குறைந்த செலவுடையதை முதலில் கொண்டு, பின்வருவனவற்றை இயக்குகிறது:

  1. நிரூபணம் அறிவிக்கும் அடுக்கும் அட்டவணை உயரங்களும், அவற்றிலிருந்து எதுவும் அளவிடப்படுவதற்கு முன்பே வரம்புக்குள் உள்ளனவா எனச் சோதிக்கப்படுகின்றன (check_declared_heights); எனவே தவறான வடிவிலான தலைப்பு சில ஒப்பீடுகளை மட்டுமே செலவாக்குகிறது, பல வினாடிகள் நீளும் சாவி உருவாக்கத்தை அல்ல; ஒரு தொகுப்பு எந்த hash அட்டவணையும் இல்லாமல் அடுக்கு 14-ஐயும், ஓர் அங்கீகார நிரூபணம் அடுக்கு 10-ஐயும் அறிவிக்க வேண்டும்;
  2. 35 பொது மதிப்புகள் உள்ளன, ஒவ்வொன்றும் ஒரு நியமன புல உறுப்பு; pv[HC] = hc, pv[TIER] நிரூபணத்தின் அடுக்குக்குச் சமம், ஒவ்வொரு வெளியீட்டுச் சொல்லும் 2³²-க்குக் கீழ், GAS_LIMIT தலைப்பின் gas_max-ஐ மிகாதது;
  3. தொகுப்பு STARK, நிரல்வாரியாக அல்லாமல் வடிவம்வாரியாக (tier, program, input, keccak, sha256, public heights) தற்காலிகமாகச் சேமிக்கப்பட்ட ஒரு சரிபார்ப்புச் சாவிக்கு எதிராகச் சரிபார்க்கப்படுகிறது;
  4. H_PUB என்பது words-இன் சுருக்கத்துக்குச் சமம்; ஒரு தொகுப்புக்கு அது, கணு தானே கணக்கிட்ட பரிவர்த்தனைப் பிணைப்பு.

இவை எவற்றுக்கும் முன்பாக, சமர்ப்பிக்கப்பட்ட அல்லது gossip வழியாகப் பெறப்பட்ட ஒவ்வொரு நிரூபணத்தையும் கணு நியமனக் குறியாக்கத்துக்காகத் திரையிடுகிறது: அதன் FRI மடிப்பு அட்டவணை, தலைப்பு அறிவிக்கும் படிகளுக்கு ஒரு நேர்மையான நிரூபிப்பி உருவாக்கும் அட்டவணையாகவே இருக்க வேண்டும். fullnode v0.6.8 (audit v6, ZKV-4) முதல், இத்திரையிடல் 25 பிட்டுகளுக்கு மேற்பட்ட எந்த அறிவிக்கப்பட்ட படியையும் முதலிலேயே மறுக்கிறது (MAX_HONEST_DEGREE_BITS: நினைவக அட்டவணையின் 2²⁴ உச்சவரம்பும் பூஜ்ஜிய அறிவுக்கான இரட்டிப்பும்; ஏற்கப்படும் ஒரு நிரூபணம் கொண்டிருக்கக்கூடிய அதிகபட்சம் இதுவே). அந்த வரம்புக்கு முன்பு, மிகப்பெரிய படியை அறிவிக்கும் ஒரு தலைப்பு, கணுவைத் தன் நிகழ்வுச் சுழற்சியில் ஒரு பிரம்மாண்டமான மடிப்பு அட்டவணையை மீண்டும் வருவிக்கச் செய்து, அனுப்புநர் விரும்பிய நேரம் வரை அதை முடக்கி வைத்தது; சரிபார்ப்பி அந்த நிரூபணத்தை எப்படியும் மறுத்திருக்கும், எனவே இந்த வரம்பு மறுப்பதன் செலவை மட்டுமே மாற்றுகிறது. திரையிடலுக்குள் ஏற்படும் ஒரு panic இப்போது கணுவை நிறுத்துவதற்குப் பதிலாக அந்த ஒரு பரிவர்த்தனையை மட்டும் மறுக்கிறது.

பின்னர் பேரேடு, bad = 0 உடன் தொகுப்புச் சுருக்கம் D-ஐ மீண்டும் கணக்கிட்டு, அதை நிரூபணத்தின் எட்டு வெளியீட்டுச் சொற்களுடன் ஒப்பிடுகிறது. chain 20-இல், ஒரு தொகுப்பு நிரூபணத்தின் GAS_LIMIT genesis bundle_gas_limit ஆன 20,479-க்குத் துல்லியமாகச் சமமாகவும், ஓர் அங்கீகார நிரூபணத்தினுடையது 1,279 ஆகவும் இருக்க வேண்டும் என்றும் அது கோருகிறது; எனவே ஒவ்வொரு பரிமாற்றமும் ஒரே மதிப்புகளை அறிவிக்கிறது. ஏற்கனவே தயாராக உள்ள சாவியுடன், முழுச் சரிபார்ப்பும் ஏறத்தாழ 16 ms எடுக்கிறது.

அளவுருக்களும், அவை தேர்ந்தெடுக்கப்பட்ட காரணமும்

கீழே உள்ள ஒவ்வொரு எண்ணும் ஒருமித்த விதியின் பகுதி: சரிபார்ப்பி அதைச் சரிபார்க்கிறது, வேறு எந்த மதிப்புடன் உருவாக்கப்பட்ட நிரூபணமும் சரிபார்ப்பில் தேறாது, அவற்றில் ஒன்றை மாற்றுவது ஒரு புதிய கட்டுப்பாட்டுத் தொகுப்பும் ஒரு hard fork-உம் ஆகும் (கட்டுப்பாட்டுத் தொகுப்புகள்). FRI சுயவிவரம் நிரூபணத்தால் அல்ல, genesis கோப்பால் நிர்ணயிக்கப்படுகிறது (chain 20-இல் fri_profile: production).

அளவுருமதிப்புஇந்த மதிப்பு ஏன்
அடிப்படைப் புலம்Goldilocks, p = 2⁶⁴ − 2³² + 164-பிட் பகா எண். இதன் எண்கணிதத்துக்குச் சில இயந்திர அறிவுறுத்தல்களே போதும். 2³² வரையிலான ஒவ்வொரு இரண்டின் அடுக்கு அளவிலும் இதற்குப் பெருக்கல் உட்குலங்கள் உள்ளன. அதனால் ஒரு நெடுவரிசையைப் பல்லுறுப்புக்கோவையாக மாற்றுவது ஒரு வேக ஃபூரியே உருமாற்றம் ஆகிவிடுகிறது. செலவு குறைந்த புலம் இதுவே என்பதால் தடம் இங்கே இருக்கிறது.
சவால் புலம்இருபடி நீட்டிப்பு F_p² (≈ 2¹²⁸)சவால்களை Goldilocks-இலிருந்தே எடுத்தால், உறுதித்தன்மைக்குச் சுமார் N/2⁶⁴ என்ற கீழ்வரம்பு மிஞ்சும். வினவல்களை எத்தனை கூட்டினாலும் அதைக் குறைக்க முடியாது. 2²⁵ வரிசைகள் வரையிலான தடங்களுக்கு, நீட்டிப்புப் புலம் அந்த உறுப்பை அதிகபட்சம் 2⁻¹⁰⁰ ஆகக் குறைக்கிறது. பெரிய புலத்தின் விலையைச் சவால்கள் மட்டுமே செலுத்துகின்றன; தடம் செலுத்துவதில்லை. எப்போதாவது 128 பிட்கள் தேவைப்பட்டால், கனப்படி நீட்டிப்பு (≈ 2¹⁹²) பெயரிடப்பட்ட கூடுதல் இடைவெளியாக உள்ளது.
விரிவாக்கக் காரணி8 (விகிதம் ρ = 1/8, log_blowup = 3)ஒரே நேரத்தில் இரண்டு காரணங்கள் உள்ளன. முதலாவது, CPU, ALU அட்டவணைகளில் படி 8 விதிகள் உள்ளன. பூஜ்ஜிய-அறிவுக் கொடியுடன் ஈவின் படி 9 ஆகிறது; விரிவாக்கக் காரணி 8 தாங்கக்கூடிய அதிகபட்சம் இதுவே. இதைவிட உயர்ந்த படியுள்ள ஒரு விதி வந்தால் காரணி 16 தேவைப்படும். இரண்டாவது, ஏமாற்றுபவரைப் பிடிக்கும் ஒவ்வொரு வினவலின் திறன் விகிதத்தைப் பொறுத்தது: ஒரு வினவலுக்கு நிரூபிக்கப்பட்டது (1 + ρ)/2 = 9/16, ஊகிக்கப்பட்டது ρ = 1/8. பெரிய காரணி வினவல்களின் எண்ணிக்கையைக் குறைக்கும். ஆனால் அதன் விலை, நிரூபிப்பவர் கணக்கிட்டு நினைவகத்தில் வைத்திருக்க வேண்டிய தாழ்-படி நீட்டிப்பு அதே விகிதத்தில் பெரிதாவது.
FRI வினவல்கள்80நிரூபிக்கப்பட்ட உறுதித்தன்மையைச் சுமார் 86 பிட்களில் வைத்திருக்கும் எண்ணிக்கை இது. ஒருமுறை இது 27 ஆகக் குறைக்கப்பட்டது (கட்டுப்பாட்டுத் தொகுப்புகள் 3, 4). அது ஊகிக்கப்பட்ட 100-பிட் இலக்கை எட்டியது (3·27 + 20 = 101), ஆனால் நிரூபிக்கப்பட்டவை சுமார் 42 பிட்களே மிஞ்சின. 2026-09-12 zk தணிக்கை (கண்டறிதல் ZM1) 80-ஐ மீட்டது. ஒரு நிரூபணத்தின் அளவில் பெரும்பகுதி வினவல்களே; அதனால்தான் ஒரு தொகுப்பு நிரூபணம் ≈ 1.50 MB. நிரூபிக்கக்கூடிய 100 பிட்களுக்கு 97 வினவல்கள் தேவைப்படும்.
அரைத்தல்20 பிட்கள், வினவல் கட்டத்தில்வினவல் நிலைகள் எடுக்கப்படும் முன், நிரூபிப்பவர் ஒரு நான்ஸைக் கண்டுபிடிக்க வேண்டும்: அதன் ஹாஷ் 20 பூஜ்ஜிய பிட்களுடன் தொடங்க வேண்டும். இதற்குச் சுமார் பத்து லட்சம் ஹாஷ்கள் ஆகும். நேர்மையான நிரூபிப்பவர் இதை ஒருமுறை செலுத்துகிறார்; நிலைகளை மீண்டும் உருட்டும் ஏமாற்றுபவர் ஒவ்வொரு மறுமுயற்சியிலும் செலுத்துகிறார். இது குறைந்த செலவில் 20 பிட்களைச் சேர்க்கிறது. கூடுதல் அரைத்தல் ஒவ்வொரு நேர்மையான நிரூபணத்தையும் மெதுவாக்கும் (34 பிட்களும் நிரூபிக்கக்கூடிய 100-ஐத் தரும்). உறுதிப்படுத்தல் கட்டத்தில் அரைத்தல் இல்லை.
மடிப்பு அளவுஒரு சுற்றுக்கு அதிகபட்சம் 8 (max_log_arity = 3)இரண்டால் மடிப்பதற்குப் பதிலாக எட்டால் மடித்தால், FRI அடுக்குகள் மூன்றில் ஒரு பங்காகக் குறைகின்றன. அதனால் ஒவ்வொரு வினவலும் குறைவான Merkle பாதைகளைத் திறக்கிறது, நிரூபணமும் சிறியதாகிறது. விலை, ஒவ்வொரு அடுக்கிலும் சற்றுக் கூடுதல் வேலை.
இறுதிப் பல்லுறுப்புக்கோவைஒரு மாறிலி (log_final_poly_len = 0)FRI முழுவதுமாக மடித்து, ஒரே ஒரு மதிப்பை வெளிப்படையாக அனுப்புகிறது. சரிபார்ப்பவருக்கு இதுவே மிக எளிய இறுதிச் சோதனை.
ஹாஷ் (சுற்றுக்குள், Merkle, டிரான்ஸ்கிரிப்ட்)Poseidon2, அகலம் 8, S-box x⁷, 4 + 22 + 4 சுற்றுகள், விகிதம் 4, கொள்ளளவு 4புல எண்கணிதத்தைப் போலவே செலவு குறைவாக இருக்கும்படி வடிவமைக்கப்பட்ட ஹாஷ் இது. அதனால் ஒரு நிரூபணத்துக்குள் ஹாஷ் செய்வதற்கு (உறுதிமொழிகள், செல்லாததாக்கிகள், Merkle பாதைகள், நிரல் சுருக்கம்) சில வரிசைகளே ஆகின்றன; ஆயிரக்கணக்கான பிட் செயல்பாடுகள் அல்ல. S-box அடுக்குக்கும் p − 1 = 2³²·3·5·17·257·65537-க்கும் பொதுக் காரணி இருக்கக்கூடாது; பொருந்தும் மிகச் சிறிய எண் 7. விகிதம் 4-இல் அகலம் 8 என்பது நான்கு-உறுப்புச் சுருக்கத்தைத் தருகிறது, சுமார் 256 பிட்கள். 86 சுற்று மாறிலிகளும் முனையில் ஒரு நேரடி அட்டவணையாக உள்ளன (poseidon2_constants.rs).
சுருக்க அகலம்4 புல உறுப்புகள் (≈ 256 பிட்கள்)முன்படிமப் பங்குகளுக்கு (செல்லாததாக்கிகள், உறுதிமொழிகள்: Grover-க்கு எதிராக 128 பிட்கள்) இது போதும். டிரான்ஸ்கிரிப்டில் 128-பிட் குவாண்டம் மோதல் எதிர்ப்புக்கு இது போதாது (2²⁵⁶/³ ≈ 2⁸⁵). வெள்ளை அறிக்கையின் வடிவமைப்பு 384-பிட் டிரான்ஸ்கிரிப்ட் ஹாஷைக் கோருகிறது; இயங்கும் சங்கிலி அதை இன்னும் ஏற்கவில்லை.
மறைத்தல்FRI-இல் 4 சீரற்ற குறிச்சொற்கள்; ஒவ்வொரு Merkle இலைக்கும் 4 சால்ட் உறுப்புகள்; ஒவ்வொரு நிரூபணத்துக்கும் புதிய OS சீரற்றத்தன்மைதிறக்கப்படும் 80 நிலைகளையும் Merkle பாதைகளையும் பொது மதிப்புகளிலிருந்து மட்டுமே போலியாக உருவாக்க முடியும்படி செய்யக் குறைந்தபட்சம் இவ்வளவு தேவை. அதனால் நிரூபணம் புள்ளியியல் ரீதியாகப் பூஜ்ஜிய-அறிவு கொண்டதாகிறது. ஒரே கொடுப்பனவு இருமுறை செய்யப்பட்டால், அவற்றின் நிரூபணங்கள் ஒன்றுக்கொன்று தொடர்பற்றவையாகத் தோன்றும்.
அட்டவணைக் கீழ்வரம்புஅறிவிக்கப்பட்ட ஒவ்வொரு அட்டவணைக்கும் 2⁷ வரிசைகள் (கட்டுப்பாட்டுத் தொகுப்பு 7)ஒரு நிரூபணம் ஒவ்வொரு அட்டவணையிலும் 80 வினவல் புள்ளிகளையும் 2 களத்துக்கு-வெளியான புள்ளிகளையும் திறக்கிறது, மொத்தம் 82. h வரிசைகள் கொண்ட அட்டவணை h சீரற்ற வரிசைகளால் மறைக்கப்படுகிறது. 64 வரிசைகள் போதாது; அடுத்த இரண்டின் அடுக்கு 128. வினவல் எண்ணிக்கை 126-ஐத் தாண்டினால் 2⁸ தேவைப்படும்.
முனைய மறைப்புஒவ்வொரு அட்டவணைக்கும் F_p²-இன் ஒரு மதிப்பு, BLIND பஸ்ஸில் (கட்டுப்பாட்டுத் தொகுப்பு 7)LogUp முனைய மதிப்பு மூலத் தடத்திலிருந்து கணக்கிடப்படுகிறது. மறைப்பு இல்லையெனில், அது அதன் அட்டவணைக்கான சால்ட் இல்லாத உறுதிமொழி. மறைப்பு ஒரு நீட்டிப்புப் புல உறுப்பாக இருப்பதற்குக் காரணம் இது: ஒரே ஒரு அடிப்படைப் புல ஆயத்தொலைவு, நகர்வை ஒரு மெல்லிய கணத்துக்குள் அடைத்துவிடும்; ஒரு வேட்பாளர் சான்றை அந்தக் கணத்துக்கு எதிராகச் சோதிக்க முடியும்.
கேஸ் எடைகள்ஒரு வரிசைக்கு 1; ஒரு Poseidon2 உள்ளீர்ப்பு வரிசைக்கு 3; ஒரு SHA256 வரிசைக்கு 64; ஒரு KECCAK வரிசைக்கு 192 (கட்டுப்பாட்டுத் தொகுப்பு 8)ஒவ்வொரு எடையும், அந்த வரிசை பிற அட்டவணைகளுக்குள் இழுக்கும் வரிசைகளை எண்ணுகிறது. ஓர் உள்ளீர்ப்பு வரிசை ஒரு 32-வரிசை வரிசைமாற்றத்தை இழுக்கிறது. ஒரு SHA256 வரிசை 466 நெடுவரிசைகள் கொண்ட 64 வரிசைகளை இழுக்கிறது. ஒரு KECCAK வரிசை 2,612 நெடுவரிசைகள் கொண்ட 32 வரிசைகளையும் 100 நினைவக வரிசைகளையும் இழுக்கிறது.
அதிகபட்சக் கட்டுப்பாட்டுப் படி8மேலே உள்ள விரிவாக்கக் காரணி இதை நிர்ணயிக்கிறது. புதிய விதி எதுவும் அமைதியாக இதைத் தாண்டாதபடி, ஒவ்வொரு அட்டவணையின் படியும் ஒரு சோதனையால் நிலைநிறுத்தப்பட்டுள்ளது.
அடுக்குகள்10, 12, 14, 16, 18, 20அட்டவணைகளின் அளவு ஆறு நிலையான படிகளில் அமைகிறது; ஒவ்வொன்றும் முந்தையதைவிட நான்கு மடங்கு. ஒரு நிரூபணம் அதன் அடுக்கை மட்டுமே வெளிப்படுத்துகிறது: ஓட்டத்தின் சுழற்சி எண்ணிக்கை அல்ல, அதன் நீளத்தின் தோராயமான, நிரப்பப்பட்ட ஒரு வகுப்பு மட்டும். ஒவ்வொரு தொகுப்பும் அடுக்கு 14; ஒவ்வொரு அங்கீகார நிரூபணமும் அடுக்கு 10. fullnode v0.5.6 முதல் அழைப்புகள் அடுக்கு 14-க்குள் வரம்பிடப்பட்டுள்ளன.
அதிகபட்சத் தடம்2²⁴ வரிசைகள் (பூஜ்ஜிய-அறிவு பிட்டுடன் 2²⁵)நீட்டிப்புப் புல உறுப்பு நிரூபிக்கப்பட்டுள்ள அளவு இதுவே. இதைவிட நீண்ட தடம், பொருந்தாத ஓர் உறுதித்தன்மைக் கோரலின் கீழ் நிரூபிக்கப்படுவதில்லை; அது நிராகரிக்கப்படுகிறது.
பொது மதிப்புகள்35 புல உறுப்புகள்நுழைவு pc, அடுக்கு, எட்டு வெளியீட்டுச் சொற்கள், மூன்று எட்டுச்-சொல் சுருக்கங்கள் hc, H_IN, H_PUB, அறிவிக்கப்பட்ட கேஸ் வரம்பு. நிரல், தனிப்பட்ட உள்ளீடு, பொது உள்ளீடு ஆகியவற்றைப் பெயரிட்டு, வேலைக்கு ஒரு வரம்பையும் விதிக்கும் மிகச் சிறிய கூற்று இது. கட்டுப்பாட்டுத் தொகுப்பு 7 வரை இது 34 ஆக இருந்தது.
நிரூபண அளவு வரம்புஇயல்பாக 2 MiB; சங்கிலி 20-இல் 4 MiB (max_proof_bytes)ஹாஷ் அட்டவணை இல்லாமல், பயன்பாட்டில் உள்ள guest நிரல்கள் உருவாக்கும் ஒவ்வொரு நிரூபணத்தையும்விட 2 MiB பெரியது; keccak கொண்ட நிரூபணத்தைவிட (≈ 3.3 MB) சிறியது. இரண்டையும் அனுமதிக்க, சங்கிலி 20-இன் ஜெனிசிஸ் 4,194,304 என அமைக்கிறது; சங்கிலிகள் 17 முதல் 19 வரையும் இப்படியே செய்தன. சங்கிலிகள் 13 முதல் 16 வரை 8 MiB அமைத்தன. ஒரு நிரூபணம் குறிவிலக்கப்படும் முன்பே இந்த வரம்பு சரிபார்க்கப்படுகிறது.

இந்த எண்கள் சேர்ந்து தருவது: நிரூபிக்கப்பட்ட 86 பிட் உறுதித்தன்மை; ethSTARK ஊகத்தின் கீழ் சுமார் 100 (அங்கே வரம்பு நீட்டிப்புப் புலம், வினவல்கள் அல்ல); குவாண்டம் எதிரிக்கு எதிராகச் சுமார் 85 பிட்கள், இதை 256-பிட் டிரான்ஸ்கிரிப்ட் ஹாஷ் நிர்ணயிக்கிறது. வெள்ளை அறிக்கை இரண்டு உறுதித்தன்மை எண்களையும் வேண்டுமென்றே அருகருகே வைக்கிறது. பயன்பாட்டில் உள்ள ஒவ்வொரு FRI-STARK-உம் தன் கடைசி பிட்களுக்கு அந்த ஊகத்தையே நம்பியிருக்கிறது. ஒரு பயன்பாட்டின் அளவைத் திட்டமிடும் வாசகர், எந்த அனுமானம் எந்த பிட்களைத் தாங்குகிறது என்பதை அறிந்திருக்க வேண்டும்.

நிரூபணங்களைப் பற்றிய நிரூபணங்கள்

சுமார் 1.50 MB அளவுள்ள ஒரு தொகுப்பு நிரூபணம் கனமானது. அதனுடன் 1.37 MB அங்கீகார நிரூபணமும் செல்கிறது. ஒவ்வொரு முனையும் அவை அனைத்தையும் சேமிக்கிறது. இதற்காகக் கட்டப்பட்டுள்ள தீர்வு மறுநிகழ்வு: “இந்த நிரூபணங்களை நான் சரிபார்த்தேன்” என்பதையே கூற்றாகக் கொண்ட ஒரு நிரூபணம். இதற்காக முழு முனை இரண்டாவது, சிறிய இயந்திரம் ஒன்றைக் கொண்டுள்ளது: மறுநிகழ்வு VM. இதன் இயல்புச் சொல் ஒரு Goldilocks உறுப்பு. இதன் அறிவுறுத்தல்கள் சரிபார்ப்பவரின் சொந்தச் செயல்பாடுகளே (புல எண்கணிதம், Poseidon2, Merkle, FRI படிகள்). இதன் திரட்டு நிரல் N தொகுப்பு நிரூபணங்களின் முழுச் சரிபார்ப்பையும் மீண்டும் இயக்குகிறது. பின்னர் அவற்றின் பொது மதிப்புகள் மீது ஒரு சுருக்கத்தை வெளியிடுகிறது; அது சங்கிலி, திரட்டி, ஒரு நான்ஸ் ஆகியவற்றுடன் பிணைக்கப்பட்டுள்ளது. இதற்குள் ஒரு தொகுப்பு நிரூபணத்தைச் சரிபார்க்க, கட்டுப்பாட்டுத் தொகுப்பு 6-இன் கீழ் 1,968,619 வரிசைகளும், தொகுப்பு 7-இன் கீழ் 2,044,506 வரிசைகளும் ஆயின. தொகுப்பு 8-இன் கீழ் இது மீண்டும் அளக்கப்படவில்லை. இது செயல்படுத்தப்பட்டுள்ளது, ஆனால் இதுவரையிலான ஒவ்வொரு சங்கிலியிலும், சங்கிலி 20 உட்பட, ஜெனிசிஸால் அணைக்கப்பட்டுள்ளது. திரட்டு நிரல் தொகுப்பு நிரூபணங்களை மட்டுமே சரிபார்க்கிறது. எனவே பிரிக்கப்பட்ட-அங்கீகாரச் சங்கிலியில் அங்கீகார நிரூபணம் அப்படியே இருக்கும். இதன் உற்பத்தி நிரூபணங்களுக்குத் திட்டமிட்டதைவிட அதிக நினைவகமும் தேவைப்படுகிறது: கட்டுப்பாட்டுத் தொகுப்பு 7-இன் கீழ் அளந்தபோது 133 GB-உம் அதற்கு மேலும் (வரவிருப்பது: தொகுதித் திரட்டல்).

இந்தத் திட்டம் கோராதவை

  • குவாண்டம் விளிம்பு சுமார் 85 பிட்கள், 128 அல்ல. ஒரு n-பிட் ஹாஷ் மீதான குவாண்டம் மோதல் தேடலுக்கு ஏறத்தாழ 2ⁿ/³ செலவாகும். வெள்ளை அறிக்கையின் வடிவமைப்பு 384-பிட் டிரான்ஸ்கிரிப்ட் ஹாஷைக் கோருகிறது; இயங்கும் சங்கிலி 256-பிட் Poseidon2 சுருக்கத்தைப் பயன்படுத்துகிறது. அதை விரிவாக்குவதற்குப் புதிய கட்டுப்பாட்டுத் தொகுப்பும் ஒரு ஹார்ட் ஃபோர்க்கும் தேவை.
  • 100 பிட்கள் ஒரு ஊகம்; 86 நிரூபிக்கப்பட்டது. நிரூபிக்கப்பட்ட மதிப்பை 100 ஆக உயர்த்த 97 வினவல்கள் தேவைப்படும்; இது ஒவ்வொரு சான்றுக்கும் வினவல் தரவை ஏறத்தாழ ஐந்தில் ஒரு பங்கு அதிகரிக்கும்.
  • Poseidon2 மாறிலிகள் விதை மதிப்பிலிருந்து பெறப்பட்ட சீரற்ற தேர்வு, வெளியிடப்பட்ட நிலையான நிகழ்வு அல்ல. இதன் மீது எந்தத் தாக்குதலும் அறியப்படவில்லை; ஒரு தரநிலைத் தொகுப்பை ஏற்றுக்கொண்டால் சங்கிலியிலுள்ள ஒவ்வொரு ஹாஷும் மாறும்.
  • சில கூற்றுகள் சான்றுக்குள் அல்ல, அதன் அருகில் சரிபார்க்கப்படுகின்றன. TIER பொது மதிப்பைச் சரிபார்ப்பான் சான்றின் வடிவத்துடன் ஒப்பிடுகிறது, ஆனால் சுற்று அதைக் கட்டுப்படுத்துவதில்லை (தணிக்கை ZL1); தொகுப்பு விருந்தினர் நிரலின் கறை ஒழுங்கு இயந்திரத்தால் சரிபார்க்கப்படவில்லை, மாறாகக் கட்டமைப்பு வாதம், பலவீனப்படுத்தப்பட்ட விருந்தினர் நிரல் சோதனைக் கட்டமைப்பு, திரிபு ஃபஸ்ஸிங் ஆகியவற்றால் ஆதரிக்கப்படுகிறது.
  • ஒரு சான்றின் தலைப்பு மறைக்கப்படுவதில்லை. அடுக்கும் இரண்டு ஹாஷ்-அட்டவணை உயரங்களும் வெளிப்படையாகத் தெரிவதால், ஒரு அழைப்புச் சான்று அந்த அழைப்பு KECCAK அல்லது SHA256 பயன்படுத்தியதா என்பதைக் காட்டுகிறது. இரண்டு அட்டவணைகளையும் நிரப்பும் ஒரு நிரூபிப்பான் விருப்பம் உள்ளது, எந்த வாலட்டும் அதை அமைப்பதில்லை: அது ஒரு அடுக்கு-10 சான்றை சுமார் 1.3 MB இலிருந்து சுமார் 3.6 MB ஆக உயர்த்துகிறது.
  • POSEIDON2 அமைப்பு அழைப்பு மாறும் நீள உள்ளீட்டின் மீது ஒன்றுக்கொன்றான சார்பு அல்ல. ஒவ்வொரு கடப்பாடும், செல்லாதாக்கியும், மூலமும், நிரல் சுருக்கமும் அதைச் சார்ந்திருப்பதால் அது அப்படியே வைக்கப்பட்டுள்ளது. வெளியிடப்பட்ட எந்த விருந்தினர் நிரலும் இன்னும் POSEIDON2_LEN ஐப் பயன்படுத்தவில்லை.
  • நிரூபித்தல் மெதுவானது; அதை அனுப்புநரோ, அனுப்புநர் இணையும் ஒரு நிரூபிப்பானோ செய்கிறார்: ஒரு மடிக்கணினி CPU இல் ஒரு தொகுப்புக்குச் சுமார் 100 s மற்றும் 5.7 GB. GPU கெர்னல்கள் 2026-09-28 அன்று முதன்முறையாக ஒரு GPU இல் (NVIDIA H100) இயங்கி CPU குறிப்பு முடிவுகளுடன் பொருந்தின; வாலட் இன்னும் CPU இலேயே நிரூபிக்கிறது.

மேலும் படிக்க

  • வெள்ளை அறிக்கையின் “பூஜ்ஜிய-அறிவுத் திட்டம்: ஒரு Rand சான்று எவ்வாறு செயல்படுகிறது” என்ற பிரிவு (randprotocol.tex) இதே ஏழு கூறுகளையும் திடத்தன்மைத் தேற்றங்களுடன் விளக்குகிறது.
  • செயலாக்க ஆய்வறிக்கை (randprotocol_implementation.tex) அறிவுறுத்தல் தொகுப்பு, அமைப்பு அழைப்புகள், தொகுப்பு விருந்தினர் நிரல், ஸ்பாஞ்ச், சுருக்கங்கள், ஒவ்வொரு அட்டவணையும் பஸ்ஸும், இயந்திர உள்ளமைவு, மறுநிகழ்வு VM ஆகியவற்றை வரையறுக்கிறது.
  • குறியீடு: fullnode இல் உள்ள crates/randprotocol-zkvm/src/ — emulator.rs, tables/, machine.rs, gas.rs, guests.rs, hash.rs, poseidon2_constants.rs.

fullnode கமிட் c0878c3f (சங்கிலி 21), மற்றும் fullnode `90e7716` (v0.6.7 on chain 18, `crates/randprotocol-zkvm`, constraint set 8), fullnode `c9c9bd3c` (v0.6.8 on chain 20: ZKV-4 in `crates/randprotocol-zkvm/src/executor.rs`, `binding_domain` in `crates/randprotocol-core/src/types/binding.rs`; no constraint change), fullnode `c0878c3f` (v0.8.0 on chain 21: `docs/zkvm.md` §8a, constraint set 9 — the `MODQ` syscall and the optional `modq` table; `docs/shielded.md` §2, the multisig auth guest's pinned shape), circuits `aeacf31`, `research/docs/02-tables-and-buses.md`, `research/docs/03-privacy.md` (the FRI profile, the degree ceiling, the table floor and the blinded terminals), whitepapers `8f4275b` (`randprotocol.tex` §“The Zero-Knowledge Scheme”, `randprotocol_implementation.tex` §§4.10–4.15) உடன் 2026-10-12 அன்று இறுதியாகச் சரிபார்க்கப்பட்டது. நிரலும் இந்தப் பக்கமும் முரண்படும் இடங்களில் நிரலே சரியானது; எங்களுக்குத் தெரிவியுங்கள்.