編譯 | Bite@YouMeLiveAPP
11月11日,Infura的意外狀況讓以太坊充提出現宕機,Infura為什么能產生這么大的影響?其實,通俗一點講,Infura就是一個可以讓DAPP或者交易所快速接入以太坊平臺,而不需要本地運行以太坊節點,本篇文章將針對以太坊節點做深度解讀,希望對成為以太坊2.0信標鏈的驗證者節點有所幫助。
在深入了解并運行以太坊客戶端實例之前,應該了解去中心化網路的概念,
1. 什么是節點和客戶端?
以太坊去中心化運行工作方式需要一個可以驗證區塊和交易數據的分布式節點網路,用戶需要在設備上有一個應用程式,即所謂的客戶端,來運行節點,
以太坊是由分散式節點所組成的網路架構,這些節點稱為以太坊節點或以太坊客戶端。以太坊客戶端可以驗證每個區塊中的所有交易,保持網路安全和數據的準確性。
通過網站(點擊查看)可以看到以太坊網路節點的實時視圖,截至11月18日,分布在全世界各地的以太坊節點總共約139萬左右,(最近數量激增)
以太坊客戶端存在各種語言中(下文詳述),這些客戶端共同點是都遵循同一個規則,并影響以太坊網路和區塊鏈功能運行方式。
2. 節點類型
如果想成為節點,應該了解不同種類數據節點,事實上,客戶端可以運行3種不同類型的節點–輕節點、全節點和歸檔節點。此外,還可以選擇不同的同步策略,從而實現更快的時間同步(同步指的是如何快速獲得以太坊狀態的最新資訊),
(1)全節點
全節點是擁有完整區塊鏈帳本資料的節點,具備獨立驗證的能力來確認交易之有效性。主要在處理下列四件事:
a. 存儲區塊鏈完整數據;
b. 參與區塊驗證,驗證所有區塊和狀態;
c. 所有狀態都可以從一個完整的節點中導出;
d. 為網路提供服務,并根據請求提供數據;
(2)輕節點
輕節點顧名思義即是輕量級的節點,具體定義是不儲存或維護完整的區塊鏈副本,只儲存最小量的狀態來作為發送或傳遞交易訊息的節點,
a. 存儲標頭鏈;
b. 可以對照區塊標頭中的狀態根驗證數據的有效性;
c. 對于低容量、無法承受存儲千兆字節的區塊鏈數據的設備很有用,比如嵌入式設備或行動電話;
(3)歸檔節點
歸檔節點是在全節點的基礎之上,額外儲存了每個區塊高度的區塊狀態,包括個人帳戶與合約帳戶之當時余額等資訊,即針對每個區塊高度當下的狀態進行快照并存檔,
a. 存儲所有保存完整節點的內容,并建立歷史狀態的歸檔,
b. 這些數據以兆兆字節為單位,使得歸檔節點對普通用戶吸引力不大,但對于區塊探索者、錢包供應商和鏈分析等服務來說卻很方便,
除存檔以外的任何模式同步客戶端,都會導致區塊鏈數據的刪除。歸檔節點能讓你快速回到某個區塊高度去查詢當下狀態。歸檔節點 保存了區塊鏈上的完整歷史紀錄與資料,以及所有區塊高度的當時全網狀態。
3. 為什么要運行以太坊節點?
運行自己的節點可以通過去信任方式使用以太坊,無需信任網路,自行用客戶端驗證數據,“Don’t trust, verify”就是一個非常受歡迎的流行區塊鏈口號。節點根據共識規則驗證所有交易和區塊,意味著不必依賴網路中其它節點,也不必完全信任他們。
如果使用自己的節點,Dapp可以更加安全和私密,Metamask,MyEtherWallet和其他一些錢包可以輕松地指向本地節點,
4. 網路效益
多樣化節點對以太坊的健康、安全和運行彈性至關重要,它們為依賴區塊鏈的輕節點提供訪問區塊鏈數據的機會。在使用高峰期,需要有足夠的完整節點幫助輕節點同步。輕節點不存儲整個區塊鏈,而是通過區塊標頭中的狀態根來驗證數據。如果需要的話,可以從區塊中請求更多的資訊。
全節點執行工作證明共識機制,它們不接受不遵循規則的區塊,這在網路中提供了額外的安全性。如果所有的節點都是輕節點,不做全面驗證,礦工可能會攻擊網路,例如創建具有更高獎勵的區塊,
如果運行全節點,整個以太坊網路都會從中受益,
5. 提供商
運行自己的節點可能比較困難,在這種情況下,你可以使用第三方API提供商,如Infura、Alchemy或QuikNode,另外ArchiveNode是一個由社區資助的歸檔節點,將以太坊區塊鏈上的歸檔數據給那些買不起的獨立開發者。
如果有人在社區中運行帶有公共API的以太坊節點,你可以通過Custom RPC將輕錢包(如MetaMask)指向社區節點,這樣比隨機受托的第三方更具隱私。
另一方面,如果你運行一個客戶端,你可以與你的朋友分享,他們可能需要它,
6. 客戶端
不同團隊使用不同的編程語言開發以太坊客戶端,這使得網路更加強大和多樣化。理想目標是在沒有任何客戶端主導的情況下實現多樣性,以減少任何單點故障,
這個表格總結了不同的客戶端,這些客戶端都在積極地工作、維護,并通過客戶端測試,
每個客戶端都有獨特的用例和優勢,可以根據自己的喜好來選擇,客戶端的多樣性可以集中在不同功能和用戶受眾上,你可能希望根據功能、支持、編程語言或許可證來選擇客戶端,
(1)Geth
Go Ethereum(簡稱Geth)是以太坊協議的原始實現之一。目前,它是受眾最廣泛的客戶端,擁有最大用戶群,為用戶和開發者提供各種工具,它是用Go語言編寫,完全開源,并采用GNU LGPL v3授權,
(2)Open Ethereum
OpenEthereum是一個快速、功能豐富的以太坊客戶端,提供快速可靠的服務所需基礎架構,這些服務需要快速同步和最大限度的運行時間,OpenEthereum的目標是成為最快、最輕、最安全的以太坊客戶端,它提供了一個干凈、模塊化的代碼庫,具有以下優勢:
a. 易于定制
b. 輕集成到服務或產品中
c. 最小內存和存儲空間占用
OpenEthereum使用最新Rust編程語言開發,并以GPLv3進行授權。
(3)Nethermind
Nethermind是用C# .NET技術棧創建的以太坊實現,包括ARM在內的所有主要平臺上運行,它提供了強大的性能,包括:
a. 性能強勁的虛擬機;
b. 狀態訪問;
c. 網路和豐富功能,如Prometheus/Graphana儀表盤、seq企業日志支持、JSON RPC追蹤和分析插件,
(4)Besu
Hyperledger Besu是一個用于公共網路和許可網路的企業級以太坊客戶端,它運行所有以太坊主網功能,從追蹤到GraphQL,具有廣泛的監控,并由ConsenSys支持,無論是在開放的社區渠道還是通過企業的商業SLA。它是用Java編寫的,并獲得Apache 2.0許可,Hyperledger Besu是一個以Apache 2.0許可開發并以Java編寫的開源以太坊客戶端。它運行在以太坊公共網路,專用網路以及測試網路(如Rinkeby,Ropsten和Grli)上,Besu實施工作量證明(Ethash)和權限證明(IBFT 2.0和Clique)共識機制,
7. 硬件
每個客戶端對硬件的要求不同,但一般都不高,節點只需要保持同步即可,不要把它和挖礦混為一談,挖礦需要更多的計算能力。不過,同步時間和性能確實會隨著更強大的硬件而提高,根據需求和要求,以太坊可以在電腦、家庭服務器、單板電腦或云端的虛擬專用服務器上運行,
運行自己的節點的一個簡單方法是使用像DAppNode這樣的“即插即用”盒子,它為運行客戶端和依賴客戶端的應用程式提供了硬件,并提供簡單的用戶界面。
8. 配置要求
在安裝任何客戶端之前,請確保計算機有足夠的資源來運行。最低和推薦的要求可以在下面找到,然而關鍵部分是磁盤空間,同步以太坊區塊鏈是非常重視輸入/輸出,最好有一個固態硬碟(SSD),在HDD上運行以太坊客戶端,你需要至少8GB的RAM作為緩存。
(1)最低配置
最低雙核CPU;
最低4GB內存與SSD,硬碟空間8GB以上;
8 MBit/s帶寬;
(2)推薦配置
4核CPU;
16GB以上內存;
高速固態硬碟,至少500GB的可用空間;
25+MBit/s帶寬;
根據使用的軟體和同步模式,需要數百GB的磁盤空間,大概的數字和增長情況可以在下面找到,
運行以太坊節點最方便、最便宜的方式是使用Raspberry Pi等ARM架構的單板電腦。ARM 中以太坊提供了Geth、Parity、Nethermind和Besu客戶端的圖片。像這樣小巧、實惠、高效的設備是在家里運行節點的理想選擇,
參考文章:
NODES AND CLIENTS