国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

GO語言實現(xiàn)區(qū)塊鏈POW共識算法- -區(qū)塊定義與數(shù)據(jù)串行化

這篇具有很好參考價值的文章主要介紹了GO語言實現(xiàn)區(qū)塊鏈POW共識算法- -區(qū)塊定義與數(shù)據(jù)串行化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

持續(xù)創(chuàng)作,加速成長!這是我參與「掘金日新計劃 · 6 月更文挑戰(zhàn)」的第9天,點擊查看活動詳情

區(qū)塊鏈POW共識算法

區(qū)塊鏈分布式系統(tǒng),共識算法系統(tǒng)是它的靈魂,pow也就是工作量證明,證明你做過一定量的工作。(按勞分配,拼算力)

區(qū)塊定義與數(shù)據(jù)串行化

在我們實現(xiàn)pow之前,需要對區(qū)塊鏈的基本架子先搭起來(相當于有一個工作目標),我們可以簡化一下比特幣的基本結(jié)構(gòu),寫一個最簡單的區(qū)塊數(shù)據(jù)結(jié)構(gòu),再使用切片來存儲產(chǎn)生的區(qū)塊,使用hash將它們聯(lián)系起來。 代碼實現(xiàn):

1、定義block結(jié)構(gòu)

創(chuàng)建 block.go文件 go type Block struct { Timestamp int64 //時間戳 Data []byte //數(shù)據(jù)域 PrevBlockHash []byte //前一區(qū)塊hash值 Hash []byte //當前區(qū)塊hash }

2、區(qū)塊計算hash值

實現(xiàn)hash計算功能 go //區(qū)塊設(shè)置內(nèi)部hash方法 func (b *Block)SetHash(){ //將時間戳轉(zhuǎn)換為[]byte timestamp:=[]byte(strconv.FormatInt(b.Timestamp,10)) //將前一區(qū)塊的hash、交易信息、時間戳聯(lián)合到一起 headers:=bytes.Join([][]byte{b.PrevBlockHash,b.Data,timestamp},[]byte{}) //計算本塊hash值 hash:=sha256.Sum256(headers) b.Hash=hash[:] }

3、創(chuàng)世塊創(chuàng)建

```go //創(chuàng)建Block,返回Block指針 func NewBlock(data string,PrevBlockHash []byte)*Block{ //構(gòu)造block block:=&Block{time.Now().Unix(),[]byte(data),PrevBlockHash,[]byte{}} //設(shè)置hash block.SetHash() return block }

//創(chuàng)世塊創(chuàng)建,返回創(chuàng)世塊Block指針 func NewGenesisBlock()*Block{ return NewBlock("創(chuàng)世塊",[]byte{})

} ```

4、區(qū)塊鏈功能實現(xiàn)

區(qū)塊鏈使用一個Block指針類型的切片來實現(xiàn)

創(chuàng)建blockchain.go文件 go //區(qū)塊鏈:一個區(qū)塊的指針切片 type Blockcahin struct { Blocks []*Block } //為BlockChain增加AddBlock方法(向切片增加一個指針) //增加區(qū)塊 func (bc Blockcahin)AddBlock(data string) { //獲取前一塊信息 PrevBlock:=bc.Blocks[len(bc.Blocks)-1] newBlock:=NewBlock(data,PrevBlock.Hash) bc.Blocks=append(bc.Blocks,newBlock) } //準備NewBlockchain函數(shù),通過創(chuàng)世塊創(chuàng)建并初始化區(qū)塊鏈。 func NewBlockchain()*Blockcahin { return &Blockcahin{[]*Block{NewGenesisBlock()}} }

5、測試與使用

```go package main import ( "fmt" )

func main() { //初始化 bc:=NewBlockchain() //創(chuàng)建塊記錄 bc.AddBlock("小明給我1ETH") bc.AddBlock("小芳給了我2ETH") //遍歷 for _, block := range bc.Blocks { fmt.Printf("prev,hash:%x\n",block.PrevBlockHash) fmt.Printf("Data:%s\n",block.Data) fmt.Printf("Hash:%x\n",block.Hash) fmt.Println()

} } ```

注意:如果不在GOPATH目錄下,需要設(shè)置go mod

最后看目錄結(jié)構(gòu):

pow共識算法 go語言,區(qū)塊鏈,共識算法,算法文章來源地址http://www.zghlxwxcb.cn/news/detail-718927.html

到了這里,關(guān)于GO語言實現(xiàn)區(qū)塊鏈POW共識算法- -區(qū)塊定義與數(shù)據(jù)串行化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Raft畢業(yè)設(shè)計——基于Raft+區(qū)塊鏈的共識算法Raft設(shè)計與實現(xiàn)(畢業(yè)論文+程序源碼)——共識算法Raft

    Raft畢業(yè)設(shè)計——基于Raft+區(qū)塊鏈的共識算法Raft設(shè)計與實現(xiàn)(畢業(yè)論文+程序源碼)——共識算法Raft

    大家好,今天給大家介紹基于Raft+區(qū)塊鏈的共識算法Raft設(shè)計與實現(xiàn),文章末尾附有本畢業(yè)設(shè)計的論文和源碼下載地址哦。需要下載開題報告PPT模板及論文答辯PPT模板等的小伙伴,可以進入我的博客主頁查看左側(cè)最下面欄目中的自助下載方法哦 文章目錄: 區(qū)塊鏈,作為目前火

    2024年02月09日
    瀏覽(29)
  • 競賽python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法

    競賽python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法

    ?? 優(yōu)質(zhì)競賽項目系列,今天要分享的是 python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 學長以比特幣的結(jié)構(gòu)向大家詳解區(qū)塊鏈的組成部分 previous hash

    2024年02月05日
    瀏覽(20)
  • 區(qū)塊鏈學習Day03(Pow算法)

    區(qū)塊鏈學習Day03(Pow算法)

    聲明:筆記用作自己學習,本人也不太講的清,請見諒。 生成新的區(qū)塊,再返回新的塊,也會包含上面的屬性,前一個哈希也會變得,就是preHash:前一個節(jié)點得哈希。 代碼繼續(xù)跟著上一章文章,不懂得看下面 鏈接:區(qū)塊鏈學習Day02(Pow算法) 結(jié)果: 省略… 4b5ffc524ced8f17059a

    2024年02月04日
    瀏覽(20)
  • 競賽保研 python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法

    競賽保研 python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法

    ?? 優(yōu)質(zhì)競賽項目系列,今天要分享的是 python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 學長以比特幣的結(jié)構(gòu)向大家詳解區(qū)塊鏈的組成部分 previous hash

    2024年02月04日
    瀏覽(19)
  • 挑戰(zhàn)杯 python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法

    挑戰(zhàn)杯 python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法

    ?? 優(yōu)質(zhì)競賽項目系列,今天要分享的是 python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 學長以比特幣的結(jié)構(gòu)向大家詳解區(qū)塊鏈的組成部分 previous hash

    2024年02月21日
    瀏覽(25)
  • 【畢設(shè)教程】python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法

    【畢設(shè)教程】python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法

    Hi,大家好,這里是丹成學長,今天向同學們介紹如何構(gòu)建一個區(qū)塊鏈系統(tǒng)作為畢設(shè),區(qū)塊鏈的原理 ?? 選題指導, 項目分享: https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md 學長以比特幣的結(jié)構(gòu)向大家詳解區(qū)塊鏈的組成部分 previous hash(前

    2024年01月21日
    瀏覽(21)
  • 計算機競賽python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法

    計算機競賽python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法

    ?? 優(yōu)質(zhì)競賽項目系列,今天要分享的是 python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 學長以比特幣的結(jié)構(gòu)向大家詳解區(qū)塊鏈的組成部分 previous hash

    2024年02月05日
    瀏覽(27)
  • 互聯(lián)網(wǎng)加競賽 python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法

    互聯(lián)網(wǎng)加競賽 python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法

    ?? 優(yōu)質(zhì)競賽項目系列,今天要分享的是 python區(qū)塊鏈實現(xiàn) - proof of work工作量證明共識算法 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 學長以比特幣的結(jié)構(gòu)向大家詳解區(qū)塊鏈的組成部分 previous hash

    2024年02月04日
    瀏覽(25)
  • 區(qū)塊鏈中的共識機制以及共識算法

    目錄 什么是共識 什么是共識機制 共識機制類型 1、基于工作證明(Proof of Work?PoW) PoW的特點

    2024年02月11日
    瀏覽(33)
  • 區(qū)塊鏈實現(xiàn)之POW分析

    區(qū)塊鏈實現(xiàn)之POW分析

    本代碼的全部實現(xiàn)已在github上面同步開源,項目地址: link 工作量證明(Proof Of Work,簡稱POW),簡單理解就是一份證明,用來確認你做過一定量的工作。監(jiān)測工作的整個過程通常是極為低效的,而通過對工作的結(jié)果進行認證來證明完成了相應的工作量,則是一種非常高效的方式

    2024年02月04日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包