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 موڈ میں کیونکہ debug میں STARK ثبوت سازی سست ہے (678 ٹیسٹ، 2026-09-14 کی پیمائش کے مطابق تقریباً 43 منٹ)
cargo test --workspace --release
# ریلیز v0.8.0 (c0878c3f) چین 21 چلاتی ہے، اور اس سے پہلے کی کوئی ریلیز نہیں چلاتی: چین 21 قیود کا مجموعہ 9 چلاتی ہے، جس کی تصدیق کنندہ کلیدیں اور پروف انکوڈنگ کسی پرانی ریلیز میں موجود نہیں۔ اسے ٹیگ سے بنائیں، یا 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# پن کی گئی ملٹی سگ تصدیقی کلید: rand-node اسے اپنی بائنری کے ساتھ والی جگہ سے لوڈ کرتا ہے اور اس کے بغیر شروع ہونے سے انکار کرتا ہے
sha256sum rand-node rand msauth-vk-production.bin # لازم ہے کہ ریلیز کی قدریں پرنٹ ہوں (SHA256SUMS، جس پر SHA256SUMS.sig کے طور پر دستخط کیے گئے ہیں):
# 324a4ab1029d39e67fc2de36b036341b0f88f13089997d7fe24c596363a58278 rand-node
# e3a38e74ee28743a960fc1c3eb1ac6c538e18dc259411e10afff7f54e268bbf4 rand
# 68facb06c7f321aaf1d4d541acf6b5c0e9d7f17788ed1c9add6c5a8a8f7acd30 msauth-vk-production.bin
# آپ کے نوڈ کی شناخت: Dilithium2 توثیق کنندہ کلید اور p2p پیئر آئی ڈی ایک ہی فائل میں۔ اپنی کلید خود بنائیں
# اور اسے چیک آؤٹ سے باہر رکھیں؛ ریپوزٹری اب کوئی کلید ٹریک نہیں کرتی
rand-node keygen --out node.key.json
# جینیسس ریپوزٹری کے ساتھ آتا ہے؛ ہر نوڈ کے پاس بالکل یہی فائل ہونی چاہیے۔
# init اس کا ہیش پرنٹ کرتا ہے، جو نیچے دیے گئے ہیش سے ملنا چاہیے
rand-node init --datadir ./data --genesis deploy/genesis-chain21.json
# عوامی توثیق کنندگان سے رابطہ کریں (چین 21 نے چین 14 کی کلیدیں برقرار رکھیں، اس لیے اس کے پیئر آئی ڈی اور IP بھی وہی ہیں)۔
# --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
# والیٹ ایک الگ، شیلڈڈ کلید ہے۔ اس کا rand1… ایڈریس تقریباً 1.6 KB متن پر مشتمل ہے
rand keygen && rand address
# فاؤسیٹ منٹ پر کسی توثیق کنندہ کے دستخط ہوتے ہیں، اس لیے اسے توثیق کنندہ کا RPC درکار ہے: یہ
# مقامی دو توثیق کنندگان والی چین پر جوں کا توں چلتا ہے؛ آبزرور جواب دیتا ہے "ask a validator node"۔ چین 21 پر
# فاؤسیٹ صرف انہی 16 والیٹس کو منٹ کرتا ہے جنہیں اس کا جینیسس اجازت دیتا ہے، اور صرف انہی توثیق کنندگان سے جن کا وہ نام لیتا ہے
rand faucet # 100 RAND ایک ایسے نوٹ میں جسے صرف آپ کھول سکتے ہیں
rand balance # آپ کی کلید سے ٹری کو اسکین کرتا ہے؛ کوئی اور نہیں کر سکتا
rand send <rand1 address> 1.5 # تصدیق مانگتا ہے، پروف بناتا ہے (~2 منٹ)، کمٹ کا انتظار کرتا ہے
# ایک بلٹ اِن گیسٹ اسمبل کریں: اگر چار نجی بیلنس 1000 سے زائد رقم پوری کرتے ہوں تو وہ زائد رقم ادا کریں
rand program build --guest private_payment --arg 1000 --out pp.json
rand program deploy pp.json # پروگرام آئی ڈی (اس کے مواد کا ہیش) پرنٹ کرتا ہے
# مقامی طور پر ثبوت بنائیں؛ چین پر صرف ثبوت، آٹھ آؤٹ پٹ الفاظ اور ایک سربمہر ان پٹ ٹرانسکرپٹ جاتے ہیں
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 پر نئی کلید یہی چلاتی ہے۔
- ویلیڈیٹر بانڈ شدہ
چینڈ HotStuff کے تحت ووٹ دیتا ہے اور تجاویز پیش کرتا ہے۔ چین 21 پر، جیسا کہ چین 20 پر تھا، نیا توثیق کنندہ پہلے ووٹ کے ذریعے داخل کیا جاتا ہے: دو تہائی سے زیادہ اسٹیک رکھنے والے توثیق کنندگان اس کی کلید کے لیے AdmitValidator ایکشن پر دستخط کرتے ہیں۔ پھر وہ نوڈ کی کلید رجسٹر کرتا ہے (rand-node register --v2)، والیٹ سے کم از کم 1,000 RAND بانڈ کرتا ہے، اور بانڈ کے بعد تیسری 1,000 بلاکس کی ایپوک حد پر سیٹ میں شامل ہو جاتا ہے (چین 18 کی دو ایپوک کی بانڈ تاخیر)۔ چین 18 کا آغاز 26 توثیق کنندگان سے ہوا تھا، ہر ایک کے پاس 1,000 RAND؛ کمٹ کے لیے دو تہائی سے زیادہ اسٹیک، یعنی 26 میں سے 18، کا آن لائن ہونا اور ووٹ دینا لازم ہے۔ اپنی کلید خود بنائیں: اب ریپوزٹری میں کوئی توثیق کنندہ کلید نہیں رکھی جاتی، اور سابقہ چینز کے لیے کمٹ کی گئی کلید فائلیں شائع شدہ سیڈز ہیں۔
- والیٹ اور ثبوت ساز مقامی
rand کلائنٹ 256-bit خرچ کی کلید رکھتا ہے اور کسی چیز پر دستخط نہیں کرتا: اجازت دو ثبوتوں سے ہوتی ہے، ایک چھوٹا ثبوت جو خرچ کی کلید سے بنتا ہے اور 4-in-4-out بنڈل ثبوت۔ یہ اپنے نوٹس کے لیے ٹری اسکین کرتا ہے، دونوں ثبوت آپ کی مشین پر بناتا ہے، RAND اور کسی بھی RPL ٹوکن کے لیے ایک ہی شکل میں، اور خفیہ کال کے لیے پروگرام کا ثبوت بھی بناتا ہے۔ چین تک صرف ثبوت، کمٹمنٹس، نلیفائرز اور سربمہر لفافے پہنچتے ہیں۔
نوڈ نہیں چلا رہے؟ یہی والیٹ iOS، Android، Chrome اور Firefox کے لیے ایپ کی صورت میں دستیاب ہے: والیٹس۔
ہر نوڈ ہر چیز جانچتا ہے
ہم آہنگ ہونے والا نوڈ قبول کرنے سے پہلے ہر سرٹیفکیٹ کی دوبارہ تصدیق کرتا ہے، ہر بلاک کو اس کے ثبوتوں سمیت دوبارہ چلاتا ہے، اور رسیدوں کا موازنہ کرتا ہے۔ آغاز پر یہ اپنے ڈیٹابیس کی جانچ کرتا ہے، ووٹ کی حفاظتی حالت برقرار رکھتے ہوئے ہر غیر مطابق حصہ کاٹ دیتا ہے، اور خلا پیئرز سے دوبارہ حاصل کرتا ہے۔
# نوڈ بند: ہیشز، QCs، دستخط، ثبوت، دوبارہ اجرا
rand-node verify --datadir ./data --mode full
rand-node verify --datadir ./data --repair
فعال testnet پر چلائے گئے خرابی کے ٹیسٹ
- ›چار میں سے ایک ویلیڈیٹر بند کریں: چین کمٹ کرتی رہتی ہے اور واپسی پر نوڈ چند سیکنڈ میں ہم آہنگ ہو جاتا ہے۔
- ›چار میں سے دو بند کریں: کورم کے بغیر چین رک جاتی ہے اور ان کی واپسی پر بغیر فورک کے دوبارہ چل پڑتی ہے۔
- ›کسی نوڈ کا ڈیٹابیس خراب کریں: آغاز پر پکڑا جاتا ہے، کاٹ دیا جاتا ہے، پیئرز سے دوبارہ ہم آہنگ ہوتا ہے، اور بعد میں بائٹ بہ بائٹ یکساں ہوتا ہے۔
- ›مختلف نوڈز کے ذریعے منتقلیاں: سب کمٹ ہوئیں، بیلنس ہر جگہ یکساں، رسد میں کوئی تبدیلی نہیں۔
- ›منقطع پیئر رابطہ redial منطق کے ذریعے تقریباً 30 سیکنڈ میں بحال ہو جاتا ہے۔
ابھی نافذ نہیں ہوا
یہ فہرست اس لیے دی گئی ہے کہ مقالے اور نوڈ کے درمیان فرق اندازے پر نہ چھوڑا جائے بلکہ واضح طور پر نظر آئے۔
- ›فی پروگرام مستقل حالت اور بین پروگرام کالز
- ›خود والیٹ کے اندر ایک کمپائلر: پروگرام یا تو پہلے سے شامل اسمبل شدہ guest ہوتا ہے یا الگ rand-guest ٹول چین سے تیار کردہ امیج
- ›سلیشنگ اور جیلنگ، بلاک انعامات، فیس کی منڈیاں، ہیش سارٹیشن پر مبنی لیڈر بیکن
- ›نلیفائر ایکیومولیٹر، حتمیت کے بعد پروف کی تراش، پروفس کی بیچنگ
- ›SPL Token ٹرانسفر کا tier-20 پروف، اور مقالے میں بیان کردہ GPU پروور مارکیٹ