您的当前位置:寡趣症 > 患病影响 > R3Corda一个为金融服务设计的分
R3Corda一个为金融服务设计的分
译者按:R3-CEV因为联结了42家银行金融机构研究区块链,它的一举一动备受瞩目。这次是官方首次披露他们的系统Corda的相关细节,Corda宣称的去「区块链」概念博人眼球,系统设计上确实有许多区别于区块链的点。通篇读下来发现CTOBrown讲述团队在设计这个系统的背后思考,对于国内参与金融机构区块链研究以及构造联盟链的参与者,也是颇具价值。
正如「Bloomberg」今早所报道的,我在这非常荣幸公布R3及其合作银行们正在为金融服务所研发的分布式账本:Corda.
过去的六个月,我的团队以及R3联盟参与者一起,从头打造一个「分布式账本」平台原型,它是为传统金融机构间管理「金融合约」而特别打造的。对于JamesCarlyle(首席工程师),MikeHearn(平台开发主管)为首的团队所取得的进展,我感到特别兴奋,是时候跟大家分享一些细节了。
Corda:用以记录和管理「金融合约」的分布式账本
Corda是一套分布式账本系统,用来记录、管理和同步传统金融机构间的「金融合约」。它很大程度上受启发于「区块链」系统,但是排除了一些不适合银行业应用场景的设计思路。
Corda的关键特性包括:
Corda没有采用全局共享数据:即只有在合约范围内的合法参与主体才可见;
Corda没有中心控制节点来干预参与主体之间的流程;
Corda能就主体之间的单笔交易(这样的粒度)取得共识,而非系统级别;
Corda可以引入监管和监督节点;
Corda交易的确认由交易参与方完成,而不是由其它很多非相关的验证者确认;
Corda支持多种「共识机制」
Corda会明确记录「人类语言的法律文件」与「机器智能合约代码」之间的关联;
Corda由工业级别的工具打造;
Corda没有原生的「加密数字货币」;
Corda是我们和银行联盟成员们一起,反复研究需求,不断迭代原型的技术成果,待它再渐进成熟一点,我们会开放源代码。
接下来,我还想跟大家分享一些我们倍受影响的观点。为什么我们要打造Corda?为什么我们会做这样的设计决策?它的代码什么时候能让大家审阅或者打造应用?它与其它平台和项目之间的关系?
思考历程
当我年9月离开IBM加入R3,我强迫自己停下来,开始思考。「区块链」这辆「花车」正在全速前进,当时我刚被委任到一个区块链金融项目做CTO,但是有个问题一直困扰着我...如何避免陷入过度迷信「区块链魔力」?
我想象着自己将来某个时刻和我们某个银行联盟的CIO面对面坐着……我想象着我们幼稚的选择了当时最流行的blockchainforfinance(译注:区块链金融)并在上面部署了一系列产品和服务。我想象着我们坚信了「区块链魔力」,放弃了批判性思维,忽视了任何工程问题。在这样的想象场景里,我对面坐着的应该是一脸愤怒的CIO,他很想知道为什么系统会如此失败?为什么我要这样设计系统?
我可能会总结一个完全不合理的答案:「因为区块链在相当酷!」不,简直不可理喻。
事实上,把既定的设计方案往随意的问题上套的解决思路从来都不会成功。我之前每一个成功的项目都是从需求开始,而不是一项很酷的技术,我决定要把这个准则贯彻到R3的工作中来。
再次提醒自己:为什么宣称要革银行命的系统同时又扮演它们的救世主?
还有一个理由我要小心看待:年初技术流派和金融行业集体宣称「区块链技术」将是金融服务的未来。
其实,我也是这个观点的积极倡导者之一。但是「区块链技术」举足轻重的缘由非常精妙,大部分没有看到这个精妙点。
要理解这点,我们得提到比特币。
比特币的系统架构,如我常写的,简直太神奇了。比特币的各个组件环环相扣,如此不凡,它们事后看起来显而易见,却也只能天才才能创造。
然而比特币最牛逼的地方并不是它的系统架构。我认为它最牛逼的地方是它解决的商业问题。我们不要以为它只是解决了一个普通的商业问题,它完美解决了「如何构建一个系统使得没有人能阻止我花自己的钱?」现在,我无法揣测Satoshi的想法,他当然不是按这个思路来写白皮书的,但是它激发了非常有价值的想法。
事实上,一旦你写下这个「商业问题」,设计方案不经意就显现出来了。(几乎...)你总是希望可以花掉自己的钱?那么系统就不能被中心节点控制,因为它可能会被权力机关关闭。你也不能依赖一群已知身份的验证者,因为它们可以联合起来关闭系统。马上你发现自己需要一个大规模的基于复制的共识系统,以及如果不想牵涉真实世界的身份信息,你还需要像POW「工作量证明」这样的系统来完成投票工作。你按这样的逻辑走,基本上整个系统设计就出来了(区块链,挖矿机制,区块奖励,甚至UTXO(UnspentTransactionOutput)模式,等等...)。当然,系统把很多工作丢给了用户:比如只要知道了对方私钥就可以没收了他的比特币...(译注:言下之意就是用户自己要做好保存私钥的工作)不过我们先把这个放一边。
按这样的思路来考虑问题非常重要,因为它强调了比特币的区块链是在解决具体的商业问题。SatoshiNakamoto并不会哪天早上醒来说「把区块链应用到金融领域」。区块链只是一个工具,是当时为解决一个实际问题而创建。
我们现在有一个难题,对吧?如果是这样,那为什么还在争论银行业是否需要区块链?
实际上,按我之前确认,银行存证的问题跟我之前提的比特币要解决的问题截然相反。
区块链系统有哪些特质?
十月的大部分日子我都是静静地坐在一个小黑屋里(真的!当时我们伦敦的第一个办公室,租的伦敦市区一个共享办公室的4人间),思量区块链最基本的一些假设,到底什么地方吸引了银行业?
大部分人已经完成思维跳跃,对于一揽子比特币系统,无法take-it-or-leave-it(要么全盘接受要么全盘否定):打个比方,「工作量证明」完全没必要部署在私有链上。然而由我观察,这些公司似乎接受了除此之外比特币的其它特质...作为一个行业,这看起来有点奇怪,我们揶揄了「比特币系统」里的某个部分却又止步于次。
我在IBM最初几年是担任「技术销售」的职位。如果你跟大IT供应商有过商务往来,你应该有接触过跟我类似的角色。我们作为技术专家跟销售代表一起拜访客户,我们需要跟客户解释产品是如何工作的,确保向客户推荐的方案是对的,然后扫清完成这笔交易的所有技术障碍。
从这份经历中我学到:这不取决于你有多努力,或跟客户谈判多少次,或销售代表有多激进,如果你的解决方案不能解决客户的真实问题,那么生意永远谈不成。如果靠那些真能起作用,我坚信最终你会后悔...
快速回到年10月,我所调研的区块链领域,一些名躁的公司在兜售区块链解决方案,然而之于我要解决的问题没有一点意义。我曾一度自我怀疑:也许他们是对的,是我疯了?!
我继续刨根问底:即时他们的「takeitorleaveit」区块链设计思路是对的,可以成为金融行业的救世主,那我也会尽我职责向我们的银行联盟解释缘由。
所以我们开始从我们使用的「区块链组合」中做挑选。
我们可以从比特币、以太坊或别的私有链中提炼出区块链的五个彼此相关但又独具特点的服务。最理想的方式是把它们当作菜单,针对不同商业问题,就好比按不同口味,再进行选择、定制、组合。
CONSENSUS共识
第一个,也是区块链最为重要的特质(是伴随着scale和scope的新概念)。区块链的共识帮助解决了这个世界真实问题:参与方看到的事实就是其它权益方看到的事实。
如:「我看到你所看到...同时我知道我看到的也是你所看到的」
再如:「我知道你知道我知道什么!」
再如:「我知道你知道我知道你知道什么...」
等等...
它使得互联网不可信双方变得可以信赖。当然,共识系统和复制性状态机早已存在,但是共识系统在互联网范围内,面对非信任参与方或者强权对手方,这是这种进步。
对于比特币,这个公认的事实是:「哪些比特币未被使用以及怎么确保它们能被正确支付使用」,这个事实是所有全节点都共享的。
对于以太坊,公认的事实是抽象虚拟机的状态。
但非常有意思的是:并没有一套自然法则规定一部分人的共识就是整个世界的共识。比特币恰好这么做是因为它所解决的特别的商业问题。如果你不是要解决这样的问题你要小心那些卖你比特币解决方案的公司。
VALIDITY确认
第二个「区块链组合」中的特质是「有效性」。和共识紧密相关,这个特性能让我们知道向系统发起更改的操作是否有效。这是我们设计的「游戏规则」,什么是这个系统的有效事实?对这个事实的更改如何是合法的?
UNIQUENESS唯一性
第三个「区块链组合」中的特质是「唯一性服务」。我可以很容易的创建两个有效的更新操作,但是它们彼此间冲突时,我们需要让利益相关方一致地选出其中一种。区块链的「反双花」特性提供了这个服务,这特别得重要。
IMMUTABILITY不可变
第四个「区块链组合」中的特质是「不可变」,即数据一旦写入,就无法再修改。
这看起不太对劲:如果是我的数据我当然能够修改它。
但这里真正的含义是:交易一旦提交,没有其他人会接受一个已经被其它权益方接受,然后我再修改数据生成的交易。
区块链是这么实现的:新的交易打包上一笔交易的输出,新的区块打包上一个区块的内容。只有为上一次不可变的内容正确打包,新的步骤才是有效的。
AUTHENTICATION验证
最后一个「区块链组合」的关键特性是「验证」:系统内每一个操作都跟私钥关联,没有传统系统里「主密码」或「管理员密码」的概念。这点从安全角度来看,跟传统企业系统里的超级用户帐号的固化方式大不相同。
再来看看金融机构的商业问题是什么?
为什么我让大家了解整个分析的过程?是因为它能帮助我们抓住「分布式账本」领域核心:这些新兴平台可以让互联网的不可控、非信任参与主体,对于「公认事实」的存在以及演变达成共识。
那如果是这样,那么金融领域的「公认事实」是什么呢?到底什么商业问题需要我们用这套机制去解决?
就在这我们瞬间开窍了,Corda项目的最基本的洞察来自于,这些金融机构间重要的「公认事实」就是它们的「金融合约」:
银行A和银行B认同:银行A欠银行B万美金,按需通过RTGS(Real-timegrosssettlement)方式支付;--这是活期储蓄
银行A和银行B认同:他们是一份「信用违约掉期」合约的参与双方;--这是一个金融衍生品合约
银行A和银行B认同:银行A有义务履行,三天内交付0股Bigco的普通股给银行B,银行B支付15万美金现金;--这是一份「货到付款」合约......
金融行业基本成型于公司之间的合约,而这些公司有个普遍的问题:合约由双方记录,在各自的不同系统里,一旦有不一致产生,就会造成巨大的成本。多个研究机构表明每年为此花费的开销在数百亿美金。
特别地,这些系统间主要交换信息:我发给一个更新结果,希望你收到的是新的合约是跟我的一致的。这就是为什么要花那么多钱来协同确保双方的一致性,还要花费更多钱在我没有提及的问题上。
现在想象我们有这样一套系统,它帮助记录和管理合约,合约在参与公司之间共享并且保证记录的一致性和唯一性。系统对相关监管者可见,由工业级工具打造,吉林白癜风医院专业治疗白癜风的医院