以太坊節點介紹
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,即所有歷史的交易列表,因此當輕節點需要驗證某個交易的合法性時,具體做法為:
- 向鄰近的全節點發起確認請求
- 假設有一個合約執行的交易,那麼必須要有該合約部署時的原始碼
- 全節點收到請求後提供所需相關資訊供驗證
輕節點特點
- 只儲存每個區塊的區塊標頭 Block Header
- 不一定保持隨時在線(獲取最新的 Block Header 資訊)
- 無法驗證大多數交易的合法性,只能驗證與自己相關交易的合法性
- 無法驗證新區塊的正確性
Archive Node 歸檔節點
- 「歸檔節點」是在全節點的基礎之上,額外儲存了每個區塊高度的區塊狀態(個人帳戶與合約帳戶之當時餘額等資訊)
- 即針對每個區塊高度當下的狀態進行快照並存檔
- 方便查詢歷史狀態
Reference