以太坊等在整个网络中都维护着一条或者是多条链,交易的相关信息记录在链上。有这么一种类区块链的技术,它不需要在整个网络中维护一条或者多条链,但是又与区块链有着千丝万缕的关系,这个技术就是R3联盟设计的Corda。
不是区块链,胜似区块链
Corda是由R3专门为金融服务设计的分布式账本平台,符合银行业的最高标准,在Corda的设计中,将现实中金融业、银行需要面临的问题考虑了进去,例如监管,接收现实世界的汇率等等。那么Corda有哪些特点呢?
第一,Corda是一个分布式账本。即一笔交易多处记载、同步维护。但是这个分布式账本与我们看到的其他分布式账本有很大一个不同,就是它并没有一个统一的全局基础账本,而是交易的参与方或者说是利益相关方,同步维护所涉及的交易数据也就是账本。比如小A借了10元钱给小B,小B借了10元钱给了小C,那么小A会记录“小A借了10元钱给小B”,小B也同样会记录“小A借了10元钱给小B”,另外小B还记录了“小B借了10元钱给小C”,小C记录了“小B借了10元钱给小C”。
第二,Corda的根本目标是一个“去中心化数据库”,这既是他与其他区块链/类区块链系统最直接的关系,又是与所有“真正的”区块链系统最大的区别。在没有全局统一账本的大前提下,Corda的本地数据库在数据的记录方面发挥着至关重要的作用。但是,这个本地数据库是受到多个交易主体之间的业务关系约束的。约束体体现在如下几个方面:(1)交易相关人必须保证关于交易的数据记录是一致的,如不一致,首先违背了共识的一方将无法在后续的交易中自证清白;(2)交易相关人必须保证,只有在经过验证表明,双方关于交易达成的输入输出状态的检验条件全部符合后,交易方能放行;(3)交易相关人必须把交易的输出状态存储好、组织好,在后续遇到必须出示这笔交易的输出状态,作为证据的一部分的时候,不能掉链子。
第三,按照R3内部人士的话说,Corda是一个“受区块链启发的(blockchain-inspired)”平台。我们看到,区块链的启发确实弥漫在Corda各处。密码学、分布式系统、P2P网络不仅是区块链的基础技术,也同样是Corda的基础技术。在较差的信任环境下达成较好的信任效果,不仅是区块链的宗旨和追求,也同样是Corda的宗旨和追求。在金融机构严谨的合规氛围中,Corda的开发者们发现套用现有的区块链技术无法达到业内的合规标准,又等不及现有区块链技术的后续优化,只好被逼采用目前公布出来的技术架构。他们出于对区块链业界先贤们的尊重,称Corda为“受区块链启发的(blockchain-inspired)”平台,是比较实事求是的。
关于Corda“不是什么”,我们可以很明确地断定:Corda不是一个“供所有人见证所有交易的”平台。如果“所有人见证所有交易”是成为区块链的不可缺少的特质,那么Corda就确实不是区块链。但是这只是表面,不是精髓。“在较差的信任环境里达成较好的信任效果”才是区块链的精髓。所以,做到“所有人见证所有交易”只是形似,做到“在较差的信任环境里达成较好的信任效果”却是神似。在这一意义上,说Corda“不是区块链,胜似区块链”也不为过。
为什么要称Corda为无链之链
状态是Corda网络中最基本的概念,我们可以理解状态就是“系统中的事实”,例如:“Alice拥有50美元”,这就是一个状态。Corda系统的状态设计是基于交易的,也就是说只有一个有效交易的输出才是系统认可的有效状态,这实际上就是人们已经比较了解的UTXO模型。系统中还可以有另一个状态,就是“Alice拥有30美元”,这是Alice参与的另一个交易产生的输出。假定系统中不再有任何Alice拥有某种资产的事实存在的话,那么从现实世界的角度看,可以认为Alice拥有80美元。但是,Corda系统中并不存在“Alice拥有80美元”这一事实,只有前述两个事实。熟悉“类区块链”系统的人都知道,在一个UTXO模型的系统中,Alice只有跟自己做一次交易,以前述两个状态作为输入,才能产生一个新的“Alice拥有80”美元的状态。与此同时,前两个状态在系统中也就失效了。
而采用了UTXO模型的系统,其交易之间实际上就有一个“链式结构”:一个交易的输出,成为另一个交易的输入,交易与交易之间就通过这个方式被串起来了。你可以通过一个交易的输出,找到该交易的输入,然后一直回溯,那么就可以找到最初的一笔交易,这实际上就是一个链式结构。同时,由于Corda系统的数据不是全局的,所以这样的“链”在系统中会存在多个,相互之间没有连接。因此,Corda系统中虽然没有“区块链”,但是仍然有“交易链”,这就是称Corda为“无链之链”的原因。