本文为作者对一篇论文 Towards a design philosophy for interoperable blockchain systems 的介绍和评论。有兴趣的读者可以使用超链接查看论文。
从前因为有了网络和互联网络,使得精心管理的计算机群能够相互通信。后来,人们将“i”改为大写字母“I”,将这样一种设计原则注入 Internet:要使得世界各地的设备能够进行互操作。和很多人一样,我经常思考网络和区块链间、以及互联网(the Internet)与我们叫做 ‘the Blockchain’(大写 ‘B’)间的相似性。在今天所选的论文中,Hardjono 等人对该问题进行了深入研究,总结回顾了互联网设计理念的经验,并探讨了如何创建一个支持互操作性区块链基础设施。其中一些经验(方案)已经包含在 MIT Tradecoin 项目中。
我们认为,如果区块链技术想要成为未来全球商业和价值分布式网络的基本组成部分 ,那么它的体系结构也必须满足互联网体系结构相同的基本目标。
互联网设计理念
本文的这一部分来自 SIGCOMM 1988 “The design philosophy of the DARPA Internet protocols”的摘要。DARPA (美国国防高级研究计划局)当时设想的互联网三大基本目标为:
生存性:即使单个网络或网关失联,互联网通信必须能够继续进行。
能够支持多种类型的通信服务(不同速率、时延和可靠性需求)
能够接入和整合多种不同的网络
此外,端到端原则 是确定功能职责分配的核心原则,解决了“到底是由网络来承担职责,还是由网络端点的应用程序来承担”的问题。一个经典的例子就是端到端加密,由于需要多方通信,端到端加密将责任分配到各个网络端点。
互联网是以自治系统(路由域)集合的形式组织的,通过对等协议连接起来。自治系统(Autonomous Systems, ASs)由合法实体持有并经营。全部路由器及相关设备在同一域名中具有唯一标识。域名间互操作通过网关进行(例如使用 BGP 协议)。
区块链设计理念
我们认为存续性问题与隐私和安全问题一样重要。因此,如果区块链系统和技术能够成为未来全球经济的重要基础设施,那么区块链系统间互操作性将是一个核心需求(不管在机器层面还是价值层面)。
作者们定义的可互操作的区块链体系结构具有如下特征:
由可区分的区块链系统组成,每个系统代表一个分布式数据账本
交易可以跨多个区块链系统执行
一条区块链中记录的数据,能够被另一个可能的外部交易以语义兼容的方式访问和验证
存续性是从应用程序级交易层面定义的:即使区块链网络(The Blockchain)中某些部分受损,交易依旧能够完成。
应用程序级交易可以由多个账本级交易(子交易)组成,并且可能涉及多个不同的区块链系统(例如,资产转移子交易,支付子交易以及税收子交易)。
(我们是否正在重塑 XA?)(校对注:XA 没准说的是 X/Open XA,一种分布式事务处理的规范。)
在扩展的区块链系统上确认子交易(Sub-transactions)对于用户应用来说是不透明的,就像在多个路由域上的数据包对于通信应用是不透明的一样。
在失败事件(the event of failure)中,针对存续性及区块链替代的概念提出了许多问题,例如,应用程序对单个区块链系统的功能和设计需要了解到什么程度、维护可靠性的责任应如何分配(例如,重发交易)。应该怎么处理智能合约因所在区块链系统无法被访问、因而无法调用或完成交易的情况?智能合约能够在区块链间转移么?合约当前所在的区块链信息是否应该对应用程序不透明(即,给每条区块链一个能够在整个区块链网络-The Blockchain-中有效的 “IP” 地址)?我们怎么知道何时会触发合约的链间迁移?
互联网的目标是支持具有不同需求的多种类型服务;而在区块链网络中,这一目标可被重新解释为支持具有不同共识算法、吞吐量以及延时特征的多种区块链系统。(我们可能还会增加安全性和隐私的特征)。
当涉及到需要接入多种不同区块链系统时,我们希望能够支持由不同实体操作(或发起)的跨链交易。在互联网中,最小假设(minimum assumption)是每个网络必须能够将数据报文或数据包作为最小通用单元传输。那么相应的,区块链的最小假设是什么呢?如何跨链引用数据?可以支持哪些匿名(针对用户和节点)组合?
价值(value)的概念位于区块链交易之上的一层(就像互联网将数据包的机械传输与数据包中包含的信息的价值分离开一样)。对于需要跨链转移价值(value)的应用程序族来说, InterLedger Protocol 提供了一种可能的方向。
Tradecoin
MIT Tradecoin 项目有许多目标,其中一个核心目标是开发一个可互操作的区块链系统“蓝图”(blueprint)模型,并且应用到多个使用场景中。
从本质上说,具有两种不同层次的互操作性:机械层互操作性、价值层互操作性(包括在人类世界中认为具有价值的结构)。“人类、社会、真实价值、法定货币、流通性、法律制度及条例有助于将价值(value)与区块链系统中流通的结构(例如,币,代币)相连接(绑定)……”两种层次视图遵循端到端原则,即将人类语义的价值(value)置于(外部)机械系统的网络端点。
法定信托(Legal trust)是一种将机械层的信托的根本技术与具有法律效力的债务和担保绑定在一起的合约。
法定信托(Legal trust)是连接机械层与价值层的桥梁。也就是说,技术信托与法定信托让真实世界的参与者可以量化和管理在机械层发生的交易风险,从而支持(在价值层的)商业信托。实现技术信托的技术标准化促进法律合约(也就是法律信托框架)的标准化,从而降低运营自治系统的总体业务成本。
(不仅如此,它还提供了企业在区块链上交易价值所需的信托)
Tradecoin 项目将单个区块链系统视为完全自治的,并通过网关连接它们。网关为跨域交易保证价值稳定性,可达性和交易中介。
为了支持可达性,网关需要能够解析标识符,并且提供类似 NAT 的功能,从而实现内部标识符与外部标识符间的转换。关于交易中介,在 Tradecoin 的设计中,网关似乎将扮演交易协调者(coordinators)的角色,并以独立的区块链系统当做资源管理器(resource managers)。
由于区块链 BC1 和 BC2 需要授权访问,从一侧不能看到另一侧的账本信息,每条区块链的网关必须 “保证”交易已经在各自的账本上得到确认。也就是说,网关必须发布具有法律约束力的签名断言,并对于错误报告负责(有意或无意)。签名由某一个网关发出,或者由区块链系统中所有网关集体签名发出。
为了让以上流程顺利执行,有五个“可取的特征”:
交易初始化和接收的应用程序必须能够独立验证交易已经在各自的区块链上被确认。
无论选用何种网关选择机制,网关签名必须绑定。
在任意两条区块链系统间需要有多条可靠“路径”(网关集)。
标识符必须具有全局解释机制,以便始终可以解释为正确的授权区块链系统。
网关在域名内或域名间必须是可识别的(即不能匿名)。“网关必须能够相互认证,在它们的身份、合法所有权、或它们唯一代表的 ‘home’ 区块链自治系统方面没有任何歧义。”
网关通过对等协议连接在一起:
关于区块链系统互操作性,必须指定类似于对等协议的概念:
(i) 定义两个区块链间跨域交易的所需的语义兼容性;
(ii) 确定具体所需跨域协议;
(iii) 确定所使用的委托和技术信托机制;
(iv) 定义对等服务法律协议(例如,服务等级,交易费,罚款,责任,担保)。值得注意的是,在 Tradecoin 互操作性模型中,区块链系统的网关代表了区块链的对等点(peering-points)。
在没有与区块链关联的明确定义的法律实体的情况下,上面的需求(iv)貌似是有问题的。
“互操作性迫使我们重新深度思考,在没有第三方(例如交易所)的情况下,有许可和无许可的区块链系统如何进行互操作。”
原文链接: https://blog.acolyer.org/2018/05/30/towards-a-design-philosophy-for-interoperable-blockchain-systems/
作者: adriancolyer
翻译&校对: stormpang & 阿剑
稿源:以太坊爱好者(https://ethfans.org/posts/towards-a-design-philosophy-for-interoperable-blockchain-systems)