Py学习  »  区块链

当前区块链技术存在的八大问题

InfoQ • 4 年前 • 323 次点击  

作者丨Lucas Mearian

译者丨杨志昂

虽然区块链技术在创建新的金融、供应链和数字身份系统等方面具有巨大的潜力,但它常常错误地被视作解决业务问题的万能灵丹妙药。

通过多家大公司和政府机构的大量试点和概念验证都显示出了区块链技术的现实性的希望,但这些项目并不总是能成为明显能投入实际应用的商业案例,这就证明有必要采取不同的做法。有时,像关系数据库这样久经考验的可靠技术,比起基于 p2p 技术的分布式分类账更能有效地执行任务,因为 p2p 技术往往需要复杂的治理和设定一系列规则。

例如,在一个业务的整个价值链上提供具有全面可见性的区块链,这件事看上去可能非常有意义,但是当你权衡为之建立的整个上下游生态系统以及构建区块链的成本时,这一解决方案在财务上可能就并不合理了。

“谁来为它买单呢?这些直觉上的优势将如何给参与者带来实际的效益?如果技术建设成本是由各方分担的,那么效益是否在收入或者投资回报中也会进行相应分配?这些棘手的问题往往会随着从试点项目转入实际生产后变得更加麻烦,” IDC 咨询公司全球区块链战略研究主管 James Wester 说,”换句话说,即使试点项目验证了这个概念是可行的,但从实际应用的规模上看,成本和其他各方面考虑因素,会成为主要问题。”

还有一部分问题与区块链项目的融资方式有关。试点项目和概念验证(PoC)往往来自于创新或研发预算,但一旦投入正式生产,其成本就不可避免地会落到负责业务的部门或公司。而当区块链牵涉到需要合作伙伴公司在一个开放分类账上协同工作时,合作各方必须就复杂的规则以及这个项目的资金来源达成一致。

Wester 还说,“如果没有令人信服的商业案例,这些建设成本可能就欠缺吸引力了。考虑到区块链的天然的分布性,如果合作中有一方决定不参与,整个方案就会分崩离析。”

以下是企业在使用区块链时可能遇到的主要问题:

1 区块链还相对年轻,依然存在许多软件缺陷

虽然第一个分布式区块链是在 2008 年由“中本聪”(化名)提出的概念,但该技术在现实世界中的应用只有短短几年的历史。

两种最流行的区块链平台,超级分类账(Hyperledger)和以太坊(Ethereum),都还不够成熟,这可能导致区块链部署中出现无法预见的问题。Forrester Research 公司的首席分析师 Martha Bennett 说,各公司的首席信息官们(CIO)以及他们的团队应该考虑到这一点,软件中有可能会发现严重漏洞。他们甚至可能会让一个区块链项目半途而废,在遇到严重的软件故障后不得不重头开始。

例如,Ethereum 用于执行智能合约的脚本,Solidity ,目前居然还不支持使用小数点,这需要开发人员另外找一个变通方案,或者从头开始自己编写一个软件。

“这种情况我已屡见不鲜,” Bennett 说,“当我和那些正在进行区块链项目的人交谈时,尽管他们都正在从事大型的正规项目,他们也会说,使用区块链这项技术的时间越长,就越发地意识到它是多么地不成熟。”

改变的是,许多创业公司,和像 IBM 和 Oracle 这样的领先企业技术供应商,一直稳定地在为之工作,从特定编程环境复杂的底层中抽象出更多可用工具,和“可以提供适当防护的智能合约脚本语言”,Bennett 说。

Bennett 还说:“总体而言,值得指出的是,不仅工具在改进,而且现在有相当多的服务可以让企业以更容易的方式建立和运行区块链网络。”

2 很少有商业领袖完全了解区块链和相关技术

区块链经常被滥用,当成许多伴生技术、架构、用例甚至是哲学的简写。

归根结底,它是一个点对点的分布式分类账或数据库,由一组协议和一个区块链组合而成,这意味着区块链是一系列加密的数据集合,记录着随着时间的推移而发生的不可篡改的变化。虽然这样解释可能相对简单直观,但根据该技术是如何实现的,其定义可能会变得复杂费解。

作为战略研究主管,Wester 经常被要求定义区块链和属于“区块链”这个大标题下的“一系列技术”,包括标记资产、加密数字货币、加密钱包、分布式分类账、智能合约和自主身份识别,而后面所列的这些技术其实都是可以在区块链网络上运行的应用程序或架构,但它们并不是该技术与生俱来的固有部分。

Wester 说:“如今我们还处在向别人解释这项技术工作原理的阶段。此外,在不是很了解各种技术之间差异的情况下,人们也有可能对这项技术侃侃而谈,所以很多一知半解的人甚至懒得去认真学习相关术语和技术。”

3 区块链并不总是适合存储数据

区块链最大的价值之一是“一次写入多次读取”的分布式特性,它可以很容易地跨越 web 上的不同节点进行部署,但是每条记录都包含自己的 Hash 值,因此记录是不可篡改的。

在其他技术中,用户只拥有选择性的视角,要么只能查看内部系统,有些或许可以查看一些黑名单,而通过基于区块链的网络实现了分布式分类账,可以提供更丰富、更全面的交易历史记录。

然而,这并不意味着与交易相关的数据必须成为该链的一部分。

例如,如果区块链用户将图像作为其交易记录的一部分,那么数据量将会快速增长,考虑到仅用作读取的存储数据量会随着时间推移变得越来越大,网络开销也会快速增长。由于区块链的分布式特性,所有数据必须复制到链中的所有节点,Bennett 解释说。

所以对于某些交易任务,使用具有单独网络化存储的关系数据库,会比使用区块链而让开销增长到无法控制的程度要好。“我要说的经验法则是:当关系数据库可以顺利完成一项工作时,就永远不要为这项工作使用基于区块链的架构,” Bennett 说。

Bennett 还说,虽然不是所有区块链技术框架都需要跨节点对数据进行完全复制,但是所有的区块链系统都需要小心翼翼地搭建技术架构,才能把法规要求、保密性需求和潜在的延迟问题等等都纳入考虑范围。“这就决定了哪些数据会放在区块链上,而哪些不会,” 她说。

4 规模扩展性仍然是个问题(但该问题比以前减轻了)

区块链面临的主要问题之一是其规模的可扩展性,或者说,如何在不消耗越来越多 CPU 容量的情况下实现增长的能力,以及如何在近乎实时的情况下完成交易的能力,比如通过信用卡进行支付。Visa 表示,它的网络 VisaNet 每秒可处理多达 6.5 万笔交易。

由于区块链的特性,插入到区块链中的每条新记录都必须进行序列化,这意味着,较之可以并行更新数据的传统数据库,区块链的更新速度更慢。

尽管许多区块链联盟和相关的创业公司都在进行各种试验,比如,有一种每秒可以处理上万笔交易的区块链网络,还有一种甚至号称比 VisaNet 的网络容量还要大,但大多数区块链仍然受到可扩展性问题的阻碍。比特币等流行的区块链协议每秒只支持 3 到 5 笔交易,而以太坊技术每秒可以支持约 20 笔交易。

在技术框架和治理模型之间,可扩展性的程度仍然是一个问题。例如,以太坊基金会正在使用权益证明共识模型以及分片机制等技术来提高其协议的性能。

“如何构建网络架构也很重要,网络延迟可能比计算能力更具挑战性,” Bennett 说。“例如,我看过令人印象非常深刻的测试结果,但是如果它们是通过租用一个巨大的 AWS 集群来完成你的测试,那么这些测试结果对实际应用毫无意义。”

Gartner 公司负责研究的副总裁 Avivah Litan 说,如今,可扩展性更多时候是一个治理问题,而不是技术问题。

Litan 表示:“随着区块链得到许可,零信任模型的整个概念就瓦解了。” 他说:“只有数量有限的见证人操作节点并参与达成共识的过程,所以你真的需要信任那些当事人,如果他们做错了什么,你需要的是法律框架的支持。因此对我来说,这在实际中是无法扩展的。”

Bennett 认为,在区块链的环境下,经常使用的指标“每秒交易数”相对来说也是毫无意义的。她说:“首先,你如何定义‘交易’?其次,如果你无法最终敲定交易,是否能处理大量交易也就变得无关紧要了。”

5 区块链需要治理

区块链并没有从本质上消除中央集权式管理,根据明尼阿波利斯联邦储备银行(Federal Reserve Bank of Minneapolis)最近的一份报告,区块链实质上只是用一种授权或信任模式来替代了另一种。

报告指出:“参与者必须信任区块链系统的设计、技术和网络规则,而不是将信任托付给经纪代理或银行等中央集权式机构来促成交易。但区块链并没有消除对治理权威的需要,仍然需要以某种形式对规则进行建立、实施和执行,以及对意外的系统挑战和异常做出响应。虽然这样一个治理机构的成员可以是分布式的或分散化管理的,但是仍然需要一个治理的端点来处理所有的操作问题。”

Bennett 说,如何解决争端,或者在出现问题时如何达成协议,这些仍然是治理中的关键问题。

例如,如何遵守智能合约的运作方式,以及遇到有争议的合约怎么处理,区块链参与者需要为这些问题达成一致。

Bennett:“如果区块链中有软件没有编写的事情发生,就需要有一种“非链式”的方式将它编写进去,或者是一个‘终止开关’,来阻止区块链以一种你意想不到的方式运行。”

6 默认情况下,区块链会共享你可能不希望共享的信息

公共区块链,也是区块链最普遍的一种形式,它是完全开放和透明的,这意味着链上的任何人都可以看到每一笔交易。例如,特币就是这样的形式。

公共区块链还具有一个原始能力,即更强的防篡改能力,因为公共链可以增长至数千个节点,甚至是数百万个节点,整个链就像一台巨大的分布式计算机。节点越多,一次错误的执行者就越难以控制链上的大多数的计算能力,于是要么阻止新交易得到确认,要么自己创建并确认自己的条目。如果能够实现自创建自确认这一点,就会出现一些不法行为,比如双重支付比特币或其他加密数字货币。

另一方面,当你在商业环境中工作时,完全的透明通常并不是一件好事。例如,如果使用区块链技术作为股票交易平台的一部分来实现即时结算机制,那么链中的每个参与者都可以看到其他用户在做什么,这将允许一个用户与另一个用户进行实时交易。

而另一个例子是,如果一个制造商使用区块链作为其供应商的公开分类账,它将允许一个承包商查看链中的所有其他分包商的信息。

“我或许并不希望我的客户看到我所有的分包商是谁,即使你可能想要在链上实现一个特定的交易流程,” Bennett 说,“所以,你马上就会决定该如何做……你会选择对交易数据保密。”

有一些方法可以在区块链上创建信息独享权,这样的话,仅有一些用户能看到机密或敏感数据。例如,Linux 基金会旗下的区块链开源项目超级分类账(Hyperledger)就使用“通道”或子链来确保只有部分授权用户才能看到敏感信息。

7 区块链的安全性取决于最薄弱的环节

如上所述,区块链有两种类型,公共的和私有的。公共区块链允许任何人加入,比特币是公开区块链的一个很好的例子,任何想购买这种加密数字货币的人都可以加入这个链。它是公开透明的,这意味着链中的每个人都可以看到所有的交易。如果一个或多个参与者试图在系统中弄虚作假,不法行为就会被挫败,因为参与验证新交易的大多数用户会提供的正确数据。

“底线是,在一个大型的公共区块链网络中,你不必信任对等的参与者。这就是拜占庭将军问题,公众的区块链解决了这个问题,” Litan 说。

相反的,私有或带许可的区块链是集中管理的,需要人们获得加入许可,它们适合在单个组织或合作伙伴组织之间使用。只有授权用户才能加入这样的链。

公共区块链和私有区块链天然地都是安全的,因为它们是不可篡改的,例如,每条记录或块是不可更改的,并与其他所有记录或块绑定在一起。添加新块需要用户之间达成共识,这种达成共识的规模需要多大,取决于使用的具体区块链技术。对一些技术来说,需要达到 50% 共识,而对其他技术来说,这个百分比可能更高。区块链的不可篡改性和共识要求使得它们在本质上比大多数其他网络技术更安全,但这取决于技术架构和运行这些链节点的人和场所,区块链其实很容易受到攻击,这一点已经在实践一次又一次地验证了。

上述明尼阿波利斯联邦储备银行的这份报告中提及,虽然区块链提供了针对链上记录的数据完整性的安全,但该安全性仅限于区块链本身,如果没有额外的技术或系统,无法防止未经授权的访问,比如数据泄露。

例如,最近针对以太坊经典令牌交换的“51% 攻击”就表明,即使是区块链技术,也不能阻止弄虚作假。51% 的攻击指的是,如果获得加密数字货币矿池中大多数 CPU 的控制权,一个人就可以胡作非为。这种攻击通常局限于节点较少的小型区块链,因为它们更容易受到基于工作量证明(PoW)共识机制的个人篡权控制。

数据透明性,即链上的所有参与方查看交易的能力,是区块链技术颇具吸引力的一部分,因为如果意图不轨的参与者试图添加未经验证的数据,可以很快被识别出来。然而,数据的透明度也可能成为一个威胁。例如,美联储的报告指出,在金融机构的结算或清算系统中,保密性可能是安全的一个关键因素,所以系统数据的透明度会是一个安全风险。

报告指出:“如果实行数据透明化,但又需要保证保密性,则需要对链上的数据进行加密,或对数据访问进行强认证。区块链中可以加入保密性和访问控制,但这些并不是区块链技术的固有属性。区块链自身也不提供认证功能。”

换句话说,不要因为一个具体的区块链设计和实施中包含一个特定的特性,比如隐私、数据透明性或强认证的相关特性,就假定其他所有区块链也包含这个特性。

Bennett 指出,向区块链提供信息的那些系统,如智能合约,也可能成为网络攻击的载体,因为它们不是分散管理的,可能成为单点故障。

8 智能合约既不智能也并非合约

智能合约,或自动执行合约,是构建在区块链技术之上的业务自动化工具。它们是区块链技术中颇具吸引力的特性之一,因为它们能够消除管理开销。基本上,一旦合约的某些条件得到满足,关于收据信息、金钱、财产或货物的动作就会自动开始执行。

例如,保险公司可以利用智能合约,根据大规模的洪涝、飓风或干旱等灾害来发放赔款。或者,一旦货物抵达进入港口,集装箱内的物联网传感器如果确认了各种条件,比如货物的封装完好无损,一直储存在适当的温度下,等等,就可以自动签发海运提货单。

然而,Bennett 认为,所谓的智能合约既不智能,也不是法律意义上的合同。再加上区块链脚本语言还缺乏成熟度,程序员的学习曲线本来就比较陡峭,这种情形下可能会导致 bug 或漏洞。

Bennett 表示,如今智能合约实际上只是等同于用于创建自动化流程的一套规则和软件,而自动化流程在当前已不再是个问题,有很多种实现方法。

“我们甚至开始看到一些工具,可以让商人们使用时集合了智能合约其中包含的基本要素,” 她说,“然而,这仅仅是个开始,正如一些公司已经发现的,确保每个网络参与者都运行相同版本的智能合约,这件事本身就可能会成为一个挑战。”

Bennett 补充说,还有一些其他挑战,包括如何确保智能合约本身不会产生安全问题,以及确保智能合约的任何外部输入都是有效正确的。

“就像我一直说的那样,一个事物并不能仅仅因为它在区块链上就意味着它一定是真实的,” Bennett 指的是确保输入数据的准确性和来源的真实性,她说,“智能合约只能说和团队为流程自动化而制定的那些规则效果差不多,而且还取决于编程的质量。”

如何遵守合约的运作方式,怎么处理有争议的合约,针对这些问题还需要区块链的参与者达成一致。创建新的业务流程还也需要在不同用户之间就这些条件达成一致,而且在实践中,已经有一些真实的例子,因为人们不能为这些运行条件达成一致而导致区块链项目被搁置。所以,区块链不仅仅只与 IT 相关,它也与合同协议息息相关。

“就像最近有人对我说的,区块链中 80% 是商业,20% 是技术,” Benett 这么说。

此外,虽然区块链可能分散在数十个或数千个节点上,但智能合约却不是以分布式管理的。这意味着这些区块链节点无法看到智能合约是如何工作的,换句话说,作为区块链网络的一部分,这些公司组成的区块链联盟必须依赖于一个另一个实体来获取输入智能合约的信息,这个实体称为一个 oracle(数据库)。

区块链网络使用一些名为 oracle 的集中式管理软件作为代理,来查找和验证真实世界中发生的事件,然后根据预定义的条件触发一个智能合约。例如,从加利福尼亚运往丹麦的药品的温度可以通过集装箱中的物联网传感器进行监控。而传感器信息由 oracle 软件收集,然后发送给智能合约,如果在整个运输过程中温度范围满足条件,智能合约则可以通过区块链触发事件,例如签发海运提货单或对所发货物进行付款。

如果你的公司是某个区块链联盟的一部分,例如,一个供应链,它并没有任何办法知道在智能合约中具体运行的是什么。所以数据就没有可验证性。本质上而言,运行 oracle 和智能合约所在服务器的公司无论将什么样的信息提供给区块链,你都只能原单接受。

“你必须找到一个数据来源,一张表,一个 oracle 来获取这些数据。目前还没有标准的流程来验证数据的真实性。这会是错误集中产生的地方,” Gartner 公司的 Litan 这样说。

“智能合约还不成熟,” Litan 继续说,“我和参与一个区块链联盟的公司聊过,我问他们,‘你们如何知道智能合约在做什么呢?他们说他们无法知晓。如果你在现实生活中有一份合约,你难道不想知道它在做什么吗?”

作者介绍:Lucas Mearian,《计算机世界》的资深记者。

原文链接:

https://www.computerworld.com/article/3236480/top-8-problems-with-blockchain.html?nsdr=true&page=2


更多关于国内外一流技术团队的实践案例请持续关注 QCon 全球软件开发大会,上海站内容正在筹备中,涵盖大数据、架构、移动、微服务、工程效率、运维、前端等经典方向及 Cloud Native、中台、图数据库、下一代计算等新兴方向。点击「阅读原文」或识别二维码来 QCon 上海 2019 了解行业专家分享有实战价值的高频交易系统落地实例,从技术层面解析高频交易系统的设计、架构和实现。大会 8 折报名中,立减 1760 元,有任何问题欢迎联系票务小姐姐 Ring:17310043226(微信同号)


点个在看少个 bug 👇

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/36197
 
323 次点击