اوریکلز
صفحہ کی آخری اپ ڈیٹ: 26 فروری، 2026
اوریکلز ایسی ایپلی کیشنز ہیں جو ڈیٹا فیڈز تیار کرتی ہیں جو اسمارٹ کانٹریکٹس کے لیے بلاک چین کو آف چین ڈیٹا کے ذرائع دستیاب کراتی ہیں۔ یہ اس لیے ضروری ہے کیونکہ ایتھیریم پر مبنی اسمارٹ کانٹریکٹس، بائی ڈیفالٹ، بلاک چین نیٹ ورک کے باہر محفوظ کردہ معلومات تک رسائی حاصل نہیں کر سکتے۔
اسمارٹ کانٹریکٹس کو آف چین ڈیٹا کا استعمال کرتے ہوئے عمل کرنے کی صلاحیت دینا ڈی سینٹرلائزڈ ایپلی کیشنز کی افادیت اور قدر کو بڑھاتا ہے۔ مثال کے طور پر، آن چین پیشین گوئی کی مارکیٹس (prediction markets) نتائج کے بارے میں معلومات فراہم کرنے کے لیے اوریکلز پر انحصار کرتی ہیں جنہیں وہ صارف کی پیشین گوئیوں کی توثیق کرنے کے لیے استعمال کرتی ہیں۔ فرض کریں کہ ایلس اس بات پر 20 ETH کی شرط لگاتی ہے کہ اگلا امریکی صدر کون بنے گا۔ اس صورت میں، پیشین گوئی کی مارکیٹ والی ڈیپ (dapp) کو انتخابی نتائج کی تصدیق کرنے اور یہ تعین کرنے کے لیے ایک اوریکل کی ضرورت ہوتی ہے کہ آیا ایلس ادائیگی کی اہل ہے یا نہیں۔
شرائط
یہ صفحہ فرض کرتا ہے کہ قاری Ethereum کے بنیادی اصولوں سے واقف ہے، بشمول نوڈز، کنسینسس میکانزمز، اور EVM۔ آپ کو اسمارٹ کانٹریکٹس اور اسمارٹ کانٹریکٹ کی ساخت، خاص طور پر کی بھی اچھی سمجھ ہونی چاہیے۔
بلاک چین اوریکل کیا ہے؟
اوریکلز ایسی ایپلی کیشنز ہیں جو بیرونی معلومات (یعنی آف چین محفوظ کردہ معلومات) کو حاصل کرتی ہیں، ان کی تصدیق کرتی ہیں، اور بلاک چین پر چلنے والے اسمارٹ کانٹریکٹس میں منتقل کرتی ہیں۔ آف چین ڈیٹا کو "کھینچنے" (pulling) اور اسے ایتھیریم پر نشر کرنے کے علاوہ، اوریکلز بلاک چین سے بیرونی سسٹمز میں معلومات کو "دھکیل" (push) بھی سکتے ہیں، مثال کے طور پر، صارف کی جانب سے ایتھیریم ٹرانزیکشن کے ذریعے فیس بھیجنے کے بعد اسمارٹ لاک کو کھولنا۔
اوریکل کے بغیر، ایک اسمارٹ کانٹریکٹ مکمل طور پر آن چین ڈیٹا تک محدود ہوگا۔
اوریکلز ڈیٹا کے ماخذ (ایک یا متعدد ذرائع)، ٹرسٹ ماڈلز (سینٹرلائزڈ یا ڈی سینٹرلائزڈ)، اور سسٹم آرکیٹیکچر (فوری پڑھنے، پبلش-سبسکرائب، اور درخواست-جواب) کی بنیاد پر مختلف ہوتے ہیں۔ ہم اوریکلز کے درمیان اس بنیاد پر بھی فرق کر سکتے ہیں کہ آیا وہ آن چین کانٹریکٹس کے استعمال کے لیے بیرونی ڈیٹا بازیافت کرتے ہیں (ان پٹ اوریکلز)، بلاک چین سے آف چین ایپلی کیشنز کو معلومات بھیجتے ہیں (آؤٹ پٹ اوریکلز)، یا آف چین کمپیوٹیشنل کام انجام دیتے ہیں (کمپیوٹیشنل اوریکلز)۔
اسمارٹ کانٹریکٹس کو اوریکلز کی ضرورت کیوں ہے؟
بہت سے ڈیولپرز اسمارٹ کانٹریکٹس کو بلاک چین پر مخصوص پتوں پر چلنے والے کوڈ کے طور پر دیکھتے ہیں۔ تاہم، اسمارٹ کانٹریکٹس کا ایک زیادہ عمومی نظریہ یہ ہے کہ وہ خود کار طریقے سے چلنے والے سافٹ ویئر پروگرام ہیں جو مخصوص شرائط پوری ہونے کے بعد فریقین کے درمیان معاہدوں کو نافذ کرنے کی صلاحیت رکھتے ہیں - اسی لیے انہیں "اسمارٹ کانٹریکٹس" کہا جاتا ہے۔
لیکن لوگوں کے درمیان معاہدوں کو نافذ کرنے کے لیے اسمارٹ کانٹریکٹس کا استعمال سیدھا نہیں ہے، کیونکہ ایتھیریم ڈیٹرمنسٹک (deterministic) ہے۔ ایک ڈیٹرمنسٹک سسٹم (opens in a new tab) وہ ہوتا ہے جو ابتدائی اسٹیٹ اور ایک خاص ان پٹ دیے جانے پر ہمیشہ ایک جیسے نتائج پیدا کرتا ہے، جس کا مطلب ہے کہ ان پٹس سے آؤٹ پٹس کا حساب لگانے کے عمل میں کوئی بے ترتیبی (randomness) یا تغیر نہیں ہوتا ہے۔
ڈیٹرمنسٹک عمل درآمد حاصل کرنے کے لیے، بلاک چینز نوڈز کو صرف بلاک چین پر محفوظ کردہ ڈیٹا کا استعمال کرتے ہوئے سادہ بائنری (درست/غلط) سوالات پر اتفاق رائے تک پہنچنے تک محدود کرتی ہیں۔ ایسے سوالات کی مثالوں میں شامل ہیں:
- "کیا اکاؤنٹ کے مالک (جس کی شناخت پبلک کی سے ہوتی ہے) نے اس ٹرانزیکشن پر جوڑی دار پرائیویٹ کی کے ساتھ دستخط کیے ہیں؟"
- "کیا اس اکاؤنٹ میں ٹرانزیکشن کو پورا کرنے کے لیے کافی فنڈز ہیں؟"
- "کیا یہ ٹرانزیکشن اس اسمارٹ کانٹریکٹ کے تناظر میں درست ہے؟"، وغیرہ۔
اگر بلاک چینز کو بیرونی ذرائع (یعنی حقیقی دنیا سے) معلومات موصول ہوتیں، تو ڈیٹرمنزم کا حصول ناممکن ہو جاتا، جس سے نوڈز بلاک چین کی اسٹیٹ میں ہونے والی تبدیلیوں کی درستگی پر متفق ہونے سے قاصر رہتے۔ مثال کے طور پر ایک ایسے اسمارٹ کانٹریکٹ کو لیں جو روایتی پرائس API سے حاصل کردہ موجودہ ETH-USD شرح تبادلہ کی بنیاد پر ٹرانزیکشن کو انجام دیتا ہے۔ اس اعداد و شمار کے کثرت سے تبدیل ہونے کا امکان ہے (یہ بتانے کی ضرورت نہیں کہ API متروک یا ہیک ہو سکتا ہے)، جس کا مطلب ہے کہ ایک ہی کانٹریکٹ کوڈ کو چلانے والے نوڈز مختلف نتائج پر پہنچیں گے۔
ایتھیریم جیسی پبلک بلاک چین کے لیے، جس میں دنیا بھر میں ہزاروں نوڈز ٹرانزیکشنز پر کارروائی کر رہے ہیں، ڈیٹرمنزم بہت اہم ہے۔ سچائی کے ماخذ کے طور پر کام کرنے والی کسی مرکزی اتھارٹی کے بغیر، نوڈز کو ایک جیسی ٹرانزیکشنز لاگو کرنے کے بعد ایک ہی اسٹیٹ پر پہنچنے کے لیے میکانزم کی ضرورت ہوتی ہے۔ ایک ایسا معاملہ جس میں نوڈ A اسمارٹ کانٹریکٹ کا کوڈ چلاتا ہے اور نتیجے کے طور پر "3" حاصل کرتا ہے، جبکہ نوڈ B ایک ہی ٹرانزیکشن چلانے کے بعد "7" حاصل کرتا ہے، تو اس سے اتفاق رائے ٹوٹ جائے گا اور ایک ڈی سینٹرلائزڈ کمپیوٹنگ پلیٹ فارم کے طور پر ایتھیریم کی قدر ختم ہو جائے گی۔
یہ منظر نامہ بیرونی ذرائع سے معلومات حاصل کرنے کے لیے بلاک چینز کو ڈیزائن کرنے کے مسئلے کو بھی نمایاں کرتا ہے۔ تاہم، اوریکلز آف چین ذرائع سے معلومات لے کر اور اسے اسمارٹ کانٹریکٹس کے استعمال کے لیے بلاک چین پر محفوظ کر کے اس مسئلے کو حل کرتے ہیں۔ چونکہ آن چین محفوظ کردہ معلومات ناقابل تغیر اور عوامی طور پر دستیاب ہوتی ہیں، اس لیے ایتھیریم نوڈز اتفاق رائے کو توڑے بغیر اسٹیٹ کی تبدیلیوں کا حساب لگانے کے لیے اوریکل کے ذریعے درآمد کردہ آف چین ڈیٹا کو محفوظ طریقے سے استعمال کر سکتے ہیں۔
ایسا کرنے کے لیے، ایک اوریکل عام طور پر آن چین چلنے والے اسمارٹ کانٹریکٹ اور کچھ آف چین اجزاء پر مشتمل ہوتا ہے۔ آن چین کانٹریکٹ کو دوسرے اسمارٹ کانٹریکٹس سے ڈیٹا کی درخواستیں موصول ہوتی ہیں، جنہیں وہ آف چین جزو (جسے اوریکل نوڈ کہا جاتا ہے) کو بھیج دیتا ہے۔ یہ اوریکل نوڈ ڈیٹا کے ذرائع سے استفسار کر سکتا ہے—مثال کے طور پر ایپلیکیشن پروگرامنگ انٹرفیسز (APIs) کا استعمال کرتے ہوئے—اور درخواست کردہ ڈیٹا کو اسمارٹ کانٹریکٹ کی اسٹوریج میں محفوظ کرنے کے لیے ٹرانزیکشنز بھیج سکتا ہے۔
بنیادی طور پر، ایک بلاک چین اوریکل بلاک چین اور بیرونی ماحول کے درمیان معلومات کے فرق کو ختم کرتا ہے، جس سے "ہائبرڈ اسمارٹ کانٹریکٹس" بنتے ہیں۔ ایک ہائبرڈ اسمارٹ کانٹریکٹ وہ ہوتا ہے جو آن چین کانٹریکٹ کوڈ اور آف چین انفراسٹرکچر کے امتزاج کی بنیاد پر کام کرتا ہے۔ ڈی سینٹرلائزڈ پیشین گوئی کی مارکیٹس ہائبرڈ اسمارٹ کانٹریکٹس کی ایک بہترین مثال ہیں۔ دیگر مثالوں میں فصل کی انشورنس کے اسمارٹ کانٹریکٹس شامل ہو سکتے ہیں جو اس وقت ادائیگی کرتے ہیں جب اوریکلز کا ایک سیٹ یہ طے کرتا ہے کہ موسم کے کچھ خاص مظاہر رونما ہوئے ہیں۔
اوریکل پرابلم کیا ہے؟
اوریکلز ایک اہم مسئلہ حل کرتے ہیں، لیکن کچھ پیچیدگیاں بھی متعارف کراتے ہیں، مثلاً:
-
ہم اس بات کی تصدیق کیسے کریں کہ داخل کی گئی معلومات درست ماخذ سے نکالی گئی تھیں یا ان کے ساتھ چھیڑ چھاڑ نہیں کی گئی ہے؟
-
ہم اس بات کو کیسے یقینی بنائیں کہ یہ ڈیٹا ہمیشہ دستیاب ہے اور باقاعدگی سے اپ ڈیٹ ہوتا ہے؟
نام نہاد "اوریکل پرابلم" ان مسائل کو ظاہر کرتا ہے جو اسمارٹ کانٹریکٹس کو ان پٹ بھیجنے کے لیے بلاک چین اوریکلز کے استعمال کے ساتھ آتے ہیں۔ اسمارٹ کانٹریکٹ کے درست طریقے سے عمل کرنے کے لیے اوریکل کا ڈیٹا درست ہونا چاہیے۔ مزید برآں، درست معلومات فراہم کرنے کے لیے اوریکل آپریٹرز پر 'اعتماد' کرنا اسمارٹ کانٹریکٹس کے 'ٹرسٹ لیس' (trustless) پہلو کو کمزور کرتا ہے۔
مختلف اوریکلز اوریکل کے مسئلے کے مختلف حل پیش کرتے ہیں، جنہیں ہم بعد میں دریافت کریں گے۔ اوریکلز کا عام طور پر اس بات پر جائزہ لیا جاتا ہے کہ وہ درج ذیل چیلنجز سے کتنی اچھی طرح نمٹ سکتے ہیں:
-
درستگی (Correctness): ایک اوریکل کو غلط آف چین ڈیٹا کی بنیاد پر اسمارٹ کانٹریکٹس کو اسٹیٹ کی تبدیلیاں متحرک کرنے کا سبب نہیں بننا چاہیے۔ ایک اوریکل کو ڈیٹا کی صداقت (authenticity) اور سالمیت (integrity) کی ضمانت دینی چاہیے۔ صداقت کا مطلب ہے کہ ڈیٹا درست ماخذ سے حاصل کیا گیا تھا، جبکہ سالمیت کا مطلب ہے کہ آن چین بھیجے جانے سے پہلے ڈیٹا برقرار رہا (یعنی تبدیل نہیں کیا گیا)۔
-
دستیابی (Availability): ایک اوریکل کو اسمارٹ کانٹریکٹس کو کارروائیاں کرنے اور اسٹیٹ کی تبدیلیوں کو متحرک کرنے میں تاخیر یا رکاوٹ نہیں ڈالنی چاہیے۔ اس کا مطلب ہے کہ اوریکل کا ڈیٹا بغیر کسی رکاوٹ کے درخواست پر دستیاب ہونا چاہیے۔
-
مراعات کی مطابقت (Incentive compatibility): ایک اوریکل کو آف چین ڈیٹا فراہم کرنے والوں کو اسمارٹ کانٹریکٹس میں درست معلومات جمع کرانے کی ترغیب دینی چاہیے۔ مراعات کی مطابقت میں انتساب (attributability) اور جوابدہی (accountability) شامل ہیں۔ انتساب بیرونی معلومات کے ایک حصے کو اس کے فراہم کنندہ سے جوڑنے کی اجازت دیتا ہے، جبکہ جوابدہی ڈیٹا فراہم کرنے والوں کو ان کی دی گئی معلومات کا پابند بناتی ہے، تاکہ فراہم کردہ معلومات کے معیار کی بنیاد پر انہیں انعام یا سزا دی جا سکے۔
بلاک چین اوریکل سروس کیسے کام کرتی ہے؟
صارفین
صارفین وہ ہستیان (یعنی اسمارٹ کانٹریکٹس) ہیں جنہیں مخصوص کارروائیوں کو مکمل کرنے کے لیے بلاک چین سے باہر کی معلومات کی ضرورت ہوتی ہے۔ اوریکل سروس کا بنیادی ورک فلو صارف کی جانب سے اوریکل کانٹریکٹ کو ڈیٹا کی درخواست بھیجنے سے شروع ہوتا ہے۔ ڈیٹا کی درخواستیں عام طور پر درج ذیل میں سے کچھ یا تمام سوالات کے جوابات دیں گی:
-
درخواست کردہ معلومات کے لیے آف چین نوڈز کن ذرائع سے رجوع کر سکتے ہیں؟
-
رپورٹرز ڈیٹا کے ذرائع سے معلومات پر کیسے کارروائی کرتے ہیں اور مفید ڈیٹا پوائنٹس کیسے نکالتے ہیں؟
-
ڈیٹا بازیافت کرنے میں کتنے اوریکل نوڈز حصہ لے سکتے ہیں؟
-
اوریکل رپورٹس میں تضادات کو کیسے منظم کیا جانا چاہیے؟
-
گذارشات کو فلٹر کرنے اور رپورٹس کو ایک ہی قدر میں جمع کرنے میں کون سا طریقہ نافذ کیا جانا چاہیے؟
اوریکل کانٹریکٹ
اوریکل کانٹریکٹ اوریکل سروس کے لیے آن چین جزو ہے۔ یہ دوسرے کانٹریکٹس سے ڈیٹا کی درخواستیں سنتا ہے، اوریکل نوڈز کو ڈیٹا کے سوالات بھیجتا ہے، اور واپس کیے گئے ڈیٹا کو کلائنٹ کانٹریکٹس میں نشر کرتا ہے۔ یہ کانٹریکٹ درخواست کرنے والے کانٹریکٹ کو بھیجنے کے لیے مجموعی قدر پیدا کرنے کے لیے واپس کیے گئے ڈیٹا پوائنٹس پر کچھ حساب کتاب بھی کر سکتا ہے۔
اوریکل کانٹریکٹ کچھ فنکشنز کو ظاہر کرتا ہے جنہیں کلائنٹ کانٹریکٹس ڈیٹا کی درخواست کرتے وقت کال کرتے ہیں۔ ایک نیا استفسار موصول ہونے پر، اسمارٹ کانٹریکٹ ڈیٹا کی درخواست کی تفصیلات کے ساتھ ایک لاگ ایونٹ خارج کرے گا۔ یہ لاگ کو سبسکرائب کرنے والے آف چین نوڈز کو مطلع کرتا ہے (عام طور پر JSON-RPC eth_subscribe کمانڈ جیسی چیز کا استعمال کرتے ہوئے)، جو لاگ ایونٹ میں بیان کردہ ڈیٹا کو بازیافت کرنے کے لیے آگے بڑھتے ہیں۔
ذیل میں پیڈرو کوسٹا کا ایک مثالی اوریکل کانٹریکٹ (opens in a new tab) ہے۔ یہ ایک سادہ اوریکل سروس ہے جو دوسرے اسمارٹ کانٹریکٹس کی درخواست پر آف چین APIs سے استفسار کر سکتی ہے اور درخواست کردہ معلومات کو بلاک چین پر محفوظ کر سکتی ہے:
1pragma solidity >=0.4.21 <0.6.0;23contract Oracle {4 Request[] requests; // کانٹریکٹ کو کی گئی درخواستوں کی فہرست5 uint currentId = 0; // بڑھتی ہوئی درخواست کی آئی ڈی6 uint minQuorum = 2; // حتمی نتیجے کا اعلان کرنے سے پہلے موصول ہونے والے جوابات کی کم از کم تعداد7 uint totalOracleCount = 3; // ہارڈ کوڈڈ اوریکل کی تعداد89 // ایک عام API درخواست کی وضاحت کرتا ہے10 struct Request {11 uint id; // درخواست کی آئی ڈی12 string urlToQuery; // API یو آر ایل13 string attributeToFetch; // جواب میں بازیافت کرنے کے لیے json ایٹریبیوٹ (کی)14 string agreedValue; // کی (key) سے ویلیو15 mapping(uint => string) answers; // اوریکلز کی طرف سے فراہم کردہ جوابات16 mapping(address => uint) quorum; // اوریکلز جو جواب طلب کریں گے (1=اوریکل نے ووٹ نہیں دیا، 2=اوریکل نے ووٹ دے دیا ہے)17 }1819 // ایونٹ جو بلاک چین کے باہر اوریکل کو متحرک کرتا ہے20 event NewRequest (21 uint id,22 string urlToQuery,23 string attributeToFetch24 );2526 // حتمی نتیجے پر اتفاق رائے ہونے پر متحرک ہوتا ہے27 event UpdatedRequest (28 uint id,29 string urlToQuery,30 string attributeToFetch,31 string agreedValue32 );3334 function createRequest (35 string memory _urlToQuery,36 string memory _attributeToFetch37 )38 public39 {40 uint length = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, ""));41 Request storage r = requests[length-1];4243 // ہارڈ کوڈڈ اوریکلز کا ایڈریس44 r.quorum[address(0x6c2339b46F41a06f09CA0051ddAD54D1e582bA77)] = 1;45 r.quorum[address(0xb5346CF224c02186606e5f89EACC21eC25398077)] = 1;46 r.quorum[address(0xa2997F1CA363D11a0a35bB1Ac0Ff7849bc13e914)] = 1;4748 // بلاک چین کے باہر اوریکل کے ذریعے پتہ لگانے کے لیے ایک ایونٹ شروع کریں49 emit NewRequest (50 currentId,51 _urlToQuery,52 _attributeToFetch53 );5455 // درخواست کی آئی ڈی میں اضافہ کریں56 currentId++;57 }5859 // اوریکل کی طرف سے اپنا جواب ریکارڈ کرنے کے لیے کال کیا گیا60 function updateRequest (61 uint _id,62 string memory _valueRetrieved63 ) public {6465 Request storage currRequest = requests[_id];6667 // چیک کریں کہ آیا اوریکل قابل اعتماد اوریکلز کی فہرست میں ہے68 // اور اگر اوریکل نے ابھی تک ووٹ نہیں دیا ہے69 if(currRequest.quorum[address(msg.sender)] == 1){7071 // یہ نشان زد کرنا کہ اس ایڈریس نے ووٹ دے دیا ہے72 currRequest.quorum[msg.sender] = 2;7374 // جوابات کے "ایرے" (array) میں اس وقت تک دہرائیں جب تک کہ کوئی جگہ خالی نہ ہو جائے اور بازیافت شدہ ویلیو کو محفوظ کریں75 uint tmpI = 0;76 bool found = false;77 while(!found) {78 // پہلی خالی جگہ تلاش کریں79 if(bytes(currRequest.answers[tmpI]).length == 0){80 found = true;81 currRequest.answers[tmpI] = _valueRetrieved;82 }83 tmpI++;84 }8586 uint currentQuorum = 0;8788 // اوریکل کی فہرست میں دہرائیں اور چیک کریں کہ آیا کافی اوریکلز (کم از کم کورم) موجود ہیں89 // نے موجودہ جواب جیسا ہی ووٹ دیا ہے90 for(uint i = 0; i < totalOracleCount; i++){91 bytes memory a = bytes(currRequest.answers[i]);92 bytes memory b = bytes(_valueRetrieved);9394 if(keccak256(a) == keccak256(b)){95 currentQuorum++;96 if(currentQuorum >= minQuorum){97 currRequest.agreedValue = _valueRetrieved;98 emit UpdatedRequest (99 currRequest.id,100 currRequest.urlToQuery,101 currRequest.attributeToFetch,102 currRequest.agreedValue103 );104 }105 }106 }107 }108 }109}سب دکھائیںاوریکل نوڈز
اوریکل نوڈ اوریکل سروس کا آف چین جزو ہے۔ یہ بیرونی ذرائع سے معلومات نکالتا ہے، جیسے تھرڈ پارٹی سرورز پر ہوسٹ کردہ APIs، اور اسے اسمارٹ کانٹریکٹس کے استعمال کے لیے آن چین رکھتا ہے۔ اوریکل نوڈز آن چین اوریکل کانٹریکٹ سے ایونٹس سنتے ہیں اور لاگ میں بیان کردہ کام کو مکمل کرنے کے لیے آگے بڑھتے ہیں۔
اوریکل نوڈز کے لیے ایک عام کام API سروس کو HTTP GET (opens in a new tab) درخواست بھیجنا، متعلقہ ڈیٹا نکالنے کے لیے جواب کا تجزیہ کرنا، بلاک چین کے پڑھنے کے قابل آؤٹ پٹ میں فارمیٹ کرنا، اور اسے اوریکل کانٹریکٹ کی ٹرانزیکشن میں شامل کر کے آن چین بھیجنا ہے۔ اوریکل نوڈ کو "صداقت کے ثبوت" (authenticity proofs) کا استعمال کرتے ہوئے جمع کرائی گئی معلومات کی درستگی اور سالمیت کی تصدیق کرنے کی بھی ضرورت پڑ سکتی ہے، جسے ہم بعد میں دریافت کریں گے۔
کمپیوٹیشنل اوریکلز بھی ایسے کمپیوٹیشنل کام انجام دینے کے لیے آف چین نوڈز پر انحصار کرتے ہیں جنہیں گیس کی لاگت اور بلاک سائز کی حدود کے پیش نظر آن چین انجام دینا غیر عملی ہوگا۔ مثال کے طور پر، اوریکل نوڈ کو قابل تصدیق بے ترتیب (random) اعداد و شمار تیار کرنے کا کام سونپا جا سکتا ہے (مثلاً، بلاک چین پر مبنی گیمز کے لیے)۔
اوریکل ڈیزائن پیٹرنز
اوریکلز مختلف اقسام میں آتے ہیں، بشمول فوری پڑھنے (immediate-read)، پبلش-سبسکرائب (publish-subscribe)، اور درخواست-جواب (request-response)، جن میں سے آخری دو ایتھیریم اسمارٹ کانٹریکٹس میں سب سے زیادہ مقبول ہیں۔ یہاں ہم پبلش-سبسکرائب اور درخواست-جواب کے ماڈلز کو مختصراً بیان کرتے ہیں۔
پبلش-سبسکرائب اوریکلز
اس قسم کا اوریکل ایک "ڈیٹا فیڈ" کو ظاہر کرتا ہے جسے دوسرے کانٹریکٹس معلومات کے لیے باقاعدگی سے پڑھ سکتے ہیں۔ اس صورت میں ڈیٹا کے کثرت سے تبدیل ہونے کی توقع ہوتی ہے، اس لیے کلائنٹ کانٹریکٹس کو اوریکل کی اسٹوریج میں ڈیٹا کی اپ ڈیٹس کو سننا چاہیے۔ اس کی ایک مثال ایک اوریکل ہے جو صارفین کو تازہ ترین ETH-USD قیمت کی معلومات فراہم کرتا ہے۔
درخواست-جواب اوریکلز
درخواست-جواب کا سیٹ اپ کلائنٹ کانٹریکٹ کو پبلش-سبسکرائب اوریکل کے ذریعے فراہم کردہ ڈیٹا کے علاوہ صوابدیدی ڈیٹا کی درخواست کرنے کی اجازت دیتا ہے۔ درخواست-جواب اوریکلز اس وقت مثالی ہوتے ہیں جب ڈیٹاسیٹ اتنا بڑا ہو کہ اسے اسمارٹ کانٹریکٹ کی اسٹوریج میں محفوظ نہ کیا جا سکے، اور/یا صارفین کو کسی بھی وقت ڈیٹا کے صرف ایک چھوٹے سے حصے کی ضرورت ہو۔
اگرچہ پبلش-سبسکرائب ماڈلز سے زیادہ پیچیدہ ہیں، درخواست-جواب اوریکلز بنیادی طور پر وہی ہیں جو ہم نے پچھلے حصے میں بیان کیے ہیں۔ اوریکل میں ایک آن چین جزو ہوگا جو ڈیٹا کی درخواست وصول کرتا ہے اور اسے کارروائی کے لیے آف چین نوڈ کو بھیجتا ہے۔
ڈیٹا کے سوالات شروع کرنے والے صارفین کو آف چین ماخذ سے معلومات بازیافت کرنے کی لاگت کو پورا کرنا چاہیے۔ کلائنٹ کانٹریکٹ کو درخواست میں بتائے گئے کال بیک فنکشن کے ذریعے جواب واپس کرنے میں اوریکل کانٹریکٹ کی جانب سے اٹھنے والے گیس کے اخراجات کو پورا کرنے کے لیے فنڈز بھی فراہم کرنے چاہئیں۔
سینٹرلائزڈ بمقابلہ ڈی سینٹرلائزڈ اوریکلز
سینٹرلائزڈ اوریکلز
ایک سینٹرلائزڈ اوریکل کو ایک ہی ہستی کے ذریعے کنٹرول کیا جاتا ہے جو آف چین معلومات کو جمع کرنے اور درخواست کے مطابق اوریکل کانٹریکٹ کے ڈیٹا کو اپ ڈیٹ کرنے کی ذمہ دار ہوتی ہے۔ سینٹرلائزڈ اوریکلز موثر ہوتے ہیں کیونکہ وہ سچائی کے ایک ہی ماخذ پر انحصار کرتے ہیں۔ وہ ان صورتوں میں بہتر کام کر سکتے ہیں جہاں ملکیتی ڈیٹاسیٹس براہ راست مالک کی جانب سے وسیع پیمانے پر قبول شدہ دستخط کے ساتھ شائع کیے جاتے ہیں۔ تاہم، وہ کچھ نقصانات بھی لاتے ہیں:
درستگی کی کم ضمانتیں
سینٹرلائزڈ اوریکلز کے ساتھ، اس بات کی تصدیق کرنے کا کوئی طریقہ نہیں ہے کہ فراہم کردہ معلومات درست ہیں یا نہیں۔ یہاں تک کہ "معزز" فراہم کنندگان بھی دھوکہ دے سکتے ہیں یا ہیک ہو سکتے ہیں۔ اگر اوریکل کرپٹ ہو جاتا ہے، تو اسمارٹ کانٹریکٹس خراب ڈیٹا کی بنیاد پر عمل کریں گے۔
ناقص دستیابی
سینٹرلائزڈ اوریکلز کی اس بات کی ضمانت نہیں ہے کہ وہ ہمیشہ دوسرے اسمارٹ کانٹریکٹس کو آف چین ڈیٹا دستیاب کرائیں گے۔ اگر فراہم کنندہ سروس کو بند کرنے کا فیصلہ کرتا ہے یا کوئی ہیکر اوریکل کے آف چین جزو کو ہائی جیک کر لیتا ہے، تو آپ کے اسمارٹ کانٹریکٹ کو ڈینائل آف سروس (DoS) حملے کا خطرہ ہے۔
ناقص مراعات کی مطابقت
سینٹرلائزڈ اوریکلز میں اکثر ڈیٹا فراہم کرنے والے کے لیے درست/غیر تبدیل شدہ معلومات بھیجنے کے لیے ناقص ڈیزائن کردہ یا غیر موجود مراعات ہوتی ہیں۔ درستگی کے لیے اوریکل کو ادائیگی کرنا ایمانداری کی ضمانت نہیں دیتا۔ یہ مسئلہ اس وقت بڑا ہو جاتا ہے جب اسمارٹ کانٹریکٹس کے ذریعے کنٹرول کی جانے والی قدر کی مقدار بڑھ جاتی ہے۔
ڈی سینٹرلائزڈ اوریکلز
ڈی سینٹرلائزڈ اوریکلز کو ناکامی کے واحد مقامات (single points of failure) کو ختم کر کے سینٹرلائزڈ اوریکلز کی حدود پر قابو پانے کے لیے ڈیزائن کیا گیا ہے۔ ایک ڈی سینٹرلائزڈ اوریکل سروس پیئر ٹو پیئر نیٹ ورک میں متعدد شرکاء پر مشتمل ہوتی ہے جو آف چین ڈیٹا کو اسمارٹ کانٹریکٹ میں بھیجنے سے پہلے اس پر اتفاق رائے قائم کرتے ہیں۔
ایک ڈی سینٹرلائزڈ اوریکل کو (مثالی طور پر) پرمیشن لیس، ٹرسٹ لیس، اور کسی مرکزی پارٹی کے زیر انتظام ہونے سے آزاد ہونا چاہیے؛ حقیقت میں، اوریکلز کے درمیان ڈی سینٹرلائزیشن ایک اسپیکٹرم پر ہے۔ نیم ڈی سینٹرلائزڈ اوریکل نیٹ ورکس موجود ہیں جہاں کوئی بھی حصہ لے سکتا ہے، لیکن ایک "مالک" کے ساتھ جو تاریخی کارکردگی کی بنیاد پر نوڈز کو منظور کرتا ہے اور ہٹاتا ہے۔ مکمل طور پر ڈی سینٹرلائزڈ اوریکل نیٹ ورکس بھی موجود ہیں: یہ عام طور پر اسٹینڈ ایلون بلاک چینز کے طور پر چلتے ہیں اور ان میں نوڈز کو مربوط کرنے اور بدسلوکی کی سزا دینے کے لیے متعین کنسینسس میکانزمز ہوتے ہیں۔
ڈی سینٹرلائزڈ اوریکلز کا استعمال درج ذیل فوائد کے ساتھ آتا ہے:
درستگی کی اعلیٰ ضمانتیں
ڈی سینٹرلائزڈ اوریکلز مختلف طریقوں کا استعمال کرتے ہوئے ڈیٹا کی درستگی حاصل کرنے کی کوشش کرتے ہیں۔ اس میں واپس کی گئی معلومات کی صداقت اور سالمیت کی تصدیق کرنے والے ثبوتوں کا استعمال اور متعدد اداروں کو آف چین ڈیٹا کی درستگی پر اجتماعی طور پر متفق ہونے کی ضرورت شامل ہے۔
صداقت کے ثبوت
صداقت کے ثبوت کرپٹوگرافک میکانزم ہیں جو بیرونی ذرائع سے حاصل کی گئی معلومات کی آزادانہ تصدیق کو قابل بناتے ہیں۔ یہ ثبوت معلومات کے ماخذ کی توثیق کر سکتے ہیں اور بازیافت کے بعد ڈیٹا میں ممکنہ تبدیلیوں کا پتہ لگا سکتے ہیں۔
صداقت کے ثبوتوں کی مثالوں میں شامل ہیں:
ٹرانسپورٹ لیئر سیکیورٹی (TLS) کے ثبوت: اوریکل نوڈز اکثر ٹرانسپورٹ لیئر سیکیورٹی (TLS) پروٹوکول پر مبنی محفوظ HTTP کنکشن کا استعمال کرتے ہوئے بیرونی ذرائع سے ڈیٹا بازیافت کرتے ہیں۔ کچھ ڈی سینٹرلائزڈ اوریکلز TLS سیشنز کی تصدیق کرنے کے لیے صداقت کے ثبوت استعمال کرتے ہیں (یعنی، نوڈ اور ایک مخصوص سرور کے درمیان معلومات کے تبادلے کی تصدیق کرتے ہیں) اور اس بات کی تصدیق کرتے ہیں کہ سیشن کے مندرجات کو تبدیل نہیں کیا گیا تھا۔
ٹرسٹڈ ایگزیکیوشن انوائرنمنٹ (TEE) کی تصدیقات: ایک ٹرسٹڈ ایگزیکیوشن انوائرنمنٹ (opens in a new tab) (TEE) ایک سینڈ باکسڈ کمپیوٹیشنل ماحول ہے جو اپنے میزبان سسٹم کے آپریشنل عمل سے الگ تھلگ ہوتا ہے۔ TEEs اس بات کو یقینی بناتے ہیں کہ کمپیوٹیشن کے ماحول میں محفوظ/استعمال ہونے والا کوئی بھی ایپلیکیشن کوڈ یا ڈیٹا سالمیت، رازداری، اور ناقابل تغیر ہونے کو برقرار رکھے۔ صارفین یہ ثابت کرنے کے لیے ایک تصدیق بھی تیار کر سکتے ہیں کہ ایپلیکیشن کی ایک مثال ٹرسٹڈ ایگزیکیوشن انوائرنمنٹ کے اندر چل رہی ہے۔
ڈی سینٹرلائزڈ اوریکلز کی کچھ کلاسز کو اوریکل نوڈ آپریٹرز سے TEE تصدیقات فراہم کرنے کی ضرورت ہوتی ہے۔ یہ صارف کو اس بات کی تصدیق کرتا ہے کہ نوڈ آپریٹر ٹرسٹڈ ایگزیکیوشن انوائرنمنٹ میں اوریکل کلائنٹ کی ایک مثال چلا رہا ہے۔ TEEs بیرونی عمل کو کسی ایپلیکیشن کے کوڈ اور ڈیٹا کو تبدیل کرنے یا پڑھنے سے روکتے ہیں، اس لیے، وہ تصدیقات یہ ثابت کرتی ہیں کہ اوریکل نوڈ نے معلومات کو برقرار اور خفیہ رکھا ہے۔
معلومات کی اتفاق رائے پر مبنی توثیق
سینٹرلائزڈ اوریکلز اسمارٹ کانٹریکٹس کو ڈیٹا فراہم کرتے وقت سچائی کے ایک ہی ماخذ پر انحصار کرتے ہیں، جو غلط معلومات شائع کرنے کے امکان کو متعارف کراتا ہے۔ ڈی سینٹرلائزڈ اوریکلز آف چین معلومات سے استفسار کرنے کے لیے متعدد اوریکل نوڈز پر انحصار کر کے اس مسئلے کو حل کرتے ہیں۔ متعدد ذرائع سے ڈیٹا کا موازنہ کر کے، ڈی سینٹرلائزڈ اوریکلز آن چین کانٹریکٹس میں غلط معلومات بھیجنے کے خطرے کو کم کرتے ہیں۔
تاہم، ڈی سینٹرلائزڈ اوریکلز کو متعدد آف چین ذرائع سے حاصل کی گئی معلومات میں تضادات سے نمٹنا چاہیے۔ معلومات میں فرق کو کم کرنے اور اس بات کو یقینی بنانے کے لیے کہ اوریکل کانٹریکٹ کو بھیجا گیا ڈیٹا اوریکل نوڈز کی اجتماعی رائے کی عکاسی کرتا ہے، ڈی سینٹرلائزڈ اوریکلز درج ذیل میکانزم استعمال کرتے ہیں:
ڈیٹا کی درستگی پر ووٹنگ/اسٹیکنگ
کچھ ڈی سینٹرلائزڈ اوریکل نیٹ ورکس کو شرکاء سے نیٹ ورک کے مقامی ٹوکن کا استعمال کرتے ہوئے ڈیٹا کے سوالات کے جوابات کی درستگی پر ووٹ دینے یا اسٹیک کرنے کی ضرورت ہوتی ہے (مثلاً، "2020 کے امریکی انتخابات کس نے جیتے؟")۔ ایک ایگریگیشن پروٹوکول پھر ووٹوں اور اسٹیکس کو جمع کرتا ہے اور اکثریت کی حمایت یافتہ جواب کو درست مانتا ہے۔
وہ نوڈز جن کے جوابات اکثریتی جواب سے ہٹ کر ہوتے ہیں، انہیں ان کے ٹوکنز ان لوگوں میں تقسیم کر کے سزا دی جاتی ہے جو زیادہ درست اقدار فراہم کرتے ہیں۔ ڈیٹا فراہم کرنے سے پہلے نوڈز کو بانڈ فراہم کرنے پر مجبور کرنا ایماندارانہ جوابات کی ترغیب دیتا ہے کیونکہ انہیں عقلی معاشی اداکار سمجھا جاتا ہے جو منافع کو زیادہ سے زیادہ کرنے کا ارادہ رکھتے ہیں۔
اسٹیکنگ/ووٹنگ ڈی سینٹرلائزڈ اوریکلز کو سے بھی بچاتی ہے جہاں بدنیتی پر مبنی اداکار کنسینسس سسٹم کو دھوکہ دینے کے لیے متعدد شناختیں بناتے ہیں۔ تاہم، اسٹیکنگ "فری لوڈنگ" (اوریکل نوڈز کا دوسروں سے معلومات کاپی کرنا) اور "سست توثیق" (اوریکل نوڈز کا خود معلومات کی تصدیق کیے بغیر اکثریت کی پیروی کرنا) کو نہیں روک سکتی۔
شیلنگ پوائنٹ میکانزمز
شیلنگ پوائنٹ (Schelling point) (opens in a new tab) گیم تھیوری کا ایک تصور ہے جو یہ فرض کرتا ہے کہ متعدد ہستیاں کسی بھی رابطے کی عدم موجودگی میں ہمیشہ کسی مسئلے کے مشترکہ حل کی طرف ڈیفالٹ ہوں گی۔ شیلنگ پوائنٹ میکانزمز اکثر ڈی سینٹرلائزڈ اوریکل نیٹ ورکس میں استعمال ہوتے ہیں تاکہ نوڈز کو ڈیٹا کی درخواستوں کے جوابات پر اتفاق رائے تک پہنچنے کے قابل بنایا جا سکے۔
اس کے لیے ایک ابتدائی خیال SchellingCoin (opens in a new tab) تھا، ایک مجوزہ ڈیٹا فیڈ جہاں شرکاء "اسکیلر" سوالات (وہ سوالات جن کے جوابات کو مقدار کے ذریعے بیان کیا جاتا ہے، مثلاً، "ETH کی قیمت کیا ہے؟") کے جوابات ایک ڈپازٹ کے ساتھ جمع کراتے ہیں۔ وہ صارفین جو 25ویں اور 75ویں پرسنٹائل (percentile) (opens in a new tab) کے درمیان اقدار فراہم کرتے ہیں انہیں انعام دیا جاتا ہے، جبکہ وہ لوگ جن کی اقدار درمیانی قدر سے بہت زیادہ ہٹ جاتی ہیں انہیں سزا دی جاتی ہے۔
اگرچہ SchellingCoin آج موجود نہیں ہے، لیکن متعدد ڈی سینٹرلائزڈ اوریکلز—خاص طور پر Maker Protocol کے Oracles (opens in a new tab)—اوریکل ڈیٹا کی درستگی کو بہتر بنانے کے لیے شیلنگ پوائنٹ میکانزم کا استعمال کرتے ہیں۔ ہر Maker Oracle نوڈز ("relayers" اور "feeds") کے ایک آف چین P2P نیٹ ورک پر مشتمل ہوتا ہے جو کولیٹرل اثاثوں کے لیے مارکیٹ کی قیمتیں جمع کراتے ہیں اور ایک آن چین "Medianizer" کانٹریکٹ جو فراہم کردہ تمام اقدار کا درمیانی حصہ (median) شمار کرتا ہے۔ ایک بار جب مخصوص تاخیر کی مدت ختم ہو جاتی ہے، تو یہ درمیانی قدر متعلقہ اثاثے کے لیے نئی حوالہ قیمت بن جاتی ہے۔
شیلنگ پوائنٹ میکانزم استعمال کرنے والے اوریکلز کی دیگر مثالوں میں Chainlink Offchain Reporting (opens in a new tab) اور Witnet (opens in a new tab) شامل ہیں۔ دونوں سسٹمز میں، پیئر ٹو پیئر نیٹ ورک میں اوریکل نوڈز کے جوابات کو ایک ہی مجموعی قدر میں جمع کیا جاتا ہے، جیسے کہ اوسط (mean) یا درمیانی قدر (median)۔ نوڈز کو اس حد تک انعام یا سزا دی جاتی ہے جس حد تک ان کے جوابات مجموعی قدر کے ساتھ ہم آہنگ ہوتے ہیں یا اس سے ہٹ جاتے ہیں۔
شیلنگ پوائنٹ میکانزمز پرکشش ہیں کیونکہ وہ ڈی سینٹرلائزیشن کی ضمانت دیتے ہوئے آن چین فٹ پرنٹ کو کم سے کم کرتے ہیں (صرف ایک ٹرانزیکشن بھیجنے کی ضرورت ہوتی ہے)۔ مؤخر الذکر اس لیے ممکن ہے کیونکہ نوڈز کو جمع کرائے گئے جوابات کی فہرست پر دستخط کرنے چاہئیں اس سے پہلے کہ اسے اس الگورتھم میں فیڈ کیا جائے جو اوسط/درمیانی قدر پیدا کرتا ہے۔
دستیابی
ڈی سینٹرلائزڈ اوریکل سروسز اسمارٹ کانٹریکٹس کے لیے آف چین ڈیٹا کی اعلیٰ دستیابی کو یقینی بناتی ہیں۔ یہ آف چین معلومات کے ماخذ اور معلومات کو آن چین منتقل کرنے کے ذمہ دار نوڈز دونوں کو ڈی سینٹرلائز کر کے حاصل کیا جاتا ہے۔
یہ فالٹ ٹالرینس (fault-tolerance) کو یقینی بناتا ہے کیونکہ اوریکل کانٹریکٹ دوسرے کانٹریکٹس سے سوالات کو انجام دینے کے لیے متعدد نوڈز (جو متعدد ڈیٹا ذرائع پر بھی انحصار کرتے ہیں) پر انحصار کر سکتا ہے۔ ماخذ اور نوڈ آپریٹر کی سطح پر ڈی سینٹرلائزیشن بہت اہم ہے—ایک ہی ماخذ سے حاصل کی گئی معلومات پیش کرنے والے اوریکل نوڈز کا نیٹ ورک اسی مسئلے کا شکار ہو جائے گا جس کا سامنا ایک سینٹرلائزڈ اوریکل کو ہوتا ہے۔
اسٹیک پر مبنی اوریکلز کے لیے ان نوڈ آپریٹرز کو سلیش (slash) کرنا بھی ممکن ہے جو ڈیٹا کی درخواستوں کا فوری جواب دینے میں ناکام رہتے ہیں۔ یہ اوریکل نوڈز کو فالٹ ٹالرینٹ انفراسٹرکچر میں سرمایہ کاری کرنے اور بروقت ڈیٹا فراہم کرنے کی نمایاں ترغیب دیتا ہے۔
اچھی مراعات کی مطابقت
ڈی سینٹرلائزڈ اوریکلز اوریکل نوڈز کے درمیان بازنطینی (Byzantine) (opens in a new tab) رویے کو روکنے کے لیے مختلف ترغیبی ڈیزائن نافذ کرتے ہیں۔ خاص طور پر، وہ انتساب اور جوابدہی حاصل کرتے ہیں:
-
ڈی سینٹرلائزڈ اوریکل نوڈز کو اکثر ڈیٹا کی درخواستوں کے جواب میں فراہم کردہ ڈیٹا پر دستخط کرنے کی ضرورت ہوتی ہے۔ یہ معلومات اوریکل نوڈز کی تاریخی کارکردگی کا جائزہ لینے میں مدد کرتی ہے، تاکہ صارفین ڈیٹا کی درخواستیں کرتے وقت ناقابل اعتبار اوریکل نوڈز کو فلٹر کر سکیں۔ اس کی ایک مثال Witnet کا الگورتھمک ریپوٹیشن سسٹم (opens in a new tab) ہے۔
-
ڈی سینٹرلائزڈ اوریکلز—جیسا کہ پہلے بتایا گیا ہے—نوڈز سے یہ مطالبہ کر سکتے ہیں کہ وہ اپنے جمع کرائے گئے ڈیٹا کی سچائی پر اپنے اعتماد پر ایک اسٹیک لگائیں۔ اگر دعویٰ درست ثابت ہوتا ہے، تو یہ اسٹیک ایماندارانہ سروس کے انعامات کے ساتھ واپس کیا جا سکتا ہے۔ لیکن معلومات غلط ہونے کی صورت میں اسے سلیش بھی کیا جا سکتا ہے، جو جوابدہی کا کچھ پیمانہ فراہم کرتا ہے۔
اسمارٹ کانٹریکٹس میں اوریکلز کی ایپلی کیشنز
ایتھیریم میں اوریکلز کے لیے عام استعمال کے کیسز درج ذیل ہیں:
مالیاتی ڈیٹا بازیافت کرنا
ڈی سینٹرلائزڈ فنانس (DeFi) ایپلی کیشنز پیئر ٹو پیئر قرض دینے، ادھار لینے، اور اثاثوں کی ٹریڈنگ کی اجازت دیتی ہیں۔ اس کے لیے اکثر مختلف مالیاتی معلومات حاصل کرنے کی ضرورت ہوتی ہے، بشمول شرح تبادلہ کا ڈیٹا (کرپٹو کرنسیوں کی فیاٹ قدر کا حساب لگانے یا ٹوکن کی قیمتوں کا موازنہ کرنے کے لیے) اور کیپٹل مارکیٹس کا ڈیٹا (ٹوکنائزڈ اثاثوں، جیسے سونا یا امریکی ڈالر کی قدر کا حساب لگانے کے لیے)۔
مثال کے طور پر، ایک DeFi قرض دینے والے پروٹوکول کو کولیٹرل کے طور پر جمع کرائے گئے اثاثوں (مثلاً، ETH) کی موجودہ مارکیٹ قیمتوں سے استفسار کرنے کی ضرورت ہوتی ہے۔ یہ کانٹریکٹ کو کولیٹرل اثاثوں کی قدر کا تعین کرنے اور یہ طے کرنے دیتا ہے کہ وہ سسٹم سے کتنا ادھار لے سکتا ہے۔
DeFi میں مقبول "پرائس اوریکلز" (جیسا کہ انہیں اکثر کہا جاتا ہے) میں Chainlink Price Feeds، Compound Protocol کا Open Price Feed (opens in a new tab)، Uniswap کی Time-Weighted Average Prices (TWAPs) (opens in a new tab)، اور Maker Oracles (opens in a new tab) شامل ہیں۔
بلڈرز کو ان پرائس اوریکلز کو اپنے پروجیکٹ میں ضم کرنے سے پہلے ان کے ساتھ آنے والی انتباہات کو سمجھنا چاہیے۔ یہ مضمون (opens in a new tab) اس بات کا تفصیلی تجزیہ فراہم کرتا ہے کہ مذکورہ پرائس اوریکلز میں سے کسی کو استعمال کرنے کی منصوبہ بندی کرتے وقت کن باتوں پر غور کرنا چاہیے۔
ذیل میں اس بات کی ایک مثال ہے کہ آپ Chainlink پرائس فیڈ کا استعمال کرتے ہوئے اپنے اسمارٹ کانٹریکٹ میں تازہ ترین ETH قیمت کیسے بازیافت کر سکتے ہیں:
1pragma solidity ^0.6.7;23import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";45contract PriceConsumerV3 {67 AggregatorV3Interface internal priceFeed;89 /* *10 * نیٹ ورک: Kovan11 * ایگریگیٹر: ETH/USD12 * ایڈریس: 0x9326BFA02ADD2366b30bacB125260Af641031331 */13 constructor() public {14 priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331);15 }1617 /* *18 * تازہ ترین قیمت واپس کرتا ہے */19 function getLatestPrice() public view returns (int) {20 (21 uint80 roundID,22 int price,23 uint startedAt,24 uint timeStamp,25 uint80 answeredInRound26 ) = priceFeed.latestRoundData();27 return price;28 }29}سب دکھائیںقابل تصدیق بے ترتیبی (randomness) پیدا کرنا
کچھ بلاک چین ایپلی کیشنز، جیسے بلاک چین پر مبنی گیمز یا لاٹری اسکیمز، کو مؤثر طریقے سے کام کرنے کے لیے اعلیٰ سطح کی غیر متوقعیت اور بے ترتیبی (randomness) کی ضرورت ہوتی ہے۔ تاہم، بلاک چینز کا ڈیٹرمنسٹک عمل درآمد بے ترتیبی کو ختم کر دیتا ہے۔
اصل نقطہ نظر سیوڈورینڈم (pseudorandom) کرپٹوگرافک فنکشنز کا استعمال کرنا تھا، جیسے blockhash، لیکن پروف آف ورک الگورتھم کو حل کرنے والے مائنرز کے ذریعے ان میں ہیرا پھیری کی جا سکتی تھی (opens in a new tab)۔ اس کے علاوہ، ایتھیریم کی پروف آف اسٹیک پر منتقلی کا مطلب ہے کہ ڈیولپرز اب آن چین بے ترتیبی کے لیے blockhash پر انحصار نہیں کر سکتے۔ بیکن چین کا RANDAO میکانزم (opens in a new tab) اس کے بجائے بے ترتیبی کا ایک متبادل ذریعہ فراہم کرتا ہے۔
بے ترتیب قدر کو آف چین پیدا کرنا اور اسے آن چین بھیجنا ممکن ہے، لیکن ایسا کرنے سے صارفین پر اعلیٰ اعتماد کی ضروریات عائد ہوتی ہیں۔ انہیں یہ ماننا ہوگا کہ قدر واقعی غیر متوقع میکانزم کے ذریعے پیدا کی گئی تھی اور راستے میں اسے تبدیل نہیں کیا گیا تھا۔
آف چین کمپیوٹیشن کے لیے ڈیزائن کیے گئے اوریکلز اس مسئلے کو محفوظ طریقے سے آف چین بے ترتیب نتائج پیدا کر کے حل کرتے ہیں جنہیں وہ اس عمل کی غیر متوقعیت کی تصدیق کرنے والے کرپٹوگرافک ثبوتوں کے ساتھ آن چین نشر کرتے ہیں۔ اس کی ایک مثال Chainlink VRF (opens in a new tab) (Verifiable Random Function) ہے، جو ایک قابلِ ثبوت منصفانہ اور چھیڑ چھاڑ سے پاک رینڈم نمبر جنریٹر (RNG) ہے جو غیر متوقع نتائج پر انحصار کرنے والی ایپلی کیشنز کے لیے قابل اعتماد اسمارٹ کانٹریکٹس بنانے کے لیے مفید ہے۔
ایونٹس کے نتائج حاصل کرنا
اوریکلز کے ساتھ، ایسے اسمارٹ کانٹریکٹس بنانا آسان ہے جو حقیقی دنیا کے ایونٹس پر ردعمل ظاہر کرتے ہیں۔ اوریکل سروسز کانٹریکٹس کو آف چین اجزاء کے ذریعے بیرونی APIs سے جڑنے اور ان ڈیٹا ذرائع سے معلومات استعمال کرنے کی اجازت دے کر اسے ممکن بناتی ہیں۔ مثال کے طور پر، پہلے ذکر کی گئی پیشین گوئی کی ڈیپ کسی اوریکل سے ایک قابل اعتماد آف چین ماخذ (مثلاً، ایسوسی ایٹڈ پریس) سے انتخابی نتائج واپس کرنے کی درخواست کر سکتی ہے۔
حقیقی دنیا کے نتائج کی بنیاد پر ڈیٹا بازیافت کرنے کے لیے اوریکلز کا استعمال دیگر نئے استعمال کے کیسز کو قابل بناتا ہے؛ مثال کے طور پر، ایک ڈی سینٹرلائزڈ انشورنس پروڈکٹ کو مؤثر طریقے سے کام کرنے کے لیے موسم، آفات وغیرہ کے بارے میں درست معلومات کی ضرورت ہوتی ہے۔
اسمارٹ کانٹریکٹس کو خودکار بنانا
اسمارٹ کانٹریکٹس خود بخود نہیں چلتے؛ بلکہ، ایک ایکسٹرنلی اونڈ اکاؤنٹ (EOA)، یا کسی دوسرے کانٹریکٹ اکاؤنٹ کو کانٹریکٹ کے کوڈ کو چلانے کے لیے صحیح فنکشنز کو متحرک کرنا چاہیے۔ زیادہ تر معاملات میں، کانٹریکٹ کے زیادہ تر فنکشنز پبلک ہوتے ہیں اور انہیں EOAs اور دیگر کانٹریکٹس کے ذریعے طلب کیا جا سکتا ہے۔
لیکن ایک کانٹریکٹ کے اندر پرائیویٹ فنکشنز بھی ہوتے ہیں جو دوسروں کے لیے ناقابل رسائی ہوتے ہیں؛، لیکن جو ڈیپ کی مجموعی فعالیت کے لیے اہم ہوتے ہیں۔ مثالوں میں ایک mintERC721Token() فنکشن شامل ہے جو وقتاً فوقتاً صارفین کے لیے نئے NFTs منٹ کرتا ہے، پیشین گوئی کی مارکیٹ میں ادائیگیوں کا انعام دینے کا فنکشن، یا DEX میں اسٹیک کیے گئے ٹوکنز کو غیر مقفل کرنے کا فنکشن شامل ہے۔
ڈیولپرز کو ایپلی کیشن کو آسانی سے چلانے کے لیے وقفوں پر ایسے فنکشنز کو متحرک کرنے کی ضرورت ہوگی۔ تاہم، اس سے ڈیولپرز کے لیے دنیاوی کاموں پر مزید گھنٹے ضائع ہو سکتے ہیں، یہی وجہ ہے کہ اسمارٹ کانٹریکٹس کے عمل درآمد کو خودکار بنانا پرکشش ہے۔
کچھ ڈی سینٹرلائزڈ اوریکل نیٹ ورکس آٹومیشن سروسز پیش کرتے ہیں، جو آف چین اوریکل نوڈز کو صارف کے بیان کردہ پیرامیٹرز کے مطابق اسمارٹ کانٹریکٹ کے فنکشنز کو متحرک کرنے کی اجازت دیتے ہیں۔ عام طور پر، اس کے لیے ہدف کے کانٹریکٹ کو اوریکل سروس کے ساتھ "رجسٹر" کرنے، اوریکل آپریٹر کو ادائیگی کے لیے فنڈز فراہم کرنے، اور کانٹریکٹ کو متحرک کرنے کے لیے شرائط یا اوقات بتانے کی ضرورت ہوتی ہے۔
Chainlink کا Keeper Network (opens in a new tab) اسمارٹ کانٹریکٹس کے لیے کم سے کم اعتماد اور ڈی سینٹرلائزڈ طریقے سے باقاعدہ دیکھ بھال کے کاموں کو آؤٹ سورس کرنے کے اختیارات فراہم کرتا ہے۔ اپنے کانٹریکٹ کو Keeper کے موافق بنانے اور Upkeep سروس استعمال کرنے کے بارے میں معلومات کے لیے آفیشل Keeper کی دستاویزات (opens in a new tab) پڑھیں۔
بلاک چین اوریکلز کا استعمال کیسے کریں
متعدد اوریکل ایپلی کیشنز ہیں جنہیں آپ اپنی ایتھیریم ڈیپ میں ضم کر سکتے ہیں:
Chainlink (opens in a new tab) - Chainlink ڈی سینٹرلائزڈ اوریکل نیٹ ورکس کسی بھی بلاک چین پر جدید اسمارٹ کانٹریکٹس کو سپورٹ کرنے کے لیے چھیڑ چھاڑ سے پاک ان پٹس، آؤٹ پٹس، اور کمپیوٹیشنز فراہم کرتے ہیں۔
RedStone Oracles (opens in a new tab) - RedStone ایک ڈی سینٹرلائزڈ ماڈیولر اوریکل ہے جو گیس کے لیے موزوں ڈیٹا فیڈز فراہم کرتا ہے۔ یہ ابھرتے ہوئے اثاثوں، جیسے لیکویڈ اسٹیکنگ ٹوکنز (LSTs)، لیکویڈ ری اسٹیکنگ ٹوکنز (LRTs)، اور بٹ کوائن اسٹیکنگ ڈیریویٹوز کے لیے پرائس فیڈز پیش کرنے میں مہارت رکھتا ہے۔
Chronicle (opens in a new tab) - Chronicle واقعی اسکیل ایبل، لاگت سے موثر، ڈی سینٹرلائزڈ، اور قابل تصدیق اوریکلز تیار کر کے آن چین ڈیٹا منتقل کرنے کی موجودہ حدود پر قابو پاتا ہے۔
Witnet (opens in a new tab) - Witnet ایک پرمیشن لیس، ڈی سینٹرلائزڈ، اور سنسرشپ کے خلاف مزاحمت کرنے والا اوریکل ہے جو مضبوط کرپٹو-اقتصادی ضمانتوں کے ساتھ حقیقی دنیا کے ایونٹس پر ردعمل ظاہر کرنے میں اسمارٹ کانٹریکٹس کی مدد کرتا ہے۔
UMA Oracle (opens in a new tab) - UMA کا آپٹمسٹک اوریکل اسمارٹ کانٹریکٹس کو انشورنس، مالیاتی ڈیریویٹوز، اور پیشین گوئی کی مارکیٹس سمیت مختلف ایپلی کیشنز کے لیے کسی بھی قسم کا ڈیٹا تیزی سے حاصل کرنے کی اجازت دیتا ہے۔
Tellor (opens in a new tab) - Tellor آپ کے اسمارٹ کانٹریکٹ کے لیے ایک شفاف اور پرمیشن لیس اوریکل پروٹوکول ہے تاکہ جب بھی اسے ضرورت ہو آسانی سے کوئی بھی ڈیٹا حاصل کر سکے۔
Band Protocol (opens in a new tab) - Band Protocol ایک کراس چین ڈیٹا اوریکل پلیٹ فارم ہے جو حقیقی دنیا کے ڈیٹا اور APIs کو جمع کرتا ہے اور اسمارٹ کانٹریکٹس سے جوڑتا ہے۔
Pyth Network (opens in a new tab) - Pyth نیٹ ورک ایک فرسٹ پارٹی فنانشل اوریکل نیٹ ورک ہے جسے چھیڑ چھاڑ سے پاک، ڈی سینٹرلائزڈ، اور خود کو برقرار رکھنے والے ماحول میں مسلسل حقیقی دنیا کا ڈیٹا آن چین شائع کرنے کے لیے ڈیزائن کیا گیا ہے۔
API3 DAO (opens in a new tab) - API3 DAO فرسٹ پارٹی اوریکل سلوشنز فراہم کر رہا ہے جو اسمارٹ کانٹریکٹس کے لیے ڈی سینٹرلائزڈ سلوشن میں زیادہ ماخذ کی شفافیت، سیکیورٹی اور اسکیل ایبلٹی فراہم کرتے ہیں۔
Supra (opens in a new tab) - کراس چین سلوشنز کی ایک عمودی طور پر مربوط ٹول کٹ جو تمام بلاک چینز، پبلک (L1s اور L2s) یا پرائیویٹ (انٹرپرائزز) کو آپس میں جوڑتی ہے، جو ڈی سینٹرلائزڈ اوریکل پرائس فیڈز فراہم کرتی ہے جنہیں آن چین اور آف چین استعمال کے کیسز کے لیے استعمال کیا جا سکتا ہے۔
Gas Network (opens in a new tab) - ایک ڈسٹری بیوٹڈ اوریکل پلیٹ فارم جو بلاک چین پر ریئل ٹائم گیس کی قیمت کا ڈیٹا فراہم کرتا ہے۔ معروف گیس پرائس ڈیٹا فراہم کنندگان سے ڈیٹا کو آن چین لا کر، Gas Network انٹرآپریبلٹی کو آگے بڑھانے میں مدد کر رہا ہے۔ Gas Network 35 سے زیادہ چینز کے لیے ڈیٹا کو سپورٹ کرتا ہے، بشمول Ethereum Mainnet اور بہت سے معروف L2s۔
DIA (opens in a new tab) - ایک کراس چین اوریکل نیٹ ورک جو تمام بڑی اثاثہ کلاسز میں 20,000+ اثاثوں کے لیے قابل تصدیق ڈیٹا فیڈز فراہم کرتا ہے۔ DIA خام تجارتی ڈیٹا براہ راست 100+ پرائمری مارکیٹس سے حاصل کرتا ہے اور اسے آن چین شمار کرتا ہے، جو کسی بھی استعمال کے کیس کے لیے کسٹم کنفیگریشنز کے ساتھ مکمل ڈیٹا کی شفافیت اور قابل تصدیق ہونے کو یقینی بناتا ہے۔
Stork (opens in a new tab) - Stork انتہائی کم تاخیر پر قیمت کا ڈیٹا فراہم کرتا ہے، جو پرپیچوئلز مارکیٹس، قرض دینے والے پروٹوکولز، اور DeFi ایکو سسٹمز سمیت استعمال کے کیسز کی ایک وسیع رینج کو سپورٹ کرتا ہے، جس میں لسٹنگ پر نئے اثاثوں کو تیزی سے سپورٹ کیا جاتا ہے۔
مزید مطالعہ
مضامین
- بلاک چین اوریکل کیا ہے؟ (opens in a new tab) — Chainlink
- بلاک چین اوریکل کیا ہے؟ (opens in a new tab) — Patrick Collins
- ڈی سینٹرلائزڈ اوریکلز: ایک جامع جائزہ (opens in a new tab) — Julien Thevenard
- ایتھیریم پر بلاک چین اوریکل کو نافذ کرنا (opens in a new tab) – Pedro Costa
- اسمارٹ کانٹریکٹس API کالز کیوں نہیں کر سکتے؟ (opens in a new tab) — StackExchange
- تو آپ پرائس اوریکل استعمال کرنا چاہتے ہیں (opens in a new tab) — samczsun
ویڈیوز
- اوریکلز اور بلاک چین کی افادیت کی توسیع (opens in a new tab) — Real Vision Finance
ٹیوٹوریلز
- Solidity میں ایتھیریم کی موجودہ قیمت کیسے حاصل کریں (opens in a new tab) — Chainlink
- اوریکل ڈیٹا کا استعمال (opens in a new tab) — Chronicle
مثالی پروجیکٹس