reprezentare logo Kosson

Bitcoin și blockchain-ul nu sunt una și același lucru. Moneda electronică folosește blockchain-ul. A fost parte din stiva de tehnologii, ce alcătuia Bitcoin la momentul lansării. Poți înțelege blockchain-ul ca pe un registru contabil în care se înregistrează toate elementele de activ și pasiv la un moment dat. Da, pentru cei dintre dumneavoastră care ați identificat definiția, este cea a Cărții Mari din contabilitate. Și cum în limba engleză, Cartea Mare este ledger, acesta este și numele cu care se face referință la blockhain de către specialiștii în monede electronice.

Peste tehnologia blockchain-ului, care este de fapt, o bază de date distribuită pe toate nodurile participante din rețea, se pune o aplicație software, care este dotată cu tot ce este nevoie de a tranzacționa valori. Cum se face legătura dintre această aplicație electronică, să-i spunem wallet, și baza de date distribuită, să-i spunem blockchain? Foarte simplu, printr-un API (Application Programming Interface : Interfață de programare a aplicațiilor), pe care tot baza de date distribuită îl pune la dispoziție.

Concepte de bază

Hash

Un hash este ceea ce obții având o dimensiune fixă în urma aplicării unei funcții criptografice pe un anumit conținut. Acest rezultat este identificat în literatură ca fiind o valoare hash, un digest sau chiar coduri hash. Prin utilizarea hashurilor se poate garanta integritatea conținutului, iar în cazul blockchain-urilor, acestea sunt folosite pentru adresarea blocurilor. Pur și simplu, în loc de o adresă http, cu care suntem foarte familiari, se folosește un hash. Cum arată un hash? este o secvență alfanumerică de o anumită dimensiune. Pentru a experimenta, joacă-te aici: http://passwordsgenerator.net/sha256-hash-generator/

Graf

Numim graf o pereche ordonată de mulțimi, notată G=(X,U), unde X este o mulțime finită și nevidă de elemente numite noduri sau vârfuri, iar U este o mulțime de perechi (ordonate sau neordonate) de elemente din X numite muchii (dacă sunt perechi neordonate) sau arce (dacă sunt perechi ordonate). În primul caz, graful se numește neorientat, altfel acesta este orientat. Așadar un graf poate fi reprezentat sub forma unei figuri geometrice alcătuite din puncte (care corespund vârfurilor) și din linii drepte sau curbe care unesc aceste puncte (care corespund muchiilor sau arcelor). Numim drum într-un graf o succesiune de muchii adiacente și distincte care conectează două vârfuri din graf (numite capetele drumului). Un drum se numește simplu dacă muchiile care îl compun sunt distincte. Numim ciclu un drum care are drept capete un același vârf. Un ciclu se numește hamiltonian dacă este simplu și trece prin toate nodurile grafului G, exact o dată, și se numește eulerian dacă trece prin toate muchiile grafului G, exact o dată. Nu orice graf conține un ciclu hamiltonian (Wikipedia: Graf). Muchiile unui graf pot să indice o direcție. Un graf a cărui muchii indică la un capăt sau la ambele o direcție notată printr-o săgeată este un graf orientat. În cazul grafurilor orientate, perechile de vârfuri din mulţimea perechilor de vârfuri sunt ordonate şi sunt denumite arce. Un graf neorientat sau unul orientat cuplate cu o funcție care atribuie un număr real pozitiv pentru fiecare muchie spunem că formează o rețea. Vârfurile unui graf se mai numesc și noduri.

Modelele de grafuri simple

Un graf orientat a cărui arce sunt într-o succesiune, fiecare următor arc pornind din extremitatea anteriorului se numește drum. În cazul grafurilor neorientate, se numește lanț. Dacă ultimul arc al unui graf orientat intră în originea primului arc al grafului, numim acest graf, un circuit. În cazul grafurilor neorientate, se numește ciclu. Trecerea o singură dată printr-un nod în intenția de a parcurge un nod, se numește drum elementar, iar parcurgerea unui nod, dar de această dată folosind o muchie o singură dată chiar dacă vei trece de mai multe ori printr-un nod, se numește drum simplu. Lungimea unui drum este totalitatea arcelor acelui drum. Acum, un circuit de lungime unu este chiar o buclă. Distanța de la un nod la altul este numărul de arce care leagă cele două noduri. Dată toate nodurile sunt legate de un arc, atunci graful se numește graf complet. Un arbore este un graf finit neorientat cu cel puțin două noduri care este conex (adică pot face un lanț) și nu pot exista cicluri.

Directed acyclic graph (DAG) - Graf orientat aciclic

Este un graf orientat care nu are niciun ciclu și poartă denumirea de graf orientat aciclic. În limba engleză este directed acyclic graph cu prescurtarea DAG.

Modelul de graf DAG

Merkle DAG

Este un arbore care se constituie din hash-urile individuale ale copiilor. Mai exact, fiecare nod copil are drept identificator un bloc de date, care este un hash criptografic. Conceptul a fost patentat în 79 de Ralph Merkle și în acest moment este parte a tehnologiilor blockchain. Ralph Charles Merkle publică în 1979 lucrarea Secretizare, autentificare și sisteme de chei publice. Aceasta este lucracea în care pune fundamentele constituirii de arbori DAG, dar și mai important, descoperă mecanismul de asigurare a cheilor de criptare sigure între două părți folosindu-se un canal nesigur.

Secrecy Authentication And Public Key Systems

Un astfel de arbore este folosit pentru a verifica datele stocate, dar în principal oferă și un sistem de identificatori cu adevărat unici folosiți drept adrese pentru conținut. Pentru a înțelege un astfel de arbore, cel mai la îndemână ar fi exemplele pe care Git le oferă sau IPFS. Ceea ce se observă investigând mecanismele Git sau IPFS, este că datele sunt stocate ca obiecte. Pe baza arborelui, care spune cum trebuie reasamblate obiectele, acestea, la cerere, vor fi recompuse pentru utilizatorul care le solicită. Mai jos este un mic exemplu pentru Git:

Construirea DAG-ului de către Git

Dacă vrei să vezi conținutul, ține seama că în cazul Git, obiectele folosesc o compresie zlib. După ce faci dezarhivarea, vei observa că în interior sunt datele pe care le-ai introdus la commit.

Datele dintr-un obiect Git

Datele dintr-un obiect Git

Și acum, hai să vedem și cazul IPFS. Acesta adaugă resursele și în acest moment, le va „sparge” în fragmente mai mici din care va constitui un arbore DAG, un DAG Merkle.

Cazul IPFS

De regulă pentru a crea hashurile se folosește o funcție criptografică SHA-2. Unul din marile avantaje pe care le are această tehnică ce a genera arbori DAG este că poți verifica integritatea doar pentru o anumită resursă.

Distributed Hash Tables (DHT)

Sunt perechi de cheie:valoare gestionate într-un sistem distribuit și descentralizat. Într-un astfel de sistem, oricare nod poate extrage valoarea asociată cu o anume cheie.

Ledger

Este apelativul pentru blockchain. Blockchain-ul fiind echivalentul unei Cărți Mari din contabilitate. Avantajul principal al ledger-ului este faptul că este distribuit.

Wallet - portmoneul electronic

După ce este activ protocolul Blockchain, entitatea care-l poate utiliza este ceea ce numim portmoneul electronic. Acest portmoneu (wallet) este o aplicație, care face uz de protocol pentru a identificat, ține evidența și tranzacționează valorile.

Smart contracts - contracte inteligente

Sunt tranzacții în blockchain, care dincolo de mijlocirea unei vânzări/cumpărări, includ instrucțiuni care privesc condițiile în care vor fi permise tranzacțiile. Contractele inteligente sunt autonome, nu depind de decizia vreunei părți implicate în tranzacție. Contractele inteligente sunt prezente în toate nodurile și sunt declanșate atunci când toate condițiile sunt întrunite.

Resurse

A blockchain in 200 lines of code https://en.wikipedia.org/wiki/Blockchain https://en.wikipedia.org/wiki/Distributed_database

Blockchain 101 - A Visual Demo

Visualizing Git’s Merkle DAG with D3.js

Tutorial: Merkle Trees and the IPFS DAG

Graf

Lesson: Turn a File into a Merkle Tree

Elemente de teoria grafurilor