- 浏览: 768148 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
实现:
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函数,生产区块
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函数,生产区块
发表评论
-
eos快照
2019-10-06 08:31 381快照:为区块链提供临时 ... -
eos待确认/分叉库
2019-10-05 08:32 251fork_database:管理了轻量级状态数据,是由未确认的 ... -
eos controller概述
2019-10-03 17:28 292EOS中的模型层是blocks.log和基于chainbase ... -
eos multi_index
2019-10-03 09:01 282EOS的数据库就是chainbase,而调用数据库服务的C++ ... -
eos chainbase状态库
2019-10-01 08:03 431chainbase:是一个快速包含 ... -
eos action
2019-09-28 17:18 182action:在EOS中,action被分配到对应程序(一般是 ... -
eos事务结构
2019-09-28 16:34 394transaction_header:事务头的数据大小是固定的 ... -
eos区块头结构
2019-09-28 08:54 283block_header:区块头 struct block ... -
eos rpc set
2019-09-26 19:27 281set contract:设置合约 xjdeMacBook- ... -
eos rpc create
2019-09-26 19:18 2551.创建公私钥对 xjdeMacBook-Pro:safeco ... -
EOS blocks.log
2019-09-26 07:40 368区块数据通过blocks.log与blocks.index持久 ... -
引用区块
2019-09-25 07:26 309trx.set_reference_block(ref_blo ... -
EOS事务
2019-09-24 07:36 347调用函数add_standard_transaction_op ... -
全节点搭建
2019-09-22 09:34 2631.通过system regproducer命令可将普通账户注 ... -
eos名词解释
2019-09-14 09:34 6541.Authority:权力,要与Permission做好区分 ... -
智能合约依赖库
2019-08-29 07:32 364Action:这部分定义了查询或发送action的API.在E ... -
eos_rpc_system资源获取
2019-08-21 07:39 370资源主要有CPU,net bandwidt ... -
eos_rpc_sign
2019-08-21 07:22 243sign [OPTIONS] transaction:完成EO ... -
eos_rpc_wallet
2019-08-20 07:31 3151.wallet create [OPTIONS]:创建一个新 ... -
eos_rpc_get
2019-08-18 08:38 2901.get info:通过指定全节点API接口获取其连接的EO ...
相关推荐
综合以上,这个压缩包提供了一个完整的BFT算法实现和BFS文件系统的开发环境,用户可以通过编译和配置这些文件来理解和研究BFT算法如何应用于文件系统的实际场景。同时,这也为开发者提供了一个可靠的分布式文件系统...
本项目是京东JD Chain区块链项目的BFT共识算法设计源码,包含567个文件,涵盖...代码库独立,全面实现了BFT共识算法,包括一致性、选举、视图管理、状态复制和通讯网络等功能,适用于需要高度共识性的区块链应用开发。
【描述】"Test_BFT-源码.rar" 暗示这是一个测试用例集,用于验证BFT算法在实际环境中的性能和正确性。源码通常是用编程语言编写的,可能包括协议的状态机、消息传递机制以及错误检测和恢复策略。 【标签】虽然没有...
共识算法是实现自主产权区块链的必不可少的关键环节,本文列出社区中相对成熟的区块链共识算法开源实现,包括BFT共识、Raft共识、Paxos共识、PoW共识等,可供希望开发自主产权区块链的团队参考学习。 相关推荐:...
通过这个测试工程,开发者不仅可以学习如何使用BFT-Smart,还可以深入理解拜占庭容错算法在实际系统中的应用,对于分布式系统的设计和实现有着重要的参考价值。在开发过程中,应关注系统的性能优化、故障检测和恢复...
总的来说,Test_BFT 项目可能是一个学习和研究 BFT 算法的实验平台,通过 C# 实现,帮助开发者理解如何在分布式系统中实现容错和共识。通过深入理解这些概念并动手实践,开发者可以提高自己在构建高可用性和安全性...
在代码中,`breadthFirstTraversal`函数实现了BFT算法,通过使用`std::queue`来管理待访问的顶点队列。 #### 实现细节 在`MyGraphType`类的模板定义中,我们可以看到它接受两个模板参数:`vType`和`size`。其中`...
基于这些原则,研究者设计并实现了一种新的BFT协议——Aardvark。 Aardvark协议的设计目标是在保持高效性能的同时,增强对拜占庭故障的容忍度。在测试中,Aardvark协议的峰值性能可以达到最优秀的现有协议的96%,...
【基于在网计算加速的拜占庭容错算法】 拜占庭容错算法(Byzantine Fault Tolerance,BFT)是一种重要的容错技术,它能抵御多种类型的错误和安全漏洞,...这种创新方法为未来BFT算法的性能优化提供了新的思路和方向。
该存储库包含一个拜占庭容错系统,用于通过最终一致的算法实现网络协议。 该系统实现为三层洋葱。 中心是最终一致性算法,例如 CRDT 或因果资产转移系统 (AT2)。 这个核心负责验证和应用传入的操作,这是系统的...
拜占庭容错(BFT)协议是一种在分布式计算系统中实现容错的技术,其主要目标是处理在不完全可信赖网络环境下节点可能出现的任意错误行为。随着云计算的普及,系统可用性、活跃性和安全性越来越受到关注。BFT协议依赖于...
2014年,BFT算法的状态引擎被提取到其自己的库中。 提取库的原因是要创建一个独立于平台和传输的BFT引擎,该引擎可以在其他项目中重用。 这样就可以实现非常清晰紧凑的代码库(当前〜800LOC BFT代码和200LOC测试用例...
3. 开放BFT (Open Byzantine Fault Tolerance) 类共识算法,如HotStuff,是近年来的创新,旨在提高性能并降低通信复杂性,同时保持对拜占庭错误的抵抗能力。 白皮书不仅详细介绍了这些算法的基本原理,还深入到共识...
该装置集成了多种先进的保护算法和技术,旨在提供可靠且全面的变压器保护功能。通过精确的数据采集和智能分析能力,BFT630能够有效监测和控制变压器运行状态,及时发现并处理潜在故障,确保电力系统的稳定运行。 ##...
在区块链技术领域,Tendermint 是一种著名的拜占庭容错(Byzantine Fault Tolerance,简称 BFT)共识算法的实现,它以其高效、安全和简洁性而受到广泛关注。在Go语言中,Tendermint 提供了一种强大的工具,用于构建...
在gopbft-ubuntu项目中,Go语言的这些特性使得实现复杂的BFT算法变得更加高效和易于维护。 三、项目结构与文件 在gopbft-ubuntu-main这个文件中,我们可以预期包含以下几个关键部分: 1. `main.go`:项目的入口...
它的实现基于文中描述的算法。 它被设计用作复制的分布式数据存储的核心构建块,并且特别适合用作许可的区块链系统的基础。 对于现实生活中的集成示例,请查看 ,这是一个高度可扩展且高效节能的分布式信任基础...
**拜占庭容错算法**(Byzantine Fault Tolerance, BFT)是指一种能够在部分节点出现恶意行为的情况下仍能保证系统正常运行的算法。常见的拜占庭容错算法包括: - **Paxos算法**: - 基于消息传递,选举出一个主...
Honey Badger的学习文献包含了该算法的设计理念、实现细节以及与其他相关技术如门限加密算法和ABA(异步二进制共识)的交互。 首先,让我们理解Honey Badger BFT的背景。传统的BFT共识算法,如PBFT(Practical ...