
Oracolele blockchain rezolvă problema livrării informațiilor din lumea externă în blockchain. Dar este important să știm de care dintre ele ne putem baza.
În lansarea catalogului am scris despre importanța oracolelor pentru blockchain.
Aplicațiile decentralizate nu au acces la date în afara blockchain-ului. De aceea, se creează programe mici – oracole – care obțin acces la datele necesare din lumea externă și le înregistrează în blockchain.
În funcție de tipul sursei de date, oracolele pot fi împărțite în trei categorii: software, hardware și umane.
Oracole software obțin și procesează date din internet – cum ar fi temperatura aerului, prețurile produselor, întârzierile trenurilor și avioanelor. Informația provine din surse online, de exemplu API-uri, iar oracolul o extrage și o plasează în blockchain. Despre cum să creezi un oracol software simplu, citește .
Oracole hardware monitorizează obiecte din lumea reală cu ajutorul dispozitivelor și senzorilor. De exemplu, o cameră video calibrată pentru a detecta trecerea unei linii, înregistrează automobilele care intră într-o anumită zonă. Oracolul înregistrează faptul că a fost depășită linia în blockchain, iar pe baza acestor date, un script al aplicației descentralizate poate, de exemplu, să inițieze emiterea unei amenzi și să debiteze tokenuri de pe contul proprietarului automobilului.
Oracolele umane utilizează date introduse de oameni. Ele sunt considerate cele mai avansate datorită perspectivei independente asupra rezultatului evenimentului.
Recent, am oferit un instrument care permite înregistrarea în blockchain a datelor oracolului conform unei specificații date. Funcționează extrem de simplu: trebuie doar să înregistrezi , completând specificația. După aceea, se pot publica tranzacții de date conform acestei specificații prin intermediul interfeței Oracole Waves. Citește mai multe despre instrument în .

Aceste instrumente și interfețe standardizate simplifică viața atât dezvoltatorilor, cât și utilizatorilor serviciilor din blockchain. Instrumentul nostru este util în special pentru oracolele umane și poate fi folosit, de exemplu, pentru înregistrarea certificatelor sau a drepturilor de autor asupra unor obiecte.
Dar, atunci când se folosesc oracole, apare întrebarea încrederii în informațiile primite de la acestea. Este sursa de încredere? Vor fi datele obținute la timp? În plus, există riscul ca oracolul să înșele utilizatorii, oferind informații false în mod intenționat pentru a obține un beneficiu personal.
Ca exemplu, să luăm un oracol care oferă informații despre evenimente sportive pentru o platformă de pariu descentralizată.
Evenimentul este lupta principală de la turneul UFC 242, Khabib Nurmagomedov contra Dustin Poirier. Conform estimărilor bookmakerilor, Nurmagomedov este clar favorit în meci. Se putea paria pe victoria lui cu o cotă de 1,24, ceea ce corespunde unei probabilități de 76%. Cota pentru victoria lui Poirier era de 4,26 (22%), iar bookmakerii evaluau probabilitatea unui egal la cota de 51,0 (2%).

Scriptul acceptă pariurile utilizatorilor pe toate cele trei rezultate posibile, până când primește de la oracol informațiile despre rezultatul real al luptei. Acesta este singurul criteriu pentru distribuirea câștigurilor.
Acum se știe că Nurmagomedov a câștigat. Însă, să ne imaginăm că un proprietar necinstit de oracol, planificând anticipat înșelăciunea, a pariat pe cel mai profitabil rezultat — egal. Când banca de pariuri a atins un volum mare, proprietarul oracolului inițiază înregistrarea în blockchain a unor informații false despre un presupus rezultat de egalitate al luptei. Scriptul bursei descentralizate nu are capacitatea de a verifica veridicitatea datelor primite și distribuie doar câștigurile conform acestor date.
Dacă profitul potențial dintr-o astfel de înșelăciune este mai mare decât venitul anticipat al unui oracol corect, iar riscul de a ajunge în instanță este scăzut, probabilitatea ca proprietarul oracolului să acționeze necinstit crește semnificativ.
O posibilă soluție a problemei este solicitarea de date de la mai multe oracole și aducerea valorilor obținute la un consens. Se pot distinge mai multe tipuri de consens:
- toate oracolele au furnizat informații identice
- majoritatea oracolelor au furnizat informații identice (2 din 3, 3 din 4 etc.)
- aducerea datelor oracolelor la media aritmetică (sunt posibile variante în care sunt eliminate valorile maxim și minim)
- toți oracolele au furnizat informații uniforme cu o deviație acceptabilă precalculată (de exemplu, valorile cotatiilor financiare din diferite surse pot diferi cu 0,00001, iar obținerea unei potriviri exacte este o sarcină imposibilă)
- alegeți doar valorile unice din datele obținute
Să ne întoarcem la schimbul nostru de pariuri descentralizat. Folosind consensul „3 din 4”, un oracol care reporta un rezultat de egalitate nu ar putea influența executarea scriptului cu condiția ca celelalte trei oracle să fi furnizat informații corecte.
Însă un utilizator rău intenționat poate deține și trei din cele patru oracole, și astfel ar putea asigura o majoritate decisivă.
Pentru a lupta împotriva necinstei oracolelor, se poate introduce un sistem de rating sau sancțiuni pentru necorectitudinea datelor. Se poate merge și pe calea „morcovului” și oferi recompense pentru corectitudine. Dar nicio măsură nu va putea evita complet, de exemplu, manipularea ratingului sau majoritatea necinstită.
Ar trebui să inventăm servicii complicate sau este suficient să avem un instrument de consens care să permită, similar cu raionul din supermarket, să alegem, de exemplu, cinci oracole care furnizează datele necesare, să stabilim tipul de consens și să obținem rezultatul?
De exemplu, o aplicație descentralizată are nevoie de date despre temperatura în grade Celsius. În catalogul oracolelor găsim patru oracole care oferă aceste date, stabilim tipul de consens „valoare medie” și facem o cerere.
Să presupunem că oracolele au dat următoarele valori: 18, 17, 19 și 21 de grade. O diferență de trei grade poate fi cu adevărat critică pentru executarea scriptului. Serviciul prelucrează rezultatul și obține valoarea medie a temperaturii — 18,75 grade. Această cifră va fi primită de scriptul aplicației descentralizate și va lucra cu ea.

În cele din urmă, decizia îi aparține consumatorului: să aibă încredere într-un singur oracol și să folosească datele acestuia, sau să construiască un consens din mai multe oracole, alese la discreția sa.
În orice caz, oracolele de date sunt un domeniu destul de nou. Ele se află într-o etapă în care utilizatorii pot determina în ce direcție să se dezvolte. Prin urmare, dorim să auzim părerea dumneavoastră. Este necesar instrumentul descris mai sus pentru oracole? Cum vedeți viitorul oracolelor de date în general? Împărtășiți-vă opiniile în comentarii și în grupul nostru oficial în .
Sursa: habr.com
