Bitcoin este bazat pe o rețea peer-to-peer care înregistrează informații din toate nodurile rețelei sale. Există două tipuri de obiecte care sunt înregistrate: tranzacțiile și blocurile. Ambele tipuri de obiecte sunt abordate de un număr de încercare de soluționare a datelor și sunt înregistrate prin intermediul tuturor nodurilor din rețea. Tranzacțiile sunt operatori unde banii sunt combinați, împărțiți și achitați. Blocurile înregistrează tranzacțiile verificate ca valide.
Cheltuirea
Să presupunem că Alice vrea să achite 1 Bitcoin lui Bob și 2 Bitcoini lui Carol. Monedele lui Alice „locuiesc” în tranzacții care îi desemnează cheia publică ca beneficiar. Pentru a cheltui monede, Alice crează o nouă tranzacție care susține orice monedă pe care nu a cheltuit-o încă și poate să achite mai departe, folosindu-și semnătura digitală, 4 monede primite de la Diana și Andrei ca inputuri ale noilor tranzacții. Ca outpuri, ea specifică 1 Bitcoin pentru Bob și 2 Bitcoini pentru Carol și 4.99 se întorc către ea ca „rest”. În acest exemplu, Alice alege să lase 0.01 Bitcoini pe post de taxă a tranzacției și pot fi luați de oricine confirmă primul tranzacția.
Verificarea
Pentru ca o tranzacție să fie confirmată, componentele variate ale acesteia trebuie să fie validate și verificate în vederea dublei cheltuiri. Odată verificată, tranzacția este incorporată în recordurile oficiale denumite blocuri. Oricine are posibilitatea să creeze astfel de blocuri și desigur două tipuri de stimuli sunt oferiți pentru a atrage persoane care să verifice pentru a completa crearea unui bloc: colectarea taxelor și minarea pentru noi monede.
Fabricarea
Rezerva de Bitcoin se extinde cu fiecare bloc creat ce conține o tranzacție generată special ( fără un input explicit ) ce plătește creatorul blocului o cantitate de Bitcoini în funcție de efortul depus. Odată la fiecare 10 minute o astfel de plată este făcută, în momentul de față aceasta fiind de 25 de Bitcoini. Verificarea tranzacțiilor Bitcoin este o cursă lucrativă disponibilă tuturor, însă una care consta destul de mult.
Tranzacționare și scriptare: unelte de cheltuire
Una din principalele puteri ale sistemului Bitcoin este faptul că input-ul și output-ul tranzacțiilor nu trebuie să aibă un format fix, ci mai degrabă unul construit folosind un limbaj de scriptare flexibil. Remarcăm faptul că principiile tranzacțiilor nu sunt utilizatori, ci chei publice anonime, pe care utilizatorii le pot crea gratuit în orice volum doresc.
Tranzacțiile
Tranzacțiile înglobează mișcarea bitcoinilor prin transferul de valoare primit din input-uri și output-uri. Un input identifică tranzacții precedente ale output-ului și îi verifică întreaga valoare. Un output reprezintă o anumită cantitate, numărul total de output-uri nu trebuie să-l depășească pe cel total de input-uri. De asemenea, amândouă conțin fragmente de scripturi executabile.
Fragmente de scripturi
Limba de scriptare este pentru Bitcoin o limbă de bază. Operatorii includ operațiuni criptografice precum SHA1 ( ce înlocuiește itemul din vârful structurii cu rata acestuia de soluționare ) și CHECKSIG ( ce verifică dacă este adevărat sau fals un anumit „mesaj” din semnătura digitală, ce este și ea la rândul ei verificată ). Pentru ca o tranzacție să fie validă, trebuie să apară titlul fiecărui input susținut. Titlul este testat prin evaluarea fragmentului de script al input-ului concatenat cu fragmentul de script al output-ului.
Transferul standard
Pentru a ilustra cum limbajul de scriptare poate fi folosit, pe lângă alte lucruri, pentru a desemna sau împuternici recipientul unui transfer, vom studia exemplul unei tranzacții standard Bitcoin folosit pentru transfer. Pentru a trimite monede la o adresă, Alice crează un output de tranzacție cu următorul fragment de script:
DUP HASH160 <recipient-address> EQUALVERIFY CHECKSIG
Cel care primește monedele, Bob, va observa plata și o va marca ca „cheltuit”. Mai departe, pentru a cheltui acești Bitcoini primiți, el crează o tranzacție:
<signature> <public-key>
Bob va cheltui monedele primite de la Alice doar dacă transferul a fost valid, iar verificarea acestuia se face prin concatenarea celor două fragmente de scripturi afișate anterior.
Blocuri și crearea de monede: procesul de verificare
Tranzacțiile devin eficiente doar după ce au fost făcute cu referire la un bloc, care servește ca record oficial pentru executarea tranzacției. Tranzacțiile pot fi listate într-un bloc dacă satisfac condițiile precum validarea timpului de lucru și absența dublei cheltuieli.
Blocurile
Un bloc conține o tranzacție fabricată „coinbase”, zero sau mai multe tranzacții regulare de cheltuire, o dovadă de muncă computerizată și o referință cronologică pentru fiecare bloc în parte. Cu toate acestea, blocurile formează o singură înlănțuire de blocuri, toate înrădăcinate în blocul genesis al lui Nakamoto. Crearea regulară de Bitcoin servește din două puncte de vedere: asigurarea de verificare în timp a noilor tranzacții și crearea de noi monede, totul într-un proces descentralizat condus de stimuli economici, balansat de costuri computerizate. Dificultatea dovezii de muncă necesară este adjustată de un mecanism de feedback care asigură că un bloc poate fi creat odată la 10 minute în întreaga rețea.
Coinbase
În momentul de față, fiecare bloc nou poate conține o tranzacție coinbase cu o valoare implicită de 25 de Bitcoini, cu aproape 14 milioane de Bitcoini deja minați. Rata de minerit va descrește treptat până când se va ajunge la un număr de 21 milioane de Bitcoini minați.
Bifurcarea și rezolvarea conflictelor
Dacă două blocuri au fost publicate foarte aproape unul de celălalt, o bifurcare poate avea loc în lanțul de blocuri. Nodurile sunt programate să urmărească lanțul de blocuri al cărui dificultate este foarte mare și are capacitatea de a scoate blocuri din celelalte bifurcații. Tranzacțiile vor fi colectate în cele din urmă în blocuri de pe ramurile predominante, acest mecanism asigurând o singură direcție în care tranzacțiile par să fie acceptate.