Contracte Ethereum Oracle: putem avea încredere în Oracle?
Publicat: 2022-03-11Acest articol este partea finală a unei serii de trei părți despre utilizarea contractelor oracolului Ethereum.
- Prima parte a fost o introducere în configurarea, rularea și testarea codului cu truffle framework.
- Partea a doua a analizat puțin codul și l-a folosit ca punct de lansare pentru discuții despre unele dintre caracteristicile de design și codul Solidity.
Acum, în această parte finală, aș dori să pun întrebări: ce tocmai am făcut și de ce? Și încercați să oferiți câteva căi de gândire care, sperăm, să provoace gândirea. Juriul este încă foarte interesat despre modul în care utilizarea oracolelor este legată de lipsa de încredere și despre ce înseamnă de fapt cuvântul „neîncredere”, referitor la blockchain, în utilizarea în lumea reală. Pe măsură ce aducem unele dintre aceste idei de la forma lor conceptuală la utilizarea practică, vom fi forțați să ne luptăm și să ne înțelegem cu întrebări ca aceasta. Deci să începem.
Recapitulare: De ce avem nevoie de un oracol Ethereum?
Acest lucru ajunge la inima naturii executării codului pe blockchain. Pentru a satisface cerințele de imuabilitate și determinism și ca un artefact al modului în care codul este de fapt executat de nodurile din lanț, un contract inteligent nu poate ajunge direct în afara blockchain-ului pentru a face bine, nimic.
Pentru majoritatea programatorilor, acest fapt introduce un mod foarte nefiresc de a gândi. Dacă avem nevoie de date de undeva, în mod normal ne conectăm la acestea undeva și le tragem. Un contract inteligent care are nevoie de date meteo? Conectați-vă doar la un flux meteo. Dar nu; un contract inteligent blockchain absolut nu poate face acest lucru; dacă unele date nu sunt deja pe blockchain, codul contractului nu are acces la el în momentul executării. Deci, soluția este să existe deja datele necesare pe blockchain, la momentul executării contractului. Acest lucru necesită mașini externe care, mai degrabă decât să tragă date în lanț, împinge datele în lanț, în special pentru a fi utilizate de alte contracte. Acea mașinărie externă este oracolul. Datele introduse în lanț sunt introduse într-un contract oracol, care apoi probabil a făcut prevederi pentru partajarea lor cu alte contracte. Un exemplu al acestei configurații este exact ceea ce am construit și examinat în cele două părți anterioare ale acestei trilogii de articole.
Găuri strălucitoare de securitate
Pentru mine, problema centrală implicată în toate blockchainurile publice este cuvântul T: încredere. Cel mai pur, ceea ce fac aceste sisteme este cel mai bun lucru pentru a garanta (nici o garanție perfectă nu este posibilă în această lume, dar cât mai aproape posibil) că nu trebuie să avem încredere orbește în nicio parte. Este posibil ca cititorul priceput să fi pus deja la îndoială unele dintre găurile de securitate flagrante din exemplul pariurilor la box. Aș dori să mă concentrez pe cele care vor fi cele mai importante pentru discuția noastră despre lipsa de încredere și modul în care aceasta se leagă de utilizarea oracolelor cu contracte inteligente.
1. Proprietarul/menținătorul contractului de pariuri poate fi corupt
Începând de pe linia 58 din BoxingBets.sol avem următoarea funcție:
/// @notice sets the address of the boxing oracle contract to use /// @dev setting a wrong address may result in false return value, or error /// @param _oracleAddress the address of the boxing oracle /// @return true if connection to the new oracle address was successful function setOracleAddress(address _oracleAddress) external onlyOwner returns (bool) { boxingOracleAddr = _oracleAddress; boxingOracle = OracleInterface(boxingOracleAddr); return boxingOracle.testConnection(); }
Ar trebui să fie destul de clar ce permite acest lucru. Proprietarul contractului (și numai proprietarul contractului) poate, în orice moment și fără nicio restricție, să schimbe oracolul care este folosit pentru a servi meciurile de box și a determina câștigătorii. De ce este asta o problemă? Dacă nu este deja evident pentru dvs., acest lucru îi permite proprietarului contractului să abuzeze în mod deliberat de contract pentru propriul său profit.
Exemplu: Următorul meci de box este Soda Popinski vs. Glass Joe. Soda este favoritul clar cu o marjă largă. Toată lumea pariază pe Soda. Tone de bani calare pe el. Eu, proprietarul contractului, decid să trag unul rapid. Chiar înainte de a se decide meciul, schimb oracolul cu unul rău intenționat, care este identic cu oracolul oficial, cu excepția faptului că este codificat să declar pe Glass Joe câștigător. Declară Glass Joe, eu câștig toți banii și nimeni nu mă poate opri. După aceea, poate nimeni nu va mai avea încredere în contractul meu, dar să presupunem că nu-mi pasă; poate că am scris și am publicat contractul doar cu scopul de a face acel furt.
Care sunt unele alternative?
1. Nu permite ca oracolul să fie schimbat
Problema pe care am identificat-o mai sus apare din faptul că permitem ca oracolul să fie schimbat de către proprietarul contractului. Deci, să presupunem că doar codificăm adresa oracolului și nu permitem deloc să fie schimbată? Ei bine, de fapt putem face asta, nu este exclus. Dar atunci apare întrebarea, ce se întâmplă dacă acel oracol renunță - încetează să furnizeze date din orice motiv? Atunci va trebui să obținem un nou oracol. Sau ce se întâmplă dacă acel oracol, inițial de încredere, se dovedește a fi corupt și nu mai are încredere? Din nou, vom dori să trecem la un nou oracol. Dacă am codificat oracolul, atunci singura modalitate de a schimba oracolul este lansarea unui nou contract care utilizează un alt oracol. Ok, din nou, putem face asta. Nu este exclus. Rețineți, desigur, că contractele inteligente nu pot fi actualizate la fel de ușor ca, de exemplu, un site web. Nu ar fi ușor? Dacă observați o eroare sau o gaură de securitate, o corectați și nimeni nu este mai înțelept. Modelul de implementare a contractului inteligent este un pic mai aproape de modelul de software shrink-wrapped; odată ce software-ul este în mâinile utilizatorului, acesta este acolo și nu îl puteți repara. Trebuie să solicitați utilizatorului să se actualizeze manual. Contractele inteligente sunt puțin asemănătoare. Odată ce contractul este pe blockchain, este imuabil ca și restul blockchain-ului, cu excepția părților în care ați scris o logică pentru a-l face mutabil.
Totuși, acesta nu este neapărat un blocant; Există o mulțime de modele și școli de gânduri acum despre cum să faci un contract inteligent modificabil. Acest subiect ar fi un articol decent în sine, dar deocamdată puteți consulta acest articol Hackernoon, precum și acest articol despre strategiile de contracte inteligente.
Cum ar arăta asta din perspectiva unui utilizator? Să spunem că mă gândesc să plasez un pariu pe viitorul meci Don Flamenco. Pot vedea clar că contractul codifică fără complicații un oracol pe care îl cunosc deja și în care am încredere (ei bine, aveți suficientă încredere pentru a plasa un pariu de o anumită dimensiune). Deci asta este. Destul de simplu. Dacă proprietarul contractului lansează o nouă versiune a contractului cu un nou oracol, eu încă (ar trebui) să am libertatea de a continua să o folosesc pe cea veche. Poate. Depinde de cum a fost gestionat upgrade-ul. Dacă contractul a fost dezactivat sau distrus, s-ar putea să nu am noroc. Dar în cazul cu vanilie, ar trebui să stea în continuare.
2. Blocați oracolul pentru toată durata
Putem adăuga unele complicații codului (nu este chiar de dorit ca un exemplu să fie prea complex, dar pentru o soluție reală ne putem dori beneficiul pe care îl aduce această complexitate) pentru a atenua șmecherii precum cel descris mai sus. Cred că un lucru foarte rezonabil de făcut ar fi să adăugați un cod care să „blocheze” oracolul pe durata pariului. Altfel spus, logica contractului ar putea garanta într-un mod foarte clar și simplu, că orice oracol a fost prezent atunci când am făcut pariul trebuie să fie același oracol care este folosit pentru a determina câștigătorul. Așa că, chiar dacă oracolul se schimbă între timp, pentru alte meciuri, pentru meciul meu și pentru pariul meu trebuie să rămână același pe tot parcursul. Acest lucru merge mână în mână cu permiterea utilizatorului să știe cine este oracolul.
Să avem un exemplu rapid pentru a ilustra acest lucru. Sunt utilizator. Mă gândesc să pun un pariu pe viitoarea luptă cu Little Mac. Există o facilitate în contract care îmi permite să inspectez oracolul care va fi folosit pentru a determina câștigătorul acestui meci. Verific ca contractul este unul cunoscut prezentat de Nintendo Sports. Mă simt suficient de încrezător în acel oracol. (Pentru a adăuga un pic mai multă complexitate, poate că contractul permite utilizatorilor să aleagă dintr-o serie de oracole disponibile pentru un anumit meci). Acum pot inspecta codul oracolului și văd că logica oracolului garantează că același oracol va fi folosit pentru a determina rezultatul meciului. Deci eu, ca parior, am această asigurare cel puțin. Nu exclude faptul că oracolul meu ar putea fi rău (adică corupt sau nedemn de încredere) dar măcar mă asigură că nu poate fi schimbat în fundal.
Un risc aici ar fi ca oracolul să iasă din funcțiune (încetează să fie întreținut sau actualizat) între momentul în care plasez pariul și meciul este decis. Banii ar putea fi blocați în contract și devin irecuperabili. Pentru aceasta, am putea (poate) să punem o clauză activată în timp în contract, în care, dacă o potrivire este indecisă de o anumită oră sau dată (ar putea face parte din definiția meciului), este considerată „moartă” și toți banii blocați în interior. este returnat pariorilor.
3. Lăsați oracolul să fie definit de utilizator
Un lucru și mai complicat (dar posibil mai interesant) ar fi să lăsați adresa oracolului „gol”, într-un sens, pentru a permite utilizatorilor să-și specifice propriile oracole și să-și formeze propriile grupuri de pariuri (prin contract) în jurul acelor oracole. Grupuri de utilizatori care folosesc același oracol ar putea paria împreună urmând logica contractului. Acest lucru impune utilizatorului sarcina de a alege un oracol în care are încredere și de a împărtăși acel oracol cu alți utilizatori cu gânduri similare. De fapt, fragmentează comunitatea de pariuri, așa că ar funcționa numai dacă ar exista o bază mare de utilizatori; altfel, ar fi prea puțini pariori implicați pentru a face pariurile cu adevărat interesante și profitabile. Dacă sunt singura persoană care pariază cu oracolul meu preferat, nu există prea multe stimulente acolo! Dar, pe de altă parte, își asumă responsabilitatea de a alege un oracol de încredere de la proprietarul contractului, iar el se poate spăla pe mâini de asta. Dacă unii utilizatori consideră că un oracol nu este de încredere, pur și simplu nu îl vor mai folosi și vor trece la altul și nimeni nu se va supăra pe proprietarul contractului. Pur și simplu a oferit arena de pariuri și și-a îndeplinit serviciul onorabil.
La complicația acestei strategii se adaugă și faptul că ar trebui să lăsăm cumva un lot organic de oracole „să crească” în sălbăticie și care se potrivesc exact cu această soluție. Ar trebui să transmitem lumii interfața exactă la care potențialele oracole trebuie să adere și să sperăm că un număr suficient de decent dintre ele va apărea pentru a oferi utilizatorului o alegere. Poate am putea însămânța lotul cu unul sau doi de-al nostru. Dacă nu este nevoie, atunci nu avem niciun pariu DApp. Dar dacă se întâmplă, trebuie să recunosc că ideea de oracole în sălbăticie selectate de utilizatori, cultivate organic este o soluție interesantă și atractivă.
2. Proprietarul/menținătorul oracolului ar putea fi corupt
Corupt adică în sensul de neîncrezător; că proprietarul/menținătorul/managerul oracolului este de natură să proclame un rezultat incorect pentru un meci, pentru a se îmbogăți.
Exemplu: sunt proprietarul/menținătorul oracolului real, care furnizează date de box în blockchain pentru ca contractul de pariuri să le utilizeze. Oracolul meu nu este direct implicat în nicio plasare a pariurilor sau gestionarea pariurilor. Sarcina sa este să furnizeze pur și simplu date, pe care contractul de pariuri (și poate orice număr de alte contracte) le poate folosi. Cu toate acestea, pot plasa personal un pariu folosind contractul de pariuri care, la rândul său, folosește oracolul meu; Oricum sunt anonim, așa că nu mă tem de nicio răzbunare. Odată ce am pariat pe un astfel de contract, există un conflict clar de interese. Mai exact, onestitatea cu care îmi actualizez oracolul cu informații adevărate și corecte poate fi în conflict cu acțiunile mele de pariuri.
Așa că, să spunem că în meciul viitor Sandman/von Kaiser, în care von Kaiser este în mare măsură cel defavorizat, merg înainte și pun un pariu masiv pe von Kaiser. Când von Kaiser pierde așa cum era de așteptat, îmi folosesc oracolul pentru a-l proclama în mod fals câștigător! Contractul de pariuri se execută așa cum ar trebui (nu există nicio modalitate de a-l opri în acest moment), fac o ucidere în meci, nu există nicio cale de atac și nicio modalitate de a mă pedepsi și viața continuă. Poate că, după aceea, oamenii refuză să-mi mai folosească oracolul; poate nu-mi pasa.
Cum putem preveni acest lucru?
Acum ne aflăm la o întrebare mult mai mare și una care atinge miezul așa-zisei lipsă de încredere în ceea ce privește oracolele. Se crede că oracolul este o terță parte neutră sau chiar o terță parte de încredere. Problema este că oracolul este condus de oameni. O altă problemă este că oracolul exercită un control mare asupra modului în care contractul client își îndeplinește sarcinile, deoarece furnizează datele asupra cărora acționează contractul. Cum putem ști vreodată că putem avea încredere într-un oracol dat?
De ce ar trebui să avem încredere în orice oracol?
Dacă întreaga idee a contractelor inteligente de tip blockchain este de a elimina nevoia de a avea încredere în oricine, nu este oare faptul că trebuie să „avem încredere” într-un oracol în fața lipsei de încredere? Ei bine, aș spune: e timpul să crești, fiule (sau fiică)! Nu există pură lipsă de încredere, iar blockchain-ul nu oferă un mediu fără încredere. Blockchain este un strat care facilitează interacțiunile umane. Interacțiunile umane sunt încă rezultatul de bază sau final, iar interacțiunile umane nu pot fi lipsite de încredere.

Link: Problema Oracle
Evoluția încrederii
În zorii timpurilor, cum aș putea avea încredere în altă ființă umană? Să presupunem că vânez mamut și tipul ăla spune că mă va ajuta să vânez mamutul, în schimbul jumătate din carne? Cum poate avea încredere că îi voi oferi jumătatea? Cum să am încredere că nu mă va lovi în cap și nu va lua tot mamutul, odată ce vânătoarea s-a terminat?
În acele vremuri, amenințarea cu violența era probabil în centrul multor tipuri de încredere socio-economică. Dacă încerc să-i fur partea acelui tip, sunt sigur că va încerca să mă atace, iar asta implică riscuri pentru mine. Chiar dacă mă simt încrezător că voi câștiga într-o luptă cu el, eu (ca om al cavernelor) știu suficient despre luptă pentru a știu că orice se poate întâmpla și aș putea suferi cu ușurință o accidentare care pune viața în pericol, chiar dacă câștig din punct de vedere tehnic. Este întotdeauna un risc și o investiție de energie. În acea lume, asta ar putea fi suficient pentru a menține oamenii cinstiți.
În general, nu voi înșela pentru că nu este în interesul meu , în general și în medie, să fac asta. Cu alte cuvinte, rezultatul așteptat al înșelăciunii este mai mic decât rezultatul așteptat al cooperării.
Dacă nu este cazul, sau dacă actorii percep că nu este cazul, probabil unul sau mai mulți vor alege pur și simplu să nu participe. De exemplu, dacă văd că celălalt tip este un uriaș înalt de 9 picioare, cu coarne și dinți de monstru, aș putea alege să fug și să nu fac nicio afacere; tipul pare prea periculos pentru mine să mă descurc, ar putea pur și simplu să fure ceea ce îi place fără a fi pedepsit. Dacă suntem aproximativ egali, atunci percepem că ne aflăm într-o situație în care nu este în interesul niciunei părți să înșele, este în interesul ambelor noastre să cooperăm și, prin urmare, presupunând că ambele părți sunt sănătoase și raționale, ambele părți vor coopera.
Pe măsură ce cultura s-a dezvoltat, la fel s-au dezvoltat și interacțiunile umane. Au devenit mai puțin violenți, deși amenințarea implicită cu forța nu a dispărut. Tradițiile culturale au oferit oamenilor un stimulent mai mare pentru a coopera și diferite tipuri de descurajare pentru a înșela.
Avanză rapid către o perioadă a civilizației timpurii; Fac un târg să cumpăr 100 de busheli de grâu. Este un fel de contract futures primitiv; Plătesc astăzi cerealele pe care le voi primi când vor fi recoltate luna viitoare. Îi dau tipului monedele mele de cupru, dăm mâna, împărțim un pahar de bere de orz și ne despărțim până luna viitoare pentru încheierea contractului. Pare ok.
M-am pus la mila tipului acela; el are toată suma din banii mei, iar eu nu am nimic încă. Deci, ce mă face să mă simt încrezător că va îndeplini contractul? Cateva lucruri. Este un om de afaceri; face în mod regulat afaceri cu populația locală. A făcut afaceri cu oameni pe care îi cunosc și a livrat întotdeauna corect și la timp. Are o reputație de onestitate. În plus, știu că are un motiv de descurajare pentru a înșela. El își câștigă existența, în principal, pe baza faptului că se știe că este un comerciant cinstit. Dacă ar fi să mă înșele, aș anunța pe toată lumea, iar acest lucru i-ar dăuna bunei reputații și, prin urmare, afacerii lui. Suma de bani pe care o câștigă din înșelarea mea ar fi mică în comparație cu suma viitoare pe care ar putea suporta să nu o facă dacă baza lui de clienți l-ar abandona. Așa că știu că nu este neapărat în interesul lui să mă înșele.
Asta e super; amenințarea cu forța sau violența este absentă din imaginea de mai sus. Cu excepția a două lucruri:
- Amenințarea cu forța nu lipsește pe deplin. Un alt motiv de descurajare pentru a înșela ar putea fi gândul la ceea ce va face un tip înșelat. Am arme și prieteni loiali mie. Eu, ca o petrecere furioasă înșelată, aș putea recurge la forță. Așa încep războaiele de clanuri!
- De asemenea, poate exista un sistem de guvernare de un fel, care va evalua detaliile cazului și, eventual, va amenda comerciantul sau îl va pune în închisoare. Descurajarea standard susținută de guvern este întotdeauna susținută de amenințarea cu forța, deoarece pedeapsa subiacentă pentru refuzul de a plăti amenda, refuzul de a merge la închisoare, refuzul de a respecta toate măsurile, este în cele din urmă forța. Și asta continuă până în zilele noastre. Dacă refuz să plătesc o amendă, pot fi arestat. Dacă refuz să fiu arestat, se va folosi forța împotriva mea și pot fi băgat în închisoare împotriva voinței mele sau chiar ucis (dacă rezistența mea este suficient de încăpățânată). Acolo vedem amenințarea cu forța la doar doi pași, chiar și pentru o infracțiune minoră!
Încredere descentralizată astăzi
Înainte rapid până în ziua de azi. Care sunt descurajările pentru încălcarea unui contract? Sunt mult diferite de scenariul anterior?
Compania X are o reducere prin poștă pentru achiziționarea acestui produs. De ce ai încredere că vor îndeplini acest lucru? La fel ca în exemplul precedent; compania are puțin de câștigat prin înșelarea unei sume mici și mult de pierdut prin deteriorarea reputației lor. Aceasta este baza din spatele multor scenarii de încredere și a fost de mult timp. Și din nou, ca în exemplul comerciantului de cereale, există amenințarea cu forța, deși în acest caz, nu se va ajunge la asta. Compania poate fi amendată sau pedepsită printr-un proces colectiv, iar compania trebuie să plătească amenda sau să se confrunte cu pedepse mai grave. Aceste pedepse sunt susținute de un guvern, care la rândul său este susținut de amenințarea cu forța, atât economică, cât și militară, deși am putea considera că amenințarea forței economice este la rândul său susținută de forța militară, adică violența.
Sisteme tradiționale
Modelul contractelor susținute de aplicarea forței aprobate de guvern a servit bine omenirii de mii de ani? Sau are? Ei bine, a fost, dar este o progresie firească. În absența guvernului, grupuri de oameni formează guverne. Aproape că pare că nu poți împiedica oamenii să formeze guverne; se vor forma.
Deci, cum rămâne cu contractele inteligente blockchain? Cum blockchain-ul și modelul de contract inteligent asigură încrederea sau descurajează înșelăciunea? Nu spune doar „neîncredere”, acesta nu este un răspuns! În exemplele noastre anterioare, înșelăciunea este descurajată într-un fel.
Să aruncăm o privire mai atentă asupra modului în care blockchain-ul îndeplinește (sau înlocuiește) acea funcție.
Sisteme Blockchain: Bitcoin
Pentru a împărți această mare întrebare în întrebări mai mici, să începem cu bitcoin. Cum descurajează bitcoin înșelăciunea? Sunt liber să rulez orice software de nod bitcoin pe care îl doresc, atâta timp cât pare să adere la protocoalele rețelei bitcoin. Nimeni nu mă descurajează să-mi rulez propriul nod bitcoin care face ceea ce vrea în timp ce aderă la protocoalele de rețea; Există vreo modalitate prin care pot folosi asta pentru câștiguri ilicite?
Sigur, pot elibera orice fel de tranzacții în rețeaua bitcoin pentru aprobare. Pot să eliberez o tranzacție care îmi trimite tot bitcoinul tău, să o eliberez în rețea, să aștept să fie adăugată într-un bloc și, uau, acum toți bitcoinii tăi îmi aparțin ? Nu, din cauza criptării.
Nu am cheia dumneavoastră privată și o astfel de tranzacție trebuie să fie semnată cu cheia dumneavoastră privată. Deci, sunt blocat acolo de criptografie. Sau sunt eu? Cine spune că o astfel de tranzacție trebuie semnată? Ce se va întâmpla dacă o încerc? Ei bine, ceea ce se va întâmpla, desigur, este că întreaga rețea bitcoin îmi va respinge tranzacția. De ce ar accepta cineva? Pe lângă faptul că toate rulează noduri standard, care le vor respinge din mână, de ce m-ar ajuta să trișez? Procedând astfel, cu siguranță va submina integritatea rețelei bitcoin și, în acest fel, va submina propria lor cripto-bogăție. Deci nu are sens ca ei să mă ajute pe mine, un străin anonim, să înșele un alt străin anonim. Chiar dacă un actor irațional acceptă cumva tranzacția mea invalidă, marea majoritate a rețelei bitcoin o va respinge și nu are nicio șansă. Este bătut din nou, de data aceasta după cifre.
Dar dacă, totuși, sunt o operațiune minieră puternică? Cu siguranță acum am mai multă putere de a rezolva lucrurile în avantajul meu. Da, dar tot nu-mi dă nimic aproape de puterea absolută. Chiar și ca miner puternic, dacă controlez mai puțin de 50% din rețea, atunci nu pot face mare lucru. Am o oarecare putere de a alege ordinea în care tranzacțiile sunt adăugate la blocuri, dar aceasta nu este puterea de a bate sau de a fura monede. Chiar dacă controlez mai mult de 50% din rețea (presupunând aici că cititorul este conștient de binecunoscutul atac de 51% în legătură cu proof-of-work ca în bitcoin), puterea mea principală ar fi dublarea cheltuielilor. Deși este o putere grozavă, este foarte discutabil dacă ar fi în interesul meu să fac asta, deoarece ar submina integritatea bitcoin. Se pare că ar fi mai bine să-mi folosesc controlul pentru a extrage toate monedele, câștigând astfel mai mulți bani și susținând baza pe care se află acea bogăție. Astfel, nu sunt bătut, dar impulsul meu de a înșela este împiedicat de un descurajare care este încorporat organic în protocol. Și acest descurajare este susținut, în principiu, de puterea numerelor; consensul copleșitor al participanților la rețeaua bitcoin.
Contracte inteligente Blockchain și contracte Oracle
Ce sunt contractele inteligente? Să presupunem că am implementat un contract înșelător pentru a păcăli oamenii să-mi trimită banii? Sau să presupunem că am implementat un contract de pariuri și am folosit unul dintre atacurile (dacă le puteți numi așa) descrise mai devreme? Pot face asta, ar putea păcăli unii oameni; Eu, ca actor necinstit, aș putea obține un mic profit dintr-un astfel de efort. Apărarea împotriva acesteia ar fi ca fiecare participant să ia în considerare cu atenție (așa cum ar trebui să facă în cazul oricărui contract) contractul la care urmează să devină parte și posibilele moduri în care acesta poate fi abuzat. Ei ar trebui să ia în considerare și sursa - ceea ce, dacă este ceva, știu despre partea care publică și menține contractul și orice oracole asociate sau contracte asociate. S-ar spera că un contract necinstit nu va dura mult timp înainte ca rețeaua să-l semnaleze în mod informal ca necinstit, determinând participanții să-l evite în mod voluntar, întrerupându-l. Rețeaua este mare, iar vorbele circulă rapid.
Cu excepția, la un moment dat, mai trebuie să ai încredere într-o ființă umană. Datele contractului de pariuri sunt furnizate de un oracol. Oracolul este întreținut de un om. Indiferent de câte straturi adăugați în încercarea de a menține rețeaua sinceră, ea revine totuși la un om la un moment dat. Deci, în ce tip de oracol ai avea încredere, având în vedere exemplul nostru de pariuri? Aș avea încredere într-un oracol care avea mai mult de pierdut decât de câștigat, trișând. Exemplu: imaginați-vă că ESPN sau o rețea similară au fost sponsorii oracolului. Te-ai aștepta, mai mult decât oricine, să furnizeze date oneste, deoarece câștigarea ilegală a unei sume mici într-un pariu de box ar fi umbrită de pierderea reputației care rezultă. În acest caz, încrederea dumneavoastră este bine plasată din același motiv pentru care avem încredere în comerciantul de cereale cinstit. Acest tip de acord de încredere este vechi și bine stabilit.
Deci, ce am câștigat prin utilizarea contractelor inteligente? Prin ce diferă contractele inteligente de guvernanță sau de metodele anterioare de susținere a contractelor?
Încheierea
Doar pentru a face un punct, pentru a da de gândit și de discutat și pentru a încheia articolul meu, voi prezenta câteva observații simple, în loc de concluzii dure. Pentru că, pentru un subiect de această complexitate, o concluzie concisă se simte ca un fel de poveste așa-așa și o simplificare excesivă. Observațiile pe care le voi expune (și vă rog să nu ezitați să le discutați/infirmați/contraziceți) sunt următoarele:
- Încrederea bazată pe presupunerea că cealaltă parte are mai mult de câștigat din cooperare decât din înșelăciune este veche, funcționează în situații practice și nu a dispărut. Este încă inerent în anumite cazuri în lumea blockchain, deși poate eliminat în multe cazuri. În cazul exemplului nostru de oracol, acesta este încă viu și bine.
- Încrederea bazată pe amenințarea cu forța sau violența a fost, de asemenea, inerentă în societatea umană din timpuri imemoriale, dar este remarcabil absentă din modelul nostru de contract inteligent și a fost înlocuită de aplicarea legii prin combinații inteligente de criptare și consens de numere mari.
Provoc pe alți dezvoltatori Ethereum să facă două lucruri:
- Gândiți-vă la orice fel, în sistemele de blockchain publice (cum ar fi bitcoin sau ethereum), în care orice este impus fie de amenințarea implicită sau explicită a forței.
- Gândiți-vă la orice sistem de reguli majore din dreptul contractual sau financiar modern, care nu este într-un fel pus în aplicare nici de amenințarea explicită sau implicită a forței.
Ceva Vechi, Ceva Nou
Și cred că aici am ajuns la principala diferență și, într-adevăr, adevăratul motiv pentru care spunem că sistemele blockchain sunt „revoluționare”, în comparație cu sistemele din trecut. În modul meu de gândire, nu este deloc lipsa de încredere, ci mai degrabă o platformă mai stabilă pentru încredere și, mai ales, una care nu se bazează deloc pe amenințarea cu forța sau violența.
Pe de o parte, avem vechea și testată asigurare a beneficiului reciproc în situațiile în care există o lipsă de stimulente pentru înșelăciune. Nu e nimic nou. Ceea ce este nou este introducerea consensului asistat de criptare, care ajută la descurajarea înșelăciunii și la menținerea onestității sistemului. Iar sinteza acestor două elemente a produs ceva cu adevărat remarcabil, posibil pentru prima dată în istoria omenirii: un sistem care este utilizabil pentru grupuri mari, anonime, în care nicăieri nu se găsește amenințarea explicită sau implicită a forței ca descurajare sau pedeapsă. . Și asta, cred, este ceea ce este cu adevărat uimitor. Dacă acest aspect este trecut cu vederea, ceea ce avem este o nouă tehnologie ingenioasă (care recunosc, este destul de cool așa cum este). Dar când este luat în considerare acest aspect, este evident că am intrat într-o nouă eră a guvernării.