为什么IBM的区块链不是真正的区块链?
原文作者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”输出。而这大量的代码可能催生数百万美元的错误。
广州VI设计公司https://www.houdianzi.com
IBM还没准备好迎接未来
越来越多的区块链生态系统最老练的观察者意识到私有和公共区块链之间将不会存在真空,而是希望携手合作:私有链将希望向公共区块链上的消费者提供令牌,而公众区块链的去中心化应用程序将希望将敏感信息存储在私有区块链上。不幸的是,IBM Fabric(以及R3 Corda)的用户可能会因为架构的完全不兼容而发现自己与公共区块链“隔绝”,而且由于其智能合约语言无法在公共和私有环境中无缝执行。
随着IBM通过宣布合作伙伴关系在许多企业区块链新闻周期中占据主导地位,重要的是要深入研究该技术的实际作用。IBM的“区块链”技术在很多方面都缺乏,包括安全性,性能和可靠性,这为希望使用区块链实现有意义的业务改进的组织提供了“劣等的”解决方案。为了真正实现区块链的价值,成熟的客户将寻求IBM的挑战者,他们提供更好的工具、更好的区块链技术以及如何利用技术的更好的愿景。