大家好,我是Nervos 爱好者“麦吉” ,今天晚上咱们一起学习了解一下Nervos AppChain 的核心组件 CITA!
至2011年起,Nervos核心团队成员开始参与各种区块链项目的研究与开发,以太坊Ethereum是其中之一。
2016年6月,nervos核心团队成员发布了中国首个兼容以太坊智能合约的自主研发企业级区块链产品原型CITA(Cryptape Inter-enterprise Trust Automation)
作为一个专注区块链底层技术团队,四年前研发开源交易所 Peatio(貔貅交易所),三年前创建了Ethfans,并且在两年前开发高性能区块链内核 CITA 和星火矿池,到参与 imToken 第一版的核心开发和 Ethereum 下一代共识机制 Casper 的开发。
Nervos Network 它将包含:
为商业应用构建的任意多条应用公链 AppChain
为商业应用提供跨链和安全服务的基础公链Nervos CKB
Nervos AppChain 着重强调商业可实现性,因此突出性能,
Nervos AppChain 的核心组件是就是我们今天要分享的 CITA了~ 【更多内容请关注我们的公号:nervosfans】
CITA( Cryptape Inter-enterprise Trust Automation )是一个面向企业级应用的支持智能合约的区块链框架,可以为企业级区块链应用提供一个稳固、高效、灵活、可适应未来的运行平台。
我们先来学习一下Cita的共识
区块链节点通过共识算法形成一致的交易历史记录。通过共识服务,有效的交易被选择出来,并形成全局的全序或者半序关系,为交易处理提供基础。
区块链节点通过共识算法形成一致的交易历史记录。通过共识服务,有效的交易被选择出来,并形成全局的全序或者半序关系,为交易处理提供基础。
交易通过可证数据结构凝结成不可篡改的历史,在被执行器处理之后形成的数据我们称之为视图(View),记录用户账户余额的账本即是视图的一种。
不同的区块链设计对于视图是否需要共识有不同的态度。UTXO 集合在 Bitcoin 区块中并无体现,相反由账户集合形成的“世界状态”的特征值会被记录在 Ethereum/Fabric 区块中。
对视图数据进行共识,有利于发现交易处理中的问题;将视图的特征值固化在区块中,有利于节点间视图数据的交换,是轻节点验证和跨链协议的重要基础。
CITA 的区块数据结构设计兼顾了视图共识的需要.
作为一种多参与方的共享服务,保证使用者发出的交易能够在一定的时间内被处理是一个重要的设计目标,我们称之为反屏蔽。
在企业级应用场景中,用户的交易不能及时被处理可能会给用户造成巨大损失
例如 在规定时间内无法向智能合约补充保证金导致强行平仓。
由于出块节点拥有交易的选择和排序权,出块节点必须以一定的规则轮换,以保证单一节点无法长时间将某些特定的交易排除在外。
CITA 使用出块节点主动轮换策略以满足反屏蔽的要求。默认的顺序轮换能够满足一般应用的需要,同时也提供随机轮换作为扩展模块。
在产生新区块后,CITA 默认使用 CITA-BFT 算法进行共识。CITA-BFT 是一种专为区块链设计的高性能共识算法
CITA-BFT 在广泛综合分布式系统研究领域的最新成果 PBFT,Tendermint 的基础上,针对企业级区块链的网络结构和数据结构进行了深度的改造和优化,在保证安全性的基础上(可容忍不超过节点总数 1/3 的拜占庭节点),实现了极高的吞吐量。
CITA-BFT 可以方便的被替换成任何更合适的共识算法,只要实现共识服务标准接口,替换算法可以用任意语言实现。
这里需要注意的是 ,,共识算法替换往往涉及网络、存储等多个方面,很难被完美抽象,因此共识算法的替换可能不仅仅需要共识服务的替换,还需要同步对其他微服务进行定制。
Cita的交易处理服务——异步交易处理。区块链节点的最主要职责包括点对点网络交互 ,共识,交易处理以及数据存储四个方面。
节点通过共识算法,在系统中形成对交易排序的全局共识,再按照共识后的顺序对交易进行逐个处理。
只要处理过程能保证确定性,所有节点最后都能达到一致的状态,产生相同的本地数据。
在当前的区块链设计中,共识与交易处理耦合程度较高,共识的性能受到交易处理能力的影响。
而在CITA中 将共识与交易处理解耦为独立的微服务,共识服务只负责交易排序,并不关心交易内容,交易处理服务只负责对排好顺序的交易进行处理。
此时共识过程可以先于交易处理完成,交易处理服务可以异步执行。异步交易处理技术不仅使 CITA 具有更好的共识性能,还带来了更有弹性的交易处理能力,交易负荷可以被更均匀的分摊到一段时间内 (可看下图解释)
由于交易异步处理,在共识前只能对交易进行有限的检查,例如签名验证。无效的交易有可能通过共识进入交易处理服务,产生一定程度的垃圾数据。
在有必要的情况下..
可以通过 CITA 的交易配额机制及垃圾清理技术解决该问题。
最新的密码学技术,例如零知识证明以及同态加密,可以帮助我们做到在不知道交易数据的情况下执行交易。但是这些技术并不成熟,性能难以实用,安全性有待时间检验。。。。
下面咱们一起看一下cita中的隐私方案:
CITA 1.0 通过交易局部执行技术,实现了一种实用的隐私方案
隐私交易提交后,先在本地进行加密,加密后的交易通过点对点隐私交易传输协议被传送给拥有解密私钥的节点,同时交易哈希被打包进入区块链。
隐私交易数据只在拥有解密私钥的相关节点上保存,相关节点先解密再执行交易,交易数据不会发送给无关节点,完全杜绝了任何信息泄漏的可能。
CITA 为节点身份验证提供了标准接口,同时对节点接入进行更严格的控制。
对于身份验证失败的节点,即使该节点能够在网络层与其他 CITA 节点联通,CITA 节点也会拒绝与其建立通讯会话,避免信息泄漏。
在企业应用环境中,可能已经存在中心化用户身份验证服务,例如 LDAP 或是 PKI 证书体系。
CITA 为用户身份验证提供了标准接口,能够方便的与企业内已有的身份验证服务集成。
在基于非对称加密的身份验证方案中,用户私钥丢失是一个难以处理的问题。。而CITA 的身份验证服务支持更复杂的身份管理策略,在用户私钥丢失或是定期更新时,具有私钥更新权限的操作者可以根据用户申请使用新的私钥替换旧的私钥。
CITA授权服务已实现了基于角色的权限控制(Role-based access control)以满足企业级应用的需要。
CITA 为可供用户操作的资源进行了细粒度的划分和权限定义,并允许用户自定义角色,用户可以通过角色方便的组织用户、管理资源权限,使权限分配准确匹配企业的组织架构。
同时,权限与角色数据和变更历史都会被保存在区块链上,满足日后审计需要。
我们下面就一起认识一下cita的系统治理方案:)
在CITA中用户可以设定超级管理员角色,得益于灵活的身份验证服务设计,超级管理员角色可以有任意的身份验证逻辑。
在单中心的治理结构下该角色可以由单一核心用户控制,在多中心的治理结构下,核心用户可以形成类似委员会的治理机构联合控制(例如通过多重签名)超级管理员角色。
中心化治理角色能够通过链外通道协商形成一致行动决议,增强系统在紧急情况下的应对能力【麦吉有没讲到的地方可以查阅一下我们的公号:nervosfans】
在操作错误、软件错误或是硬件错误等问题发生时,系统可能进入紧急状态。
我们可以将紧急状态分为交易可恢复(Transaction Recoverable)和消息可修复(Message Recoverable)两类。
由于错误的交易或者是有 bug 的智能合约生成了错误的视图数据,但是节点依然能够处理交易,此时系统处于交易可恢复紧急状态。
在这种情况下,超级管理员可以构造修订交易快速应对。节点在处理修订交易时同样会先将该交易打包入块,再执行交易,因此所有修订交易都将被记录在历史中,为操作审计提供支持。
消息可修复紧急状态发生时,节点无法再正常处理交易并打包,共识服务停滞,但是点对点网络依然能够正常工作。
此时超级管理员可以通过.CITA 提供的管理员工具构造特殊消息并广播,节点收到消息并验证发送者身份后将直接处理。
好的,感谢各位,我是Nervos 爱好者“麦吉”,今天咱们一起学习的Nervos AppChain 的核心组件 -CITA- 的部分就到这里了!了解Nervos的更多内容,请查阅 公众号:Nervosfans
感谢您的关注!
每晚八点,我们在社区等你。
我们是祖国的花朵
Nervos CKB 唯一官网:Nervos.org
欢迎关注Nervos Fans
Nerovs CKB爱好者社区
Nervos Fans如下频道:
NervosFans twitter:@nervosfans
NervosFans微博:@NervosFans
NervosFans微信公号:Nervosfans
入群请加乐乐微信:sensus113
美果大冰微信:xj73226
备注入群,谢谢!
领取专属 10元无门槛券
私享最新 技术干货