主页 > imtoken版本怎么看 > 共识机制EPOA实现了基于BFT变体的异步算法
共识机制EPOA实现了基于BFT变体的异步算法
随着比特币的成功,区块链的概念逐渐得到普及和大众的认可。去中心化、不可篡改、生产关系的改变,抛开这些区块链想要实现的美好愿景,到目前为止
随着比特币的成功,区块链的概念逐渐深入人心,得到大众认可。 去中心化、不可篡改、生产关系的改变,抛开这些区块链想要实现的美好愿景,迄今为止还很少见到基于区块链技术产生实际价值的商业级应用。 我们认为,除了解决可扩展性(scalability)、高效率(efficiency)、易扩展性(expansibility)等已知的技术缺陷外,更应该做的是从哲学(Philosophy)的角度重新审视区块链定位并实施路线。
目前,区块链技术一般被比作tpc/ip协议等通用基础协议或网络。 这种理念和策略使得令人眼花缭乱的区块链技术层出不穷。 他们中的大多数看起来更学术,但它们相互排斥。 但并没有本质区别,更重要的是,它们似乎离商业化的目标越来越远。
我们的理念是从业务和技术出发,为业务服务,而不是相反。 为打造具有实际操作能力的区块链应用系统,我们着重解决以下问题:
• 区块链可以为哪些行业带来创新和附加值?
• 为了实现上述目标,区块链应用系统应该如何构建?
通过对上述问题的仔细调查和思考,本文试图描述一个通用的区块链架构GrayEagle和一个基于GrayEagle的开放游戏平台EqualBets。 我们打算指出一个路线和方法,并详细说明为什么这个方法是合理的,并为当前的发展提供尽可能多的参考细节。
GrayEagle区块链基础框架(基础设施)
本章我们主要描述GrayEagle的三个主要特性:
• EPOA(选举权威证明):基于选举权威证明的治理模型
• 两层架构:治理层和业务层
• 模块化和可插拔的技术目标和路线
本章介绍了EPOA机制的具体设计、分层网络的协作机制以及具体的技术架构路线。 其中,EPOA是GrayEagle团队通过研究和实践提出的区块链共识机制。 第1节将从模型设计和共识算法的角度详细描述EPOA; 第 2 节将重点描述 GrayEagle 分层网络的主要特征; 最后,在第3节中,我们尽可能清楚地描述了具体的技术实现路线。
1.EPOA
本章主要讲述POW之后,各种区块链的共识机制相继被提出和应用。 典型的有:
(1)pow及其转化机制。
(2)pos及一系列基于pos的转换机制。如npos、Dpos等。
(3) poa(权威证明)
(4) BFT变种,如PBFT、Graph BFT等。
在行业中,不同共识机制的使用往往会限制区块链的使用范围。 使用(1)(2)共识机制将定义为“公链”,使用(3)(4)机制将定义为“公链”。 定义为联盟链。 其中,机制(3)因为需要权限,必须限制成为公链的可能性,而机制(4)是因为当共识节点数量超过一定数量时,算法性能的突然下降限制了成为公链的可能性成为公链。
而且我们认为区块链在某种程度上不应该被归类为公有链或者联盟链。 我们希望看到的是一条具有准入机制和选举机制的公链,既满足去中心化的特点,又能真正实现商业化目标。 因此,我们提出了一种新的共识机制——EPOA。
如下图1所示,EPOA中存在三种不同的角色:authority(权威节点)、recorder(记账节点)、citizen(普通公民节点)。
1.1 权限
Authority是一个权威节点,类似于现实世界中的政府内阁成员。 他们最初由我们自己团队的少量节点服务,主网上线后,陆续邀请获证监管机构和合作实体公司成为Authority。 权威机构具有裁决权,即除参与区块记账外,还有权审批游戏链节点的添加、庄家的申请、游戏开发商申请发布游戏、随机数的生成种子等等。 但是并不是所有的Authority都是这样产生的,仍然有大量的Authority位置可以从recorder中选出,只要满足条件:
(1) 有足够的代币抵押品。
(2) 获得大多数公民节点的投票。
(三)担任记录员期间有良好的服务记录。
我们称这种 Authority 为 Elected Authority,他们会以类似 pos 的方式工作,并获得币龄奖励。 记录者成为权威的过程对应图1中的动作C。
1.2 录音机
Recorder是一个记录节点,他们会参与区块记账,但没有特殊权限,所以任何公民只要满足以下条件就可以成为Recorder:
(1) 拥有提供稳定服务的算力
(2) 有足够的代币抵押
(3) 当局批准
(4) 拥有完整的账本信息。
成为Recorder,不仅可以通过类似POS的方式获得币龄奖励,还有机会在定期选举中成为Authority。
1.3 公民
Citizen是一个普通的公民节点,可以同步账本信息,但不需要算力和完整的账本信息。 公民享有三项重要权利:
(一)举报权。 当发现权威或记录者有违法行为时,可向权威组举报(注:违法行为需列明)。 一旦举报通过,将通过举报奖励机制获得代币奖励。 (奖励代币由被举报节点的惩罚代币划分,部分惩罚代币用于奖励举报人,其余惩罚代币直接销毁)。 这个过程对应于图1中的动作D。
(2) 投票权
选举期间可参与管理局选举投票。
(3) 成为记录者
公民只要满足成为Recorder的条件比特币底层使用的共识机制是,就可以向Authority申请成为Recorder,这个过程对应图1中的action B。为了防止Sybil攻击,必须提交少量代币作为存款成为公民企业。 所以当节点N期望执行动作A加入EPOA网络时,首先需要成为Citizen。
1.4 总结
可以发现,这种设计类似于现实世界中的社会运行机制。 议会-公务员-公民、监管者和合作企业是永久性的权力机构,任何个人都有机会成为权力机构。 这种设计很好地平衡了去中心化和商业化。
对于底层的共识算法,我们实现了基于 BFT 变体的异步算法。 后续我们会逐步内嵌共识算法模块。 进一步的细节超出了本文的范围。
2. 两层架构
GrayEagle 基础设施实现了 2 层区块链:治理层和业务层
(一)治理
治理层负责EPOA机制,从业务和监管角度保证业务层的正常运行。 具体来说,该层提供对监管机构的开放访问,包括节点设置和具体监管合约部署; 业务层面的审计和验证功能由部署在治理层的智能合约实现。
(2) 业务层
业务层侧重于实现业务逻辑,并与管理层进行交互,完成业务操作。 两层架构为开发区块链业务系统提供了通用范例。 两层架构背后的想法是分离业务逻辑和治理需求,并在它们自己的层上运行。 在这个架构中,每一层都是去中心化的,有特定的共识机制,通过层间通信机制相互协调。
三、技术架构总结
GrayEagle具体的技术实现思路之一就是尽可能将功能插件化,如图2所示,部分已经实现,部分需要在后续工作中完成。 总体规划不变,部分细节可能正在开发过程中。 不断调整。
3.1 基本组件
Crypto:加密密码学组件,主要包括基本哈希运算、秘钥生成算法、加解密算法、签名验证算法等。完成系统内部数据的哈希汇总、数据的签名验证、生成秘钥等
Network:主要实现基本的网络库能力,包括但不限于Endpoint管理、网络参数设置、网络监控、网络连接建立、网络消息回调等。
RocksDB:本地物理磁盘数据的NoSQL存储引擎,为Key-Value提供基础高效的数据读写能力。 现阶段主要选型基于RocksDB。 随着技术的发展,可以替代更高效和大容量的存储解决方案。
MPT:系统数据一致性校验的基本组件,通过树结构完成数据集中数据的两两哈希迭代运算,直到计算出唯一的哈希值,完成数据集内容的一致性校验,并基于MPT的分支路径,可以快速验证数据集合中特定数据内容的存在,成为面向区块链轻客户端的快速数据验证算法。 也可以应用于区块链内部节点间世界状态的数据一致性检测算法。
RLP:系统内部对数据结构的编解码能力,以流式方式对数据进行紧凑编码,完成网络字节序转换和基本数据类型的合法性校验。 支持循环嵌套,完成复杂容器结构的数据编码能力。
日志记录:系统的日志库通过基础API封装了开源系统的日志组件,提供多层次的日志记录能力。 同时可以设置不同组件的日志前缀,调整不同组件的日志分组。 计划为特定交易或帐户添加 Trace 功能。
Configuration:用于系统内部配置文件解析和配置信息管理的逻辑处理对象。 提供ini文件格式的配置信息解释。
Utils:系统内部的一些工具集,提供一些基本的格式转换、格式验证、基本功能等相关能力。 以及系统内部的一些基本的宏定义和常量参数。
3.2 缓存插件
交易队列:实现对系统接收到的交易信息(来自客户端的交易请求和P2P网络的交易广播)的缓存,实现交易信息的队列管理能力。
通过提供不同的管理队列来缓存不同状态的事务。 提供给系统中的其他业务处理插件访问Push和Pop交易。 同时,通过事件能力通知其他模块事务缓存变化,进而触发其他模块的相关动作。
Message Queue:系统中的消息缓存队列,以先进先出的方式提供异步处理消息的缓存能力。 完成网络层消息的接收与系统核心处理逻辑的解耦。
Synchronization Queue:系统中的同步数据缓存对象,主要用于P2P节点间的区块和交易同步缓存。 提供更好的同步中间对象存储和数据校验能力。 实现同步处理插件之间的数据同步和区块链插件之间的数据链接。
Accounts Cache:系统中的账户缓存组件,提供在Account State和account Storage数据中缓存账户数据的能力。 使用链表的数据结构来缓存热点访问数据,同时出于空间存储的考虑,实现了基本的LRU策略。 通过Cache机制,区块链插件可以高效访问账户数据。
3.3 认证插件
Transaction Verify:通过基本的校验和验证能力,包括:交易有效性检测、交易双花检测、交易签名验证、交易权限检查等。通过缓存插件实现缓存接收到的交易的合法性验证。一个独立的线程,通过一定的预执行能力提前检测交易的数据影响集,为后续区块链插件交易的并行执行提供一定的参考数据。
权限验证:用于系统中的权限校验功能。 通过提供独立的接口,完成系统治理部分的相关操作权限检查,可以验证特定的签约用户是否有足够的权限访问指定的合约能力。 通过用户-角色-操作的三元关系定义和检查系统中的操作权限。
3.4 共识插件
PBFT:简单拜占庭容错共识协议,通过PrePrepare、Prepare、Commit三阶段提交协议,在提供3F+1个节点的情况下,只要系统中错误节点不超过F个,可以完成共识节点之间的系统数据一致性,为交易提供快速确认和容错机制。
HBBFT:一种异步拜占庭容错协议,和PBFT一样,满足2/3节点一致性和1/3节点容错。 不同于PBFT的单一主节点发起提案,HBBFT的每个共识参与节点都可以发起提案,基于ACS阶段协议保证提案全网广播,BA协议完成节点间的数据一致性。 最后对所有节点的提案进行排序,形成最终的提案内容,并在全网达成共识结果。
Graph BFT:系统中基于DAG技术的拜占庭容错协议,可以在基于DAG技术的共识节点本地形成1/3的容错共识结论。 Graph BFT通过协议保证在低网络依赖的情况下,通过局部图论基础实现系统内交易数据的一致排序,提供更高的处理性能和更低的网络负载。
3.5 虚拟机插件
EVM:以太坊的虚拟机实现,支持使用Solidity编程语言编写智能合约,提供基于栈的指令解析逻辑,完成智能合约代码的执行和结果输出。 Gas机制用于保证合约的有效执行和终止,同时提供一定的指令跟踪和调试能力。
PVM:图灵完备的虚拟机执行引擎,支持Python编程语言指令的执行。 可以解析并执行python智能合约编译后的指令代码集,提供基本的数据类型定义和访问能力。 PVM是系统中一种更加简洁友好的编程语言选择。
WASM:WebAssembly虚拟机是一个可扩展的高效虚拟机执行引擎,可以支持C或C++语言编写智能合约,然后编译生成WASM虚拟可识别中间状态,通过WASM高效加载和执行。 WASM 在系统中提供了更高的处理性能,在需要高吞吐量的场景中是更好的选择。
WREN:是一个精炼的虚拟机执行引擎,支持通过类C++编程语言编写智能合约,并编译生成WREN指令集。 WREN 在实现复杂性和细化方面提供了更好的方法。
3.6 合约插件
预编译命令:将系统中用于扩展智能合约能力的相关系统命令以原生语言的形式嵌入到平台中,为智能合约的实现提供特定的功能。 具体地址用于标识接入点,并利用创世块内置的相关数据保证多个节点的功能一致性。
原生合约:系统支持使用原生语言定义和实现智能合约功能,提供更好的智能合约能力和更高效的命令执行。 与预编译指令一样,使用特定地址来标识本机合约的输入。 Native合约提供了标准统一的Apply接口,通过向Apply接口传递交易参数完成数据分析和分发处理,并返回交易执行的结果。
升级控制:用于管理系统中的合约升级能力,完成合约出现缺陷后更新升级的能力。 同时支持智能合约的数据迁移功能。
3.7 系统合约
合约模板:系统中的合约模板,随平台系统发布,提供一些针对特定业务场景的基础业务合约模板,支持业务系统的快速定制,通过修改具体模板参数,根据模板重新定义业务应用合约.
用户合约:系统中的用户管理合约,用于管理系统中用户扩展信息的账户创建和维护。 通过特定的账户ID与系统中的Account对象进行绑定映射。 如果系统需要控制账户的开户权限,可以由管理员操作用户管理合约,定义可以开户的对象。
节点合约:系统中的节点管理合约,用于管理系统中所有P2P网络节点信息。 节点信息可以包括:节点标识、节点类型(共识节点和非共识节点)、节点公钥、节点接入点信息等。 这些节点列表由管理员维护,发送特定事务用于系统中的节点发现和网络维护。 权限合约:系统中的权限管理合约,用于定义和维护系统中的相关权限权限信息,标识特定的用户或节点具有特定的访问和操作权限。
配置合约:系统中的配置管理合约通过特定的数据结构定义和维护系统中的相关配置和治理参数,通过具有特定管理和维护权限的用户发起的交易请求维护配置信息,实现需求系统中所有节点使用的全局配置参数。
3.8 SDK组件
Keystore API:主要用于在客户端管理用户的私钥信息,涵盖了用于签署用户交易的用户身份公钥和私钥,用于网络链接的CA证书等。提供相关功能来完成数据的加载和存储。
Network API:客户端的网络交互能力,通过提供不同的网络全能力,实现多样化的网络交互和访问。 通过简单的封装,提供客户端应用开发系统与区块链平台的同步和异步交互能力。 屏蔽与区块链平台交互的底层网络交互细节。
编码器:客户端的消息编码器,主要根据协议要求完成客户端请求的编码逻辑。 实现智能合约的基本RLP编码能力和ABI编码能力。
Decoder:客户端的消息编码器,主要根据协议要求完成客户端请求的解码逻辑。 实现基本的RLP解码能力和智能合约的返回信息解码能力。
Transaction API:客户端的交易请求相关API,实现了基本的交易请求类型和格式定义。 实现交易的封装和解析。 用于快速交易建设。
Signature API:这部分是客户端加密能力的总称。 能够通过Keystore中加载的私钥对数据进行加解密和验证签名。 主要用于客户端交易请求的签名场景。
事件API:客户端的事件API,主要封装客户端与区块链平台的事件连接,为客户端提供相关的事件订阅和处理机制。 通过同步和异步机制完成区块链平台相关交易、区块、网络、共识等的事件接入能力。
隐私API:客户端隐私操作API,主要用于扩展平台内的数据隐私保护能力,实现交易数据和账户数据的信息保护,防止交易监控和账户匿名。
GrayEagle 经济系统
1.分配系统
GrayEagle基础框架的内生代币称为GEC——GrayEagle Coin。 GEC 的总流通量取决于业务需求。 GEC 用作生态系统参与者的工作令牌和使用令牌。 GEC也是衡量服务价值的单位,用于平台激励。
GrayEagle 生态系统的主要参与者是:
(1) 平台经理
负责维护平台,管理簿记员、服务商、运营商和监管存款池。
(2) 监管机构
代表政府、行业等外部监督。
(3) 簿记员
负责维护平台账本和业务监管。
(4) 见证
负责簿记监督工作。
(5) 服务商
负责提供业务运行环境和资源,包括算力、存储、网络等。
(6) 操作员
企业的所有者和经营者。
(7) 用户
被送达。
在这个生态中,GEC作为流通媒介。 记账人、见证人、服务商需要缴纳一定的保证金才有资格参与生态。 运营方发行的资产需要等量的GEC背书流通量和一定比例的运营保证金。 记账人、见证人和商业服务商获得两个收益,生态收益和商业服务收益。
2 代币分配
GrayEagle Coin比特币底层使用的共识机制是,GrayEagle平台代币,简称GEC,发行量20亿。 分配机制如下:
生态激励:
储备一亿。 用于奖励生态建设伙伴,包括合作社区和其他生态参与者,运营服务收入将纳入统一分配。
业务支持池:
8亿。 用于运营者发行资产、生态参与者的保证金要求等,发行规则由基金会制定。
灰鹰基金会:
3亿。 用于奖励为GrayEagle生态建设做出重大贡献的机构和个人。
创始团队激励:
200000000。用于团队激励、平台的持续开发和完善、支持业务类型的扩展、社区维护和网络运维。 团队锁定期5年,2019年9月起每月分批解锁。
阶段性资金支持:
6亿。 用于感谢提供阶段性资金支持的机构和个人。 (灰鹰)
关键词: