1、Corda 分布式账本平台:简介Richard Gendal Brown, James Carlyle, Ian Grigg, Mike Hearn2016 年 8 摘要由相互不信任节点组成的分布式账本可提供个全局性单数据库,于存储机构与个之间交易和债务的状态。前为了保持各个独账本之间数据同步,需要量耗时的作,分布式账本可淘汰其中很部分。这也将提融业内现的代码共享平,以降低众使融服务的成本。本公司推出 Corda个为了实现以上标设计的平台。本为般读者提供平的介绍,即将发布的技术书会详细阐述 Corda的设计理念与基础框架。1目录2目录1引言32背景33愿景43.1 终态原则 . . . . .
2、 . . . . . . . . . . . . . . . . . . . . . . . . 54 Corda平台74.1 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.2 概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.3 共识机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.4 商业逻辑 . . . . . . . . . . . .
3、 . . . . . . . . . . . . . . . . . 104.5 核融概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Corda平台与其他平台的对比125.1 与特币的对 . . . . . . . . . . . . . . . . . . . . . . . . . . 135.2 与以太坊的对 . . . . . . . . . . . . . . . . . . . . . . . . . . 136路线图147结论15参考文献151引31引言我们 R3 坚信,分布式账本技术有潜为融服务业带来变,
4、使业内客户与相关公司获益。我们的愿景是:未来融协议将得到准确的存储与动管理,每个都能误缝地处理任何契约或合约。我们相信未来市场趋势将是:参与达成的融合约旦被记录,就可以被准确误地持有和共享。重复、调账、匹配失败和数据损坏都将成为历史。以资产为代表的孤岛将不再出现。我们期望依赖已经被证明的技术,在现有的法律框架内,为融服务场景创建个共享账本架构。我们的理念可分为以下三类:满机构的程需要、关注功能性的需求、可扩展性。本介绍了 Corda 平台的设计特点,我们相信这个平台对融机构会是常不错的选择。 a2背景银业敢于突破传统思维,较早地利信息技术,将处理精确地动化,将物理处理精确地数字化。然,我们仍有
5、机会改善这些新兴架构的成本与效率。值得提的是,每个融机构都以的度维护着记录客户群和交易对协议、地位的账本。同样,交易对也以的度维护着这样个账本。这种重复会导致记录的不致,需要交易各耗费昂成本来进对账、调账和纠错。对同笔交易,双认知存在差异也是个风险,并且可能是系统性风险。多个融机构的存在会促进竞争,多个技术平台的存在则会增加复杂性,产运营风险。然直以来,这些风险不可避免,除采集中化的市场基础设施 b。由此看来,仅仅依靠合作公司提技术不提的平是不通的。集中化市场基础设施在提机构间数据与商业逻辑共享度已有成效,但整体上看,融交易领域的整合平仍然远远低于络时代的信息交换平。 1a读者可通过邮件联系作
6、者: Richard Gendal Brown (), James Carlyle(), Ian Grigg (), Mike Hearn ()b这的例包括美国证券集中保管结算公司 (DTCC) 以及持续连结清算集团 (CLS)。3愿景4我们相信加密技术的进步,例如通常说到的区块链技术,提供了个新的机遇:机构间安全共享记录的权威性系统。通过建个记录融交易、处理商业逻辑的全新共享平台个可记录企业间所有协议的、权威性的全局性逻辑账本,为融机构间(特别是但不限于交易后服务)的经济活动带来变。这个架构会为融业带来个全新的共享平台,这个平台之上的新参与者及第三都能展开竞争,竞相提供创新产品和服务。图 1
7、: 上图所,我们展了三种状态的变化过程。第种是参与各记录并管理的账本,处理所引发的不致性和重复问题( “双边协商”),第种是参与将关键处理过程的权责委托给集中化服务商( “第三市场基础设施”),进化到第三种,则是各在开放性与竞争性基础上,使新服务提供商及市场基础设施提供者的服务,合作维护个共享账本,保证各记录的致性。我们相信,更质量的数据、更少的差异和更快的企业达成协议速度,将带来成本的幅节约。且,各个企业若使这个共同架构,会形成个新的平台让新融服务商展开竞争,更好地服务客户需求未来,这样的平台也有可能在企业内部应,现在企业内部多个系统记录同笔交易,也是造成成本上升、操作复杂的个主要原因。3愿
8、景长期来看,我们可以预想借助 “全局性逻辑账本”,使所有经济活动参与者充分互动,任何参与均可通过种安全、致、可靠、私密、权威的式,来记录和管理彼此之间的协议。之所以称之为全局,是因为呈现给每个的数据都是样的;之所以符合逻辑,是因为其物理式的实现会有所差3愿景5异。最终可能形成的状态,将会是企业内部维护的权威账本系统被淘汰,由企业间可共享的全局性权威记录系统取代之。3.1终态原则如果使分布式账本技术,终态原则包括: 账本上记录的事实论在任何争议场合,都可被各看作具有法律约束的可证据。 记录在账本上的事实是具有权威性的,存储在别处的权威数据的”影“,因此直接通过平台便可达成决定。 参与旦达成协议,
9、账本上的记录就是最终且不可变的。纠错或解约唯有通过后续交易来实现。这将促使公司不得不通过改进内部作流程来提准确度和质量标准。 原则上,任何授权参与都可以直接访问账本,并通过账本来记录与交易对达成的协议。任何参与都不被迫与其他打交道,但是分级或等级制的市场模型可能会越来越少。 通过提倡开放式的标准和私密性的访问,新融服务提供商都可以实现互联,展开竞争,提供差异化的服务,从利于客户由选择,促进业内竞争。 唯能访问融交易内容的是参与本,和其他具有合法知情权的。然,这个愿景的最终实现需要过渡状态,如最初只关注共享商业逻辑的参与。现有的系统在可预见的未来将会直存在,意识到这点,在设计解决案的时候就需要把
10、现有系统的共存、整合与移植作为个基础。这些过渡状态也可带来可观的价值,同时长期愿景的法律和其它技术性问题也可着解决。需要强调的是,我们的远期标是实现个全局性逻辑账本,但是最后实现的可能是多种形式的分类账本。也许最后的情况是种资产类别对应个账本,账本的匹配具备主性和灵活性,又保证不同商业服务间功能上和操作上的独性。撑这个愿景的架构和战略选择包括:3愿景6 只有对其管理的资产与协议有法定权益的员能够访问此系统管理的记录。 此系统管理的协议的变动将由计算机代码描述,这段代码必须获得相应法律件的合法授权。 2 为了确定如何处理合约失败问题,此系统提供了对合约代码升级的持,以及关于争议解决流程的明确参考
11、。这是因为就算在动设定下,技术和为因素也会导致出现合约争议情况。 成本、风险和监管负担(包括资本、流动资和运营债务)的降低,创新产品和服务的出现,就意味着我们的愿景得到了成功实现。 为了实现整个融界的泛应,本系统的部分必须且将会保持开放:开放源码、开放研发,开放标准。 虽然此愿景使到了诸如个”平台“或”系统“的词语,我们认为实际设计仍是多层级的,可能由多个技术提供商竞争或合作提供不同组成部分。读者不应该想象我们把这个系统设计成了个完全统垂直整合的模式。 此愿景还意味着,产品层级所包含的知识产权可由参与建设的企业或组织持有。 基于益严重的络犯罪和严峻的络安全形式,本系统会采标准的安全设计来应对。
12、我们认为,实现此愿景所必需的基础技术发明已经存在,包括但不限于:发达的加密技术,全球通信络,融具定义的标准以及保证全局致性的有效算法。最近公众对分布式账本和区块链系统为关注,创造了使这愿景能被公开讨论的环境,且多个融机构已经建了协同动的合作联盟关系,这些都让此愿景的实现成为可能。在此愿景的设定下,这个络的参与者拥有个份识别的基础架构,但是于架构的复杂程度于操作式尚设定。监管层的参与是这个平台设计过程的关键因素。我们对现存的分布式账本平台进了需求分析和评估,得出结论:前尚没有任何平台能满我们提出的需求。本质上来说,撑传统分布式数据库系统设计的威胁模型并不适于我们前临的状况:让互不信任的法4 CO
13、RDA平台7律实体达成致(就是说区块链技术可以做到交易可信赖不需要第三担保)。现的区块链系统架构也不适于我们的要求,法做到在单独法律协议层上进有限制且谨慎定义的数据共享。所以,我们设计并着开发了 Corda 平台。4 Corda平台Corda 是个于记录和处理融协议的分布式账本平台,它的设计就是为了实现本所描述的愿景。Corda 平台持智能合约,符合 Clack, Bakshi, Braine 的定义。 3 智能合约既可由计算机代码动执,也持录及控制的协作,其权利和义务由法律条明确表述,具有法律效。智能合约把商业逻辑和商业数据关联到相关的法律条上,以保证平台上的融合约能强根植于法律上、具有执效
14、,若各存在模糊性、争议性或不确定性时,就有相关的法律依据可循。4.1主要特性Corda 平台尤其适于受监管的融机构。它很程度上是受到区块链系统的启发,但又摒弃了很多不适合融场景的传统区块链设计选择。Corda 提供了个运智能合约的框架,具备以下关键为和特点: 通过基于现有合法框架并与现有和新兴法案兼容的式,记录和管理两个及以上可识别参与的融协议和其它共享数据的变化。 去中化控制的公司间作流设计; 在个交易层全局系统层上,持企业间达成共识; 持纳监管以及监督性质观察者节点; 仅在交易参与之间验证交易的有效性; 持多种共识机制; 记录然语法律书与智能合约代码之间的显性关联; 使符合产业标准的具;4
15、 CORDA平台8 严格控制数据访问权,仅对有明确授权或逻辑上有权访问的户开放;Corda 平台的这些设计特性,适合复杂的融服务机构。请注意,此设计没有使原加密数字货币,也未给全局性交易设置速度限制。4.2概念我们先是使了全局性账本的概念:可靠的单数据源。然,在我们的模型,交易和账本条并未全局可见。当交易仅发在部分参与之间,我们努把相关数据设置仅对这部分可见。在我们的的观念,基础对象是个状态对象,是份记录两个或多个参与之间协议是否存在、以及协议内容和当前协议状态的数字化档。该档仅与有合法理由查看的户共享。在个各参与法可见全部数据的全局化共享系统中,要保持数据的致性,我们主要依赖安全的加密哈希算
16、法来识别参与和数据。这个账本,则被定义为个不可改变状态的对象集。我们依据协议状态来讨论和思考,我们的标是为了确保在协议状态变化过程中,所有协议的参与能够保持共识。可以认为这是区块链概念的本质:确保不同持有的数据,在数据更新中持续保持致性,这是保证可靠交易完成的基础:从简单的货币付到复杂的智能合约交易。图 2: 上图所的状态对象,代表某个虚拟的航运公司在家商业银拥有项 100 英镑的现索赔权。状态对象通过哈稀算法记录其对应的法律件和合约代码之间的显性关联关系,同时通过合约代码控制其转换。与其他系统相,我们专注于协议状态,其他系统中参与必须达成4 CORDA平台9共识的数据是整个账本的状态或整个虚
17、拟机的状态。 Corda 平台提供三种主要具来达成全局分布式共识: 智能合约逻辑,根据预先约定的规则,确保状态转化的有效性; 唯的时间戳服务,以消除冲突同时保证事务顺序性; 个业务流程处理框架,以简化多个参与之间复杂多步骤协定的编写过程。4.3共识机制在 Corda 平台中,记录的更新要通过”交易“,交易会覆盖已有的状态对象,成新的状态对象。共识机制可分为两个:1. 交易有效性:参与通过检查相关合约代码成功运并持有全部必需的数字签名,便可以确认预期更新的可定义输出状态的交易是有效的,并且任何与之相关的交易都是有效的;2. 交易唯性:参与如果确认该交易是所有输状态的唯使者,即可确认其唯性。也就是
18、说,没有其他交易可以推翻我们之前达成的共识(有效性和唯性),使同状态。参与通过独运相同的合约代码并验证其逻辑性,便可对交易有效性达成致。然,就交易唯性达成共识,需要个预先选定的观察者,很多情况下要求观察者具备独性。4 CORDA平台10图 3: 上图所,仅该交易参与才能就交易有效性达成共识。因此,数据仅对需要查看的参与共享。其他平台般在账本层达成共识。所以,Corda 系统中的任何,都只能看到整个系统管理的全部数据的集。如果系统中少两个就份数据是否存在和细节问题达成共识,我们就称其为“账本上的数据”,系统允许任意组合的参与到所有指定数据的共识建进程中。仅被唯拥有的数据,被称作为“账本之外的数据
19、”。Corda 提供”可插拔“的唯性服务,旨在提隐私性、扩展性、法律系统兼容性 4 和算法的敏捷性。单服务可能由众多相互不信任的节点组成,这些节点通过种拜占庭容错算法组合在起,或可能常简单,像台单独的机器。在某些情况下,例如状态的变化需要全部相关参与签名,这时候可以不需要唯性服务。需要重点指出的是,这些唯性服务仅于证明某个状态的变化是否是因为某个特定交易的发引起的;它们不需要证明交易本的有效性,那是交易参与的责任。这意味着,唯性服务不需要访问任何交易的完整数据,与其他分布式账本和区块链设计案相,提了系统的隐私性和扩展性。这项设计决策,是在共享账本框架中做出权衡的重要抉择,我们即将发布的技术书会
20、对其作更详细的说明。4.4商业逻辑Corda 平台通过智能合约代码执商业逻辑,由段纯函数构成,只来接受或者拒绝次交易,可能是由更简单和可复的函数组成。这些函数将交易解释为,通过应(智能合约)命令来使输状态并成输出状态,如果预期操作有效,则接受该项交易。合约定义了账本的部分商业逻辑,4 CORDA平台11且具有灵活性:某些配置各个节点将会在沙箱内下载并运合约,并不需要审查,尽管我们的设想是监管环境下的 Corda 平台配置将使签名代码。我们选择 Java 虚拟机 5 来执合约及验证有效性,因为 Java 虚拟机有多个已有库和丰富的技术积累,并且利已有产业标准,便于银重复利现有合同内代码。不过,我
21、们给 Java 虚拟机增加了个定制沙箱,普通的 JVM 沙箱严格得多,不仅执安全需求,还持确定性执。跟以太坊 6 样,选择标准化字节码集 Bytecode 集不是某门编程语,可允许户在合约语设计进创新,或根据喜好复已有编程语。这也便于户直接使内部程序的合约代码,旦合约通过审查便可使,这将简化应开发过程。4.5核心金融概念Corda 的基础架构深受三个架构领域影响深远的例影响,被视为具有代表性的共同问题,也可能是有所针对性的。这三个例包括:现,证券托管和衍品合约。在所有三个例中,我们设想它们为融协议的案例: 现余额(例如:“我与以下银达成致,银我百万美元”) 证券托管(例如:“我与以下托管银达成
22、致,我拥有以下公司的1000 股股票”) 双边衍品协议(例如:“银 A 和 B 同意他们是以下利率互换协议( IRS)的参与,这意味着他们在预定时间根据协商致的清算公式对以下现流进互换”)就这些例中的个, Corda 的现设计对商业现实进了明确建模,“储存在银中的钱”的概念不复存在,只有所有者对家指定机构的现索取权的概念。 7 所以,我们的核现合约极其简单却不失强:我们记录现发者的法律份、货币种类、现数、现所有者(其他信息如索取权的性质,明确指定管理此协议的法律条,法律条也会说明发争端后的解决流程),在这些基础上建其他所有与现相关的概念(付、结算和其他)。5 CORDA平台与其他平台的对比12
23、上图展了种最简单的 Corda 平台交易:发交易。我们发现成个新的现状态,由家商业银发给家虚构的航运公司。该发交易由发银签名。从这个简单模型,可以构建出更复杂的交易,例如付、货银对付合约和期债。Corda 模型总结我们模型的核概念是: 状态对象:代表两个及以上参与之间的协议,由机器可读的合约代码控制。合约代码引并旨在执类可读的法律条。交易:通过命周期转化状态对象。 交易协定或商业作流:在中控制的情况下让参与可协调操作。有选择性地严格限制可的编程技术,让决定权最化,但是可共享的状态数量必须最化。状态对象(数据)的组合、合约代码(允许性操作)、交易协定(商业逻辑编排)、任何必要的 API、钱包插件
24、、 UI 组件,都可以被认为是个共享的账本应程序,或 Corda 分布式应程序( CorDapp)。这是个核的组件集,是平台上任何个合约开发者都期待去创建的。5 Corda平台与其他平台的对比Corda 平台的创建得益于我们与融从业者的泛合作,设计更是始终围绕着他们的需求。当然, Corda 设计灵感也来于以往的成果,包括 ToddBoyle 和 Ian Grigg 在论中关于三式簿记 8 的介绍,以及已有分布式账本5 CORDA平台与其他平台的对比13平台(例如特币 9 和以太坊)的相关因素。因此这也便于不了解 Corda 的借助这些平台来更好地理解 Corda。5.1与比特币的对比Cord
25、a 与特币有以下个显著相似点: 通过交易创建和使的状态不可变的,这是样的; 交易有多项输和输出。特币有时会“未使的交易输出集”( UTXO集)指代账本作为结果输出; 合约是纯函数;合约并存储功能,也不能与任何其他事物进交互。对于同项交易,合约的“验证”函数永远输出相同结果。然,特币交易有单且严格的数据格式,且除了特币数量和相关使规则(脚本),只能保存极少的数据。曾有试图打破这种限制:通过在合约代码的半标准化处嵌数据,以便可以通过模式匹配来提取数据,但这种法并不有效。相之下, Corda 平台内的状态可以包含任意类型的数据。另外, Corda 平台上的交易不仅可以调输合约,也可以调输出合约。特币
26、交易的确认机制仅由已使输状态的合约代码控制。 Corda的“合约”概念,指的是可以处理各种任务的系列商业逻辑,不限于交易验证。如,现在 Corda 上的合约还包含成有效交易的代码(般在特币中被称作“钱包代码”)。特币脚本只能获取串固定的字节数组作为输项。这意味着合约法判断整个交易的结构,对合约的功能造成了极限制。我们的合约是图灵完整的,可使任何普通编程语在 JVM 上作。 Corda 允许在交易中指定任意精确的时间边界,不依赖挖矿产区块的时间。这关重要,我们设想的许多合约类型也持必要精准时间,同时也因为我们主要的共识机制执案是使区块由的冲突解决算法。这需要强调的是, Corda并未使作量证明机
27、制( POW),也没有“挖矿”的概念。5.2与以太坊的对比和以太坊相似, Corda 平台上的代码运在相对强的虚拟机上,并能包含复杂的逻辑。可汇编程序设计语编写合约程序。者都旨在为不同类型的融合约建模。6路线图14然,以太坊中的“合约”是指程序的实例化,每个参与节点都对其进复制和维护。这种实例化常像向对象编程中的对象:可以接收和发送消息,更新本地存储等等。相之下,我们对智能合约的执法代码表是组函数,其中仅有个函数来保持系统同步(验证函数)。该函数是纯函数且状态(如,它不可能与系统的其他部分进交互)。因为合约没有任何类型的可变存储器,因此没有“消息”的概念。以太坊宣称是不限于融逻辑的平台,理论上
28、可以应于各各业。我们的 Corda 平台暂不考虑融应,少前期如此。6路线图为了达成这项设计案,我们先代码模拟并绘制了 Corda 组件的产品原型图,以验证设计概念的。 Corda 模型有望在中短期内交付,以下是 Corda 模型的部分(并全部)扩展向。 交易分解与强化唯性服务:整合多种机制以有选择地隐藏部分交易,包括唯性服务的模糊处理; 合约验证沙箱:显式链接最的 Java 库名单; 基于插件的钱包,于位置推理; 数据库或关对应所属(或其他)商业逻辑执者(如中央机构或估值代理),参与在账本上可验证执者份。 使 Corda 模型来管理户份 ; 互操作性和数据集成:尤其参照 FpML 和 ISO2
29、0022,持其他数据格式和其他平台的集成或互操作性; 为涉及的数据构建应程序; 使技术来强化隐私性,如不规则分布地址、零知识证明和资产发案等; 未来融具的参考合约; 原持资产组合层级的商业逻辑,如状态对象的聚合。7结论157结论相现有的分布式账本和区块链平台, Corda 平台的创建有着明确的的,即记录和执注册融机构的业务协议,并为所有问题提供解决案。因此, Corda 的数据分配和交易语义均独辟蹊径,但仍保持了分布式账本的特性,融机构也正是因为这类特性才对 R3 之类项产兴趣,换之,就是采取种动化且可实施的式来确保融协议的可靠执。参考文献1 Mai. IT in banks: What do
30、es it cost? https:/ 2012.2 Grigg. The Ricardian Contract. http:/iang.org/papers/ricardian_contract.html, 2004.3 Clack, Bakshi, Braine. Smart Contract Templates: foundations, designlandscape and research directions. http:/arxiv.org/abs/1608.00771,2016.4 European Commission. The European Commissions S
31、ettlement Final-ity Directive. http:/ec.europa.eu/finance/financial-markets/settlement/index_en.htm, 1998.5 Lindholm, Yellin, Bracha, & Buckley. The Java Virtual Machine Specifi-cation Java SE 8 Edition. https:/ 2015.6 Buterin et al. A Next-Generation Smart Contract and DecentralizedApplication Plat
32、form. https:/ 2014.7 McLeay, Radia, & Thomas. Money creation in the modern econ-omy. http:/www.bankofengland.co.uk/publications/Documents/quarterlybulletin/2014/qb14q1prereleasemoneycreation.pdf,2014.参考献168 Grigg. Triple Entry Accounting. http:/iang.org/papers/triple_entry.html, 2005.9 Nakamoto. Bitcoin: A Peer-to-Peer Electronic Cash System. https:/bitcoin.org/bitcoin.pdf, 2008.