`

eos待确认/分叉库

    博客分类:
  • EOS
 
阅读更多
fork_database:管理了轻量级状态数据,是由未确认的潜在区块产生的.
1.当本地节点接收(receive)到新的区块时,它们将被推入fork数据库.
2.fork数据库跟踪最长的链及最新不可逆块号.所有大于最新不可逆块号的区块将会发出"irreversible"不可逆信号以后被释放掉,区块已经成功上链变为不可逆,因此fork数据库没有必要再存储.

initialize_fork_db:要先构造区块头状态对象
区块头状态构造参数
1.active_schedule:活动的出块安排,默认为初始出块安排
2.pending_schedule:等待中的出块安排,默认为初始出块安排
3.pending_sechedule_hash:等待中的出块安排的单向哈希值
4.header.timestamp:等于创世块配置文件genesis中的timestamp值
5.header.activeon_mroot:action的Merkle树根,创世块的值为链id值,该值是通过加密算法计算出的
6.id:块id
7.block_num:块号

commit_block->add_to_fork_db
提交区块函数,无论提交是否成功,都不再保留活动的pending块.该函数有一个参数add_to_fork_db,调用时一般为false

maybe_switch_forks:或许要切换分叉库到主库
         if( read_mode != db_read_mode::IRREVERSIBLE ) {
            maybe_switch_forks( fork_db.pending_head(), s );
         }

1.db的读取模式为IRREVERSIBLE时,只关心当前不可逆区块的数据,而fork_db中不存在不可逆区块的数据.其他三种读取模式都涉及可逆区块及未确认的数据,因此需要在maybe_switch_forks函数进行检查处理

2.当fork_db头块的上一个块等于当前节点的头块时,说明有新块被接收,先到达fork_db中
      if( new_head->header.previous == head->id ) {
         try {
            apply_block( new_head, s );
            fork_db.mark_valid( new_head );
            head = new_head;
         } catch ( const fc::exception& e ) {
            fork_db.remove( new_head->id );
            throw;
         }
      }


3.当fork_db头块的前一个块不等于主库头块且fork_db头块id也不等于当前节点的头块id时,说明fork_db最新的两个块都不等于主库头块.这里fork_db是更长的一条链,因此要切换主库为fork_db链

controller析构对fork_db的处理:my->fork_db.close()
1.在controller析构时将fork_db关掉,因为它会生成irreversible信号到这个controller.如果db读取模式为IRREVERSIBLE,将应用最后一个不可逆块,my需要成为指向有效controller_impl的指针
2.通常头块不是不可逆的.如果fork_db中只剩一个块,那么一定是头块,一般不会将它删除是因为下一个区块需要从头块建立.但可以在退出之前将这个区块作为不可逆区块从fork_db中删除

controller::startup对fork_db的处理:my->head = my->fork_db.head()
当controller处于startup周期时,会将fork_db的头块设置为主库头块(头块一般不是不可逆的)
分享到:
评论

相关推荐

    佳能单反SDK最新版 Canon_EOS_ED-SDK_v3.6.10

    EOS 5DS / EOS 5DS R / EOS REBEL T6s / EOS 760D / EOS 8000D / EOS REBEL T6i / EOS 750D / EOS Kiss X8i / EOS M3 EOS-1D X Mark II / EOS 80D / EOS Rebel T6 / EOS 1300D / EOS Kiss X80 / EOS M10 EOS 5D ...

    Canon EOS SDK3.6.1 最新版

    EOS Kiss X3 / EOS REBEL T1i / EOS 500D EOS 7D EOS-1D Mark IV EOS Kiss X4 / EOS REBEL T2i / EOS 550D EOS 60D EOS Kiss X5 / EOS REBEL T3i / EOS 600D EOS Kiss X50 / EOS REBEL T3 / EOS 1100D EOS-1D...

    佳能开发包 EDSDK3610_Macintosh

    07/31/2017 -Added support for the EOS 6D Mark II / EOS Kiss X9 / EOS Rebel SL2 / EOS 200D 05/31/2017 -Added support for the EOS Kiss X9i / EOS Rebel T7i / EOS 800D / EOS 9000D / EOS 77D / EOS M5 / ...

    佳能相机查询快门次数的免费软件

    可适用型号 EOS 40D EOS DIGITAL REBEL Xsi/450D/ Kiss X2 EOS DIGITAL REBEL XS/ 1000D/ KISS F EOS 50D EOS 5D Mark II EOS Kiss X3/EOS REBEL T1i /EOS 500D ...EOS Kiss X70/EOS 1200D/EOS REBEL T5/EOS Hi EOS

    canon EDSDK3800CD380.zip

    佳能相机最新驱动,EDSDK v13.12.1 。 支持Mac OS X 10.15和Windows 10 x32及x64。 相机列表: EOS-1D Mark III ...EOS Kiss X90 / EOS REBEL T7 / EOS 2000D / EOS 1500D EOS REBEL T100 / EOS 4000D / EOS 3000D

    Canon相机DEMO,SDK、包含DLL库,vb、vc、c#均可编译,亲测可用

    支持以下相机: EOS-1D Mark III EOS 40D EOS-1Ds Mark III EOS DIGITAL REBEL Xsi/450D/ Kiss X2 EOS DIGITAL REBEL XS/ 1000D/ KISS F EOS 50D EOS 5D Mark II EOS Kiss X3/EOS REBEL T1i /EOS 500D EOS 7D EOS-1D...

    佳能 Canon SDK 3.2.1_32位 2016年最新版本,含C++,VB,C#例子

    EOS Kiss X3/EOS REBEL T1i /EOS 500D EOS 7D EOS-1D Mark IV EOS Kiss X4/EOS REBEL T2i /EOS 550D EOS 60D EOS Kiss X5/EOS REBEL T3i /EOS 600D EOS Kiss X50/EOS REBEL T3 /EOS 1100D EOS-1D X ...

    Canon EOS Digital SDK ( EDSDK ) v3.2.1 x86/x64 含Sample code

    EDSDK Version 3.2: EOS 5DS / EOS 5DS R / EOS 760D / EOS 750D / EOS M3 (M3 does not support Remote Capture function) support. This version contain the 64bit RAW development modules for EOS 5DS / EOS 5...

    ED-SDK v3.2.1

    EOS Kiss X4/EOS REBEL T2i /EOS 550D, EOS 60D, EOS Kiss X5/EOS REBEL T3i /EOS 600D, EOS Kiss X50/EOS REBEL T3 /EOS 1100D, EOS-1D X, EOS 5D MarkIII, EOS 60Da, EOS 650D, EOS-1D C, EOS 6D, EOS 700D, EOS ...

    EOS6 基础构件库参考手册,介绍EOS6的相关文档,欢迎下载!

    **EOS6 基础构件库参考手册** EOS6 是一个先进的分布式操作系统平台,它为开发者提供了一套高效、安全且可扩展的基础构件库。这个基础构件库是EOS6生态系统的核心部分,允许开发者构建高性能的去中心化应用程序...

    EOS.IO Go API 库.zip

    Go 的 EOS.IO API 库正在加载...该库提供对数据结构(二进制打包和 JSON 接口)的简单访问以及对远程或本地运行的 EOS.IO RPC 服务器的 API 调用。它提供钱包功能(KeyBag),或者可以通过keosd钱包签署交易。它还...

    05 EOS基础构件库参考手册.chm

    文档 00 EOS文档使用指南.chm :00 EOS文档使用指南.chm EOS全部资料合集(包括例子) ...05 EOS基础构件库参考手册.chm :05 EOS基础构件库参考手册.chm ...........等等 EOS全部资料合集(包括例子)

    EOS/BPS入门资料

    - **EOS Component Library (EOS构件库)**:EOS Component Library是一系列具有高度复用性的预制构件集合,用于快速搭建应用系统。 - 构件复用:支持构件的复用,提高开发效率。 - 构件管理:提供构件管理和版本...

    c#控制佳能相机拍照实时传输等源码,内含最新版EOS SDK版本

    c#控制佳能相机拍照实时传输等源码,内含最新版EOS SDK版本 用的是winforms来编写的 sdk支持相机如下 EOS-1D Mark III EOS 40D EOS-1Ds Mark III EOS DIGITAL REBEL Xsi / Kiss X2 / EOS 450D EOS DIGITAL ...

    普元EOS7.5基础教程(官网版)

    **普元EOS7.5基础教程(官网版)** 普元EOS是一款国内知名的中间件平台,专注于企业级服务总线(Enterprise Service Bus, ESB)和应用服务器领域。EOS7.5版本是其一个重要的迭代,提供了更强大的功能和优化的性能。本...

    普元eos帮助文档

    普元eos是一款由普元信息技术有限公司开发的软件产品,该产品以提供一套高效的开发解决方案为核心,特别在前端开发领域具有较强的竞争力和广泛的使用。普元eos的帮助文档详细介绍了如何安装使用普元前端开发框架NUI...

    EOS.rar_EOS业务_以太网 SDH EOS

    **EOS(Ethernet Over SDH)业务** EOS,即以太网在SDH(Synchronous Digital Hierarchy,同步数字体系)上的承载,是一种将以太网数据流映射到SDH通道的技术,它允许以太网业务在SDH网络中高效、透明地传输。这种...

    EOS.rar_EOS_普元_普元EOS_普元EOS教程

    **EOS - 普元企业服务总线** EOS(Enterprise Service Bus),由普元公司研发,是一款高效、灵活的企业服务总线系统。它在SOA(Service-Oriented Architecture,面向服务架构)环境中扮演着核心角色,为企业提供了...

    普元EOS操作文档.pdf

    普元EOS操作文档.pdf 普元EOS操作文档.pdf是 Primeton EOS 开发环境的详细使用手册,该文档涵盖了 EOS 开发环境的配置、开发、调试等各个方面的知识点。 EOS初级程序员教程 Primeton EOS 是一个功能强大且灵活的...

Global site tag (gtag.js) - Google Analytics