写点什么

我们的梦想和恐慌:区块链技术到底有什么用?!

2020 年 1 月 13 日

我们的梦想和恐慌:区块链技术到底有什么用?!

2008 年,使用化名中本聪(Satoshi Nakamoto)的作者写了一篇白皮书,描述了一种新的去中心化加密货币——比特币[8]。过去人们开发加密货币的尝试都会依赖预先建立的可信实体来维持系统的正常运行,而比特币则设计为运行在开放的互联网上,没有负责人,同时还能保持高度安全性。尽管构成比特币的要素并不是什么新鲜事物,但将这些属性组合到同一个系统中是很有意义的贡献[9],并且比特币成为了第一种受到广泛关注的加密货币。


比特币取得成功之后,很快人们就深入分析了这种技术,以了解其工作原理和新特性。它最具创新性的成分被命名为区块链技术,这是一种去中心化机制,供参与者就数据和计算达成共识。


技术新闻往往会带来振奋人心的印象,告诉人们区块链技术减少甚至完全消除了对信任的需求。这种创新用例扩展了想象力的边界。但有的时候也会有反对的声音。[12]


事实是,信任是一种复杂的事物。区块链技术确实消除了对信任的一些特定和狭义的依赖,但它还需要一些新的假设才行;对于具体的用例而言,这些假设可能更好或更糟。因此,谈到区块链技术的效率、安全性和成本等指标时,很难用一句给出准确的总结。


显然,这项技术需要更深入细致的讨论才行。业务主管、政府领导人、投资者和研究人员经常会问以下三个问题:1. 区块链技术到底是什么?2. 它提供哪些功能?3. 什么样的应用程序才是好的应用?


本文的目的是彻底回答这些问题,从现实出发,剥离炒作信息,提供区块链技术的整体概述,并给出一组关键词,用来讨论未来的区块链技术细节。


技术属性


区块链技术概念中的第一大类是技术属性,其分为三大关键组别:共享的治理和运营,可验证的状态以及抵御数据丢失的能力。图 1 显示了它们之间的关系。



共享的治理和运营


区块链技术解决了以下场景面临的问题:一些实体的集合(例如一些个人或公司)希望参与一个公共系统,但彼此之间或对任何第三方都没有信任关系,无法由单一实体运营整个系统。如果参与者就系统的细节(治理)取得共识,然后部署联网设备(称为"矿工")来运行系统,每个实体就都能确认系统是正确运营的。如果少数矿工受到攻击(即便只产生了细微的变化),则未受攻击的矿工可以拒绝受攻击的矿工所采取的恶意措施,并保持系统的正确运行。这样一来,区块链技术提供了分散的信任关系,系统信任的是矿工组成的集体。人们往往把这种关系称为"无信任",这是不对的——信任仍然存在,但已经分散了。


共享运营是基于"共识协议"的,矿工使用这种协议来约定系统将执行哪些运营操作(称为"交易")。交易这种操作有时就像它的字面意思那样很像是一种金融交易,它将价值单位从一个帐户转移到另一个帐户;但更广义的层面上,它是要求针对交易给定的一组输入来执行某个函数(其本身可能存储在区块链系统中)。共享治理的形式取决于有效交易的特性(例如,交易由发送方进行数字签名)以及系统的运行方式(例如,交易中操作的大小和数量限制在一定范围之内)。共享运营意味着每个矿工都将验证交易,并使用矿工之间的共识来确保仅将有效交易的正确输出写入区块链系统(人们可以提出无效或执行不正确的交易,但矿工会拒绝它们)。


我们可以基于"选择谁来充当矿工"的规则对区块链系统进行分类:


  • 开放治理(即无许可的区块链系统)。只要愿意,谁都可以参与共识协议,无论其身份如何。为了防止女巫攻击(攻击者创建多个身份以影响共识协议的结果),开放治理系统依赖的共识协议要求矿工证明自己拥有和/或花费了一些昂贵的有限资源。工作量证明(证明计算资源的所有权)和所有权证明(抵押区块链系统上拥有的数字资产)是两种常见的方法。[2][5]

  • 联盟治理(即许可的区块链系统)。参与共识协议的对象仅限于在系统初始化时定义的白名单上批准的矿工。如果此设置永远不变,则系统称为"静态联盟"。另一种形态叫做"敏捷联盟",其中矿工的组成会根据系统规则(例如随机选择)或通过现有矿工的共识而随时间变化。由于联盟中的每个矿工都映射到一个已知身份上,因此可以使用传统的拜占庭容错协议(来自分布式系统)。这就避免了类似工作证明那样对抗女巫攻击的协议所浪费的资源支出。[2][5]


每种治理类型都需要奖励正确的参与者行为。第一种激励是"内在"的,也就是说矿工之所以会忠实地维护系统,是因为他们使用该系统获得了价值。其次,区块链系统可以为矿工提供直接利益奖励他们的忠实执行工作(例如铸造货币并将其交给矿工),这就是"链上激励"措施。最后还存在"链下激励"措施,这是不受区块链系统管理的激励措施,例如合同义务或个人声誉等。重要的是,链下激励措施仅适用于财团治理,因为它们必须要了解矿工的身份。


可验证状态


实体之所以会采用区块链技术,是因为它们希望信任能根植于系统中(也就是说系统的当前状态准确反映了共识协议过去允许执行的交易)。为了实现这种信任,矿工将所有交易写入经过密码验证的仅附加账本中[14],提供完整的系统溯源历史,并允许矿工(或外部人士)审核系统的当前状态和过去的操作。


在包括比特币在内的许多系统中,这种分类账俗称“区块链”(我们避免对分类账使用该术语,以免和宏观层面的区块链技术术语混淆)。在分类帐中,所有交易都是严格排序的,并且在达成共识之后(只要共识继续存在),这种排序就不会更改,也不会删除交易。因此,从第一个条目(称为"创世块")开始的所有矿工将以相同的顺序处理所有交易,最终整个系统达到同一个当前状态。


抵御数据丢失


如果分类帐存储在单个位置,则所有各方都可以检测到数据的删除或修改,但数据丢失时不能保证数据可恢复。借助区块链技术,账本的内容可在所有矿工之间复制,以解决这一单点故障问题。当确实需要恢复数据时(例如单个矿工的分类账已损坏或新的矿工加入时),可以验证复制的数据以确保其正确表示系统状态。


一些区块链系统试图分割数据,并指派矿工只针对系统的一个子集处理治理和运营工作,从而限制任一给定矿工需要复制的数据量。这称为"分片",数据的一个分段称为一个分片。分片可以大大减少矿工需要存储的数据量,同时还可以提高共识协议的性能,这种协议通常根据矿工的数量进行扩展。分片也增加了审计整个系统时的复杂性。此外,分片减少了负责任何给定交易的矿工的数量,这样也减少了对手要欺骗最终客户(误导他们关于一次交易是否存在的认知)所需的矿工数量。


能力


能力定义了可以在系统设计中使用区块链技术实现的高级功能。上一节描述了区块链技术的三大核心功能:(1)共享的治理和运营;(2)可验证的状态;(3)抵御数据丢失的能力。在具体的编程工作中,我们确定了另外 11 种能力。(在图 2 中,这些能力用颜色编码:紫色代表能力;蓝色代表技术属性;绿色代表技术原语。箭头指向的对象依赖箭头出发点所在的对象。)



来源与可审核性


区块链系统提供了共识流程批准的所有交易的完整历史记录(即完整系统的来源)。矿工可以使用这些信息来审核系统,并确保其始终遵循适当的规则。此外,非矿工可以使用这些信息来验证系统是否得到了正确的治理和运营。


如果使用交易存储关于数字或现实世界资源的信息,则必须将资源"装订"到链上标识符。区块链系统的来源信息也可以用来提供这些资源的审核信息。这可用于跟踪链下物理资产(例如用于供应链管理)、链下数字资产(例如受版权保护的数字媒体)或链上数字资产(例如加密货币或数据文件)。


访问控制和匿名


存储在区块链系统中的数据可能会存在一些限制,这样用户可以将它们用作交易的输入,或将其作为交易的一部分进行修改。例如,仅当一项金融资产的所有者批准其使用时,这项金融资产才能成为一项交易的有效输入。提供此功能的一种方法是将访问控制列表(ACL)存储在分类帐中,并让适当的用户向矿工证明自己的身份(例如使用 Kerberos 或 OAuth 2.0),作为交易验证过程的一部分。


更常见的是,区块链系统中的访问控制以密码方式实现:数据在创建时与一个公钥相关联,并且只有能够证明自己拥有对应私钥知识的用户(例如,通过生成一个使用附加到数据的公钥进行验证的签名)能被授权使用或修改该数据,将其作为交易一部分。可以将数据与新的公钥相关联来扩展或转让数据的所有权。


基于密钥的数据所有权(与基于 ACL 的相反)具有另一个优点:它允许匿名所有权和匿名数据使用。尽管如此,在系统设计中仍需要仔细注意以使用适当的加密技术(例如,零知识证明、混合网络或安全的多方计算),以避免将现实世界中的个人链接到他们的密钥和动作上。这个问题尚待解决。


自动执行(智能合约)


在一个通用区块链系统中,可以使用存储有一组函数代码与合约初始状态的一个交易来部署一个智能合约或去中心化应用程序(DApp)。然后就可以在后续交易中调用这些函数了。这些函数本身由矿工执行,并通过共识协议验证输出。任何实体都可以执行任何函数,但是如果调用函数的条件不是设计人员所期望的,则这一函数可能遇到程序失败。可用于指定函数的脚本语言的计算能力因系统而异,并且存在许多精细的规则,可确保每个矿工确定而及时地执行函数。比特币以其局限性很大的脚本语言而闻名,这种语言几乎只能用来实现金融交易;而以太坊则追求相当冗长的代码,用来实现通用计算。


数据可发现性


如果允许用户读取存储在区块链系统中的任何记录,则用户就可以搜索他们感兴趣的记录。这种能力无非就是提供了一个只读数据湖,但还是有众多文献在讨论这一事宜。


挑战与局限


我们的分析揭示了在开发使用区块链技术的系统时,需要考虑的几大挑战。


可扩展性和性能


去中心化的治理和运营会产生三种形式的开销:(1)需要在状态更新之前运行共识协议;(2)需要存储完整的系统来源,以及(3)每个矿工都需要存储整个分类帐。此外,当今大多数开放治理式区块链系统都是基于工作证明的,这带来了更多挑战。用户必须购买硬件并消耗电力才能参与共识机制,而这在现实世界中可能意味着高额的成本。例如据估计,截至 2018 年 4 月,仅比特币矿工所消耗的能源就相当于近 550 万美国家庭的用电量。[4]


链上正确性


所有可执行代码都存在错误,智能合约也不例外。区块链分类账的不可变性会阻止状态更改的回滚(即使状态更改显然是恶意的),进而加剧了这一挑战。对此不采取行动可能会造成高昂的代价(例如 DAO 攻击[13]),但撤消交易也可能会造成巨大损失。如果矿工决定回滚总账以清除一项错误的交易,则用户可能会失去对整个区块链系统的信心。回滚系统必须经过精心设计,否则会有被进一步利用的风险。[1]或者,如果矿工无法就如何处理错误交易达成共识,则可能导致"分叉":也就是创建两个相互竞争的区块链系统。


链下装订


许多区块链系统使用数字标识符,也叫"代币"(token)来将链下资产表示在链上,进而管理它们。这些应用程序的主要挑战是确保链上状态与其所代表的链下状态之间的一致性。处理数字资产时,可以通过代码维护一致性;例如,智能合约可以跟踪数字媒体许可证的所有权转让过程。对于实物资产来说,必须引入现实世界中的流程来确保一致性。这些流程显然是明显的故障点,因为它们依赖于"受信任方的正确执行"(这恰恰是很多区块链系统想要消除的事物)。终端用户也必须受到信任,因为他们可以剥离代币,并在保留资产的同时出售代币,从而使代币附加到一项无效资产上(例如奢侈品市场中的假货)。


当区块链系统必须跟踪现实世界的事件和信息(例如体育比分和 Web 请求)时,也会遇到类似的挑战。尽管此类信息可以由"链下权威"来源提供,但这些受信任实体是难以审核的。


安全性


由于其去中心化的性质,区块链系统可能很容易受到多种安全威胁的攻击。大多数(甚至经常只需少数)矿工的协同攻击就可以重新排序、删除和更改分类账上的交易。此外,区块链系统容易遭受传统的网络攻击,例如拒绝服务或分区攻击。此类攻击旨在减少参与的矿工数量或破坏矿工的网络,以阻止他们达成共识、降低攻击门槛或创建不一致的状态。


隐私和匿名


为了实现验证,区块链分类账中的数据是公开的(至少对所有矿工而言),这意味着敏感数据天然就是非私有的。可以使用一个参考监视器来提供机密性,它基于分类账中存储的访问控制列表来限制非矿工的访问权限,但这会引入一个受信任的实体(参考监视器)。或者可以使用高级加密技术来加密数据,这种技术允许矿工验证加密交易的正确性(例如零知识证明、安全的多方计算和功能加密)[7],但加密数据限制了可审核性和共享治理的能力。


尝试构建匿名区块链系统时必须格外小心。虽然许多现有的区块链系统提供了一种"假名"的概念,其中用户通过其密码密钥,而不是其真实世界的名称来提供标识,但这不能提供真正的匿名性,因为攻击会将同一假名的交易与外部的其他数据关联起来,从而有效地打破区块链系统的匿名性。[6]


易用性


对用户友好的开发工具的可用性根据区块链平台的成熟度不同而存在很大差异。以太坊等一些项目拥有成熟的工具,而其他项目则几乎没有相应的支持。许多区块链平台都是面向专家用户的,缺乏专注使用体验的工具,让非专家用户很难使用。相关的一项挑战是,某些区块链系统要求用户来存储、管理和保护加密密钥。众所周知,这种要求对大多数用户而言是一个重大障碍。[10]


合法性与法规


区块链系统所声称的某些好处并不能归功于其底层技术,而是通过规避监管和监督来实现的,这些监管规则会拖慢现有系统(相关的例子有国际支付,或向投资者出售虚拟资产来筹集资金)。随着监管政策的完善,合规性成了优先考虑的要素。区块链技术本身不受直接监管;公司会根据其使用这种技术的具体方式而受到监管。讨论最多的法规领域是税收、经审计的财务报表、交易报告(了解你的客户/反洗钱/反恐融资)、证券法、银行业和保管业。监管出手的极端情况是禁止加密货币或区块链资产。在撰写本文时,禁止比特币的最大国家是巴基斯坦,禁止广泛使用加密货币的最大国家是中国。


用例


行业和政府可以在需要共享治理、可验证状态和/或数据丢失恢复弹性的许多用例中应用区块链技术。


财务用例


电子货币和付款


众所周知,区块链技术可用于构建加密货币。比特币就是一个可行的例子。区块链技术使电子交易具有弹性,即使在涉及大量资金时也是如此。比特币具有明显的缺点,包括低可扩展性、高能耗以及程度有限的隐私保护。使用财团治理的支付系统可以解决前两个关键挑战。


资产交易


金融市场允许资产交换。这种行为往往涉及许多中介机构,例如交易所、经纪人和交易商、托存人和保管人以及清算和结算实体。基于区块链的资产要么具有内在价值,或者拥有对链下资产(物质或数字资产)的债权,所以可以在参与者之间直接交易,并由可以提供保管,且需要较少金融市场基础设施的智能合约来管理。两大主要挑战分别是:(1)装订代表链下事物的代币(例如公司的股权或债务工具);(2)政府监管和合规性。


市场和拍卖


资产交易的核心组成部分是市场本身,也就是买卖双方相互寻找、交换资产并向观察员提供价格信息的集市。拍卖是设定公平价格的一种常见机制;这包括双面拍卖,例如金融交易常用的订单簿。去中心化市场的主要挑战是,交易必须按照共识协议进行广播,因此无法保密,从而会破坏隐私性,导致扒头交易。


保险与期货


区块链系统可以安排视未来时间或事件而定的交易。例如,在将来的某个时间以固定价格购买资产、为火灾支付保险金或针对贷款违约行为采取行动。关键的挑战包括:(1)确定可信赖的权威来报告相关的链下事件,例如火灾、汇率等(或将合约限制为链上事件);(2)锁定足够多的抵押品以解决所有可能发生的情况,或者由对手方承诺履行其义务,但存在对手方不愿履行义务的"对手风险"——系统设计需要在这两种情景中取得平衡。


处罚,补救和制裁


法律合同预计未来可能会发生违规行为,并规定了一系列处罚或补救措施。借助区块链技术,可以对可能的结果进行编程(以后可以通过传统诉讼推翻编程内容)。与保险和期货部分一样,权威和交易对手风险是这里面临的主要挑战。


数据存储和共享用例


资产追踪


区块链技术可用于跟踪在全球范围内分布,且有价值的、具有出处的材料资产。其中包括艺术品和钻石等独立物品、食品和奢侈品等经认证的物品、车队等分散物品、,以及长途运输过程中需要多次易手的包裹。这种资产还包括复杂设备的各个组件,这些组件来自不同的公司。对于航空业等受严格管制的行业以及军事/情报应用场景来说,重要的是要确定用过的每个零件的源头以及维修历史(即其来源)。区块链技术提供了一个通用的环境,在该环境中,没有任何一家公司拥有突出的能力和对跟踪这些信息的数据库的控制权。这里存在的关键挑战是数据的可靠装订、机密性,以及将所有必要的公司加入同一区块链系统的要求。


身份和密钥管理


身份以及有关这些身份属性的密码证明(例如,超过 18 岁、具有驾驶执照、拥有特定的密码密钥)可以在区块链系统上维护。这是资产跟踪的特例,其中“资产”是一个人。这里存在的关键挑战与上一部分是相同的。


防篡改记录存储


区块链系统的仅附加分类帐可用于存储文档,包括这些文档的更改历史记录。该用例最适合存储有价值的记录(例如证书和政府许可证),它们数据量较小且可公开获得(因为所有矿工都将复制一份)。如果需要存储大型和/或机密文档,则区块链系统可能会存储文档的安全指针(如绑定/隐藏承诺),而文档本身存储在其他系统中。


其他用例


表决


电子投票是一个具有挑战性的问题,它通常被认为可以从区块链技术的属性中受益。共享治理可用来确保多个利益方(政府、非政府组织和国际监督机构等)可以共同努力,以确保选举合法。可审核性可用来向选民提供选举是公正的证据。最后,区块链技术的弹性可以用来抵御针对投票系统的网络攻击。但是,在区块链系统上进行投票有许多挑战需要解决:(1)区块链系统不提供对匿名投票的原生支持;(2)可以通过提交电子投票的设备更改投票(如果是无记名投票,则这种更改无法被发现);(3)可以将加密密钥出售给贿选者;(4)需要为丢失的密钥建立密钥恢复机制。


赌博与游戏


赌博在比特币和以太坊上已经非常流行。玩家可以审核合约代码以确保执行的公正性,并且合约可以使用加密货币来处理财务(包括将资金托管到第三方,以防止输家在付款前退出)。该这一用例最适合不需要随机性、私有状态或链下事件知识的赌博游戏。


应用


不管怎样,区块链技术并不是万能灵药,但是当系统需求超过其应用开销时,它会是一种有用的工具。一个不错的应用起点是提出以下问题:


  1. 系统是否需要共享治理?

  2. 系统是否需要共享运营?


如果对这两个问题的答案都是否定的,那么就不需要负担区块链技术的开销了。如果两个答案都是肯定的,那这种技术就很合适。如果只有一个答案是肯定的(仅需要共享的治理或共享的运营,而不是两者都需要),则应考虑另外两个问题:


  1. 是否有必要审核系统的来源?

  2. 是否有必要防止恶意数据删除?


如果可审核性和数据复制至关重要,则应考虑使用区块链技术。这是因为有意义的共享治理和运营需要矿工来审核其他人的操作,并能够恢复恶意矿工可能试图删除的数据。


尽管区块链技术并不能像其支持者宣传的那样解决所有问题,但它仍然是一种有意义的技术,将继续在行业中使用,值得进一步研究和试验。


参考文献


  1. https://arxiv.org/abs/1807.01793

  2. https://arxiv.org/pdf/1711.03936.pdf

  3. Corbin, J., Strauss, A. 1990. Grounded theory research: Procedures, canons and evaluative criteria. Zeitschrift f?r Soziologie 19(6), 418?427.

  4. https://digiconomist.net/bitcoin-energy-consumption

  5. https://eprint.iacr.org/2018/754

  6. https://www.petsymposium.org/2018/files/papers/issue4/popets-2018-0038.pdf

  7. https://ieeexplore.ieee.org/document/7546538

  8. https://bitcoin.org/bitcoin.pdf

  9. https://queue.acm.org/detail.cfm?id=3136559

  10. https://dl.acm.org/citation.cfm?id=3313761

  11. https://arxiv.org/abs/1909.12454

  12. https://www.wired.com/story/theres-no-good-reason-to-trust-blockchain-technology/

  13. https://www.coindesk.com/understanding-dao-hack-journalists

  14. https://link.springer.com/chapter/10.1007/978-3-540-39658-1_2

  15. [https://link.springer.com/article/10.1057/ejis.2011.51


原文链接


https://queue.acm.org/detail.cfm?id=3376896


2020 年 1 月 13 日 17:475727

评论

发布
暂无评论
发现更多内容

架构师训练营——第13周学习总结

jiangnanage

达达双云双活实践

达达集团运维团队

openresty 微服务治理 多云架构 双活容灾 原生容器

Docker Compose 搭建 Redis Cluster 集群环境

哈喽沃德先生

redis Docker Docker-compose redis集群 redis cluster

从零开始搭建完整的电影全栈系统(三)——restfulApi的编写

刘强西

RESTful 电影api

ZIP 也能边下载边解压?优酷流式解压技术揭秘

阿里文娱技术团队

ZIP

大数据思考

朱月俊

windows10 CUDA环境搭建

yuanhang

tensorfl

MySQL中修改数据表存储引擎的三种方法

Matrix Chan

MySQL 运维 数据表引擎

【在云端 003】 星星之火,可以燎原——云时代的IoT

Bora.Don

云计算 IoT AIOT

synchronized实现原理及代码证明各种锁

Darren

源码 synchronized 轻量级锁 偏向锁 Monitor

PHP Db类强制读主库(master)的设计

Dnnn

php MySQL

公有云常用数据分析指标

张磊

java安全编码指南之:Number操作

程序那些事

java安全编码 java安全 安全编码规范

云栖大会边缘计算分论坛倒计时7天,这2点值得期待

巨侠说

边缘计算

架构师训练营-week13-学习总结

晓-Michelle

极客大学架构师训练营

第13周数据分析

陆不得

架构师训练营——第13周作业

jiangnanage

Google 搜索引擎之PageRank 算法

莫莫大人

极客大学架构师训练营

PageRank

GalaxyCreater

手握阿里P8亲传Redis和MongoDB利器,怕什么面试官

小Q

Java 数据库 redis mongodb 面试

Spring 5 中文解析核心篇-集成测试之TestContext(中)

青年IT男

Spring5 JUnit

Week13 总结

张磊

关于第四次财富狂潮的思考,区块链如猛虎出笼?

CECBC区块链专委会

比特币 区块链 数字货币

大数据应用场景

朱月俊

week13 小结

Geek_196d0f

开始编译第一个typescript实例

程序员学院

Java typescript 前端

第13周学习总结

刘卓

PHP配置管理-yaconf

Dnnn

php

week13 作业

Geek_196d0f

oeasy 教您玩转linux 之 010209 装酷利器 hollywood

o

第13周作业

刘卓

我们的梦想和恐慌:区块链技术到底有什么用?!-InfoQ