第四节 Corda—N2N
相较于完全不基于前期信任基础的比特币、以太坊、比特股等公有区块链,在大多数商业合作环境当中,信任基础都是在事前建立的,因此就衍生出了算法约束机制相对更弱的分布式账本技术结构。以全球最大的跨国银行分布式账本联盟所闻名的R3 CEV就以解决银行间金融业务的合规性问题、安全性问题与高效信任问题为目的,共同开发了Corda分布式账本系统,当前该系统已发布了2.0版本。
不同于其他区块链技术中需要多方对一个交易进行认证与验真,在Corda当中,仅要求交易参与的双方点对点完成交易验证,而这个验证的过程则基于双方事先认可的智能合约执行逻辑。只有当交易双方同时认可纳入的第三方对交易内容可见,才会将交易数据共享给第三方,这种情况一般出现在对监管方或者必要的清算中介开放纳入时。因此Corda并不具有全局区块链的数据结构,而是一种点对点(Node-to-Node)的数据共享与互相认可机制,被称为分布式账本技术。
当然,作为一种分布式账本技术,Corda的基础仍然在于去中介的点对点交易,因此共识机制仍然是其中必要的一部分。在Corda当中,交易参与双方通过两种方式形成共识:一种被称为验证共识(Verification Consensus),另一种则被称为唯一性共识(Uniqueness Consensus)。
一、验证共识(Verification Consensus)
验证共识是指通过对一笔交易所有的相关历史交易进行签名的溯源验证,从而确保每笔交易的有效性。每一笔交易中的输入都会被要求由交易参与方对之前的输出进行验证,从而形成一条交易链。以图2.16中的债务偿还交易为例,在当前最新的交易中,A通过将10元现金支付给B,清偿完成了作为债务人与债权人B之间的债务关系,但由于现金在此次交易发生之初由A所有,因此需要通过A来追溯上一笔交易的签名情况。在上一笔交易中,是A向D借了10元钱,形成了与D之间的债务关系,相当于D获得了A的债权,因此需要验证D对这笔交易的签名。而D的现金又来源于旧交易中C的发行,因此A会再验证旧交易中C的签名。
当然,D也同样可以通过转让债权方式再次获得现金,或在某个时间点要求A清偿债务,对于此类交易的发生也会同图2.16所示情况一样,对现金来源和债务来源进行追溯。
在Corda的验证共识当中,会出现需超越交易双方,对历史参与方的数据进行验证的需求,因此会产生超越双方的数据泄露问题。R3目前提出了以下几种解决方案。
(1)限制追溯节点范围,即在Corda智能合约中根据业务场景对追溯步骤进行限定,控制传播范围。
(2)拆分数据,即通过公私钥加密机制对验证相关的双方开放相关数据,最终向非关联方仅输出验证结果而不泄露数据内容。
(3)在验证共识中,对参与方节点的密钥进行随机分配,即类似于比特币的地址匿名操作,从而使得被暴露的数据与具体参与方对应关系不可见。
(4)基于英特尔提供的安全扩展软件将验证人与特定硬件设备,以及操作人员的权限进行绑定。
二、唯一性共识(Uniqueness Consensus)
验证共识是对交易中的内容的准确性进行追溯验证,而唯一性共识所要解决的则是类似于数字货币公链中的“双花”问题,即确保同一个资产在交易过程中其记录的终局性。Corda中的唯一性共识通过公证(Notary)服务模块实现,公证服务模块是一个在分布式账本网络上执行的服务,而并非传统的第三方公证。公证服务会对发起的交易中的输入值进行验证,确保该输入未在其他交易中被签名。因为签名过的输入即表示了该输入已在其他交易中被使用,因此为避免“双花”,公证服务会仅选择对从未被签名过的交易输入进行签名,来确保交易唯一性。
唯一性共识中的公证服务有两种验证方式:一种是仅对输入值本身是否签名进行验证,另一种是复合了上一小节中所描述的验证共识功能,不仅验证输入值是否被签名,还会对输入值来源进行向上追溯,进一步确保输入值的正确性。这两种方式在隐私保护上前者高于后者,而在正确性和完整度上则后者强于前者。
在整个Corda网络上允许多个公证服务模块根据不同的目的同时运行,并各自公证相关的交易,互不干涉。公证服务模块也同样是可插拔的,即可通过任命某一个或几个第三方节点进行传统的第三方公证,或引入PBFT、SBFT等拜占庭容错算法进行分布式的随机性公证,Corda还为在唯一性共识中直接引入PoW或PoS的分布式公证机制留出了接口。
通过以上的介绍我们不难发现,Corda所谓的两种共识机制实际上在比特币与以太坊的共识算法中是被看作同一个问题进行解决的,Corda通过分拆功能降低了系统部署的综合性要求,提升了交易共识效率。在Corda的设计当中,并没有对作恶与攻击防范设置过于复杂的算法机制,这完全是因为其适用于银行间的交易场景,并且还存在在N2N中纳入第三方监管的可能性。因此其最大的特点在于并不需要每笔交易都通过中心化的第三方授权操作,而是由事先所约定的参与方以约定好的方式自动执行相互验证,然而一切作恶的约束仍然来自外部的法律、法规对节点参与方法律主体的监管。Corda作为一种去链式数据结构的分布式账本技术,在一定范围的可信合作方内部形成了比公有区块链更高效的交易机制,免除了所有参与方节点保存全量数据的压力,但也由于没有本地链式数据库的支持,在诸如验证共识中的追溯验证中,仍然要反复多次访问其他参与方的远程数据库,对网络结构具有一定要求。在下一节中我们将继续介绍基于一定信任基础的区块链共识结构,探讨如何在分布式程度与效率之间进行平衡。
本书评论