Contractele Smart

Unul dintre rolurile importante și vechi ale unei  autorități centrale este să rezolve conflictele între părți. Fie că două persoane au de rezolvat o dispută pentru o palmă de pământ sau rezolvă un acord complicat cu multe clauze, se poate să aibă nevoie de o autoritate din exterior care să le facă dreptate, în conform cu legile jurisdicției din care fac parte.

Procesul în sine este de cele mai multe ori costisitor, atât ca bani cât și ca timp. Pentru a-și asigura cauza pe viitor, oamenii semnează contracte scrise, sub umbrela statului, care să le asigure legitimitatea înțelegerii. Aceste contracte scrise, odată încălcate, dau startul unui proces de cele mai multe ori îndelungat în justiție. Dacă în acest amestec adăugăm și puțină corupție, ceva trafic de influență și un dezechilibru de forțe între cele două părți, atunci avem toate motivele să ne facem griji.

Cât ar fi însă de benefic dacă un contract s-ar putea impune singur? Legile oamenilor nu sunt la fel de stabile ca legile fizicii, însă ar putea ele să fie? Cât de departe se poate merge în acest sens, în câte domenii se poate extinde un contract inteligent și ce ne oprește să lucrăm mai degrabă cu un calculator incoruptibil în loc să ne cerem drepturile în curtea de judecată?

Ce sunt contractele smart?

Contractele smart sunt contracte care teoretic nu pot fi încălcate pentru că sunt impuse de un fel de ”lege a fizicii” virtuală.

Imaginați-vă un univers digital, în care se structurează câteva reguli. Dacă ”alb” se întâlnește cu ”albastru” fuzionează. Dacă ”alb” se întâlnește cu ”alb” se resping, dacă ”albastru” se întâlnește cu ”albastru” se resping. ”Alb” și ”albastru” sunt coordonate de niște reguli pe care nu le pot încălca, pentru că sunt coordonate de un cod care le guvernează. Doar prin schimbarea codului ”alb” poate fuziona cu ”alb” și ”albastru” cu ”albastru”. În acel univers virtual sunt supravegheate aceste acțiuni.

În loc de acest algoritm putem să încercăm să introducem alte ecuații. De exemplu, putem crea un contract de muncă. Alex trebuie să scrie două articole zilnice pe un site, iar la finalul lunii, după ce a făcut munca, trebuie să fie recompensat cu 400 de dolari. Dacă a depășit numărul de articole zilnice, atunci primește un bonus la salariu. Dacă scrie articole pe perioada sărbătorilor șeful i-a mai promis că primește salariu dublu pentru ziua respectivă. În momentul în care ajunge la 1000 de vizite într-o singură zi, primește și un bonus de 400 de dolari.

Alex își îndeplinește obligațiile contractuale, dar va fi el foarte dornic să raporteze la Inspectoratul Teritorial de Muncă faptul că într-una din duminici a lucrat și șeful a uitat să îl plătească ? În plus, șeful trebuie să fie foarte atent să urmărească activitatea lui Alex, iar Alex trebuie să își mențină și el o evidență.

Problema poate fi rezolvată cu un contract smart, preluat după modelul blockchainului bitcoin (sau alte blockchainuri open-source disponibile pe github).

Componentele contractului smart

Componentele unui contract smart pe blockchain se pot vedea foarte clar atunci când faci o tranzacție. Practic, o tranzacție de bitcoin conține toate instrumentele de care ai nevoie într-un contract.

  • Operațiunea

Iată cum funcționează registrul distributiv al bitcoinului.

A trimite suma de 5BTC către B. B primește suma de 5BTC de la A. Ambele operațiuni se înregistrează în registrul distributiv.

Balanța lui A = suma inițială – 5BTC

Balanța lui B = suma inițială + 5BTC

Suma inițială a oricărui participant = suma tuturor tranzacțiilor făcute pe acel portofel

În cazul în care A acceptă să trimită suma de 5BTC către B, B va primi suma de 5BTC.

Acesta este acordul contactual. În termenii de contract smart stabilit în exemplu, șeful trimite o sumă de bani în monedă digitală către Alex la finalul lunii, dacă Alex și-a făcut temele. Adică, dacă acel program cu care au căzut de acord observă că Alex a scris în fiecare zi câte două articole și încă 6 articole în zilele de sărbătoare legală supravegheate de cod, la finalul lunii primește automat suma de bani. La începtul lunii sau anului, șeful introduce în contract o sumă de 3000 de dolari în jetoane digitale. Nici șeful nici Alex nu au acces la banii respectivi decât la finalul lunii, când softul verifică dacă Alex și-a respectat obligația contractuală. Pentru că Alex nu a ajuns la 1000 de vizite pe zi, posibilul bonus se întoarce în balanța șefului. Restul jetoanelor cu care trebuie să fie răsplătit pentru zilele de muncă ajung în balnța lui Alex.

  • Timbrul de timp

Timbrul de timp reprezintă momentul în care se face o operaține, care devine ireversibilă.

A trimite 5BTC către B în data de 19 decembrie 2016, la ora 15:30:29.

Tranzacția este verificată de toate nodurile din rețea și înregistrată ca executată.

B nu mai poate pretinde să primească aceiași bitcoini de la A încă o dată, iar A nu poate să trimită aceiași bitcoini de două ori. S-a înregistrat că A are suma inițială – 5BTC, deci dacă mai vrea să mai facă o tranzacție de 5BTC către B va avea suma inițială – 5BTC – 5BTC.

  • Semnătura

Doar șeful poate trimite suma de bani către Alex și doar Alex poate primi suma de bani pentru munca executată. La fel ca în lumea de carbon, doar angajatul își poate ridica fluturașul de salariu și doar șeful poate să autorizeze plata.

În lumea digitală, să zicem că Alex vrea să falsifice contractul și să primească banii oricum, și dacă a executat munca și dacă nu a executat-o.

Semnătura digitală evită această problemă și explicam cum se face această operațiune în articolul despre votul electronic.

A trimite 5BTC către B, la o dată și oră fixă. A are acces la cont printr-o parolă privată. Semnătura digitală este un algoritm care verifică următoarele aspecte:

  • A are acces la cont pentru că a introdus o cheie privată. Nu se știe care este această cheie privată, dar se știe că A o cunoaște.
  • A a autorizat o tranzacție de 5BTC
  • A a autorizat tranzacția respectivă la ora și data x.

În conformitate cu aceste date, se generează automat o semnătură digitală care se formează algoritmic în funcție de verificarea informațiilor de mai sus. Această semnătură poate fi copiată, însă nu are sens să fie copiată, pentru că duplicarea semnăturii nu înseamnă decât că s-a făcut o tranzacție în trecut.

Alex cunoaște semnătura digitală și vrea să mai primească o dată suma de bani. Alex nu cunoaște cheia privată. Cunoaște suma tranzacționată. Cunoaște și data și ora x, însă datorită faptului că există un timbru de timp ireversibil (deci Alex nu se poate întoarce în timp) semnătura digitală pe care trebuie să o duplice este ora și data x+1, care nu coincide cu semnătura digitală pe care el o are.

Deci Alex poate să încerce să falsifice semnătura digitală, însă acesteia îi lipsesc două componente importante – nu are cheia privată (pe care doar șeful o are) și îi este imposibil să mai înregistreze încă o dată data și ora x. Pentru că timpul curge liniar, nu poate obține decât x+1. Semnătura digitală va fi deci diferită și va fi identificată ca fiind falsă de către rețea.

Tot datorită timbrului de timp, nici șeful nu mai poate să facă tranzacția reversibilă. A introdus suma de bani pe care o datorează, iar aceasta se execută în concordanță cu termenii contractului. Dacă Alex și-a făcut treaba, codul de contract smart care este incoruptibil este obligat să îi plătească lui Alex suma de bani și nu o va întoarce către angajator.

Nici unul dintre ei nu mai poate astfel să îl păcălească pe celălalt, nici unul nu se va simți nedreptățit și nu vor mai ajunge în fața autorităților să le rezolve problema.

  • Jetoanele valide

În lumea non-virtuală, cea în care trăim, suntem plătiți în bani peșin, o variantă convenabilă și supravegheată de instituțiile statului. În cea virtuală, este nevoie de bani electronici, fie că vorbim despre o sumă de bani care ne apare pe cardul bancar sau de monedă digitală.

Cele două părți cad de acord cu privire la forma de plată – bani din contul bancar, jetoane de genul ethereum (despre care o să vorbim mai târziu în articol), bitcoin sau alte monede digitale valide. Alex trebuie doar să se asigure că acele jetoane sunt valide. Adică 1 – că poate să le schimbe oricând, fără restricții, în bani acceptați de statul în care se află și/sau 2 – că poate să cumpere produse cu acele monede.

Ce lipsește?

Pentru ca un contract smart să fie posibil de implementat, este nevoie de o platformă de noduri.

Nodurile sunt deosebit  de importante într-o rețea bazată pe blockchain. Nodurile sunt practic o rețea uriașă de dispozitive care, prin puterea lor de procesare, verifică fiecare informație introdusă în rețea. Odată ce nodurile au verificat legitimitatea tranzacției, aceasta devine incoruptibilă. Cu alte cuvinte, dacă doi oameni îți spun să te culci, te duci să te culci. Aici nu este vorba de doi oameni, este vorba de o putere de procesare mare, care nu are competiție, și care înregistrează în același timp că Alex din România și-a respectat obligațiile contractuale, că Allison din Marea Britanie, care depune și ea o muncă asemnănătoare cuantificabilă și-a respectat și ea niște obligații stabilite printr-un contract, că în Franța Julien și-a făcut treaba și așa mai departe. Fiecare om înscris în rețea verifică în mod distributiv toate operațiunile din rețea.

O astfel de platformă la care să se ralieze mai mulți oameni cu dispozitivele lor nu există încă, în mod pragmatic și funcțional, însă se lucrează la ea. Ethereum a fost doar unul dintre experimentele care au încercat o formulă și a eșuat.

Dacă nu există mai multe noduri care să verifice operațiunile, atunci rețeaua poate fi spartă.

Fricțiuni la întâlnirea cu lumea de carbon

Bun, Alex face o muncă în lumea virtuală, scrie niște articole pe un site. Majoritatea contractelor între părți implică însă obiecte fizice – furnizare de mărfuri, contracte imobiliare etc.

Aici lucrurile se complică și ajung să arate de-a dreptul futurist. Chiar sunt futuriste, dar viitorul nu este atât de îndepărtat pe cât s-ar crede. Fiecare dintre noi dispune de un dispozitiv mobil smart – telefon, laptop, tabletă. Antonio Eram dădea un exemplu în interviul dat pentru ziarul Adevărul. Contractul tău smart stipulează că trebuie să furnizezi un camion de lemne către firma X din Ploiești. Șoferul camionului are cu siguranță un dispozitiv mobil, un telefon de serviciu sau un GPS. În momentul în care a trecut de porțile firmei din Ploiești cu camionul plin cu lemne, funcția de GPS înregistrează că acesta se află acolo unde trebuie iar contractul smart se execută. Ce se întâmplă dacă lemnele sunt putrezite, sau în cantitate mai mică decât cea stabilită? În urma CTC-ului, se stabilește dacă s-au respectat sau nu obligațiile contractuale și lemnele sunt plătite, după ce administratorii firmei dau semnătura digitală. Ideea care trebuie verificată este – are firma din Ploiești fonduri pentru a plăti lemnele? Da, pentru că acestea au fost blocate printr-un contract smart undeva la mijloc între părți, fără ca vreunul dintre participanți să aibă acces la ele până când contractul nu se execută. Când contractul se execută și lemnele ajung în siguranță la firma din Ploiești, banii sunt elibarați automat către distribuitor. Dacă însă administratorul firmei din Ploiești nu este mulțumit, atunci banii se întorc în contul lui iar lemnele rămân în tir.

Cele două părți nu mai au nevoie de un notar sau de asistență juridică, pentru că acel contract smart se autoexecută.

Nu este greu să ne imaginăm că, datorită ultimului val în Internet of Things am putea să vedem o dezvoltare direct proporțională și noi posibilități și pentru contractele smart. Încuietoarea tirului cu produse poate să fie inteligentă și să reacționeze pozitiv când este deschisă cu semnătura digitală a celor din Ploiești, de exemplu. Cântarul industrial de lemne poate fi inteligent și poate trimite informația că da, cantitatea de produse furnizate este conformă. Poate că implementarea IoT este cea mai intimidantă, însă pot să vă spun că la casa bunicilor am preferat să pun un senzor de mișcare la sistemul de iluminare pentru că aceștia au artroză și le vine greu să își ridice mâna să aprindă becul. Era o variantă mai ieftină decât să mut întrerupătoarele cu 50 de centimetri mai jos ca să nu facă ei eforturi. Un simplu telefon vechi îmi supraveghează pisoii când plec în vacanță. IoT nu este atât de departe pe cât se crede și nici atât de dificil sau costisitor pe cât ne-am închipui, atâta timp cât ai un programator isteț.

Rețeaua Ethereum

Nu trebuie să gândim contractele smart ca ceva simplu de implementat și care nu se face pentru că nu există suficientă voință. Este un proces dificil, care implică mai multe aspecte și care trebuie testat și șlefuit, pentru a vedea ce probleme pot apărea.

Cea mai importantă încercare de a crea contracte smart este cea făcută de The DAO pe rețeaua Ethereum a lui Vitalik Buterin. Chiar dacă aceasta a eșuat, este interesant de văzut ce i-a lipsit și de ce nu a funcționat.

The DAO introducea jetoane numite ether. Etherul este o monedă digitală la fel ca și bitcoinul, înregistrată pe market cap și care se poate vinde pentru fiat fără restricții. Este deci o monedă digitală viabilă pe piață. Fiecare participant la rețea avea o sumă mai mică sau mai mare de ether, care reprezintă jetoane de vot. Ponderea votului este în concordanță cu suma de ether de care dispune votantul.

Contractul smart care guverna rețeaua prevedea un soi de Kickstarter pentru dezvoltatorii blockchain. Cineva vine cu un proiect bazat pe blockchain. Restul comunității înscrise în The DAO poate vota dacă acel proiect trebuie susținut financiar sau nu, la fel ca acționarii într-o firmă. În momentul în care un proiect este votat ca fiind de viitor, dezvoltatorii primesc suma de ether de la The DAO pentru a-și pune în aplicare planul. Practic, se administra o societate pe acțiuni descentralizată, fără un cap central, bazată pe cod, deci pe un contract smart.

Contractul smart prevedea o sumă relativ simplă de articole guvernatoare.

Mulți dintre cei care au auzit de The DAO și de scandalul care a ruinat ideea cred că The DAO a fost victima unui atac de la hackeri. Nu este de fapt adevărat și nici posibil să spargi o astfel de rețea. Ceea ce s-a întâmplat a fost exploatarea unei vulnerabilități. În termenii legali care poate vă sunt mai la îndemână, cineva a observat o tehnicalitate pe care a exploatat-o. Practic, a făcut o operațiune care, din greșeală, era permisă de cod și prin care a putut să sifoneze sume mari de bani din The DAO.

Acestea sunt situații care trebuiesc prevăzute din timp. Este codul suficient de solid cât să nu poată fi speculat de părți? A prevăzut situații excepționale? De exemplu, dacă Alex atinge 3000 de vizite cu ajutorul unei ferme de clickuri, va primi de trei ori bonusul sau acțiunea lui va fi identificată ca fiind falsă?

Genul acesta de probleme apar și în contractele tradiționale. Problema cu contractul smart de la The DAO este că s-a avântat pe un teritoriu necunoscut fără plasă de siguranță. Într-o primă etapă, contractele smart ar trebui, după mai multe păreri, să fie dublat de un contract juridic tradițional.

Unde se mută puterea?

Contractele smart mizează pe blockchainul descentralizat.  Asta înseamnă că nu există un creier central ci mai mulți supraveghetori care nu fac altceva decât să supravegheze automat, cu ajutorul puterii de procesare, operațiunile.

Tradițional, avem notarii și instituțiile statului care fac acest lucru în baza unei legislații create de legislatori. Prin contractele smart, vom avea participanții la rețea care să supravegheze validitatea operațiunilor, în baza unor legi făcute prin cod, de programatori.

Așadar, peste câteva generații de contracte smart (nu câteva generații de programatori) puterea și costurile vor trece de la notari și instituții la programatori care își cunosc bine codul. Ei vor deveni generatorii de legi, iar contractele lor vor putea să fie verificate și folosite pe același sistem open-source.

Programatorul talentat ar putea deci să devină o instituție într-un stat mai puțin centralizat, excepțional de bine plătit după ce a muncit o dată și a dezvoltat lumea pentru tot viitorul.

Ideea este să facem pași mici, să testăm și să reglementăm un singur contract smart care rezolvă o singură problemă – contractele de muncă în mediul virtual. După aceea, se poate construi peste o astfel de dezvoltare la infinit.

Închei aici seria de idei propuse viitorilor miliardari. Oricine va reuși să finalizeze una dintre aceste idei, are posibilitatea să ajungă la calibrul la care sunt Bill Gates sau Mark Zuckerberg. Ne așteptăm ca ora exactă să se dea din Silicone Valley, dar să nu uităm că dezvolatrea nu se face doar acolo și că România are programatori foarte competenți. Succes!

Partea 1 – Competiția pentru banii fiat 

Partea 2 – Administrarea banilor publici

Partea 3 – Votul electronic