TxnManager 是内存池组件的接口,支持拉取交易以及删除已提交的交易。 提议者使 用来自内存池中的按需拉取交易来形成提议块。 StateComputer 是访问执行组件的接口。 它可以执行块,提交块,并可以同步状态。 BlockStore 维护提议块树,块执行,投票,仲裁证书和持久存储。 它负责维护这些 数据结构组合的一致性,并且可以由其他子组件同时访问。 EventProcessor 负责处理各个事件 (例如, process_new_round, process_proposal, process_vote). 它公开每个事件类型的异步处理函数和驱动协议。 Pacemaker 负责共识协议的活跃性。 它由于超时证书或仲裁证书而改变轮次,并在 它是当前轮次的提议者时提出阻止。 SafetyRules 负责共识协议的安全性。 它处理仲裁证书和分类信息以了解新的提交, 并保证遵循两个投票规则 — 即使在重启的情况下(因为所有安全数据都持久保存到 本地存储)。 所有共识消息都由其创建者签名,并由其接收者验证。消息验证发生在离网络层最近的地方, 以避免无效或不必要的数据进入协商一致协议。06 总结Libra 区块链的架构设计汲取了 Bitcoin 和 Ethereum 的两大区块链技术的精华,使 用了新的智能合约语言。如果把 Bitcoin 的脚本指令比作汇编语言(ASM),那么 Ethereum 的 Solidity 就是类似于 JavaScript 的动态语言, 汇编语言效率最高但难于编写, 动态语言灵活强大但容易产生难于觉察的 bug, 这两种语言用来编写和金融相关的业务都不 是最优的。Move 语言借鉴了 Rust 语言的所有权(ownership)管理机制,在编写智能合 约时既保证了安全性又不失灵活性。libraBFT 基于链式 HotStuff,其确认规则遵从 3-chain 的确认规则。libra 能在众多 的共识协议中选择 HotStuff,显示了 libra 团队的眼光,以及在区块链三难问题上巧妙的平 衡术。libraBFT 继承了 HotStuff,使得它的共识协议具有正确性(safety),在半同步网络 下的活性(Liveness),最终性(Finality);同时具有通信线性复杂度(linearity)和响 应性(responsiveness)。 Libra 的实现也展示了简易性(simplicity)和模块化 (modularity)的实现。同时也体现了 sustainability(可持续性),不需要工作量证明以 降低能耗。
(责任编辑:admin) |