Rand Protocol
لاسوندونه
لارښوونې

سټیکنګ

د validator ثبتول، د ټولګې په رایه منل کېدل، له والټ څخه د سټیک تړل، د سټیک خلاصول او ایستل، د تادیې پته، epochs، د سټیک د ثبتونو بودیجه، او دا چې ولې په ژوندي زنځیر کې slashing نشته.

تاسو دا پاڼه په یوه روانه chain کې د تایید کوونکو ټولګې ته د ورګډیدو، له هغې د وتلو او د راجستر د بیا لوستلو لپاره کاروئ. د اجماع وزن باید عامه وي، نو د تایید کوونکو راجستر په دې chain کې یوازینی جدول دی چې مقدارونه پکې ښکاره ساتل کېږي. سره له دې هم ونډه له یوه خوندي شوي نوټ څخه راوځي او بېرته یوه خوندي شوي نوټ ته ځي.

راجستر

د هر هغه تایید کوونکي لپاره چې کله یې هم ونډه تړلې وي یو قطار شته، چې کیلي یې د هغه base58 پته ده:

ValidatorEntry {
    public_key,                  // Dilithium2: signs blocks, and this validator's staking actions
    stake:    u64,               // bonded: the weight an epoch's set gives it
    pending:  Vec<(u64, u64)>,   // unbonding, as (release_epoch, amount), oldest first
    rewards:  u64,               // fees earned as a block proposer, unpaid
    payout:   ShieldedAddress,   // rand1… — where a withdraw pays
    nonce:    u64,               // replay protection for its signed actions
    activation_epoch: u64,       // under a `staking` section: the first epoch this row may be in a set
}

هره ساحه عامه ده او راجستر د هر بلاک د حالت په ریښه (state root) کې هش کېږي. هېڅ قطار نه ړنګېږي: هغه تایید کوونکی چې ټوله ونډه یې خلاصه کړې وي، یو قطار له stake = 0 سره ساتي.

ثابتارزښتمعنا
MIN_STAKE1,000 RANDهغه ونډه چې یو قطار یې د یوې دورې ټولګې ته د ورتګ لپاره لږ تر لږه اړتیا لري
MAX_VALIDATORS100تر ټولو لویه ټولګه چې یوه دوره یې لرلی شي
UNBONDING_EPOCHS2هغه دورې چې یو خلاص شوی مقدار یې د وېستلو تر وړتیا مخکې انتظار باسي
epoch_blocks1,000 په chain 20 کېپه هره دوره کې بلاکونه؛ د genesis یو پارامټر

دورې

epoch(h) = h / epoch_blocks. د دورې e ≥ 1 ټولګه له راجستر څخه د دورې e − 1 د وروستي بلاک تر حالته ترلاسه کېږي: هر هغه قطار چې stake ≥ MIN_STAKE ولري، د (stake descending, address ascending) له مخې لومړي MAX_VALIDATORS، چې د پتې له مخې ترتیب شوي وي. د یوې لید (view) مشر، د یوه بلاک رایه ورکوونکي او د یوه سند تایید ټول د هغې دورې ټولګه کاروي چې بلاک پکې شامل دی. دوه پایلې:

  • تړل شوې ونډه تر یوې وروستۍ پولې پورې وزن نه دی. دا سمدستي په راجستر کې ده، خو ټولګه یوازې په یوه پوله کې بدلېږي: په هغه chain کې چې staking برخه نه لري په راتلونکې پوله کې، او په chain 20 کې وروسته (لاندې).
  • خلاصول په راتلونکې پوله کې وزن کموي، په داسې حال کې چې مقدار دوه دورې انتظار باسي چې د وېستلو وړ شي. یو تایید کوونکی د وېستلو تر وړتیا ډېر مخکې د بلاکونو وړاندیز بندوي.

که یوه ترلاسه شوې ټولګه تشه وي، پخوانۍ ټولګه مخ ته وړل کېږي. هغه نوډ چې له --validator سره پیل شوی وي او کیلي یې په هېڅ اوسنۍ ټولګه کې نه وي، تر هغه وخته یوازې څارنه کوي چې یوه دوره یې ومني، نو هغه تایید کوونکی چې له genesis وروسته ونډه تړي بیا پیل ته اړتیا نه لري. rand_status بېل بېل is_validator (کیلي دلته ده) او active_validator (په اوسنۍ ټولګه کې ده) راپوروي.

د ونډې برخه

یو genesis کولی شي یوه staking برخه ولري (fullnode v0.5.4، audit v4 STAKE-2). پرته له هغې، پورته قواعد ټوله کیسه ده، لکه په chain 14 کې. له chain 15 راهیسې هره chain دا برخه لري. د chain 20 فعالې ځانګړنې:

"staking": {
  "faucet_budget_per_epoch": "10000000000000", "bond_activation_epochs": 2,
  "max_weight_bps": 3333, "max_stake_entry_bps_per_epoch": 2500,
  "admission_by_vote": true, "registration_v2": true,
  "faucet_recipients": ["rand1…", "…16 wallets…"],
  "faucet_minters": ["<validator address>", "…18 validators…"]
}
ساحهchain 20قاعده
bond_activation_epochs2هغه تړل شوې ونډه چې په دوره e کې پلي شي، د دورې e + 1 + 2 لپاره په کتار کې ږدل کېږي؛ نوې نوم لیکنه او زیاتونه دواړه همداسې. مقدار یې سمدستي په stake کې دی خو تر هغه وخته وزن نه دی، او په کتار کې ونډه نه شي خلاصېدای
max_stake_entry_bps_per_epoch2,500 (25 %)تر ټولو ډېره ونډه، نوم لیکنې او زیاتونې یوځای، چې په یوه پوله کې وزن ګرځي، د هغه وزن د یوې برخې په توګه چې هلته دمخه فعال دی: ⌊active · bps / 10,000⌋. هغه وړ قطارونه چې له دې پولې تېر شي، د تړلو په ترتیب د راتلونکې پولې انتظار باسي. د chain 20 په 26,000 RAND فعاله ونډه، دا په هره پوله کې 6,500 RAND کېږي. د k پولو وروسته د یوه نوي ورګډېدونکي ونډه په هر پیمانه کې تر ټولو ډېره 1 − 1.25^−k ده، د دوو پولو وروسته شاوخوا درېیمه برخه
admission_by_votetrueهغه تړل شوې ونډه چې یوه نوې کیلي نوم لیکنه کوي (NotAdmitted) ردېږي تر څو هغه تایید کوونکي چې د رایې له دوو پر دریو ډېر وزن لري، کیلي ته د منلو رایه ورکړي (لاندې)؛ زیاتونه رایې ته اړتیا نه لري
max_weight_bps3,333د هېڅ تایید کوونکي وزن د خپلې ټولګې له ټول وزن څخه له 33.33 % نه زیاتېږي؛ اضافه برخه په ټولګه کې محدودېږي، او د راجستر stake نه بدلېږي
registration_v2trueنوم لیکنه پر genesis هش، د chain پېژندنه، د تایید کوونکي پته او د تادیې پته rand-register-2 لاسلیکوي؛ د v1 نوم لیکنه ردېږي
faucet_budget_per_epoch10,000 RANDfaucet په هره دوره کې تر ټولو ډېر همدومره جوړوي (له دې تېر FaucetBudgetExhausted؛ شمېرونکی په راتلونکې دوره کې بیا پیل کېږي)
faucet_recipients16 والټونهد faucet یو Mint یوازې دغو والټونو ته تادیه کوي (FaucetRecipientNotAllowed)؛ همدا لیست دی چې faucet ته اجازه ورکوي د bridge تر څنګ شتون ولري
faucet_minters18 تایید کوونکيد faucet یو Mint یوازې د دغو تایید کوونکو کیلیو په واسطه لاسلیک کېدی شي (MinterNotAllowed)، چې د منلو پر وخت او د بلاک د پلي کېدو پر وخت کتل کېږي، هر څومره چې بله کیلي ډېره موده تړل شوې وي. په chain 20 کې دوی د genesis له 26 تایید کوونکو څخه 18 دي. دا لیست له chain 16 راهیسې په هر genesis کې شته
slashingنشتهد جریمې (slashing) برخه نشته، نو هېڅ تایید کوونکی نه جریمه کېږي او نه بندېږي (څه عامه دي)

د دې برخې لاندې، د faucet شمېرونکی او د تړلو کتار د rand-state-5 په ډومین کې د حالت ریښې ته ورزیاتېږي، او د تایید کوونکي پاڼه rand-validator-leaf-4 ده. chain 20 متحرکې ګاز بیې او د RPL-2 پروګرام حالت هم لري چې له هغو وروسته ورزیاتېږي او ډومین یې rand-state-8 ته اړوي، او د رایې له لارې منل دا ریښه یو ځل بیا د H("rand-state-admitted-1", root ‖ admitted_root) په توګه رانغاړي. chain 15 د faucet_minters لیست نه درلود: هلته هر نوډ د faucet یو Mint یوازې هغه وخت په حوض کې ساته او مخ ته یې لېږه چې د genesis یوه تایید کوونکي لاسلیک کړی وای (MinterNotAllowed، د نوډ د پالیسۍ په توګه)، څو هغه تایید کوونکی چې له genesis وروسته یې ونډه تړلې وي، د حوض له لارې بودیجه تشه نه کړي. د لیست په شتون کې، همدا رد د اعتبار قاعده ده.

تاریخچه: chains 15 تر 19 admission_by_vote نه درلود، نو هره کیلي چې 1,000 RAND یې درلودل نوم لیکنه یې کولی شوه، او د ننوتلو بودیجه یې په هره پوله کې د 10,000 RAND د یوه ثابت max_stake_entry_per_epoch په توګه ټاکله. ثابته شمېره د یوه genesis لپاره اندازه کېږي؛ برخه (fraction) یو نوی ورګډېدونکی هماغې ونډې ته محدودوي، ونډه هر څومره چې وي. دواړه ساحې په یوه وخت نه شي ټاکل کېدای.

د رایې له لارې منل

په fullnode v0.6.8 (audit v6، STAKE-2) کې نوی دی او په chain 20 کې فعال دی. د 26 کیلیو سره چې هره یې 1,000 RAND لري، د ټولګې د بندوونکې درېیمې برخې لپاره شاوخوا 13,000 RAND پېرل شوې ونډه بسیا ده، او هېڅ شی نه جریمه کېږي. د دې قاعدې لاندې ټولګه پرېکړه کوي چې کومې نوې کیلي اصلاً نوم لیکنه کولی شي.

  • رایه یو عمل دی، AdmitValidator { candidate, signatures }، پرته له بنډل او پرته له فیس. هر لاسلیک د یوه تایید کوونکي Dilithium2 لاسلیک دی پر blake3("rand-admit-validator-1" ‖ genesis hash ‖ candidate address)، د رایه ورکوونکو د پتو په صعودي ترتیب. رایه ورکوونکي باید د رایې ورکوونکې ټولګې له وزن څخه په کلکه له دوو پر دریو ډېر ولري، چې د کورم سند (quorum certificate) حساب دی: په chain 20 کې له 26 تایید کوونکو 18. رایه یوه genesis پورې تړلې ده او nonce ته اړتیا نه لري: منل د هغې نوم لیکنې له خوا مصرفېږي چې اجازه یې ورکوي.
  • رایه ورکوونکې ټولګه د اوسنۍ دورې لپاره د راجستر خپله ترلاسه شوې ټولګه ده. په کتار کې تړل شوې ونډه په هغې کې وزن نه دی، او خلاصول سمدستي له هغې وځي. نوماند نه شي کولی ځان ته د منلو رایه ورکړي.
  • منل شوې ټولګه د اجماع حالت دی، تر ټولو ډېر 256 کیلي چې د نوم لیکنې انتظار باسي (له دې تېر AdmissionSetFull). rand_getAdmitted یې وړاندې کوي؛ rand_getLimits.admission_by_vote وايي چې ایا یوه chain رایې ته اړتیا لري.
# each voting validator, offline
rand-node admit sign --candidate <registration hex or public key> --key node.key.json --genesis-hash <hash>
# whoever collects the lines
rand-node admit submit --candidate <…> --signature <line> --signature <line> … --rpc http://127.0.0.1:8545

بیا د ونډې تړل لکه څنګه چې لاندې راغلي مخ ته ځي. rand_getGenesisHash هغه هش راګرځوي چې admit sign ورته اړتیا لري.

څلور کمانډونه

کوم باینري د کوم عمل خاوند دی، له دې معلومېږي چې کومه کیلي یې لاسلیکوي: د ونډې تړل نوټونه لګوي، نو د والټ کمانډ دی؛ خلاصول او وېستل د تایید کوونکي د Dilithium2 کیلي په واسطه لاسلیکېږي، چې یوازې نوډ یې لري.

عملکمانډپر څه سپور دیتادیه کوي
نوم لیکنهrand-node registerهېڅ — یو blob چاپويهېڅ
Bondrand bondیو بنډل چې burn_r یې ونډه ده0.001 RAND د والټ له نوټونو
Unbondrand-node unbondهېڅ (bundle: null)هېڅ
Withdrawrand-node withdrawهېڅ (bundle: null)0.001 RAND له وېستل شوي مقدار

نوم لیکنه

rand-node register --key node.key.json --payout "$(rand --key payout.key.json address)" --v2 [--rpc http://127.0.0.1:8545]

د تایید کوونکي پته او یو hex Registration چاپوي: د هغه عامه کیلي، د تادیې پته او یو لاسلیک. له --v2 سره، چې chain 20 یې غواړي، لاسلیک د rand-register-2 لاندې د chain پر genesis هش، د chain پېژندنه، د تایید کوونکي پته او د تادیې پته دی؛ پرته له هغې، د v1 بڼه، blake3("rand-register" ‖ bincode(chain_id, payout))، چې chain 20 یې ردوي (په یوه binding_domain: 1 chain لکه chain 20 کې د نوم لیکنې پیغام په هر حال v2 دی). RPC د chain د پېژندنې لپاره لوستل کېږي او له --v2 سره د genesis هش لپاره هم، نو هغه نوم لیکنه چې د یوې chain لپاره لاسلیک شوې وي په بله کې ردېږي. د تادیې پته د والټ پته ده، د نوډ کیلي نه ده، او دا یوازینۍ ساحه ده چې وروسته زیاتونه یې نه شي بدلولی. hex هغه چا ته ورکړئ چې ونډه یې په واک کې ده.

د ونډې تړل

rand bond <validator base58> <amount in RAND> [--registration <hex>] [--fee <RAND>] [--no-wait] [--cuda]

یوه عادي خوندي شوې راکړه ورکړه: والټ د ۴-ننوتو او ۴-وتو د پټې شتمنۍ هغه بنډل ثابتوي چې له chain 14 راهیسې یې هره راکړه ورکړه لېږدوي. په دې بنډل کې ګرو شوې اندازه د هغه د RAND سوځولو، burn_r، کې راځي، او دفتر هغه وخت ګرو مني چې burn_r == amount وي. په chain 20 کې بنډل دوه ثبوتونه لېږدوي، لکه څنګه چې له chain 17 راهیسې هر بنډل لېږدولي دي: د tier-14 د بنډل ثبوت او د tier-10 د اجازې ثبوت چې د لګښت په کیلي جوړېږي. دواړه په ډیفالټ ډول په محلي توګه ثابتېږي، او د Apple Silicon په یوه لپټاپ کې شاوخوا دوه دقیقې وخت نیسي (د ثابتولو حافظه). که د والټ --prover اختیار وکارول شي، د بنډل ثبوت پر ځای یې یو جوړ شوی ثابتوونکی جوړوي، او د اجازې ثبوت د والټ په ماشین کې پاتې کېږي. --registration یوازې هغه وخت اړین دی چې تصدیقوونکی لا په راجستر کې نه وي، او که وي، رد کېږي. والټ لومړی له راجستر څخه پوښتنه کوي. په chain 20 کې د نوم لیکنې ګرو په NotAdmitted رد کېږي، مګر دا چې ټولګه لومړی کیلي ته د منلو رایه ورکړې وي (د رایې له لارې منل). اضافي ګرو رایې ته اړتیا نه لري. د نوم لیکنې ګرو لږ تر لږه 1,000 RAND دی. اضافي ګرو کېدای شي له صفر څخه پورته هره اندازه وي. chain یوازې دا پوهېږي چې د دې تصدیقوونکي ګرو په دومره اندازه زیات شو. دا چې کوم یادښتونه ورکړل شول او د چا وو، لکه په لېږد کې پټ پاتې کېږي. هر څوک کولای شي پر یوه تصدیقوونکي ګرو کېږدي او له اندازې پرته بل څه نه ښکاره کوي.

submitted bond 8c3f…e1
  0 RAND out, 1000 RAND burned, 0.999 RAND change, fee 0.001 RAND, anchored at height 412
2nRdFC…: stake 1000 RAND, counting as consensus weight from epoch 69

هغه دوره چې والټ یې چاپوي راتلونکې پوله ده. دا د فعالېدو ځنډ نه حسابوي: په chain 20 کې هغه ګرو چې په 68مه دوره کې ثبت شي، تر ټولو ژر له 71مې دورې څخه وزن ګرځي. که د ننوتو بودیجه، چې په هره پوله کې د فعال وزن څلورمه برخه ده، مصرف شوې وي، نو وروسته وزن ګرځي.

له ګرو ایستل

rand-node unbond <amount in RAND> --key node.key.json [--rpc …] [--no-wait]

amount له stake څخه pending ته د release_epoch = epoch + 2 سره لېږدوي او nonce یو زیاتوي. وړیا دی او بنډل نه لري. په chains 14 تر 19 کې پر blake3("rand-unbond" ‖ bincode(chain_id, validator, amount, nonce)) لاسلیک کېږي، او په chain 20 کې پر blake3("rand-unbond-2" ‖ bincode(genesis_hash, chain_id, validator, amount, nonce)) (genesis binding_domain: 1). د یوه بلاک په موده کې ثبتېږي. rand-node v0.6.8 د هغې chain لپاره چې ورسره خبرې کوي سمه بڼه غوره کوي. له ګرو څخه د زیاتې اندازې یا صفر ایستل رد کېږي. په یوه دوره کې څو ایستنې په یوه pending قطار کې یوځای کېږي.

ایستل

rand-node withdraw <amount in RAND> --key node.key.json [--rpc …] [--no-wait]

خوشې شوی ارزښت، یعنې rewards او هغه pending قطارونه چې release_epoch یې رارسېدلی وي، تر ټولو زاړه لومړی، د راجستر د payout پته کې یو زېرمه‌ییز یادښت ته ورکوي. دا د تصدیقوونکي له خوا لاسلیک کېږي (په chain 20 کې د rand-withdraw-2 لاندې، لکه له ګرو ایستل، لومړی د genesis پر hash). بنډل نه لري خو وړیا نه دی: د 0.001 RAND اساسي فیس د هغه بلاک وړاندیزوونکي ته ځي چې دا پلي کوي، او له اندازې څخه کمېږي. نو د 1,000 RAND ایستنه 999.999 ارزښت لرونکی یادښت جوړوي، او هغه اندازه چې اساسي فیس نه پوره کوي رد کېږي. chain پخپله یادښت محاسبه کوي:

cm = H_CM(payout.pk, from = 0, amount − 0.001 RAND, asset 0, time, r)

time د سر لوړوالی دی کله چې کمانډ وچلېد (چاپېږي او په لاسلیک پورې تړلی دی). دا د بنډل د کړکۍ دننه په هر ځای کې منل کېږي (په chain 20 کې 1,024 بلاکونه، چې genesis یې proof_window_blocks ټاکي؛ په پخوانیو chains کې 256). r خپرېږي، نو chain هېڅکله ژمنتیا له شبکې نه اخلي. وروسته د تادیې والټ یادښت د سکن کولو له لارې پیدا کوي، پرته له دې چې څه ورته وویل شي:

rand --key payout.key.json balance      # balance: 999.999 RAND

یوځای کېدل او وتل

# on the joining validator's machine
rand-node register --key node.key.json --payout "$(rand --key payout.key.json address)" --v2
rand-node run --datadir ./data --key node.key.json --validator --bootstrap /ip4/…/p2p/…
#   it syncs and observes; rand_status says is_validator true, active_validator false

# on chain 20: validators holding more than two thirds of the weight vote the key in
rand-node admit sign --candidate <hex from above> --key <their node.key.json> --genesis-hash <hash>
rand-node admit submit --candidate <hex from above> --signature <line> … --rpc http://127.0.0.1:8545

# on the machine holding the stake
rand bond <validator base58> 1000 --registration <hex>
rand validators                       # the new row, active false until it activates

# from its activation epoch on (on chain 20, three boundaries after the bond at the earliest)
rand-node status                      # active_validator: true
rand-node unbond 1000 --key node.key.json     # out of the set at the next boundary
#   wait two epochs
rand-node withdraw 1000 --key node.key.json    # a note worth 999.999 RAND at the payout address

له ګرو ایستلو مخکې د نصاب حساب وګورئ: د n ټولګه اړتیا لري چې د ګرو له 2/3 څخه زیات یې آنلاین وي. په chain 20 کې ټول 26 تصدیقوونکي دقیقاً په MIN_STAKE کې دي، نو هر ډول له ګرو ایستل هغه نوډ د راتلونکې دورې له ټولګې څخه باسي، او له 26 څخه باید 18 فعال پاتې شي. هغه تصدیقوونکی چې فعال وي خو رایه نه ورکوي هم د نصاب پر ضد حسابېږي: له chain 14 راهیسې یو تصدیقوونکی هغه بلاک ته رایه نه ورکوي چې د هغه له خپل ساعت څخه له 15 s زیات مخکې وي. نو هغه تصدیقوونکی چې ساعت یې ورو چلېږي، پرته له کومې تېروتنې رایه ورکول بندوي. پر هغه NTP وچلوئ (د تصدیقوونکي چلول).

Genesis راجستر په مستقیم ډول ډکوي، د هر --validator <key or hex pubkey>,<stake>,<payout> لپاره یو ننوتنه، او له لږ تر لږه حد څخه کم ګرو ردوي. د chain 20 genesis هر یو د 1,000 RAND لرونکي 26 قطارونه ډکوي، چې د chain 19 هماغه کیلي دي.

له v0.5.11 راهیسې جوړښت د genesis د تدریجي مالکیت لپاره هم ملاتړ لري: د وخت پورې تړلو تخصیصونو یو عامه راجستر چې یوه نه بېرته اخیستونکې ننوتنه یې کولای شي تړل شوي RAND د یوه تصدیقوونکي د ګرو په توګه ګرو کړي (rand-node vesting bond) او بېرته یې واخلي (rand-node vesting unbond). دې ته په genesis کې د vesting برخې اړتیا ده. هېڅ chain دا برخه نه لري، chain 20 هم نه، او بې له هغې دا کړنې د منلو پر مهال ردېږي. (v0.6.8 دا هم اجازه ورکوي چې د تدریجي مالکیت یوه بېرته اخیستونکې ننوتنه یوازې د لاسلیکوونکو د یوه حد له خوا یوې ټاکلې خزانې ته بېرته واخیستل شي، چې دا هم یوازې د vesting برخې لاندې ممکنه ده.)

څه عامه دي

عامهپټ
راجسترهر قطار: پته، ګرو، د ایستلو کتار، نه ورکړل شوې انعامونه، د تادیې پته، nonceهېڅ
Bondتصدیقوونکی، اندازه، آیا نوم لیکنه ورسره تړل شوې وه، د بنډل burn_rکوم یادښتونه ورکړل شول، د چا دي، پاتې پیسې
AdmitValidator (chain 20)نوماند او هر رایه ورکوونکی د خپل لاسلیک سرهبل څه نشته
Unbondتصدیقوونکی، اندازه، nonceبل څه نشته
Withdrawتصدیقوونکی، اندازه، nonce، د یادښت time او rڅوک یادښت پرانیستلای شي، او د هغه هر وروستی لګښت

انعامونه د هغو بلاکونو فیسونه دي چې تصدیقوونکي وړاندیز کړي دي. د بلاک انعام او انفلاسیون نشته، او په chain 20 کې د تصدیقوونکو سزاییز کمول او بندي کول نشته: هغه تصدیقوونکی چې ناسمه کړنه وکړي، له خپل ګرو څخه څه نه بایلي، او درملنه یې د چلوونکو په لاس کې ده. Fullnode v0.6.8 د مشر د دوه‌مخي لپاره د سزاییز کمولو یو قاعده لري (audit v6, STAKE-1: د یوې کیلي له خوا د یوې لید لپاره دوه لاسلیک شوي بلاک سرلیکونه د ګرو equivocation_bps له منځه وړي او کیلي بندي کوي)، خو یوازې د genesis د staking.slashing برخې لاندې، او chain 20 دا برخه نه لري (rand_getLimits.slashing null دی). fullnode دا یوازې هغه وخت سپارښتنه کوي چې ګرو له یوه څخه د زیاتو چلوونکو په لاس کې وي. (د بلاک د راټولولو کوډ هم د SlashAggregator کړنه لري، د هغو راټولوونکو لپاره چې په یوه nonce کې دوه بېلې مجموعې لاسلیک کړي، او دا په chain 20 کې فعاله نه ده، ځکه چې د راټولولو برخه نه لري.)

بېرته لوستل

rand validators        # the whole register
rand status            # is_validator / active_validator for the node asked
→ {"method":"rand_getValidators","params":[]}
← [{ "address": "2nRdFC…", "stake": "1000000000000",
     "pending": [{ "release_epoch": 71, "amount": "1000000000000" }],
     "rewards": "4000000", "payout": "rand1…", "nonce": 3, "active": true, "jailed_until": null }]
→ {"method":"rand_getAdmitted","params":[]}
← { "admission_by_vote": true, "admitted": [], "max": 256 }
→ {"method":"rand_getEpoch","params":[]}
← { "epoch": 69, "epoch_blocks": 1000, "next_set": ["2nRdFC…", "ByDkxs…"] }

اندازې د واحدونو اعشاري رشتې دي. active ښيي چې آیا قطار په هغه ټولګه کې دی چې اوسنۍ دوره چلوي. jailed_until null دی، پرته له دې چې د سزاییز کمولو برخه شتون ولري. admitted هغه کیلي لیستوي چې منلو ته یې رایه ورکړل شوې خو لا یې نوم نه دی لیکلی. next_set یوه اټکل ده چې له پولې مخکې هر ګرو او له ګرو ایستل یې بدلوي. د explorer GET /validators پر دې سربېره share_percent، blocks_proposed او وروستی وړاندیز شوی لوړوالی ورزیاتوي.

وروستی ځل د 2026-10-12 په نېټه د fullnode د c0878c3f کمېټ (زنځیره 21) پر وړاندې تایید شوی. چېرې چې کوډ او دا پاڼه سره توپیر ولري، کوډ سم دی؛ موږ ته خبر راکړئ.