نوډ JSON-RPC 2.0 د HTTP له لارې په --rpc (ډیفالټ 127.0.0.1:8545) وړاندې کوي، او د ګډونونو لپاره په همدې پورټ یو WebSocket هم لري. له v0.6.8 راهیسې کولای شي یو دویم، عامه اورېدونکی هم پرانیزي (--public-rpc، لاندې). randprotocol_client::RpcClient (Rust) لاندې هر میتود رانغاړي. دا پاڼه د میتودونو هغه لیست دی چې v0.6.8 (c9c9bd3c) یې وړاندې کوي. زنځیر 20 همدا جوړښت چلوي. چېرې چې یو میتود په کوډ کې شته خو په زنځیر 20 کې غیر فعال دی، دا خبره ورسره لیکل شوې ده.
curl -s http://127.0.0.1:8545 -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"rand_getHead","params":[]}'
عامه پای ټکی
https://rpc.randprotocol.org (همدا پراکسي په https://randprotocol.org/api/rpc کې هم شته) غوښتنې د زنځیر 20 یوه آرشیف نوډ ته لېږدوي چې هر بلاک ساتي. دا د هغو والټونو او پاڼو لپاره دی چې خپل نوډ نه لري (rand --rpc https://rpc.randprotocol.org …). دا یوازې HTTP POST مني، CORS یې خلاص دی او WebSocket نه لري. له نوډ سره پرتله دا محدود دی:
- په هر ځل یوه غوښتنه. بسته د
-32600سره ردېږي. - د میتودونو د اجازې لیست: له 2026-10-01 راهیسې دا هماغه ټولګه ده چې د نوډ خپل عامه اورېدونکی یې لري (په v0.6.8 کې
rpc::PUBLIC_METHODS). نو د پروګرام د حالت هغه لوستنې چېrand program invokeورته اړتیا لري،rand_getAdmitted، د راټولونې لوستنې او د تدریجي آزادېدو لوستنې پکې شاملې دي، او همدارازrand_checkTransactionاوrand_sendTransaction.rand_mint،rand_importViewingKey،rand_getViewingNotes،rand_removeViewingKeyاوrand_getPeersپکې نه دي، او نوډ ته له رسېدو پرته-32601method not allowed hereځواب ورکوي: عامه فاسېټ د ناوړه ګټې اخیستنې لاره پرانیزي، او د لید کیلي باید یوازې هغه نوډ ته ورکړل شي چې تاسو یې پخپله چلوئ. - د غوښتنې بدنه تر ډېره 12 MiB کېدای شي. په دې کې هر لېږد، د توکن هر عمل یا پلي کول ځایېږي، او هغه بلنه هم چې ثبوت یې تر شاوخوا 3.4 MB پورې وي. معامله په hex کې کوډ کېږي، او د بلنې له ثبوت پرته یې بنډل او د اجازې ثبوتونه شاوخوا 2.85 MB نیسي. له دې لویه بلنه ستاسو خپل نوډ ته ځي. له حد پورته: HTTP 413 او
-32600. - د هرې پتې لپاره په دقیقه کې 1,200 غوښتنې، او د
rand_sendTransactionلپاره په دقیقه کې 6. له دې پورته: HTTP 429 او-32005. د لوستلو بودیجه د والټ د لومړۍ همغږۍ لپاره ټاکل شوې ده، چې په یوه ځل کې څو سوه غوښتنې لېږي (د زنځیر 18 په 99,000 لوړوالي کې 645). - کله چې تر شا نوډ ځواب نه ورکوي:
-32000upstream unavailable.
په دې پاڼه کې پاتې هر څه پخپله نوډ بیانوي.
د نوډ دوه اورېدونکي
له v0.6.8 (پلټنه v6) راهیسې نوډ دوه JSON-RPC اورېدونکي لري.
--rpc <ADDR>، د چلوونکي اورېدونکی. هر میتود، بستې او WebSocket لري. دا زنګوونکی د هغه د ساکټ پتې له مخې پېژني او پر لوپبک باور کوي: د لید کیلي میتودونه یوازې لوپبک ته ځواب ورکوي، او پر لوپبک کومه اندازهګیري نه کېږي. دا په127.0.0.1وساتئ. معکوس پراکسي یا د SSH لېږدونه هم له لوپبک راځي، نو که دا اورېدونکی تر داسې یوه شا وي، هر لیدونکی د چلوونکي په توګه ګڼل کېږي. له همدې امله هېڅکله یو عامه پای ټکی دې پورټ ته مه نښلوئ.--public-rpc <ADDR>، عامه اورېدونکی، چې د همدې کار لپاره جوړ شوی دی. دا د میتودونو یوه ثابته ټولګه وړاندې کوي: هغه لوستنې چې والټ، سپړونکی یا پاڼه ورته اړتیا لري، اوrand_sendTransaction(rpc::PUBLIC_METHODS).rand_importViewingKey،rand_getViewingNotes،rand_removeViewingKey،rand_mintاوrand_getPeersهلته هېڅکله نه وړاندې کېږي. وروسته اضافه شوی هر میتود هم تر هغه نه وړاندې کېږي چې په لیست کې ونه لیکل شي. داسې بلنه-32000<method> is not served on this node's public listenerځواب اخلي. بسته-32600ځواب اخلي، او د WebSocket لاره نشته. یو میټر ټول زنګوونکي یوځای اندازه کوي: په یوه ځل 600 غوښتنې او په ثانیه کې 150. له دې پورته، HTTP 429 د-32000بدنې سره راځي. د هر لیدونکي حدونه د پراکسي دنده ده، ځکه چې پراکسي لیدونکي لیدلای شي. د دې اورېدونکي زنګوونکي د نوډ د بندوونکو لوستنو تر نیمایي ډېر ځایونه نه شي نیولای، نو د چلوونکي اورېدونکی هېڅکله بې ځایه نه پاتې کېږي.
دواړه اورېدونکي د لوستلو دوه حدونه شریکوي. که بندوونکې لوستنه په 30 s کې پای ته ونه رسي، ځواب یې -32000 this read took longer than 30 s on this node; retry with a smaller range دی. rand_getBlocks خپله پاڼه هغه وخت پای ته رسوي چې 64 MiB بلاکونه یې لوستلي وي.
--rpc-viewing-token-file <PATH> د --rpc پر د لید کیلي میتودونو د حامل نښه (bearer token) لګوي. نښه د فایل لومړۍ کرښه ده، لږ تر لږه 32 توري لري، او د Authorization: Bearer <token> په بڼه لېږل کېږي. له دې سره یوازې لوپبک بس نه دی، او هر زنګوونکی چې دا نښه وړاندې کړي، هر چېرې چې وي، ځواب اخلي.
تړونونه
- د تاییدونکو پتې base58 تارونه دي (32 بایټه). هشونه 64 hex توري دي، له
0xسره یا پرته. پټې شوې ارزښتونه، لکه ژمنې، باطلوونکي، لنګرونه، د ونې ریښې او د شاهد کچې،Word8دي: د کوچني پای په ترتیب اتهu32کلمې، چې د 64 کوچنیو hex تورو په توګه لیکل کېږي. - پټې شوې پتې
rand1+ base58 دي او 1,667 توري لري. له 2,000 تورو اوږد پارامټر د تجزیې له مخه د اوږدوالي له امله ردېږي. - هر
u64مقدار لسیز تار دی ("1500000000"= 1.5 RAND؛ 1 RAND = 10⁹ واحدونه). دا د RAND واحدونو، د توکن واحدونو، د زنځیر حالت او د ډیکوډ شوې معاملې پر خپلو ساحو ټولو تطبیقېږي. JSON شمېره له 2⁵³ وروسته دقیق بشپړ عدد نه پاتې کېږي، او د 9 لسیزو توکن عرضه دا حد د څو لسګونو میلیونو واحدونو په شاوخوا کې اوړي. د دې بدلون د اغېزو لپاره لاندې نېټهلرونکې یادونه وګورئ. - شاخصونه، نانسونه، لوړوالي، د پاڼو شاخصونه، لیدونه، اوږدوالي، لسیزې او د ورځو شمېرونکي (
mint_day) هېڅکله مقدارونه نه دي او هر چېرې JSON بشپړ عددونه دي. - هره غوښتنه باید
idغړی ولري. پرته له هغه شی خبرتیا ګڼل کېږي او د-32600سره ردېږي. صریح"id": nullیوه عادي غوښتنه ده. - د بیلانس میتود او د حساب میتود نشته. والټ خپل بیلانس د خپلې لید کیلي په مرسته د
rand_getCommitmentsاوrand_getNullifiersله لټولو محاسبه کوي.rand_getBalance،rand_getAccountاوrand_getAssetBalanceځواب-32601دی.
ماتوونکی بدلون، 2026-09-20 (زنځیر 14): هر مقدار لسیز تار دی
تر زنځیر 14 مخکې، د ډیکوډ شوې معاملې دننه مقدارونه JSON بشپړ عددونه وو. هغه استثنا اوس نشته. لاندې ساحې له JSON شمېرو څخه لسیزو تارونو ته واوښتې. د دوی مانا او ځای بل هېڅ بدلون نه دی موندلی:
bundle.fee، دrand_getTransactionپهtxکې او دrand_getBlockByHeight/rand_getBlockByHashپهtransactions[]کې؛action.amountدkind=mint،bond،unbond،withdraw،bridge_attestلپاره (په همدې درې میتودونو کې)؛action.amountاوaction.relayer_feeدkind=bridge_burnلپاره (په همدې درې میتودونو کې)؛lockedدrand_getAssetsاو دrand_getBridgeState.assets[]په قطارونو کې.
هغه پېرېدونکی چې له دې ساحو هره یوه د شمېرې په توګه لولي، باید اوس تار تجزیه کړي. د rand_status aggregation.subsidy_base (یوازې په راټولونې زنځیرونو کې) هم په همدې بدلون کې تار شو. نور ټول مقدارونه له مخکې تارونه وو: rand_getSupply، rand_getEmission، rand_getValidators او د لید نوټونه. همداراز هره هغه ساحه چې له زنځیر 14 سره راغله: د بنډل burn_a او burn_r، د توکنونو عرضې، د هرې ملاتړکوونکې زېرمې locked، mint_cap_per_day او minted_today، registration_fee، او د token_mint، token_burn او register_token amount (initial_amount، initial.amount).
بستې
د POST بدنه کېدای شي د تر ډېره 20 غوښتنو یو لړ وي. ځواب یې د همدې اوږدوالي لړ دی چې د غوښتنو په ترتیب راځي، او تېروتنې هم پکې شاملې دي. غوښتنې یوه له بلې وروسته چلېږي. تش لړ، له 20 ډېر لړ، یا هغه بدنه چې نه شی وي او نه لړ، یو واحد -32600 له تش id سره ځواب اخلي. ټوله بدنه بیا هم د نوډ د غوښتنې د بدنې په حد پورې محدوده ده. دا حد د یوې ثبوتلرونکې معاملې لپاره ټاکل شوی دی، نو د دوو ثبوتلرونکو rand_sendTransaction بلنو بسته د 413 سره ردېږي. بستې د لوستنو لپاره وکاروئ، نه د ثبوت شویو سپارنو لپاره.
زنځیر او نوډ
rand_chainId
پارامټرونه []. پایله: د زنځیر id (بشپړ عدد). په testnet کې 20.
rand_tokenInfo
پارامټرونه []. پایله { "symbol": "RAND", "decimals": 9 }.
rand_getHead
پارامټرونه []. پایله { "height": 1998, "hash": "…", "view": 2251 }. view د نوډ اوسنی د اجماع لید دی. کله چې لیدونه وخت تېر کړي، دا له لوړوالي مخکې ځي.
rand_status (بل نوم rand_syncStatus)
پارامټرونه []. پایله:
{
"height": 1998, "head_hash": "…", "view": 2251, "high_qc_view": 2250,
"syncing": false, "sync_target": 1998,
"sync_inflight_age_ms": null, "sync_failures": 0, "sync_late_batches": 0,
"peer_count": 26, "connected_peers": 26, "reserved_peers": 25, "ws_clients": 0, "refused_cache": 0,
"verify_queue": 0, "mempool_size": 0,
"is_validator": true, "active_validator": true, "faucet": true, "confidential": true,
"testnet": true, "fri_profile": "production", "programs": 10, "viewing_keys": 0,
"notes": 197, "nullifiers": 160, "tree_root": "72b9…1197", "hc_bundle": "60af…3fce", "hc_auth": "1e4e…39c1",
"binding_domain": 1,
"address": "5TAofR…", "peer_id": "12D3KooW…",
"gas_prices": { "gas_price": "100", "byte_price": "800" }
}
is_validator ښيي چې دا نوډ د تاییدونکي کیلي لري. active_validator ښيي چې همدا کیلي په هغه ټولګه کې ده چې اوسنۍ دوره چلوي. reserved_peers (v0.6.8) هغه همتایان شمېري چې د راتلونکو نښلونو له حد سره سره منل شوي دي: بوټسټرپ نوډونه، هر --reserved-peer، او د تاییدونکي هر هغه هویت چې له لاسلیک شوې همتا تړنې زده شوی وي. هر یو یوازې یو ځل شمېرل کېږي. د ډلګۍ په نوډ کې دا شمېر باید د پیل په یوه دقیقه کې د تاییدونکو شمېر ته ورسېږي. viewing_keys ښيي چې نوډ د نوډاړخې لټون لپاره څو د لید کیلي په حافظه کې ساتي. verify_queue د هغو معاملو شمېر دی چې د ثبوت د تایید د څلورو کارګرانو یوه ته انتظار باسي (تر ډېره 64). hc_bundle هغه بنډل مېلمه دی چې د دې زنځیر ثبوتونه ورسره جوړېږي. hc_auth هغه د اجازې مېلمه دی چې د زنځیر پیدایښت یې ټاکي (له زنځیر 17 راهیسې اجازه وېشل شوې ده). په هغه زنځیر کې چې دا مېلمه نه لري، ارزښت یې null دی. هغه نوډ چې جوړښت یې له دې دواړو یوه سره سمون ونه لري، له پیلېدو ډډه کوي. testnet او binding_domain د پیدایښت هماغه ساحې دي چې په همدې نومونو یادېږي، لکه څنګه چې rand_getLimits یې وړاندې کوي. gas_prices د سر دفتر اوسني ګاز بیې دي چې په هره ژمنه کې تازه کېږي او د لسیزو تارونو په توګه راځي. په هغه زنځیر کې چې gas برخه نه لري، دا null دی. د زنځیر 20 بیې خوځنده دي او په هر بلاک کې د ډکوالي له مخې بدلېږي. هېڅکله د 100 او 800 له ښکتني حدونو ټیټې او د 10,000 او 80,000 له پورتني حدونو لوړې نه شي. نو دوی دلته یا په rand_getLimits کې ولولئ او په کوډ کې یې مه ټاکئ. شی یو aggregation شی هم لري (د هغه subsidy_base لسیز تار دی، پاتې یې بشپړ عددونه دي). په هغه زنځیر کې چې aggregation برخه نه لري، لکه زنځیر 20، ټول ارزښتونه صفر دي.
شی disk_free_bytes (شمېره) او disk_low هم لري، او د ساتنې جوړه هم: prune_floor هغه ټیټ لوړوالی دی چې دا نوډ لا هم ساتي (په آرشیف کې 0). prune_history_secs هغه موده ده چې د --prune-history سره پیل شوی نوډ یې ساتي (کله چې هر څه ساتي، null). په زنځیر 20 کې، لکه په زنځیر 19 کې، له 26 تاییدونکو 24 یې د 24 ساعتونو بلاکونه ساتي. دوه آرشیفونه ټول بلاکونه ساتي. کم شوي نوډونه وګورئ.
rand_getPeers
پارامټرونه []. پایله: د { "peer_id": "12D3KooW…", "addrs": ["/ip4/…/tcp/30303"], "connected_secs": 1241 } لړ.
rand_getBlockByHeight / rand_getBlockByHash
پارامټرونه [height] یا [hash]. که بلاک نامعلوم وي، پایله null ده. کنه:
{
"hash": "647b…", "height": 50, "view": 92, "parent": "2d41…",
"proposer": "3v3VBJ…", "timestamp_ms": 1788000123456,
"tx_root": "0000…", "state_root": "a1b2…", "justify_view": 91,
"tx_count": 0, "transactions": [ ]
}
یوازې تثبیت شوي بلاکونه وړاندې کېږي. transactions هماغه بڼه لري چې د rand_getTransaction tx یې لري. بلاک sealed هم لري، او د هغه هره معامله sealed_by؛ په هغه زنځیر کې چې راټولونه نه لري، دا په ترتیب سره false او null لولي.
rand_getBlocks
پارامترونه [from_height, to_height]. پایله: د بلاکونو سرلیکونه، تر ټولو زوړ لومړی، له from_height څخه تر ډېره 1,024 (په هغه نوډ کې چې له 2026-09-24 مخکې وي 128): د rand_getBlockByHeight ساحې پرته له transactions. هغه لړۍ چې له حد څخه پراخه وي، یا له سر څخه تېره شي، لنډېږي، نه ردېږي، او له v0.6.8 راهیسې یوه پاڼه هغه مهال هم پای ته رسېږي چې 64 MiB بلاکونه یې لوستي وي؛ له وروستي راستون شوي لوړوالي څخه مخ ته لاړ شئ. -32602 کله چې to_height له from_height څخه ټیټ وي.
له v0.6.8 راهیسې هر سرلیک public_notes هم لري: د بلاک bridge_attest، token_mint او register_token معاملې، او په هغه زنځیر کې چې د پل فیسونه لري، د هغه bridge_burn معاملې، د [{ "hash", "raw" }] په بڼه (هغه کوډبندي چې rand_getRawTransaction یې وړاندې کوي)؛ د هر بل بلاک لپاره تش. د سوځولو معامله د تش شویو ثبوتونو او "proofs_stripped": true سره وړاندې کېږي؛ د هغې hash د معاملې اصلي پېژندنه ده. د والټ لومړنۍ همغږي دا پاڼې لولي او د عامه نوټونو د بیا جوړولو لپاره بل څه ته اړتیا نه لري.
rand_getFinality
پارامترونه [height] یا [hash]. پایله، یو له دې: { "status": "committed", "height", "hash" }، { "status": "certified", "height", "hash", "qc_view" }، { "status": "proposed", "height", "hash" }، { "status": "unknown" }. لوړوالی تل یوازې د تثبیت شوي زنځیر پر وړاندې کتل کېږي، نو ځواب یې committed یا unknown وي؛ هش کېدای شي certified هم ولولي (د رېپلیکا په ناتثبیت شوې ونه کې د کوروم سند سره) یا proposed (په ونه کې پرته له کوروم سند).
rand_getProposer
پارامترونه [view] یا [from_view, to_view]، تر ډېره 64 لیدونه. پایله { "epoch": 3, "proposers": [ { "view": 2251, "proposer": "2nRdFC…" } ] }: د هر لید مشر د اوسنۍ اعتباروونکو ټولګې له مخې، نه هغه ټولګه چې په تاریخي توګه په هغه لید کې فعاله وه. -32602 د شاته لړۍ یا له 64 څخه د ډېرو لیدونو لپاره.
rand_getVersion
پارامترونه []. پایله { "version", "git_sha", "chain_id", "hc_bundle", "hc_auth", "fri_profile" }. version د کاري فضا د کرېټ نسخه ده؛ git_sha د جوړونې پر مهال ثبت شوی د کمېټ هش، چې کله تعقیب شوې فایلونه توپیر ولري -dirty ورپسې زیاتېږي، یا "unknown". hc_auth د پیدایښت د تصدیق مېلمه پروګرام دی، لکه په rand_status کې، یا null. عامه پای ټکی د 2026-10-01 په ورځ، په زنځیر 20 کې:
{ "version": "0.6.8", "git_sha": "c9c9bd3c1903aa4cc5833b7ab8c62fc3e6942017", "chain_id": 20,
"hc_bundle": "60af094acfe65d85fdb18fb3d06cf9085dcf28c96e59e87f1ee527226e6e3fce",
"hc_auth": "1e4e347f44cf86750b30a9a4bdf9ec9256efe353d4ff8017451eca7d195639c1",
"fri_profile": "production" }
rand_getGenesisHash
پارامترونه []. پایله: د پیدایښت هش په شپاړسیزه بڼه؛ په زنځیر 20 کې "6210cf071a390d7ac61d8cbea5dd9d139d1a493a862b54a45a498f36af2d5135" (د زنځیر 19 هش a3defc93…228a و). یوازې د زنځیر پېژندنه دوه د زنځیر پرېکونه سره نه بېلوي؛ دا یې بېلوي. په زنځیر 20 کې دا د هرې معاملې د تړون او د هر لاسلیک شوي عمل د پیغام برخه هم ده (binding_domain: 1، rand_getLimits وګورئ).
rand_getHealth
پارامترونه []. پایله، یو له دې: { "status": "disk_low", "free_bytes": "3221225472" }، { "status": "ok" }، { "status": "syncing", "behind": 412 }، { "status": "behind", "behind": 30 }. disk_low له هر څه مخکې راځي، کله چې د ډېټا د لارښود د فایل سیسټم خالي ځای د نوډ د --min-free-disk-mb له څلور چنده کم وي (ډیفالټ 1024، نو له 4 GB کم)؛ free_bytes لسیز متن دی. ok کله چې sync_target - height تر ډېره 2 وي او د همغږۍ هېڅ بستې غوښتنه پاتې نه وي؛ syncing تر هغه چې یوه پاتې وي؛ behind کله چې نوډ همغږي نه کوي او ځنډ لا هم له 2 پورته وي.
rand_getMempoolInfo
پارامترونه []. پایله { "count": 2, "bytes": 2611200, "oldest_ms": 1450, "max_count": 10000 }. bytes په حوض کې د هرې معاملې کوډ شوی اوږدوالی جمع کوي؛ oldest_ms هغه مهال null وي چې حوض تش وي. له v0.6.8 راهیسې حوض په بایټونو کې هم محدود دی، د پیدایښت د max_block_bytes اته چنده (په زنځیر 20 کې 160 MiB): له دې حد وروسته، هغه معامله چې له خپل لږ تر لږه حد څخه پورته په هر KiB ډېر ورکوي تر ټولو ارزانه معامله بې ځایه کوي، او هغه چې لږ یا برابر ورکوي د mempool full سره ردېږي. د حکومتولۍ عملونه له دواړو حدونو تېرېږي.
سپارل
rand_sendTransaction
پارامترونه [hex]، چې hex پکې bincode(Transaction) دی. پایله: د معاملې هش. نوډ یې د منلو په ترتیب (معاملې) اعتبار کوي، حوض ته یې اچوي او خپروي یې. تېروتنې -32000 دي، له لامل سره: nullifier already spent، anchor is not one of the last 1024 roots، time 12 is outside [1500, 2524] (دواړه کړکۍ د پیدایښت proof_window_blocks دي، په زنځیر 20 کې 1,024؛ تر 19 پورې زنځیرونو کې 256)، fee 1000000 below minimum 2000000، the bundle's digest is not what its proof published، invalid bundle proof: …، unknown program …، already in mempool، conflicts with a pending transaction over <nullifier>، faucet is disabled on this chain؛ د invoke لپاره، cell <key> is no longer what this transition read (د حالت پرېکړه: حجره بیا ولولئ او بیا یې ثابت کړئ) یا the vault holds … of asset … and the transition pays …؛ د رایې له لارې د منلو په حالت کې د ثبتوونکي Bond لپاره، validator … has not been admitted by the validator set's vote (staking.admission_by_vote); ask the validators for an AdmitValidator first؛ د هغې بستې لپاره چې د زنځیر 20 له پیدایښت سره سمون نه خوري، envelope is 1348 bytes, this chain requires exactly 1860، this chain requires an auth proof on every bundle (genesis hc_auth)، the auth proof publishes a different commitment than the bundle's auth_commit، auth proof: …، bundle proof declares gas limit …, this chain requires exactly 20479، non-canonical proof: … — re-prove with an up-to-date wallet؛ د پل د عملونو لپاره bridge: attestation already consumed، the attestation names a different recipient، the attestation deposits under asset 2, and the transaction names 1، the bundle burns 399, not the 400 the action declares؛ د هغې بستې لپاره چې داسې سوځول لري چې عمل یې باید ونه لري، the bundle burns asset 2 on an action that burns no token، a burn of 5 is not allowed on this action یا RAND burned through burn_a (5); a RAND burn goes through burn_r؛ د پل د حالت لپاره، bridge minting is paused، mint cap … per backing per day، already paused، not paused، wrong pause nonce، wrong list nonce، chain N has no registered emitter؛ د توکنونو د راجستر لپاره، wrong mint nonce او wrong token index. منل تثبیت نه دی: rand_getTransaction یا rand_getTransactionStatus پرلهپسې وپوښتئ.
هغه معامله چې د زنځیر د بلاک له حد (د rand_getLimits max_block_bytes) څخه لویه وي، مخکې له دې چې د انتظار حوض ته ورسېږي، د -32000 سره ردېږي او دواړه اندازې یادوي. د غوښتنې بدنه په 2 × (2 × max_proof_bytes + 4 × 2048 + max_call_envelope_bytes + 16,384 + 64 KiB) + 256 KiB محدوده ده، چې د پیل پر مهال له پیدایښت څخه حسابېږي: په ډیفالټ زنځیر کې 8,867,840 بایټه او د زنځیر 20 په حدونو کې 17,350,656، لکه د 17 تر 19 زنځیرونو (د 13 تر 15 زنځیرونو کې 34,127,872، چې د ثبوت حد یې 8 MiB و). 4 × 2048 د بستې څلور لفافې دي چې هره د لفافې په حد کې ده. له دې حد څخه لویه بدنه -32600 ده او حد یادوي.
یوازې -32000 (منلو یې رد کړې) او -32602 (کوډ یې نشو خلاصېدای) د معاملې په اړه پرېکړه ده. هره بله ناکامي، د -32603 په ګډون، د معاملې برخلیک نامعلوم پرېږدي: نوډ معامله له ځواب ورکولو مخکې حوض ته اچوي او خپروي یې، نو هغه نوډ چې په دې وقفه کې ودرېږي کېدای شي هغه څه یې منلي وي چې ځواب یې هېڅکله نه دی ورکړی. randprotocol_client لېږل یوازې د دې دوو کوډونو پر مهال رد شوی ګڼي.
rand_getTransactionStatus
پارامترونه [[hash, …]]، له 1 تر 64 هشونه. پایله: د هر هش لپاره یوه ننوته، په ترتیب:
[ { "hash": "…", "status": "committed", "height": 1998, "index": 0 },
{ "hash": "…", "status": "pending" },
{ "hash": "…", "status": "rejected", "reason": "bad mint signature" },
{ "hash": "…", "status": "unknown" } ]
د هر هش لپاره د لټون ترتیب: تثبیت شوې (زېرمه)، پاتې (د انتظار حوض)، رد شوې (د رد شویو زېرمه چې د rand_status refused_cache یې شمېري)، که نه نو unknown. rejected یوازې هغه ردونه پوښي چې د معاملې د خپلو بایټونو په اړه دي او هېڅ وروستی بلاک یې نشي بدلولی: ناسم ثبوت، د بستې ډایجسټ چې له هغه سره برابر نه وي چې ثبوت یې خپور کړی، خراب د ټکولو لاسلیک، ناسمه د زنځیر پېژندنه، له اندازې لویه برخه، د معاملې دننه تکرار شوی باطلوونکی یا ژمنتیا، ناسمې اندازې لفافه، ورک یا ناسم تصدیقي ثبوت، داسې بسته یا تصدیقي ثبوت چې ناسم د ګاز حد اعلانوي. هغه رد چې په هغه شېبه کې د نوډ په حالت پورې اړه لري — لګول شوی باطلوونکی، له کړکۍ بهر لنګر یا time، له لږ تر لږه حد څخه ټیټ فیس (چې په زنځیر 20 کې د ګاز له بیو سره بدلېږي)، نامعلوم پروګرام، د راجستر یوځلې شمېره، زوړ invoke لوستل — نه یادېږي او unknown لولي. -32602 د تش لېست یا له 64 څخه د ډېرو هشونو لپاره.
rand_mint (د testnet فاوسېټ)
پارامترونه [address] یا [address, amount]؛ address یوه rand1… پته، amount د واحدونو متن چې تر ډېره 100000000000 وي (100 RAND، ډیفالټ). پایله: د ټکولو د معاملې هش. یوازې په هغه زنځیر کې چې پیدایښت یې "faucet": true ولري؛ که نه نو -32000 faucet is disabled on this chain. څارونکی نوډ ځواب ورکوي faucet mints are signed by validators; ask a validator node.
په هغه زنځیر کې چې پیدایښت یې staking.faucet_recipients ټاکي، لکه د زنځیر 20 پیدایښت (16 والټونه)، یوازې لېست شویو والټونو ته ورکړه کېدای شي: هرې بلې پتې ته ټکول د the faucet may not mint to this recipient (not in staking.faucet_recipients) سره ردېږي. د زنځیر 20 پیدایښت staking.faucet_minters هم ټاکي (د اعتباروونکو 18 کیلي): یوازې لېست شوې کیلي کولای شي د ټکولو معامله لاسلیک کړي. فاوسېټ د هرې دورې بودیجه هم لري، staking.faucet_budget_per_epoch (په زنځیر 20 کې د هرې 1,000-بلاکي دورې لپاره 10,000 RAND)؛ له دې حد وروسته ټکول د FaucetBudgetExhausted سره ردېږي، چې د حالت پرېکړه ده او کله چې له حوض څخه ووځي unknown لولي.
د فاسیټ کچه په هره د نوډ پروسه محدوده ده: اته ضربونه پرلهپسې، چې بیا په هره ثانیه کې یو ډکیږي. له دې وروسته غوښتنه دا ځواب ورکوي: faucet is rate limited on this node (8 mints back to back, refilling at 1/s); try again shortly. نو د فاسیټ سیلاب نشي کولی چې ډنډ د پل له PauseMints مخکې ډک کړي. PauseMints هم، لکه د پل د حکومتولۍ نورې درې کړنې، د ډنډ له mempool full انکار څخه معاف دی او په بلاک کې لومړی ترتیبیږي.
له chain 14 راهیسې ضرب پرانیستی دی: د Mint کړنه د cm او amount ترڅنګ د یادښت pk، time او r هم لېږدوي. د منلو پړاو ژمنه بیا محاسبه کوي او هغه cm ردوي چې دې ارزښتونو ته نه پرانیستل کیږي (the mint's commitment does not open to its published note and amount). ضربوونکی ټول اووه ساحې د rand-mint-2 ډومېن لاندې لاسلیک کوي. په chain 20 (binding_domain: 1) کې دا لاسلیک د rand-mint-3 لاندې کیږي او د پیدایښت هش پکې لومړی راځي. نو د فاسیټ د یادښت خاوند او مقدار عامه دي، لکه څنګه چې د ایستلو تادیه عامه ده. د rand_mint پارامترونه نه دي بدل شوي.
rand_estimateFee
پارامترونه [spec] دي. دا باید له دې څخه یو وي: {"kind":"bundle"}، {"kind":"deploy","words":n,"public_words":m} یا {"kind":"call","tier":t,"bytes":b,"gas":g}. t باید 10، 12، 14، 16، 18 یا 20 وي. پایله: لږترلږه فیس په واحدونو، د متن په بڼه. د {"kind":"bundle"} فیس "1000000" دی. public_words (اختیاري، اصلي ارزښت 0) هم د کوډ په څېر په هره کلمه تادیه کیږي، نو فیس د n + m کلمو د ځای پرځای کولو فیس دی. bytes (اختیاري، اصلي ارزښت 0) د غوښتنې د ثبوت اوږدوالی جمع د هغې د ننوتو د لفافې اوږدوالی دی.
د غوښتنې بیه د rand_getLimits په gas_metering پورې اړه لري:
"circuit"، داسې زنځیر چې خپلهgasبرخه لري، لکه chain 20.gasد ګاز هغه حد دی چې د غوښتنې ثبوت یې اعلانوي، او اړین دی: که نه وي، غوښتنه دا ځواب ورکوي:-32602under the gas section a call estimate needs its gas. ځواب1,000,000 + gas_price × gas + byte_price × ⌈bytes / 1024⌉دی، د سر د بلاک په اوسنیو بیو. همدا بیېrand_getLimitsوړاندې کوي. د chain 20 په 100 او 800 لږترلږه بیو، هغه غوښتنه چې 20,479 ګاز اعلانوي او 1,300,000 بایټه ثبوت او لفافه لري،"4063900"کیږي. بیې په هر بلاک کې بدلیږي، نو اټکل د لېږلو مهال ته نږدې وکړئ."header"، د نوډ په کچه د ګاز پالیسي په داسې زنځیر چې دا برخه نه لري. د غوښتنې مشخصاتkeccak_log_heightاوsha256_log_heightهم مني (اختیاري، اصلي ارزښت 0). هر یو باید له 0 تر 40 وي، که نه نو-32602. دا د هش جدولونو هغه لوړوالي دي چې د ثبوت سرلیک یې اعلانوي. ځواب د لیجر د طبقې د لږترلږه فیس او د هغه سرلیک د ګاز د لږترلږه فیس څخه لوی یو دی. دgasبرخې لاندې دا دوه لوړوالي منل کیږي خو نه کارول کیږي.null، هېڅ یو. یوازې د لیجر د طبقو جدول کارول کیږي: که غوښتنه په وړیا اندازه (2,097,152 + 18,432 بایټه) کې یا لاندې وي، د خپلې طبقې فیس ورکوي. له دې اندازې هر اضافي KiB، چې نیمګړی KiB هم بشپړ شمېرل کیږي، 1,000 واحده زیاتوي.
له v0.6.8 راهیسې {"kind":"invoke", …, "created_cells": c} د RPL-2 د invoke بیه ټاکي. دا د غوښتنې د مشخصاتو ټولې ساحې لري او created_cells هم (اختیاري، اصلي ارزښت 0، تر max_writes پورې، که نه نو -32602). دا هغه خونې دي چې لېږد به یې جوړې کړي. هره خونه د زنځیر cell_fee (rand_getLimits.program_state) زیاتوي. غوښتونکی یې پخپله شمېري: هر هغه لیکنه چې غیر صفري ارزښت داسې خونې ته ولیکي چې rand_getProgramCell یې صفرونه لولي. په chain 20 کې پورتنۍ غوښتنه له دوو جوړو شویو خونو سره "24063900" کیږي. په هغه زنځیر کې چې program_state برخه نه لري، دا ډول -32602 ځواب ورکوي.
فیسونه بشپړ جدول لري.
ډنډ
rand_getTreeInfo
پارامترونه []. پایله { "next_index": 41, "root": "6b1d…c4", "nullifiers": 12 } ده: د پاڼو شمېر، اوسنۍ ریښه او دا چې څو یادښتونه لګول شوي دي.
rand_getCommitments
پارامترونه [from_index] یا [from_index, limit]. پایله: له from_index څخه د پاڼو یوه پاڼګه، تر ټولو زړې لومړۍ. هره پاڼګه تر 1,000 قطارونو زیاته نه وي، که limit هر څومره لوی وي.
[ { "index": 40, "cm": "2a9f…07", "height": 37,
"envelope": { "kem_ct": "b41c…", "to_receiver": "77e0…", "to_sender": "0c31…", "body": "9dd2…" } } ]
rand_getNullifiers
پارامترونه [from_height] یا [from_height, limit]. پایله: هر باطلوونکی چې له هغه لوړوالي وروسته خپور شوی، په همغه 1,000 قطاري حد. پاڼګه کېدای شي د یوه لوړوالي په منځ کې ودریږي، نو له هغه تر ټولو لوړ لوړوالي څخه چې لیدلی مو دی، بیا پیل وکړئ.
[ { "height": 37, "nullifier": "8c04…d1" }, { "height": 41, "nullifier": "12be…9a" } ]
rand_getCompactBlocks
پارامترونه [from_height, to_height]، دواړه اړین دي. پایله: د هر بلاک لپاره یو قطار، تر ټولو زوړ لومړی. هر قطار یوازې هغه څه لري چې سپک والټ ورته اړتیا لري:
[ { "height": 192, "hash": "63f6…08", "timestamp_ms": 1788000123456,
"commitments": [],
"transactions": [
{ "hash": "4f2c…e7",
"commitments": [ { "index": 40, "cm": "2a9f…07", "envelope": { "kem_ct": "…", "to_receiver": "…", "to_sender": "…", "body": "…" } } ],
"nullifiers": ["8c04…d1", "5e77…20", "03aa…6f", "e19b…42"] } ] } ]
دلته هر هغه لېږد چې بنډل لري څلور یادښتونه او څلور باطلوونکي لري: دا د هغه څلور ځایونه دي، د ډکولو ځایونه هم پکې شامل دي، او هېڅ لوستونکی یې له اصلي ځایونو نشي بېلولی. (په بېلګه کې یوازې د ژمنې لومړی قطار ښودل شوی.) له v0.6.8 راهیسې ځینې لېږدونه له دې څلورو وروسته نور یادښتونه هم لري. invoke د هرې تادیې لپاره یو یادښت لري، لومړی pays او بیا mints. هر یو د خپلې تادیې خپله لفافه لري، نو تادیه ترلاسه کوونکی یې د ازمایښتي رمزګشایي له لارې پیدا کوي. په هغه زنځیر کې چې د پل فیسونه لري، لکه chain 20، bridge_burn د خزانې د فیس یادښت لري، او bridge_attest له خپل زېرمه کولو وروسته د فیس یادښت لري. د فیس د یادښت لفافه خالي ده او هېچا ته نه ده سیل شوې: د خزانې والټ دا یادښت د لېږد له عامه ساحو بیا جوړوي.
په هره غوښتنه کې تر ټولو زیات 128 بلاکونه راکول کیږي (پراخه لړۍ لنډیږي). له لومړي بلاک وروسته، چې تل بشپړ راکول کیږي، تر ټولو زیات 1,000 یادښتونه راکول کیږي. له وروستي راستون شوي height جمع یو څخه بیا پیل وکړئ. د بلاک په کچه commitments لړۍ په 0 لوړوالي کې د پیدایښت زېرمې لري او په نورو ځایونو کې خالي ده. د Withdraw او BridgeAttest مشتق یادښتونه د خپل لېږد لاندې ښکاري. شاته لړۍ یا ورک حد -32602 ځواب ورکوي.
rand_getAnchor
د سر لپاره پارامترونه [] دي، یا [height]. پایله { "height": 192, "root": "6b1d…c4" } ده. هغه لوړوالی چې ثبت شوی لنګر نه لري -32001 ځواب ورکوي. یوازې د بلاک د پای ریښې لنګرونه دي. نوډ کېدای شي د زاړه لوړوالي ځواب هم ورکړي، خو د بنډل لنګر یوازې هغه وخت منل کیږي چې د وروستیو proof_window_blocks ریښو څخه یو وي: په chain 20 کې 1,024، او تر chain 19 پورې په زنځیرونو کې 256. د سر پر بنسټ جوړ کړئ.
rand_getWitness
پارامترونه [index]. که شمېره د ونې له پای څخه تېره وي، پایله null ده. که نه، د هغې پاڼې Merkle لار، له پاڼې څخه پیل، په سمه توګه 32 کچې، د ونې له اوسنۍ ریښې سره:
{ "index": 40, "root": "6b1d…c4", "path": ["0000…00", "f2a1…3b", "…"] }
دا تر ټولو ګرانه لوستنه ده چې نوډ یې وړاندې کوي (د 32 ژوروالي بشپړه ونه بیا جوړوي). همدا یوازینۍ غوښتنه ده چې د غوښتونکي په اړه یو څه افشا کوي. نوډ په یو وخت کې تر ټولو زیات دوه د ونې بیا جوړونې چلوي، rand_getWitness او rand_getWitnesses په ګډه. هغه غوښتنه چې د ځای لپاره له 10 s زیات انتظار وکړي، په -32000 witness builds are busy on this node; retry shortly ردیږي.
rand_getWitnesses
پارامترونه [[index, …]]، له 1 تر 32 د پاڼو شمېرې. پایله { "root": "…", "witnesses": [ { "index": 7, "path": ["…"] }, { "index": 9, "path": null } ] } ده. دا rand_getWitness دی چې په یوه د ونې جوړونه کې په ډېرو پاڼو اجرا کیږي، نو هغه والټ چې د څو یادښتونو ثبوت جوړوي، د بیا جوړونې بیه یوازې یو ځل ورکوي. که شمېره د ونې له پای څخه تېره وي، هغه ننوتنه path: null لولي. خالي لېست یا له 32 زیاتې شمېرې -32602 ځواب ورکوي.
د کتلو کیلي او افشا کول
rand_importViewingKey
پارامترونه [viewing_key] یا [viewing_key, rescan_from_height] دي. کیلي باید 64 hex توري وي. پایله { "imported": true, "rescan_from_height": 0, "viewing_keys": 3 } ده. نوډ کیلي یوازې په حافظه کې ساتي: په هر نوډ کې تر ټولو زیات 64، چې د بیا پیلېدو پر مهال پاکیږي. که کیلي دمخه ساتل شوې وي، څه نه کیږي ("imported": false). واردول هېڅکله سکن نه کوي؛ سکن راتلونکی میتود پرمخ وړي. ناسمه کیلي -32602 ځواب ورکوي، او 65مه کیلي -32000.
د کتلو د کیلي درې واړه میتودونه یوازې لوپبک غوښتونکي ته ځواب ورکوي او بل هر چا ته په -32000 انکار کوي. یوازې هغه وخت استثنا ده چې نوډ له --rpc-viewing-open سره د داسې یو شي ترشا چلیږي چې هویت تاییدوي. rand_removeViewingKey ([viewing_key] → { "removed": bool, "viewing_keys": n }) یو ځای خالي کوي او کیلي صفر کوي. ثبتول د کیلي د یوه یو اړخیز پېژند پر بنسټ ساتل کیږي، blake3("rand-viewing-registry-id-1" ‖ nk)، هېڅکله د پخپله کیلي پر بنسټ نه. نو واردول یوازینۍ اوږدمهاله کاپي ده او لرې کول یې پاکوي. د غوښتنې خپل JSON متن او هغه لنډمهاله کاپي چې ازمایښتي رمزګشایي یې جوړوي نه پاکیږي.
rand_getViewingNotes
پارامترونه [viewing_key] یا [viewing_key, from_index, limit] دي (د limit اصلي ارزښت او حد 1,000 دی). هره غوښتنه د کیلي سکن تر 10,000 پاڼو پورې مخکې بیایي، بیا پاڼګه وړاندې کوي:
{ "scanned_index": 10041, "next_index": 10041, "complete": true,
"notes": [
{ "index": 40, "cm": "2a9f…07", "height": 37, "role": "received",
"note": { "pk": "…", "from": "…", "amount": "1500000000", "asset": 0, "time": 5, "memo": "coffee" },
"nullifier": "8c04…d1", "spent": false },
{ "index": 43, "cm": "b310…88", "height": 39, "role": "sent",
"note": { "pk": "…", "from": "…", "amount": "25000000", "asset": 0, "time": 9, "memo": null },
"nullifier": null, "spent": null } ] }
role یا received دی (لفافه د ترلاسه کوونکي په توګه پرانیستل شوې او یادښت د کیلي pk نوموي)، یا sent (د وتونکي کتلو د کیلي له لارې پرانیستل شوې). د یادښت memo د لېږونکي کوډ شوې یادونه ده: UTF-8 متن، تر 510 بایټو زیات نه. که یادونه نه وي، یا یې ساحه ناسمه پرانیستل شوې وي، ارزښت null دی. ناسمه یادونه هېڅکله د تادیه ترلاسه کوونکي یادښت له منځه نه وړي. یادونه هر چا لیکلې کېدای شي: د باور وړ متن یې مه ګڼئ. هغه کیلي چې دې نوډ نه وي وارده کړې -32001 ځواب ورکوي.
rand_checkTransaction
پارامترونه [hash, key] دي. key د هر لېږد لپاره یو TxKey دی، 64 hex توري. ناپېژندل شوی هش null ځواب ورکوي. که نه، پایله هغه څه دي چې کیلي یې افشا کوي:
{ "tx": "4f2c…e7", "height": 192,
"disclosed": [ { "output": "bundle:0", "cm": "2a9f…07", "index": 40,
"note": { "pk": "…", "from": "…", "amount": "1500000000", "asset": 0, "time": 5, "memo": "invoice 7" } } ] }
بېحالته: کیلي له غوښتنې سره سم له منځه ځي. output د بنډل د څلورو وتونکو ځایونو لپاره bundle:0 … bundle:3 دی (ځایونه 0–1 د خصوصي شتمنۍ وتونکي، ځایونه 2–3 د RAND وتونکي، جعلي ځایونه هم پکې شامل دي)، deposit د پل د تصدیقنامې د زېرمې د لفافې لپاره، token_mint د یوه TokenMint د نوټ لپاره، initial_mint د یوه RegisterToken د لومړني مینټ لپاره، mint:0 د فاسیټ د مینټ د یوازینۍ لفافې لپاره، او (v0.6.8) payout:0 … payout:3 د هغو نوټونو لپاره چې یو invoke ورکړي دي، د لېږد په ترتیب شمېرل شوي، لومړی pays او بیا mints. asset_bundle:* د دویم بنډل سره لرې شوی دی. په هغه ځنځیر کې چې د پل فیس لري، deposit خالصه زېرمه پرانیزي، یعنې ټوله اندازه منفي فیس. ښکاره شوی note خپل asset له ځانه سره لري: دا غوښتنه، د هغې کیلي سره چې لېږونکي پرې مهر لګولی، یوازینی ځای دی چې RPC پکې ښيي یو لېږد کومه شتمني لېږدولې ده. دا memo هم لري، لکه څنګه چې rand_getViewingNotes یې لري: هغه کیلي چې نوټ پرانیزي، یادښت هم له همغه مهر شوي متن څخه پرانیزي. ناسمه کیلي { "disclosed": [] } راګرځوي، چې له هغې معاملې نه بېلېدای نه شي چې هېڅ نه ښيي. د یوه withdraw او د genesis د alloc لفافې نه ازمویل کېږي: هغوی د نوډ دننه د داسې کیلیو لاندې مهر شوې دي چې سمدلاسه له منځه ځي، نو د هغوی لپاره هېڅ TxKey نشته. د فاسیټ د مینټ لفافه ازمویل کېږي: ترلاسه کوونکی یې کیلي د لفافې د KEM نیمایي له لارې بېرته ترلاسه کوي (rand tx-key).
معاملې
rand_getTransaction
پارامټرونه [hash]. پایله تر ثبت پورې null ده، بیا:
{
"height": 192, "index": 0, "block_hash": "63f6…08",
"tx": {
"hash": "4f2c…e7", "chain_id": 20,
"bundle": { "anchor": "6b1d…c4",
"nullifiers": ["8c04…d1", "5e77…20", "03aa…6f", "e19b…42"],
"commitments": ["2a9f…07", "b310…88", "77c1…0e", "5d20…b3"],
"fee": "1000000", "burn_a": "0", "burn_r": "0", "burn_asset": 0, "time": 5,
"proof_len": 1490435, "envelope_len": [1860, 1860, 1860, 1860],
"auth_commit": "9217…ee9e", "auth_proof_bytes": 1361161 },
"action": { "kind": "none" }
}
}
bundle په بېبنډله کړنو کې null دی. ثبوتونه او لفافې یوازې د اوږدوالي له مخې راپور کېږي. envelope_len په chain 20 کې د هر ځای لپاره 1,860 دی، چې genesis یې د نوټ لفافه په همدې اندازه ټاکلې ده (envelope_bytes په rand_getLimits کې). په chains 14 تر 17 کې 1,348 و. auth_commit او auth_proof_bytes د وېشل شوې اجازې (له chain 17 راهیسې) دي: عامه ژمنه c = H(AUTH, nk, salt) چې د بنډل ثبوت او د اجازې ثبوت دواړه یې خپروي، او د اجازې د ثبوت اوږدوالی. په هغه ځنځیر کې چې hc_auth نه لري، دوی صفرونه او 0 دي.
bundle د پټې شتمنۍ بنډل دی (له chain 14 راهیسې): څلور ننوتونکي ځایونه او څلور وتونکي ځایونه، نو تل څلور nullifiers، څلور commitments او څلور envelope_len، جعلي ځایونه هم پکې شامل. هره معامله تر ډېره یو بنډل لري؛ دویم بنډل نشته. دا هېڅ asset ساحه نه لري: ځایونه 0–1 یوه خصوصي شتمني وړي او ځایونه 2–3 RAND، او هېڅ عامه شی نه وايي چې ځایونو 0–1 کومه شتمني لېږدولې ده. د RAND لېږد او د هر RPL ټوکن لېږد دواړه "kind": "none" دي، چې burn_a، burn_r او burn_asset یې ټول 0 دي — یو شان بڼه، ساحه په ساحه. هېڅ token_transfer ډول نشته. درې د سوځولو ساحې د بنډل یوازینی عامه بیان دی چې د خوندي حوض څخه د ارزښت د وتلو په اړه دی:
burn_a/burn_asset— د خصوصي شتمنۍ سوځول شوې اندازه، او کومه شتمني. پهtoken_burnیاbridge_burnکې غیر صفر دي، چې هلته د کړنې لهamountاوassetسره برابر دي، او په هغهinvokeکې چېinflowیېdepositیاburnوي.burn_r— سوځول شوی RAND. پهbondکې غیر صفر دی (لهamountسره یې برابر)، پهregister_aggregatorکې، او په هغهinvokeکې چې RAND د پروګرام په خزانه کې زېرمه کوي.fee— د RAND فیس، تل له ځایونو 2–3 څخه.
د کړنو وړاندې کول (هر amount، relayer_fee او initial_amount لسیز string دی؛ د ټوکن اندازې د هغه په خپلو واحدونو کې دي، نه د RAND په واحدونو):
| ډول | ساحې |
|---|---|
none | — |
mint | cm، amount، minter (د تاییدوونکي base58) |
deploy | program، words، public_words_len |
call | program، proof_len، input_envelope_len (null کله چې غوښتنه هېڅ نه لري) |
bond | validator، amount، registered |
unbond | validator، amount، nonce |
withdraw | validator، amount، nonce، time |
bridge_attest | attestation_len، recipient، asset، asset_index، amount، time، r، commitment، pq_signers (د ګډو لاسلیک کوونکو ساتونکو شاخصونه په pq_guardians کې؛ 2,420 بایټه لاسلیکونه نه وړاندې کېږي). د ساتونکو د ټولګي د بدلون لپاره asset_index، amount او commitment null دي. r مشتق شوی دی، blake3("rand-deposit-r-1" ‖ mu) د هغه digest پر سر چې ساتونکو لاسلیک کړی. له v0.6.8 راهیسې deposit_amount هم (د زېرمه کوونکي نوټ: amount، هغه ټوله اندازه چې ساتونکو لاسلیک کړې، منفي د پل فیس) او fee_note ({ amount, asset, time, r, commitment }، د خزانې نوټ پرته له خاوند څخه، یا د پل فیس نشتوالي کې null)؛ commitment د خالصې زېرمې پاڼه ده |
bridge_burn | asset، amount، relayer_fee، to_chain، token (هغه ملاتړ چې بېرته اخیستل کېږي)، to. یو بنډل ټوله سوځونه وړي: د هغه burn_asset او burn_a د کړنې asset او amount دي. له v0.6.8 راهیسې release_amount هم (هغه څه چې لاسلیک شوی متن یې خوشې کوي، amount منفي د پل فیس) او fee_note، لکه په attest کې |
register_token | name، symbol، decimals، authority ("none"، "key"، "bridge" یا "program")، index، initial_amount، initial ({ amount, recipient, time, r } یا null) |
token_mint | asset، amount، recipient، time، r، nonce |
set_authority | asset، nonce، new_authority (base58، یا د صلاحیت د پرېښودو لپاره null) |
token_burn | asset، amount؛ د بنډل burn_asset / burn_a یې تکراروي |
pause_mints | nonce؛ بېبنډله او بېفیسه، د genesis د ځنډولو د کیلي لخوا لاسلیک شوی |
unpause_mints | nonce، pq_signers؛ بېبنډله او بېفیسه |
register_bridged_token | name، symbol، salt، chain، token، decimals (د لومړي ملاتړ د سرچینې لسیزونه)، nonce، asset_id، pq_signers |
list_backing | token_index، chain، token، decimals، nonce، pq_signers |
rotate_pq_guardians | new_pq_guardians، nonce (لګول شوی rotation_nonce)، pq_signers (د بدلون نه مخکې د PQ ټولګي شاخصونه)؛ بېبنډله او بېفیسه، یوازې د پل rules_v2 ځنځیرونه |
rotate_pause_key | new_pause_key، nonce، pq_signers؛ همدا ډول |
rotate_pq_guardians_v2، rotate_pause_key_v2 | v0.6.8: د v1 ساحې، او په PQ بڼه کې possession_signatures (یو شمېر). بېبنډله او بېفیسه؛ په هغه ځنځیر کې اړین دي چې د genesis bridge.rotation یې needs_possession ټاکي، لکه د chain 20. بدلون delay_secs وروسته اغېز کوي (په chain 20 کې 86,400 s) |
cancel_rotation | v0.6.8: rotation_kind ("pq_guardians" یا "pause_key")، nonce؛ د اوسنۍ ځنډولو کیلي لخوا لاسلیک شوی، یو ځنډېدلی بدلون لرې کوي |
admit_validator | v0.6.8: candidate (پته)، candidate_key (hex)، voters (پتې). بېبنډله او بېفیسه: د تاییدوونکو د ټولګي رایه چې یوه نوې کیلي ته د نوم لیکنې اجازه ورکړي، په هغه ځنځیر کې چې staking.admission_by_vote لري، لکه chain 20 |
slash_equivocation | v0.6.8: offender، view، first او second ({ hash, height })؛ یوازې هغه ځنځیرونه چې staking.slashing لري، چې chain 20 یې نه لري |
invoke | v0.6.8، RPL-2: د یوې غوښتنې ساحې (program، proof_len، input_envelope_len) او د هغې transition (لاندې). یوازې هغه ځنځیرونه چې program_state برخه لري، لکه chain 20 |
register_aggregator، unbond_aggregator، withdraw_aggregator، slash_aggregator، aggregate | د هغوی عامه ساحې؛ یوازې د راټولولو ځنځیرونه |
claim_vested، revoke_vesting، bond_vested، unbond_vested | entry (hex)، amount (په revoke کې unvested)، nonce؛ په claim یا revoke کې time؛ په bond کې validator او registers؛ له v0.6.8 راهیسې په revoke کې signers (د هغې د لاسلیک کوونکو ځایونه د entry په revokers کې). بېبنډله؛ یوازې هغه ځنځیرونه چې د genesis vesting برخه لري، چې chain 20 یې نه لري |
د ټوکن نوم لیکنه او مینټونه عامه دي، لکه څنګه چې د پل زېرمه ده: د مینټ شوي نوټ هره کلمه په کړنه کې ده (د هغه from د ځنځیر ټاکلی MINT_FROM دی)، نو ترلاسه کوونکی نوټ له همدې ساحو څخه پرته له کوم رمزګشایي بېرته جوړوي. د ډول stringونه bridge_attest، token_mint، register_token او invoke هغه څه دي چې د والټ سکن پرې تکیه کوي او د یوې ازموینې لخوا ثابت ساتل شوي دي.
د chain 20 په 3,079 لوړوالي کې یو invoke، چې یو حجره یې ولوستله، ړنګه یې کړه، او له خزانې یې دوه نوټونه ورکړل:
{ "kind": "invoke", "program": "aaaf…4b21", "proof_len": 1433874, "input_envelope_len": null,
"transition": {
"reads": [{ "key": "0100…fa98", "value": "0000000004000000…00000000" }],
"writes": [{ "key": "0100…fa98", "value": "0000000000000000000000000000000000000000000000000000000000000000" }],
"inflow": "none",
"pays": [{ "asset": 0, "amount": "1000000000", "recipient": "rand1…", "time": 3027, "r": "87e6…9a67", "cm": "2555…6487" },
{ "asset": 4, "amount": "2000000000", "recipient": "rand1…", "time": 3027, "r": "b833…f390", "cm": "2b70…f204" }],
"mints": [] } }
دا ټول په قصدي ډول عامه دي. reads هغه حجرې دي چې پروګرام لوستې، د هغو ارزښتونو سره چې یې لوستي: ثبوت د هغوی پر وړاندې جوړ شوی، او لیجر معامله ردوي مګر دا چې دا ارزښتونه لا هم پاتې وي. writes هغه حجرې دي چې یې لیکلې؛ د 64 صفرونو لیکل شوی ارزښت حجره ړنګوي. د حجرې کیلي یا ارزښت یو Word8 دی. هغه څه چې راننوتل د بنډل دي: burn_r هغه RAND دی چې د پروګرام په خزانه کې زېرمه شوی، او د burn_asset څخه burn_a هغه ټوکن دی چې inflow یې نوموي، په خزانه کې deposit یا burn (د پروګرام خپل ټوکن)، او کله چې burn_a 0 وي none. هغه څه چې ووتل د هر ورکړې لپاره د ځنځیر لخوا محاسبه شوی یو نوټ دی، لومړی له خزانې څخه pays، بیا د هغه ټوکن mints چې د مینټ صلاحیت یې همدا پروګرام دی. د هر نوټ هره کلمه دلته د token_mint د ساحو د نومونو لاندې ده؛ time د بنډل دی، cm هغه پاڼه ده چې ځنځیر ورزیاته کړې، او د نوټ from د ځنځیر ټاکلی PROGRAM_FROM دی. د پروګرام اته وتونکې کلمې په رسید کې دي، لکه څنګه چې د یوې غوښتنې وي.
د لېږد هېڅ ځواب لېږونکی، ترلاسه کوونکی، nonce، اندازه یا شتمني نه لري: په زېرمه شوي لېږد کې داسې ساحه نشته.
rand_getRawTransaction
پارامټرونه [hash]. پایله: بشپړه ثبت شوې معامله د bincode hex په بڼه، د ثبوت بایټونو سره — هغه څه چې یو راټولوونکی ورته اړتیا لري او rand_getTransaction یې هېڅکله نه وړاندې کوي.
پروګرامونه او رسیدونه
rand_getProgram
پارامټرونه [program_id]. پایله null یا { "id", "base_pc", "words_len", "code_hash", "deployed_at", "public_words_len", "public_digest" }. هېڅ deployer ساحه نشته: د deploy لګښت د یوه بنډل لخوا ورکول کېږي. public_words_len د پروګرام د deploy د وخت د عامه ننوتنې اوږدوالی دی (که نه وي 0)؛ public_digest د هغې digest دی، هغه ارزښت چې د هرې غوښتنې ثبوت ورسره تصدیق کېږي، یا که نه وي null.
rand_getProgramCode
پارامټرونه [program_id]. پایله null یا { "base_pc": 0, "words": [ … ] }.
rand_getProgramPublic
پارامترونه [program_id]. پایله: د پروګرام د ځای پر ځای کېدو د وخت عامې کلمې د یوه شپاړسیز متن په توګه، هره کلمه د خپلو 4 little-endian بایټونو په بڼه (هره کلمه 8 شپاړسیز رقمونه): [1, 2, 0xdeadbeef] له "0100000002000000efbeadde" سره برابر دی. هغه پروګرام چې بې عام ننوتي ځای پر ځای شوی وي، "" ورکوي؛ هغه پېژند چې هېڅ پروګرام یې نه لري، null ورکوي. کوم والټ چې د یوې غوښتنې ثبوت جوړوي، دا کلمې ثبوت جوړوونکي ته ورکوي؛ لیجر د ثبوت ژمنه د پروګرام له public_digest سره پرتله کوي.
rand_getProgramCell
v0.6.8، RPL-2. پارامترونه [program_id, key]؛ کیلي یو Word8 دی چې 64 شپاړسیز رقمونه لري (له 0x سره یا پرته). پایله { "key": "<64 hex>", "value": "<64 hex>" }. هغه سیل چې پروګرام هېڅکله پکې نه وي لیکلي، یا یې صفرونه پکې لیکلي وي (چې سیل ړنګوي)، د 64 صفرونو په توګه لوستل کېږي، چې د «نشتوالي» یوازینۍ بڼه ده؛ همدا حکم د هغه پروګرام هرې کیلي ته هم دی چې هېچا نه وي ځای پر ځای کړی، ځکه د پروګرام شتون نه کتل کېږي. په هغه ځنځیر چې program_state برخه نه لري، { "enabled": false } ورکوي. سیل په قصدي ډول عام دی: والټ همدا لولي څو د یوه invoke reads جوړ کړي.
rand_getProgramCells
v0.6.8. پارامترونه [program_id, { "after": "<64 hex>" | null, "limit": n }]؛ اعتراض اختیاري دی. پایله { "cells": [{ "key", "value" }, …], "next": "<64 hex>" | null }: د پروګرام سیلونه د کیلي په ترتیب (د اتو کلمو بېنښې پرتله)، له after وروسته پیلېږي او تر ټولو ډېر limit دانې (له 1 تر 1,000 پورې محدودېږي). کله چې نور هم پاتې وي، next وروستۍ وړاندې شوې کیلي ده؛ هغه بېرته د after په توګه ورکړئ. په وروستي مخ کې null دی. هغه پروګرام چې هېڅ سیل نه لري، { "cells": [], "next": null } ځواب ورکوي؛ له دې برخې پرته { "enabled": false }.
rand_getProgramVault
v0.6.8. پارامترونه [program_id]. پایله [{ "asset": 0, "amount": "123" }, …]، د شتمنۍ د شاخص په پورتهتلونکي ترتیب (0 RAND دی، هر بل شاخص د ټوکن د ثبت دفتر شاخص دی)، اندازې د لسیزو متنونو په توګه د هرې شتمنۍ په خپلو واحدونو. صفر قطار نه شته، نو تشه خزانه او هغه پروګرام چې هېچا نه وي ځای پر ځای کړی، دواړه [] دي. له دې برخې پرته { "enabled": false }. ارزښت د یوه invoke د بنډل له لارې خزانې ته ننوځي (burn_r، او د burn_asset burn_a کله چې inflow deposit وي) او د هغو نوټونو په توګه وځي چې د لېږد pays یې نوموي.
rand_getLimits
پارامترونه []. پایله: هغه څه چې والټ د لېږد د جوړولو لپاره د ځنځیر له جنیسیس څخه ورته اړتیا لري: د غوښتنې پنځه حدونه، د نوټ د پاکټ اندازه، د v0.6 سویچ، د تصدیق ګیسټ، د ګاز شرطونه او، له v0.6.8 راهیسې، د audit-v6 د جنیسیس ساحې او د پروګرام د حالت حدونه. په 20م ځنځیر کې:
{ "max_program_words": 65535, "max_proof_bytes": 4194304, "max_block_bytes": 20971520,
"max_call_envelope_bytes": 65536, "max_program_public_words": 32768,
"envelope_bytes": 1860, "hardening_v6": true,
"hc_auth": "1e4e347f44cf86750b30a9a4bdf9ec9256efe353d4ff8017451eca7d195639c1",
"gas_metering": "circuit", "gas_price": "100", "byte_price": "800",
"bundle_gas_limit": 20479, "adjust_bps": 1250,
"max_gas_price": "10000", "max_byte_price": "80000", "byte_load": "paying",
"admission_by_vote": true, "testnet": true, "slashing": null, "binding_domain": 1,
"proof_window_blocks": 1024,
"program_state": { "cell_fee": "10000000", "max_reads": 8, "max_writes": 8, "max_payouts": 4 } }
هغه جنیسیس چې پنځه د حد ساحې نه لري (12م ځنځیر)، 4096، 2097152، 4194304، 18432 او 0 ترلاسه کوي. max_proof_bytes په 13م تر 15م ځنځیرونو کې 8,388,608 و.
| ساحه | مانا |
|---|---|
envelope_bytes | 1860 کله چې جنیسیس هر نوټجوړوونکی پاکټ په سمه همدې اوږدوالي ټاکي، چې د یادښت لرونکې بڼه ده؛ null په هغه جنیسیس چې دا ساحه نه لري (14م تر 17م ځنځیرونه)، چېرې چې والټ د 1,348 بایټه پاکټ بې یادښته مهروي. بل هېڅ ارزښت نه شته |
hardening_v6 | true کله چې جنیسیس د v0.6 د اعتبار قواعد چلوي. بیا والټ غوښتنه د پروګرام پر عام ننوتي او ورپسې د لېږد د غوښتنې پر تړون ثابتوي، نه یوازې پر عام ننوتي: لومړی د فیس د بنډل نوټونه ټاکل کېږي، دوهم غوښتنه ثابتېږي، او وروستی بنډل. هغه ځنځیر چې دا نښه لري، زوړ ثبوت ردوي، او هغه چې یې نه لري، نوی |
hc_auth | هغه د تصدیق ګیسټ چې جنیسیس یې ټاکي، شپاړسیز، یا null. که ټاکل شوی وي، hc_bundle د بنډل ګیسټ v3 دی او هر بنډل auth_commit او د تصدیق ثبوت لري: والټ د بنډل ګیسټ ته nk او یو تازه مالګه ورکوي، او د تصدیق ګیسټ د لګښت پر کیلي ثابتوي |
gas_metering | "circuit" په هغه ځنځیر چې جنیسیس یې gas برخه لري (د سرکټ دننه میټر)؛ "header" په هغه ځنځیر چې دا برخه نه لري کله چې نوډ خپله د ګاز پالیسي چلوي (--gas-price، --byte-price)؛ null کله چې هېڅ یو نه وي |
gas_price, byte_price | واحدونه د هر ګاز لپاره، او واحدونه د غوښتنې د ثبوت او ننوتي پاکټ د هر KiB لپاره، د لسیزو متنونو په توګه. د gas برخې لاندې دا د اجماع حالت دی او په هر نوډ کې یو شان دی: له gas.dynamic سره، لکه په 20م ځنځیر کې، د سر اوسني بیې، چې په هر بلاک کې د ډکوالي له مخې بدلېږي، هېڅکله د جنیسیس له لاندیني حد (100 او 800) څخه نه ښکته کېږي او هېڅکله له پورتني حد څخه نه اوړي؛ له هغې پرته د برخې ثابتې بیې. له برخې پرته دا د همدې نوډ خپله پالیسي ده، او دوه نوډونه ښايي بېل ځوابونه ورکړي |
bundle_gas_limit | هغه ثابت ګاز چې د هر بنډل ثبوت باید اعلان یې کړي، د جنیسیس له gas برخې څخه؛ له هغې پرته null |
adjust_bps | د متحرک کنټرولر په یوه بلاک کې د بیې تر ټولو لوی بدلون، په بنسټیزو ټکو؛ په هغه ځنځیر چې gas.dynamic نه لري، null |
max_gas_price, max_byte_price | v0.6.8: هغه پورتني حدونه چې کنټرولر هېڅکله بیه ترې نه پورته کوي، لسیز متنونه؛ په 20م ځنځیر کې "10000" او "80000"، او null چېرې چې جنیسیس هېڅ نه ټاکي (18م او 19م ځنځیرونه) |
byte_load | v0.6.8: "paying" کله چې یوازې د غوښتنې ثبوت او ننوتی پاکټ byte_price بدلوي، نو د لېږدونو بلاک هېڅ نه بدلوي، لکه په 20م ځنځیر کې؛ null چېرې چې د هر لېږد بایټونه حسابېږي (18م او 19م ځنځیرونه) |
admission_by_vote | v0.6.8: آیا هغه ضمانت چې د نوي اعتبارسنج کیلي ثبتوي، لومړی د اعتبارسنجانو د ډلې رایې ته اړتیا لري (rand_getAdmitted)؛ په 20م ځنځیر کې true |
testnet | v0.6.8: د جنیسیس testnet نښه، چې فاسټ ته اجازه ورکوي د پل له برخې سره یو ځای وي؛ په 20م ځنځیر کې true، او له هغه مخکې په هر ځنځیر کې false |
slashing | v0.6.8: { "equivocation_bps", "jail_epochs" }، د مشر د دوهګوني رایې بیه، یا null؛ په 20م ځنځیر کې null |
binding_domain | v0.6.8: 0 چېرې چې د لېږد تړون او هر لاسلیک شوی د عمل پیغام یوازې د ځنځیر پېژند تړي (14م تر 19م ځنځیرونه)، 1 چېرې چې د جنیسیس هش هم ورسره وي، نو هغه ثبوت یا لاسلیک چې د یوه ځنځیر لپاره جوړ شوی، په بل هېڅ ځنځیر نه تاییدېږي (20م ځنځیر). والټ د دې پرېکړه چې کومه بڼه ثابته کړي، د ځنځیر د پېژند له مخې کوي، هېڅکله د دې ځواب له مخې نه: د v0.6.8 rand والټ 14 تر 19 د ځنځیر پېژندونو ته د ځنځیر-پېژند بڼه او هر بل پېژند ته د جنیسیس-تړلې بڼه ورکوي، او دا یوازې د دې لپاره لولي چې ژر یې رد کړي. له v0.6.8 څخه زوړ والټ په 20م ځنځیر کې نه شي لېږلی |
proof_window_blocks | v0.6.8: د بنډل لنګر په بلاکونو څومره زوړ کېدای شي او د هغه time د لوړوالي څخه څومره شاته پاتې کېدای شي، دواړو ته یوه کړکۍ؛ په 20م ځنځیر کې 1024، او تر 19م ځنځیر پورې null (256). هغه والټ چې ورو یا سپارل شوی ثبوت جوړوونکی لري، دا لولي څو پوه شي چې ثبوت څومره وخت نیولی شي |
program_state | v0.6.8، RPL-2: د جنیسیس program_state برخه او د هغې د invoke حدونه، یا null، چې په دې حالت کې هر invoke ردېږي او هېڅ د پروګرام ټوکن نه شي ثبتېدای. cell_fee د RAND هغه واحدونه دي (لسیز متن) چې د یوه invoke د فیس لاندینی حد د هر هغه سیل لپاره زیاتوي چې جوړوي یې، یعنې په داسې سیل کې د غیرصفري ارزښت لیکل چې د صفرونو په توګه لوستل کېږي؛ بیا لیکل، ړنګول یا د صفرونو لیکل هېڅ لګښت نه لري. max_reads، max_writes او max_payouts (تادیې او ټکالې یو ځای) کلک حدونه دي. په عمل کې د برخې قاعده لومړی پلي کېږي: د لېږد د شرایطو کلمې (11 + 16 د هر لوستلو یا لیکلو لپاره + 3 د هرې تادیې لپاره) باید د پروګرام د عام ننوتي او 8 د تړون کلمو تر څنګ ځای شي، پرته له دې چې د zkVM عام جدول لوی شي؛ د هغه پروګرام لپاره چې عام ننوتی نه لري، دا جدول 128 قطارونه دی، چې 119 د شرایطو کلمې پرېږدي |
هغه نوډ چې له یوې ساحې مخکې جوړ شوی وي، بې له هغې ځواب ورکوي. په دې ځواب کې هېڅ شی تصدیق شوی نه دی، نو والټ envelope_bytes یوازې د نوډ په خبره نه مني: rand والټ په 14 تر 17 د ځنځیر پېژندونو کې زوړ پاکټ مهروي، که نوډ هر څه ځواب ورکړي، او نور مراجعین هم باید همداسې وکړي.
rand_getReceipt
پارامترونه [tx_hash]. پایله تر هغه null ده چې غوښتنه ثبته شوې نه وي، بیا { "tx", "program", "tier": 14, "outputs": [1, 0, 25, 0, 0, 0, 0, 0], "height": 17, "index": 0, "h_in": "9c0e…7f", "h_pub": null }. د effect ساحه نه شته. h_pub د پروګرام د ځای پر ځای کېدو د وخت د عام ننوتي ډایجسټ دی چې د غوښتنې ثبوت ورسره پرتله شوی، او د هغه پروګرام لپاره چې عام ننوتی نه لري null. یو invoke (v0.6.8) د غوښتنې رسید لري، او rand_getReceipts او د receipts موضوع یې بې بدلونه لېږدوي.
rand_getReceipts
پارامترونه [program_id, from_height, to_height, limit?]. پایله { "receipts": [ … ], "next_height": 2051 }: د program_id رسیدونه له from_height <= height <= to_height سره، لومړی د لوړوالي او بیا د شاخص له مخې، هر یو په سمه د rand_getReceipt اعتراض. limit په ډیفالټ ډول 256 دی او له دې نه شي اوړېدای، او هېڅکله یو لوړوالی نه وېشي: کله چې یو مخ limit رسیدونه ولري، بیا هم د همغه لوړوالي پاتې رسیدونه وړاندې کوي. next_height لومړنی هغه لوړوالی دی چې نه دی وړاندې شوی، یا null کله چې to_height مخ پای ته رسولی وي. که to_height له from_height څخه ټیټ وي، -32602.
rand_getCallEnvelope
پارامترونه [tx_hash]. پایله null، یا { "tx", "h_in", "kem_ct", "to_sender", "to_auditor", "body" } په شپاړسیز ډول — د غوښتنې مهر شوی د ننوتو ریکارډ، لکه څنګه چې دی وړاندې کېږي؛ نوډ هېڅ داسې کیلي نه لري چې پرانیزي یې. null کله چې غوښتنې هېڅ نه وي خپور کړی (--no-envelope)، لېږد غوښتنه نه وي، یا رسید نه وي.
سټیکینګ او عرضه
rand_getValidators
پارامترونه []. پایله: د ثبت د هر ننوتي لپاره یو قطار، د پتې په ترتیب، اندازې د لسیزو متنونو په توګه:
[{ "address": "…", "stake": "1000000000000",
"pending": [{ "release_epoch": 41, "amount": "5000000000" }],
"rewards": "4000000", "payout": "rand1…", "nonce": 3, "active": true, "jailed_until": null }]
jailed_until (v0.6.8) هغه لومړۍ دوره ده چې جریمه شوې کیلي بیا په یوه ډله کې کېدای شي (18446744073709551615 د تل لپاره)، او null کله چې بندي نه وي. 20م ځنځیر staking.slashing نه لري، نو هلته تل null دی.
rand_getAdmitted
v0.6.8. پارامترونه []. پایله { "admission_by_vote": true, "max": 256, "admitted": ["<address>", …] }: هغه کیلي چې د تاییدوونکو ټولګې د AdmitValidator له لارې ورته رایه ورکړې او لا یې نوم نه دی ثبت کړی، د پتې په ترتیب. په هغه زنځیر کې چې جینیسس یې staking.admission_by_vote ټاکي، لکه د chain 20 جینیسس، هغه Bond چې نوې کیلي ثبتوي باید د دوی له جملې څخه وي. max دا ښيي چې لیجر په یو وخت کې څو کیلي ساتلی شي. په هغه زنځیر کې چې دا بیرغ نه لري، admission_by_vote د false دی، لیست تل تش وي او ثبت ته رایه نه اړینه ده. Chain 20 په 2026-10-01 ځواب ورکړ: "admitted": [].
rand_getEpoch
پارامترونه []. پایله { "epoch": 41, "epoch_blocks": 1000, "next_set": ["…", "…"] }؛ next_set یوه اټکل شوې وړاندوینه ده.
rand_getSupply
پارامترونه []. پایله:
{ "height": 1998,
"genesis_deposited": "…", "genesis_staked": "…", "faucet_minted": "…",
"faucet_epoch": "…", "faucet_minted_in_epoch": "…",
"withdraw_deposited": "…", "fees_paid": "…", "burned": "…",
"subsidised": "…", "sealed_blocks": "…", "aggregator_bonds": "…", "slashed": "…",
"registration_fees_burned": "…",
"vesting_issued": "…", "vesting_released": "…", "vesting_in_register": "…", "vesting_locked": "…",
"program_rand_out": "…", "program_rand_held": "…",
"pool_value": "…", "register_total": "…", "total_supply": "…", "invariant_holds": true }
subsidised، sealed_blocks، aggregator_bonds او slashed یوازې د راټولونې په زنځیر کې بدلېږي. faucet_epoch او faucet_minted_in_epoch د نل د هر دور شمېرونکی دی چې د staking.faucet_budget_per_epoch پر وړاندې سنجول کېږي (په chain 20 کې د اجماع حالت). څلور vesting_* ساحې د جینیسس د تدریجي آزادېدو شمېرونکي دي، او په هغه زنځیر کې چې vesting برخه نه لري، لکه chain 20، ټول "0" دي. program_rand_out او program_rand_held (v0.6.8، RPL-2؛ پرته له program_state برخې "0") هغه RAND دي چې invoke ګانو د پروګرام له خزانو څخه د یادښتونو په بڼه ورکړي (د حوض اړخ، د pool_value دننه) او هغه چې خزانې لا هم ساتي (د راجستر اړخ، د total_supply دننه)؛ دا RAND د یو invoke د burn_r له لارې ننوتي، نو د حوض په اړخ کې د burned دننه دي. registration_fees_burned د ټوکن د ثبت د هغو فیسونو Σ دی چې د جینیسس tokens.burn_registration_fee له مخې سوځول شوي، چې chain 20 یې ټاکي؛ invariant_holds دا، له slashed سره یوځای، له هغه څه کموي چې زنځیر صادر کړي. عرضه دا مساوات تشریح کوي.
rand_getEmission
پارامترونه []. پایله { "inflation": "0", "subsidy": null, "faucet": true }. inflation یو ثابت "0" دی. subsidy د بلاکونو د راټولونې مهالوېش دی (current، base، halving_blocks، sealed_blocks، next_halving_at)، او په هغه زنځیر کې چې aggregation برخه نه لري، لکه chain 20، null دی. faucet د rand_status انعکاس دی.
پل
دا څلور واړه په هر زنځیر کې ځواب ورکوي؛ په هغه زنځیر کې چې bridge برخه نه لري، حالت { "enabled": false } دی او راجستر [] دی. د chain 20 جینیسس یوه برخه لري: د ساتونکو ټولګه 1 (guardian_set_index 1) له اتو ساتونکو سره، اته PQ ساتونکي، د درولو یوه کیلي، په جینیسس کې burn_sequence 13، د تکرار لاندینی حد (min_inbound_sequence د سرچینې زنځیرونو 2، 3 او 4 لپاره 3، او د سرچینې زنځیر 5 لپاره 7)، د پل rules_v2 چې په هر 24 ساعته کړکۍ کې د ټولو پشتوانو لپاره د 4,000 zUSD نړیوال حد لري، او دوه نوې ډلې چې په v0.6.8 کې راغلې: rotation (د PQ ساتونکو یا د درولو د کیلي بدلون د نویو کیلیو د ملکیت ثبوت ته اړتیا لري او له ثبتېدو 86,400 s وروسته اغېزمن کېږي) او fees (د هر زېرمه کولو 10 bps او د هرې سوځونې 10 bps، چې په Rand کې د یوه zUSD یادښت په بڼه د خزانې یوې پتې ته ساتل کېږي). Chain 19 burn_sequence 8، د 1 او 4 لاندیني حدونه درلودل، او هېڅ یوه ډله یې نه درلوده. د دې tokens برخه د 1 RAND registration_fee (سوځول کېږي)، د هرې پشتوانې لپاره د 10000000000000 mint_cap_per_day (په اتو اعشاریو 100,000 zUSD) لري او پخپله zUSD لیست کوي: په جینیسس کې له chain 14 څخه راوړل شوی، همغه asset id، شاخص 1، اوه پشتوانې.
rand_getBridgeState
پارامترونه []. پایله { "enabled": false }، یا:
{
"enabled": true,
"emitter": "01…",
"emitters": { "2": "02…" },
"guardian_set_index": 0,
"guardians": ["aabb…"],
"pq_guardians": ["…"],
"mint_paused": false,
"pause_nonce": 0,
"list_nonce": 0,
"pause_key": "…",
"registration_fee": "1000000000",
"burn_sequence": 1,
"rotation_nonce": 0,
"rules_v2": { "global_mint_cap_per_window": "…", "cap_window_secs": 86400,
"global_minted_in_window": "…", "global_mint_headroom": "…" },
"min_inbound_sequence": { "2": 2, "3": 2, "4": 2, "5": 2 },
"rotation_rules": { "delay_secs": 86400, "needs_possession": true },
"pending_rotations": [],
"fees": { "mint_bps": 10, "burn_bps": 10, "recipient": "rand1…" },
"assets": [ … ]
}
| ساحه | مانا |
|---|---|
emitter | د دې زنځیر د وتونکو پیغامونو د خپروونکي پته، 32 بایټه hex |
emitters | د سرچینې زنځیر id → هلته د باور وړ خپروونکي پته |
guardians | د اوسنۍ ټولګې 20 بایټه پتې، hex |
pq_guardians | د PQ ټولګه: د Dilithium2 عامې کیلي (1,312 بایټه)، hex، د ساتونکو له اوسنۍ ټولګې سره د شاخص له مخې برابرې (په chain 20 کې ټولګه 1). هر BridgeAttest د دې ټولګې د ګډو لاسلیکونو یو نصاب لېږدوي. د ساتونکو د ټولګې بدلون یې هېڅکله نه خوځوي؛ یوازې rotate_pq_guardians یې خوځوي، په rules_v2 زنځیر کې |
mint_paused | تر هغه چې true وي، هر انتقالي attest د bridge minting is paused سره ردېږي؛ سوځونې او بدلونونه خلاص پاتې کېږي |
pause_nonce | هغه څه چې راتلونکی درول یا بیا پیلول یې باید ولېږدوي؛ دواړه یې زیاتوي |
list_nonce | هغه څه چې راتلونکی register_bridged_token یا list_backing یې باید ولېږدوي؛ دواړه یې زیاتوي |
pause_key | د Dilithium2 هغه یوازینۍ کیلي چې ضرب درولی شي، hex. دا یوازې درولی شي: بیا پیلول د PQ ساتونکو نصاب ته اړتیا لري |
registration_fee | هغه څه چې یو RegisterBridgedToken د بنډل له اساسي فیس پرته پور لري، د RAND په واحدونو، یو اعشاري تار |
burn_sequence | تر اوسه خپاره شوي وتونکي پیغامونه |
rotation_nonce | هغه څه چې راتلونکی rotate_pq_guardians / rotate_pause_key یې باید ولېږدوي |
rules_v2 | د ضرب نړیوال حد او د هغه ښوېدونکې کړکۍ، یا په هغه زنځیر کې چې د پل v2 قواعد نه لري null. د دې قواعدو لاندې د هرې پشتوانې حد هم ښوېدونکې کړکۍ ده، او تر هغه چې ضرب درول شوی وي لیست کول ردېږي. له v0.6.8 راهیسې دا global_minted_in_window او global_mint_headroom هم لېږدوي، اعشاري تارونه |
min_inbound_sequence | د جینیسس د تکرار لاندینی حد: د سرچینې زنځیر id → تر ټولو ټیټه ترتیبي شمېره چې له هغه زنځیر څخه یو انتقال یې لېږدولی شي، ساده عددونه؛ په هغه زنځیر کې چې دا نه لري (chain 15 او تر هغه مخکې) null. له دې ټیټ bridge_attest د BelowReplayFloor سره ردېږي، چې دایمي پرېکړه ده. یو رېلې کوونکی دا لولي ترڅو هغه قفل پرېږدي چې هغه زنځیر چې دا ترې جلا شوی دی مخکې ضرب کړی |
rotation_rules | v0.6.8: { "delay_secs", "needs_possession" } د جینیسس له bridge.rotation څخه، یا null. د دې لاندې بدلون د _v2 عمل دی، د نویو کیلیو د ملکیت لاسلیکونه لېږدوي، او تر اغېزمن کېدو مخکې delay_secs انتظار کوي |
pending_rotations | v0.6.8: هغه بدلونونه چې ثبت شوي او لا اغېزمن شوي نه دي، هر یو { "kind": "pq_guardians", "new_pq_guardians", "effective_at_secs" } یا { "kind": "pause_key", "new_pause_key", "effective_at_secs" }؛ پرته له rotation_rules څخه null. یو cancel_rotation چې د درولو د اوسنۍ کیلي په واسطه لاسلیک شوی وي، یو یې لغوه کوي |
fees | v0.6.8: { "mint_bps", "burn_bps", "recipient" } د جینیسس له bridge.fees څخه، یا null (chains 14 تر 19). زنځیر د هر زېرمه کولو او هرې سوځونې دا برخه، د پشتوانې د آزادولو بشپړ واحد ته ښکته ګردې شوې، د یوه zUSD یادښت په بڼه recipient ته ساتي. یو زېرمه کول ناخالص مقدار منهای فیس اعتبار کوي؛ د یوې سوځونې لاسلیک شوی بدنه خپل مقدار منهای فیس آزادوي. یوه بټوه دا لولي ترڅو د خپل زېرمه کولو ارزښت وټاکي او، کله چې پخپله recipient وي، خپل د فیس یادښتونه بیا جوړ کړي |
assets | د rand_getAssets قطارونه |
بیلانسونه نشته: د پل له لارې راغلی ارزښت یادښتونه دي. نور next_index نشته: د پل یو ټوکن مخکې له دې چې زېرمه شي، د هغه شاخص لاندې لیست کېږي چې ثبت یې دمخه ټاکلی، نو د وړاندوینې لپاره هېڅ شاخص نه پاتې کېږي. د لیست شوي ټوکن شاخص له assets یا rand_getTokens څخه ولولئ.
rand_getAssets
پارامترونه []. پایله: د پل د شتمنیو راجستر، د شاخص له مخې صعودي، یا []:
[{ "index": 1, "chain": 2, "token": "aaaa…", "asset_id": "…", "decimals": 6, "locked": "600",
"mint_cap_per_day": "10000000000000", "minted_today": "1000", "mint_day": 20350,
"minted_in_window": "1000", "mint_window_secs": 86400, "mint_headroom": "390000000000" }]
له v0.6.8 راهیسې د پشتوانې هر قطار، دلته او هر چېرې چې پشتوانې وړاندې کېږي (rand_getBridgeState.assets، د rand_getToken، rand_getTokens او rand_getTokenSupply backings)، minted_in_window (یو اعشاري تار) او mint_window_secs لېږدوي، چې دواړه د ورځني شمېرونکي په زنځیر کې null دي، او mint_headroom هم: تر ټولو لوی زېرمه کول چې حدونه یې د سر بلاک په وخت کې هغې پشتوانې ته منلی شي، یعنې د هرې پشتوانې حد منهای هغه څه چې ضرب کړي یې دي او، د v2 قواعدو لاندې، له هغه څه زیات نه چې د ټول راجستر کړکۍ ته پاتې دي. mint_headroom ولولئ، نه mint_cap_per_day − minted_today، چې نړیوال حد له پامه غورځوي. د v2 قواعدو لاندې، لکه په chain 20 کې، minted_today د ښوېدونکې کړکۍ شمېر دی، هغه شمېره چې د هرې پشتوانې حد ورسره سنجول کېږي؛ لاندې د ورځني شمېرونکي تشریح د chain 14 ده.
د هرې پشتوانې (سرچینې سکې) لپاره یو قطار، نو یو ټوکن له اوو پشتوانو سره د یوه index لاندې اوه قطارونه دي. index هغه asset کلمه ده چې د هغې شتمنۍ یادښت یې لېږدوي؛ شاخص 0 RAND دی او هېڅکله په راجستر کې نه وي. decimals د پشتوانې د سرچینې اعشاریې دي. locked، mint_cap_per_day او minted_today د ټوکن د خپلو اتو اعشاریو په واحدونو اعشاري تارونه دي، هېڅکله د RAND په واحدونو نه؛ mint_day یو ساده عدد دی، د UTC د ورځې شمېره. mint_cap_per_day د جینیسس tokens.mint_cap_per_day دی، هغه تر ټولو زیات مقدار چې یوه پشتوانه یې د بلاک د وخت په هره UTC ورځ کې ضربولی شي. minted_today هغه څه دي چې پشتوانې په mint_day کې ضرب کړي، چې د سر بلاک UTC ورځ ده (timestamp_ms / 86,400,000)، نو د پخوانۍ ورځې پاتې شمېرونکی هغه وخت "0" لوستل کېږي چې سر له نیمې شپې واوړي. له حد څخه زیات زېرمه کول د MintCapExceeded سره ردېږي او بله ورځ د منلو وړ کېږي. chain او token هغه سیمي هویت دی چې ساتونکي یې په اړه لاسلیک کوي؛ asset_id د دې دواړو blake3 دی، هغه څه چې rand_bridgeAssetId یې محاسبه کوي.
rand_bridgeAssetId
پارامترونه [token_chain, token_address] (عدد، 32 بایټه hex). پایله: د شتمنۍ id، 64 hex توري. خالص حساب.
rand_getBridgeBurn
پارامترونه [sequence]. پایله null یا { "sequence": 0, "body_hex": "…", "digest": "…", "tx": "…", "height": 2, "amount": "…", "release_amount": "…", "fee": "…" }.
وروستۍ درې د v0.6.8 دي، په هر زنځیر کې، د ټوکن د اتو اعشاریو په واحدونو اعشاري تارونه. release_amount هغه مقدار دی چې لاسلیک شوی بدنه یې لېږدوي، پخپله له body_hex څخه لوستل کېږي: هغه څه چې د سرچینې قرارداد یې آزادوي، او له هغه څخه د بدنې د رېلې کوونکي فیس ورکوي. fee د پل هغه فیس دی چې زنځیر د خزانې د یادښت په بڼه ساتلی، او amount هغه څه دي چې بنډل سوځولي، release_amount + fee. پرته له bridge.fees څخه (chains 14 تر 19) fee د "0" دی. په chain 20 کې ترتیبي شمېره 13، د 0.999 zUSD سوځونه: "amount": "99900000"، "fee": "99900"، "release_amount": "99800100".
ټوکنونه (RPL)
د RPL ټوکنونو راجستر: هر ټوکن، د پل له لارې راغلی او اصلي. ټوکنونه دا معیار تشریح کوي.
rand_getTokens
پارامترونه [from_index, limit]، دواړه اختیاري (0 او 1000؛ limit تر 1,000 پورې محدودېږي). پایله: راجستر له from_index څخه د شاخص له مخې صعودي، له هغه شاخص څخه د سلسلې له مخې لوستل شوی:
{ "enabled": true, "registration_fee": "1000000000", "next_index": 3, "max_tokens": 4096,
"burn_registration_fee": true, "bound_note_value": true,
"tokens": [
{ "index": 2, "id": "<64 hex>", "id_text": "rpl1…", "name": "Test Coin", "symbol": "TST",
"decimals": 6,
"authority": { "kind": "key", "key": "<Dilithium2 key, hex>", "address": "<base58>" },
"mint_nonce": 1, "total_supply": "5700", "registered_at": 3 }
] }
په هغه chain کې چې tokens برخه نه لري: { "enabled": false, "tokens": [] }. index هغه asset کلمه ده چې د ټوکن هر نوټ يې له ځان سره لري (0 RAND دی او هېڅکله په لست کې نه راځي). id د ټوکن د asset پېژندنه ده او id_text يې د checksum لرونکې متني بڼه: bech32m، HRP rpl، د پېژندنې پر 32 بايټونو، 62 توري. authority له دې څخه يو دی:
kind | نور فيلډونه |
|---|---|
none | — (ثابته عرضه، يا پرېښودل شوې) |
key | key، address |
bridge | backings: [{ "chain", "token", "decimals", "locked", "mint_cap_per_day", "minted_today", "mint_day" }]، د rand_getAssets فيلډونه، د هر ملاتړ لپاره يو قطار |
program | program |
عرضې، locked، mint_cap_per_day، minted_today او registration_fee لسيز متنونه دي (د registration_fee لپاره د RAND په واحدونو، او نور د ټوکن په واحدونو)؛ next_index، mint_day او max_tokens شمېرې دي. max_tokens پر راجسټر باندې د genesis سقف دی (په chain 20 کې 4,096؛ که سقف نه وي null)، او له هغه وروسته راجسټرېشن د RegistryFull په ځواب رد کېږي. burn_registration_fee ښيي چې آيا د راجسټرېشن فيس سوځول کېږي که وړاندیز کوونکي ته ورکول کېږي؛ bound_note_value ښيي چې آيا د 2⁶³ يا له هغه پورته mint يا deposit د اعتبار قاعده ده (د منلو پړاو يې په هر chain کې بې له استثنا ردوي). درې واړه په chain 20 کې فعال دي. هغه پاڼه چې له limit څخه لنډه وي، وروستۍ ده.
د program واک ({ "kind": "program", "program": "<id>" }) يوازې په هغه chain کې د راجسټر وړ دی چې program_state برخه ولري، لکه chain 20 (v0.6.8): ټوکن له صفر عرضې پيلېږي، او يوازې د همغه پروګرام invokes يې mint يا burn کولای شي.
والټ د ټوکن پېژندنه د همدې لست له لارې پېژني، هېڅکله د rand_getToken له لارې نه: د لېږد asset په chain کې پټ دی، او د ټول راجسټر لوستل يو شان لګښت لري، هر ټوکن چې مطلب وي.
rand_getToken
پارامټرونه [token]: د راجسټر index (شمېره يا لسيز متن)، د 64-hex پېژندنه (له 0x سره يا پرته، هر ډول توري) يا د rpl1… متني بڼه (ټول کوچني يا ټول لوی توري). پايله: د هغه ټوکن د rand_getTokens قطار، يا null. ناسمه پېژندنه — غلط checksum، بل HRP، غلط اوږدوالی، ګډ توري، يا غير hex — -32602 ده، نو يوه ټايپي تېروتنه هېڅکله بل ټوکن نه کېږي. د يو ټوکن ځانګړې پوښتنه نوډ ته ښيي چې غوښتونکی کوم ټوکن ته پاملرنه لري؛ دا د explorers او يو ځلي لوستنو لپاره ده.
rand_getTokenSupply
پارامټرونه [token]، په همغو بڼو. پايله null، يا:
{ "total_supply": "600",
"backings": [{ "chain": 2, "token": "<32 bytes hex>", "decimals": 6, "locked": "600",
"mint_cap_per_day": "10000000000000", "minted_today": "1000", "mint_day": 20350 }] }
د اصلي ټوکن لپاره backings تش دی؛ د bridge شوي ټوکن لپاره د locked مقدارونو مجموعه له total_supply سره برابره ده. د محرمیت همغه يادونه چې د rand_getToken لپاره ده، دلته هم صدق کوي.
د بلاکونو راټولونه (په chain 20 کې فعاله نه ده)
دا میتودونه په نوډ کې د هغو chains لپاره شته چې genesis يې aggregation برخه لري. په chain 20 کې راجسټر تش دی او هېڅ شی هېڅکله unsealed نه پاتې کېږي.
| میتود | پارامټرونه | پايله |
|---|---|---|
rand_getAggregate | [hash] | د sealing aggregate فيلډونه covers، aggregator، subsidy، proving_share، n، height؛ د هر بل transaction لپاره null |
rand_getAggregators | [] | د راټولوونکو راجسټر: په هر قطار کې address، bond، payout، nonce، unbonding |
rand_getUnsealed | [from, limit] | { "bundles": [{ "hash", "height", "excess" }], "next_from" }، هغه bundles چې راټولوونکی يې لا هم پوښلای شي |
Aggregate هم د نورو ټولو په څېر د rand_sendTransaction له لارې سپارل کېږي.
د genesis ويسټينګ (په chain 20 کې فعال نه دی)
دا میتودونه په نوډ کې د هغو chains لپاره شته چې genesis يې vesting برخه لري. تر اوسه هېڅ chain دا برخه نه لري: په chain 20 کې هر يو { "enabled": false } ځواب ورکوي. عامه endpoint دا میتودونه له 2026-10-01 راهيسې لېږدوي.
| میتود | پارامټرونه | پايله |
|---|---|---|
rand_getVesting | [id] يا [id, at_ms]، د ثبت 64-hex پېژندنه | ثبت: د هغه ټولګی، ګټه اخيستونکی، مهالوېش (amount، start_ms، cliff_ms، linear_ms، step_ms)، څومره چې ادعا شوي، لغوه شوي او bond شوي، او vested_now، claimable_now، unvested_now په as_of_ms کې (په ډيفالټ ډول د سر بلاک وخت)؛ د نامعلومې پېژندنې لپاره null. له v0.6.8 راهيسې د لغوه کېدو وړ ثبت revokers لستوي، د هغوی threshold چې لغوه کول ورته اړتيا لري او هغه treasury چې لغوه کول ورته پيسې ورکوي (دا د يوازيني revoker ځای نيسي)، او ثبت revoke_nonce او locked_now هم لري |
rand_getVestingSummary | [] | { "enabled": true, "height", "as_of_ms", "entries", "issued", "released", "locked", "classes": [ … ] }: د هر ټولګي مجموعې، پرته له کلي يا مالک |
rand_getVestingSchedule | [from_ms, to_ms, step_ms]، تر ټولو ډېر 1,000 ټکي | { "enabled": true, "issued", "points": [{ "t_ms", "locked" }] }: د وخت په اوږدو کې د راجسټر قفل شوې مجموعه |
مقدارونه لسيز متنونه دي. د ويسټينګ څلور کړنې د rand_sendTransaction له لارې سپارل کېږي.
ګډونونه (WebSocket)
ws://127.0.0.1:8545/ يا /ws. ساکټ يوازې rand_subscribe او rand_unsubscribe خدمتوي او هر بل شي ته -32601 ځواب ورکوي. درې موضوعګانې، خپلواک جريانونه چې ترمنځ يې د ترتيب هېڅ ژمنه نشته:
newHeads— دrand_getHeadبڼه، د هر committed بلاک لپاره يو ځل، په ترتيب، د sync پر مهال هم. دلتهviewد بلاک خپل view دی.receiptsياreceipts <program_id>— د هر هغه committed بلاک لپاره يو خبرتيا چې لږ تر لږه يو سمون لرونکی call receipt ولري:{ "height", "hash", "receipts": [ … ] }، هر receipt دrand_getReceiptپه بڼه.transaction <hash>— يو خبرتيا، بيا نوډ ګډون لرې کوي:{ "status": "committed", "height", "index" }، يا{ "status": "rejected", "reason" }د هغه رد لپاره چې د transaction د خپلو بايټونو په اړه وي (هماغه حد چېrand_getTransactionStatusيې لري). په حالت پورې تړلی رد هېڅکله نه اعلانېږي، نو له timeout سره يې يوځای کړئ.
{ "jsonrpc": "2.0", "id": 1, "method": "rand_subscribe", "params": ["newHeads"] }
{ "jsonrpc": "2.0", "id": 2, "method": "rand_unsubscribe", "params": ["1"] }
{ "jsonrpc": "2.0", "id": 3, "method": "rand_subscribe", "params": ["receipts", "<program_id>"] }
{ "jsonrpc": "2.0", "id": 4, "method": "rand_subscribe", "params": ["transaction", "<hash>"] }
{ "jsonrpc": "2.0", "id": 1, "result": "1" }
{ "jsonrpc": "2.0", "id": 2, "result": true }
{ "jsonrpc": "2.0", "method": "rand_subscription",
"params": { "subscription": "1", "result": { "height": 1998, "hash": "…", "view": 2251 } } }
حدونه: په هر نوډ 64 اتصالونه (65م د upgrade پر مهال د 503 سره ردېږي)، په هر اتصال 8 ګډونونه، د پېرېدونکي په هر frame کې 64 KiB، هر 30 s يو ping چې په 5 s کې ځواب شي، او په هر جريان کې د 256 ثبتونو شاته پاتې کتار — هغه ګډونوال چې په هغه جريان کې چې اوري تر دې ډېر شاته پاتې وي، د 1008 کوډ سره تړل کېږي، نه buffer کېږي؛ بيا وصل شئ او تشه د rand_getCompactBlocks (heads)، rand_getReceipts (receipts) يا rand_getTransactionStatus (يو transaction) په مرسته ډکه کړئ. ساده GET / پرته له upgrade headers څخه 400 ځواب ورکوي.
تېروتنې
| کوډ | مانا |
|---|---|
-32601 | نامعلوم میتود (په شمول د تقاعد شويو account میتودونو) |
-32602 | ناسم يا ورک پارامټر |
-32000 | رد شوی: هغه transaction چې mempool رد کړی، د faucet هغه غوښتنه چې د کچې محدوديت ته رسېدلې، د witness جوړونه چې تر 10 s ډېر يې انتظار کړی، تر 30 s اوږده لوستنه، هغه میتود چې عامه اورېدونکی يې نه خدمتوي، يا له سقف څخه زيات ګډون |
-32001 | ياد شوی شی و نه موندل شو |
-32010 | pruned: له دې نوډ د ساتنې له کښته حد څخه ټيټه لوړوالی؛ data.floor يې نوموي (لاندې وګورئ) |
-32603 | داخلي تېروتنه |
-32600 | ناسمه غوښتنه: د اندازې له حد څخه لوی body، غير JSON، ناسم batch، يا notification |
{ "jsonrpc": "2.0", "id": 1, "error": { "code": -32000, "message": "…" } }
د rand_sendTransaction لپاره يوازې -32000 او -32602 د transaction په اړه پرېکړه ده؛ د هر بل کوډ وروسته د هغه برخليک نامعلوم دی (rand_sendTransaction وګورئ).
pruned نوډونه: تېروتنه -32010
هغه نوډ چې د --prune-history <window> سره پيل شوی وي ټول ledger ساتي (نوټونه، nullifiers، anchors، راجسټر) خو د بلاکونو، transactions او receipts يوازې وروستۍ <window> ساتي؛ rand_status.prune_floor تر ټولو ټيټ لوړوالی دی چې لا يې هم ساتي. په chain 20 کې له 26 تاييدوونکو څخه 24 يې --prune-history 24h چلوي؛ دوه آرشيفونه پرته له دې flag چلېږي او هر بلاک ساتي، او عامه endpoint يو ته لېږدوي.
- د لوړوالي له مخې، له کښته حد څخه ټيټ (genesis استثنا ده):
rand_getBlockByHeight، د لوړوالي له مخېrand_getFinality، او دrand_getBlocks،rand_getCompactBlocksياrand_getReceiptsهغه ساحه چې له کښته حد څخه ټيټه رسېږي،-32010pruned: height h is below this node's retention floor fدdata: { "floor": f }سره ځواب ورکوي. له آرشيف څخه وپوښتئ.[0, 0]لا هم genesis خدمتوي. - د hash له مخې:
rand_getBlockByHash،rand_getReceipt،rand_getRawTransaction،rand_getCallEnvelopeاوrand_getAggregateد pruned hash لپارهnullځواب ورکوي، لکه د هغه hash لپاره چې هېڅکله نه و موجود؛ يوازې آرشيف دا دواړه سره بېلولای شي.rand_getTransactionاوrand_checkTransactionهمnullځواب ورکوي، او-32010يوازې هغه مهال چې د ځای يو قطار پاتې وي چې له کښته حد څخه ټيټ لوړوالی نوموي.rand_getTransactionStatusپه pruned نوډ کې هرunknownثبت تهfloorورزياتوي. - د والټ سکن نه اغېزمن کېږي:
rand_getCommitments،rand_getNullifiers،rand_getAnchorاو د witness میتودونه هغه کورنۍ لولي چې هېڅکله prune نه کېږي.
transaction د wire پر سر
Transaction { chain_id: u64, bundle: Option<Bundle>, action: Action }
Bundle { // the hidden-asset bundle (since chain 14)
anchor: Word8, nullifiers: [Word8; 4], commitments: [Word8; 4],
fee: u64, burn_a: u64, burn_r: u64, burn_asset: u32, time: u32,
envelopes: [Envelope; 4], proof: Vec<u8>,
auth_commit: Word8, auth_proof: Vec<u8>, // since chain 17 (v0.6.3): split authorisation's c and
} // its proof; zeros and empty without hc_auth
Envelope { kem_ct: Vec<u8>, to_receiver: Vec<u8>, to_sender: Vec<u8>, body: Vec<u8> }
Action::None
Action::Mint { cm: Word8, pk: Word8, time: u32, r: Word8, envelope: Envelope, amount: u64,
minter: PublicKey, signature: Signature }
Action::Deploy { base_pc: u32, words: Vec<u32>, public: Vec<u32> }
Action::Call { program: Hash, proof: Vec<u8>, input_envelope: Option<CallEnvelope> }
Action::Bond { validator: Address, amount: u64, registration: Option<Registration> }
Action::Unbond { validator: Address, amount: u64, nonce: u64, signature: Signature }
Action::Withdraw { validator: Address, amount: u64, nonce: u64, time: u32, r: Word8,
envelope: Envelope, signature: Signature }
Action::BridgeAttest { attestation: Vec<u8>, recipient: ShieldedAddress, r: Word8, time: u32,
asset: u32, envelope: Envelope, pq_signatures: Vec<PqSignature> }
Action::BridgeBurn { asset: u32, amount: u64, relayer_fee: u64, to_chain: u16,
token: [u8; 32], to: [u8; 32] }
// the five aggregation variants sit here in the enum's declared order
Action::RegisterToken { name: String, symbol: String, decimals: u8, authority: MintAuthority,
initial: Option<InitialMint>, salt: [u8; 32], index: u32 }
Action::TokenMint { asset: u32, amount: u64, recipient: ShieldedAddress, r: Word8, time: u32,
envelope: Envelope, nonce: u64, signature: Signature }
Action::SetAuthority { asset: u32, new: Option<PublicKey>, nonce: u64, signature: Signature }
Action::TokenBurn { asset: u32, amount: u64 }
Action::PauseMints { nonce: u64, signature: Signature } // bundle-less, fee-less
Action::UnpauseMints { nonce: u64, pq_signatures: Vec<PqSignature> } // bundle-less
Action::RegisterBridgedToken { name: String, symbol: String, salt: [u8; 32], chain: u16,
token: [u8; 32], decimals: u8, nonce: u64,
pq_signatures: Vec<PqSignature> }
Action::ListBacking { token_index: u32, chain: u16, token: [u8; 32], decimals: u8, nonce: u64,
pq_signatures: Vec<PqSignature> }
Action::RotatePqGuardians { new_pq_guardians: Vec<PublicKey>, nonce: u64,
pq_signatures: Vec<PqSignature> } // bundle-less, fee-less
Action::RotatePauseKey { new_pause_key: PublicKey, nonce: u64,
pq_signatures: Vec<PqSignature> } // bundle-less, fee-less
// the four vesting variants (ClaimVested, RevokeVesting, BondVested, UnbondVested) follow, tags 24 to 27;
// since v0.6.8 RevokeVesting carries `signatures: Vec<RevokerSignature>` in place of one `signature`
Action::AdmitValidator { candidate: PublicKey, signatures: Vec<(PublicKey, Signature)> } // tag 28, v0.6.8
Action::SlashEquivocation { first: Box<SignedHeader>, second: Box<SignedHeader> } // tag 29
Action::RotatePqGuardiansV2 { new_pq_guardians: Vec<PublicKey>, possession: Vec<Vec<u8>>,
nonce: u64, pq_signatures: Vec<PqSignature> } // tag 30
Action::RotatePauseKeyV2 { new_pause_key: PublicKey, possession: Vec<u8>, nonce: u64,
pq_signatures: Vec<PqSignature> } // tag 31
Action::CancelRotation { kind: u8, nonce: u64, signature: Signature } // tag 32
Action::Invoke { program: Hash, proof: Vec<u8>, input_envelope: Option<CallEnvelope>,
transition: Transition } // tag 33, RPL-2
MintAuthority = None | Key(PublicKey) | Bridge { backings: Vec<Backing> } | Program(Hash)
InitialMint { amount: u64, recipient: ShieldedAddress, r: Word8, time: u32, envelope: Envelope }
Transition { reads: Vec<Cell>, writes: Vec<Cell>, inflow: Inflow, pays: Vec<Payout>, mints: Vec<Payout> }
Cell { key: Word8, value: Word8 } // keys strictly ascending in each list
Inflow = None | Deposit | Burn // what the bundle's burn_a of burn_asset is to the program
Payout { asset: u32, amount: u64, recipient: ShieldedAddress, r: Word8, envelope: Envelope }
Registration { public_key: PublicKey, payout: ShieldedAddress, signature: Signature }
CallEnvelope { kem_ct: Vec<u8>, to_sender: Vec<u8>, to_auditor: Vec<u8>, body: Vec<u8> }
PqSignature { index: u8, signature: Vec<u8> } // one guardian's Dilithium2 co-signature, by set index
د bincode ډيفالټ تنظيم: ثابت پلنوالي لرونکي integers، د اوږدوالي 8-بايټه مختاړي، او د u32 enum ټګونه د اعلان په ترتيب. د راټولونې پنځه ډولونه په enum کې له BridgeBurn وروسته او له RegisterToken مخکې راځي (Transactions)؛ chain 20 هېڅکله دا نه مني، نه د ويسټينګ څلور ډولونه او نه SlashEquivocation، خو هغه encoder چې د ټګونو شمېرې ثابتې ليکي، بايد لا هم دا وشمېري.
د bundle وروستي دوه فيلډونه له v0.6.3 او chain 17 سره راغلل. bincode په ځای پورې تړلی دی، نو هغه encoder چې د chain 16 يا تر هغه مخکې لپاره ليکل شوی، داسې transaction نه جوړوي چې دا chain يې decode کړي، او له دوی سره هر transaction id بدل شو: د id ډومېن اوس rand-txid-3 دی، چې auth_commit او د auth proof digest تړي. هغه پېرېدونکی چې ids په محلي ډول بيا محاسبه کوي، بايد ورسره بدلون ومني. په chain 20 کې هر bundle يو auth proof لري، که ځان ثابت شوی وي که سپارل شوی. v0.6.8 د Transaction يا Bundle په جوړښت کې هېڅ نه بدلوي؛ يوازې 28 تر 33 کړنې ورزياتوي.
هره معامله تر ټولو زیات یو بنډل لېږدوي. یو Bond داسې بنډل لېږدوي چې burn_r یې د هغه له amount سره برابر وي، او burn_a او burn_asset یې 0 وي. یو BridgeBurn یا یو TokenBurn د بنډل له لارې سوځول کوي: burn_asset باید د عمل asset وي (هېڅکله 0 نه)، burn_a د عمل amount، او burn_r باید 0 وي، په داسې حال کې چې fee له 2–3 سلاټونو څخه په RAND کې ورکول کېږي. نور هېڅ عمل هېڅ ټوکن نه سوځوي، او RAND تل یوازې د burn_r له لارې سوځول کېږي: هغه بنډل چې burn_asset یې 0 او burn_a یې له صفر پرته وي، هر ځای ردېږي. د یو BridgeAttest r له یو فورمول څخه لاسته راځي او په خپله خوښه نه ټاکل کېږي: د منلو لپاره blake3("rand-deposit-r-1" ‖ mu) اړین دی چې پر هغه ډایجسټ محاسبه کېږي چې ساتونکو لاسلیک کړی دی، او هر بل ارزښت ردوي (WrongDepositBlinding، چې دایمي رد دی). یو پل شوی ټوکن باید مخکې لېست شي، یا په جینیسیس کې، یا د یو RegisterBridgedToken / ListBacking له لارې، او یوازې وروسته یې هر تصدیق د منلو وړ کېږي. د هغې سکې تصدیق چې لېست شوې نه وي، په UnlistedToken ردېږي.
د هر بنډل ثبوت د هغې معاملې پر بنسټ جوړېږي او د هغې په وړاندې تاییدېږي چې په هغې کې لېږدول کېږي: ټوله معامله، چې ثبوتونه یې خالي شوي وي، د چین له id سره تړل کېږي، او په چین 20 (binding_domain: 1) کې د جینیسیس له هش سره هم، د نویو ټګونو لاندې. په 14 تر 19 چینونو کې تړاو یوازې د چین id و، نو هغه ثبوت چې د چین 19 لپاره جوړ شوی وي، په چین 20 کې نه تاییدېږي، او له v0.6.8 څخه زوړ والټ هلته معامله نشي لېږلی. په 18 تر 20 چینونو کې یو بنډل، پرته له خپلو دوو ثبوتونو، په 7,936 بایټونو کوډ کېږي او یوه د لېږد معامله، پرته له هغو، په 7,949 بایټونو (په 14 تر 16 چینونو کې په 5,848 او 5,861 بایټونو، د 1,348-بایټه پاکټونو سره او پرته د اجازې له ساحو). یو لېږد په شبکه کې د تولید په پروفایل کې شاوخوا 2.85 MB دی، چې نږدې ټول یې ثبوت دی: شاوخوا 1.49 MB د بنډل ثبوت او شاوخوا 1.36 MB د اجازې ثبوت. د اجازې له وېشلو مخکې دا شاوخوا 1.43 MB و.