اوریکلز
اوریکلز ایسی ایپلی کیشنز ہیں جو ڈیٹا فیڈز تیار کرتی ہیں جو سمارٹ کنٹریکٹس کے لیے بلاک چین کو آف چین ڈیٹا کے ذرائع دستیاب کرتی ہیں۔ یہ اس لیے ضروری ہے کیونکہ ایتھیریم پر مبنی سمارٹ کنٹریکٹس، پہلے سے طے شدہ طور پر، بلاک چین نیٹ ورک کے باہر محفوظ کردہ معلومات تک رسائی حاصل نہیں کر سکتے۔
سمارٹ کنٹریکٹس کو آف چین ڈیٹا کا استعمال کرتے ہوئے عمل کرنے کی صلاحیت دینا غیر مرکزی ایپلی کیشنز کی افادیت اور قدر کو بڑھاتا ہے۔ مثال کے طور پر، آن چین پیش گوئی کی مارکیٹیں نتائج کے بارے میں معلومات فراہم کرنے کے لیے اوریکلز پر انحصار کرتی ہیں جنہیں وہ صارف کی پیش گوئیوں کی توثیق کے لیے استعمال کرتی ہیں۔ فرض کریں کہ ایلس اس بات پر 20 ETH کی شرط لگاتی ہے کہ اگلا امریکی صدر کون بنے گا۔ اس صورت میں، پیش گوئی کی مارکیٹ کی غیر مرکزی ایپلی کیشن (dapp) کو انتخابی نتائج کی تصدیق کرنے اور یہ تعین کرنے کے لیے ایک اوریکل کی ضرورت ہوتی ہے کہ آیا ایلس ادائیگی کی اہل ہے۔
شرائط
یہ صفحہ فرض کرتا ہے کہ قاری ایتھیریم کے بنیادی اصولوں سے واقف ہے، بشمول نوڈز، اتفاق رائے کے طریقہ کار، اور EVM۔ آپ کو سمارٹ کنٹریکٹس اور سمارٹ کنٹریکٹ کی ساخت، خاص طور پر کی بھی اچھی سمجھ ہونی چاہیے۔
بلاک چین اوریکل کیا ہے؟
اوریکلز ایسی ایپلی کیشنز ہیں جو بیرونی معلومات (یعنی آف چین محفوظ کردہ معلومات) کو حاصل کرتی ہیں، ان کی تصدیق کرتی ہیں، اور بلاک چین پر چلنے والے سمارٹ کنٹریکٹس میں منتقل کرتی ہیں۔ آف چین ڈیٹا کو "کھینچنے" اور اسے ایتھیریم پر نشر کرنے کے علاوہ، اوریکلز بلاک چین سے بیرونی سسٹمز میں معلومات کو "دھکیل" بھی سکتے ہیں، مثال کے طور پر، صارف کی جانب سے ایتھیریم ٹرانزیکشن کے ذریعے فیس بھیجنے کے بعد سمارٹ لاک کو کھولنا۔
اوریکل کے بغیر، ایک سمارٹ کنٹریکٹ مکمل طور پر آن چین ڈیٹا تک محدود ہوگا۔
اوریکلز ڈیٹا کے ماخذ (ایک یا ایک سے زیادہ ذرائع)، اعتماد کے ماڈلز (مرکزی یا لامركزی)، اور سسٹم کے فن تعمیر (فوری پڑھنا، شائع کرنا-سبسکرائب کرنا، اور درخواست-جواب) کی بنیاد پر مختلف ہوتے ہیں۔ ہم اوریکلز کے درمیان اس بنیاد پر بھی فرق کر سکتے ہیں کہ آیا وہ آن چین کنٹریکٹس کے استعمال کے لیے بیرونی ڈیٹا بازیافت کرتے ہیں (ان پٹ اوریکلز)، بلاک چین سے آف چین ایپلی کیشنز کو معلومات بھیجتے ہیں (آؤٹ پٹ اوریکلز)، یا آف چین کمپیوٹیشنل کام انجام دیتے ہیں (کمپیوٹیشنل اوریکلز)۔
سمارٹ کنٹریکٹس کو اوریکلز کی ضرورت کیوں ہے؟
بہت سے ڈیولپرز سمارٹ کنٹریکٹس کو بلاک چین پر مخصوص پتوں پر چلنے والے کوڈ کے طور پر دیکھتے ہیں۔ تاہم، سمارٹ کنٹریکٹس کا ایک زیادہ عمومی نظریہ یہ ہے کہ وہ خود کار طریقے سے چلنے والے سافٹ ویئر پروگرام ہیں جو مخصوص شرائط پوری ہونے پر فریقین کے درمیان معاہدوں کو نافذ کرنے کی صلاحیت رکھتے ہیں - اسی لیے انہیں "سمارٹ کنٹریکٹس" کہا جاتا ہے۔
لیکن لوگوں کے درمیان معاہدوں کو نافذ کرنے کے لیے سمارٹ کنٹریکٹس کا استعمال سیدھا نہیں ہے، اس بات کو مدنظر رکھتے ہوئے کہ ایتھیریم فیصلہ کن (deterministic) ہے۔ ایک فیصلہ کن سسٹم (opens in a new tab) وہ ہوتا ہے جو ابتدائی حالت اور ایک خاص ان پٹ دیے جانے پر ہمیشہ ایک جیسے نتائج پیدا کرتا ہے، جس کا مطلب ہے کہ ان پٹ سے آؤٹ پٹ کا حساب لگانے کے عمل میں کوئی بے ترتیبی یا تغیر نہیں ہوتا ہے۔
فیصلہ کن عمل درآمد حاصل کرنے کے لیے، بلاک چینز نوڈز کو صرف بلاک چین پر محفوظ کردہ ڈیٹا کا استعمال کرتے ہوئے سادہ بائنری (صحیح/غلط) سوالات پر اتفاق رائے تک پہنچنے تک محدود کرتی ہیں۔ ایسے سوالات کی مثالوں میں شامل ہیں:
- "کیا اکاؤنٹ کے مالک (جس کی شناخت عوامی کلید سے ہوتی ہے) نے اس ٹرانزیکشن پر جوڑی دار نجی کلید کے ساتھ دستخط کیے ہیں؟"
- "کیا اس اکاؤنٹ میں ٹرانزیکشن کو پورا کرنے کے لیے کافی فنڈز ہیں؟"
- "کیا یہ ٹرانزیکشن اس سمارٹ کنٹریکٹ کے تناظر میں درست ہے؟"، وغیرہ۔
اگر بلاک چینز کو بیرونی ذرائع (یعنی حقیقی دنیا سے) معلومات موصول ہوتیں، تو فیصلہ کنیت کا حصول ناممکن ہو جاتا، جس سے نوڈز بلاک چین کی حالت میں تبدیلیوں کی درستگی پر متفق ہونے سے قاصر رہتے۔ مثال کے طور پر ایک ایسے سمارٹ کنٹریکٹ کو لیں جو روایتی قیمت کی API سے حاصل کردہ موجودہ ETH-USD شرح مبادلہ کی بنیاد پر ٹرانزیکشن کو انجام دیتا ہے۔ اس اعداد و شمار کے کثرت سے تبدیل ہونے کا امکان ہے (یہ بتانے کی ضرورت نہیں کہ API متروک یا ہیک ہو سکتی ہے)، جس کا مطلب ہے کہ ایک ہی کنٹریکٹ کوڈ کو چلانے والے نوڈز مختلف نتائج پر پہنچیں گے۔
ایتھیریم جیسی عوامی بلاک چین کے لیے، جس میں دنیا بھر میں ہزاروں نوڈز ٹرانزیکشنز پر کارروائی کر رہے ہیں، فیصلہ کنیت بہت اہم ہے۔ سچائی کے ماخذ کے طور پر کام کرنے والی کسی مرکزی اتھارٹی کے بغیر، نوڈز کو ایک ہی ٹرانزیکشنز کو لاگو کرنے کے بعد ایک ہی حالت پر پہنچنے کے لیے طریقہ کار کی ضرورت ہوتی ہے۔ ایک ایسا معاملہ جس میں نوڈ A سمارٹ کنٹریکٹ کے کوڈ کو چلاتا ہے اور نتیجے کے طور پر "3" حاصل کرتا ہے، جبکہ نوڈ B اسی ٹرانزیکشن کو چلانے کے بعد "7" حاصل کرتا ہے، اتفاق رائے کو توڑنے کا سبب بنے گا اور ایک لامركزی کمپیوٹنگ پلیٹ فارم کے طور پر ایتھیریم کی قدر کو ختم کر دے گا۔
یہ منظر نامہ بیرونی ذرائع سے معلومات کھینچنے کے لیے بلاک چینز کو ڈیزائن کرنے کے مسئلے کو بھی نمایاں کرتا ہے۔ تاہم، اوریکلز آف چین ذرائع سے معلومات لے کر اور اسے سمارٹ کنٹریکٹس کے استعمال کے لیے بلاک چین پر محفوظ کر کے اس مسئلے کو حل کرتے ہیں۔ چونکہ آن چین محفوظ کردہ معلومات ناقابلِ تبدیلی اور عوامی طور پر دستیاب ہوتی ہیں، اس لیے ایتھیریم نوڈز اتفاق رائے کو توڑے بغیر حالت کی تبدیلیوں کا حساب لگانے کے لیے اوریکل کے درآمد کردہ آف چین ڈیٹا کو محفوظ طریقے سے استعمال کر سکتے ہیں۔
ایسا کرنے کے لیے، ایک اوریکل عام طور پر آن چین چلنے والے سمارٹ کنٹریکٹ اور کچھ آف چین اجزاء پر مشتمل ہوتا ہے۔ آن چین کنٹریکٹ دوسرے سمارٹ کنٹریکٹس سے ڈیٹا کی درخواستیں وصول کرتا ہے، جسے وہ آف چین جزو (جسے اوریکل نوڈ کہا جاتا ہے) کو بھیجتا ہے۔ یہ اوریکل نوڈ ڈیٹا کے ذرائع سے استفسار کر سکتا ہے—مثال کے طور پر، ایپلیکیشن پروگرامنگ انٹرفیسز (APIs) کا استعمال کرتے ہوئے—اور درخواست کردہ ڈیٹا کو سمارٹ کنٹریکٹ کے اسٹوریج میں محفوظ کرنے کے لیے ٹرانزیکشنز بھیج سکتا ہے۔
بنیادی طور پر، ایک بلاک چین اوریکل بلاک چین اور بیرونی ماحول کے درمیان معلومات کے فرق کو ختم کرتا ہے، جس سے "ہائبرڈ سمارٹ کنٹریکٹس" بنتے ہیں۔ ایک ہائبرڈ سمارٹ کنٹریکٹ وہ ہوتا ہے جو آن چین کنٹریکٹ کوڈ اور آف چین انفراسٹرکچر کے امتزاج کی بنیاد پر کام کرتا ہے۔ لامركزی پیش گوئی کی مارکیٹیں ہائبرڈ سمارٹ کنٹریکٹس کی ایک بہترین مثال ہیں۔ دیگر مثالوں میں فصل کی انشورنس کے سمارٹ کنٹریکٹس شامل ہو سکتے ہیں جو اس وقت ادائیگی کرتے ہیں جب اوریکلز کا ایک مجموعہ یہ طے کرتا ہے کہ موسم کے کچھ مخصوص مظاہر رونما ہوئے ہیں۔
اوریکل کا مسئلہ کیا ہے؟
اوریکلز ایک اہم مسئلہ حل کرتے ہیں، لیکن کچھ پیچیدگیاں بھی متعارف کراتے ہیں، مثلاً:
-
ہم اس بات کی تصدیق کیسے کریں کہ داخل کی گئی معلومات درست ماخذ سے نکالی گئی تھیں یا ان کے ساتھ چھیڑ چھاڑ نہیں کی گئی ہے؟
-
ہم اس بات کو کیسے یقینی بنائیں کہ یہ ڈیٹا ہمیشہ دستیاب ہو اور باقاعدگی سے اپ ڈیٹ ہو؟
نام نہاد "اوریکل کا مسئلہ" ان مسائل کو ظاہر کرتا ہے جو سمارٹ کنٹریکٹس کو ان پٹ بھیجنے کے لیے بلاک چین اوریکلز کے استعمال کے ساتھ آتے ہیں۔ سمارٹ کنٹریکٹ کے درست طریقے سے عمل کرنے کے لیے اوریکل کا ڈیٹا درست ہونا چاہیے۔ مزید برآں، درست معلومات فراہم کرنے کے لیے اوریکل آپریٹرز پر 'اعتماد' کرنا سمارٹ کنٹریکٹس کے 'بلا اعتماد' پہلو کو کمزور کرتا ہے۔
مختلف اوریکلز اوریکل کے مسئلے کے مختلف حل پیش کرتے ہیں، جنہیں ہم بعد میں دریافت کریں گے۔ اوریکلز کا عام طور پر اس بات پر جائزہ لیا جاتا ہے کہ وہ درج ذیل چیلنجوں سے کتنی اچھی طرح نمٹ سکتے ہیں:
-
درستگی: ایک اوریکل کو غلط آف چین ڈیٹا کی بنیاد پر سمارٹ کنٹریکٹس کو حالت کی تبدیلیاں شروع کرنے کا سبب نہیں بننا چاہیے۔ ایک اوریکل کو ڈیٹا کی صداقت اور سالمیت کی ضمانت دینی چاہیے۔ صداقت کا مطلب ہے کہ ڈیٹا درست ماخذ سے حاصل کیا گیا تھا، جبکہ سالمیت کا مطلب ہے کہ آن چین بھیجے جانے سے پہلے ڈیٹا برقرار رہا (یعنی تبدیل نہیں کیا گیا)۔
-
دستیابی: ایک اوریکل کو سمارٹ کنٹریکٹس کو کارروائیاں کرنے اور حالت کی تبدیلیاں شروع کرنے میں تاخیر یا روکنا نہیں چاہیے۔ اس کا مطلب ہے کہ اوریکل کا ڈیٹا بغیر کسی رکاوٹ کے درخواست پر دستیاب ہونا چاہیے۔
-
مراعات کی مطابقت: ایک اوریکل کو آف چین ڈیٹا فراہم کرنے والوں کو سمارٹ کنٹریکٹس میں درست معلومات جمع کرانے کی ترغیب دینی چاہیے۔ مراعات کی مطابقت میں منسوبیت اور جوابدہی شامل ہے۔ منسوبیت بیرونی معلومات کے ایک ٹکڑے کو اس کے فراہم کنندہ سے جوڑنے کی اجازت دیتی ہے، جبکہ جوابدہی ڈیٹا فراہم کرنے والوں کو ان کی دی گئی معلومات کا پابند بناتی ہے، تاکہ فراہم کردہ معلومات کے معیار کی بنیاد پر انہیں انعام یا سزا دی جا سکے۔
بلاک چین اوریکل سروس کیسے کام کرتی ہے؟
صارفین
صارفین وہ ہستیان (یعنی سمارٹ کنٹریکٹس) ہیں جنہیں مخصوص کارروائیوں کو مکمل کرنے کے لیے بلاک چین سے باہر کی معلومات کی ضرورت ہوتی ہے۔ اوریکل سروس کا بنیادی ورک فلو صارف کی جانب سے اوریکل کنٹریکٹ کو ڈیٹا کی درخواست بھیجنے سے شروع ہوتا ہے۔ ڈیٹا کی درخواستیں عام طور پر درج ذیل میں سے کچھ یا تمام سوالات کے جواب دیں گی:
-
آف چین نوڈز درخواست کردہ معلومات کے لیے کن ذرائع سے رجوع کر سکتے ہیں؟
-
رپورٹرز ڈیٹا کے ذرائع سے معلومات پر کیسے کارروائی کرتے ہیں اور مفید ڈیٹا پوائنٹس کیسے نکالتے ہیں؟
-
ڈیٹا بازیافت کرنے میں کتنے اوریکل نوڈز حصہ لے سکتے ہیں؟
-
اوریکل رپورٹس میں تضادات کو کیسے منظم کیا جانا چاہیے؟
-
گذارشات کو فلٹر کرنے اور رپورٹس کو ایک ہی قدر میں جمع کرنے میں کون سا طریقہ نافذ کیا جانا چاہیے؟
اوریکل کنٹریکٹ
اوریکل کنٹریکٹ اوریکل سروس کے لیے آن چین جزو ہے۔ یہ دوسرے کنٹریکٹس سے ڈیٹا کی درخواستیں سنتا ہے، اوریکل نوڈز کو ڈیٹا کے سوالات بھیجتا ہے، اور واپس کیے گئے ڈیٹا کو کلائنٹ کنٹریکٹس میں نشر کرتا ہے۔ یہ کنٹریکٹ درخواست کرنے والے کنٹریکٹ کو بھیجنے کے لیے مجموعی قدر پیدا کرنے کے لیے واپس کیے گئے ڈیٹا پوائنٹس پر کچھ حساب کتاب بھی کر سکتا ہے۔
اوریکل کنٹریکٹ کچھ فنکشنز کو ظاہر کرتا ہے جنہیں کلائنٹ کنٹریکٹس ڈیٹا کی درخواست کرتے وقت کال کرتے ہیں۔ ایک نیا سوال موصول ہونے پر، سمارٹ کنٹریکٹ ڈیٹا کی درخواست کی تفصیلات کے ساتھ ایک لاگ ایونٹ خارج کرے گا۔ یہ لاگ کو سبسکرائب کرنے والے آف چین نوڈز کو مطلع کرتا ہے (عام طور پر جے سن آر پی سی eth_subscribe کمانڈ جیسی کسی چیز کا استعمال کرتے ہوئے)، جو لاگ ایونٹ میں بیان کردہ ڈیٹا کو بازیافت کرنے کے لیے آگے بڑھتے ہیں۔
ذیل میں پیڈرو کوسٹا کا ایک مثالی اوریکل کنٹریکٹ (opens in a new tab) ہے۔ یہ ایک سادہ اوریکل سروس ہے جو دوسرے سمارٹ کنٹریکٹس کی درخواست پر آف چین APIs سے استفسار کر سکتی ہے اور درخواست کردہ معلومات کو بلاک چین پر محفوظ کر سکتی ہے:
pragma solidity >=0.4.21 <0.6.0;
contract Oracle {
Request[] requests; //کنٹریکٹ سے کی گئی درخواستوں کی فہرست
uint currentId = 0; //بڑھتی ہوئی درخواست کی آئی ڈی
uint minQuorum = 2; //حتمی نتیجہ کا اعلان کرنے سے پہلے موصول ہونے والے جوابات کی کم از کم تعداد
uint totalOracleCount = 3; // ہارڈ کوڈڈ اوریکل کی تعداد
// ایک عام API درخواست کی وضاحت کرتا ہے
struct Request {
uint id; //درخواست کی آئی ڈی
string urlToQuery; //API url
string attributeToFetch; //جواب میں بازیافت کرنے کے لیے json وصف (کلید)
string agreedValue; //کلید سے قدر
mapping(uint => string) answers; //اوریکلز کی طرف سے فراہم کردہ جوابات
mapping(address => uint) quorum; //اوریکلز جو جواب طلب کریں گے (1=اوریکل نے ووٹ نہیں دیا، 2=اوریکل نے ووٹ دیا ہے)
}
//ایونٹ جو بلاک چین کے باہر اوریکل کو متحرک کرتا ہے
event NewRequest (
uint id,
string urlToQuery,
string attributeToFetch
);
//حتمی نتیجے پر اتفاق رائے ہونے پر متحرک ہوتا ہے
event UpdatedRequest (
uint id,
string urlToQuery,
string attributeToFetch,
string agreedValue
);
function createRequest (
string memory _urlToQuery,
string memory _attributeToFetch
)
public
{
uint length = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, ""));
Request storage r = requests[length-1];
// ہارڈ کوڈڈ اوریکلز کا ایڈریس
r.quorum[address(0x6c2339b46F41a06f09CA0051ddAD54D1e582bA77)] = 1;
r.quorum[address(0xb5346CF224c02186606e5f89EACC21eC25398077)] = 1;
r.quorum[address(0xa2997F1CA363D11a0a35bB1Ac0Ff7849bc13e914)] = 1;
// بلاک چین کے باہر اوریکل کے ذریعے پتا لگانے کے لیے ایک ایونٹ لانچ کریں
emit NewRequest (
currentId,
_urlToQuery,
_attributeToFetch
);
// درخواست کی آئی ڈی میں اضافہ کریں
currentId++;
}
//اوریکل کی طرف سے اپنا جواب ریکارڈ کرنے کے لیے کال کیا گیا
function updateRequest (
uint _id,
string memory _valueRetrieved
) public {
Request storage currRequest = requests[_id];
//چیک کریں کہ آیا اوریکل قابل اعتماد اوریکلز کی فہرست میں ہے
//اور اگر اوریکل نے ابھی تک ووٹ نہیں دیا ہے
if(currRequest.quorum[address(msg.sender)] == 1){
//نشان زد کرنا کہ اس ایڈریس نے ووٹ دیا ہے
currRequest.quorum[msg.sender] = 2;
//جوابات کی "array" میں اس وقت تک دہرائیں جب تک کہ کوئی جگہ خالی نہ ہو اور بازیافت شدہ قدر کو محفوظ کریں
uint tmpI = 0;
bool found = false;
while(!found) {
//پہلی خالی جگہ تلاش کریں
if(bytes(currRequest.answers[tmpI]).length == 0){
found = true;
currRequest.answers[tmpI] = _valueRetrieved;
}
tmpI++;
}
uint currentQuorum = 0;
//اوریکل کی فہرست میں دہرائیں اور چیک کریں کہ آیا کافی اوریکلز (کم از کم کورم)
//نے موجودہ جواب جیسا ہی ووٹ دیا ہے
for(uint i = 0; i < totalOracleCount; i++){
bytes memory a = bytes(currRequest.answers[i]);
bytes memory b = bytes(_valueRetrieved);
if(keccak256(a) == keccak256(b)){
currentQuorum++;
if(currentQuorum >= minQuorum){
currRequest.agreedValue = _valueRetrieved;
emit UpdatedRequest (
currRequest.id,
currRequest.urlToQuery,
currRequest.attributeToFetch,
currRequest.agreedValue
);
}
}
}
}
}
}
اوریکل نوڈز
اوریکل نوڈ اوریکل سروس کا آف چین جزو ہے۔ یہ بیرونی ذرائع سے معلومات نکالتا ہے، جیسے تھرڈ پارٹی سرورز پر ہوسٹ کی گئی APIs، اور اسے سمارٹ کنٹریکٹس کے استعمال کے لیے آن چین رکھتا ہے۔ اوریکل نوڈز آن چین اوریکل کنٹریکٹ سے ایونٹس سنتے ہیں اور لاگ میں بیان کردہ کام کو مکمل کرنے کے لیے آگے بڑھتے ہیں۔
اوریکل نوڈز کے لیے ایک عام کام API سروس کو HTTP GET (opens in a new tab) درخواست بھیجنا، متعلقہ ڈیٹا نکالنے کے لیے جواب کا تجزیہ کرنا، بلاک چین کے پڑھنے کے قابل آؤٹ پٹ میں فارمیٹ کرنا، اور اسے اوریکل کنٹریکٹ کی ٹرانزیکشن میں شامل کر کے آن چین بھیجنا ہے۔ اوریکل نوڈ کو "صداقت کے ثبوت" کا استعمال کرتے ہوئے جمع کرائی گئی معلومات کی درستگی اور سالمیت کی تصدیق کرنے کی بھی ضرورت پڑ سکتی ہے، جسے ہم بعد میں دریافت کریں گے۔
کمپیوٹیشنل اوریکلز بھی آف چین نوڈز پر انحصار کرتے ہیں تاکہ وہ کمپیوٹیشنل کام انجام دے سکیں جنہیں گیس کی لاگت اور بلاک سائز کی حدود کے پیش نظر آن چین انجام دینا غیر عملی ہوگا۔ مثال کے طور پر، اوریکل نوڈ کو قابل تصدیق بے ترتیب اعداد و شمار پیدا کرنے کا کام سونپا جا سکتا ہے (مثلاً، بلاک چین پر مبنی گیمز کے لیے)۔
اوریکل ڈیزائن پیٹرنز
اوریکلز مختلف اقسام میں آتے ہیں، بشمول فوری پڑھنا، شائع کرنا-سبسکرائب کرنا، اور درخواست-جواب، جن میں سے آخری دو ایتھیریم سمارٹ کنٹریکٹس میں سب سے زیادہ مقبول ہیں۔ یہاں ہم شائع کرنا-سبسکرائب کرنا اور درخواست-جواب کے ماڈلز کو مختصراً بیان کرتے ہیں۔
شائع کرنا-سبسکرائب کرنا اوریکلز
اس قسم کا اوریکل ایک "ڈیٹا فیڈ" کو ظاہر کرتا ہے جسے دوسرے کنٹریکٹس معلومات کے لیے باقاعدگی سے پڑھ سکتے ہیں۔ اس صورت میں ڈیٹا کے کثرت سے تبدیل ہونے کی توقع کی جاتی ہے، لہذا کلائنٹ کنٹریکٹس کو اوریکل کے اسٹوریج میں ڈیٹا کی اپ ڈیٹس کو سننا چاہیے۔ ایک مثال وہ اوریکل ہے جو صارفین کو تازہ ترین ETH-USD قیمت کی معلومات فراہم کرتا ہے۔
درخواست-جواب اوریکلز
درخواست-جواب کا سیٹ اپ کلائنٹ کنٹریکٹ کو شائع کرنا-سبسکرائب کرنا اوریکل کے فراہم کردہ ڈیٹا کے علاوہ صوابدیدی ڈیٹا کی درخواست کرنے کی اجازت دیتا ہے۔ درخواست-جواب اوریکلز اس وقت مثالی ہوتے ہیں جب ڈیٹاسیٹ اتنا بڑا ہو کہ اسے سمارٹ کنٹریکٹ کے اسٹوریج میں محفوظ نہ کیا جا سکے، اور/یا صارفین کو کسی بھی وقت ڈیٹا کے صرف ایک چھوٹے سے حصے کی ضرورت ہو۔
اگرچہ شائع کرنا-سبسکرائب کرنا ماڈلز سے زیادہ پیچیدہ ہیں، درخواست-جواب اوریکلز بنیادی طور پر وہی ہیں جو ہم نے پچھلے حصے میں بیان کیے ہیں۔ اوریکل میں ایک آن چین جزو ہوگا جو ڈیٹا کی درخواست وصول کرتا ہے اور اسے کارروائی کے لیے آف چین نوڈ کو بھیجتا ہے۔
ڈیٹا کے سوالات شروع کرنے والے صارفین کو آف چین ماخذ سے معلومات بازیافت کرنے کی لاگت کو پورا کرنا چاہیے۔ کلائنٹ کنٹریکٹ کو درخواست میں بتائے گئے کال بیک فنکشن کے ذریعے جواب واپس کرنے میں اوریکل کنٹریکٹ کی جانب سے اٹھنے والے گیس کے اخراجات کو پورا کرنے کے لیے فنڈز بھی فراہم کرنے چاہئیں۔
مرکزی بمقابلہ لامركزی اوریکلز
مرکزی اوریکلز
ایک مرکزی اوریکل کو ایک ہی ہستی کے ذریعے کنٹرول کیا جاتا ہے جو آف چین معلومات کو جمع کرنے اور درخواست کے مطابق اوریکل کنٹریکٹ کے ڈیٹا کو اپ ڈیٹ کرنے کی ذمہ دار ہوتی ہے۔ مرکزی اوریکلز موثر ہوتے ہیں کیونکہ وہ سچائی کے ایک ہی ماخذ پر انحصار کرتے ہیں۔ وہ ان صورتوں میں بہتر کام کر سکتے ہیں جہاں ملکیتی ڈیٹاسیٹس کو مالک کی جانب سے وسیع پیمانے پر قبول شدہ دستخط کے ساتھ براہ راست شائع کیا جاتا ہے۔ تاہم، وہ نقصانات بھی لاتے ہیں:
درستگی کی کم ضمانتیں
مرکزی اوریکلز کے ساتھ، اس بات کی تصدیق کرنے کا کوئی طریقہ نہیں ہے کہ فراہم کردہ معلومات درست ہیں یا نہیں۔ یہاں تک کہ "معزز" فراہم کنندگان بھی بدمعاش ہو سکتے ہیں یا ہیک ہو سکتے ہیں۔ اگر اوریکل خراب ہو جاتا ہے، تو سمارٹ کنٹریکٹس خراب ڈیٹا کی بنیاد پر عمل کریں گے۔
ناقص دستیابی
مرکزی اوریکلز کی اس بات کی ضمانت نہیں ہے کہ وہ ہمیشہ دوسرے سمارٹ کنٹریکٹس کو آف چین ڈیٹا دستیاب کرائیں گے۔ اگر فراہم کنندہ سروس کو بند کرنے کا فیصلہ کرتا ہے یا کوئی ہیکر اوریکل کے آف چین جزو کو ہائی جیک کر لیتا ہے، تو آپ کے سمارٹ کنٹریکٹ کو ڈینائل آف سروس (DoS) حملے کا خطرہ ہے۔
ناقص مراعات کی مطابقت
مرکزی اوریکلز میں اکثر ڈیٹا فراہم کرنے والے کے لیے درست/غیر تبدیل شدہ معلومات بھیجنے کے لیے ناقص ڈیزائن کردہ یا غیر موجود مراعات ہوتی ہیں۔ درستگی کے لیے اوریکل کو ادائیگی کرنا ایمانداری کی ضمانت نہیں دیتا۔ یہ مسئلہ اس وقت بڑا ہو جاتا ہے جب سمارٹ کنٹریکٹس کے ذریعے کنٹرول کی جانے والی قدر کی مقدار بڑھ جاتی ہے۔
لامركزی اوریکلز
لامركزی اوریکلز کو ناکامی کے واحد مقامات کو ختم کر کے مرکزی اوریکلز کی حدود پر قابو پانے کے لیے ڈیزائن کیا گیا ہے۔ ایک لامركزی اوریکل سروس پیئر ٹو پیئر نیٹ ورک میں متعدد شرکاء پر مشتمل ہوتی ہے جو آف چین ڈیٹا کو سمارٹ کنٹریکٹ میں بھیجنے سے پہلے اس پر اتفاق رائے قائم کرتے ہیں۔
ایک لامركزی اوریکل کو (مثالی طور پر) بلا اجازت، بلا اعتماد، اور کسی مرکزی پارٹی کی انتظامیہ سے آزاد ہونا چاہیے؛ حقیقت میں، اوریکلز کے درمیان لامرکزیت ایک سپیکٹرم پر ہے۔ نیم لامركزی اوریکل نیٹ ورکس موجود ہیں جہاں کوئی بھی حصہ لے سکتا ہے، لیکن ایک "مالک" کے ساتھ جو تاریخی کارکردگی کی بنیاد پر نوڈز کو منظور کرتا ہے اور ہٹاتا ہے۔ مکمل طور پر لامركزی اوریکل نیٹ ورکس بھی موجود ہیں: یہ عام طور پر اسٹینڈ اکیلے بلاک چینز کے طور پر چلتے ہیں اور ان میں نوڈز کو مربوط کرنے اور بدتمیزی کی سزا دینے کے لیے اتفاق رائے کے طریقہ کار کی وضاحت کی گئی ہے۔
لامركزی اوریکلز کا استعمال درج ذیل فوائد کے ساتھ آتا ہے:
درستگی کی اعلیٰ ضمانتیں
لامركزی اوریکلز مختلف طریقوں کا استعمال کرتے ہوئے ڈیٹا کی درستگی حاصل کرنے کی کوشش کرتے ہیں۔ اس میں واپس کی گئی معلومات کی صداقت اور سالمیت کی تصدیق کرنے والے ثبوتوں کا استعمال کرنا اور متعدد اداروں کو آف چین ڈیٹا کی درستگی پر اجتماعی طور پر متفق ہونے کی ضرورت شامل ہے۔
صداقت کے ثبوت
صداقت کے ثبوت کرپٹوگرافک طریقہ کار ہیں جو بیرونی ذرائع سے حاصل کی گئی معلومات کی آزادانہ تصدیق کو قابل بناتے ہیں۔ یہ ثبوت معلومات کے ماخذ کی توثیق کر سکتے ہیں اور بازیافت کے بعد ڈیٹا میں ممکنہ تبدیلیوں کا پتہ لگا سکتے ہیں۔
صداقت کے ثبوتوں کی مثالوں میں شامل ہیں:
ٹرانسپورٹ لیئر سیکیورٹی (TLS) کے ثبوت: اوریکل نوڈز اکثر ٹرانسپورٹ لیئر سیکیورٹی (TLS) پروٹوکول پر مبنی محفوظ HTTP کنکشن کا استعمال کرتے ہوئے بیرونی ذرائع سے ڈیٹا بازیافت کرتے ہیں۔ کچھ لامركزی اوریکلز TLS سیشنز کی تصدیق کرنے کے لیے صداقت کے ثبوت استعمال کرتے ہیں (یعنی، نوڈ اور ایک مخصوص سرور کے درمیان معلومات کے تبادلے کی تصدیق کرتے ہیں) اور اس بات کی تصدیق کرتے ہیں کہ سیشن کے مندرجات کو تبدیل نہیں کیا گیا تھا۔
ٹرسٹڈ ایگزیکیوشن انوائرنمنٹ (TEE) کی تصدیقات: ایک ٹرسٹڈ ایگزیکیوشن انوائرنمنٹ (opens in a new tab) (TEE) ایک سینڈ باکسڈ کمپیوٹیشنل ماحول ہے جو اپنے میزبان سسٹم کے آپریشنل عمل سے الگ تھلگ ہوتا ہے۔ TEEs اس بات کو یقینی بناتے ہیں کہ کمپیوٹیشن کے ماحول میں محفوظ/استعمال ہونے والا کوئی بھی ایپلیکیشن کوڈ یا ڈیٹا سالمیت، رازداری، اور ناقابلیتِ تبدیلی کو برقرار رکھے۔ صارفین یہ ثابت کرنے کے لیے ایک تصدیق بھی تیار کر سکتے ہیں کہ ایپلیکیشن کی مثال ٹرسٹڈ ایگزیکیوشن انوائرنمنٹ کے اندر چل رہی ہے۔
لامركزی اوریکلز کی کچھ کلاسز کو اوریکل نوڈ آپریٹرز سے TEE تصدیقات فراہم کرنے کی ضرورت ہوتی ہے۔ یہ صارف کو اس بات کی تصدیق کرتا ہے کہ نوڈ آپریٹر ٹرسٹڈ ایگزیکیوشن انوائرنمنٹ میں اوریکل کلائنٹ کی ایک مثال چلا رہا ہے۔ TEEs بیرونی عمل کو ایپلیکیشن کے کوڈ اور ڈیٹا کو تبدیل کرنے یا پڑھنے سے روکتے ہیں، لہذا، وہ تصدیقات یہ ثابت کرتی ہیں کہ اوریکل نوڈ نے معلومات کو برقرار اور خفیہ رکھا ہے۔
معلومات کی اتفاق رائے پر مبنی توثیق
سمارٹ کنٹریکٹس کو ڈیٹا فراہم کرتے وقت مرکزی اوریکلز سچائی کے ایک ہی ماخذ پر انحصار کرتے ہیں، جو غلط معلومات شائع کرنے کے امکان کو متعارف کراتا ہے۔ لامركزی اوریکلز آف چین معلومات سے استفسار کرنے کے لیے متعدد اوریکل نوڈز پر انحصار کر کے اس مسئلے کو حل کرتے ہیں۔ متعدد ذرائع سے ڈیٹا کا موازنہ کر کے، لامركزی اوریکلز آن چین کنٹریکٹس میں غلط معلومات بھیجنے کے خطرے کو کم کرتے ہیں۔
تاہم، لامركزی اوریکلز کو متعدد آف چین ذرائع سے حاصل کی گئی معلومات میں تضادات سے نمٹنا چاہیے۔ معلومات میں اختلافات کو کم کرنے اور اس بات کو یقینی بنانے کے لیے کہ اوریکل کنٹریکٹ کو بھیجا گیا ڈیٹا اوریکل نوڈز کی اجتماعی رائے کی عکاسی کرتا ہے، لامركزی اوریکلز درج ذیل طریقہ کار استعمال کرتے ہیں:
ڈیٹا کی درستگی پر ووٹنگ/اسٹیکنگ
کچھ لامركزی اوریکل نیٹ ورکس کو شرکاء سے نیٹ ورک کے مقامی ٹوکن کا استعمال کرتے ہوئے ڈیٹا کے سوالات کے جوابات کی درستگی پر ووٹ دینے یا اسٹیک کرنے کی ضرورت ہوتی ہے (مثلاً، "2020 کے امریکی انتخابات کس نے جیتے؟")۔ ایک ایگریگیشن پروٹوکول پھر ووٹوں اور اسٹیکس کو جمع کرتا ہے اور اکثریت کی حمایت یافتہ جواب کو درست مانتا ہے۔
جن نوڈز کے جوابات اکثریت کے جواب سے ہٹ جاتے ہیں انہیں ان کے ٹوکنز ان لوگوں میں تقسیم کر کے سزا دی جاتی ہے جو زیادہ درست اقدار فراہم کرتے ہیں۔ ڈیٹا فراہم کرنے سے پہلے نوڈز کو بانڈ فراہم کرنے پر مجبور کرنا ایماندارانہ جوابات کی ترغیب دیتا ہے کیونکہ انہیں منافع کو زیادہ سے زیادہ کرنے کے ارادے سے عقلی معاشی اداکار سمجھا جاتا ہے۔
اسٹیکنگ/ووٹنگ لامركزی اوریکلز کو سے بھی بچاتی ہے جہاں بدنیتی پر مبنی اداکار اتفاق رائے کے نظام کو دھوکہ دینے کے لیے متعدد شناختیں بناتے ہیں۔ تاہم، اسٹیکنگ "مفت خوری" (اوریکل نوڈز کا دوسروں سے معلومات کاپی کرنا) اور "سست توثیق" (اوریکل نوڈز کا خود معلومات کی تصدیق کیے بغیر اکثریت کی پیروی کرنا) کو نہیں روک سکتی۔
شیلنگ پوائنٹ کا طریقہ کار
شیلنگ پوائنٹ (opens in a new tab) گیم تھیوری کا ایک تصور ہے جو یہ فرض کرتا ہے کہ متعدد ہستیاں کسی بھی رابطے کی عدم موجودگی میں ہمیشہ کسی مسئلے کے مشترکہ حل کی طرف ڈیفالٹ ہوں گی۔ شیلنگ پوائنٹ کے طریقہ کار اکثر لامركزی اوریکل نیٹ ورکس میں استعمال ہوتے ہیں تاکہ نوڈز کو ڈیٹا کی درخواستوں کے جوابات پر اتفاق رائے تک پہنچنے کے قابل بنایا جا سکے۔
اس کے لیے ایک ابتدائی خیال SchellingCoin (opens in a new tab) تھا، ایک مجوزہ ڈیٹا فیڈ جہاں شرکاء "سکیلر" سوالات (وہ سوالات جن کے جوابات کو وسعت کے ذریعے بیان کیا جاتا ہے، مثلاً، "ETH کی قیمت کیا ہے؟") کے جوابات جمع کراتے ہیں، ایک ڈپازٹ کے ساتھ۔ وہ صارفین جو 25ویں اور 75ویں پرسنٹائل (opens in a new tab) کے درمیان اقدار فراہم کرتے ہیں انہیں انعام دیا جاتا ہے، جبکہ وہ لوگ جن کی اقدار درمیانی قدر سے بڑی حد تک ہٹ جاتی ہیں انہیں سزا دی جاتی ہے۔
اگرچہ SchellingCoin آج موجود نہیں ہے، متعدد لامركزی اوریکلز—خاص طور پر میکر پروٹوکول کے اوریکلز (opens in a new tab)—اوریکل ڈیٹا کی درستگی کو بہتر بنانے کے لیے شیلنگ پوائنٹ کا طریقہ کار استعمال کرتے ہیں۔ ہر میکر اوریکل نوڈز ("ریلیئرز" اور "فیڈز") کے ایک آف چین P2P نیٹ ورک پر مشتمل ہوتا ہے جو ضمانت کے اثاثوں کے لیے مارکیٹ کی قیمتیں جمع کراتے ہیں اور ایک آن چین "میڈیانائزر" کنٹریکٹ جو فراہم کردہ تمام اقدار کا درمیانی حساب لگاتا ہے۔ ایک بار جب مخصوص تاخیر کی مدت ختم ہو جاتی ہے، تو یہ درمیانی قدر متعلقہ اثاثے کے لیے نئی حوالہ قیمت بن جاتی ہے۔
شیلنگ پوائنٹ کے طریقہ کار استعمال کرنے والے اوریکلز کی دیگر مثالوں میں چین لنک آف چین رپورٹنگ (opens in a new tab) اور Witnet (opens in a new tab) شامل ہیں۔ دونوں سسٹمز میں، پیئر ٹو پیئر نیٹ ورک میں اوریکل نوڈز کے جوابات کو ایک ہی مجموعی قدر میں جمع کیا جاتا ہے، جیسے کہ اوسط یا درمیانی۔ نوڈز کو اس حد تک انعام یا سزا دی جاتی ہے جس حد تک ان کے جوابات مجموعی قدر کے ساتھ ہم آہنگ ہوتے ہیں یا اس سے ہٹ جاتے ہیں۔
شیلنگ پوائنٹ کے طریقہ کار پرکشش ہیں کیونکہ وہ لامرکزیت کی ضمانت دیتے ہوئے آن چین فٹ پرنٹ کو کم سے کم کرتے ہیں (صرف ایک ٹرانزیکشن بھیجنے کی ضرورت ہوتی ہے)۔ مؤخر الذکر اس لیے ممکن ہے کیونکہ نوڈز کو جمع کرائے گئے جوابات کی فہرست پر دستخط کرنے چاہئیں اس سے پہلے کہ اسے اس الگورتھم میں فیڈ کیا جائے جو اوسط/درمیانی قدر پیدا کرتا ہے۔
دستیابی
لامركزی اوریکل سروسز سمارٹ کنٹریکٹس کے لیے آف چین ڈیٹا کی اعلیٰ دستیابی کو یقینی بناتی ہیں۔ یہ آف چین معلومات کے ماخذ اور معلومات کو آن چین منتقل کرنے کے ذمہ دار نوڈز دونوں کو لامركزی بنا کر حاصل کیا جاتا ہے۔
یہ فالٹ ٹالرینس کو یقینی بناتا ہے کیونکہ اوریکل کنٹریکٹ دوسرے کنٹریکٹس سے سوالات کو انجام دینے کے لیے متعدد نوڈز (جو متعدد ڈیٹا ذرائع پر بھی انحصار کرتے ہیں) پر انحصار کر سکتا ہے۔ ماخذ اور نوڈ آپریٹر کی سطح پر لامرکزیت بہت اہم ہے—ایک ہی ماخذ سے حاصل کی گئی معلومات پیش کرنے والے اوریکل نوڈز کا نیٹ ورک اسی مسئلے کا شکار ہوگا جس کا ایک مرکزی اوریکل ہوتا ہے۔
اسٹیک پر مبنی اوریکلز کے لیے ان نوڈ آپریٹرز کی کٹوتی کرنا بھی ممکن ہے جو ڈیٹا کی درخواستوں کا فوری جواب دینے میں ناکام رہتے ہیں۔ یہ اوریکل نوڈز کو فالٹ ٹالرنٹ انفراسٹرکچر میں سرمایہ کاری کرنے اور بروقت ڈیٹا فراہم کرنے کی نمایاں ترغیب دیتا ہے۔
اچھی مراعات کی مطابقت
لامركزی اوریکلز اوریکل نوڈز کے درمیان بازنطینی (opens in a new tab) رویے کو روکنے کے لیے مختلف ترغیبی ڈیزائن نافذ کرتے ہیں۔ خاص طور پر، وہ منسوبیت اور جوابدہی حاصل کرتے ہیں:
-
لامركزی اوریکل نوڈز کو اکثر ڈیٹا کی درخواستوں کے جواب میں فراہم کردہ ڈیٹا پر دستخط کرنے کی ضرورت ہوتی ہے۔ یہ معلومات اوریکل نوڈز کی تاریخی کارکردگی کا جائزہ لینے میں مدد کرتی ہے، تاکہ صارفین ڈیٹا کی درخواستیں کرتے وقت ناقابل اعتبار اوریکل نوڈز کو فلٹر کر سکیں۔ ایک مثال Witnet کا الگورتھمک ریپوٹیشن سسٹم (opens in a new tab) ہے۔
-
لامركزی اوریکلز—جیسا کہ پہلے بتایا گیا ہے—نوڈز سے یہ تقاضا کر سکتے ہیں کہ وہ جمع کرائے گئے ڈیٹا کی سچائی پر اپنے اعتماد پر ایک اسٹیک لگائیں۔ اگر دعویٰ درست ثابت ہوتا ہے، تو یہ اسٹیک ایماندارانہ سروس کے انعامات کے ساتھ واپس کیا جا سکتا ہے۔ لیکن معلومات غلط ہونے کی صورت میں اس میں کٹوتی بھی کی جا سکتی ہے، جو جوابدہی کا کچھ پیمانہ فراہم کرتا ہے۔
سمارٹ کنٹریکٹس میں اوریکلز کی ایپلی کیشنز
ایتھیریم میں اوریکلز کے لیے عام استعمال کے کیسز درج ذیل ہیں:
مالیاتی ڈیٹا بازیافت کرنا
غیر مرکزی مالیات (DeFi) ایپلی کیشنز پیئر ٹو پیئر قرض دینے، قرض گیری، اور اثاثوں کی تجارت کی اجازت دیتی ہیں۔ اس کے لیے اکثر مختلف مالیاتی معلومات حاصل کرنے کی ضرورت ہوتی ہے، بشمول شرح مبادلہ کا ڈیٹا (کرپٹو کرنسیوں کی فیاٹ قدر کا حساب لگانے یا ٹوکن کی قیمتوں کا موازنہ کرنے کے لیے) اور کیپٹل مارکیٹس کا ڈیٹا (ٹوکنائزڈ اثاثوں، جیسے سونا یا امریکی ڈالر کی قدر کا حساب لگانے کے لیے)۔
مثال کے طور پر، ایک DeFi قرض دینے کے پروٹوکول کو ضمانت کے طور پر جمع کرائے گئے اثاثوں (مثلاً، ETH) کی موجودہ مارکیٹ کی قیمتوں سے استفسار کرنے کی ضرورت ہوتی ہے۔ یہ کنٹریکٹ کو ضمانت کے اثاثوں کی قدر کا تعین کرنے اور یہ طے کرنے دیتا ہے کہ وہ سسٹم سے کتنا قرض لے سکتا ہے۔
DeFi میں مقبول "قیمت کے اوریکلز" (جیسا کہ انہیں اکثر کہا جاتا ہے) میں چین لنک پرائس فیڈز، Compound پروٹوکول کی اوپن پرائس فیڈ (opens in a new tab)، یونی سویپ کی ٹائم ویٹڈ ایوریج پرائسز (TWAPs) (opens in a new tab)، اور میکر اوریکلز (opens in a new tab) شامل ہیں۔
بلڈرز کو ان قیمت کے اوریکلز کو اپنے پروجیکٹ میں ضم کرنے سے پہلے ان کے ساتھ آنے والی انتباہات کو سمجھنا چاہیے۔ یہ مضمون (opens in a new tab) اس بات کا تفصیلی تجزیہ فراہم کرتا ہے کہ ذکر کردہ قیمت کے اوریکلز میں سے کسی کو استعمال کرنے کی منصوبہ بندی کرتے وقت کن باتوں پر غور کرنا چاہیے۔
ذیل میں اس بات کی ایک مثال ہے کہ آپ چین لنک پرائس فیڈ کا استعمال کرتے ہوئے اپنے سمارٹ کنٹریکٹ میں تازہ ترین ETH قیمت کیسے بازیافت کر سکتے ہیں:
pragma solidity ^0.6.7;
import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";
contract PriceConsumerV3 {
AggregatorV3Interface internal priceFeed;
/**
* نیٹ ورک: Kovan
* ایگریگیٹر: ETH/USD
* ایڈریس: 0x9326BFA02ADD2366b30bacB125260Af641031331
*/
constructor() public {
priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331);
}
/**
* تازہ ترین قیمت واپس کرتا ہے
*/
function getLatestPrice() public view returns (int) {
(
uint80 roundID,
int price,
uint startedAt,
uint timeStamp,
uint80 answeredInRound
) = priceFeed.latestRoundData();
return price;
}
}
قابل تصدیق بے ترتیبی پیدا کرنا
کچھ بلاک چین ایپلی کیشنز، جیسے بلاک چین پر مبنی گیمز یا لاٹری اسکیمیں، مؤثر طریقے سے کام کرنے کے لیے اعلیٰ سطح کی غیر متوقعیت اور بے ترتیبی کا تقاضا کرتی ہیں۔ تاہم، بلاک چینز کا فیصلہ کن عمل درآمد بے ترتیبی کو ختم کر دیتا ہے۔
اصل نقطہ نظر سیوڈورینڈم کرپٹوگرافک فنکشنز کا استعمال کرنا تھا، جیسے blockhash، لیکن ثبوتِ کار (PoW) الگورتھم کو حل کرنے والے مائنرز ان میں ہیرا پھیری کر سکتے تھے (opens in a new tab)۔ اس کے علاوہ، ایتھیریم کی حصہ داری کا ثبوت (PoS) میں منتقلی کا مطلب ہے کہ ڈیولپرز اب آن چین بے ترتیبی کے لیے blockhash پر انحصار نہیں کر سکتے۔ اس کے بجائے بیکن چین کا RANDAO طریقہ کار (opens in a new tab) بے ترتیبی کا ایک متبادل ذریعہ فراہم کرتا ہے۔
بے ترتیب قدر کو آف چین پیدا کرنا اور اسے آن چین بھیجنا ممکن ہے، لیکن ایسا کرنے سے صارفین پر اعلیٰ اعتماد کی ضروریات عائد ہوتی ہیں۔ انہیں یہ ماننا ہوگا کہ قدر واقعی غیر متوقع طریقہ کار کے ذریعے پیدا کی گئی تھی اور راستے میں اسے تبدیل نہیں کیا گیا تھا۔
آف چین کمپیوٹیشن کے لیے ڈیزائن کیے گئے اوریکلز اس مسئلے کو محفوظ طریقے سے آف چین بے ترتیب نتائج پیدا کر کے حل کرتے ہیں جنہیں وہ اس عمل کی غیر متوقعیت کی تصدیق کرنے والے کرپٹوگرافک ثبوتوں کے ساتھ آن چین نشر کرتے ہیں۔ ایک مثال چین لنک VRF (opens in a new tab) (قابل تصدیق بے ترتیب فنکشن) ہے، جو ایک قابلِ ثبوت منصفانہ اور چھیڑ چھاڑ سے پاک رینڈم نمبر جنریٹر (RNG) ہے جو غیر متوقع نتائج پر انحصار کرنے والی ایپلی کیشنز کے لیے قابل اعتماد سمارٹ کنٹریکٹس بنانے کے لیے مفید ہے۔
ایونٹس کے نتائج حاصل کرنا
اوریکلز کے ساتھ، ایسے سمارٹ کنٹریکٹس بنانا آسان ہے جو حقیقی دنیا کے ایونٹس پر ردعمل ظاہر کرتے ہیں۔ اوریکل سروسز کنٹریکٹس کو آف چین اجزاء کے ذریعے بیرونی APIs سے جڑنے اور ان ڈیٹا ذرائع سے معلومات استعمال کرنے کی اجازت دے کر اسے ممکن بناتی ہیں۔ مثال کے طور پر، پہلے ذکر کی گئی پیش گوئی کی dapp کسی اوریکل سے ایک قابل اعتماد آف چین ماخذ (مثلاً، ایسوسی ایٹڈ پریس) سے انتخابی نتائج واپس کرنے کی درخواست کر سکتی ہے۔
حقیقی دنیا کے نتائج کی بنیاد پر ڈیٹا بازیافت کرنے کے لیے اوریکلز کا استعمال دیگر نئے استعمال کے کیسز کو قابل بناتا ہے؛ مثال کے طور پر، ایک لامركزی انشورنس پروڈکٹ کو مؤثر طریقے سے کام کرنے کے لیے موسم، آفات وغیرہ کے بارے میں درست معلومات کی ضرورت ہوتی ہے۔
سمارٹ کنٹریکٹس کو خودکار بنانا
سمارٹ کنٹریکٹس خود بخود نہیں چلتے؛ بلکہ، ایک بیرونی ملکیت والے اکاؤنٹ (EOA)، یا کسی دوسرے کنٹریکٹ اکاؤنٹ کو کنٹریکٹ کے کوڈ کو چلانے کے لیے صحیح فنکشنز کو متحرک کرنا چاہیے۔ زیادہ تر معاملات میں، کنٹریکٹ کے زیادہ تر فنکشنز عوامی ہوتے ہیں اور انہیں EOAs اور دیگر کنٹریکٹس کے ذریعے طلب کیا جا سکتا ہے۔
لیکن ایک کنٹریکٹ کے اندر نجی فنکشنز بھی ہوتے ہیں جو دوسروں کے لیے ناقابل رسائی ہوتے ہیں؛، لیکن جو dapp کی مجموعی فعالیت کے لیے اہم ہوتے ہیں۔ مثالوں میں ایک mintERC721Token() فنکشن شامل ہے جو وقتاً فوقتاً صارفین کے لیے نئے NFTs منٹ کرتا ہے، پیش گوئی کی مارکیٹ میں ادائیگیوں کا انعام دینے کا فنکشن، یا DEX میں اسٹیک کیے گئے ٹوکنز کو غیر مقفل کرنے کا فنکشن شامل ہے۔
ڈیولپرز کو ایپلی کیشن کو آسانی سے چلانے کے لیے وقفوں پر ایسے فنکشنز کو متحرک کرنے کی ضرورت ہوگی۔ تاہم، اس سے ڈیولپرز کے لیے دنیاوی کاموں پر مزید گھنٹے ضائع ہو سکتے ہیں، یہی وجہ ہے کہ سمارٹ کنٹریکٹس کے عمل درآمد کو خودکار بنانا پرکشش ہے۔
کچھ لامركزی اوریکل نیٹ ورکس آٹومیشن سروسز پیش کرتے ہیں، جو آف چین اوریکل نوڈز کو صارف کے بیان کردہ پیرامیٹرز کے مطابق سمارٹ کنٹریکٹ فنکشنز کو متحرک کرنے کی اجازت دیتے ہیں۔ عام طور پر، اس کے لیے اوریکل سروس کے ساتھ ہدف کے کنٹریکٹ کو "رجسٹر" کرنے، اوریکل آپریٹر کو ادائیگی کے لیے فنڈز فراہم کرنے، اور کنٹریکٹ کو متحرک کرنے کے لیے شرائط یا اوقات کی وضاحت کرنے کی ضرورت ہوتی ہے۔
چین لنک کا کیپر نیٹ ورک (opens in a new tab) سمارٹ کنٹریکٹس کے لیے کم سے کم اعتماد اور لامركزی طریقے سے باقاعدہ دیکھ بھال کے کاموں کو آؤٹ سورس کرنے کے اختیارات فراہم کرتا ہے۔ اپنے کنٹریکٹ کو کیپر کے موافق بنانے اور اپ کیپ سروس استعمال کرنے کے بارے میں معلومات کے لیے سرکاری کیپر کی دستاویزات (opens in a new tab) پڑھیں۔
بلاک چین اوریکلز کا استعمال کیسے کریں
متعدد اوریکل ایپلی کیشنز ہیں جنہیں آپ اپنی ایتھیریم dapp میں ضم کر سکتے ہیں:
چین لنک (opens in a new tab) - چین لنک لامركزی اوریکل نیٹ ورکس کسی بھی بلاک چین پر جدید سمارٹ کنٹریکٹس کو سپورٹ کرنے کے لیے چھیڑ چھاڑ سے پاک ان پٹس، آؤٹ پٹس، اور کمپیوٹیشنز فراہم کرتے ہیں۔
RedStone Oracles (opens in a new tab) - RedStone ایک لامركزی ماڈیولر اوریکل ہے جو گیس کے لیے موزوں ڈیٹا فیڈز فراہم کرتا ہے۔ یہ ابھرتے ہوئے اثاثوں کے لیے قیمت کی فیڈز پیش کرنے میں مہارت رکھتا ہے، جیسے سیال اسٹیکنگ ٹوکن (lst)، سیال ری اسٹیکنگ ٹوکن (LRTs)، اور بٹ کوائن اسٹیکنگ ڈیریویٹوز۔
Chronicle (opens in a new tab) - Chronicle واقعی قابل توسیع، لاگت سے موثر، لامركزی، اور قابل تصدیق اوریکلز تیار کر کے آن چین ڈیٹا منتقل کرنے کی موجودہ حدود پر قابو پاتا ہے۔
Witnet (opens in a new tab) - Witnet ایک بلا اجازت، لامركزی، اور سنسرشپ کے خلاف مزاحمت کرنے والا اوریکل ہے جو سمارٹ کنٹریکٹس کو مضبوط کرپٹو-اقتصادی ضمانتوں کے ساتھ حقیقی دنیا کے ایونٹس پر ردعمل ظاہر کرنے میں مدد کرتا ہے۔
UMA Oracle (opens in a new tab) - UMA کا پرامید اوریکل سمارٹ کنٹریکٹس کو انشورنس، مالیاتی ڈیریویٹوز، اور پیش گوئی کی مارکیٹوں سمیت مختلف ایپلی کیشنز کے لیے کسی بھی قسم کا ڈیٹا تیزی سے حاصل کرنے کی اجازت دیتا ہے۔
ٹیلر (opens in a new tab) - ٹیلر آپ کے سمارٹ کنٹریکٹ کے لیے ایک شفاف اور بلا اجازت اوریکل پروٹوکول ہے تاکہ جب بھی اسے ضرورت ہو آسانی سے کوئی بھی ڈیٹا حاصل کر سکے۔
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 سے زیادہ چینز کے لیے ڈیٹا کو سپورٹ کرتا ہے، بشمول ایتھیریم مین نیٹ اور بہت سے معروف L2s۔
DIA (opens in a new tab) - ایک کراس چین اوریکل نیٹ ورک جو تمام بڑی اثاثہ کلاسز میں 20,000+ اثاثوں کے لیے قابل تصدیق ڈیٹا فیڈز فراہم کرتا ہے۔ DIA خام تجارتی ڈیٹا براہ راست 100+ پرائمری مارکیٹوں سے حاصل کرتا ہے اور اسے آن چین شمار کرتا ہے، جو کسی بھی استعمال کے کیس کے لیے کسٹم کنفیگریشنز کے ساتھ مکمل ڈیٹا کی شفافیت اور قابل تصدیق کو یقینی بناتا ہے۔
Stork (opens in a new tab) - Stork انتہائی کم تاخیر پر قیمت کا ڈیٹا فراہم کرتا ہے، جو پرپیچوئلز مارکیٹوں، قرض دینے کے پروٹوکولز، اور DeFi ایکو سسٹمز سمیت استعمال کے کیسز کی ایک وسیع رینج کو سپورٹ کرتا ہے، جس میں نئے اثاثوں کو لسٹنگ پر تیزی سے سپورٹ کیا جاتا ہے۔
مزید مطالعہ
مضامین
- بلاک چین اوریکل کیا ہے؟ (opens in a new tab) — چین لنک
- بلاک چین اوریکل کیا ہے؟ (opens in a new tab) — پیٹرک کولنز
- لامركزی اوریکلز: ایک جامع جائزہ (opens in a new tab) — جولین تھیونارڈ
- ایتھیریم پر بلاک چین اوریکل کو نافذ کرنا (opens in a new tab) – پیڈرو کوسٹا
- سمارٹ کنٹریکٹس 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) — چین لنک
- اوریکل ڈیٹا کا استعمال (opens in a new tab) — Chronicle
- اوریکلز چیلنج (opens in a new tab) - Speedrun Ethereum
مثالی پروجیکٹس