无链之链:R3 Corda带来的新视角

关注微信公众号 区块链大本营,获取更多区块链开发技能

著名的金融领域分布式账本R3项目由于有众多金融机构的参与和支持,并且获得了数千万美元的融资,自宣布之日起就受到整个区块链生态环境的瞩目。从公布的一些新闻稿、白皮书中,人们已经了解到:R3的最大特点之一,就是一个没有区块链的“类区块链”系统,但是具体实现方案是什么,与区块链相关的系统对比又有什么特色,还是一个未知数。

随着R3的基础设施Corda项目在2016年11月30日宣布开源,笔者在第一时间对其技术白皮书、在线文档和源代码做了初步的阅读和分析。我们看到Corda的交易验证、共识机制等特性,采用了基于Notary(公证员)的模式。同时,为了服务于现实世界中的企业,Corda还具有很多与外部世界通讯的能力,例如:汇率、股票价格等信息的接收,可以通过一个叫做Oracle(先知)的角色来实现。总之,与此类似的设计还有不少,这一系列选择都是R3根据自身定位有意为之。R3 Corda是一个基于半信任环境的、服务于现实世界金融活动的分布式账本,同时满足信息适度可见和高性能两个核心特性。

Corda区别于其他“类区块链”系统的另一个重要特点,就是系统本身基于一个小众语言Kotlin来开发,运行在JVM之上。从实现层面来看,Corda有着鲜明的Java生态环境特点,例如:其节点使用的通讯、存储技术都是Java领域普遍采用的开源框架组合模型,相信这一点使得Corda非常适合企业使用,同时其自身开发成本也很低。此外,Corda中的合约(contract)以及Dapp应用,原则上是可以基于JVM上的任何语言来开发的,在应用开发者层面,一定程度上减小了kotlin小众化问题的影响。

除此之外,Corda作为较新的类区块链平台,还有很多令人关注的特性,本文将对其与区块链概念相关的各方面特性做一个概览,以便读者较为快速地了解这一著名的金融领域分布式账本。

基本概念与模型

去中心化数据库(Decentralized Database)

在技术层面上,Corda的定位是一个“去中心化数据库”,这一点对于理解Corda的设计和实现理念是非常重要的。

首先,在概念层面,去中心化数据库与分布式数据库有着重要的区别:分布式数据库仍然是一个中心化的系统,其服务目标是接收客户端的消息来存储数据,重点关注的是解决系统内部各个节点之间数据同步的问题。去中心化数据库,则是相互独立的参与方各自的私有数据库,在一定前提条件下同步某一方面的数据,如果参与方之间不完全的互相信任,则无法使用分布式系统中标准的数据同步算法。因此,两类系统的关注点、设计和实现模式大相径庭。

其次,在实现层面,去中心化数据库并不限于一种特定的技术:区块链这一随着比特币诞生的基础设施,可以认为是去中心化数据库的一种实现方式,也是现阶段获得最多认可的一种方式,但不是唯一的方式。从这个角度讲,Corda通过一系列的设计,给我们带来了去中心化数据库的另一种实现方案,这就是Corda系统的核心价值,一旦为人们所接受,必然会在“类区块链”生态系统中占有一席之地。

因此,Corda系统中最基本的概念、数据结构、算法和实现方式,在技术层面都是围绕“去中心化数据库”这一概念来完成的。

状态(State)与UTXO

状态是Corda网络中最基本的概念,我们可以理解状态就是“系统中的事实”,例如:“Alice拥有5000美元”,这就是一个状态。Corda系统的状态设计是基于交易的,也就是说只有一个有效交易的输出才是系统认可的有效状态,这实际上就是人们已经比较了解的UTXO模型。系统中还可以有另一个状态,就是“Alice拥有3000美元”,这是Alice参与的另一个交易产生的输出。假定系统中不再有任何Alice拥有某种资产的事实存在的话,那么从现实世界的角度看,可以认为Alice拥有8000美元。但是,Corda系统中并不存在“Alice拥有8000美元”这一事实,只有前述两个事实。熟悉“类区块链”系统的人都知道,在一个UTXO模型的系统中,Alice只有跟自己做一次交易,以前述两个状态作为输入,才能产生一个新的“Alice拥有8000”美元的状态。与此同时,前两个状态在系统中也就失效了。

与基于交易的状态模型对应的,是所谓基于账户的状态设计。也就是说,每一个交易会形成对账户状态的改变,就像银行存款账户的“余额”会随着该账户的每一次交易而变化。以太坊等区块链系统,采用的就是基于账户的模型(可能有人知道,Serenity声明也支持建立一个UTXO模型的代币系统,只在这里顺便提一句,就不展开了)。这两种模型的优劣,有相关的文章进行讨论,不是本文的重点。笔者的观点是,它们之间的差异与面向对象(O-O)的模式和函数式(functional)的模式之间的差异可以类比。

值得指出的是:采用了UTXO模型的系统,其交易之间实际上就有一个“链式结构”:一个交易的输出,成为另一个交易的输入,交易与交易之间就通过这个方式被串起来了。这样的链式结构,实际上是一个有向无环图(DAG),读者可以自行验证。同时,由于Corda系统的数据不是全局的,所以这样的“链”在系统中会存在多个,相互之间没有连接。因此,Corda系统中虽然没有“区块链”,但是仍然有“交易链”,这也就是笔者称Corda为“无链之链”的原因。

交易(Transaction)

交易就是状态转换的过程,简单地说是{输入状态、交易指令、输出状态}组成的元组,其中输入、输出都可以是一个状态列表。此外,交易还包括其他一些要素,如:附件、时间戳、各种签名以及为采用硬件加密的目的而使用的文字摘要(summeries),比较重要的部分都会在本文中讨论到。这一定义与其他“类区块链”系统中的交易定义区别不大,最主要的差异在于“交易指令”(command)这一概念,它描述的是这个交易具体是做什么的。

Corda的设计目标是对现实世界中各种交易类型进行支撑,因此要具有描述交易实际执行动作的能力,例如:转账、存入/提现、开票/兑付,诸如此类,所以要引入command这一概念。当然,这些交易动作只需要交易参与方事先约定就可以了

Corda: 分布式账本 由恒生研究院旗下区 块技术社51chain真诚翻译 原著 :麦克 . 赫恩 2016年 11月 29日 一种 具有 节点间 最小 信任机制的 信任机制的 无中心数据库技术 中心数据库技术 中心数据库技术 ,允 许创建一个 全球 的分布式账本。 这样的 账本在金融、 贸易账本在金融、 贸易账本在金融、 贸易账本在金融、 贸易账本在金融、 贸易账本在金融、 贸易账本在金融、 贸易账本在金融、 贸易账本在金融、 贸易供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 供应跟踪和更多领域都有许用场合。我们提交的 Corda,是一种去中心的全球数据库技术,它详细描述了如何 是一种去中心的全球数据库技术,它详细描述了如何 是一种去中心的全球数据库技术,它详细描述了如何 是一种去中心的全球数据库技术,它详细描述了如何 是一种去中心的全球数据库技术,它详细描述了如何 是一种去中心的全球数据库技术,它详细描述了如何 是一种去中心的全球数据库技术,它详细描述了如何 是一种去中心的全球数据库技术,它详细描述了如何 实现一个去中心的应用开发平台目标。 在《 Corda:介绍》 一文中,我们 一文中,我们 阐述 了它的高层描阐述 了它的高层描阐述 了它的高层描阐述 了它的高层描,并提供详细的技术讨论。 并提供详细的技术讨论。 并提供详细的技术讨论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值