ایتھیریم پر صفر علم ثبوت کے ساتھ رازداری کی ایپس کیسے بنائیں

ایتھیریم اپنے ڈیزائن کے لحاظ سے مکمل طور پر عوامی ہے۔ ہر پتہ، بیلنس، ٹرانزیکشن، کنٹریکٹ کال، اور ایونٹ کسی بھی بلاک ایکسپلورر والے شخص کو نظر آتا ہے۔ یہ شفافیت اس وقت مفید ہوتی ہے جب آپ کو تصدیق کی ضرورت ہو۔ یہ اس وقت ایک مسئلہ بن جاتا ہے جب صارفین کو ہر عمل کو اسی والیٹ سے جوڑے بغیر ووٹ دینے، دعویٰ کرنے، انخلا کرنے، یا ممبرشپ ثابت کرنے کی ضرورت ہوتی ہے۔
گمنام ممبرشپ وہ دوبارہ قابلِ استعمال پیٹرن ہے جو ایتھیریم پر رازداری کی ایپس کی ایک بڑی کلاس کو طاقت دیتا ہے۔ لوگ پہلے رجسٹر ہوتے ہیں، پھر بعد میں یہ ثابت کرتے ہیں کہ وہ گروپ سے تعلق رکھتے ہیں، یہ ظاہر کیے بغیر کہ وہ کون سے ممبر ہیں۔ ایک صفر علم ثبوت رجسٹریشن والیٹ اور عمل کرنے والے والیٹ کے درمیان ایک پل ہے، اور یہ پل ظاہر نہیں کرتا کہ اسے کس نے عبور کیا۔
آس پاس کا پروڈکٹ بدل جاتا ہے، لیکن رازداری کا ڈھانچہ وہی رہتا ہے۔
یہ پیٹرن، گمنام ووٹنگ کے ذریعے سمجھایا گیا
اس پیٹرن کے تین حصے ہیں۔ ایک کمٹمنٹ ہر ممبر کو رجسٹر کرتی ہے۔ ایک مرکل ٹری ان کمٹمنٹس کو ایک ہجوم میں بدل دیتا ہے۔ ایک ثبوت اور ایک نلیفائر (nullifier) ایک ممبر کو یہ ظاہر کیے بغیر ایک بار عمل کرنے دیتے ہیں کہ کس ممبر نے عمل کیا۔
پہلا قدم: رجسٹریشن
ہر ووٹر آف چین دو نجی اقدار بناتا ہے، خفیہ (secret) اور نلیفائر۔ ووٹر ان اقدار کو ایک عوامی کمٹمنٹ میں ہیش کرتا ہے، پھر اس کمٹمنٹ کو آن چین رجسٹر کرتا ہے۔
کمٹمنٹ عوامی رجسٹریشن کا ریکارڈ ہے۔ خفیہ اور نلیفائر وہ نجی نوٹ ہیں جن کی ووٹر کو بعد میں ضرورت ہوتی ہے۔ نوٹ کھو دیں اور ووٹر ممبرشپ ثابت نہیں کر سکتا۔ اسے لیک کر دیں اور کوئی اور صارف کی جگہ ووٹ دینے کے قابل ہو سکتا ہے۔
چونکہ کمٹمنٹ ایک ہیش ہے، اس لیے مشاہدہ کرنے والے اس کے اندر موجود نجی اقدار کو بازیافت نہیں کر سکتے۔ کمٹمنٹ یہ بتاتی ہے کہ "کسی نے رجسٹریشن کی ہے" یہ ظاہر کیے بغیر کہ بعد میں اس رجسٹریشن کا استعمال کون کرے گا۔
دوسرا قدم: ہجوم بنانا
جیسے جیسے مزید ووٹرز رجسٹر ہوتے ہیں، ایپ ان کی کمٹمنٹس کو ایک مرکل ٹری میں جمع کرتی ہے۔ ایک مرکل ٹری اقدار کی ایک طویل فہرست کو ایک ہی ہیش میں سکیڑ دیتا ہے، جسے روٹ (root) کہا جاتا ہے۔ فہرست میں کسی بھی قدر کو تبدیل کریں اور ہیش بدل جاتا ہے، لہذا روٹ پورے سیٹ کے چھیڑ چھاڑ سے پاک خلاصے کے طور پر کام کرتا ہے۔
وہ ٹری آپ کا گمنامی کا مجموعہ ہے۔ اگر ٹری میں دس صارفین ہیں، تو ایک مشاہدہ کرنے والا بعد کے عمل کو ان دس میں سے کسی ایک تک محدود کر سکتا ہے۔ اگر ٹری میں دس ہزار صارفین ہیں، تو اس عمل کو کسی ایک شخص سے جوڑنا بہت مشکل ہو جاتا ہے۔ ایک چھوٹے گمنامی کا مجموعہ والی نجی ایپ عام طور پر زیادہ نجی نہیں ہوتی، یہاں تک کہ اگر علمِ تشفیر درست بھی ہو۔
تیسرا قدم: گمنام طور پر عمل کرنا
جب پول کھلتا ہے، تو ووٹر کو اسی والیٹ سے ووٹ نہیں دینا چاہیے جس نے کمٹمنٹ رجسٹر کی تھی۔ رجسٹریشن والیٹ سے ووٹ دینے سے ووٹ سیدھا رجسٹر کرنے والے سے جڑ جائے گا اور رازداری کا کام ضائع ہو جائے گا۔ اس کے بجائے، ووٹر ایک صفر علم ثبوت بناتا ہے۔ بیان کو ایک سرکٹ کے طور پر انکوڈ کیا جاتا ہے جو کہتا ہے، "میں ان نجی اقدار کو جانتا ہوں جو ایک رجسٹرڈ کمٹمنٹ پیدا کرتی ہیں، اور میں اس پول کے لیے درست نلیفائر ہیش ظاہر کر رہا ہوں۔"
ثبوت تصدیق کنندہ کنٹریکٹ کو یقین دلاتا ہے کہ بیان سچ ہے۔ یہ خفیہ، نلیفائر، یا یہ ظاہر نہیں کرتا کہ کون سی کمٹمنٹ استعمال کی گئی تھی۔
نلیفائر وہ چیز ہے جو دوہرے ووٹنگ کو روکتی ہے۔ ثبوت کے ساتھ، ووٹر ایک نلیفائر ہیش شائع کرتا ہے۔ ووٹنگ کنٹریکٹ ووٹ قبول کرنے کے بعد اس ہیش کو محفوظ کر لیتا ہے۔ اگر اسی پول کے لیے وہی نجی نوٹ دوبارہ استعمال کیا جاتا ہے، تو یہ وہی نلیفائر ہیش پیدا کرتا ہے، اور کنٹریکٹ دوسرے ووٹ کو مسترد کر دیتا ہے۔ ثبوت کے ساتھ مل کر، یہ کنٹریکٹ کو صرف یہ جاننے دیتا ہے کہ کسی رجسٹرڈ ووٹر نے ایک بار عمل کیا، یہ نہیں کہ کس نے۔
دوبارہ قابلِ استعمال گیٹ
وہی ثبوت اور نلیفائر کا جوڑا ووٹنگ کے علاوہ بھی کام کرتا ہے۔ ووٹنگ کی کہانی کو ہٹا دیں اور آپ کے پاس سمارٹ کنٹریکٹ فنکشنز کے لیے ایک رازداری کا گیٹ ہے۔
فنکشن چلنے سے پہلے، کنٹریکٹ مرکل روٹ کی جانچ کرتا ہے، ثبوت کی تصدیق کرتا ہے، اس بات کی تصدیق کرتا ہے کہ نلیفائر ہیش استعمال نہیں ہوا ہے، اور عوامی ان پٹس کو درست ایپ، چین، پول، دعویٰ، یا انخلا کے ساتھ جوڑتا ہے۔ اگر یہ جانچیں پاس ہو جاتی ہیں، تو یہ نلیفائر کو استعمال شدہ کے طور پر نشان زد کرتا ہے اور باقی فنکشن چلاتا ہے۔
اس گیٹ کو ووٹ کے سامنے رکھیں اور آپ کو گمنام ووٹنگ مل جاتی ہے۔ اسے ایئر ڈراپ دعویٰ کے سامنے رکھیں اور آپ کو گمنام دعوے مل جاتے ہیں۔ اسے انخلا کے فنکشن کے سامنے رکھیں اور آپ کو مکسر طرز کے انخلا کے بہاؤ کا مرکز مل جاتا ہے۔ وہی کمٹمنٹ ٹری، وہی نلیفائر کا خیال، وہی ثبوت کا پیٹرن۔ جو چیز بدلتی ہے وہ فنکشن کی باڈی اور آس پاس کی ایپ کی منطق ہے۔
کیا کہاں چلتا ہے
نجی کام عام طور پر آف چین ہوتا ہے۔ صارف نوٹ کو محفوظ کرتا ہے، اور ایک کلائنٹ ایپ گواہ بناتی ہے اور ثبوت تیار کرنے کے لیے ثابت کنندہ کو چلاتی ہے۔ ایک انڈیکسر کمٹمنٹس اور مرکل روٹس کو ٹریک کرتا ہے۔ ایک بنڈلر صارف کا عمل (UserOperation) کو آن چین پھیلاتا ہے اور ایک ERC-4337 پے ماسٹر گیس کو سپانسر کرتا ہے، تاکہ ایک نئے والیٹ کو پہلے صارف کے معلوم والیٹ سے ETH کی ضرورت نہ پڑے۔
عوامی نفاذ آن چین ہوتا ہے۔ تصدیق کنندہ کنٹریکٹ ثبوت کی جانچ کرتا ہے۔ ایپ کنٹریکٹ درست روٹس اور غیر استعمال شدہ نلیفائرز کی جانچ کرتا ہے، نلیفائر ہیش کو محفوظ کرتا ہے، اور عوامی عمل چلاتا ہے۔
حساس UX نوٹ کو سنبھالنا ہے۔ خفیہ اور نلیفائر کو کلید کی طرح سمجھیں۔ انہیں اینالیٹکس، لاگز، URLs، ایرر رپورٹس، یا عام سرور سائیڈ ٹیلی میٹری میں نہ رکھیں۔ ایک بار نوٹ لیک ہو جائے، تو رازداری ختم ہو جاتی ہے، چاہے ثبوت کتنا ہی مضبوط کیوں نہ ہو۔
ٹولنگ نے رفتار پکڑ لی ہے
آپ کو بنیادی علمِ تشفیر کو ہاتھ سے کوڈ کرنے کی ضرورت نہیں ہے۔ ایک عام طریقہ یہ ہے کہ سرکٹ کو ایک اعلیٰ سطحی صفر علم زبان میں لکھا جائے، ایک Solidity تصدیق کنندہ تیار کیا جائے، اور اس تصدیق کنندہ کو ایپ کنٹریکٹ سے کال کیا جائے۔
درست اسٹیک کا انحصار کام پر ہے۔ ایپ لیول سرکٹس کے لیے snarkjs کے ساتھ Circom ایک طویل عرصے سے قائم شدہ راستہ ہے۔ Barretenberg کے ساتھ Noir ایک نیا اور ڈیولپر کے لیے سازگار راستہ ہے۔ Halo2 اور gnark نچلی سطح کی سرکٹ لائبریریاں ہیں۔ zkVMs جیسے RISC Zero یا SP1 عام پروگرامز کو ثابت کرتے ہیں، لیکن ایک چھوٹے کسٹم سرکٹ کی نسبت انہیں ثابت کرنا زیادہ مہنگا ہو سکتا ہے۔
گمنام ممبرشپ کے لیے، اپنا سرکٹ لکھنے سے پہلے کسی موجودہ پروٹوکول کا انتخاب کریں۔ Semaphore گروپ ممبرشپ اور نلیفائر پر مبنی دوہرے استعمال کی روک تھام کو کنٹریکٹس اور JavaScript لائبریریوں میں پیکج کرتا ہے۔ نجی ووٹنگ اور گورننس کے لیے، MACI ایک مخصوص راستہ ہے کیونکہ یہ ملی بھگت کے خلاف خصوصیات کا اضافہ کرتا ہے۔ بالغ پروٹوکولز اکثر نئے سرکٹس سے زیادہ محفوظ ہوتے ہیں۔
ثبوت کافی نہیں ہے
یہاں تک کہ ایک کامل ثبوت بھی ناکام ہو جاتا ہے اگر والیٹ کا بہاؤ لنک کو لیک کر دے۔ والیٹ A سے رجسٹر کریں اور بعد میں والیٹ A سے عمل کریں، اور دیکھنے والا کوئی بھی شخص ٹرانزیکشنز کو جوڑ سکتا ہے۔ عمل کرنے سے ٹھیک پہلے والیٹ A سے والیٹ B کو فنڈ دیں، اور وہ فنڈنگ ٹرانزیکشن وہی مسئلہ پیدا کرتی ہے۔
یہی وجہ ہے کہ بنڈلرز اور پے ماسٹرز اہم ہیں۔ عمل کرنے والا والیٹ نیا ہونا چاہیے، اور اسے اس والیٹ سے ETH وصول کرنے کی ضرورت نہیں ہونی چاہیے جسے صارف عمل سے الگ کرنے کی کوشش کر رہا ہے۔
یہی مسئلہ آف چین بھی موجود ہے۔ ایک ہی IP ایڈریس، RPC پرووائیڈر، یا سیشن سے رجسٹریشن اور ایکشن ٹرانزیکشنز جمع کروانا اس رازداری کو کمزور کر سکتا ہے جو سرکٹ فراہم کرتا ہے۔ فرنٹ اینڈز اینالیٹکس، لوکل اسٹوریج، اور سپورٹ لاگز کے ذریعے لیک کر سکتے ہیں۔ ایک صفر علم ثبوت ثبوت کے اندر موجود اقدار کو چھپاتا ہے۔ یہ ٹرانزیکشن کے ارد گرد کی ہر چیز کو نہیں چھپاتا۔
عوامی ان پٹس ایک اور جگہ ہیں جہاں رازداری کی ایپس ناکام ہوتی ہیں۔ سرکٹ میں عوامی کے طور پر نشان زد کی گئی کوئی بھی چیز، جو ایک ایونٹ کے طور پر خارج ہوتی ہے، کال ڈیٹا میں شامل ہوتی ہے، یا کنٹریکٹ کے ذریعے محفوظ کی جاتی ہے، وہ نظر آتی ہے۔ عوامی ان پٹس کا اتنی ہی احتیاط سے جائزہ لیں جتنا کہ ایک Solidity کنٹریکٹ پر ایکسیس کنٹرول کا۔
یہ بلڈرز کے لیے کیا تبدیل کرتا ہے
ایتھیریم پر رازداری کو عملی جامہ پہنایا جا سکتا ہے۔ بلڈرز ان حصوں کو ملا کر حقیقی ایپلی کیشنز بنا سکتے ہیں۔ اسٹیک میں نجی بیان کے لیے ایک سرکٹ، ثبوت کی جانچ کے لیے ایک تصدیق کنندہ، عوامی قواعد کے لیے ایک ایپ کنٹریکٹ، مرکل ڈیٹا کے لیے ایک انڈیکسر، اور ناقابلِ ربط جمع کروانے اور گیس کی اسپانسرشپ کے لیے ایک بنڈلر اور پے ماسٹر شامل ہیں۔
مشکل حصے پروڈکٹ ڈیزائن، کلید کا انتظام، میٹا ڈیٹا کی صفائی، آڈٹ، اور گمنامی کا مجموعہ کو بڑھانا ہیں۔ ان میں سے کسی کو بھی غلط کریں اور ثبوت کی دی گئی رازداری ختم ہو جائے گی۔
مزید مطالعہ
- صفر علم ثبوت (ethereum.org) (opens in a new tab)
- Semaphore کی دستاویزات (opens in a new tab)
- MACI کی دستاویزات (opens in a new tab)
- Circom کی دستاویزات (opens in a new tab)
- Noir کی دستاویزات (opens in a new tab)
- Halo2 کی کتاب (opens in a new tab)
- gnark کی دستاویزات (opens in a new tab)
- RISC Zero کی دستاویزات (opens in a new tab)
- SP1 کی دستاویزات (opens in a new tab)
- EIP-4337: EntryPoint کنٹریکٹ کے ذریعے اکاؤنٹ کی تجرید (opens in a new tab)
صفحہ کی آخری اپ ڈیٹ: ۲۸ مئی، ۲۰۲۶