Ce este blockchain-ul Neo?
Neo era cunoscut mai demult sub numele Antshares, iar mulți l-au poreclit „Ethereum-ul chinez”. Deși se aseamănă cu Ethereum, dispune de calități interesante care trebuie analizate în detaliu. În această prezentare vom aprofunda subiectul NEO.
Istoria blockchain-ului Neo
Conform paginii lor web, Neo este „un proiect blockchain non-profit condus de comunitate, care utilizează tehnologie blockchain și identitate digitală pentru digitalizarea instrumentelor, în vederea automatizării funcționării acestora prin contracte smart și realizarea economiei smart.”
Scopul Neo constă în crearea unui sistem distribuit smart economy, după cum urmează:
Instrumente digitale + Identitate digitală + Contracte smart = Economie smart.
Neo a fost lansat în 2014 de perechea care a fondat compania blockchain „Onchain”, compusă din Da Hongfei și Erik Zhang. În 2016, Onchain a ajuns în top 50 companii fintech chineze. Echipa Neo este condusă de directorul OnChain, Da Hongfei.
Proiectul Neo a fost finanțat prin două ICO -uri (initial coin offering). Prima rundă a avut loc în 2015 octombrie și a durat 10 zile, iar în cadrul acesteia s-au vândut 17,5 milioane de token NEO, în valoare de 550.000 de dolari. Restul de 22,5 milioane de token NEO s-a vândut printr-un al doilea ICO, pentru 4,5 milioane de dolari.
Neo și economia smart
Pagina web a Neo arată că cele trei componente ale economiei smart sunt:
-Instrumentele digitale.
-Identitatea digitală.
-Contractele smart.
Instrumente digitale
Instrument digital poate fi tot ce există în format binar și este autorizat pentru utilizare. E important ca o entitate digitală să primească acest „drept de utilizare”, ca să poată fi considerată instrument digital. Cu toate că instrumentele digitale pot exista într-un mediu centralizat, utilizarea lor poate fi riscantă.
Odată cu apariția blockchain, deținerea acestora a devenit mult mai sigură. Tehnologia blockchain asigură digitalizarea instrumentelor în mod descentralizat, sigur și fără contribuția unei a treia părți.
Există două forme ale instrumentelor digitale:
- Instrumente globale – Acestea sunt recunoscute de către întreaga rețea și de către toate contractele smart, iar clienții pot fi identificați.
- Instrumente contractuale – Pot fi utilizate doar în contracte separate, nefiind valabile și pentru alte contracte. De exemplu, GNT (golem token) poate fi utilizat în Golem, dar în Bancor deja nu.
Blockchain-ul Neo și identitatea digitală
Identitatea digitală este descrisă de Wikipedia în felul următor:
Identitatea digitală este reprezentarea unui set de opinii și de convingeri pe care un subiect digital le are despre sine și despre alți subiecți digitali. Subiectul poate fi persoană, organizație, aplicație sau instrument. Standardul ISO / IEC 24760-1 definește identitatea ca „un set de atribute ce se leagă de o entitate”.
Ca digitalizarea instrumentelor să funcționeze, este primordial ca identitatea digitală a acestora să fie de încredere. Platformele NEO utilizează standardul de identitate digitală X.509, modelul de emitere de certificate digitale acceptat la scara cea mai largă ce se bazează pe infrastructura cheii publice. Pe lângă standardul amintit, susțin de asemenea și modelul point-to-point de emitere a certificatelor al Web of Trust.
În NEO, verificarea identității se efecutează prin:
-Trăsături faciale
-Amprente
-Voce
-SMS
-Alte metode cu mai mulți factori
Contracte smart
Contractele smart sunt contracte automate. Ele execută (în mod independent) instrucțiunile speciale programate în codul lor, la îndeplinirea condițiilor stabilite.
Ce calități avantajoase am dori să includem în ele?
Trebuie să avem în vedere că elementelele de pe blockchain trebuie să fie ireversibile și capabile să ruleze prin mai multe noduri, fără a le periclita integritatea. Ca urmare, funcționalitatea contractelor smart este dată de următoarele trei calități:
-Determinism
-Finalitate
-Izolare
1. Determinism
Un program este determinist dacă în urma introducerii unei valori date ne furnizează același rezultat de fiecare dată. De exemplu, dacă 3 + 1 = 4, atunci 3 + 1 va fi ÎNTOTDEAUNA 4. Astfel, atunci când în urma introducerii unui set inițial de date un program ne oferă același rezultat pe diverse calculatoare, acesta este numit determinist. Există însă situații în care un program nu va funcționa în mod determinist – de exemplu, dacă un programator introduce un algoritm nedeterminist sau date nedeterminate.
La fel, dacă un program obține date în timpul rulării, iar sursa lor nu poate fi determinată, acel program nu va fi determinist. Să presupunem că un program utilizează lista top 10 căutări de pe Google ca parte a unei interogări. Această listă se modifică constant.
Putem avea și cazuri de apeluri dinamice (dynamic calls). Dacă un program face apel la un alt program, acest lucru se numește apel dinamic. Deoarece scopul apelului este determinat doar în timpul executării (programului), va avea o natură nedeterministă.
2. Finalitate
În matematică, teoria calculabilității analizează o eroare pe care o numim „problema opririi”, atunci când un calculator nu știe dacă programul își poate executa funcția într-un termen stabilit. Alan Turing a dedus în 1936, folosindu-se de teoria mulțimilor elaborată de Georg Cantor, că nu există vreun mod ca să afle dacă un anumit program poate fi sau nu finalizat într-o limită de timp. Aceasta este și problema contractelor smart, fiindcă, prin definiție, contractele trebuie să fie capabile de a fi finalizate într-un termen stabilit. Există însă diferite măsuri pe care le putem lua în vederea terminării unui contract, ceea ce ne ajută să nu intrăm într-un ciclu nesfârșit:
- Teorema de incompletitudine a lui Turing – un blockchain incomplet Turing va avea funcționalitate limitată și nu va fi capabil de cicluri sau salturi; putem evita astfel să se formeze cicluri care nu se mai termină.
- Contorul de trepte și taxe – programul va putea urmări cu ușurință „pașii” efectuați (număr comenzilor executate), iar în cazul contabilizării unui număr stabilit, va termina contractul. Contorul de taxe este o altă soluție. Aici contractele sunt executate prin taxe plătite dinainte. Executarea fiecărei comenzi va necesita taxe diferite. Dacă valoarea sumei cheltuite depășește valoarea taxei plătite în avans, contractul va înceta.
- Temporizatorul – va fi utilizat un cronometru/temporizator prestabilit. Dacă executarea contractului depășește termenul, acesta va fi întrerupt din extrior.
3. Izolare
Oricine poate introduce un contract smart în blockchain. Chiar de aceea, contractele pot conține, voit sau întâmplător, viruși sau erori. Dacă nu este izolat, contractul poate perturba întreaga rețea. Astfel, este indispensabil ca, în vederea protejării ecosistemului de efectele negative, contractele să fie păstrate în mod izolat.
După ce-am făcut cunoștință cu aceste caracteristici, să vedem cum sunt ele aplicate. În general,contractele smart sunt desfășurate prin două sisteme:
Mașini virtuale: Utilizate de Ethereum și Neo.
Docker: Utilizat de Fabric.
Mașinile virtuale asigură un mediu mai determinist, mai finalizabil și mai izolat pentru încheierea contractelor smart. Dar și docker are avantajul său. Acesta asigură flexibilitatea limbajului de programare, în timp ce în cazul unei mașini virtuale, precum EVM, este nevoie de asimilarea unui limbaj total nou (solidity) pentru crearea contractelor smart.
Dezvoltatorii Neo s-au străduit să creeze o mașină virtuală care poate asigura toate avantajele unei mașini virtuale și în același timp furnizează avantajele docker de flexibilitate a codului.
Asemănările cu Ethereum
Este inevitabil ca în acest articol să comparăm adesea Neo cu Ethereum. De aceea, înainte de a continua, să vedem câteva asemănări între cele două:
- Ambele oferă platforme dezvoltatorilor, în vederea creării DApps și a diferitelor ICO-uri pe blockchain.
- În blockchain, totul se petrece prin intermediul schimbului de instrumente crypto – Ether, în cazul Ethereum, și GAS, în cazul Neo.
- Sunt Turing-complete. Un calculator care poate calcula orice, în măsura în care are la dispoziție memorie nelimitată, este cunoscută sub numele de Turing-completă. Deci, fundamental, mașina care propulsează proiectele EVM și NeoVM poate rezolva orice problemă, dacă dispune de suficientă memorie.
Chiar dacă există asemănări între cele două, ceea ce face ca Neo să devină atât de interesant sunt caracteristicile prin care diferă de Ethereum.
Cele două token-uri: NEO vs GAS
Ecosistemul Neo dispune de două token-uri:
- NEO – cunsocut anterior sub numele Antshares (ANS).
- GAS – cunsocut anterior sub numele Antcoins (ANC).
NEO
-NEO asigură proprietarului său drepturi de gestionare și de decizie pe rețea. Aceste privilegii includ contabilitatea, schimbările parametrilor rețelei NEO, etc.
-Token-ul NEO nu poate fi împărțit la zecimale, cea mai mică unitate a sa fiind 1.
-Cele 100 de milioane de token-uri NEO sunt divizate în două. Prima jumătate de 50 de milioane a fost distribuită în cadrul ICO.
-A doua parte de 50 de milioane a fost blocată timp de un an (până la 16 octombrie 2017), fiind folosită exclusiv pentru finanțarea și creșterea pe termen lung a proiectelor NEO, precum și pentru operarea, întreținerea și dezvoltarea pe termen lung a ecosistemului NEO. Planul pentru utilizarea celor 50 de milioane de token-uri arată în felul următor:
- 10 milioane vor fi utilizate pentru motivarea dezvoltatorilor NEO și a membrilor Consiliului NEO;
- 10 milioane pentru motivarea dezvoltatorilor ecosistemului NEO;
- 15 milioane sunt destinate investiției în alte proiecte blockchain aflate în proprietatea Consiliului NEO și care includ doar proiecte NEO;
- 15 milioane rămân ca rezervă pentru orice eventualitate.
În principiu, utilizarea anuală a NEO n-ar trebui să depășească 15 milioane de token-uri.
Dacă NEO este acel token care asigură dreptul de vot și de decizie în cadrul comunității, atunci GAS este cel care alimentează contractele smart și permite executarea. Cum ne indică și numele, el este „combustibilul” rețelei. GAS este ceea ce, în cadrul ecosistemului, vom preschimba ca valută și ce va stimula diferitele proiecte derulate.
Asemenea NEO, este limitat la 100 de milioane de token-uri, însă poate fi partajat. Unitatea sa minimală este 0,00000001.
Există încă două diferențe semnificative între ele
Cele 100 de milioane de token-uri NEO au fost deja create în blocul genesis al rețelei NEO. Cele 100 de milioane de GAS nu au fost încă generate. Peste aproximativ 22 de ani, asemenea celor 100 milioane de NEO, acestea vor fi generate printr-un algoritm pe adresa ce deține NEO. Dacă NEO este transferat la o altă adresă, GAS-ul generat va fi creditat la această adresă.
Anual, sunt create 2 milioane de blocuri, cu o pauză de 15-20 de secunde între două blocuri consecutive. În faza inițială, vor fi generate 8 GAS/bloc, ce urmează a fi redus cu un 1 GAS/an sau 1 GAS/2 milioane de blocuri, până se ajunge la 1 GAS/bloc. La cele 44 de milioane de blocuri, cantitatea de GAS atinge 100 de milioane, iar pe urmă încetează să mai fie creat.
În funcție de algoritm:
- 16% a GAS va fi creat în primul an;
- 52% din GAS va fi creat în primii patru ani;
- În primii 12 ani se ajunge la 80% din GAS-ul total ce va fi generat.
GAS va fi emis proporțional cu procentul NEO existent pe adresele date. Proprietarii NEO pot revendica oricând aceste token-uri GAS.
În cazul în care apare un număr mare de tranzacții spam, tranzacțiile și contractele smart ale utilizatorilor ce dețin NeoID vor avea prioritate în fața celorlalți. Dacă nu ai însă NeoID, îți vei putea prioritiza tranzacțiile prin plata suplimentară de GAS.
Statistică NEO
1. prețul zilnic (în USD)
Raportul NEO/USD a fost de 10,01 USD pe 4 mai, înainte să scadă la 8.96, ca urmare a instalării pieței de urs.
2. Recompensa totală pentru minat (USD)
Taxele minatului au depășit 300.000 de dolari; iar statisticile indică că acestea n-au coborât niciodată sub 250.000$.
3. Total monede trimise
În medie, zilnic se trimit 16.051 de monede. Vârful este de 17.147, în acest grafic.
Statisticile Ontology
Ontology este cu siguranță cel mai popular DApp ce a fost creat pe blockchain-ul Neo. Acesta folosește token-urile ONT și ONG (ontology gas).
Total ONT trimis
Pe 4 mai s-au trimis exact 4.526.244 de token ONT. În medie, zilnic se trimit 2.399.017 de token ONT.
Total ONG trimis
Totalul zilnic al token-urilor ONG trimise a depășit 400.000 pe 5 și 6 mai. Media zilnică este de 290.368,18 de token ONG.
Adrese noi
Numărul adreselor adăugate a fost destul de mare pe 7 și 9 mai, când a crescut la 11.045. În medie, zilnic sunt adăugate 3.963 de adrese noi.
Mecanismul de consens dBFT
Una dintre marile provocări cu care se confruntă sistemele distribuite este realizarea consensului. Această problemă mai este denumită și ”The Byzantine Generals Problem”.
Ce înseamnă Byzantine Generals Problem ?
Imaginează-ți că există un grup de generali bizantini care doresc să atace un oraș / o cetate. Ei se confruntă cu două probleme distincte:
- Generalii și oștile lor sunt foarte departe unii de alții, fiind imposibilă centralizarea puterii – atacul coordonat devine astfel foarte greu de realizat.
- Orașul dispune de o armată uriașă, iar generalii vor câștiga doar dacă atacă toți deodată.
În vederea coordonării reușite, oștirea aflată în partea stângă a cetății trimite un sol armatei aflate în partea dreaptă, cu mesajul: „MIERCURI ATACĂM”.
Să presupunem că armata din dreapta nu se pregătește de atac și spune: „NU! ATACĂM VINERI!”; trimițând înapoi mesagerul, prin oraș. Aici intervine problema.
Această istorie poate avea multe deznodăminte nefericite. Mesagerul poate fi capturat, urmărit, ucis și înlocuit cu altul. Ar rezulta că informațiile ar putea fi falsificate, ceea ce ar duce la un atac necoordonat și ar avea ca rezultat înfrângerea.
Asemănarea cu tehnologia blockchain este evidentă.
Lanțul este o rețea uriașă; dar cum poți avea încredere în el? Dacă ai trimite cuiva 4 ether din wallet-ul tău, cum poți ști sigur că cineva din rețea nu va efectua corecții și va modifica 4 ether la 40 ether?
Satoshi Nakamoto, cel care a creat Bitcoin, a reușit să ocolească Byzantine Generals Problem, inventând protocolul Proof of Work. Acesta funcționează în felul următor. Să presupunem că oastea din stânga dorește să trimită mesajul „LUNI ATACĂM” către armata din dreapta; în acest sens, va trebui să urmeze anumiți pași.
În primul rând, va atașa textului de bază un cod secret – ce poate fi orice valoare hexazecimală aleatorie.
Pe urmă, textul va fi hash-uit (i se aplică algoritmul de hash) cu acest cod; și să vedem rezultatul. Să presupunem, ipotetic vorbind, că armatele decid să distribuie doar mesaje ce, în urma hashing-ului, vor da rezultate care încep cu 5 zerouri.
Dacă sunt îndeplinite condițiile de hash, atunci mesagerul va fi trimis la drum cu hash-ul mesajului. Dacă nu, vor schimba la întâmplare valoarea codului secret, până ce obțin rezultatul dorit. Acest proces poate fi destul de plictisitor și poate consuma mult timp, necesitând multă putere de calcul.
Pasul final
Chiar dacă mesagerul ar fi capturat în oraș, iar mesajul modificat, hash-ul în sine s-ar modifica drastic datorită și în conformitate cu proprietățile funcției hash. Dacă generalii aflați în partea dreaptă vor vedea că mesajul hash-uit nu începe cu zeroul corespunzător, pur și simplu pot anula atacul.
Acesta este protocolul Proof of Work, utilizat de Bitcoin și Ethereum. Problema Proof of Work constă în faptul că este extrem de risipitor și ineficient din punct de vedere al consumului de energie.
Desigur, există mai multe mecanisme de algoritm de consens. De exemplu, Ethereum dorește trecerea la Proof of Stake cu ajutorul Casper.
Neo a decis însă că va utiliza un algoritm de consens interesant, care în viziunea lor îi ajută în atingerea unei scalabilități mai eficiente. Acesta se cheamă dBFT (Delegated Byzantine Fault Tolerant); să vedem cum funcționează.
Ce este dBFT?
Imaginează-ți o țară în care trăiesc mulți oameni. Fiecare cetățean alege un delegat care să-l reprezinte. Misiunea acestor delegați este să voteze legi care să-i mulțumească pe cetățeni. În schimb, dacă aceștia nu-și fac bine treaba și nu reușesc să satisfacă interesele cetățenilor, vor fi schimbați la următoarele alegeri.
Cum votează delegații legile?
Unul dintre delegați va fi selectat, în mod aleatoriu, ca purtător de cuvânt. Pe urmă, acesta verifică toate necesitățile cetățenilor și elaborează o lege. După aceasta, el va calcula „factorul de satisfacție” al legii ca să afle dacă numărul este suficient de mare ca să mulțumească sau nu necesitățile cetățenilor. În urma acestora, predă legea delegaților.
.Delegații verifică unul câte unul calculele purtătorului de cuvânt. Dacă numărul obținut de delegați corespunde cu cel al purtătorului de cuvânt, aceștia își vor da acordul; în caz contrar, nu.
Pentru aprobarea legii este nevoie de aprobarea a 66% dintre delegați. Dacă majoritatea nu se pune de acord, va fi ales un nou lider (purtător de cuvânt) iar procesul va fi reluat de la capăt.
Să vedem cum funcționează acest lucru în blockchain
Cetățenii sunt cei care dețin token-uri NEO, sau nodurile obișnuite. Delegații reprezintă nodurile contabile. Ca să poți deveni un nod contabil, trebuie să îndeplinești anumite criterii de calificare: echipament special, conexiune internet performantă și o anumită cantitate de GAS.
Fundamental, „necesitățile cetățenilor” reprezintă diferitele tranzacții efectuate de către proprietarii de token. „Legea” este blocul actual ce trebuie adăugat la blockchain. „Factorul de satisfacție” este hash-ul blocului curent.
Există două situații în care unul dintre participanți poate acționa în mod răutăcios. Să vedem care sunt acestea:
1. caz: Purtătorul de cuvânt este rău intenționat
Aici, purtătorul de cuvânt trimite un mesaj B compromis către doi delegați și mesajul corect către încă un altul separat. Scenariul de față poate fi rezolvat ușor mulțumită regulii majorității. Cei doi delegați vor vedea că hash-ul lor nu corespunde ce cel al purtătorului de cuvânt, în timp ce unul va constata o potrivire perfectă. Fiindcă 2 din 3 delegați vor respinge propunerea, consensul nu se va realiza; iar purtătorul de cuvânt va fi înlocuit în cele ce urmează.
2. caz: Unul dintre delegați este rău intenționat
Aici, purtătorul de cuvânt trimite mesajul corect către toți delegații, însă unul dintre ei decide că va proceda în mod răutăcios, declarând că numărul său nu corespunde cu cel al liderului.
Deoarece ceilalți doi delegați nu sunt malițioși, aprobă legea ,care este astfel votată prin realizarea unui consens de 66%. După cum vedem, dBFT prezintă o formă interesantă a algoritmului de consens.
NeoContract: Contractul smart 2.0
Cum am scris înainte, scopul Neo a fost să combine avantajele oferite de mașinile virtuale cu flexibilitatea limbajelor de programare. Să vedem cum au reușit să înfăptuiască acest lucru.
Sistemul de contracte smart al Neo este compus din trei părți:
-NeoVM.
-InteropService
-DevPack
NeoVm
Aceasta este reprezentarea picturală a mașinii virtuale Neo:
După cum apare în Neo Whitepaper, NeoVM (mașina virtuală Neo) este o mașină virtuală de categorie ușoară, cu scopuri generale, a cărei arhitectură se aseamănă cu JVM și .NET Runtime. Este asemenea unui CPU virtual, care citește și execută în ordine instrucțiunile cuprinse în contract, efectuează controlul procesului pe baza funcționalității instrucțiunilor, operațiunile logice ș.a.m.d. Este multilaterală, cu o viteză bună de pornire, asigurând un mediu excelent pentru rularea contractelor smart.
InteropService
InteropService sporește utilitatea contractelor smart. Acesta permite contractelor accesarea datelor din afara NeoVM, fără a periclita stabilitatea generală și eficiența sistemului.
Momentan, stratul de servicii interoperabil furnizează câteva API pentru accesarea datelor de pe lanțul contractelor smart. Datele ce pot fi accesate sunt:
-Informația blocului
-Informațiile tranzacțiilor
-Informații despre contract
-Informații dispozitiv
De asemenea, asigură spațiu de stocare pentru contractele smart.
DevPack
DevPack cuprinde translatorul de înaltă calitate și extensia IDE. Fiindcă arhitectura NeoVM se aseamănă foarte mult cu JVM și .NET Runtime, permite programarea contractelor în alte limbi. După cum ne putem imagina, acesta a redus substanțial timpul petrecut de dezvoltatori cu studierea modalităților de creare a contractelor smart.
Viitoarele caracteristici ale Neo Blockchain
NeoX: Asigură interoperabilitatea dintre lanțuri.
NeoFS: Este un protocol de stocare a fișierelor ce utilizează tehnologia DHT (distributed hash table). Acesta indexează fișierul prin utilizarea hash-ului conținutului (și nu a hash-ului căii de acces). Fișierele mari sunt divizate în blocuri de date cu mărime fixă și sunt distribuite și stocate pe diferite noduri.
NeoQS: NeoQS (Quantum Safe) este un mecanism criptografic. Calculul cuantic reprezintă o reală amenințare pentru sistemele criptografice bazate pe RSA și ECC. Asta înseamnă că Ethereum și Bitcoin (ambele utilizează ECC) sunt expuse unui potențial risc de a fi atacate prin calculul cuantic. Neo dorește să rezolve această problemă cu ajutorul NeoQS
Ce ne rezervă viitorul?
Ar fi prea devreme de prezis dacă Neo se poate adapta necesităților, însă cel mai însemnat avantaj al său față de Ethereum constă în bariera relativ mică pe care trebuie să o depășească. Faptul că dezvoltatorii nu trebuie să învețe un limbaj nou pentru crearea contractelor smart, pare destul de atrăgător. Rămâne de văzut ce se va întâmpla în viitor.
Nimeni nu știe dacă Neo „va ucide” Ethereum, dar cu siguranță oferă o platformă excelentă dezvoltatorilor, în contextul unei sfere crypto în continuă expansiune.