Mestring af Blockchain på ingen tid, del 2 — implementering af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Mestring af Blockchain på ingen tid del 2 — implementering

Purbaryandi

I denne serie af artikler bygger vi en forenklet kryptovaluta, der er baseret på simpel blockchain-implementering i Golang på mindre end 5 minutter. du skal først installere golang for at lave dette projekt. til teksteditor kan du bruge hvad som helst, her bruger jeg visual studio code.

Mestring af Blockchain på ingen tid, del 2 — implementering af PlatoBlockchain Data Intelligence. Lodret søgning. Ai.
kilde: bitdegree

Har du installeret det? Okay, lad os gøre det!

hvis du har oprettet projektet, opret en fil main.go . oke lad os kode, først starter vi fra main.go Lad os starte med struct Block-delen af ​​"blockchain". I blockchain blokerer den, der gemmer værdifuld information. For eksempel blokerer bitcoin butikstransaktioner, essensen af ​​enhver kryptovaluta. Udover dette indeholder en blok nogle tekniske oplysninger, såsom dens version, det aktuelle tidsstempel og hashen for den forrige blok. I denne artikel vil vi ikke implementere blokken, som den er beskrevet i blockchain- eller Bitcoin-specifikationer, i stedet vil vi bruge en forenklet version af den, som kun indeholder væsentlig information. Sådan ser det ud. her har vi en strukturblok:

type Block struct {

Timestamp er det aktuelle tidsstempel (når blokken oprettes), transactions er den faktiske værdifulde information indeholdt i blokken, prevhas gemmer hashen fra den forrige blok, og Hash er blokkens hash. I Bitcoin-specifikation Timestamp, prevhashog Hash er blokoverskrifter, som danner en separat datastruktur, og transaktioner (transaction i vores tilfælde) er en separat datastruktur. Så vi blander dem her for nemheds skyld.

Så hvordan beregner vi hasherne? Måden hashes beregnes på er et meget vigtigt træk ved blockchain, og det er denne funktion, der gør blockchain sikker. Sagen er, at det er en beregningsmæssigt vanskelig operation at beregne en hash, det tager lidt tid selv på hurtige computere (det er derfor folk køber kraftige GPU'er for at mine Bitcoin). Dette er et bevidst arkitektonisk design, som gør det vanskeligt at tilføje nye blokke, og dermed forhindrer deres ændring, efter at de er tilføjet. Vi vil diskutere og implementere denne mekanisme i en fremtidig artikel.

Indtil videre tager vi blot blokfelter, sammenkæder dem og beregner en SHA-256-hash på den sammenkædede kombination. Lad os gøre det her Newhash metode:

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

Dernæst, efter en Golang-konvention, implementerer vi en funktion, der vil forenkle oprettelsen af ​​en blok og finish:

func Blocks(transaktioner []streng, prevhash []byte) *Blok {

vi fortsætter med at oprette en printfunktion. printfunktionen er nyttig til at udskrive indholdet af hver blok, der udfører en transaktion. her er koden:

func Print(blok *Bloker) {

Og funktionstransaktion for printtransaktion:

func Transaction(blok *Bloker) {

efter at alle de nødvendige funktioner er udført, vil vi bruge det i hovedfunktionen:

func main () {

okay al den kode vi er færdig med at skrive. lad os køre det ved at skrive go run main.go i terminal. Output:

Konklusion

Vi byggede en meget simpel blockchain-prototype: det er bare en række blokke, hvor hver blok har en forbindelse til den forrige. Selve blockchain er dog meget mere kompleks. I vores blockchain er det nemt og hurtigt at tilføje nye blokke, men i ægte blockchain kræver det noget arbejde at tilføje nye blokke: man skal udføre nogle tunge beregninger, før man får tilladelse til at tilføje blokke (denne mekanisme kaldes Proof-of-Work). Blockchain er også en distribueret database, der ikke har nogen enkelt beslutningstager. En ny blok skal således bekræftes og godkendes af andre deltagere i netværket (denne mekanisme kaldes konsensus). Og der er ingen transaktioner i vores blockchain endnu!

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

Tidsstempel:

Mere fra Medium