இந்தப் பக்கத்தைப் படித்த பிறகே Rand-க்கான நிரலை எழுதத் தொடங்குங்கள். உங்கள் குறியீடு எந்த இயந்திரத்தில் இயங்குகிறது, கருவித்தொடர் எவற்றை மறுக்கிறது, ஒரு நிரல் வெளி உலகுடன் எவ்வாறு தொடர்புகொள்கிறது, நீங்கள் எந்தக் கோப்பைப் பயன்படுத்துகிறீர்கள் என்பவற்றை இது விளக்குகிறது. அடுத்த பக்கங்கள் இதன் அடிப்படையில் அமைந்தவை: Rust நிரலைப் பயன்படுத்துதல், RISC-V நிரலைப் பயன்படுத்துதல், மற்றும் இரண்டு மொழிமாற்றிகள்.
இயந்திரம்
Rand நிரல்கள் RV32IM வகையைச் சேர்ந்தவை: 32-பிட் RISC-V அடிப்படை முழுஎண் தொகுப்பும் பெருக்கல், வகுத்தல் நீட்டிப்பும். அவை Rand zkVM-க்குள் இயங்குகின்றன. ஒவ்வொரு இயக்கத்தையும் அது Plonky3 தொகுதி STARK மூலம் நிரூபிக்கிறது. சரிபார்ப்பாளர் எந்த அறிவுறுத்தலையும் பார்ப்பதில்லை. நிரலின் சுற்றுக்குள் கணக்கிடப்படும் Poseidon2 ஹாஷ் சுருக்கமான hc-க்கு எதிராக அது சான்றைச் சரிபார்க்கிறது.
| குழு | அறிவுறுத்தல்கள் |
|---|---|
| மேல் / தாவல்கள் | LUI AUIPC JAL JALR |
| கிளைகள் | BEQ BNE BLT BGE BLTU BGEU |
| ஏற்றல் / சேமித்தல் | LW SW LB LH LBU LHU SB SH |
| ALU | ADDI SLTI SLTIU XORI ORI ANDI SLLI SRLI SRAI ADD SUB SLL SLT SLTU XOR SRL SRA OR AND |
| RV32M | MUL MULH MULHU MULHSU DIV DIVU REM REMU |
| அமைப்பு | ECALL மட்டும் |
RV32I கூறுவதுபோல, JALR தன் இலக்கின் பிட் 0-ஐ அழிக்கிறது; அதன் குறியாக்கத்தில் funct3 = 0 இருக்க வேண்டும். இவ்விரு விதிகளும் கட்டுப்பாட்டுத் தொகுப்பு 7 (சங்கிலி 16) உடன் வந்தன; அதற்கு முன்பு ஒற்றைப்படை இலக்கைப் பெற முடியவில்லை, அதனால் அந்த இயக்கத்தை நிரூபிக்க முடியவில்லை. இரட்டைப்படையாக இருந்தும் நான்கின் மடங்காக இல்லாத இலக்கை இப்போதும் பெற முடியாது.
மிதவைப் புள்ளி இல்லை. அணுநிலைச் செயல்பாடுகள் (A நீட்டிப்பு), சுருக்கப்பட்ட அறிவுறுத்தல்கள் (C நீட்டிப்பு), 64-பிட் பதிவேடுகள் ஆகியவையும் இல்லை. C-இல் ஒரு 64-பிட் வகுத்தல் மென்பொருள் உதவிச் செயல்பாட்டுக்கான அழைப்பாக மாறுகிறது; C வழியைப் பார்க்கவும்.
மறுக்கப்படுபவை
rand-guest check ஒவ்வொரு உரைச் சொல்லையும் இயந்திரத்தின் சொந்தக் குறிவிலக்கி வழியாகச் செலுத்துகிறது. இந்தச் சோதனையில் தேறிய நிரல் குறியாக்கம், அமைப்பு அழைப்பு எண் அல்லது அமைப்புமுறை காரணமாகச் சுற்றில் தோல்வியடையாது. சரிபார்ப்பி மறுப்பவை:
| கண்டறிதல் | அது என்ன |
|---|---|
Compressed | 16-பிட் RVC குறியாக்கம்; இயந்திரம் 32-பிட் சொற்களை மட்டுமே குறிவிலக்குகிறது |
Undecodable | இயந்திரம் செயல்படுத்தாத opcode, funct அல்லது நகர்த்தல் அளவு |
Fence | FENCE அல்லது FENCE.I; இயந்திரத்தில் நினைவக வரிசைமுறை இல்லை |
Csr | எந்த CSR அறிவுறுத்தலும்; இயந்திரத்தில் CSR-கள் இல்லை |
Ebreak | EBREAK; trap-கள் மாதிரியாக்கப்படவில்லை |
Syscall | ஒரு ecall, அதன் a7 சற்று முன்னதாக ஒரு li மூலம் அமைக்கப்பட்டு, எந்த அமைப்பு அழைப்பையும் குறிக்கவில்லை |
Cap | ஏற்றி எண்ணும் முறையிலேயே எண்ணப்பட்டு, --max-words-ஐ விட அதிகமான சொற்கள் |
Layout | சொல் எல்லையில் சீரமைக்கப்படாத உரை அடிப்படை முகவரி |
fence, ebreak, ecall எண் 9 ஆகியவற்றைக் கொண்ட நான்கு சொல் நிரலை rand-guest check இவ்வாறு அறிவிக்கிறது (வெளியேறும் குறி 1):
$ rand-guest check bad.elf
note: the loader refuses this image (Decode { index: 0, word: 267386895, err: Opcode(15) }), so its data prologue could not be counted; the word count below is the text alone
0x00001000 0x0ff0000f Fence: FENCE/FENCE.I: the machine has no memory ordering instructions
0x00001004 0x00100073 Ebreak: EBREAK: traps are not modelled
0x0000100c 0x00000073 Syscall: ecall with a7 = 9, which is no syscall the machine implements
4 words against a cap of 4096 (fits); 0 ecall(s) with a non-static a7
REJECTED
சரிபார்ப்பியால் a7-ஐக் காண முடியாத ecall (li தவிர வேறொன்றால் அமைக்கப்பட்டது, அல்லது ஒரு கிளைக்குப் பின் வருவது) மறுக்கப்படுவதில்லை; அது unresolved_ecalls ஆகக் கணக்கிடப்படுகிறது. தவறான எண்ணுக்கு இயக்க நேரத்தில் இயந்திரம் trap செய்யும்.
சுட்டி மதிப்புகள், நீளங்கள், உள்ளீட்டுச் சுட்டெண்கள், RAM-க்கு எதிரான 64 KiB அடுக்கு, இயக்க நேரத்தில் கணக்கிடப்படும் முகவரிகளின் சீரமைப்பு ஆகியவற்றைச் சரிபார்ப்பி சோதிப்பதில்லை. சீரமைக்கப்படாத அணுகல் ஒரு கட்டுப்பாட்டு மீறல் என்பதால், கருவித்தொடர் -unaligned-scalar-mem உடன் தொகுக்கிறது. இயக்க நேரத்தில் ஏற்படும் எந்த trap-ஐயும் rand-guest run அறிவிக்கிறது.
அமைப்பு அழைப்புகள்
ECALL அமைப்பு அழைப்பு எண்ணை a7-இலிருந்தும், முதல் உள்ளீட்டுச் செயலுருபை a0-இலிருந்தும், இரண்டாவதை a1-இலிருந்தும் படிக்கிறது. திரும்பும் மதிப்பு a0-இல் வருகிறது.
| # | அமைப்பு அழைப்பு | விளைவு | கேஸ் | Rust (guest-sdk) | C (guest.h) |
|---|---|---|---|---|---|
| 0 | HALT | இயக்கத்தை முடிக்கிறது | 1 | halt() | rand_halt() |
| 1 | WRITE_OUTPUT slot word | பொது வெளியீடு slot < 8-ஐ அமைக்கிறது, ஒவ்வொரு இடத்துக்கும் அதிகபட்சம் ஒருமுறை; எழுதப்படாத இடங்கள் பூஜ்ஜியம் | 1 | write_output(slot, word) | rand_write_output |
| 2 | READ_INPUT idx | உப்பிடப்பட்ட உறுதிப்பாடு H_IN-உடன் பிணைக்கப்பட்ட தனிப்பட்ட உள்ளீட்டுச் சொல் idx-ஐத் தருகிறது | 1 | read_input(idx) | rand_read_input |
| 3 | POSEIDON2 ptr n | சொல் முகவரி ptr-இல் உள்ள n ≤ 4096 சொற்களை ஹாஷ் செய்து, 8-சொல் சுருக்கத்தை ptr..ptr+8 மீது எழுதுகிறது; நிரப்புதல் இல்லை | 3 + 3·⌈n/4⌉ | unsafe poseidon2(ptr, n) | rand_poseidon2 |
| 4 | KECCAK ptr | 50 சொற்களின் மீது அதே இடத்தில் ஒரு Keccak-f[1600] வரிசைமாற்றம் | 192 | keccak(state), keccak256(msg) | rand_keccak |
| 5 | SHA256 ptr | 24 சொற்களின் மீது அதே இடத்தில் ஒரு SHA-256 சுருக்கச் செயல்பாடு | 64 | sha256_compress(buf), sha256(msg) | rand_sha256_compress |
| 6 | READ_PUBLIC idx | உப்பிடப்படாத H_PUB-உடன் பிணைக்கப்பட்ட பொதுப் பகுதிச் சொல் idx-ஐத் தருகிறது | 1 | read_public(idx) | rand_read_public |
| 7 | POSEIDON2_LEN ptr n | நீளம் n ஸ்பாஞ்சுக்குள் பிணைக்கப்பட்ட POSEIDON2, குறைந்தது ஒரு வரிசைமாற்றம் (கட்டுப்பாட்டுத் தொகுப்பு 7) | 3 + 3·max(⌈n/4⌉, 1) | poseidon2_len(buf, n) | இல்லை |
மற்ற ஒவ்வொரு அறிவுறுத்தலுக்கும் 1 கேஸ் செலவாகிறது: ஒவ்வொரு cpu வரிசைக்கும் ஒரு கேஸ்; ஹாஷ் அமைப்பு அழைப்புகள் மட்டுமே அதிக எடை கொண்டவை (கட்டுப்பாட்டுத் தொகுப்பு 8, சங்கிலி 18 முதல்). ஒரு Poseidon2 அழைப்பு என்பது அதன் ecall வரிசை, இரண்டு மீள்எழுதும் வரிசைகள், ⌈n/4⌉ உள்வாங்கும் வரிசைகள் ஆகியவை; ஒவ்வொன்றும் 3 கேஸ்.
POSEIDON2 நிரப்புவதில்லை. ஸ்பாஞ்ச் தன் முதல் பாதைகளை ஒவ்வொரு நான்கு சொல் துண்டாலும் மேலெழுதுகிறது; எனவே [a], [a, 0], [a, 0, 0], [a, 0, 0, 0] அனைத்தும் ஒரே சுருக்கத்தைத் தருகின்றன. நீளம் மாறக்கூடிய தரவை ஹாஷ் செய்யும் நிரல், நீளத்தைச் செய்திக்குள் சேர்க்க வேண்டும், அல்லது நிலையான நீளக் குறியாக்கத்தை ஹாஷ் செய்ய வேண்டும், அல்லது POSEIDON2_LEN-ஐ அழைக்க வேண்டும்; அது n-ஐ ஸ்பாஞ்சின் கொள்ளளவுக்குள் விதைத்து, அதே சொற்களுக்கு வேறொரு சுருக்கத்தைத் தருகிறது. Rust SDK-இல் poseidon2 என்பது மூலச் சுட்டியின் மீதான unsafe fn; poseidon2_len என்பது ஒரு slice மீதான பாதுகாப்பான அழைப்பு; keccak, sha256_compress ஆகியவை &mut [u32; 50], &mut [u32; 24] ஆகியவற்றை எடுத்துக்கொள்கின்றன.
கருவித்தொடரில் ஒரு இடைவெளி. சுற்றுகள் aeacf31-இல் இயந்திரம், எமுலேட்டர், Rust SDK ஆகியவை அமைப்பு அழைப்பு 7-ஐச் செயல்படுத்துகின்றன; ஆனால் rand-guest check செயல்படுத்துவதில்லை: அதன் அமைப்பு அழைப்புப் பட்டியல் 6-இல் நின்றுவிடுகிறது. எனவே a7 = 7 கொண்ட ecall-ஐ அது Syscall கண்டறிதலாக அறிவிக்கிறது; poseidon2_len-ஐ அழைக்கும் guest-இல் rand-guest build பூஜ்ஜியமல்லாத குறியுடன் வெளியேறுகிறது (circuits issue #1). guest.h-இலும் இதற்கான உறைச்செயல்பாடு இல்லை. இது சரிசெய்யப்படும் வரை, வழக்கமான கருவியால் உருவாக்கப்பட்ட guest நிலையான நீளச் செய்திகளுக்கு POSEIDON2-ஐப் பயன்படுத்துகிறது.
ஒரு சான்று சரியாக இவற்றை வெளியிடுகிறது: hc, H_IN, H_PUB, நிலை, அறிவிக்கப்பட்ட கேஸ் வரம்பு, எட்டு வெளியீட்டுச் சொற்கள். இன்று சங்கிலியில் இரண்டு வரம்புகள் பொருந்துகின்றன:
- பொதுப் பகுதி பயன்படுத்தும்போதே நிலைநிறுத்தப்படுகிறது. சங்கிலி 20-இல்,
rand program deploy --publicஒரு நிரலின் பொதுச் சொற்களை அமைக்கிறது (அதிகபட்சம்max_program_public_words, 32,768); ஒவ்வொரு அழைப்பும் அவற்றுக்கு எதிராகச் சரிபார்க்கப்படுகிறது. ஒவ்வொரு அழைப்புக்கும் நிரலுக்கெனத் தனிப் பொதுச் சொற்கள் இல்லை. சங்கிலி 19-ஐப் போலவே சங்கிலி 20-உம் ஒவ்வொரு அழைப்பின் பகுதியிலும் அவற்றுக்குப் பின் எட்டுச் சொற்களைச் சேர்க்கிறது; இது சான்றை அதன் பரிவர்த்தனையுடன் இணைக்கும் அழைப்புப் பிணைப்பு (சங்கிலி 20-இல் இது genesis ஹாஷையும் உள்ளடக்குகிறது); guest தன் சொந்தச் சொற்களை முன்பிருந்த அதே சுட்டெண்களிலேயே படிக்கிறது. ஒரு RPL-2Invokeஅறிவிக்கப்பட்ட நிலைமாற்றத்தைப் பிணைப்புக்குப் பின் சேர்க்கிறது; நிரல் அதைpublic_len + 8முதல் படிக்கிறது (நிரல்கள்). சங்கிலி 12 போன்ற வரம்புப் புலங்கள் இல்லாத சங்கிலியில், பொதுப் பகுதி வெறுமையாக இருக்கும்;READ_PUBLICபடிக்க எதுவும் இருக்காது. - ஒரு அழைப்பின் தனிப்பட்ட உள்ளீட்டுச் சொற்கள் மூடப்பட்ட உறையால் வரம்பிடப்படுகின்றன. சங்கிலி 20-இன்
max_call_envelope_bytesஆன 65,536, 16,071 சொற்களை அனுமதிக்கிறது; அந்தப் புலம் இல்லாத சங்கிலி 4,295 சொற்களை அனுமதிக்கிறது.
ஒரு KECCAK அல்லது SHA256 அழைப்பு சான்றில் ஓர் அட்டவணையைச் சேர்க்கிறது; அழைப்பு ஹாஷ் செய்தது என்பதைச் சான்றின் தலைப்பு காட்டுகிறது. keccak கொண்ட சான்று ஏறக்குறைய 3.3 MB: இயல்புநிலை 2 MiB சான்று வரம்பை விட அதிகம், சங்கிலி 20-இன் 4 MiB-ஐ விடக் குறைவு; ஓர் அழைப்பு அதிகபட்சம் 128 Keccak-f வரிசைமாற்றங்களையும் 128 SHA-256 சுருக்கச் செயல்பாடுகளையும் பயன்படுத்தலாம் (நிரல்கள்).
நினைவகம்
- 32 பதிவேடுகள்;
x0பூஜ்ஜியம். - RAM பூஜ்ஜியத்தில் தொடங்குகிறது. ஒவ்வொரு முகவரியும்
2³⁰-க்குக் கீழே உள்ளது. - இயல்புநிலை இணைப்பி உரைநிரலான
guest-sdk/guest.ld, நிரலை0x1000-இல் வைக்கிறது; பின்னர்.rodata,.data,.bss; பின்னர்__stack_top-இல் 64 KiB அடுக்கு. - தரவுப் பகுதி கொண்ட நிரலுக்கு, ஏற்றியின் முன்னுரைப் பகுதிக்காக (அடுத்த பிரிவு) அதன் உரைக்குக் கீழே இடம் தேவை.
evm.ld,sbpf.ldசெய்வதுபோல, அதன் சொந்த.ldORIGIN-ஐ0x10000-க்கு உயர்த்துகிறது.
பிம்பக் கொள்கலன்
rand-guest build, rand-guest pack இரண்டும் ஒரே கோப்பு வடிவத்தை எழுதுகின்றன: பிம்பக் கொள்கலன். எல்லா எண்களும் little-endian 32-பிட் சொற்கள்:
[0x444e4152 ("RAND"), 1, text_base, n_text, data_base, n_data] text… data…
ஏற்றி கொள்கலனை { base_pc, words } என்ற நிரலாக மாற்றுகிறது:
- பூஜ்ஜியமல்லாத ஒவ்வொரு தரவுச் சொல்லுக்கும் அது ஒரு
li/swஇணையை எழுதுகிறது. RAM ஏற்கெனவே பூஜ்ஜியத்தையே தருவதால், பூஜ்ஜியச் சொற்கள் தவிர்க்கப்படுகின்றன. - அந்த முன்னுரைப் பகுதியை அது
text_base-க்கு நேர் கீழே வைக்கிறது; எனவேbase_pc = text_base − 4 × prologue words. முன்னுரைப் பகுதி நேரடியாக நிரலின் சொந்த_start-க்குள் தொடர்கிறது. hc-உம் நிரல் அடையாளமும் முன்னுரைப் பகுதி உட்பட முழுwordsமீதும் கணக்கிடப்படுகின்றன. எனவேhcகுறியீட்டை மட்டுமன்றித் தரவையும் பிணைக்கிறது.
தரவு இல்லாத கொள்கலன் முன்னுரைப் பகுதியை உருவாக்குவதில்லை; அதே அடிப்படை முகவரியில் உள்ள தலைப்பில்லாத தட்டையான இருமக் கோப்பின் அதே நிரலையும் அதே hc-ஐயும் தருகிறது.
fullnode v0.3 மற்றும் அதற்குப் பிந்தைய பதிப்புகளில் rand program deploy கொள்கலனை அதன் முதல் சொல்லைக் கொண்டு அடையாளம் காண்கிறது. 0x444e4152 ஒருபோதும் அறிவுறுத்தலாகக் குறிவிலக்கப்படுவதில்லை; எனவே மூல .bin கோப்பைக் கொள்கலன் என்று தவறாகக் கருத முடியாது. மாய எண்ணுடன் தொடங்கி, வடிவம் பிழையான கோப்பு ஒரு பிழையாகக் கருதப்படுகிறது; மாற்று வழிக்குத் திரும்புவதில்லை.
இரண்டு அடையாளங்கள்
| பெயர் | அது என்ன | யார் பயன்படுத்துகிறார்கள் |
|---|---|---|
hc | (base_pc, len, words) என்பதன் மீது சுற்றமைப்பு கணக்கிடும் Poseidon2 சுருக்க மதிப்பு | ஓர் அழைப்பின் ஒவ்வொரு நிரூபணமும் இதற்கு எதிராகச் சரிபார்க்கப்படுகிறது; rand_getProgram இதை code_hash ஆகக் காட்டுகிறது |
| நிரல் அடையாளம் | blake3("rand-program" ‖ base_pc ‖ words); --public உடனான நிறுவல், rand-program-2 என்ற குறிச்சொல்லின் கீழ், பொதுச் சொற்களையும் பிணைக்கிறது | நிறுவப்பட்ட நிரல் சேமிக்கப்படுவதும் அழைக்கப்படுவதும் இந்தத் திறவுகோலின் கீழ்தான் |
rand-guest build, rand-guest info இரண்டும் இவ்விரண்டையும் அச்சிடுகின்றன. hc பிணைக்கிறது, ஆனால் மறைப்பதில்லை: ஒரு வேட்பு நிரலை வைத்திருக்கும் எவரும் அதை உறுதிப்படுத்த முடியும்.
நிரல் உச்சவரம்பு
ஒரு நிறுவல், சங்கிலியின் நிரல் உச்சவரம்பை மிஞ்சாத எண்ணிக்கையிலான சொற்களையே கொண்டிருக்கலாம்.
| சங்கிலி | உச்சவரம்பு |
|---|---|
max_program_words இல்லாத ஜெனிசிஸ் (சங்கிலி 12) | 4,096 |
max_program_words உள்ள ஜெனிசிஸ் | அந்த மதிப்பு, 1..=65535 |
| zkVM-இன் கடும் வரம்பு, எந்தச் சங்கிலியிலும் | 65,535 |
உச்சவரம்பு ஜெனிசிஸ் ஹாஷின் ஒரு பகுதி; ஆகவே இயங்கிக்கொண்டிருக்கும் சங்கிலியில் அதை மாற்ற இயலாது. rand-guest இதை --max-words (இயல்புநிலை 4,096) உடன் ஒப்பிட்டுச் சரிபார்க்கிறது. rand program deploy கணுவிடம் rand_estimateFee மூலம் கேட்டு, எதையும் நிரூபிப்பதற்கு முன்பே உச்சவரம்பை மீறும் நிரலை மறுக்கிறது.
நேரலைச் சங்கிலியான சங்கிலி 20 உச்சவரம்பை உயர்த்துகிறது. அதன் ஜெனிசிஸ் ஹாஷ் 6210cf071a390d7ac61d8cbea5dd9d139d1a493a862b54a45a498f36af2d5135, அதன் max_program_words 65,535. சங்கிலி 13 (v0.4 சங்கிலி) அறிமுகப்படுத்திய வரம்புகளை அது தக்கவைக்கிறது, நிரூபண உச்சவரம்பைத் தவிர; அதைச் சங்கிலிகள் 17 முதல் 20 வரை பாதியாகக் குறைக்கின்றன. அதன் பிற வரம்புகள்:
| வரம்பு | சங்கிலி 20 |
|---|---|
max_proof_bytes | 4,194,304 (4 MiB); சங்கிலிகள் 13 முதல் 16 வரை 8 MiB |
max_block_bytes | 20,971,520 (20 MiB) |
max_call_envelope_bytes | 65,536 |
max_program_public_words | 32,768 |
சங்கிலி 19-இல் போலவே சங்கிலி 20-இலும், சொல் உச்சவரம்பு கட்டுப்படுத்தும் வரம்பு அல்ல. அதன் ஜெனிசிஸ் hardening_v6 ஐ அமைக்கிறது; அதன் கீழ், எந்த அழைப்பாலும் ஒருபோதும் நிரலை நிரூபிக்க இயலாதபோது நிறுவல் மறுக்கப்படுகிறது (ProgramUncallable). ஓர் அழைப்பு அடுக்கு 14-இல் வரம்பிடப்படுகிறது; அதன் Poseidon2 அட்டவணை 2,048 வரிசைமாற்றங்களைக் கொள்கிறது. நிரல் சுருக்க மதிப்பு நான்கு சொற்களுக்கு ஒன்றையும், உள்ளீட்டின் உப்பு வரிசை ஒன்றையும், அழைப்பைப் பிணைக்கும் எட்டுச் சொற்கள் இரண்டையும் எடுத்துக்கொள்கின்றன; மீதம் 2,045: பொது உள்ளீடு இல்லாத நிரலுக்கு 8,180 சொற்கள், பொது உள்ளீடு உடன் இருந்தால் அதைவிடக் குறைவு (ஒன்பது பொதுச் சொற்களுடன் 8,168). ஒவ்வொரு கணுவின் காத்திருப்புக் குளமும் எந்தச் சங்கிலியிலும் அத்தகைய நிறுவலை மறுக்கிறது.
சங்கிலி 20-இல் தொகுதித் திரட்டல் முடக்கப்பட்டுள்ளது: அதன் ஜெனிசிஸில் aggregation பகுதி இல்லை. சங்கிலி 20, fullnode v0.6.8-இல் 2026-10-01 06:17 UTC முதல் நேரலையில் உள்ளது; அது சங்கிலி 19-இன் நிலையிலிருந்து உயரம் 7,258-இல் வெட்டப்பட்ட கடினப் பிளவு (சங்கிலி 19 உயரம் 7,700-இல் நின்றது); சங்கிலி 19 (அதே நாள் 03:43 UTC முதல் நேரலையில் இருந்தது) தானே சங்கிலி 18-இன் உயரம் 141,935-இல் செய்யப்பட்ட மறு-ஜெனிசிஸ். நிரல்கள் ஒரு வெட்டைக் கடந்து செல்வதில்லை; ஆகவே முந்தைய சங்கிலியில் நிறுவப்பட்ட எந்த நிரலும் சங்கிலி 20-இல் இல்லை. RPL-2 நிரல் நிலையைக் கொண்ட முதல் சங்கிலியும் சங்கிலி 20 தான் (நிரல்கள்). இது பின்வரும் தொடக்க இணைப்புக் கணுக்கள் வழியாக வலையமைப்பில் இயங்குகிறது:
/ip4/164.90.239.200/tcp/30303/p2p/12D3KooWEQEbUwZRgqhDPXhW7vNBmcRcnhUDGUADe81VFdv3ALYe
/ip4/165.245.173.74/tcp/30303/p2p/12D3KooWJyc5oDHggAr89e9QrRFBy9Tg8TxXh18yzrb1SM6KKLYw
/ip4/188.166.235.187/tcp/30303/p2p/12D3KooWSyX84P1DAbWByLHpRBMLRWD53r3Jj4aqVt6tHoF8B2ZQ
| படிமம் | சொற்கள் | 4,096-க்குள் அடங்குமா | 65,535-க்குள் அடங்குமா | சங்கிலி 20-இல் நிறுவப்படுமா (8,180 அழைக்கக்கூடியவை) |
|---|---|---|---|---|
fib (Rust) | 26 | ஆம் | ஆம் | ஆம் |
c-fib (C) | 25 | ஆம் | ஆம் | ஆம் |
| ERC-20, மொழிபெயர்க்கப்பட்டது (இரண்டாம் கட்டம்) | 11,686 | இல்லை | ஆம் | இல்லை |
evm.bin, EVM இடைமொழியாக்கி | 18,009 | இல்லை | ஆம் | இல்லை |
sbpf.bin, sBPF இடைமொழியாக்கி | 8,317 | இல்லை | ஆம் | இல்லை |
| SPL Token, மொழிபெயர்க்கப்பட்டது | 65,096 | இல்லை | ஆம், 439 மீதத்துடன் | இல்லை |
அடுக்குகள்
ஒரு நிரூபணத்தின் அடுக்கு t இயக்கத்தை 2ᵗ − 1 வரிசைகளுக்குள் வரம்பிடுகிறது: சுழற்சிகளும் சுருக்க மதிப்பு வரிசைகளும் (நான்கு நிரல் சொற்களுக்கு ஒன்று, நான்கு உள்ளீட்டுச் சொற்களுக்கு ஒன்று, மற்றும் பொது உள்ளீட்டுச் சுருக்க மதிப்பு). அடுக்கு தனியான ஒரு Poseidon2 வரவுசெலவு வரம்பையும் அமைக்கிறது. rand-guest run --tier t இரண்டையும் தெரிவிக்கிறது:
tier 10: fits (cycles 146 of 1023, Poseidon2 permutations 10 of 128)
அடுக்கு பொதுவானது; நிரூபணம் அறிவிக்கும் கேஸ் வரம்பும் அவ்வாறே. சங்கிலி 20-இல் அழைப்புக் கட்டணம் அடுக்கைப் பின்பற்றுவதில்லை; அந்த வரம்பையும் நிரூபணத்தின் அளவையும் பின்பற்றுகிறது: குறைந்தபட்சம் 0.001 RAND + gas_price × gas_limit + byte_price × ⌈bytes / 1024⌉, சங்கிலியின் நடப்பு விலைகளில்; அவை 10⁻⁹ RAND அலகுகளில் 100, 800 இல் தொடங்கி, தொகுதி நிரம்பும் அளவோடு மாறி, சங்கிலி 20-இல் 10,000, 80,000 அலகுகளில் நிற்கின்றன (கட்டணங்கள்). ஒரு வரம்பு தலைப்பின் மேல்வரம்பை மீறக்கூடாது: (2ᵗ − 1) + 2ᵗ⁻², கூடவே நிரூபணம் அறிவிக்கும் ஒவ்வொரு Keccak தொகுதிக்கும் 191, ஒவ்வொரு SHA-256 தொகுதிக்கும் 63; ஹாஷ் அட்டவணை இல்லாதபோது அடுக்கு 10-இல் 1,279, அடுக்கு 14-இல் 20,479. rand-guest run சுழற்சிகளையும் வரிசைமாற்றங்களையும் தெரிவிக்கிறது, கேஸை அல்ல. rand call முதலில் நிரலை இயக்கி, அது செலவிடும் கேஸையும் அது அறிவிக்கும் வரம்பையும் (இயல்பாக, சரியான கேஸ் அளவை 2ᵗ⁻² இன் அடுத்த மடங்குக்கு மேல்நோக்கி முழுமையாக்கியது) நிரூபிப்பதற்கு முன் அச்சிடுகிறது:
gas: 5636 (declaring 6144, tier 12)
அந்த வரி 2026-09-30 அன்று சங்கிலி 18-இல் செய்யப்பட்ட ஓர் அழைப்பிலிருந்து எடுக்கப்பட்டது (அநாமதேய வாக்கெடுப்பு). ஜெனிசிஸில் gas பகுதி இல்லாத சங்கிலியில், அதாவது சங்கிலி 15 மற்றும் அதற்கு முந்தையவற்றில், கட்டணம் ஓர் அடுக்கு அட்டவணையாக இருந்தது: 0.001 + (0.001 + 0.0001 × (t − 10) / 2) RAND. ஒரு நிரூபணத்துக்குத் தேவையான நினைவகம் அடுக்குடன் செங்குத்தாக உயர்கிறது; காண்க சரிபார்ப்பாளர் மற்றும் திரட்டுநர் வன்பொருள்.
fullnode v0.5.6 (2026-09-25) முதல், ஓர் அழைப்பு அதிகபட்சம் அடுக்கு 14 ஐயே அறிவிக்கலாம்: அதைவிட உயர் அடுக்கு அழைப்பு நிரூபணத்தை, சரிபார்ப்புத் திறவுகோலை உருவாக்குவதற்கு முன்பே, ஒரு கணு CallTierTooHigh உடன் மறுக்கிறது; அத்தகைய ஒன்றைக் கொண்ட தொகுதி செல்லாது. அடுக்கு 14-இன் வரவுசெலவு வரம்பு 16,383 வரிசைகளும் 2,048 Poseidon2 வரிசைமாற்றங்களும்; நிரலின் சொந்தச் சுருக்க மதிப்பு ஏறத்தாழ நான்கு சொற்களுக்கு ஒரு வரிசைமாற்றத்தைச் செலவிடுகிறது; ஆகவே 8,180 சொற்களுக்கு மேற்பட்ட நிரலை அழைக்க இயலாது, சங்கிலி 19-ஐப் போலவே சங்கிலி 20-உம் அதன் நிறுவலை மறுக்கிறது. Rust அல்லது C-இல் ஒரு நிரலை எழுதுங்கள் இந்த வரவுசெலவு வரம்பை விரிவாகக் கணக்கிட்டுக் காட்டுகிறது.