Blockchainin hallitseminen hetkessä, osa 2 — PlatoBlockchain Data Intelligencen toteutus. Pystysuuntainen haku. Ai.

Blockchainin hallitseminen nopeasti, osa 2 – toteutus

Purbaryandi

Tässä artikkelisarjassa rakennamme yksinkertaistetun kryptovaluutan, joka perustuu yksinkertaiseen lohkoketjutoteutukseen Golangissa alle 5 minuutissa. sinun on asennettava golang ensin tehdäksesi tämän projektin. tekstieditorissa voit käyttää mitä tahansa, tässä käytän Visual Studio -koodia.

Blockchainin hallitseminen hetkessä, osa 2 — PlatoBlockchain Data Intelligencen toteutus. Pystysuuntainen haku. Ai.
lähde: bitdegree

Asensitko sen? Selvä, tehdään se!

jos olet luonut projektin, luo tiedosto main.go . oke antaa koodin, aloitamme ensin osoitteesta main.go. Aloitetaan "blockchainin" struct Block -osasta. Lohkoketjussa se estää arvokkaan tiedon tallentamisen. Esimerkiksi bitcoin-lohkot tallentavat tapahtumia, jotka ovat minkä tahansa kryptovaluutan ydin. Tämän lisäksi lohko sisältää joitain teknisiä tietoja, kuten sen version, nykyisen aikaleiman ja edellisen lohkon hajautusarvon. Tässä artikkelissa emme aio toteuttaa lohkoa, kuten se on kuvattu blockchain- tai Bitcoin-spesifikaatioissa, vaan käytämme sen yksinkertaistettua versiota, joka sisältää vain tärkeitä tietoja. Tältä se näyttää. tässä meillä on rakennelohko:

tyyppi Block struct {

Timestamp on nykyinen aikaleima (kun lohko luodaan), transactions on lohkon sisältämä todellinen arvokas tieto, prevhas tallentaa edellisen lohkon hashin ja Hash on lohkon hash. Bitcoinin eritelmissä Timestamp, prevhashja Hash ovat lohkootsikot, jotka muodostavat erillisen tietorakenteen, ja tapahtumat (transaction meidän tapauksessamme) on erillinen tietorakenne. Joten sekoitamme ne tässä yksinkertaisuuden vuoksi.

Joten miten laskemme tiivisteet? Hajautusten laskentatapa on erittäin tärkeä lohkoketjun ominaisuus, ja juuri tämä ominaisuus tekee lohkoketjusta turvallisen. Asia on siinä, että hashin laskeminen on laskennallisesti vaikea operaatio, se vie jonkin aikaa jopa nopeilla tietokoneilla (siksi ihmiset ostavat tehokkaita GPU:ita Bitcoinin louhimiseen). Tämä on tahallinen arkkitehtoninen suunnittelu, joka vaikeuttaa uusien lohkojen lisäämistä ja estää siten niiden muuttamisen lisäyksen jälkeen. Keskustelemme tästä mekanismista ja toteutamme sitä seuraavassa artikkelissa.

Toistaiseksi otamme vain lohkokentät, ketjutamme ne ja laskemme SHA-256-hajautusarvon ketjutetulle yhdistelmälle. Tehdään tämä sisään Newhash menetelmä:

func NewHash(aika aika.aika, tapahtumat []merkkijono, prevhash []tavu) []tavu {

Seuraavaksi Golangin käytäntöä noudattaen otamme käyttöön toiminnon, joka yksinkertaistaa lohkon luomista ja viimeistelyä:

func Blocks(tapahtumat []merkkijono, prevhash []tavu) *Block {

jatkamme tulostustoiminnon luomista. tulostustoiminto on hyödyllinen tulostettaessa jokaisen tapahtuman suorittavan lohkon sisältö. tässä on koodi:

func Tulosta(block *Block) {

Ja tulostustapahtuman toimintotapahtuma:

func Transaction(block *Block) {

Kun kaikki vaaditut toiminnot on suoritettu, käytämme sitä päätoiminnossa:

func main() {

okei kaikki koodi, jonka olemme kirjoittaneet. Suoritetaan se kirjoittamalla terminaaliin go run main.go. Lähtö:

Yhteenveto

Rakensimme hyvin yksinkertaisen lohkoketjuprototyypin: se on vain joukko lohkoja, joista jokaisella on yhteys edelliseen. Todellinen lohkoketju on kuitenkin paljon monimutkaisempi. Lohkoketjussamme uusien lohkojen lisääminen on helppoa ja nopeaa, mutta todellisessa lohkoketjussa uusien lohkojen lisääminen vaatii jonkin verran työtä: täytyy suorittaa raskaita laskutoimituksia ennen kuin saa luvan lisätä lohkoja (tätä mekanismia kutsutaan nimellä Proof-of-Work). Myös lohkoketju on hajautettu tietokanta, jolla ei ole yhtä päätöksentekijää. Näin ollen uusi lohko on vahvistettava ja hyväksyttävä verkon muiden osallistujien toimesta (tätä mekanismia kutsutaan konsensukseksi). Ja lohkoketjussamme ei ole vielä tapahtumia!

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

Aikaleima:

Lisää aiheesta Keskikokoinen