R3-CEV 因为联结了42家银行金融机构研究区块链,它的一举一动备受瞩目。这次是官方首次披露他们的系统 Corda 的相关细节,Corda 宣称的去「区块链」概念博人眼球,系统设计上确实有许多区别于区块链的点。通篇读下来发现 CTO Brown 讲述团队在设计这个系统的背后思考,对于国内参与金融机构区块链研究以及构造联盟链的参与者,也是颇具价值。


正如「Bloomberg」今早所报道的,我在这非常荣幸公布 R3 及其合作银行们正在为金融服务所研发的分布式账本:Corda.

过去的六个月,我的团队以及 R3 联盟参与者一起,从头打造一个「分布式账本」平台原型,它是为传统金融机构间管理「金融合约」 而特别打造的。对于 James Carlyle (首席工程师),Mike Hearn(平台开发主管)为首的团队所取得的进展,我感到特别兴奋,是时候跟大家分享一些细节了。

Corda:用以记录和管理「金融合约」的分布式账本

Corda 是一套分布式账本系统,用来记录、管理和同步传统金融机构间的「金融合约」。它很大程度上受启发于「区块链」系统,但是排除了一些不适合银行业应用场景的设计思路。

Corda 的关键特性包括:

  • Corda 没有采用全局共享数据:即只有在合约范围内的合法参与主体才可见;
  • Corda 没有中心控制节点来干预参与主体之间的流程;
  • Corda 能就主体之间的单笔交易(这样的粒度)取得共识,而非系统级别;
  • Corda 可以引入监管和监督节点;
  • Corda 交易的确认由交易参与方完成,而不是由其它很多非相关的验证者确认;
  • Corda 支持多种「共识机制」
  • Corda 会明确记录「人类语言的法律文件」与「机器智能合约代码」之间的关联;
  • Corda 由工业级别的工具打造;
  • Corda 没有原生的「加密数字货币」;

Corda 是我们和银行联盟成员们一起,反复研究需求,不断迭代原型的技术成果,待它再渐进成熟一点,我们会开放源代码。

接下来,我还想跟大家分享一些我们倍受影响的观点。为什么我们要打造 Corda?为什么我们会做这样的设计决策?它的代码什么时候能让大家审阅或者打造应用?它与其它平台和项目之间的关系?

思考历程

当我2015年9月离开 IBM 加入 R3,我强迫自己停下来,开始思考。「区块链」这辆「花车」正在全速前进,当时我刚被委任到一个区块链金融项目做 CTO,但是有个问题一直困扰着我... 如何避免陷入过度迷信「区块链魔力」?

我想象着自己将来某个时刻和我们某个银行联盟的 CIO 面对面坐着……我想象着我们幼稚的选择了当时最流行的 'blockchain for finance' (译注:区块链金融) 并在上面部署了一系列产品和服务。我想象着我们坚信了「区块链魔力」,放弃了批判性思维,忽视了任何工程问题。在这样的想象场景里,我对面坐着的应该是一脸愤怒的 CIO,他很想知道为什么系统会如此失败?为什么我要这样设计系统?

我可能会总结一个完全不合理的答案:「因为区块链在2015相当酷!」不,简直不可理喻。

事实上,把既定的设计方案往随意的问题上套的解决思路从来都不会成功。我之前每一个成功的项目都是从需求开始,而不是一项很酷的技术,我决定要把这个准则贯彻到 R3 的工作中来。

再次提醒自己:为什么宣称要革银行命的系统同时又扮演它们的救世主?

还有一个理由我要小心看待:2015年初技术流派和金融行业集体宣称「区块链技术」将是金融服务的未来。

其实,我也是这个观点的积极倡导者之一。但是「区块链技术」举足轻重的缘由非常精妙,大部分没有看到这个精妙点。

要理解这点,我们得提到比特币。

比特币的系统架构,如我常写的,简直太神奇了。比特币的各个组件环环相扣,如此不凡,它们事后看起来显而易见,却也只能天才才能创造。

然而比特币最牛逼的地方并不是它的系统架构。我认为它最牛逼的地方是它解决的商业问题。我们不要以为它只是解决了一个普通的商业问题,它完美解决了「如何构建一个系统使得没有人能阻止我花自己的钱?」现在,我无法揣测 Satoshi 的想法,他当然不是按这个思路来写白皮书的,但是它激发了非常有价值的想法。

事实上,一旦你写下这个「商业问题」,设计方案不经意就显现出来了。(几乎...)你总是希望可以花掉自己的钱?那么系统就不能被中心节点控制,因为它可能会被权力机关关闭。你也不能依赖一群已知身份的验证者,因为它们可以联合起来关闭系统。马上你发现自己需要一个大规模的基于复制的共识系统,以及如果不想牵涉真实世界的身份信息,你还需要像 POW「工作量证明」这样的系统来完成投票工作。你按这样的逻辑走,基本上整个系统设计就出来了(区块链,挖矿机制,区块奖励,甚至 UTXO (Unspent Transaction Output) 模式,等等...)。当然,系统把很多工作丢给了用户:比如只要知道了对方私钥就可以没收了他的比特币...(译注:言下之意就是用户自己要做好保存私钥的工作) 不过我们先把这个放一边。

按这样的思路来考虑问题非常重要,因为它强调了比特币的区块链是在解决具体的商业问题。Satoshi Nakamoto 并不会哪天早上醒来说「把区块链应用到金融领域」。区块链只是一个工具,是当时为解决一个实际问题而创建。

我们现在有一个难题,对吧?如果是这样,那为什么还在争论银行业是否需要区块链?

实际上,按我之前确认,银行存在的问题跟我之前提的比特币要解决的问题截然相反。

区块链系统有哪些特质?

十月的大部分日子我都是静静地坐在一个小黑屋里(真的!当时我们伦敦的第一个办公室,租的伦敦市区一个共享办公室的4人间),思量区块链最基本的一些假设,到底什么地方吸引了银行业?

大部分人已经完成思维跳跃,对于一揽子比特币系统,无法 take-it-or-leave-it (要么全盘接受要么全盘否定):打个比方,「工作量证明」完全没必要部署在私有链上。然而由我观察,这些公司似乎接受了除此之外比特币的其它特质... 作为一个行业,这看起来有点奇怪,我们揶揄了「比特币系统」里的某个部分却又止步于次。

我在 IBM 最初几年是担任「技术销售」的职位。如果你跟大 IT 供应商有过商务往来,你应该有接触过跟我类似的角色。我们作为技术专家跟销售代表一起拜访客户,我们需要跟客户解释产品是如何工作的,确保向客户推荐的方案是对的,然后扫清完成这笔交易的所有技术障碍。

从这份经历中我学到:这不取决于你有多努力,或跟客户谈判多少次,或销售代表有多激进,如果你的解决方案不能解决客户的真实问题,那么生意永远谈不成。如果靠那些真能起作用,我坚信最终你会后悔...

快速回到2015年10月,我所调研的区块链领域,一些名躁的公司在兜售区块链解决方案,然而之于我要解决的问题没有一点意义。我曾一度自我怀疑:也许他们是对的,是我疯了?!

我继续刨根问底:即时他们的「take it or leave it 」区块链设计思路是对的,可以成为金融行业的救世主, 那我也会尽我职责向我们的银行联盟解释缘由。

所以我们开始从我们使用的「区块链组合」中做挑选。

我们可以从比特币、以太坊或别的私有链中提炼出区块链的五个彼此相关但又独具特点的服务。最理想的方式是把它们当作菜单,针对不同商业问题,就好比按不同口味,再进行选择、定制、组合。

CONSENSUS 共识

第一个,也是区块链最为重要的特质(是伴随着 scale 和 scope 的新概念)。区块链的共识帮助解决了这个世界真实问题:参与方看到的事实就是其它权益方看到的事实。

如: 「我看到你所看到... 同时我知道我看到的也是你所看到的」

再如:「我知道你知道我知道什么!」

再如:「我知道你知道我知道你知道什么...」

等等...

它使得互联网不可信双方变得可以信赖。当然,共识系统和复制性状态机早已存在,但是共识系统在互联网范围内,面对非信任参与方或者强权对手方,这是这种进步。

对于比特币,这个公认的事实是:「哪些比特币未被使用以及怎么确保它们能被正确支付使用」,这个事实是所有全节点都共享的。

对于以太坊,公认的事实是抽象虚拟机的状态。

但非常有意思的是:并没有一套自然法则规定一部分人的共识需要整个世界一起达成共识。比特币恰好这么做是因为它所解决的特别的商业问题。如果你不是要解决这样的问题你要小心那些卖你比特币解决方案的公司。

VALIDITY 确认

第二个「区块链组合」中的特质是「有效性」。和共识紧密相关,这个特性能让我们知道向系统发起更改的操作是否有效。这是我们设计的「游戏规则」,什么是这个系统的有效事实?对这个事实的更改如何是合法的?

UNIQUENESS 唯一性

第三个「区块链组合」中的特质是「唯一性服务」。我可以很容易的创建两个有效的更新操作,但是它们彼此间冲突时,我们需要让利益相关方一致地选出其中一种。区块链的「反双花」特性提供了这个服务,这特别得重要。

IMMUTABILITY 不可变

第四个「区块链组合」中的特质是「不可变」,即数据一旦写入,就无法再修改。

这看起不太对劲:如果是我的数据我当然能够修改它。
但这里真正的含义是:交易一旦提交,没有其他人会接受一个已经被其它权益方接受,然后我再修改数据生成的交易。

区块链是这么实现的:新的交易打包上一笔交易的输出,新的区块打包上一个区块的内容。只有为上一次不可变的内容正确打包,新的步骤才是有效的。

AUTHENTICATION 验证

最后一个「区块链组合」的关键特性是「验证」:系统内每一个操作都跟私钥关联,没有传统系统里「主密码」或「管理员密码」的概念。这点从安全角度来看,跟传统企业系统里的超级用户帐号的固化方式大不相同。

再来看看金融机构的商业问题是什么?

为什么我让大家了解整个分析的过程?是因为它能帮助我们抓住「分布式账本」领域核心:这些新兴平台可以让互联网的不可控、非信任参与主体,对于「公认事实」的存在以及演变达成共识。

那如果是这样,那么金融领域的「公认事实」是什么呢?到底什么商业问题需要我们用这套机制去解决?

就在这我们瞬间开窍了,Corda 项目的最基本的洞察来自于,这些金融机构间重要的「公认事实」就是它们的「金融合约」:

  • 银行 A 和银行 B 认同:银行A欠银行B 100万美金,按需通过 RTGS (Real-time gross settlement) 方式支付; -- 这是活期储蓄
  • 银行 A 和银行 B 认同:他们是一份「信用违约掉期」合约的参与双方;-- 这是一个金融衍生品合约
  • 银行 A 和银行 B 认同:银行 A 有义务履行,三天内交付 1000 股 Bigco 的普通股给银行 B,银行 B 支付 15万美金现金;-- 这是一份「货到付款」合约 ......

金融行业基本成型于公司之间的合约,而这些公司有个普遍的问题:合约由双方记录,在各自的不同系统里,一旦有不一致产生,就会造成巨大的成本。多个研究机构表明每年为此花费的开销在数百亿美金。

特别地,这些系统间主要交换信息:我发给一个更新结果,希望你收到的是新的合约是跟我的一致的。这就是为什么要花那么多钱来协同确保双方的一致性,还要花费更多钱在我没有提及的问题上。

现在想象我们有这样一套系统,它帮助记录和管理合约,合约在参与公司之间共享并且保证记录的一致性和唯一性。系统对相关监管者可见,由工业级工具打造,关注系统间互操作性、渐进部署、防范数据泄露。系统可以让你知道你跟对手方签订的合约,并确保:

「我看到也是你看到的,我们双方都知道我们看到的是同一个事实,同时我们双方都知道这就是我们向监管者报告的事实。」

这就是 Corda.

Corda 从「区块链组合」菜单里选择了什么?

现在我们了解了金融服务的需求,我们再来看看上面提到的「区块链组合」菜单中,我们都做什么选择。

CONSENSUS 共识

Corda 的一个关键设计哲学是我们要解决「我知道你看到的和我看到的公认事实是一致的」。

但并不代表无关第三方也需要看到它:我们的共识发生在交易对手方之间,而不是所有的参与者。

VALIDITY 确认

进而,在 Corda,只有合约的参与方才是「事实」的权益方:假设你跟我达成合约,那为什么要管无关第三方关心什么?为什么还要考虑给他们发送副本以便他们发表意见?所以 Corda 提供工业标准的工具让用户来写交易确认的逻辑,我们来确定谁将是每份合约的相关方。

UNIQUENESS 唯一性

和其它「分布式账本」一样,我们也需要保证两个有效但冲突的交易不能并存于系统中。但我们同时意识到,不同的场景需要不同的权衡,所以 Corda 的设计提供了「唯一性服务」的不同实现方式,其中一个就是「经典区块链」方案。不止于次,出于我们的目的,我们还会根据 Brewer 的 CAP 定理 的不同权衡来实现不同的服务,例如:一些金融服务客户需要优先 C「一致性」的要求,牺牲部分A「可用性」和网络的 P「分区容错性」。

IMMUTABILITY AND AUTHENTICATION 不可变和验证

这两点,Corda 的设计与现有区块链系统基本一致:数据是不可变的,区块也是由数字签名的交易组成。

所以 Corda 基本上承袭了区块链的 「authentication」「immutability」「uniqueness service」的特性,但「共识」(单笔交易的参与方 vs 所有参与者) 和 「确认」(合法权益方 vs 普通验证者)改动很大。

Corda 有什么不同?

等下,这是不是其它区块链公司也在鼓吹的点?并不是。

值得注意的几点:
- 我们不是在打造区块链;
- 和其它做区块链的比较,我们的出发点是公司之间的单笔合约(状态对象被合约代码管理,法律合规);
- 我们摒弃了数据在所有节点间同步,哪怕数据是加密的;

其次,我们专注于合约:法律合规从一开始就考虑在内。我们知道这点争议性很大,我们会想办法解决。

第三,我们非常重视管理金融合约的现实问题。仅仅一套共识系统是不够的,我们要让编码商业逻辑变得简单,容易和现有代码集成,我们需要关注系统间互操作性。我们需要支持合约顺应公司之间的业务流程。

不同问题用不同解决方案

但是... 我们需要清醒认识到,我们并不能把 Corda 当作所有问题的解决方案。这个模型对于一些使用场景非常强大但不一定适合别的。这也是为什么我们需要和所有合作伙伴紧密合作互补平台,我们并不是无所不能。而且我们还有许多重要的设计和调研问题有待解决,还有很多工作要做。

我感到非常惊讶,除 Corda 之外,我们的实验室已经有许多高质量的平台产生并将持续产生。「不同问题用不同的解决方案」是我们的赞歌。最近几个月参加会议或培训课的人可能已经听我说起过了。

Corda 不是要和其它公司竞争或业务重叠,事实上我们创建它是因为市面上没有一个平台能解决我们的领域问题。这个领域潜能无限。

参考: http://r3cev.com/blog/2016/4/4/introducing-r3-corda-a-distributed-ledger-designed-for-financial-services

R3 Corda:一个为金融服务设计的分布式账本系统相关推荐

  1. 扫盲区块链: Corda不是区块链的分布式账本

    R3和Corda 说起Corda,不得不提R3.R3的全名是R3CEV.是一家成立于2015年9月的一家创业公司. 其中: C 即加密技术.代表全球金融市场中加密技术和分布式总账智能协议. E 即交易 ...

  2. 一个基于模型化设计的物联网实验系统

    前言 有一段时间不写关于工业软件方面的博文了,以至于有网友私信问我-"你还在搞工业软件么?"疫情再一次爆发,人没有出门,思想到也没有闲着.前一阶段主要研究工业控制领域的标准,协议和 ...

  3. 开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务

    项目介绍: Hangfire:是一个开源的job调度系统,支持分布式JOB!! Hangfire.HttpJob 是我针对Hangfire开发的一个组件,该组件和Hangfire本身是独立的.可以独立 ...

  4. 超级账本-面向企业的分布式账本

    超级账本-面向企业的分布式账本 超级账本(Hyperledger)项目是首个面向企业应用场景的开源分布式账本平台. 在Linux基金会的支持下,超级账本项目吸引了包括IBM.Intel.Cisco.D ...

  5. ULTRON 分布式监控系统

    概述 在今天这个时代,数据已经成为重要的资源,小到管理系统大到智能AI都脱离不了数据的支持.在面对海量数据的压力下,传统项目不能不走上了变迁的道路.生存还是毁灭,看你自己咯.从传统一个war包走天下, ...

  6. 分布式追踪系统的对比、实现与使用—NodeTracing

    前言 现状 各类trace解决方案 各大厂商trace系统对比 NodeTracing概览 NodeTracing使用 下载 快速开始&单例启动 生产部署&集群启动 安装自动探针 探针 ...

  7. 超级账本中分布式账本

    fabric里的数据以分布式账本的形式存储.账本由一系列有顺序和防篡改的记录组成,记录包含着数据的全部状态改变.账本中的数据项以键值对的形式存放,账本中所有的键值对构成了账本的状态,也成为世界状态.每 ...

  8. 区块链基础:分布式账本介绍

    区块链基础:分布式账本介绍 1.分布式账本是什么 2.商业账本扮演的角色 3.现行商业账本的问题 4.区块链是什么 5.区块链网络是如何工作的 6.区块链的商业利益 7.区块链的使用案例 8.你是否应 ...

  9. 区块链与分布式超级帐本技术(Hyperledger Fabric或R3 Corda)

    与分布式超级账本技术(如Hyperledger Fabric或R3 Corda)相比,以太坊区块链保持了相似性和差异性.在对区块链和分布式超级账本平台进行有根据的评估及其为企业带来的价值时,根据平台的 ...

最新文章

  1. 使用jQuery的.css()和.attr()方法设置元素left属性的注意点
  2. SOR迭代求解线性方程组代码实现
  3. C++设计模式——适配器模式(对象适配器、类适配器)
  4. Simulink仿真 第二节 输入输出和子系统
  5. 9月14日学习内容整理:初识别面向对象
  6. 应该增加黑样本还是白样本呢
  7. 很少使用“ ControlFlowException”
  8. yfan.qiu linux硬链接与软链接
  9. 【华为云技术分享】《跟唐老师学习云网络》 — IP和掩码
  10. maven的pom文件出现Multiple annotations found at this line...,已解决
  11. 接口与事件之图形界面的认证登录
  12. Markdown简单介绍和基本的语法
  13. 21接力题典1800 数一 重积分 P46 T18
  14. [Deprecated!] Android开发案例 - 微博正文
  15. 计算机知识架构一:计算机组成、体系结构
  16. java史上最全面试题(转载于骆昊)
  17. 微信聊天记录删除了怎么恢复?通过这几种方法可以找回
  18. android 盒子刷机,一加5刷机盒子
  19. python猜单词游戏_17.Python猜单词游戏
  20. 【深度科普】辐射的真相

热门文章

  1. 数据库的行格式ROW_FORMAT
  2. 第十二届蓝桥杯省赛 C/C++大学B组 试题G:砝码称重
  3. 微信小程序--公共组件使用
  4. 0x01A686F0 处有未经处理的异常(在 五金上色软件.exe 中): 0xC000041D: 用户回调期间遇到未经处理的异常。。...
  5. 基于python的Topsis(优劣解距离)算法的实现(附代码及举例说明)
  6. 共享3d打印机ppt分享
  7. 基于stm32的DHT11、光照强度、烟雾浓度、振动频率的proteus仿真(全网第一)
  8. 数学库(持续更新中 18-05-06)
  9. 一起摇摆html5游戏,和 transformjs 一起摇摆
  10. Renix软件如何建立OSPF邻居——网络测试仪实操