8BTCCI: 15117.37 -4.12% 8BTCVI: 8297.89 -4.69% 24H成交额: ¥3899.18亿 -10.86% 总市值: ¥19795.31亿 -4.71%
巴比特专栏 | 链网设计的基要属性之一:可观察性

巴比特专栏 | 链网设计的基要属性之一:可观察性

蔡维德 发布在 区块链 70939

区块链将要带来320年(以世界第一个央行作参考)或520年(以复试记账法作参考)一次的社会和金融和大改革, 这是因为区块链将应用于社会的各层面,从最小到最大,从内到外。区块链的互联网将是一种新的互联网:这是以价值为中心的异构网, 包括区块链网络, 移动5G网, 内容/媒体网络, 智能交通网络/车联网,物联网/工业物联网,智能城市/建筑/家庭网,医疗互联网,智能电网,自动化的工厂网,云网络,等等。

因此,区块链的互联网将成为真正的下一代互联网。那么第二代的互联网的结构会是什么样的?”区块链互联网” (简称“链网”) 上层需要新的应用协议,中层需要支持区块链的新数据库和操作系统,底层则需要支持区块链的新网络系统。

要构建这个庞大的网络时,我们首先要考虑常远的设计目标和配和的设计的原则。正如我们在前文章中所讨论的,原始互联网的设计者没有长远的规划和对未来的清晰愿景,其结果是来自各方面的糟糕表现和麻烦。如今,花在修理互联网上的钱比建设新网络还要多。尽管有许多好处,端到端原则有其许多的缺点。在本系列第5篇中,我们表明了数据报架构和IP路由的性能不佳,尽力而为 best effort等于努力不足 poor effort。在第2-4篇文章中,我们说明了TCP的不良性能可以提高100-1000倍。

这篇文章提出一个新思想,就是使用控制理论来分析区块链互联网。控制理论有一个很长的历史, 在网络开始的时候,主要是在实践网络, 网络优化却是现在网络设计的重点工作。本文提到可观察性, 一个控制理论重要的概念,用这概念分析一些互联网,区块链网络的协议。



链网的基本属性


一个链网由多个区块链组成,因此,一个链网组成链的品质决定链网的的品质。为了设计一个好的链网,我们必须保证允许进入链网的链必须具有良好的品质。而每个链的品质取决于该链条基本属性:



  • 性能(Performance):吞吐量,延迟。

  • 安全和隐私性(Security and Privacy)

  • 可扩展性(Scalability)

  • 容错性 (Fault-tolerance)


以上是所有参加的链的基本链属性。但是一个链网还需要下面的基本链网属性:


  • 互通性(Interoperability):在异构网络上,每一对不同的链都需要有互通的协议。

  • 可延伸性(Extensibility):链网可以无限延伸扩大。

  • 可更改性(Modifiability):被允许的机构和节点可以随时的加入、离开,但是区块链基本架构不改变,链网的基本架构也不改变。

  • 可复制性(Duplicability):每个链可以很快的复制。如果链的复制很慢,链网需要很长的时间才能搭建起来,高可复制性可以迅速搭建和修复链网

  • 可管理性 (Manageability) :链网必须能被管理。由于管理机制的存在,链网应具有非对称结构。有些节点或链会比其他的节点或链更加重要,并拥有非对称的信息,例如监管机构、域名服务商、控制节点等。

  • 一致性 (Consistency):每一条链都必须有自己的一致性,链与链之间也要有一致性的协议。

  • 真实性 (Integrity):链网既然是一个价值网络,其每一项资产就必须具有真实性。每一条链与每一条链的共识机制及消息的来源与真实性是不一样的,因此不同的链的真实性是不一样的。 



保护链网的真实性


 
在上述链网属性中,真实性尤为重要。低真实性的链不可以输送数据到高真实性的链,而高真实性的链可以输送数据到低真实性的链,如果高真实性链收了低真实性链的数据,高真实性链的数据就会被污染 (contaminate)。此外,我们还需要下面保护真实性的六原则:
1. 区块链比数据库有更高的真实性:因为区块链有拜占庭将军协议以及加密的机制,所以胜过数据库的事物一致性协议。所以区块链的真实性胜过于数据库的真实性。2. 拜占庭链比数据库一致链有更高的真实性:一条链如果使用了拜占庭将军容错机制,其真实性就胜过另一条使用了数据库事物一致的链的真实性。

3. 参与单位的真实性赋于其链的其真实性:所以监管机构比被监管的机构有更高的真实性,比如央行比银行有更高的真实性,银行比交易所有更高的真实性。

4. 真实性和节点数目、历史有关:参与投票的节点越多,真实性会更高。过去有高真实性历史的链网,可能会持续保持其高真实性。

5. 动态追踪链的真实性、动态分类链的真实性:每个链的真实性应该做动态追踪。两条链互通时,可以查阅彼此的真实性。如果高真实性的链必须接受低真实性的数据,低真实性的数据必须经过人工或自动验证,才能够被收入高真实性链中,并且该数据可能会被归类为不真实可靠。

6. 数据分类:数据来源的真实性应该做分类,例如某个交易所的数据来源,可能比另一个交易所的数据来源真实性高,因为前者的历史真实性好。



设计最基要的三属性


 
为了确保链网和链的良好品质,是否有指导我们的设计原则?互联网的历史给了我们很好的教训。正如之前的文章中所讨论的,并非所有互联网的设计都是合理的,许多不合理设计造成了低性能和各样麻烦,这些都需要花费大量资金来改正, 直到今天仍然有一些问题尚未解决。例如,我们了解到网络内控制比端到端控制更优秀,路径路由(virtual circuit路由)比链接路由(IP路由)更优秀。
设计原则也与属性不同。良好的设计原则导致良好的属性;然而良好的设计原则也代表了良好的属性。换句话说,属性有不同的类型,有些属性比其他属性更为重要更为基要。我们认为三个最重要的设计原则是实现三个最基要的属性:可观察性,可控性,和可结构性。

可观察性
根据控制理论,可观察性是指重建系统完整状态的能力。如果一个系统是可观察的,发现系统的问题是很容易的。如果所有输入和外部变量都已知,则系统的未来变化可以完全预测。大多数ICT系统的问题在于系统是不透明的,使人难以理解系统的真正状态。

在计算机科学中,如上所述的可观察性概念并不存在;最接近的概念是有限状态机 (finite-state machine)。大多数ICT系统都应该用有限状态机来设计。 但实际上,许多系统的设计常常缺少或完全没有做有限状态机分析。结果是:因为没有做好有限状态机分析,设计出的系统来得不到卓越的性能。

在许多科技公司里,开发人员的时间压力是很大的。太多时侯开发人员没有时间做适当的设计分析,只能在系统构建后才使用有限状态机来分析。结果是系统难以调试,性能差,而工程师也不知道如何提高系统性能。这是一个严重的问题,一个明显的例子是TCP,其设计时没有考虑所有可能的网络条件,以致完全分析之后,我们发现其有限状态机有太多奇怪转换,而且系统过于复杂。如果TCP的原始设计者花足够时间做有限状态机分析,那么TCP今天会非常不同,它的有限状态机不会这么复杂,也能有更好的性能。

诚然,有限状态机分析工作量可能太大。一种简化而有效的方法是做充足状态规范 (sufficient state specification)。系统设计团队应该坐下来问一个关键问题:什么是允许工程师去预测系统未来行为的所有必要信息?合宜的充足状态规范具备以下特点:一旦充足状态已知,加上已知的外在输入和变量,系统的未来行为是可预测的。这并不意味着充足状态允许我们预测所有未来的系统行为;真正的目的是:它允许我们在输入和外部变量已知时,能预测所需的系统行为,而不是所有的系统行为。充足状态不必非常庞大,它也可以隐藏很大部份系统的内部工作状态。

系统充足状态
应用充足状态概念的一个简单例子是区块链的一致性算法。在区块链系统中,多个节点各自维护一个区块链,要保证数据在所有节点的一致性,需要保证每个节点维护的区块链是一样的。当系统中存在拜占庭故障时,节点中存在“叛徒节点”,要保证系统在这种情况下保持正常运作,且忠诚的正常节点的数据保持一致。 一种常见的方法是实用拜占庭共识算法拜。图1显示一个典型的拜占庭共识算法的时间线:

QQ图片20190306165412


图1: 实用拜占庭共识算法的时间线


一个叛徒节点会更改其收到的消息并将其发送到其他节点。检测叛徒节点的唯一方法是检查每一节点已收到的消息以及同一节点发出的转发消息。为此,实用拜占庭共识算法事实采用了一种充足状态,即每个节点都有每个其他节点在系统中的广播消息的操作的副本。

在图1中,在第一阶段(广播 broadcast block)节点A向节点B,C和D广播消息。在第二阶段 (cast vote),每个节点将投票(1或0)并将其投票发送到每个其他节点。在第三阶段 (forward vote),每个节点必须将它收到的所有投票内容发送给每个其他节点。在结束时,每个节点都知道每个其他节点所收到的每个其他节点投票内容。如此每个节点可以通过比较一个节点投票内容在每个节点是否一致。例如,节点A可以比较在节点A, C, 和D的节点B的投票内容是否一致。如果在C,A和D收到的B的投票不一致,则节点A可以确定节点B是叛徒节点。

在这种设计中,系统的充足状态包括每个节点接收的每个其他节点发送的所有投票内容。因此,拜占庭算法事实上使用了一种精心设计的充足状态,而使系统变成可观察。因此,拜占庭算法是具有可观察性的协议的一个例子。

相反的,ARP (address resolution protocol) 协议是一个没有可观察性的协议。ARP与拜占庭算法完全相反,因为它在任何地方(在交换机或集线器或节点中)都不存储充足状态。拜占庭算法是专为检测叛徒节点而设计的,而ARP的设计完全不考虑任何安全问题。因此,许多系统受到受到ARP欺骗或ARP中毒的伤害。在许多带有局域网系统的ITC项目中,ARP中毒一直是一个常见的问题,它给许多科技公司造成了延误和资金损失。

显然ARP设计师从未做过可观察性的分析。从控制理论而言,ARP的低性是能预见的。ARP问题很容易解决;只要在协议实现中添加一些状态。尽管修复很容易,但大多数公司不愿意投入资金来做这件事,因为第2层路由对他们来说并不是一个重要的痛点。

从可观察性到优良的链网
 
一旦理解了可观察性的重要性,我们可以运用可观察性来设计链网。让我们用金融区块链作为例子。对于金融交易应用,链网面临两大问题。第一是帐户的数据量可能很大,这将导致交易速度减慢。第二交易所交易的速度必须很快,但是处理大量的大数据量的帐户交易会增加延迟。如果想减少延迟,那么交易的吞吐量必须降低;如果想增加交易的吞吐量,那么延迟就会增加, 而似乎没有一个很好的权衡。

控制理论中通常将这种困境称为可控性和可观察性之间的权衡。如果我们花钱改善可观察性,那么控制变得简单;另一方面,如果系统状态的观察非常困难或异常昂贵,就应该花钱改善控制系统来实现控制目标。此外,控制理论也教导我们将控制执行器与观察(反馈)执行器分开。

根据控制理论的权衡技术,设计一个高吞吐量低延迟的金融交易链网并不难。一种方法是创建一种双链式架构,而把交易与账户分开。熊猫链网[4]就是使用双链式架构,由ABC(Account Blockchain,账户链)、TBC(Trading Blockchain,交易链)组成的。ABC链的目的是通过在存储设施中的大量帐户中存储大量数据来获得可观察性。通过双链式结构,ABC链存储帐户中的大数据量,使得TBC链能用少量数据来从事据低延迟的交易,这也使TBC获得高可控性,而ABC链获得可高观察性。

从控制理论的角度来看,ABC提供了系统充足状态,允许链网运营者能谨慎管理所有大数据量账户,并提供全面的账户服务质量。另一方面,TCP只配备必要且足够的账户信息来执行金融交易,使交易速度能达到最快。

图2显示了熊猫链网的双链式结构。

QQ图片20190306165634


图2: 熊猫链网结构图


 

从可观察性到链网的优良属性
 
现在我们来看可观察性如何帮助区块链的每个关键属性。可观察性如何提高区块链的基本属性:



  • 性能(Performance):从熊猫链网示例中,可观察性极大地提高了链网络的性能如吞吐量和延迟。

  • 安全和隐私性(Security and Privacy):通过关键数据的可观察性,系统可以轻松检测各样入侵和攻击。

  • 可扩展性(Scalability): 通过关键数据的可观察性,随着系统规模的增加,系统操作员或工程师可以轻松发现瓶颈和性能不佳。反之,不可观察的系统将很难调试和改进。

  • 容错性 (Fault-tolerance) : 从拜占庭共识算法来看,一个不可观察的系统会受到拜占庭错误的严重伤害。


可观察性如何提高链网的基本属性:



  • 互通性(Interoperability):每个链的可观察性允许在两个不同链之间轻松转换信息,从而使互通性变得容易。事实上,信息和功能的不匹配是多个链相互操作的主要障碍。

  • 可延伸性(Extensibility):可观察性允许系统操作员或工程师清晰地看到系统状态,因此当系统扩展时,将导致更少的错误。 可观察性还显示了每个链的限制,并允许系统操作员通过修改某些系统组件来扩展链。

  • 可更改性(Modifiability):由於可观察性,当系统被修改时,系统操作员可以清楚地观察到状态的变化,并且能预测系统可能的后续行为。此外,通过可观察性,工程师更容易实验(通过模拟或小规模测试)新的修改而不会实际损害真实的系统。

  • 可复制性(Duplicability):可观察系统具有干净的设计,允许以逻辑和组件方式完成任何复制。通过这种方式,能以部分和逻辑的方式完成复制,从而避免复制中不必要的重复和错误。

  • 可管理性 (Manageability) :由於操作员或工程师可清楚地看到系统状态,可观察系统易于管理。在多级别管理系统中,较高级别节点比低级别节点有更高的可见性。在可观察的系统中,这种管理功能容易实现。如果没有可观察性,就很难根据级别和职责来管理每个节点的状态。

  • 一致性 (Consistency):可观察性是实现一致性的关键。在没有可观察性的情况下,系统操作员或工程师很难检测到数据或资产的不一致性。可观察性还允许简单的计协议来保持链网的一致性。

  • 真实性 (Integrity):可观察性将有助于实现本文中阐述的保护真实性的六原则。保持数据和资产的真实性,系统操作员或工程师需要知道链数据和系统状态。可观察性允许系统操作员实时检测资产和数据,查看是否有高真实性数据被低真实性数据污染。可观察性允许系统操作员动态地监控每个资产,每个节点,以及每个链的真实性状态。事实上,资产或数据块的真实性是区块链中的最重要的系统状态。因此,链网系统必须对每个重要对象 (如资产,节点,链) 的真实性进行动态监控。


 

参考文献

[1]. 蔡维德 & Kevin Tsai,“TCP 端到端设计又旧又多毛病:区块链互联网系列 (1)”

https://mp.weixin.qq.com/s/AyDG063nq7FKy9MEKZOxfg

[2]. 蔡维德 & Kevin Tsai,“区块链互联网需要新协议:区块链互联网系列 (2)”

https://mp.weixin.qq.com/s/vvA4u7LiIMfkzCTI04VSzw

[3]. 蔡维德 & Kevin Tsai,“链网会是复杂网络,掌控时间将是关键技术:区块链互联网系列 (4)”

https://mp.weixin.qq.com/s/slRinMxNnhdW5BTRBLhaFg

[4]. 蔡维德. "区块链互联网“

https://mp.weixin.qq.com/s/7cTVxvGVPZeax0zuUAhWmg

作者:蔡维德北航数字社会与区块链实验室,天德科技 ,国家大数据(贵州)综合试验区区块链互联网实验室, 天民(青岛)国际沙盒研究院, 赛迪(青岛)区块链研究院

评论
登录 账号发表你的看法,还没有账号?立即免费 注册