什么是Corda?
最近我开始了一个需要使用到Corda的项目,那Corda究竟是什么呢?如果你是在Google上搜到的这篇文章,那你应该已经对它有一些自己的认识,但如果是以其它形式看到这篇文章,那你很可能对它就不是很熟悉了。不管怎样,我解释一下它是什么。
Corda是一种分布式记账技术(Distributed Ledger Technology),简称为DLT。一些人可能会说这是区块链,但我坚信它与以太坊(Ethereum)、比特币(Bitcoin)这些区块链是有区别的。不过它更像超级账本(Hyperledger Fabric)和Quorum(以太坊的一个分支)这些分布式账本技术。这些区别很重要,因为这样才可以让Corda在它的用例中表现的更好。我将在这篇文章中简要介绍影响Corda设计的因素。
总而言之,Corda是一种应用在商业中的分布式记账技术。例如在金融机构,通过保持一个共享交易账本,消除了参与者相互交易后不断检查账本一致性的需要。这是Corda正在解决的一个主要问题。
基于这些,它的设计就是为了让相互交易的各方确信他们账本的一致性。Corda消除了网络上所有参与者需要了解每一笔交易的需求,因为只有那些参与其中的人才会对它们感兴趣。为了更好的展开阐述,我们需要对Corda正在解决的问题进行适当的研究,这样才可以理解为什么选择Corda做这些基本的决策。
为什么使用分布式记账技术?
为什么分布式账本作为一种可能的解决方案,可以让每一方的账簿保持一致,而不需要双方进行经常性的检查?
这个问题的答案可以写很多。数据一致性是分布式账本的核心功能之一,也对Corda正在解决的问题起到关键的作用。我们来更进一步看看Corda为什么可以消除商业人员在保持各方数据一致性上花费的额外时间和工作。
一个商业或者金融结构,以银行为例,从一个客户的账户转一笔钱到另一家银行的接收者账户中,两家银行都需要检查这次交易是有效的,也就是客户的资金已经被转走,并且最后被正确接收。
确保一个账户的资金已经减少而另一个账户的资金增加,需要双方进行多次的检查。因为他们需要百分百确定钱不会神奇地消失或者凭空创造出来。此外,一些检查是手工完成的,需要花费更多的时间和精力来确保一致性。
分布式账本可以完全消除这种需求,无论是由交易双方进行还是由第三方完成。这是由分布式账本的本质决定的,账本上所有节点(参与者)的状态必须一致。
具体到Corda,只有当所有相关方都接受了所提交的交易的输入和输出是正确时,才会提交交易。如果有任何人不同意,那这笔交易就不会发生,否则,交易将被提交,并且这些资金(或任何输入和输出)按照约定在双方之间移动。
请注意,我还没有提到任何需要手动检查交易的需求。其实仍然可以在提交交易的过程中进行手动交互,比如,在流程完成之前需要进行签名。
来源于r3's的训练材料
进入下一个问题:
为什么Corda只允许交易中的参与方进行交易?
首先我们需要理解类似以太坊(Ethereum)和比特币(Bitcoin)的区块链,为什么它们的交易都是公开的。区块链的主要吸引力之一就是信任机制,也就是不需要信任你(或者任何人)也可以相信在链上的交易都是有效的。这是可以实现的,因为所有的交易都是公开的,一旦它们被包含在一个区块中,那么这种状态将永久保持。一位不怀好意的参与者想要修改一个区块中的交易几乎是不可能的,因为它需要在下一个区块加入链之前,将网络中所有节点的区块副本进行修改。
这样做的缺点是,使用区块链的每个参与方都必须保留该链的本地副本,这样当一个新区块被添加到链中时,所有参与方都会收到更新并保持在相同的状态。
降低一个系统的信任机制会对系统性能和可扩展性产生很大的影响。例如,以太坊(Ethereum)目前需要每个节点处理所有交易并存储所有账户的状态与合约代码。这会降低网络上所有节点到一个节点可能的吞吐量。如果该模型保持不变,那么随着用户数量的增加,用户等待其交易被挖掘的平均时间只能增加。
由于上述问题的存在,很多人正在研究提高网络性能的可能方法。以太坊的雷电网络(Ethereum Raiden Network)与比特币的闪电网络(Bitcoin Lightning Network)都在致力于提高各自系统的性能和可扩展性。
以太坊网络例子:单个交易中涉及的节点
Corda很可靠,但是这并不意味着它走向了系统性能的另一个极端,但是一些信任是很明确的,因为必须知道一方的身份才能加入现有的Corda网络。此外,网络上的参与者必须信任账本上的资产发行人,资产自己在交易中移动。这就是需要信任结束的地方,参与者自己不需要互相信任。账本保持所有人一致,事实上网络对每个人的身份进行认证授权,身份可以提供一个备份保证以防任何非法操作。
另外,不可靠的区块链或者分类账都不能在信任级别的最底层找到,因为它们隐含在一致性协议中并且依赖于一个(或一组)参与者不能控制整个网络一半的挖掘能力。
通过消除网络中各方共识需求,仅仅保持交易的参与者的一致性可以加快交易完成速度。由网络认证授权提供的初始信任为这一决策奠定了基础。如果分布式记账技术将取代已经存在的金融基础设施,这将在其中起到重要作用。
Corda网络例子-参与者包含在单独的交易中
根据这两个问题的答案我们可以确定,到目前为止,Corda并不是像以太坊(Ethereum)或者比特币(Bitcoin)区块链那样分散,但是它也确实允许企业在不需要中心节点的情况下进行交易。这和其它分布式记账技术保持一致,例如超级账本(Hyperledger Fabric)。
这是否是一个好的或者糟糕的想法取决于你对离散重要性的看法。虽然,合约代码的分布与区块链中的硬分叉(hard fork)工作类似——在所有升级之前,所有各方都必须同意新代码;然后放弃旧版本的代码,而不是让两个不同的版本独立运行,但是,这种升级过程使它在分散的规模上减小了一点。
我相信,如果DLTs要向前发展,并且得到更广泛的应用,这些就是需要做出的设计决策。
综上,我相信这些因素对Corda的设计产生了很大的影响。他们选择分布式记账技术,该技术使用已知的身份向系统注入信任,并且保持交易各方交易私有。这样的目的在于减少维护数据一致性所需要做的工作,同时仍然允许数据良好地伸缩并处理更大量的交易。如果分布式记账技术充当商业之间交互的角色或者可能取代当前金融基础设施,那么我相信这些决策就是必须的。
如果这篇文章激起了你的兴趣,你想亲自看看Corda,那么去看看他们的文档,里面提供了关于Corda构建的概念以及如何使用这个平台的教程,这样你就可以自己拿来试验了:
Corda文档地址:
https://docs.corda.net/
原文标题:
What Is Corda?
原文链接:
https://dzone.com/articles/what-is-corda-3