基于区块链技术的基础设施
区块链脱胎于BTC系统,从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”、“公开透明”、“集体维护”等特征,基于这些特征,区块链奠定了坚实的“信任”基础,创造了可靠的“合作”机制。
Web3的基础设施基于区块链技术,Web3.0 Foundation将Web3的技术栈定义为由L0~L4组成的5层架构系统,如下图所示:
Web3技术栈
L0提供数据分发和互动能力,主要包括:
- 点对点互联网覆盖协议(Peer-to-peer (p2p)):一个允许节点以分散的方式进行通信的网络套件。
- 平台中立的计算描述语言(Platform-neutral computation description language):一种在不同物理平台(架构、操作系统等)上执行相同程序的方式。例如EVM(以太坊)、UTXOs(BTC)和Wasm。
L1提供分发和互动数据的能力,主要包括:
- 零/低信任度互动协议:描述不同节点如何相互作用并信任来自每个节点的计算和信息的协议。大多数加密货币,如BTC和ZCash,都符合零/低信任交互协议的定义,它描述了节点参与协议所需遵循的规则。
- 数据分配协议:描述数据如何在去中心化系统的各个节点之间分配和交流的协议。例如IPFS、Swarm和BigchainDB。
- 瞬时数据公共/子信息传递:描述不打算永久存储的数据(如状态更新)如何被传达以及如何让节点意识到其存在的协议。例如Whisper和Matrix。
L2增强了L1的能力,进行提升扩展性、加密消息传递、分布式计算等功能。
- 状态通道(State channels):区块链通过让节点在链外相互通信,通过在主链上“打开”和“关闭”通道,只写初始和最终结果,而不是在链上记录每个状态转换,从而提高可扩展性的一种方式。例如BTC的Lightning Network和以太坊的Raiden Network。
- Plasma协议:Plasma是通过创建区块链的“树”来提高可扩展性的另一种方式,主链是树的根,而“子”区块链尽可能少地与更高级别的链互动。例如Loom的PlasmaChain和OmigeGO Plasma。
- 加密存储(Encrypted storage):使用密码学对数据进行数学加密和解密,包括静态(即存储在特定的计算机上)和动态(即从一台计算机传输到另一台)。例如静态指的是存储加密,动态指的是传输加密(HTTPS就是一种传输加密)
- 重型计算(Heavy computation):可以理解为如果需要进行大量的计算,例如在数组中推送大量的对象提供一种方法,允许计算分散在许多计算机中,并证明计算是正确进行的。例子包括以太坊的 Golem 和TrueBit。
- 分布式秘密管理(Distributed secret management):允许信息只被授权方访问,包括复杂的场景,如“解密此信息需要所有六个签名者使用他们的密钥”或“7个签名者中的任何5个必须同意”等等。
- 预言机(Oracles):将链外数据(如天气结果或股票价格)注入区块链的一种方式,一般供智能合约使用。
L3是人类可读语言和库的层。在这一层,开发人员可以适当抽象并进行程序开发,包括可扩展协议的API和语言:
- 各种开发应用程序的语言,如:Solidity和Vyper(Ethereum),Plutus(Cardano)和Rust(Substrate)。
- 使编程更加容易的各种框架,如:ethers.js、web3.js和oo7.js。
L4是技术栈顶层,参与者主要是普通用户。用户可以在这一层和单个或多个区块链应用等进行互动,而不需要知道如何编程和实现细节,案例有Status、MetaMask、MyCrypto等。
去中心化应用(DApp)程序架构
Web3去除了管理中心,无需数据库集中存储应用程序的状态,也不需要集中的网络服务器来存放后端的逻辑,Web3的应用程序(DApp)架构与Web2时代的App有很大不同,Web3可以利用区块链在互联网上的去中心化状态机上构建应用程序。
状态机是由状态寄存器和组合逻辑电路构成的,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。区块链可以理解为一种被实例化为创世状态的状态机,并且有非常严格的规则(即共识)来定义该状态如何转换。
没有存在的实体控制这个去中心化的状态机,状态机是由网络中的每个人共同维护的。与Web2后端被控制的方式不同,在Web3生态中,我们可以编写智能合约,定义应用程序的逻辑,将应用程序部署到去中心化的状态机上,这意味着,每个想构建区块链应用的人,都可以在共享状态机上部署代码。以下是该架构示意图: