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

د یوه validator او یوه aggregator چلول

په Rand کې د هر رول لپاره هارډویر - validator، observer، prover او aggregator هر یو څه کار کوي، هر یو ته څومره RAM، CPU او ډیسک اړین دی، هغه DigitalOcean اندازې چې testnet پرې چلېږي، د ثبوت جوړولو د حافظې اندازه شوي حدود، او د تنظیم کمانډونه.

دا پاڼه وکاروئ ترڅو د چلولو دمخه د ماشین اندازه وټاکئ. تاییدکوونکی ارزانه دی. ثبوت جوړول داسې نه دي: د یوه ثبوت حافظه د هغه له کچې سره په چټکۍ لوړېږي، او همدا هغه یوازینۍ شمېره ده چې پرېکړه کوي چې آیا یو ماشین دا کار ترسره کولی شي که نه. دلته هره شمېره له testnet یا د fullnode له ثبتونو څخه اندازه شوې ده. هغه شمېرې چې وروستۍ نه دي، نښه شوې دي.

هر رول څه کوي

رولڅه کويچلويثبوت جوړوي؟
تاییدکوونکیراکړې ورکړې ترتیبوي، په هر بلاک کې هر ثبوت تصدیقوي، په HotStuff کې رایه ورکويrand-node run --validatorنه
څارونکیهمغږي کوي، هر ثبوت بیا تصدیقوي، JSON-RPC وړاندې کوي؛ رایه نه ورکويrand-node runنه
ثبوتوونکی (یوه بټوه)خپل بنډلونه او غوښتنې په محلي ډول ثابتوي، بیا یې سپاريrand send, rand call, rand program deployهو، هره راکړه ورکړه
سپارل شوی ثبوتوونکید هغې بټوې لپاره د بنډل ثبوت جوړوي چې ورسره جوړه شوې ده؛ په chain 20 کې د هغې بټوې د لیدو کیلي ورلېږل کېږي، هېڅکله د لګولو کیلي نهrand-prover run، یا rand-node run --proverهو، یوازې د بنډل ثبوتونه
راټولوونکید یو مهر لګوونکي بلاک لپاره، د بنډل ثبوتونو د یوې کړکۍ پر سر یو تکراري ثبوت جوړويrand-node aggregate --watchهو، تر ټولو لوی ثبوتونه
د جوړونې کوربهrand-node او rand کمپایل کوي او باینري فایلونه کوچنیو نوډونو ته سپاريcargo build --releaseنه

تاییدکوونکي او څارونکي هېڅکله ثبوت نه جوړوي. یو پټ لېږد یا یوه غوښتنه د هغې بټوې له خوا ثابتېږي چې یې لېږي، یا، یوازې د بنډل ثبوت لپاره، د هغه ثبوتوونکي له خوا چې دا بټوه ورسره جوړه شوې ده (د نوډ چلول). د بېړۍ تاییدکوونکي نن ورځ هېڅ شی نه ثابتوي.

د بلاکونو راټولول جوړ شوي خو فعال نه دي. دې ته په genesis کې د aggregation برخې اړتیا ده. chain 20 دا برخه نه لري: راټولول بند دي، لکه په chains 9 تر 19 کې، او جوړونه په هغه genesis چې دا برخه ولري له پیل کولو انکار کوي.

په یوه کتنه کې اندازه

رولRAMCPUډیسک
تاییدکوونکی یا څارونکی2 GB (لومړنۍ بېړۍ)؛ تاییدکوونکي ته همغږي شوې ساعت هم اړین دی (ساعت)1 vCPU (د لومړنۍ بېړۍ ډېری)د --prune-history 24h سره، د شاوخوا یوې ورځې بلاکونه: په chain 14 کې د بلاک جدولونه 3.3–4.4 GB اندازه شوي؛ له 4 GB څخه ډېر خالي ځای وساتئ (ډیسک)
آرشیف (بشپړ تاریخ)د تاییدکوونکي په څېرد تاییدکوونکي په څېرله زنځیر سره لویږي: د chain 14 د 18-لاسلیکه QCs لپاره په 1.4 s بلاکونو کې شاوخوا 3.6 GB په ورځ اندازه شوي، په chains 18 تر 20 کې ډېر، چې QCs یې تر 26 لاسلیکونو پورې لري، او دا بیا نه دي اندازه شوي؛ د testnet دوه آرشیفونه په 250 GiB حجمونو دي
د جوړونې کوربه8 GB (node E)4 vCPU (node E)د سرچینې ونه، target/، او لږ تر لږه 20 GB خالي ځای
ثبوتوونکی، پټ لېږد (کچه 14)په chain 18 کې د یوه لېږد لپاره 6.1 GB لوړه کچه، د یوې غوښتنې او د هغې د تادیه کوونکي بنډل لپاره 6.1 تر 6.6 GB (2026-09-30)یو کور؛ په chain 18 کې دوه ثبوتونه، د کچې 14 د بنډل ثبوت په 102 تر 134 s کې او د کچې 10 د اجازې ثبوت په 7 تر 23 s کې (Apple Silicon لپ ټاپ، 2026-09-30)؛ په chain 14 کې یوازې د 4-in-4-out پټې شتمنۍ بنډل لپاره شاوخوا 100 s؛ د chain 13 د 2-in-2-out بنډل لپاره په یوه لپ ټاپ کې 92.2–96.0 s اندازه شوي (تولید، 2026-09-19)کوچنی
سپارل شوی ثبوتوونکید هر هغه ثبوت لپاره چې په یو وخت کې یې چلوي 5.74 GB، جمع 1 GiB اضافي ځای؛ که له دې کم شتون ولري، له پیل کولو انکار کويد هر ثبوت لپاره یو کورکوچنی
ثبوتوونکی، د کچې 18 غوښتنه (ERC-20؛ له v0.5.6 راهیسې په زنځیر کې رد کېږي، د ثبوت حافظه وګورئ)85.0 GB (ژباړل شوی transfer) / 85.5 GB (تفسیر شوی)، په m-16vcpu-128gb اندازه شويیو کورکوچنی
ثبوتوونکی، د کچې 20 غوښتنه (SPL Token؛ له v0.5.6 راهیسې په زنځیر کې رد کېږي)تر اوسه نه دی ثابت شوی؛ شاوخوا 330 GB اټکل شوی، چې د DigitalOcean تر ټولو لوی حافظه لرونکي droplet (m-32vcpu-256gb، 256 GB) څخه ډېر دییو کورکوچنی
راټولوونکی، N = 1د 2026-09-28/29 له چلونو دمخه لږ تر لږه 64 GB حد و؛ راټولوونکي وګورئنن ورځ CPUد تاییدکوونکي په څېر
راټولوونکی، N = 2 / N = 3د محدودیتونو د 7 سیټ لاندې 133 GB / 221 GB اندازه شوي (2026-09-28/29)د تولیدي N ≥ 2 لپاره یو GPU نوډد تاییدکوونکي په څېر

ثبوتوونکی نن ورځ یو-تاره دی. یو 16-vCPU droplet د یوه کور په 99% کې چلېده. ډېر کورونه یو ثبوت نه چټکوي؛ ډېر RAM پرېکړه کوي چې آیا پای ته رسېږي که نه.

تاییدکوونکي او څارونکي

حافظه او CPU

لومړني اتلس تاییدکوونکي په 2 GB droplets چلېږي. د یوه ثبوت تصدیق ارزانه دی:

عملیاتلګښت
د بنډل ثبوت تصدیق، ګرمه تصدیقوونکې کیليشاوخوا 16 ms
په نوي شکل کې لومړی تصدیقشاوخوا 230 ms
د ځای پر ځای شوي پروګرام د تصدیقوونکې کیلي جوړول (یو ځل، په شالید کې)په 2-vCPU سرور کې شاوخوا 7 s
د یوه راټول شوي ثبوت تصدیق (کله چې راټولول فعال وي)شاوخوا 0.8 s سوړ، شاوخوا 16 ms ګرم (د ډیزاین شمېرې)

هغه حافظه چې یو تاییدکوونکی یې د کچې 18 یا کچې 20 د غوښتنې ثبوت د تصدیق لپاره اړتیا لري، اوس په یوه 48 GB Apple-silicon لپ ټاپ کې، د هغه DigitalOcean droplet څخه په خپلواک ډول چې هر ثبوت یې جوړ کړی، په برخه ییز ډول اندازه شوې ده: د کچې 18 د transfer ثبوت تصدیق په 3.66 GB لوړه RSS کې 50.2 s ونیول (ژباړل شوی) یا 49.6 s (مفسر، RSS جلا نه دی ثبت شوی)؛ د کچې 16 د approve ثبوت تصدیق 12.2 s ونیول (RSS جلا نه دی ثبت شوی). کچه 20 نه ده اندازه شوې — تر اوسه د کچې 20 هېڅ ثبوت نشته چې تصدیق شي. له v0.5.6 راهیسې یو تاییدکوونکی هېڅکله دومره لویه کیلي نه جوړوي: د یوې غوښتنې د ثبوت سرلیک د هرې تصدیقوونکې کیلي له جوړېدو دمخه کتل کېږي، او له کچې 14 پورته غوښتنه (یا د 2^12 څخه پورته keccak جدول، یا د 2^13 څخه پورته sha256 جدول لرونکې غوښتنه) د منلو پر مهال او د بلاک د اعتبار د قاعدې په توګه ردېږي. تر ټولو بد د منلو وړ د غوښتنې سرلیک د تصدیق لپاره 4.7 s او 312 MB اندازه شو.

یو 1-vCPU، 2 GB droplet باینري فایلونه نشي جوړولی. په یوه لوی ماشین یې جوړ کړئ او کاپي یې کړئ (جوړښت وګورئ).

ډیسک

شمېرهارزښتسرچینه
د chain 14 یو بېکاره بلاک، له v0.5.5 دمخهپه blocks کې شاوخوا 60 KB جمع په qcs کې شاوخوا 49 KB: 18-لاسلیکه Dilithium2 QC دوه ځله ساتل شوی، په 1.4 s بلاکونو کې شاوخوا 6.6 GB په ورځد 2026-09-24 د ډیسک پېښه، AGENTS.md
همغه بلاک له v0.5.5 راهیسېشاوخوا 60 KB: د ژمن شوي بلاک QC یو ځل ساتل کېږي، د هغه د ماشوم په justify کې؛ په 1.4 s بلاکونو کې شاوخوا 3.6 GB په ورځdocs/deploy.md، د v0.5.5 د رول یادښت
د RocksDB مخکینی لیکلو لاګد 2026-09-24 له سمون راهیسې په 256 MB محدود؛ له هغه دمخه، د هر تاییدکوونکي لپاره 13 GB نه پاک شوی لاګAGENTS.md
د chain 14 یو تاییدکوونکی وروسته له دې چې --prune-history 24h تش شو (2026-09-25)د بلاک جدولونه 3.3–4.4 GB، له 19 GB څخه؛ ډیسکونه 18–37% کارول شويAGENTS.md، v0.5.7
د node A د معلوماتو لارښود، chain 12 په 62,276 لوړوالي کېشاوخوا 10 GBdeploy/README.md، د v0.3 خپرونه
یو زنځیر چې ډک بلاکونه چلويهر 2 s کې 4 MiB، شاوخوا 170 GB په ورځ (تر chain 12 پورې د زنځیرونو د بلاک حد؛ د chain 20 حد 20 MiB دی)docs/block-space.md
هغه خالي ځای چې بېړۍ یې د جوړونو لپاره ساتيلږ تر لږه 20 GBdocs/block-space.md
یو 30 GB ډیسک چې د درېیو زنځیرونو د معلوماتو لارښودونه ساتيډک؛ RocksDB No space left on device، د ړنګېدو حلقهmkc1 او mem1، deploy/README.md

په chain 20 کې، لکه په chain 19 کې، له 26 تاییدکوونکو څخه 24 یې --prune-history 24h چلوي او د شاوخوا یوې ورځې بلاکونه ساتي؛ پخپله لیجر (یادښتونه، nullifiers، anchors، راجستر) هېڅکله نه پرې کېږي. آرشیفونه، obs1 او rand-archive-2 (دواړه تاییدکوونکي هم دي)، پرته له دې بیرغ څخه چلېږي. د mainnet نوډ هېڅکله دا نه ورکوي. نوډ له پیل کولو انکار کوي که د هغه د معلوماتو د لارښود په فایل سیسټم کې له --min-free-disk-mb (په ډیفالټ ډول 1,024 MB) څخه کم خالي ځای وي، او rand_getHealth له دې څلور چنده څخه کم کې disk_low ځواب ورکوي؛ هغه رول چې پر ok انتظار باسي، په هغه نوډ کې درېږي چې ډکېږي. د دې لپاره چې پرې شوی نوډ لا هم څه ځوابوي، د تاریخ پرې کول وګورئ.

پر یوه زنځیر له لېږد وروسته، د تقاعد شوي زنځیر د معلوماتو لارښود ړنګ کړئ. د معلوماتو لارښودونه د جنیسس په هش کلیدي شوي دي (data-<name>-<hash8>: د زنځیر 20 لپاره -6210cf07، د زنځیر 19 لپاره -a3defc93؛ شپږ ساتونکي کوربه /var/lib/randnode/data-20 کاروي)، نو زاړه لارښودونه تر هغه پاتې کېږي چې تاسو یې لرې کړئ. د زنځیر 20 په لېږد کې یو سیمه‌ییز تاییدوونکی (syd1) د 3.9 GB خالي ځای سره په disk_low حالت کې راپورته شو او پیل یې په 26 کې په 25 کې ودراوه، ځکه چې د 14 تر 17 زنځیرونو لارښودونه لا هم پرې پاتې وو؛ د هغوی ړنګولو 22 GB خوشې کړل. د مخکیني زنځیر لارښود د بېرته ګرځېدو د هدف په توګه یوه ورځ وساتئ، بیا یې لرې کړئ. په بشپړو بلاکونو کې، له زنځیر 14 راهیسې هر خام بنډل ثبوت شاوخوا 1.42 MB دی (تر زنځیر 13 پورې شاوخوا 1.3 MB). له زنځیر 17 راهیسې هر بنډل د اجازې ثبوت هم لري، نو یوه لېږدونه شاوخوا 2.85 MB ثبوتونه لري: شاوخوا 1.49 MB د بنډل ثبوت او 1.36 MB د اجازې ثبوت (تولیدي پروفایل، په 2026-09-29 اندازه شوی). کله چې راټولونه فعاله شي، د یوه مهر شوي بنډل ثبوت شاوخوا 3 KB ته راکموي، مګر دا چې نوډ د --keep-raw-proofs سره چلېږي. دا د اجازې ثبوت نه رانغاړي، کوم چې په بشپړ اندازه پاتې کېږي.

شبکه

په عامه نوډ کې ننوتونکی TCP 30303 خلاص کړئ. هغه نوډونه چې د NAT شاته دي د --bootstrap سره بهر ته اړیکه نیسي. په بشپړو 4 MiB بلاکونو کې د تاییدوونکي یوه اړیکه شاوخوا 2 MB/s لېږدوي.

ساعت

تاییدوونکی NTP ته اړتیا لري. زنځیر 14 لومړنی زنځیر دی چې پکې د دېوال ساعت وخت د اجماع برخه ده (د پل ټینګښت B2):

قاعدهحدډول
د یوه بلاک مهال‌ټاپه باید د خپل مور بلاک له مهال‌ټاپې څخه له دې اندازې زیات وړاندې نه وي60 s (MAX_TIMESTAMP_STEP_MS)د اعتبار قاعده؛ بلاک ناسم دی (BlockError::TimestampLeap)
تاییدوونکی هغه بلاک ته رایه نه ورکوي چې مهال‌ټاپه یې د هغه له خپل ساعت څخه له دې اندازې زیاته مخکې وي15 s (MAX_CLOCK_DRIFT_MS)د رایې قاعده

هغه تاییدوونکی چې ساعت یې 20 s وروسته وي، په چوپتیا سره رایه ورکول بندوي: هر صادق بلاک د خپل ساعت څخه مخکې ویني او رایه یې نه ورکوي، او هېڅ شی نه ماتېږي. په زنځیر 20 کې، د هر شي د ثبتولو لپاره د شپږویشتو څخه اتلس باید رایه ورکړي. هر تاییدوونکی وګورئ، او چېرته چې ساعت همغږی نه وي، chrony نصب کړئ:

timedatectl                     # want "System clock synchronized: yes" and "NTP service: active"
chronyc tracking 2>/dev/null || timedatectl show-timesync --all 2>/dev/null
apt-get install -y chrony && systemctl enable --now chrony

همدا 15 s حد په جنیسس هم پلي کېږي. timestamp_ms د پیل وخت ته نږدې وټاکئ او هېڅکله ترې مخکې یې مه ټاکئ: هغه جنیسس چې له 15 s څخه زیات په راتلونکي کې وي، تر هغه چې د دېوال وخت ورته ونه رسېږي هېڅ بلاک 1 نه ثبتوي، او هغه چې ډېر په تېر کې وي، د بلاک وخت د دېوال له ساعت شاته پرېږدي، چې په هر بلاک کې له 60 s څخه په زیات نه پوره کېږي (docs/deploy.md). څارونکی رایه نه ورکوي، نو د رایې قاعده پرې نه پلي کېږي.

د DigitalOcean هغه اندازې چې testnet پرې چلېږي

اندازهRAM، vCPU، ډیسکنوډونهیادونې
s-1vcpu-2gb2 GB، 1ډېری سیمه‌ییز تاییدوونکي (پکې ams3، nyc1، nyc2، sfo2)جوړونه نشي کولی؛ باینري فایلونه ورته کاپي کېږي
s-1vcpu-2gb-amd2 GB، 1atl1لکه پورته
s-2vcpu-2gb-intel2 GB، 2D (ric1)
s5-1vcpu-2gb-30gb2 GB، 1، 30 GBmkc1، mem1 (هلته یوازینۍ کوچنۍ اندازه)ډیسکونه د زنځیر 13 په لېږد کې ډک وو (29 GB)؛ د زنځیر 11 د مړو معلوماتو لارښودونو له ړنګولو وروسته 7 GB خالي؛ د اندازې بدلون ته اړتیا لري
4 vCPU، 8 GB8 GB، 4E (sgp1)تاییدوونکی، د جوړونې کوربه او explorer

دا جدول اصلي اتلس تاییدوونکي رانغاړي. له 2026-09-27 راهیسې تاییدوونکی A هم پر droplet (sgp1) چلېږي، نه پر لپ‌ټاپ. اته نور تاییدوونکي په زنځیر 15 کې (2026-09-27) تړل شول: دوه آرشیفونه، obs1 او rand-archive-2 (fra1)، او شپږ ساتونکي کوربه. د هغوی د droplet اندازې دلته نه دي ثبت شوې، او نه دا چې mkc1 او mem1 د اندازې بدلون موندلی که نه. ټول 26 په زنځیر 20 کې د جنیسس تاییدوونکي دي، لکه په زنځیر 19 کې، هر یو په 1,000 RAND، او تر 2026-09-30 پورې ټولې 26 کیلي د یوه چلوونکي سره دي.

د ثبوت حافظه

والټ هره هغه راکړه ورکړه ثابتوي چې لېږي یې، نو د یوه پروګرام غوښتونکی د هغه پروګرام د کچې لپاره حافظې ته اړتیا لري. دا اندازه شوي حدونه دي. د کچې 18 چلونې پای ته رسېدلې، ثابت او تصدیق شوې دي پر DigitalOcean؛ کچه 20 نه ده. له v0.5.6 راهیسې زنځیر له کچې 14 څخه پورته د غوښتنې ثبوت ردوي (MAX_CALL_TIER)، نو لاندې د کچې 16، 18 او 20 کرښې اندازه‌ګیرنې دي، نه هغه غوښتنې چې زنځیر 20 یې مني؛ په زنځیر 14 کې هره ثبت شوې غوښتنه د کچې 10 وه.

کاري بارکچهدورېڅه اندازه شولاړتیا
پټه لېږدونه (د bundle مېلمه)14په زنځیر 13 کې شاوخوا 9,160 (د 2-ننوت 2-وتون مېلمه)پر Apple Silicon لپ‌ټاپ 92.2–96.0 s (تولیدي، زنځیر 13، 2026-09-19)؛ د حافظې لوړه کچه نه ده ثبت شوې. د زنځیر 14 د 4-ننوت 4-وتون پټې شتمنۍ مېلمه په همدې کچه ټاکل شوی: شاوخوا 100 s او شاوخوا 1.42 MB ثبوت. په زنځیر 20 کې یوه لېږدونه دوه ثبوتونه ده (وېشل شوې اجازه، له زنځیر 17 راهیسې): د کچې 14 بنډل ثبوت، 102 تر 134 s او شاوخوا 1.49 MB، او د کچې 10 د اجازې ثبوت، 7 تر 23 s او شاوخوا 1.36 MB. د یوې بشپړې راکړې ورکړې لپاره د حافظې لوړه کچه 6.1 تر 6.6 GB (Apple Silicon لپ‌ټاپ، زنځیر 18، 2026-09-30)د پراختیا پر لپ‌ټاپ چلېږي
ERC-20 approve (تولیدي، په زنځیر 13 کې، 2026-09-19)1648,119د غوښتنې ثبوت 388.7 s، 3,412,405 بایټه؛ ټول rand call 622.8 s په 22.9 GB لوړه RSS پر 48 GB M-series لپ‌ټاپیو 48 GB لپ‌ټاپ
ERC-20 غوښتنې18شاوخوا 66k تر 162kد لومړي پړاو transfer (79,203 دورې، د کوډ له ساتونکي مخکې) پر 48 GB لپ‌ټاپ له 1,016 s وروسته په 24.7 GB کې SIGKILL شو؛ پر 64 GB droplet یوه چلونه په 25 دقیقو کې له 47 GB پورته وه85.0 GB (ژباړل شوی) / 85.5 GB (تفسیر شوی) لوړه RSS، 3,230.5 s / 3,143.3 s د ثبوت وخت، 811,600 / 805,108-بایټه ثبوتونه. پر m-16vcpu-128gb اندازه شوي، 2026-09-19
د SPL Token وېکټورونه20شاوخوا 700k تر 770kژباړل شوی Transfer (692,854 دورې، د ELF له ساتونکي مخکې) پر 48 GB لپ‌ټاپ له 225 s وروسته په 30.77 GB کې ودرول شو، لا هم په ثابتولو بوخت؛ د کچې 20 یوه چلونه پر 64 GB droplet له 10 m 41 s وروسته په 65.1 GB کې د OOM له امله ووژل شوهتر اوسه نه دی ثابت شوی؛ اټکل شوی شاوخوا 330 GB او شاوخوا 3.6 h (د کچې 16/18 اندازه شوې پراختیا: د هرو +2 کچو لپاره حافظه شاوخوا ×3.9، وخت شاوخوا ×4.1) — د DigitalOcean د تر ټولو لویې حافظې droplet (m-32vcpu-256gb، 256 GB) څخه زیات
د rVM د کچې 21 تولیدي وتون (یو بنډل ثبوت د تکرار VM دننه تصدیق شوی)211,968,619 قطارونهله چلولو مخکې اټکل شوې اړتیا 48.6 GB؛ د محدودیتونو د 7 ټولګې لاندې یې د یوه 256 GB droplet له ظرفیت څخه زیات ته اړتیا درلوده (2026-09-28/29)له 256 GB څخه زیات؛ د محدودیتونو د 8 ټولګې لاندې بیا نه دی اندازه شوی

د ERC-20 غوښتنې په 16 او 18 کچو او SPL Token په 20 کچه کې راځي (Ethereum، Solana). د کچې 18 یا 20 هېڅ ثبوت پر 48 GB ماشین نه دی جوړ شوی.

راټولوونکي

راټولوونکی زنځیر څاري، د نهايي شويو بلاکونو د یوې کړکۍ بنډل ثبوتونه اخلي، پر هغوی یو تکراري راټول ثبوت جوړوي، او وړاندې کوي یې. هغه بلاک چې دا پکې شامل وي، مهرکوونکی بلاک دی. راټولوونکي ته د پوښل شويو بنډلونو د ثبوت ونډه او په نوي RAND کې د بلاک مرسته، د هغه ثبت شوي تادیې پتې ته ورکول کېږي. راټولونه بې‌اجازې ده: هر چلوونکی چې ضمانت ولري، ثبت کېدای شي.

دا یوازې پر هغه زنځیر شته چې جنیسس یې د aggregation برخه ولري. زنځیر 20 هېڅ نه لري، او جوړونه یې پر هغه جنیسس له پیل څخه انکار کوي چې دا برخه ولري.

هارډویر

راټول ثبوتد کوربه RAMbackend
N = 1 بنډللږ تر لږه 64 GBCPU؛ د ازموینې پروفایل یو یې پر یوه بوخت لپ‌ټاپ شاوخوا 26 دقیقو کې ثابت کړ (327,035 بایټه)
N = 2133 GB اندازه شوی؛ پخوانی حد لږ تر لږه 128 GB ود تولید لپاره GPU backend
N = 3221 GB اندازه شوی؛ پخوانی حد لږ تر لږه 160 GB ود تولید لپاره GPU backend
د بېړۍ GPU نوډلږ تر لږه 160 GB کوربه، یو 80 GB وسیله (H100 یا A100-80G)Linux، R580+ ډرایور، CUDA 13، LLVM 21، sm_80+؛ تر اوسه هېڅ نشته

د N = 2 او N = 3 شمېرې پر یوه 256 GB DigitalOcean droplet په 2026-09-28/29 کې، د محدودیتونو د 7 ټولګې لاندې اندازه شوې، او تولیدي وتون ثبوت د هغه ماشین له 256 GB څخه زیات ته اړتیا درلوده. هېڅ یو د محدودیتونو د 8 ټولګې لاندې بیا نه دی اندازه شوی، چې 18 تر 20 زنځیرونه پرې چلېږي، نو د N = 1 کرښه د ټیټ حد په توګه وګڼئ. CUDA backend لومړی ځل په 2026-09-28 پر ریښتیني هارډویر، پر یوه NVIDIA H100 وچلېد: کرنلونه یې د sm_80 او sm_90 لپاره PTX ته جوړېږي او د CPU له مرجع سره سمون لري. د بېړۍ پر GPU نوډ تولیدي اندازه‌ګیرنه لا پاتې ده. هر نوډ د راټول پروګرام لپاره د پیل یو ځلي کیلي جوړونه هم تادیه کوي: د ازموینې په پروفایل (2¹⁹) کې 13.0 تر 13.4 s، او په تولید (2²¹) کې اټکل شوي 30 تر 70 s.

کمانډونه

# print a signed registration; the bond burns out of a wallet bundle as the register bundle's burn
rand-node aggregator register --key agg.key.json --bond <RAND> --payout rand1… --rpc http://127.0.0.1:8545

# the daemon: poll rand_getUnsealed, fetch the raw bundles, prove, seal the payment note, submit
rand-node aggregate --key agg.key.json --rpc http://127.0.0.1:8545 --watch

# leave, then withdraw the released bond into a note at the payout address
rand-node aggregator unbond --key agg.key.json --rpc http://127.0.0.1:8545
rand-node aggregator withdraw --key agg.key.json --rpc http://127.0.0.1:8545
د aggregate فلګتلوالهمانا
--keyاړیند راټولوونکي هغه کیلي چې راجستر یې پېژني؛ هر راټول شوی ثبوت لاسلیکوي
--rpchttp://127.0.0.1:8545هغه نوډ چې پوښتنه ترې کېږي او ورته سپارل کېږي
--watchبندد یو ځل سپارلو پر ځای پرله‌پسې پوښتنې کوي
--interval-secs15له --watch سره د پوښتنو وقفه
--no-waitبندکله چې نوډ راټول شوی ثبوت ومني، بېرته راګرځي

rand status په داسې زنځیر کې یوه aggregation برخه ښيي: راجستر شوي راټولوونکي، نامهر شوي بلاکونه او د سبسایډۍ د مهالوېش شمېره. rand_getUnsealed د کار لېست دی.

چمتو کول

دا ګامونه د هغو سکریپټونو پیروي کوي چې testnet یې کاروي (deploy/vps-setup.sh، deploy/update-droplet.sh). له دوی څخه د Linux تاییدوونکی یا څارونکی نوډ جوړېږي.

1. د جوړونې پر کوربه جوړول

جوړونه build-essential clang cmake pkg-config libssl-dev، Rust 1.98.1 (چې rust-toolchain.toml یې ټاکلی) او د fullnode د چک‌اوټ تر څنګ د circuits یو چک‌اوټ ته اړتیا لري. لومړۍ جوړونه له 10 تر 20 دقیقو وخت نیسي.

git clone https://github.com/randprotocol/fullnode
git clone https://github.com/randprotocol/zkp-circuits circuits
cd fullnode
git checkout v0.6.8                       # c9c9bd3c, the build chain 20 runs
git -C ../circuits checkout "$(sed -n 's/^circuits: //p' crates/randprotocol-zkvm/guests-compiled/PROVENANCE.md)"   # aeacf31 for v0.6.8
git show origin/main:deploy/genesis-chain20.json > deploy/genesis-chain20.json   # committed after the tag
cargo build --release -p randprotocol-node -p randprotocol-client
sha256sum target/release/rand-node         # compare on every node you copy it to

زنځیر 20 له init مخکې په هر نوډ کې v0.6.8 ته اړتیا لري. د دې پیدایښت داسې ساحې لري چې هېڅ پخوانۍ جوړونه یې نه لولي (testnet، binding_domain، proof_window_blocks، program_state، د پُل rotation او fees ډلې، د ګاز پورتنۍ پولې، د رایې له لارې د سټېکینګ منل)، او v0.6.8 د v6 پلټنې د CON-4 او CH-1 د اجماع بدلونونه لري. ثبوتونه لا هم د 8م محدودیت سیټ لاندې جوړېږي، لکه څنګه چې په 18م او 19م زنځیرونو کې، او د هر بنډل ثبوت تر څنګ د اجازې یو ثبوت (hc_auth) شته. د v0.6.8 جوړونه د 14م تر 17م زنځیرونو پیدایښت په run او verify کې ردوي. هماغه یوه جوړونه وچلوئ چې د نوډونو ډله یې چلوي. د پیدایښت فایل د fullnode په main کې دی (کمېټ 74cfaca0)، نه د v0.6.8 په ټګ کې، له همدې امله د git درېیمه کرښه شته. د circuits چک‌اوټ باید په هماغه کمېټ کې وي چې خپرونه ترې اخیستل شوې، او د git دویمه کرښه پورته یې د fullnode له ونې څخه لولي. د rand-prover د جوړولو لپاره هم -p randprotocol-prover ورزیات کړئ.

2. په نوډ کې د باینري فایلونو نصبول

scp target/release/rand-node target/release/rand deploy/genesis-chain20.json root@<node>:/root/
ssh root@<node> 'install -m 755 /root/rand-node /root/rand /usr/local/bin/'

3. کیلي، پیدایښت، اور دېوال

په نوډ کې:

install -d -m 700 /root/keys
test -e /root/keys/node.key.json || rand-node keygen --out /root/keys/node.key.json   # prints the address; keep the seed secret
rand-node init --datadir /root/data-6210cf07 --genesis /root/genesis-chain20.json
timedatectl                                        # "System clock synchronized: yes" (see Clock)
ufw allow 22/tcp && ufw allow 30303/tcp && ufw enable

کیلي په نوډ کې جوړه کړئ، لکه پورته، او له هر چک‌اوټ څخه یې لرې وساتئ. نور د fullnode په ذخیره کې هېڅ کیلي نه تعقیبېږي (v3 پلټنه، OPS-1). د deploy/node-*.key.json هغه فایلونه چې د 8م تر 13م زنځیرونو لپاره کمېټ شوي، خپاره شوي تخمونه دي؛ د زنځیر 20 د تاییدوونکو کیلي (هغه اتلس چې د زنځیر 14 لپاره جوړې شوې او هغه اته چې په زنځیر 15 کې ګرو شوې) د ذخیرې بهر جوړې شوې، او د نوډونو ډله د هر ډراپلېټ کیلي د سرچینې له ونې بهر په /root/keys/node-<name>.key.json کې ساتي. ځای په هغه نوډ کې مهم دی چې د ډلې د سکریپټونو له لارې چمتو شوی وي: deploy/rebuild-vps.sh او deploy/push-to-vps.sh /root/fullnode له --delete سره rsync کوي، نو هغه کیلي چې په دې ونه کې ساتل شوې وي په راتلونکې بیا جوړونه کې ړنګېږي او بیا یونټ له سره نه پیلېږي. له v0.6.8 راهیسې keygen له موجود فایل څخه د پاسه لیکل ردوي (v0.6.7 به پرته له پوښتنې پرې لیکل)؛ test -e دا کرښه په دواړو حالتونو کې د بیا چلولو لپاره خوندي ساتي. مخکې له دې چې کیلي ګرو کړئ، د کوربه بهر یې بیک‌اپ واخلئ.

init د پیدایښت هش چاپوي. هغه باید 6210cf071a390d7ac61d8cbea5dd9d139d1a493a862b54a45a498f36af2d5135 (زنځیر 20) وي. د پیدایښت فایل د fullnode د ذخیرې د main په deploy/ کې genesis-chain20.json دی. د معلوماتو لارښود د هش د لومړیو اتو توریو په نوم کړئ، لکه څنګه چې ډله یې کوي (data-<name>-6210cf07)، څو هېڅکله د زنځیر 19 (-a3defc93) یا د کوم وروستي زنځیر له لارښود سره ټکر ونه کړي. پیدایښت دا پولې ټاکي. د ثبوت پوله په 13م تر 16م زنځیرونو کې 8 MiB وه او له زنځیر 17 راهیسې 4 MiB ده، چېرې چې یوې راکړې ورکړې تر درېیو پورې ثبوتونه وړل پیل کړل:

پولهزنځیر 20
max_program_words65,535
max_proof_bytes4,194,304 (4 MiB)
max_block_bytes20,971,520 (20 MiB)
max_call_envelope_bytes65,536
max_program_public_words32,768
envelope_bytes1,860 (د هر نوټ لفافه، د هغې د کوډ شوي یادښت له ساحې سره)
proof_window_blocks1,024 (په زنځیر 19 کې 256)
program_stateد حجرې فیس 0.1 RAND (10,000,000 واحدونه)؛ په هر invoke کې تر ډېره 8 لوستنې، 8 لیکنې او 4 ورکړې
د aggregation برخهنشته (راټولول بند دي)

د زنځیر 20 پیدایښت دا هم لري: consensus_domain: 1، binding_domain: 1، testnet: true، یوه staking برخه د رایې له لارې منلو سره، یوه gas برخه د بیې له پورتنیو پولو سره، د پُل rotation او fees ډلې، hardening_v6 او د مېلمه دوه ټاکنې hc_bundle او hc_auth؛ د نوډ چلول لېست کوي چې دوی څه ټاکي.

4. د systemd یونټ

دا هغه یونټ دی چې deploy/vps-setup.sh یې د پورته لارو سره لیکي:

[Unit]
Description=RAND full node
After=network-online.target
[Service]
Environment=RUST_LOG=info,libp2p=warn,libp2p_mdns=off
ExecStart=/usr/local/bin/rand-node run --datadir /root/data-6210cf07 --key /root/keys/node.key.json --validator --listen /ip4/0.0.0.0/tcp/30303 --rpc 127.0.0.1:8545 --no-mdns --prune-history 24h --bootstrap <multiaddr> --bootstrap <multiaddr>
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target

د څارونکي نوډ لپاره --validator لرې کړئ. --prune-history 24h هغه څه دي چې د testnet تاییدوونکي یې چلوي، پرته له آرشیفونو؛ د هغه نوډ لپاره یې لرې کړئ چې بشپړ تاریخ ساتي، او هېڅکله یې په mainnet کې مه ورکوئ. د زنځیر 20 د پیل multiaddr پتې C (fra1)، D (ric1) او E (sgp1) نوډونه دي، د زنځیر 19 په پرتله نه دي بدل شوي. زنځیر 20 د هغو تاییدوونکو په کیلیو چلېږي چې د زنځیر 14 لپاره جوړې شوې، او د p2p پېژندنه له تاییدوونکي کیلي څخه اخیستل کېږي، نو د دې ملګرو پېژندنې هماغه دي چې زنځیر 14 کارولې. یو نوی نوډ چې له پیدایښت څخه همغږي کېږي، د بشپړ تاریخ لرونکي ملګري ته هم اړتیا لري، نو له دوو آرشیفونو څخه یو ورزیات کړئ (obs1، بیا rand-archive-2):

/ip4/164.90.239.200/tcp/30303/p2p/12D3KooWEQEbUwZRgqhDPXhW7vNBmcRcnhUDGUADe81VFdv3ALYe
/ip4/165.245.173.74/tcp/30303/p2p/12D3KooWJyc5oDHggAr89e9QrRFBy9Tg8TxXh18yzrb1SM6KKLYw
/ip4/188.166.235.187/tcp/30303/p2p/12D3KooWSyX84P1DAbWByLHpRBMLRWD53r3Jj4aqVt6tHoF8B2ZQ
/ip4/168.144.46.203/tcp/30303/p2p/12D3KooWS5usdMPvsbaWSaT2xtKndHvDYurwmueoNvaRRarb2wRf
/ip4/206.81.29.236/tcp/30303/p2p/12D3KooWPocyZGcNB9Vp68VSfgVvNXhSzBBoJa4h9R1yMkp71XHh

RPC په 127.0.0.1 کې وساتئ، مګر دا چې اور دېوال یې ساتنه کوي. هغه نوډ چې باید عامو خلکو ته خدمت وکړي، د هغې تر څنګ د v0.6.8 عامه اورېدونکی (--public-rpc <ADDR>) پرانیزي او پراکسي د هغه مخې ته ږدي، هېڅکله د --rpc مخې ته نه (JSON-RPC). هغه یونټ چې له v0.6.7 څخه راوړل شوی، باید --prover-accept-spend-key ورنه کړي، ځکه v0.6.8 یې د پیل پر مهال ردوي.

systemctl daemon-reload && systemctl enable --now rand-node
journalctl -u rand-node -f
rand status                       # height climbing, peer_count rising

5. د تاییدوونکو له ډلې سره یوځای کېدل

نوې کیلي د هېڅ دورې په ډله کې نه ده. په زنځیر 20 کې باید لومړی په رایه ومنل شي: د دې پیدایښت staking.admission_by_vote ټاکي، نو هغه تاییدوونکي چې د رایې له وزن څخه تر دوو پر درېیو زیات لري، هر یو یې د rand-node admit sign --candidate <key or registration> --key <validator key> --genesis-hash <chain 20's hash> په مرسته لاسلیکوي، او یو یې رایې د rand-node admit submit په مرسته سپاري؛ بیا rand_getAdmitted یې لېست کوي. بیا لږ تر لږه 1,000 RAND ورته ګرو کړئ: د rand-node register --key /root/keys/node.key.json --payout rand1… --v2 په مرسته یو راجستر چاپ کړئ (زنځیر 20 د v1 راجستر ردوي)، بیا له یوې والټ څخه د rand bond <address> 1000 --registration <hex> په مرسته ګرو کړئ. ګرو د خپلې فعالېدو دورې ته انتظار باسي، چې تر ټولو ژر د کمېټ کېدو وروسته د 1,000 بلاکونو درې پولې دي، او په هره پوله کې د فعال وزن تر ډېره 2,500 bps نوی وزن کېږي (زنځیر 19 دا په ثابت ډول په 10,000 RAND پورې محدود کړی و). سټېکینګ دا ګام په ګام تشریح کوي.

6. تازه کول

دا په هغې جوړونې پلي کېږي چې هماغه زنځیر چلوي. له یوه پخواني زنځیر څخه زنځیر 20 ته تګ تازه کول نه دي: نوې باینري، نوي پیدایښت او د معلوماتو نوي لارښود ته اړتیا لري، او د زاړه زنځیر د معلوماتو لارښود وروسته ړنګېدای شي (deploy/retire-chain-dirs.sh؛ ډله یې د بېرته ګرځېدو لپاره یوه ورځ ساتي). د زنځیر له پرې کولو پرته د نوې جوړونې د خپرولو لپاره، یو ځل جوړه کړئ، د rand-node او rand دواړو sha256 پرتله کړئ، خدمت ودروئ، نصب یې کړئ او بیا یې پیل کړئ، یو وار یو نوډ. ځینې خپرونې پر ځای یې په بشپړ درېدو او بشپړ پیل سره خپرېږي (د v0.5.6 د call-tier قاعده، د v0.5.7 د Status د تار بدلون، د v0.6 لا سخت د ثبوت تصدیق)؛ د هرې خپرونې یادښتونه وايي چې کومه. v0.6.7 یو وار یو نوډ په زنځیر 18 کې خپره شوه؛ v0.6.8 له زنځیر 20 سره راغله، په بشپړ درېدو او بشپړ پیل سره، ځکه د دې د CON-4 او CH-1 د اجماع بدلونونه باید هېڅکله نوډ په نوډ خپاره نه شي. مخکې له راتلونکي، انتظار وباسئ چې هر نوډ بېرته یوځای شي، څو کورم هېڅکله له یوه څخه زیات کم نه شي. deploy/update-droplet.sh <ip> [build-host] همدا کار د SSH له لارې کوي.

تر v0.6.8 پورې خپرونې په یوه کوربه کې په لاس جوړې شوې او لاسلیک شوې نه دي. د v0.6.8 د GitHub خپرونه rand-node، rand، rand-prover او SHA256SUMS لري چې په E نوډ کې جوړ شوي؛ دا چېکسم خراب ډاونلوډ نیسي او د جوړونې د کوربه ضمانت نه کوي. v0.6.8 د خپرونې یو کاري بهیر لري چې باینري فایلونه له ټګ څخه جوړوي، او deploy/update-droplet.sh له لاسلیک شوي SHA256SUMS پرته نصب ردوي، مګر دا چې ALLOW_UNSIGNED=1 ټاکل شوی وي. deploy/release-signers تر اوسه هېڅ کیلي نه لري، نو لاسلیک شوې لاره نه ده کارول شوې.

15م، 16م، 17م او 18م زنځیرونه په 2.7 ورځو کې (2026-09-26 تر 2026-09-29) ژوندي شول، هر یو د ډلې په بشپړ درېدو سره. زنځیر 19 په 2026-10-01 په 03:43 UTC کې ورپسې راغی، چې په هماغه جوړونه کې د زنځیر 18 بیا پیدایښت و، او زنځیر 20 په هماغه ورځ په 06:17 UTC کې، چې د v0.6.8 په سخت فورک کې د زنځیر 19 له یوه سنېپ‌شاټ څخه پرې شو؛ هر نوډ د زنځیر 19 په 7,700 لوړوالي کې ودرېد. د پرې کولو یوه لیکلې تګلاره (2026-09-30) له زنځیر 20 څخه وروسته پلي کېږي؛ د زنځیر 20 د پرې کولو ثبت د دویم چلوونکي له بیا جوړونې تېر شو، ځکه چې یو چلوونکی ټولې کیلي لري. پرې کول یو داسې دلیل ته اړتیا لري چې پرله‌پسې تازه کول یې نه شي پوره کولای، د هغه څه خپور لېست چې ورسره وړل کېږي او هغه څه چې پرېښودل کېږي، د پېرېدونکو د بیا جوړونې یو چک‌لېست چې مخکې بشپړ شوی وي، یو دویم چلوونکی چې پیدایښت هماغه هش ته بیا جوړوي، د بېرته ګرځېدو پلان، او د زنځیر یوه پېژندنه چې مخکې هېڅکله نه وي کارول شوې.

وروستی ځل د 2026-10-12 په نېټه د fullnode د c0878c3f کمېټ (زنځیره 21) پر وړاندې تایید شوی، او fullnode v0.8.0 `c0878c3f` (`docs/deploy.md`, `docs/cli.md`, `docs/staking.md`, `docs/node-hardware.md`, `deploy/cutover-fleet-chain21.sh`, `CHANGELOG.md`) and `main` `246cb5f9` (`deploy/genesis-chain21.json`, `deploy/cut-records/chain21.record`); the live chain-21 RPC, 2026-10-12, fullnode `90e7716` (v0.6.7 `86941a1` and `main` after it, 2026-09-30: `deploy/nodes.env`, `deploy/genesis-chain18.json`, `deploy/README.md`, `deploy/vps-setup.sh`, `docs/deploy.md`, `docs/node-hardware.md`, `docs/prover.md`, `docs/cli.md`, `docs/staking.md`, `README.md`, `CHANGELOG.md`, `AGENTS.md`), fullnode `8abf85e` (v0.5.9: `docs/rpc.md`), fullnode `ed88241` (`deploy/README.md`, `deploy/nodes.env`, `deploy/genesis-chain14.json`, `deploy/run-a.sh`, `deploy/vps-setup.sh`, `deploy/update-droplet.sh`, `docs/deploy.md`, `docs/superpowers/handoffs/2026-09-20-chain14-cut-runbook.md`, `docs/aggregation.md`, `docs/block-space.md`, `docs/zkvm-m4-m5-progress.md`, `docs/cli.md`). چېرې چې کوډ او دا پاڼه سره توپیر ولري، کوډ سم دی؛ موږ ته خبر راکړئ.