为什么IBM的区块链不是真正的区块链?

更新日期: 2019-09-22阅读: 1.5k标签: 区块链

原文作者Stuart Popejoy在为金融业建立交易系统的方面拥有15年的经验。在2016年与Will Martino共同创立Kadena并成为公司总裁之前,Stuart在摩根大通公司新产品部门工作,领导并开发了摩根大通的主要区块链产品Juno。Stuart还为摩根大通编写了算法交易脚本,后者为他创建Kadena公司的简单的、专门构建的智能合约语言Pact提供了信息。


IBM与Hyperledger Fabric

IBM是企业区块链领域的主要参与者,提供基于Hyperledger Fabric的区块链平台,并与沃尔玛和Aetna等大型公司启动了区块链试验。

IBM作为非营利开源组织Hyperledger基金会的众多贡献者之一(包括最近宣布的Microsoft和Salesforce),投入了巨额投资来推广Fabric作为私有或“许可”区块链,这意味着它提供了与知名的区块链(如比特币或以太坊)完全不同的功能,同时以某种方式删除了可能“不适用于企业”的任何方面。

但是,IBM实际推广和称呼的所谓“区块链”技术(即Hyperledger Fabric)其实牺牲了真实区块链的最重要功能,无论是经过许可的区块链还是公共区块链。Fabric的体系结构比任何区块链平台都要复杂得多,同时防范篡改和攻击的安全性也较低。您可能会认为“私有”区块链至少会提供可伸缩性和性能,但Fabric却不。简而言之,在Fabric上的任何构建都将面临复杂性和不安全性,无法随业务规模扩展。


市场上的区块链选项

笔者2016年在摩根大通工作时,领导了一个新兴技术团队,该团队研究并审查了区块链以了解该银行的潜在用途和战略投资。这涉及对Hyperledger,Axoni,Symbiont,Ripple和Ethereum的早期版本的深入分析。当时很明显,市场上的区块链选项在技术上不足以用于实际的企业用例。不幸的是,我们今天在Hyperledger Fabric中看到了同样的问题。

当时提出的问题包括:区块链的智能合约语言如何安全、简单地表达复杂的业务规则?如何保证公钥签名有效?系统是否可以扩展以纳入更多的参与者(节点)且不会大幅降低性能?对于采用区块链的具有前瞻性的企业,是否可以轻松地与其他公共或私有区块链进行互操作?

使用这些问题作为框架,笔者相信IBM的系统从根本上缺乏区块链所需的元素,并且具有令人误解的性能数字和令人存疑的长期业务可行性。尽管笔者和同事们并不认为性能数值(每秒交易量,节点数)是采用区块链的唯一因素,但他们确实认为为人们科普关于区块链的实质是很重要的。这项教育有望帮助每个人更好地了解区块链新兴技术的前景。


什么是区块链?什么不是?

为了真正了解IBM区块链的地位,我们需要看一下区块链本身的定义。区块链的核心是事件或交易的去中心化的、不可变的分布式账本,其全网共识是通过共识机制强制执行的。在像比特币和以太坊这样的公共区块链中,这种共识是通过工作量证明或称为“采矿”的行为来实现的。在私有链(或许可链)中,可以通过提供加密签名的参与者对所写内容进行投票来达成共识。无论哪种方式,没有中央机构可以对任何事情进行仲裁。

IBM对区块链的定义捕获了区块链的分布式和不可变元素,但省去了去中心化的共识——这是因为Hyperledger Fabric 根本不需要真正的共识机制。相反,它建议使用一种称为Kafka的“订购服务”。问题在于,如果没有参与者之间的强制性,民主化和加密安全的投票,就无法证明有人没有篡改分类帐。容错共识(fault-tolerant consensus)是区块链的标志性特征,没有它,IBM的“区块链”仅是带有时间戳的条目列表。

Fabric的体系结构暴露了许多漏洞,这些漏洞可以被恶意协调利用。例如,它在网络内部引入了带有验证者签名的公钥加密技术,该签名者提供了主要的安全保证,但在提交外部签名的交易后才开始。这从根本上摒弃了比特币和其他真实区块链的可靠安全模型,在该模型中,任何交易的来源仅由外部用户的公共密钥签名来保证,并且系统不能以任何方式进行干预。与之形成鲜明对比的是,与Fabric达成共识的唯一签名是验证者的签名,而用户签名消失在通过网络复制的任意数据集中。

Fabric研究人员对性能指标的态度摇摆不定,因为从根本上说,Fabric的体系结构无法在保持峰值性能的同时进行扩展。Fabric使用多链环境(称为“渠道”)在参与者之间提供隐私性。提供隐私性是私有“企业”区块链的一项重要功能,并且必然涉及权衡和复杂性,但是对于可伸缩性而言,多链解决方案是一个糟糕的选择。它还使节点的部署变得异常复杂,节点不统一,智能合约不可靠以及潜在的故障点激增。

因此,标准Fabric部署的性能数值启动起来并不尽如人意,随着节点的增加,性能数值会迅速下降,并且是单通道的:如果要跨多个通道与整个网络进行交易,这些数值甚至都没有关系。即使这样,在查看单个通道时,该系统也很难获得每秒800个以上的事务(TPS),但是即使是16通道的配置也几乎不能超过1,500 TPS,就算是在保持10到20秒的延迟范围内实现高吞吐量也不行。

最近Fabric为加快速度做出了一番努力,声称达到20,000 TPS的速度。但是研究人员对体系结构所做的更改与区块链相距甚远,以至于根本看不出区块链的影子:代言人不再充当验证者,Kafka被奉为唯一可能的订购服务(从理论上讲,Fabric可以接受真正的区块链共识,但是它是如此之慢,以至于没人会在生产中使用它)。最后,这些仍然是单通道数值,这意味着作为共享真相来源的整个区块链概念无效。


为什么智能合约和混合操作很重要

考察区块链时,要考虑的最后一点是它们打算如何扩展到私有数据库之外,以及它们的工具(例如其智能合约语言)如何帮助企业更大范围地成功。记住,智能合约不仅仅是一段代码,它代表业务逻辑。智能合约可以在区块链上保护房屋,确保数字身份,甚至代表买卖二手车的人之间的代管交易。重要的是,智能合约必须可靠并且不可篡改。

在区块链上构建任何东西时,您需要能够通过智能合约表示您想做什么(购买,出售,打包数据等)。使用的语言越简单,就可以越快地构建所需的东西并将其展示在利益相关者的眼中。更重要的是,智能合约的功能最好是能为业务实际产生收入或取得一些积极成果。

Hyperledger Fabric的智能合约(chaincode)可以用多种编程语言编写,包括通用Javascript或Go。但是,在已经知道通用语言的程序员的便利性与特定于领域的语言所提供的安全性之间存在一些折衷。当风险与区块链一样高时(如果代码不是针对区块链而设计的,那么如果代码有错误或不正确,可能会损失数百万美元),智能合约语言必须经过专门设计且设计安全。理想情况下,在所需的区块链环境中也将易于学习且易于使用。在这方面,Chaincode很大程度上失败了——花了大约150行代码,只是执行经典的程序员教程的“hello world”输出。而这大量的代码可能催生数百万美元的错误。


IBM还没准备好迎接未来

越来越多的区块链生态系统最老练的观察者意识到私有和公共区块链之间将不会存在真空,而是希望携手合作:私有链将希望向公共区块链上的消费者提供令牌,而公众区块链的去中心化应用程序将希望将敏感信息存储在私有区块链上。不幸的是,IBM Fabric(以及R3 Corda)的用户可能会因为架构的完全不兼容而发现自己与公共区块链“隔绝”,而且由于其智能合约语言无法在公共和私有环境中无缝执行。

随着IBM通过宣布合作伙伴关系在许多企业区块链新闻周期中占据主导地位,重要的是要深入研究该技术的实际作用。IBM的“区块链”技术在很多方面都缺乏,包括安全性,性能和可靠性,这为希望使用区块链实现有意义的业务改进的组织提供了“劣等的”解决方案。为了真正实现区块链的价值,成熟的客户将寻求IBM的挑战者,他们提供更好的工具、更好的区块链技术以及如何利用技术的更好的愿景。

翻译:头等仓(First.VIP)_Maggie
来源:头等仓

链接: https://www.fly63.com/article/detial/6073

从概念到底层技术,一文看懂区块链架构设计(附知识图谱)

区块链作为一种架构设计的实现,与基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的技术实现。

200行JS代码实现超级简单的区块链,带你入门区块链

本文通过JavaScript源码实现一个简单的区块链框架,带你入门区块链的相关知识。区块链的基本概念非常简单:一个分布式数据库维持不断增长的有序记录列表。

用JavaScript写一个区块链

几乎每个人都听说过像比特币和以太币这样的加密货币,但是只有极少数人懂得隐藏在它们背后的技术。在这篇博客中,我将会用JavaScript来创建一个简单的区块链来演示它们的内部究竟是如何工作的

初识区块链_用JS构建你自己的区块链

区块链太复杂,那我们就讲点简单的。用JS来构建你自己的区块链系统,寥寥几行代码就可以说明区块链的底层数据结构、POW挖矿思想和交易过程等。当然了,真实的场景远远远比这复杂。本文的目的仅限于让大家初步了解、初步认识区块链。

刚入门区块链的程序员应该看些什么?

区块链有很多的定义,大家的说法都不一样,业界都还没有统一。每个人心中都有自己的哈姆雷特。所以此处就不做定义了。那么我主要推荐一些关于区块链概念的学习资料,看完我所推荐的资料,你应该对这门技术有一个自己的了解

区块链 PoW 与 PoS 的纷争

有关注区块链的,肯定会经常看到这两个名词 -- PoW 与 PoS。但是很多人对他们的含义的理解存在很多偏差。那么他们的含义与区别是什么呢?简单而言,PoW 和 PoS 是 2 种不同的对记账权利的分配方式。

使用javascript实现小型区块链

区块链概念狭义:区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码方式保证的不可篡改和不可伪造的分布式账本。

NodeJS实现简易区块链

很多区块链接在一起,就组成了一条链。这条链,也用class来表示。并且其中实现了很多方法:按照加密规则生成hash,插入新块和检查操作,批量插入块和检查操作以及可信度计算

区块链开发中使用的最流行的编程语言

我们目前正处于一个新兴的区块链开发行业中。区块链技术处于初期阶段,然而这种颠覆性技术已经成功地风靡全球,并且最近经历了一场与众不同的繁荣。由于许多资金充足的项目现在急于建立区块链网络并在其上部署分散的应用程序

探索区块链的原理

之前经常听别人说,挖矿、比特币、区块链之类的东西,听起来好高大上呀,后来在网上了解相关知识,但是网上大部分都是转载,没一个能讲明白的,后来不知不觉接触到了一些易懂的点

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!