Mestring av Blockchain på et blunk del 2 — implementering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Mestring av Blockchain på et blunk del 2 — implementering

Purbaryandi

I denne serien med artikler bygger vi en forenklet kryptovaluta som er basert på enkel blokkjedeimplementering i Golang på mindre enn 5 minutter. du må installere golang først for å lage dette prosjektet. for tekstredigering kan du bruke hva som helst, her bruker jeg visuell studiokode.

Mestring av Blockchain på et blunk del 2 — implementering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
kilde: bitdegree

Installerte du det? Ok, la oss gjøre det!

hvis du har opprettet prosjektet, oppretter du en fil main.go . oke lar kode, først starter vi fra main.go La oss starte med struct Block-delen av "blockchain". I blokkjeden blokkerer den som lagrer verdifull informasjon. For eksempel blokkerer bitcoin butikktransaksjoner, essensen av enhver kryptovaluta. I tillegg til dette inneholder en blokk noe teknisk informasjon, som versjonen, gjeldende tidsstempel og hashen til forrige blokk. I denne artikkelen skal vi ikke implementere blokken slik den er beskrevet i blockchain- eller Bitcoin-spesifikasjoner, i stedet vil vi bruke en forenklet versjon av den, som bare inneholder vesentlig informasjon. Slik ser det ut. her har vi en strukturblokk:

type Block struct {

Timestamp er gjeldende tidsstempel (når blokken er opprettet), transactions er den faktiske verdifulle informasjonen i blokken, prevhas lagrer hashen til forrige blokk, og Hash er hashen til blokken. I Bitcoin-spesifikasjonen Timestamp, prevhashog Hash er blokkhoder, som danner en separat datastruktur, og transaksjoner (transaction i vårt tilfelle) er en egen datastruktur. Så vi blander dem her for enkelhets skyld.

Så hvordan beregner vi hashen? Måten hashes beregnes på er en veldig viktig funksjon i blockchain, og det er denne funksjonen som gjør blockchain sikker. Saken er at å beregne en hash er en beregningsmessig vanskelig operasjon, det tar litt tid selv på raske datamaskiner (det er derfor folk kjøper kraftige GPUer for å utvinne Bitcoin). Dette er en tilsiktet arkitektonisk design, som gjør det vanskelig å legge til nye blokker, og dermed forhindre at de endres etter at de er lagt til. Vi vil diskutere og implementere denne mekanismen i en fremtidig artikkel.

Foreløpig tar vi bare blokkfelt, setter dem sammen og beregner en SHA-256-hash på den sammenkoblede kombinasjonen. La oss gjøre dette inn Newhash metode:

func NewHash(tid tid.Tid, transaksjoner []streng, prevhash []byte) []byte {

Deretter, etter en Golang-konvensjon, implementerer vi en funksjon som vil forenkle opprettelsen av en blokk og finish:

func Blocks(transaksjoner []streng, prevhash []byte) *Blokker {

vi fortsetter å lage en utskriftsfunksjon. utskriftsfunksjonen er nyttig for å skrive ut innholdet i hver blokk som utfører en transaksjon. her er koden:

func Print(blokk *Blokker) {

Og funksjonstransaksjon for utskriftstransaksjon:

func Transaction(block *Block) {

etter at alle nødvendige funksjoner er fullført, vil vi bruke den i hovedfunksjonen:

func main () {

ok all koden vi har skrevet ferdig. la oss kjøre det ved å skrive go run main.go i terminal. Utgang:

konklusjonen

Vi bygde en veldig enkel blokkjedeprototype: det er bare en rekke blokker, der hver blokk har en forbindelse til den forrige. Selve blokkjeden er imidlertid mye mer kompleks. I blokkjeden vår er det enkelt og raskt å legge til nye blokker, men i ekte blokkjeder krever det litt arbeid å legge til nye blokker: man må utføre noen tunge beregninger før man får tillatelse til å legge til blokker (denne mekanismen kalles Proof-of-Work). Blockchain er også en distribuert database som ikke har noen enkelt beslutningstaker. Dermed må en ny blokkering bekreftes og godkjennes av andre deltakere i nettverket (denne mekanismen kalles konsensus). Og det er ingen transaksjoner i blokkjeden vår ennå!

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

Tidstempel:

Mer fra Medium