Rand Protocol
دستاویزات
حوالہ

کمانڈ لائن

rand-node اور rand کی ہر کمانڈ، اس کے آرگیومنٹس اور پہلے سے طے شدہ اقدار کے ساتھ - نوڈ اور آپریٹر بائنری، شیلڈڈ والیٹ، اور تفویض کردہ ثبوت ساز۔

تین بائنریز cargo build --release سے بنتی ہیں: rand-node (نوڈ اور آپریٹر کمانڈز)، rand (پوشیدہ والیٹ) اور rand-prover (تفویض کردہ ثبوت ساز)۔ ہر کمانڈ -h/--help قبول کرتی ہے۔ یہ صفحہ v0.6.8 ریلیز (c9c9bd3c) کو بیان کرتا ہے، وہ بلڈ جس پر chain 20 چلتی ہے؛ جہاں v0.6.7 کا رویہ مختلف تھا، وہاں اس کی صراحت کی گئی ہے۔ v0.6.8 سے پرانا rand والیٹ chain 20 پر ترسیل نہیں کر سکتا، کیونکہ اس کا جینیسس ہر ثبوت اور ہر دستخط شدہ پیغام کو اپنے ہیش سے منسلک کرتا ہے۔ پہلی دو بائنریز مختلف قسم کی کلیدیں رکھتی ہیں: نوڈ کلید ایک Dilithium2 کلیدی جوڑا ہے جو بلاکس پر دستخط کرتا ہے؛ والیٹ کلید ایک پوشیدہ خرچ کلید ہے جو چین پر کسی چیز پر دستخط نہیں کرتی۔

rand-node

rand-node <COMMAND>
  keygen      Generate a new Dilithium2 key file (refuses to overwrite an existing one)
  address     Print the address, public key, and libp2p peer id of a key file
  genesis     Write a genesis.json: every validator key is staked, each --alloc becomes a deposit note
  alloc-note  Print one genesis alloc note as JSON, RAND or a listed token, for splicing into a genesis
  init        Initialise a data directory from a genesis file
  run         Run the node
  verify      Verify the chain in a data directory without running the node
  db          Database maintenance on a stopped node's data directory
  safety      status | clear-halt | release-lock: a stopped validator's consensus safety state
  status      Show node status
  register    Print this node's Registration, for the wallet that bonds it in
  admit       sign | submit: the validator set's vote to admit a new key (admission by vote)
  unbond      Move bonded stake into unbonding
  withdraw    Pay released stake and rewards into a note at the payout address
  bridge-gov  rotate-pq | rotate-pause | cancel-rotation: the bridge's post-quantum rotations
  vesting     status | claim | revoke | bond | unbond: genesis vesting (chains with a vesting section)
  aggregator  register | unbond | withdraw — the aggregator role (aggregation chains only)
  aggregate   The aggregate daemon (aggregation chains only)

safety، admit اور bridge-gov v0.6.8 میں نئی ہیں۔ کوئی balance اور کوئی transfer موجود نہیں: منتقلی کے لیے پوشیدہ خرچ کلید درکار ہے، جو صرف والیٹ کے پاس ہوتی ہے۔

ایک عمومی فلیگ، --allow-test-fri-profile (یا RAND_ALLOW_TEST_FRI_PROFILE=1)، init، run اور verify کو ایسا جینیسس قبول کرنے دیتا ہے جس کا fri_profile test ہو۔ یہ پروفائل تقریباً 17 بٹ کی درستی فراہم کرتا ہے، اور جینیسس فائل لکھنے والا کوئی بھی اسے نامزد کر سکتا ہے، اس لیے v0.6.8 سے نوڈ اس فلیگ کے بغیر ایسا جینیسس مسترد کر دیتا ہے۔ ٹیسٹ سوئٹس اسے سیٹ کرتے ہیں؛ کسی اور کو نہیں کرنا چاہیے۔

keygen، address

کمانڈدلیلپہلے سے طے شدہ
keygen--out <OUT>node.key.json
address--key <KEY>لازمی

keygen موڈ 0600 کے ساتھ { "seed": <32-byte hex>, "address": <base58>, "public_key": <hex> } لکھتی ہے۔ یہ فائل بیج کی واحد نقل ہے۔ v0.6.8 سے keygen پہلے سے موجود --out کو مسترد کر دیتی ہے (… already exists or cannot be created; refusing to overwrite a key file) اور اسے جوں کا توں چھوڑ دیتی ہے؛ کوئی --force نہیں ہے، اس لیے اسے بدلنے کے لیے پرانی فائل کو ایک طرف منتقل کریں۔ v0.6.7 اور اس سے پہلے کے ورژن اسے پوچھے بغیر اوور رائٹ کر دیتے تھے۔ address address، public_key (1,312 بائٹ hex) اور peer_id پرنٹ کرتی ہے۔

genesis

دلیلپہلے سے طے شدہمفہوم
--chain-id <CHAIN_ID>1چین شناخت؛ ٹرانزیکشنز اور گوسپ موضوعات اسی سے منسلک ہوتے ہیں
--validator <KEY,STAKE,PAYOUT>لازمی، قابلِ تکراررجسٹر کا ایک اندراج: کلیدی فائل کا راستہ یا hex عوامی کلید، RAND میں اسٹیک (کم از کم 1,000)، اور rand1… ادائیگی پتہ
--epoch-blocks <N>1000فی ایپاک بلاکس
--alloc <ALLOCS>کوئی نہیں، قابلِ تکرارایک جمع نوٹ: rand1<address>=<amount in RAND>
--out <OUT>genesis.jsonآؤٹ پٹ راستہ
--faucetبندصرف testnet کے لیے: Mint فعال کرتا ہے۔ bridge سیکشن کے ساتھ اسے --testnet درکار ہے
--testnetبندv0.6.8: "testnet": true لکھتا ہے، وہ نشان جو فاسیٹ کو برج سیکشن کے ساتھ رہنے دیتا ہے۔ دیے جانے پر جینیسس ہیش کا حصہ
--no-confidentialبندDeploy اور Call کو غیر فعال کرتا ہے
--fri-profile <production|test>productiontest غیر محفوظ ہے اور ٹیسٹ سوئٹ کے لیے ہے؛ init، run اور verify ایسی فائل کو --allow-test-fri-profile کے بغیر مسترد کرتی ہیں
--max-program-words <N>کوئی نہیں (4096)سب سے بڑا پروگرام جو ایک ڈیپلائے لے جا سکتا ہے، 1..=65535۔ صرف دیے جانے پر لکھا جاتا ہے؛ موجود ہونے پر ہمیشہ جینیسس ہیش کا حصہ، اس لیے --max-program-words 4096 اسے چھوڑ دینے سے ایک مختلف چین ہے۔ ایسی فائل پر init سے پہلے ہر نوڈ کو v0.4 بائنری درکار ہے
--max-proof-bytes <N>کوئی نہیں (2,097,152)سب سے بڑا ثبوت جو ایک ٹرانزیکشن لے جا سکتی ہے، 1048576..=33554432۔ ثبوت کی ہر حد اسی کے تابع ہے
--max-block-bytes <N>کوئی نہیں (4,194,304)سب سے بڑا بلاک، اور یوں سب سے بڑی ٹرانزیکشن، 4194304..=67108864، اور کم از کم 2 × max_proof_bytes + 1 MiB، یا --auth-guest کے ساتھ 3 × max_proof_bytes + 1 MiB، جہاں ایک کال تین ثبوت (bundle، auth، call) لے جاتی ہے
--max-call-envelope-bytes <N>کوئی نہیں (18,432)کال ان پٹ کا سب سے بڑا لفافہ، 18432..=1048576
--max-program-public-words <N>کوئی نہیں (0)سب سے بڑا عوامی ان پٹ جو ایک ڈیپلائے مقرر کر سکتا ہے، 0..=65535؛ 0 کسی کو داخل نہیں کرتا
--tokens <TOKENS.JSON>کوئی نہیںRPL tokens سیکشن، بطور JSON فائل {"registration_fee": …, "mint_cap_per_day": …, "tokens": [...]}۔ چھوڑ دینے پر فائل میں ایسا کوئی سیکشن نہیں ہوتا اور ہیش پہلے جیسا رہتا ہے۔ bridge سیکشن کو ایسا سیکشن درکار ہے جس میں mint_cap_per_day صفر نہ ہو (فی پشت پناہی، فی UTC دن، ٹوکن کی آٹھ اعشاری اکائیوں میں)؛ درج شدہ ٹوکن کو bridge سیکشن درکار ہے
--envelope-bytes <N>کوئی نہیں (پرانا 1,348 بائٹ لفافہ)ہر نوٹ لفافے کا عین سائز: بنڈل آؤٹ پٹ، فاسیٹ منٹ، واپسی، برج ڈپازٹ، جینیسس الاٹ۔ صرف 1860 قبول ہے، وہ سائز جو ہر لفافے کو ایک خفیہ کردہ میمو لے جانے دیتا ہے۔ دیے جانے پر جینیسس ہیش کا حصہ، اور اس کمانڈ کے اپنے --alloc نوٹس کے مہر بند ہونے سے پہلے سیٹ ہوتا ہے
--vesting <VESTING.JSON>کوئی نہیںvesting سیکشن: وقت سے مقفل تخصیصات، {"entries": [{"id", "class", "beneficiary", "amount", "start_ms", "cliff_ms", "linear_ms", "step_ms"?, …}]}۔ v0.6.8 سے قابلِ تنسیخ اندراج revokers (1 سے 5 کلیدیں)، ایک threshold اور وہ treasury درج کرتا ہے جسے تنسیخ ادائیگی کرتی ہے، اور جو فائل ان میں سے کوئی چھوڑ دے وہ مسترد ہو جاتی ہے
--staking <STAKING.JSON>کوئی نہیںv0.6.8: staking سیکشن بطور JSON فائل (faucet_budget_per_epoch، bond_activation_epochs، max_weight_bps، max_stake_entry_per_epoch یا max_stake_entry_bps_per_epoch، registration_v2، faucet_recipients، faucet_minters، admission_by_vote، slashing)، جس کی توثیق بلڈ کرتی ہے
--consensus-domain <0|1>کوئی نہیں (0)v0.6.8: 1 ہر ووٹ، نیو ویو اور تجویز کو اس جینیسس سے منسلک کرتا ہے
--bundle-guest <v1|v2|v3>v1hc_bundle کے طور پر مقرر بنڈل گیسٹ: v1 (پوشیدہ اثاثہ گیسٹ جس پر chains 14 اور 15 چلیں)، v2 (chain 16 کا شاخ سے پاک گیسٹ) یا v3 (منقسم اجازت: گیسٹ خرچ کلید کی بجائے nk اور ایک نمک لیتا ہے)۔ v3 کو --auth-guest درکار ہے
--auth-guestبنداس بلڈ کے auth گیسٹ کو hc_auth کے طور پر مقرر کرتا ہے: تب ہر بنڈل خرچ کلید پر ایک auth ثبوت لے جاتا ہے، جو اپنی ٹرانزیکشن سے منسلک ہوتا ہے، اور جس کا آؤٹ پٹ بنڈل کے auth_commit کے برابر ہوتا ہے۔ --bundle-guest v3 کے ساتھ لازمی اور v1 یا v2 کے ساتھ مسترد، کوئی فائل لکھے جانے سے پہلے۔ غیر موجودگی میں فائل میں hc_auth فیلڈ نہیں ہوتی
--hardening-v6بندv0.6 کے قواعد کو صحت کے قواعد (hardening_v6) میں بدلتا ہے: pc ونڈو، ناقابلِ کال ڈیپلائے، معیاری ثبوت کی شکلیں اور پروف آف ورک الفاظ، کال کا انسلاک اور پروگرام ٹیبل کی کم از کم حد۔ غیر موجودگی میں بھی نوڈ انہیں اپنے پول میں، بطور پالیسی، مسترد کرتا ہے
--gas-price <UNITS>کوئی نہیں (کوئی gas سیکشن نہیں)اکائیاں (10⁻⁹ RAND) فی گیس جو چین خود ایک کال سے وصول کرتی ہے۔ یہی فلیگ gas سیکشن (metering: "circuit") لکھتا ہے؛ نیچے کے تین فلیگ اس کے بغیر مسترد ہوتے ہیں۔ جینیسس ہیش کا حصہ
--byte-price <UNITS>800، صرف --gas-price کے ساتھاکائیاں فی KiB، یا اس کے کسی حصے پر، کال ثبوت اور ان پٹ لفافے کی، بائٹ 0 سے
--bundle-gas-limit <N>20479، صرف --gas-price کے ساتھوہ عین GAS_LIMIT جس کا اعلان ہر بنڈل ثبوت کو کرنا ہوگا؛ کسی اور قدر کا اعلان کرنے والا بنڈل ثبوت مسترد ہوتا ہے۔ جینیسس صرف 20479 قبول کرتا ہے، یعنی tier-14 بنڈل گیسٹ کے لیے gas_max(14, 0, 0)
--gas-dynamic <TARGET_BYTES,TARGET_GAS,ADJUST_BPS>کوئی نہیں (مقررہ قیمتیں)فی بلاک قیمت کنٹرولر کو فعال کرتا ہے، جس کی کم از کم حد سیکشن کی اپنی ابتدائی gas_price اور byte_price ہے۔ --aggregation کے ساتھ مسترد
--max-gas-price <UNITS>، --max-byte-price <UNITS>کوئی نہیں (کوئی بالائی حد نہیں)v0.6.8: وہ بالائی حدیں جن سے اوپر کنٹرولر کبھی قیمت نہیں بڑھاتا، ہر ایک کم از کم ابتدائی قیمت کے برابر۔ --gas-dynamic کے بغیر مسترد
--gas-byte-load payingکوئی نہیں (ہر ٹرانزیکشن کے بائٹس)v0.6.8: صرف کال کا ثبوت اور ان پٹ لفافہ byte_price کو حرکت دیتے ہیں، اس لیے منتقلیوں کا بلاک اسے بالکل حرکت نہیں دیتا۔ --gas-dynamic کے بغیر مسترد؛ paying واحد قدر ہے
--binding-domain <0|1>کوئی نہیں (کوئی فیلڈ نہیں)v0.6.8: 1 جینیسس ہیش کو ہر ٹرانزیکشن انسلاک اور ہر دستخط شدہ عمل کے پیغام (فاسیٹ منٹ، اَن بانڈ، واپسی، RPL ٹوکن پیغامات، ایگریگیٹر کے اعمال، برج گورننس پیغامات) میں منسلک کرتا ہے، تاکہ اس چین کا کوئی ثبوت یا دستخط کسی دوسری چین پر تصدیق نہ پائے۔ چھوڑ دینے پر کمانڈ انتباہ دیتی ہے: v0.6.8 والیٹ 14 سے 19 کے علاوہ ہر چین شناخت پر جینیسس سے منسلک صورت ثابت کرتا ہے، اس لیے 20 سے آگے ہر چین 1 کے ساتھ بنائی جاتی ہے
--proof-window-blocks <N>کوئی نہیں (256)v0.6.8: ایک ونڈو، 256 سے 4,096 بلاکس، اس کے لیے کہ بنڈل کا اینکر اور اس کا time کتنا پرانا ہو سکتا ہے۔ rand_getLimits.proof_window_blocks کے طور پر پیش کیا جاتا ہے
--program-state-cell-fee <UNITS>کوئی نہیں (کوئی program_state سیکشن نہیں)v0.6.8، RPL-2: پروگرام سیلز، پروگرام والٹس اور Invoke عمل کو فعال کرتا ہے، RAND اکائیوں میں اس سیل فیس کے ساتھ (زیادہ سے زیادہ 1,000 RAND) جو invoke کی کم از کم فیس میں ہر اس سیل کے حساب سے شامل ہوتی ہے جو وہ بناتا ہے۔ اسے --tokens، --gas-price، --hardening-v6 اور --auth-guest درکار ہیں، اور ہر ایک کی کمی پر نام لے کر مسترد کیا جاتا ہے، کوئی فائل لکھے جانے سے پہلے
--aggregation <BOND,MAX_COVERS,SUBSIDY,HALVING,WINDOW>، --admitted-shape <…>کوئی نہیںaggregation سیکشن؛ v0.6.8 بلڈ ایسے جینیسس پر شروع ہونے سے انکار کرتی ہے جس میں یہ سیکشن ہو

ہر --alloc کے لیے ایک alloc سطر پرنٹ کرتی ہے، پھر جینیسس ہیش، ویلیڈیٹر اور نوٹ کی تعداد، ایپاک کی لمبائی، پانچ حدیں، hc_bundle اور hc_auth (--auth-guest کے بغیر none)، پھر گیس کی سطر: gas: price P/gas, B/KiB, bundle limit N, dynamic: target … B / … gas, adjust … bps, floor …/…, ceiling …/…, byte load all|paying، یا --gas-price کے بغیر gas: none، اور --program-state-cell-fee کے ساتھ ایک program_state: cell fee N RAND سطر۔ init بھی یہی گیس سطر پرنٹ کرتی ہے۔ پانچوں حد فلیگ یکساں برتاؤ کرتے ہیں: چھوڑ دینے پر فائل میں ایسی کوئی فیلڈ نہیں ہوتی اور چین پہلے سے طے شدہ قدر پر چلتی ہے؛ دیے جانے پر فیلڈ جینیسس ہیش کا حصہ ہوتی ہے، خواہ اس کی قدر پہلے سے طے شدہ ہی ہو۔ chain 20 ان فلیگز کے ساتھ بنائی گئی (deploy/cut-chain20-genesis.sh):

--max-program-words 65535 --max-proof-bytes 4194304 --max-block-bytes 20971520 \
--max-call-envelope-bytes 65536 --max-program-public-words 32768 \
--tokens tokens.json \
--bundle-guest v3 --auth-guest --hardening-v6 \
--gas-price 100 --byte-price 800 --bundle-gas-limit 20479 --gas-dynamic 10485760,262144,1250 \
--max-gas-price 10000 --max-byte-price 80000 --gas-byte-load paying \
--envelope-bytes 1860 \
--testnet --binding-domain 1 --proof-window-blocks 1024 --program-state-cell-fee 10000000 \
--epoch-blocks 1000 --faucet --fri-profile production

چینز 18 اور 19 انہی فلیگز کے ساتھ --envelope-bytes 1860 تک کاٹی گئیں، اور v0.6.8 کے فلیگز میں سے کوئی بھی استعمال نہیں ہوا۔ پروف کی حد 4 MiB ہے، جو چینز 13 تا 16 کی 8 MiB سے کم ہے: تقسیم شدہ اجازت والی ٹرانزیکشن میں زیادہ سے زیادہ تین پروف ہوتے ہیں، اور 3 × 4 MiB + 1 MiB بیس MiB کے بلاک میں سما جاتے ہیں۔ tokens.json میں 1 RAND کی registration_fee، 10000000000000 کی mint_cap_per_day، max_tokens 4096، burn_registration_fee اور bound_note_value ہیں، اور zUSD اپنی سات پشت پناہیوں کے ساتھ درج ہے۔ کوئی --bridge فلیگ نہیں ہے، اور کٹ اسکرپٹ اب بھی bridge، staking اور consensus_domain سیکشنز بعد میں فائل میں جوڑتا ہے (چین 20 پر: برج گارڈین سیٹ 1 پر، آٹھ PQ گارڈین کلیدوں، توقف کلید، rules_v2، rotation اور fees کے ساتھ؛ staking سیکشن، فاسٹ کی اجازت فہرست، admission_by_vote اور 2,500 bps کے داخلہ بجٹ کے ساتھ؛ consensus_domain: 1؛ اور zUSD کے جینیسس نوٹ، جو alloc-note --asset 1 --envelope-bytes 1860 سے بنائے گئے)۔ معتبر جینیسس ہیش وہی ہے جو init مکمل فائل پر چھاپتا ہے۔

ہر --alloc نئی کمٹمنٹ رینڈمنیس کے ساتھ ایک ڈپازٹ نوٹ بناتا ہے، اس لیے دو بار کاٹنے سے دو مختلف ہیش بنتے ہیں۔ کمانڈ ہمیشہ نوٹ کا اوپننگ cm اور amount کے ساتھ لکھتی ہے، جو tokens سیکشن والی چین کے لیے لازم ہے:

"alloc": [
  { "cm": "<64 hex>",
    "envelope": { "kem_ct": "<hex>", "to_receiver": "<hex>", "to_sender": "<hex>", "body": "<hex>" },
    "amount": 1000000000000,
    "opening": { "pk": "<64 hex>", "time": 0, "r": "<64 hex>" } }
]

چنانچہ فائل شائع ہونے کے بعد جینیسس نوٹ کا مالک اور رقم ڈیزائن کے مطابق عوامی ہوتے ہیں؛ صرف یہ نجی رہتا ہے کہ اسے بعد میں کب اور کس میں خرچ کیا گیا۔ جینیسس ایک بار کاٹیں اور فائل محفوظ رکھیں۔

alloc-note

--to <rand1…> (لازمی)، --amount <N> (لازمی)، --asset <INDEX> (طے شدہ 0)، --envelope-bytes <N> (طے شدہ: پرانا فارمیٹ)۔ ایک الاٹ نوٹ JSON کی صورت میں چھاپتی ہے، جو --to کے لیے اسی طرح مہربند ہوتا ہے جیسے genesis --alloc کرتا ہے۔ جو جینیسس envelope_bytes مقرر کرتا ہے وہ مطابقت رکھنے والے --envelope-bytes کے بغیر مہربند نوٹ کو مسترد کر دیتا ہے۔ --amount اثاثے کی پوری اکائیوں میں ہے: RAND کے لیے نو اعشاریے، برج شدہ ٹوکن کے لیے آٹھ (اثاثہ 1 پر 10 کا مطلب 10 zUSD ہے)۔ کسی درج ٹوکن کے نوٹ کے لیے ضروری ہے کہ اس ٹوکن کی پشت پناہیوں کی locked رقوم کا مجموعہ ٹھیک اس کے نوٹوں کے برابر ہو۔

init

آرگیومنٹمطلب
--datadir <DATADIR>بنائی جانے والی ڈیٹا ڈائریکٹری
--genesis <GENESIS>جینیسس فائل؛ <datadir>/genesis.json میں نقل کی جاتی ہے

جینیسس ہیش اور وہی gas: سطر چھاپتی ہے جو genesis چھاپتی ہے۔

run

آرگیومنٹطے شدہمطلب
--datadir <DATADIR>لازمیابتدائی ترتیب شدہ ڈیٹا ڈائریکٹری
--key <KEY>لازمیکلید فائل: ویلیڈیٹر شناخت، p2p شناخت، فیس وصول کنندہ
--listen <LISTEN>/ip4/0.0.0.0/tcp/30303libp2p سننے کا multiaddr، دہرایا جا سکتا ہے
--bootstrap <BOOTSTRAP>کوئی نہیں، دہرایا جا سکتا ہے/ip4/<ip>/tcp/<port>/p2p/<peer-id>، آغاز پر اور منقطع رہنے کے دوران ہر 30 s پر ڈائل کیا جاتا ہے۔ v0.6.8 سے اس کی peer id محفوظ ہوتی ہے
--reserved-peer <PEER_ID>کوئی نہیں، دہرایا جا سکتا ہےv0.6.8: ایسا peer جسے آنے والے کنکشنز کی حد سے آگے داخلہ ملتا ہے اور جسے سنک بجٹ میں ویلیڈیٹرز کے حصے سے خدمت دی جاتی ہے۔ بوٹ اسٹریپس اور ہر وہ ویلیڈیٹر جس کی دستخط شدہ peer بائنڈنگ یہ نوڈ دیکھ چکا ہو، اس کے بغیر ہی محفوظ ہوتے ہیں؛ نئی کاٹی گئی چین پر، جس کے اسٹور میں ابھی کوئی بائنڈنگ نہیں، فلیٹ کے ویلیڈیٹرز یہاں درج کریں
--strict-gossipبندv0.6.8: gossipsub کی سخت توثیق، جو صرف درست مصنف دستخط، ترتیبی نمبر اور ماخذ والے پیغامات قبول کرتی ہے۔ سخت اور نرم نوڈز آپس میں کام کرتے ہیں، اس لیے اسے نوڈ بہ نوڈ نافذ کیا جا سکتا ہے
--rpc <RPC>127.0.0.1:8545آپریٹر کا JSON-RPC سامع: تمام میتھڈز، اور یہ loopback پر اعتماد کرتا ہے۔ اسے loopback پر رکھیں اور کبھی کوئی عوامی اینڈپوائنٹ اس کی طرف فارورڈ نہ کریں
--public-rpc <ADDR>بندv0.6.8: دوسرا، عوامی سامع جس کا میتھڈ سیٹ مقرر ہے (نہ ویونگ کی میتھڈز، نہ rand_mint نہ rand_getPeers)، نہ بیچز، نہ WebSocket، اور تمام کالرز کے لیے ایک ہی میٹر؛ ریورس پراکسی یا SSH فارورڈ کو اسی کی طرف اشارہ کرنا چاہیے (JSON-RPC)
--rpc-viewing-token-file <PATH>بندv0.6.8: --rpc کی ویونگ کی میتھڈز پر Authorization: Bearer <first line of the file> (32 یا زیادہ حروف) لازم کرتا ہے
--validatorبنداس کلید کے ساتھ اتفاق رائے میں حصہ لیں
--no-mdnsبندLAN دریافت غیر فعال کریں
--block-interval-ms <MS>1000تجاویز کے درمیان کم از کم وقفہ
--view-timeout-ms <MS>3000بنیادی ویو ٹائم آؤٹ؛ ہر مسلسل ٹائم آؤٹ پر دگنا ہوتا ہے، 8× تک
--verify-chain <MODE>quickoff، quick، full
--keep-raw-proofsبندایگریگیشن چین پر آرکائیو موڈ
--prune-history <WINDOW>کوئی نہیں (سب کچھ محفوظ)صرف اتنی بلاک تاریخ رکھیں، <n>m، <n>h یا <n>d، کم از کم 1h: پرانے بلاکس کا بلاک، QC، ٹرانزیکشنز اور رسیدیں حذف ہو جاتی ہیں؛ لیجر برقرار رہتا ہے۔ چین 20 پر 26 میں سے 24 ویلیڈیٹرز 24h چلاتے ہیں اور دو نوڈز آرکائیو ہیں؛ آرکائیو اور mainnet نوڈ اسے کبھی مقرر نہیں کرتے۔ حد سے نیچے کی بلندی کی تلاش پر -32010 جواب ملتا ہے (JSON-RPC)
--min-free-disk-mb <MB>1024ڈیٹا ڈائریکٹری کے فائل سسٹم پر اس سے کم خالی جگہ ہو تو آغاز سے انکار؛ اس کے چار گنا سے کم پر rand_getHealth میں disk_low آتا ہے۔ 0 یہ حفاظتی جانچ غیر فعال کرتا ہے
--rpc-viewing-openبندغیر loopback کالرز کو ویونگ کی میتھڈز استعمال کرنے دیں؛ صرف کسی تصدیقی پرت کے پیچھے
--gas-price <UNITS>100فی گیس اکائیاں (10⁻⁹ RAND) جو اس نوڈ کا پول کسی کال سے اس کے پروف ہیڈر کے gas_max پر طلب کرتا ہے۔ یہ داخلہ پالیسی ہے، چین کا قاعدہ نہیں: سستی کال والا بلاک پھر بھی درست ہے۔ --byte-price 0 کے ساتھ 0 کوئی پالیسی نافذ نہیں کرتا۔ جس چین کے جینیسس میں gas سیکشن ہو، جیسا کہ چین 20 میں ہے، وہاں چین کی اپنی قیمتیں درستی کا قاعدہ ہیں
--byte-price <UNITS>800کال کے پروف اور ان پٹ لفافے کے ہر KiB، یا اس کے کسی حصے، پر اکائیاں، بائٹ 0 سے، اسی پالیسی کے تحت
--prover <ADDR>بنداس پتے پر تفویض شدہ پروور (prover_* JSON-RPC) کی میزبانی کریں: اس کا اپنا سامع، جو --rpc سے مختلف ہونا لازم ہے۔ rand-prover keygen سے بنی <prover-home>/prover.key.json کے بغیر نوڈ شروع ہونے سے انکار کرتا ہے
--prover-home <DIR><datadir>/proverپروور کی prover.key.json اور pairings.json
--prover-accept-spend-keyمنسوخv0.6.8 سے آغاز پر مسترد: اس فلیگ کے ساتھ run نوڈ کلید پڑھنے سے پہلے ہی فلیگ کا نام لے کر بند ہو جاتا ہے۔ اب کوئی پروور اسپینڈ کی گواہ (witness) قبول نہیں کرتا؛ اسے یونٹ فائل سے نکال دیں۔ v0.6.7 پر یہ بنڈل گیسٹ v1 یا v2 والی چینز کے لیے اسپینڈ کی گواہ قبول کرتا تھا
--prover-max-parallel <N>1میزبان پروور بیک وقت کتنے پروف چلاتا ہے؛ جب تک 5.74 GB × N + 1 GiB میموری دستیاب نہ ہو، آغاز مسترد ہوتا ہے
--prover-max-queue <N>8چلنے والے کاموں کے علاوہ قطار میں موجود کام
--prover-cudaبندCUDA بیک اینڈ پر پروف بنائیں (--features cuda والا بلڈ)؛ CPU پر کوئی متبادل نہیں
--prover-skip-memory-checkبندخالی میموری کی جانچ چھوڑ دیں
--prover-fee <RAND>، --prover-fee-address <rand1…>کوئی نہیںوہ فیس جو میزبان پروور کو بھیجے گئے ہر کام کو ادا کرنی ہے، RAND میں زیادہ سے زیادہ نو اعشاریوں تک: پروف شدہ بنڈل کے اندر اس پتے کو ایک RAND آؤٹ پٹ۔ ہر فلیگ کو دوسرے کی ضرورت ہے
--prover-allow-origin <ORIGIN>براؤزر ایکسٹینشنز اور loopback صفحاتوہ براؤزر origin جس کے صفحات پروور کے جوابات پڑھ سکتے ہیں، دہرایا جا سکتا ہے؛ ایک یا زیادہ بار دیے جانے پر یہی اقدار پوری فہرست ہوتی ہیں۔ * ہر ویب سائٹ کی اجازت دیتا ہے اور انتباہ چھاپتا ہے

ماحول: RUST_LOG (طے شدہ info,libp2p=warn,libp2p_mdns=off)۔ Ctrl-C یا SIGTERM نوڈ کو صاف طریقے سے بند کرتا ہے۔

عوامی اینڈپوائنٹ https://rpc.randprotocol.org ایک آرکائیو نوڈ کے سامنے اجازت فہرست والی پراکسی ہے؛ 2026-10-01 سے اس کی اجازت فہرست عوامی سامع کا میتھڈ سیٹ ہے۔

safety

رکے ہوئے ویلیڈیٹر کی اتفاق رائے سے متعلق حفاظتی حالت (v0.6.8)۔ ہر کمانڈ ڈیٹا ڈائریکٹری خود کھولتی ہے، اس لیے کوئی بھی چلتے ہوئے نوڈ کے ساتھ نہیں چلتی۔

rand-node safety status       --datadir <dir>
rand-node safety clear-halt   --datadir <dir> --i-have-compared-this-node-with-the-fleet
rand-node safety release-lock --datadir <dir> --i-give-up-this-validators-lock

status کمٹ شدہ ہیڈ، ویو اور آخری ووٹ شدہ ویو، سب سے اونچا QC، آیا ویلیڈیٹر اپنے ہیڈ سے اوپر لاک ہے، اور کوئی بھی درج شدہ حفاظتی تعطل چھاپتا ہے۔ جو نوڈ دیکھے کہ ایک تصدیق شدہ تین-چین کسی ایسے بلاک کو کمٹ کرنے کی کوشش کر رہی ہے جو اس کے اپنے کمٹ شدہ ہیڈ کی نسل سے نہیں، وہ رک جاتا ہے اور اسے درج کر لیتا ہے (audit v6, CON-5)؛ اس کے بعد run اس ریکارڈ کے ساتھ بند ہو جاتا ہے جب تک clear-halt نہ کیا جائے۔ صاف کرنے سے پہلے اس نوڈ کا ہیڈ دو دیگر ویلیڈیٹرز کے ہیڈ سے ملائیں، اور فرق ہو تو کسی آرکائیو سے دوبارہ سنک کریں۔ v0.6.8 (CON-4) سے “موجود نہیں” جوابات کا کوئی کورم اب لاک نہیں کھولتا: جو ویلیڈیٹر کسی ایسے بلاک پر لاک ہو جو اسے حاصل نہ ہو سکے، وہ خاموش رہتا ہے جب تک ایسی تجویز نہ آئے جس کا justify لاک سے بالاتر ہو یا بلاک حاصل نہ ہو جائے۔ release-lock محفوظ شدہ لاک کو کمٹ شدہ ہیڈ کے سرٹیفکیٹ تک گھٹا دیتا ہے؛ اسے ایک وقت میں ایک ہی ویلیڈیٹر پر استعمال کریں، اور صرف تب جب بلاک ہمیشہ کے لیے ضائع ہو چکا ہو۔ اپنے تصدیقی فلیگ کے بغیر ہر لکھنے والی کمانڈ صرف یہ چھاپتی ہے کہ وہ کیا کرے گی، اور کچھ تبدیل نہیں کرتی۔

verify

آرگیومنٹطے شدہمطلب
--datadir <DATADIR>لازمینوڈ چل نہیں رہا ہونا چاہیے
--mode <MODE>fullquick یا full
--repairبندخراب آخری حصہ کاٹ دیں؛ حفاظتی حالت برقرار رہتی ہے

ہم آہنگ ہو تو ایگزٹ کوڈ 0، اور --repair کے بغیر کوئی مسئلہ ملے تو 2۔

db

db drop-receipts-index --datadir <DATADIR>، نوڈ رکا ہوا ہو: v0.3 سے پہلے کے بلڈ پر واپس جانے سے پہلے receipts_by_program انڈیکس حذف کریں، کیونکہ وہ بلڈ اس انڈیکس والا ڈیٹا بیس نہیں کھول سکتا۔ اگلا آغاز رسیدوں سے انڈیکس دوبارہ بنا دیتا ہے۔

status

--rpc <URL> (طے شدہ http://127.0.0.1:8545)۔ rand_status کو جوں کا توں چھاپتی ہے۔

register، unbond، withdraw

کمانڈدلائلمفہوم
register--key, --payout <rand1…>, --rpc, --v2اس نوڈ کی کلید سے دستخط شدہ ایک hex Registration پرنٹ کرتی ہے؛ chain id کے لیے RPC پڑھا جاتا ہے، اور --v2 کے ساتھ genesis ہیش کے لیے بھی۔ جس چین کا genesis staking.registration_v2 مقرر کرتا ہے، جیسا کہ chain 20 کا کرتا ہے، اس پر --v2 لازمی ہے؛ وہاں v1 رجسٹریشن رد کر دی جاتی ہے، اور باقی ہر جگہ v2 رجسٹریشن
unbond <amount RAND>--key, --rpc, --no-waitاسٹیک کو ان بانڈنگ میں منتقل کرتی ہے؛ مفت ہے؛ دو ایپوک بعد قابلِ نکاسی ہو جاتا ہے
withdraw <amount RAND>--key, --rpc, --no-waitآزاد شدہ اسٹیک اور انعامات کو ادائیگی کے پتے پر ایک نوٹ میں ادا کرتی ہے، 0.001 RAND بنیادی فیس منہا کر کے

admit sign|submit

ووٹ کے ذریعے داخلہ (v0.6.8)۔ جس چین کا genesis staking.admission_by_vote مقرر کرتا ہے، جیسا کہ chain 20 کا کرتا ہے، اس پر نئی ویلیڈیٹر کلید صرف اس وقت رجسٹر ہوتی ہے جب ووٹنگ وزن کے دو تہائی سے قطعی زیادہ کے حامل ویلیڈیٹر اس کے داخلے پر دستخط کر چکے ہوں۔

کمانڈدلائلمفہوم
admit sign--candidate <key hex, registration hex, or a file holding either>, --key <validator key>, --genesis-hash <hex>اس ویلیڈیٹر کا ووٹ ایک سطر میں، <voter key hex>:<signature hex> کی صورت میں، genesis ہیش اور امیدوار کے پتے پر پرنٹ کرتی ہے، تاکہ وہ ٹھیک ایک ہی چین پر معتبر ہو۔ آف لائن: کوئی نوڈ نہیں پڑھتی
admit submit--candidate …, --signature <line> (قابلِ تکرار), --rpc, --no-waitہر ووٹ کو نوڈ کے genesis ہیش کے مقابل جانچتی ہے (کسی دوسرے genesis یا امیدوار کے لیے ووٹ، یا دو بار آنے والے ووٹر کی نشاندہی کی جاتی ہے)، انہیں ترتیب دیتی ہے اور بغیر فیس کا AdmitValidator جمع کراتی ہے

امیدوار وہ کلید ہے جو رجسٹریشن میں درج ہوگی؛ rand-node address --key اسے پرنٹ کرتی ہے، اور register کا پرنٹ کردہ hex اسے رکھتا ہے۔ داخلہ کمٹ ہونے کے بعد بانڈ پہلے کی طرح ہوتا ہے (rand bond … --registration) اور اسے استعمال کر لیتا ہے۔ rand_getAdmitted داخل شدہ اور منتظر کلیدوں کی فہرست دیتا ہے۔

bridge-gov

برج کی پوسٹ کوانٹم تبدیلیاں (v0.6.8)، نگہبانوں اور توقف کلید کے حامل کے لیے۔ ہر مرحلہ chain id، اس کا پابند ڈومین اور rand_getBridgeState.rotation_nonce کو --rpc سے پڑھتا ہے (طے شدہ http://127.0.0.1:8545)۔

کمانڈکام
rotate-pq message --new-key K…موجودہ نونس کے لیے hex تبدیلی پیغام پرنٹ کرتی ہے، تاکہ ہر دستخط کنندہ پر اس کا موازنہ کیا جا سکے
rotate-pq sign --new-key K… --key F --index I [--possession]I:signature پرنٹ کرتی ہے: موجودہ PQ نگہبان کی کورم سطر (I موجودہ سیٹ میں اس کا اشاریہ) یا، --possession کے ساتھ، نئی کلید کے حامل کی سطر (I نئے سیٹ میں اس کا اشاریہ)؛ ایسی کلید فائل رد کر دیتی ہے جو I پر موجود کلید نہ ہو
rotate-pq submit --new-key K… --quorum @F [--possession @F] [--no-wait]RotatePqGuardians، یا ملکیت کی سطروں کے ساتھ V2 کارروائی، تیار کر کے بھیجتی ہے؛ جو چین ملکیت قبول نہیں کرتی اس پر ملکیت کو، اور جو اسے لازم کرتی ہے اس پر اس کی عدم موجودگی کو رد کرتی ہے، جیسا کہ chain 20 کرتی ہے
rotate-pause message|sign|submit --new-key Kتوقف کلید کے لیے یہی عمل (ملکیت اشاریہ 0)
cancel-rotation sign --kind pq|pause --key PAUSE_KEYمنسوخی پیغام پر 0:signature پرنٹ کرتی ہے، جسے چین کی موجودہ توقف کلید کے مقابل جانچا جاتا ہے
cancel-rotation submit --kind pq|pause --signature @FCancelRotation بھیجتی ہے، جو زیرِ التوا تبدیلی کو اس کی مہلت ختم ہونے سے پہلے ساقط کر دیتی ہے

--new-key ایک hex Dilithium2 عوامی کلید ہے، یا ایک ایسی @file جس میں وہ ہو، یا @key-file (اس کی عوامی کلید)۔ دستخطی سطریں index:hex ہیں، خالی جگہ یا نئی سطر سے جدا، اور # تبصروں کی اجازت ہے۔

vesting status|claim|revoke|bond|unbond

وقت سے مقفل genesis تخصیص میں حامل اور منسوخ کنندہ کا حصہ، ایسی چین پر جس کے genesis میں vesting حصہ ہو۔ chain 20 کے genesis میں ایسا کوئی حصہ نہیں۔ کلید ایک rand-node keygen فائل ہے۔

کمانڈدلائلمفہوم
vesting status <ENTRY>--rpcاندراج اسی صورت میں جیسے rand_getVesting اسے فراہم کرتا ہے: اس کی شرائط، کتنا ویسٹ ہو چکا ہے، اور ابھی کتنا قابلِ دعویٰ ہے
vesting claim--entry <id>, --to <rand1…>, --amount <RAND> یا --all, --key, --rpc, --no-waitجو کھل چکا ہے اسے --to پر ایک نوٹ میں ادا کرتی ہے، 0.001 RAND بنیادی فیس منہا کر کے؛ مستفید کی کلید سے دستخط شدہ
vesting revoke prepare--entry, --margin-secs (طے شدہ 600), --out (طے شدہ revoke.json), --rpcv0.6.8، کلید کے بغیر: وہ منسوخی لکھتی ہے جس پر ہر منسوخ کنندہ دستخط کرتا ہے، یعنی ہیڈ سے --margin-secs آگے تک ابھی غیر ویسٹ شدہ حصے کا ایک نوٹ، جو اندراج کے genesis treasury کو ادا ہوتا ہے (--to موجود نہیں)
vesting revoke sign--proposal <file>, --key, --index?ایک منسوخ کنندہ کلید، آف لائن: <index>:<signature hex> پرنٹ کرتی ہے
vesting revoke submit--proposal <file>, --signature <index:hex> (قابلِ تکرار), --rpc, --no-waitمنسوخی کو کم از کم اندراج کے threshold جتنے دستخطوں کے ساتھ، prepare کے 256 بلاکس کے اندر بھیجتی ہے۔ v0.6.7 کی واحد کلید والی vesting revoke --to ختم کر دی گئی ہے
vesting bond <amount RAND>--entry, --validator <address>, --registration <hex>, --key, --rpc, --no-waitناقابلِ منسوخ اندراجات: مقفل RAND کو اس ویلیڈیٹر کے اسٹیک کے طور پر بانڈ کرتی ہے؛ جو ویلیڈیٹر ابھی رجسٹر میں نہ ہو اس کے لیے register کا پرنٹ کردہ مواد درکار ہے
vesting unbond <amount RAND>--entry, --key, --rpc, --no-waitبانڈ شدہ RAND کو واپس قفل میں لے آتی ہے؛ ان بانڈنگ ایپوکس کے بعد دوبارہ قابلِ دعویٰ ہو جاتا ہے

aggregator register|unbond|withdraw, aggregate

aggregation حصے والی چین کے لیے ایگریگیٹر کے کردار کی کمانڈز: aggregator register --key --bond <RAND> --payout <rand1…> --rpc ایک دستخط شدہ AggregatorRegistration پرنٹ کرتی ہے؛ aggregator unbond اور aggregator withdraw ویلیڈیٹر کی جوڑی کا عکس ہیں۔ aggregate --key <KEY> [--rpc <URL>] [--watch] [--interval-secs 15] [--no-wait] وہ ڈیمن ہے جو rand_getUnsealed کو بار بار جانچتا ہے، ایک مجموعی ثبوت بناتا ہے اور اسے جمع کراتا ہے۔ chain 20 پر غیر فعال ہے، جس کے genesis میں aggregation حصہ نہیں۔

rand (والیٹ)

عمومی آپشنز، ذیلی کمانڈ سے پہلے یا بعد میں:

آپشنماحولیاتی متغیرطے شدہ
--rpc <RPC>RAND_RPChttp://127.0.0.1:8545؛ http یا https (عوامی اینڈ پوائنٹ https://rpc.randprotocol.org ہے)۔ 64 MiB سے بڑا جواب رد کر دیا جاتا ہے
--key <KEY>RAND_KEYwallet.key.json؛ نوٹ اسٹور اس کے ساتھ <key>.notes.json پر رہتا ہے۔ اسٹور اس چین کا پابند ہے جس کے مقابل اسے اسکین کیا گیا تھا (نوڈ کا rand_getGenesisHash): اگر اسے کسی دوسری چین کی طرف موڑا جائے، مثلاً chain 19 سے 20 کی تبدیلی کے پار رکھا گیا والیٹ، تو اسے خالی کر کے ایک انتباہ کے ساتھ leaf 0 سے دوبارہ اسکین کیا جاتا ہے۔ v0.6.8 سے ہر کمانڈ ایسی کلید فائل رد کر دیتی ہے جسے گروپ یا دیگر صارفین پڑھ سکیں، اور اصلاح بتاتی ہے (chmod 600 <key>)
--proverبند۔ بنڈل کا ثبوت اس مشین کے بجائے اس والیٹ سے جوڑے گئے پروور (rand prover pair) پر بنائیں؛ ثبوت کو ٹرانزیکشن میں شامل کرنے سے پہلے یہیں جانچا جاتا ہے (اس کا ڈائجسٹ، اس کا حجم اور مقامی تصدیق)۔ یہ ہر اس کمانڈ پر لاگو ہوتا ہے جو بنڈل کا ثبوت بناتی ہے؛ call اور program invoke کے لیے صرف ادائیگی والا بنڈل پروور کو جاتا ہے اور call کا ثبوت مقامی رہتا ہے۔ جوڑے کے بغیر رد کر دیا جاتا ہے، اور call کے سوا --cuda کے ساتھ بھی۔ chain 20 جیسی منقسم اجازت والی چین پر پروور کو دیکھنے کی کلید nk اور ایک نمک بھیجا جاتا ہے، خرچ کی کلید کبھی نہیں: وہ اس والیٹ کی پوری تاریخ پڑھ سکتا ہے مگر خرچ نہیں کر سکتا۔ اجازت کا ثبوت ہمیشہ اسی مشین پر بنتا ہے۔ جس چین کا بنڈل guest v1 یا v2 ہو، اس پر v0.6.8 پروور سے کچھ پوچھنے سے پہلے ہی --prover کو رد کر دیتا ہے
--max-prover-fee <RAND>1۔ جوڑا گیا پروور فی بنڈل زیادہ سے زیادہ جتنی فیس لے سکتا ہے۔ اس سے زیادہ کی پیشکش کوئی بنڈل بننے سے پہلے رد کر دی جاتی ہے؛ 0 ہر فیس کو رد کرتا ہے۔ فیس اسی بنڈل میں ایک اضافی RAND آؤٹ پٹ ہوتی ہے، جو prover fee: <amount> RAND to <fingerprint> کے طور پر دکھائی جاتی ہے

رقوم اعشاری RAND میں ہوتی ہیں، زیادہ سے زیادہ نو اعشاریہ مقامات تک (1، 1.5، .25، 0.000000001)۔ send، token mint اور token burn پر، اور randpay: لنک میں، ٹوکن کی رقم ٹوکن کی نمائشی اکائیوں میں ہوتی ہے، اس کی رجسٹری قطار کے اپنے decimals کے مطابق (zUSD کا 10 یعنی 10 zUSD)۔ bridge-burn، token create --fixed-supply اور --initial ٹوکن کی سب سے چھوٹی اکائی میں سادہ صحیح اعداد لیتی ہیں، اور asset-balance انہی کو پرنٹ کرتی ہے۔ جہاں بھی کوئی کمانڈ ٹوکن لیتی ہے، وہ رجسٹری اشاریہ، rpl1… id یا 64-hex id لیتی ہے؛ id کو اس کے اشاریے میں نوڈ کی پوری رجسٹری فہرست (rand_getTokens، ہر صفحہ) سے حل کیا جاتا ہے، فی ٹوکن تلاش سے کبھی نہیں، کیونکہ وہ نوڈ کو بتا دے گی کہ کون سا ٹوکن منتقل ہونے والا ہے۔ عددی اشاریہ نوڈ تک پہنچتا ہی نہیں۔

کمانڈآرگیومنٹسطرزِ عمل
keygen--key پر ایک نئی خرچ کلید کی فائل لکھتا ہے، موڈ 0600؛ موجودہ فائل کو اوور رائٹ کرنے سے انکار کرتا ہے
address--uri [--amount A] [--asset X] [--memo M]، --qr، --qr-png <FILE>اس والیٹ کا rand1… ایڈریس stdout پر چھاپتا ہے، صرف ایڈریس اور ایک نئی سطر، تاکہ $(rand address) کسی اسکرپٹ میں کام کرے، اور اس کا fingerprint XXXX-XXXX-XXXX-XXXX stderr پر: 16 Crockford base32 حروف، ایڈریس کی ایک انسانی جانچ جو کبھی نیٹ ورک پر نہیں بھیجی جاتی۔ --uri ایک randpay: لنک بھی چھاپتا ہے (ایڈریس کے ساتھ اختیاری رقم، اثاثہ اور میمو)۔ --qr اس لنک کو ٹرمینل میں QR کوڈ کی صورت میں دکھاتا ہے؛ --qr-png اسے PNG کے طور پر لکھتا ہے
contacts add <NAME> <TO> / list / show <NAME> [--qr] / remove <NAME>--yes (add)نام والے ایڈریس جن پر یہ والیٹ نام کے ذریعے رقم بھیج سکتا ہے۔ TO ایک rand1… ایڈریس یا ایک randpay: لنک ہے، جس میں سے صرف ایڈریس رکھا جاتا ہے۔ add فنگرپرنٹ چھاپتا ہے اور add? [y/N] پوچھتا ہے، الا یہ کہ --yes دیا گیا ہو؛ اس کے بغیر ایسا stdin جو ٹرمینل نہ ہو مسترد کر دیا جاتا ہے۔ <key>.contacts.json میں محفوظ، موڈ 0600۔ نام 1 سے 64 حروف کا ہوتا ہے، کبھی rand1 یا randpay: سے شروع نہیں ہوتا، اور منفرد ہوتا ہے
prover pair <LINK> / prover pair --trusted / show / forget--name <NAME>، --yes (pair)اس والیٹ کو ایک تفویض کردہ ثبوت ساز کے ساتھ جوڑتا ہے۔ pair وہ randprover: لنک لیتا ہے جو rand-prover pair نے چھاپا تھا، ایسا URL مسترد کرتا ہے جو https:// نہ ہو (سادہ http:// صرف localhost، 127.0.0.1 یا [::1] کے لیے)، پھر بتاتا ہے کہ ثبوت ساز کو کیا ملے گا (this prover will receive this wallet's viewing key: it can read the wallet's whole history; it cannot spend) اور pair? [y/N] پوچھتا ہے؛ --yes یہ سوال چھوڑ دیتا ہے، اور اس کے بغیر ایسا stdin جو ٹرمینل نہ ہو مسترد کر دیا جاتا ہے۔ پھر یہ ثبوت ساز سے اس کا prover_info طلب کرتا ہے، اسے مسترد کرتا ہے جب تک اس کی کلید کا فنگرپرنٹ وہی نہ ہو جو لنک میں درج ہے، اور <key>.prover.json لکھتا ہے، موڈ 0600، جو کسی بھی سابقہ جوڑ کی جگہ لے لیتا ہے۔ --trusted (v0.6.8) کوئی لنک نہیں لیتا: یہ توثیق کنندگان کے ثبوت ساز پول، https://prover.randprotocol.org، سے اس لنک کے ذریعے جوڑتا ہے جو بلڈ میں شامل ہے؛ اس کے آپریٹر اس والیٹ کی تاریخ پڑھ سکتے ہیں اور خرچ نہیں کر سکتے۔ show نام، URL، فنگرپرنٹ، own اور ثبوت ساز کی کلید چھاپتا ہے، ٹوکن کبھی نہیں؛ forget فائل حذف کر دیتا ہے۔ v0.6.7 جوڑنے سے پہلے نہیں پوچھتا تھا
viewing-keyاس والیٹ کی مشاہداتی کلید nk چھاپتا ہے، 64 ہیکس: وہی پیرامیٹر جو rand_importViewingKey لیتا ہے۔ یہ ہر وہ نوٹ پڑھ لیتی ہے جو والیٹ نے بھیجا یا وصول کیا، اور کوئی نوٹ خرچ نہیں کرتی
balanceٹری کو اسکین کرتا ہے، اسٹور محفوظ کرتا ہے، قابلِ خرچ مالیت اور غیر خرچ شدہ نوٹوں کی تعداد چھاپتا ہے
sync--rescanبیلنس چھاپے بغیر اسکین کرتا ہے۔ پہلی sync لیفس سے پہلے ہر بلاک ہیڈر پڑھتی ہے (فی کال 1,024)۔ --rescan ہر نوٹ، خرچ کا نشان اور کرسر بھلا دیتا ہے (چین کا ربط برقرار رکھتے ہوئے) اور لیف 0 سے دوبارہ اسکین کرتا ہے: یہ واپسی کا راستہ ہے جب کسی نوڈ نے اس والیٹ کے نوٹوں کو غلطی سے خرچ شدہ بتایا ہو۔ بہتر ہے کہ کسی قابلِ اعتماد نوڈ کے خلاف چلایا جائے
notes--memoہر وہ نوٹ جو اس والیٹ نے کھولا ہے: انڈیکس، اثاثہ، رقم، اونچائی، spent، pending، اور میمو 24 حروف تک مختصر، یا --memo کے ساتھ مکمل
asset-balance [INDEX]اسکین کرتا ہے، پھر چھاپتا ہے کہ یہ والیٹ ایک اثاثے میں کیا رکھتا ہے، یا ہر رکھے گئے اثاثے کے لیے ایک قطار؛ رقوم اثاثے کی اپنی سب سے چھوٹی اکائی میں
history--memoہر وہ نوٹ جو اس والیٹ نے کسی اور کے لیے بنایا، notes جیسے میمو کالم کے ساتھ
send <TO> [AMOUNT]--asset <INDEX|rand|rpl1…|hex> (طے شدہ 0، RAND)، --memo <M>، --fee <RAND> (طے شدہ 0.001)، --no-wait، --yes، --cudaTO ایک rand1… ایڈریس، ایک randpay: لنک یا محفوظ کردہ رابطے کا نام ہے، اسی ترتیب سے آزمایا جاتا ہے۔ لنک کی اپنی رقم، اثاثہ اور میمو وہ خانے پُر کرتے ہیں جو کمانڈ لائن خالی چھوڑ دے؛ AMOUNT صرف اسی وقت اختیاری ہے جب لنک میں رقم موجود ہو، اور دونوں طریقوں سے دی گئی متضاد قدر مسترد کر دی جاتی ہے۔ کمانڈ تصدیق چھاپتی ہے، to <contact, if any> · fingerprint XXXX-XXXX-XXXX-XXXX · <amount> <asset> اور، اگر میمو ہو، تو الگ سطر میں memo: "<text>"، پھر ثبوت بنانے سے پہلے پوچھتی ہے، الا یہ کہ --yes دیا گیا ہو۔ اسکرپٹ کو --yes دینا لازم ہے: ایسا stdin جو ٹرمینل نہ ہو stdin is not a terminal: pass --yes to send without confirmation کے ساتھ مسترد کر دیا جاتا ہے۔ پھر یہ اثاثے کے زیادہ سے زیادہ دو نوٹ اور فیس کے لیے زیادہ سے زیادہ دو RAND نوٹ منتخب کرتی ہے، میمو کو صرف ادائیگی کے آؤٹ پٹ میں مہر بند کرتی ہے، چار خانوں والا ایک پوشیدہ اثاثہ بنڈل ثابت کرتی ہے اور، منقسم اجازت والی چین پر، خرچ کی اجازت مقامی طور پر ثابت کرتی ہے، جمع کراتی ہے اور کمٹ کا انتظار کرتی ہے۔ غیر خالی میمو ایسی چین پر ثبوت بنانے سے پہلے ہی مسترد کر دیا جاتا ہے جس کی جینیسس میں envelope_bytes نہ ہو۔ AMOUNT اثاثے کی نمائشی اکائیوں میں ہے: RAND کے لیے اعشاری RAND، اور ٹوکن اپنی رجسٹری قطار کے اپنے decimals پر؛ صرف 0 یا rand کو RAND پڑھا جاتا ہے، نوڈ نے خواہ کوئی بھی انڈیکس بتایا ہو۔ ٹوکن id نوڈ سے پوچھنے سے پہلے ڈی کوڈ کیا جاتا ہے، اور فہرست کی ایسی قطار جو اس کا جواب انڈیکس 0 یا متضاد id خانوں سے دے، مسترد کر دی جاتی ہے۔ تصدیق ٹوکن کی رقم نمائشی اکائیوں اور بنیادی اکائیوں دونوں میں دکھاتی ہے، 10.00000000 zUSD (1000000000 units)، تاکہ ٹوکن کے decimals کے بارے میں جھوٹ بولنے والا نوڈ کچھ بھیجے جانے سے پہلے ہی ظاہر ہو جائے۔ اثاثے کا انڈیکس اور فیس ثبوت بنانے سے پہلے چھاپے جاتے ہیں۔ چین پر ٹوکن کی منتقلی ایک سادہ بنڈل ہے، جو RAND ادائیگی سے ناقابلِ امتیاز ہے؛ اس کی فیس RAND میں ہے، اور قابلِ خرچ RAND کے بغیر والیٹ ثبوت بنانے سے پہلے مسترد کر دیا جاتا ہے
bond <VALIDATOR> <AMOUNT>--registration <hex>، --fee، --no-wait، --cudaکسی توثیق کنندہ پر اسٹیک کرتا ہے: بنڈل رقم کو جلا دیتا ہے
faucet [ADDRESS]--amount <RAND> (طے شدہ اور زیادہ سے زیادہ 100)صرف testnet: کسی توثیق کنندہ نوڈ سے منٹ کرنے کی درخواست کرتا ہے۔ چین 20 پر فوسٹ صرف اپنی جینیسس اجازت فہرست کے 16 والیٹس کو ادائیگی کرتا ہے
program build--guest <fib|memcpy|bubble_sort|balance_check|private_payment|public_echo|rpl2_counter>، --arg N (قابلِ تکرار)، --out <file> (طے شدہ program.json)ایک بلٹ اِن گیسٹ کو اسمبل کرتا ہے؛ پروگرام id چھاپتا ہے۔ rpl2_counter (v0.6.8) RPL-2 کا نمائشی پروگرام ہے
program deploy <FILE>.json، ایک خام .bin، یا وہ امیج کنٹینر جو rand-guest build لکھتا ہے؛ --public <FILE>، --input <u32> (قابلِ تکرار) یا --check-call، --cudaپروگرام id، hc اور الفاظ کی تعداد چھاپتا ہے؛ چین کی حد سے بڑے پروگرام کو (rand_estimateFee کے ذریعے) ثبوت بنانے سے پہلے مسترد کرتا ہے؛ ڈیپلائے کی کم از کم فیس ایک بنڈل کے ذریعے ادا کرتا ہے، انتظار کرتا ہے۔ --public پروگرام کے ساتھ ایک عوامی ان پٹ محفوظ کرتا ہے (خالی جگہ سے الگ کیے گئے u32 الفاظ، یا ایک ELF .so)، چین کے max_program_public_words کے اندر؛ پھر پروگرام id اسے پابند کرتا ہے۔ --input یا --check-call کے ساتھ والیٹ پہلے ایمولیٹر میں ان نجی ان پٹس پر ایک آزمائشی کال چلاتا ہے اور مسترد کر دیتا ہے جب تک وہ کال کے درجے کی حد (14) میں نہ سمائے؛ اس جانچ کے لیے کچھ ثابت نہیں کیا جاتا
program show <ID>ڈیپلائے شدہ پروگرام کا میٹا ڈیٹا
program invoke <PROGRAM-ID>--transition <FILE.json> (لازمی)، --input N (قابلِ تکرار، نجی)، --inputs-file <FILE.json> (u32 کی ایک JSON array، آخر میں شامل)، --fee <RAND>، --gas-limit <N|max>، --tier T، --no-waitv0.6.8، RPL-2: پروگرام کی ایک حالتی منتقلی کا اعلان کرتا ہے اور چین سے اسے نافذ کرواتا ہے۔ کچھ بھی ثابت کرنے سے پہلے یہ جانچتا ہے کہ چین میں program_state سیکشن موجود ہے، کہ پروگرام موجود ہے، کہ منتقلی کا سیاق سیگمنٹ کے قاعدے میں سماتا ہے، کہ ہر reads اندراج زندہ سیل (rand_getProgramCell) سے مطابقت رکھتا ہے (عدم مطابقت پر باسی سیل کا نام بتاتا ہے اور 3 کے ساتھ خارج ہوتا ہے)، کہ تجوری ہر pays اندراج کے علاوہ وہ رقم بھی ادا کر سکتی ہے جو یہ منتقلی جمع کراتی ہے، اور کہ یہ والیٹ وہ ٹوکن اور RAND رکھتا ہے جو جمع اور فیس کے لیے درکار ہیں۔ یہ گنتا ہے کہ تحریریں کتنے سیل بناتی ہیں، اصل سیاقی الفاظ پر پروگرام کو آزمائشی طور پر چلاتا ہے، ٹرانزیکشن سے پابند کال ثابت کرتا ہے، پھر بنڈل (فیس، نیز burn_r کے ذریعے جلایا گیا deposit.rand اور burn_a کے ذریعے deposit.asset کا deposit.amount) اور اجازت کا ثبوت۔ طے شدہ فیس اعلان کردہ گیس کے لیے کال کی کم از کم فیس جمع ہر بنائے گئے سیل کی سیل فیس ہے، call کی طرح قیمت کے دو مراحل کی گنجائش کے ساتھ۔ ہر ادائیگی چھاپتا ہے اور، الا یہ کہ --no-wait دیا گیا ہو، رسید کے آٹھ outputs۔ شمولیت کے وقت باسی ریڈ بھی 3 کے ساتھ خارج ہوتا ہے، تاکہ کال کرنے والا ٹول دوبارہ پڑھے اور دوبارہ کوشش کرے۔ کوئی ان پٹ ٹرانسکرپٹ شائع نہیں کرتا۔ منتقلی کی فائل، جس کا ہر خانہ اختیاری ہے: {"reads": [{"key", "value"}], "writes": [...], "deposit": {"rand": "<units>", "asset": N, "amount": "<units>", "kind": "none"|"deposit"|"burn"}, "pays": [{"asset": N, "amount": "<units>", "to": "rand1…"}], "mints": [...]}؛ کلیدیں اور قدریں 64 ہیکس Word8 ہیں، رقوم اثاثے کی اپنی اکائیوں میں اعشاری اسٹرنگز، to بطورِ طے شدہ یہی والیٹ ہے
program state <ID>--cell <64 hex>v0.6.8: کلیدی ترتیب میں پروگرام کا ہر سیل (rand_getProgramCells، آخر تک صفحہ وار)، یا --cell کے ساتھ ایک سیل، غیر موجود ہونے پر 64 صفر۔ program_state سیکشن کے بغیر چین پر مسترد
program vault <ID>v0.6.8: پروگرام کی تجوری (rand_getProgramVault)، ہر رکھے گئے اثاثے کے لیے ایک قطار، رقوم اکائیوں میں۔ اس سیکشن کے بغیر چین پر مسترد
call <PROGRAM-ID>--input N (قابلِ تکرار)، --expect-public <FILE>، --tier T، --gas-limit <N|max>، --fee، --auditor <rand1…>، --no-envelope، --print-call-key، --cudaپہلے کال کو ایمولیٹر میں چلاتا ہے اور gas: <exact> (declaring <limit>, tier <t>) چھاپتا ہے: درست گیس گواہ (witness) ہے اور کبھی والیٹ سے باہر نہیں جاتی، اعلان کردہ حد ثبوت کا عوامی GAS_LIMIT ہے۔ گیس سیکشن والی چین پر طے شدہ حد درست گیس کو 2^(t−2) کے مضرب تک اوپر گول کر کے حاصل ہوتی ہے؛ max ہیڈر کی بالائی حد gas_max کا اعلان کرتا ہے، جو اس سے زیادہ کچھ ظاہر نہیں کرتی جو درجہ پہلے ہی ظاہر کرتا ہے؛ N درست گیس سے کم یا بالائی حد سے زیادہ ہو تو مسترد کر دیا جاتا ہے۔ سیکشن کے بغیر، یا --cuda کے ساتھ، طے شدہ قدر max ہے۔ پھر پروگرام کے عوامی ان پٹ پر کال کو مقامی طور پر ثابت کرتا ہے، اس کے ان پٹ ٹرانسکرپٹ کو مہر بند کرتا ہے، ایک بنڈل کے ذریعے ادائیگی کرتا ہے، رسید چھاپتا ہے۔ طے شدہ فیس اعلان کردہ حد کی کم از کم فیس ہے، BUNDLE_BASE + gas_price·GAS_LIMIT + byte_price·KiB ان قیمتوں پر جو rand_getLimits فراہم کرتا ہے، نیز جہاں قیمتیں بدلتی ہیں وہاں قیمت کے دو مراحل کی گنجائش، جو fee … RAND (incl. two price steps of headroom) کی صورت میں چھاپی جاتی ہے۔ hardening_v6 چین پر فیس ثبوت کے وجود سے پہلے طے ہو جاتی ہے، اس لیے طے شدہ قدر ثبوت کی جگہ چین کی ثبوت حد کی قیمت لگاتی ہے، جس سے صرف زائد ادائیگی ہو سکتی ہے؛ --fee ایک درست رقم ادا کرتا ہے۔ --expect-public ثبوت بنانے سے پہلے مسترد کر دیتا ہے جب تک پروگرام کا عوامی ان پٹ اس فائل کے الفاظ نہ ہوں
open-call <TXHASH>--call-key <hex>، --as-auditorکال کا ٹرانسکرپٹ کھولتا ہے، اسے H_IN کے مقابل جانچتا ہے، پروگرام دوبارہ چلاتا ہے؛ عدم مطابقت پر غیر صفر کوڈ کے ساتھ خارج ہوتا ہے
receipt <TX>کمٹ شدہ کال کی رسید
bridge-mint <ATTESTATION>ہیکس یا @path، --pq <JSON or @path> (لازمی)، --to <rand1…> (طے شدہ: یہی والیٹ)، --fee (طے شدہ: عمل کی کم از کم فیس)، --no-wait، --cudaنگہبانوں کی دستخط شدہ تصدیق کو ایک نوٹ کی صورت میں جمع کراتا ہے۔ --pq نگہبانوں کا Dilithium2 مشترکہ دستخطی کورم ہے، [{"index":0,"signature":"<4840 hex>"},…]۔ کوئی بھی ثبوت بنانے سے پہلے: تصدیق کو ڈی کوڈ کرتا ہے، کورم کو نوڈ کے pq_guardians اور چین id کے مقابل جانچتا ہے، وصول کنندہ اور اثاثے کی id جانچتا ہے، فہرست شدہ انڈیکس پڑھتا ہے (rand_getAssets)۔ جمع شدہ نوٹ کی بلائنڈنگ تصدیق کے ڈائجسٹ سے اخذ کی جاتی ہے، r = blake3("rand-deposit-r-1" || mu)، یہی واحد r ہے جسے چین قبول کرتی ہے۔ فیس بنڈل پوری ٹرانزیکشن کے مقابل ثابت کیا جاتا ہے، کورم سمیت۔ نوٹ کا owner، time اور r چھاپتا ہے
bridge-rotate <ROTATION>ہیکس یا @path، --pq <JSON or @path> (لازمی)، --fee (طے شدہ: عمل کی کم از کم فیس)، --no-wait، --cudaموجودہ PQ سیٹ کے مشترکہ دستخطی کورم کے ساتھ نگہبان سیٹ کی گردش جمع کراتا ہے، ایک ایسے BridgeAttest کے طور پر جو کچھ جمع نہیں کراتا۔ ثبوت بنانے سے پہلے ہر اس چیز کو مسترد کرتا ہے جو Rand کے سیٹ کو ایک قدم آگے بڑھانے والی گردش نہ ہو۔ بعد میں guardian_set_index چھاپتا ہے
bridge-pause--sig <HEX or @path> (لازمی)، --no-waitبرج کی منٹنگ روکتا ہے: بنڈل کے بغیر، فیس کے بغیر PauseMints، اس لیے نہ کلید فائل درکار ہے نہ RAND۔ فائل rand-bridge-gov pause کا آؤٹ پٹ ہے، توقف کلید کا 2,420 بائٹ دستخط ہیکس میں، جو برج کے موجودہ pause_nonce کے لیے بنایا گیا ہو؛ بھیجنے سے پہلے نوڈ کے pause_key اور چین id کے مقابل جانچا جاتا ہے۔ توقف کے دوران جلانا اور گردشیں کھلی رہتی ہیں
bridge-unpause--pq <JSON or @path> (لازمی)، --no-waitPQ نگہبان کورم (rand-bridge-gov pq-unpause کی فائل) کے ذریعے توقف ختم کرتا ہے، جو موجودہ pause_nonce کے لیے بنایا گیا ہو۔ بنڈل کے بغیر اور فیس کے بغیر؛ صرف توقف کلید کبھی توقف ختم نہیں کر سکتی
bridge-burn <ASSET> <AMOUNT> <TO_CHAIN> <TOKEN> <TO>--relayer-fee N، --fee (طے شدہ 0.01)، --no-wait، --cuda، --yesبرج شدہ اثاثے کو باہر جانے کے لیے جلاتا ہے: جانچتا ہے کہ TO_CHAIN پر سکہ TOKEN ASSET کی پشت پناہی کرتا ہے اور اس میں کم از کم AMOUNT مقفل ہے، اور یہ کہ AMOUNT اور ریلیئر فیس اجرا کی مکمل اکائیاں ہیں؛ پھر ایک بنڈل ثابت کرتا ہے جو خانے 0–1 میں اثاثہ خرچ کرتا ہے، اس کا ٹھیک AMOUNT جلاتا ہے (burn_a، burn_asset) اور خانے 2–3 سے RAND فیس ادا کرتا ہے۔ --relayer-fee AMOUNT کا ایک حصہ ہے، کوئی اضافی چارج نہیں۔ برج فیس والی چین پر (rand_getBridgeState.fees)، جیسی چین 20 ہے، v0.6.8 پہلے وہ فیس جو چین رکھتی ہے (اثاثے میں) اور جاری ہونے والی رقم چھاپتا ہے، اور تصدیق مانگتا ہے؛ --yes یہ سوال چھوڑ دیتا ہے، اور اس کے بغیر ایسا stdin جو ٹرمینل نہ ہو مسترد کر دیا جاتا ہے۔ اس کے بعد مقفل رقم اور ریلیئر فیس کی جانچ جاری شدہ رقم پر ہوتی ہے
token create--name، --symbol، --decimals <0..=9>، --salt <hex32> (نہ دیا جائے تو بے ترتیب)، پھر یا تو --fixed-supply <N> --to <rand1…>، --authority-key-out <FILE> [--initial <N> --to <rand1…>] یا (v0.6.8) --program <PROGRAM-ID>، ایسا ٹوکن جس کا منٹ اختیار وہ پروگرام ہو، جسے صرف اس کے invokes منٹ کرتے یا جلاتے ہیں، صفر سپلائی سے شروع ہوتا ہے اور چین کا program_state سیکشن درکار ہے، --fee (طے شدہ: بنڈل بیس جمع رجسٹری کی registration_fee؛ جب نوڈ 10 RAND سے زیادہ رجسٹریشن فیس بتائے تو مسترد، اس لیے بڑی فیس سوچ سمجھ کر ادا کرنے کے لیے --fee دیں)، --no-wait، --cudaرجسٹری کے اگلے انڈیکس پر ایک ٹوکن رجسٹر کرتا ہے: مقررہ سپلائی (ایک بار منٹ ہوتا ہے، اختیار none) یا Key سے مجاز (ایک نئی Dilithium2 کلید فائل، 0600 پر لکھی گئی، اوور رائٹ سے انکاری)۔ اختیار کی کلید <FILE>.pending پر رہتی ہے جب تک چین رجسٹریشن قبول نہ کر لے۔ اگر کوئی اور رجسٹریشن پہلے انڈیکس لے لے تو another token took index N first — re-run to register at N+1 چھاپتا ہے؛ کامیابی پر انڈیکس اور id چھاپتا ہے، ہیکس اور rpl1…
token mint--asset، --to <rand1…>، --amount <N> (ٹوکن کی نمائشی اکائیاں)، --authority-key <FILE>، --fee (طے شدہ 0.001)، --no-wait، --cudaKey سے مجاز ٹوکن مزید منٹ کرتا ہے؛ کسی بھی ثبوت سے پہلے مسترد اگر ٹوکن Key سے مجاز نہ ہو یا کلید اس کا اختیار نہ ہو
token set-authority--asset، --authority-key <FILE>، پھر یا تو --new-key <FILE> یا --renounce، --fee (طے شدہ 0.001)، --no-wait، --cudaKey سے مجاز ٹوکن کسی دوسری کلید کے حوالے کرتا ہے، یا منٹنگ سے ہمیشہ کے لیے دستبردار ہو جاتا ہے
token burn <ASSET> <AMOUNT>--fee (طے شدہ 0.001)، --no-wait، --cudaاس والیٹ کے پاس موجود کسی RPL ٹوکن کا AMOUNT، ٹوکن کی نمائشی اکائیوں میں، تلف کرتا ہے؛ اس کی عوامی سپلائی ٹھیک اتنی ہی کم ہو جاتی ہے۔ برج شدہ ٹوکن ثبوت بنانے سے پہلے مسترد کر دیا جاتا ہے: وہ bridge-burn کے ذریعے باہر جاتا ہے
token info <INDEX|rpl1…|hex>ایک ٹوکن کی مکمل rand_getTokens قطار: نام، علامت، اعشاریہ، اختیار، mint_nonce، کل سپلائی، registered_at، id (ہیکس اور id_text) اور، اگر برج شدہ ہو، ہر پشت پناہی (locked، mint_cap_per_day، minted_today، mint_day)
token list--from <index> (طے شدہ 0)، --limit <N> (طے شدہ 1000)rand_getTokens کا ایک صفحہ: enabled، registration_fee، next_index، tokens
token register-bridged--name، --symbol، --salt <hex32>، --chain، --token <hex32>، --decimals (پہلی پشت پناہی کے ماخذ کے اعشاریہ)، --pq <JSON or @path> (لازمی)، --fee (طے شدہ: بنڈل بیس جمع نوڈ کی registration_fee، token create جیسی 10 RAND کی حدِ انکار کے ساتھ)، --no-wait، --cudaجینیسس کے بعد ایک برج شدہ ٹوکن کو اس کی پہلی پشت پناہی کے ساتھ رجسٹر کرتا ہے، جسے PQ نگہبان کورم (rand-bridge-gov pq-register کی فائل) نے نوڈ کے list_nonce کے لیے مجاز کیا ہو۔ پہلے Rand پر فہرست میں شامل کریں، پھر اینڈ پوائنٹ پر setToken
token list-backing--asset <index>، --chain، --token <hex32>، --decimals، --pq <JSON or @path> (لازمی)، --fee (طے شدہ: بنڈل بیس)، --no-wait، --cudaکسی برج شدہ ٹوکن میں ایک پشت پناہی شامل کرتا ہے، جسے PQ نگہبان کورم (rand-bridge-gov pq-list کی فائل) نے نوڈ کے list_nonce پر مجاز کیا ہو
bridgeبرج کی عوامی حالت: نگہبان، ایمیٹرز، اثاثوں کی رجسٹری، جلانے کا سلسلہ
bridge-message <SEQUENCE>باہر جانے والا ایک جلانے کا پیغام، لفظ بہ لفظ
fee bundle / fee deploy <words> / fee call <tier>--public-words M (deploy)؛ --gas N، --bytes B، --keccak-log-height K، --sha256-log-height S (call)نوڈ کے نظام الاوقات سے کم از کم فیس۔ گیس سیکشن والی چین پر fee call <tier> --gas N اس اعلان کردہ حد کی قیمت لگاتا ہے جو rand call چھاپتا ہے، سرے کی قیمتوں پر اور بغیر کسی گنجائش کے: یعنی خود کم از کم فیس۔ --gas کے بغیر یہ بالائی حد gas_max(tier, K, S) کی قیمت لگاتا ہے، جو ایسی کال کی زیادہ سے زیادہ لاگت ہے۔ --bytes کال کا ثبوت جمع ان پٹ لفافے کے بائٹس ہیں
tx <HASH>کمٹ شدہ ٹرانزیکشن، اس کی اونچائی اور انڈیکس کے ساتھ
tx-key <HASH>اس ٹرانزیکشن کے ہر اس آؤٹ پٹ کے لیے ایک قطار جو اس والیٹ نے بھیجا، وصول کیا یا ریزگاری کے طور پر رکھا: output (bundle:0 … bundle:3، واحد بنڈل کے چار خانے، یا mint:0)، کردار، رقم (RAND میں، یا ٹوکن کے لیے N (asset I))، اس کے ساتھ موجود میمو (نہ ہو تو -) اور فی ٹرانزیکشن کلید جس کے تحت اسے مہر بند کیا گیا۔ sent قطار کی کلید کسی وصول کنندہ یا آڈیٹر کو دیں اور rand_checkTransaction <HASH> <KEY> وہ ایک آؤٹ پٹ، میمو سمیت، ظاہر کر دیتا ہے۔ فرضی خانہ کسی کے لیے نہیں کھلتا اور اس کی کوئی قطار نہیں ہوتی
block <ID>اونچائی یا ہیش کے ذریعے بلاک
head{ height, hash, view }
statusrand_status
peersمنسلک پیئرز
validatorsتوثیق کنندگان کا رجسٹر

--cuda کے لیے ایسا build درکار ہے جو --features cuda کے ساتھ بنایا گیا ہو، اور اس کا کوئی متبادل راستہ نہیں؛ اب تک کوئی PTX تیار نہیں کیا گیا۔ یہ call-input envelope کو seal نہیں کر سکتا: rand call --cuda کے لیے --no-envelope ضروری ہے۔ یہ صرف gas کی بالائی حد کا اعلان کرتا ہے، اور --gas-limit N کو مسترد کر دیتا ہے۔

CLI جو بھی memo اور رابطے کا نام دکھاتا ہے (send کی تصدیق، notes، history، tx-key)، وہ پہلے ایک ہی نمائشی قاعدے سے گزرتا ہے: کنٹرول حروف، Unicode کے فارمیٹ حروف (bidi کنٹرول، صفر چوڑائی والے حروف، soft hyphen) اور U+2028/U+2029 کو U+FFFD کے طور پر دکھایا جاتا ہے، اور مسلسل وقفہ جاتی حروف کو ایک وقفے کے طور پر۔

پہلی shielded منتقلی

rand keygen                                   # wallet.key.json
rand address                                  # rand1… on stdout, its fingerprint XXXX-XXXX-XXXX-XXXX on stderr
rand faucet                                   # testnet, allowlisted wallets only: 100 RAND into a note only you can open
rand balance                                  # balance: 100 RAND
rand send rand1q9f… 1.5                       # asks to confirm, then a minute and a half to two minutes of local proving, then the commit
rand notes                                    # the spent note, and the change note

پتہ اور memo کا اشتراک

rand address --uri --amount 1.5 --memo "invoice #42" --qr   # a randpay: link, as a terminal QR
rand contacts add alice rand1q9f…                           # shows the fingerprint, asks add? [y/N]
rand send alice 1.5 --memo "coffee"                         # the memo is sealed into the payment output
rand history --memo                                         # alice's row shows the whole memo
rand tx-key <hash>                                          # hand the sent row's key to alice or an auditor

memo اسی سربمہر body کے اندر ہوتا ہے جس میں note ہوتا ہے، اس لیے جو ایک کو کھول سکتا ہے وہ دوسرے کو بھی کھول سکتا ہے: وصول کنندہ notes کے ذریعے، اور ہر وہ شخص جس کے پاس اس output کی فی ٹرانزیکشن کلید ہو، rand_checkTransaction <hash> <key> کے ذریعے۔ Chain 18 پہلی chain ہے جس کا genesis envelope_bytes مقرر کرتا ہے؛ chains 14 سے 17 پر --memo کسی بھی ثبوت کی تیاری سے پہلے ہی مسترد کر دیا جاتا تھا۔

ایک خفیہ call جسے آپ بعد میں دوبارہ کھول سکتے ہیں

rand program build --guest balance_check --arg 1000 --out bc.json
rand program deploy bc.json                   # prints the program id
rand call <id> --input 100 --input 200 --input 300 --input 400
rand open-call <txhash>                       # inputs: [100, 200, 300, 400] — verdict: faithful (exit 0)

ایک stateful پروگرام: RPL-2 کاؤنٹر

ایسی chain پر جس میں program_state حصہ موجود ہو، جیسا کہ chain 20 میں ہے۔ کاؤنٹر صرف وہی transitions قبول کرتا ہے جو ایک cell کو پڑھیں اور اسے اس کے پہلے لفظ میں ایک کا اضافہ کر کے واپس لکھیں؛ transition میں باقی سب کچھ (bundle جو جمع کرتا ہے، vault جو ادا کرتا ہے، پروگرام جو mint کرتا ہے) بغیر جانچ کے ساتھ چلا جاتا ہے، جس کی وجہ سے یہ ایک مظاہرہ ہے، ایسا پروگرام نہیں جس کے پیچھے قدر رکھی جائے۔

rand program build --guest rpl2_counter --out counter.json
rand program deploy counter.json                          # prints the program id
rand token create --name "Counter Share" --symbol CTR --decimals 0 --program <id>   # say index 2
rand program state <id> --cell 0100000000000000000000000000000000000000000000000000000000000000   # 64 zeros: absent
cat > step.json <<'JSON'
{ "reads":  [{ "key": "0100…00", "value": "0000…00" }],
  "writes": [{ "key": "0100…00", "value": "0100…00" }],
  "deposit": { "rand": "500000000", "kind": "none" },
  "pays":   [{ "asset": 0, "amount": "200000000", "to": "rand1…" }],
  "mints":  [{ "asset": 2, "amount": "1" }] }
JSON
rand program invoke <id> --transition step.json           # exit 3 if the cell moved since; re-read and retry
rand program vault <id>                                   # asset 0: 300000000 units (0.5 RAND in, 0.2 out)

فائل میں … پورے 64 hex حروف کی جگہ ہیں، جو wallet کے لیے لازمی ہیں۔

deploy اور call کیا دکھاتے ہیں

منقسم اجازت والی chain پر ہر bundle دو ثبوتوں پر مشتمل ہوتا ہے جو اسی مشین پر بنائے جاتے ہیں: tier-10 کی خرچ کی اجازت اور tier-14 کا bundle۔ chain 18 پر rand v0.6.7 کے ساتھ ایک program deploy، 2026-09-30:

proving the spend authorisation on this machine (tier 10; seconds)…
authorisation proved in 6.8s: tier 10, 1368908 bytes
proving the bundle (tier 14; about a minute and a half on a laptop)…
proved in 116.7s: tier 14, 1500710 bytes
submitted deploy <hash>
  0 RAND out, 59.8545 RAND change, fee 0.1007 RAND, anchored at height 97831, proved in 116.7s (bundle) + 6.8s (auth)

ایک call اپنے call ثبوت سے پہلے اپنی gas اور فیس دکھاتا ہے، پھر ادائیگی والے bundle کا ثبوت اسی طرح تیار کرتا ہے:

proving the call locally (90 inputs stay private, over the program's 11-word public input)…
gas: 5636 (declaring 6144, tier 12)
fee 0.006191437 RAND (incl. two price steps of headroom)
proved in 29.2s: tier 12, 3346865 bytes, outputs [...]

یہاں 6,144 دراصل 5,636 ہے جسے 2^10 کے قریب ترین بڑے مضرب تک بڑھایا گیا ہے، اور rand fee call 12 --gas 6144 --bytes <B> اس حد کی قیمت tip کی قیمتوں پر بغیر کسی اضافی گنجائش کے لگاتا ہے۔

rand-prover

تفویض کردہ prover اپنی الگ binary کی صورت میں: یہ کسی wallet کا tier-14 bundle ثبوت کسی دوسری مشین پر تیار کرتا ہے۔ rand-node run --prover یہی سروس ایک node کے اندر چلاتا ہے۔ ہر ذیلی کمانڈ --home <DIR> لیتی ہے (env RAND_PROVER_HOME، طے شدہ ~/.rand-prover)، یعنی وہ ڈائرکٹری جس میں prover.key.json اور pairings.json ہوتے ہیں۔

کمانڈدلائلطرزِ عمل
keygenprover.key.json کو mode 0600 کے ساتھ لکھتا ہے، اور کلید کا fingerprint دکھاتا ہے؛ موجودہ فائل پر دوبارہ لکھنے سے انکار کرتا ہے
pair--name <LABEL> (لازمی)، --url <URL> (طے شدہ http://127.0.0.1:8600)، --own، --qrایک token بناتا ہے، لیبل کے تحت صرف اس کا hash محفوظ کرتا ہے اور randprover: pairing لنک دکھاتا ہے جو rand prover pair لیتا ہے۔ token صرف ایک بار، لنک کے اندر، دکھایا جاتا ہے۔ --url وہ پتہ ہے جہاں wallet اس prover تک پہنچتا ہے؛ --own میں own=1 شامل کرتا ہے؛ --qr لنک کو ٹرمینل QR کوڈ کے طور پر بھی دکھاتا ہے
unpair--name <LABEL>ایک pairing ختم کرتا ہے؛ چلتا ہوا prover فائل کو آغاز پر پڑھتا ہے، اس لیے یہ دوبارہ شروع کرنے پر مؤثر ہوتا ہے
pairingsہر pairing کے لیے ایک سطر: لیبل، own یا -، تاریخِ تخلیق
run--listen <ADDR> (طے شدہ 127.0.0.1:8600)، --max-parallel <N> (1)، --max-queue <N> (8)، --per-token <N> (2)، --cuda، --skip-memory-check، --allow-origin <ORIGIN> (قابلِ تکرار)، --fee <RAND> مع --fee-address <rand1…>، --accept-spend-keyCtrl-C یا SIGTERM تک prover_* JSON-RPC فراہم کرتا ہے۔ آغاز اس وقت تک مسترد رہتا ہے جب تک 5.74 GB × --max-parallel + 1 GiB میموری دستیاب نہ ہو۔ --per-token ان jobs کی تعداد ہے جو ایک pairing بیک وقت قطار میں یا زیرِ ثبوت رکھ سکتی ہے۔ --accept-spend-key کو v0.6.8 میں ختم کر دیا گیا ہے: run اس کے ساتھ شروع ہونے سے انکار کرتا ہے، اور prover صرف viewing-key witnesses قبول کرتا ہے۔ v0.6.7 پر یہ spend-key witnesses قبول کرتا تھا، جو صرف bundle guest v1 یا v2 والی chain بھیجتی ہے

chain 20 پر prover کو wallet کی viewing key nk اور ایک تازہ salt موصول ہوتے ہیں۔ یہ خرچ نہیں کر سکتا، لیکن وہ سب کچھ پڑھ سکتا ہے جو اس wallet نے کبھی وصول کیا یا بھیجا: صرف ایسے prover سے pairing کریں جسے آپ اپنی تاریخ دکھانے پر آمادہ ہوں۔ wallet واپس ملنے والے ہر ثبوت کی جانچ کرتا ہے۔

کلیدی فائلوں کے فارمیٹ

Node کلید:

{ "seed": "hex of 32 bytes", "address": "base58 of blake3(\"rand-address\" || public key)", "public_key": "hex of 1312-byte Dilithium2 public key" }

Wallet کلید، ورژن 2:

{ "version": 2, "spend_key": "hex of 8 little-endian u32 words (64 characters)" }

rand keygen اسے mode 0600 کے ساتھ لکھتا ہے، اور v0.6.8 سے ہر rand کمانڈ ایسی wallet کلید فائل کو مسترد کر دیتی ہے جسے group یا other پڑھ سکیں: ہاتھ سے کاپی یا بحال کی گئی کلید کو دوبارہ 0600 پر سیٹ کرنا ضروری ہے (chmod 600 <key>)۔ wallet کلید کھونے سے وہ تمام notes ضائع ہو جاتے ہیں جنہیں وہ کھول سکتی تھی؛ اس ریلیز میں کوئی recovery phrase نہیں ہے۔

آخری بار 2026-10-12 کو fullnode کمٹ c0878c3f (چین 21) کے مقابل تصدیق کی گئی۔ جہاں کوڈ اور یہ صفحہ ایک دوسرے سے مختلف ہوں، وہاں کوڈ درست ہے؛ ہمیں مطلع کریں۔