د Rand نوډ وچلوئ
مرجع بشپړ نوډ او د هغه بټوه په Rust لیکل شوي او له سرچینې کوډ څخه جوړېږي. دوه باینري فایلونه ترې جوړېږي: rand-node، چې نوډ او د چلوونکي وسایل دي، او rand، یوه بټوه چې د لګښت پټه کلي ساتي، د JSON-RPC له لارې له هر نوډ سره خبرې کوي او د هر لېږد او هرې محرمانه غوښتنې لپاره د zkVM ثابتوونکی په محلي توګه چلوي. یو تجربوي testnet، زنځیر 21، په DigitalOcean droplets باندې پر 26 تصدیقوونکو روان دی. دا پلټل شوی نه دی او هېڅ ریښتینی ارزښت نه لري. د دواړو لپاره د Linux x86_64 باینري فایلونه د v0.8.0 خپرونې سره ضمیمه دي، هغه جوړښت چې ټوله شبکه ورته اړول شوې ده.
# 1. Rust (rustup ټاکل شوې 1.98.1 وسیلهکټ اخلي) او د RocksDB د جوړولو اړتیاوې
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
sudo apt install build-essential clang cmake pkg-config libssl-dev # Linux
# 2. کلون او جوړول (لومړی ځل 10–20 دقیقې)
git clone https://github.com/randprotocol/fullnode.git
cd fullnode
cargo build --release # target/release/rand-node, target/release/rand
# 3. په همدې ماشین دوه-تصدیقوونکی زنځیر (RPC په 8545 او 8546)
scripts/local-testnet.sh
target/release/rand --rpc http://127.0.0.1:8545 status
# 4. ازموینې؛ په release کې، ځکه چې د STARK ثبوت جوړول په debug کې ورو دي (678 ازموینې، شاوخوا 43 دقیقې، د 2026-09-14 د اندازهګیرۍ له مخې)
cargo test --workspace --release
# خپرونه v0.8.0 (c0878c3f) chain 21 چلوي، او هیڅ پخوانۍ خپرونه یې نه چلوي: chain 21 د constraint set 9 پر بنسټ چلیږي، چې د verifier keys او proof encoding یې هیڅ پخوانی څه نه لري. دا د tag څخه جوړه کړئ، یا پر Linux x86_64
# د خپرونې باینري فایلونه واخلئ او د هغې سره خپاره شوي SHA256SUMS سره یې پرتله کړئ
git checkout v0.8.0 && cargo build --release
curl -LO https://github.com/randprotocol/fullnode/releases/download/v0.8.0/rand-node -LO https://github.com/randprotocol/fullnode/releases/download/v0.8.0/rand \
-LO https://github.com/randprotocol/fullnode/releases/download/v0.8.0/msauth-vk-production.bin# ټاکل شوی multisig verifier key: rand-node یې د خپل binary څنګ ته لوډوي او پرته له دې پیل کولو ته ندي چمتو
sha256sum rand-node rand msauth-vk-production.bin # باید د خپرونې ارزښتونه چاپ کړي (SHA256SUMS، د SHA256SUMS.sig په توګه السلیک شوی):
# 324a4ab1029d39e67fc2de36b036341b0f88f13089997d7fe24c596363a58278 rand-node
# e3a38e74ee28743a960fc1c3eb1ac6c538e18dc259411e10afff7f54e268bbf4 rand
# 68facb06c7f321aaf1d4d541acf6b5c0e9d7f17788ed1c9add6c5a8a8f7acd30 msauth-vk-production.bin
# ستاسو د نوډ پېژندنه: د Dilithium2 validator key او p2p peer id په یوه دوتنه کې. خپل جوړ کړئ
# او د checkout بهر یې وساتئ؛ repository نور هیڅ key نه تعقیبوي
rand-node keygen --out node.key.json
# genesis د repository سره راځي؛ هر نوډ باید ورته یو شان دوتنه ولري.
# init خپل hash چاپوي، چې باید د لاندې hash سره سمون ولري
rand-node init --datadir ./data --genesis deploy/genesis-chain21.json
# عمومي validators ته زنګ ووهئ (chain 21 د chain 14 کیلي ساتلې، نو د هغه peer ids او IPs هم).
# --validator مه لیکئ: ستاسو key د validator په ټولګه کې نشته. validator ته NTP هم په کار دی
rand-node run --datadir ./data --key node.key.json \
--listen /ip4/0.0.0.0/tcp/30303 --rpc 127.0.0.1:8545 --no-mdns \
--bootstrap /ip4/164.90.239.200/tcp/30303/p2p/12D3KooWEQEbUwZRgqhDPXhW7vNBmcRcnhUDGUADe81VFdv3ALYe \
--bootstrap /ip4/165.245.173.74/tcp/30303/p2p/12D3KooWJyc5oDHggAr89e9QrRFBy9Tg8TxXh18yzrb1SM6KKLYw \
--bootstrap /ip4/188.166.235.187/tcp/30303/p2p/12D3KooWSyX84P1DAbWByLHpRBMLRWD53r3Jj4aqVt6tHoF8B2ZQ
# والټ جلا، shielded key دی. د هغه rand1… پته شاوخوا 1.6 KB متن ده
rand keygen && rand address
# د faucet mint د validator لخوا السلیک کیږي، نو د validator RPC ته اړتیا لري: دا په
# محلي دوه-validator chain کې همداسې کار کوي؛ observer ځواب ورکوي "ask a validator node". په chain 21 کې
# faucet یوازې هغو 16 والټونو ته mint کوي چې genesis یې allowlist کړي، او یوازې له هغو validators څخه چې نوموي یې
rand faucet # 100 RAND په یوه note کې چې یوازې تاسو یې خلاصولی شئ
rand balance # ونه د ستاسو له key سره سکین کوي؛ بل څوک یې نه شي کولی
rand send <rand1 address> 1.5 # تایید غواړي، proof جوړوي (~2 دقیقې)، د commit انتظار کوي
# یو جوړ شوی مېلمه پروګرام راټول کړئ: که څلور شخصي بیلانسونه یې پوښښ کړي، له 1000 څخه پورته اضافه ورکړئ
rand program build --guest private_payment --arg 1000 --out pp.json
rand program deploy pp.json # د پروګرام id چاپوي (د هغه د منځپانګې هش)
# په محلي توګه ثبوت جوړ کړئ؛ یوازې ثبوت، اته وتونکي کلمې او د داخلو مهر شوې لیکنه زنځیر ته ځي
rand call <program id> --input 400 --input 250 --input 300 --input 75
rand receipt <tx> # وتونکي [1, 0, 25, 0, ...]: اضافه، چې د معلوماتو په توګه خپرېږي
# وروسته، لیکنه پرانیزئ او د هغه H_IN سره یې وڅېړئ چې ثبوت خپور کړی
rand open-call <tx> # داخلې: [400, 250, 300, 75] — پرېکړه: وفادار
اړتیاوې
- عامل سیسټم
- Linux x86_64 یا macOS arm64
- Rust
- 1.98.1، د rust-toolchain.toml لخوا ټاکل شوی؛ rustup یې نصبوي
- د جوړولو اړتیاوې
- C++ کمپایلر، cmake، pkg-config، د OpenSSL سرلیک فایلونه (RocksDB)
- لومړی جوړښت
- 10 تر 20 دقیقې: RocksDB او Plonky3 له سرچینې کوډ څخه
- پورټونه
- په عامه نوډونو کې TCP 30303 راتلونکی؛ RPC په 127.0.0.1:8545
- سرور
- د 1 تر 2 vCPU ورېځنی ماشین د testnet یو تصدیقوونکی چلوي
- ساعت
- په تصدیقوونکي کې NTP (chrony): هغه بلاک ته رایه نه ورکوي چې د هغه له خپل ساعت څخه له 15 s څخه ډېر مخکې وي، نو ورو ساعت په چوپتیا سره رایه ورکول دروي
- ثبوت جوړول
- اوس یوازې CPU: یو پټ لېږد په لپټاپ کې شاوخوا دوه دقیقې نیسي (د 7 s اجازې ثبوت او د شاوخوا 110 s بنډل ثبوت) او شاوخوا 6 GB حافظه؛ یوه کوچنۍ غوښتنه شاوخوا 30 s زیاتوي
رول وټاکئ
- څارونکی هر چا ته پرانیستی
همدا باینري پرته له --validator. زنځیر همغږی کوي، هر سند او د هر بنډل او غوښتنې ثبوت تاییدوي، هر بلاک بیا اجرا کوي، رسیدونه پرتله کوي، او JSON-RPC وړاندې کوي. په عامه testnet کې نوې کلي همدا چلوي.
- تصدیقوونکی تضمین شوی
د chained HotStuff لاندې رایه ورکوي او وړاندیز کوي. په chain 21 کې، لکه په chain 20 کې، نوی validator لومړی په رایه منل کیږي: هغه validators چې له دوه ثلثه زیات stake لري، د هغه د key لپاره AdmitValidator عمل السلیکوي. بیا نوډ key ثبتوي (rand-node register --v2)، له یوه والټ څخه لږ تر لږه 1,000 RAND bond کوي، او د bond وروسته په دریم 1,000-بلاکي epoch پولې کې ټولګې ته ننوځي (د chain 18 دوه-epoch د bond ځنډ). Chain 18 له 26 validators سره پیل شو، هر یو 1,000 RAND؛ د commit لپاره باید له دوه ثلثه زیات stake، یعنې له 26 څخه 18، آنلاین وي او رایه ورکوي. خپل key جوړ کړئ: په repository کې نور هیڅ validator key نه ساتل کیږي، او د پخوانیو chains لپاره commit شوي key دوتنې خپاره شوي seeds دي.
- بټوه او ثابتوونکی محلي
د rand پیرودونکی د 256-بیټه لګښت کلي ساتي او هېڅ شی نه لاسلیکوي: دوه ثبوتونه اجازه ده، یو کوچنی چې د لګښت په کلي جوړېږي او د 4-ننوتو 4-وتو بنډل ثبوت. دا د خپلو نوټونو لپاره ونه سکن کوي، دواړه ثبوتونه ستاسو په ماشین جوړوي، د RAND او هر RPL ټوکن لپاره په عین بڼه، او د محرمانه غوښتنې لپاره پروګرام هم ثابتوي. یوازې ثبوتونه، ژمنې، باطلوونکي او مهر شوې لفافې زنځیر ته رسېږي.
نوډ نه چلوئ؟ همدا بټوه د iOS، Android، Chrome او Firefox لپاره د اپلیکېشن په توګه هم شته: بټوې.
هر نوډ هر څه څېړي
هغه نوډ چې همغږی کېږي هر سند بیا تاییدوي، هر بلاک د هغه له ثبوتونو سره بیا اجرا کوي، او له منلو مخکې رسیدونه پرتله کوي. د پیل په وخت کې خپل ډېټابېس څېړي، هر نامتوازن شی پرې کوي خو د رایې د خوندیتوب حالت ساتي، او تشه له همتایانو څخه بیا راوړي.
# نوډ ودرېد: هشونه، QCs، لاسلیکونه، ثبوتونه، بیا اجرا
rand-node verify --datadir ./data --mode full
rand-node verify --datadir ./data --repair
د خطا ازموینې په ژوندي testnet کې چلېږي
- ›له څلورو تصدیقوونکو یو ودروئ: زنځیر ثبتولو ته دوام ورکوي او نوډ چې بېرته راشي په څو ثانیو کې ځان رسوي.
- ›له څلورو دوه ودروئ: زنځیر پرته له نصاب دریږي او کله چې هغوی بېرته راشي پرته له انشعاب بیا پیلېږي.
- ›د یو نوډ ډېټابېس خراب کړئ: د پیل پر مهال کشفېږي، پرې کېږي، له همتایانو بیا همغږی کېږي، او وروسته بایټ په بایټ یو شان وي.
- ›د بېلابېلو نوډونو له لارې لېږدونه: ټول ثبت شوي، بیلانسونه هر ځای یو شان، عرضه نه ده بدله شوې.
- ›پرې شوې همتا اړیکه د بیا وصلولو منطق لخوا په شاوخوا 30 ثانیو کې بیا جوړېږي.
لا نه دي پلي شوي
دلته لیست شوي ترڅو د مقالې او نوډ ترمنځ واټن روښانه وي، نه دا چې اټکل شي.
- ›د هر پروګرام دوامداره حالت او د پروګرامونو ترمنځ غوښتنې
- ›پخپله په والټ کې یو کمپایلر: پروګرام یا یو جوړ شوی، مخکې راټول شوی guest دی او یا هغه انځور چې د جلا rand-guest toolchain سره جوړ شوی وي
- ›د ونډې کټ (slashing) او بندیز (jailing)، د بلاک انعامونه، د فیس بازارونه، د hash-sortition مشر beacon
- ›د nullifier راټولوونکی، له وروستيتوب وروسته د ثبوتونو لنډول، د ثبوتونو ډلهییز کول
- ›د SPL Token د لېږد tier-20 ثبوت، او د مقالې د GPU ثابتوونکو بازار