Try   HackMD

以太坊節點介紹

tags: blockchain Ethereum

Ethereum Network

  • Ethereum 是由分散式節點所組成的網路架構
    • 節點稱為 Ethereum Nodes or Ethereum Clients
    • 任何人只要有規格足夠的硬體設備都能夠加入以太坊網路成為節點,貢獻算力賺取區塊挖礦獎勵

以太坊節點所做的工作

  • Receive Transactions:接收來自 DApp、錢包 或 其它節點 的交易資訊
  • Receive Blocks:從其它節點接收區塊資訊,並同步至最新的區塊高度
  • Validating:驗證新的區塊之正確性、驗證待處理交易之有效性
  • Executing:處理交易,進行運算並更改狀態值,打包成新區塊
  • Mining:用電腦算力來計算 nonce 值,最先找到 nonce 值出塊並廣播的礦工可以獲得區塊獎勵與所有交易之手續費(Gas)
  • Consensus:通過共識機制達成全網帳本之一致性或區塊重組(reorg)

Ethereum Nodes Categories

Full Node 全節點

  • 全節點是擁有完整區塊鏈帳本資料的節點,具備獨立驗證的能力來確認交易之有效性
    • 儲存所有歷史交易資訊
    • 監測礦工挖出來的新區塊,驗證其合法性後同步該區塊
    • 監測區塊鏈網路中的新交易資訊,驗證每個交易的合法性
    • 將驗證過的「交易/區塊資訊」廣播給全網路節點

礦工節點

  • 礦工: 將驗證過的待處理交易打包成新區塊,並以電腦算力來計算 「nonce 值」
  • 最先找到 nonce 值成功出塊並廣播的礦工會獲得區塊獎勵與所有交易之手續費(gas)作為報酬
  • 礦工必須要運行全節點才能即時瀏覽區塊鏈歷史資料進行交易驗證,再將驗證通過的交易進行打包
    • 因此,所有礦工必定是全節點

Light Node 輕節點

  • 只儲存最小量的狀態(即「區塊標頭 Block Header」)來作為發送或傳遞交易訊息的節點

Block header and body

輕節點如何驗證交易

  • 由於割捨掉區塊的 Body,即所有歷史的交易列表,因此當輕節點需要驗證某個交易的合法性時,具體做法為:
  1. 向鄰近的全節點發起確認請求
    • 假設有一個合約執行的交易,那麼必須要有該合約部署時的原始碼
  2. 全節點收到請求後提供所需相關資訊供驗證

輕節點特點

  • 只儲存每個區塊的區塊標頭 Block Header
  • 不一定保持隨時在線(獲取最新的 Block Header 資訊)
  • 無法驗證大多數交易的合法性,只能驗證與自己相關交易的合法性
  • 無法驗證新區塊的正確性

Archive Node 歸檔節點

  • 「歸檔節點」是在全節點的基礎之上,額外儲存了每個區塊高度的區塊狀態(個人帳戶與合約帳戶之當時餘額等資訊)
  • 即針對每個區塊高度當下的狀態進行快照並存檔
  • 方便查詢歷史狀態

Reference