像理解网络模型一样理解区块链
计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。 —《程序员的自我修养》
上述名言概括了计算机系统软件体系结构的设计要点,整个计算机体系结构从上到下都是按照严格的层次结构设计的。不仅是计算机系统软件整个体系是这样的,体系里面的每个组件比如操作系统本身,应用程序、软件系统甚至很多硬件结构都是按照这种层次的结构组织和设计的。
个人认为,区块链的层次结构与经典网络分层模型极为相似,在区块链里遇到的难题或许可以参考网络模型在现实中的实践方式。在探讨分层模型之前,我们需要先回顾基本的网络术语,网络由节点、节点之间的链路和管理节点间数据传输的协议组成。
网络术语
节点
节点(node)是连接到网络的物理电子设备,比如电脑、打印机、路由器等等。如果配置正确的话,节点可以在网络上进行信息的收发。节点可以彼此相邻,其中的节点 A 可以直接连接到节点 B。节点之间也可以有中间节点,例如节点 A 和节点 B 之间可以放置一个交换机或路由器。通常,路由器将网络连接到因特网,而交换机运行在网络内部,促进内网通信。
主机(host)是一种需要具有 IP 地址的节点。所有的主机都是节点,但是并不是所有的节点都是主机。
链路
链路(link)连接网络中的节点,它可以是有线的,比如以太网,也可以是无线的,比如 WiFi。链路要么是点对点的(节点 A 与节点 B 相连),要么是多点的(节点 A 与节点 B 和节点 C 相连)。我们也可以在谈论信息传输时将其描述成一对一与一对多的关系。
协议
协议(protocol)是一组相互商定的规则,允许网络中的两个节点交换数据。有线和无线链路都可以有协议。虽然任何人都可以创建协议,但是基于因特网组织(例如,因特网工程任务组(IETF,Internet Engineering Task Force))发布的标准的协议通常是最被广泛采纳的。
网络
网络(network)是一组计算机、打印机或任何其它想要共享数据的设备的通用术语。常见的网络类型包括:局域网(LAN)、家庭局域网(HAN)、校园网(CAN)、城域网(MAN)、广域网(WAN)、虚拟专用网(VPN)等。
拓扑
拓扑(topology)描述的是节点和链路如何在网络配置中组合在一起,通常用图描述。常见的网络拓扑类型包括:点对点网络(P2P)、总线型拓扑(Bus)、环形拓扑(Ring)、星形拓扑(Star)、树形拓扑(Tree)、网状拓扑(Mesh)、混合型拓扑(Hybrid)等。
TCP/IP 模型
在提到 TCP/IP 模型之前,我们先回顾 OSI 模型。OSI(Open System Interconnection)参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为 OSI 参考模型或七层模型。它是一个七层的、抽象的模型,不仅包括一系列抽象的术语或概念,也包括具体的协议。
分层是为了让每一层都专注做一件事情,并且每一层都需要使用下一层提供的功能。比如传输层需要使用网络层提供的路由和寻址功能,这样传输层才知道把数据传输到哪里去。
OSI 的七层体系结构概念清楚,理论也很完整,但是它比较复杂而且不实用,而且有些功能在多个层中重复出现。于是,后来居上的 TCP/IP 模型反而成为了编程实践中的事实标准。我们不能将 TCP/IP 四层模型和 OSI 七层模型完全精确地匹配,不过可以描述两者的对比:
下图具体描述了网络分层中每层对应的职责与作用。
区块链模型
区块链(blockchain)是借由密码学连接并保护内容的链式数据记录 (又称区块)。每一个区块包含了前一个区块的加密散列、相应时间戳以及交易数据 (通常用默克尔树(Merkle tree)算法计算的散列值表示),这样的设计使得区块内容具有难以篡改的特性。用区块链技术所连接的分布式账本能让交易双方有效纪录交易,且可永久查验此交易。
区块链技术在原有的基础概念上已经有了很大的变化和进步,截止到目前为止公认的区块链四大核心技术分别是分布式账本,共识机制,密码学和智能合约,在区块链中它们分别起着数据存储、数据处理、数据安全和数据应用的作用。
下图展示了区块链的分层,以及每个层级中涉及的技术与术语。
对比着网络模型,我们可以理清区块链的层级结构,并了解区块链项目开发中所涉及的底层技术。
本文主要介绍了计算机网络与区块链的分层(layer)。提醒一下自己,后续需要总结的内容是计算机领域的状态(state)和分片(fragmentation)。
参阅资料
推荐阅读