聲明 我不會(huì)帶你做“炒B、擼空、兌換”等任何靠虛擬資產(chǎn)發(fā)財(cái)?shù)氖虑椤N乙膊粫?huì)教你WEB3開(kāi)發(fā),畢竟“遠(yuǎn)程”課程那么多,大家直接去報(bào)班就行。 我就是研究“合規(guī)的支付新技術(shù)”,僅此而已。
大家好,我是剛哥!
這次給大家介紹以太坊,不過(guò)以太坊比較龐大,所以這篇文章先介紹以太坊基礎(chǔ)知識(shí)與核心流程,后續(xù)再逐步介紹上層的WEB3應(yīng)用。
當(dāng)然,我的內(nèi)容會(huì)更加偏重與支付的結(jié)合。也就是WEB2.5又叫“PayFi”,因此我會(huì)沿著“跨境+WEB3+AI“的路徑來(lái)介紹“資產(chǎn)和資金”的上鏈。
好了,廢話(huà)就說(shuō)到這里,下面我們直接開(kāi)始介紹以太坊的基礎(chǔ)知識(shí),我將從“場(chǎng)景-概念-原理”進(jìn)行“穿透式”的介紹,力求給你一個(gè)完整的視角。
【文章很長(zhǎng),建議先收藏,然后用直接聽(tīng)】
01 以太坊-Ethereum
上篇文章介紹過(guò),比特幣作為加密貨幣的開(kāi)創(chuàng)者,奠定了區(qū)塊鏈的基礎(chǔ)。同時(shí)比特幣因?yàn)椤昂碾姟⒕徛r(jià)格高、可編程差”等方面問(wèn)題飽受詬病。
1.以太坊的誕生
在2013年有一位大神Vitalik Buterin提出了比特幣可編程性的改進(jìn)方案,由于方案比較激進(jìn),在被比特幣維護(hù)者拒絕后,它創(chuàng)立了以太坊(Ethereum),并在2015年上線(xiàn)。
他將以太坊定義為一臺(tái)“世界計(jì)算機(jī)”,全世界鏈上的交易都可以通過(guò)它來(lái)完成結(jié)算。這相當(dāng)于“從功能手機(jī)升級(jí)到了智能手機(jī)”。
2.比特幣Vs以太坊
![]()
圖2:比特幣與以太坊比較
1)PoW-PoS:以太坊在比特幣區(qū)塊鏈的基礎(chǔ)上進(jìn)行了多項(xiàng)改進(jìn)。最初采用工作量證明(PoW),但為減少能源消耗,于2020年轉(zhuǎn)向權(quán)益證明(PoS),不僅是能耗降低了99%,也使時(shí)效壓縮到12秒。
2)賬戶(hù)模型:以太坊還引入了賬戶(hù)模型,支持智能合約,實(shí)現(xiàn)自動(dòng)化交易,并通過(guò)以太坊虛擬機(jī)(EVM)增強(qiáng)了可編程性,支持構(gòu)建復(fù)雜的去中心化應(yīng)用。
3)L2擴(kuò)容:為提升性能,以太坊提出了L2擴(kuò)容方案,通過(guò)鏈下處理數(shù)據(jù),提高了性能并降低了成本,L1主鏈則主要負(fù)責(zé)結(jié)算。
并且以太坊還在持續(xù)的演進(jìn),推出了“L1信標(biāo)鏈、EOF虛擬機(jī)、新型智能合約、跨鏈交易、預(yù)言機(jī)”等創(chuàng)新技術(shù)。
02 以太坊的架構(gòu)
以太坊的愿景是成為一臺(tái)“世界計(jì)算機(jī)” (The World Computer),它將是一臺(tái)全球化、去中心化且永不宕機(jī)的計(jì)算平臺(tái)。
任何人都能在上面構(gòu)建和運(yùn)行金融應(yīng)用程序,并且無(wú)需中介參與。支撐這個(gè)愿景是它一系列的技術(shù)創(chuàng)新和持續(xù)的架構(gòu)演進(jìn)。
1.以太坊架構(gòu)-世界計(jì)算機(jī)
![]()
圖3:以太坊-世界計(jì)算機(jī)(參考自網(wǎng)絡(luò))
1)P2P網(wǎng)絡(luò):作為一臺(tái)面向全球用戶(hù)的去中心化“計(jì)算機(jī)”需要面臨海量的全球用戶(hù)訪(fǎng)問(wèn),因此它基于P2P網(wǎng)絡(luò),將全球上百萬(wàn)臺(tái)計(jì)算機(jī)作為它的節(jié)點(diǎn)來(lái)服務(wù)全球用戶(hù)。
2)鏈上交易:每一個(gè)節(jié)點(diǎn)又是一個(gè)完整的“中心化”L1基礎(chǔ)設(shè)施,負(fù)責(zé)交易與合約的處理,完成交易受理、合約計(jì)算、創(chuàng)建/存儲(chǔ)區(qū)塊、共識(shí)投票/驗(yàn)證等處理,最終實(shí)現(xiàn)交易的不可逆。
3)上鏈/下鏈:以太坊不僅鏈上是開(kāi)放的,還能與鏈下WEB2進(jìn)行數(shù)據(jù)訪(fǎng)問(wèn)與存儲(chǔ)。“預(yù)言機(jī)”可以實(shí)現(xiàn)“數(shù)據(jù)上鏈”,IPFS實(shí)現(xiàn)海量“數(shù)據(jù)存儲(chǔ)”,并且它們都可以通過(guò)加密簽名機(jī)制來(lái)實(shí)現(xiàn)數(shù)據(jù)的不可篡改。
正是依托于這種“去中心化基礎(chǔ)設(shè)施”,以太坊構(gòu)建了一個(gè)“全球共享的計(jì)算平臺(tái)”,從而支撐了多樣化WEB3應(yīng)用的發(fā)展。
2.以太坊流程-世界狀態(tài)機(jī)
如何讓全球幾百萬(wàn)臺(tái)計(jì)算機(jī)步調(diào)一致的處理每一筆交易,以太坊給出的方案是“世界狀態(tài)機(jī)”。
它通過(guò)區(qū)塊鏈“拍快照”的方式,讓全球服務(wù)器共同記錄處理結(jié)果,只要完成共識(shí)機(jī)制,全球服務(wù)器上的“狀態(tài)就一致”了。
大白話(huà)理解就是,“世界狀態(tài)機(jī),把過(guò)程拍成快照,然后只看最新的結(jié)果”。
![]()
圖4:世界狀態(tài)機(jī)
它的處理過(guò)程如下:
1)交易驅(qū)動(dòng)賬戶(hù):賬戶(hù)的余額變動(dòng)都是通過(guò)交易來(lái)驅(qū)動(dòng)。
2)區(qū)塊快照存證:以太坊會(huì)把每次交易結(jié)果、賬戶(hù)余額拍個(gè)快照存在區(qū)塊鏈上。
3)共識(shí)達(dá)成一致:只要在規(guī)定時(shí)間內(nèi)達(dá)成共識(shí),這個(gè)狀態(tài)就不可撤銷(xiāo)了。
下一筆新的交易在原有的賬戶(hù)余額上生成一個(gè)快照,然后繼續(xù)進(jìn)行全網(wǎng)共識(shí),以太坊就是通過(guò)這種方式完成幾百萬(wàn)用戶(hù)同時(shí)的在線(xiàn)交易處理。
03 以太坊基礎(chǔ)知識(shí)
我們知道比特幣的交易模型是“交易+UTxO”,它只是一個(gè)簡(jiǎn)單的記賬系統(tǒng),不適合處理復(fù)雜的邏輯。
以太坊為了實(shí)現(xiàn)計(jì)算機(jī)的目的,“賬戶(hù)和交易”模型就必須重新設(shè)計(jì)。
1.以太坊交易模型
以太坊采用了一套非常復(fù)雜的數(shù)據(jù)結(jié)構(gòu)來(lái)設(shè)計(jì)它的交易模型,為了便于大家理解和比較,我們先來(lái)看下它和傳統(tǒng)銀行的賬戶(hù)交易模型有什么區(qū)別。
1.1 傳統(tǒng)的賬戶(hù)交易
傳統(tǒng)銀行賬戶(hù)交易必須具備“客戶(hù)賬戶(hù)、內(nèi)部賬戶(hù)、交易明細(xì)、回單憑證”這幾項(xiàng)數(shù)據(jù),才能提供適應(yīng)復(fù)雜交易場(chǎng)景和流程的支付體驗(yàn)。
并且傳統(tǒng)銀行要基于客戶(hù)實(shí)名來(lái)處理賬戶(hù)交易,那公開(kāi)在互聯(lián)網(wǎng)的“匿名賬戶(hù)”又該如何交易呢?
![]()
圖6:銀行中心化賬戶(hù)交易 1.2 以太坊交易模型
以太坊的交易模型與“傳統(tǒng)交易模型”非常相似,它也有賬戶(hù)(外部賬戶(hù)、內(nèi)部賬戶(hù))、交易、收據(jù)等信息。但作為“去中心化”設(shè)計(jì),他也有很多的不同。
![]()
圖7:以太坊的交易模
1)無(wú)賬戶(hù)流水,它無(wú)需賬戶(hù)流水,因?yàn)槿ブ行幕~戶(hù)不存儲(chǔ)歷史記錄,節(jié)省存儲(chǔ)空間,歷史交易可通過(guò)應(yīng)用層技術(shù)如“The Graph”查詢(xún)。
2)無(wú)狀態(tài)設(shè)計(jì),以太坊采用無(wú)狀態(tài)設(shè)計(jì),不記錄賬戶(hù)和交易狀態(tài),只保存交易結(jié)果收據(jù),狀態(tài)流轉(zhuǎn)通過(guò)共識(shí)機(jī)制實(shí)現(xiàn)。
3)智能合約交易,以太坊通過(guò)智能合約控制交易,而非獨(dú)立的交易模塊。這些區(qū)別使得以太坊的賬戶(hù)和區(qū)塊鏈結(jié)構(gòu)更易于理解。
2.以太坊賬戶(hù)結(jié)構(gòu)
以太坊把他的賬戶(hù)定義為“Account State”(賬戶(hù)狀態(tài)),這也說(shuō)明它保存的是賬戶(hù)的快照,最新的余額永遠(yuǎn)都保存在你最后一筆交易所發(fā)生的區(qū)塊中,具體結(jié)構(gòu)如下。
![]()
圖8:以太坊賬戶(hù)結(jié)構(gòu) 1)賬戶(hù)數(shù)據(jù)要素
匿名的地址:由于以太坊是匿名交易,所以,對(duì)于客戶(hù)擁有的賬戶(hù),它通過(guò)一個(gè)“私鑰控制的地址”來(lái)指向賬戶(hù)。
noce:用來(lái)記錄賬戶(hù)更新的次數(shù)。
balance:用來(lái)記錄賬戶(hù)最新的余額。單位是Wei,是ETH的1/十億;
codeHash(使用合約):只有在合約賬戶(hù)中才有值。它存放合約代碼編輯后的字節(jié)碼,EVM虛擬機(jī)會(huì)根據(jù)這個(gè)字節(jié)碼去加載合約的代碼進(jìn)行處理。
storageRoot(適用合約):它是合約數(shù)據(jù)的根節(jié)點(diǎn),其實(shí)合約也是存放在一棵Merkle Tree中的,這個(gè)我們?cè)诤竺娼榻B。
以太坊整個(gè)賬戶(hù)結(jié)構(gòu)非常簡(jiǎn)潔,最大的特點(diǎn)就是支持智能合約。所以它的賬戶(hù)類(lèi)型包含以下兩種;
外部賬戶(hù)EOA(Externally owned account):被私鑰控制且沒(méi)有任何代碼與之關(guān)聯(lián)。
合約賬戶(hù)CA(Contract account):被它們的合約代碼控制且有代碼與之關(guān)聯(lián)。
![]()
圖9:外部賬戶(hù)與合約賬戶(hù) 3.區(qū)塊鏈(MPT)
經(jīng)過(guò)了這些鋪墊之后,終于要介紹以太坊的區(qū)塊鏈賬本了。因?yàn)椋蕴坏膮^(qū)塊鏈結(jié)構(gòu)要比特幣復(fù)雜了好幾倍。不過(guò)也不用擔(dān)心,我們知道它干什么用就行了。
以太坊的區(qū)塊鏈稱(chēng)為MPT(Merkle Patricia Trie,默克爾-帕特里夏-字典樹(shù)),從名字看就知道很復(fù)雜,其實(shí),它就是一棵用來(lái)存儲(chǔ)“賬戶(hù)狀態(tài)、交易和收據(jù)”信息的“復(fù)雜的Merkle Tree”。
![]()
圖11:以太坊MPT樹(shù) 1)擴(kuò)展的區(qū)塊頭:
顯著的特點(diǎn)是增加了關(guān)于“賬戶(hù)、交易、收據(jù)”的三個(gè)根節(jié)點(diǎn),并根據(jù)以太坊的PoS和Gas機(jī)制新增了一些字段。整個(gè)區(qū)塊鏈?zhǔn)褂昧恕癏ash鏈”結(jié)構(gòu),將所有區(qū)塊連接起來(lái)。
2)以太坊中的四棵MPT樹(shù)
狀態(tài)樹(shù) (State Trie):存儲(chǔ)所有賬戶(hù)信息(余額、Nonce、代碼哈希、存儲(chǔ)根)。
交易樹(shù) (Transactions Trie):存儲(chǔ)當(dāng)前區(qū)塊的所有交易。
收據(jù)樹(shù) (Receipts Trie):存儲(chǔ)交易執(zhí)行后的結(jié)果(Gas 使用情況、日志等)。
存儲(chǔ)樹(shù) (Storage Trie):每個(gè)智能合約賬戶(hù)都有獨(dú)立的一棵存儲(chǔ)樹(shù),用來(lái)存放合約變量。
這幾棵樹(shù)中任何信息修改,都需要重新生成一個(gè)區(qū)塊并共識(shí),否則就會(huì)因?yàn)镠ash值的雪崩效應(yīng)造成整條鏈的分叉。
4.智能合約
以太坊的智能合約(Smart Contract)是一種存儲(chǔ)在區(qū)塊鏈上的自動(dòng)化執(zhí)行程序。這里的“智能”不是“人工智能”,而是“可編程、自動(dòng)化”的意思。它可以無(wú)需第三方介入,就能實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的自動(dòng)化交易。
以太坊的智能合約運(yùn)行在EVM(以太坊虛擬機(jī))中,因此需要遵循ERC標(biāo)準(zhǔn),它是EIP(以太坊改進(jìn)提案)的一個(gè)子協(xié)議。
4.1、智能合約協(xié)議
智能合約的ERC標(biāo)準(zhǔn)(即Ethereum Request for Comments以太坊征求意見(jiàn)),它是專(zhuān)門(mén)針對(duì)應(yīng)用場(chǎng)景推出的“通用接口標(biāo)準(zhǔn)”。
只要遵循ERC標(biāo)準(zhǔn)就能開(kāi)發(fā)出“穩(wěn)定幣、DeFi金融、NFT數(shù)字資產(chǎn)、GameFi、智能合約錢(qián)包”等熱門(mén)的創(chuàng)新應(yīng)用。一些著名的ERC合約如下:
![]()
圖14:常用的智能合約標(biāo)準(zhǔn) 4.2、常見(jiàn)兼容合約項(xiàng)目
ERC標(biāo)準(zhǔn)其實(shí)只是一塊“樂(lè)高積木”,行業(yè)內(nèi)有很多著名的項(xiàng)目,會(huì)把ERC合約與多種技術(shù)標(biāo)準(zhǔn)結(jié)合,形成兼容以太坊智能合約各類(lèi)項(xiàng)目。
![]()
圖15:智能合約的行業(yè)應(yīng)用
由此可見(jiàn),以太坊的智能合約的應(yīng)用場(chǎng)景是非常豐富的,具體的合約我們?cè)诤竺娴膽?yīng)用場(chǎng)景中再逐一介紹。下面我們來(lái)看下以太坊是如何執(zhí)行智能合約的。
5.虛擬機(jī)(EVM)
EVM(Ethereum Virtual Machine,即以太坊虛擬機(jī))是以太坊智能合約的執(zhí)行環(huán)境,它被嵌入在每一個(gè)以太坊的“全節(jié)點(diǎn)”中來(lái)運(yùn)行智能合約。
智能合約使用Solidity語(yǔ)言開(kāi)發(fā),當(dāng)你開(kāi)發(fā)完一個(gè)智能合約并完成編譯后,可以把他“部署”區(qū)塊鏈上,以太坊會(huì)給“你的合約”創(chuàng)建一個(gè)對(duì)應(yīng)的“CA賬戶(hù)”并保存在“Account Storage”中(就是前面CA賬戶(hù)外掛的Merkle樹(shù))。
![]()
圖16:EVM運(yùn)行智能合約流程
只要用戶(hù)發(fā)送的交易請(qǐng)求中包含“智能合約字節(jié)碼”,EVM就會(huì)執(zhí)行“你的合約”,并按照以下步驟逐步執(zhí)行。
加載合約:EVM會(huì)根據(jù)你提供的字節(jié)碼去“CA賬戶(hù)”對(duì)應(yīng)的“Account Storage”中讀取對(duì)應(yīng)的智能合約,并加載到Virtual ROM中。然后通過(guò)“程序計(jì)數(shù)器”逐行讀取“合約指令”并執(zhí)行。
扣減Gas費(fèi):在執(zhí)行前會(huì)先扣減Gas費(fèi),這樣即使“你的合約”出現(xiàn)死循環(huán),也會(huì)因?yàn)镚as耗盡而終止;
執(zhí)行合約:隨后你合約指令被壓入堆棧中(Stack),并在內(nèi)存中(Memory)運(yùn)行,最終執(zhí)行結(jié)果會(huì)被保存到“Account Storage”的數(shù)據(jù)庫(kù)中,完成出塊。
發(fā)送共識(shí):合約執(zhí)行完成后,會(huì)將數(shù)據(jù)數(shù)據(jù)發(fā)送到共識(shí)層打包和驗(yàn)證,隨后廣播給全網(wǎng)完成共識(shí)。
顯然,這是一個(gè)完全自動(dòng)化的精妙設(shè)計(jì),他通過(guò)交易來(lái)驅(qū)動(dòng)EVM執(zhí)行合約,合約自動(dòng)完成交易處理,并且通過(guò)Gas費(fèi)來(lái)限制異常。整個(gè)過(guò)程全部自動(dòng)化并且無(wú)需第三方介入。
04 以太坊運(yùn)行原理
講了這么多基礎(chǔ)概念,下面我們就把以太坊一筆交易的運(yùn)行流程給大家做個(gè)全流程的串聯(lián),讓你對(duì)以太坊有個(gè)整體認(rèn)識(shí)。
以太坊的核心交易流程,其實(shí)就是進(jìn)行一次全網(wǎng)的PoS(權(quán)益證明),它的交易速度相較于比特幣要快很多。12秒就能完成驗(yàn)證和出塊,隨后發(fā)布到全網(wǎng)由見(jiàn)證者投票。最終共識(shí)12.8分鐘就能完成。
![]()
圖17:以太坊核心交易流程
下面我們就以收付款人通過(guò)一筆USDT合約轉(zhuǎn)賬交易來(lái)介紹一下整個(gè)處理過(guò)程。
1)選出提議者打包(12秒)
付款人向收款人地址轉(zhuǎn)賬USDT,交易信息被發(fā)送到網(wǎng)絡(luò)節(jié)點(diǎn)的Mempool。以太坊每12秒選出一個(gè)“提出者”來(lái)打包交易。提出者處理交易、計(jì)算合約并創(chuàng)建區(qū)塊,然后區(qū)塊經(jīng)過(guò)驗(yàn)證并廣播到全網(wǎng),進(jìn)行共識(shí)投票。
2)上鏈驗(yàn)證者投票(6.4分鐘)
網(wǎng)絡(luò)中的其他節(jié)點(diǎn)作為驗(yàn)證者,確認(rèn)交易并更新余額和合約狀態(tài)。他們將驗(yàn)證結(jié)果簽名后廣播。大約6.4分鐘內(nèi),若超過(guò)1/3節(jié)點(diǎn)同意,交易就基本不可逆。
3)最終共識(shí)并獎(jiǎng)勵(lì)(12.8分鐘)
理論上,1/3共識(shí)仍有分叉風(fēng)險(xiǎn),因此需要更多節(jié)點(diǎn)投票。以太坊目標(biāo)是在12.8分鐘內(nèi)達(dá)到2/3共識(shí),確保交易不會(huì)分叉,完成最終共識(shí),參與者獲得獎(jiǎng)勵(lì)。
顯然,以太坊這套機(jī)制在“打包排序”和“計(jì)算處理”上都限定了時(shí)間,以確保交易會(huì)被快速的處理。
你可能會(huì)問(wèn),要是有的節(jié)點(diǎn)沒(méi)有按時(shí)間處理完,或者處理一半掉線(xiàn)、宕機(jī)了怎么辦呢。其實(shí)以太坊的PoS會(huì)有一些技術(shù)機(jī)制來(lái)保障并且還會(huì)有處罰機(jī)制。這些內(nèi)容我們就在下一篇《PoS權(quán)益證明》中介紹了。
講在最后
在對(duì)以太坊的學(xué)習(xí)過(guò)程中,感受最大的就是他的公開(kāi)和透明性,他的資料非常完善,底層代碼、合約代碼,甚至一些項(xiàng)目代碼都是開(kāi)源,并且還有很多的區(qū)塊鏈瀏覽器、開(kāi)源錢(qián)包讓你快速的體驗(yàn)產(chǎn)品。
當(dāng)然,最重要的還有AI大模型,它在WEB3這方面知識(shí)是非常全面的。只要你有一份目標(biāo)清晰的計(jì)劃(例如我的《WEB3知識(shí)地圖》),通過(guò),“AI問(wèn)答+搜索引擎+WEB3平臺(tái)體驗(yàn)與實(shí)踐”,學(xué)習(xí)WEB3一點(diǎn)都不難。
個(gè)人感覺(jué),由于WEB3開(kāi)放與開(kāi)源,加上AI的加持,他學(xué)習(xí)的難度其實(shí)比傳統(tǒng)的支付和金融小很多。
當(dāng)然,如果有過(guò)來(lái)人帶下,那就能更加事半功倍了,希望我這篇文章能給你帶來(lái)幫助。
【參考資料】
以太坊白皮書(shū):
https://ethereum.org/zh/whitepaper/
登鏈社區(qū)-精通以太坊第二版:
https://learnblockchain.cn/article/22102
以太坊智能合約協(xié)議:
https://eips.ethereum.org/erc
【實(shí)踐網(wǎng)站】
以太坊瀏覽器:https://etherscan.io/
MetaMask:https://metamask.io/zh-CN
Remix:https://remix.ethereum.org/
【加我入群,注明"所屬行業(yè)+地點(diǎn)"】
不炒幣、不空投、不兌換、沒(méi)代理
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.