以太坊是如何運作的?(六)

買賣虛擬貨幣

區塊

所有的交易組成一起進入區塊。區塊鏈包含一系列連結在一起的區塊。以太坊中,一個區塊包含:

  • 區塊頭

  • 關於區塊中包含的一組交易的資訊

  • 當前區塊的ommers的一組其他區塊頭

關於Ommers

ommer到底是什麼?ommer是一個區塊,它的父區塊相當於當前區塊的父塊的父塊。快速瞭解一下ommer用於什麼,為什麼區塊包含ommers的塊頭?

由於以太坊的構建方式,出塊時間比其他區塊鏈更短,比如它約15秒/區塊,而比特幣的出塊時間是10分鐘/區塊。這讓它擁有更快的交易速度。然而,更短出塊時間的一個不足之處是礦工會發現有更多的競爭區塊。這些競爭區塊也稱為“孤塊”(即所挖出的區塊並沒有進入主鏈)。

ommers的目的是幫助獎勵礦工包括這些孤塊。礦工包含的ommers必須是“有效”的,意味著當前區塊的六代之內或更小範圍內。在六代之後,老舊的孤塊不再被引用,因為包括較老的交易會讓事情變複雜。

Ommer區塊獲得的獎勵比全區塊要少。儘管如此,對礦工來說,這依然有激勵,讓他們把這些孤塊包括進來,由此收穫獎勵。

區塊頭

讓我們回到區塊。之前提到過每個區塊都有區塊頭,它究竟是什麼?

區塊頭是區塊的一部分,包括:

  • parentHash:父區塊頭的雜湊值(這也是讓區塊連成鏈的原因)

  • ommersHash:當前區塊的ommers列表的雜湊值

  • 受益人:接收挖礦費用的賬戶地址

  • stateRoot:狀態trie的根節點的雜湊值(狀態trie儲存於區塊頭並且更方便於輕客戶端驗證狀態的任何資訊)

  • transactionsRoot:包含區塊中列出來的所有交易的trie的根節點雜湊值

  • receiptsRoot:包含區塊中列出來的所有交易收據的trie的根節點雜湊值

  • logsBloom:Bloom過濾器(資料結構),它包含日誌資訊

  • difficulty:區塊的難度級別

  • number:當前區塊的計數(創世區塊的區塊號是0,此後的每個後續區塊都按順序增加)

  • gasLimit:當前的每區塊的gaslimint

  • timestamp:區塊開始的unix時間戳

  • extraData:跟區塊相關的額外資料

  • mixHash:也是一個雜湊值,當它結合nonce時,證明該區塊已經執行足夠的計算

  • nonce:也是一個雜湊值,當它結合mixHash時,證明該區塊已經執行足夠的計算



注意每個區塊頭是如何包含三種trie結構:

  • 狀態(stateRoot)

  • 交易(transactionRoot)

  • 收據(receiptsRoot)

這些trie結構只是之前提到過的Merkle Patricia tries。此外,以上的描述中一些術語需要澄清。

Logs

以太坊允許logs,以便於追溯各種交易和訊息。合約可以透過定義“事件”來清晰生成日誌,這裡的“事件”則是想要記錄日誌。

log條目包含:

  • 日誌者的賬戶地址

  • 一系列的主題,這些主題代表本次交易執行的不同事件

  • 跟這些事件相關的任何資料

日誌儲存在bloom過濾器中,該過濾器以有效方式儲存無盡的日誌資料。

交易收據

儲存在區塊頭的日誌來自於包含在交易收據中的日誌資訊。正如你在商店購物會收到收據一樣,以太坊也會為每筆交易生成收據。正如你所期望的,每張收據都包含交易相關的一些資訊。收據包含如下內容:

  • 區塊編號

  • 區塊雜湊

  • 交易雜湊

  • 當前交易使用的gas

  • 當前交易執行後當前區塊所使用的累積gas

  • 當執行目前交易建立的日誌

  • ......等等

--未完待續---

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;