sbpf2rv یو کمپایل شوی Solana پروګرام (یو sBPF ELF، هغه .so چې cargo build-sbf یې جوړوي) اخلي او په یو Rand پروګرام یې بدلوي. دا C لیکي، او rand-guest build هغه C په یو RV32IM انځور کمپایل کوي. دا انځور د ورته ELF او لارښوونې لپاره هماغه اته وتونکې کلمې خپروي چې د Rand د sBPF مفسر مېلمه، sbpf.bin، یې خپروي. دا پاڼه ټوله لاره د SPL Token پر اصلي پروګرام ښيي.
دا څه دی
| ننوت | یو sBPF v1 ELF |
| وتنه | د C یو شیم کرېټ؛ rand-guest build یې د انځور کانټینر جوړوي |
| چېرته چلېږي | له چین بهر، د پراختیاکوونکي پر ماشین؛ چین یوازې انځور ویني |
| له څه سره باید سمون ولري | د sbpf.bin اته وتونکې کلمې، پر هماغو دوو ننوتونکو ټېپونو |
| زېرمتون | د circuits په زېرمتون کې sbpf2rv/ |
| ټاکلې وسیلې | Rust 1.98.1، clang 23.1.1، د cc کرېټ 1.4.6 |
ژباړل شوی پروګرام د مفسر ABI ساتي. هماغه ټېپونه لولي: ELF پر عامه ټېپ، او سریال شوې لارښوونه (لومړی حسابونه، بیا د لارښوونې معلومات) پر خصوصي ټېپ. د پروګرام شاوخوا هماغه sbpf-core چوکاټ چلوي: ننوت ډیکوډ کوي، ELF باروي، د حسابونو سیمه کتل کوي او ننوت او وتنه هش کوي. یوازې د sBPF اجرا پخپله په اصلي کوډ بدلېږي. له همدې امله یې وتنې کلمه په کلمه د مفسر له وتنو سره برابرې دي.
د باور ماډل
درې شیان د ژباړل شوي پروګرام ثبوت تړي.
hcژباړل شوی کوډ تړي. C په انځور کې کمپایل کېږي، نو د انځورhcهغه هم پوښي.- د ELF ساتونکی
hcله یو پروګرام سره تړي. شیم پروګرام پر ټېپ له ELF څخه باروي، نو پرته له کتنې به یو انځور د هماغهhcلاندې یو بل، د غوښتونکي ټاکل شوی ELF چلولی شو. له دې امله تولید شویprogram.cد هغه بار شوي پروګرام په ډایجسټ پای ته رسېږي چې ترې ژباړل شوی: متن، یوازې-لوستلو وړ معلومات، د هغوی پتې او د ننوتو ټکی. شیم له هر ډول چلولو مخکې د ټېپ بار شوی پروګرام په هماغه ډول (Poseidon2) هش کوي او پرتله کوي یې. هر بل پروګرام دBadElfسره، په حالت 2، د مخکیني حالت پر سر ودرېږي. نو هغه ثبوت چې د دېhcپر وړاندې تایید شي، د هماغه پروګرام چلول دي. H_PUBد ELF بایټونه تړي. ELF پر عامه ټېپ لېږدول کېږي، او د ثبوت د عامه ننوت ډایجسټ یې کلمه په کلمه پوښي.
دا چې آیا hc د یو ټاکلي ELF وفاداره ژباړه ده، د بیا جوړولو له لارې کتل کېږي. ټاکل شوی sbpf2rv پر ELF وچلوئ، د ټاکلو وسیلو سره یې جوړ کړئ، او hc پرتله کړئ. جوړونه د همدې لپاره د بیا تولید وړ ده.
چین سرچینه ELF یا د هغه هش نه ثبتوي. دا انځور او د هغه د پروګرام id ساتي. هغه ځای پرځای کوونکی چې غواړي ELF معلوم وي، هغه د پروګرام تر څنګ خپروي.
ساتونکی بار شوی پروګرام تړي، نه فایل. دوه ELFونه چې یوازې هلته توپیر لري چې بارونکی نه ګوري (د سرلیک ډکونه، د سمبولونو جدولونه) هماغه پروګرام ته بارېږي او پر دواړو خواوو یو شان چلېږي. هغه ELF چې د .rodata یو بایټ یې بدل شوی وي، حتی هغه بایټ چې لېږد یې هېڅکله نه لولي، د ژباړې له خوا ردېږي او د مفسر له خوا چلېږي.
څه ټریپ کېږي او څه ردېږي
په ژباړه کې هېڅ شی نه ردېږي. یو ناسم جوړ شوی ELF د بارونکي په خپل پیغام ردېږي، خو په یو سم جوړ شوي ELF کې هېڅ لارښوونه نه ردېږي. سکنر هغه څه چې یو پروګرام کېدای شي ورسره مخ شي د خبرداریو په توګه راپوروي، او ژباړل شوی پروګرام د چلېدو پر وخت دقیقاً هلته ټریپ کېږي چېرته چې به مفسر ټریپ کېده:
| خبرداری | دا څه دی | د چلېدو پر وخت |
|---|---|---|
UnknownSyscall | د سیسکال یو هش چې رنټایم یې نه پلي کوي | ټریپ UnknownSyscall |
Cpi | د پروګرامونو ترمنځ غوښتنه (sol_invoke_signed*) | هماغه UnknownSyscall ټریپ؛ CPI نه دی پلي شوی |
RegisterOutOfRange | یو رجسټر r11..r15، یا د callx رجسټر له r10 پورته | ټریپ BadInsn |
UnknownOpcode | یو اپکوډ چې د v1 ټولګی نه لري، په ګډون د یوازې-v2 کورنۍ sdiv/srem او hor64 | ټریپ BadInsn |
JumpOutOfText | یو ټوپ، غوښتنه یا دوام چې د فنکشن له متن بهر وي | ټریپ BadJump |
BadCallImmSrc | یو call imm چې src یې په 2..=10 کې وي (یوازې په لاسي جوړ شویو ELFونو کې) | ټریپ BadInsn |
هغه ژباړونکی چې ناڅرګند کوډ یې ردولی، هغه پروګرامونه به یې ردول چې مفسر یې نن چلوي. SPL Token همداسې پروګرام دی: دا sol_set_return_data او sol_get_sysvar غواړي، چې د Transfer لاره هېڅکله ورته نه رسېږي.
درې توپیرونه منل شوي دي. هر یو یې یوازې دا کوي چې ژباړه هلته ودرېږي چېرته چې کېدای شي مفسر ونه درېږي؛ ژباړه هېڅکله هغه چلول نه بشپړوي چې مفسر یې دروي.
- له سکن شوې ټولګې بهر یو
callxپهBadJumpټریپ کېږي، په داسې حال کې چې مفسر کېدای شي په هغه پته کې اصلي کوډ وچلوي. - د بودیجې کتنې کېدای شي یو بنسټیز بلاک وځنډول شي. د دې لپاره چې SPL Token د 65,535 کلمو له سقف لاندې ځای شي، د هغه له 3,546 بلاکونو څخه 1,505 بلاکونه د لارښوونو د حد خپله کتنه پرېږدي. د درېدو ډول کېدای شي په هماغه یو بلاک کې توپیر ولري چې له حد څخه اوړي. حالت او اته کلمې یو شان دي.
- یوازې سرچینه پروګرام چلېږي. بل ELF ردېږي (ساتونکی، پورته).
Ed25519 او secp256k1. د sol_ed25519_verify او sol_secp256k1_recover سافټویري پلي کونې په sbpf-rt/ کې شته خو نه دي تړل شوې. مفسر پر دواړو ټریپ کېږي، نو د برابرۍ لپاره ژباړه هم ټریپ کېږي. هره غوښتنه په ترتیب سره شاوخوا 14.3M او 15.7M سایکلونه لګوي، چې د تر ټولو لوی پوړ (2²⁰) څخه ډېر پورته دي. دوی د همپروسسر جدولونو ته اړتیا لري.
شمېرې
پر SPL Token (guests-compiled/sbpf/programs/spl_token.so، د مفسر خپل ازموینیز فکسچر) اندازه شوي، د ELF ساتونکي سره.
| انځور | د پروګرام کلمې | سقف | hc |
|---|---|---|---|
| SPL Token، ژباړل شوی | 65,096 | 65,535 (439 پاتې) | 8ca905ae…758b |
sbpf.bin، مفسر | 8,317 | 65,535 | 059a7086…f476 |
| وېکټور | حالت | sBPF لارښوونې | ژباړل شوي سایکلونه | د sbpf.bin سایکلونه | پوړ (دواړه) |
|---|---|---|---|---|---|
Transfer 250 | 1 | 143 | 765,851 | 694,498 | 20 |
Transfer له بیلانس څخه ډېر | 0 | 133 | 748,836 | 679,814 | 20 |
MintTo 250 | 1 | 120 | 708,648 | 634,423 | 20 |
MintTo د ناسم واک لرونکي له خوا | 0 | 134 | 696,694 | 627,241 | 20 |
Burn 250 | 1 | 131 | 710,245 | 637,038 | 20 |
Burn له بیلانس څخه ډېر | 0 | 121 | 695,434 | 624,781 | 20 |
Transfer د دوو حسابونو سره | 0 | 69 | 645,015 | 569,656 | 20 |
| ډېر زیات حسابونه (چوکاټ یې ردوي) | 2 | 0 | 303,933 | 304,616 | 20 |
سایکلونه چېرته لګېږي په Transfer کې:
| پړاو | ژباړل شوی | sbpf.bin |
|---|---|---|
| د دواړو ټېپونو لوستل | 302,881 | 302,880 |
| د ELF بارول | 177,012 | 173,859 |
| د حسابونو د سیمې کتنه | 103,829 | 103,824 |
| د sBPF سټک او هیپ صفر کول | 49,181 | 49,181 |
| د وتنې او ننوت هشونه، عامه کلمې، نښلونکی کوډ | 51,091 | 42,723 |
| د ELF ساتونکی | 72,949 | — |
| د sBPF پروګرام پخپله | 8,908 | 22,031 |
| ټول | 765,851 | 694,498 |
د ژباړل شوي پروګرام خپله اجرا د هرې sBPF لارښوونې لپاره شاوخوا 2.4 تر 2.5 ځله ارزانه ده (شاوخوا 62 سایکلونه د 154 پر وړاندې). خو د هر چلول شاوخوا 98% ثابت چوکاټ دی، او ساتونکی 73k سایکلونه زیاتوي. نو د SPL Token لپاره ژباړل شوی انځور 69k تر 75k سایکلونه ګران دی، او دواړه په 20 پوړ کې پاتې کېږي.
ژباړه یوازې د محاسبې-درنو پروګرامونو لپاره ګټه کوي. په هره لارښوونه کې د شاوخوا 90 سایکلونو په سپما، هغه غوښتنه چې 10,000 sBPF لارښوونې اجرا کوي شاوخوا 0.9M سایکلونه سپموي. SPL Token له 120 تر 143 پورې اجرا کوي.
ګام په ګام: SPL Token، ژباړل شوی او برابر شوی
هره کمانډ د circuits د یوې checkout له ریښې څخه په 7ef3220 کې چلېږي، د Deploy a Rust program له وسیلو او د Deploy a RISC-V program له clang 23.1.1 سره. اوږده وتنه هلته لنډه شوې چې په … نښه شوې.
0. د وسیلو جوړول
(cd sbpf2rv && cargo +1.98.1 build --release)
(cd rand-guest && cargo +1.98.1 build --release)
1. ژباړه
--out باید د circuits د checkout دننه یو لارښود وي.
$ sbpf2rv/target/release/sbpf2rv guests-compiled/sbpf/programs/spl_token.so --out sbpf2rv/target/spl-token --name spl-token
entry pc 225: 30 function(s), 3546 block(s), 12061 instruction(s), 30 callx target(s), 0 refusal(s), 4 warning(s)
fn 225: 2065 block(s)
… (30 functions in all)
warning: UnknownSyscall { pc: 7803, hash: 2720453611 }
warning: UnknownSyscall { pc: 9530, hash: 2720453611 }
warning: UnknownSyscall { pc: 8698, hash: 2720453611 }
warning: UnknownSyscall { pc: 11547, hash: 331461893 }
wrote sbpf2rv/target/spl-token/program.c (521757 bytes of C) and the spl-token shim crate: rand-guest build sbpf2rv/target/spl-token
0 refusal(s). څلور خبرداري اصلي سیسکالونه دي چې Transfer هېڅکله ورته نه رسېږي: هش 2720453611 د sol_set_return_data دی (درې د غوښتنې ځایونه) او 331461893 د sol_get_sysvar دی.
2. د انځور جوړول
انځور د 4,096 کلمو له ډیفالټ سقف څخه لوی دی، نو --max-words 65535 ورکړئ.
$ rand-guest/target/release/rand-guest build sbpf2rv/target/spl-token --max-words 65535
…
65096 words against a cap of 65535 (fits); 2 ecall(s) with a non-static a7
OK
wrote sbpf2rv/target/spl-token/image.bin and its .sha256 (65096 words, hc 8ca905ae3c62f503de7de86829040f323e098b53dba5fffe09b42f1aad16758b, program id 65d234ce9ca4d082f487c038abfa76e67f41a0d91e10b9ac388f1e1541d59184)
$ rand-guest/target/release/rand-guest info sbpf2rv/target/spl-token/image.bin
form: image container
text 64819 words at 0x10000; data 102 words (101 non-zero) at 0x4f4cc; prologue 277 words; program 65096 words from base_pc 0xfbac
hc 8ca905ae3c62f503de7de86829040f323e098b53dba5fffe09b42f1aad16758b
program id 65d234ce9ca4d082f487c038abfa76e67f41a0d91e10b9ac388f1e1541d59184
65096 words against a cap of 4096: does not fit
هر څوک چې دا دوه ګامونه د هماغو وسیلو سره وچلوي، همدا hc ترلاسه کوي.
3. دواړه وچلوئ او پرتله یې کړئ
د 250 Transfer دوه د کلمو لیستونه اخلي، چې tests/parity.rs یې د مفسر د غوښتنې له خپل کوډبندۍ څخه جوړوي: 27,151 عامه کلمې (ELF، په کلمو کوډ شوی) او 10,458 خصوصي کلمې (لومړی حسابونه، بیا د Transfer توپیرونکی او مقدار). rand-guest run یې د --public او --input په توګه اخلي. د هر لیست تر لومړیو کلمو لنډ شوي:
$ rand-guest run sbpf2rv/target/spl-token/image.bin \
--public 108600 1179403647 65794 0 0 17235971 1 2088 … (27 151 words)
--input 41825 4 0 65791 0 50529027 50529027 50529027 … (10 458 words)
out[0] = 1
out[1] = 2892832079
out[2] = 376091303
out[3] = 1311040261
out[4] = 2015764099
out[5] = 3682593600
out[6] = 3311553006
out[7] = 141115266
cycles 765851
tier 20
هماغه دوه لیستونه د مفسر مېلمه پر وړاندې:
$ rand-guest run guests-compiled/bin/sbpf.bin \
--public 108600 1179403647 65794 0 0 17235971 1 2088 … (27 151 words)
--input 41825 4 0 65791 0 50529027 50529027 50529027 … (10 458 words)
out[0] = 1
out[1] = 2892832079
out[2] = 376091303
out[3] = 1311040261
out[4] = 2015764099
out[5] = 3682593600
out[6] = 3311553006
out[7] = 141115266
cycles 694498
tier 20
ټولې اته کلمې یو شان دي. out[0] = 1 حالت دی (بریا). out[1..8] هغه ډایجسټ دی چې د مفسر ABI یې د ننوت او وتنې پر سر تعریفوي.
4. ټول اته وېکټورونه په یوه کمانډ وکتئ
د برابرۍ ازموینه ژباړل شوی انځور جوړوي، هر وېکټور پر دواړو انځورونو د rand-guest run له لارې چلوي، او په اتو کلمو کې د هر توپیر پر صورت کې ناکامېږي:
$ cd sbpf2rv && cargo +1.98.1 test --test parity the_spl_token -- --nocapture
…
translated SPL Token: 65096 program words (cap 65 535), hc 8ca905ae3c62f503de7de86829040f323e098b53dba5fffe09b42f1aad16758b
transfer 250: Ok(0), status 1; cycles translated 765851, interpreter guest 694498
transfer too much: Ok(1), status 0; cycles translated 748836, interpreter guest 679814
MintTo 250: Ok(0), status 1; cycles translated 708648, interpreter guest 634423
MintTo 250 signed by someone else: Ok(4), status 0; cycles translated 696694, interpreter guest 627241
Burn 250: Ok(0), status 1; cycles translated 710245, interpreter guest 637038
Burn 1 000 001 (balance 1 000 000): Ok(1), status 0; cycles translated 695434, interpreter guest 624781
transfer with two accounts: Ok(47244640256), status 0; cycles translated 645015, interpreter guest 569656
an account count above MAX_ACCOUNTS: Err(BadElf), status 2; cycles translated 303933, interpreter guest 304616
…
test the_spl_token_transfer_translates_and_matches_the_interpreter_word_for_word ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 27.84s
5. ځای پرځای کول
rand program deploy sbpf2rv/target/spl-token/image.bin --public spl_token.so
تصویر ELF له عامې ټیپ څخه لولي، نو ELF د پروګرام عامه ننوته ده چې د ځای پر ځای کولو پر مهال ټاکل کېږي. --public پخپله د .so فایل اخلي؛ والټ یې په کلمو کوډ کوي او هماغه 27,151 کلمې ترې جوړوي چې په ۴مه مرحله کې وې.
دې کار ته داسې chain پکار ده چې genesis یې max_program_words لږ تر لږه 65,096 او max_program_public_words لږ تر لږه 27,151 وټاکي. Chain 12 د ځای پر ځای کولو حد 4,096 کلمې ټاکلی و او عامه ننوته یې نه منله، نو والټ دا تصویر هلته د هر ډول ثبوت له جوړولو مخکې رد کړ. Chain 13، چې د v0.4 chain ده، 65,535 او 32,768 وټاکل، او له هغې وروسته هره chain دواړه ارزښتونه ساتي. Chain 20، چې اوسنۍ ژوندۍ chain ده (genesis 6210cf071a390d7ac61d8cbea5dd9d139d1a493a862b54a45a498f36af2d5135)، د chain 13 د بلاک او د بلنې د پوښ حدونه هم ساتي او د ثبوت حد نیمايي کوي او 4 MiB (4,194,304 بایټه) یې ټاکي. دا حد له chain 17 راهیسې دی؛ chains 13 تر 16 یې 8 MiB ټاکلی و. اوس یوازې د اندازې حدونه نه دي چې پرېکړه کوي. د Chain 20 genesis hardening_v6 فعالوي، او په دې حالت کې که د ځای پر ځای شوي پروګرام کلمې له هغه شمېر څخه زیاتې وي چې یوه بلنه یې د tier-14 بلنې په حد کې ځایولی شي، ځای پر ځای کول ناسم دي (ProgramUncallable): له عامې ننوتې پرته تر ټولو زیات 8,180 کلمې، او د عامې ننوتې ترڅنګ تر دې لږ. دا تصویر 65,096 کلمې دی او ترڅنګ یې 27,151 کلمې عامه ننوته ده، نو chain 20 یې ځای پر ځای کول ردوي او بلنه به یې هم رد کړي: د SPL هر ازموینیز حالت په tier 20 کې چلېږي، چې د tier-14 بلنې له حد څخه پورته دی (محدودیتونه). په chain 20 کې د بلاکونو راټولول بند دي (د هغې genesis د aggregation برخه نه لري)؛ د هغې د پیل نوډونه په د validator چلول کې لېست شوي دي. د ځای پر ځای کولو فیس عامې کلمې هم د کوډ له کلمو سره شمېري: 0.001 + 0.0001 × (65,096 + 27,151) = 9.2257 RAND، یعنې هماغه فیس چې لاندې د chain 13 ځای پر ځای کولو ورکړ.
دا ځای پر ځای کول په chain 13 کې د 2026-09-19 په نېټه وشو، هغه مهال چې chain 13 ژوندۍ chain وه (د تولید FRI پروفایل، genesis 8123ccac1883a45750e4df6964fb7cd3f0b321798cde4c0ef406a0293939ece3)، او د genesis له والټ shielded-1 څخه ترسره شو. له هغې وروسته هره chain (14 تر 19) د یوې نوې chain په توګه پرته د chain 13 له پروګرامونو جوړه شوه، او دا تصویر په هېڅ یوه کې بیا ځای پر ځای شوی نه دی. نو لاندې راکړه ورکړه او لوړوالی د chain 13 دي او نور په explorer کې نه موندل کېږي. د پروګرام id یوازې د base_pc، کلمو او عامو کلمو هش دی، نو هماغه تصویر او ELF په هره هغه chain کې هماغه id ترلاسه کوي چې دا ځای پر ځای کول ومني. د والټ خروجي، چې د پرمختګ کرښې یې لنډې شوې دي (…):
$ rand program deploy <image.bin> --public spl_token.so
program id: 740236918310f8e52bb0c1ef49b2b0e0c018762e289666660685b0694c8dd00a (65096 words, hc ae05a98c03f5623c68e87dde320f0429538b093efeffa5db1a2fb4098b7516ad, public input 27151 words, digest ec57b10ed6f3a3d5fe87ec072f691322ad747377ba2f0a1788bcfe3e7334d67e)
…
proved in 94.3s: tier 14, 1418406 bytes
submitted deploy 626fc9387ecc1f6b39f44184807303ac2843029d8fb8e28338bf186445927530
…
| د پروګرام id | 740236918310f8e52bb0c1ef49b2b0e0c018762e289666660685b0694c8dd00a |
| تصویر | 65,096 کلمې؛ د rand-guest په لیکدود hc 8ca905ae…، د والټ په لیکدود ae05a98c… |
| عامه ننوته | 27,151 کلمې (ELF)، ډایجسټ ec57b10ed6f3a3d5fe87ec072f691322ad747377ba2f0a1788bcfe3e7334d67e |
| د فیس بنډل (د chain 13 دوهننوتنیز او دوهوتنیز بنډل) | tier 14، 1,418,406 بایټه، په 94.3 s کې ثابت شو |
| د ځای پر ځای کولو راکړه ورکړه (chain 13) | 626fc9387ecc1f6b39f44184807303ac2843029d8fb8e28338bf186445927530 |
| په دې لوړوالي کې ثبت شو (chain 13) | 400 |
| فیس | 9.2257 RAND |
له chain 14 راهیسې د فیس ورکوونکی بنډل هماغه څلورننوتنیز او څلوروتنیز بنډل دی چې پټه شتمني لري، هره راکړه ورکړه یې لېږدوي، او د راکړې ورکړې د تړلو ارزښت پر وړاندې ثابتېږي. دا لا هم tier 14 دی: په chains 14 او 15 کې د تولید په پروفایل نږدې 100 s وخت نیسي او نږدې 1.42 MB دی. له chain 17 راهیسې یو بنډل د tier-10 د اجازې ثبوت هم لېږدوي (وېشلې اجازه)، نو په chains 18 او 19 کې د یوې راکړې ورکړې د فیس بنډل نږدې 1.49 MB د بنډل ثبوت او نږدې 1.37 MB د اجازې ثبوت لري.
د پروګرام id له ELF سره تړلی دی، نو له هغه id سره توپیر لري چې rand-guest info یې یوازې د تصویر لپاره چاپوي. هغه id وکاروئ چې deploy چاپ کړ.
محدودیتونه
- پروګرام ته د هېڅ بلنې ثبوت نه دی جوړ شوی، پروګرام په chain 20 کې ځای پر ځای شوی نه دی، او chain 20 ځای پر ځای کول او بلنه دواړه ردوي. پورته ځای پر ځای کول په chain 13 کې وو. د chain 20 د
hardening_v6له مخې، که د ځای پر ځای شوي پروګرام کلمې له هغه شمېر څخه زیاتې وي چې یوه tier-14 بلنه یې ځایولی شي، ځای پر ځای کول ناسم دي (ProgramUncallable؛ تر ټولو زیات 8,180 کلمې)، خو دا تصویر 65,096 کلمې دی. د ننوتې اړخ به ځای شي: ELF د ځای پر ځای کولو عامه ننوته ده چېrand callیې پخپله راوړي، او 10,458 خصوصي کلمې د ننوتې په 16,071 کلمو حد کې ځایېږي، چې chain 20 یې ساتي. خو د SPL هر ازموینیز حالت tier 20 دی، او له fullnode v0.5.6 (2026-09-25) راهیسې نوډ د tier 14 څخه پورته د بلنې هر ثبوت ردوي (CallTierTooHigh)، مخکې له دې چې د verifier کیلي جوړه کړي. همدا څېړنه هغه هش جدولونه هم محدودوي چې یوه بلنه یې اعلانولی شي: 2¹³ د SHA-256 قطارونه (128 فشرده کول) او 2¹² د Keccak قطارونه (128 permutations). د tier-20 بلنه یوازې له chain بهر ثابتېدای شي، او تر اوسه د tier-20 هېڅ ثبوت نشته (راتلونکی ټکی وګورئ). - تر اوسه په tier 20 کې هېڅ ثبوت نه دی جوړ شوی. د tier-20 یو ثبوت په 48 GB لپټاپ کې نږدې 31 GB ته رسېدو سره ودرول شو، او په 64 GB droplet کې له 10 m 41 s وروسته په 65.1 GB کې د OOM له امله ووژل شو. د tier-16/18 له اندازه شوي پراخېدو څخه په اټکل (د هرو +2 tiers لپاره حافظه نږدې ×3.9، وخت نږدې ×4.1)، tier 20 نږدې 330 GB حافظې او نږدې 3.6 h وخت ته اړتیا لري، چې د DigitalOcean د حافظې تر ټولو لوی droplet (m-32vcpu-256gb، 256 GB) څخه زیات دی. prover یوازې په یوه thread چلېده: د 16-vCPU ماشین یوازې یوه core په 99% کار کاوه. د ثبوت حافظه وګورئ.
- CPI نشته. د پروګرامونو ترمنځ بلنې trap کوي.
- یوازې sBPF v1. هغه opcodes چې یوازې په v2 کې شته trap کوي.
- د Ed25519 او secp256k1 syscalls trap کوي تر هغو چې د coprocessor جدولونه ورته جوړ شي.
- chain یوازې ELF د عامې ننوتې په توګه ثبتوي. هغه ځای پر ځای کول چې
--publicکاروي د ELF کلمې او د هغوی ډایجسټ ساتي، اوrand_getProgramPublicیې وړاندې کوي. chain دا نه ثبتوي چې تصویر له هغه څخه څنګه جوړ شوی و: د جوړونې ننوتې خپرې کړئ څو نور همhcبیا جوړ کړای شي.