تین بائنریز 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> | production | test غیر محفوظ ہے اور ٹیسٹ سوئٹ کے لیے ہے؛ 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> | v1 | hc_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/30303 | libp2p سننے کا 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> | quick | off، 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> | full | quick یا 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 @F | CancelRotation بھیجتی ہے، جو زیرِ التوا تبدیلی کو اس کی مہلت ختم ہونے سے پہلے ساقط کر دیتی ہے |
--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), --rpc | v0.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_RPC | http://127.0.0.1:8545؛ http یا https (عوامی اینڈ پوائنٹ https://rpc.randprotocol.org ہے)۔ 64 MiB سے بڑا جواب رد کر دیا جاتا ہے |
--key <KEY> | RAND_KEY | wallet.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، --cuda | TO ایک 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-wait | v0.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-wait | PQ نگہبان کورم (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، --cuda | Key سے مجاز ٹوکن مزید منٹ کرتا ہے؛ کسی بھی ثبوت سے پہلے مسترد اگر ٹوکن Key سے مجاز نہ ہو یا کلید اس کا اختیار نہ ہو |
token set-authority | --asset، --authority-key <FILE>، پھر یا تو --new-key <FILE> یا --renounce، --fee (طے شدہ 0.001)، --no-wait، --cuda | Key سے مجاز ٹوکن کسی دوسری کلید کے حوالے کرتا ہے، یا منٹنگ سے ہمیشہ کے لیے دستبردار ہو جاتا ہے |
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 } | |
status | rand_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 ہوتے ہیں۔
| کمانڈ | دلائل | طرزِ عمل |
|---|---|---|
keygen | prover.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-key | Ctrl-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 نہیں ہے۔