ओरॅकल
ओरॅकल हे असे ॲप्लिकेशन्स आहेत जे डेटा फीड तयार करतात, ज्यामुळे स्मार्ट कॉन्ट्रॅक्ट्ससाठी ब्लॉकचेनवर साखळीबाह्य डेटा स्रोत उपलब्ध होतात. हे आवश्यक आहे कारण इथेरियम-आधारित स्मार्ट कॉन्ट्रॅक्ट्स डीफॉल्टनुसार ब्लॉकचेन नेटवर्कच्या बाहेर साठवलेल्या माहितीमध्ये प्रवेश करू शकत नाहीत.
साखळीबाह्य डेटा वापरून स्मार्ट कॉन्ट्रॅक्ट्सना कार्यान्वित करण्याची क्षमता दिल्याने विकेंद्रित ॲप्लिकेशन्सची (dapps) उपयुक्तता आणि मूल्य वाढते. उदाहरणार्थ, ऑनचेन पूर्वानुमान बाजार परिणामांबद्दल माहिती प्रदान करण्यासाठी ओरॅकलवर अवलंबून असतात, ज्याचा वापर ते वापरकर्त्यांच्या अंदाजांची पडताळणी करण्यासाठी करतात. समजा ॲलिसने अमेरिकेचा पुढचा राष्ट्राध्यक्ष कोण होईल यावर 20 ETH ची पैज लावली. अशा परिस्थितीत, निवडणूक निकालांची पुष्टी करण्यासाठी आणि ॲलिस पेआउटसाठी पात्र आहे की नाही हे ठरवण्यासाठी पूर्वानुमान बाजार डॅपला (dapp) ओरॅकलची आवश्यकता असते.
पूर्वअटी
हे पृष्ठ असे गृहीत धरते की वाचकाला इथेरियम च्या मूलभूत गोष्टींची माहिती आहे, ज्यामध्ये नोड्स, एकमत यंत्रणा, आणि EVM यांचा समावेश आहे. तुम्हाला स्मार्ट कॉन्ट्रॅक्ट्स आणि स्मार्ट कॉन्ट्रॅक्टची रचना, विशेषतः यांची चांगली समज असली पाहिजे.
ब्लॉकचेन ओरॅकल म्हणजे काय?
ओरॅकल हे असे ॲप्लिकेशन्स आहेत जे बाह्य माहिती (म्हणजेच, साखळीबाह्य साठवलेली माहिती) मिळवतात, तिची पडताळणी करतात आणि ब्लॉकचेनवर चालणाऱ्या स्मार्ट कॉन्ट्रॅक्ट्सकडे प्रसारित करतात. साखळीबाह्य डेटा 'पुल' (pull) करून इथेरियमवर प्रसारित करण्याव्यतिरिक्त, ओरॅकल ब्लॉकचेनवरून बाह्य प्रणालींमध्ये माहिती 'पुश' (push) देखील करू शकतात, उदा., वापरकर्त्याने इथेरियम व्यवहाराद्वारे फी पाठवल्यानंतर स्मार्ट लॉक उघडणे.
ओरॅकलशिवाय, स्मार्ट कॉन्ट्रॅक्ट पूर्णपणे ऑनचेन डेटापुरते मर्यादित राहील.
डेटाचा स्रोत (एक किंवा अनेक स्रोत), विश्वास मॉडेल्स (केंद्रीकृत किंवा विकेंद्रित), आणि सिस्टम आर्किटेक्चर (इमिजिएट-रीड, पब्लिश-सबस्क्राइब, आणि रिक्वेस्ट-रिस्पॉन्स) यावर आधारित ओरॅकल भिन्न असतात. ऑनचेन कॉन्ट्रॅक्ट्सच्या वापरासाठी ते बाह्य डेटा मिळवतात (इनपुट ओरॅकल), ब्लॉकचेनवरून साखळीबाह्य ॲप्लिकेशन्सना माहिती पाठवतात (आउटपुट ओरॅकल), किंवा साखळीबाह्य संगणकीय कार्ये करतात (कम्प्युटेशनल ओरॅकल) या आधारावर आपण ओरॅकलमध्ये फरक करू शकतो.
स्मार्ट कॉन्ट्रॅक्ट्सना ओरॅकलची आवश्यकता का असते?
अनेक डेव्हलपर्स स्मार्ट कॉन्ट्रॅक्ट्सकडे ब्लॉकचेनवरील विशिष्ट पत्त्यांवर चालणारा कोड म्हणून पाहतात. तथापि, स्मार्ट कॉन्ट्रॅक्ट्सचा अधिक सामान्य दृष्टिकोन असा आहे की ते स्वयंचलितपणे कार्यान्वित होणारे सॉफ्टवेअर प्रोग्राम्स आहेत जे विशिष्ट अटी पूर्ण झाल्यावर पक्षांमधील करारांची अंमलबजावणी करण्यास सक्षम असतात - म्हणूनच 'स्मार्ट कॉन्ट्रॅक्ट्स' हा शब्द वापरला जातो.
परंतु इथेरियम हे डिटरमिनिस्टिक (निश्चित) असल्यामुळे, लोकांमधील करारांची अंमलबजावणी करण्यासाठी स्मार्ट कॉन्ट्रॅक्ट्सचा वापर करणे सोपे नाही. डिटरमिनिस्टिक प्रणाली (नवीन टॅबमध्ये उघडते) अशी असते जी प्रारंभिक स्थिती आणि विशिष्ट इनपुट दिल्यास नेहमी समान परिणाम देते, याचा अर्थ इनपुटमधून आउटपुट मोजण्याच्या प्रक्रियेत कोणतीही यादृच्छिकता किंवा भिन्नता नसते.
डिटरमिनिस्टिक अंमलबजावणी साध्य करण्यासाठी, ब्लॉकचेन नोड्सना केवळ ब्लॉकचेनवरच साठवलेला डेटा वापरून साध्या बायनरी (खरे/खोटे) प्रश्नांवर एकमत होण्यापुरते मर्यादित करतात. अशा प्रश्नांच्या उदाहरणांमध्ये हे समाविष्ट आहे:
- 'खाते मालकाने (सार्वजनिक की द्वारे ओळखल्या जाणाऱ्या) जोडलेल्या खाजगी की सह या व्यवहारावर स्वाक्षरी केली आहे का?'
- 'या खात्यात व्यवहार पूर्ण करण्यासाठी पुरेसा निधी आहे का?'
- 'हा व्यवहार या स्मार्ट कॉन्ट्रॅक्टच्या संदर्भात वैध आहे का?', इ.
जर ब्लॉकचेनला बाह्य स्रोतांकडून (म्हणजेच वास्तविक जगातून) माहिती मिळाली, तर डिटरमिनिझम साध्य करणे अशक्य होईल, ज्यामुळे नोड्सना ब्लॉकचेनच्या स्थितीतील बदलांच्या वैधतेवर एकमत होण्यापासून रोखले जाईल. उदाहरणार्थ, पारंपारिक किंमत API कडून मिळवलेल्या सध्याच्या ETH-USD विनिमय दरावर आधारित व्यवहार कार्यान्वित करणारे स्मार्ट कॉन्ट्रॅक्ट घ्या. हा आकडा वारंवार बदलण्याची शक्यता असते (API बंद पडू शकते किंवा हॅक होऊ शकते हे वेगळे सांगण्याची गरज नाही), याचा अर्थ समान कॉन्ट्रॅक्ट कोड कार्यान्वित करणारे नोड्स वेगवेगळ्या परिणामांवर पोहोचतील.
इथेरियम सारख्या सार्वजनिक ब्लॉकचेनसाठी, जिथे जगभरातील हजारो नोड्स व्यवहारांवर प्रक्रिया करत असतात, डिटरमिनिझम अत्यंत महत्त्वाचे आहे. सत्याचा स्रोत म्हणून काम करणारी कोणतीही मध्यवर्ती संस्था नसल्यामुळे, समान व्यवहार लागू केल्यानंतर समान स्थितीवर पोहोचण्यासाठी नोड्सना यंत्रणेची आवश्यकता असते. अशी परिस्थिती जिथे नोड A स्मार्ट कॉन्ट्रॅक्टचा कोड कार्यान्वित करतो आणि परिणाम म्हणून "3" मिळवतो, तर नोड B ला तोच व्यवहार चालवल्यानंतर "7" मिळतो, यामुळे एकमत तुटेल आणि विकेंद्रित संगणकीय प्लॅटफॉर्म म्हणून इथेरियमचे मूल्य नष्ट होईल.
हे दृश्य बाह्य स्रोतांकडून माहिती मिळवण्यासाठी ब्लॉकचेन डिझाइन करण्यातील समस्या देखील अधोरेखित करते. तथापि, ओरॅकल साखळीबाह्य स्रोतांकडून माहिती घेऊन आणि ती स्मार्ट कॉन्ट्रॅक्ट्सच्या वापरासाठी ब्लॉकचेनवर साठवून ही समस्या सोडवतात. ऑनचेन साठवलेली माहिती अपरिवर्तनीय आणि सार्वजनिकरित्या उपलब्ध असल्यामुळे, इथेरियम नोड्स एकमत न मोडता स्थितीतील बदलांची गणना करण्यासाठी ओरॅकलने आयात केलेला साखळीबाह्य डेटा सुरक्षितपणे वापरू शकतात.
हे करण्यासाठी, ओरॅकल सामान्यतः ऑनचेन चालणारे स्मार्ट कॉन्ट्रॅक्ट आणि काही साखळीबाह्य घटकांनी बनलेले असते. ऑनचेन कॉन्ट्रॅक्टला इतर स्मार्ट कॉन्ट्रॅक्ट्सकडून डेटासाठी विनंत्या प्राप्त होतात, ज्या ते साखळीबाह्य घटकाकडे (ज्याला ओरॅकल नोड म्हणतात) पाठवते. हा ओरॅकल नोड डेटा स्रोतांना क्वेरी करू शकतो—उदाहरणार्थ, ॲप्लिकेशन प्रोग्रामिंग इंटरफेस (API) वापरून—आणि विनंती केलेला डेटा स्मार्ट कॉन्ट्रॅक्टच्या स्टोरेजमध्ये साठवण्यासाठी व्यवहार पाठवू शकतो.
मूलत:, ब्लॉकचेन ओरॅकल ब्लॉकचेन आणि बाह्य वातावरण यांच्यातील माहितीची दरी कमी करते, ज्यामुळे 'हायब्रिड स्मार्ट कॉन्ट्रॅक्ट्स' तयार होतात. हायब्रिड स्मार्ट कॉन्ट्रॅक्ट असे असते जे ऑनचेन कॉन्ट्रॅक्ट कोड आणि साखळीबाह्य पायाभूत सुविधा यांच्या संयोजनावर आधारित कार्य करते. विकेंद्रित पूर्वानुमान बाजार हे हायब्रिड स्मार्ट कॉन्ट्रॅक्ट्सचे उत्तम उदाहरण आहे. इतर उदाहरणांमध्ये पीक विमा स्मार्ट कॉन्ट्रॅक्ट्सचा समावेश असू शकतो जे ओरॅकल्सच्या संचाने विशिष्ट हवामान घटना घडल्याचे निश्चित केल्यावर पेआउट देतात.
ओरॅकल समस्या काय आहे?
ओरॅकल एक महत्त्वाची समस्या सोडवतात, परंतु काही गुंतागुंत देखील निर्माण करतात, उदा.:
-
इंजेक्ट केलेली माहिती योग्य स्रोताकडून काढली गेली आहे किंवा तिच्यात छेडछाड केली गेली नाही याची आपण पडताळणी कशी करू?
-
हा डेटा नेहमी उपलब्ध असेल आणि नियमितपणे अपडेट केला जाईल याची आपण खात्री कशी करू?
तथाकथित 'ओरॅकल समस्या' स्मार्ट कॉन्ट्रॅक्ट्सना इनपुट पाठवण्यासाठी ब्लॉकचेन ओरॅकल वापरताना येणाऱ्या समस्या दर्शवते. स्मार्ट कॉन्ट्रॅक्ट योग्यरित्या कार्यान्वित होण्यासाठी ओरॅकलकडील डेटा अचूक असणे आवश्यक आहे. शिवाय, अचूक माहिती प्रदान करण्यासाठी ओरॅकल ऑपरेटर्सवर 'विश्वास' ठेवावा लागणे हे स्मार्ट कॉन्ट्रॅक्ट्सच्या 'विश्वासरहित' पैलूला कमकुवत करते.
विविध ओरॅकल ओरॅकल समस्येवर वेगवेगळे उपाय देतात, ज्यांचा आपण नंतर शोध घेऊ. ओरॅकल सामान्यतः खालील आव्हाने किती चांगल्या प्रकारे हाताळू शकतात यावर मूल्यमापन केले जातात:
-
अचूकता: ओरॅकलमुळे अवैध साखळीबाह्य डेटावर आधारित स्मार्ट कॉन्ट्रॅक्ट्सनी स्थिती बदलू नये. ओरॅकलने डेटाची सत्यता आणि अखंडता याची हमी दिली पाहिजे. सत्यता म्हणजे डेटा योग्य स्रोताकडून मिळवला गेला आहे, तर अखंडता म्हणजे ऑनचेन पाठवण्यापूर्वी डेटा अबाधित राहिला (म्हणजेच, बदलला गेला नाही).
-
उपलब्धता: ओरॅकलने स्मार्ट कॉन्ट्रॅक्ट्सना कृती कार्यान्वित करण्यास आणि स्थिती बदलण्यास विलंब किंवा प्रतिबंध करू नये. याचा अर्थ ओरॅकलकडील डेटा कोणत्याही व्यत्ययाशिवाय विनंती केल्यावर उपलब्ध असणे आवश्यक आहे.
-
प्रोत्साहन सुसंगतता: ओरॅकलने साखळीबाह्य डेटा प्रदात्यांना स्मार्ट कॉन्ट्रॅक्ट्सकडे अचूक माहिती सबमिट करण्यासाठी प्रोत्साहित केले पाहिजे. प्रोत्साहन सुसंगततेमध्ये श्रेयक्षमता (attributability) आणि जबाबदारी (accountability) यांचा समावेश असतो. श्रेयक्षमता बाह्य माहितीचा एक भाग त्याच्या प्रदात्याशी जोडण्याची परवानगी देते, तर जबाबदारी डेटा प्रदात्यांना त्यांनी दिलेल्या माहितीशी बांधून ठेवते, जेणेकरून प्रदान केलेल्या माहितीच्या गुणवत्तेवर आधारित त्यांना बक्षीस किंवा दंड दिला जाऊ शकतो.
ब्लॉकचेन ओरॅकल सेवा कशी कार्य करते?
वापरकर्ते
वापरकर्ते अशा संस्था (म्हणजेच, स्मार्ट कॉन्ट्रॅक्ट्स) आहेत ज्यांना विशिष्ट कृती पूर्ण करण्यासाठी ब्लॉकचेनच्या बाहेरील माहितीची आवश्यकता असते. ओरॅकल सेवेचा मूलभूत कार्यप्रवाह वापरकर्त्याने ओरॅकल कॉन्ट्रॅक्टला डेटा विनंती पाठवण्यापासून सुरू होतो. डेटा विनंत्या सहसा खालीलपैकी काही किंवा सर्व प्रश्नांची उत्तरे देतील:
-
विनंती केलेल्या माहितीसाठी साखळीबाह्य नोड्स कोणत्या स्रोतांचा सल्ला घेऊ शकतात?
-
रिपोर्टर्स डेटा स्रोतांमधून माहितीवर प्रक्रिया कशी करतात आणि उपयुक्त डेटा पॉइंट्स कसे काढतात?
-
डेटा मिळवण्यात किती ओरॅकल नोड्स सहभागी होऊ शकतात?
-
ओरॅकल रिपोर्ट्समधील विसंगती कशा व्यवस्थापित केल्या पाहिजेत?
-
सबमिशन फिल्टर करण्यासाठी आणि रिपोर्ट्स एकाच मूल्यात एकत्रित करण्यासाठी कोणती पद्धत लागू केली पाहिजे?
ओरॅकल कॉन्ट्रॅक्ट
ओरॅकल कॉन्ट्रॅक्ट हा ओरॅकल सेवेसाठी ऑनचेन घटक आहे. ते इतर कॉन्ट्रॅक्ट्सकडून डेटा विनंत्या ऐकते, ओरॅकल नोड्सकडे डेटा क्वेरी पाठवते आणि परत आलेला डेटा क्लायंट कॉन्ट्रॅक्ट्सकडे प्रसारित करते. विनंती करणाऱ्या कॉन्ट्रॅक्टला पाठवण्यासाठी एकत्रित मूल्य तयार करण्यासाठी हे कॉन्ट्रॅक्ट परत आलेल्या डेटा पॉइंट्सवर काही गणना देखील करू शकते.
ओरॅकल कॉन्ट्रॅक्ट काही फंक्शन्स उघड करते ज्यांना क्लायंट कॉन्ट्रॅक्ट्स डेटा विनंती करताना कॉल करतात. नवीन क्वेरी प्राप्त झाल्यावर, स्मार्ट कॉन्ट्रॅक्ट डेटा विनंतीच्या तपशीलांसह एक नोंद घटना उत्सर्जित करेल. हे नोंदीची सदस्यता घेतलेल्या साखळीबाह्य नोड्सना सूचित करते (सहसा जेसॉन-आरपीसी eth_subscribe कमांड सारखे काहीतरी वापरून), जे नोंद घटनेत परिभाषित केलेला डेटा मिळवण्यासाठी पुढे जातात.
खाली पेड्रो कोस्टा यांचे उदाहरण ओरॅकल कॉन्ट्रॅक्ट (नवीन टॅबमध्ये उघडते) आहे. ही एक साधी ओरॅकल सेवा आहे जी इतर स्मार्ट कॉन्ट्रॅक्ट्सच्या विनंतीनुसार साखळीबाह्य API ला क्वेरी करू शकते आणि विनंती केलेली माहिती ब्लॉकचेनवर साठवू शकते:
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;
//जोपर्यंत एखादे स्थान मोकळे होत नाही तोपर्यंत उत्तरांच्या "अॅरे" मधून पुनरावृत्ती करा आणि मिळवलेले मूल्य जतन करा
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
);
}
}
}
}
}
}
ओरॅकल नोड्स
ओरॅकल नोड हा ओरॅकल सेवेचा साखळीबाह्य घटक आहे. तो तृतीय-पक्ष सर्व्हरवर होस्ट केलेल्या API सारख्या बाह्य स्रोतांमधून माहिती काढतो आणि स्मार्ट कॉन्ट्रॅक्ट्सच्या वापरासाठी ती ऑनचेन ठेवतो. ओरॅकल नोड्स ऑनचेन ओरॅकल कॉन्ट्रॅक्टमधील घटना ऐकतात आणि नोंदीमध्ये वर्णन केलेले कार्य पूर्ण करण्यासाठी पुढे जातात.
ओरॅकल नोड्ससाठी एक सामान्य कार्य म्हणजे API सेवेला HTTP GET (नवीन टॅबमध्ये उघडते) विनंती पाठवणे, संबंधित डेटा काढण्यासाठी प्रतिसादाचे विश्लेषण करणे, ब्लॉकचेन-वाचनीय आउटपुटमध्ये स्वरूपित करणे आणि ओरॅकल कॉन्ट्रॅक्टच्या व्यवहारामध्ये समाविष्ट करून ते ऑनचेन पाठवणे. ओरॅकल नोडला 'सत्यता पुरावे' वापरून सबमिट केलेल्या माहितीच्या वैधतेची आणि अखंडतेची साक्षांकन (attest) करण्याची आवश्यकता असू शकते, ज्याचा आपण नंतर शोध घेऊ.
गॅस खर्च आणि ब्लॉक आकाराच्या मर्यादा लक्षात घेता, ऑनचेन कार्यान्वित करणे अव्यवहार्य ठरेल अशी संगणकीय कार्ये करण्यासाठी कम्प्युटेशनल ओरॅकल देखील साखळीबाह्य नोड्सवर अवलंबून असतात. उदाहरणार्थ, ओरॅकल नोडला पडताळणी करण्यायोग्य यादृच्छिक आकृती तयार करण्याचे काम दिले जाऊ शकते (उदा., ब्लॉकचेन-आधारित गेमसाठी).
ओरॅकल डिझाइन पॅटर्न
ओरॅकल विविध प्रकारांमध्ये येतात, ज्यामध्ये इमिजिएट-रीड, पब्लिश-सबस्क्राइब, आणि रिक्वेस्ट-रिस्पॉन्स यांचा समावेश आहे, ज्यापैकी शेवटचे दोन इथेरियम स्मार्ट कॉन्ट्रॅक्ट्समध्ये सर्वात लोकप्रिय आहेत. येथे आम्ही पब्लिश-सबस्क्राइब आणि रिक्वेस्ट-रिस्पॉन्स मॉडेल्सचे थोडक्यात वर्णन करतो.
पब्लिश-सबस्क्राइब ओरॅकल
या प्रकारचा ओरॅकल 'डेटा फीड' उघड करतो जो इतर कॉन्ट्रॅक्ट्स माहितीसाठी नियमितपणे वाचू शकतात. या प्रकरणात डेटा वारंवार बदलण्याची अपेक्षा असते, त्यामुळे क्लायंट कॉन्ट्रॅक्ट्सनी ओरॅकलच्या स्टोरेजमधील डेटाच्या अपडेट्ससाठी ऐकले पाहिजे. याचे एक उदाहरण म्हणजे ओरॅकल जे वापरकर्त्यांना नवीनतम ETH-USD किंमतीची माहिती प्रदान करते.
रिक्वेस्ट-रिस्पॉन्स ओरॅकल
रिक्वेस्ट-रिस्पॉन्स सेटअप क्लायंट कॉन्ट्रॅक्टला पब्लिश-सबस्क्राइब ओरॅकलद्वारे प्रदान केलेल्या डेटा व्यतिरिक्त अनियंत्रित डेटाची विनंती करण्याची परवानगी देतो. जेव्हा डेटासेट स्मार्ट कॉन्ट्रॅक्टच्या स्टोरेजमध्ये साठवण्यासाठी खूप मोठा असतो आणि/किंवा वापरकर्त्यांना कोणत्याही वेळी डेटाच्या फक्त एका लहान भागाची आवश्यकता असते तेव्हा रिक्वेस्ट-रिस्पॉन्स ओरॅकल आदर्श असतात.
पब्लिश-सबस्क्राइब मॉडेल्सपेक्षा अधिक गुंतागुंतीचे असले तरी, रिक्वेस्ट-रिस्पॉन्स ओरॅकल मुळात तेच आहेत ज्यांचे आपण मागील विभागात वर्णन केले आहे. ओरॅकलमध्ये एक ऑनचेन घटक असेल जो डेटा विनंती प्राप्त करतो आणि प्रक्रियेसाठी साखळीबाह्य नोडकडे पाठवतो.
डेटा क्वेरी सुरू करणाऱ्या वापरकर्त्यांनी साखळीबाह्य स्रोताकडून माहिती मिळवण्याचा खर्च उचलला पाहिजे. क्लायंट कॉन्ट्रॅक्टने विनंतीमध्ये निर्दिष्ट केलेल्या कॉलबॅक फंक्शनद्वारे प्रतिसाद परत करताना ओरॅकल कॉन्ट्रॅक्टला लागणारा गॅस खर्च भागवण्यासाठी निधी देखील प्रदान केला पाहिजे.
केंद्रीकृत वि. विकेंद्रित ओरॅकल
केंद्रीकृत ओरॅकल
केंद्रीकृत ओरॅकल एकाच संस्थेद्वारे नियंत्रित केले जाते जी साखळीबाह्य माहिती एकत्रित करण्यासाठी आणि विनंती केल्यानुसार ओरॅकल कॉन्ट्रॅक्टचा डेटा अपडेट करण्यासाठी जबाबदार असते. केंद्रीकृत ओरॅकल कार्यक्षम असतात कारण ते सत्याच्या एकाच स्रोतावर अवलंबून असतात. ज्या प्रकरणांमध्ये मालकाद्वारे व्यापकपणे स्वीकारल्या गेलेल्या स्वाक्षरीसह मालकीचे डेटासेट थेट प्रकाशित केले जातात तिथे ते अधिक चांगले कार्य करू शकतात. तथापि, त्यांचे काही तोटे देखील आहेत:
कमी अचूकतेची हमी
केंद्रीकृत ओरॅकलसह, प्रदान केलेली माहिती अचूक आहे की नाही याची पुष्टी करण्याचा कोणताही मार्ग नाही. अगदी 'प्रतिष्ठित' प्रदाते देखील फसवणूक करू शकतात किंवा हॅक होऊ शकतात. जर ओरॅकल भ्रष्ट झाले, तर स्मार्ट कॉन्ट्रॅक्ट्स चुकीच्या डेटावर आधारित कार्यान्वित होतील.
खराब उपलब्धता
केंद्रीकृत ओरॅकल इतर स्मार्ट कॉन्ट्रॅक्ट्सना नेहमी साखळीबाह्य डेटा उपलब्ध करून देतील याची हमी नसते. जर प्रदात्याने सेवा बंद करण्याचा निर्णय घेतला किंवा हॅकरने ओरॅकलचा साखळीबाह्य घटक हायजॅक केला, तर तुमच्या स्मार्ट कॉन्ट्रॅक्टला डिनायल ऑफ सर्व्हिस (DoS) हल्ल्याचा धोका असतो.
खराब प्रोत्साहन सुसंगतता
केंद्रीकृत ओरॅकलमध्ये डेटा प्रदात्याला अचूक/अपरिवर्तित माहिती पाठवण्यासाठी अनेकदा खराब डिझाइन केलेले किंवा अस्तित्वात नसलेले प्रोत्साहन असते. अचूकतेसाठी ओरॅकलला पैसे दिल्याने प्रामाणिकपणाची हमी मिळत नाही. स्मार्ट कॉन्ट्रॅक्ट्सद्वारे नियंत्रित केलेल्या मूल्याचे प्रमाण जसजसे वाढते तसतशी ही समस्या मोठी होत जाते.
विकेंद्रित ओरॅकल
विकेंद्रित ओरॅकल हे अपयशाचे एकल बिंदू (single points of failure) दूर करून केंद्रीकृत ओरॅकलच्या मर्यादांवर मात करण्यासाठी डिझाइन केलेले आहेत. विकेंद्रित ओरॅकल सेवेमध्ये पीअर-टू-पीअर नेटवर्कमधील अनेक सहभागींचा समावेश असतो जे साखळीबाह्य डेटा स्मार्ट कॉन्ट्रॅक्टला पाठवण्यापूर्वी त्यावर एकमत तयार करतात.
विकेंद्रित ओरॅकल (आदर्शपणे) परवानगीमुक्त, विश्वासरहित आणि मध्यवर्ती पक्षाच्या प्रशासनापासून मुक्त असावे; प्रत्यक्षात, ओरॅकलमधील विकेंद्रीकरण एका स्पेक्ट्रमवर असते. असे अर्ध-विकेंद्रित ओरॅकल नेटवर्क आहेत जिथे कोणीही सहभागी होऊ शकते, परंतु एका 'मालकासह' जो ऐतिहासिक कामगिरीच्या आधारावर नोड्स मंजूर करतो आणि काढून टाकतो. पूर्णपणे विकेंद्रित ओरॅकल नेटवर्क देखील अस्तित्वात आहेत: हे सहसा स्वतंत्र ब्लॉकचेन म्हणून चालतात आणि नोड्सचे समन्वय साधण्यासाठी आणि गैरवर्तनाला शिक्षा करण्यासाठी परिभाषित एकमत यंत्रणा असतात.
विकेंद्रित ओरॅकल वापरण्याचे खालील फायदे आहेत:
उच्च अचूकतेची हमी
विकेंद्रित ओरॅकल वेगवेगळ्या दृष्टिकोनांचा वापर करून डेटाची अचूकता साध्य करण्याचा प्रयत्न करतात. यामध्ये परत आलेल्या माहितीच्या सत्यतेची आणि अखंडतेची साक्षांकन करणारे पुरावे वापरणे आणि साखळीबाह्य डेटाच्या वैधतेवर सामूहिकपणे सहमत होण्यासाठी अनेक संस्थांची आवश्यकता असणे समाविष्ट आहे.
सत्यता पुरावे
सत्यता पुरावे हे क्रिप्टोग्राफिक यंत्रणा आहेत जे बाह्य स्रोतांमधून मिळवलेल्या माहितीची स्वतंत्र पडताळणी करण्यास सक्षम करतात. हे पुरावे माहितीच्या स्रोताची पडताळणी करू शकतात आणि पुनर्प्राप्तीनंतर डेटामधील संभाव्य बदल शोधू शकतात.
सत्यता पुराव्यांच्या उदाहरणांमध्ये हे समाविष्ट आहे:
ट्रान्सपोर्ट लेयर सिक्युरिटी (TLS) पुरावे: ओरॅकल नोड्स अनेकदा ट्रान्सपोर्ट लेयर सिक्युरिटी (TLS) प्रोटोकॉलवर आधारित सुरक्षित HTTP कनेक्शन वापरून बाह्य स्रोतांमधून डेटा मिळवतात. काही विकेंद्रित ओरॅकल TLS सत्रांची पडताळणी करण्यासाठी (म्हणजेच, नोड आणि विशिष्ट सर्व्हरमधील माहितीच्या देवाणघेवाणीची पुष्टी करण्यासाठी) आणि सत्रातील सामग्री बदलली गेली नाही याची पुष्टी करण्यासाठी सत्यता पुरावे वापरतात.
ट्रस्टेड एक्झिक्यूशन एन्व्हायर्नमेंट (TEE) साक्षांकन: ट्रस्टेड एक्झिक्यूशन एन्व्हायर्नमेंट (नवीन टॅबमध्ये उघडते) (TEE) हे एक सँडबॉक्स्ड संगणकीय वातावरण आहे जे त्याच्या होस्ट सिस्टमच्या ऑपरेशनल प्रक्रियांपासून वेगळे असते. TEE हे सुनिश्चित करतात की संगणकीय वातावरणात साठवलेला/वापरलेला कोणताही ॲप्लिकेशन कोड किंवा डेटा अखंडता, गोपनीयता आणि अपरिवर्तनीयता राखून ठेवतो. वापरकर्ते ॲप्लिकेशन इन्स्टन्स ट्रस्टेड एक्झिक्यूशन एन्व्हायर्नमेंटमध्ये चालत असल्याचे सिद्ध करण्यासाठी साक्षांकन देखील तयार करू शकतात.
विकेंद्रित ओरॅकलच्या विशिष्ट वर्गांना ओरॅकल नोड ऑपरेटर्सनी TEE साक्षांकन प्रदान करणे आवश्यक असते. हे वापरकर्त्याला पुष्टी देते की नोड ऑपरेटर ट्रस्टेड एक्झिक्यूशन एन्व्हायर्नमेंटमध्ये ओरॅकल क्लायंटचा इन्स्टन्स चालवत आहे. TEE बाह्य प्रक्रियांना ॲप्लिकेशनचा कोड आणि डेटा बदलण्यापासून किंवा वाचण्यापासून प्रतिबंधित करतात, म्हणून, ते साक्षांकन सिद्ध करतात की ओरॅकल नोडने माहिती अबाधित आणि गोपनीय ठेवली आहे.
माहितीचे एकमत-आधारित प्रमाणीकरण
स्मार्ट कॉन्ट्रॅक्ट्सना डेटा प्रदान करताना केंद्रीकृत ओरॅकल सत्याच्या एकाच स्रोतावर अवलंबून असतात, ज्यामुळे चुकीची माहिती प्रकाशित होण्याची शक्यता निर्माण होते. विकेंद्रित ओरॅकल साखळीबाह्य माहितीची क्वेरी करण्यासाठी अनेक ओरॅकल नोड्सवर अवलंबून राहून ही समस्या सोडवतात. अनेक स्रोतांमधील डेटाची तुलना करून, विकेंद्रित ओरॅकल ऑनचेन कॉन्ट्रॅक्ट्सकडे अवैध माहिती पाठवण्याचा धोका कमी करतात.
तथापि, विकेंद्रित ओरॅकलना अनेक साखळीबाह्य स्रोतांमधून मिळवलेल्या माहितीमधील विसंगती हाताळाव्या लागतात. माहितीमधील फरक कमी करण्यासाठी आणि ओरॅकल कॉन्ट्रॅक्टकडे पाठवलेला डेटा ओरॅकल नोड्सचे सामूहिक मत प्रतिबिंबित करतो याची खात्री करण्यासाठी, विकेंद्रित ओरॅकल खालील यंत्रणा वापरतात:
डेटाच्या अचूकतेवर मतदान/स्टेकिंग
काही विकेंद्रित ओरॅकल नेटवर्कमध्ये सहभागींना नेटवर्कचे मूळ टोकन वापरून डेटा क्वेरीच्या उत्तरांच्या अचूकतेवर (उदा., '2020 ची अमेरिकन निवडणूक कोणी जिंकली?') मतदान करणे किंवा स्टेक करणे आवश्यक असते. एकत्रीकरण प्रोटोकॉल नंतर मते आणि स्टेक एकत्रित करतो आणि बहुमताने समर्थित उत्तर वैध मानतो.
ज्या नोड्सची उत्तरे बहुमताच्या उत्तरापासून विचलित होतात त्यांना दंडित केले जाते आणि त्यांचे टोकन्स अधिक अचूक मूल्ये प्रदान करणाऱ्या इतरांना वितरित केले जातात. डेटा प्रदान करण्यापूर्वी नोड्सना बाँड प्रदान करण्यास भाग पाडल्याने प्रामाणिक प्रतिसादांना प्रोत्साहन मिळते कारण ते परतावा वाढवण्याच्या उद्देशाने तर्कसंगत आर्थिक घटक मानले जातात.
स्टेकिंग/मतदान विकेंद्रित ओरॅकलचे देखील संरक्षण करते जिथे दुर्भावनापूर्ण घटक एकमत प्रणालीशी खेळण्यासाठी अनेक ओळखी तयार करतात. तथापि, स्टेकिंग 'फ्रीलोडिंग' (इतरांकडून माहिती कॉपी करणारे ओरॅकल नोड्स) आणि 'आळशी प्रमाणीकरण' (स्वतः माहितीची पडताळणी न करता बहुमताचे अनुसरण करणारे ओरॅकल नोड्स) रोखू शकत नाही.
शेलिंग पॉइंट यंत्रणा
शेलिंग पॉइंट (नवीन टॅबमध्ये उघडते) ही एक गेम-थिअरी संकल्पना आहे जी असे गृहीत धरते की कोणत्याही संवादाच्या अनुपस्थितीत अनेक संस्था नेहमी समस्येच्या सामान्य समाधानाकडे वळतील. शेलिंग पॉइंट यंत्रणा अनेकदा विकेंद्रित ओरॅकल नेटवर्कमध्ये वापरल्या जातात जेणेकरून नोड्स डेटा विनंत्यांच्या उत्तरांवर एकमत होऊ शकतील.
यासाठी एक प्रारंभिक कल्पना SchellingCoin (नवीन टॅबमध्ये उघडते) होती, एक प्रस्तावित डेटा फीड जिथे सहभागी 'स्केलर' प्रश्नांची उत्तरे (ज्या प्रश्नांची उत्तरे परिमाणाद्वारे वर्णन केली जातात, उदा., 'ETH ची किंमत काय आहे?'), ठेवीसह सबमिट करतात. जे वापरकर्ते 25 व्या आणि 75 व्या शतांश (percentile) (नवीन टॅबमध्ये उघडते) दरम्यान मूल्ये प्रदान करतात त्यांना बक्षीस दिले जाते, तर ज्यांची मूल्ये मध्यक मूल्यापासून मोठ्या प्रमाणात विचलित होतात त्यांना दंडित केले जाते.
जरी SchellingCoin आज अस्तित्वात नसले तरी, अनेक विकेंद्रित ओरॅकल—विशेषतः मेकर प्रोटोकॉलचे ओरॅकल (नवीन टॅबमध्ये उघडते)—ओरॅकल डेटाची अचूकता सुधारण्यासाठी शेलिंग-पॉइंट यंत्रणा वापरतात. प्रत्येक मेकर ओरॅकलमध्ये नोड्सचे ('रिलेअर्स' आणि 'फीड्स') साखळीबाह्य P2P नेटवर्क असते जे तारण मालमत्तेसाठी बाजारातील किंमती सबमिट करतात आणि एक ऑनचेन 'मिडियनायझर' कॉन्ट्रॅक्ट असते जे प्रदान केलेल्या सर्व मूल्यांच्या मध्यकाची गणना करते. एकदा निर्दिष्ट विलंब कालावधी संपला की, हे मध्यक मूल्य संबंधित मालमत्तेसाठी नवीन संदर्भ किंमत बनते.
शेलिंग पॉइंट यंत्रणा वापरणाऱ्या ओरॅकलच्या इतर उदाहरणांमध्ये चेनलिंक ऑफचेन रिपोर्टिंग (नवीन टॅबमध्ये उघडते) आणि Witnet (नवीन टॅबमध्ये उघडते) यांचा समावेश आहे. दोन्ही प्रणालींमध्ये, पीअर-टू-पीअर नेटवर्कमधील ओरॅकल नोड्सचे प्रतिसाद एकाच एकत्रित मूल्यात, जसे की मध्य किंवा मध्यक, एकत्रित केले जातात. नोड्सचे प्रतिसाद एकत्रित मूल्याशी किती जुळतात किंवा विचलित होतात त्यानुसार त्यांना बक्षीस किंवा शिक्षा दिली जाते.
शेलिंग पॉइंट यंत्रणा आकर्षक आहेत कारण त्या विकेंद्रीकरणाची हमी देताना ऑनचेन फूटप्रिंट कमी करतात (फक्त एक व्यवहार पाठवणे आवश्यक आहे). हे शक्य आहे कारण मध्य/मध्यक मूल्य तयार करणाऱ्या अल्गोरिदममध्ये फीड करण्यापूर्वी नोड्सनी सबमिट केलेल्या प्रतिसादांच्या सूचीवर स्वाक्षरी करणे आवश्यक आहे.
उपलब्धता
विकेंद्रित ओरॅकल सेवा स्मार्ट कॉन्ट्रॅक्ट्सना साखळीबाह्य डेटाची उच्च उपलब्धता सुनिश्चित करतात. हे साखळीबाह्य माहितीचा स्रोत आणि माहिती ऑनचेन हस्तांतरित करण्यासाठी जबाबदार असलेले नोड्स या दोन्हीचे विकेंद्रीकरण करून साध्य केले जाते.
हे फॉल्ट-टॉलरन्स सुनिश्चित करते कारण ओरॅकल कॉन्ट्रॅक्ट इतर कॉन्ट्रॅक्ट्समधून क्वेरी कार्यान्वित करण्यासाठी अनेक नोड्सवर (जे अनेक डेटा स्रोतांवर देखील अवलंबून असतात) अवलंबून राहू शकते. स्रोत आणि नोड-ऑपरेटर स्तरावर विकेंद्रीकरण महत्त्वपूर्ण आहे—एकाच स्रोताकडून मिळवलेली माहिती देणाऱ्या ओरॅकल नोड्सच्या नेटवर्कला केंद्रीकृत ओरॅकलसारख्याच समस्येचा सामना करावा लागेल.
स्टेक-आधारित ओरॅकलसाठी डेटा विनंत्यांना त्वरित प्रतिसाद न देणाऱ्या नोड ऑपरेटर्सना स्लॅशिंग करणे देखील शक्य आहे. हे ओरॅकल नोड्सना फॉल्ट-टॉलरंट पायाभूत सुविधांमध्ये गुंतवणूक करण्यासाठी आणि वेळेवर डेटा प्रदान करण्यासाठी लक्षणीय प्रोत्साहन देते.
चांगली प्रोत्साहन सुसंगतता
विकेंद्रित ओरॅकल ओरॅकल नोड्समधील बायझेंटाईन (नवीन टॅबमध्ये उघडते) वर्तन टाळण्यासाठी विविध प्रोत्साहन डिझाइन लागू करतात. विशेषतः, ते श्रेयक्षमता आणि जबाबदारी साध्य करतात:
-
विकेंद्रित ओरॅकल नोड्सना अनेकदा डेटा विनंत्यांच्या प्रतिसादात ते प्रदान करत असलेल्या डेटावर स्वाक्षरी करणे आवश्यक असते. ही माहिती ओरॅकल नोड्सच्या ऐतिहासिक कामगिरीचे मूल्यमापन करण्यात मदत करते, जेणेकरून वापरकर्ते डेटा विनंत्या करताना अविश्वासू ओरॅकल नोड्स फिल्टर करू शकतील. याचे एक उदाहरण म्हणजे Witnet ची अल्गोरिदमिक रेपुटेशन सिस्टम (नवीन टॅबमध्ये उघडते).
-
विकेंद्रित ओरॅकल—आधी स्पष्ट केल्याप्रमाणे—नोड्सना ते सबमिट करत असलेल्या डेटाच्या सत्यतेवरील त्यांच्या विश्वासावर स्टेक ठेवण्याची आवश्यकता असू शकते. जर दावा खरा ठरला, तर हा स्टेक प्रामाणिक सेवेच्या बक्षीसांसह परत केला जाऊ शकतो. परंतु माहिती चुकीची असल्यास त्याचे स्लॅशिंग देखील केले जाऊ शकते, जे जबाबदारीचे काही मोजमाप प्रदान करते.
स्मार्ट कॉन्ट्रॅक्ट्समध्ये ओरॅकलचे ॲप्लिकेशन्स
इथेरियममध्ये ओरॅकलसाठी खालील सामान्य उपयोग-प्रकरणे आहेत:
आर्थिक डेटा मिळवणे
विकेंद्रित वित्त (DeFi) ॲप्लिकेशन्स पीअर-टू-पीअर कर्ज देणे, कर्ज घेणे आणि मालमत्तेचा व्यापार करण्यास अनुमती देतात. यासाठी अनेकदा विनिमय दर डेटा (क्रिप्टोकरन्सीचे फियाट मूल्य मोजण्यासाठी किंवा टोकन किंमतींची तुलना करण्यासाठी) आणि भांडवली बाजार डेटा (सोन्यासारख्या टोकनाइज्ड मालमत्तेचे किंवा अमेरिकन डॉलरचे मूल्य मोजण्यासाठी) यासह भिन्न आर्थिक माहिती मिळवणे आवश्यक असते.
उदाहरणार्थ, DeFi कर्ज देणाऱ्या प्रोटोकॉलला तारण म्हणून जमा केलेल्या मालमत्तेच्या (उदा., ETH) सध्याच्या बाजारभावानुसार क्वेरी करणे आवश्यक आहे. यामुळे कॉन्ट्रॅक्टला तारण मालमत्तेचे मूल्य ठरवता येते आणि ते सिस्टममधून किती कर्ज घेऊ शकते हे ठरवता येते.
DeFi मधील लोकप्रिय 'किंमत ओरॅकल' (जसे त्यांना अनेकदा म्हटले जाते) मध्ये चेनलिंक किंमत फीड, Compound प्रोटोकॉलचे ओपन प्राइस फीड (नवीन टॅबमध्ये उघडते), युनिस्वॅपचे टाइम-वेटेड ॲव्हरेज प्राइसेस (TWAPs) (नवीन टॅबमध्ये उघडते), आणि मेकर ओरॅकल (नवीन टॅबमध्ये उघडते) यांचा समावेश आहे.
बिल्डर्सनी या किंमत ओरॅकलला त्यांच्या प्रोजेक्टमध्ये समाकलित करण्यापूर्वी त्यांच्यासोबत येणाऱ्या अटी समजून घेतल्या पाहिजेत. हा लेख (नवीन टॅबमध्ये उघडते) नमूद केलेल्या कोणत्याही किंमत ओरॅकलचा वापर करण्याची योजना आखताना काय विचारात घ्यावे याचे तपशीलवार विश्लेषण प्रदान करतो.
चेनलिंक किंमत फीड वापरून तुम्ही तुमच्या स्मार्ट कॉन्ट्रॅक्टमध्ये नवीनतम 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) अल्गोरिदम सोडवणाऱ्या मायनर्सद्वारे यात फेरफार (नवीन टॅबमध्ये उघडते) केला जाऊ शकतो. तसेच, इथेरियमच्या प्रूफ-ऑफ-स्टेक (PoS) मधील बदलाचा अर्थ असा आहे की डेव्हलपर्स आता ऑनचेन यादृच्छिकतेसाठी blockhash वर अवलंबून राहू शकत नाहीत. त्याऐवजी बीकन साखळीची RANDAO यंत्रणा (नवीन टॅबमध्ये उघडते) यादृच्छिकतेचा पर्यायी स्रोत प्रदान करते.
साखळीबाह्य यादृच्छिक मूल्य तयार करणे आणि ते ऑनचेन पाठवणे शक्य आहे, परंतु असे केल्याने वापरकर्त्यांवर उच्च विश्वासाच्या आवश्यकता लादल्या जातात. त्यांनी असा विश्वास ठेवला पाहिजे की मूल्य खरोखरच अप्रत्याशित यंत्रणेद्वारे तयार केले गेले होते आणि ट्रान्झिटमध्ये बदलले गेले नाही.
साखळीबाह्य संगणनासाठी डिझाइन केलेले ओरॅकल साखळीबाह्य सुरक्षितपणे यादृच्छिक परिणाम तयार करून ही समस्या सोडवतात जे ते प्रक्रियेच्या अप्रत्याशिततेची साक्षांकन करणाऱ्या क्रिप्टोग्राफिक पुराव्यांसह ऑनचेन प्रसारित करतात. याचे एक उदाहरण चेनलिंक VRF (नवीन टॅबमध्ये उघडते) (व्हेरिफायेबल रँडम फंक्शन) आहे, जे एक सिद्ध करण्यायोग्य न्याय्य आणि छेडछाड-प्रूफ रँडम नंबर जनरेटर (RNG) आहे जे अप्रत्याशित परिणामांवर अवलंबून असलेल्या ॲप्लिकेशन्ससाठी विश्वसनीय स्मार्ट कॉन्ट्रॅक्ट्स तयार करण्यासाठी उपयुक्त आहे.
घटनांचे परिणाम मिळवणे
ओरॅकलसह, वास्तविक जगातील घटनांना प्रतिसाद देणारे स्मार्ट कॉन्ट्रॅक्ट्स तयार करणे सोपे आहे. ओरॅकल सेवा कॉन्ट्रॅक्ट्सना साखळीबाह्य घटकांद्वारे बाह्य API शी कनेक्ट करण्याची आणि त्या डेटा स्रोतांमधून माहिती वापरण्याची परवानगी देऊन हे शक्य करतात. उदाहरणार्थ, आधी नमूद केलेले पूर्वानुमान डॅप (dapp) विश्वसनीय साखळीबाह्य स्रोताकडून (उदा., असोसिएटेड प्रेस) निवडणूक निकाल परत करण्यासाठी ओरॅकलला विनंती करू शकते.
वास्तविक जगातील परिणामांवर आधारित डेटा मिळवण्यासाठी ओरॅकलचा वापर केल्याने इतर नवीन उपयोग-प्रकरणे सक्षम होतात; उदाहरणार्थ, विकेंद्रित विमा उत्पादनाला प्रभावीपणे कार्य करण्यासाठी हवामान, आपत्ती इ. बद्दल अचूक माहिती आवश्यक असते.
स्मार्ट कॉन्ट्रॅक्ट्स स्वयंचलित करणे
स्मार्ट कॉन्ट्रॅक्ट्स स्वयंचलितपणे चालत नाहीत; त्याऐवजी, बाह्य मालकीचे खाते (EOA), किंवा दुसरे कॉन्ट्रॅक्ट खाते, कॉन्ट्रॅक्टचा कोड कार्यान्वित करण्यासाठी योग्य फंक्शन्स ट्रिगर करणे आवश्यक आहे. बहुतेक प्रकरणांमध्ये, कॉन्ट्रॅक्टची बहुतांश फंक्शन्स सार्वजनिक असतात आणि EOA आणि इतर कॉन्ट्रॅक्ट्सद्वारे लागू केली जाऊ शकतात.
परंतु कॉन्ट्रॅक्टमध्ये अशी खाजगी फंक्शन्स देखील असतात जी इतरांसाठी प्रवेशयोग्य नसतात; परंतु ती डॅपच्या (dapp) एकूण कार्यक्षमतेसाठी महत्त्वपूर्ण असतात. उदाहरणांमध्ये mintERC721Token() फंक्शन समाविष्ट आहे जे वापरकर्त्यांसाठी वेळोवेळी नवीन NFT मिंट करते, पूर्वानुमान बाजारामध्ये पेआउट देण्याचे फंक्शन, किंवा DEX मध्ये स्टेक केलेले टोकन्स अनलॉक करण्याचे फंक्शन.
ॲप्लिकेशन सुरळीत चालू ठेवण्यासाठी डेव्हलपर्सना ठराविक अंतराने अशी फंक्शन्स ट्रिगर करावी लागतील. तथापि, यामुळे डेव्हलपर्ससाठी कंटाळवाण्या कामांवर अधिक तास वाया जाऊ शकतात, म्हणूनच स्मार्ट कॉन्ट्रॅक्ट्सची अंमलबजावणी स्वयंचलित करणे आकर्षक आहे.
काही विकेंद्रित ओरॅकल नेटवर्क ऑटोमेशन सेवा देतात, जे साखळीबाह्य ओरॅकल नोड्सना वापरकर्त्याने परिभाषित केलेल्या पॅरामीटर्सनुसार स्मार्ट कॉन्ट्रॅक्ट फंक्शन्स ट्रिगर करण्याची परवानगी देतात. सामान्यतः, यासाठी ओरॅकल सेवेसह लक्ष्य कॉन्ट्रॅक्टची 'नोंदणी' करणे, ओरॅकल ऑपरेटरला पैसे देण्यासाठी निधी प्रदान करणे आणि कॉन्ट्रॅक्ट ट्रिगर करण्यासाठी अटी किंवा वेळा निर्दिष्ट करणे आवश्यक असते.
चेनलिंकचे कीपर नेटवर्क (नवीन टॅबमध्ये उघडते) स्मार्ट कॉन्ट्रॅक्ट्सना नियमित देखभाल कार्ये कमीत कमी विश्वास आणि विकेंद्रित पद्धतीने आउटसोर्स करण्याचे पर्याय प्रदान करते. तुमचे कॉन्ट्रॅक्ट कीपर-सुसंगत बनवण्याबद्दल आणि अपकीप (Upkeep) सेवा वापरण्याबद्दल माहितीसाठी अधिकृत कीपरचे दस्तऐवजीकरण (नवीन टॅबमध्ये उघडते) वाचा.
ब्लॉकचेन ओरॅकल कसे वापरावे
अनेक ओरॅकल ॲप्लिकेशन्स आहेत जे तुम्ही तुमच्या इथेरियम डॅपमध्ये (dapp) समाकलित करू शकता:
चेनलिंक (नवीन टॅबमध्ये उघडते) - चेनलिंक विकेंद्रित ओरॅकल नेटवर्क कोणत्याही ब्लॉकचेनवरील प्रगत स्मार्ट कॉन्ट्रॅक्ट्सना समर्थन देण्यासाठी छेडछाड-प्रूफ इनपुट, आउटपुट आणि संगणन प्रदान करतात.
रेडस्टोन ओरॅकल (नवीन टॅबमध्ये उघडते) - रेडस्टोन हे एक विकेंद्रित मॉड्यूलर ओरॅकल आहे जे गॅस-ऑप्टिमाइझ्ड डेटा फीड प्रदान करते. हे तरल स्टेकिंग टोकन (LST), लिक्विड रिस्टेकिंग टोकन्स (LRTs), आणि बिटकॉइन स्टेकिंग डेरिव्हेटिव्ह्ज यांसारख्या उदयोन्मुख मालमत्तेसाठी किंमत फीड ऑफर करण्यात माहिर आहे.
क्रॉनिकल (नवीन टॅबमध्ये उघडते) - क्रॉनिकल खऱ्या अर्थाने स्केलेबल, किफायतशीर, विकेंद्रित आणि पडताळणी करण्यायोग्य ओरॅकल विकसित करून ऑनचेन डेटा हस्तांतरित करण्याच्या सध्याच्या मर्यादांवर मात करते.
Witnet (नवीन टॅबमध्ये उघडते) - Witnet हे एक परवानगीमुक्त, विकेंद्रित आणि सेन्सॉरशिप-प्रतिरोधक ओरॅकल आहे जे स्मार्ट कॉन्ट्रॅक्ट्सना मजबूत क्रिप्टो-आर्थिक हमीसह वास्तविक जगातील घटनांवर प्रतिक्रिया देण्यास मदत करते.
UMA ओरॅकल (नवीन टॅबमध्ये उघडते) - UMA चे ऑप्टिमिस्टिक ओरॅकल स्मार्ट कॉन्ट्रॅक्ट्सना विमा, आर्थिक डेरिव्हेटिव्ह्ज आणि पूर्वानुमान बाजारांसह विविध ॲप्लिकेशन्ससाठी कोणत्याही प्रकारचा डेटा त्वरित प्राप्त करण्यास अनुमती देते.
टेलर (नवीन टॅबमध्ये उघडते) - टेलर हा तुमच्या स्मार्ट कॉन्ट्रॅक्टसाठी एक पारदर्शक आणि परवानगीमुक्त ओरॅकल प्रोटोकॉल आहे ज्यामुळे त्याला जेव्हा गरज असेल तेव्हा कोणताही डेटा सहज मिळू शकतो.
बँड प्रोटोकॉल (नवीन टॅबमध्ये उघडते) - बँड प्रोटोकॉल हे एक क्रॉस-चेन डेटा ओरॅकल प्लॅटफॉर्म आहे जे वास्तविक जगातील डेटा आणि API एकत्रित करते आणि स्मार्ट कॉन्ट्रॅक्ट्सशी जोडते.
पायथ नेटवर्क (नवीन टॅबमध्ये उघडते) - पायथ नेटवर्क हे एक फर्स्ट-पार्टी आर्थिक ओरॅकल नेटवर्क आहे जे छेडछाड-प्रतिरोधक, विकेंद्रित आणि स्वयंपूर्ण वातावरणात सतत वास्तविक जगातील डेटा ऑनचेन प्रकाशित करण्यासाठी डिझाइन केलेले आहे.
API3 DAO (नवीन टॅबमध्ये उघडते) - API3 DAO फर्स्ट-पार्टी ओरॅकल सोल्यूशन्स वितरीत करत आहे जे स्मार्ट कॉन्ट्रॅक्ट्ससाठी विकेंद्रित सोल्यूशनमध्ये अधिक स्रोत पारदर्शकता, सुरक्षितता आणि स्केलेबिलिटी प्रदान करतात
सुप्रा (नवीन टॅबमध्ये उघडते) - क्रॉस-चेन सोल्यूशन्सचे अनुलंब एकत्रित टूलकिट जे सर्व ब्लॉकचेन, सार्वजनिक (L1s आणि L2s) किंवा खाजगी (एंटरप्रायझेस) एकमेकांशी जोडते, विकेंद्रित ओरॅकल किंमत फीड प्रदान करते जे ऑनचेन आणि साखळीबाह्य उपयोग-प्रकरणांसाठी वापरले जाऊ शकते.
गॅस नेटवर्क (नवीन टॅबमध्ये उघडते) - ब्लॉकचेनवर रिअल-टाइम गॅसची किंमत डेटा प्रदान करणारे वितरित ओरॅकल प्लॅटफॉर्म. आघाडीच्या गॅसची किंमत डेटा प्रदात्यांकडून डेटा ऑनचेन आणून, गॅस नेटवर्क आंतरकार्यक्षमता वाढवण्यास मदत करत आहे. गॅस नेटवर्क इथरियम मेननेट आणि अनेक आघाडीच्या L2s सह 35 पेक्षा जास्त साखळ्यांसाठी डेटाला समर्थन देते.
DIA (नवीन टॅबमध्ये उघडते) - सर्व प्रमुख मालमत्ता वर्गांमधील 20,000+ मालमत्तेसाठी पडताळणी करण्यायोग्य डेटा फीड वितरीत करणारे क्रॉस-चेन ओरॅकल नेटवर्क. DIA थेट 100+ प्राथमिक बाजारांमधून कच्चा व्यापार डेटा मिळवते आणि त्याची ऑनचेन गणना करते, कोणत्याही उपयोग प्रकरणासाठी सानुकूल कॉन्फिगरेशनसह संपूर्ण डेटा पारदर्शकता आणि पडताळणी सुनिश्चित करते.
स्टॉर्क (नवीन टॅबमध्ये उघडते) - स्टॉर्क अति-कमी विलंबाने किंमत डेटा वितरीत करते, परपेचुअल्स मार्केट, कर्ज देणारे प्रोटोकॉल आणि DeFi इकोसिस्टमसह विस्तृत उपयोग प्रकरणांना समर्थन देते, सूचीवर नवीन मालमत्तेला वेगाने समर्थन दिले जाते.
पुढील वाचन
लेख
- ब्लॉकचेन ओरॅकल म्हणजे काय? (नवीन टॅबमध्ये उघडते) — चेनलिंक
- ब्लॉकचेन ओरॅकल म्हणजे काय? (नवीन टॅबमध्ये उघडते) — पॅट्रिक कॉलिन्स
- विकेंद्रित ओरॅकल: एक सर्वसमावेशक विहंगावलोकन (नवीन टॅबमध्ये उघडते) — ज्युलियन थेवेनार्ड
- इथेरियमवर ब्लॉकचेन ओरॅकल लागू करणे (नवीन टॅबमध्ये उघडते) – पेड्रो कोस्टा
- स्मार्ट कॉन्ट्रॅक्ट्स API कॉल्स का करू शकत नाहीत? (नवीन टॅबमध्ये उघडते) — स्टॅकएक्सचेंज
- तर तुम्हाला किंमत ओरॅकल वापरायचे आहे (नवीन टॅबमध्ये उघडते) — samczsun
व्हिडिओ
- ओरॅकल आणि ब्लॉकचेन उपयुक्ततेचा विस्तार (नवीन टॅबमध्ये उघडते) — रिअल व्हिजन फायनान्स
ट्यूटोरियल्स
- Solidity मध्ये इथेरियमची सध्याची किंमत कशी मिळवायची (नवीन टॅबमध्ये उघडते) — चेनलिंक
- ओरॅकल डेटा वापरणे (नवीन टॅबमध्ये उघडते) — क्रॉनिकल
- ओरॅकल चॅलेंज (नवीन टॅबमध्ये उघडते) - स्पीडरन इथेरियम
उदाहरण प्रोजेक्ट्स