اس صفحے سے معلوم کیجیے کہ جب کوئی منتقلی Rand سے گزرتی ہے تو کون سا کام کون کرتا ہے۔ ثبوت بنانا مہنگا ہے اور اس کی تصدیق سستی، اس لیے کام اسی بنیاد پر تقسیم کیا گیا ہے۔ ثبوت بھیجنے والے کی جانب بنتے ہیں۔ توثیق کنندگان صرف انہیں جانچتے ہیں، ترتیب دیتے ہیں اور ووٹ دیتے ہیں۔ ایگریگیٹر، فعال ہونے کے بعد، بہت سے ثبوتوں کو ایک میں سمو دے گا۔ نیچے دی گئی شکل ایک منتقلی کو والیٹ سے حتمی بلاک تک دکھاتی ہے؛ اس کے بعد کے حصے ہر کردار کو باری باری بیان کرتے ہیں۔
ایک منتقلی کا راستہ
- والیٹ منتقلی تیار کرتا ہے۔ وہ اپنے ان پٹ نوٹ چنتا ہے، ان کے Merkle گواہ حاصل کرتا ہے، چار آؤٹ پٹ بناتا ہے اور ہر ایک کو ML-KEM-768 لفافے میں بند کرتا ہے۔ پھر وہ ٹرانزیکشن کی بائنڈنگ نکالتا ہے، جو ثبوتوں کے سوا ہر چیز پر ایک ہیش ہے (ٹرانزیکشنز)۔
- والیٹ اجازت کا ثبوت خود بناتا ہے۔ یہ خرچ کی کلید اور ایک نئے سالٹ پر tier-10 ثبوت ہے، جس میں چند سیکنڈ لگتے ہیں۔ یہی واحد ثبوت ہے جو خرچ کی کلید کو چھوتا ہے، اور یہ ہمیشہ والیٹ کی اپنی مشین پر بنتا ہے۔
- بنڈل ثبوت وہاں بنتا ہے جہاں اس کے لیے میموری موجود ہو۔ یہ tier-14 ثبوت ملکیت، رکنیت، نلیفائرز اور بیلنس ثابت کرتا ہے، اور اس کی میموری کی انتہائی کھپت تقریباً 6 GB ہے۔ ڈیسک ٹاپ ایپ اور تقریباً 8 GB والا فون اسے خود بنا لیتے ہیں۔ اس سے چھوٹا کوئی بھی آلہ یہ کام اپنے ساتھ جوڑے گئے ثابت کنندہ کو سونپ دیتا ہے: یا تو وہ جو آپ خود چلاتے ہیں، یا
prover.randprotocol.orgپر توثیق کنندگان کا پول۔ دونوں صورتوں میں اسے ویونگ کلید اور سالٹ بھیجے جاتے ہیں، خرچ کی کلید کبھی نہیں (ثبوت)۔ - ایک RPC نوڈ اسے جانچتا ہے۔ والیٹ جس نوڈ کو بھی ٹرانزیکشن جمع کرائے، وہ بنڈل ڈائجسٹ دوبارہ نکالتا ہے، بائنڈنگ کے مقابل دونوں ثبوتوں کی تصدیق کرتا ہے، فیس جانچتا ہے، اور صرف اس کے بعد ٹرانزیکشن کو اپنے ہم منصب نوڈز تک نشر کرتا ہے (ثبوت، میم پول)۔
- توثیق کنندگان اسے ترتیب دیتے اور حتمی بناتے ہیں۔ ویو کا لیڈر وہ ٹرانزیکشنز لیتا ہے جو اب بھی لاگو ہوتی ہیں، فی KiB سب سے بہتر فیس والی پہلے، اور ایک بلاک تجویز کرتا ہے۔ ہر توثیق کنندہ اس میں موجود ہر ثبوت کی دوبارہ تصدیق کرتا ہے اور ووٹ دیتا ہے۔ بلاک اس وقت کمٹ ہوتا ہے جب لگاتار ویوز میں تین کورم سرٹیفکیٹ اس پر زنجیر بناتے ہیں، جس کے لیے chain 20 کے 26 توثیق کنندگان میں سے 18 کا آن لائن ہونا ضروری ہے (اتفاقِ رائے)۔
- بلاک حتمی ہے، اور ہر کوئی اسے جانچ سکتا ہے۔ ٹرانزیکشن اس وقت حتمی ہوتی ہے جب
rand_getTransactionایک بلاک لوٹائے۔ جو نوڈ بعد میں ہم آہنگ ہوتا ہے وہ دستخطوں پر بھروسا کرنے کے بجائے ہر سرٹیفکیٹ اور ہر ثبوت کی دوبارہ تصدیق کرتا ہے۔
کردار
| کردار | کیا کرتا ہے | ثبوت بناتا ہے؟ | کیا دیکھتا ہے | کیا چلاتا ہے |
|---|---|---|---|---|
| والیٹ | منتقلیاں اور کالز تیار کرتا، ان کی اجازت دیتا اور جمع کراتا ہے؛ اپنی کلیدوں سے چین کو اسکین کرتا ہے | اجازت کا ثبوت ہمیشہ؛ بنڈل ثبوت جب آلے میں میموری ہو | اپنے نوٹس کے بارے میں سب کچھ | کلائنٹس صفحے پر موجود ایپس، یا rand؛ chain 20 پر Rand Wallet یا rand v0.6.8 یا بعد کا |
| تفویض شدہ ثابت کنندہ | اپنے ساتھ جوڑے گئے والیٹ کے لیے بنڈل ثبوت بناتا ہے؛ کچھ بھی جمع کرانے سے پہلے والیٹ ہر جواب کو جانچتا ہے | صرف بنڈل ثبوت | جوڑے گئے والیٹ کی ویونگ کلید: اس کی پوری تاریخ، ماضی اور مستقبل؛ یہ خرچ نہیں کر سکتا | rand-prover run، یا rand-node run --prover |
| توثیق کنندگان کا ثابت کنندہ پول | چار میزبانوں، یعنی دو توثیق کنندگان اور دو ایسی مشینوں کا چلایا ہوا تفویض شدہ ثابت کنندہ جو صرف ثبوت بناتی ہیں، ایک نام اور ایک کلید کے تحت، ان والیٹس کے لیے جن کا اپنا کوئی ثابت کنندہ نہیں؛ کوئی فیس نہیں | صرف بنڈل ثبوت | وہی جو کوئی بھی تفویض شدہ ثابت کنندہ دیکھتا ہے، ہر اس والیٹ کے لیے جو اسے جوڑے | prover.randprotocol.org، فنگرپرنٹ RGTF-7HKJ-XZFV-GQ1J |
| RPC نوڈ (مشاہد) | ہم آہنگ ہوتا ہے، ہر ثبوت کی دوبارہ تصدیق کرتا ہے، JSON-RPC فراہم کرتا ہے، تصدیق شدہ ٹرانزیکشنز نشر کرتا ہے؛ ووٹ نہیں دیتا | نہیں | صرف عوامی فیلڈز: کمٹمنٹس، نلیفائرز، بند لفافے، ثبوت | rand-node run |
| توثیق کنندہ | وہ سب کچھ جو مشاہد کرتا ہے، اس کے علاوہ اپنے ویوز میں تجویز پیش کرنا اور HotStuff میں ووٹ دینا | نہیں | صرف عوامی فیلڈز | rand-node run --validator |
| ایگریگیٹر | حتمی شدہ بنڈل ثبوتوں کی ایک ونڈو پر ایک بازگشتی ثبوت بناتا ہے اور اسے ایک مہر بند کرنے والے بلاک کے لیے جمع کراتا ہے | ہاں، نیٹ ورک کے سب سے بڑے ثبوت | صرف عوامی فیلڈز اور ثبوت | rand-node aggregate --watch، ایسی چین پر جس میں aggregation سیکشن ہو |
ثبوت بنانا اور توثیق کرنا الگ الگ کام ہیں، اور توثیق کنندہ کو ثابت کنندہ کے ہارڈویئر کی ضرورت نہیں۔ پول کے چار ارکان میں سے دو ایسے توثیق کنندگان ہیں جو بطور خدمت ثابت کنندہ بھی چلاتے ہیں؛ باقی دو مخصوص ثابت کنندہ مشینیں ہیں جن کے پاس کوئی توثیق کنندہ کلید نہیں۔ پول چلانا توثیق کا حصہ نہیں۔ ہر کردار کے لیے درکار وسائل، اور ہر tier کے لیے پیمائش شدہ ثبوت سازی کی میموری، توثیق کنندہ اور ایگریگیٹر ہارڈویئر پر درج ہیں۔
ہر کردار کیا جان سکتا ہے
کسی منتقلی کی رازداری اس پر منحصر ہے کہ کون سی کلید کس کے پاس ہے، نہ کہ نیٹ ورک پر بھروسے پر:
- توثیق کنندگان، RPC نوڈز اور ایکسپلورر وہی دیکھتے ہیں جو ہر نوڈ دیکھتا ہے: کمٹمنٹس، نلیفائرز، بند لفافے، فیس اور ثبوت۔ رقم، اثاثہ، بھیجنے والا یا وصول کنندہ نہیں۔
- تفویض شدہ ثابت کنندہ کو، بشمول پول، ویونگ کلید بھیجی جاتی ہے۔ اس کے ذریعے وہ جوڑے گئے والیٹ کی پوری تاریخ پڑھ سکتا ہے۔ وہ کبھی خرچ نہیں کر سکتا، کیونکہ خرچ کی کلید پر اجازت کا ثبوت والیٹ کی مشین پر بنتا ہے۔ پول کو جوڑنے کا مطلب ہے اس کے چلانے والوں کو وہ تاریخ دکھانے کا انتخاب کرنا۔ اگر آپ اسے نجی رکھنا چاہتے ہیں تو اپنے آلے پر ثبوت بنائیے یا اپنا ثابت کنندہ چلائیے۔
- تفویض شدہ ثابت کنندہ والیٹ کو دھوکا نہیں دے سکتا۔ والیٹ اسے دیے گئے ہر ثبوت سے ڈائجسٹ پڑھتا ہے، اس کا حجم جانچتا ہے اور مقامی طور پر اس کی تصدیق کرتا ہے، اس لیے غلط ثبوت کبھی کسی نوڈ تک نہیں پہنچتا۔
ایگریگیشن: تیار ہے، فعال نہیں
آج ہر بلاک میں ہر خام ثبوت شامل ہوتا ہے، ایک منتقلی کے لیے تقریباً 2.85 MB، لہٰذا 20 MiB کے بلاک میں تقریباً سات منتقلیاں سماتی ہیں۔ بلاک ایگریگیشن اس کا فل نوڈ کی جانب سے جواب ہے۔ ایگریگیٹر حتمی شدہ بلاکس کی ایک ونڈو کے بنڈل ثبوت لیتا ہے (rand_getUnsealed)، ایک بازگشتی ثبوت بناتا ہے جو ان سب کی تصدیق کرتا ہے، اور اسے جمع کراتا ہے۔ جس بلاک میں یہ شامل ہوتا ہے وہ اس ونڈو پر مہر لگا دیتا ہے۔ اس کے بعد توثیق کنندگان N ثبوتوں کے بجائے ایک مجموعی ثبوت کی تصدیق کرتے ہیں، اور نوڈز احاطہ شدہ خام ثبوت حذف کر سکتے ہیں۔ ایگریگیٹرز ضمانت جمع کراتے ہیں اور ان کے لیے اجازت درکار نہیں، وہ GPU درجے کی مشینوں پر چلتے ہیں، اور انہیں احاطہ شدہ بنڈلز کا ثبوت سازی کا حصہ اور نئے RAND میں بلاک سبسڈی ادا کی جاتی ہے۔
یہ تیار ہے اور ضم ہو چکا ہے، لیکن فعال نہیں۔ اس کے لیے جینیسس میں aggregation سیکشن درکار ہے، اور chain 20 میں ایسا کوئی سیکشن نہیں، اس لیے rand_status ایگریگیشن کے ہر کاؤنٹر کو صفر دکھاتا ہے۔ اسے فعال کرنے سے پہلے موجودہ قیود کے مجموعے کے تحت اس کی بنڈل ساخت کی دوبارہ پیمائش ضروری ہے، اور بازگشتی تصدیق کنندہ کے خلاف جعلی مجموعی ثبوت کی مشق چلانی ہوگی۔ منقسم اجازت والی چین پر یہ صرف بنڈل ثبوتوں پر مہر لگائے گا، اجازت کے ثبوتوں پر نہیں (ثبوت)۔