Obvladovanje verige blokov v hipu, 2. del — implementacija PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Obvladovanje verige blokov v hipu, 2. del — implementacija

Purbaryandi

V tej seriji člankov bomo v manj kot 5 minutah zgradili poenostavljeno kriptovaluto, ki temelji na preprosti implementaciji verige blokov v Golang. za izdelavo tega projekta morate najprej namestiti golang. za urejevalnik besedil lahko uporabite karkoli, tukaj uporabljam kodo Visual Studio.

Obvladovanje verige blokov v hipu, 2. del — implementacija PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
vir: bitdegree

Ste ga namestili? V redu, naredimo to!

če ste ustvarili projekt, ustvarite datoteko main.go . oke lets code, najprej bomo začeli z main.go. Začnimo z delom struct Block "blockchaina". V verigi blokov so bloki, ki shranjujejo dragocene informacije. Na primer, bitcoin blokira transakcije shranjevanja, kar je bistvo katere koli kriptovalute. Poleg tega blok vsebuje nekaj tehničnih informacij, kot so različica, trenutni časovni žig in zgoščena vrednost prejšnjega bloka. V tem članku ne bomo implementirali bloka, kot je opisano v specifikacijah blockchaina ali Bitcoina, namesto tega bomo uporabili njegovo poenostavljeno različico, ki vsebuje samo pomembne informacije. Tako izgleda. tukaj imamo strukturni blok:

type Block struct {

Timestamp je trenutni časovni žig (ko je blok ustvarjen), transactions so dejanske dragocene informacije v bloku, prevhas shrani zgoščeno vrednost prejšnjega bloka in Hash je zgoščena vrednost bloka. V specifikaciji Bitcoin Timestamp, prevhashin Hash so glave blokov, ki tvorijo ločeno podatkovno strukturo, in transakcije (transaction v našem primeru) je ločena podatkovna struktura. Zato jih tukaj mešamo zaradi enostavnosti.

Kako torej izračunamo zgoščene vrednosti? Način izračuna zgoščenih vrednosti je zelo pomembna značilnost verige blokov in prav ta funkcija zagotavlja varnost verige blokov. Dejstvo je, da je izračun zgoščene vrednosti računsko težka operacija, traja nekaj časa tudi na hitrih računalnikih (zato ljudje kupujejo zmogljive grafične procesorje za rudarjenje Bitcoinov). To je namerna arhitekturna zasnova, ki oteži dodajanje novih blokov in tako prepreči njihovo spreminjanje po dodajanju. O tem mehanizmu bomo razpravljali in ga implementirali v prihodnjem članku.

Zaenkrat bomo samo vzeli polja blokov, jih združili in izračunali zgoščeno vrednost SHA-256 za združeno kombinacijo. Naredimo to v Newhash metoda:

func NewHash(čas čas.Čas, transakcije []niz, prevhash []bajt) []bajt {

Nato bomo po Golangovi konvenciji implementirali funkcijo, ki bo poenostavila ustvarjanje bloka in zaključek:

func Blocks(transactions []string, prevhash []byte) *Block {

nadaljujemo z ustvarjanjem funkcije tiskanja. funkcija tiskanja je uporabna za tiskanje vsebine vsakega bloka, ki izvaja transakcijo. tukaj je koda:

func Print(block *Block) {

In transakcija funkcije za transakcijo tiskanja:

func Transaction(block *Block) {

ko bodo vse zahtevane funkcije dokončane, ga bomo uporabili v glavni funkciji:

func main() {

v redu vsa koda, ki smo jo napisali. zaženimo ga tako, da v terminal vnesemo go run main.go. Izhod:

zaključek

Zgradili smo zelo preprost prototip verige blokov: to je le niz blokov, pri čemer ima vsak blok povezavo s prejšnjim. Dejanska veriga blokov pa je veliko bolj zapletena. V naši verigi blokov je dodajanje novih blokov enostavno in hitro, v resnični verigi blokov pa dodajanje novih blokov zahteva nekaj dela: opraviti je treba nekaj težkih izračunov, preden dobimo dovoljenje za dodajanje blokov (ta mehanizem se imenuje Proof-of-Work). Prav tako je blockchain porazdeljena baza podatkov, ki nima enega odločevalca. Tako morajo nov blok potrditi in odobriti drugi udeleženci omrežja (ta mehanizem imenujemo soglasje). In v naši verigi blokov še ni transakcij!

Source: https://medium.com/@purbaryandi/mastering-blockchain-in-no-time-part-2-implementation-433dc7967fe8?source=rss——cryptocurrency-5

Časovni žig:

Več od srednje