從節點到網路:掌握 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 .