Ideea de contracte smart este promițătoare și a atras cel mai mult atenția atunci când vine vorba despre blockchain.
Ideea a fost expusă pentru prima dată de criptograful Nick Szabo în lucrarea lui din 1997 – „Smart Contracts”. Aceasta descrie conceptul de”protocol de tranzacție computerizată care execută termenii unui contract.”.
Deocamdată avem blockchainul ethereum, care facilitează dezvoltarea și lansarea ușoară a acestui concept în spațiul public.
Cu toate acestea, acest lucru a creat confuzie în jurul contractelor smart. Iată câteva idei preconcepute pe care le-am întâlnit în mai multe rânduri
1. Contractele smart sunt doar cod, nu contracte
O frază destul de des întâlnită este că un contract smart nu este nici inteligent, nici contract, ci doar o bucată de cod.
În unele cazuri, acest lucru poate fi adevărat, cum ar fi atunci când creezi o aplicație descentralizată care nu implică transferul de valori. Cu toate acestea, în alte cazuri, contractele smart pot să aibă caracteristici ale contractelor convenționale.
De ce fac oamenii contracte? În mare parte pentru că nu au totală încredere unul în celălalt că vor onora o înțelegere (în ciuda unui acord verbal) sau ca dovadă pentru terți că un transfer de bunuri este legitim.
Dacă contractul smart este rezultatul unei înțelegeri dintre două sau mai multe părți ”semnat” de toate părțile (tranzacționând activ pe contractele smart) atunci poate fi văzut ca semantică operațională a unui contract smart, scris însă într-un limbaj mai puțin familiar.
Administrarea conflictului ar putea în mare parte să urmărească aceeași rută ca toate contractele smart, adică prin mediere și curți judecătorești.
Principala diferență va fi deci că în multe cazuri transferul valorii ca rezultat al execuției automate a contractelor îi ia locul.
2. Contractele smart pot să opereze în totalitate autonom
Ajungem la cea de-a doua preconcepție.
Una dintre greșelile frecvente este că oamenii cred că un contract smart poate să scaneze activ mediul și să execute operațiuni conform cu acesta. Adică, un contract smart se leagă de o bază de date externă și își schimbă starea în funcție de rezultatele găsite.
Blockchainul, în esență, este condus de tranzacții. Acesta este și cazul pentru contractele smart, așadar contractele smart sunt reactive.
Codul unui contract smart este executat doar când face apel la o tranzacție sau la un mesaj care este trimis contractului smart. Acest lucru poate fi făcut dintr-un cont extern (deținut de o persoană sau de o companie) care transmite o tranzacție sau alt contract smart care trimite un mesaj contractului smart (acest contract este la rândul său declanșat de o tranzacție sau de un mesaj)
Pe lângă aceasta, informația disponibilă pe un contract smart în timpul execuției este destul de limitată.
Așa cum se spune și în documentația ethereum ”execuția trebuie să fie complet deterministă, singurul context este poziția blockului pe blockchain și toate datele disponibile.” Mai mult ”nu este doar un sandbox, ci complet izolat, ceea ce înseamnă că un cod care lucrează în interiorul EVM-ului nu are acces la rețea, sistem de fișiere sau alte procese. Contractele smart au acces limitat la alte contracte smart.”
Datele disponibile sunt date trimise către contract în tranzacție sau mesaj împreună cu datele din stocarea și memoria contractului.
Un contract smart poate să facă apel la alte contracte smart (balanța contabilă sau alt contract smart), dar intrările repetate nu sunt recomandate de experți și ar trebui să fie folosite doar în ultimă instanță.
În plus, contractele smart pot face doar calcule simple ca adunarea, scăderea și împrțirea. Nu sunt capabile să facă analize de date.
Așadar, când vine vorba de crearea proceselor care implică contracte smart trebuie să știți că deocamdată sunt reactive, au o sumă de informații limitate cu care pot să lucreze, pot face calcule simple și au posibilități limitate de interacțiune. Exemplele, așa cum sunt descrise aici, sunt bazate în primul rând pe contractele smart de la ethereum. Și acum ajungem la ultimul punct important din discuție.
3. CONTRACTUL smart
Nu există un singur contract smart. Așa cum unii fac greșeala să vorbească despre blockchain ca și când ar fi unul singur, fără să spună despre care anume este vorba (bitcoin, ethereum, hyperledger etc), aceeași greșeală se face și pentru contractele smart.
Cele mai multe blockchainuri nu au capabilități de contracte smart deloc, sau dacă au vin cu o formă limitată sau o soluție de lanț paralel.
Funcționalitățile pe care le au contractele smart pot fi diferite în funcție de blockchain.
Așadar, când vine vorba de soluții de design care au nevoie de contracte smart, nu există un singur contract smart la care poți să faci apel. Pentru a crea un contract smart care preîntâmpină cerințele tale, trebuie să fii foarte atent și precis când te hotărăști ce blockchain vei folosi.