`

BFT算法实现

    博客分类:
  • EOS
 
阅读更多
实现:
1.EOS的出块流程是周期性循环的,即每过126s,top_producers中的节点即重复一次出场流程,每个节点生产12个区块.
2.DPoS算法是通过eosio.system系统合约实现的,并根据std::sort()函数按照选出的前21个超级节点的账户名首字母排序,而控制这21个出场节点的生产区块的具体函数就是3.plugins/producer_plugin/produce_plugin.cpp中的schedule_production_loop函数
nodeos程序根据全局时间(ePoCh)重复执行schedule_production_loop()函数,以达到周期性出场的目的

schedule_production_loop():
1.通过chain_plugin插件调用controller函数,并重置时间
2.调用start_block()函数,尝试打包新区块,返回start_block_result状态(succeeded,failed,waiting,exhausted)
a.failed:提示出块错误消息,挂起至同步状态
b.waiting:不做任何操作,保持同步状态
c.succeeded:
c1:出块成功,若生产的区块不是exhausted状态(超过规定的出块时间),则调用maybe_produce_block函数尝试生产并发布区块
c2:判断该节点是否有其他出块账户,若有,等待下次出块.监听出块节点动态,判断自己是否处在下一轮出块列表中
c3:通过这样的设置,nodeos节点就可以持续跟踪自己是否具有当前ePoCh的出块权限,若具有,则出块,反之则同步

start_block():EOS生产区块的函数,通过这个函数可以保证节点在处于出块环节时生产区块
1.首先获取当前区块生产者
2.接着判断本地节点是否具有最新区块,同步是否完成
3.接着判断是否具有对应的私钥
4.正式出块,调用controller中的start_block函数,生产区块
分享到:
评论

相关推荐

    bft.tar.gz_BFT

    综合以上,这个压缩包提供了一个完整的BFT算法实现和BFS文件系统的开发环境,用户可以通过编译和配置这些文件来理解和研究BFT算法如何应用于文件系统的实际场景。同时,这也为开发者提供了一个可靠的分布式文件系统...

    基于Java的京东JD Chain BFT共识算法设计源码

    本项目是京东JD Chain区块链项目的BFT共识算法设计源码,包含567个文件,涵盖...代码库独立,全面实现了BFT共识算法,包括一致性、选举、视图管理、状态复制和通讯网络等功能,适用于需要高度共识性的区块链应用开发。

    Test_BFT-源码.rar

    【描述】"Test_BFT-源码.rar" 暗示这是一个测试用例集,用于验证BFT算法在实际环境中的性能和正确性。源码通常是用编程语言编写的,可能包括协议的状态机、消息传递机制以及错误检测和恢复策略。 【标签】虽然没有...

    15个区块链共识算法的开源实现【BFT/Raft/Paxos/Pow/PoS】

    共识算法是实现自主产权区块链的必不可少的关键环节,本文列出社区中相对成熟的区块链共识算法开源实现,包括BFT共识、Raft共识、Paxos共识、PoW共识等,可供希望开发自主产权区块链的团队参考学习。 相关推荐:...

    BFT-Smart.rar_BFT-Smart 测试工程_bft-smart

    通过这个测试工程,开发者不仅可以学习如何使用BFT-Smart,还可以深入理解拜占庭容错算法在实际系统中的应用,对于分布式系统的设计和实现有着重要的参考价值。在开发过程中,应关注系统的性能优化、故障检测和恢复...

    Test_BFT

    总的来说,Test_BFT 项目可能是一个学习和研究 BFT 算法的实验平台,通过 C# 实现,帮助开发者理解如何在分布式系统中实现容错和共识。通过深入理解这些概念并动手实践,开发者可以提高自己在构建高可用性和安全性...

    代码:图 有向图 Directed Graph 优先遍历算法

    在代码中,`breadthFirstTraversal`函数实现了BFT算法,通过使用`std::queue`来管理待访问的顶点队列。 #### 实现细节 在`MyGraphType`类的模板定义中,我们可以看到它接受两个模板参数:`vType`和`size`。其中`...

    Aardvark协议(BFT)1

    基于这些原则,研究者设计并实现了一种新的BFT协议——Aardvark。 Aardvark协议的设计目标是在保持高效性能的同时,增强对拜占庭故障的容忍度。在测试中,Aardvark协议的峰值性能可以达到最优秀的现有协议的96%,...

    基于在网计算加速的拜占庭容错算法.docx

    【基于在网计算加速的拜占庭容错算法】 拜占庭容错算法(Byzantine Fault Tolerance,BFT)是一种重要的容错技术,它能抵御多种类型的错误和安全漏洞,...这种创新方法为未来BFT算法的性能优化提供了新的思路和方向。

    bft-crdts:拜占庭容错 CRDT 和其他最终一致的算法

    该存储库包含一个拜占庭容错系统,用于通过最终一致的算法实现网络协议。 该系统实现为三层洋葱。 中心是最终一致性算法,例如 CRDT 或因果资产转移系统 (AT2)。 这个核心负责验证和应用传入的操作,这是系统的...

    Towards Efficient and Robust BFT Protocols.pdf

    拜占庭容错(BFT)协议是一种在分布式计算系统中实现容错的技术,其主要目标是处理在不完全可信赖网络环境下节点可能出现的任意错误行为。随着云计算的普及,系统可用性、活跃性和安全性越来越受到关注。BFT协议依赖于...

    archistar-bft:(P)BFT库-最初用于档案项目

    2014年,BFT算法的状态引擎被提取到其自己的库中。 提取库的原因是要创建一个独立于平台和传输的BFT引擎,该引擎可以在其他项目中重用。 这样就可以实现非常清晰紧凑的代码库(当前〜800LOC BFT代码和200LOC测试用例...

    《共识算法与共识安全》.pdf

    3. 开放BFT (Open Byzantine Fault Tolerance) 类共识算法,如HotStuff,是近年来的创新,旨在提高性能并降低通信复杂性,同时保持对拜占庭错误的抵抗能力。 白皮书不仅详细介绍了这些算法的基本原理,还深入到共识...

    变压器保护测控装置BFT630 产品指南.docx

    该装置集成了多种先进的保护算法和技术,旨在提供可靠且全面的变压器保护功能。通过精确的数据采集和智能分析能力,BFT630能够有效监测和控制变压器运行状态,及时发现并处理潜在故障,确保电力系统的稳定运行。 ##...

    ⟁Go中的Tendermint核心(BFT共识).zip

    在区块链技术领域,Tendermint 是一种著名的拜占庭容错(Byzantine Fault Tolerance,简称 BFT)共识算法的实现,它以其高效、安全和简洁性而受到广泛关注。在Go语言中,Tendermint 提供了一种强大的工具,用于构建...

    gopbft-ubuntu

    在gopbft-ubuntu项目中,Go语言的这些特性使得实现复杂的BFT算法变得更加高效和易于维护。 三、项目结构与文件 在gopbft-ubuntu-main这个文件中,我们可以预期包含以下几个关键部分: 1. `main.go`:项目的入口...

    concord-bft:Concord拜占庭式容错状态机复制库

    它的实现基于文中描述的算法。 它被设计用作复制的分布式数据存储的核心构建块,并且特别适合用作许可的区块链系统的基础。 对于现实生活中的集成示例,请查看 ,这是一个高度可扩展且高效节能的分布式信任基础...

    分布式数据库一致性保证算法.pptx

    **拜占庭容错算法**(Byzantine Fault Tolerance, BFT)是指一种能够在部分节点出现恶意行为的情况下仍能保证系统正常运行的算法。常见的拜占庭容错算法包括: - **Paxos算法**: - 基于消息传递,选举出一个主...

    Honey Badger学习文献.rar

    Honey Badger的学习文献包含了该算法的设计理念、实现细节以及与其他相关技术如门限加密算法和ABA(异步二进制共识)的交互。 首先,让我们理解Honey Badger BFT的背景。传统的BFT共识算法,如PBFT(Practical ...

Global site tag (gtag.js) - Google Analytics