課程
/后端開發
/Go
/用GO語言構建自己的區塊鏈
老師,請問有源碼嗎?能分享一下給大家嗎?
2019-09-19
源自:用GO語言構建自己的區塊鏈 4-1
正在回答
https://github.com/BlockChain-dragon/blockchain-deno? ?原碼
package?core import?( ???"fmt" ???"log" ) type?Blockchain?struct?{ ???Blocks?[]*Block } //創世區塊鏈 func?NewBlockChain()?*Blockchain?{ ???genesis?:=?GenerateOriginBlock() ???blockchain?:=?Blockchain{} ???blockchain.AppendBlock(&genesis) ???return?&blockchain } //每一個新數據都創建一個區塊,方便外部調用 func?(bc?*Blockchain)SendData(data?string)?{ ???preBlock?:=?bc.Blocks[len(bc.Blocks)?-?1] ???newBlock?:=?GenerateNewBlock(*preBlock,?data) ???bc.AppendBlock(&newBlock) } //往區塊鏈里添加區塊 func?(bc?*Blockchain)?AppendBlock(newBlock?*Block)?{ ???if?len(bc.Blocks)?==?0?{//第一個區塊 ??????bc.Blocks?=?append(bc.Blocks,newBlock) ??????return ???} ???if?!isValid(*newBlock,*bc.Blocks[len(bc.Blocks)?-?1])?{ ??????log.Fatal("Invalid?block") ???} ???bc.Blocks?=?append(bc.Blocks,newBlock) } //打印區塊鏈 func?(bc?*Blockchain)?Print()??{ ???for?_,block?:=?range?bc.Blocks?{ ??????fmt.Printf("Index:%d\n",block.Index) ??????fmt.Printf("PrevHash:%s\n",block.PrevBlockHash) ??????fmt.Printf("Hash:%s\n",block.Hash) ??????fmt.Printf("Timestamp:%d\n",block.Timestamp) ??????fmt.Printf("Data:%s\n",block.Data) ???} } //新區塊校驗 func?isValid(newBlock?Block,oldBlock?Block)?bool?{ ???if?newBlock.Index?-?1?!=?oldBlock.Index?{ ??????return?false ???} ???if?newBlock.PrevBlockHash?!=?oldBlock.Hash?{ ??????return?false ???} ???if?calculateHash(newBlock)?!=?newBlock.Hash?{ ??????return?false ???} ???return?true }
舉報
區塊鏈自己動手實現一把,啥都明白了!
2 回答有源代碼可以下載嗎,總是出現問題運行不了
1 回答課程文字版和源代碼
1 回答請問數據是怎么存儲的
1 回答輸出報錯syntax error: unexpected :, expecting comma or )請問是咋回事
1 回答這里計算新區塊的Hash是有問題的吧
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-12-23
https://github.com/BlockChain-dragon/blockchain-deno? ?原碼
2019-10-07
2019-10-07