走進Ethereum網路

什麼是Ethereum Node(乙太坊節點)

“Ethereum node”是用來描述與Ethereum網路交互的程式的術語。乙太坊節點可以是任何設備,從簡單的移動手機錢包應用程式到存儲整個區塊鏈副本的電腦。

Ethereum網路中存在很多類型的節點,而每個節點也都已某種方式充當通訊站。

Ethereum node的工作原理

Ethereum不同與Bitcoin,並不存在單一的程式來作為參考實現。在Bitcoin生態系統中,“比特幣核心(Bitcoin Core)”是主要節點軟體,而在Ethereum黃皮書中則存在一系列的單獨程式(但相容)。目前使用最多的是Geth和Parity。

Ethereum full nodes(全節點)

如果你想要在Ethereum網路中獨立驗證區塊鏈資料,那麼就需要使用之前提到的軟體來運行全節點(Full nodes)。

該軟體會通過其他節點下載區塊,並驗證其中所包含的交易是否正確。軟體還將運行所有已調用的智慧合約,以確保你收到資訊與其他節點相同。如果正常運行,網路中每個節點的設備上都會存有相同的區塊鏈副本。

全節點對於Ethereum的運行至關重要。如果不存在遍佈全球的眾多節點,則網路將會丟失它的抗審查與去中心化特性。

Ethereum light nodes(輕節點)

全節點的運行允許你直接為網路的健康和安全做貢獻。但是,全節點通常需要單獨的機器來運行和維護。而對於無法運行全節點(或只是不想)的用戶,輕節點則是更好的選擇。

顧名思義,輕節點都是羽量級的——它們需要更少的資源且佔用更小的空間。所以,可以在手機或手提電腦等輕便式設備上運行。然而這些代消耗也是有代價的——它們並不是完全的自給自足。也就說它們不是整鏈同步,因此就需要全節點來提供相關資訊。

輕節點用戶端在零售商、服務商以及使用者中相當流行。目前已被廣泛用於收付款領域中。

Ethereum挖礦節點

挖礦節點(Minging code)既可以是全節點用戶端也可是輕用戶端。Ethereum網路中“挖礦節點”這個術語的使用並不像在Bitcoin中那樣的深入且廣泛,但也還是用來識別那些參與者。

想要對Ethereum進行挖礦,就需要具備一些特殊的硬體。其中最常見的是構建礦機。使用者通過礦機將多個(GPUs)連結起來進行高速雜湊運算。

通常礦工有兩種挖礦選擇:一種是單獨挖礦。單獨挖礦意味著礦工獨自工作來創建區塊。如果成功,就會獨享挖礦獎勵。另一種則是加入礦池。當礦工加入礦池後,他們就將自己的算力與其他人合併起來。這樣就可以更快地生成區塊,但同時也需要與礦池中的其他成員分享獎勵。

Ethereum節點的運行條件

區塊鏈一個最重要的特性就是開放性。這就意味著任何人都可以運行Ethereum節點,並完成交易和區塊的驗證工作。

與Bitcoin一樣,也有很多企業提供了隨插即用的Ethereum節點。此種設備對於那些只想啟動並運行單一節點的人們來說非常便利,單弊端是需要為此便利支付額外費用。

之前提到過,Ethereum中存在很多類型的節點用戶端,諸如Geth和Parity。如果你想要運行自己的節點,就需要掌握這些應用程式的安裝方法。

除非你要運行名為“歸檔節點”的特殊節點,否則消費級的可擕式電腦就足夠應付Ethereum的全節點運行了。但最好不要使用日常工作設備,因為節點運行會降低電腦速度。

運行節點時最好保證設備長期線上。倘若節點離線,那麼再次連線時就可能花費大量時間來進行同步。因此,最好是選擇低成本且易於維護的設備。例如,在Raspberry Pi運行輕節點。

Ethereum挖礦條件

不久之後Ethereum網路就將過渡到PoS機制,所以Ethereum挖礦不再是最安全的長期投資方式。也就說明,轉變完成之後,Ethereum的礦工們將面臨轉移到其他網路或賣掉設備的事實。

但目前此種轉變尚未完成,所以如果想參與到Ethereum挖礦中,則需要持有特殊的硬體,例如GPUs或ASICs等。想要收益可觀,那麼定制礦機和廉價電力環境則是必備的。此外,你還需創建一個Ethereum錢包,並配置挖礦軟體來使用。這一切都需要大量時間和資金,所以在進入該市場前,輕仔細考慮是否做好迎接各種挑戰的準備。

Ethereum ProgPoW解讀

ProgPow代表Programmatic Proof of Work,是Ethereum挖礦演算法Ethash的擴展。它使得GPU相比於ASICs更具競爭力。

多年來,在Bitcoin和Ethereum社區中,抗ASIC一直是個飽受爭議的話題。目前的Bitcoin網路中,ASIC已經成為一種主要的挖礦力量。

在Ethereum網路中,雖說存在ASICs,但並不是主流,大部分礦工仍在使用GPUs。然而,隨著越來越多公司將Ethereum ASIC礦機引入到市場,此種狀況很快會有所改變。然而ASICs到底存在什麼問題呢?

一方面,ASICs會明顯降低網路的去中心化。如果GPU礦機無法盈利,那就必須關閉它的挖礦操作,而此時算力只集中在少數礦商手中。此外,ASIC晶片的開發是相當昂貴的,只有少數的公司會具備此能力和資源。而此種現狀可能會導致Ethereum的礦業集中在少數公司手中,形成一定程度的行業壟斷。

自2018年以來,ProgPow的集成問題一直都是飽受爭議。有些人認為它對於Ethereum生態系統是有益的,而也有一些人則表示它可能會導致硬分叉。隨著PoS機制的到來,ProgPoW是否可在網路上實施將逐漸顯現。

Ethereum的軟體發展者

Ethereum網路與Bitcoin是一樣的,都是開源 的。任何人都可以參與開發協議,或構建應用程式。而且,Ethereum開發者社區也是區塊鏈領域中最大研發團體。

Andreas Antonopoulos,Gavin Wood的Mastering Ethereum,以及Ethereum.org的Developer Resource等資源都是新進開發者們很好的選擇。

Solidity簡介

智慧合約的概念是在20世紀90年代被首次提出,而目前在區塊鏈領域中的應用卻帶來了一系列全新的挑戰。2014年由Gavin Wood提出的Solidity已經成為Ethereum上智慧合約開發的主要程式設計語言。語法與Java、JavaScript以及C++類似。

本質上來說,就是開發者可通過Solidity語言,來編寫可分解為乙太坊虛擬機器(EVM)能夠理解的指令代碼。你可以通過Solidity GitHub來瞭解該語言的工作原理。

對於Ethereum開發者來說Solidity並不是唯一選擇。還有一種比較流行的語言——Vyper(語法上與Python相似)。