Rand Protocol
دستاویزات
بنیادی تصورات

RPL ٹوکن

RPL ٹوکن معیار: ٹوکن بطور لیجر رجسٹری اندراج، اس کی اثاثہ شناخت، اشاریہ اور rpl1 متنی صورت، اجرا کے مجاز اختیارات، تخلیق کی لاگت، ٹوکن کی منتقلی بالکل RAND ادائیگی جیسی کیوں دکھائی دیتی ہے، اجرا اور تلفی، اور یہ ERC-20 اور SPL سے کس طرح مختلف ہے۔

اس صفحے سے سمجھیے کہ اس چین پر ٹوکن کیا ہے، اس سے پہلے کہ آپ کوئی ٹوکن بنائیں، اسے فہرست میں شامل کریں یا اس کی انڈیکسنگ کریں۔ RPL، Rand کا ٹوکن معیار ہے جو chain 14 پر نیا متعارف ہوا۔ ٹوکن ایک شیلڈڈ مقامی اثاثہ ہے: لیجر رجسٹری میں ایک اندراج، جس کے بیلنس عام نوٹس کی صورت میں اسی کمٹمنٹ درخت میں رکھے جاتے ہیں جسے RAND استعمال کرتا ہے۔ یہ کوئی کنٹریکٹ نہیں ہے۔ مرحلہ وار ٹوکن بنانے کے لیے RPL ٹوکن تعینات کریں دیکھیے۔

اس کی وجہ ساختی ہے۔ Call صرف ایک رسید لکھتا ہے، اس لیے ERC-20 طرز کے کنٹریکٹ کے پاس بیلنس رکھنے کی کوئی جگہ نہیں تھی، اور عوامی بیلنس جدول ٹوکنز کو ایک شیلڈڈ چین پر واحد شفاف اثاثہ بنا دیتا۔ اس کے بجائے RPL ٹوکن کو لیجر کا ایک بنیادی آبجیکٹ بناتا ہے۔ Chain 20 میں RPL-2 (v0.6.8) شامل ہوا ہے: ایک پروگرام عوامی اسٹیٹ سیلز اور ایک عوامی والٹ رکھ سکتا ہے، اور اپنے ہی کسی ٹوکن کی منٹ اتھارٹی بن سکتا ہے (نیچے)؛ لوگوں کے پاس موجود بیلنس اب بھی نوٹس ہی ہیں۔

ٹوکن ایک رجسٹری اندراج ہے

TokenRegistry (crates/randprotocol-core/src/ledger/tokens.rs) ایک ہی جدول ہے جو ہر ٹوکن کے لیے مشترک ہے، خواہ مقامی ہو یا برج شدہ۔ یہ وہی رجسٹری ہے جس کے ذریعے برج کسی اثاثے کا انڈیکس متعین کرتا ہے۔ ہر اندراج:

فیلڈقاعدہ
idاثاثے کی id، 32 بائٹس، مواد کی بنیاد پر متعین
indexu32، وہ قدر جو نوٹ کا asset لفظ رکھتا ہے؛ مسلسل، رجسٹریشن کی ترتیب سے 1 سے شروع ہو کر تفویض ہوتی ہے۔ انڈیکس 0، RAND ہے اور کبھی رجسٹر نہیں ہوتا
nameUTF-8 کے 1 سے 32 بائٹس، اسپیس کی اجازت ہے، ناقابلِ تبدیل
symbol1 سے 12 ASCII گرافک بائٹس (0x21..=0x7e، کوئی خالی جگہ نہیں)، ناقابلِ تبدیل
decimals0 سے 9، ناقابلِ تبدیل
authorityمنٹ اتھارٹی، نیچے دیکھیے
mint_nonceKey اتھارٹی کا ری پلے کاؤنٹر
total_supplyu64، جانچا ہوا حساب؛ اوور فلو ہونے پر منٹ مسترد ہو جاتا ہے۔ chain 15 سے یہ 2^63 سے کم رکھی جاتی ہے (نیچے)
registered_atرجسٹریشن کی بلندی

اعشاری مقامات 9 پر رک جاتے ہیں کیونکہ مقداریں u64 ہیں: 18 اعشاری مقامات پر ایک u64 صرف 18.4 مکمل ٹوکن رکھ سکتا ہے، اور 9 خود RAND کی درستی ہے۔ برج شدہ ٹوکن ہمیشہ 8 اعشاری مقامات پر رجسٹر ہوتا ہے، خواہ اس کے ماخذ سکے کچھ بھی استعمال کرتے ہوں۔

رجسٹری جینیسس فائل میں tokens حصے سے فعال ہوتی ہے، جیسے bridge اور aggregation اپنے اپنے حصوں سے فعال ہوتے ہیں۔ اس کے بغیر ہر ٹوکن عمل کسی بھی دوسری جانچ سے پہلے مسترد ہو جاتا ہے (TokenError::Disabled)۔ Chain 20 کے جینیسس میں یہ حصہ موجود ہے اور اس میں ایک ٹوکن درج ہے، zUSD، اپنی سات پشت پناہیوں کے ساتھ، جو chain 14 سے ہر نئی کٹ میں منتقل ہوتا آیا ہے؛ چین پر ہر دوسرا ٹوکن ٹرانزیکشن کے ذریعے آتا ہے۔ (chain 14 کے جینیسس میں کوئی ٹوکن درج نہیں تھا۔) گیٹ فعال ہونے پر ایک tokens_root (انڈیکس کی ترتیب میں blake3("rand-token-leaf-1", bincode(TokenInfo)) پتّوں کا مرکل روٹ) اسٹیٹ روٹ میں شامل ہو جاتا ہے۔ جس چین پر بعد کی کوئی چیز فعال نہ ہو وہاں روٹ کا ڈومین rand-state-4 ہے؛ chain 20 کا روٹ فاسیٹ اور بانڈ قطار کی اسٹیٹ، موجودہ گیس قیمتیں اور پروگرام اسٹیٹ روٹ بھی رکھتا ہے، rand-state-8 کے تحت ہیش ہوتا ہے، اور تسلیم شدہ تصدیق کنندگان کے مجموعے سے ایک بار مزید لپیٹا جاتا ہے (اتفاقِ رائے)۔

جس چین میں tokens حصہ ہو وہاں یہ بھی لازم ہے کہ ہر جینیسس alloc نوٹ اپنی اوپننگ (pk، time، r) رکھے، اور نوڈ کمٹمنٹ دوبارہ حساب کرتا ہے اور مطابقت نہ رکھنے والی فائل مسترد کر دیتا ہے۔ کمٹمنٹ اثاثہ 0 پر ہوتی ہے، الا یہ کہ اوپننگ کسی ایسے ٹوکن کا انڈیکس بتائے جو اسی جینیسس میں درج ہو — chain 20 میں ایسے دو نوٹس ہیں، انڈیکس 1 پر 10 اور 89 zUSD — اور ہر درج ٹوکن کے لیے جینیسس نوٹس کا مجموعہ اس کے برابر ہونا چاہیے جو اس کی پشت پناہیاں locked کے طور پر لے کر شروع ہوتی ہیں۔ جب نوٹ کے پاس ایسا asset لفظ ہو جو کسی ٹوکن کو نامزد کر سکے، تو بغیر اوپننگ کے جینیسس کمٹمنٹ ہی وہ واحد راستہ ہوتی جس سے کسی بھی اثاثے کا بغیر پشت پناہی والا نوٹ بغیر جانچ کے پول میں ڈالا جا سکتا۔

اثاثے کی id، انڈیکس اور rpl1…

ایک ٹوکن کے دو نام ہوتے ہیں، اور RPC دونوں فراہم کرتا ہے۔

  • اثاثے کی id 32 بائٹس ہے، جو پروگرام id کی طرح مواد کی بنیاد پر متعین ہوتی ہے۔ مقامی ٹوکن کی id blake3("rand-rpl-asset", bincode(name, symbol, decimals, authority, initial, salt)) ہے، جہاں salt وہ 32 بائٹس ہیں جو بنانے والا منتخب کرتا ہے اور initial پورا ابتدائی منٹ ہے، اگر ہو۔ برج شدہ ٹوکن کی id blake3("rand-rpl-asset", bincode(name, symbol, 8, salt)) ہے۔ پہلے سے موجود id کو رجسٹر کرنا مسترد ہو جاتا ہے (TokenError::AlreadyRegistered)۔
  • انڈیکس وہ چیز ہے جو نوٹ حقیقت میں رکھتا ہے، کیونکہ 32 بائٹ کی id ایک لفظ میں نہیں سماتی۔ یہ ایک مختصر شکل ہے جس کا مطلب صرف اسی چین پر ہے۔
  • متنی شکل rpl1… 32 id بائٹس پر bech32m (BIP-350) ہے جس کا انسانی طور پر قابلِ مطالعہ حصہ rpl ہے: 52 ڈیٹا حروف اور 6 حرفی چیک سم، کُل 62 حروف۔ جہاں کہیں ٹوکن کا نام آئے وہاں یہ 64-hex id کے ساتھ دکھائی جاتی ہے اور جہاں کہیں ٹوکن تلاش کیا جائے وہاں قبول کی جاتی ہے؛ hex بدستور قبول ہے۔ پارسنگ سخت ہے: غلط چیک سم، غلط سابقہ، ایسا پے لوڈ جو ٹھیک 32 بائٹس نہ ہو، یا ملے جلے چھوٹے بڑے حروف مسترد ہو جاتے ہیں، تاکہ کوئی املائی غلطی کسی دوسرے ٹوکن تک نہ پہنچا سکے۔

علامتیں منفرد نہیں ہوتیں۔ ERC-20 اور SPL کی طرح، ٹوکن کی شناخت اس کی اثاثہ id ہے، کبھی اس کا نام یا ٹکر نہیں۔

پرانی فی-(chain, token) قدر جو rand_bridgeAssetId حساب کرتا ہے اور rand_getAssets ہر پشت پناہی والی قطار کے لیے دکھاتا ہے، برج کے وائر فارمیٹ کے لیے ایک محدود تر شناخت کنندہ ہے، ٹوکن کی اپنی id نہیں۔

منٹ اتھارٹیز

اتھارٹیاکائیاں کون جاری کر سکتا ہےنوٹس
Noneرجسٹریشن کے بعد کوئی نہیںمقررہ رسد: ابتدائی منٹ لازم ہے اور یہی کُل مقدار ہے جو کبھی ہو گی
Key(PublicKey)ایک Dilithium2 کلید کا حاملبعد میں دستخط کے ذریعے دوبارہ منٹ کرتا ہے؛ اتھارٹی کسی دوسری کلید کو سونپ سکتا ہے یا اس سے دستبردار ہو سکتا ہے
Bridge { backings }صرف برج کا لاک اور ریلیزکبھی براہِ راست منٹ نہیں؛ صرف برج کے گورننس اقدامات کے ذریعے وجود میں آتا ہے
Program(ProgramId)صرف اس پروگرام کے Invoke (RPL-2)ایسی چین پر جس میں program_state حصہ ہو (chain 20): بغیر ابتدائی منٹ کے رجسٹر ہوتا ہے، اس لیے اس کی رسد صفر سے شروع ہوتی ہے، اور صرف انہی تبدیلیوں سے منٹ یا برن ہوتا ہے جن کی ضمانت پروگرام کا ثبوت دے (rand token create --program <id>)۔ اس حصے کے بغیر چین پر رجسٹریشن کے وقت مسترد ہو جاتا ہے

Bridge نامزد کرنے والا RegisterToken مسترد ہو جاتا ہے (TokenError::AuthorityNotAllowed)، اور اسی طرح وہ بھی جو Program کو ابتدائی منٹ کے ساتھ یا program_state کے بغیر چین پر نامزد کرے۔ Key اتھارٹی ٹھیک ایک Dilithium2 عوامی کلید ہوتی ہے: کسی بھی دوسری بائٹ لمبائی کی کلید مسترد ہو جاتی ہے (TokenError::BadAuthorityKey)، اور منٹ میں وصول کنندہ کی ML-KEM کلید بھی اسی طرح اپنی لمبائی کی پابند ہے۔ دونوں یا تو اتفاقِ رائے کی اسٹیٹ ہیں یا مقررہ فیس پر خریدی گئی بلاک جگہ، اس لیے کوئی بھی من مانی حد تک بڑی نہیں ہو سکتی۔

ٹوکن بنانا

ٹوکن بنانے کے لیے کسی اجازت کی ضرورت نہیں۔ Action::RegisterToken { name, symbol, decimals, authority, initial, salt, index } ایک عام RAND فیس بنڈل کے ساتھ جاتا ہے اور BUNDLE_BASE کے علاوہ رجسٹری کی registration_fee ادا کرتا ہے۔ رجسٹریشن فیس ایک جینیسس پیرامیٹر ہے جو 1 RAND اور 10,000 RAND کے درمیان محدود ہے، اس لیے اسپام ٹوکن کی ہمیشہ کچھ نہ کچھ قیمت ہوتی ہے۔ chain 20 پر یہ 1 RAND ہے، اس لیے ایک رجسٹریشن کی لاگت 1.001 RAND ہے، اور chain 20 اسے برن کر دیتی ہے، جیسا کہ chain 15 کے بعد سے ہر چین نے کیا ہے: تجویز کنندہ صرف بنڈل بیس اپنے پاس رکھتا ہے (نیچے)۔

index اس رجسٹری انڈیکس کو نامزد کرتا ہے جس کے لیے بنانے والے نے ابتدائی نوٹ مہر بند کیا تھا۔ اگر کسی دوسری رجسٹریشن نے وہ انڈیکس پہلے لے لیا ہو تو نوٹ کو بے سہارا چھوڑنے کے بجائے ٹرانزیکشن مسترد ہو جاتی ہے (TokenError::IndexMismatch)؛ بنانے والا اگلے انڈیکس پر دوبارہ ثبوت تیار کرتا ہے۔

منٹ شدہ نوٹ چین حساب کرتی ہے، جمع کرانے والا اسے منتخب نہیں کرتا: note_commitment(recipient.pk, MINT_FROM, amount, index, time, r)۔ مقدار اور وصول کنندہ کی pk وائر پر عوامی ہیں، اس لیے وصول کنندہ ٹرانزیکشن کے اپنے فیلڈز سے نوٹ دوبارہ بنا سکتا ہے، چاہے مہر بند لفافہ ناکارہ ہو۔ برج ڈپازٹ کا دفاع بھی یہی ہے۔

id پورے ابتدائی منٹ کو کیوں باندھتی ہے

RegisterToken غیر دستخط شدہ ہوتا ہے۔ ٹرانزیکشن بائنڈنگ کسی ثابت شدہ نقل کو تبدیل ہونے سے روکتی ہے، لیکن اس بارے میں کچھ نہیں کہتی کہ ایک نئی نقل کیا نامزد کر سکتی ہے۔ اگر id صرف ابتدائی مقدار کا احاطہ کرتی تو زیرِ التوا رجسٹریشن کا مشاہدہ کرنے والا کسی مختلف وصول کنندہ کے ساتھ ایک نقل جمع کرا سکتا، اسے اسی id کے تحت رجسٹر کر سکتا، اور پہلے کمٹ کر کے مقررہ رسد والے ٹوکن کی پوری رسد لے سکتا۔ چونکہ id پورے ابتدائی منٹ (مقدار، وصول کنندہ، r، time اور لفافہ) کا احاطہ کرتی ہے، اس لیے رخ بدلی ہوئی نقل کا ہیش ایک مختلف اثاثہ id بنتا ہے: اسی علامت والا ایک مختلف ٹوکن، جس کی غیر منفرد علامت پہلے ہی اجازت دیتی ہے۔ اصل ٹوکن پھر بھی ایک بار دوبارہ ثبوت کی لاگت پر اگلے انڈیکس پر درج ہو جاتا ہے۔

منتقلیاں وہی بنڈل ہیں جو RAND کا ہے

chain 14 سے ہر قدر منتقل کرنے والی ٹرانزیکشن ٹھیک ایک بنڈل رکھتی ہے، یعنی مقررہ 4-ان-4-آؤٹ پوشیدہ اثاثہ ساخت (ٹرانزیکشنز اور اعمال)۔ سلاٹ 0–1 ایک نجی اثاثہ رکھتے ہیں، RAND یا کوئی بھی RPL ٹوکن، اور سرکٹ کو کبھی معلوم نہیں ہوتا کہ کون سا۔ سلاٹ 2–3 ہمیشہ RAND رکھتے ہیں۔ کسی بھی اثاثے کی منتقلی Action::None ہے، وہی عمل جو ایک سادہ RAND ادائیگی استعمال کرتی ہے۔ ٹوکن منتقلی کا کوئی الگ عمل نہیں اور ٹوکن کو نامزد کرنے والا کوئی عوامی فیلڈ نہیں۔

ٹوکن کی منتقلی کا مشاہدہ کرنے والا بالکل وہی دیکھتا ہے جو RAND کی ادائیگی شائع کرتی ہے: ایک اینکر، چار نلیفائر، چار کمٹمنٹس، RAND fee، burn_a = burn_r = burn_asset = 0، ایک time، چار لفافوں کے مرموز متن اور بنڈل کا ثبوت۔ چین 17 (منقسم اجازت) سے ہر بنڈل میں ایک auth_commit اور ایک دوسرا، چھوٹا اجازتی ثبوت بھی ہوتا ہے، جو پھر ہر اثاثے کے لیے یکساں ہے۔ چین 20 پر ہر لفافہ ٹھیک 1,860 بائٹ کا ہے اور اس میں ایک خفیہ کردہ میمو (rand send --memo) کی گنجائش ہوتی ہے، خواہ میمو بھیجا جائے یا نہیں۔ مشاہدہ کرنے والا بھیجنے والے، وصول کنندہ، رقم، منتقل ہونے والے اثاثے، فرضی سلاٹس یا بقایا رقم میں سے کچھ نہیں دیکھتا۔

والیٹ سلاٹ 0–1 میں ٹوکن کے زیادہ سے زیادہ دو نوٹ اور فیس کے لیے سلاٹ 2–3 میں زیادہ سے زیادہ دو RAND نوٹ خرچ کرتا ہے۔ فیس ہمیشہ RAND میں ہوتی ہے، اس لیے جس حامل کے پاس ٹوکن ہو مگر RAND نہ ہو، اسے ثبوت بنانے سے پہلے ہی رد کر دیا جاتا ہے۔ لاگت RAND کی ادائیگی جتنی ہی ہے (فیس)۔ چین 20 پر یہ بھیجنے والے کی مشین پر بنائے گئے دو STARK ثبوت ہیں: خرچ کی اجازت (درجہ 10، تقریباً 7 s، تقریباً 1.37 MB) اور بنڈل (درجہ 14، تقریباً 100 s، تقریباً 1.5 MB)، جو مل کر نیٹ ورک پر تقریباً 2.85 MB بنتے ہیں۔ ان میں سے ہر ایک، ایک ثبوت کے لیے چین کی 4 MiB کی حد سے کم ہے۔ چین 17 سے پہلے منتقلی میں صرف بنڈل کا ثبوت ہوتا تھا، جو اُس وقت کی پیمائش کے مطابق تقریباً 1.42 MB تھا۔

اجرا اور اختیار

TokenMint { asset, amount, recipient, r, time, envelope, nonce, signature } کسی Key سے مجاز ٹوکن کی مزید مقدار جاری کرتا ہے۔ SetAuthority { asset, new, nonce, signature } اختیار کسی دوسری کلید کو سونپ دیتا ہے، یا جب new موجود نہ ہو تو اختیار سے دستبرداری کر دیتا ہے؛ دستبرداری کے بعد کوئی کلید کبھی دوبارہ وہ ٹوکن جاری نہیں کر سکتی۔ جس ٹوکن کا اختیار Key نہ ہو، اس پر ان دونوں میں سے کوئی بھی عمل رد کر دیا جاتا ہے (TokenError::NotKeyAuthority)۔

اختیار رکھنے والی کلید blake3("rand-rpl-mint-1" | "rand-rpl-authority-1", chain_id ‖ asset_id ‖ nonce ‖ body) پر دستخط کرتی ہے۔ nonce کا ٹوکن کے mint_nonce کے برابر ہونا لازم ہے، جو اس کے بعد ایک بڑھ جاتا ہے، چنانچہ دستخط شدہ اجرا نہ اس چین پر دہرایا جا سکتا ہے اور نہ کسی دوسری چین پر لے جایا جا سکتا ہے۔ اجرا کے body میں لفافے کا ڈائجسٹ شامل ہوتا ہے: صرف کمٹمنٹ لفافے کا احاطہ نہیں کرتی، اور ڈائجسٹ کے بغیر کوئی تیسرا فریق نیٹ ورک میں گردش کرتے اجرا کو بے معنی لفافے کے ساتھ دوبارہ لپیٹ کر نانس ضائع کر سکتا تھا۔

دونوں عمل BUNDLE_BASE ادا کرنے والے RAND فیس بنڈل کے ساتھ جاتے ہیں۔ فیس ادا کرنے والا والیٹ اور اجرا کی اجازت دینے والی کلید الگ الگ ہیں اور مختلف افراد کی ملکیت ہو سکتی ہیں۔

برن

Action::TokenBurn { asset, amount } اسی واحد بنڈل کے ساتھ جاتا ہے: بنڈل کا burn_asset لازماً asset کے برابر اور burn_a لازماً amount کے برابر ہو، اور burn_r کی قدر 0 ہو۔ ٹوکن اثاثے کے سلاٹس کے ذریعے پول سے نکلتا ہے اور RAND فیس اسی ثبوت کے سلاٹ 2–3 کے ذریعے۔ total_supply ٹھیک amount جتنی کم ہو جاتی ہے۔ Bridge اختیار والا ٹوکن یہاں رد کر دیا جاتا ہے (TokenError::BridgedToken)؛ وہ برج برن کے ذریعے نکلتا ہے۔

فیس

ہر RPL عمل کی ادائیگی RAND میں ہوتی ہے۔

عملکم از کم فیسچین 20 پر
کسی بھی اثاثے کی منتقلی (Action::None)BUNDLE_BASE0.001 RAND
RegisterTokenBUNDLE_BASE + registration_fee1.001 RAND، جس میں سے 1 RAND برن ہوتا ہے
TokenMintBUNDLE_BASE0.001 RAND
SetAuthorityBUNDLE_BASE0.001 RAND
TokenBurnBUNDLE_BASE0.001 RAND

چین 20 کے جینیسس میں ایک gas حصہ ہے، اور وہ صرف پروگرام کالز اور پروگرام انووکیشنز کی قیمت طے کرتا ہے۔ یہ کم از کم فیسیں مقررہ ہیں: کوئی بھی RPL عمل گیس یا بائٹ کے حساب سے ادائیگی نہیں کرتا۔

کیا عوامی ہے اور کیا پوشیدہ

عوامیپوشیدہ
رجسٹریشننام، علامت، اعشاریے، اختیار، اثاثے کی شناخت، ابتدائی اجرا کی رقم اور وصول کنندہکچھ نہیں؛ اسی طرح کسی ٹوکن کی سپلائی اس کے پہلے بلاک سے قابلِ آڈٹ ہوتی ہے
مزید اجرارقم، وصول کنندہ کا شیلڈڈ پتا، نئے نوٹ کے فیلڈزRAND فیس کس نے ادا کی
منتقلیایسی کوئی چیز نہیں جس سے پتا چلے کہ کوئی ٹوکن منتقل ہوا بھی ہےبھیجنے والا، وصول کنندہ، رقم، کون سا اثاثہ
برناثاثہ اور رقمبرن کیے گئے نوٹ کس کے پاس تھے
اختیار کی تبدیلینئی کلید، یا یہ کہ اختیار سے دستبرداری ہو گئی—

لہٰذا total_supply ہمیشہ قابلِ آڈٹ ہے: یہ وہ مقدار ہے جو رجسٹریشن اور ہر اجرا نے شامل کی، منہا ہر برن۔ حاملین کے درمیان منتقلی کچھ ظاہر نہیں کرتی، یہ بھی نہیں کہ RAND کے بجائے کوئی ٹوکن ہاتھ بدلا ہے۔

افشا اسی طرح کام کرتا ہے جیسے RAND کے لیے۔ نوٹ کے سادہ متن میں اثاثہ شامل ہوتا ہے، اس لیے فی لین دین کلید (rand tx-key <hash>) یا مشاہداتی کلید ٹوکن نوٹ کو بالکل اسی طرح کھولتی ہے جیسے RAND نوٹ کو، اور rand_checkTransaction اور rand_getViewingNotes جس نوٹ کو افشا کرتے ہیں اس میں asset لوٹاتے ہیں۔ ایسی کلید دستیاب ہو تو randscan رجسٹری میں اشاریہ تلاش کر کے منتقلی کو نام والے ٹوکن کے طور پر دکھاتا ہے؛ اسی لین دین کا عوامی صفحہ اس میں سے کچھ نہیں دکھاتا۔

برج شدہ ٹوکن

Bridge اختیار والا ٹوکن بھی RPL ٹوکن ہی ہے: وہی رجسٹری اندراج، وہی پوشیدہ منتقلی، برن کا وہی طریقۂ کار۔ اس کی سپلائی صرف ماخذ چین پر مقفل کرنے (BridgeAttest) یا ریلیز (BridgeBurn) کے ذریعے بدلتی ہے۔ ایک برج شدہ ٹوکن کی کئی پشت پناہیاں ہو سکتی ہیں، ہر ایک ایک (chain, token) جوڑا جس کے اپنے ماخذ اعشاریے، مقفل رقم اور اجرا کی حد ہوتی ہے، اور total_supply ہمیشہ اس کی پشت پناہیوں کی مقفل رقوم کے مجموعے کے برابر ہوتی ہے۔ برج شدہ ٹوکن کی رجسٹریشن، اور کسی پشت پناہی کا اضافہ، صرف برج کے پوسٹ کوانٹم نگہبانوں کے کورم کے تحت ہوتا ہے۔

چین 20 پر رجسٹری کا پہلا ٹوکن zUSD (“Shielded USD”) ہے، اشاریہ 1، 8 اعشاریے، جو جینیسس فائل میں سات پشت پناہیوں کے ساتھ درج ہے (Ethereum، Binance Smart Chain اور Solana پر USDT اور USDC، اور Tron پر USDT)۔ اس کی اثاثہ شناخت وہی ہے جو چین 14 پر تھی، جہاں اسے بلندی 256 پر ایک لین دین کے ذریعے رجسٹر کیا گیا تھا: چین 15 سے 20 تک ہر چین اسے جینیسس میں اسی نام، علامت اور سالٹ کے ساتھ درج کرتی ہے۔ چین 20 کا آغاز اس نے دو جینیسس نوٹوں (10 اور 89) میں 99 zUSD کے ساتھ کیا، جن کی پشت پر Ethereum پر 22 USDT، Binance Smart Chain پر 22، Tron پر 30 اور Solana پر 25 مقفل تھے، جو چین 19 کی برج حالت سے منتقل کیے گئے۔ چین 19 کا آغاز 10 zUSD سے ہوا، جن کی پشت پر Solana پر 10 USDT تھے؛ چین 18 کا آغاز Tron پر 9 مقفل USDT اور Solana پر 1 سے ہوا۔ اس کی کل سپلائی اس رقم کے برابر ہے جو اس کی پشت پناہیوں میں مقفل ہے، اور ہر جمع اور واپسی کے ساتھ بدلتی ہے۔ اس کی شناخت rpl1xtj6k2x8strx8c2d5fjs50ltztck5ykms4ve7nmzmstf6fhn0v0spelqtx ہے۔ برج پشت پناہیوں، ریلیز اکائیوں، اجرا کی حدوں، توقف اور مشترکہ دستخط کا احاطہ کرتا ہے۔

zUSD ایک ٹوکری ہے، سات الگ الگ دعوے نہیں۔ اس کی پشت پناہیاں ظاہری قدر پر یکجا ہیں، اس لیے حامل ہر درج شدہ پشت پناہی کا خطرہ اٹھاتا ہے، نہ کہ صرف اس سکے کا جو اس نے جمع کرایا: جو پشت پناہی اپنا پیگ کھو چکی ہو اسے برابر قدر پر جمع کرا کے zUSD کو کسی مستحکم پشت پناہی کی جانب برن کیا جا سکتا ہے، یہاں تک کہ مستحکم پشت پناہیاں خالی ہو جائیں۔ نقصان کو محدود کرنے والی چیزیں اجرا کی رواں کھڑکی (چین 20 پر تمام پشت پناہیوں میں مجموعی طور پر فی 24 گھنٹے 4,000 zUSD، اس کے ساتھ فی پشت پناہی 100,000) اور حقیقتاً مقفل تحویل ہیں۔ کھڑکی شرح کو محدود کرتی ہے اور اجرا روکنے کا وقت دیتی ہے۔ یہ کل مقدار کی حد مقرر نہیں کرتی۔ کوئی پشت پناہی صرف پوسٹ کوانٹم نگہبانوں کے کورم کے تحت درج ہوتی ہے، اور اجرا معطل ہونے کے دوران نہیں۔

برج کی فیس، zUSD میں (چین 20)۔ چین 20 کا جینیسس bridge.fees مقرر کرتا ہے: جمع پر 10 bps اور برن پر 10 bps، ہر ایک کو پشت پناہی کی پوری ریلیز اکائی تک نیچے کی طرف گول کیا جاتا ہے (6 اعشاریے والے USDT کے لیے 100 بنیادی اکائیاں)، اور یہ جینیسس میں نامزد خزانے کے پتے کو zUSD نوٹ کی صورت میں ادا ہوتی ہے (v0.6.8، fullnode docs/bridge.md §25)۔ g کی جمع دو نوٹ شامل کرتی ہے: جمع کنندہ کا g − fee اور خزانے کا fee؛ 1 USDT جمع کرانے پر جمع کنندہ کو 0.999 zUSD ملتے ہیں۔ amount کا برن fee کو خزانے کے نوٹ کے طور پر رکھتا ہے اور ماخذ چین پر amount − fee ریلیز کرتا ہے؛ نگہبان اسی ریلیز رقم پر دستخط کرتے ہیں، اور rand_getBridgeBurn amount، release_amount اور fee فراہم کرتا ہے۔ فیس نوٹ جاری شدہ بھی ہے اور پشت پناہی یافتہ بھی، اس لیے total_supply بدستور پشت پناہیوں کے locked کے مجموعے کے برابر رہتی ہے: جمع دونوں کو g جتنا بڑھاتی ہے، برن دونوں کو amount − fee جتنا کم کرتا ہے۔ فیس نوٹ کے ساتھ کوئی لفافہ نہیں ہوتا۔ اس کا ہر لفظ عوامی ہے (رقم لین دین اور جینیسس کی شرح سے، اثاثہ اور time، تصدیق نامے کے ڈائجسٹ یا برن کی لین دین شناخت سے اخذ کردہ بلائنڈنگ، اور مالک جینیسس سے)، اس لیے خزانے کا والیٹ اسے عوامی فیلڈز سے دوبارہ تیار کر لیتا ہے (نوٹ)۔ BRIDGE_BURN_FEE، یعنی وہ 0.01 RAND جو برن تجویز کنندہ کو ادا کرتا ہے، تبدیل نہیں ہوا۔ چین 14 سے 19 تک Rand پر کوئی برج فیس نہیں تھی۔

چین 15 سے رجسٹری

چین 15 سے جینیسس رجسٹری کے تین ایسے اصول نافذ کرتا ہے جو چین 14 میں نہیں تھے، اور چین 20 کا جینیسس یہی تین قدریں مقرر کرتا ہے۔ ہر ایک جینیسس ہیش اور ٹوکن روٹ میں کمٹ شدہ ہے۔

جینیسس فیلڈچین 20اثر
tokens.max_tokens4096رجسٹری میں اس سے زیادہ ٹوکن کبھی نہیں ہوتے؛ حد پوری ہونے پر RegisterToken اور RegisterBridgedToken کو RegistryFull کے ساتھ مسترد کر دیا جاتا ہے۔ ListBacking کوئی ٹوکن شامل نہیں کرتا اور اس سے متاثر نہیں ہوتا
tokens.burn_registration_feetrueرجسٹریشن کی registration_fee تجویز کنندہ کو ادا کرنے کے بجائے تلف کر دی جاتی ہے، اور تجویز کنندہ کے پاس fee − registration_fee رہتی ہے۔ rand_getSupply اسے burned اور registration_fees_burned میں شمار کرتا ہے (رسد)
tokens.bound_note_valuetrue2^63 یا اس سے زیادہ کا TokenMint، ابتدائی اجرا یا برج ڈپازٹ AmountTooLarge کے ساتھ مسترد کر دیا جاتا ہے، اور جو کسی ٹوکن کی total_supply کو 2^63 تک یا اس سے آگے لے جائے وہ SupplyTooLarge کے ساتھ

نوٹ کی قدر پر یہ حد اس لیے رکھی گئی ہے کہ بنڈل سرکٹ ہر رقم کی 63 بٹ تک رینج جانچ کرتا ہے: 2^63 یا اس سے زیادہ قدر کا نوٹ کمٹ تو ہو سکتا ہے مگر کبھی خرچ نہیں ہو سکتا، جبکہ وہ ٹوکن کی رسد میں شمار ہوتا رہتا ہے۔ ہر نوڈ ہر چین پر داخلے کے وقت ہی ایسی رقم مسترد کر دیتا ہے، خواہ اس کا جینیسس کچھ بھی کہے۔

RPC اور CLI

میتھڈپیرامیٹرزنتیجہ
rand_getTokens[from_index, limit]، اختیاری، طے شدہ قدریں 0 اور 1000، زیادہ سے زیادہ 1000{ enabled, registration_fee, next_index, max_tokens, burn_registration_fee, bound_note_value, tokens }، انڈیکس کے بڑھتے ہوئے ترتیب میں، from_index سے رینج کے ذریعے پڑھا گیا
rand_getToken[token]: ایک انڈیکس، 64 ہیکس شناخت یا rpl1…ایک ٹوکن کی قطار، یا null؛ غلط ساخت کی شناخت پر -32602
rand_getTokenSupply[token]، انہی صورتوں میں{ total_supply, backings }؛ مقامی ٹوکن کے لیے backings خالی ہوتا ہے

ان نتائج میں ہر رقم (total_supply، registration_fee، کسی بیکنگ کی locked، mint_cap_per_day اور minted_today) اعشاری اسٹرنگ ہوتی ہے، کیونکہ JSON نمبر 2⁵³ سے آگے درست نہیں رہتا۔ index، next_index، mint_day اور max_tokens سادہ عدد صحیح ہیں (جس چین پر حد نہ ہو وہاں max_tokens کی قدر null ہوتی ہے)؛ burn_registration_fee اور bound_note_value بولین ہیں۔ کسی قطار کی authority یہ ہوتی ہے: {"kind":"none"}، {"kind":"key","key","address"}، {"kind":"bridge","backings":[…]} یا {"kind":"program","program"}۔ مکمل تفصیل JSON-RPC میں ہے۔

رازداری۔ rand_getTokens کی لاگت یکساں رہتی ہے، چاہے کالر کے ذہن میں کوئی بھی ٹوکن ہو۔ rand_getToken اور rand_getTokenSupply نوڈ کو بتا دیتے ہیں کہ کالر کس ٹوکن میں دلچسپی رکھتا ہے: ایکسپلورر کے لیے یہ ٹھیک ہے، مگر بھیجنے والے والٹ کے لیے غلط۔ اسی لیے والٹ ہر --asset کو پوری فہرست سے متعین کرتا ہے، اور عددی انڈیکس نوڈ تک پہنچتا ہی نہیں۔

کمانڈکیا کرتی ہے
rand token createرجسٹری کے اگلے انڈیکس پر ٹوکن رجسٹر کرتی ہے، مقررہ رسد والا یا Key سے مجاز
rand token mintKey سے مجاز ٹوکن کی مزید مقدار جاری کرتی ہے، اس کی اتھارٹی کلید کے دستخط سے
rand token set-authorityاتھارٹی کسی دوسری کلید کو منتقل کرتی ہے (--new-key) یا اس سے دستبردار ہوتی ہے (--renounce)
rand token burn <ASSET> <AMOUNT>اس والٹ میں موجود اکائیاں تلف کرتی ہے
rand token info <ASSET>ایک ٹوکن کی مکمل قطار
rand token listرجسٹری کا ایک صفحہ
rand send <TO> <AMOUNT> --asset <INDEX|rpl1…|hex>ایک بنڈل میں ٹوکن بھیجتی ہے؛ --asset کے بغیر RAND بھیجتی ہے۔ یہ وصول کنندہ کا فنگر پرنٹ اور رقم دکھاتی ہے اور ثبوت بنانے سے پہلے send? [y/N] پوچھتی ہے (--yes سوال چھوڑ دیتا ہے)
rand asset-balance [INDEX]کسی ایک اثاثے میں اس والٹ کی ملکیت، یا ہر اثاثے کے لیے ایک قطار
rand token register-bridged، rand token list-backingبرج کی دو فہرست سازی کی کارروائیاں؛ ہر ایک کو PQ گارڈین کورم فائل درکار ہے

v0.5.10 سے rand send --asset، rand token mint اور rand token burn کی رقمیں ٹوکن کی نمائشی اکائیوں میں ہیں، جو اس کی رجسٹری قطار کے اپنے decimals کے مطابق پڑھی جاتی ہیں: 6 اعشاریہ والے ٹوکن کا 1.5 اس کی سب سے چھوٹی اکائی کے 1,500,000 ہے، اور ٹوکن سے زیادہ کسری ہندسے مسترد کر دیے جاتے ہیں۔ send کی تصدیق دونوں دکھاتی ہے (1.500000 USDX (1500000 units))۔ rand token create کے --fixed-supply اور --initial اب بھی پوری سب سے چھوٹی اکائیاں لیتے ہیں، اسی طرح rand bridge-burn بھی، اور rand asset-balance سب سے چھوٹی اکائیاں دکھاتی ہے۔ چین پر رقم ہمیشہ سب سے چھوٹی اکائی کا عدد صحیح ہوتی ہے۔ فلیگز اور طے شدہ قدریں کمانڈ لائن میں ہیں۔

ERC-20 اور SPL سے فرق

ERC-20 / SPLRPL
بیلنسعوامی میپنگ یا اکاؤنٹشیلڈڈ نوٹس؛ انہیں صرف کلید کا حامل دیکھ سکتا ہے
منتقلی کے ایونٹسعوامی، بھیجنے والے، وصول کنندہ اور رقم کے ساتھکوئی نہیں؛ منتقلی کوئی امتیازی چیز شائع نہیں کرتی
ہر ٹوکن کا اپنا کوڈممکن: ٹیکس، ری بیس، ہُکس، منجمد کرناکوئی نہیں؛ ہر ٹوکن انہی مقررہ اصولوں کی پیروی کرتا ہے
پروگرام کی ملکیتہاںچین 20 پر (RPL-2): پروگرام کی عوامی تجوری، جو invoke کی burn فیلڈز سے بھرتی ہے اور چین کے حساب کردہ نوٹس کی صورت میں ادائیگی کرتی ہے
رقمیں256 بٹ تک (ERC-20)، 64 بٹ (SPL)u64، زیادہ سے زیادہ 9 اعشاریہ
وصولیERC-20 کو کسی تیاری کی ضرورت نہیں؛ SPL کو منسلک ٹوکن اکاؤنٹ درکار ہےکسی تیاری کی ضرورت نہیں؛ شیلڈڈ پتہ ہر چیز وصول کرتا ہے
منتقلی کی لاگتسادہ EVM یا SVM عمل درآمدبھیجنے والا ثبوت بناتا ہے: مشترکہ پوشیدہ اثاثہ بنڈل، اور چین 17 سے اس کے ساتھ ایک چھوٹا اجازت نامے کا ثبوت
منظوریاںapprove / transferFromابھی نہیں
میٹا ڈیٹابعض نفاذات میں قابلِ تبدیلیچین پر اور ناقابلِ تبدیلی
منجمد کرنا، بلیک لسٹبعض ٹوکنز پر ممکنڈیزائن کے تحت دائرہ کار سے باہر

معلوم حدود

  • اجازتی حدیں نہیں۔ approve اور transferFrom کو RPL تفصیل میں مخصوص اجازتی اکاؤنٹس کے طور پر ڈیزائن کیا گیا ہے اور یہ ابھی بنائے نہیں گئے۔
  • پروگرام کی ملکیت عوامی ہے۔ چین 20 پر پروگرام اپنی تجوری میں ٹوکن رکھ سکتا ہے اور اپنا ٹوکن جاری کر سکتا ہے (RPL-2)، لیکن تجوری کا بیلنس ٹوکن کی رسد کی طرح عوامی ہے؛ صرف نوٹس نجی ہیں۔ چین 20 سے پہلے کی چینز میں پروگرام کی کوئی اسٹیٹ ہی نہیں تھی۔
  • فیس صرف RAND میں۔ کوئی ٹوکن اپنی فیس خود ادا نہیں کر سکتا؛ صرف ٹوکن رکھنے والا والٹ کوئی منتقلی نہیں کر سکتا۔
  • u64 رقمیں اور زیادہ سے زیادہ 9 اعشاریہ۔ 18 اعشاریہ والا ماخذ سکہ کم درستی کے ساتھ ظاہر کیا جاتا ہے؛ برج اسے 8 اعشاریہ اور ہر بیکنگ کے لیے ایک ریلیز اکائی کے ذریعے طے کرتا ہے۔
  • ہر منتقلی کا ثبوت بنتا ہے۔ بھیجنے والے کی مشین پر تقریباً 100 s اور کئی GB میموری؛ ٹوکن کے لیے RAND سے سستا کوئی راستہ نہیں۔
  • منجمد کرنا، بلیک لسٹ یا روکنا نہیں، مقامی ٹوکن پر، فیصلے کے تحت۔ برج کا اجرا روکنے کا اختیار صرف برج شدہ اجرا پر لاگو ہوتا ہے۔
  • ہر ٹوکن کی الگ تلاش دلچسپی ظاہر کرتی ہے۔ rand_getToken، rand_getTokenSupply اور ایکسپلورر کا /tokens/:id سرور کو بتا دیتے ہیں کہ کس ٹوکن کے بارے میں پوچھا گیا۔

آخری بار 2026-10-12 کو fullnode کمٹ c0878c3f (چین 21)، اور fullnode `docs/tokens.md`, `docs/cli.md`, `docs/rpc.md`, `docs/superpowers/specs/2026-09-19-rpl-token-standard-design.md`, and the live registry at `randscan.org/api/v1/tokens` on 2026-09-20; updated for chain 15 against fullnode `8abf85e` (v0.5.9) `docs/tokens.md` §§14–16 and `deploy/genesis-chain15.json`; updated for chain 18 on 2026-09-30 against fullnode `90e7716` (the fleet runs v0.6.7 `86941a1`) `docs/tokens.md`, `docs/cli.md`, `docs/shielded.md` §2, `docs/bridge.md` §13.1, `crates/randprotocol-core/src/gas.rs` and `deploy/genesis-chain18.json`; updated for chain 20 on 2026-10-01 against fullnode v0.6.8 `c9c9bd3c` `docs/bridge.md` §25, `docs/program-state.md`, `crates/randprotocol-core/src/ledger/tokens.rs`, `crates/randprotocol-client/src/wallet.rs` (`rebuilt_notes_with`), the committed `deploy/genesis-chain20.json` and `rand_getLimits` on chain 20 کے مقابل تصدیق کی گئی۔ جہاں کوڈ اور یہ صفحہ ایک دوسرے سے مختلف ہوں، وہاں کوڈ درست ہے؛ ہمیں مطلع کریں۔