Plasma este o realizare mult așteptată a OmiseGo, unul dintre cele mai interesante proiecte realizate în Ethereum. Scopul său este să devină cea mai mare platformă exchange peer-to-peer de criptovalute. OmiseGO se descrie ca fiind „un răspuns la o problemă fundamentală de coordonare dintre procesatori de plăți, portaluri și instituții financiare”.
Echipa din spatele OmiseGO
Compania din spatele OmiseGO se numește Omise – „un portal de plată pentru Asia de Sud-Est, cu sediul în Thailanda, care oferă o soluție sigură și white label pentru comercianți și întreprinzători”. Echipa este condusă de către CEO-ul Jun Hasegawa. Ceea ce este cu adevărat impresionant este echipa de consilieri, compusă din nume precum:
- Vitalik Buterin.
- Joseph Poon.
- Dr. Gavin Wood.
- Vlad Zamfir.
- Roger Ver.
Văzând această listă, e lesne de înțeles de ce este lumea atrasă de acest proiect.
De ce este necesară scalarea?
Odată cu creșterea acceptării criptomonedelor, blockchain-ul a devenit din ce în ce mai încărcat. Cauza este modul în care a fost proiectat acesta. Rețeaua blockchain este compusă din mai multe noduri, care sunt de fapt utilizatorii conectați la rețea. Nodurile reprezintă seva blockchain-ului și sunt responsabile nu doar de funcționarea generală a lanțului, ci și de guvernare. Atunci când rețeaua trebuie să ia o decizie, toate nodurile trebuie să se pună de acord pentru ca aceasta să poată fi luată.
Motivul este simplu, fiindcă în acest fel:
- Contribuie la realizarea descentralizării.
- Sporesc siguranța și elasticitatea rețelei.
Totuși, ceea ce câștigă rețeaua în siguranță, va pierde din eficiență.
Paralelism
În mod ideal, ne-am dori ca sistemul blockchain să fie capabil să-și paralelizeze toate sarcinile, pentru a economisi timp și a crește eficiența; însă acest lucru nu poate fi realizat. În blockchain există anumite sarcini care pot fi paralelizate, pe când altele nu. Un bun exemplu de sarcină ”paralelizabilă” este verificarea semnăturii digitale. Pentru verificarea acesteia avem nevoie doar de cheie, tranzacție și semnătură. Cu ajutorul a doar trei date, pot fi efectuate verificări în mod paralelizat.
Dar în blockchain nu toate funcțiile trebuie executate în acest mod. Gândește-te la efectuarea tranzacției în sine. Tranzacțiile multiple nu pot fi efectuate în paralel; ele trebuie executate una câte una, pentru a se putea evita erori ca dubla cheltuială.
Chiar dacă sună bine în teorie, implementarea în viața reală este sortită eșecului. Din păcate, niciun sistem unde fiecare nod contează în luarea deciziilor nu va putea fi extins eficient. Acest lucru a fost cel mai evident în cazul eșecului cryptokitties.
Cryptokitties
Acesta este un joc virtual bazat pe blockchain care permite jucătorilor să adopte, să crească și să tranzacționeze pisici virtuale. Jocul a fost creat de către compania blockchain cu sediul în Vancouver, Axiom Zen. Merită să reținem că aceasta este prima aplicație cunoscută a Dapp concepută pentru timp liber și recreere.
Oamenii au cheltuit peste 12 milioane de dolari pentru achiziția acestor pisici. Unele rapoarte arată că există persoane care au câștigat mai mulți bani din cryptokitties decât din investiția în alte fonduri private. Cu toate că acestea arată bine, un lucru a devenit clar. Blockchain-ul Ethereum nu era pregătit ca un Dapp să devină atât de popular precum a ajuns Cryptokitties.
Cryptokitties a aglomerat rețeaua
Din câte s-a aflat, Cryptokitties a devenit atât de popular încât a provocat creșterea taxei gas Ethereum și a aglomerat rețeaua. La un moment dat, acest contract smart era al treilea cel mai mare consumator de gas din Ethereum. De fapt, în momentul de vârf al aplicației, tranzacțiile acesteia au folosit 20% din capacitatea totală de calcul a rețelei. Din cauza interesului crescut pentru kitties, numărul tranzacțiilor neconfirmate a crescut exponențial.
Numărul mare de tranzacții în așteptare a determinat Axiom, compania din spatele cryptokitties, să mprească taxele. Iată ce au declarat la acel moment:„Entuziasmul și acceptarea pe care le-am constatat recent au fost extraordinare, nici nu putem fi mai fericiți de-atât! Însă rețeaua Ethereum s-a umplut complet datorită jocului. Singura modalitate de evitare a întârzierilor CryptoKitties este creșterea prețului gas, astfel toate tranzacțiile pot fi rapid finalizate. Știm că majorarea taxei înseamnă pentru mulți dintre voi că va trebui să încetiniți procesul de reproducere, ceea ce ne dezamăgește profund. Dar cine știe? Poate că această încetinire va determina să vă iubiți și mai mult pisicile pe care le aveți deja.”
Soluția
Sunt dezvoltate numeroase soluții de scalabilitate. Ethereum pregătește lansarea Sharding și introducerea rețelei Raiden. Dar există o soluție care poate revoluționa tehnologia blockchain pentru totdeauna. Dacă ar fi introdusă, Ethereum s-ar putea extinde până la un milion de tranzacții pe secundă. Să nu uităm că momentan Ethereum nu poate gestiona decât aproximativ 15-20 de tranzacții pe secundă. Soluția se numește Plasma.
Ce este Plasma?
Plasma este o soluție de scalare a blockchain, realizată de către Joseph Poon, cocreatorul Lightning Network, și Vitalik Buterin, cofondatorul Ethereum.
Conform whitepaper-ului:
„Plasma este un cadru propus pentru executarea stimulată și forțată a contractelor smart, care poate fi scalată la o cantitate semnificativă de actualizări pe secundă (potențial miliarde) și care permite ca blockchain-ul să poată reprezenta o cantitate însemnată de aplicații financiare descentralizate la nivel mondial.
Aceste contracte smart sunt încurajate să continue să funcționeze în mod autonom prin taxe de tranzacții din rețea – care la urma urmei depind de blockchain-ul de bază (de exemplu Ethereum) – pentru a impune tranziția stării tranzacției.
Plasma: Blockchain în interiorul blockchain
În esență, Plasma este un blockchain construit pe blockchain-uri – este o serie de contracte smart care rulează deasupra lanțului rădăcină (de exemplu blockchain-ul principal ethereum). Dacă ar fi să ne imaginăm toate acestea din punct de vedere al arhitecturii și structurii, să ne gândim la blockchain-ul principal și blockchain-urile plasma ca la un copac. Blockchain-ul principal este rădăcina iar lanțul plasma (blockchain-urile copil) reprezintă ramurile. Lanțul rădăcină este asemenea unui adevăr absolut, în timp ce lanțurile copil lucrează în jurul său, efectuează calcule proprii și periodic hrănesc lanțul rădăcină cu informații.
Lanțul rădăcină intră în joc doar dacă apare o dispută care trebuie rezolvată în lanțul copil; altfel nu se implică în nimic din ce se petrece în lanțul copil, aceasta fiind filosofia se de bază. Dacă lanțul rădăcină este adevărul absolut, atunci acesta trebuie rămână cât mai lipsit de activitate și calcule.
Lanțurile rădăcină și cele copil formează un set de blockchain-uri imbricate (nested blockchains). Exemplul funcțiilor imbricate poate fi util pentru a înțelege cum funcționează sistemul imbricat. Poate ești deja familiar cu acest concept.
Cicluri imbricate
În loc să folosim doar un ciclu pentru executarea întregii condiții, vom utiliza un alt ciclu în interiorul celui principal pentru a împărți condiția. Ciclul interior face un calcul și returnează o valoare celui principal. În acest fel calculul devine mai puțin complicat.
Cam așa funcționează blockchain-urile imbricate. O altă modalitate care ne ajută să înțelegem mai exact cum funcționează atât acest sistem cât și soluționarea litigiilor în plasma este compararea sa cu sistemul judiciar.
Asemănarea cu sistemul judiciar
Să privim mai atent ierarhia instanțelor din Marea Britanie.
În acest caz Curtea Supremă (Supreme Court) este lanțul rădăcină care stabilește legile. Acesta are lanțuri copil (Criminal și Civil), care la rândul lor au propriile lanțuri copil.
Astfel, dacă un caz civil ajunge în fața instanței, nu va apelată direct Curtea Supremă (depinde bineînțeles de profilul cazului). Cel în cauză se va adresa prima dată tribunalului județean (county court). Dacă nu este mulțumit de decizie, poate avansa în lanț treaptă cu treaptă, până ajunge în fața Curții Supreme.
În linii mari aceasta este și ideea funcționării plasma și a blockchain-ului imbricat; lanțul rădăcină este curtea supremă, ce are în subordine mai multe lanțuri copil.
Proiectarea obiectivelor Plasma
În vederea implementării eficiente a Plasma, Joseph Poon și Vitalik Buterin au stabilit anumite obiective de proiectare. Să aceste obiective și scopul lor luăm pe rând.
1. Un blockchain care să le guverneze pe toate
Cum spuneam mai înainte, blockchain-ul principal va fi blockchain-ul rădăcină, iar fiecare lanț copil va proveni direct sau indirect din acesta. Lanțul rădăcină nu va interfera cu niciunul dintre lanțurile copil decât în cazul unei dispute.
2. Minimizarea încrederii
Sistemul trebuie să fie cât mai trustless cu putință. Niciunul dintre lanțurile copil nu poate depinde complet de etica anumitor actori. Trebuie create acele mecanisme prin care cineva poate părăsi lanțurile copil.
3. Scalabilitatea registrului
Blockchain-urile trebuie să fie capabile să stocheze multe date. Lanțurile copil. Lanțurile copil ar trebui să poată prelua datele care în mod normal ar merge pe lanțul rădăcină.
4. Trebuie să fie scalabil
Lanțul copil trebuie să fie compatibil cu diferitele soluții de scalare. Practic, ar trebui să fie capabil să implementeze soluții precum sharding și lightning network.
5. Calcule localizate
Fiecare lanț copil trebuie să fie capabil să efectueze propriile calcule. La intervale regulate, fiecare lanț este obligat să ofere actualizarea stării sale lanțului părinte.
6. Protecția împotriva fraudelor
În cazul unei dispute, partea vătămată poate trimite lanțului rădăcină o dovadă a fraudei. Acesta poate rula înapoi starea lanțului copil și să penalizeze semnatarii blocului lanțului copil. Procedeul are o importanță deosebită și va fi analizat în detaliu puțin mai încolo.
7. Fiecare lanț este unic
Fiecare lanț copil are propriile reguli de guvernare. Ele pot fi entități unice, atât timp cât raportează constant lanțului principal.
Construcții MapReduce
Funcționalitatea Plasma depinde de MapReduce. Potrivit Wikipedia, MapReduce este un model de programare și o implementare asociată pentru prelucrarea și generarea unor seturi mari de date cu un algoritm distribuit paralel. Practic asta înseamnă că în măsura în care există o cantitate mare de date, poți delega către entități mai mici părți ale acesteia, care le vor calcula în paralel și îți vor trimite rezultatul.
MapReduce este compus din două părți:
Map – Hartă: Aici datele sunt împărțite și predate diferitelor entități pentru a fi rezolvate în paralel.
Reduce – Diminuare: Entitățile rezolvă problema și execută o funcție „rezumat” care reduce considerabil dimensiunea datelor și returnează valoarea rezumată.
Să luăm un exemplu din viața reală:
Ne vom imagina că Sorina i-a spus lui Ovidiu să numere cuvintele dintr-o carte. Pe urmă, Ovidiu îi dă lui Radu și Claudiu câte o pagină de numărat. Amândoi vor număra în același timp cuvintele de pe pagina pe care au primit-o și vor spune rezultatul lui Ovidiu. Acesta le va aduna cu propriile cuvinte numărate și va oferi rezultatul final Sorinei.
Să vedem cum arată exemplul în MapReduce:
Map – Hartă:
- Sorina îi spune lui Ovidiu să numere cuvintele.
- Ovidiu îi dă câte o pagină lui Radu și Claudiu.
Reduce – Diminuare:
- Radu și Claudiu îi spun numărul cuvintelor de pe paginile primite lui Ovidiu.
- Ovidiu va furniza Sorinei totalul.
În contextul blockchain asta va însemna:
Map – Hartă:
- Lanțul Plasma 1 îi va da o sarcină lanțului Plasma 2.
- Lanțul Plasma 2 va atribui fiecare pagină lanțului Plasma 3.
Reduce – Diminuare:
- Lanțul Plasma 3 va efectua calculele și returnează datele „Merkelized” lanțului Plasma 2.
- Lanțul Plasma 2 va intra în posesia datelor finale și va trimite datele „Merkelized” lanțului Plasma 1.
Ce semnifică expresia „Merkelized”?
Prima dată vom verifica arborele Merkle.
Imaginea de mai sus ne prezintă cum arată un arbore Merkle. Într-un arbore Merkle, fiecare nod ce nu reprezintă o frunză este hash-ul nodurilor lor copil (child). Nodul frunză: Nodurile frunzelor se găsesc la nivelul cel mai de jos al arborelui. Așadar, conform imaginii de mai sus nodurile frunză vor fi L1, L2, L3 și L4. Nodurile copil: În cazul unui nod, nodurile de sub nivelul său care se hrănesc din acesta sunt nodurile copil. Conform diagramei, nodurile „Hash 0-0” și „Hash 0-1” sunt nodurile copil ale nodului „Hash 0”. Nodul rădăcină: Nodul unic aflat la cel mai înalt nivel, cu inscripția „Top Hash”, este nodul rădăcină sau rădăcina Merkle.
Ce legătură are arborele Merkle cu blockchain-ul?
Fiecare bloc conține mii de tranzacții. Stocarea sub formă de serie a tuturor datelor din fiecare bloc va consuma foarte mult timp. În acest fel găsirea unei tranzacții va fi extrem de greoaie și consumatoare de timp. Utilizând un arbore Merkle, vei reduce considerabil timpul necesar pentru a afla dacă o anumită tranzacție aparține sau nu blocului respectiv.
Vom lua exemplul următorului arbore Merkle:
Să presupunem că doresc să aflu dacă datele indicate aparțin sau nu blocului:
În loc să parcurgem procesul greoi de a ne uita la fiecare hash în parte și de a vedea dacă aparține sau nu datelor, pur și simplu putem urmări traseul hash-ului care duce la date. Reducem astfel timpul consumat în mod considerabil. Așadar, când vorbim de soluție „Merkelized” ne referim în mod special la rădăcina Merkle. Fiecare lanț copil trebuie să trimită periodic soluția „Merkelized” lanțului părinte.
Rezolvarea litigiilor
Ca un sistem să funcționeze eficient, trebuie să preîntâmpine comportamentul rău intenționat, lucru valabil și pentru Plasma. Deci cum funcționează rezolvarea litigiilor în Plasma?
Să ne gândim la următoarea situație: Sorina are 1 ETH în blocul Plasma 3, dar din anumite motive vede că nu mai dispune de acest ether în blocul Plasma 4. Să presupunem că persoana responsabilă de blocul 4 procedează în mod rău intenționat și va da altcuiva acest ether. Ce poate face Sorina?
Contractul smart Plasma permite ca ea să trimită oricui altcineva care a observat această activitate dovada fraudei (Fraud Proof). Pe urmă blockchain-ul rădăcină verifică dacă frauda este reală sau nu, iar dacă da va elimina blocul malițios – în consecință blocul 4 va deveni invalid și starea lanțului plasma revine la blocul 3; semnatarul/creatorul blocului 4 va fi penalizat.
Potrivit lui Joseph Poon, protocoalele de ieșire sunt „principala noutate a Plasma”. Ce înseamnă „ieșire”? Un scop al proiectării plasma a fost asigurarea faptului ca din punct de vedere al siguranței să nu se bazeze pe el însuși. Modul în care realizează acest lucru este că se asigură că utilizatorii dispun de mijloacele necesare pentru a ieși din lanțul copil ori de câte ori ceva nu merge bine.
Cum funcționează asta?
În plasma există o rezoluție pentru rezolvarea disputelor; dar cum am văzut mai sus, pentru probarea fraudei trebuie să avem acces la datele frauduloase. De exemplu, Sorina a putut dovedi înșelăciunea fiindcă a văzut că blocul 4 a procedat față de ea în mod rău intenționat. Cu alte cuvinte, a putut proba infracțiunea deoarece a avut acces datele malițioase și le-a putut arăta tuturor. Dar ce se întâmplă dacă semnatarul blocului nu-i oferă acces la date Sorinei? În general, aceste situații se transformă în scenarii de genul „cuvântul meu împotriva cuvântului tău”. Astfel, Sorina va zice: „N-am primit acces la date”, în timp ce Ovidiu poate spune: „I-am oferit acces la date, ea minte.”
Asemenea situații presupun să avem încredere într-una dintre părți, în vederea rezolvării conflictului. Însă dacă-ți amintești, unul dintre obiectivele Plasma este crearea unui sistem cât mai trustless posibil.
Deci provocarea pentru dezvoltatori a fost să găsească o metodă eficientă pentru rezolvarea conflictului, fără a-și pune încrederea în vreuna dintre părțile implicate.
Cum au reușit?
Au codat contractul smart în așa fel încât să aibă ieșiri prestabilite în blocul plasma. Cum funcționează o ieșire prestabilită? Să vedem din nou vechiul exemplu. Așadar, să zicem că Sorina are 1 ETH în blocul 3, dar nu are acces la blocul 4. Sorina transmite lanțului părinte (în cazul de față lanțul rădăcină) că va părăsi lanțul dacă în decurs de 7 zile nu obține accesul. Modalitatea prin care va realiza acest lucru este că-și va difuza intenția de a cheltui acești bani la termen; dacă nu-i va cheltui, va fi în stare să iasă. Ieșirea se petrece în ordinea vârstei intrărilor din blocul plasma. Asta înseamnă că mai întâi vor fi capabili să iasă cei care au intrat mai devreme – în acest fel este creat un sistem echitabil. Dar aici întâmpinăm o nouă problemă: intenția de tranzacție trebuie stocată undeva.
În vederea rezolvării acestei situații, Plasma utilizează arbori imbricați, pentru a face sistemul cât mai eficient.
În exemplul nostru avem trei niveluri de lanț.
- Lanțul rădăcină, nivelul 0.
- Urmează nivelul 1, copilul lanțului rădăcină.
- Avem nivelul 2, lanțurile copil al nivelului 1.
- În final obținem nivelul 3, care este copilul nivelului 2.
ETH-ul Sorinei este stocat în blocul solitar de la nivelul 3.
Să presupunem că blocul din lanțul 2 începe să se comporte în mod rău intenționat.
În acest caz:
-Sorina raportează activitatea malițioasă direct părintelui blocului, deci cel de la nivelul 1.
-Participanții din blocul defect se vor muta la blocul precedent.
-Blocul defect este eliminat.
Este o soluție mai la îndemână, fiind avantajoasă din punct de vedere economic. Lanțul rădăcină principal rămâne neîntrerupt, ceea ce este unul dintre obiectivele Plasma. Pe cât posibil, lanțul rădăcină nu trebuie perturbat sub nicio formă. De notat: dacă blocurile de la nivelul 2 sunt rău intenționate, Sorina trebuie să treacă mai departe, spre lanțul rădăcină.
Acest sistem are încă un avantaj. Arhitectura imbricată reduce semnificativ calculele necesare verificării și validării tranzacțiilor, efectuate pentru a se convinge că n-au avut loc activități frauduloase. Aici nu trebuie urmărit decât lanțul care-i interesează în mod direct.
Finalitate
În sens larg, finalitatea înseamnă că odată ce s-a efectuat o anumită operațiune, aceasta rămâne înscrisă în istorie pentru totdeauna și nimic nu poate inversa această operațiune. Este un aspect deosebit de important mai ales în domeniile ce se ocupă de finanțe. Îmaginează-ți că Sorina deține un activ la o companie. Dacă amestecăm puțin procesele companiei, nu se va putea reveni asupra dreptului de proprietate al acelui activ.
În ce fel obține Plasma finalitatea?
Finalitatea lanțului copil: finalitatea lanțului copil provine din mecanismul proof of stake.
Finalitatea lanțului rădăcină: Aceasta derivă din Ethereum, care în prezent utilizează mecanismul proof of work.
Astfel, finalitatea și siguranța depind în totalitate de Ethereum, deci de securitatea lanțului rădăcină. Plasma va funcționa doar dacă Ethereum este sigur.
Există două caracteristici care diferențiază OmiseGo de alții:
1. Descentralizarea
Exchange-urile au rol deosebit de important în ecosistem. Acestea reprezintă portalul între lumea fiat și cea crypto. Problema lor este că sunt expuse diferitelor fraude și hackuri, fiind entități centralizate. Hackerii au furat deja mai multe sute de milioane de dolari de la diferite exchange-uri. OmiseGO va oferi aceeași funcționalitate ca exchange-ul centralizat, cu diferența că va fi descentralizat și datele vor fi stocate pe blockchain.
2. Agnosztikus pénznem
Majoritatea exchange-urilor permit doar un singur tip de schimb, cel fiat-crypto. Asta înseamnă că dacă cineva ar dori să-și schimbe BTC-ul pe ETC, va trebui mai întâi să convertească BTC pe USD, iar pe urmă USD în ETH. În cadrul acestui proces sunt cheltuiți mulți bani pe taxe și comisioane. OmiseGO atenuează această problemă fiind Asta înseamnă că schimbul USD în ETH va presupune același proces și comision ca cel BTC în ETH.
ICO-ul OmiseGO
OmiseGO utilizează token-uri OMG. ICO-ul a avut loc între 23 iunie și 23 iulie 2017 și a reușit să adune 25 milioane de dolari. Directorul Jun Hasegawa a declarat că agitația dinaintea vânzării a fost atât de mare încât putea obține cu ușurință peste 100 de milioane de dolari din ICO. Ei au ales să mențină cifrele la un nivel mai scăzut, pentru a proceda într-un mod responsabil. Acesta a fost motivul pentru care n-au ales vânzarea publică și au menținut vânzările într-un cadru cât mai stabil și controlat.
„Am limitat vânzarea OMG la KYC (persoane care pot fi identificate) pentru a preveni posibilitatea reală ca unul sau doi oameni bogați să poată cumpăra aproape toate token-urile, așa cum s-a întâmplat la vânzarea (Brave) Basic Attention Token (BAT)” – a explicat Hasegawa.
„Spre deosebire de celelalte vânzări, n-am dorit să ne creștem plafonul de vânzări peste 25 de milioane de dolari deoarece credem că nu avem nevoie de mai mulți bani de-atât pentru a ne atinge obiectivele”, a adăugat acesta. „Este atât iresponsabil cât și contraproductiv dacă luăm mai mult decât avem nevoie.” Această abordare i-a adus lui OmiseGo numeroase feedback-uri pozitive din partea comunității.
Foaia de parcurs OmiseGO
Reperele foii de parcurs a OmiseGO și-au primit numele după jocul chinez „Go”. Să vedem care sunt acestea:
1. Fuseki și Sente
„Fuseki” Go reprezintă deschiderea tablei. În OmiseGO asta înseamnă deschiderea livrărilor către utilizatori. În „Sente” compania va prelua feedback-urile „Fuseki” și le integrează în produsele sale.
2. Honte
Rețeaua OmiseGO va fi predată și se vor pune bazele Plasma.
3. Aji
Utilizatorii vor dobândi abilitatea de a accesa Fiat și de a obține o interfață la portalul Omise Payment.
4.Tesuji
Va fi introdusă forma de bază a Plasma.
5.Tengen
OmiseGO și Plasma vor fi instalate complet.
Viitorul
După cum spuneam, OmiseGo este unul dintre cele mai așteptate proiecte din ultimii ani. Acesta dispune de o puternică echipă de dezvoltatori și consilieri. Să sperăm că dezvoltarea va decurge fără probleme. Plasma dispune de calități însemnate pentru a deveni un game changer. Va fi interesant de văzut cum vor evolua lucrurile pe viitor și dacă Plasma și OmiseGo se vor ridica la nivelul așteptărilor și atenției de care se bucură.