区块链分层协议体系结构详解
扫描二维码
随时随地手机看文章
本开始阅读本文时,我们先了解什么是抽象性:在计算机科学中,抽象化(英语:Abstraction)是将数据与程序,以它的语义来呈现出它的外观,但是隐藏起它的实现细节。抽象化是用来减少程序的复杂度,使得程序员可以专注在处理少数重要的部份。一个电脑系统可以分区成几个抽象层(AbstracTIon layer),使得程序员可以将它们分开处理。
据称Lightning和Plasma等第2层技术“在块链的可扩展性,互操作性和功能性方面取得了巨大进步”。 但是,大多数第2层项目主要关注可扩展性,偶尔也会提到互操作性。 为什么? 这不仅仅是时间或发展阶段的问题。 这实际上应该是这样,第2层用于伸缩性而第3层用于互操作性。
扩展和互操作性是互补的,但是通过不同的协议层可以最好地解决这些问题。 为了说明这一点,我将介绍分层协议体系结构的目的以及第1,2和3层的角色。我还将解释分离可扩展性和互操作性如何改进两者的解决方案,其设计与互联网本身惊人地类似。
分层协议的目的
总是有可能把多个独立的问题凝聚成一个复杂的相互依赖的解决方案。
RFC 1925:十二个网络真相
互联网是分层协议架构的最佳范例,这种设计是互联网增长和实用性的关键因素。 不同的功能部分被分成彼此构建的单独协议,而不是在一个单片系统中捆绑在一起。
例如,因特网协议(IP)建立在不同的底层网络技术或“链路层”协议上,例如以太网和WiFi。 由于IP被设计为单独的层,因此它不依赖于任何特定的网络技术,并且能够以相同的方式在许多不同类型的有线或无线连接上工作。
分层协议体系结构提供了许多重要的好处:
互操作性-IP通过抽象出不同的网络技术来工作。只要链路可以发送数据,IP就可以通过它进行通信。这意味着无论我们使用的是什么类型的底层网络,我们都可以无缝连接。
可升级性-抽象使不同的层可以单独进化。虽然互联网是在20世纪70年代建立的,但事实上,IP将不同的网络技术抽象出来,使我们能够从拨号网络升级到光纤和4G链路。更高级别的协议不需要更改,但随着新的网络技术的发展,我们的连接速度不断加快。
多用途的通用基础设施-IP也独立于任何特定用例,这使得相同的基础设施可用于从Web到电子邮件和IP语音(VoIP)的应用。如果互联网是专门为文件传输而构建的,那么我们可能需要为每个不同的用例提供完整的独立网络。相反,我们有一个可用于多种类型通信的互联网。
分层是设计互联网或价值互联网等系统的重要工具,但决定哪些特征适合哪些层是最难的部分。太多的层使系统过于复杂,但过多的捆绑会妨碍互操作性和可升级性。
价值互联网的协议栈
Interledger协议栈与Internet协议套件具有直接的并行性,这主要是因为我们发现将功能划分为类似的层有助于解决各个级别的问题。在这里,我将简要地介绍每个层,以解释它们的角色,并展示将第3层集中在互操作性上的好处。
第1层:分类帐
区块链和其他类型的分类帐就像支撑互联网的物理电缆。数字通信最终通过有线和无线链路实现,这些链路连接各个设备并在它们之间传输数据。同样,分类账是价值互联网的基础,因为它们使两个接受同一资产的人或在同一系统中持有账户进行交易。
像物理电缆一样,分类帐和区块链需要在它们之上构建额外的协议,以方便数据或金钱的传输。对于区块链,主要问题是在保持分散的同时,扩展事务吞吐量和降低延迟。
分类帐注定会成为性能瓶颈,因为它们在逻辑上是集中的。无论分类账是以集中还是分散的方式维护,它都需要一个单一的、一致的、共享的账户和余额状态,以确保资金不能“双花”。更新大量共享状态总是相对昂贵且缓慢。瓶颈将是分布式账本中的共识速度,或者是集中式分类账中单个机器的性能。提高分类帐的可伸缩性是非常有用的,但是使用第2层协议把常见和重复的事务从主分类帐中移出将增加吞吐量并更大程度地降低延迟。
第2层:局域网
用于扩展区块链的第2层解决方案类似于Internet堆栈的链路层协议,如以太网和WiFi。该层创建双边链接或局域网(LAN)*,允许直接连接的各方或设备在底层网络上高效通信。
区块链的第2层技术旨在通过使用一种程序化托管方式在底层分类账上实现快速,廉价,高吞吐量的交易。此类别包括支付渠道和广义状态渠道等双边技术,以及包括Lightning和Raiden,侧链和Plasma等支付渠道网络在内的多边解决方案。通过允许成对或较小的账户持有者组进行交易而不需要每次都与主分类账交互,这些中的每一个都能够实现更快,更便宜的交易。
程序性托管
第2层解决方案的核心机制是程序化托管的一种形式。资产首先被放入主分类账的持有账户,脚本或智能合约中。然后,两个或更多方可以通过更新其本地状态来执行许多快速交易以改变托管资产的分配。如果当事人想要关闭他们的分类账关系,他们会将最终状态呈现给主分类账,主分类账检查其有效性并相应地分配托管资产。
重要的是,底层分类帐提供的功能直接决定了第2层系统可以包含的功能类型,因为分类帐在它们支持的程序化托管类型方面有所不同。
第2层解决方案必然与某些分类账相关联,因为它们利用底层第1层系统中的特定功能。
这就是为什么Lightning是用比特币脚本定义的,Raiden使用特定的以太坊智能合约,Plasma实现同样会使用明确指定的智能合约。
Lightning可以使用比特币(如Litecoin)的特定(SegWit支持),而raiden和plasma可以与使用以太坊虚拟机(evm)的其他区块链一起工作。但是,如果二层技术试图支持具有非常不同功能集的分类账(例如,不使用Segwit的Lightning或仅使用比特币脚本实现的Plasma),则每种二层技术都会更糟。不过,这完全没问题!第2层扩展解决方案可以并且应该利用基础分类账提供的每一种功能。
第1层和第2层之间的紧密连接正是为什么我们需要一个单独的层来实现互操作性。真正的互操作性完全取决于抽象,并且需要最小化协议使用的功能集。互操作层期望从下面的层中获得的功能越少,它可以连接的异构网络就越多。由于第2层解决方案可以并且应该利用特定的第1层功能,因此我们需要一个单独的互操作层,使用尽可能少的分类帐特定功能。
第3层:互操作性
第3层的目的是抽象出不同第1层和第2层技术之间的差异,以连接非常不同类型的网络。这是Internet协议(IP)在Internet上的作用,也是Interedger协议(ILP)在Internet中的作用。
互联网栈的核心协议IP,在网络间路由数据包,同时抽象出底层电信技术之间的差异。互联网之所以成功,正是因为它使用了如此干净的抽象概念,能够连接所有东西,从电话线(通过拨号)、蜂窝和卫星网络,到专用光纤电缆-甚至信鸽。
IP需要底层网络的唯一功能是发送数据的能力。它不依赖于任何附加功能,甚至不依赖于速度或可靠性。由于其简单的抽象,IP能够创建一个通用的网络网络,如今连接了超过一半的人口。
第2层网络上的最小抽象
在价值互联网中,ILP对价值进行打包,就像IP对数据进行打包一样。它在网络上传输资金包,同时提取出资产和分类帐或第2层技术之间的差异。与IP一样,ILP的核心是网络不可知的包和地址格式。
ILP对底层的唯一要求是能够发送值。它不需要任何特殊的事务类型、功能或程序托管。更快、更便宜的交易可以改善用户体验,但即使是它们也不是严格要求的。
ILP的最小抽象实现了与所有类型的第1层和第2层网络的互操作性,包括那些设计为不可互操作的网络。迄今为止,它已被用于连接比特币闪电网络、双边以太坊支付渠道和xrp支付渠道-三个非常不同的第2层系统。正在进行连接所有其他类型的第1层和第2层系统的工作。
第4层和第5层不是本文的重点,但您可以阅读STREAMing Money和Data Over ILP来了解STREAM,这是受QUIC启发的推荐的第4层传输协议。留意第5层的未来帖子以及基于ILP和STREAM构建的特定于应用程序的协议。
结论:分离伸缩性和互操作性
可扩展性和互操作性是互补的,但它们本质上是不同类型的问题,最好由单独的协议层来解决。Lightning和Plasma等可扩展性解决方案在充分利用其基础分类账提供的全部功能时效果最佳。相反,像Interledger这样的互操作性协议需要最少的抽象,使它们能够跨不同类型的底层网络工作。
分离链路层和互操作性层的一个微妙好处是互联网还在不断持续发展。互联网协议是为空间大小的计算机设计的,但它仍然适用于手机和物联网设备。通过减少底层网络所需的IP功能,它还允许在底层技术上进行显著的技术突破。如果IP在开发时建立在网络的特定特性或API之上,这是不可能的。
我们离第1层和第2层区块链或分类账系统的开发还差得远。通过利用第3层来消除这些差异,我们可以构建更好、更多的技术无关的用户体验,同时考虑到未来的发展,这将使价值互联网更快、更便宜、更高效。
后语*关于双边或多边第二层解决方案是否更好,有一个有趣的开放性问题。互联网堆栈也存在着惊人的相似之处,互联网或者是IPv6,应该建立在双边链接上,而不是局域网上。