Rand Protocol
Dokumentasi
Konsep inti

Biaya

Apa yang dibayarkan sebuah transaksi kepada chain dalam RAND - batas minimum tetap per tindakan, harga gas dan harga byte yang dibayar sebuah panggilan pada chain 20, ke mana biaya itu mengalir, mengapa gas di sini merupakan harga dan bukan batas atas eksekusi, serta apa yang dibayar pengirim dengan mesinnya sendiri sebagai gantinya.

Gunakan halaman ini untuk menetapkan biaya pada sebuah transaksi, memperkirakan biaya deploy atau call, dan memahami berapa yang dibayarkan kepada validator. Biaya berupa batas bawah dalam RAND. Setiap aksi kecuali call membayar biaya tetap. Pada chain 20, sebuah call membayar sesuai batas gas yang dideklarasikan proof-nya dan sesuai ukuran byte-nya, dengan harga yang bergerak mengikuti seberapa penuh blok dan berhenti pada batas atas.

Batas bawah biaya

Biaya dinyatakan dalam satuan 10⁻⁹ RAND. Konstanta berada di randprotocol_core::gas:

transaksibatas bawahsaat ini
bundle apa pun: transfer RAND atau token RPL apa pun, bond, setoran bridge (BridgeAttest, dibayar oleh relayer-nya), TokenMint, SetAuthority, TokenBurn, ListBackingBUNDLE_BASE = 1.000.000 satuan0,001 RAND
DeployBUNDLE_BASE + DEPLOY_PER_WORD (100.000) × (word program + word publik)program 256 word: 0,0266 RAND; program 4.096 word: 0,4106 RAND; image SPL Token 65.096 word dengan input publik 27.151 word: 9,2257 RAND (di-deploy pada chain 13, 2026-09-19). Sejak chain 16 (hardening_v6, termasuk chain 20), deploy yang tidak dapat dipanggil oleh call mana pun ditolak sebagai ProgramUncallable: lebih dari 8.180 word untuk program tanpa input publik, lebih sedikit jika disertai input publik. Image tersebut akan ditolak pada chain 20
Callpada chain yang genesis-nya memiliki bagian gas (chain 20, seperti chain 18 dan 19): BUNDLE_BASE + gas_price × batas gas yang dideklarasikan proof call + byte_price × setiap KiB (KiB parsial dihitung penuh) dari proof call ditambah envelope input, mulai dari byte 0. Lihat Gas pada chain 18. Pada chain tanpa bagian tersebut: BUNDLE_BASE + call_fee(tier), dengan call_fee = CALL_BASE (1.000.000) + 100.000 per dua tier di atas 10, ditambah 1.000 satuan per KiB (KiB parsial dihitung penuh) dari proof call ditambah envelope input di atas kuota gratis sebesar 2.097.152 + 18.432 bytechain 20, pada harga awal 100 dan 800 satuan: call tier-14 yang mendeklarasikan batas tertinggi tier sebesar 20.479 gas dengan proof dan envelope 1.350.000 byte memiliki batas bawah 0,0041 RAND; default wallet membayar lebih (di bawah). Tanpa bagian gas, seperti pada chain 15: tier 10: 0,002; tier 14: 0,0022 RAND, di bawah kuota. Sejak v0.5.6, call di atas tier 14 ditolak berapa pun yang dibayarkan (MAX_CALL_TIER). Call ERC-20 approve yang dilakukan pada chain 13 pada 2026-09-19 (tier 16, proof 3.412.405 byte) membayar 0,00357 RAND dan akan ditolak pada chain mana pun sejak v0.5.6
Invoke (RPL-2, chain 20)batas bawah sebuah call, ditambah program_state.cell_fee dari genesis untuk setiap cell yang dibuat transisi (cell yang ditulis bernilai bukan nol padahal sebelumnya tidak tersimpan); menulis ulang atau menghapus cell tidak menambah biayacell_fee chain 20 adalah 0,01 RAND: call tier-14 di atas, yang membuat dua cell, memiliki batas bawah 0,0241 RAND
BridgeBurnBRIDGE_BURN_FEE = 10 × BUNDLE_BASE: biaya dasar ditambah biaya milik bridge sendiri, keduanya dibayar dari satu bundle yang dibawa oleh sebuah burn0,01 RAND; pada chain 20 bridge juga menahan 10 bps dari zUSD yang di-burn (di bawah)
RegisterToken, RegisterBridgedTokenBUNDLE_BASE + registration_fee dari registri token (parameter genesis)chain 20: 0,001 + 1 RAND = 1,001 RAND, yang 1 RAND-nya di-burn
Mint (faucet), Unbond0; tanpa bundle, ditandatangani validator—
PauseMints, UnpauseMints0; tanpa bundle, diotorisasi oleh kunci jeda atau kuorum guardian PQ, sehingga jeda dapat dilakukan dari wallet yang tidak memegang RAND—
Withdraw0 pada wire; basis 0,001 RAND diambil dari jumlah yang ditarikpenarikan 1.000 RAND menghasilkan catatan senilai 999,999

Biaya adalah word publik dari bundle dan selalu dalam RAND. Guest bundle aset tersembunyi mengikatnya ke dalam relasi saldo kelompok RAND in₂ + in₃ = out₂ + out₃ + fee + burn_r (slot 2–3), sehingga biaya dibayar dari catatan tersembunyi tanpa mengungkapkan catatan yang mana; sebuah token bergerak melalui slot 0–1 dari bundle yang sama di bawah relasinya sendiri, in₀ + in₁ = out₀ + out₁ + burn_a. Dengan demikian satu proof memindahkan token sekaligus membayar biaya RAND-nya, dan wallet yang memegang token tetapi tidak memiliki RAND yang dapat dibelanjakan akan ditolak sebelum proving.

Biaya bridge jatuh pada burn karena itulah satu-satunya transaksi bridge yang pengirimnya pasti memegang RAND; sebuah setoran hanya membayar biaya dasar, karena penyetor belum memiliki RAND. Biaya registrasi merupakan fakta ledger, bukan bagian dari fee_floor, sehingga diperiksa dengan aturan aksi itu sendiri (RegistrationFeeTooLow), sebagaimana bagian gas atau tier sebuah call dikenakan setelah proof-nya didekode. Batas bawah sebuah call diperiksa dua kali, karena apa yang dideklarasikannya baru dipercaya setelah proof-nya terverifikasi. Pada chain 20, pemeriksaan pertama, sebelum verifikasi apa pun, menghitung harga byte call dan batas deklarasi sebesar 1 (sebuah Invoke juga berutang cell fee di sana); pemeriksaan kedua menghitung harga batas yang dideklarasikan proof yang telah terverifikasi. Pada chain tanpa bagian gas, keduanya adalah BUNDLE_BASE + CALL_BASE dan batas bawah yang tepat per tier.

Tanyakan kepada node alih-alih menebak:

rand fee bundle          # 0.001 RAND
rand fee deploy 256      # 0.0266 RAND
rand fee call 14 --gas 20479 --bytes 1350000   # 0.0041 RAND at chain 20's starting prices
→ {"method":"rand_estimateFee","params":[{"kind":"call","tier":14,"gas":20479,"bytes":1350000}]}
← "4103100"

Jawaban itu adalah 1,000,000 + 100 × 20,479 + 800 × 1,319 pada harga awal; node menghitung harga sesuai harga pada tip saat ditanya. Pada chain 20, field gas pada spesifikasi call wajib disertakan melalui JSON-RPC (-32602 jika tanpanya). rand fee call <tier> tanpa --gas mengirim batas tertinggi tier, dan tanpa --bytes tidak menghitung harga byte. Sebuah invoke dihitung dengan cara yang sama, dengan "kind":"invoke" dan "created_cells": c yang menambahkan c cell fee (24103100 untuk contoh di atas dengan dua cell, ditanyakan kepada chain 20 pada 2026-10-01). Pada chain 15, yang tidak memiliki bagian gas, rand fee call 14 menjawab 0,0022 RAND.

Default wallet persis sama dengan batas bawah, kecuali untuk call pada chain 20, yang defaultnya menambahkan ruang lebih (di bawah); rand send --fee <RAND> dan flag --fee pada bond, call, bridge-mint, bridge-burn (default 0,01) dan subperintah token menaikkannya. Apa pun di atas batas bawah adalah tip.

Gas pada chain 18

Chain 18, aktif dari 2026-09-29 hingga 2026-10-01, adalah chain pertama yang berbasis pengukuran gas, dan chain 19, re-genesis-nya pada build yang sama, membawa bagian gas yang sama. Chain 20 (v0.6.8) mempertahankan setiap aturan bagian ini dan menambahkan dua batas atas harga serta beban byte yang hanya dihitung pada byte yang dibayar (di bawah). Chain tanpa bagian gas tetap memakai jadwal tier pada tabel di atas.

Apa yang dihitung. Satu gas adalah satu baris tabel cpu zkVM, sehingga instruksi biasa berharga 1. Syscall adalah satu-satunya biaya lainnya:

operasigas
instruksi apa pun, HALT, WRITE_OUTPUT, READ_INPUT, READ_PUBLIC1
POSEIDON2 atas n word3 + 3 × ⌈n/4⌉ (setiap baris absorb berharga 3)
SHA256, satu kompresi64
KECCAK, satu permutasi192

Batas yang dideklarasikan. Proof call membawa satu nilai publik lebih banyak dari sebelumnya, GAS_LIMIT, dan sirkuit (constraint set 8) membuktikan bahwa gas yang dipakai eksekusi sama dengan atau di bawahnya. Gas yang tepat tetap privat. Batas di atas batas tertinggi pada header proof itu sendiri ditolak sebelum verifier key apa pun dibangun:

gas_max = (2ᵗ − 1) + 2^(t−2) + 191 × (keccak rows / 32) + 63 × (sha256 rows / 64)

Itu adalah 1.279 pada tier 10, 5.119 pada tier 12 dan 20.479 pada tier 14 untuk call yang tidak memakai kedua tabel hash.

Batas bawah. Ledger mengenakan biaya atas batas yang dideklarasikan dan byte, pada harga yang berlaku ketika blok dimulai:

fee ≥ BUNDLE_BASE + gas_price × gas_limit + byte_price × ⌈bytes / 1024⌉

bytes adalah proof call ditambah envelope input. Jadwal tier dan kuota gratisnya tidak berlaku pada chain seperti itu. Pool menuntut persis apa yang dituntut sebuah blok, dan menolak call yang lebih murah sebagai FeeTooLow.

Bundle dan proof otorisasi mendeklarasikan batas yang dipatok. Setiap proof bundle harus mendeklarasikan tepat bundle_gas_limit dari genesis, 20.479 (batas tertinggi tier-14), atau transaksi ditolak sebagai BundleGasLimit. Chain 20, seperti setiap chain sejak 17, menjalankan otorisasi terpisah, sehingga setiap bundle membawa proof otorisasi tier-10, yang harus mendeklarasikan 1.279 (AuthGasLimit). Keduanya bukan biaya: sebuah transfer, bond, atau deploy tetap membayar batas bawah tetapnya dari tabel di atas. Wallet mendeklarasikan kedua nilai itu sendiri.

Harga bergerak. Bagian gas chain 20 memiliki pengendali dynamic, sehingga gas_price dan byte_price adalah state ledger, yang di-commit dalam state root. Sekali per blok, setelah transaksinya, masing-masing bergerak sesuai seberapa penuh blok itu terhadap sebuah target:

price' = min(max_price, max(min_price, price + ⌊price × adjust_bps × (used − target) / (10,000 × target)⌋))

used dibatasi pada dua kali target, sehingga adjust_bps adalah pergerakan terbesar yang dapat dilakukan satu blok ke arah mana pun. max_price adalah batas atas genesis; chain 18 dan 19 tidak memilikinya. byte_price mengikuti byte yang dibayar pada blok (di bawah); gas_price mengikuti jumlah batas yang dideklarasikan oleh call dan invoke ditambah 20.479 untuk setiap bundle.

bagian gas chain 20nilai
gas_price, byte_price pada genesis100 unit per gas; 800 unit per KiB
min_gas_price, min_byte_price100; 800, sehingga harga awal sekaligus menjadi batas bawah
max_gas_price, max_byte_price10.000; 80.000: batas atas, 100 kali batas bawah (baru pada chain 20)
byte_loadpaying (baru pada chain 20)
target_block_bytes10.485.760, setengah dari batas blok 20 MiB
target_block_gas262.144
adjust_bps1.250: paling banyak 12,5% per blok
bundle_gas_limit20.479
meteringcircuit

Blok yang berada di bawah targetnya menurunkan harga, sehingga pada chain yang sepi harga berada di batas bawah. rand_getLimits menyajikan gas_price dan byte_price terkini pada tip bersama gas_metering: "circuit", bundle_gas_limit, adjust_bps, dan sejak v0.6.8 juga max_gas_price, max_byte_price dan byte_load (null pada chain yang tidak memilikinya); rand_status melaporkan kedua harga yang sama sebagai gas_prices.

Batas atas dan beban byte berbayar

Keduanya adalah field genesis dari gas.dynamic, baru pada v0.6.8 (audit v6, POOL-2), dan chain 20 adalah chain pertama yang menetapkannya. Keduanya memperbaiki cacat yang dimiliki chain 18 dan 19. Pada chain tersebut, byte_price bergerak mengikuti panjang terenkode setiap transaksi, padahal hanya sebuah call yang membayarnya. Tujuh transfer (masing-masing sekitar 2,85 MB, biaya tetap) mengisi blok hingga sekitar 1,9 kali target byte dan menaikkan harga sekitar 11% per blok, tanpa batas atas: sekitar 65 blok seperti itu membawanya ke 1.000 kali harga awal, dan sebuah call kemudian berbiaya sekitar 1 RAND, bukan sekitar 0,004.

  • Batas atas. max_gas_price dan max_byte_price adalah harga yang tidak pernah dinaikkan melampaui batas oleh pengendali. Langkahnya sama, lalu dipotong pada batas (gas::next_price_capped), sehingga harga yang berada di batas atasnya tetap di sana selama rangkaian blok penuh apa pun dan turun pada blok pertama yang berada di bawah target. Sebuah genesis harus menetapkan masing-masing pada atau di atas harga awalnya. Pada batas atas chain 20, call tier-14 di atas, dengan 20.479 gas dan 1.319 KiB, memiliki batas bawah 0,3113 RAND, yang merupakan nilai tertinggi yang dapat dicapai batas bawahnya.
  • Beban byte berbayar. Di bawah byte_load: "paying", bytes_used milik blok hanya menghitung byte yang dikenai harga byte: proof ditambah envelope input dari setiap Call dan Invoke (gas::call_bytes), tidak ada dari sebuah transfer, bond, atau burn. Blok berisi transfer tidak menggerakkan harga byte. Ledger::block_usage menghitung angka tersebut baik bagi proposer maupun replika, sehingga keduanya sepakat.

Di bawah beban berbayar, blok yang penuh dengan transfer tidak memberi sinyal harga bagi sebuah call, sehingga proposer yang jujur juga menyisihkan ruang untuk call. Ini adalah kebijakan node, bukan aturan validitas: selama sebuah call atau invoke berada di pool dan membayar batas bawahnya saat ini, transaksi berbiaya tetap mengambil paling banyak tiga perempat byte blok pada tahap pertama, dan sisa seperempat terakhir yang tidak dipakai call kemudian diisi dengan transfer yang tertahan (Mempool).

Yang dibayar wallet untuk sebuah call

rand call terlebih dahulu menjalankan program di emulator dan mencetak gas: <exact> (declaring <limit>, tier <t>). Secara bawaan, perintah ini mendeklarasikan gas yang tepat dibulatkan ke atas hingga kelipatan 2^(tier − 2); --gas-limit N mendeklarasikan angka yang persis dan --gas-limit max mendeklarasikan batas atas header.

Dua hal membuat biaya bawaan lebih tinggi daripada batas bawah:

  • Proof dihargai pada batas maksimumnya. Sejak chain 16 (hardening_v6, termasuk chain 20), proof call terikat pada transaksinya sendiri, sehingga biaya ditetapkan sebelum proof ada. Wallet menghargai batas proof chain, 4 MiB, sebagai pengganti ukuran proof yang sebenarnya (wallet::hardened_call_quote_bytes). Hal ini hanya dapat menyebabkan pembayaran berlebih.
  • Kelonggaran dua langkah harga. rand_getLimits menyajikan harga dari head yang sudah di-commit dan sebuah call masuk dua atau tiga blok kemudian, sehingga nilai bawaan mengalikan batas bawah dengan (1 + adjust_bps / 10,000)², yaitu 1,125² pada chain 20.

Diukur pada chain 18 pada 2026-09-30, empat call masing-masing berbiaya antara 0,0057 dan 0,0075 RAND pada nilai bawaan ini (Example programs). --fee menggantikan nilai bawaan; wallet menghitung ulang harga proof yang sebenarnya sebelum mengirim dan menolak biaya di bawah batas bawahnya.

Ke mana biaya mengalir

Seluruhnya — batas bawah dan tip — dikreditkan ke rewards milik proposer blok dalam register validator, satu-satunya tempat pada chain ini yang menyimpan jumlah secara terbuka, dengan satu pengecualian. Pada genesis dengan tokens.burn_registration_fee (chain 20, seperti setiap chain sejak 15), registration_fee milik sebuah RegisterToken atau RegisterBridgedToken dibakar dan proposer menyimpan fee − registration_fee; rand_getSupply menghitungnya dalam registration_fees_burned. Pada chain 14, yang tidak memiliki flag tersebut, proposer menyimpan seluruh biaya. Tidak ada hal lain yang dibakar dan tidak ada pembagian. Seorang validator mengubah reward yang terkumpul menjadi sebuah note dengan rand-node withdraw (Staking). Biaya sel sebuah invoke merupakan bagian dari biaya bundle-nya dan masuk ke proposer bersama sisanya. Pada chain 20 tidak ada reward blok dan tidak ada inflasi: biaya adalah seluruh pendapatan seorang validator.

Satu biaya pada chain 20 bukan RAND dan tidak masuk ke validator mana pun. Di bawah bridge.fees pada genesis (baru pada v0.6.8), bridge menyimpan 10 bps dari setiap deposit zUSD dan setiap burn zUSD, dibulatkan ke bawah menjadi satu unit rilis utuh dari backing, sebagai sebuah note zUSD ke alamat treasury yang disebutkan genesis. Sebuah deposit mengkreditkan kepada penyetor jumlah bruto dikurangi biaya; sebuah burn merilis amount − fee pada chain sumber. Note biaya tetap diterbitkan dan didukung backing. Lihat Bridge dan RPL tokens.

Mempool mengurutkan kandidat berdasarkan jumlah yang mereka bayarkan di atas batas bawahnya per KiB, lalu berdasarkan biaya (Mempool), sehingga biaya yang lebih tinggi hanya berpengaruh saat terjadi kemacetan. Sebuah transfer berukuran sekitar 2,85 MB (diukur pada chain 18): proof bundle 1,49 MB dan proof otorisasi 1,36 MB, sehingga sekitar tujuh muat dalam blok 20 MiB milik chain 20. Catatan fullnode sendiri menyatakan bahwa pasar biaya atas byte — bukan atas opcode — adalah bentuk yang seharusnya diambil batas bawah sebelum mainnet. Harga byte chain 20 adalah pasar tersebut untuk call, yang digerakkan hanya oleh byte yang dibayar oleh call; batas bawah sebuah transfer tetap tetap (flat).

Mengapa gas di sini adalah harga, bukan batas

Ethereum meter setiap opcode karena setiap node mengeksekusi setiap transaksi dan eksekusi bersifat terbuka tanpa batas. Pada Rand tidak ada node yang mengeksekusi apa pun: pengirim menjalankan program satu kali, off chain, dan menyerahkan sebuah proof kepada chain. Pekerjaan sebuah node per transaksi adalah urutan yang tetap — mendekode field publik, menjalankan pemeriksaan gratis, memverifikasi satu STARK — dan verifikasi itu memakan sekitar 16 ms dengan verifier key yang hangat, apa pun yang dikerjakan program. Dengan demikian, tiga tugas gas terpisah:

  • Terminasi ditegakkan oleh tier: sebuah run yang tidak berhenti dalam 2ᵗ − 1 siklus tidak dapat dibuktikan sama sekali, dan prover menanggung kegagalannya.
  • Penetapan harga pekerjaan adalah fungsi batas bawah gas, sejak chain 18. Biaya jaringan per instruksi mendekati nol, tetapi kerja pembuktian pengirim nyata, dan batas bawah yang tetap menghargai call sejuta siklus sama dengan call seribu siklus. Hingga chain 18, batas bawah bersifat tetap per tier.
  • Penentuan ukuran blok adalah anggaran byte (MAX_BLOCK_BYTES = 4 MiB secara bawaan, max_block_bytes pada genesis jika ditetapkan lain) dan jumlah transaksi (2.000).

Dua catatan yang dinyatakan fullnode secara terus terang: byte memang bervariasi (sebuah proof berukuran lebih dari satu megabyte, sehingga ruang blok, bukan komputasi, adalah sumber daya yang langka), dan pertumbuhan state — tree, himpunan nullifier, byte program yang dideploy — hanya dihargai oleh biaya deploy per word dan biaya dasar yang tetap, yang memadai untuk testnet dan layak ditinjau ulang ketika ukuran state menjadi penting.

Yang dibayar pengirim sebagai gantinya: pembuktian

Satu-satunya biaya yang bervariasi adalah menghasilkan proof STARK, dan hanya mesin pengirim yang membayarnya. Berurutan menurut pengaruhnya:

  1. Tier t ∈ {10, 12, 14, 16, 18, 20} (call di atas 14 ditolak pada chain sejak v0.5.6; sebuah bundle dipatok pada 14, dan sejak chain 17 membawa proof otorisasi tier-10 di sampingnya, sekitar 7 detik tambahan): tabel cpu diisi hingga 2ᵗ baris dan setiap langkah kira-kira melipatempatkan trace yang diisi. Diukur pada laptop pengembangan: private_payment pada tier 10 dalam sekitar 7 detik; guest bundle aset tersembunyi pada tier 14 dalam sekitar 100 detik, aset apa pun yang dipindahkannya.
  2. Siklus yang dieksekusi, karena menentukan tier: instruksi yang dijalankan, bukan instruksi yang ditulis.
  3. Ukuran program, secara lemah: satu baris digest per empat word pada awal trace.
  4. Ukuran input privat, dengan cara yang sama.
  5. Tabel mana yang ada: tabel keccak atau sha256 hanya membebani porsi kolomnya ketika guest menggunakannya.
  6. Profil FRI: 80 query, bukan 27, melipattigakan ukuran proof tetapi nyaris tidak mengubah waktu pembuktian.

Pembuktian tidak bergantung pada jumlah, pada banyaknya note yang dimiliki pengirim, atau pada ukuran chain: keanggotaan dibuktikan terhadap tree berkedalaman tetap, sehingga sebuah transfer berbiaya sama pada blok kesepuluh maupun blok kesepuluh juta.

Referensi

konstantanilai
BUNDLE_BASE1.000.000 unit
BRIDGE_BURN_FEE10.000.000 unit (10 × BUNDLE_BASE)
registration_fee (bagian tokens pada genesis)1.000.000.000 unit pada chain 20, dibakar (burn_registration_fee)
DEPLOY_PER_WORD100.000 unit
CALL_BASE, CALL_PER_TIER_STEP1.000.000; 100.000 unit; jadwal tier untuk chain tanpa bagian gas
GAS_PRICE_DEFAULT, BYTE_PRICE_DEFAULT100 unit per gas; 800 unit per KiB. Harga awal chain 20 dan batas bawah harganya
KECCAK_GAS, SHA256_GAS, POSEIDON2_ABSORB_GAS192; 64; 3 gas per baris
max_gas_price, max_byte_price (gas.dynamic pada genesis)10.000 unit per gas; 80.000 unit per KiB pada chain 20; tanpa batas atas bila tidak ada (chain 18 dan 19)
byte_load (gas.dynamic pada genesis)paying pada chain 20: hanya byte bukti dan amplop (envelope) dari call dan invoke yang menggerakkan byte_price; bila tidak ada, byte dari setiap transaksi
cell_fee (program_state pada genesis)10.000.000 unit (0,01 RAND) per cell yang dibuat pada chain 20; paling banyak 1.000 RAND
bundle_gas_limit (bagian gas pada genesis)20.479 pada chain 20, gas_max(14, 0, 0); bukti otorisasi mendeklarasikan 1.279, gas_max(10, 0, 0)
adjust_bps (gas.dynamic pada genesis)1.250 pada chain 20; genesis dapat menetapkan 1 hingga 5.000
MAX_PROGRAM_WORDS4.096, kecuali genesis menetapkan max_program_words (paling banyak 65.535; chain 20 menetapkan 65.535, dan hardening_v6 menolak program di atas 8.180 word yang tidak dapat dimuat oleh call mana pun)
MAX_PROOF_BYTES2 MiB, kecuali genesis menetapkan max_proof_bytes (4 MiB pada chain 20; 8 MiB pada chain 13 hingga 15)
MAX_BLOCK_BYTES, MAX_BLOCK_TXS4 MiB (kecuali genesis menetapkan max_block_bytes; 20 MiB pada chain 20), 2.000
tier10, 12, 14, 16, 18, 20; siklus ≤ 2ᵗ − 1
MAX_CALL_TIER14: bukti call di atasnya ditolak saat penerimaan dan dalam blok (sejak v0.5.6)

Terakhir diverifikasi terhadap commit fullnode c0878c3f (chain 21) pada 2026-10-12. Jika kode dan halaman ini tidak sesuai, kodelah yang benar; beri tahu kami.