掌握Web3基础知识 - 从节点到网络

本文涵盖了从 Web3 节点基础设施到 layer1 区块链网络如何工作,所有你需要的知识点。

Web3是庞大而复杂的,结合了各种组件、技术和概念。无论你是Web3、区块链、加密货币的新手还是老手,通过这个系列的文章,关于支持Web3的各种组件,你将有更高级的认识,你将理解每个组件的目的和好处。具体说,本文的目的是:

  1. 概述 Web3 基本组件
  2. 评估各种组件的作用

我们将 Web3 定义为互联网的下一个迭代,它结合了今天的互联网中好的体验和可验证的数字所有权、开放的系统、透明性、不可篡改等特性。Web3、区块链和加密货币是三个密切相关的主题,但在这里被视为三个独立的术语:

  • 区块链:一种技术创新,能够实现可验证的数字所有权、透明和不可篡改。
  • Crypto:加密货币的简称,描述了区块链网络上加密安全的代币
  • Web3:包括区块链、加密货币,以及建立在它们之上的所有生态系统和创新。

要了解 Web3 ,我们必须首先了解底层的区块链和加密技术。 Web3 仍然是一个相对年轻的概念,比特币在 2009 年才推出,但随着新的技术创新以疯狂的速度进入市场,这个行业正在迅速发展。

我希望这个系列能帮助你了解 Web3,并能帮助你确定一个感兴趣的领域,读完后你可以自己研究。每个主题都有几十个更深入的资料链接,可以帮助你找到有用的内容。

这个系列分为三部分。这个部分涵盖了,从 Web3 节点基础设施到 layer1 区块链网络如何工作,所有你需要的知识点。下一篇文章将介绍 layer2、互操作性和基于这篇文章所述的庞大的 dApp 生态系统。最后,最后一篇将涵盖链下环境和链上/链下通信。

Web3基础设施概述

我们将 Web3 基础设施分为多个部分,反映了链上生态系统、支持链上生态系统的链下环境以及将去中心化网络相互连接并让这些网络与链下环境连接的中间件。

  • 链上生态系统

    • 节点层:挖矿/验证节点、节点客户端软件、挖矿/质押池
    • 网络层:
    • Layer 1 网络:单片式网络、模块化网络、共识(PoW、PoS)、共享账本技术、虚拟机与 EVM 兼容、智能合约和 ERC 代币标准
    • Layer 2 网络:闪电网络、optimistic roll-up、零知识 rollup
    • 去中心化应用程序(dApp)层
  • 链下环境:分析、审计与安全、钱包、中心化交易所(CEX)、开发者工具(框架、IDE)、去中心化云(存储、计算、索引)

  • 互操作性层(“中间件”):

    • 网络互操作性:桥、原子互换
    • 链上/链下通信工具:区块链 API,预言机

img Web3 生态系统图

链上生态系统

链上生态系统主要分三层:

  • 去中心化的应用程序(dApp)层
  • 网络层
  • 节点层

这三层结合在一起,实现了 Web3 最著名的智能合约驱动的生态系统和应用程序。我们从节点层看链上的生态系统,然后一直到 dApp 层。

节点层

img 高亮显示节点层的Web3生态系统图

这一层也经常被称为硬件层,因为在这一层,硬件和所有与操作硬件有关的都被设置为参与特定区块链网络。

节点客户端

节点是一个服务器,它运行一个被称为客户端的特定网络软件,它允许节点参与网络的区块创建过程,允许访问整个区块链的历史数据,并允许执行RPC命令(更多内容参见 Layer1 部分)。RPC是指远程程序调用,它允许节点调用和执行某些特定命令。

在写这篇文章时,按市值计算,最大的两个区块链网络是比特币以太坊。虽然参与不同的网络有不同的要求,但它们都需要一个符合客户硬件规格的服务器(任何计算机),一个互联网连接,以及客户端软件。对于比特币,最流行的客户端软件是Bitcoin Core,而对于以太坊,最流行的客户端是GETH(Go 以太坊)

img Bitcoin Core clientGETH client系统要求

客户端还编纂了区块链的规则,并确保任何被验证的新区块都遵守同样的规则。这很重要,因为如果一个节点验证了一个其他节点不接受的区块,网络就会分叉:一组节点遵循一套规则,而其余节点遵循另一套规则。虽然他们可能共享相同的历史,但在不同的验证规则被引入的那一刻,一个新的链被创建并只被接受新规则的节点所接受。

img 一个区块链和一个分叉链共享相同的区块历史

虽然以上是最流行的客户端,但它们并不是参与区块链网络的唯一的客户端。只要其他客户端使用相同的验证规则,他们就可以验证区块并为区块链作出贡献。

更多关于区块链的工作原理,请跳到Layer1 网络部分

节点基础设施供应商

普通用户通常被鼓励运行自己的节点,以支持公共网络的去中心化。当更多的用户运行自己的节点时,个人积累大多数运行节点并攻击网络的机会就会减少。用户被鼓励通过区块奖励和交易费用来运行他们自己的节点,网络将这些费用分配给节点运营商。

尽管有这些激励措施,用户不愿意自己建立节点的原因有很多:复杂的技术设置,购买必要硬件的前期资金有限,或者只是暂时需要节点。这就是节点基础设施供应商的作用。这些供应商负责节点的设置和操作,为客户提供端到端的服务。一些专门从事节点基础设施的大型供应商包括BlockdaemonAtlas

这些节点基础设施供应商的一个经常被忽视的目的是为新的区块链项目建立节点,这些项目还没有建立一个强大的、去中心化的节点网络,可以利用节点基础设施供应商来启动一个全球分布的网络,省去了在每个国家建立自己的基础设施的麻烦。

矿池和质押供应商

节点基础设施供应商为客户建立节点,而矿池和质押供应商则运营自己的节点,但允许用户在其节点下汇集资源。这增加了节点从网络中获得区块奖励和交易费收入的可能性。对于想把自己的闲置硬件投入使用的用户来说,这意味着他们可以加入一个池子,而不需要任何复杂的技术设置,并开始用他们现有的资源赚取收入。

不同共识机制的网络的节点操作有一些细微差别。基本上,使用工作量证明的网络汇集算力资源,而权益证明的网络汇集网络代币。对于工作量证明网络来说,矿池大大降低了进入的技术门槛,而对于权益证明网络来说,质押供应商则大大降低了进入的财务门槛(所需的最低质押)。更多细节将在共识部分介绍。

一些最大的矿池包括Foundry USAF2POOL,而一些最大的质押供应商包括LidoRocketpool

总结 - 节点层

Web3 的节点层由数以千计的全球分布的节点组成,其中每个属于特定网络的节点都运行该网络所需的客户端软件。只要客户端软件的验证规则与网络上的其他节点相同,该节点就可以正常运行,而不会造成区块链的分叉。

虽然任何人都可以在公共去中心化区块链网络上运行自己的节点,但节点基础设施供应商专门负责设置和运营运行节点和启动网络所需的硬件。

最后,矿池和质押供应商的作用是降低挖矿和质押业务的进入门槛。这使得用户可以参与挖矿和质押活动,赚取网络奖励,而不必满足全部网络要求。

网络层

img 高亮显示网络层的Web3生态系统图

区块链网络由上述的节点基础设施支撑。网络层由各部分组成,包括各种各样的技术,其基础是是Layer1 网络、Layer2 网络和在这些网络之间进行通信的互操作层。

Layer1 网络

比特币、以太坊和Solana在撰写本文时可能是最著名的 Layer1 网络。Layer1 网络指的是 Web3 生态系统中结算交易的主要网络。Layer2 网络是作为 Layer1 网络的更深层存在的,交易可以被发送到 Layer2 网络上(在我的下一篇文章中会有更多介绍)。虽然在架构上有很大的不同,但它们都依赖于一组类似的架构基元。

  • 它们都有一个共享账本,跟踪网络上的交易
  • 他们都利用某种机制来达成共识,认为哪些交易和区块被认为是有效的
  • 它们都有一种方法来计算发送到网络的命令(以太坊、Solana 和其他 EVM 兼容链的虚拟机,以及比特币的 Bitcoin Script)。

在下面的章节中,我们将分别研究这三个要素,并剖析我们如何从交易到区块链。

共享账本

所有去中心化的区块链网络都有一个共享账本。事实上,区块链就是共享账本。让我们退一步来说。账本是一个企业经济活动的记录,用来追踪金钱或资产所有权的转移。术语“共享账本”意味着账本不是由单个实体持有和管理,而是由许多实体持有和管理。

在去中心化的区块链网络中,区块链(网络上所有活动的分类账)被保存在网络上的所有节点上。如果活动账本只由一个中心化的机构管理和存储,我们会遇到以下挑战。

如果账本存储在全球成百上千个节点上,我们就会得到一个很难被篡改或破坏的系统,无论是有意的还是无意的。如果一个节点倒下了,用户还可以链接其他许多节点,继续与账本交互。

img 中心化和非中心化系统中的节点故障的影响

然而,这个系统确实带来了其他挑战:网络上的节点如何就什么是正确或有效的分类账条目达成一致?这就是共识算法的作用。

共识

在区块链网络中,共识一词指的是网络上的节点之间就哪些账本条目(交易和区块)是有效的并被节点接受的一般协议。

在学术界,这个问题被称为拜占庭将军问题。这个问题描述了这样一种情况:系统参与者必须就一个避免灾难性失败的策略达成一致,但是系统中的某些参与者是不可靠的。

1664327148760 拜占庭将军的问题 img 拜占庭将军的问题

在这个假想的场景中,有三个参与者,他们必须协调他们在拜占庭战争中的下一步行动,以避免被敌人攻破。三个参与者中的有一个是恶意的,并向其余各方转发了不一致的信息。系统中诚实(非恶意)的参与者该如何知道相信谁?或者换个说法:系统中的所有参与者如何才能就接受哪条信息达成共识?

这个问题非常重要,因为随着更多的参与者进入系统,(错误)通信的复杂性会成倍增长。

1664328768258 拜占庭将军问题随着参与者的增加其复杂度也指数级增加img 拜占庭将军问题随着参与者的增加而变得指数级的复杂

全球第一个成功解决这一挑战的系统是比特币及其工作量证明算法。

工作量证明(PoW)

比特币的工作量证明算法(也被称为 PoW )解决了拜占庭将军问题,它要求任何信息必须经过某种验证才能被节点接受。任何没有经过验证的信息都视为无效信息,并被节点拒绝。

1664346348387 流程图说明比特币的工作证明共识算法 img 流程图说明比特币的工作证明共识算法

验证过程也需要计算资源,这使得伪造验证变得异常困难。这也是 “工作量证明”一词的由来:“向我证明你已经做了必要的工作让我接受你的信息”。

让我们从理论到实践,深入交易、区块和 PoW 机制。别担心--我们会让它易于理解。

区块结构

比特币区块是储存交易的地方,是精心管控的信息单位,一旦完成加密拼图,就会在整个网络上广播。

比特币的一个区块由两个主要部分组成。

  • 区块头
  • 交易列表

交易列表,作用就跟它的名字一样:它是节点收到的交易列表,并包含在区块中。在比特币网络中,交易是比特币网络上的比特币转移(注意:小写b的比特币(bitcoin)指的是比特币资产,而大写B的比特币(Bitcoin)指的是比特币网络)。比特币网络是一个共享的公共账本,跟踪比特币资产的流动;因此,比特币网络上的交易就是地址之间的比特币转移。

比特币使用未使用的交易产出,也被称为UTXO进行交易。交易和UTXO将在UTXO模型与账户模型部分进一步介绍。

区块头是事情变得有趣的地方。虽然交易的数量和每笔交易的转账金额因区块而异,但区块头的元素对每笔交易都是一样的。

img 比特币区块的解剖结构

区块头包括许多元素,每个元素都对系统至关重要,我们将进一步详细介绍以下内容:

  • 前一个区块头的哈希值:前一个区块的所有元素都被哈希
  • 难度目标:确定前面补 0 的数量,从而确定挖矿的难度
  • Nonce:一个任意数字(nonce是“nonsense”的缩写)。
  • Merkle 根:该区块内所有交易的哈希输出
从区块到区块链

在我们继续之前,我们需要简要介绍一下哈希。哈希是将一串字符转换为另一个通常是固定长度的值的过程。当一个哈希算法是确定的,它意味着相同的输入,每次的输出都是相同的。然而,如果原始字符串的一个字符发生变化,哈希输出就会完全改变,以至于无法推断出与原始字符串的关系。请看下面的 Bitcoin 与 bitcoin SHA256 哈希算法输出的比较:

img SHA256哈希算法 、输出和字节长度

在比特币中,一旦一个区块被打包,其区块头就会被哈希,并作为下一个区块的输入。因为每个区块头的哈希值被包含在下一个区块中,这样便创建了一个由区块构成的链条:这就是区块链。

img 用前一个区块头的哈希值链起来的区块

任何区块的任何变化都会破坏链,因为已经包含在下一个区块中的哈希输出会与新的哈希输出不同。因此,这样的变化会被网络上的节点所拒绝。

img 由于调整交易而导致的断链

Merkle Root

Merkle树是一种数据结构,在这种结构中,数据结构的元素被哈希并递归地重新哈希,直到只剩下一个元素。这个剩下的元素就是 Merkle Root。

img 默克尔树和默克尔根

默克尔树有一个有趣的数学特征,即在数学上可以证明一个元素是默克尔树的一部分,只需要默克尔根和该需要证明的元素。

在比特币中,存储在区块头的 Merkle 根是该区块中所有交易的递归哈希输出。这意味着,如果任何交易被调整,Merkle 根也将改变,这也将改变整个区块头的哈希输出。这将再次导致区块的无效化。

工作量证明中的 "工作量"

现在我们知道了什么是哈希,区块是如何结构化的,区块是如何被链起来形成区块链的,我们终于可以更深入地了解工作量证明的实际工作原理。回到拜占庭将军问题;上面提到的验证信息实际上是区块链中的一个区块。

为了使一个区块得到验证,需要找到一个符合特定标准的哈希值。还记得仅仅一位的变化就会极大地改变哈希值的输出吗?这正是比特币的PoW算法寻找目标哈希值的方法:Nonce是一个随机数字,改变它可以改变区块头的哈希值输出。如果哈希值输出不符合目标哈希值,nonce 会再次改变。这个过程不断重复,直到区块头的哈希值满足目标条件。一旦目标条件得到满足,区块头就算是得到了验证,区块会被广播给网络上的其他节点,让它们把新区块追加到它们的区块链副本中。

img POW区块寻找算法的图解

目标条件,或预期哈希值,是由它有多少个前缀 0 来定义的。如果生成的哈希值有足够的前缀 0 ,即已经完成了寻找符合目标条件的哈希值的工作量,那么网络上的节点就会认为该区块有效并接受它:该区块被认为 "已开采"。

为了更好地理解这个过程,请浏览Github上的这个哈希算法模拟器。输入字符 'bitcoin',并在末尾添加数字,从 0 开始,以 1 递增,直到找到一个可以得出以 0 开头的哈希值的字符串(例如,bitcoin0,bitcoin1,等等)。你会注意到,找到前缀为0,即哈希值的第一个字符是零,只需要将数字增加到3('bitcoin3')。现在试着找前缀为两个 0 的。剧透:第一个得出前缀为两个 0 哈希值的字符串是 'bitcoin230'。

img 工作量证明算法:寻找前缀 0

还有更多的规则需要节点遵守,比如最长的链总是有效的链(防止整个区块链被覆盖),已经被开采的区块必须有一个在特定网络时间阈值内的时间戳(这样最新的区块就不会被覆盖),还有围绕如何确定网络难度(目标哈希值的前缀 0 数量)的复杂机制。有兴趣的读者可以浏览Bitcoin.orgBitcoin Wiki了解更多细节。

范式转变

上述机制,在历史上第一次允许交易被独立确认和验证,而不需要第三方见证和授权。与其将交易提交给面临中心化挑战的银行,不如将其发送到一个独立的节点网络,这些节点可以在没有干预的情况下自主地处理交易。这种技术范式的转变和对账本的重新想象是今天 Web3 生态系统赖以建立的基本要素。

此外,由于加入这些网络的唯一要求是可以运行节点软件的计算设备和互联网连接,任何人都可以作为独立节点加入网络,增强了网络的去中心化。

批评

虽然像比特币这样的 PoW 网络有很多节点(根据bitnodes.io,截至2022年9月15日,有近15000个节点),但有批评说,由于网络上的高度竞争,单个节点的进入门槛太高。一个节点拥有的哈希能力(即计算资源)越多,该节点就越有可能首先解决哈希难题,因为它能以比网络上其他节点更快的速度进行更多的计算。一个低哈希能力的单一节点进入比特币网络,即使付出了能源成本,也几乎没有机会成为第一个成功开采新区块。

能源消耗也是一个备受争议的话题:网络需要大量的能源,一些估计称比特币的年能源消耗超过挪威

img 估算的比特币年能源消耗量。来源:剑桥BECI

这些能量被浪费在节点上,每秒钟进行数百万次的哈希计算,寻找哈希值。虽然这增加了比特币网络的安全性,但它确实引出了一个问题:是否有不那么浪费的方法来验证区块。这就是权益证明的由来。

权益证明(PoS)

在权益证明(Proof-of-Stake)中,节点根据其在网络中的质押,被赋予验证区块的特权。这是与 PoW 根本不同的方法,大大降低了验证所需的计算能力。节点不提供计算能力,而是将他们的本地网络代币作为抵押品,以换取验证区块的机会。这从本质上消除了基于竞争的计算,增加了能够成功验证区块的节点分布。

合并后的以太坊是一个 POS 网络。它需要用32 个 ETH 做质押才能成为验证者,之后节点可以参与区块验证,从而促进新的区块被添加到网络中。押注是指代币的锁定,是PoS网络的基础。

除了成为验证者的高额前期费用外,PoS 网络还采用其他方法来防止恶意行为者扰乱网络。一般来说,PoS 网络还要求多个节点同时验证同一个区块,这就减少了一个节点验证错误或恶意区块的可能性。此外,如果发现一个节点有恶意行为,他们的质押会被消减掉。这意味着他们在协议中锁定的网络代币的数量被从节点中移除,并被转移到一个临时地址或销毁。代币销毁是指通过将代币发送到网络上没有人可以访问的地址,将其永久地从流通中消除。在以太坊上,这就是空地址

其他共识机制

除了工作量证明(PoW)和权益证明(PoS)之外,还有许多为特定网络设计的具有特定目的的共识机制。下面是一份不完全的流行共识机制的清单。

共享账本--记账系统( UTXO 与账户模型的对比)

前面我们提到,区块链是通过哈希将数据块相互加密连接起来,从而形成一个账本。这个账本被保存在整个网络的成千上万个节点上,账本在网络中"共享"。任何账本,不管是共享区块链账本还是传统会计账本,都需要记账。记账指的是如何接受、执行交易并将新的余额储存在区块链上。在 Web3 中,有两种主要的记账模式。

  • UTXO(Unspent Transaction Output)模式(如比特币)。
  • Account 模式(例如,以太坊)

为了帮助理解这些不同的记账模式,可以将区块链看作状态机。状态机是一个存储状态的系统,其状态会根据对设备的输入而改变。这意味着,在任何给定的时间点,系统处于某种状态,对系统做任何输入,如通过交易,系统的状态会发生变化。当向系统提供输入并且状态发生变化时,系统就会经历一个状态转换。

如果我们通过状态机的视角来看区块链,这意味着在任何给定的时间点,区块链系统处于状态 n ,任何被添加到区块链的区块都会导致状态转换和新状态 n+1 。这个的新状态 n+1 关系到被添加到新区块中的所有交易,导致了一个新的系统状态。

img 交易引发的区块链和状态变化

UTXO(Unspent Transaction Output )模型

UTXO 模型和账户模型的区别在于记账--或记录交易--的处理。

在 UTXO 模式中,不存在账户余额这种东西,不需要太多细节。相反,每笔交易都是一张收据,指出谁给谁送了多少钱。这就是“Unspent Transaction Output”这一名称的由来,因为用户可以转移的余额是他们尚未花费的先前交易的余额。

img UTXO模型的工作原理图解

当一个用户想发送比特币时,在选定的UTXO内的所有比特币都成为交易输入(见上面的$UTXO_0$)。一个新的UTXO被创建,其中包含要发送的数量(见上面的$UTXO_2$)。如果UTXO持有的比特币比要发送的多,剩余的比特币就会作为一个新的UTXO送回给用户(以上0.5个比特币要发送,但$UTXO_0$中持有2.0个,所以$UTXO_2$包含要发送的0.5个,$UTX0_3$包含返回给发送者的1.5个)。

这也实现了一个有趣的特点:作为UTXO模型的结果,每一个原生代币的来源都可以追溯到它的创建,因为每一个交易输出必须有一个相应的输入。对于使用UTXO模型的比特币,这意味着每个比特币都可以追溯到它被开采的区块。因此,UTXO模型中不存在余额的概念。相反,余额是网络中所有交易收据的汇总。

网络上的每一笔交易都精确地定义了谁从哪笔交易输入中获得了多少比特币。然后,系统会验证交易投入是否未被使用,以及发送方是否有权力发送比特币,以及接收方是否符合接收比特币的正确参数。因此,UTXO模型可以被认为是一个验证系统

虽然不包括在前面的例子中,但给矿工的交易费也作为交易的一部分被扣除。$UTX0_3$不是1.5个币,而可能是1.499个币,其中的差额是交易费。

Account模式

Account模型更接近于传统银行账户的数字表示。在每个状态转换中,所有账户和余额的集合被存储,而不是像UTXO模型中那样,必须从一组收据中计算账户余额。为了开始一个状态转换,需要启动一个交易,指示系统改变余额。然后,系统计算每个账户余额的变化,在下一个状态中,新的余额集被存储。

img Account模型的工作原理图解

在UTXO系统中,每笔交易的输入(从以前的交易中收到的UTXO)都是单独验证的,必须大于输出,而在账户模型中,账户余额必须大于交易输出。这意味着,在UTXO系统中,多个UTXO可以合并并单独验证,以创建一个或多个交易输出,而在账户模型中,只有余额需要验证。

img 如果使用多个UTXO作为输入,UTXO模型如何工作

关于UTXO模型与账户模型的更多信息,关于这个问题,我强烈建议阅读Horizen.io的这篇文章

虚拟机(VM),智能合约和图灵完备性

虚拟机是一个模拟计算机的软件。取代物理设备,虚拟计算机的所有物理组件作为软件在另一个系统中运行。例如,一个Windows虚拟机可以在MacOS上运行,允许整个windows系统在MacOS内运行。windows机的物理组件在软件中被模拟,因此,Windows系统是不知道的。

这个概念也适用于区块链网络:一个独立的虚拟机组件与共享账本一起存在,它允许计算任务被执行。这意味着,除了存储余额(Account模式)或余额变化(UTXO模式)的共享账本外,还有一个单独的计算组件来计算余额。这个计算组件也可以用于简单的余额计算之外的更复杂的逻辑。这就是为智能合约铺平道路的原因--后面会详细介绍。第一个获得广泛成功的此类系统是以太坊虚拟机(EVM)

比特币脚本也可以被认为是一个虚拟机,因为它是比特币网络的计算组件,节点用来验证UTXO和执行交易。然而,比特币脚本是相当有限的,不能像EVM那样运行复杂的逻辑。

以太坊虚拟机(EVM)

EVM是一个模拟特定计算机系统的软件,在以太坊节点上运行。EVM的主要目的是计算以太坊网络世界的状态,并运行智能合约。EVM的创新之处在于两个方面。

  1. EVM实现了世界状态的去中心化计算,包括执行有点复杂的智能合约的计算逻辑。
  2. EVM能够在去中心化的区块链网络(智能合约)上自主和无信任地执行代码

img 一个区块链和一个虚拟机(VM)

当一个网络声称"EVM-compatibility "时,这意味着该网络可以部署和执行为以太坊虚拟机编写的智能合约。EVM是最流行的虚拟机,已经成为Web3中智能合约计算的事实标准。拥有EVM的兼容性,使较新的网络能够通过更容易地将项目移植到他们的网络来引导他们的生态系统。这种标准化也使得网络之间的代币桥接更加容易,因为两个网络可以运行相同的代码。

关于EVM架构的一个梦幻般的自我解释的深入研究,我指导读者参考Takenobu T.的这个演练(由于 合并标志着以太坊生态系统在2022年9月15日从PoW过渡到PoS,这个演练的PoW方面已经过时了)。

智能合约

一个智能合约是一个存储在去中心化网络中的程序,当满足特定条件时,可以由虚拟机自主执行。这些条件可以指当网络上发生特定事件时,或当用户与智能合约交互时被激活的任何条件。智能合约的复杂计算能力也使ERC-20代币NFT(非同质化代币)的创建也成为可能。

智能合约和EVM是推动区块链和加密行业的重要因素,实现了Web3的概念:由于这些创新,有可能拥有可组合的应用程序,在一个不可审查的去中心化网络上自主运行。这些创新的结合就是Web3庞大的dApp生态系统的由来。

dApp是一个去中心化的应用程序,它使用智能合约的组合,通常也是一个容易访问的基于网络的前端,以实现与区块链网络的交互。dApps的智能合约也可以通过节点直接访问,但是基于网络的前端大量减少了访问的障碍。如今最知名的dApp可能是Uniswap

Solidity、Rust和比特币脚本

Solidity是以太坊区块链上最常用的智能合约编程语言。开发者用Solidity编码他们的智能合约,将其编译成字节码,然后将字节码部署到网络中。Solidity是一种面向对象和静态类型的编程语言,它是基于C++、Python和JavaScript的。

RustSolanaPolkadotNEAR区块链上最受欢迎的智能合约的编程语言之一。Rust是一种低级静态类型的编程语言,以其速度、效率和设计最佳实践而闻名。虽然它是一种较年轻的语言,但它在20202021连续被StackOverflow评为最受欢迎的编程语言。就像Solidity一样,代码被编译,字节码被部署到各个网络。

区块链接受各种编程语言,只要代码可以被编译成网络可以读取和解释的字节码。这也适用于比特币,它的主要脚本语言是比特币脚本。比特币脚本和Solidity/Rust之间的区别是,比特币脚本实际上不是一种编程语言,而是一个用于交易的脚本系统。在比特币中,脚本是与每笔交易一起记录的指令清单,它描述了下一个想要使用被转移的比特币的人如何获得它们。请记住,UTXO是未花费的交易输出;所以每个输出都可以有附加的要求,需要满足这些要求才能让输出成为另一个交易的输入。

图灵完备

从图灵完备性的角度来看,Solidity/Rust和Bitcoin Script之间的差异变得更加清晰。图灵完备性指的是抽象机器(图灵机)的概念,在给定无限的时间和计算资源的情况下,它能够计算任何问题,只要问题能够被编码或逻辑地构建。

更复杂的逻辑问题需要使用条件语句和循环,Solidity和Rust作为完整的编程语言支持这些条件。然而,比特币脚本不支持这些。这是因为比特币不允许复杂的计算,而是依赖于一个相当简单的指令集,只围绕交易的想法工作(没有智能合约)。虽然这使得比特币不容易出错,可以说更安全,但它确实限制了它的可编程性。

以太坊、Solana和Polkadot可以被认为是准图灵完备的。尽管由于Solidity和Rust的存在,它们能够进行复杂的计算,并且在理论上只要有足够的时间就可以解决任何逻辑问题,但它们受到了Gas费用的限制。Gas费用是网络为执行任何计算任务所收取的费用。虽然时间和计算资源在理论上可以是无限的,但原生网络代币的数量可能不是。因此,虽然理论上这些网络是图灵完备的,但在实践中,它们最多只能被视为准图灵完备。

图灵完备和非图灵完备的区别对于更好地理解网络的能力和在网络上可以建立的东西很重要。图灵机和图灵完备性还有更多的细微差别,感兴趣的读者可以在这里阅读更多的内容。

从EIP到ERC

ERC (以太坊 Request for Comment)是指以太坊区块链中使用的一种技术编码标准。一个ERC规定了以太坊智能合约必须遵循的一些规则和行动,以及如何实现它们。

然而,一个ERC已经是一个商定的标准,已经包含在以太坊文档中,开发者同意使用。在一个ERC成为ERC之前,它开始是一个EIP(以太坊改进提案)。EIP本质上是非常详细的论坛帖子,用户可以在其中对以太坊区块链和生态系统的变化进行争论、讨论和投票。

img 从EIP到ERC的过程

这个系统在整个Web3生态系统中被非常广泛地使用,从网络(例如,比特币使用BIPs - 比特币改进提案)到dApps(例如,AAVE使用AIPS - AAVE改进提案)。

ERC代币标准

基于ERC的代币生活在以太坊网络上,但它们在技术上有别于以太坊代币,后者是以太坊网络的原生代币。以太坊代币被定义为网络的一部分,是网络的底层 "货币",以Gas费用的形式支付交易和智能合约的执行,而基于ERC的代币被定义在智能合约中。

ERC标准的智能合约定义了代币的所有参数和所有行为,可以使用etherscan.io或任何其他与EVM兼容的网络的区块浏览器在线查看。区块浏览器是一种工具,它允许你查看存储在区块链上的实时和历史信息。由于这种标准化,基于ERC的代币的行为是可预测的,允许DApps和其他智能合约与任何使用这些标准的智能合约交互。

下面我们介绍ERC-20、ERC-721、ERC-1155和ERC-4626标准。前三个涉及到创建可替代和非同质化的数字资产,这些数字资产在区块链上生存,而ERC-4626标准化了应用于ERC-20的收益功能。

img ERC-20、ERC-721和ERC-1155代币标准及其可替代性

ERC-20代币(同质化代币)

ERC-20是一种同质化代币的标准。同质化是指一个资产可与同类的其他资产互换的特性,这两种资产是无法相互区分的。例如,一张一美元的钞票是同质化的,因为它可以与其他任何一张一美元的钞票进行交换。

ERC-20标准可以在兼容EVM的网络上创建可互换的代币。曲线代币(CRV)、Uniswap代币(UNI)或AAVE代币(AAVE)是可互换代币的例子,但法币的数字代表也是ERC-20,例如USDTUSDC ,它们与美元挂钩。

img ERC-20代币是可以互换的

ERC-721代币(非同质化代币)

ERC-721标准定义了非同质化代币(NFT)。NFT的独特之处在于它的名字:代币是不可伪造的,这意味着每个代币都是独一无二的。NFT是一个令人兴奋的发展,因为每个NFT的内容可以是创建者想要的任何内容,从个人照片到房地产的合约或任何其他证书。NFT使任何物理或独特数字资产的可公开验证的数字所有权成为可能。

流行的NFT包括CryptopunksBored Ape Yacht ClubEthereum Name Service (ENS)

img ERC-721s (NFT)是不可伪造的

ERC-1155 (Multi-Tokens)

ERC-1155是所谓的“多代币标准”:它们结合了ERC-20(同质化代币)和ERC-721(非同质化代币)的功能。这意味着,除了通过多个“独特的”可替代资产(例如,游戏中的一把剑(独特),发行量为100(可替代))来实现新的使用场景外,还可以在一个智能合约中管理多个代币类型。

将这些功能合并到一个智能合约中,可以在智能合约在EVM中使用的空间方面创造效率。这也为更大和更复杂的项目创造了简单性,因为可以从一个智能合约中管理多套代币。

受欢迎的ERC-1155包括ENJIN NFT,它使用ERC-1155来跟踪基于区块链的少数游戏中的资产,以及可能需要定期创建大量独特资产集作为一个合约的一部分的票务应用。使用ERC-1155的项目例子包括The Sandbox Metaverse, FanzAzure Heroes

img ERC-1155代币结合了同质化和非同质化的功能

ERC-4626 (The Vault Standard)

ERC-4626对代币保险库进行标准化。保险库是一个有收益的智能合约,接受ERC-20代币存款,并向存款人提供另一种代币的代币奖励(收益)。它本质上是一个多签名的资产管理智能合约,产生代币作为存款的一种奖励形式,以后可以赎回最初存入金库的代币。

例如,xSushi是一个有收益的代币,可以赎回SUSHI代币(SushiSwap dApp的治理代币),基本上代表用户在Sushi DeFi协议中产生收益活动的份额。

这个代币标准使开发者能够接受任何ERC-20代币,而不必手动整合每个代币,并考虑他们的具体设计决策。这减少了可能导致资产损失的编码错误的风险。

Yearn V3是第一个使用ERC-4626标准的主要协议,BalancerRari Capital等协议也已开始实现该标准

区块链与 Directed Acyclic Graphs(DAG)的对比

Directed Acyclic Graphs(DAG)——这里译为“定向非循环图”,是一种不同的数据结构方法,一些项目将其作为区块链共享账本结构的替代方法。区块链的交易包含在区块中,区块按时间顺序进行验证和连锁。区块链被复制到网络上的所有节点。

在DAG中,交易被逐一验证,每笔交易都与下一笔交易有联系。为了验证一个交易,由网络决定的另外两个交易也必须被验证。这导致了一个类似于网络的结构,可以很容易地进行扩展,并允许交易的并行计算,这可以大大增加吞吐速度。由于验证交易是非常直接的,矿工在这个系统中扮演的角色非常小:任何与网络互动的用户都可以验证其他用户的交易,这大大降低了交易成本。

img 区块链与DAG的关系

定向非循环图这个词很好地描述了这种结构。

  • 定向:数据结构只能在一个方向上移动(添加新数据)。 -非循环:当沿着数据点之间的定向路径移动时,不可能碰到之前的数据点(非循环)。
  • 图形:由节点/顶点和边(节点之间的连接)组成的非线性数据结构。

虽然这种结构在交易吞吐量、验证速度和交易成本方面带来了好处,但DAG面临完全不同的挑战。虽然在理论上这个系统允许强大的去中心化,但交易的减少在理论上会导致网络安全的降低:更少的交易意味着更少的随机验证者,这增加了单一验证者或一组验证者控制大多数交易的可能性。如果一个实体控制了大部分的网络活动,那么在网络中引入恶意活动就会变得更加容易。

为了应对上述挑战,基于DAG的网络已经转向集中化的解决方案:实现中心化协调,为待验证的交易提供路线,控制具有更高权限的“见证者”验证,或直接使验证网络私有化。

尽管有这些挑战,DAG网络在Web3生态系统中填补了一个重要的空白:它们是稍微集中的高吞吐量网络,可以管理繁重的交易负载,并且随着Web3主流应用的进展,会发现更多的使用案例。

单片式区块链与模块化区块链

去中心化的网络是复杂的系统,由各种组件组成,这些组件相互配合,创造出无信任和不可改变的网络。比特币、以太坊、Solana、Polkadot和NEAR等网络都被认为是单片式区块链 - 它们都是“一片组成”的网络,其中一个组件的任何变化都需要整个网络的更新。模块化区块链采用不同的组件,让它们能被换成其他组件。

模块化区块链系统的各种组件包括。

  • 执行层。交易执行和智能合约
  • 结算层。交易验证、交易结算
  • 共识层。共识机制
  • 数据可用性。共享账本

img 单片式区块链与模块化区块链。改编自:Celestia网站

通过将系统拆分成多个组件,可以对每个组件进行优化,提高每个组件的效率和安全性。Layer2,将在本系列的下一部分中详细介绍,可以说是进入模块化的第一步。Layer2卸载了执行层,在一个单独的网络上执行交易和智能合约,并将结果反馈给Layer1单片式网络,在那里管理结算、共识和共享账本。

虽然模块化有许多好处,但模块化系统的强度只取决于其最薄弱的环节。有了模块化组件,个别组件就有可能更容易成为目标。此外,给网络增加模块化也带来了新的复杂性,无论是从技术角度还是从网络原生代币的价值角度,都要确保网络的正常运行。如果结算层可以被另一个使用不同代币的结算层所取代,那么一个网络首先要证明代币的存在是有难度的。

尽管有这些挑战,模块化区块链的概念为新项目和新技术的发展提供了一个令人兴奋的方向,这可以帮助扩大和发展Web3生态系统。流行的模块化区块链项目包括CelestiaCosmos

总结--Layer1网络

Web3是一个庞大的概念,结合了区块链、加密货币和建立在它们之上的生态系统以及相关技术。

比特币是普及去中心化区块链技术的layer1网络,而以太坊是提供准图灵完备计算功能的网络,它使智能合约成为可能。正是通过对早期区块的数据进行哈希运算来串联数据块的想法,再加上在许多节点上分发所有存储数据的副本,实现了不可更改性和数据的永久性。除了这些技术原素,节点基础设施也必须到位才能发挥作用:如果网络上只有一个节点,那么网络基本上是集中的,并面临着集中化的挑战:数据可以被改变,被删除,对它的访问可以被节点限制。

除了底层数据结构,还有一个问题是网络上的节点如何知道提供给他们的数据是否正确。这被总结为 "拜占庭将军的问题"。比特币通过其工作量证明(PoW)共识算法解决了这个问题,该算法要求网络上的节点解决计算大量的加密难题,以证明他们已经完成了验证一个区块所需的验证工作。还有其他的共识算法,例如PoS,它需要的能源要少得多,而且被认为对环境更好。

比特币和以太坊是撰写本文时最受欢迎的两个区块链网络,它们使用了截然不同的记账模式。比特币使用UTXO模式,而以太坊使用Account模式。UTXO模式可以被认为是一个 "验证系统",每一个UTXO都是一个交易的接收。Account模型更类似于一个账户和余额的数据库,随着每个新的区块被添加到区块链中而更新。

以太坊的计算组件被称为“以太坊虚拟机”,允许执行智能合约。智能合约是存储在去中心化区块链网络上的应用程序,可以根据可编程的触发标准自主执行。根据你所使用的区块链,智能合约可以用Solidity、Rust或其他编程语言编写。

智能合约的标准化是必要的,以实现智能合约之间更好的互操作性。ERC是在以太坊文档中固化的编码标准,是成功的EIP。EIP是以太坊生态系统中任何人都可以提出的建议,并开放给任何人查看、讨论和投票。如果一个EIP被投票通过,提议的变化就会被应用到网络中。四个最流行的ERC代币标准是ERC-20(同质化代币),ERC-721(非同质化代币,或NFT),ERC-1155(多代币标准)和ERC-4626(保险库标准)。

虽然区块链一直是Web3去中心化网络最流行的账本格式,但随着现有结构被调整为特定的使用场景,替代格式也出现了。有定向非循环图(DAG)是这种替代结构的一个例子,它依赖于验证交易而不是完整的区块。模块化网络是我们需要重新思考现有结构这一想法的延伸。模块化网络旨在将去中心化的网络分成不同的功能层,每个功能层都可以单独优化。

结语

掌握Web3基础知识系列的第一部分就到此为止,感谢你的阅读! 如果你喜欢这篇文章,请考虑分享! 如果你对这篇文章有任何反馈或想讨论其内容,请在Twitter上联系@0xPhillan

如果你想在第二部分发布时率先阅读,或者想对Web3的近期事件有透彻观点,请订阅Web3edge通讯并在Twitter上关注@Web3edge_io!

本文由0xPhillan为Web3edge撰写 - 在Twitter上关注@0xPhillan!


本翻译由 Duet Protocol 赞助支持。

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2022-10-18 14:55
  • 阅读 ( 1495 )
  • 学分 ( 95 )
  • 分类:理论研究

0 条评论

请先 登录 后评论
影无双
影无双

34 篇文章, 1646 学分