Tezos și-a făcut intrarea în lumea crypto printr-un ICO în cadrul căruia a adunat 232 milioane de dolari, un record la acea vreme. Din momentul ICO, data lansării a fost amânată permanent din cauza unor jocuri de culise și a altor conflicte. Între timp, Tezos a fost lansat oficial în septembrie 2018 și a venit timpul să vedem ce ascunde acest proiect interesant.
Tezos
Conform descrierii de pe pagina lor web, „Tezos este un blockchain descentralizat nou, care se autoguvernează prin crearea unei adevărate comunități digitale”.
Comunitatea este un grup care alege să se unească din cauza unor scopuri și interese comune. Principalul scop al Tezos este ca proprietarii de token să colaboreze în luarea unor decizii care, cu timpul, pot îmbunătăți protocolul. Token-ul nativ al Tezos este XTZ.
Tezos are multe caracteristici care îl fac unic – despre care vom vorbi mai încolo. Dar pentru moment, să vedem
A Tezosban nagyon sok olyan szolgáltatás létezik, amely egyedivé teszi azt. Most eljött az ideje hogy bemutassuk a projekt valódi hátterét.
Scurtă istorie a Tezos
Cofondatorii Arthur Breitman și Kathleen Breitman au început dezvoltarea Tezos încă din 2014, împreună cu un grup principal de dezvoltatori. Sediul companiei se află în Elveția. Conform celor spuse la început, a reușit să adune, în doar două săptămâni, 232 milioane de dolari printr-un ICO deschis, acceptând atât plățile în bitcoin, cât și cele în ether. La scurt timp după acest ICO istoric, Tezos s-a lovit în primul rând de o mulțime de probleme de management. Pentru a le înțelege originea, trebuie știut că numele companiei care a fondat Tezos este DLS (Dynamic Ledger Solutions), iar compania care deține toate fondurile adunate în cadrul ICO se numește ”Tezos Foundation”.
Arthur și Kathleen Breitman au intrat în conflict public cu președintele Tezos Foundation, Johann Gevers. Aparent, Gevers a refuzat să pună fondurile la dispoziția perechii Breitman. Disputa a produs o gravă dezordine în rândul comunității, iar cursul de schimb estimat a scăzut. Cei doi Breitman au făcut o declarație usturătoare în legătură cu Gevers, care a inclus cuvinte ca „uneltire, promovare de sine și conflict de interese”.
În cele din urmă, după o dramă prelungită și o atenție nedorită din partea presei, Gevers a părăsit compania, primind mai mult de 400.000 de dolari ca și compensare. Acum, se pare că lucrurile au intrat pe un făgaș normal.
Construcția Tezos
Nu se poate răspunde cu exactitate la întrebarea „ce este tezos?”. Blockchain-ul Tezos utilizează, numit ”Network Shell”. Acesta îi permite să dezvolte un sistem modular cu un registru auto-modificabil. Un protocol blockchain general se divide în trei straturi:
Protocol de rețea: Acesta este protocolul de transmitere, responsabil de fluxul de date dintre noduri.
Protocol de tranzacție: Acest strat de tranzacție stabilește modelul de contabilitate pe care îl implementează blockchain-ul.
Protocol de consens: Acesta vorbește de la sine. El definește protocolul de consens care ajută blockchain-ul să ajungă la acorduri privind starea tranzacțiilor.
În Tezos, ultimele două protocoale – de Tranzacție și de Consens – formează împreună Protocolul Blockchain (Blockchain Protocol). Network Shell ajută la comunicarea dintre protocolul de rețea și cel blockchain.
Cele două conturi Tezos
În Tezos există două feluri de conturi:
- Implicite
- Generate
Conturi implicite
Acestea sunt cele mai frecvente conturi din Tezos. Ele încep cu tz1 – de exemplu, tz1cJywnhho2iGwfrs5gHCQs7stAVFMnRHc1). Acesta este un cont simplu generat de o pereche de chei publice/private. Adresa publică tz1 provine de la cheia publică și fiecare cont tz1 are cheia sa privată. Aceste conturi au un titular/proprietar și un sold.
Conturile implicite nu pot avea un împuternicit. Pentru a delega fonduri, ele vor trebui transferate pe un cont generat și pe urmă va putea fi numit un împuternicit.
Conturi generate
Alături de conturile implicite, există conturi pentru contracte smart denumite conturi generate. Acestea încep cu KT1 (de exemplu, KT1Wv8Ted4b6raZDMoepkCPT8MkNFxyT2Ddo). Conturile generate au yrmătoarele câmpuri:
Administrator – Este cheia privată a contului
Sumă – Totalul Tz de pe cont
Delegabil – Dacă suma din cont poate fi sau nu delegată pentru baking (procesul de validare)
Câmpuri delegat – Informații despre cui i-a fost încredințat contul
Un cont generat își poate delega fondurile unui cont implicit al baker – despre bakeri vom vorbi mai încolo.
Tezos are trei aptitudini unice:
- Guvernare pe lanț și auto-modificare.
- Mecanism de consens Liquid proof of stake.
- Contracte smart cu verificare oficială.
Să le luăm pe rând.
Guvernare pe lanț și auto-modificare
Pentru a putea înțelege importanța guvernării pe lanț și a auto-modificării, trebuie să cunoaștem ce înseamnă fork în comunitatea crypto.
Fork este o împrejurare prin care blockchain se împarte în lanțuri unde o parte a rețelei arată o perspectivă diferită asupra istoricului tranzacțiilor față de cealaltă parte a rețelei. Fundamental, un fork este divergența stării blockchain. Acesta poate fi realizat prin soft fork sau hard fork.
Ce este soft fork?
Dacă un lanț trebuie actualizat, există două căi de realizare: soft fork sau hard fork. Gândește-te la soft fork ca la o actualizare software care este compatibilă și retroactiv. Ce înseamnă asta? Să presupunem că rulezi programul MS Excel 2005 pe laptop și dorești să deschizi un tabel fabricat în MS Excel 2015 – îl vei putea deschide fiindcă MS Excel 2015 este compatibil retroactiv.
Dar, toate acele actualizări de care te poți bucura în versiunea mai nouă, nu vor fi vizibile în versiunea mai veche. Întorcându-ne la analogia tabelelor MS Excel, să presupunem că avem la dispoziție o caracteristică prin care putem integra GIF-uri în versiunea 2015, dar pe care nu le poți vedea în versiunea 2005. Fundamental, vei vedea toate textele dar nu și GIF-ul.
Ce este hard fork?
Diferența de bază dintre soft și hard fork este că cel din urmă nu este compatibil retroactiv. După ce a fost executat, nu te mai poți întoarce la el. Dacă nu te conectezi la versiunea modernizată a blockchain, nu vei putea accesa nicio actualizare și nu vei putea intra în legătură cu utilizatorii noului sistem. Gândește-te la PlayStation 3 și Playstation 4. Nu poți rula jocuri PS3 pe PS4 și invers, PS4 pe PS3.
Andreas Antonopoulos descrie diferența dintre hard și soft fork în felul următor: Dacă un restaurant vegetarian decide să adauge carne de porc în meniu, se consideră ca fiind hard fork. Dacă decide adauge preparate vegan, cine este vegetarian are opțiunea consumării de mâncăruri vegan, dar acolo vor putea mânca atât vegetarienii, cât și consumatorii de carne – acesta este un soft fork. Ideea e că aceste fork-uri se petrec mereu și nu sunt neapărat un lucru rău. Toate sistemele și platformele trebuie actualizate în vederea evoluării, iar acest lucru atrage după sine fork-uri, atât soft cât și hard. Probleme apar doar în cazul hard fork care împart comunitatea.
Cele mai elocvente exemple sunt hard fork-urile suferite de Bitcoin și Bitcoin Cash. Bitcoin a fost împărțit în Bitcoin și Bitcoin Cash, iar pe urmă și Bitcoin Cash s-a împărțit în Bitcoin Cash și Bitcoin SV – această din urmă divizare a fost destul de urâtă și a atras după sine așa-zisele „războaie hash” (hash wars).
Războiul hash
Practic, acesta a avut loc între cele două lanțuri care și-au utilizat puterea de hash pentru a mina cel mai lung lanț. Cel cu lanțul mai lung se presupune că va deveni lanțul Bitcoin Cash predominant. Această dispută inutilă a împărțit în totalitate comunitatea crypto și valoarea întregii piețe a scăzut. Chiar mai rău, și comunitatea Bitcoin Cash s-a împărțit în două.
Este exact ce a vrut să evite Tezos.
După cum a subliniat Kathleen Breitman, „marea ironie a Bitcoin e că acesta este de fapt un instrument pentru consensul comunității, dar atrage după sine o cantitate enormă de animozitate. Tezos permite ca inovația să aibă loc sistematic, spre deosebire de alte politici. Nu vei găsi doi oameni care să deteste politica mai mult decât Arthur și cu mine. Aceasta este ideea din spatele Tezos: să formalizăm acest proces informal extraordinar”.
Cum diminuează Tezos efectele?
Tezos diminuează efectele hard fork-urilor contestate prin auto-modificare și guvernarea pe lanț. Auto-modificarea înlesnește modernizarea blockchain-ului , fără a fi necesar un hard fork. Guvernarea pe lanț înseamnă votul pe platformă asupra modificărilor propuse. Prin combinarea acestor două procesul de vot poate fi modificat conform necesităților. Părțile interesate ale sistemului vor avea grijă de vot. Construcția acestui sistem permite evoluția lină a blockchain-ului, în loc de a avea loc un hard fork.
Cum funcționează asta exact?
Dezvoltatorii trimit propuneri – independent – de actualizare a protocolului și solicită recompensa pentru munca efectuată. Această solicitare privind compensarea muncii asigură că dezvoltatorii au o puternică stimulare economică în vederea contribuției la ecosistem. Propunerile trec printr-o perioadă de testări – comunitatea testează protocolul și stabilește posibilele îmbunătățiri. În urma testărilor repetate, deținătorii de token Tezos pot vota dacă aprobă sau nu propunerea.
După ce s-a decis asupra unei actualizări legitime, în protocol are loc un „hot swap”, care va iniția noua versiune a protocolului.
Din cauza acestui sistem, protocolul este actualizat în mod pasiv, descentralizat. Fiecare actualizare de protocol trece prin mai multe perioade de testări și primește un feedback relevant din partea comunității. Astfel se asigură că orice îmbunătățiri ar avea loc, ele au aprobarea majorității comunității. Aceasta împiedică divizarea comunității prin hard fork.
Liquid proof of stake
Mecanismul de consens este inima și sufletul rețelei descentralizate. Nu are rost să conectăm o grămadă de noduri printr-o rețea de bandă largă, dacă nu există o metodă concretă de comunicare între ele și de luare a deciziilor. atunci când Satoshi Nakamoto a creat Bitcoin, el a integrat în acesta mecanismul de consens proof-of-work. Ideea mecanismului PoW este una simplă:
- A dispune de mineri care își folosesc capacitatea de calcul pentru a rezolva puzzle-uri criptografice dificile.
- Recompensarea minerilor care reușesc să rezolve aceste puzzle-uri.
Atât de simplu. Aceste puzzle-uri sunt atât de dificile încât necesită, în general, o putere de calcul însemnată. În timp ce PoW a fost cu siguranță eficace atunci când a pornit, are totuși multe neajunsuri. Înainte de toate, proof of work este un proces extrem de ineficient din punct de vedere al cantității de putere și energie consumate.
Persoanele și organizațiile care își permit echipamente ASIC mai rapide și puternice au, în general, mai multe șanse în minat decât ceilalți. PoW duce la centralizare. Dar pentru a corecta problemele PoW, a fost creat un nou protocol de consens denumit proof of stake sau PoS.
Ce este proof of stake?
Acest protocol transformă întregul minat într-un proces virtual și înlocuiește minerii cu validatori. Funcționează în felul următor:
- Validatorii trebuie să blocheze o parte a monedelor sub formă de miză;
- Pe urmă, ei încep validarea blocurilor – ceea ce fundamental înseamnă că atunci descoperă un bloc care cred că merită adăugat la blockchain, îl vor valida plasând o miză pe acesta;
- Dacă blocul este anexat, validatorii vor primi o recompensă proporțională cu mizele lor;
- În caz că mizezi pe un bloc greșit sau rău intenționat, miza va fi confiscată.
Poate fi de asemenea problematic, fiindcă implică în continuare întreaga comunitate și s-ar putea să nu fie cea mai scalabilă metodă. Acesta este motivul pentru care multe blockchain-uri moderne – ca EOS, Cardano, Lisk, NEO, etc. – sunt construite prin utilizarea unui protocol delegated, unde un număr fix de delegați este ales dinainte. Aceștia sunt singurii responsabili de consens și de bunăstarea generală a rețelei.
Mecanismul de consens Tezos este asemănător, însă există o mică diferență. În locul delegării absolute, Tezos implementează modelul democrației lichide/delegative (liquid democracy) în mecanismul său de consens.
Cum funcționează democrația lichidă?
Acesta este un sistem fluidizează tranzițiile între democrația directă și cea reprezentativă. Procesul are următoarele calități:
- Oamenii pot vota direct în legătură cu directivele lor;
- Oamenii pot transfera atribuțiile lor de vot unui delegat, care va vota asupra directivelor în locul lor;
- Delegații pot încredința atribuțiile lor de vot altui delegat, care va vota în numele lor. Această proprietate prin care delegații pot numi propriul delegat se numește tranzitivitate;
- Dacă o persoană care a încredințat votul său unui delegat nu agreează alegerea făcută de către acesta, își poate lua votul înapoi, urmând să voteze el însuși asupra directivelor.
Care este avantajul democrației lichide?
- Votul fiecărei persoane contează și joacă un rol în stabilirea directivelor finale;
- Ca să devii delegat, tot ce trebuie să faci este să câștigi încrederea oamenilor. Nu este necesar să cheltui milioane de dolari pe campanii electorale. Din această cauză, bariera în calea intrării este relativ mică;
- Opțiunea oscilării între democrația directă și cea delegativă permite ca grupurile minoritare să fie reprezentate mult mai echitabil;
- În final, aceasta are un model scalabil. Cine n-are timp să voteze despre directive, își poate transfera responsabilitățile de vot în mod simplu.
Ce este deci liquid proof of stake(LPoS)?
Spre deosebire de DPoS (delegated proof of stake), nu există vreo regulă conform căreia delegatul trebuie selectat neapărat. Depinde în totalitate de participanți ce doresc să facă. Să vedem ce este LPoS.
Tezos utilizează liquid proof of stake, care necesită depunerea unui anumit număr de token Tezos pentru participarea la consensul blockchain. Procesul depunerii token-urilor Tezos (XTZ) se numește baking.
Proprietarii de token, denumiți „bakers”, pot transfera drepturile lor de validare altor proprietari de token, fără a transfera și dreptul de proprietate. Față de EOS, delegarea este opțională.
Blocuri Baking
Poți căuta și adăuga blocuri la blockchain-ul Tezos prin procesul denumit „baking”. Acesta funcționează în felul următor:
- Bakers vor primi drepturile lor de publicare a blocului pe baza mizei/depozitului lor;
- Fiecare bloc va suferi un baking (va fi validat) din partea unui baker ales aleatoriu, urmând a fi confirmat de alți 32 bakers (tot aleși aleatoriu);
- Dacă blocul este corespunzător, acesta va fi adăugat la blockchain;
- Acel baker care a avut succes va primi o recompensă de bloc și va putea percepe taxe pentru toate tranzacțiile din interiorul blocului.
Cum spuneam mai înainte, proprietarii de token au posibilitatea încredințării dreptului lor de baking altor deținători de token, fără a renunța la dreptul de proprietate. După completarea procesului de baking, baker-ul va împărți recompensa cu restul delegaților.
Contracte smart și verificarea oficială
Codarea Tezos s-a realizat prin utilizarea limbajului de programare OCaml. Contractele smart ce urmează să se deruleze pe Tezos sunt create prin utilizarea Michelson. De ce sunt interesante aceste două limbaje de programare? Ambele sunt limbaje funcționale.
Limbajele de programare aparțin de două familii:
- Imperative
- Funcționale
Limbaje de programare imperative
În acest caz, programatorul trebuie să descrie toți pașii de care calculatorul are nevoie în vederea atingerii scopului. Toate limbajele de programare tradiționale – ca C++, Java și Solidity – sunt limbaje de programare imperative. Această abordare privind programarea mai este denumită și programare algoritmică.
Să luăm un exemplu și să ne uităm la C ++. Să presupunem că dorim să adăugăm numerele 5 și 3.
Astfel, int a = 5;
int b = 3;
int c;
c = a + b.
După cum vezi, procesul adunării necesită mai mulți pași, iar fiecare pas schimbă constant starea programului, întrucât fiecare este executat pe rând, în mod individual.
Procesul cuprinde patru pași:
- Declararea unui număr întreg A și atribuirea valorii 5 acestuia.
- Declararea unui număr întreg B și atribuirea valorii 3 acestuia.
- Va fi declarat și un număr întreg C.
- Adunarea valorilor A și B și stocarea lor în C.
Limbaje de programare funcționale
A doua mare familie a limbajelor de programare sunt limbajele de programare funcționale. Acest stil de programare a fost creat în vederea dezvoltării unei abordări funcționale privind rezolvarea problemelor. Acest tip de abordare o numim programare declarativă.
Cum funcționează programarea funcțională?
Să presupunem că avem o funcție f (x), pe care dorim să o utilizăm pentru calcularea unei funcții g (x), iar pe urmă dorim să o folosim la funcția h (x). În loc să le rezolvăm în ordine, le vom „împacheta” într-o singură funcție de genul:
h (g (f (x)))
Din punct de vedere matematic, aceasta facilitează abordarea funcțională. Acesta este motivul pentru care se presupune că programele funcționale reprezintă o cale mai sigură pentru crearea contractelor smart. Aceasta ajută și verificarea formală mai simplă, ceea ce înseamnă (în mare) că este mai simplu de dovedit matematic ce face un program și cum funcționează.
Dacă luăm un exemplu din lumea reală vom vedea de ce poate deveni extrem de critic și providențial în anumite situații.
Să presupunem că programăm un sistem care dirijează traficul aerian. Așa cum îți poți imagina, programarea unui astfel de sistem necesită multă precizie. Nu efectuăm programarea la întâmplare, fiindcă este vorba de viața oamenilor. În asemenea cazuri avem nevoie de un cod/program care este dovedit că funcționează cu un înalt grad de certitudine matematică.
De aceea este atât de dorită abordarea funcțională. Acesta este motivul pentru care Tezos utilizează OCaml, iar contractele lor smart limbajul de programare Michelson.
Avantajele abordării funcționale
Să vedem care sunt avantajele abordării funcționale:
- Ajută la crearea unui cod de înaltă securitate, fiindcă este mai ușor de dovedit matematic cum va funcționa acest cod;
- Sporește lizibilitatea și mentenabilitatea deoarece fiecare funcție a fost concepută pentru îndeplinirea unei sarcini specifice;
- A refracta un cod este mult mai simplu de realizat, iar orice schimbări produse sunt mai ușor de implementat. Aceasta ajută dezvoltarea repetată;
- Funcțiile individuale sunt simplu de izolat, ceea ce ușurează testarea și căutarea erorilor.
Informații suplimetare în legătură cu Michelson
Michelson este un limbaj puternic tipizat, pa bază stack.
erősen tipizált, stack-alapú programozási nyelv. Az Ethereumban az okos szerződéseket Solidity vagy Viper formában írják le, és az EVM byte kódba fordítják le őket, amelyet az Ethereum virtuális gépen (EVM) hajtanak végre. A Tezosban nincs szükség felesleges extra lépésre, és maga a Michelson kód fut a Tezos virtuális gépen.
Mi az előnye ennek a megközelítésnek? Az emberek könnyen elolvashatják a kódot, ez pedig elősegíti a helyesség-igazolások felépítését, és segít elkerülni a hibákat.
Un exepmlu de contract Michelson
parameter (pair (lambda int int) (list int));
return (list int);
storage unit;
code { DIP{NIL int};
CAR;
DUP;
DIP{CAR; PAIR}; # Unpack data and setup accumulator
CDR;
LAMBDA (pair int (pair (lambda int int) (list int)))
(pair (lambda int int) (list int))
# Apply the lambda and add the new element to the list
{ DUP; CDAR;
DIP{ DUP; DIP{CDAR}; DUP;
CAR; DIP{CDDR; SWAP}; EXEC; CONS};
PAIR};
REDUCE; CDR; DIP{NIL int}; # First reduce
LAMBDA (pair int (list int))
(list int)
{DUP; CAR; DIP{CDR}; CONS};
REDUCE; # Correct list order
UNIT; SWAP; PAIR} # Calling convention
Concluzie
Tezos este un proiect interesant, din păcate pus în umbră de drama din culise. Acest proiect a meritat o descriere mai detaliată fiindcă aduce câteva beneficii în spațiul blockchain. Rămâne de văzut dacă poate justifica zarva pe care a creat-o ICO-ul său.