论文作者:
翻译:渡鸦
「让国内外的区块链技术没有时差」。
摘要
区块链是一种新兴的在一个大的非置信参与者网络共享中分散和交易数据的技术。它支持新形式的分布式软件体系结构,在这种体系结构中,组件可以在共享状态下找到协议,而不需要信任中心集成点或任何特定的参与组件。区块链作为一个软件连接件,可以对系统的性能和质量属性(例如,安全性、隐私性、可扩展性和可持续性)做出明确的重要的体系结构考虑。基于我们在多个项目使用区块链的经验,在本文中我们提供了基本理论以支持相对于其他软件解决方案,像传统的共享数据存储,是否使用去中心化的区块链的架构决策。此外,我们将探讨使用区块链作为软件连接件,包括质量属性的设计协定的具体含义。
索引词—区块链;结构连接件;设计;协定
I.引言
区块链是一个新兴的支持新型的分布式软件体系结构的技术,在这种结构中,组件可以在共享状态下找到协议,以在一个大的非置信参与者网络共享中分散和交易数据,且不依赖于在系统内部应该被每一个组件信任的中央集成点。
区块链数据结构是一个区块的时间戳列表,它记录和汇总曾经发生在区块链网络内的交易数据。因此,区块链提供了一个不可变的数据存储,它只允许插入交易而不更新或删除任何在区块链中现有的交易以防止篡改和修正。在一个交易被包含到不可变的数据存储之前,整个网络就达成了共识。下一个不可变数据存储的新记录的作者是通过不同的机制决定的,例如,工作证明或股权证明[ 24 ]。
第一代区块链是一个公有的货币交易分类账,具有有限的支持可编程交易能力。一种典型的应用类型是加密货币[ 24 ]。加密货币是基于P2P网络和加密工具的数字货币。加密货币价格低廉且独立于任何集中权力来转移虚拟货币或发行新的货币单位。新的货币单位由加密货币的用户通过挖矿发行。虚拟货币可以不通过可信授权,在对等用户之间传输以在现实世界中购买商品和服务。比特币是第一个而且是最被广泛使用的加密货币。
第二代区块链是一种普遍的具有记录计算结果的公有分类账的可编程基础结构。智能合约[ 20 ]被引入,作为自治程序在区块链网络中运行,并且可以表达诱因,条件和业务逻辑以支持复杂的可编程交易。智能交易比简单的货币交易更灵活。
基于区块链的系统的设计尚未被进行系统的研究,并且对在软件架构中引入区块链的影响不大了解。在本文中,我们讨论了在多个项目中运用区块链获得的经验,并且我们通过使用现成的可获得的区块链技术建立了操作原型。本文所包含的原型是,1)一个分散的数据共享交易市场,2)一个参与组织安全协商和存储敏感数据值的平台,它代表了一个安全数据交换和协商的场景。
基于这方面的经验,从结构的角度来看,根据软件连接件[ 16 ]的分类,我们建议把区块链作为一种新型的软件接口,它应该被视为一个可能的分散的替代现有集中式的共享存储数据。这种观点帮助我们对应用程序的质量属性作出明确的重要考虑。我们发现使用区块链作为软件连接器可以提高信息的透明度和可追溯性。但是,挖矿机制增加了通信延迟,这可能导致较差的用户体验。同样,可以存储在区块链的数据量是非常有限的,因此重要的是决定哪些数据(或元数据)应存放在链上或链下。
本文在第二部分引入了区块链的背景信息,接着在第三部分从结构的角度讨论了区块链,第四部分把区块链与现有的软件连接件进行了对比。第五部分论述了我们使用区块链作为软件连接件的原型的详细架构。在第七部分结束本论文之前,第六部分列举了从我们的经验中吸取的经验教训。
II.区块链
A.背景
最初,区块链是支持比特币[19 ]的关键技术。区块链是在加密货币网络中由所有节点维持的公有收支总账。区块链存储所有发生在加密货币系统中的交易。后来,这个概念被概括为分布式总账,利用区块链验证和存储交易且不需要加密货币或代币[ 27 ]。
区块链网络不依赖中央信任授权,它具有控制系统的能力,就像传统的中央集权银行和支付系统。相反,信任是网络内部的节点之间交互产生的突现属性来实现。在本文中,我们使用区块链查阅在节点和区块链网络上复制的数据结构,来查阅由节点的集中P2P网络组成的基础结构。
块和交易是组成区块链的两个关键要素。从数据结构的角度看,区块链是一个有顺序的块的列表。块是集合交易的容器。每个块是可识别的,并且在每个链中连接其前一个块。
交易代表了和信息所有权之间的正式转换,这可能包括新的数据记录以及参与者之间的控制权转移。加密货币中的交易是给在账户间转移的货币值加密的数据结构。更一般的,例如在Ethereum中,交易是可识别的存储货币值,代码,和/或参数和函数调用结果的数据包。交易的整体性由交易密码技术保证。
一旦创建,交易随着事务发起方的签名被签署,这表示了授权花钱、创建合同或传递与交易相关的数据参数。如果被签署的交易正式形成,它是有效的,并包含所有需要执行的信息。
交易发送给与区块链网络连接的节点,它知道如何验证交易。无效的交易被丢弃,而有效的交易被传播到另一个三到四个其他连接的节点,这将进一步验证交易并将其发送给它们的对等方,直到交易到达网络中的每个节点为止。
这种洪水式的方法保证了有效的交易在几秒钟内到达整个网络。发送方不需要信任它们使用的节点来传播交易,只要它们使用多个节点来确保交易传播。收件人也不需要信任发送方,因为交易是被签署的,并不包含机密信息或凭据,如私钥。
当交易到达一个挖矿节点时,它被验证并包含在一个块中,该块被传播到网络。一旦整个网络达成共识,块被连接到区块链中。一旦块被记录在区块链,且由足够的后续块确认,交易就永远成为公有分类账的一部分且因为对区块链网络内的所有节点原则上有效而被接受。
B.区块链应用和平台
表一给出了在核心结构中使用区块链的区块链平台的例子。
加密数字货币
比特币[19]
https://bitcoin.org/
点币
http://peercoin.net/
彩色币
http://coloredcoins.org/
Omni
http://www.omnilayer.org/
未来币
http://nxt.org/
智能合约平台
以太坊
https://www.ethereum.org/
合约币
http://counterparty.io/
分类账簿平台
公证通
http://factom.org/
瑞波币
https://ripple.com/
Eris
https://erisindustries.com/
多重链
http://www.multichain.com/
Enigma
http://enigma.media.mit.edu/
表I:区块链应用和平台的例子
1)加密货币:加密货币使用加密术控制货币发行和确保交易。第一个加密货币,比特币,创建于2009年,仍是目前应用最广泛的加密货币[ 1 ]。比特币允许开发者对一个交易添加任意数据的40个字节,这可以被永久记录在区块链中。因此,比特币的区块链被用来登记除了货币交易以外的资产和所有权,如在Ascribe中。
一些加密货币是比特币覆盖网络,例如,多彩的硬币,这让比特币的一个子集受到污染以代表和管理真实世界的资产。其他覆盖网络完全定义了新的交易句法,如Omni和Counterparty。也有加密货币从一开始就建立了自己的区块链,如NXT。请参阅[ 18 ]、[ 3 ]和[ 27 ],对先进的现有的加密货币的更全面的调查。
2)智能合约:智能合约是第二代区块链最重要的元素,它支持了一般的可编程基础结构。智能合约在区块链网络中被部署和执行,能够被和区块链连接的组件使用来和最小信任一起达成协议并且解决常见问题。
3)比特币区块链网络上有允许末端用户建立自我执行合约的平台,例如,智能合约。智能合约在被提交后和被传播到网络之前仍然可以更新。但是,由于相应的脚本语言表现力有限,比特币区块链网络上的智能合约是非常简单的,它不支持复杂的控制流。
Ethereum,作为以区块链为基础的平台,把智能合约视为首要元素。为了书写智能合约,Ethereum从一开始已经和内置的图灵完备脚本语言建立了自己的区块链。Counterparty重新创造了Ethereum智能合约比特币平台。智能合约已被用于物联网(例如物联网)中支持可编程交易和机对机通信,例如ADEPT(自主分散P2P遥测系统)IBM项目[10]。
III.区块链连接件
A.软件连接件
软件连接件是软件交互的基本构建块[ 16 ]。连接器是组件间的交互机制。连接器包括管道、仓库和插座。例如,中间件可以被看作是使用中间件的组件之间的连接器[ 6 ]。分布式系统中的连接器是实现系统属性,如性能、可靠性、安全性等的关键元素。连接器提供交互服务,这些服务基本上独立于交互组件的功能[ 26 ]。软件连接件提供的服务可分为四类:通信、协调、转换和促进。通信服务在组件之间传输数据,而协调传输组件间的控制。转换服务调整相互作用,使没有被互相精确调整适应的组件建立交互。促进服务帮助支持和优化组件间的交互。
B.概述
图1给出了发挥软件连接件作用的区块链的概述。区块链是一个复杂的、基于网络的软件连接件,它提供了通信、协调(通过交易、智能合约和oracles验证)和促进服务[ 16 ]。Oracle验证使用外部的、独立管理的状态来促进网络中的组件协调。其他促进服务包括基于密码学的安全结算支付、挖掘、交易验证、激励机制和每个任务管理。
图1:作为连接件的区块链概述
区块链网络的每个节点有两层,即应用层和区块链层。部分应用程序就智能合约而言被实施在区块链连接件内部。区块链连接器外部部分应用程序可能主机离线数据和应用逻辑,并通过交易和区块链交互。表二显示了一些使用区块链作为连接器时开发器需要考虑的设计决策,并且总结了对质量属性相应的影响。
软件连接件的主要架构决策之一是哪一个功能被实施在连接器,哪一个被实施在组件中。就区块链而言,这一决策涉及到哪个数据和计算应该被置于链上或被保持在链下(表II应用设计决策1)。尽管区块链提供了信任较少的网络,能够验证部分计算结果和对交易结果提供协议,在区块链网络上可获得的计算能力和数据存储空间量仍然是有限的。
另一个决策设计到区块链的访问范围:公有、私有或联合/社区[4](表II应用设计决策2)。大多数加密货币被建立在公有区块链顶端,能够通过互联网访问被任何人进入和挖矿。使用公有区块链导致了更好的信息透明度和审计能力,但是牺牲了信息隐私。联合区块链跨多个组织被使用。联合区块链的共识过程由被授权的节点控制。读取区块链的权利对区块链网络的参与者来说可能是公有的,或受限制的。私有区块链的书写权限被一个组织保持。使用联合和私有区块链需要许可管理组件向网络内的参与者授权。有很多支持建立联合链和私有链的平台,例如,Multichain和Eris。
此外,以区块链为基础的系统能够维持独一无二的链来一起记录所有类型的交易或维持多重链来分离独立方或独立问题的信息,例如,使用一条链来存储交易,和使用一条分离的链来存储访问控制信息(表II应用设计决策3)。
表II:设计决策和质量属性协定
区块链设计决策1改进交易处理率机制
较大的块规模;链下交易;较小的无签名交易;可伸缩协议
区块链设计决策2
被包含在区块链中的下一个块的选择机制
工作证明,股权证明,烧毁证明,提取证明
应用设计决策1
范围:链上
支持计算结果验证,有限的计算能力和数据存储
例子:元数据(V-A),转让价值(V-B).
范围:链下
更多的计算能力和数据存储,更低的成本,额外的信任要求
例子:个人原数据(V-A),敏感信息(V-B)
应用设计决策2
公有链
信息透明度,更大规模的增长潜力,可信任性,现有的用户基础例子:V-A
私有链
更易于管理,更好的隐私性例子:联合区块链(V-B)
应用设计决策3
单链
更易于链管理和许可管理,更难的数据管理和隔离例子: V-A, V-B.
多链
信息隔离,更难的链管理和许可管理
应用设计决策4外部oracle验证
通过整个网络介绍可信的第三方例子:Arbitrator(V-A)
网络oracle验证
定期注入外部状态到区块链可能导致延迟问题。外部状态的来源也需要被信任。
应用设计决策5无需许可vs.许可区块链
协定:性能,成本,审查,可逆性,终结性,治理灵活性
许可:可读/加入网络,提交交易,挖矿,创建资产
例子: Permissioned (V-A, V-B)
未完待续……
在渡鸦后台回复论文3获取【论文英文原版】的PDF档(含论文的注脚参考资料)
本文由渡鸦翻译,请联系后台有偿转载,未经授权将追究法律责任。
本文经「原本」原创认证,作者渡鸦区块链,访问yuanben.io查询【600C9ZOP】获取授权信息
加入渡鸦(全职记者∕实习生):[email protected]