Web3巨大而又杂乱,结合了各种组件、技能和概念。不管你是 Web3、区块链和加密钱银的新手还是内行,经过这篇稿子,你都将取得一个关于支撑 Web3 的各种组件的高层次概述,使你能够了解每个组件的意图和优点。详细来说,这个系列的意图是:
1.供给 Web3 底子组件的概述
2.评估各种组件的意图
咱们将 Web3 界说为互联网的次迭代,将如今的互联网中咱们所喜爱的东西与可验证的数字全部权、开放体系、透明度和不行更改性相结合。Web3、区块链和加密是三个密切相关的主题,但在本篇中会被视为三个独立的术语。
-
区块链:一种技能立异,能够完成可验证的数字全部权、透明度和不行更改性
-
Crypto:加密钱银的简称,描绘了区块链网络上加密安全的代币
-
Web3:包含区块链、加密钱银,以及树立在它们之上的全部生态体系和立异
要了解 Web3,咱们有必要首先了解根底的区块链和加密技能。虽然 Web3 仍然是一个相对年青的概念,比特币在 2009 年才推出,但跟着新的技能立异以疯狂的速度进入市场,这个行业正在迅速开展。
我期望这个系列能协助你深化钻研 Web3,并能协助你找到能够在这个系列之外自己研究的感兴趣的范畴。在每一个主题中,都能够找到几十个更深化的弥补材料的链接,以协助引导你找到有用的内容。
这个系列分为三个部分,你所在的榜首个部分涵盖了从 Web3 节点根底设施到 layer 1 区块链网络怎么作业的全部内容。下一篇文章将介绍 layer 2、互操作性和树立在本篇文章所概述的基元上的巨大的 dApp 生态体系。最终,最终一块将涵盖链外环境和链上/链下通讯。
Web3 根底设施概述
咱们将 Web3 根底设施分为多个部分,反映了链上生态体系、支撑链上生态体系的链下环境以及将去中心化的网络彼此衔接并答应这些网络与链下环境衔接的中间件。
-
链上生态体系
-
榜首层网络:单体网络、模块化网络、共同(PoW、PoS)、同享账本技能、虚拟机与 EVM 兼容、智能合约和 ERC 代币规范
-
第二层网络:闪电网络、optimistic rollup、零知识 rollup
-
节点层:挖矿/验证节点、节点客户端软件、挖矿/盯盘池
-
网络层:
-
去中心化的运用程序(dApp)层
-
链外环境:分析、审计与安全、钱包、中心化买卖所(CEX)、开发者东西(结构、IDE)、去中心化云(存储、核算、索引)。
-
互操作性层(“中间件”):
-
网络互操作性:链桥、原子 swap
-
链上/链下通讯东西。区块链 API、Oracle
链上生态体系
链上生态体系分为三个首要层:
-
去中心化的运用程序(dApp)层
-
网络层
-
节点层
这三层结合在一起,完成了 Web3 最著名的由智能合约驱动的生态体系和运用。咱们从节点层开端看链上的生态体系,然后一直到 dApp 层。
节点层
这一层也常常被称为硬件层,因为在这一层,硬件以及与操作硬件参加特定区块链网络有关的全部都被设置好了。
节点客户端
节点是一个服务器,它运转一个被称为客户端的网络专用软件,它答应节点参加网络的区块创立进程,答应拜访整个区块链的前史数据,并答应履行 RPC 指令(在 Layer1 部分有更多介绍)。RPC 是指远程程序调用,它答应节点调用和履行某些指令。
在编撰这篇文章时,按市值核算,最大的两个区块链网络是比特币和以太坊。虽然参加每个网络有不同的要求,但它们都需求一个契合客户硬件规范的服务器(任何核算机),一个互联网衔接,以及客户端软件。关于比特币,最盛行的客户端软件是 Bitcoin Core,而关于以太坊,最盛行的客户端是 GETH(Go Ethereum).
客户端还编纂了区块链的规矩,并保证任何被验证的新区块也遵守相同的规矩。这很重要,因为假如一个节点验证了一个其他节点不承受的区块,网络就会分叉:一组节点遵从一套规矩,而其他节点遵从另一套规矩。虽然他们或许同享相同的前史,但在不同的验证规矩被引进的那一刻,一个新的链被创立并只被承受新规矩的节点所承受。
虽然以上是最盛行的客户端,但它们并不是能够用来参加区块链网络的仅有客户端。只需其他客户端运用相同的验证规矩,他们就能够验证区块并为区块链作出贡献。
-
比特币客户端
-
以太坊客户端
要阅览更多关于区块链怎么作业的信息,请跳到 Layer 1 网络部分。
节点根底设施供货商
一般鼓舞普通用户运转自己的节点,以支撑公共网络的去中心化。当更多的用户运转他们自己的节点时,单个行为者积累大多数运转节点并进犯网络的时机就会削减。用户被鼓舞经过区块奖赏和买卖费用来运转他们自己的节点,网络将这些费用分配给节点运营商。
虽然有这些激励措施,用户不愿意自己树立节点的原因有许多:杂乱的技能设置,购买必要硬件的前期资金有限,或许只是暂时需求节点。这便是节点根底设施供货商的效果。这些供货商担任节点的设置和操作,为客户供给端到端的服务。一些专门从事节点根底设施的大型供货商包含 Blockdaemon 和 Atlas.
这些节点根底设施供货商的一个常常被忽视的意图是为那些没有树立强大的、去中心化的节点网络的新区块链项目树立节点。这些较新的网络能够利用节点根底设施供货商来发动一个全球分布式网络,而不需求在每个国家树立自己的根底设施。
矿池和质押供给商
节点根底设施供给商为客户树立节点,而挖矿池和质押供给商则运营自己的节点,但答运用户在其节点下汇集资源。这添加了节点从网络中取得区块奖赏和买卖费收入的或许性。关于想把自己的搁置硬件投入运用的用户来说,这意味着他们能够参加一个矿池,而不需求任何杂乱的技能设置,并开端用他们现有的资源赚取收入。
不同共同机制的网络节点操作有一些细微差别。底子上,运用作业证明的网络汇集了核算资源,而权益证明的网络汇集了网络代币。关于作业证明网络来说,矿池大大降低了进入的技能门槛,而关于权益证明网络来说,质押供给者则大大降低了进入的财务门槛(所需的最低质押)。更多细节将在共同部分介绍。
一些最大的矿池包含 Foundry USA 和 F2POOL,而一些最大的质押供给商包含 Lido 和 Rocketpool.
节点层总结
Web3 的节点层由数千个全球分布的节点组成,每个归于特定网络的节点都运转该网络所需的客户端软件。只需客户端软件的验证规矩与网络上的其他节点相同,该节点就能够正常运转,而不会构成区块链的分叉。
虽然任何人都能够在去中心化公链网络上运转自己的节点,但节点根底设施供货商专门担任设置和运营运转节点和发动网络所需的硬件。
最终,矿池和质押供货商的行为降低了采矿和质押业务的进入门槛。这使得用户能够参加挖矿和质押活动,赚取网络奖赏,而不用满足全部网络要求。
网络层
区块链网络树立在上述的节点根底设施之上。网络层由各部分组成,包含各种技能,底子层是 layer 1 网络、layer 2 网络和在这些网络之间进行通讯的互操作层。
Layer 1 网络
比特币、以太坊和 Solana 或许是在编撰本文时最知名的 Layer 1 网络。Layer 1 网络是指 Web3 生态体系中结算买卖的首要网络。Layer 2 网络是作为 Layer 1 网络的更深层存在的,买卖能够被降级到 Layer 2 网络上(在我的下一篇文章中会有更多介绍)。虽然在架构上有很大的不同,但它们都依赖于一组类似的架构基元。
-
它们都有一个同享账本,跟踪网络上的买卖
-
它们都选用机制来完成与哪些买卖和区块被以为是有用的共同
-
它们都有一种办法来核算发送到网络的指令(以太坊、 Solana 和其他 EVM 兼容链的虚拟机,以及比特币网络的 Bitcoin Script)
鄙人面的章节中,咱们将别离研究这三个要素,并分析咱们怎么从买卖到区块链。
同享账本
全部去中心化的区块链网络都有一个同享账本。事实上,区块链便是同享账本。让咱们退一步来说:账本是一个企业经济活动的记载,用来追寻金钱的搬运或财物全部权的搬运。术语同享账本意味着账本不是由一个单一实体持有和办理,而是由许多实体持有和办理。
在去中心化的区块链网络中,区块链(网络上全部活动的分类账)被保存在网络上的全部节点上。假如活动的账本只由一个中心化的组织办理和存储,咱们会遇到以下应战。
-
审查和排挤(见用户被 PayPal 渠道封禁)
-
记载办理人的不尽职行为(见 Luckin Coffee 虚报财务数据)
-
记载的丢失(见亚历山大图书馆的消灭)
假如账本存储在全球数百乃至数千个节点上,咱们就会得到一个很难被故意和无意篡改或损坏的体系。假如一个节点倒下了,还有许多其他节点,用户能够与之衔接,持续与账本进行互动。
可是,这个体系的确带来了其他应战:网络上的节点怎么就什么是正确或有用的账目条目到达共同?这便是共同算法的效果。
共同
在区块链网络中,共同一词指的是网络上的节点之间就哪些账本条目(买卖和区块)是有用的并被节点承受的一般协议。
在学术界,这个问题被称为拜占庭将军问题。这个问题描绘了这样一种状况:一个体系的举动者有必要在战略上到达共同,以防止灾难性的失利,但体系中的一些举动者是不行靠的。
在这个假想的场景中,有三个行为者,他们有必要和谐他们在拜占庭战役中的下一步举动,以防止被敌人攻破。三个行为体中的一个是歹意的,向其他各方转发不共同的信息。体系中的诚实(非歹意)行为者怎么知道该信赖谁?或许换个说法:体系中的全部行为者怎么能就承受哪条音讯到达共同?
这个问题具有重要意义,因为跟着更多的举动者进入体系,(过错)沟通的杂乱性会成倍增长。
榜首个在全球范围内成功处理这一应战的体系是比特币网络及其作业证明算法。
作业证明(PoW)
比特币网络的作业证明算法(也被称为 PoW)处理了拜占庭将军的问题,要求任何信息有必要经过某种验证才干被节点承受。任何没有经过验证的信息都不被承受为有用信息,并被节点回绝。
验证进程也需求核算资源,这使得假造验证变得异常困难。这也是“作业证明”一词的由来:“向我证明你现已做了必要的作业,让我承受你的信息”。
让咱们从理论到实践,更深化地挖掘买卖、区块和 PoW 进程的机制。别担心——咱们会保证深化浅出的!
区块结构
比特币区块是储存买卖的当地,是精心控制的信息单位,一旦完成加密拼图,就会在整个网络中播送。
比特币网络的一个区块由两个首要部分组成。
-
区块头
-
买卖列表
买卖列表就像它听起来相同:它是一个节点收到并包含在一个区块中的买卖列表。在比特币网络中,买卖是比特币网络上的比特币搬运(注意:英文中小写 b 开端的比特币是指比特币财物,而大写 B 开端的比特币是指比特币网络)。比特币网络是一个同享的公共账本,追寻比特币财物的活动;因而,比特币网络上的买卖是比特币在地址之间的搬运。
比特币运用未花费买卖产出,也被称为 UTXO 进行买卖。买卖和 UTXO 将在 UTXO 模型与账户模型部分进一步介绍。
区块头是事情开端变得风趣的当地。虽然买卖的数量和每笔买卖的转账金额因区块而异,但区块头的元素对每笔买卖都是相同的。
虽然区块头包含许多元素,但每个元素都对体系至关重要,为了介绍的意图,咱们将进一步详细介绍以下内容。
-
前一个区块头的哈希值:前一个区块的全部元素都被哈希化
-
难度方针:确定“前导零”的数量,从而确定挖矿的难度
-
Nonce:一个任意的数字(nonce 是“nonsense”的缩写)
-
Merkle root:该区块内全部买卖的哈希输出
从区块到区块链
在咱们持续之前,咱们需求简略介绍一下哈希算法(hashing)。哈希化是将一串字符转化为另一个一般为固定长度的值的进程。当一个哈希算法是确定的,就意味着在相同的输入下,每次的输出都是相同的。可是,假如原始字符串的一个字符发生变化,哈希的输出就会彻底改动,以至于无法推断出与原始字符串的关系。请看下面的 Bitcoin 与 bitcoin SHA256 哈希算法输出的比较。
在比特币网络中,一旦一个区块被挖掘出来,该区块的头就会被哈希化,并作为一个输入包含鄙人一个区块中。因为每个区块的前一个标题的哈希值被包含鄙人一个区块中,所以就构成了一个由区块构成的链:这便是区块链。
在任何区块中的任何变化都会损坏这条链,因为现已包含鄙人一个区块中的哈希输出将与新的哈希输出不同。因而,这样的变化会被网络上的节点所回绝。
Merkle Root
Merkle tree 是一种数据结构,其间数据结构中的元素被哈希和重哈希递归,直到只剩下一个元素。这个最终剩下的元素便是 Merkle Root.
Merkle tree 有一个风趣的数学特性,即在数学上,在只供给 Merkle root 和一个元素的状况下,能够证明这个元素是 Merkle tree 的一部分。
在比特币网络中,存储在区块头中的 Merkle root 是该区块中包含的全部买卖的递归哈希输出。这意味着,假如任何买卖被调整,Merkle root 也将改动,这也将改动整个区块头的哈希输出。这将再次导致区块的无效化。
作业证明中的“作业”
咱们知道了什么是哈希算法、区块是怎么结构化的和区块是怎么被链起来并构成区块链的,现在咱们终于能够更深化地了解作业证明实际是怎么作业的。回到拜占庭将军的问题,上面说到的验证信息实际上是区块链中的一个区块。
为了使一个区块得到验证,需求找到一个契合特定规范的哈希值。还记得只是一个位元(bit)的变化就会极大地改动哈希值的输出吗?这正是比特币网络的 PoW 算法寻找方针哈希值的办法:Nonce 是一个任意的数字,它被调整以改动区块头的哈希值输出。假如哈希值输出不契合方针哈希值,nonce 会再次被调整。这个进程不断重复,直到区块头的哈希值满足方针条件。一旦方针条件得到满足,区块头就算是得到了验证,区块会被播送给网络上的其他节点,让它们把新的区块附加到它们的区块链副本中。
方针条件,或预期的哈希值,是由它有多少个前导零界说的。假如生成的哈希值有满足的前导零,也便是说,现已完成了寻找契合方针条件的哈希值的作业,那么网络上的节点就承受该区块为有用:该区块被以为是“已挖矿”。
为了更好地了解这个进程,请浏览 Github 上的这个哈希算法模拟器。输入字符“bitcoin”,并在结尾添加数字,从 0 开端,以 1 的增量不断添加,直到到达一个前导零(例如,bitcoin0,bitcoin1,等等)。你会注意到,为了找到一个前导零,即哈希值的榜首个字符是零,你只需求将数字添加到 3(“bitcoin3”)。现在试着找到两个前导零。剧透:榜首个有两个前导零的哈希结果是 “bitcoin230”.
还有更多的规矩需求节点遵守,比方最长的链总是有用的链(防止整个区块链被掩盖),现已挖掘的区块有必要有一个在网络时刻必定阈值内的时刻戳(这样最新的区块就不会被掩盖),还有围绕怎么确定网络难度(方针哈希的前导零数量)的杂乱机制。有兴趣的读者能够浏览 Bitcoin.org 或 Bitcoin Wiki 了解更多细节。
范式转变
上述机制,在前史上榜首次答应买卖被独立确认和验证,而不需求第三方见证和批准买卖。与其将买卖提交给遭受中心化应战的银行,不如将其发送到一个独立的节点网络,这些节点能够在没有干预的状况下自主地处理买卖。这种技能范式的转变和对账本的从头认识是今日 Web3 生态体系赖以树立的底子要素。
此外,因为参加这些网络的仅有要求是能够运转节点软件的核算设备和互联网衔接,任何人都能够作为独立的节点参加网络,增强网络的分散性。
批判意见
虽然像比特币网络这样的 PoW 网络有许多节点(依据 bitnodes.io,截至 2022 年 9 月 15 日,有近 15000 个节点),但有人批判说,因为网络上的高度竞争,单个节点的准入门槛太高。一个节点具有的哈希才干(即核算资源)越多,该节点就越有或许首先处理哈希难题,因为它能以比网络上其他节点更快的速度进行更多的核算。作为一个哈希值较低的单一节点进入比特币网络,将导致能源本钱,而成为榜首个成功挖掘新区块的时机几乎不存在。
能源消耗也是一个备受争议的话题:网络需求很多的能源,一些估计指出,比特币网络的年能源消耗超过挪威。
这些能量被糟蹋在节点每秒进行数百万次的哈希核算,寻找哈希。虽然这添加了比特币网络的安全性,但它的确引出了一个问题,即是否有任何不那么糟蹋的办法来验证区块。这便是权益证明的由来。
权益证明(PoS)
在权益证明中,节点被赋予了依据其在网络中的质押来验证一个区块的权限。这是一种与 PoW 底子不同的办法,大大降低了验证所需的核算才干。节点不供给核算才干,而是将他们的本地网络代币作为抵押品,以换取验证区块的时机。这从本质上消除了依据竞争的核算,添加了能够成功验证区块的节点的分布。
兼并后的以太坊是一个权益证明网络。它需求用 32 个 ETH 做质押才干成为一个验证者,之后节点能够参加区块验证,从而为网络添加新的区块作出贡献。质押指的是锁住代币,是 PoS 网络的根底。
除了成为验证者的高额前期费用外,PoS 网络还选用其他办法来防止歹意行为者扰乱网络。一般来说,PoS 网络还要求多个节点同时验证同一个区块,这就削减了一个节点验证过错或歹意区块的或许性。此外,假如发现一个节点有歹意行为,他们的权益能够被砍掉。这意味着他们在协议中锁定的网络代币的数量被从节点中移除,并被搬运到一个临时地址或焚毁。代币的焚烧是指经过将代币发送到网络上没有人能够拜访的地址,将其永久地从流通中移除。在以太坊网络中,这便是空地址(null address)。
其他共同机制
除了作业证明(PoW)和权益证明(PoS)之外,还有许多为特定网络规划的具有特定意图的共同机制。下面是一份不彻底的盛行共同机制的清单。
-
Delegated Proof-of-Stage(DPoS)
-
授权证明(Proof-of-Authority, PoA)
-
活动证明(Proof-of-Activity, PoA)
-
Brun 证明(PoB)
-
Proof-of-Spacetime(PoSt)
-
前史证明(Proof-of-History, PoH)
-
有用拜占庭容错(pBFT)共同【Practical Byzantine Fault Tolerance (pBFT) Consensus】
同享账本——管帐体系(UTXO 与账户方式的比照)
前面咱们说到,区块链是经过哈希算法将数据块彼此加密衔接起来,从而构成一个账本。这个账本被保存在整个网络的数千个节点上,使账本在这些网络中“同享”。任何账本,不管是同享区块链账本还是传统管帐账本,都需求记账。记账指的是怎么承受、履行买卖并将新的余额存储在区块链上。在 Web3 中,有两种首要的记账模型。
-
未消费买卖输出(UTXO)模型(如比特币网络)
-
账户模型(The Account Model,如以太坊网络)
为了协助了解这些不同的记账模型,将区块链视为状况机是有协助的。状况机是一个存储其状况的体系,其状况能够依据对设备的输入而改动。这意味着,在任何给定的时刻点,体系处于某种状况,跟着对体系的任何输入,例如经过买卖,体系的状况会发生变化。当向体系供给输入并且状况发生变化时,体系就会阅历一个状况转化。
假如咱们经过状况机的视角来看区块链,这意味着在任何给定的时刻点,区块链体系处于 n 状况,任何被添加到区块链的区块都会导致状况转化和 n+1 的新状况。这个 n+1 的新状况考虑到了被添加到新区块中的全部买卖,导致了一个新的体系状况。
未消费买卖输出(UTXO)模型
UTXO 模型和账户模型的区别在于怎么记账——或记载买卖——的处理。
简略来说,在 UTXO 模型中,不存在账户余额这种东西。相反,每笔买卖都是一张收据,指出谁给谁发了多少钱。这便是未消费输出这个姓名的由来,因为用户能够搬运的余额是他们没有花费的先前买卖的多少。
当用户想发送比特币时,所选 UTXO 内的全部比特币都成为买卖输入(见上图 UTXO0)。一个新的 UTXO 被创立,其间包含要发送的数量(见上图 UTXO2)。假如 UTXO 持有的比特币多于要发送的比特币,剩余的比特币将作为一个新的 UTXO 送回给用户(上图中有 0.5 个比特币需求发送,但 UTXO0 中持有 2.0 个,所以 UTXO2 包含要发送的 0.5 个,UTX03 包含回来给发送方的 1.5 个)。
这也完成了一个风趣的特性:因为 UTXO 模型,每一个原生代币的来源都能够追溯到它的创立,因为每一个买卖输出有必要有一个相应的输入。关于运用 UTXO 模型的比特币网络来说,这意味着每个比特币都能够追溯到它被挖矿的区块。因而,UTXO 模型中不存在余额的概念。相反,余额是网络中全部买卖收据的汇总。
网络上的每一笔买卖都精确地界说了谁从哪笔买卖的输入中取得多少比特币。然后,体系会验证买卖投入是否未被运用,以及发送方是否有权利发送比特币,以及接纳方是否契合接纳比特币的正确参数。因而,UTXO 模型能够被以为是一个验证体系。
虽然不包含在前面的比如中,但交给矿工的买卖费也作为买卖的一部分被扣除。UTXO3 不是 1.5 个币,而或许是 1.499 个币,其间的差额是买卖费。
帐户模型
账户模型更接近于传统银行账户的数字表明。在每个状况转化中,全部账户和余额的调集被存储起来,而不是像 UTXO 模型中那样,有必要依据一组收据来核算账户余额。为了开端一个状况转化,需求发动一个买卖,指示体系改动余额。然后,体系核算每个账户余额的变化,鄙人一个状况中,新的余额集被存储。
在 UTXO 体系中,每个买卖输入(从以前的买卖中收到的 UTXO)都是独自验证的,有必要大于输出,而在账户模型中,账户余额有必要大于买卖输出。这意味着,在 UTXO 体系中,多个 UTXO 能够兼并并独自验证,以创造一个或多个买卖输出,而在账户模型中,只要余额需求验证。
关于 UTXO 模型与账户模型的更多信息,我强烈主张阅览 Horizen.io 关于这个问题的这篇内容。
虚拟机(VM)、智能合约和图灵齐备性
虚拟机是一个模拟核算机的软件。它替代物理设备,虚拟核算机的全部物理组件作为软件在另一个体系中运转。例如,一个 Windows 虚拟机能够在 MacOS 上运转,答应整个 windows 体系在 MacOS 内运转。Windows 虚拟机的物理组件是用软件模拟的,所以 Windows 体系是不知道的。
这个概念也适用于区块链网络:一个独自的虚拟机组件与同享账本一起存在,它答应核算使命被履行。这意味着,除了存储余额(账户模型)或余额变化(UTXO 模型)的同享账本外,还有一个独自的核算组件来核算余额。这个核算组件也能够用于简略的余额核算之外的更杂乱的逻辑。这便是为智能合约铺平道路的原因——后面会详细介绍。榜首个取得广泛成功的此类体系是以太坊虚拟机 (EVM)。
Bitcoin Script 也能够被以为是一个虚拟机,因为它是比特币网络的核算组件,节点用它来验证 UTXO 和履行买卖。可是,比特币脚本是适当有限的,无法运转像 EVM 那样的杂乱逻辑。
以太坊虚拟机(EVM)
EVM 是一个模拟特定核算机体系的软件,在以太坊节点上运转。EVM 的首要意图是核算以太坊网络的国际状况,并运转智能合约。EVM 的立异之处在于两个方面:
-
EVM 完成了国际状况的去中心化核算,包含履行有点杂乱的智能合约的核算逻辑
-
EVM 能够在去中心化的区块链网络(智能合约)上自主和无信赖地履行代码
当一个网络宣称“EVM-兼容”时,这意味着该网络能够布置和履行为以太坊虚拟机编写的智能合约。EVM 是最盛行的虚拟机,并已成为 Web3 中智能合约核算的事实规范。 具有 EVM 兼容性答应较新的网络经过使项目更简略移植到他们的网络来引导其生态体系。这种规范化也使得网络之间的代币桥接愈加简略,因为两个网络能够运转相同的代码。
关于 EVM 架构的一个梦幻般的自我解说的深化研究,我引导读者去看 Takenobu T. 的这篇内容(因为“兼并”标志着以太坊生态体系在2022 年 9 月 15 日从 PoW 过渡到 PoS,这个演讲的 PoW 方面现已过期了)。
智能合约
一个智能合约是一个存储在去中心化网络中的程序,当满足特定条件时,能够由虚拟机自主履行。这些条件可所以指当网络上发生特定事件或当用户与智能合约互动时被激活的任何条件。智能合约的杂乱核算才干也使 ERC-20 代币和 NFT(非同质化代币)得以创立。
智能合约和 EVM 是推动行业超越区块链和加密、完成 Web3 概念的原因:因为这些立异,有或许具有可组合的运用程序,在不行审查的去中心化网络上自主运转。这些立异的结合便是 Web3 巨大的 dApp 生态体系的由来。
dApp 是去中心化的运用程序,它运用智能合约的组合,一般也是一个简略拜访的依据网络的前端,以完成与区块链网络的互动。dApp 的智能合约也能够经过节点直接拜访,可是依据网络的前端很多削减了拜访的障碍。在今日,最知名的 dApp 大概是 Uniswap.
Solidity 言语、Rust 言语和 Bitcoin Script
Solidity 是以太坊区块链上最常用的智能合约的编程言语。开发者用 Solidity 编码他们的智能合约,将其编译成字节码,然后将字节码布置到网络中。Solidity 是一种面向对象和静态类型的编程言语,它是依据 C++、Python 和 JavaScript 而树立的。
Rust 是 Solana、Polkadot 和 NEAR 链上最受欢迎的智能合约的编程言语之一。Rust 是一种初级静态类型的编程言语,以其速度、功率和规划最佳实践而出名。虽然它是一种较年青的言语,但它在 2020 和 2021 连续两年被 StackOverflow 评为最受欢迎的编程言语。就像 Solidity 相同,代码被编译,字节码被布置到各个网络上。
只需代码能够被编译成网络能够阅览和解说的字节码,区块链承受各种编程言语。这也适用于比特币网络,它的首要脚本言语是 Bitcoin Script. Bitcoin Script 和 Solidity/Rust 之间的区别是,Bitcoin Script 实际上不是一种编程言语,而是一个用于买卖的脚本体系。在比特币网络中,脚本是与每笔买卖一起记载的指令清单,它描绘了下一个想花被搬运的比特币的人怎么取得它们。请记住,UTXO 是未运用的买卖输出;因而,每一个输出都能够有附带的要求,需求满足这些要求,才干答应输出成为另一个买卖的输入。
图灵齐备性
从图灵齐备性的视点来看,Solidity/Rust 和 Bitcoin Script 之间的差异变得愈加明晰。图灵齐备性指的是一个抽象机器(图灵机)的概念:在给定了无限的时刻和核算资源的状况下,只需这个问题能够被编码或逻辑地构建,它就能够核算任何问题。
更杂乱的逻辑问题需求运用条件语句和循环,Solidity 和 Rust 作为完整的编程言语支撑这些。可是,Bitcoin Script 不支撑这些。这是因为比特币网络不答应杂乱的核算,而是依赖于一个适当简略的指令集,只围绕买卖的主意作业(没有智能合约)。虽然这使得比特币网络不简略犯错,能够说更安全,但它的确约束了它的可编程性。
以太坊、Solana 和 Polkadot 能够被以为是准图灵齐备的。虽然因为 Solidity 和 Rust 的存在,它们能够进行杂乱的核算,并且在理论上只需有满足的时刻就能处理任何逻辑问题,但它们受到 gas fee 的约束。Gas fee 是网络为履行任何核算使命所收取的费用。虽然时刻和核算资源在理论上可所以无限的,但原生网络代币的数量或许不是。因而,尽办理论上这些网络是图灵齐备的,但在实践中,它们最多只能被视为准图灵齐备的。
图灵齐备性和非图灵齐备性的区别关于更好地了解网络的才干和在网络上能够树立的东西十分重要。图灵机和图灵齐备性还有更多的细微差别,感兴趣的读者能够在这里阅览更多内容。
从EIP 到 ERC
ERC(Ethereum Request for Comment)指的是以太坊区块链中运用的技能编码规范。ERC 规定了以太坊智能合约有必要遵从的一些规矩和举动,以及怎么完成这些规矩和举动。
可是,ERC 现已是一个约定俗成的规范,现已包含在开发者同意运用的以太坊文档中。在一个 ERC 成为 ERC 之前,它开端是一个 EIP(Ethereum Improvement Proposal). EIP 本质上是十分详细的论坛帖子,用户能够在其间对以太坊区块链和生态体系的变化进行争辩、评论和投票。
这个体系在整个 Web3 生态体系中被十分广泛地运用,从网络(例如,比特币运用 BIP —— Bitcoin Improvement Proposals)到 dApp(例如,AAVE 运用 AIPS —— AAVE Improvement Proposals).
ERC 代币规范
依据 ERC 的代币树立在以太坊网络上,但它们在技能上有别于以太坊代币,后者是以太坊网络的原生代币。以太坊代币被界说为网络的一部分,是网络的底层“钱银”,以 gas fee 的方式支付买卖和智能合约履行,而依据 ERC 的代币被界说在智能合约中。
ERC 规范的智能合约界说了代币的全部参数和全部行为,能够运用 etherscan.io 或任何其他与 EVM 兼容的网络的区块探究器在线检查。区块探究器是一种东西,它答应你检查存储在区块链上的实时和前史信息。因为这种规范化,依据 ERC 的代币的行为是可预测的,答应 dApp 和其他智能合约与任何运用这些规范的智能合约互动。
接下来,咱们会介绍 ERC-20、ERC-721、ERC-1155 和 ERC-4626 规范。前三个规范涉及到创立同质化和非同质化数字财物,这些数字财物在区块链上生存,而 ERC-4626 规范规范了运用于 ERC-20 的收益功用。
ERC-20 代币(同质化代币)
ERC-20 是一个同质化代币的规范。同质性是指一种财物能够与另一种相同的财物互换,而两种财物是无法彼此区分的。例如,一张一美元的钞票是同质化的,因为它能够与任何其他一美元的钞票进行交换。
ERC-20 规范答应在 EVM 兼容的网络上创立同质化代币。Curve 代币(CRV)、Uniswap 代币(UNI)或 AAVE 代币(AAVE)都是同质化代币的比如,但法定钱银的数字代币也是 ERC-20,例如 USDT 或 USDC,它们与美元挂钩。
ERC-721 代币(非同质化代币)
ERC-721 规范界说了非同质化代币(NFT)。NFT 的共同之处在于它的姓名:代币是不行假造的,这意味着每个代币都是绝无仅有的。NFT 是一个令人兴奋的开展,因为每个 NFT 的内容可所以创立者想要的任何内容,从个人照片到房地产的契约或任何其他证书。NFT 完成了对任何物理或共同数字财物的可揭露验证的数字全部权。
盛行的 NFT 包含 Cryptopunks、Bored Ape Yacht Club 和 Ethereum Name Service (ENS).
ERC-1155(Multi-Token)
ERC-1155 是所谓的“多元代币(Multi-Token)”:它们结合了 ERC-20(同质化代币)和 ERC-721(非同质化代币)的功用。这意味着,除了经过多个“共同的”同质化财物,例如游戏中的一把剑(非同质化的)和 100 个供应量(同质化的)来完成新的用例之外,也能够在一个智能合约中办理多个代币类型。
将这些功用兼并到一个智能合约中,能够使智能合约在 EVM 中运用的空间方面创造功率。这也为更大和更杂乱的项目创造了简略性,因为多套代币能够从一个智能合约中办理。
盛行的 ERC-1155 包含 ENJIN NFT,它运用 ERC-1155 来跟踪依据区块链的少量游戏中的财物,以及或许需求定期创立很多共同财物集作为一个合同的一部分的票务运用。运用 ERC-1155 的项目比如包含 The Sandbox Metaverse、Fanz 和 Azure Heroes.
ERC-4626(The Vault Standard)
ERC-4626 将代币金库规范化。保险库是一个有收益的智能合约,承受 ERC-20 代币存款,并向存款人供给另一种代币的代币奖赏(收益)。它本质上是一个多签名的财物办理智能合约,发生代币作为存款的奖赏方式,以后能够兑换开端存入保险库的代币。
例如,xSushi 是一个有收益的代币,能够兑换成 SUSHI 代币(SushiSwap dApp 的治理代币),底子上代表用户在 Sushi DeFi 协议中发生收益活动的份额。
这个代币规范使开发者能够承受任何 ERC-20 代币,而不用手动整合每个代币,并考虑他们的详细规划决议计划。这削减了或许导致财物丢失的编码过错的风险。
Yearn V3 是榜首个运用 ERC-4626 规范的首要协议,Balancer 和 Rari Capital 等协议也已开端施行该规范。
区块链与有向无环图(DAG)的比照
有向无环图(DAG)是一种不同的数据结构办法,一些项目将其作为区块链同享账本结构的替代方案。区块链的买卖包含在区块中,区块按时刻次序进行验证和连锁。区块链被复制到网络上的全部节点。
在 DAG 中,买卖被逐一验证,每个买卖都与下一个买卖相关联。为了验证一个买卖,由网络决定的另外两个买卖也有必要被验证。这导致了一个类似于网络的结构,能够很简略地进行扩展,并答应买卖的并行核算,这能够大大添加吞吐速度。因为验证买卖是十分直接的,矿工在这个体系中扮演的人物十分小:任何与网络互动的用户都能够验证其他用户的买卖,这大大降低了买卖本钱。
有向无环图这个词很好地描绘了这种结构:
-
有向:数据结构只能在一个方向上移动(添加新数据)
-
无环:当沿着数据点之间的定向途径移动时,不行能碰到之前的数据点(非环形)
-
图:由节点/极点和边(节点之间的衔接)组成的非线性数据结构
虽然这种结构在买卖吞吐量、验证速度和买卖本钱方面带来了优点,但 DAG 面临着彻底不同的应战。虽然在理论上这个体系答应强大的去中心化,但买卖的削减在理论上会导致网络安全的降低:更少的买卖意味着更少的随机验证者,这添加了单一验证者或一组验证者控制大多数买卖的或许性。假如一个实体控制了大部分的网络活动,那么将歹意活动引进网络就会变得愈加简略。
为了应对上述应战,依据 DAG 的网络现已转向中心化的处理方案:施行中心和谐人,为待验证的买卖供给道路,控制具有更高权限的“证人”验证人,或直接使验证网络私有化。
虽然有这些应战,DAG 网络填补了 Web3 生态体系中的一个重要空白:它们是稍微更中心化一些的高吞吐量网络,能够办理深重的买卖负载,并且跟着 Web3 主流运用的开展,会发现更多的运用事例。
单片式与模块化区块链
去中心化网络是杂乱的体系,由各种组件组成,这些组件彼此操作,创造出无信赖和不行改动的网络。比特币、以太坊、Solana、Polkadot 和 NEAR 等网络都被以为是单片式区块链——它们都是“由单片构成”的网络,一个组件的任何变化都需求整个网络的更新。模块化区块链拿出这些不同的组件并让它们被换成其他组件。
模块化区块链体系的各个组成部分包含:
-
履行层:买卖履行和智能合约
-
结算层:买卖验证、买卖结算
-
共同层:共同机制
-
数据可用性:同享账本
经过将体系拆分成多个组件,能够对每个组件进行优化,提高每个组件的功率和安全性。Layer 2,将在本系列的下一部分中详细介绍,能够说是进入模块化的榜首步。Layer 2 卸载了履行层,在一个独自的网络上履行买卖和智能合约,并将结果反馈给 Layer 1 单体网络,在那里办理结算、共同和同享账本。
虽然模块化有许多优点,但模块化体系只要在其最薄弱的环节才会强大。有了模块化组件,单个组件就有或许更简略成为方针。此外,给网络添加模块化也引进了一个新的杂乱程度,不管是从技能视点还是从网络原生代币的价值视点,都要保证网络的正常运转。假如结算层能够被另一个运用不同代币的结算层所替代,那么一个网络首先要证明代币的存在是有难度的。
虽然有这些应战,模块化区块链的概念为新项目和新技能的开展供给了一个令人兴奋的方向,这能够协助扩大和开展 Web3 生态体系。盛行的模块化区块链项目包含 Celestia 和 Cosmos.
Layer 1 网络总结
Web3 是一个巨大的概念,结合了区块链、加密和树立在它们之上的生态体系以及相关技能。
比特币是普及去中心化区块链技能的 layer 1 网络,而以太坊是供给准图灵齐备核算功用的网络,完成了智能合约。正是经过对早期区块的数据进行哈希运算来串联数据块的主意,再加上在许多节点上分发全部存储数据的副本,才完成了不行更改性和数据的永久性。除了这些技能原素,节点根底设施也有必要到位,才干发挥效果:假如网络上只要一个节点,那么网络本质上是中心化的,并面临着中心化的应战:数据能够被改动,被删除,对它的拜访能够被节点约束。
除了根底数据结构,还有一个问题是网络上的节点怎么知道供给给它们的数据是否正确。这被归纳为“拜占庭将军的问题”。比特币经过其作业证明(Proof-of-Work)共同算法处理了这个问题,该算法要求网络上的节点处理核算量大的加密难题,以证明他们现已完成了验证一个区块所需的验证作业。存在替代性的共同算法,例如 Proof-of-Stake,它需求的能量要少得多,并且被以为对环境更好。
比特币和以太坊是编撰本文时最受欢迎的两个区块链网络,它们运用的记账方式有很大的不同。比特币网络运用 UTXO 方式,而以太坊网络运用账户模型。UTXO 模型能够被以为是一个 "验证体系",每一个 UTXO 都是一个买卖的账单。账户模型更像一个账户和余额的数据库,跟着每个新区块被添加到区块链上而更新。
以太坊的核算组件被称为“以太坊虚拟机”,答应履行智能合约。智能合约是存储在去中心化区块链网络上的运用程序,能够依据可编程的触发规范自主履行。依据你所运用的区块链,智能合约能够用 Solidity、Rust 或其他编程言语编写。
智能合约的规范化是必要的,以完成智能合约之间更好的互操作性。ERC 是现已在以太坊文档中固化的编码规范,是“成功”的 EIP. EIP 是以太坊生态体系中任何人都能够提出的主张,并开放给任何人检查、评论和投票。假如一个 EIP 被投票经过,提议的变化就会被运用到网络中。四个最盛行的 ERC 代币规范是 ERC-20(同质化代币),ERC-721(非同质化代币,或“NFT”),ERC-1155 (多元代币)和 ERC-4626(金库规范).
虽然区块链一直是 Web3 去中心化网络最盛行的账本格局,但跟着现有的结构被调整为特定的用例,替代格局现已出现了。有向无环图(DAG)是这种替代结构的一个比如,它依赖于验证买卖而不是完整的区块。模块化网络是咱们需求从头考虑现有结构这一主意的延伸。模块化网络旨在将分散的网络分成不同的功用层,每个功用层都能够独自优化。
结语
这便是《把握 Web3 根底知识》系列的榜首部分,感谢您的阅览!假如你喜爱这篇文章,请考虑分享它!假如你对这篇文章有任何反馈,或许想评论它的内容,请在 Twitter 上联络 @0xPhillan.
此时快讯
【2022-09-27 02:50】【Injective宣布将推出新项目Project X,包含一键式Launchpad】9月27日消息,Injective宣布将推出新项目Project X,将提供零无常损失(IL)的AMM、用于做市和被动收益的策略金库,以及发行新代币的一键式Launchpad。