免責(zé)聲明:本文旨在傳遞更多市場(chǎng)信息,不構(gòu)成任何投資建議。文章僅代表作者觀點(diǎn),不代表MarsBit官方立場(chǎng)。
小編:記得關(guān)注哦
來(lái)源:MarsBit
Web3龐大而又復(fù)雜,結(jié)合了各種組件、技術(shù)和概念。無(wú)論你是 Web3、區(qū)塊鏈和加密貨幣的新手還是老手,通過(guò)這篇稿子,你都將獲得一個(gè)關(guān)于支持 Web3 的各種組件的高層次概述,使你能夠理解每個(gè)組件的目的和好處。具體來(lái)說(shuō),這個(gè)系列的目的是:
1. 提供 Web3 基本組件的概述
2. 評(píng)估各種組件的目的
我們將 Web3 定義為互聯(lián)網(wǎng)的次迭代,將如今的互聯(lián)網(wǎng)中我們所喜愛(ài)的東西與可驗(yàn)證的數(shù)字所有權(quán)、開(kāi)放系統(tǒng)、透明度和不可更改性相結(jié)合。Web3、區(qū)塊鏈和加密是三個(gè)密切相關(guān)的主題,但在本篇中會(huì)被視為三個(gè)獨(dú)立的術(shù)語(yǔ)。
· 區(qū)塊鏈:一種技術(shù)創(chuàng)新,能夠?qū)崿F(xiàn)可驗(yàn)證的數(shù)字所有權(quán)、透明度和不可更改性
· Crypto:加密貨幣的簡(jiǎn)稱(chēng),描述了區(qū)塊鏈網(wǎng)絡(luò)上加密安全的代幣
· Web3:包括區(qū)塊鏈、加密貨幣,以及建立在它們之上的所有生態(tài)系統(tǒng)和創(chuàng)新
要了解 Web3,我們必須首先了解基礎(chǔ)的區(qū)塊鏈和加密技術(shù)。雖然 Web3 仍然是一個(gè)相對(duì)年輕的概念,比特幣在 2009 年才推出,但隨著新的技術(shù)創(chuàng)新以瘋狂的速度進(jìn)入市場(chǎng),這個(gè)行業(yè)正在迅速發(fā)展。
我希望這個(gè)系列能幫助你深入鉆研 Web3,并能幫助你找到可以在這個(gè)系列之外自己研究的感興趣的領(lǐng)域。在每一個(gè)主題中,都可以找到幾十個(gè)更深入的補(bǔ)充材料的鏈接,以幫助引導(dǎo)你找到有用的內(nèi)容。
這個(gè)系列分為三個(gè)部分,你所在的第一個(gè)部分涵蓋了從 Web3 節(jié)點(diǎn)基礎(chǔ)設(shè)施到 layer 1 區(qū)塊鏈網(wǎng)絡(luò)如何工作的所有內(nèi)容。下一篇文章將介紹 layer 2、互操作性和建立在本篇文章所概述的基元上的龐大的 dApp 生態(tài)系統(tǒng)。最后,最后一塊將涵蓋鏈外環(huán)境和鏈上/鏈下通信。
Web3 基礎(chǔ)設(shè)施概述
我們將 Web3 基礎(chǔ)設(shè)施分為多個(gè)部分,反映了鏈上生態(tài)系統(tǒng)、支持鏈上生態(tài)系統(tǒng)的鏈下環(huán)境以及將去中心化的網(wǎng)絡(luò)相互連接并允許這些網(wǎng)絡(luò)與鏈下環(huán)境連接的中間件。
· 鏈上生態(tài)系統(tǒng)
o 節(jié)點(diǎn)層:挖礦/驗(yàn)證節(jié)點(diǎn)、節(jié)點(diǎn)客戶(hù)端軟件、挖礦/盯盤(pán)池
o 網(wǎng)絡(luò)層:
§ 第一層網(wǎng)絡(luò):?jiǎn)误w網(wǎng)絡(luò)、模塊化網(wǎng)絡(luò)、共識(shí)(PoW、PoS)、共享賬本技術(shù)、虛擬機(jī)與 EVM 兼容、智能合約和 ERC 代幣標(biāo)準(zhǔn)
§ 第二層網(wǎng)絡(luò):閃電網(wǎng)絡(luò)、optimistic rollup、零知識(shí) rollup
o 去中心化的應(yīng)用程序(dApp)層
· 鏈外環(huán)境:分析、審計(jì)與安全、錢(qián)包、中心化交易所(CEX)、開(kāi)發(fā)者工具(框架、IDE)、去中心化云(存儲(chǔ)、計(jì)算、索引)。
· 互操作性層(“中間件”):
o 網(wǎng)絡(luò)互操作性:鏈橋、原子 swap
o 鏈上/鏈下通信工具。區(qū)塊鏈 API、Oracle
Web3 生態(tài)系統(tǒng)圖譜
鏈上生態(tài)系統(tǒng)
將節(jié)點(diǎn)層高亮的 Web3 生態(tài)系統(tǒng)圖譜
鏈上生態(tài)系統(tǒng)分為三個(gè)主要層:
· 去中心化的應(yīng)用程序(dApp)層
· 網(wǎng)絡(luò)層
· 節(jié)點(diǎn)層
這三層結(jié)合在一起,實(shí)現(xiàn)了 Web3 最著名的由智能合約驅(qū)動(dòng)的生態(tài)系統(tǒng)和應(yīng)用。我們從節(jié)點(diǎn)層開(kāi)始看鏈上的生態(tài)系統(tǒng),然后一直到 dApp 層。
節(jié)點(diǎn)層
這一層也經(jīng)常被稱(chēng)為硬件層,因?yàn)樵谶@一層,硬件以及與操作硬件參與特定區(qū)塊鏈網(wǎng)絡(luò)有關(guān)的一切都被設(shè)置好了。
節(jié)點(diǎn)客戶(hù)端
節(jié)點(diǎn)是一個(gè)服務(wù)器,它運(yùn)行一個(gè)被稱(chēng)為客戶(hù)端的網(wǎng)絡(luò)專(zhuān)用軟件,它允許節(jié)點(diǎn)參與網(wǎng)絡(luò)的區(qū)塊創(chuàng)建過(guò)程,允許訪問(wèn)整個(gè)區(qū)塊鏈的歷史數(shù)據(jù),并允許執(zhí)行 RPC 命令(在 Layer1部分有更多介紹)。RPC 是指遠(yuǎn)程程序調(diào)用,它允許節(jié)點(diǎn)調(diào)用和執(zhí)行某些命令。
在撰寫(xiě)這篇文章時(shí),按市值計(jì)算,最大的兩個(gè)區(qū)塊鏈網(wǎng)絡(luò)是比特幣和以太坊。雖然參與每個(gè)網(wǎng)絡(luò)有不同的要求,但它們都需要一個(gè)符合客戶(hù)硬件規(guī)格的服務(wù)器(任何計(jì)算機(jī)),一個(gè)互聯(lián)網(wǎng)連接,以及客戶(hù)端軟件。對(duì)于比特幣,最流行的客戶(hù)端軟件是Bitcoin Core,而對(duì)于以太坊,最流行的客戶(hù)端是GETH(Go Ethereum).
Bitcoin Core 客戶(hù)端和 GETH 客戶(hù)端的系統(tǒng)要求
客戶(hù)端還編纂了區(qū)塊鏈的規(guī)則,并確保任何被驗(yàn)證的新區(qū)塊也遵守同樣的規(guī)則。這很重要,因?yàn)槿绻粋€(gè)節(jié)點(diǎn)驗(yàn)證了一個(gè)其他節(jié)點(diǎn)不接受的區(qū)塊,網(wǎng)絡(luò)就會(huì)分叉:一組節(jié)點(diǎn)遵循一套規(guī)則,而其余節(jié)點(diǎn)遵循另一套規(guī)則。雖然他們可能共享相同的歷史,但在不同的驗(yàn)證規(guī)則被引入的那一刻,一個(gè)新的鏈被創(chuàng)建并只被接受新規(guī)則的節(jié)點(diǎn)所接受。
一個(gè)區(qū)塊鏈和一個(gè)分叉鏈共享同一個(gè)區(qū)塊歷史
雖然以上是最流行的客戶(hù)端,但它們并不是可以用來(lái)參與區(qū)塊鏈網(wǎng)絡(luò)的唯一客戶(hù)端。只要其他客戶(hù)端使用相同的驗(yàn)證規(guī)則,他們就可以驗(yàn)證區(qū)塊并為區(qū)塊鏈作出貢獻(xiàn)。
· 比特幣客戶(hù)端
· 以太坊客戶(hù)端
要閱讀更多關(guān)于區(qū)塊鏈如何工作的信息,請(qǐng)?zhí)?Layer 1 網(wǎng)絡(luò)部分。
節(jié)點(diǎn)基礎(chǔ)設(shè)施供應(yīng)商
通常鼓勵(lì)普通用戶(hù)運(yùn)行自己的節(jié)點(diǎn),以支持公共網(wǎng)絡(luò)的去中心化。當(dāng)更多的用戶(hù)運(yùn)行他們自己的節(jié)點(diǎn)時(shí),單個(gè)行為者積累大多數(shù)運(yùn)行節(jié)點(diǎn)并攻擊網(wǎng)絡(luò)的機(jī)會(huì)就會(huì)減少。用戶(hù)被鼓勵(lì)通過(guò)區(qū)塊獎(jiǎng)勵(lì)和交易費(fèi)用來(lái)運(yùn)行他們自己的節(jié)點(diǎn),網(wǎng)絡(luò)將這些費(fèi)用分配給節(jié)點(diǎn)運(yùn)營(yíng)商。
盡管有這些激勵(lì)措施,用戶(hù)不愿意自己建立節(jié)點(diǎn)的原因有很多:復(fù)雜的技術(shù)設(shè)置,購(gòu)買(mǎi)必要硬件的前期資金有限,或者只是暫時(shí)需要節(jié)點(diǎn)。這就是節(jié)點(diǎn)基礎(chǔ)設(shè)施供應(yīng)商的作用。這些供應(yīng)商負(fù)責(zé)節(jié)點(diǎn)的設(shè)置和操作,為客戶(hù)提供端到端的服務(wù)。一些專(zhuān)門(mén)從事節(jié)點(diǎn)基礎(chǔ)設(shè)施的大型供應(yīng)商包括 Blockdaemon和Atlas.
這些節(jié)點(diǎn)基礎(chǔ)設(shè)施供應(yīng)商的一個(gè)經(jīng)常被忽視的目的是為那些尚未建立強(qiáng)大的、去中心化的節(jié)點(diǎn)網(wǎng)絡(luò)的新區(qū)塊鏈項(xiàng)目建立節(jié)點(diǎn)。這些較新的網(wǎng)絡(luò)可以利用節(jié)點(diǎn)基礎(chǔ)設(shè)施供應(yīng)商來(lái)啟動(dòng)一個(gè)全球分布式網(wǎng)絡(luò),而不需要在每個(gè)國(guó)家建立自己的基礎(chǔ)設(shè)施。
礦池和質(zhì)押提供商
節(jié)點(diǎn)基礎(chǔ)設(shè)施提供商為客戶(hù)建立節(jié)點(diǎn),而挖礦池和質(zhì)押提供商則運(yùn)營(yíng)自己的節(jié)點(diǎn),但允許用戶(hù)在其節(jié)點(diǎn)下匯集資源。這增加了節(jié)點(diǎn)從網(wǎng)絡(luò)中獲得區(qū)塊獎(jiǎng)勵(lì)和交易費(fèi)收入的可能性。對(duì)于想把自己的閑置硬件投入使用的用戶(hù)來(lái)說(shuō),這意味著他們可以加入一個(gè)礦池,而不需要任何復(fù)雜的技術(shù)設(shè)置,并開(kāi)始用他們現(xiàn)有的資源賺取收入。
不同共識(shí)機(jī)制的網(wǎng)絡(luò)節(jié)點(diǎn)操作有一些細(xì)微差別?;旧希褂?span id="uuuu88u" class="candidate-entity-word" data-gid="17502169">工作證明的網(wǎng)絡(luò)匯集了計(jì)算資源,而權(quán)益證明的網(wǎng)絡(luò)匯集了網(wǎng)絡(luò)代幣。對(duì)于工作證明網(wǎng)絡(luò)來(lái)說(shuō),礦池大大降低了進(jìn)入的技術(shù)門(mén)檻,而對(duì)于權(quán)益證明網(wǎng)絡(luò)來(lái)說(shuō),質(zhì)押提供者則大大降低了進(jìn)入的財(cái)務(wù)門(mén)檻(所需的最低質(zhì)押)。更多細(xì)節(jié)將在共識(shí)部分介紹。
一些最大的礦池包括 Foundry USA和F2POOL,而一些最大的質(zhì)押提供商包括Lido和Rocketpool.
節(jié)點(diǎn)層總結(jié)
Web3 的節(jié)點(diǎn)層由數(shù)千個(gè)全球分布的節(jié)點(diǎn)組成,每個(gè)屬于特定網(wǎng)絡(luò)的節(jié)點(diǎn)都運(yùn)行該網(wǎng)絡(luò)所需的客戶(hù)端軟件。只要客戶(hù)端軟件的驗(yàn)證規(guī)則與網(wǎng)絡(luò)上的其他節(jié)點(diǎn)相同,該節(jié)點(diǎn)就可以正常運(yùn)行,而不會(huì)造成區(qū)塊鏈的分叉。
雖然任何人都可以在去中心化公鏈網(wǎng)絡(luò)上運(yùn)行自己的節(jié)點(diǎn),但節(jié)點(diǎn)基礎(chǔ)設(shè)施供應(yīng)商專(zhuān)門(mén)負(fù)責(zé)設(shè)置和運(yùn)營(yíng)運(yùn)行節(jié)點(diǎn)和啟動(dòng)網(wǎng)絡(luò)所需的硬件。
最后,礦池和質(zhì)押供應(yīng)商的行為降低了采礦和質(zhì)押業(yè)務(wù)的進(jìn)入門(mén)檻。這使得用戶(hù)可以參與挖礦和質(zhì)押活動(dòng),賺取網(wǎng)絡(luò)獎(jiǎng)勵(lì),而不必滿(mǎn)足全部網(wǎng)絡(luò)要求。
網(wǎng)絡(luò)層
區(qū)塊鏈網(wǎng)絡(luò)建立在上述的節(jié)點(diǎn)基礎(chǔ)設(shè)施之上。網(wǎng)絡(luò)層由各部分組成,包括各種技術(shù),基本層是 layer 1 網(wǎng)絡(luò)、layer 2 網(wǎng)絡(luò)和在這些網(wǎng)絡(luò)之間進(jìn)行通信的互操作層。
Layer 1 網(wǎng)絡(luò)
將網(wǎng)絡(luò)層高亮的 Web3 生態(tài)系統(tǒng)圖譜
比特幣、以太坊和 Solana可能是在撰寫(xiě)本文時(shí)最知名的 Layer 1 網(wǎng)絡(luò)。Layer 1 網(wǎng)絡(luò)是指 Web3 生態(tài)系統(tǒng)中結(jié)算交易的主要網(wǎng)絡(luò)。Layer 2 網(wǎng)絡(luò)是作為 Layer 1 網(wǎng)絡(luò)的更深層存在的,交易可以被降級(jí)到 Layer 2 網(wǎng)絡(luò)上(在我的下一篇文章中會(huì)有更多介紹)。雖然在架構(gòu)上有很大的不同,但它們都依賴(lài)于一組類(lèi)似的架構(gòu)基元。
· 它們都有一個(gè)共享賬本,跟蹤網(wǎng)絡(luò)上的交易
· 它們都采用機(jī)制來(lái)實(shí)現(xiàn)與哪些交易和區(qū)塊被認(rèn)為是有效的共識(shí)
· 它們都有一種方法來(lái)計(jì)算發(fā)送到網(wǎng)絡(luò)的命令(以太坊、 Solana 和其他 EVM 兼容鏈的虛擬機(jī),以及比特幣網(wǎng)絡(luò)的 Bitcoin Script)
· 在下面的章節(jié)中,我們將分別研究這三個(gè)要素,并剖析我們?nèi)绾螐慕灰椎絽^(qū)塊鏈。
共享賬本
所有去中心化的區(qū)塊鏈網(wǎng)絡(luò)都有一個(gè)共享賬本。事實(shí)上,區(qū)塊鏈就是共享賬本。讓我們退一步來(lái)說(shuō):賬本是一個(gè)企業(yè)經(jīng)濟(jì)活動(dòng)的記錄,用來(lái)追蹤金錢(qián)的轉(zhuǎn)移或資產(chǎn)所有權(quán)的轉(zhuǎn)移。術(shù)語(yǔ)共享賬本意味著賬本不是由一個(gè)單一實(shí)體持有和管理,而是由許多實(shí)體持有和管理。
在去中心化的區(qū)塊鏈網(wǎng)絡(luò)中,區(qū)塊鏈(網(wǎng)絡(luò)上所有活動(dòng)的分類(lèi)賬)被保存在網(wǎng)絡(luò)上的所有節(jié)點(diǎn)上。如果活動(dòng)的賬本只由一個(gè)中心化的機(jī)構(gòu)管理和存儲(chǔ),我們會(huì)遇到以下挑戰(zhàn)。
· 審查和排斥(見(jiàn)用戶(hù)被 PayPal 平臺(tái)封禁)
· 記錄管理人的瀆職行為(見(jiàn) Luckin Coffee 虛報(bào)財(cái)務(wù)數(shù)據(jù))
· 記錄的丟失(見(jiàn)亞歷山大圖書(shū)館的毀滅)
如果賬本存儲(chǔ)在全球數(shù)百甚至數(shù)千個(gè)節(jié)點(diǎn)上,我們就會(huì)得到一個(gè)很難被故意和無(wú)意篡改或破壞的系統(tǒng)。如果一個(gè)節(jié)點(diǎn)倒下了,還有許多其他節(jié)點(diǎn),用戶(hù)可以與之連接,繼續(xù)與賬本進(jìn)行互動(dòng)。
中心化和非中心化系統(tǒng)中節(jié)點(diǎn)故障的影響
然而,這個(gè)系統(tǒng)確實(shí)帶來(lái)了其他挑戰(zhàn):網(wǎng)絡(luò)上的節(jié)點(diǎn)如何就什么是正確或有效的賬目條目達(dá)成一致?這就是共識(shí)算法的作用。
共識(shí)
在區(qū)塊鏈網(wǎng)絡(luò)中,共識(shí)一詞指的是網(wǎng)絡(luò)上的節(jié)點(diǎn)之間就哪些賬本條目(交易和區(qū)塊)是有效的并被節(jié)點(diǎn)接受的一般協(xié)議。
在學(xué)術(shù)界,這個(gè)問(wèn)題被稱(chēng)為拜占庭將軍問(wèn)題。這個(gè)問(wèn)題描述了這樣一種情況:一個(gè)系統(tǒng)的行動(dòng)者必須在戰(zhàn)略上達(dá)成一致,以避免災(zāi)難性的失敗,但系統(tǒng)中的一些行動(dòng)者是不可靠的。
拜占庭將軍問(wèn)題
在這個(gè)假想的場(chǎng)景中,有三個(gè)行為者,他們必須協(xié)調(diào)他們?cè)诎菡纪?zhàn)爭(zhēng)中的下一步行動(dòng),以避免被敵人攻破。三個(gè)行為體中的一個(gè)是惡意的,向其余各方轉(zhuǎn)發(fā)不一致的信息。系統(tǒng)中的誠(chéng)實(shí)(非惡意)行為者如何知道該相信誰(shuí)?或者換個(gè)說(shuō)法:系統(tǒng)中的所有行為者如何能就接受哪條消息達(dá)成共識(shí)?
這個(gè)問(wèn)題具有重要意義,因?yàn)殡S著更多的行動(dòng)者進(jìn)入系統(tǒng),(錯(cuò)誤)交流的復(fù)雜性會(huì)成倍增長(zhǎng)。
隨著參與者的增多,拜占庭將軍問(wèn)題的復(fù)雜程度指數(shù)級(jí)上升
第一個(gè)在全球范圍內(nèi)成功解決這一挑戰(zhàn)的系統(tǒng)是比特幣網(wǎng)絡(luò)及其工作證明算法。
工作證明(PoW)
比特幣網(wǎng)絡(luò)的工作證明算法(也被稱(chēng)為 PoW)解決了拜占庭將軍的問(wèn)題,要求任何信息必須經(jīng)過(guò)某種驗(yàn)證才能被節(jié)點(diǎn)接受。任何沒(méi)有經(jīng)過(guò)驗(yàn)證的信息都不被接受為有效信息,并被節(jié)點(diǎn)拒絕。
說(shuō)明比特幣網(wǎng)絡(luò)工作證明共識(shí)算法的流程圖
驗(yàn)證過(guò)程也需要計(jì)算資源,這使得偽造驗(yàn)證變得異常困難。這也是“工作證明”一詞的由來(lái):“向我證明你已經(jīng)做了必要的工作,讓我接受你的信息”。
讓我們從理論到實(shí)踐,更深入地挖掘交易、區(qū)塊和 PoW 過(guò)程的機(jī)制。別擔(dān)心——我們會(huì)保證深入淺出的!
區(qū)塊結(jié)構(gòu)
比特幣區(qū)塊是儲(chǔ)存交易的地方,是精心控制的信息單位,一旦完成加密拼圖,就會(huì)在整個(gè)網(wǎng)絡(luò)中廣播。
比特幣網(wǎng)絡(luò)的一個(gè)區(qū)塊由兩個(gè)主要部分組成。
· 區(qū)塊頭
· 交易列表
交易列表就像它聽(tīng)起來(lái)一樣:它是一個(gè)節(jié)點(diǎn)收到并包含在一個(gè)區(qū)塊中的交易列表。在比特幣網(wǎng)絡(luò)中,交易是比特幣網(wǎng)絡(luò)上的比特幣轉(zhuǎn)移(注意:英文中小寫(xiě) b 開(kāi)頭的比特幣是指比特幣資產(chǎn),而大寫(xiě) B 開(kāi)頭的比特幣是指比特幣網(wǎng)絡(luò))。比特幣網(wǎng)絡(luò)是一個(gè)共享的公共賬本,追蹤比特幣資產(chǎn)的流動(dòng);因此,比特幣網(wǎng)絡(luò)上的交易是比特幣在地址之間的轉(zhuǎn)移。
比特幣使用未花費(fèi)交易產(chǎn)出,也被稱(chēng)為 UTXO進(jìn)行交易。交易和 UTXO 將在UTXO 模型與賬戶(hù)模型部分進(jìn)一步介紹。
區(qū)塊頭是事情開(kāi)始變得有趣的地方。雖然交易的數(shù)量和每筆交易的轉(zhuǎn)賬金額因區(qū)塊而異,但區(qū)塊頭的元素對(duì)每筆交易都是一樣的。
比特幣區(qū)塊的剖析
雖然區(qū)塊頭包括許多元素,但每個(gè)元素都對(duì)系統(tǒng)至關(guān)重要,為了介紹的目的,我們將進(jìn)一步詳細(xì)介紹以下內(nèi)容。
· 前一個(gè)區(qū)塊頭的哈希值:前一個(gè)區(qū)塊的所有元素都被哈?;?/p>
· 難度目標(biāo):確定“前導(dǎo)零”的數(shù)量,從而確定挖礦的難度
· Nonce:一個(gè)任意的數(shù)字【nonce 是“nonsense”的縮寫(xiě)】
· Merkle root:該區(qū)塊內(nèi)所有交易的哈希輸出
從區(qū)塊到區(qū)塊鏈
在我們繼續(xù)之前,我們需要簡(jiǎn)單介紹一下哈希算法(hashing)。哈?;菍⒁淮址D(zhuǎn)化為另一個(gè)通常為固定長(zhǎng)度的值的過(guò)程。當(dāng)一個(gè)哈希算法是確定的,就意味著在相同的輸入下,每次的輸出都是一樣的。然而,如果原始字符串的一個(gè)字符發(fā)生變化,哈希的輸出就會(huì)完全改變,以至于無(wú)法推斷出與原始字符串的關(guān)系。請(qǐng)看下面的Bitcoin 與bitcoin SHA256 哈希算法輸出的比較。
SHA256 哈希算法的輸出和字節(jié)長(zhǎng)度
在比特幣網(wǎng)絡(luò)中,一旦一個(gè)區(qū)塊被開(kāi)采出來(lái),該區(qū)塊的頭就會(huì)被哈?;?,并作為一個(gè)輸入包括在下一個(gè)區(qū)塊中。因?yàn)槊總€(gè)區(qū)塊的前一個(gè)標(biāo)題的哈希值被包含在下一個(gè)區(qū)塊中,所以就形成了一個(gè)由區(qū)塊構(gòu)成的鏈:這就是區(qū)塊鏈。
使用前一個(gè)區(qū)塊頭的哈希值連鎖的區(qū)塊
在任何區(qū)塊中的任何變化都會(huì)破壞這條鏈,因?yàn)橐呀?jīng)包含在下一個(gè)區(qū)塊中的哈希輸出將與新的哈希輸出不同。因此,這樣的變化會(huì)被網(wǎng)絡(luò)上的節(jié)點(diǎn)所拒絕。
由于調(diào)整交易而導(dǎo)致的斷鏈
Merkle Root
Merkle tree是一種數(shù)據(jù)結(jié)構(gòu),其中數(shù)據(jù)結(jié)構(gòu)中的元素被哈希和重哈希遞歸,直到只剩下一個(gè)元素。這個(gè)最后剩下的元素就是 Merkle Root.
Merkle Tree 和 Merkle Root
Merkle tree 有一個(gè)有趣的數(shù)學(xué)特性,即在數(shù)學(xué)上,在只提供 Merkle root 和一個(gè)元素的情況下,可以證明這個(gè)元素是 Merkle tree 的一部分。
在比特幣網(wǎng)絡(luò)中,存儲(chǔ)在區(qū)塊頭中的 Merkle root 是該區(qū)塊中包含的所有交易的遞歸哈希輸出。這意味著,如果任何交易被調(diào)整,Merkle root 也將改變,這也將改變整個(gè)區(qū)塊頭的哈希輸出。這將再次導(dǎo)致區(qū)塊的無(wú)效化。
工作證明中的“工作”
我們知道了什么是哈希算法、區(qū)塊是如何結(jié)構(gòu)化的和區(qū)塊是如何被鏈起來(lái)并形成區(qū)塊鏈的,現(xiàn)在我們終于可以更深入地了解工作證明實(shí)際是如何工作的?;氐桨菡纪④姷膯?wèn)題,上面提到的驗(yàn)證信息實(shí)際上是區(qū)塊鏈中的一個(gè)區(qū)塊。
為了使一個(gè)區(qū)塊得到驗(yàn)證,需要找到一個(gè)符合特定標(biāo)準(zhǔn)的哈希值。還記得僅僅一個(gè)位元(bit)的變化就會(huì)極大地改變哈希值的輸出嗎?這正是比特幣網(wǎng)絡(luò)的 PoW 算法尋找目標(biāo)哈希值的方法:Nonce 是一個(gè)任意的數(shù)字,它被調(diào)整以改變區(qū)塊頭的哈希值輸出。如果哈希值輸出不符合目標(biāo)哈希值,nonce 會(huì)再次被調(diào)整。這個(gè)過(guò)程不斷重復(fù),直到區(qū)塊頭的哈希值滿(mǎn)足目標(biāo)條件。一旦目標(biāo)條件得到滿(mǎn)足,區(qū)塊頭就算是得到了驗(yàn)證,區(qū)塊會(huì)被廣播給網(wǎng)絡(luò)上的其他節(jié)點(diǎn),讓它們把新的區(qū)塊附加到它們的區(qū)塊鏈副本中。
工作證明區(qū)塊尋找算法的說(shuō)明
目標(biāo)條件,或預(yù)期的哈希值,是由它有多少個(gè)前導(dǎo)零定義的。如果生成的哈希值有足夠的前導(dǎo)零,也就是說(shuō),已經(jīng)完成了尋找符合目標(biāo)條件的哈希值的工作,那么網(wǎng)絡(luò)上的節(jié)點(diǎn)就接受該區(qū)塊為有效:該區(qū)塊被認(rèn)為是“已挖礦”。
為了更好地理解這個(gè)過(guò)程,請(qǐng)瀏覽 Github 上的這個(gè)哈希算法模擬器。輸入字符“bitcoin”,并在末尾添加數(shù)字,從 0 開(kāi)始,以 1 的增量不斷增加,直到達(dá)到一個(gè)前導(dǎo)零(例如,bitcoin0,bitcoin1,等等)。你會(huì)注意到,為了找到一個(gè)前導(dǎo)零,即哈希值的第一個(gè)字符是零,你只需要將數(shù)字增加到 3(“bitcoin3”)。現(xiàn)在試著找到兩個(gè)前導(dǎo)零。劇透:第一個(gè)有兩個(gè)前導(dǎo)零的哈希結(jié)果是 “bitcoin230”.
工作證明算法:搜索前導(dǎo)零
還有更多的規(guī)則需要節(jié)點(diǎn)遵守,比如最長(zhǎng)的鏈總是有效的鏈(防止整個(gè)區(qū)塊鏈被覆蓋),已經(jīng)開(kāi)采的區(qū)塊必須有一個(gè)在網(wǎng)絡(luò)時(shí)間一定閾值內(nèi)的時(shí)間戳(這樣最新的區(qū)塊就不會(huì)被覆蓋),還有圍繞如何確定網(wǎng)絡(luò)難度(目標(biāo)哈希的前導(dǎo)零數(shù)量)的復(fù)雜機(jī)制。有興趣的讀者可以瀏覽 Bitcoin.org或Bitcoin Wiki了解更多細(xì)節(jié)。
范式轉(zhuǎn)變
上述機(jī)制,在歷史上第一次允許交易被獨(dú)立確認(rèn)和驗(yàn)證,而不需要第三方見(jiàn)證和批準(zhǔn)交易。與其將交易提交給遭受中心化挑戰(zhàn)的銀行,不如將其發(fā)送到一個(gè)獨(dú)立的節(jié)點(diǎn)網(wǎng)絡(luò),這些節(jié)點(diǎn)可以在沒(méi)有干預(yù)的情況下自主地處理交易。這種技術(shù)范式的轉(zhuǎn)變和對(duì)賬本的重新認(rèn)識(shí)是今天 Web3 生態(tài)系統(tǒng)賴(lài)以建立的基本要素。
此外,由于加入這些網(wǎng)絡(luò)的唯一要求是可以運(yùn)行節(jié)點(diǎn)軟件的計(jì)算設(shè)備和互聯(lián)網(wǎng)連接,任何人都可以作為獨(dú)立的節(jié)點(diǎn)加入網(wǎng)絡(luò),增強(qiáng)網(wǎng)絡(luò)的分散性。
批評(píng)意見(jiàn)
雖然像比特幣網(wǎng)絡(luò)這樣的 PoW 網(wǎng)絡(luò)有很多節(jié)點(diǎn)(根據(jù) bitnodes.io,截至 2022 年 9 月 15 日,有近 15000 個(gè)節(jié)點(diǎn)),但有人批評(píng)說(shuō),由于網(wǎng)絡(luò)上的高度競(jìng)爭(zhēng),單個(gè)節(jié)點(diǎn)的準(zhǔn)入門(mén)檻太高。一個(gè)節(jié)點(diǎn)擁有的哈希能力(即計(jì)算資源)越多,該節(jié)點(diǎn)就越有可能首先解決哈希難題,因?yàn)樗芤员染W(wǎng)絡(luò)上其他節(jié)點(diǎn)更快的速度進(jìn)行更多的計(jì)算。作為一個(gè)哈希值較低的單一節(jié)點(diǎn)進(jìn)入比特幣網(wǎng)絡(luò),將導(dǎo)致能源成本,而成為第一個(gè)成功開(kāi)采新區(qū)塊的機(jī)會(huì)幾乎不存在。
能源消耗也是一個(gè)備受爭(zhēng)議的話(huà)題:網(wǎng)絡(luò)需要大量的能源,一些估計(jì)指出,比特幣網(wǎng)絡(luò)的年能源消耗超過(guò)挪威。
比特幣估計(jì)年能源消耗。來(lái)源:劍橋 BECI
這些能量被浪費(fèi)在節(jié)點(diǎn)每秒進(jìn)行數(shù)百萬(wàn)次的哈希計(jì)算,尋找哈希。雖然這增加了比特幣網(wǎng)絡(luò)的安全性,但它確實(shí)引出了一個(gè)問(wèn)題,即是否有任何不那么浪費(fèi)的方法來(lái)驗(yàn)證區(qū)塊。這就是權(quán)益證明的由來(lái)。
權(quán)益證明(PoS)
在權(quán)益證明中,節(jié)點(diǎn)被賦予了根據(jù)其在網(wǎng)絡(luò)中的質(zhì)押來(lái)驗(yàn)證一個(gè)區(qū)塊的權(quán)限。這是一種與 PoW 根本不同的方法,大大降低了驗(yàn)證所需的計(jì)算能力。節(jié)點(diǎn)不提供計(jì)算能力,而是將他們的本地網(wǎng)絡(luò)代幣作為抵押品,以換取驗(yàn)證區(qū)塊的機(jī)會(huì)。這從本質(zhì)上消除了基于競(jìng)爭(zhēng)的計(jì)算,增加了能夠成功驗(yàn)證區(qū)塊的節(jié)點(diǎn)的分布。
合并后的以太坊是一個(gè)權(quán)益證明網(wǎng)絡(luò)。它需要用 32 個(gè) ETH 做質(zhì)押才能成為一個(gè)驗(yàn)證者,之后節(jié)點(diǎn)可以參與區(qū)塊驗(yàn)證,從而為網(wǎng)絡(luò)增加新的區(qū)塊作出貢獻(xiàn)。質(zhì)押指的是鎖住代幣,是 PoS 網(wǎng)絡(luò)的基礎(chǔ)。
除了成為驗(yàn)證者的高額前期費(fèi)用外,PoS 網(wǎng)絡(luò)還采用其他方法來(lái)防止惡意行為者擾亂網(wǎng)絡(luò)。一般來(lái)說(shuō),PoS 網(wǎng)絡(luò)還要求多個(gè)節(jié)點(diǎn)同時(shí)驗(yàn)證同一個(gè)區(qū)塊,這就減少了一個(gè)節(jié)點(diǎn)驗(yàn)證錯(cuò)誤或惡意區(qū)塊的可能性。此外,如果發(fā)現(xiàn)一個(gè)節(jié)點(diǎn)有惡意行為,他們的權(quán)益可以被砍掉。這意味著他們?cè)趨f(xié)議中鎖定的網(wǎng)絡(luò)代幣的數(shù)量被從節(jié)點(diǎn)中移除,并被轉(zhuǎn)移到一個(gè)臨時(shí)地址或燒毀。 代幣的燃燒是指通過(guò)將代幣發(fā)送到網(wǎng)絡(luò)上沒(méi)有人可以訪問(wèn)的地址,將其永久地從流通中移除。在以太坊網(wǎng)絡(luò)中,這就是空地址(null address)。
其他共識(shí)機(jī)制
除了工作證明(PoW)和權(quán)益證明(PoS)之外,還有許多為特定網(wǎng)絡(luò)設(shè)計(jì)的具有特定目的的共識(shí)機(jī)制。下面是一份不完全的流行共識(shí)機(jī)制的清單。
· Delegated Proof-of-Stage(DPoS)
· 授權(quán)證明(Proof-of-Authority, PoA)
· 活動(dòng)證明(Proof-of-Activity, PoA)
· Brun 證明(PoB)
· Proof-of-Spacetime(PoSt)
· 歷史證明(Proof-of-History, PoH)
· 實(shí)用拜占庭容錯(cuò)(pBFT)共識(shí)【Practical Byzantine Fault Tolerance (pBFT) Consensus】
共享賬本——會(huì)計(jì)系統(tǒng)(UTXO 與賬戶(hù)模式的對(duì)比)
前面我們提到,區(qū)塊鏈?zhǔn)峭ㄟ^(guò)哈希算法將數(shù)據(jù)塊相互加密連接起來(lái),從而形成一個(gè)賬本。這個(gè)賬本被保存在整個(gè)網(wǎng)絡(luò)的數(shù)千個(gè)節(jié)點(diǎn)上,使賬本在這些網(wǎng)絡(luò)中“共享”。任何賬本,不管是共享區(qū)塊鏈賬本還是傳統(tǒng)會(huì)計(jì)賬本,都需要記賬。記賬指的是如何接受、執(zhí)行交易并將新的余額存儲(chǔ)在區(qū)塊鏈上。在 Web3 中,有兩種主要的記賬模型。
· 未消費(fèi)交易輸出(UTXO)模型(如比特幣網(wǎng)絡(luò))
· 賬戶(hù)模型(The Account Model,如以太坊網(wǎng)絡(luò))
為了幫助理解這些不同的記賬模型,將區(qū)塊鏈視為狀態(tài)機(jī)是有幫助的。狀態(tài)機(jī)是一個(gè)存儲(chǔ)其狀態(tài)的系統(tǒng),其狀態(tài)可以根據(jù)對(duì)設(shè)備的輸入而改變。這意味著,在任何給定的時(shí)間點(diǎn),系統(tǒng)處于某種狀態(tài),隨著對(duì)系統(tǒng)的任何輸入,例如通過(guò)交易,系統(tǒng)的狀態(tài)會(huì)發(fā)生變化。當(dāng)向系統(tǒng)提供輸入并且狀態(tài)發(fā)生變化時(shí),系統(tǒng)就會(huì)經(jīng)歷一個(gè)狀態(tài)轉(zhuǎn)換。
如果我們通過(guò)狀態(tài)機(jī)的視角來(lái)看區(qū)塊鏈,這意味著在任何給定的時(shí)間點(diǎn),區(qū)塊鏈系統(tǒng)處于 n狀態(tài),任何被添加到區(qū)塊鏈的區(qū)塊都會(huì)導(dǎo)致?tīng)顟B(tài)轉(zhuǎn)換和n 1的新?tīng)顟B(tài)。這個(gè)n 1的新?tīng)顟B(tài)考慮到了被添加到新區(qū)塊中的所有交易,導(dǎo)致了一個(gè)新的系統(tǒng)狀態(tài)。
區(qū)塊鏈和交易引發(fā)的狀態(tài)變化
未消費(fèi)交易輸出(UTXO)模型
UTXO 模型和賬戶(hù)模型的區(qū)別在于如何記賬——或記錄交易——的處理。
簡(jiǎn)單來(lái)說(shuō),在 UTXO 模型中,不存在賬戶(hù)余額這種東西。相反,每筆交易都是一張收據(jù),指出誰(shuí)給誰(shuí)發(fā)了多少錢(qián)。這就是未消費(fèi)輸出這個(gè)名字的由來(lái),因?yàn)橛脩?hù)可以轉(zhuǎn)移的余額是他們尚未花費(fèi)的先前交易的多少。
UTXO 模型的工作原理圖解
當(dāng)用戶(hù)想發(fā)送比特幣時(shí),所選 UTXO 內(nèi)的所有比特幣都成為交易輸入(見(jiàn)上圖 UTXO0)。一個(gè)新的 UTXO 被創(chuàng)建,其中包含要發(fā)送的數(shù)量(見(jiàn)上圖 UTXO2)。如果 UTXO 持有的比特幣多于要發(fā)送的比特幣,剩余的比特幣將作為一個(gè)新的 UTXO 送回給用戶(hù)(上圖中有 0.5 個(gè)比特幣需要發(fā)送,但 UTXO0 中持有 2.0 個(gè),所以 UTXO2 包含要發(fā)送的 0.5 個(gè),UTX03 包含返回給發(fā)送方的 1.5 個(gè))。
這也實(shí)現(xiàn)了一個(gè)有趣的特性:由于 UTXO 模型,每一個(gè)原生代幣的來(lái)源都可以追溯到它的創(chuàng)建,因?yàn)槊恳粋€(gè)交易輸出必須有一個(gè)相應(yīng)的輸入。對(duì)于使用 UTXO 模型的比特幣網(wǎng)絡(luò)來(lái)說(shuō),這意味著每個(gè)比特幣都可以追溯到它被挖礦的區(qū)塊。因此,UTXO 模型中不存在余額的概念。相反,余額是網(wǎng)絡(luò)中所有交易收據(jù)的匯總。
網(wǎng)絡(luò)上的每一筆交易都精確地定義了誰(shuí)從哪筆交易的輸入中獲得多少比特幣。然后,系統(tǒng)會(huì)驗(yàn)證交易投入是否未被使用,以及發(fā)送方是否有權(quán)力發(fā)送比特幣,以及接收方是否符合接收比特幣的正確參數(shù)。因此,UTXO 模型可以被認(rèn)為是一個(gè)驗(yàn)證系統(tǒng)。
雖然不包括在前面的例子中,但交給礦工的交易費(fèi)也作為交易的一部分被扣除。UTXO3 不是 1.5 個(gè)幣,而可能是 1.499 個(gè)幣,其中的差額是交易費(fèi)。
帳戶(hù)模型
賬戶(hù)模型更接近于傳統(tǒng)銀行賬戶(hù)的數(shù)字表示。在每個(gè)狀態(tài)轉(zhuǎn)換中,所有賬戶(hù)和余額的集合被存儲(chǔ)起來(lái),而不是像 UTXO 模型中那樣,必須根據(jù)一組收據(jù)來(lái)計(jì)算賬戶(hù)余額。為了開(kāi)始一個(gè)狀態(tài)轉(zhuǎn)換,需要啟動(dòng)一個(gè)交易,指示系統(tǒng)改變余額。然后,系統(tǒng)計(jì)算每個(gè)賬戶(hù)余額的變化,在下一個(gè)狀態(tài)中,新的余額集被存儲(chǔ)。
賬戶(hù)模型的工作原理說(shuō)明
在 UTXO 系統(tǒng)中,每個(gè)交易輸入(從以前的交易中收到的 UTXO)都是單獨(dú)驗(yàn)證的,必須大于輸出,而在賬戶(hù)模型中,賬戶(hù)余額必須大于交易輸出。這意味著,在 UTXO 系統(tǒng)中,多個(gè) UTXO 可以合并并單獨(dú)驗(yàn)證,以創(chuàng)造一個(gè)或多個(gè)交易輸出,而在賬戶(hù)模型中,只有余額需要驗(yàn)證。
如果使用多個(gè) UTXO 作為輸入和 UTXO 模型如何工作
關(guān)于 UTXO 模型與賬戶(hù)模型的更多信息,我強(qiáng)烈建議閱讀 Horizen.io關(guān)于這個(gè)問(wèn)題的這篇內(nèi)容。
虛擬機(jī)(VM)、智能合約和圖靈完備性
虛擬機(jī)是一個(gè)模擬計(jì)算機(jī)的軟件。它取代物理設(shè)備,虛擬計(jì)算機(jī)的所有物理組件作為軟件在另一個(gè)系統(tǒng)中運(yùn)行。例如,一個(gè) Windows 虛擬機(jī)可以在 MacOS 上運(yùn)行,允許整個(gè) windows 系統(tǒng)在 MacOS 內(nèi)運(yùn)行。Windows 虛擬機(jī)的物理組件是用軟件模擬的,所以 Windows 系統(tǒng)是不知道的。
這個(gè)概念也適用于區(qū)塊鏈網(wǎng)絡(luò):一個(gè)單獨(dú)的虛擬機(jī)組件與共享賬本一起存在,它允許計(jì)算任務(wù)被執(zhí)行。這意味著,除了存儲(chǔ)余額(賬戶(hù)模型)或余額變化(UTXO 模型)的共享賬本外,還有一個(gè)單獨(dú)的計(jì)算組件來(lái)計(jì)算余額。這個(gè)計(jì)算組件也可以用于簡(jiǎn)單的余額計(jì)算之外的更復(fù)雜的邏輯。這就是為智能合約鋪平道路的原因——后面會(huì)詳細(xì)介紹。第一個(gè)獲得廣泛成功的此類(lèi)系統(tǒng)是以太坊虛擬機(jī) (EVM)。
Bitcoin Script也可以被認(rèn)為是一個(gè)虛擬機(jī),因?yàn)樗潜忍貛啪W(wǎng)絡(luò)的計(jì)算組件,節(jié)點(diǎn)用它來(lái)驗(yàn)證 UTXO 和執(zhí)行交易。然而,比特幣腳本是相當(dāng)有限的,無(wú)法運(yùn)行像 EVM 那樣的復(fù)雜邏輯。
以太坊虛擬機(jī)(EVM)
EVM 是一個(gè)模擬特定計(jì)算機(jī)系統(tǒng)的軟件,在以太坊節(jié)點(diǎn)上運(yùn)行。EVM 的主要目的是計(jì)算以太坊網(wǎng)絡(luò)的世界狀態(tài),并運(yùn)行智能合約。EVM 的創(chuàng)新之處在于兩個(gè)方面:
1. EVM 實(shí)現(xiàn)了世界狀態(tài)的去中心化計(jì)算,包括執(zhí)行有點(diǎn)復(fù)雜的智能合約的計(jì)算邏輯
2. EVM 能夠在去中心化的區(qū)塊鏈網(wǎng)絡(luò)(智能合約)上自主和無(wú)信任地執(zhí)行代碼
一個(gè)區(qū)塊鏈和一個(gè)虛擬機(jī)(VM)
當(dāng)一個(gè)網(wǎng)絡(luò)聲稱(chēng)“EVM-兼容”時(shí),這意味著該網(wǎng)絡(luò)可以部署和執(zhí)行為以太坊虛擬機(jī)編寫(xiě)的智能合約。EVM 是最流行的虛擬機(jī),并已成為 Web3 中智能合約計(jì)算的事實(shí)標(biāo)準(zhǔn)。 具有 EVM 兼容性允許較新的網(wǎng)絡(luò)通過(guò)使項(xiàng)目更容易移植到他們的網(wǎng)絡(luò)來(lái)引導(dǎo)其生態(tài)系統(tǒng)。這種標(biāo)準(zhǔn)化也使得網(wǎng)絡(luò)之間的代幣橋接更加容易,因?yàn)閮蓚€(gè)網(wǎng)絡(luò)可以運(yùn)行相同的代碼。
關(guān)于 EVM 架構(gòu)的一個(gè)夢(mèng)幻般的自我解釋的深入研究,我引導(dǎo)讀者去看 Takenobu T. 的這篇內(nèi)容(由于“合并”標(biāo)志著以太坊生態(tài)系統(tǒng)在2022 年 9 月 15 日從 PoW 過(guò)渡到 PoS,這個(gè)演講的 PoW 方面已經(jīng)過(guò)時(shí)了)。
智能合約
一個(gè)智能合約是一個(gè)存儲(chǔ)在去中心化網(wǎng)絡(luò)中的程序,當(dāng)滿(mǎn)足特定條件時(shí),可以由虛擬機(jī)自主執(zhí)行。這些條件可以是指當(dāng)網(wǎng)絡(luò)上發(fā)生特定事件或當(dāng)用戶(hù)與智能合約互動(dòng)時(shí)被激活的任何條件。智能合約的復(fù)雜計(jì)算能力也使ERC-20 代幣和NFT(非同質(zhì)化代幣)得以創(chuàng)建。
智能合約和 EVM 是推動(dòng)行業(yè)超越區(qū)塊鏈和加密、實(shí)現(xiàn) Web3 概念的原因:由于這些創(chuàng)新,有可能擁有可組合的應(yīng)用程序,在不可審查的去中心化網(wǎng)絡(luò)上自主運(yùn)行。這些創(chuàng)新的結(jié)合就是 Web3 龐大的 dApp 生態(tài)系統(tǒng)的由來(lái)。
dApp 是去中心化的應(yīng)用程序,它使用智能合約的組合,通常也是一個(gè)容易訪問(wèn)的基于網(wǎng)絡(luò)的前端,以實(shí)現(xiàn)與區(qū)塊鏈網(wǎng)絡(luò)的互動(dòng)。dApp 的智能合約也可以通過(guò)節(jié)點(diǎn)直接訪問(wèn),但是基于網(wǎng)絡(luò)的前端大量減少了訪問(wèn)的障礙。在今天,最知名的 dApp 大概是 Uniswap.
Solidity 語(yǔ)言、Rust 語(yǔ)言和 Bitcoin Script
Solidity是以太坊區(qū)塊鏈上最常用的智能合約的編程語(yǔ)言。開(kāi)發(fā)者用 Solidity 編碼他們的智能合約,將其編譯成字節(jié)碼,然后將字節(jié)碼部署到網(wǎng)絡(luò)中。Solidity 是一種面向?qū)ο蠛挽o態(tài)類(lèi)型的編程語(yǔ)言,它是基于 C 、Python 和 JavaScript 而建立的。
Rust是Solana、Polkadot和NEAR鏈上最受歡迎的智能合約的編程語(yǔ)言之一。Rust 是一種低級(jí)靜態(tài)類(lèi)型的編程語(yǔ)言,以其速度、效率和設(shè)計(jì)最佳實(shí)踐而聞名。雖然它是一種較年輕的語(yǔ)言,但它在2020和2021連續(xù)兩年被 StackOverflow 評(píng)為最受歡迎的編程語(yǔ)言。就像 Solidity 一樣,代碼被編譯,字節(jié)碼被部署到各個(gè)網(wǎng)絡(luò)上。
只要代碼可以被編譯成網(wǎng)絡(luò)可以閱讀和解釋的字節(jié)碼,區(qū)塊鏈接受各種編程語(yǔ)言。這也適用于比特幣網(wǎng)絡(luò),它的主要腳本語(yǔ)言是 Bitcoin Script. Bitcoin Script 和 Solidity/Rust 之間的區(qū)別是,Bitcoin Script 實(shí)際上不是一種編程語(yǔ)言,而是一個(gè)用于交易的腳本系統(tǒng)。在比特幣網(wǎng)絡(luò)中,腳本是與每筆交易一起記錄的指令清單,它描述了下一個(gè)想花被轉(zhuǎn)移的比特幣的人如何獲得它們。請(qǐng)記住,UTXO 是未使用的交易輸出;因此,每一個(gè)輸出都可以有附帶的要求,需要滿(mǎn)足這些要求,才能允許輸出成為另一個(gè)交易的輸入。
圖靈完備性
從圖靈完備性的角度來(lái)看,Solidity/Rust 和 Bitcoin Script 之間的差異變得更加清晰。圖靈完備性指的是一個(gè)抽象機(jī)器(圖靈機(jī))的概念:在給定了無(wú)限的時(shí)間和計(jì)算資源的情況下,只要這個(gè)問(wèn)題能夠被編碼或邏輯地構(gòu)建,它就能夠計(jì)算任何問(wèn)題。
更復(fù)雜的邏輯問(wèn)題需要使用條件語(yǔ)句和循環(huán),Solidity 和 Rust 作為完整的編程語(yǔ)言支持這些。然而,Bitcoin Script 不支持這些。這是因?yàn)楸忍貛啪W(wǎng)絡(luò)不允許復(fù)雜的計(jì)算,而是依賴(lài)于一個(gè)相當(dāng)簡(jiǎn)單的指令集,只圍繞交易的想法工作(沒(méi)有智能合約)。雖然這使得比特幣網(wǎng)絡(luò)不容易出錯(cuò),可以說(shuō)更安全,但它確實(shí)限制了它的可編程性。
以太坊、Solana 和 Polkadot 可以被認(rèn)為是準(zhǔn)圖靈完備的。盡管由于 Solidity 和 Rust 的存在,它們能夠進(jìn)行復(fù)雜的計(jì)算,并且在理論上只要有足夠的時(shí)間就能解決任何邏輯問(wèn)題,但它們受到 gas fee 的限制。Gas fee是網(wǎng)絡(luò)為執(zhí)行任何計(jì)算任務(wù)所收取的費(fèi)用。雖然時(shí)間和計(jì)算資源在理論上可以是無(wú)限的,但原生網(wǎng)絡(luò)代幣的數(shù)量可能不是。因此,雖然理論上這些網(wǎng)絡(luò)是圖靈完備的,但在實(shí)踐中,它們最多只能被視為準(zhǔn)圖靈完備的。
圖靈完備性和非圖靈完備性的區(qū)別對(duì)于更好地理解網(wǎng)絡(luò)的能力和在網(wǎng)絡(luò)上可以建立的東西非常重要。圖靈機(jī)和圖靈完備性還有更多的細(xì)微差別,感興趣的讀者可以在這里閱讀更多內(nèi)容。
從EIP 到 ERC
ERC(Ethereum Request for Comment)指的是以太坊區(qū)塊鏈中使用的技術(shù)編碼標(biāo)準(zhǔn)。ERC 規(guī)定了以太坊智能合約必須遵循的一些規(guī)則和行動(dòng),以及如何實(shí)現(xiàn)這些規(guī)則和行動(dòng)。
然而,ERC 已經(jīng)是一個(gè)約定俗成的標(biāo)準(zhǔn),已經(jīng)包含在開(kāi)發(fā)者同意使用的以太坊文檔中。在一個(gè) ERC 成為 ERC 之前,它開(kāi)始是一個(gè) EIP(Ethereum Improvement Proposal). EIP 本質(zhì)上是非常詳細(xì)的論壇帖子,用戶(hù)可以在其中對(duì)以太坊區(qū)塊鏈和生態(tài)系統(tǒng)的變化進(jìn)行爭(zhēng)論、討論和投票。
從 EIP 到 ERC 的過(guò)程
這個(gè)系統(tǒng)在整個(gè) Web3 生態(tài)系統(tǒng)中被非常廣泛地使用,從網(wǎng)絡(luò)(例如,比特幣使用 BIP—— Bitcoin Improvement Proposals)到 dApp(例如,AAVE 使用AIPS—— AAVE Improvement Proposals).
ERC 代幣標(biāo)準(zhǔn)
基于 ERC 的代幣建立在以太坊網(wǎng)絡(luò)上,但它們?cè)诩夹g(shù)上有別于以太坊代幣,后者是以太坊網(wǎng)絡(luò)的原生代幣。以太坊代幣被定義為網(wǎng)絡(luò)的一部分,是網(wǎng)絡(luò)的底層“貨幣”,以 gas fee 的形式支付交易和智能合約執(zhí)行,而基于 ERC 的代幣被定義在智能合約中。
ERC 標(biāo)準(zhǔn)的智能合約定義了代幣的所有參數(shù)和所有行為,可以使用 etherscan.io或任何其他與 EVM 兼容的網(wǎng)絡(luò)的區(qū)塊探索器在線(xiàn)查看。區(qū)塊探索器是一種工具,它允許你查看存儲(chǔ)在區(qū)塊鏈上的實(shí)時(shí)和歷史信息。由于這種標(biāo)準(zhǔn)化,基于 ERC 的代幣的行為是可預(yù)測(cè)的,允許 dApp 和其他智能合約與任何使用這些標(biāo)準(zhǔn)的智能合約互動(dòng)。
接下來(lái),我們會(huì)介紹 ERC-20、ERC-721、ERC-1155 和 ERC-4626 標(biāo)準(zhǔn)。前三個(gè)標(biāo)準(zhǔn)涉及到創(chuàng)建同質(zhì)化和非同質(zhì)化數(shù)字資產(chǎn),這些數(shù)字資產(chǎn)在區(qū)塊鏈上生存,而 ERC-4626 標(biāo)準(zhǔn)規(guī)范了應(yīng)用于 ERC-20 的收益功能。
ERC-20、ERC-721 和 ERC-1155 代幣標(biāo)準(zhǔn)及其同質(zhì)性
ERC-20 代幣(同質(zhì)化代幣)
ERC-20是一個(gè)同質(zhì)化代幣的標(biāo)準(zhǔn)。同質(zhì)性是指一種資產(chǎn)可以與另一種相同的資產(chǎn)互換,而兩種資產(chǎn)是無(wú)法相互區(qū)分的。例如,一張一美元的鈔票是同質(zhì)化的,因?yàn)樗梢耘c任何其他一美元的鈔票進(jìn)行交換。
ERC-20 標(biāo)準(zhǔn)允許在 EVM 兼容的網(wǎng)絡(luò)上創(chuàng)建同質(zhì)化代幣。Curve 代幣(CRV)、Uniswap 代幣(UNI)或 AAVE 代幣(AAVE)都是同質(zhì)化代幣的例子,但法定貨幣的數(shù)字代幣也是 ERC-20,例如USDT或USDC,它們與美元掛鉤。
ERC-20代幣是同質(zhì)化代幣
ERC-721 代幣(非同質(zhì)化代幣)
ERC-721標(biāo)準(zhǔn)定義了非同質(zhì)化代幣(NFT)。NFT 的獨(dú)特之處在于它的名字:代幣是不可偽造的,這意味著每個(gè)代幣都是獨(dú)一無(wú)二的。NFT 是一個(gè)令人興奮的發(fā)展,因?yàn)槊總€(gè) NFT 的內(nèi)容可以是創(chuàng)建者想要的任何內(nèi)容,從個(gè)人照片到房地產(chǎn)的契約或任何其他證書(shū)。NFT 實(shí)現(xiàn)了對(duì)任何物理或獨(dú)特?cái)?shù)字資產(chǎn)的可公開(kāi)驗(yàn)證的數(shù)字所有權(quán)。
流行的 NFT 包括 Cryptopunks、Bored Ape Yacht Club和Ethereum Name Service (ENS).
ERC-721(NFT)是非同質(zhì)化代幣
ERC-1155(Multi-Token)
ERC-1155是所謂的“多元代幣(Multi-Token)”:它們結(jié)合了 ERC-20(同質(zhì)化代幣)和 ERC-721(非同質(zhì)化代幣)的功能。這意味著,除了通過(guò)多個(gè)“獨(dú)特的”同質(zhì)化資產(chǎn),例如游戲中的一把劍(非同質(zhì)化的)和 100 個(gè)供應(yīng)量(同質(zhì)化的)來(lái)實(shí)現(xiàn)新的用例之外,也可以在一個(gè)智能合約中管理多個(gè)代幣類(lèi)型。
將這些功能合并到一個(gè)智能合約中,可以使智能合約在 EVM 中使用的空間方面創(chuàng)造效率。這也為更大和更復(fù)雜的項(xiàng)目創(chuàng)造了簡(jiǎn)單性,因?yàn)槎嗵状鷰趴梢詮囊粋€(gè)智能合約中管理。
流行的 ERC-1155 包括 ENJIN NFT,它使用 ERC-1155 來(lái)跟蹤基于區(qū)塊鏈的少數(shù)游戲中的資產(chǎn),以及可能需要定期創(chuàng)建大量獨(dú)特資產(chǎn)集作為一個(gè)合同的一部分的票務(wù)應(yīng)用。使用 ERC-1155 的項(xiàng)目例子包括 The Sandbox Metaverse、Fanz和Azure Heroes.
ERC-1155 代幣結(jié)合了同質(zhì)化代幣和非同質(zhì)化代幣的功能
ERC-4626(The Vault Standard)
ERC-4626將代幣金庫(kù)標(biāo)準(zhǔn)化。保險(xiǎn)庫(kù)是一個(gè)有收益的智能合約,接受 ERC-20 代幣存款,并向存款人提供另一種代幣的代幣獎(jiǎng)勵(lì)(收益)。它本質(zhì)上是一個(gè)多簽名的資產(chǎn)管理智能合約,產(chǎn)生代幣作為存款的獎(jiǎng)勵(lì)形式,以后可以?xún)稉Q最初存入保險(xiǎn)庫(kù)的代幣。
例如,xSushi是一個(gè)有收益的代幣,可以?xún)稉Q成SUSHI代幣(SushiSwap dApp的治理代幣),基本上代表用戶(hù)在 Sushi DeFi 協(xié)議中產(chǎn)生收益活動(dòng)的份額。
這個(gè)代幣標(biāo)準(zhǔn)使開(kāi)發(fā)者能夠接受任何 ERC-20 代幣,而不必手動(dòng)整合每個(gè)代幣,并考慮他們的具體設(shè)計(jì)決策。這減少了可能導(dǎo)致資產(chǎn)損失的編碼錯(cuò)誤的風(fēng)險(xiǎn)。
Yearn V3是第一個(gè)使用 ERC-4626 標(biāo)準(zhǔn)的主要協(xié)議,Balancer和Rari Capital等協(xié)議也已開(kāi)始實(shí)施該標(biāo)準(zhǔn)。
區(qū)塊鏈與有向無(wú)環(huán)圖(DAG)的對(duì)比
有向無(wú)環(huán)圖(DAG)是一種不同的數(shù)據(jù)結(jié)構(gòu)方法,一些項(xiàng)目將其作為區(qū)塊鏈共享賬本結(jié)構(gòu)的替代方案。區(qū)塊鏈的交易包含在區(qū)塊中,區(qū)塊按時(shí)間順序進(jìn)行驗(yàn)證和連鎖。區(qū)塊鏈被復(fù)制到網(wǎng)絡(luò)上的所有節(jié)點(diǎn)。
在 DAG 中,交易被逐一驗(yàn)證,每個(gè)交易都與下一個(gè)交易相關(guān)聯(lián)。為了驗(yàn)證一個(gè)交易,由網(wǎng)絡(luò)決定的另外兩個(gè)交易也必須被驗(yàn)證。這導(dǎo)致了一個(gè)類(lèi)似于網(wǎng)絡(luò)的結(jié)構(gòu),可以很容易地進(jìn)行擴(kuò)展,并允許交易的并行計(jì)算,這可以大大增加吞吐速度。由于驗(yàn)證交易是非常直接的,礦工在這個(gè)系統(tǒng)中扮演的角色非常小:任何與網(wǎng)絡(luò)互動(dòng)的用戶(hù)都可以驗(yàn)證其他用戶(hù)的交易,這大大降低了交易成本。
區(qū)塊鏈 Vs. DAG
有向無(wú)環(huán)圖這個(gè)詞很好地描述了這種結(jié)構(gòu):
· 有向:數(shù)據(jù)結(jié)構(gòu)只能在一個(gè)方向上移動(dòng)(添加新數(shù)據(jù))
· 無(wú)環(huán):當(dāng)沿著數(shù)據(jù)點(diǎn)之間的定向路徑移動(dòng)時(shí),不可能碰到之前的數(shù)據(jù)點(diǎn)(非環(huán)形)
· 圖:由節(jié)點(diǎn)/頂點(diǎn)和邊(節(jié)點(diǎn)之間的連接)組成的非線(xiàn)性數(shù)據(jù)結(jié)構(gòu)
雖然這種結(jié)構(gòu)在交易吞吐量、驗(yàn)證速度和交易成本方面帶來(lái)了好處,但 DAG 面臨著完全不同的挑戰(zhàn)。雖然在理論上這個(gè)系統(tǒng)允許強(qiáng)大的去中心化,但交易的減少在理論上會(huì)導(dǎo)致網(wǎng)絡(luò)安全的降低:更少的交易意味著更少的隨機(jī)驗(yàn)證者,這增加了單一驗(yàn)證者或一組驗(yàn)證者控制大多數(shù)交易的可能性。如果一個(gè)實(shí)體控制了大部分的網(wǎng)絡(luò)活動(dòng),那么將惡意活動(dòng)引入網(wǎng)絡(luò)就會(huì)變得更加容易。
為了應(yīng)對(duì)上述挑戰(zhàn),基于 DAG 的網(wǎng)絡(luò)已經(jīng)轉(zhuǎn)向中心化的解決方案:實(shí)施中央?yún)f(xié)調(diào)人,為待驗(yàn)證的交易提供路線(xiàn),控制具有更高權(quán)限的“證人”驗(yàn)證人,或直接使驗(yàn)證網(wǎng)絡(luò)私有化。
盡管有這些挑戰(zhàn),DAG 網(wǎng)絡(luò)填補(bǔ)了 Web3 生態(tài)系統(tǒng)中的一個(gè)重要空白:它們是稍微更中心化一些的高吞吐量網(wǎng)絡(luò),可以管理繁重的交易負(fù)載,并且隨著 Web3 主流應(yīng)用的進(jìn)展,會(huì)發(fā)現(xiàn)更多的使用案例。
單片式與模塊化區(qū)塊鏈
去中心化網(wǎng)絡(luò)是復(fù)雜的系統(tǒng),由各種組件組成,這些組件相互操作,創(chuàng)造出無(wú)信任和不可改變的網(wǎng)絡(luò)。比特幣、以太坊、Solana、Polkadot 和 NEAR 等網(wǎng)絡(luò)都被認(rèn)為是單片式區(qū)塊鏈——它們都是“由單片形成”的網(wǎng)絡(luò),一個(gè)組件的任何變化都需要整個(gè)網(wǎng)絡(luò)的更新。模塊化區(qū)塊鏈拿出這些不同的組件并讓它們被換成其他組件。
模塊化區(qū)塊鏈系統(tǒng)的各個(gè)組成部分包括:
· 執(zhí)行層:交易執(zhí)行和智能合約
· 結(jié)算層:交易驗(yàn)證、交易結(jié)算
· 共識(shí)層:共識(shí)機(jī)制
· 數(shù)據(jù)可用性:共享賬本
單片式區(qū)塊鏈與模塊化區(qū)塊鏈。改編自:Celestia 網(wǎng)站
通過(guò)將系統(tǒng)拆分成多個(gè)組件,可以對(duì)每個(gè)組件進(jìn)行優(yōu)化,提高每個(gè)組件的效率和安全性。Layer 2,將在本系列的下一部分中詳細(xì)介紹,可以說(shuō)是進(jìn)入模塊化的第一步。Layer 2 卸載了執(zhí)行層,在一個(gè)單獨(dú)的網(wǎng)絡(luò)上執(zhí)行交易和智能合約,并將結(jié)果反饋給 Layer 1 單體網(wǎng)絡(luò),在那里管理結(jié)算、共識(shí)和共享賬本。
雖然模塊化有許多好處,但模塊化系統(tǒng)只有在其最薄弱的環(huán)節(jié)才會(huì)強(qiáng)大。有了模塊化組件,個(gè)別組件就有可能更容易成為目標(biāo)。此外,給網(wǎng)絡(luò)增加模塊化也引入了一個(gè)新的復(fù)雜程度,無(wú)論是從技術(shù)角度還是從網(wǎng)絡(luò)原生代幣的價(jià)值角度,都要確保網(wǎng)絡(luò)的正常運(yùn)行。如果結(jié)算層可以被另一個(gè)使用不同代幣的結(jié)算層所取代,那么一個(gè)網(wǎng)絡(luò)首先要證明代幣的存在是有難度的。
盡管有這些挑戰(zhàn),模塊化區(qū)塊鏈的概念為新項(xiàng)目和新技術(shù)的發(fā)展提供了一個(gè)令人興奮的方向,這可以幫助擴(kuò)大和發(fā)展 Web3 生態(tài)系統(tǒng)。流行的模塊化區(qū)塊鏈項(xiàng)目包括 Celestia和Cosmos.
Layer 1 網(wǎng)絡(luò)總結(jié)
Web3 是一個(gè)龐大的概念,結(jié)合了區(qū)塊鏈、加密和建立在它們之上的生態(tài)系統(tǒng)以及相關(guān)技術(shù)。
比特幣是普及去中心化區(qū)塊鏈技術(shù)的 layer 1 網(wǎng)絡(luò),而以太坊是提供準(zhǔn)圖靈完備計(jì)算功能的網(wǎng)絡(luò),實(shí)現(xiàn)了智能合約。正是通過(guò)對(duì)早期區(qū)塊的數(shù)據(jù)進(jìn)行哈希運(yùn)算來(lái)串聯(lián)數(shù)據(jù)塊的想法,再加上在許多節(jié)點(diǎn)上分發(fā)所有存儲(chǔ)數(shù)據(jù)的副本,才實(shí)現(xiàn)了不可更改性和數(shù)據(jù)的永久性。除了這些技術(shù)原素,節(jié)點(diǎn)基礎(chǔ)設(shè)施也必須到位,才能發(fā)揮作用:如果網(wǎng)絡(luò)上只有一個(gè)節(jié)點(diǎn),那么網(wǎng)絡(luò)本質(zhì)上是中心化的,并面臨著中心化的挑戰(zhàn):數(shù)據(jù)可以被改變,被刪除,對(duì)它的訪問(wèn)可以被節(jié)點(diǎn)限制。
除了基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),還有一個(gè)問(wèn)題是網(wǎng)絡(luò)上的節(jié)點(diǎn)如何知道提供給它們的數(shù)據(jù)是否正確。這被概括為“拜占庭將軍的問(wèn)題”。比特幣通過(guò)其工作證明(Proof-of-Work)共識(shí)算法解決了這個(gè)問(wèn)題,該算法要求網(wǎng)絡(luò)上的節(jié)點(diǎn)解決計(jì)算量大的加密難題,以證明他們已經(jīng)完成了驗(yàn)證一個(gè)區(qū)塊所需的驗(yàn)證工作。存在替代性的共識(shí)算法,例如 Proof-of-Stake,它需要的能量要少得多,而且被認(rèn)為對(duì)環(huán)境更好。
比特幣和以太坊是撰寫(xiě)本文時(shí)最受歡迎的兩個(gè)區(qū)塊鏈網(wǎng)絡(luò),它們使用的記賬模式有很大的不同。比特幣網(wǎng)絡(luò)使用 UTXO 模式,而以太坊網(wǎng)絡(luò)使用賬戶(hù)模型。UTXO 模型可以被認(rèn)為是一個(gè) \”驗(yàn)證系統(tǒng)\”,每一個(gè) UTXO 都是一個(gè)交易的賬單。賬戶(hù)模型更像一個(gè)賬戶(hù)和余額的數(shù)據(jù)庫(kù),隨著每個(gè)新區(qū)塊被添加到區(qū)塊鏈上而更新。
以太坊的計(jì)算組件被稱(chēng)為“以太坊虛擬機(jī)”,允許執(zhí)行智能合約。智能合約是存儲(chǔ)在去中心化區(qū)塊鏈網(wǎng)絡(luò)上的應(yīng)用程序,可以根據(jù)可編程的觸發(fā)標(biāo)準(zhǔn)自主執(zhí)行。根據(jù)你所使用的區(qū)塊鏈,智能合約可以用 Solidity、Rust 或其他編程語(yǔ)言編寫(xiě)。
智能合約的標(biāo)準(zhǔn)化是必要的,以實(shí)現(xiàn)智能合約之間更好的互操作性。ERC 是已經(jīng)在以太坊文檔中固化的編碼標(biāo)準(zhǔn),是“成功”的 EIP. EIP 是以太坊生態(tài)系統(tǒng)中任何人都可以提出的建議,并開(kāi)放給任何人查看、討論和投票。如果一個(gè) EIP 被投票通過(guò),提議的變化就會(huì)被應(yīng)用到網(wǎng)絡(luò)中。四個(gè)最流行的 ERC 代幣標(biāo)準(zhǔn)是 ERC-20(同質(zhì)化代幣),ERC-721(非同質(zhì)化代幣,或“NFT”),ERC-1155 (多元代幣)和 ERC-4626(金庫(kù)標(biāo)準(zhǔn)).
雖然區(qū)塊鏈一直是 Web3 去中心化網(wǎng)絡(luò)最流行的賬本格式,但隨著現(xiàn)有的結(jié)構(gòu)被調(diào)整為特定的用例,替代格式已經(jīng)出現(xiàn)了。有向無(wú)環(huán)圖(DAG)是這種替代結(jié)構(gòu)的一個(gè)例子,它依賴(lài)于驗(yàn)證交易而不是完整的區(qū)塊。模塊化網(wǎng)絡(luò)是我們需要重新思考現(xiàn)有結(jié)構(gòu)這一想法的延伸。模塊化網(wǎng)絡(luò)旨在將分散的網(wǎng)絡(luò)分成不同的功能層,每個(gè)功能層都可以單獨(dú)優(yōu)化。
結(jié)語(yǔ)
這就是《掌握 Web3 基礎(chǔ)知識(shí)》系列的第一部分,感謝您的閱讀!如果你喜歡這篇文章,請(qǐng)考慮分享它!如果你對(duì)這篇文章有任何反饋,或者想討論它的內(nèi)容,請(qǐng)?jiān)?Twitter 上聯(lián)系 @0xPhillan.
如果你想在第二部分發(fā)布時(shí)成為第一批閱讀者,或者想對(duì) Web3 的最近事件有非常堅(jiān)定的透徹觀點(diǎn),請(qǐng)訂閱 Web3edge Newsletter并在 Twitter 上關(guān)注@Web3edge_io!
本文由 0xPhillan 為 Web3edge撰寫(xiě)——在 Twitter 上關(guān)注@0xPhillan!
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。