بلاکچین میں ڈیجیٹل دستخط پر مبنی رینڈم اوریکل

خیال سے عمل درآمد تک: ہم موجودہ بیضوی وکر ڈیجیٹل دستخطی اسکیم میں ترمیم کرتے ہیں تاکہ یہ تعییناتی ہو، اور اس کی بنیاد پر ہم بلاکچین کے اندر قابل تصدیق چھدم بے ترتیب نمبر حاصل کرنے کے فنکشن فراہم کرتے ہیں۔

بلاکچین میں ڈیجیٹل دستخط پر مبنی رینڈم اوریکل

خیال

2018 کے موسم خزاں میں، ویوز بلاکچین شامل تھے۔ پہلے سمارٹ معاہدوں کو چالو کیا گیا۔، سوال فوری طور پر حاصل کرنے کے امکان کے بارے میں پیدا ہوا۔ سیوڈورنڈم نمبرزجس پر آپ اعتماد کر سکتے ہیں۔

اس سوال پر الجھتے ہوئے، میں آخر کار اس نتیجے پر پہنچا: کوئی بھی بلاک چین ایک سیل ہے؛ بند نظام میں اینٹروپی کے قابل اعتماد ذریعہ کو حاصل کرنا ناممکن ہے۔

لیکن مجھے پھر بھی ایک خیال پسند آیا: اگر بے ترتیب اوریکل ایک تعییناتی الگورتھم کے ساتھ صارف کے ڈیٹا پر دستخط کرے گا، پھر صارف ہمیشہ عوامی کلید کا استعمال کرتے ہوئے اس طرح کے دستخط کی تصدیق کر سکے گا، اور اس بات کو یقینی بنائے گا کہ نتیجے کی قدر منفرد ہے۔ اوریکل، چاہے وہ کتنی ہی مشکل سے چاہے، کچھ بھی تبدیل کرنے سے قاصر ہے؛ الگورتھم ایک غیر واضح نتیجہ پیدا کرتا ہے۔ بنیادی طور پر، صارف نتیجہ کو ریکارڈ کرتا ہے، لیکن اسے اس وقت تک معلوم نہیں ہوتا جب تک کہ اوریکل اسے شائع نہ کرے۔ یہ پتہ چلتا ہے کہ آپ اوریکل پر بالکل بھروسہ نہیں کرسکتے ہیں، لیکن اس کے کام کا نتیجہ چیک کریں۔ پھر، کامیاب توثیق کی صورت میں، اس طرح کے دستخط کو سیوڈورنڈم نمبر کے لیے اینٹروپی کا ذریعہ سمجھا جا سکتا ہے۔

ویوز بلاکچین پلیٹ فارم دستخطی اسکیم کا استعمال کرتا ہے۔ ایڈ ڈی ایس اے آپشن ایڈ 25519. اس اسکیم میں، دستخط R اور S کی قدروں پر مشتمل ہوتا ہے، جہاں R کا انحصار ایک بے ترتیب قدر پر ہوتا ہے، اور S کا حساب دستخط کیے جانے والے پیغام، نجی کلید اور R جیسا ہی بے ترتیب نمبر کی بنیاد پر کیا جاتا ہے۔ اس کے لیے کوئی منفرد انحصار نہیں ہے صارف کے پیغام کے لیے بہت سے درست دستخط ہوتے ہیں۔

ظاہر ہے، اس کی خالص شکل میں، اس طرح کے دستخط کو چھدم بے ترتیب نمبروں کے ذریعہ کے طور پر استعمال نہیں کیا جا سکتا، کیونکہ یہ غیر متعین ہے اور اس وجہ سے، اوریکل کے ذریعہ آسانی سے ہیرا پھیری کی جا سکتی ہے۔

لیکن، جیسا کہ یہ نکلا، یہ اصل میں ممکن ہے کہ اسے تعیین پسند بنایا جائے۔

مجھے بڑی امیدیں تھیں۔ قابل تصدیق رینڈم فنکشن (VRF)، لیکن ہارڈ ویئر کا مطالعہ کرنے کے بعد، مجھے یہ اختیار ترک کرنا پڑا۔ اگرچہ VRF دستخط اور اس کے ثبوت کا ایک متعین ورژن پیش کرتا ہے، الگورتھم میں ایک عجیب جگہ ہے جو اوریکل کی ہیرا پھیری کے لیے ایک بلیک ہول کھولتی ہے۔ یعنی، k کی قدر کا حساب لگاتے وقت (سیکشن 5.1) ایک نجی کلید استعمال کی جاتی ہے، جو صارف کے لیے نامعلوم رہتی ہے، جس کا مطلب ہے کہ صارف k کے حساب کتاب کی درستگی کی تصدیق نہیں کر سکتا، جس کا مطلب ہے کہ اوریکل k کی اپنی ضرورت کی کوئی بھی قیمت استعمال کر سکتا ہے اور ساتھ ہی خط و کتابت کا ڈیٹا بیس بھی برقرار رکھتا ہے۔ k اور دستخط شدہ ڈیٹا کا ہمیشہ اس قابل ہونے کے لیے کہ VRF کے نقطہ نظر سے درست نتیجہ دوبارہ شمار کیا جا سکے۔ اگر آپ نجی کلید کو ظاہر کیے بغیر VRF پر مبنی ڈرائنگ دیکھتے ہیں، تو آپ ہوشیار ہو سکتے ہیں: یا تو کلید کو ظاہر کرنے کی ضرورت کی نشاندہی کریں، یا اسے k کے حساب سے خارج کر دیں، پھر نجی کلید خود بخود ظاہر ہو جائے گی جب پہلا دستخط ظاہر ہو گا۔ . عام طور پر، جیسا کہ پہلے ہی ذکر کیا جا چکا ہے، بے ترتیب اوریکل کے لیے ایک عجیب اسکیم۔

تھوڑی سوچ بچار اور مقامی تجزیہ کاروں کی حمایت حاصل کرنے کے بعد، VECRO ورک سکیم نے جنم لیا۔

VECRO Verifiable Elliptic Curve Random Oracle کا مخفف ہے، جس کا روسی میں مطلب بیضوی منحنی خطوط پر قابل تصدیق بے ترتیب اوریکل ہے۔

سب کچھ بہت آسان نکلا؛ عزم کو حاصل کرنے کے لیے، آپ کو دستخط کیے جانے والے پیغام کے ظاہر ہونے سے پہلے R کی قدر کو ٹھیک کرنا ہوگا۔ اگر R پرعزم ہے اور دستخط کیے جانے والے پیغام کا حصہ ہے، جو مزید اس بات کو یقینی بناتا ہے کہ دستخط کیے جانے والے پیغام میں R کا ارتکاب کیا گیا ہے، S کی قدر منفرد طور پر صارف کے پیغام سے متعین کی جاتی ہے اور اس لیے اسے pseudorandom نمبروں کے لیے بطور ذریعہ استعمال کیا جا سکتا ہے۔

اس طرح کی اسکیم میں، اس سے کوئی فرق نہیں پڑتا ہے کہ R کیسے طے ہوتا ہے؛ یہ اوریکل کی ذمہ داری رہتی ہے۔ یہ ضروری ہے کہ S کا تعین صارف کے ذریعہ منفرد طور پر کیا جائے، لیکن اس کی قدر اس وقت تک معلوم نہیں جب تک کہ اوریکل اسے شائع نہ کرے۔ سب کچھ جو ہم چاہتے تھے!

فکسڈ آر کے بارے میں بات کرتے ہوئے، نوٹ کریں کہ دوبارہ استعمال شدہ R مختلف پیغامات پر دستخط کرتے وقت، یہ ایڈ ڈی ایس اے اسکیم میں نجی کلید کو منفرد طور پر ظاہر کرتا ہے۔ اوریکل کے مالک کے لیے صارف کے مختلف پیغامات پر دستخط کرنے کے لیے R کو دوبارہ استعمال کرنے کے امکان کو ختم کرنا انتہائی اہم ہو جاتا ہے۔ یعنی، کسی بھی ہیرا پھیری یا ملی بھگت سے، اوریکل ہمیشہ اپنی نجی کلید کو کھونے کا خطرہ مول لے گا۔

مجموعی طور پر، اوریکل کو صارفین کو دو فنکشنز فراہم کرنے چاہئیں: ابتداء، جو قدر R کو ٹھیک کرتی ہے، اور دستخط، جو قدر S کو لوٹاتا ہے۔ اس صورت میں، جوڑا R, S صارف کے پیغام کا معمول کے قابل تصدیق دستخط ہوتا ہے جس میں ایک مقررہ ہوتا ہے۔ قدر R اور صوابدیدی صارف ڈیٹا۔

یہ دلیل دی جا سکتی ہے کہ بلاکچین کے لیے یہ سکیم عام سے زیادہ کچھ نہیں ہے۔ کمٹ توسیع سکیم. بنیادی طور پر، ہاں، یہ اس کی ہے۔ لیکن کئی باریکیاں ہیں۔ سب سے پہلے، اوریکل ہمیشہ تمام آپریشنز میں ایک ہی کلید کے ساتھ کام کرتا ہے، مثال کے طور پر، یہ معاہدوں میں استعمال کرنا آسان ہے۔ دوسری بات یہ ہے کہ اگر اوریکل غلط طریقے سے برتاؤ کرتا ہے تو اس کے نجی کلید کے کھو جانے کا خطرہ ہے، مثال کے طور پر، اوریکل آپ کو نتیجہ کے نمونے بنانے کی اجازت دیتا ہے، پھر نجی کلید کو تلاش کرنے اور مکمل حاصل کرنے کے لیے صرف دو ٹیسٹ کرنا کافی ہے۔ بٹوے تک رسائی۔ تیسرا، ایک دستخط جو مقامی طور پر بلاکچین پر قابل تصدیق ہے اور بے ترتیب ہونے کا ذریعہ ہے خوبصورت ہے۔

چھ ماہ تک عمل درآمد کا خیال میرے ذہن میں ابلتا رہا، یہاں تک کہ آخر کار محرک شکل میں ظاہر ہو گیا۔ ویوز لیبز سے گرانٹ. ایک بڑی گرانٹ کے ساتھ بڑی ذمہ داری آتی ہے، تو پروجیکٹ وہاں ہوگا!

Реализация

تو، اس منصوبے میں VECRO لاگو کیا گیا تھا صارف اور اوریکل کے درمیان منتقلی کے لین دین کا استعمال کرتے ہوئے درخواست جوابی موڈ میں ویوز بلاکچین پر۔ اس کے ساتھ ہی اوریکل اکاؤنٹ پر ایک اسکرپٹ انسٹال ہوتا ہے جو اوپر بیان کی گئی منطق کے مطابق کام کو سختی سے کنٹرول کرتا ہے۔ اوریکل ٹرانزیکشنز کی تصدیق ہو جاتی ہے اور صارف کے تعامل کا پورا سلسلہ بحال ہو جاتا ہے۔ چاروں ٹرانزیکشنز حتمی قیمت کی تصدیق میں شامل ہیں؛ سمارٹ کنٹریکٹ ان کو ایک سخت تصدیقی دھاگے کے ساتھ جوڑتا ہے، قدم بہ قدم تمام اقدار کی جانچ پڑتال کرتا ہے اور کسی قسم کی ہیرا پھیری کی کوئی گنجائش نہیں چھوڑتا ہے۔

ایک بار پھر، اسے ایک طرف رکھنے اور اسے واضح کرنے کے لیے۔ اوریکل صرف مجوزہ اسکیم کے مطابق کام نہیں کرتا۔ اس کا کام بلاک چین کی سطح پر قائم شدہ کے ذریعہ مکمل طور پر کنٹرول کیا جاتا ہے۔ مضبوطی سے ایک زبردست معاہدے کے ساتھ. بائیں طرف قدم رکھیں اور لین دین بس نہیں گزرے گا۔ لہذا، اگر بلاکچین میں کوئی لین دین شامل ہے، تو صارف کو کچھ بھی چیک کرنے کی ضرورت نہیں ہے؛ سینکڑوں نیٹ ورک نوڈس پہلے ہی اس کے لیے سب کچھ چیک کر چکے ہیں۔

فی الحال، ویوز مین نیٹ پر ایک VECRO چل رہا ہے (آپ خود چلا سکتے ہیں، یہ مشکل نہیں ہے، بس ترتیب کی مثال پر ایک نظر ڈالیں۔)۔ موجودہ کوڈ پی ایچ پی میں چلتا ہے (آن ویوز کٹ، جس کے بارے میں میں نے آپ کو پہلے بتایا تھا۔).

اوریکل سروس استعمال کرنے کے لیے آپ کو:

  • R درست کریں؛
    • کم از کم 0.005 لہریں اوریکل عرف init@vecr پر بھیجیں۔
    • اوریکل سے صارف کو 1 R-vecr ٹوکن کی منتقلی میں منسلکہ فیلڈ میں آر کوڈ وصول کریں۔
  • ایک دستخط حاصل کریں؛
    • کم از کم 0.005 لہریں oracle alias random@vecr پر بھیجیں، اور منسلکہ فیلڈ میں پہلے سے موصول ہونے والے R-code اور اضافی صارف کے ڈیٹا کی بھی نشاندہی کرنا ضروری ہے۔
    • اوریکل سے صارف کو 1 S-vecr ٹوکن کی منتقلی میں منسلکہ فیلڈ میں S-code وصول کریں۔
  • سیوڈو بے ترتیب نمبر کے ماخذ کے طور پر ایس کوڈ کا استعمال کریں۔

موجودہ نفاذ کی باریکیاں:

  • اوریکل کو بھیجی گئی لہروں کو صارف کو واپسی کے لین دین کے لیے کمیشن کے طور پر استعمال کیا جاتا ہے، زیادہ سے زیادہ 1 لہروں تک؛
  • R-code 'R' کیریکٹر کے بائٹ اور 32-بائٹ بیس 58-انکوڈڈ R ویلیو کا مجموعہ ہے۔
  • منسلکہ میں آر کوڈ پہلے ہونا چاہیے، صارف کا ڈیٹا آر کوڈ کے بعد آتا ہے۔
  • ایس کوڈ کریکٹر 'S' کے ایک بائٹ اور S کی 32-بائٹ بیس 58-انکوڈ شدہ قدر کا مجموعہ ہے۔
  • S ماڈیولو ڈویژن کا نتیجہ ہے، لہذا آپ S کو مکمل 256 بٹ سیوڈورنڈم نمبر کے طور پر استعمال نہیں کر سکتے ہیں (اس نمبر کو زیادہ سے زیادہ 252 بٹ سیوڈورنڈم نمبر سمجھا جا سکتا ہے)؛
  • سب سے آسان آپشن یہ ہے کہ ایس کوڈ ہیش کو سیوڈو رینڈم نمبر کے طور پر استعمال کریں۔

ایس کوڈ وصول کرنے کی مثال:

تکنیکی نقطہ نظر سے، اوریکل کام کے لیے مکمل طور پر تیار ہے، آپ اسے محفوظ طریقے سے استعمال کر سکتے ہیں۔ اوسط صارف کے استعمال کے نقطہ نظر سے، ایک آسان گرافیکل انٹرفیس کی کمی ہے؛ اس کے لیے انتظار کرنا پڑے گا۔

مجھے سوالات کے جوابات دینے اور تبصرے قبول کرنے میں خوشی ہوگی، شکریہ۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں