【复现go语言编写的区块链PBFT共识算法中爬坑记录】

这篇具有很好参考价值的文章主要介绍了【复现go语言编写的区块链PBFT共识算法中爬坑记录】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在windows下成功运行go语言编写的区块链pbft共识代码:

先附上代码链接:https://github.com/corgi-kx/blockchain_consensus_algorithm/tree/master/pbft

主要是想记录一下运行代码过程中遇到的问题,万一以后用得到,还能抄一下作业


问题1:配置go语言环境变量

电脑上没有go语言环境,按下面步骤进行环境配置:

1、首先在go官网下载https://golang.org/dl/安装包,根据自己电脑选择,我是windows 64位,所以下载的 go1.18.4.windows-amd64.msi;
2、然后按照指引一步一步安装即可,唯一需要注意的地方是在选择安装位置的时候,我选择的默认位置,C:\Program Files\Go,这个位置要记好;
3、安装结束,也就是一直正常进行到“Finish”,到这里安装环节就结束了;
4、开始环境配置,建议大家在网上搜一下,环境配置的帖子很多,我选择的是配置过程是此电脑--属性--高级--环境变量--用户变量--新建--变量名:GOPATH 变量值:步骤3中的路径--进入用户变量的path中--新建C:\Program Files\Go\bin,至此,完成环境配置;
5、进入cmd,输入go,回车可以看到相应提示表示成功,也可以使用有go version查看go版本。


问题2:按照代码注释运行代码报错

报错提示:go: go.mod file not found in current directory or any parent directory; see 'go help modules'

查了一下,找到了解决办法:
1、开启go modules功能,命令行输入

go env -w GO111MODULE=on

2、在该项目目录下(我要运行pbft文件夹里的代码,故而在pbft文件夹所在目录下),运行下面命令

go mod init pbft //pbft代表文件夹名

然后,错误解决,继续往下进行!

步骤3:这里往下已经顺利进行了,所以改为步骤3

1、按照github上代码执行顺序,打开一个客户端和4个节点,其中客户端执行pbft.exe client,节点分别执行pbft.exe N0,pbft.exe N1,pbft.exe N2,pbft.exe N3,如下图所示
信誉 区块链共识 代码,区块链,共识算法,windows
2、接着,随便输入一段信息,查看节点同步情况,从下图可以看到,信息同步成功,
信誉 区块链共识 代码,区块链,共识算法,windows
3、关闭一个节点(代表作恶、故障节点),再次输入信息,看看是否还会接收到reply。可以看到,客户端依然会接收到reply,因为根据公式 n >= 3f+1 ,就算宕机一个节点,系统依然能顺利运行。
信誉 区块链共识 代码,区块链,共识算法,windows

4、关闭两个节点(代表作恶、故障节点),再次输入信息,看看是否还会接收到reply。可以看到,关闭两个节点后,故障节点已经超出了pbft的允许数量,消息进行到Prepare阶段由于接收不到满足数量的信息,固系统不再进行commit确认,客户端也接收不到reply。
信誉 区块链共识 代码,区块链,共识算法,windows

可以大致看到pbft的运行情况,上面只是共识算法的学习中代码的初步复现,继续加油。文章来源地址https://www.toymoban.com/news/detail-822272.html

到了这里,关于【复现go语言编写的区块链PBFT共识算法中爬坑记录】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 区块链共识机制 (Consensus)(PoW,PoS,PAXOS,RAFT,PBFT)

    所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。再通俗一点来讲,如果中国一名微博大V、美国一名虚拟币玩家、一名非洲留学生和一

    2024年02月03日
    浏览(33)
  • FISCO BCOS的PBFT共识算法流程详解

    原文: https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/design/consensus/pbft.html PBFT模块主要包括 PrepareReq 、 SignReq 、 CommitReq 和 ViewChangeReq 四种共识消息: PrepareReqPacket : 包含区块的请求包,由leader产生并向所有Replica节点广播,Replica节点收到Prepare包后,验证PrepareReq签名、执行区块并

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

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

    2024年02月11日
    浏览(50)
  • 区块链共识算法

    什么是区块链共识算法最简单的答案是,它是一个程序,区块链网络的所有对等方都通过它就分布式账本的实时状态共同接受或达成共识。 共识机制使区块链网络能够获得可靠性并在不同节点之间建立一定程度的信任,同时确保环境的安全性。这就是为什么它是每个区块链应

    2024年02月11日
    浏览(46)
  • 区块链入门系列之共识算法

    区块链基本概念和名词解释 P2P 共识算法 梅克尔-帕特里夏树 从零开始搭建区块链 前文已经说过,区块链从本质上来说就是基于P2P网络的分布式系统,而对于分布式系统来说,如何维护各节点之间的状态尤其重要,需要所有节点步调一致,这就需要设计相应的算法或者协议来

    2023年04月08日
    浏览(60)
  • 小白学习区块链-共识算法测试(1)

    网络上很少有全面详细的区块链系统仿真的代码和讲解,从头开始真的很难。 现在先把叶之秋大神分享的BFT-SMaRt 性能测试实验给复现一下,遇到的困难...不计其数。链接如下:共识和区块链实验-以 BFT-SMaRt 和 Fabric 为例 - 知乎 Ubuntu和docker部分省略。 初始化环境 拉取Ubuntu18

    2024年04月17日
    浏览(36)
  • CCR量化:什么是区块链共识算法?

    在我们定义区块链共识算法之前,了解“共识”的含义至关重要。简而言之,这是一种达成协议的方式。区块链是一个分散的系统,没有单一的管理元素。为了在彼此之间建立某种信任,参与者应该就一些让每个人都满意的操作原则达成一致。这是共识机制的固有功能。 那么

    2024年02月01日
    浏览(41)
  • 基于共识算法和区块链模拟实现超级账本

    实验语言:GO 实验环境:GoLand 2022.1 ; go 1.13.4.widows-amd64.msi ;curl-7.83.1 实验中使用的开源包: http://github.com/davecgh/go-spew/spew;http://github.com/gorilla/mux;http://github.com/joho/godotenv; 实验中使用的工具包: \\\"crypto/sha256\\\"“encoding/hex”“encoding/json”“fmt”“io”“log”“net/http”“os”

    2024年01月20日
    浏览(45)
  • 一文带你了解区块链中15种共识算法

    区块链技术席卷全球,提供了一种去中心化且安全的信息存储和传输方式。它还彻底改变了交易的执行方式,随之而来的是广泛的共识算法。在这里,共识算法在确保区块链网络的完整性方面发挥着关键作用。在本文中,我们将探讨所有主要类型的区块链共识算法、它们的含

    2024年02月01日
    浏览(49)
  • 区块链的核心技术是区块链共识算法。共识算法指的是构建一条链上事务的规则,使所有参与方都认同该规则而不会出现冲突

    作者:禅与计算机程序设计艺术 区块链是一种分布式数据库,本质上是一个去中心化的数据库。它通过密码学的多方计算共识算法解决了分歧的产生。 共识算法是用来建立并维持区块链网络的基本方法之一。共识算法旨在解决所有参与者对数据状态的最终确认。共识算法的

    2024年02月08日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包