Oracle
Οι oracles είναι εφαρμογές που παράγουν ροές δεδομένων εκτός αλυσίδας που καθιστούν διαθέσιμες τις εξωτερικές πηγές δεδομένων στο blockchain για έξυπνα συμβόλαια. Αυτό είναι απαραίτητο επειδή τα έξυπνα συμβόλαια που βασίζονται στο Ethereum δεν μπορούν, από προεπιλογή, να έχουν πρόσβαση σε πληροφορίες που αποθηκεύονται εκτός του δικτύου κρυπτοαλυσίδας.
Η παροχή δυνατότητας στα έξυπνα συμβόλαια να εκτελούνται χρησιμοποιώντας δεδομένα εκτός αλυσίδας, επεκτείνει τη χρησιμότητα και την αξία των αποκεντρωμένων εφαρμογών. Για παράδειγμα, οι αγορές προβλέψεων στην αλυσίδα βασίζονται σε χρησμούς για την παροχή πληροφοριών σχετικά με αποτελέσματα που χρησιμοποιούν για την επικύρωση των προβλέψεων των χρηστών. Ας υποθέσουμε ότι η Alice στοιχηματίζει 20 ETH για το ποιος θα γίνει ο επόμενος Πρόεδρος των ΗΠΑ. Πρόεδρος. Σε αυτήν την περίπτωση, η εφαρμογή αγοράς προβλέψεων χρειάζεται έναν χρησμό για να επιβεβαιώσει τα αποτελέσματα των εκλογών και να καθορίσει εάν η Alice δικαιούται πληρωμή.
Προαπαιτούμενα
Αυτή η σελίδα υποθέτει ότι ο αναγνώστης είναι εξοικειωμένος με τα βασικά του Ethereum, συμπεριλαμβανομένων των κόμβων, των μηχανισμών συναίνεσης και του EVM. Πρέπει επίσης να έχετε καλή κατανόηση των έξυπνων συμβολαίων και της ανατομίας των έξυπνων συμβολαίων, ειδικά των .
Τι είναι ένα oracle blockchain;
Τα oracles είναι εφαρμογές που προμηθεύουν, επαληθεύουν και μεταδίδουν εξωτερικές πληροφορίες (δηλαδή πληροφορίες που αποθηκεύονται εκτός αλυσίδας) σε έξυπνα συμβόλαια που εκτελούνται στην κρυπτοαλυσίδα. Εκτός από την "άντληση" δεδομένων εκτός αλυσίδας και τη μετάδοσή τους στο Ethereum, τα oracles μπορούν επίσης να "σπρώχνουν" πληροφορίες από την κρυπτοαλυσίδα σε εξωτερικά συστήματα, π.χ. ξεκλειδώνοντας μια έξυπνη κλειδαριά όταν ο χρήστης στέλνει μια αμοιβή μέσω μιας συναλλαγής Ethereum.
Χωρίς oracle, ένα έξυπνο συμβόλαιο θα περιοριζόταν εξ ολοκλήρου σε δεδομένα εντός αλυσίδας.
Τα oracles διαφέρουν με βάση την πηγή δεδομένων (μία ή πολλές πηγές), τα μοντέλα εμπιστοσύνης (κεντρικά ή αποκεντρωμένα) και την αρχιτεκτονική συστήματος (άμεση ανάγνωση, δημοσίευση-εγγραφή και αίτηση-απάντηση). Μπορούμε επίσης να διακρίνουμε μεταξύ των oracles με βάση το εάν ανακτούν εξωτερικά δεδομένα για χρήση από συμβόλαια εντός αλυσίδας (oracle εισόδου), στέλνουν πληροφορίες από την κρυπτοαλυσίδα στις εφαρμογές εκτός αλυσίδας (oracle εξόδου) ή εκτελούν υπολογιστικά καθήκοντα εκτός αλυσίδας (υπολογιστικά oracles).
Γιατί τα έξυπνα συμβόλαια χρειάζονται oracles;
Πολλοί προγραμματιστές βλέπουν τα έξυπνα συμβόλαια ως κώδικα που εκτελείται σε συγκεκριμένες διευθύνσεις στην κρυπτοαλυσίδα. Ωστόσο, μια πιο γενική άποψη των έξυπνων συμβολαίων είναι ότι πρόκειται για αυτοεκτελούμενα λογισμικά προγράμματα ικανά να επιβάλλουν συμφωνίες μεταξύ των μερών όταν πληρούνται συγκεκριμένες προϋποθέσεις, εξ ου και ο όρος "έξυπνα συμβόλαια".
Αλλά η χρήση έξυπνων συμβολαίων για την επιβολή συμφωνιών μεταξύ ανθρώπων δεν είναι απλή, δεδομένου ότι το Ethereum είναι καθοριστικό. Ένα καθοριστικό σύστημα είναι ένα σύστημα που παράγει πάντα τα ίδια αποτελέσματα δεδομένης μιας αρχικής κατάστασης και μιας συγκεκριμένης εισόδου, που σημαίνει ότι δεν υπάρχει τυχαιότητα ή διακύμανση στη διαδικασία υπολογισμού των εξόδων από τις εισόδους.
Για να επιτευχθεί καθοριστική εκτέλεση, οι κρυπτοαλυσίδες περιορίζουν τους κόμβους να καταλήγουν σε συναίνεση σε απλές δυαδικές (αληθές/ψευδές) ερωτήσεις χρησιμοποιώντας μόνο δεδομένα που αποθηκεύονται στην ίδια την κρυπτοαλυσίδα. Παραδείγματα τέτοιων ερωτήσεων περιλαμβάνουν:
- «Υπέγραψε ο κάτοχος του λογαριασμού (ταυτοποιημένος από ένα δημόσιο κλειδί) αυτή τη συναλλαγή με το ζεύγος ιδιωτικού κλειδιού;»
- «Έχει αυτός ο λογαριασμός αρκετά κεφάλαια για να καλύψει τη συναλλαγή;»
- «Είναι αυτή η συναλλαγή έγκυρη στο πλαίσιο αυτού του έξυπνου συμβολαίου;» κ.λπ.
Εάν οι κρυπτοαλυσίδες λάμβαναν πληροφορίες από εξωτερικές πηγές (δηλαδή από τον πραγματικό κόσμο), θα ήταν αδύνατο να επιτευχθεί ο καθορισμός, εμποδίζοντας τους κόμβους να συμφωνήσουν σχετικά με τη νομιμότητα των αλλαγών στην κατάσταση της κρυπτοαλυσίδας. Λάβετε για παράδειγμα ένα έξυπνο συμβόλαιο που εκτελεί μια συναλλαγή με βάση την τρέχουσα ισοτιμία ETH-USD που λαμβάνεται από ένα παραδοσιακό API τιμών. Αυτό το νούμερο είναι πιθανό να αλλάζει συχνά (μην αναφέρουμε ότι το API θα μπορούσε να καταργηθεί ή να παραβιαστεί), που σημαίνει ότι οι κόμβοι που εκτελούν τον ίδιο κώδικα συμβολαίου θα καταλήξουν σε διαφορετικά αποτελέσματα.
Για μια δημόσια κρυπτοαλυσίδα όπως το Ethereum, με χιλιάδες κόμβους σε όλο τον κόσμο που επεξεργάζονται συναλλαγές, ο καθορισμός είναι κρίσιμος. Χωρίς κεντρική αρχή που να χρησιμεύει ως πηγή αλήθειας, οι κόμβοι χρειάζονται μηχανισμούς για να καταλήξουν στην ίδια κατάσταση μετά την εφαρμογή των ίδιων συναλλαγών. Μια περίπτωση όπου ο κόμβος Α εκτελεί τον κώδικα ενός έξυπνου συμβολαίου και παίρνει "3" ως αποτέλεσμα, ενώ ο κόμβος Β παίρνει "7" μετά την εκτέλεση της ίδιας συναλλαγής θα προκαλούσε τη διάλυση της συναίνεσης και θα εξάλειψε την αξία του Ethereum ως αποκεντρωμένη πλατφόρμα υπολογισμού.
Αυτό το σενάριο επισημαίνει επίσης το πρόβλημα με το σχεδιασμό κρυπτοαλυσίδων για την άντληση πληροφοριών από εξωτερικές πηγές. Ωστόσο, τα oracle επιλύουν αυτό το πρόβλημα λαμβάνοντας πληροφορίες από πηγές εκτός αλυσίδας και αποθηκεύοντάς τις στην κρυπτοαλυσίδα για κατανάλωση από έξυπνα συμβόλαια. Δεδομένου ότι οι πληροφορίες που αποθηκεύονται εντός αλυσίδας είναι αναλλοίωτες και δημόσια διαθέσιμες, οι κόμβοι Ethereum μπορούν να χρησιμοποιήσουν με ασφάλεια τα δεδομένα που εισάγονται εκτός αλυσίδας από το oracle για να υπολογίσουν αλλαγές κατάστασης χωρίς να διακόψουν τη συναίνεση.
Για να γίνει αυτό, ένα oracle αποτελείται συνήθως από ένα έξυπνο συμβόλαιο που εκτελείται στην αλυσίδα και ορισμένα στοιχεία εκτός αλυσίδας. Το συμβόλαιο εντός αλυσίδας λαμβάνει αιτήματα για δεδομένα από άλλα έξυπνα συμβόλαια, τα οποία μεταβιβάζει στο στοιχείο εκτός αλυσίδας (που ονομάζεται κόμβος oracle). Αυτός ο κόμβος oracle μπορεί να ερωτήσει πηγές δεδομένων — χρησιμοποιώντας διεπαφές προγραμματισμού εφαρμογών (API), για παράδειγμα και να στείλει συναλλαγές για να αποθηκεύσει τα ζητηθέντα δεδομένα στην αποθήκευση του έξυπνου συμβολαίου.
Ουσιαστικά, ένα oracle κρυπτοαλυσίδας γεφυρώνει το κενό πληροφοριών μεταξύ της κρυπτοαλυσίδας και του εξωτερικού περιβάλλοντος, δημιουργώντας «υβριδικά έξυπνα συμβόλαια». Ένα υβριδικό έξυπνο συμβόλαιο είναι ένα που λειτουργεί με βάση έναν συνδυασμό κώδικα συμβολαίου στην αλυσίδα και υποδομής εκτός αλυσίδας. Οι αποκεντρωμένες αγορές πρόβλεψης είναι ένα εξαιρετικό παράδειγμα υβριδικών έξυπνων συμβολαίων. Άλλα παραδείγματα μπορεί να περιλαμβάνουν έξυπνα συμβόλαια ασφάλισης καλλιεργειών που αποδίδουν όταν ένα σύνολο oracles καθορίσει ότι έχουν συμβεί ορισμένα καιρικά φαινόμενα.
Τι είναι το πρόβλημα του oracle;
Τα oracles επιλύουν ένα σημαντικό πρόβλημα, αλλά εισάγουν επίσης κάποιες επιπλοκές, π.χ.:
-
Πώς μπορούμε να επαληθεύσουμε ότι οι εγχυόμενες πληροφορίες εξαχθήκαν από τη σωστή πηγή ή δεν έχουν παραποιηθεί;
-
Πώς μπορούμε να διασφαλίσουμε ότι αυτά τα δεδομένα είναι πάντα διαθέσιμα και ενημερώνονται τακτικά;
Το λεγόμενο «πρόβλημα του oracle» δείχνει τα ζητήματα που προκύπτουν από τη χρήση oracles κρυπτοαλυσίδας για την αποστολή εισόδων σε έξυπνα συμβόλαια. Τα δεδομένα από ένα oracle πρέπει να είναι σωστά για να εκτελεστεί σωστά ένα έξυπνο συμβόλαιο. Επιπλέον, το να πρέπει να «εμπιστεύεσαι» τους χειριστές oracle για την παροχή ακριβών πληροφοριών υπονομεύει την «αξιόπιστη» πτυχή των έξυπνων συμβολαίων.
Διαφορετικά oracles προσφέρουν διαφορετικές λύσεις στο πρόβλημα oracle, το οποίο θα εξερευνήσουμε αργότερα. Τα oracles αξιολογούνται συνήθως ως προς το πόσο καλά μπορούν να χειριστούν τις ακόλουθες προκλήσεις:
-
Ορθότητα: Ένα oracle δεν πρέπει να προκαλεί στα έξυπνα συμβόλαια να ενεργοποιήσουν αλλαγές κατάστασης με βάση μη έγκυρα δεδομένα εκτός αλυσίδας. Ένα oracle πρέπει να εγγυάται την αυθεντικότητα και την ακεραιότητα των δεδομένων. Η αυθεντικότητα σημαίνει ότι τα δεδομένα προέρχονται από τη σωστή πηγή, ενώ η ακεραιότητα σημαίνει ότι τα δεδομένα παρέμειναν ανέπαφα (δηλαδή δεν άλλαξαν) πριν σταλούν στην αλυσίδα.
-
Διαθεσιμότητα: Ένα oracle δεν πρέπει να καθυστερεί ή να εμποδίζει τα έξυπνα συμβόλαια να εκτελούν ενέργειες και να ενεργοποιούν αλλαγές κατάστασης. Αυτό σημαίνει ότι τα δεδομένα από ένα oracle πρέπει να είναι διαθέσιμα κατόπιν αιτήματος χωρίς διακοπή.
-
Συμβατότητα κινήτρων: Ένα oracle θα πρέπει να δίνει κίνητρα στους παρόχους δεδομένων εκτός αλυσίδας να υποβάλλουν σωστές πληροφορίες σε έξυπνα συμβόλαια. Η συμβατότητα κινήτρων περιλαμβάνει την αποδιδόμενη και την ευθύνη. Η αποδιδόμενη επιτρέπει τη σύνδεση ενός κομματιού εξωτερικών πληροφοριών με τον πάροχό του, ενώ η ευθύνη συνδέει τους παρόχους δεδομένων με τις πληροφορίες που δίνουν, ώστε να μπορούν να ανταμειφθούν ή να τιμωρηθούν με βάση την ποιότητα των παρεχόμενων πληροφοριών.
Πώς λειτουργεί μια υπηρεσία oracle κρυπτοαλυσίδας;
Χρήστες
Οι χρήστες είναι οντότητες (π.χ., έξυπνα συμβόλαια) που χρειάζονται πληροφορίες εξωτερικές από την κρυπτοαλυσίδα για να ολοκληρώσουν συγκεκριμένες ενέργειες. Η βασική ροή εργασίας μιας υπηρεσίας oracle ξεκινά με τον χρήστη που στέλνει ένα αίτημα δεδομένων στο συμβόλαιο oracle. Τα αιτήματα δεδομένων θα απαντούν συνήθως σε ορισμένες ή όλες τις ακόλουθες ερωτήσεις:
-
Ποιες πηγές μπορούν να συμβουλευτούν οι κόμβοι εκτός αλυσίδας για τις ζητούμενες πληροφορίες;
-
Με ποιο τρόπο οι δημοσιογράφοι επεξεργάζονται τις πληροφορίες από τις πηγές δεδομένων και εξάγουν χρήσιμα σημεία δεδομένων;
-
Πόσοι κόμβοι oracle μπορούν να συμμετάσχουν στην ανάκτηση των δεδομένων;
-
Πώς θα πρέπει να διαχειρίζονται οι αποκλίσεις στις αναφορές oracle;
-
Ποια μέθοδος θα πρέπει να εφαρμοστεί για το φιλτράρισμα των υποβολών και τις συναθροίσεις αναφορών σε μια ενιαία τιμή;
Συμβόλαιο Oracle
Το συμβόλαιο oracle είναι το στοιχείο στην αλυσίδα για την υπηρεσία oracle. Αναμένει αιτήματα δεδομένων από άλλα συμβόλαια, μεταφέρει ερωτήματα δεδομένων σε κόμβους oracle και μεταδίδει τα επιστρεφόμενα δεδομένα σε συμβόλαια πελατών. Αυτό το συμβόλαιο μπορεί επίσης να εκτελέσει ορισμένους υπολογισμούς στα επιστρεφόμενα σημεία δεδομένων για να παράγει μια συγκεντρωτική τιμή που θα σταλεί στο συμβόλαιο που ζητά.
Το συμβόλαιο oracle εκθέτει ορισμένες λειτουργίες που καλούν τα συμβόλαια πελατών όταν κάνουν ένα αίτημα δεδομένων. Κατά την παραλαβή μιας νέας ερώτησης, το έξυπνο συμβόλαιο θα εκπέμπει ένα συμβάν καταγραφής με λεπτομέρειες του αιτήματος δεδομένων. Αυτό ειδοποιεί τους κόμβους εκτός αλυσίδας που είναι εγγεγραμμένοι στο αρχείο καταγραφής (συνήθως χρησιμοποιώντας κάτι σαν την εντολή JSON-RPC eth_subscribe
), οι οποίοι προχωρούν στην ανάκτηση δεδομένων που ορίζονται στο συμβάν καταγραφής.
Παρακάτω είναι ένα παράδειγμα συμβολαίου oracle από τον Pedro Costa. Αυτή είναι μια απλή υπηρεσία oracle που μπορεί να επικοινωνήσει με API εκτός αλυσίδας κατόπιν αιτήματος άλλων έξυπνων συμβολαίων και να αποθηκεύσει τις ζητούμενες πληροφορίες στην κρυπτοαλυσίδα:
1pragma solidity >=0.4.21 <0.6.0;23contract Oracle {4 Request[] requests; //list of requests made to the contract5 uint currentId = 0; //increasing request id6 uint minQuorum = 2; //minimum number of responses to receive before declaring final result7 uint totalOracleCount = 3; // Hardcoded oracle count89 // defines a general api request10 struct Request {11 uint id; //request id12 string urlToQuery; //API url13 string attributeToFetch; //json attribute (key) to retrieve in the response14 string agreedValue; //value from key15 mapping(uint => string) answers; //answers provided by the oracles16 mapping(address => uint) quorum; //oracles which will query the answer (1=oracle hasn't voted, 2=oracle has voted)17 }1819 //event that triggers oracle outside of the blockchain20 event NewRequest (21 uint id,22 string urlToQuery,23 string attributeToFetch24 );2526 //triggered when there's a consensus on the final result27 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 // Hardcoded oracles address44 r.quorum[address(0x6c2339b46F41a06f09CA0051ddAD54D1e582bA77)] = 1;45 r.quorum[address(0xb5346CF224c02186606e5f89EACC21eC25398077)] = 1;46 r.quorum[address(0xa2997F1CA363D11a0a35bB1Ac0Ff7849bc13e914)] = 1;4748 // launch an event to be detected by oracle outside of blockchain49 emit NewRequest (50 currentId,51 _urlToQuery,52 _attributeToFetch53 );5455 // increase request id56 currentId++;57 }5859 //called by the oracle to record its answer60 function updateRequest (61 uint _id,62 string memory _valueRetrieved63 ) public {6465 Request storage currRequest = requests[_id];6667 //check if oracle is in the list of trusted oracles68 //and if the oracle hasn't voted yet69 if(currRequest.quorum[address(msg.sender)] == 1){7071 //marking that this address has voted72 currRequest.quorum[msg.sender] = 2;7374 //iterate through "array" of answers until a position if free and save the retrieved value75 uint tmpI = 0;76 bool found = false;77 while(!found) {78 //find first empty slot79 if(bytes(currRequest.answers[tmpI]).length == 0){80 found = true;81 currRequest.answers[tmpI] = _valueRetrieved;82 }83 tmpI++;84 }8586 uint currentQuorum = 0;8788 //iterate through oracle list and check if enough oracles(minimum quorum)89 //have voted the same answer as the current one90 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}Εμφάνιση όλων
Κόμβοι Oracle
Ο κόμβος oracle είναι το στοιχείο εκτός αλυσίδας της υπηρεσίας oracle. Εξάγει πληροφορίες από εξωτερικές πηγές, όπως API που φιλοξενούνται σε διακομιστές τρίτων, και τις τοποθετεί για χρήση από έξυπνα συμβόλαια στην αλυσίδα. Οι κόμβοι oracle παρακολουθούν γεγονότα από το συμβόλαιο oracle στην αλυσίδα και προχωρούν στην ολοκλήρωση της εργασίας που περιγράφεται στο αρχείο καταγραφής.
Μια κοινή εργασία για τους κόμβους oracle είναι η αποστολή μιας αίτησης HTTP GET σε μια υπηρεσία API, η ανάλυση της απόκρισης για εξαγωγή σχετικών δεδομένων, το αποτέλεσμα αναγνώσιμο από κρυπτοαλυσίδα και η αποστολή στην αλυσίδα συμπεριλαμβάνοντας τη σε μια συναλλαγή στο συμβόλαιο oracle. Ένας κόμβος oracle μπορεί επίσης να απαιτείται να πιστοποιήσει τη γνησιότητα και την ακεραιότητα των υποβαλλόμενων πληροφοριών χρησιμοποιώντας "αποδείξεις αυθεντικότητας", τις οποίες θα εξετάσουμε αργότερα.
Οι υπολογισμοί oracles βασίζονται επίσης σε κόμβους εκτός αλυσίδας για την εκτέλεση υπολογιστικών εργασιών που θα ήταν ανέφικτο να εκτελεστούν στην αλυσίδα, δεδομένων των εξόδων gas και των περιορισμών μεγέθους μπλοκ. Για παράδειγμα, ο κόμβος oracle μπορεί να ανατεθεί να δημιουργήσει έναν επαληθεύσιμο τυχαίο αριθμό (π.χ. για παιχνίδια βασισμένα σε κρυπτοαλυσίδα).
Πρότυπα σχεδιασμού oracle
Τα oracles έρχονται σε διαφορετικούς τύπους, συμπεριλαμβανομένων των άμεσης ανάγνωσης, δημοσίευσης-εγγραφής και αιτήματος-απόκρισης, με τα δύο τελευταία να είναι τα πιο δημοφιλή μεταξύ των έξυπνων συμβολαίων Ethereum. Εδώ περιγράφουμε εν συντομία τα μοντέλα δημοσίευσης - εγγραφής και αιτήματος - απόκρισης.
Oracles δημοσίευσης-εγγραφής
Αυτός ο τύπος oracle εκθέτει μια "ροή δεδομένων" την οποία άλλα συμβόλαια μπορούν να διαβάζουν τακτικά για πληροφορίες. Τα δεδομένα σε αυτήν την περίπτωση αναμένεται να αλλάζουν συχνά, επομένως τα συμβόλαια πελατών πρέπει να παρακολουθούν για ενημερώσεις των δεδομένων στον αποθηκευτικό χώρο του oracle. Ένα παράδειγμα είναι ένα oracle που παρέχει τις πιο πρόσφατες πληροφορίες τιμής ETH-USD στους χρήστες.
Οι προσφορές αίτησης-απάντησης
Μια ρύθμιση αίτησης - απάντησης επιτρέπει στο έξυπνο συμβόλαιο πελάτη να ζητήσει αυθαίρετα δεδομένα εκτός από αυτά που παρέχονται από μια δημοσίευση - εγγραφή. Οι oracles αίτησης - απάντησης είναι ιδανικές όταν το σύνολο δεδομένων είναι πολύ μεγάλο για να αποθηκευτεί στον αποθηκευτικό χώρο ενός έξυπνου συμβολαίου και/ή οι χρήστες θα χρειάζονται μόνο ένα μικρό μέρος των δεδομένων ανά πάσα στιγμή.
Αν και είναι πιο περίπλοκες από τα μοντέλα δημοσίευσης - εγγραφής, οι oracles αίτησης - απάντησης είναι ουσιαστικά αυτό που περιγράψαμε στην προηγούμενη ενότητα. Μια oracle θα έχει ένα στοιχείο στην αλυσίδα που λαμβάνει ένα αίτημα δεδομένων και το μεταβιβάζει σε έναν κόμβο για επεξεργασία εκτός αλυσίδας.
Οι χρήστες που ξεκινούν ερωτήματα δεδομένων πρέπει να καλύψουν το κόστος ανάκτησης πληροφοριών από την πηγή στην αλυσίδα. Το έξυπνο συμβόλαιο πελάτη πρέπει επίσης να παρέχει κεφάλαια για την κάλυψη των εξόδων αερίου που προκαλούνται από το έξυπνο συμβόλαιο προφορικού κατά την επιστροφή της απάντησης μέσω της συνάρτησης ανάκλησης που καθορίζεται στο αίτημα.
Κεντρικά έναντι αποκεντρωμένα oracles
Κεντρικοί oracles
Μια κεντρική oracle ελέγχεται από μια ενιαία οντότητα που είναι υπεύθυνη για τη συγκέντρωση πληροφοριών εκτός αλυσίδας και την ενημέρωση των δεδομένων του έξυπνου συμβολαίου oracle κατόπιν αιτήματος. Οι κεντρικοί oracles είναι αποτελεσματικοί καθώς βασίζονται σε μια ενιαία πηγή αλήθειας. Μπορεί να λειτουργούν καλύτερα σε περιπτώσεις όπου τα ιδιόκτητα σύνολα δεδομένων δημοσιεύονται απευθείας από τον ιδιοκτήτη με μια ευρέως αποδεκτή υπογραφή. Ωστόσο, υπάρχουν επίσης μειονεκτήματα:
Χαμηλές εγγυήσεις ορθότητας
Με κεντρικές oracle, δεν υπάρχει τρόπος να επιβεβαιώσετε εάν οι παρεχόμενες πληροφορίες είναι σωστές ή όχι. Ακόμη και οι "αξιόπιστοι" πάροχοι μπορούν να γίνουν απατεώνες ή να υποστούν hacking. Εάν η oracle διαφθαρεί, τα έξυπνα συμβόλαια θα εκτελεστούν σύμφωνα με λάθος δεδομένα.
Κακή διαθεσιμότητα
Οι oracle με κεντρική διαχείριση δεν εγγυώνται ότι θα διαθέτουν πάντα δεδομένα εκτός αλυσίδας σε άλλα έξυπνα συμβόλαια. Εάν ο πάροχος αποφασίσει να απενεργοποιήσει την υπηρεσία ή ένας χάκερ υποκλέψει στοιχεία εκτός αλυσίδας, το έξυπνο συμβόλαιό σας διατρέχει κίνδυνο επίθεσης άρνησης υπηρεσίας (DoS).
Κακή συμβατότητα κινήτρων
Οι κεντρικοί oracle συχνά έχουν κακώς σχεδιασμένα ή ανύπαρκτα κίνητρα για τον πάροχο δεδομένων να στείλει ακριβείς/αλλαγμένες πληροφορίες. Η πληρωμή ενός oracle για ορθότητα δεν εγγυάται την ειλικρίνεια. Αυτό το πρόβλημα μεγαλώνει καθώς αυξάνεται το ποσό της αξίας που ελέγχεται από τα έξυπνα συμβόλαια.
Αποκεντρωμένα oracle
Τα αποκεντρωμένα oracle σχεδιάζονται για να ξεπεράσουν τους περιορισμούς των κεντρικών oracle εξαλείφοντας τα ενιαία σημεία αποτυχίας. Μια αποκεντρωμένη υπηρεσία oracle αποτελείται από πολλούς συμμετέχοντες σε ένα δίκτυο peer-to-peer που σχηματίζουν συναίνεση για δεδομένα εκτός αλυσίδας πριν τα στείλουν σε ένα έξυπνο συμβόλαιο.
Ένα αποκεντρωμένο oracle θα πρέπει (ιδανικά) να είναι χωρίς την ανάγκη άδειας, έμπιστο και απαλλαγμένο από τη διαχείριση από μια κεντρική υπηρεσία. Στην πραγματικότητα, η αποκέντρωση μεταξύ των oracle βρίσκεται στο ίδιο φάσμα. Υπάρχουν ημι-αποκεντρωμένα δίκτυα oracle όπου μπορεί να συμμετάσχει οποιοσδήποτε, αλλά με έναν "ιδιοκτήτη" που εγκρίνει και αφαιρεί κόμβους με βάση την απόδοση του στο παρελθόν. Υπάρχουν επίσης πλήρως αποκεντρωμένα δίκτυα oracle όπου συνήθως λειτουργούν ως ανεξάρτητες κρυπτοαλυσίδες και έχουν καθορισμένους μηχανισμούς συναίνεσης για τον συντονισμό των κόμβων και την τιμωρία κακής συμπεριφοράς.
Η χρήση αποκεντρωμένων oracle συνοδεύεται από τα ακόλουθα οφέλη:
Υψηλές εγγυήσεις ορθότητας
Τα αποκεντρωμένα oracle επιχειρούν να επιτύχουν ορθότητα των δεδομένων χρησιμοποιώντας διαφορετικές προσεγγίσεις. Αυτό περιλαμβάνει τη χρήση αποδείξεων που πιστοποιούν την αυθεντικότητα και την ακεραιότητα των παρεχόμενων πληροφοριών και την απαίτηση πολλών οντοτήτων να συμφωνήσουν συλλογικά σχετικά με τη γνησιότητα των δεδομένων εκτός αλυσίδας.
Αποδείξεις αυθεντικότητας
Οι αποδείξεις αυθεντικότητας είναι κρυπτογραφικοί μηχανισμοί που επιτρέπουν την ανεξάρτητη επαλήθευση πληροφοριών που ανακτώνται από εξωτερικές πηγές. Αυτές οι αποδείξεις μπορούν να επικυρώσουν την πηγή των πληροφοριών και να εντοπίσουν πιθανές αλλαγές στα δεδομένα μετά την ανάκτηση.
Παραδείγματα αποδείξεων αυθεντικότητας περιλαμβάνουν:
Αποδείξεις Transport Layer Security (TLS): Οι κόμβοι oracle συχνά ανακτούν δεδομένα από εξωτερικές πηγές χρησιμοποιώντας μια ασφαλή σύνδεση HTTP που βασίζεται στο πρωτόκολλο Transport Layer Security (TLS). Ορισμένοι αποκεντρωμένοι oracle χρησιμοποιούν αποδείξεις αυθεντικότητας για να επαληθεύσουν τις συνεδρίες TLS (δηλαδή, να επιβεβαιώσουν την ανταλλαγή πληροφοριών μεταξύ ενός κόμβου και ενός συγκεκριμένου διακομιστή) και να επιβεβαιώσουν ότι το περιεχόμενο της συνεδρίας δεν άλλαξε.
Βεβαιώσεις περιβάλλοντος αξιόπιστης εκτέλεσης (TEE): Ένα περιβάλλον αξιόπιστης εκτέλεσης (TEE) είναι ένα απομονωμένο υπολογιστικό περιβάλλον που είναι απομονωμένο από τις λειτουργικές διεργασίες του συστήματος υποδοχής του. Τα TEE διασφαλίζουν ότι οποιοσδήποτε κώδικας εφαρμογής ή δεδομένα που αποθηκεύονται/χρησιμοποιούνται στο περιβάλλον υπολογισμού διατηρούν την ακεραιότητα, την εμπιστευτικότητα και την αμεταβλητότητα. Οι χρήστες μπορούν επίσης να δημιουργήσουν μια βεβαίωση για να αποδείξουν ότι μια συνεδρία εφαρμογής εκτελείται μέσα στο περιβάλλον αξιόπιστης εκτέλεσης.
Ορισμένες κατηγορίες αποκεντρωμένων oracle απαιτούν από τους χειριστές κόμβων oracle να παρέχουν βεβαιώσεις TEE. Αυτό επιβεβαιώνει σε έναν χρήστη ότι ο χειριστής του κόμβου εκτελεί μια παρουσία πελάτη oracle σε ένα περιβάλλον αξιόπιστης εκτέλεσης. Τα TEE εμποδίζουν τις εξωτερικές διεργασίες να αλλάζουν ή να διαβάζουν τον κώδικα και τα δεδομένα μιας εφαρμογής, επομένως, αυτές οι βεβαιώσεις αποδεικνύουν ότι ο κόμβος oracle έχει διατηρήσει τις πληροφορίες ανέπαφες και εμπιστευτικές.
Επαλήθευση πληροφοριών με βάση τη συναίνεση
Οι κεντρικοί oracle βασίζονται σε μια ενιαία πηγή αλήθειας κατά την παροχή δεδομένων σε έξυπνα συμβόλαια, γεγονός που εισάγει τη δυνατότητα δημοσίευσης ανακριβών πληροφοριών. Οι αποκεντρωμένοι oracle επιλύουν αυτό το πρόβλημα βασίζοντας σε πολλούς κόμβους oracle για να λάβουν πληροφορίες εκτός αλυσίδας. Συγκρίνοντας δεδομένα από πολλές πηγές, οι αποκεντρωμένοι oracle μειώνουν τον κίνδυνο μετάδοσης μη έγκυρων πληροφοριών σε συμβόλαια εντός αλυσίδας.
Ωστόσο, οι αποκεντρωμένοι oracle πρέπει να αντιμετωπίσουν αποκλίσεις στις πληροφορίες που ανακτώνται από πολλές εξωτερικές πηγές. Για να ελαχιστοποιηθούν οι διαφορές στις πληροφορίες και να διασφαλιστεί ότι τα δεδομένα που μεταβιβάζονται στο συμβόλαιο oracle αντικατοπτρίζουν τη συλλογική γνώμη των κόμβων oracle, οι αποκεντρωμένοι oracle χρησιμοποιούν τους ακόλουθους μηχανισμούς:
Ψηφοφορία/δέσμευση για την ακρίβεια των δεδομένων
Μερικά αποκεντρωμένα δίκτυα oracle απαιτούν από τους συμμετέχοντες να ψηφίσουν ή να κάνουν staking για την ακρίβεια των απαντήσεων σε ερωτήματα δεδομένων (π.χ. "Ποιος κέρδισε τις εκλογές των ΗΠΑ το 2020;") χρησιμοποιώντας το εγγενές κρυπτονόμισμα του δικτύου. Ένα πρωτόκολλο συναθροίσεων στη συνέχεια συγκεντρώνει τις ψήφους και τα stakes και παίρνει την απάντηση που υποστηρίζεται από την πλειοψηφία ως έγκυρη.
Οι κόμβοι των οποίων οι απαντήσεις αποκλίνουν από την απάντηση της πλειοψηφίας τιμωρούνται με την κατανομή των tokens τους σε άλλους που παρέχουν πιο σωστές τιμές. Η υποχρέωση των κόμβων να παρέχουν μια εγγύηση πριν παρέχουν δεδομένα δημιουργεί κίνητρα για ειλικρινείς απαντήσεις καθώς υποτίθεται ότι είναι ρεαλιστικοί οικονομικοί παράγοντες που επιδιώκουν τη μεγιστοποίηση των αποδόσεων.
Το staking/ψηφοφορία προστατεύει επίσης τα αποκεντρωμένα oracles από όπου κακόβουλοι παράγοντες δημιουργούν πολλαπλές ταυτότητες για να χειραγωγήσουν το σύστημα συναίνεσης. Ωστόσο, η αποθήκευση κεφαλαίου δεν μπορεί να αποτρέψει το "freeloading" (οι κόμβοι oracle αντιγράφουν πληροφορίες από άλλους) και την "τεμπέλικη επικύρωση" (οι κόμβοι oracle ακολουθούν την πλειοψηφία χωρίς να επαληθεύουν μόνοι τους τις πληροφορίες).
Μηχανισμοί σημείου Schelling
Το σημείο Schelling είναι μια έννοια της θεωρίας παιγνίων που υποθέτει ότι πολλές οντότητες θα προεπιλέγουν πάντα μια κοινή λύση σε ένα πρόβλημα χωρίς καμία επικοινωνία. Οι μηχανισμοί σημείου Schelling χρησιμοποιούνται συχνά σε αποκεντρωμένα δίκτυα oracle για να επιτρέπουν στους κόμβους να επιτυγχάνουν συναίνεση στις απαντήσεις σε αιτήματα δεδομένων.
Μια πρώιμη ιδέα για αυτό ήταν το SchellingCoin, μια προτεινόμενη ροή δεδομένων όπου οι συμμετέχοντες υποβάλλουν απαντήσεις σε "κλιμακωτές" ερωτήσεις (ερωτήσεις των οποίων οι απαντήσεις περιγράφονται από μέγεθος, π.χ. "ποια είναι η τιμή του ETH;"), μαζί με μια κατάθεση. Οι χρήστες που παρέχουν τιμές μεταξύ του 25ου και 75ου εκατοστημόριου ανταμείβονται, ενώ εκείνοι των οποίων οι τιμές αποκλίνουν σε μεγάλο βαθμό από τη μέση τιμή τιμωρούνται.
Ενώ το SchellingCoin δεν υπάρχει σήμερα, ένας αριθμός αποκεντρωμένων oracles - ιδιαίτερα τα Maker Protocol’s Oracles - χρησιμοποιούν τον μηχανισμό σημείου schelling για να βελτιώσουν την ακρίβεια των δεδομένων oracle. Κάθε Oracle Maker αποτελείται από ένα εκτός αλυσίδας P2P δίκτυο κόμβων ("μεταφορείς" και "τροφές") που υποβάλλουν τιμές αγοράς για περιουσιακά στοιχεία ενεχύρων και ένα εντός αλυσίδας συμβόλαιο "Medianizer" που υπολογίζει τη μέση τιμή όλων των παρεχόμενων τιμών. Μόλις παρέλθει η καθορισμένη περίοδος καθυστέρησης, αυτή η μέση τιμή γίνεται η νέα τιμή αναφοράς για το σχετικό περιουσιακό στοιχείο.
Άλλα παραδείγματα oracle που χρησιμοποιούν μηχανισμούς σημείου Schelling περιλαμβάνουν το Chainlink OffChain Reporting και το Witnet. Σε αυτά τα δύο συστήματα, οι απαντήσεις από τους κόμβους oracle στο δίκτυο από χρήστη σε χρήστη συγκεντρώνονται σε μία ενιαία συνολική τιμή, όπως μια μέση τιμή ή διάμεσος. Οι κόμβοι επιβραβεύονται ή τιμωρούνται ανάλογα με τον βαθμό στον οποίο οι απαντήσεις τους ευθυγραμμίζονται ή αποκλίνουν από τη συνολική τιμή.
Οι μηχανισμοί σημείου Schelling είναι ελκυστικοί επειδή ελαχιστοποιούν το αποτύπωμα στην αλυσίδα (απαιτείται να σταλεί μόνο μία συναλλαγή) ενώ εγγυώνται την αποκέντρωση. Το τελευταίο είναι δυνατό επειδή οι κόμβοι πρέπει να υπογράψουν τη λίστα των υποβληθέντων απαντήσεων πριν αυτή τροφοδοτηθεί στον αλγόριθμο που παράγει τη μέση/διάμεση τιμή.
Διαθεσιμότητα
Οι αποκεντρωμένες υπηρεσίες oracle εξασφαλίζουν υψηλή διαθεσιμότητα δεδομένων εκτός αλυσίδας σε έξυπνα συμβόλαια. Αυτό επιτυγχάνεται μέσω της αποκέντρωσης τόσο της πηγής των πληροφοριών εκτός αλυσίδας όσο και των κόμβων που είναι υπεύθυνοι για τη μεταφορά των πληροφοριών στην αλυσίδα.
Αυτό εξασφαλίζει την αντοχή σε σφάλματα καθώς το έξυπνο συμβόλαιο oracle μπορεί να βασίζεται σε πολλούς κόμβους (οι οποίοι επίσης βασίζονται σε πολλές πηγές δεδομένων) για να εκτελέσει ερωτήματα από άλλα συμβόλαια. Η αποκέντρωση στο επίπεδο της πηγής και του χειριστή κόμβου είναι κρίσιμη - ένα δίκτυο κόμβων oracle που εξυπηρετεί πληροφορίες που ανακτώνται από την ίδια πηγή θα αντιμετωπίσει το ίδιο πρόβλημα με ένα κεντρικό oracle.
Είναι επίσης δυνατό για τα oracle με βάση συμμετοχή να μειώσουν τους χειριστές κόμβων που δεν ανταποκρίνονται γρήγορα σε αιτήματα δεδομένων. Αυτό ενθαρρύνει σημαντικά τους κόμβους oracle να επενδύσουν σε υποδομή ανθεκτική σε σφάλματα και να παρέχουν δεδομένα έγκαιρα.
Καλή συμβατότητα κινήτρων
Τα αποκεντρωμένα oracle εφαρμόζουν διάφορους σχεδιασμούς κινήτρων για την πρόληψη της Byzantine συμπεριφοράς μεταξύ των κόμβων oracle. Ειδικότερα, επιτυγχάνουν την αποδοσιμότητα και την λογοδοσία:
-
Οι αποκεντρωμένοι κόμβοι oracle απαιτείται συχνά να υπογράφουν τα δεδομένα που παρέχουν σε απάντηση σε αιτήματα δεδομένων. Αυτές οι πληροφορίες βοηθούν στην αξιολόγηση της ιστορικής απόδοσης των κόμβων oracle, έτσι ώστε οι χρήστες να μπορούν να φιλτράρουν τους μη αξιόπιστους κόμβους oracle κατά την υποβολή αιτημάτων δεδομένων. Ένα παράδειγμα είναι το Αλγοριθμικό Σύστημα Φήμης του Witnet.
-
Τα αποκεντρωμένα oracle - όπως εξηγήθηκε προηγουμένως - μπορεί να απαιτούν από τους κόμβους να δεσμεύσουν ένα κεφάλαιο για εξασφάλιση της αξιοπιστίας τους για την αλήθεια των δεδομένων που υποβάλλουν. Εάν ο ισχυρισμός ελεγχθεί, αυτό το δεσμευμένο κεφάλαιο μπορεί να επιστραφεί μαζί με ανταμοιβές για ειλικρινή εξυπηρέτηση. Αλλά μπορεί επίσης να περικοπεί σε περίπτωση που οι πληροφορίες είναι εσφαλμένες, γεγονός που παρέχει κάποιο μέτρο λογοδοσίας.
Εφαρμογές των oracle σε έξυπνα συμβόλαια
Οι ακόλουθες είναι κοινές περιπτώσεις χρήσης για oracle στο Ethereum:
Ανάκτηση οικονομικών δεδομένων
Οι αποκεντρωμένες χρηματοοικονομικές (DeFi) εφαρμογές επιτρέπουν τη δανειοδότηση από ομότιμο σε ομότιμο, τον δανεισμό και το εμπόριο περιουσιακών στοιχείων. Αυτό συχνά απαιτεί τη λήψη διαφορετικών οικονομικών πληροφοριών, συμπεριλαμβανομένων δεδομένων συναλλαγματικών ισοτιμιών (για τον υπολογισμό της αξίας fiat των κρυπτονομισμάτων ή τη σύγκριση τιμών token) και δεδομένων κεφαλαιαγορών (για τον υπολογισμό της αξίας των tokenized περιουσιακών στοιχείων, όπως ο χρυσός ή το δολάριο ΗΠΑ).
Ένα πρωτόκολλο δανεισμού DeFi, για παράδειγμα, πρέπει να ρωτήσει τις τρέχουσες τιμές αγοράς για τα περιουσιακά στοιχεία (π.χ., ETH) που κατατέθηκαν ως εξασφάλιση. Αυτό επιτρέπει στο έξυπνο συμβόλαιο να καθορίσει την αξία των περιουσιακών στοιχείων εξασφάλισης και να καθορίσει πόσα μπορεί να δανειστεί από το σύστημα.
Δημοφιλείς «τιμές oracle» (όπως συχνά αποκαλούνται) στο DeFi περιλαμβάνουν τα Chainlink Price Feeds, το Open Price Feed του Compound Protocol, τις Time-Weighted Average Prices (TWAPs) του Uniswap και τα Maker Oracles.
Οι κατασκευαστές θα πρέπει να κατανοήσουν τις προειδοποιήσεις που συνοδεύουν αυτά τα oracle τιμών πριν τα ενσωματώσουν στο έργο τους. Αυτό το άρθρο παρέχει μια λεπτομερή ανάλυση τι πρέπει να λάβετε υπόψη όταν σχεδιάζετε να χρησιμοποιήσετε οποιοδήποτε από τα αναφερόμενα oracle τιμών.
Παρακάτω είναι ένα παράδειγμα του πώς μπορείτε να ανακτήσετε την τελευταία τιμή ETH στο έξυπνο συμβόλαιό σας χρησιμοποιώντας την ενημέρωση τιμών του Chainlink:
1pragma solidity ^0.6.7;23import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";45contract PriceConsumerV3 {67 AggregatorV3Interface internal priceFeed;89 /**10 * Network: Kovan11 * Aggregator: ETH/USD12 * Address: 0x9326BFA02ADD2366b30bacB125260Af64103133113 */14 constructor() public {15 priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331);16 }1718 /**19 * Returns the latest price20 */21 function getLatestPrice() public view returns (int) {22 (23 uint80 roundID,24 int price,25 uint startedAt,26 uint timeStamp,27 uint80 answeredInRound28 ) = priceFeed.latestRoundData();29 return price;30 }31}Εμφάνιση όλων
Δημιουργώντας επαληθεύσιμη τυχαιότητα
Ορισμένες εφαρμογές κρυπτοαλυσίδας, όπως τα παιχνίδια που βασίζονται σε κρυπτοαλυσίδα ή τα σχέδια λαχειοφόρων αγορών, απαιτούν υψηλό επίπεδο απρόβλεπτου και τυχαιότητας για να λειτουργούν αποτελεσματικά. Ωστόσο, η καθοριστική εκτέλεση των κρυπτοαλυσίδων εξαλείφει την τυχαιότητα.
Η αρχική προσέγγιση ήταν να χρησιμοποιηθούν ψευδοτυχαίες κρυπτογραφικές συναρτήσεις, όπως το blockhash
, αλλά αυτές μπορούσαν να χειραγωγηθούν από κρυπτορύχους που έλυναν τον αλγόριθμο απόδειξης εργασίας. Επίσης, η μετάβαση του Ethereum σε απόδειξη συμμετοχής σημαίνει ότι οι προγραμματιστές δεν μπορούν πλέον να βασίζονται στο blockhash
για τυχαιότητα επί της αλυσίδας. Ο μηχανισμός RANDAO της αλυσίδας Beacon παρέχει μια εναλλακτική πηγή τυχαιότητας.
Είναι δυνατό να δημιουργηθεί η τυχαία τιμή εκτός αλυσίδας και να σταλεί εντός αλυσίδας, αλλά αυτό επιβάλλει υψηλές απαιτήσεις εμπιστοσύνης στους χρήστες. Πρέπει να πιστεύουν ότι η τιμή δημιουργήθηκε πραγματικά μέσω απρόβλεπτων μηχανισμών και δεν άλλαξε κατά τη μεταφορά.
Τα oracle που σχεδιάστηκαν για υπολογισμούς εκτός αλυσίδας επιλύουν αυτό το πρόβλημα δημιουργώντας με ασφάλεια τυχαία αποτελέσματα εκτός αλυσίδας, τα οποία μεταδίδουν εντός αλυσίδας μαζί με κρυπτογραφικές αποδείξεις που πιστοποιούν την απρόβλεπτη φύση της διαδικασίας. Ένα παράδειγμα είναι το Chainlink VRF (Verifiable Random Function), το οποίο είναι μια αποδεδειγμένα δίκαιη και ανθεκτική σε παραβιάσεις τυχαία γεννήτρια αριθμών (RNG), χρήσιμη για την κατασκευή αξιόπιστων έξυπνων συμβολαίων για εφαρμογές που βασίζονται σε απρόβλεπτα αποτελέσματα. Ένα άλλο παράδειγμα είναι το API3 QRNG που παρέχει τη γεννήτρια κβαντικών τυχαίων αριθμών (QRNG) είναι μια δημόσια μέθοδος Web3 RNG που βασίζεται σε κβαντικά φαινόμενα, που παρέχεται με την ευγένεια του Αυστραλιανού Εθνικού Πανεπιστημίου (ANU).
Λήψη αποτελεσμάτων για γεγονότα
Με τα oracle, η δημιουργία έξυπνων συμβολαίων που ανταποκρίνονται σε πραγματικά γεγονότα είναι εύκολη. Οι υπηρεσίες oracle το καθιστούν αυτό δυνατό επιτρέποντας στα συμβόλαια να συνδέονται με εξωτερικά API μέσω στοιχείων εκτός αλυσίδας και να χρησιμοποιούν πληροφορίες από αυτές τις πηγές δεδομένων. Για παράδειγμα, η προαναφερθείσα εφαρμογή πρόβλεψης μπορεί να ζητήσει από ένα oracle να επιστρέψει τα αποτελέσματα εκλογών από μια αξιόπιστη πηγή εκτός αλυσίδας (π.χ., το Associated Press).
Η χρήση oracle για την ανάκτηση δεδομένων με βάση πραγματικά αποτελέσματα επιτρέπει άλλες πρωτοποριακές περιπτώσεις χρήσης. Για παράδειγμα, ένα αποκεντρωμένο ασφαλιστικό προϊόν χρειάζεται ακριβείς πληροφορίες για τον καιρό, καταστροφές κ. λπ. για να λειτουργήσει αποτελεσματικά.
Αυτόματη εκτέλεση έξυπνων συμβολαίων
Τα έξυπνα συμβόλαια δεν εκτελούνται αυτόματα, αλλά ένας εξωτερικά κατεχόμενος λογαριασμός (EOA) ή ένας άλλος λογαριασμός συμβολαίου πρέπει να ενεργοποιήσει τις σωστές συναρτήσεις για να εκτελέσει τον κώδικα του συμβολαίου. Στις περισσότερες περιπτώσεις, το μεγαλύτερο μέρος των συναρτήσεων του συμβολαίου είναι δημόσιες και μπορούν να κληθούν από EOA και άλλα συμβόλαια.
Υπάρχουν όμως και ιδιωτικές συναρτήσεις μέσα σε ένα συμβόλαιο που είναι απρόσιτες για άλλους, αλλά είναι κρίσιμες για τη συνολική λειτουργικότητα μιας εφαρμογής. Παραδείγματα περιλαμβάνουν μια συνάρτηση mintERC721Token()
που δημιουργεί περιοδικά νέα NFT για τους χρήστες, μια συνάρτηση για την απονομή πληρωμών σε μια αγορά πρόβλεψης ή μια συνάρτηση για το ξεκλείδωμα των δεσμευμένων ψηφιακών στοιχείων σε ένα DEX.
Οι προγραμματιστές θα πρέπει να ενεργοποιούν τέτοιες συναρτήσεις σε διαστήματα για να διατηρούν την ομαλή λειτουργία της εφαρμογής. Ωστόσο, αυτό μπορεί να οδηγήσει σε περισσότερες ώρες να χάνονται σε βαρετές εργασίες για τους προγραμματιστές, γι' αυτό η αυτοματοποίηση της εκτέλεσης έξυπνων συμβολαίων είναι ελκυστική.
Ορισμένα αποκεντρωμένα δίκτυα oracle προσφέρουν υπηρεσίες αυτοματισμού, οι οποίες επιτρέπουν στους κόμβους oracle εκτός αλυσίδας να ενεργοποιούν συναρτήσεις έξυπνου συμβολαίου σύμφωνα με τις παραμέτρους που ορίζει ο χρήστης. Τυπικά, αυτό απαιτεί την "εγγραφή" του συμβολαίου προορισμού στην υπηρεσία oracle, την παροχή κεφαλαίων για την πληρωμή του χειριστή oracle και τον καθορισμό των συνθηκών ή των χρονικών στιγμών ενεργοποίησης του συμβολαίου.
Το Keeper Network της Chainlink παρέχει επιλογές για τα έξυπνα συμβόλαια να εξωτερικεύσουν τις τακτικές εργασίες συντήρησης με ελαχιστοποιημένη εμπιστοσύνη και αποκεντρωμένο τρόπο. Διαβάστε την επίσημη τεκμηρίωση του Keeper για πληροφορίες σχετικά με τη δημιουργία του συμβολαίου σας συμβατό με Keeper και χρήση της υπηρεσίας Upkeep.
Πώς να χρησιμοποιήσετε oracles κρυπτοαλυσίδας
Υπάρχουν πολλές εφαρμογές oracle που μπορείτε να ενσωματώσετε στο έξυπνο συμβόλαιο Ethereum σας:
Chainlink - Τα αποκεντρωμένα δίκτυα oracle της Chainlink παρέχουν αμετάβλητες εισόδους, εξόδους και υπολογισμούς για την υποστήριξη προηγμένων έξυπνων συμβολαίων σε οποιαδήποτε κρυπτοαλυσίδα.
RedStone Oracles - Το RedStone είναι ένα αποκεντρωμένο αρθρωτό oracle που παρέχει τροφοδοσίες δεδομένων βελτιστοποιημένες για gas. Εξειδικεύεται στην προσφορά ροών τιμών για αναδυόμενα περιουσιακά στοιχεία, όπως ρευστότητα κρύπτο αποθήκευσης κεφαλαίου (LST), στοιχεία επαναδιαθέσεως ρευστότητας (LRT) και παράγωγα αποθήκευσης κεφαλαίου Bitcoin.
Chronicle - Η Chronicle ξεπερνά τους τρέχοντες περιορισμούς της μεταφοράς δεδομένων στην αλυσίδα αναπτύσσοντας πραγματικά κλιμακωτά, οικονομικά αποδοτικά, αποκεντρωμένα και επαληθεύσιμα oracles.
Witnet - Το Witnet είναι ένα ανεξάρτητο, αποκεντρωμένο και ανθεκτικό στη λογοκρισία oracle που βοηθά τα έξυπνα συμβόλαια να αντιδρούν σε πραγματικά γεγονότα με ισχυρές εγγυήσεις κρυπτο-οικονομίας.
Oracle UMA - Το optimistic oracle της UMA επιτρέπει στα έξυπνα συμβόλαια να λαμβάνουν γρήγορα οποιοδήποτε είδος δεδομένων για διαφορετικές εφαρμογές, συμπεριλαμβανομένων των ασφαλίσεων, των χρηματοοικονομικών παραγώγων και των αγορών προβλέψεων.
Tellor - Το Tellor είναι ένα διαφανές και ανεξάρτητο πρωτόκολλο oracle για το έξυπνο συμβόλαιό σας για να λαμβάνει εύκολα οποιαδήποτε δεδομένα όποτε τα χρειάζεται.
Band Protocol - Το Band Protocol είναι μια διαλειτουργική πλατφόρμα δεδομένων oracle που συγκεντρώνει και συνδέει πραγματικά δεδομένα και API με έξυπνα συμβόλαια.
Paralink - Η Paralink παρέχει μια ανοιχτού κώδικα και αποκεντρωμένη πλατφόρμα oracle για έξυπνα συμβόλαια που εκτελούνται στο Ethereum και σε άλλες δημοφιλείς κρυπτοαλυσίδες.
Δίκτυο Pyth - Το δίκτυο Pyth είναι ένα δίκτυο οικονομικών oracle πρώτου μέρους σχεδιασμένο να δημοσιεύει συνεχώς πραγματικά δεδομένα στην αλυσίδα σε ένα ανθεκτικό στην παραβίαση, αποκεντρωμένο και αυτοβιώσιμο περιβάλλον.
API3 DAO - Το API3 DAO παρέχει λύσεις oracle πρώτου μέρους που προσφέρουν μεγαλύτερη διαφάνεια πηγής, ασφάλεια και κλιμακωσιμότητα σε μια αποκεντρωμένη λύση για έξυπνα συμβόλαια.
Supra - Ένα κάθετα ενσωματωμένο κιτ εργαλείων λύσεων διαλειτουργικότητας που συνδέει όλες τις κρυπτοαλυσίδες, δημόσιες (L1 και L2) ή ιδιωτικές (επιχειρήσεις), παρέχοντας αποκεντρωμένες ροές τιμών oracle που μπορούν να χρησιμοποιηθούν για περιπτώσεις χρήσης στην αλυσίδα ή εκτός αλυσίδας.
Περισσότερες πληροφορίες
Άρθρα
- Τι είναι μια oracle κρυπτοαλυσίδα; — Chainlink
- Τι είναι μια oracle κρυπτοαλυσίδα; — Patrick Collins
- Αποκεντρωμένες oracles: μια ολοκληρωμένη επισκόπηση — Julien Thevenard
- Υλοποίηση μιας oracle κρυπτοαλυσίδας στο Ethereum – Pedro Costa
- Γιατί τα έξυπνα συμβόλαια δεν μπορούν να κάνουν κλήσεις API; — StackExchange
- Γιατί χρειαζόμαστε αποκεντρωμένα oracles — Bankless
- Άρα θέλετε να χρησιμοποιήσετε ένα oracle τιμής — samczsun
Βίντεο
- Oracles και η επέκταση της χρησιμότητας της κρυπτοαλυσίδας — Real Vision Finance
- Οι διαφορές μεταξύ των oracles πρώτου και τρίτου μέρους - Blockchain Oracle Summit
Σεμινάρια
- Πώς να λάβετε την τρέχουσα τιμή του Ethereum σε Solidity — Chainlink
- Κατανάλωση δεδομένων Oracle — Chronicle
Παραδείγματα έργων