比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > 幣安幣 > Info

以太坊是如何運作的(三)完結篇_以太坊

Author:

Time:1900/1/1 0:00:00

前言:本文主要闡述當前以太坊的具體運作原理,有助于我們理解以太坊背后的各種概念和操作,適合初學者閱讀。未來ETH2.0將會發生非常大的變化,具體可以看之前的文章《ETH2.0:它會是什么?》和《ETH2.0:它會是什么?》。接上一篇《以太坊是如何運作的》、《以太坊是如何運作的》。合約創建

回顧一下,以太坊有兩種類型賬戶:合約賬戶和外部賬戶。當我們說交易是“創建合約”時,我們的意思是說交易的目的是創建一個新的合約賬戶。為了創建新的合約賬戶,我們首先使用特殊公式聲明新賬戶地址,然后我們通過如下方式初始化新賬戶:把nonce設置為零。如果發送人用交易發送一定量的Ether作為價值,則設置該價值為賬戶余額。從發送人的余額中扣除發送給新賬戶的價值。把存儲設置為空。把合約的codeHash設置為空字符串的哈希。一旦我們初始化賬戶,使用跟隨交易發送的init代碼實際上能夠創建賬戶。在執行這個初始化代碼時會產生多樣的變化。根據合約的構造函數,它可能會升級賬戶的存儲、創建其他合約賬戶、進行其他消息調用等。當執行初始化合約的代碼時,它使用gas。交易不允許使用比剩余gas更多的gas。如果存在這樣的情況,執行遇到gas不足的異常,然后退出。如果交易因為gas不足異常而退出,那么,狀態會立刻復原到交易之前到那個點。發送人不會收到gas退款,該gas已在之前執行中用完。但是,如果發送人用交易發送任何Ether價值,即使合約創建失敗,Ether價值也會被退回。如果初始化代碼執行成功,會支付最終的成功創建合約的成本。這是存儲成本,支付費用跟所創建合約代碼的大小成正比,這里也沒有免費午餐。如果沒有足夠的剩余gas來支付最終的成本,交易再次出現gas不足的異常,并中止。如果一切都順利,我們目前為止沒有異常,則剩余的未使用的gas會退還給交易的最初發送人,由此被改變的狀態也允許持續存在。消息調用

EthereumPoW推出ETHW與以太坊間的跨鏈橋ETHW Bridge:9月20日消息,據官方推特,以太坊分叉項目EthereumPoW宣布推出跨鏈橋ETHW Bridge,支持ETHW與以太坊網絡之間的ETH、USDT和USDC橋接。[2022/9/20 7:08:05]

消息調用的執行跟合約創建的執行類似,不過存在一些差異。消息調用執行并不包括任何init代碼,因為沒有創建新的賬戶,但是,如果數據由交易發送人提供,則它可以包含輸入數據。一旦執行,消息調用還有額外的組件,組件包含了輸出數據,如果接下來的執行需要該數據,它會被使用。跟合約創建一樣,如果因為gas不足或交易無效,消息調用退出,那么,所使用的gas不會退還給最初的調用者。相反,所有剩余的未使用的gas被消耗,并且狀態會復原到余額轉移之前的點。直到以太坊的最新升級之前,如果沒有系統消耗你提供的所有gas,那就無法停止或恢復交易的執行。例如,假設當調用者沒有被授權執行某些交易,你授權的合約拋出錯誤。在之前版本的以太坊,剩余的gas依然會被消耗,且沒有任何gas會被退還給發送人。但在拜占庭升級中,它包括了新的“恢復”代碼,允許合約停止執行并恢復狀態更改,而不是消耗剩余的gas,同時還能返回交易失敗的原因。如果因為還原而退出交易,則會把未使用的gas退還給發送人。執行模式

到目前為止,我們已經了解到一個交易從開始到結束必須經歷的系列步驟。現在,我們來看看交易實際上是如何在VM上執行的。實際處理交易流程的部分協議是以太坊自己的虛擬機,也就是所謂的EVM。EVM是圖靈完備的虛擬機。跟其他圖靈完備的機器相比,EVM唯一的限制是它跟gas是內在綁定的。也就是說,它的計算量是受gas量內在約束的。

以太坊未確認交易為193,275筆:金色財經消息,據OKLink數據顯示,以太坊未確認交易193,275筆,當前全網算力為434.59TH/s,全網難度為5.78P,當前持幣地址為56,721,225個,同比增加177,574個,24h鏈上交易量為2,903,780.19ETH,當前平均出塊時間為12s。[2021/3/23 19:11:19]

資料來源:CMU此外,EVM有基于堆棧的架構。堆棧計算機使用后進先出堆棧來保存臨時值。EVM中每個堆棧項的大小是256位,堆棧最大的大小為1024。EVM有內存,其中的item存儲為字尋址字節數組。內存不穩定,意味著它不是持久的。EVM還有存儲空間。跟內存不同,存儲是穩定的,同時它作為系統狀態的一部分進行維持。EVM在虛擬ROM中分別存儲程序代碼,這些代碼只能通過特別指令訪問。通過這種方式,EVM跟經典的馮·諾依曼架構不同,其中的程序代碼存儲在內存或存儲器中。

EVM也有它自己的語言:“EVM字節代碼”。當一個程序員編寫以太坊智能合約時,一般來說,會使用高階語言如Solidity。之后,我們可以將其編譯為EVM可以理解的EVM字節代碼。那么,現在開始執行。在執行特定的計算之前,處理器會確保以下的信息可用且有效:系統狀態計算用的剩余gas擁有正在執行的代碼的賬戶地址發起該執行的交易發送人的地址導致代碼執行的賬戶地址產生該執行的交易的gas價格輸入該執行的數據作為當前執行的一部分,發送價值給此賬戶要執行的機器代碼當前區塊的區塊頭當前消息調用或合約創建堆棧的深度開始執行時,內存和堆棧為空,且程序計數器為零。PC:0STACK:MEM:,STORAGE:{}之后,EVM遞歸執行交易,計算系統狀態以及每個循環的機器狀態。系統狀態只是以太坊的全球狀態。機器狀態包括:可用的gas程序計數器記憶內容內存中的活躍詞數堆棧內容從系列的最左側部分添加或刪除堆棧項。在每個循環中,從剩余gas中減少適當的gas量,并且程序計數器遞增。在每個循環結束時,有三種可能:1.機器達到異常狀態,因此必須暫停,任何更改都將被丟棄。2.序列繼續處理進入下一個循環3.機器達到受控停止假設執行并沒有達到異常狀態,也沒有達到“受控”或正常停止,則機器會生成結果狀態、執行后的剩余gas、累計子狀態以及結果輸出。我們了解了以太坊最復雜的部分之一。即使你不能完全明白,也沒關系。除非你要從事非常深層次的工作,否則你無須理解非常細節的部分。區塊如何最終確定

ArcaFunds正式開放基于以太坊區塊鏈的Arca美國國債基金ArCoin:洛杉磯基金管理公司ArcaFunds宣布其經美國證券交易委員會(SEC)注冊的Arca美國國債基金(ArcaU.S.TreasuryFund)現已開放投資。該基金是根據《1940年投資公司法》在美國證券交易委員會(SEC)注冊的第一支以數字證券形式發行其股票的基金,名為ArCoin,其數字份額ArCoins在以太坊區塊鏈上交易,應計利息將會在每個季度直接支付給ArCoin持有者。另外,該基金的大部分資產投資于短期美國國庫券和票據。從今天開始,投資者在可以通過ArCoin官方網站直接購買該基金,最低購買金額為1,000美元。此前報道,ArcaFunds于今年2月份重新提交創建加密貨幣美國國債投資基金ArCoin的提案。[2020/7/7]

最后,我們來看看包含眾多交易的區塊如何最終確定。當我們說“最終確定”時,它可以意味著兩種不同的東西,這取決于區塊是新的還是已有的。如果它是新區塊,我們指的是挖掘區塊要求的過程。如果它是已有區塊,那么,我們是指驗證區塊的過程。在任何一種情況下,有四個要求來實現區塊“最終性”。1)驗證ommers區塊頭中的每個ommer區塊必須是有效的區塊頭,并且在當前區塊的第六代內。2)驗證交易區塊上的使用過的gas數必須等于累積的gas,該gas被區塊中列出的交易使用過。。3)申請獎勵受益人地址被授予5Ether用于區塊挖礦。。此外,對于每個ommer,當前區塊的受益人將獲得當前區塊獎勵的額外1/32。最后,ommer區塊的受益人也會獲得特定數量的獎勵4)驗證狀態和nonce確保所有的交易和結果狀態改變得到應用,然后,在所有區塊獎勵已經被應用到最終的交易結果狀態后,定義新區塊作為狀態。通過針對存儲在區塊頭的狀態trie來檢查該最終狀態,以此進行驗證。PoW挖礦

動態 | 以太坊未確認交易67133筆:據Etherscan.io數據顯示,以太坊未確認交易67133筆。當前挖礦難度2059.86 TH,交易處理能力6.8 TPS。截至目前以太坊全球均價為179.96美元,最近24小時漲幅為1.92%。[2020/1/31]

“區塊”章節部分簡要介紹了區塊難度的概念。賦予區塊難度意義的算法叫PoW。以太坊的PoW算法稱為“Ethash”。算法正式定義如下:

其中的m是mixHash,n是nonce,Hn是新區塊頭,Hn是區塊頭的nonce,并且d是DAG,它是大的數據集。在“區塊”章節部分,我們提過區塊頭存在的各種item。其中兩個組件叫做mixHash和nonce。你可能還記得:mixHash是一個哈希值,當它跟nonce結合使用時,證明該區塊已經執行足夠的計算。nonce是一個哈希值,當它跟mixHash結合時,證明該區塊已經執行足夠的計算。PoW功能用于評估以上兩個item。使用PoW函數來計算mixHash和nonce有些復雜,我們可以用單獨文章來深入研究。但在更高的層面上,它是這樣工作的:“為每個區塊計算“種子”。該種子對于每個“epoch”都是不同的,其中每個epoch都是30,000區塊長度。對于第一個epoch,種子是一系列32字節的零的哈希。對于后續的epoch,它是之前種子哈希的哈希。這樣,使用該種子,節點可以計算偽隨機的“緩存”。”這個緩存非常有用,因為這讓“輕節點”的概念變得可行。輕節點的目的是可以讓特定的節點有能力驗證交易,但與此同時無需存儲整個區塊鏈的數據集。輕節點可以驗證交易的有效性,它只是基于這個緩存,因為緩存可以重新生成它要驗證的特定區塊。使用緩存,節點能夠生成DAG“數據集”,其中數據集中每個item依賴于來自緩存的一小部分偽隨機選擇的item。為了成為礦工,你必須生成這個全數據集;所有全數據客戶端和礦工存儲這個數據集,并且這個數據集隨著時間線性增長。礦工可以獲取隨機數據集切片,并把它們用數學函數進行一起哈希,變成“mixHash”。礦工將重復生成mixHash直到輸出低于所需的目標nonce。當輸出滿足需求,nonce被認定為有效,同時區塊被添加到鏈上。挖礦是一種安全機制總體來說,PoW的目的是用加密安全的方式證明一定量的計算已經消耗在生成某個輸出上。這是因為沒有更好的方法來找到一個隨機數,這個隨機數低于所需的閥值,而不是枚舉所有的可能性。重復應用哈希函數的輸出具有均勻分布,所以,我們可以肯定,平均來說,找到這樣一個隨機數所需的時間取決于困難閥值。難度越高,找到nonce的時間就越長。通過這種方式,PoW算法為難度概念賦予了意義,它用于確保區塊鏈的安全。區塊鏈的安全是什么意思?很簡單:我們希望的創建一個人人都可信任的區塊鏈。我們之前也提過,如果多于一條鏈存在,用戶會失去信任,因為他們不能合理地確定哪條鏈是“有效”的區塊鏈。為了讓一群用戶接受存儲在區塊鏈上的底層狀態,我們需要單一規范的區塊鏈,而這條區塊鏈人人都相信它。這就是PoW算法的作用:它確保特定區塊鏈將一直保持規范,讓它很難被攻擊者攻擊,攻擊者很難創建新的區塊來重寫交易的歷史或維持分叉。為了讓他們的區塊首先被驗證,攻擊者需要持續地在網絡中比其他人更快地算出隨機數,也因此,網絡才會相信他們的鏈是最長的鏈。這將是不可能的,除非攻擊者擁有超過一半以上的算力,也就是所謂的51%攻擊場景。

聲音 | 美國CFTC主席:以太坊是一種商品 預計將來會允許以太坊衍生品在美國市場交易:今年7月剛剛接任美國商品期貨交易委員會(CFTC)主席的Heath Tarbert表示,ETH是一種商品,因此屬于CFTC的管轄范圍。他還預計,CFTC會將在不久的將來允許ETH衍生品在美國市場交易。他表示,“我們對比特幣非常清楚:比特幣是一種商品。到目前為止,我們還沒有說過任何有關以太坊的事情。” “作為CFTC主席,我認為以太坊是一種商品。” 至于其他加密貨幣,Tarbert承認,許多代幣的地位“在市場上模糊不清”,但他表示,最終“類似的數字資產應該得到類似的對待”。Tarbert補充說,像BCH,BTG和ETC等“分叉”資產是通過原始底層區塊鏈分叉產生的,應該像對待原始資產一樣,“假設分叉不會影響Howey測試因素,也不會造成證券定義的其他問題。”換句話說,CFTC對每一種代幣的分類取決于這種代幣是如何被制造出來的。(雅虎財經)[2019/10/10]

挖礦作為財富分配機制除了提供安全的區塊鏈之外,PoW也為那些耗費算力提供安全的人提供財富分配的方式。回顧一下,礦工從挖礦中獲得獎勵,包括:獲勝區塊會獲得5Ether的靜態區塊獎勵區塊中交易的gas成本包含ommers作為區塊一部分的額外獎勵PoW算法機制是安全和財富分配的方法,為了確保它是長期可持續的,以太坊努力地灌輸這兩個屬性:讓盡可能多的人可以訪問它。換句話說,人們不需要特制的或不常見的硬件來運行算法。它的目的在于讓財富分配模型盡可能開放,以讓任何人都可以通過提供一定的算力來獲得Ether的獎勵。減少任何單一節點獲取不成比例收益的可能性。任何節點如果可以獲取不成比例的收益,這也意味著該節點會擁有決定規范區塊鏈的巨大影響力。這是很麻煩的,因為它降低了網絡的安全性。在比特幣區塊鏈網絡中,與上述兩個屬性相關的一個問題是PoW算法是SHA256哈希函數。這種類型函數的弱點是使用特定的硬件會更有效率,眾所周知的是ASICs。為了減輕這個問題,以太坊選擇了的PoW算法是Ethhash,它的算法讓序列記憶很難。這意味著以太坊的算法設計讓計算隨機數需要很多內存和帶寬。對于計算機來說,大內存需求讓它很難使用內存進行平行計算來同時發現多個隨機數,同時,更高的帶寬要求讓它很難同時發現多個隨機數,即使是超高速的計算機也是如此。這就降低了中心化的風險,并為驗證節點們創建了一個更加公平的競爭環境。有一點需要注意的是,以太坊正在從一個PoW共識機制轉變為所謂的“PoS”證明。這個問題很豐富,也許在未來可以單獨文章探討。結語

這篇文章有很多內容需要消化。如果需要閱讀幾次才能理解,也是可以的,我希望以上的闡述對你有所幫助。

Tags:GAS以太坊ETHPOWMEGASHIB以太坊官網入口ethereumpandaempowr blue

幣安幣
星球日報 | 英國脫歐致海關區塊鏈項目被延遲;“沉船發幣”案主犯再騙10億韓元;韓金融局解散數幣研究小組_區塊鏈

頭條 英國脫歐導致英國海關區塊鏈項目被延遲由于英國試圖脫歐,英國稅務海關總署已暫停進一步開展“基于區塊鏈的海關分布式賬本項目”的制定工作.

1900/1/1 0:00:00
焦點解讀 | 最害怕“摩根幣”的應該是Ripple,如果銀行們都發幣會怎樣?_OIN

2019年2月14日,美國最大的商業銀行摩根大通宣布發行加密貨幣JPMCoin,主要用來實現跨銀行和跨境即時支付,但只有其大客戶才能使用.

1900/1/1 0:00:00
EOS周報(2019年1月14日-1月20日) | 期貨持倉持續上升;69項提案將面向公投;EOS 側鏈BOS 主網上線_EOS

一、本周大事記 公投上線運行;EOSIO發布新版本,性能提升35%;EOS側鏈新項目——BOS主網于1月17日正式激活.

1900/1/1 0:00:00
基于平行鏈架構的「復雜美」,幫助開發者搭建公鏈、聯盟鏈、私鏈_ING

區塊鏈領域,國內外諸多大公司已有布局。但目前區塊鏈行業仍存在技術人才匱乏、技術難度高、底層基礎設施不完善等問題。相應地,方便開發者開發部署的區塊鏈開發平臺、BaaS產品等也應運而生.

1900/1/1 0:00:00
洞見區塊鏈財富密碼之Layer 2_區塊鏈

Let’shopefortheGrail,butproceedwithcaution.BlockVC行業研究團隊聯系人:JamesKuo郵箱:info@blockvc.com感謝您的關注.

1900/1/1 0:00:00
得寸進尺的摩根大通 步步為營_COI

2月14日,美國最大的銀行之一摩根大通宣布自己已經完成開發并測試了屬于自己的數字貨幣JPMCoin。JPMCoin用于實現批發支付業務客戶之間的即時交易結算.

1900/1/1 0:00:00
ads