آپ کو کیا ضرورت ہو گی:
- کمپیوٹر سائنس کا پس منظر
- Ethereum کی بنیادی باتیں
- کیلکولس کی بنیادی باتیں (رکاوٹوں کی اصلاح)
آپ کو کیا ملے گا:
- صفر علم SNARKs کی بنیادی باتیں
- مرکل کے درختوں کی بنیادی باتیں
- Ethereum کس طرح SNARKs کی بدولت فی سیکنڈ ہزاروں لین دین کا پیمانہ بنا سکتا ہے۔
SNARKs ایک پروور کو تصدیق کرنے والے کو یہ ثابت کرنے کی اجازت دیتے ہیں کہ اس کے پاس W کو ظاہر کیے بغیر مشترکہ/معروف ان پٹ X کے ساتھ مسئلہ F کا حل ہے۔
مسئلے کا حل تلاش کرنے کے لیے بہت زیادہ کمپیوٹیشنل پاور اور میموری کی ضرورت پڑسکتی ہے۔
لہذا تصدیق کنندہ بنیادی طور پر 100٪ یقینی ہوسکتا ہے کہ پروور نے صحیح طریقے سے کام کیا ہے (اور اس کا حل تلاش کیا ہے) حل کو چیک کرنے کے لیے نہ تو خود دوبارہ کام کر رہا ہے اور نہ ہی حل کو بالکل جانتا ہے۔ یہ جادو ہے!
اس عمل کے 3 مراحل ہیں:
- سیٹ اپ - مسئلہ F (جس کو چوکور ریاضی کے پروگرام کے طور پر ظاہر کرنے کی ضرورت ہے، نیچے دیکھیں) SNARKs کے لیے تیار کیا گیا ہے۔ مسئلہ کی پیچیدگی کے لحاظ سے یہ عمل بہت زیادہ میموری اور کمپیوٹنگ گہرا ہے۔ جو کھلاڑی سیٹ اپ کرتا ہے (خود تصدیق کنندہ ہو سکتا ہے) اس پر تمام فریقوں کو بھروسہ کرنا چاہیے، کیونکہ سیٹ اپ کا آؤٹ پٹ اگلے مراحل میں استعمال ہوتا ہے۔ سیٹ اپ عام طور پر استعمال کرتے ہوئے کیا جاتا ہے۔ libsnark، ایک C++ لائبریری جو zkSNARKs کے لیے سب سے زیادہ مقبول نفاذ ہے۔
- پیش کر رہا ہے - پروور، جس کے پاس مشترکہ ان پٹ X کے ساتھ مسئلہ F کا حل ہے (شاید اس نے اسے تلاش کرنے کے لیے CPU اور میموری کی بڑی مقدار خرچ کی ہو!)، استعمال کرتا ہے۔ libsnark اور کی پیداوار سیٹ اپ ایک ثبوت بنانے کا مرحلہ 𝚷 یہ عمل یقینی طور پر ہائی میموری اور کمپیوٹنگ گہرا ہے (مسئلہ کی پیچیدگی پر منحصر ہے، جیسا کہ اوپر دیا گیا ہے)۔ آؤٹ پٹ کا سائز (یعنی ثبوت 𝚷) بجائے اس کے مختصر اور مستقل طور پر مسئلہ کی پیچیدگی سے آزاد ہے۔ پروور کو اس بات پر بھروسہ کرنے کی ضرورت ہے کہ سیٹ اپ کا مرحلہ کس نے کیا ہے، کیونکہ وہ/وہ اس کا آؤٹ پٹ استعمال کرتا ہے…
- تصدیق کر رہا ہے۔ — ایک تصدیق کنندہ — سیٹ اپ مرحلے کا آؤٹ پٹ ان پٹ کے طور پر دینا، مشترکہ ان پٹ X اور ثبوت 𝚷 - ثبوت کو چیک کرتا ہے۔ اگر تصدیق کامیاب ہو جاتی ہے، تو پروور ایک تصدیق کنندہ کو یہ ثابت کرنے میں کامیاب ہو گیا کہ اس نے W کو ظاہر کیے بغیر مسئلہ F کا حل تلاش کر لیا ہے۔ اچھی بات یہ ہے کہ نہ صرف ثبوت مختصر ہوتا ہے اور اس کی لمبائی ہمیشہ ایک ہی ہوتی ہے..، تصدیق کا عمل تیز ہوتا ہے اور میموری/کمپیوٹنگ بالکل بھی شدید نہیں۔ پچھلے دو مراحل کے برعکس… تصدیق آسانی سے اسمارٹ فون کے ساتھ ملی سیکنڈ میں کی جا سکتی ہے!
ایک اچھا خلاصہ (ذرائع):
یہ کیسے ہو سکتا ہے؟ ٹھیک ہے، یہ مرلن جادو ہے! اگر آپ اس کے پیچھے ریاضی حاصل کرنا چاہتے ہیں، یہاں سے شروع کریں.
میں اپنے سافٹ ویئر کو ایک چوکور ریاضی کے پروگرام میں کیسے تبدیل کر سکتا ہوں؟
جیسا کہ اوپر ذکر کیا گیا ہے، سیٹ اپ فیز کا مسئلہ F کا ایک چوکور ریاضی پروگرام ہونا ضروری ہے۔ کھیل کے اصول سخت ہیں:
- آپ کے سافٹ ویئر کے ان پٹ نمبر ہونے چاہئیں۔ اپنی چیزیں (ارے، تار، وغیرہ) کو نمبروں میں تبدیل کریں۔ یہ معمولی بات ہے۔
- "مساوات کا چوکور محدود نظام" کا مطلب ہے:
جہاں x آپ کے ان پٹ کا n-جہتی ویکٹر ہے، m رکاوٹوں کی تعداد ہے (یعنی آپ کے سسٹم کی مساوات کی تعداد)، C n-by-n کوفیشینٹس میٹرکس ہے اور q ایک n-جہتی کوفیشینٹ ویکٹر ہے۔ اگر آپ کو میٹرکس اور ویکٹر پسند نہیں ہیں، تو یہ ہے n = 3 اور m = 2 کیس (3 ان پٹ، 2 رکاوٹیں):
- نفاذ ایک ریاضی کا سرکٹ ہے، جس کا مطلب ہے کہ نتیجہ ہے۔ مشکل حل ہو گئی (نظام حل ہو گیا ہے، یعنی تمام کثیر الثانیات 0 کے برابر ہیں) یا مسئلہ حل نہیں ہوا۔ (دیگر تمام معاملات)۔ دوسرے الفاظ میں: "یہ ان پٹ اس مسئلے کے حل میں سے ایک ہیں/نہیں ہیں"۔
- C₁, C₂, …, C𝚖, q₁, q₂, …, q𝚖 گتانک نظام کی رکاوٹیں ہیں۔ یہ بنیادی طور پر وہی ہے جو آپ کے سافٹ ویئر کی وضاحت کرتا ہے۔ انہیں تبدیل کریں… اور آپ کو دوسرا سافٹ ویئر ملے گا! SNARKs کیسے کام کرتے ہیں اس پر واپس جانا: C₁, C₂, …, C𝚖, q₁, q₂, …, q𝚖 سیٹ اپ مرحلے کا ان پٹ ہیں۔ سیٹ اپ فیز کا آؤٹ پٹ (جو آپ کو ثابت کرنے اور تصدیق کرنے کے لیے درکار ہے) اس لیے سختی سے ان C₁, C₂, …, C𝚖, q₁, q₂, …, q𝚖 سے متعلق ہے اور صرف اس مسئلے کے لیے کام کرتا ہے۔ اگر آپ انہیں تبدیل کرتے ہیں تو آپ ایک اور سافٹ ویئر/مسئلہ کی وضاحت کر رہے ہیں اور آپ کو سیٹ اپ کے مرحلے کو دوبارہ چلانے کی ضرورت ہے! x₁, x₂, …, x𝗇 متغیرات ہیں (یعنی سسٹم کا حل حاصل کرنے کے لیے آپ کو کیا اندازہ لگانا ہوگا)۔ لہذا جب ہم کہتے ہیں کہ "ڈیئر پروور، کیا آپ براہ کرم مشترکہ/عوامی ان پٹ X کے ساتھ مسئلہ F کے لیے کوئی خفیہ حل تلاش کر سکتے ہیں" ہمارا مطلب ہے مثال کے طور پر "ڈیئر پروور، کیا آپ x₁, x₂, …, x𝗇 اقدار تلاش کر سکتے ہیں جو سسٹم کو حل کرتی ہیں؟ کے ساتھ، مثال کے طور پر، x₇ = 2393، x₅₂₆ = 5647؟ آپ جو چاہیں وہ تمام x𝗇 کے ساتھ کر سکتے ہیں، سوائے x₇ اور x₅₂₆ کے، جو مشترکہ/عوامی ان پٹس تک محدود ہیں۔
یہ ایک مشکل زندگی ہے لیکن آپ زندہ رہ سکتے ہیں… اگر آپ کو لوپس کی ضرورت ہو تو آپ ایک ہی آپریشن کو کئی بار دہراتے ہوئے انہیں کھول سکتے ہیں۔ یا اگر آپ کو مثال کے طور پر x₁⁴ x₂⁵ کی ضرورت ہے، تو آپ ایک نئے ان پٹ x₃ = x₁⁴ x₂⁵ کی وضاحت کرتے ہیں اور اپنی رکاوٹوں میں x₃ استعمال کرتے ہیں۔ یہ سب متغیرات اور رکاوٹوں کو شامل کرنے کے بارے میں ہے… یہاں تک کہ بہت آسان سافٹ ویئر کے لیے بھی لاکھوں یا اربوں ان پٹ اور رکاوٹوں تک پہنچنا آسان ہے!
مزید جاننا چاہتے ہیں؟ پڑھیں یہاں. اور اس بنیادی کو بھی چیک کریں۔ code_to_r1cs.py ایتھریم/تحقیق سے۔
مرکل کا درخت کیا ہے؟
ایک ہیش فنکشن ایک اصول ہے جو صوابدیدی سائز کے ان پٹ کو مقررہ سائز کے آؤٹ پٹ پر نقشہ بناتا ہے۔ ہم ایک خوبصورت بیکار ہیش فنکشن ایجاد کر سکتے ہیں "پہلے دو کو آخری دو حروف کے ساتھ جوڑیں" جو "وڈی ایلن" کو "ووین" اور "پال میک کارٹنی" کو "پے" میں بدل دیتا ہے۔
مرکل ٹری ایک ڈیٹا ڈھانچہ ہے جہاں ہر والدین اپنے دو بیٹوں کی ہیش ہیں۔ سب سے اوپر آپ کو روٹ ملے گا، جو لیول 1 کے دو بیٹوں کی ہیش ہے۔ نیچے، ہر لیف ایک بیرونی ان پٹ کا ہیش ہے۔
ہمارے افسانوی "وڈی ایلن" → "ووین" ہیش فنکشن کا استعمال کرتے ہوئے:
جب ایک پتی تبدیل ہوتی ہے، تو ترمیم کو جڑ تک پھیلایا جاتا ہے۔ اگر ANTHONY تبدیل ہوتا ہے تو ANNY (پتہ)، CENY اور CECO (جڑ) بھی تبدیل ہوتا ہے۔ جو بھی پتی بدلے، جڑ بھی بدل جاتی ہے۔
جڑ کی دوبارہ گنتی کرنے کے لیے آپ کو پورے درخت کی ضرورت نہیں ہے۔ ہماری مثال میں، اگر ANTHONY بدل جاتا ہے اور آپ JACO اور CECILY دونوں کو جانتے ہیں، تو آپ آسانی سے جڑ کا دوبارہ حساب لگا سکتے ہیں چاہے آپ JAMES, MARCO, JAES اور MACO کو مکمل طور پر نظر انداز کر دیں۔ بڑے درختوں کے لئے یہ بہت وقت بچاتا ہے!
تو کیا؟
مرکل کے درخت ڈیٹا کی سالمیت کی جانچ کے لیے بہترین ہیں۔ عام طور پر: آپ جانتے ہیں کہ درست روٹ کون سا ہے، اور آپ چیک کرتے ہیں کہ موصولہ ڈیٹا اس روٹ سے میل کھاتا ہے۔ مثال کے طور پر: ایک قابل اعتماد پارٹی جو آپ کو زمین پر موجود لوگوں کے پہلے ناموں کا پورا ڈیٹا سیٹ نہیں دے سکتی ہے (کوئی وقت نہیں، کوئی بینڈوتھ یا شاید اس کے پاس ڈیٹا بالکل بھی نہیں ہے) آپ کو صرف روٹ دیتا ہے (مثلاً "CECO")۔ بعد کے الفاظ: آپ کو پتے کے نمبر کے حوالے سے، ہزاروں غیر بھروسہ مند جماعتوں کے ذریعے لاکھوں پہلے نام موصول ہوتے ہیں۔ ٹھیک ہے، چونکہ آپ کے پاس صحیح روٹ ہے آپ چیک کر سکتے ہیں کہ آپ کس پر بھروسہ کر سکتے ہیں، کون آپ کو جعلی ڈیٹا دے رہا ہے…
مرکل کے درخت بھی آپ کی زندگی کا حصہ ہیں! جب آپ 3GB ٹورینٹ فائل ڈاؤن لوڈ کر رہے ہوتے ہیں، تو آپ کی فائل لاکھوں چھوٹے حصوں میں تقسیم ہوتی ہے۔ ہر ٹکڑے کی ہیش ایک پتی میں محفوظ ہے۔ چونکہ آپ جانتے ہیں کہ درخت کی درست جڑ کون سی ہے، اس لیے جب بھی آپ کو کسی کے ذریعے فائل کا ایک حصہ ملتا ہے، تو آپ چیک کر سکتے ہیں کہ آیا یہ درست ہے۔ اگر یہ نہیں ہے تو، آپ اسی حصہ کو کسی اور سے پوچھ سکتے ہیں۔
آپ ایسا کر سکتے ہیں یہاں تک کہ اگر آپ نے ابھی تک پورے درخت/تمام پتے ڈاؤن لوڈ نہیں کیے ہیں: اگر آپ جانتے ہیں کہ جڑ CECO ہے اور آپ JACO پر بھروسہ کرتے ہیں… جب آپ کو Anthony کا حصہ ملتا ہے تو آپ اس کی تصدیق کر سکتے ہیں چاہے آپ نے ڈاؤن لوڈ نہ کیا ہو۔ ابھی تک مارکو اور جیمز کے ٹکڑے۔
تقسیم شدہ لیجر ٹیکنالوجی میں مرکل کے درخت کیوں کارآمد ہیں یہ سیدھی سی بات ہے: آپ اتفاق رائے کے پروٹوکول (سست، مہنگے) کا استعمال صرف جڑ پر اتفاق رائے تک پہنچنے کے لیے کرتے ہیں۔ پھر نیٹ ورک کے ناقابل اعتماد نوڈس مؤثر طریقے سے اور براہ راست ڈیٹا کا اشتراک کر سکتے ہیں… اور روٹ کے ساتھ سالمیت کی جانچ کی بدولت محفوظ اور اچھی نیند لے سکتے ہیں۔
جب خدا نے Ethereum سے کہا کہ وہ سیکیورٹی، اسکیل ایبلٹی اور ڈی سینٹرلائزیشن میں سے 2 سپر پاورز کا انتخاب کرے… ایتھریم نے اسکیل ایبلٹی کو قربان کردیا۔ درحقیقت "ٹرانزیکشن فی سیکنڈ" پر کوئی مضبوط کیپ نہیں ہے: کیپ ہر بلاک کی گیس کی مقدار سے متعلق ہے — جو کہ آسان بنانے کے لیے، ہر بلاک میں آپریشنز کی مقدار جو میں کر سکتا ہوں۔ یہ حد 8 ملین گیس ہے۔ اس کا مطلب بہت سے "چھوٹے" ٹرانزیکشنز ہو سکتے ہیں (لین دین سے کوئی ڈیٹا منسلک نہیں، اس ڈیٹا پر کوئی کارروائی نہیں کی جائے گی) یا کچھ بڑی ٹرانزیکشنز۔ یہ Ethereum کے نوڈس پر منحصر ہے، جو لین دین جمع کراتے ہیں، اور Ethereum کے کان کنوں پر، جو زیادہ ادائیگی کرنے والے لین دین کو بلاک میں شامل کرتے ہیں۔
ایک بلاک کان کنی ہے۔ ہر ~15 سیکنڈ۔ اس کا مطلب ہے ~ 32 ملین گیس فی منٹ، جو یقینی طور پر کافی نہیں ہے اگر ہم چاہتے ہیں کہ Ethereum کے dapps کو مرکزی دھارے میں لایا جائے۔
ویسے: Ethereum اور Visa کے درمیان ان تھکا دینے والے موازنہ کے ساتھ بند کرو۔ ایک مرکزی نظام ہو گا۔ ہمیشہ Ethereum سے تیز ہو… ڈیزائن کے لحاظ سے! وہ مختلف چیزیں کرتے ہیں اور آپ کو مختلف حالات میں ان کی ضرورت ہوتی ہے۔ اگر آپ کو وکندریقرت اور اعتماد سے کم ماحول کی ضرورت نہیں ہے… یقیناً آپ کو ویزا کا انتخاب کرنا چاہیے۔ مختصرا: حقیقت یہ ہے کہ آپ کا بلینڈر آپ کی واشنگ مشین سے زیادہ تیزی سے گھومتا ہے اس کا مطلب یہ نہیں ہے کہ آپ اپنے پتلون کو بلینڈر میں صاف کریں گے!
آئیے اس پہیلی کو ایک ساتھ رکھیں! تصور کریں کہ آپ SNARKs کی بدولت ایک بڑے لین دین میں بہت سے چھوٹے لین دین کو "کمپریس" کر سکتے ہیں۔ اگر اس بڑے لین دین کے ذریعے خرچ کی گئی گیس چھوٹے لین دین کے ذریعے خرچ کی گئی گیس سے کم ہے، تو اس کا مطلب ہے کہ آپ گیس کی بچت کر رہے ہیں۔
اور گیس کی بچت کا مطلب ہے:
- مجموعی طور پر لین دین کے لیے کم خرچ کرنے والے صارفین → یہ پورے ماحولیاتی نظام کے لیے ایک دھکا ہوگا۔
- بلاک میں مزید چیزیں ڈالنے کے قابل ہونا → ایتھریم آپ کے بلینڈر سے زیادہ تیزی سے گھوم رہا ہے!
یہ کس طرح کام کرتا ہے؟
ایسے صارفین ہیں، ایک ریلیئر (یا زیادہ ریلیئر) جو لین دین کو جمع کرتے ہیں اور ایک سمارٹ کنٹریکٹ۔
- اس گیم کو کھیلنے کے خواہشمند صارفین اپنے ایتھر (یا ٹوکنز) کو عوامی طور پر آڈٹ شدہ سمارٹ کنٹریکٹ پر بھیجتے ہیں۔ ہر نئے کھلاڑی کے لیے مرکل کے درخت میں ایک نیا پتا بنتا ہے۔ پتی میں ایتھر کے مالک (اس کا/اس کا پتہ، جو کہ عوامی کلید بھی ہے)، ایتھر کی رقم اور نانس (اس اکاؤنٹ کے لین دین کا کاؤنٹر، جو کہ 0 ہے جب پتی کو شامل کیا جاتا ہے) کے بارے میں معلومات شامل ہوتی ہے۔
- جب A Ether B کو بھیجنا چاہتا ہے (ان دونوں کو سمارٹ کنٹریکٹ میں ایک لیف/اکاؤنٹ ہونا ضروری ہے)، A ایک ٹرانزیکشن پیک کرتا ہے، جس میں ایتھر کا پتہ شامل ہوتا ہے۔ سےاکاؤنٹ ، کرنے کے لئے اکاؤنٹ ، nuncio کے اکاؤنٹ سے، کی رقم ایتھر کی منتقلی اور دستخط لین دین کا (ظاہر ہے کہ "منجانب" اکاؤنٹ کی نجی کلید کے ساتھ دستخط شدہ)۔ اس کے بعد وہ پیکڈ ٹرانزیکشن ریلیئر کو بھیجتی ہے۔
- ریلیئر ایک مقررہ وقت کی ونڈو میں موصول ہونے والے تمام لین دین کو جمع کرتا ہے (مثلاً ایک گھنٹہ)، مرکل ٹری کو نئے بیلنس کی رقم کے ساتھ اپ ڈیٹ کرتا ہے اور ایک SNARK ثبوت بناتا ہے جو ثابت کرتا ہے کہ تمام دستخط اور نئے مرکل کے درخت کی جڑ درست ہیں۔ ریلیئر آخر کار سمارٹ کنٹریکٹ کو نئی حالت اور ثبوت بھیجتا ہے۔
- سمارٹ کنٹریکٹ پروف آن چین کی توثیق کرتا ہے۔ اگر یہ درست ہے تو یہ معاہدہ کی اندرونی یادداشت میں نئی ریاست کے مرکل کے درخت کی جڑ کو محفوظ کرتا ہے۔
بنیادی طور پر، مرکل کے درخت کی جڑ تمام کھاتوں کی پوری حالت کو ظاہر کرتی ہے۔ اور آپ اسے تبدیل نہیں کر سکتے ہیں (= پیسے چوری کریں) جب تک کہ آپ ان دستخطوں کی درستگی کو ثابت نہیں کر سکتے جن کے لین دین آپ کے جمع کرائے گئے نئے روٹ کے ذریعے خلاصہ کردہ نئی حالت کی طرف لے جاتے ہیں۔
مختصراً: صارفین کے پاس انتہائی تیز اور تقریباً مفت ٹرانزیکشنز ہیں، جیسے Coinbase پر، ریلیئر پر بھروسہ کیے بغیر، جو آپ کے دستخط کے بغیر Coinbase کے برعکس کچھ نہیں کر سکتا۔
یہ ایک غیر حراستی سائیڈ چین ہے جس کی حالت کا خلاصہ مرکل کے درخت کی جڑ سے کیا گیا ہے۔
آئیے SNARKs کے بارے میں جو کچھ ہم نے اوپر سیکھا ہے اس کو اس سے جوڑتے ہیں جس پر ہم نے ابھی اسکیلنگ کے بارے میں بات کی ہے۔ ایسا کرنے کے مختلف طریقے ہیں۔ میں 2 ترکیبوں کا موازنہ کروں گا: Vitalik's ورژن اور barryWhiteHat's ورژن.
سیٹ اپ اس کے ذریعے کیا جاتا ہے…
وہ لڑکا جو پروجیکٹ شروع کرتا ہے، جو سمارٹ کنٹریکٹ بھی بناتا ہے۔ یہ جتنا زیادہ قابل سماعت ہے، اتنا ہی بہتر ہے۔ آپ کو اس پر بھروسہ کرنا چاہیے… یہ ایک ہے۔ قابل اعتماد سیٹ اپ!
سمارٹ معاہدہ بچاتا ہے…
2 مرکل روٹس (بائٹس 32 ویلیوز): پہلے درخت میں اکاؤنٹس کے پتے (عوامی دستخط)، دوسرے اکاؤنٹس کے بیلنس اور نانسس ہوتے ہیں۔
ثابت کرنا بذریعہ…
ریلیئر
ریلیئر سمارٹ کنٹریکٹ پر بھیجتا ہے…
- نئی ریاست کی 2 مرکل جڑیں (درخت اور بیلنس + نونس ٹری سے خطاب کرتا ہے)
- لین دین کی فہرست، بغیر دستخط کے۔ "ہر لین دین کی قیمت 68 گیس فی بائٹ ہے۔ لہذا، باقاعدہ منتقلی کے لیے، ہم توقع کر سکتے ہیں کہ معمولی لاگت 68*3 (سے) + 68*3 (سے) + 68*1 (فیس) + 68*4 + 4*2 (رقم) + 68*2 ہوگی (nonce)، یا 892 gas"
ثابت کرنے کے عمل کے معلوم ان پٹ ہیں…
- 2 پرانی ریاست مرکل کی جڑیں۔
- 2 نئی ریاست مرکل کی جڑیں۔
- لین دین کی فہرست
ثابت کرنے کا عمل ثابت کرتا ہے کہ…
کو دیکھتے
- 2 پرانی ریاست مرکل کی جڑیں (پہلے ہی معاہدے میں محفوظ ہیں)
- 2 نئی ریاست مرکل کی جڑیں (اجتماعی لین دین میں بھیجی گئی)
- لین دین کی فہرست (اجتماعی لین دین میں بھیجی گئی)
… ریلیئر کے پاس ان لین دین کے ساتھ 2 پرانی جڑوں کے ساتھ ریاست سے 2 نئی جڑوں کے ساتھ ریاست میں جانے کے لیے درست دستخط ہیں۔
تصدیق کی جاتی ہے بذریعہ…
سمارٹ کنٹریکٹ (جیسی ٹھوس، وائپر، جیسا آپ چاہیں کوڈڈ!)
تصدیق کے عمل کے معلوم ان پٹ ہیں…
اسی PROVING کے عمل سے معلوم ان پٹ، واضح طور پر…!
توسیع پذیری کی حدود
ہر مجموعی لین دین SNARK تصدیق کے لیے 650k گیس استعمال کرتا ہے (مقررہ قیمت) کے علاوہ ~900 گیس معمولی قیمت فی لین دین (ڈیٹا بھیجنے میں لاگت آتی ہے!) لہذا پورے بلاک کا استعمال کرتے ہوئے ریلیئر زیادہ سے زیادہ جمع کر سکتا ہے:
جسکا مطلب ~544 tx فی سیکنڈ
barryWhiteHat's ورژن
سیٹ اپ اس کے ذریعے کیا جاتا ہے…
وہ لڑکا جو پروجیکٹ شروع کرتا ہے۔
سمارٹ معاہدہ بچاتا ہے…
1 مرکل جڑ موجودہ حالت کے ساتھ۔ ہر پتی اکاؤنٹ کی ہیش شدہ حالت ہے۔
کرنا چاہتے ہیں تخلیق ایک کھاتا؟
ریاست = اکاؤنٹ اسٹیٹ (پبکی، بیلنس، نانس)
state.index = self._tree.append(state.hash())
ثابت کرنا بذریعہ…
ریلیئر
ریلیئر سمارٹ کنٹریکٹ پر بھیجتا ہے…
- ثبوت 𝚷
- نئی ریاست مرکل جڑ
- ثبوت 𝚷
ثابت کرنے کے عمل کے معلوم ان پٹ ہیں…
- پرانی ریاست مرکل جڑ
- نئی ریاست مرکل جڑ
ثابت کرنے کا عمل ثابت کرتا ہے کہ…
کو دیکھتے
- اولڈ مرکل جڑ (پہلے سے ہی معاہدے میں محفوظ ہے)
- نیو مرکل روٹ (ایگری لین دین میں بھیجی گئی)
… ریلیئر کے پاس درست دستخطوں کے ساتھ لین دین کی ایک فہرست ہے جو پرانی جڑ کے ساتھ نئی جڑ کے ساتھ ریاست سے دوسری ریاست میں منتقل ہوتی ہے۔
تصدیق کی جاتی ہے بذریعہ…
سمارٹ کنٹریکٹ (جیسی ٹھوس، وائپر، جیسا آپ چاہیں کوڈڈ!)
تصدیق کے عمل کے معلوم ان پٹ ہیں…
اسی PROVING کے عمل سے معلوم ان پٹ، واضح طور پر…!
توسیع پذیری کی حدود
ریلیئر لین دین کا ڈیٹا سمارٹ کنٹریکٹ پر نہیں بھیج رہا ہے (جو کہ مہنگا ہے)، اس لیے حد دراصل SNARK ثبوت کی تصدیق کے لیے گیس کی مقدار ہے۔
ہاورڈ وو کا تذکرہ کام تقسیم شدہ نظاموں پر SNARK کے ثابت ہونے والے مرحلے کو چلانے کے بارے میں، barryWhiteHat پر امید طور پر بیان کرتا ہے کہ ایک بہت بڑا SNARK (16666 بلین رکاوٹوں!) میں 1 لین دین کی تصدیق کرنا ممکن ہے۔
barryWhiteHat بھی سوچتا ہے کہ 500k گیس کے ساتھ ثبوت 𝚷 آن چین کی تصدیق کرنا ممکن ہے، جس کا مطلب ہے کہ آپ 16 SNARKs (8 million/500k) فی بلاک رکھ سکتے ہیں، جو کہ ~1.07 SNARKs فی سیکنڈ… جس کا مطلب ہے ~17,832 tx فی سیکنڈ (16,666 * 1.07)۔
لامحدود اور اس سے آگے۔
- جو کچھ چمکتا ہے وہ سونا نہیں ہے / 1۔ کمپیوٹنگ کی طاقت اور میموری کی مقدار جس کی آپ کو ثابت کرنے کے مرحلے میں ضرورت ہے لفظی طور پر چونکا دینے والی ہوسکتی ہے۔ خاص طور پر barryWhiteHat کے ورژن میں، جہاں پیچیدگی کا کچھ حصہ آف چین منتقل کیا جاتا ہے۔ بیری لکھتے ہیں "7 جی بی ریم اور 20 جی بی سویپ اسپیس والے لیپ ٹاپ پر فی سیکنڈ 20 ٹرانزیکشنز کو جمع کرنے کے لیے جدوجہد کرنا پڑتی ہے". ٹھیک ہے، اگر ہدف 17,832 tx فی سیکنڈ ہے… LOL۔ یہ غیر معمولی متوازی حساب کے چیلنجوں کو متعارف کرایا ہے۔ لیکن اگر فی لین دین کی اوسط $ لاگت عام no-SNARKs آپشن سے کہیں زیادہ سستی ہے… گیم موم بتی کے قابل ہے۔
- جو کچھ چمکتا ہے وہ سونا نہیں ہے / 2۔ ڈیٹا کی دستیابی کا ایک متعلقہ مسئلہ ہے! چونکہ معاہدے میں صرف درخت کی جڑ ہی محفوظ کی گئی ہے، آپ کو اس بات کا یقین ہونا چاہیے کہ درخت کا پورا ورژن (یا، یہ وہی ہے، لین دین کی پوری تاریخ) ہمیشہ دستیاب ہے۔ اگر ڈیٹا دستیاب نہیں ہے تو ریلیئر، یہاں تک کہ درست دستخط شدہ لین دین کے باوجود، کچھ نہیں کر سکتا کیونکہ وہ پرانی ریاست → لین دین → نئی ریاست کو ثابت نہیں کر سکتا۔
- تاکہ ریلیئر بے اعتماد ہو اور کنٹریکٹ میں Ethers کے باہر Ethers کی یکساں قیمت ہو (لیکویڈیٹی کا مسئلہ)… صارفین کو کسی (مخصوص) ریلیئر پر انحصار کیے بغیر، جب چاہیں سمارٹ کنٹریکٹ سے رقم نکالنے کے قابل ہونا چاہیے۔ کیسے؟ یہ اس 101 پوسٹ کے دائرہ کار میں نہیں ہے، لیکن آپ اس کے بارے میں منسلک لنکس میں پڑھ سکتے ہیں۔
- اس بارے میں مزید سمجھنا چاہتے ہیں کہ موجودہ ریاست (پتے، بیلنس اور نانس) کو مرکل کے درخت کے ساتھ کس طرح سنبھالا جا سکتا ہے؟ ایک پتی شامل کرنا، ایک پتی کو اپ ڈیٹ کرنا، وغیرہ؟ اس کو دیکھو یہ لائبریری (ٹیسٹ فائل یہاں) جو اس بنیادی کو استعمال کرتا ہے۔ ماڈیول. شکریہ ہیری آر!
- اپنے ذاتی Ethereum-SNARKs ماحول کو ترتیب دینا چاہتے ہیں؟ آئیے C++ کے ساتھ آف چین شروع کریں (سیٹ اپ، ثابت کرنا، تصدیق کرنا) یہاں. اس کے بعد آپ زوکریٹس کے ساتھ ایتھریم میں جا سکتے ہیں (نہ بھولیں، صرف تصدیق آن چین کی جاتی ہے!)ریپو، کے ساتھ شروع کرنے کے لئے دستاویزات).
- مرکل کے درختوں کی بجائے RSA جمع کرنے والوں کے استعمال کے بارے میں کیا خیال ہے؟ گوگل "آر ایس اے جمع کرنے والے ایتھریم" شروع کرنے کے لئے…
لطف اندوز ہوں!
ٹویٹر @marco_derossi
- 7
- اکاؤنٹ
- تمام
- کے درمیان
- دستیابی
- مبادیات
- ارب
- مقدمات
- تبدیل
- چیک
- Coinbase کے
- کمپیوٹنگ
- اتفاق رائے
- کنٹریکٹ
- اخراجات
- موجودہ
- موجودہ حالت
- DApps
- اعداد و شمار
- ڈیٹا سیٹ
- مرکزیت
- طول و عرض
- تقسیم شدہ لیجر۔
- تقسیم شدہ لیجر ٹیکنالوجی
- ماحولیات
- آسمان
- ethereum
- EU
- EV
- جعلی
- آخر
- پہلا
- مفت
- تقریب
- کھیل ہی کھیل میں
- گیس
- GitHub کے
- دے
- گولڈ
- اچھا
- گوگل
- عظیم
- رہنمائی
- ہیش
- یہاں
- ہائی
- تاریخ
- کس طرح
- hr
- HTTPS
- بھاری
- سینکڑوں
- ia
- انڈکس
- معلومات
- IP
- IT
- ایوب
- کلیدی
- لیپ ٹاپ
- بڑے
- قیادت
- لیجر
- سطح
- LG
- لائبریری
- لیکویڈیٹی
- لسٹ
- مین سٹریم میں
- نقشہ جات
- درمیانہ
- دس لاکھ
- کھنیکون
- قیمت
- ماہ
- سب سے زیادہ مقبول
- منتقل
- نام
- نیٹ ورک
- نوڈس
- تعداد
- آپریشنز
- حکم
- دیگر
- مالک
- ادا
- لوگ
- کھلاڑی
- مقبول
- طاقت
- نجی
- ذاتی کلید
- پروگرام
- منصوبے
- ثبوت
- ثابت ہوتا ہے
- عوامی
- عوامی کلید
- ریپپ
- RSA
- قوانین
- چل رہا ہے
- محفوظ
- بچت
- اسکیل ایبلٹی
- پیمانے
- سکیلنگ
- سائنس
- سیکورٹی
- مقرر
- سیکنڈ اور
- مشترکہ
- مختصر
- سادہ
- سائز
- سو
- ہوشیار
- سمارٹ معاہدہ
- اسمارٹ فون
- So
- سافٹ ویئر کی
- استحکام
- حل
- حل
- خلا
- خرچ کرنا۔
- شروع کریں
- شروع
- حالت
- امریکہ
- کامیاب
- کے نظام
- سسٹمز
- ٹیکنالوجی
- ٹیسٹ
- وقت
- ٹوکن
- سب سے اوپر
- نامہ
- ٹرانزیکشن
- معاملات
- بھروسہ رکھو
- تازہ ترین معلومات
- صارفین
- قیمت
- توثیق
- ویزا
- W
- ڈبلیو
- الفاظ
- کام
- کام کرتا ہے
- قابل
- X