從節點到網絡:掌握 Web3 基礎知識

語言: CN / TW / HK

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) 。哈希化是將一串字符轉化為另一個通常為固定長度的值的過程。當一個哈希算法是確定的,就意味着在相同的輸入下,每次的輸出都是一樣的。然而,如果原始字符串的一個字符發生變化,哈希的輸出就會完全改變,以至於無法推斷出與原始字符串的關係。請看下面的 B itcoin 與 b itcoin 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 的創新之處在於兩個方面:

  1. EVM 實現了世界狀態的去中心化計算,包括執行有點複雜的智能合約的計算邏輯

  2. 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 .