比特币随想 - 分层架构

之前的一篇文章讲述了我对分层信任模型的理解。很自然地我们会思考:分层信任模型会产生怎么样的软件架构?

分层架构

分层信任自然会导致分层架构。我们之前提到越是民主信任,其去中心化程度越高、抗审查能力越高;但是,相应的其效率也会随着共识程度需要而降低。这是一个不能两全的问题,必然是会获得一个,而牺牲另一个。

分层设计是软件工程,乃至整个工程学中重要的设计方法。分成设计的核心是:每一层专注一个功能,为上一层提供一些接口;越接近底层,功能应该越稳定;越接近上层,功能应该越丰富。

这种设计有如下优势:

  • 在确保接口稳定的基础上,每一层可以相对独立的优化,不需要意识到它的上层;
  • 底层如果获得性能提升,其优势会被所有他以上的层享受;
  • 底层如果开发新的功能,其上层就会多一个组合因素,新功能会产生更加多的新功能;
  • 越往上的层,越可以快速迭代,而不用担心影响其下层;
  • 分层后,每一层的开发和设计得到了简化,因为开发人员只需要关注本层实现,学习、开发成本都会降低;
  • 分层后,每一层的出现问题的几率都会降低;
  • 分层后,每一层可以由不同的开发人员进行开发。

分层设计的弊端在于:

  • 接口设计比较困难,因为如果出现接口变化,特别是底层变化,所有上层都会受到影响;
  • 如果相对底层的实现出现问题,会影响它的所有上层(依赖层)。

在计算机领域,分层设计无处不在。我举几个例子:

计算机网络

学过计算机的同学肯定知道,目前我们的互联网运行在分层的网络协议之上,其中一个常见的模型如下:

  • 物理层,这一层只负责比特的传输,这一层对于比特承载的信息一无所知;
  • 链路层,利用物理层,并增加 MAC 地址的概念,并可以进行纠错、限流等操作;
  • 网络层,增加了 IP 地址的概念,可以进行路径、服务选择等高级操作,著名的 IP 协议就是这一层的协议;
  • 传输层,则利用网络层提供的功能,进行一些端对端的通讯,并且可以确保连接的稳定和数据的完整,TCP 协议就是这一层的代表协议之一;
  • 在网上的三层统称为高层,这里就是我们平时经常会看的应用程序协议啦,比如邮件收发协议、FTP协议、HTTP 等等。

这里我们看到了明显的分层结构,以及分层机构的特征:

  • 上层协议功能非常丰富,且变化多端,比如 HTTP、FTP 等等,我们还可以构建聊天程序、网购网站等等;而底层对这些应用程序一无所知,比如网络层的设计者完全不需要思考 HTTP 的设计,他们只需要设计好网络层的协议即可;
  • 如果在网络层使用了光纤代替电缆,网速会大大提升,那么所有高层应用都会因此受益。

试想,如果计算机网络协议的设计不是分层的,而是一锅烩:比特流和聊天软件放在一起设计?会怎么样?

  • 软件 Bug 会成倍增加
  • 软件无法和其他软件组合,形成新的软件
  • 软件更新困难
  • 。。。

总之,软件工程的噩梦无外汇:一锅烩。

计算机软件和操作系统

我们每天使用的操作系统和应用程序也是典型的分层设计。

  • 最底层,是我们的硬件,CPU和内存。硬件工程师会开发一种叫做指令集的接口给操作系统调用;
  • 操作系统,就是调度计算机资源的层,这一层开放若干成为系统调用的接口;
  • 应用层,就是我们平时用的软件,比如 word、魔兽世界等等,这些软件几乎意识不到运行在英特尔或者 AMD 的CPU上,他们看到的只是操作系统提供的系统调用。

同样,试想如果没有分层设计,如果我们想要开发一款游戏,但是需要考虑不同个的 CPU 型号、重新实现系统调用等等,这将是一场软件开发的噩梦。

Layer 1

区块链生态的构建显然应该跟从软件开发的分层设计原则:

  • 一层做一件事情,并做好;
  • 越往底层越稳定,变化越慢;越往上层越活跃,变化越快;
  • 底层的特性增加会让上层组合出现无限可能性

其实这与我们之前讨论的信任分层契合,比特币主网络就是区块链生态的 1 层

比特币层有哪些特征呢?比特币层无疑是最民主的信任网络。比特币协议构成的网络是目前最稳定(非图灵完备智能合约)、最安全(最高哈希率)、去中心化程度最高(超过 15000 个全节点)的网络层。这些特征刚好符合分层模型中的底层模型特征:

  • 做好一件事:去中心化、安全
    • 更慢的出块速度,减少临时分叉
    • 更小的区块链大小,确保可以以最低的成本运行全节点
    • 工作量证明,确保共识难以被修改
  • 特性稳定,变化谨慎
    • 提供了上层接口:Script 语言和智能合约
    • Script 的关键字选择非常谨慎,去除了循环、乘法等容易产生危险的指令
    • 比特币社区几乎不会提出需要硬分叉的特性
  • 比特币层虽然稳定,但是每个几年会释放新的特性:
    • 2017 年,隔离见证通过软分叉部署,使得闪电网络成为可能
    • 2021 年,Taproot 升级通过软分叉部署,打开了更加丰富智能合约的大门,同时也让闪电网络的吞吐大大提高

我们已经看到,比特币协议的更新周期很长,但是每一次更新都是通过软分叉完成的,而且经过长时间的测试确保不会出现问题。同时,每一次升级要么打开新的二级网络的大门,要么让已有的二级网络受益。

Layer 2

比特币网络的二级、三级网络,以及侧链非常丰富。比如闪电网络(二级)、Liquid 网络(侧链)等实现,RGB 网络协议等等。

其实,比特币社区的发展是互联网发展的一个分支,互联网用了 30 年实现了加密、隐私通讯,但是价值传输仍然不存在加密和隐私,直到 2009 年比特币网络的出现,一个互联网原生的价值传输网络才真正的出现,而后面几年的发展仍然遵循了互联网发展的模式:分层。闪电网络发展了小额支付,而其他应用则实现了互联网原生的金融。

由于分层设计,比特币社区的二级网络可以快速的迭代和实验,每一层的更新升级都会为上一层服务;如果上层应用程序出现致命的问题,并不会影响比特币网络,也不会影响其他同级别的应用。

而且,每一个应用程序可以关注自己的小领域,而不需要担心基础出现问题。这样,很多不同的团体可以加入社区进行试验开发。

结束

作为一个软件工程师,我认为比特币社区的开发模式走在正确的道路。我不知道未来比特币社区会构建出什么样的应用?DeFi 是真实存在的吗?会成功吗?答案并不重要,重要的是,比特币网络会为未来的无限可能提供可靠的基础。