Pe o piață relativ lentă, cererea de oracole a crescut exponențial.
Discurs: Frank, inginer de relații cu dezvoltatorii, Chainlink Labs
Organizat de: aididiaojp.eth, Foresight News
Sunt Frank, inginer de relații cu dezvoltatorii de la Chainlink Labs. Sarcina mea principală este să permit mai multor dezvoltatori sau constructori pasionați de această industrie să învețe mai multe despre oracole. Pe baza contractelor inteligente din infrastructura noastră actuală, ne putem gândi la acesta ca la un contract inteligent hibrid. Contractele inteligente pot fi integrate mai bine cu diverse date din lumea Web2, inclusiv cu serviciile de calcul, iar apoi, pe baza acestei arhitecturi, putem extinde foarte mult ceea ce pot face contractele inteligente pe lanț.
În partajarea de astăzi, voi introduce mai întâi conceptul de oracole, iar apoi, pe baza conceptului de oracole, voi prezenta pe scurt rețeaua de oracole descentralizată și unele dintre serviciile pe care le putem oferi, inclusiv servicii de date și servicii de calcul.
Ce este un oracol?

Starea rețelei și a datelor se schimbă constant în aceste trei etape de la Web 1 la Web 2 la Web 3. La început, Web1 era un serviciu de site web în care datele puteau fi citite doar static. Când s-au dezvoltat în stadiul Web2, datele au devenit lizibile, inscriptibile și participabile. Multe companii mari au construit imperii de afaceri bazate pe propriile lor servicii. Ele stochează toate datele utilizatorilor în propriile baze de date, dacă este necesar, pot deține și modifica datele utilizatorilor. Atunci apare o întrebare, adică unele dintre datele pe care le creăm pe Internet sau în lumea virtuală au uneori o anumită valoare, deci cui îi aparține această valoare? Pe baza acestui fundal, sperăm să rezolvăm bine această problemă în etapa Web 3. Toate datele din etapa Web 3 nu există într-un server sau un nod. Are o rețea descentralizată, iar rețeaua descentralizată este un sistem multi-registru compus din mai multe noduri. Datele sunt stocate în mai multe noduri Doar atunci când fiecare nod este de acord cu modificarea și stocarea datelor, datele finale pot fi salvate. Acest lucru ne va aduce un beneficiu, adică indiferent de ce fel de modificare dorim să facem datelor, trebuie să facem modificarea conform consensului pre-acordat. De exemplu, dacă vreau să-mi modific soldul portofelului, dacă nimeni nu îmi transferă bani, indiferent de modul în care proprietarul datelor dorește să-l modifice, în cele din urmă el nu va putea trece de procesul de consens, ceea ce înseamnă că soldul portofelului nu poate fi modificată. Doar proprietarul datelor poate modifica în cele din urmă datele prin trimiterea unei tranzacții care respectă regulile. Acest lucru are un beneficiu foarte evident. În același timp, aduce și unele dezavantaje Cel mai mare dezavantaj este că face din sistem un sistem determinist. Cu alte cuvinte, pentru că va exista un proces de consens pe tot parcursul procesului, acesta poate efectua doar operațiuni pe care alții le pot verifica. Când trimiteți o operație, alții trebuie să efectueze operația dvs. Dacă alte noduri pot efectua operația cu succes, ele pot returna de fapt rezultatele. În ceea ce privește dacă depășește 50% sau 70%, depinde de algoritmul de consens.În cele din urmă, operațiunea poate fi scrisă în tranzacție, iar tranzacția poate fi scrisă în bloc pentru a deveni o tranzacție completă.

Dar dacă trebuie să facem niște operațiuni nedeterministe, cum ar fi obținerea unor date API în afara blockchain-ului și generarea de numere aleatorii etc., sistemul determinist blockchain nu poate fi finalizat. Loteria noastră trebuie să genereze numere aleatorii sau protocolul on-chain trebuie să cunoască prețurile activelor din lanț, cum ar fi obținerea prețului acțiunilor sau mărfurilor, care este o operațiune nedeterministă și nu poate fi finalizată de blockchain-ul în sine. Un alt exemplu sunt apelurile API Ca nod în rețea, apelez la date API externe, iar apoi le spun și altor noduri din rețea, pentru a verifica autenticitatea rezultatului, și alte noduri îl vor executa și obține un rezultat. Dar pentru un API extern, dacă persoane diferite accesează același API în momente diferite, serverul se poate închide sau serviciul poate fi suspendat sau datele se pot schimba pe măsură ce ora se schimbă. Dacă faceți același lucru în momente diferite, rezultatele pe care le obțineți vor fi inconsecvente. Atâta timp cât rezultatele sunt inconsecvente, nu există nicio modalitate de a bloca operația finală și nu există nicio modalitate de a o finaliza. Acesta este motivul pentru care, după ce avem dreptul de proprietate asupra datelor, trebuie să suportăm și unele dintre deficiențele pe care le aduce.

Pentru a rezolva această problemă, trebuie să vă bazați pe oracole. Blockchain-ul este un sistem izolat și determinist. Nu poate obține în mod activ date din afara lanțului. Apariția oracolelor este de a rezolva această problemă. Conceptul de oracole a apărut în urmă cu doi sau trei ani, dar nu existau prea multe scenarii aplicabile în acel moment și avea limite mari. De exemplu, dacă doriți să obțineți niște date de piață, încărcați datele stocurilor în rețeaua blockchain sau creați o structură pentru a pune logica în lanț pentru execuție, dar puneți activele în lanț și protejați desfășurarea normală a tranzacțiilor prin contracte inteligente etc. În acest moment, unele date trebuie să fie obținute din lanț, iar datele trebuie sincronizate periodic, inclusiv date de plată bancară sau de vânzare cu amănuntul și chiar și alte date despre evenimente publice, cum ar fi condițiile meteorologice, informațiile geografice, informații logistice, rezultatele competițiilor sportive etc., aceste date nu pot fi obținute fără a trece prin mașina oracol. Acest lucru va face ca ecologia de pe lanț să fie foarte limitată. Pe măsură ce ecosistemul Web 3 continuă să se dezvolte, legătura dintre cele două lumi Web 3 și Web 2 va deveni din ce în ce mai strânsă. Dacă vrem ca Web3 să obțină o adoptare pe scară largă sau să fie folosit de mai multe persoane, trebuie să ofere funcții foarte bogate și nu se poate limita la operațiuni care pot fi realizate doar prin date native din lanț.
Oracle a devenit popular abia în 2020, vara DeFi, când majoritatea oamenilor și-au dat seama. La început, mașina Oracle a făcut lucruri foarte simple De exemplu, dacă doriți să obțineți date externe și să le încărcați în rețeaua descentralizată, adică în blockchain, atunci cel mai simplu mod este să stabiliți un nod centralizat sub lanț. este, să construiești un server, apoi să obții datele prin server și, în cele din urmă, să scrii datele în rețeaua blockchain de deduplicare, apoi acest model se numește un oracol centralizat. Deși este relativ simplu de implementat, va aduce unele probleme De exemplu, are riscul unui singur punct de defecțiune, adică nodul centralizat poate cauza timpi de nefuncționare din propriile sale motive de bază. O altă posibilitate este că, dacă serviciul furnizat de contractul inteligent pe lanț se bazează pe datele furnizate de nodul centralizat și dacă suma de fonduri implicată în contractul inteligent pe lanț este foarte mare, atunci oracolul centralizat își poate trece proprii Datele care pot fi manipulate pot fi folosite pentru a lansa atacuri asupra serviciilor. Atâta timp cât interesele sunt suficient de mari și nu există nicio modalitate de a obține o protecție completă prin mijloace tehnice, atunci acesta este un singur punct de eșec. Dorim să punem aplicații în rețele descentralizate, inclusiv Ethereum sau alte ecosisteme Layer 2 De fapt, sperăm și că putem asigura corectitudinea aplicațiilor noastre, adică contractele inteligente, prin sute sau mii de noduri oracle din rețea. sex și siguranță.

Desigur, dacă ne bazăm pe noduri centralizate pentru a obține terminalul de date, chiar dacă securitatea altor aspecte poate fi garantată, dacă nu există nicio modalitate de a asigura securitatea celui mai important activ, terminalul de date, acesta va face întregul dApp fără sens. Prin urmare, după mașina centralizată Oracle, a apărut rețeaua descentralizată a mașinii Oracle, care poate rezolva bine riscul de eșec într-un singur punct pe care tocmai am menționat-o. Cea mai mare diferență a rețelei oracle descentralizate nu este că un singur nod oracol oferă servicii rețelei descentralizate, ci că serviciile sunt furnizate prin intermediul rețelei oracle descentralizate. Poate fi înțeles și ca un fel de Strat 2, adică fiecare Nodurile din rețeaua Oracle centralizată pot obține date prin propriile surse de date, după obținerea rezultatelor, pot agrega date cu alte rețele descentralizate, inclusiv verificarea datelor. sau dacă datele returnate se abate prea mult de la medie, sau pur și simplu faceți o medie, apoi agregați datele etc., apoi scrieți-le în rețeaua descentralizată. Unul dintre avantajele acestei abordări este că poate garanta din punct de vedere tehnic că serviciul nu va fi întrerupt decât dacă toate nodurile din rețeaua descentralizată Oracle nu mai funcționează, dar această posibilitate este foarte scăzută. În plus, pe partea de date, se poate asigura și că datele furnizate de oracol contractului pe lanț nu sunt controlate de un singur nod, ci de mai multe noduri. Dacă doriți să manipulați datele pentru a lansa un atac, costul este foarte mare. Acest lucru este echivalent cu atacarea stratului 2 sau chiar a unei rețele descentralizate precum Ethereum, care este puțin probabil să reușească.

Rețelele descentralizate pot îmbunătăți considerabil securitatea și corectitudinea datelor primite prin contractele inteligente. Pentru utilizatori, suntem doar o rețea Oracle descentralizată, dar pe baza rețelei Oracle descentralizate, putem oferi alte servicii, cum ar fi servicii de date, servicii de calcul și servicii cross-chain. Dacă datele sunt furnizate rețelei pe baza oracolelor, unele operațiuni mai complexe și mai costisitoare pot fi, de asemenea, finalizate în afara lanțului, adică sunt împachetate în rețeaua Oracle în afara lanțului pentru calcul și apoi scrise înapoi în comparația de securitate. sus pe blockchain. Dacă putem obține date din off-chain, putem obține și date de la alte lanțuri și apoi le putem scrie în acest blockchain, atunci acest lucru implică de fapt cross-chain. Atâta timp cât securitatea rețelei Oracle descentralizate este suficient de puternică, se poate asigura că serviciile de date, serviciile de calcul și serviciile cross-chain construite pe ea sunt foarte sigure. Chainlink oferă o varietate de servicii bazate pe oracole descentralizate, care pot conecta date Web 3 și Web 2, inclusiv date Layer 1 și Layer 2, astfel încât toată lumea să poată obține cât mai multe date și servicii corespunzătoare.
Ce servicii oferă Chainlink oracles?
În continuare, permiteți-mi să vă prezint pe scurt serviciile oferite de oracolele Chainlink. Desigur, există multe servicii oferite de Chainlink. Voi împărtăși unele servicii care sunt aplicabile în multe scenarii.
Dacă doriți să faceți unele inovații în domeniile DeFi, GameFi, NFT și SocialFi în viitor, există o mare probabilitate să aveți nevoie de un oracol pentru a obține date. Pentru că trebuie să obțineți datele în lanț într-un mod foarte descentralizat și sigur și să le scrieți înapoi în contractul dvs. inteligent în lanț.
Primul serviciu este prețul de alimentare, care poate fi un termen pe care l-ați auzit des înainte. A devenit popular în vara DeFi 2020. Multe proiecte DeFi au apărut în 2020, începând cu Uniswap, urmat de contractul de împrumut Compound și apoi de proiectul de active sintetice Synthetics și alte aplicații Toate au o cerere mare de date off-chain, deoarece numai datele securizate pot fi utilizate de către utilizatori într-o manieră descentralizată prin contracte, în care serviciul de alimentare cu prețuri al oracolului joacă un rol important.

Imaginea de mai sus este diagrama de bază a serviciului de alimentare cu prețuri, care include 3 părți importante. Prima este rețeaua descentralizată Oracle pe care tocmai am menționat-o, a doua este furnizorul de date, care poate fi un schimb sau alte instituții mari de autoritate, toate acestea putând servi ca furnizori de date; Procesul prezentat în figura de mai sus este foarte simplu. Fiecare furnizor de date îl poate furniza unui anumit nod al rețelei Oracle Chanlink prin interfața sau serviciul sursei de date. Fiecare nod al rețelei Oracle poate obține date în funcție de propriul serviciu. , iar apoi prin procesul de agregare, datele obținute de la fiecare canal sunt înscrise în contractul de verificare implementat pe lanț. Dacă trece verificarea, datele pot fi înregistrate și utilizate de utilizator în viitor. Clientul trebuie doar să folosească contracte pentru a obține și utiliza mai multe date.
Există multe cazuri de utilizare pentru alimentarea prețurilor, cum ar fi Compound, Uniswap și Synthetics pe care tocmai le-am menționat. Acestea trebuie să mapați activele din Web2 la Web3. În acest moment, au nevoie de un mecanism extern pentru a furniza prețul activului. La fel ca o monedă stabilă, câte monede stabile pot fi emise în funcție de câte active sunt disponibile, iar prețul activului său trebuie, de asemenea, obținut pe baza unui oracol. În plus, unele platforme de gestionare a activelor și aplicații populare de tranzacționare cu instrumente derivate depind în mare măsură de prețuri, așa că sunt de fapt utilizatori importanți ai serviciilor de alimentare cu prețuri. Judecând după tendință, cererea de servicii de alimentare cu prețuri crește exponențial. Chiar dacă piața nu este atât de activă, utilizarea datelor este în continuare în creștere.

În continuare, voi introduce cel de-al doilea serviciu mai distinctiv, care este Any API. Mai simplu, ajută contractele inteligente din lanț să obțină unele date non-standard, cum ar fi unele date long-tail. Aceste date pot fi disponibile numai anumitor persoane sau anumitor contracte, dar nu sunt date standard, cum ar fi prețurile simbolurilor sau prețurile activelor. Multe DApps necesită date non-standard De exemplu, aplicațiile de afaceri de asigurări Web 3 trebuie să obțină date despre vreme sau date despre întârzierea zborului. De exemplu, gazele cu efect de seră pot fi utilizate pentru proiecte similare cu ESG, inclusiv alegeri și competiții sportive care pot fi combinate cu piețele de predicții. Oferim o piață de date bazată pe Any API În fiecare piață de date, există diverși furnizori de date care oferă servicii către exterior pe baza propriilor date, atâta timp cât utilizatorul trimite o solicitare, acesta poate scrie datele înapoi contract conform cerințelor de serviciu. Atât furnizorul de date, cât și receptorul de date sunt determinate de piață. Există o piață pentru utilizatori și furnizori de date și nu depinde de oficialii Chainlink să monopolizeze toate datele și apoi să furnizeze date lanțului.

Fluxul de lucru al Orice API și alimentarea cu prețuri este de fapt relativ consistent. Contractul trimite mai întâi o solicitare, iar apoi cererea va fi descoperită de nodul Chanlink. După descoperire, Chanlink poate selecta datele necesare conform solicitării și apoi le poate scrie înapoi în blockchain. Orice API poate oferi utilizatorilor o varietate de date, dar una dintre caracteristicile sale este că, deși este configurat relativ rapid, oferă date dintr-un singur nod. Ceea ce vrea să facă Any API este să obțină date cât mai repede posibil într-un mod simplu, mai degrabă decât să obțină date prin oracolul rețelei descentralizate pe care l-am menționat anterior.

Mai târziu, pe măsură ce diversitatea cerințelor de date a crescut, multe date non-standard au sperat, de asemenea, să fie scrise înapoi în lanț într-o manieră descentralizată. Am creat, de asemenea, un nou serviciu numit Functions la începutul lunii aprilie a acestui an. Pur și simplu, execută orice solicitare a utilizatorului printr-o rețea descentralizată. Utilizatorii pot folosi unele limbaje de programare avansate, cum ar fi Javascript, pentru a scrie programe de operare. Acestea nu mai pot fi scrise doar în limbajul Solidity. Programele scrise în Javascript sunt cu siguranță mai bogate decât Solidity. Serviciul Functions poate încapsula programul scris într-o solicitare și îl poate trimite întregii rețele Oracle. Fiecare nod din rețea va efectua aceeași operațiune, care poate fi servicii de calcul, servicii de achiziție de date sau alte servicii. După ce fiecare nod se execută și obține rezultatul, trece prin procesul de agregare pe care tocmai l-am menționat și apoi îl scrie înapoi în contractul inteligent.

În comparație cu hrănirea prin preț, gradul său de libertate este foarte mare. Cu alte cuvinte, contractului inteligent i se poate oferi o interfață externă pe care să o folosească în orice mod dorește. De asemenea, puteți scrie o parte din logica pe care trebuie să o facă în contract, iar apoi nu este executată de blockchain, ci de mașina Oracle, ceea ce echivalează cu încorporarea serviciului Oracle Machine direct în contractul inteligent, transformându-l în un contract inteligent hibrid. Dacă o faci în acest fel, atunci execuția ta este garantată printr-o rețea descentralizată, atunci operațiunile tale nedeterministe, care nu pot fi făcute pe blockchain, pot fi efectuate printr-un oracol descentralizat. Rețeaua execută și returnează rezultatele. În general, poate îmbunătăți foarte mult funcționalitatea contractelor inteligente. Funcțiile pe care le poate face vor fi mai bogate decât înainte, iar aplicația reală din partea utilizatorului este, de asemenea, foarte simplă. Trebuie doar să adăugați două funcții la contract și puteți utiliza direct rețeaua Oracle descentralizată ca parte a contractului dvs. inteligent. . a folosi. De asemenea, este foarte prietenos cu programatorii tradiționali Web2, deoarece logica de execuție poate fi completată prin limbaje tradiționale de programare. Procesul general nu s-a schimbat Trimiteți o solicitare, apoi trimiteți-o în rețeaua Oracle descentralizată, agregați-o după execuție și, în final, scrieți-o înapoi în contractul inteligent al utilizatorului.
Cele de mai sus sunt ceea ce am împărtășit despre oracole și unele dintre serviciile pe care le pot oferi rețelele descentralizate bazate pe oracole.
