GO语言实现区块链POW共识算法- -区块定义与数据串行化

这篇具有很好参考价值的文章主要介绍了GO语言实现区块链POW共识算法- -区块定义与数据串行化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情

区块链POW共识算法

区块链分布式系统,共识算法系统是它的灵魂,pow也就是工作量证明,证明你做过一定量的工作。(按劳分配,拼算力)

区块定义与数据串行化

在我们实现pow之前,需要对区块链的基本架子先搭起来(相当于有一个工作目标),我们可以简化一下比特币的基本结构,写一个最简单的区块数据结构,再使用切片来存储产生的区块,使用hash将它们联系起来。 代码实现:

1、定义block结构

创建 block.go文件 go type Block struct { Timestamp int64 //时间戳 Data []byte //数据域 PrevBlockHash []byte //前一区块hash值 Hash []byte //当前区块hash }

2、区块计算hash值

实现hash计算功能 go //区块设置内部hash方法 func (b *Block)SetHash(){ //将时间戳转换为[]byte timestamp:=[]byte(strconv.FormatInt(b.Timestamp,10)) //将前一区块的hash、交易信息、时间戳联合到一起 headers:=bytes.Join([][]byte{b.PrevBlockHash,b.Data,timestamp},[]byte{}) //计算本块hash值 hash:=sha256.Sum256(headers) b.Hash=hash[:] }

3、创世块创建

```go //创建Block,返回Block指针 func NewBlock(data string,PrevBlockHash []byte)*Block{ //构造block block:=&Block{time.Now().Unix(),[]byte(data),PrevBlockHash,[]byte{}} //设置hash block.SetHash() return block }

//创世块创建,返回创世块Block指针 func NewGenesisBlock()*Block{ return NewBlock("创世块",[]byte{})

} ```

4、区块链功能实现

区块链使用一个Block指针类型的切片来实现

创建blockchain.go文件 go //区块链:一个区块的指针切片 type Blockcahin struct { Blocks []*Block } //为BlockChain增加AddBlock方法(向切片增加一个指针) //增加区块 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函数,通过创世块创建并初始化区块链。 func NewBlockchain()*Blockcahin { return &Blockcahin{[]*Block{NewGenesisBlock()}} }

5、测试与使用

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

func main() { //初始化 bc:=NewBlockchain() //创建块记录 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目录下,需要设置go mod

最后看目录结构:

pow共识算法 go语言,区块链,共识算法,算法文章来源地址https://www.toymoban.com/news/detail-718927.html

到了这里,关于GO语言实现区块链POW共识算法- -区块定义与数据串行化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Raft毕业设计——基于Raft+区块链的共识算法Raft设计与实现(毕业论文+程序源码)——共识算法Raft

    大家好,今天给大家介绍基于Raft+区块链的共识算法Raft设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦 文章目录: 区块链,作为目前火

    2024年02月09日
    浏览(50)
  • 竞赛python区块链实现 - proof of work工作量证明共识算法

    🔥 优质竞赛项目系列,今天要分享的是 python区块链实现 - proof of work工作量证明共识算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 学长以比特币的结构向大家详解区块链的组成部分 previous hash

    2024年02月05日
    浏览(52)
  • 区块链学习Day03(Pow算法)

    声明:笔记用作自己学习,本人也不太讲的清,请见谅。 生成新的区块,再返回新的块,也会包含上面的属性,前一个哈希也会变得,就是preHash:前一个节点得哈希。 代码继续跟着上一章文章,不懂得看下面 链接:区块链学习Day02(Pow算法) 结果: 省略… 4b5ffc524ced8f17059a

    2024年02月04日
    浏览(45)
  • 【毕设教程】python区块链实现 - proof of work工作量证明共识算法

    Hi,大家好,这里是丹成学长,今天向同学们介绍如何构建一个区块链系统作为毕设,区块链的原理 🧿 选题指导, 项目分享: https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md 学长以比特币的结构向大家详解区块链的组成部分 previous hash(前

    2024年01月21日
    浏览(46)
  • 挑战杯 python区块链实现 - proof of work工作量证明共识算法

    🔥 优质竞赛项目系列,今天要分享的是 python区块链实现 - proof of work工作量证明共识算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 学长以比特币的结构向大家详解区块链的组成部分 previous hash

    2024年02月21日
    浏览(61)
  • 竞赛保研 python区块链实现 - proof of work工作量证明共识算法

    🔥 优质竞赛项目系列,今天要分享的是 python区块链实现 - proof of work工作量证明共识算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 学长以比特币的结构向大家详解区块链的组成部分 previous hash

    2024年02月04日
    浏览(46)
  • 计算机竞赛python区块链实现 - proof of work工作量证明共识算法

    🔥 优质竞赛项目系列,今天要分享的是 python区块链实现 - proof of work工作量证明共识算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 学长以比特币的结构向大家详解区块链的组成部分 previous hash

    2024年02月05日
    浏览(55)
  • 互联网加竞赛 python区块链实现 - proof of work工作量证明共识算法

    🔥 优质竞赛项目系列,今天要分享的是 python区块链实现 - proof of work工作量证明共识算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 学长以比特币的结构向大家详解区块链的组成部分 previous hash

    2024年02月04日
    浏览(44)
  • 区块链中的共识机制以及共识算法

    目录 什么是共识 什么是共识机制 共识机制类型 1、基于工作证明(Proof of Work PoW) PoW的特点

    2024年02月11日
    浏览(50)
  • 区块链实现之POW分析

    本代码的全部实现已在github上面同步开源,项目地址: link 工作量证明(Proof Of Work,简称POW),简单理解就是一份证明,用来确认你做过一定量的工作。监测工作的整个过程通常是极为低效的,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式

    2024年02月04日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包