引言
以太坊的概念建立區塊鏈和密碼學貨幣之上,不熟悉區塊鏈和比特幣的讀者可以先去看看《比特幣的簡介》和《區塊鏈技術的簡介》。本文假定讀者對比特幣的運行已有一定了解。
以太坊是什么喲?
以太坊是運行在計算機網絡上的軟件,使數據和一些叫智能合約程序,在沒有中央協調者的情況下,也可以在網絡中復制與處理。以太坊的愿景是創造一種不會停機的、抗審查的、能自我維持的去中心化世界計算機。
比特幣在世界范圍內無數計算機上實現了交易數據的驗證,復制和存儲(因此也有人稱之為 “分布式賬本”)。而以太坊則把比特幣中區塊鏈的概念加以擴展,更進一步,希望在世界各地的無數計算機上同等無偏地運行計算機代碼。
比特幣實現了分布式的數據存儲,以太坊則用同樣的方式實現了分布式的數據存儲和計算。(從整體來看),以太坊就像一臺計算機,而上面運行的計算機程序我們叫做 “智能合約”。(從實際上來說),一個網絡參與者乃是在他的電腦上用一種叫 “以太坊虛擬機” 的操作系統運行這些程序(“智能合約”)。
編者注:這樣說更順一點:有無數人在自己的計算機上運行以太坊客戶端軟件,這些電腦之間會相互通信、傳遞數據。只要這些數據符合一定的規則(“以太坊共識規則”),客戶端軟件就會按照一些規則來使用這些數據,具體來說,就是用這些數據在 EVM(“以太坊虛擬機”)(相當于 Windows 或者 Android)中運行一些程序(“智能合約”),然后得出結果。有趣的是,只要大家都遵守同樣的規則并相互通信,無數節點得到的結果都是一樣的(“共識”)(但達成共識一般需要時間,不是瞬時達成的)。
可以參照下圖來理解:
(最下面一層是相互通信,中間一層是對這些數據達成共識,最上面一層是用這些數據驅動應用程序的運行)
此外,這個過程還跟一個非常有意思的概念有關:“可信任計算”,指的是計算過程的可信任性。感興趣的可以看《可信任計算的黎明》。
怎么 “運行” 以太坊呢?
你可以下載以太坊客戶端(Ethereum client)軟件。當然咯,如果你有足夠的耐心,也可以自己寫一個。類似于 BitTorrent 和 Bitcoin 這類軟件,以太坊客戶端會在互聯網中把你和其他使用相同客戶端軟件的人連接起來,這樣一來,你就可以從他們那下載以太坊的區塊鏈了。以太坊客戶端軟件還將獨立地驗證收到的每個區塊是否符合以太坊的規則。
以太坊客戶端軟件可以用于:
· 連接以太坊的網絡
· 探索以太坊的區塊鏈
· 創建新的交易和智能合約
· 運行智能合約
· 挖掘新區塊
編者注:所謂的 “區塊鏈” 即是一系列的交易數據,這些交易是網絡中所有計算機都確認過符合(當時的)規則并且執行過的(“交易” 主要是指密碼學貨幣的轉賬)。而 “挖掘新區塊” 的意思就是試圖把一些數據傳播出去讓其它計算機也來執行,之所以叫 “區塊” 是因為這時候這些交易是打包成一個數據塊來傳播的(別的時候,交易數據也可以獨立傳播)。
而平時我們說的 “區塊鏈”,指的是一套讓上述系統(所有計算機都保存并且執行了同樣的交易數據)得以實現的技術(計算機交互協議)。
如此,你的計算機就化身為網絡中的一個節點,運作著 “以太坊虛擬機” ,并且與所有其他節點行為一致。在點對點的網絡上,不存在主服務器,任何電腦都有平等的權力和地位。
編者注:截至 2019 年 5 月,保存了完整以太坊區塊鏈的節點(也稱為 “全節點”),即上文所說的 “無數”,約為 6000 個。因為網絡是開放的,節點的數量也會不斷變化。
至 2019 年 10 月,以太坊全節點數量上升到約 7700 個。
以太坊和比特幣的相似之處
認為理解以太坊最簡單的方法是對比以太坊和比特幣(一個更簡潔的系統)的相同點與不同點。事不宜遲,我們先說相同點。
以太坊也會形成一條區塊鏈
像比特幣一樣,以太坊也會形成一條區塊鏈,區塊鏈包含著數據塊(交易數據和智能合約代碼)。某些參與者創建和挖出區塊后,就分發給其他參與者去驗證(這個區塊的合規則性)。
要了解以太坊區塊鏈都記錄了什么信息,請看這個 “區塊瀏覽器”:https://etherscan.io
每個區塊都要引用前一個區塊的哈希或者說 “數字指紋”,這樣區塊就會前后相接形成一條鏈。想了解更多區塊鏈技術的詳細介紹,請參閱:《區塊鏈技術的簡介》
編者注:如上所述,參與者可以把一些數據組織成一個 “區塊” 來傳播,其它節點收到區塊后會先驗證這個區塊符不符合我們預先確定的規則,符合就執行區塊中的交易,不符合就會拒絕該區塊:不執行其中的交易,也不再傳播該區塊。
關于 “哈希值”,簡單理解就是一個函數的結果,相同的數據輸進函數得到的結果一定相同,不同的數據輸進函數得到的結果幾乎可以說一定不同(相同的概率極低),因此可以用哈希值來標示。請看《Emoji 表情帶你秒懂哈希函數》
以太坊是無需許可的開放式網絡
像比特幣一樣,以太坊主網是開放且無需許可的。任何人都可以通過下載的或者自己寫的軟件來連接網絡,無需登錄某個網站、無需向任何人報備,即可開始創建交易和智能合約、驗證交易乃至挖礦(挖掘區塊)。
一般而言,人們但凡談到以太坊,指的都是這個無需許可的開放式版本。但是,和比特幣一樣,有了以太坊客戶端軟件后,你只需稍微追加一些設置,就可以建立與公共網絡相互獨立的私有網絡。不過,目前私有網絡中的代幣和智能合約還不能與公共代幣兼容。
想了解更多關于無需許可的開放式網絡和私有權限網絡之間的差別,請閱讀:《不同類型的 “區塊鏈”》
以太坊用工作量證明(PoW)挖礦
和比特幣一樣,以太坊礦工在創建有效區塊時需要求出一類數學難題的一個解,求解過程無章法可言,因此必須投入大量電力用計算機不斷運算。
以太坊的工作量證明數學難題被稱為 “Ethash”,它和比特幣的 PoW 算法稍有不同。人們使用常見的硬件也可以參與 Ethash 挖礦。在比特幣挖礦活動中,專用硬件(ASIC)十分常見,而以太坊的 Ethash 則在設計上削減了專用硬件的效率優勢。
編者注:具體而言,在 PoW 系統中,當挖礦者把交易打包之后會形成一個結構化數據(“區塊頭”)(交易不同則這部分結構化數據自然不同),區塊頭中還有一些別的數據,比如創建區塊時的時間戳、父區塊的哈希值,等等。而區塊合規則性的要求就是區塊頭的哈希值(作為一個數值)符合一定的要求(“難度要求”)(比如比特幣協議的難度要求是哈希值開頭的 “0” 達到一定數量)。但是,如上所言,確定數據的哈希值是確定的,沒有什么能保證僅憑上述數據可以產生一個符合要求的哈希值,因此出塊者要不斷改動其中一個沒有特殊意義的數據(“區塊 nonce”),直至區塊頭的哈希值符合難度要求(否則即使傳播出去了,其它節點也不會接受這個區塊)。
在以太坊的路線圖上,有一個叫 Casper 的協議計劃,它一改耗電的工作量證明,搖身變為更節能的權益證明,會在以太坊未來的 “寧靜(Serenity)” 版本中發布。
編者注:所謂權益證明(PoS),即是用參與者在一個資金池中的資金比重來確定 TA 的出塊概率,參與者之間不再比拼誰先算出符合難度的哈希值,自然也就不需要投入大量電力來計算了。
自 2014 年來,以太坊核心開發團隊就一直在研究權益證明共識機制。截至此時(2019 年 5 月),在以太坊主網上實現的權益證明方案 Casper 已基本敲定,有望于 2020 年第一季度完成部署,翻開以太坊的全新篇章。
以太坊有一種內置的密碼學貨幣
以太坊的代幣叫 Ether,英文縮寫為 ETH。現在的市場已經接受拿 ETH 與其它密碼學貨幣和主權貨幣相交換,就像接受 BTC 一樣。ETH 當前價值約為 13 美元/ETH(2016 年 10 月)。與比特幣類似,以太坊代幣的所有權也記錄在以太坊區塊鏈上,雖然技術層面上嚴格來說,記錄的方式稍有不同。
編者注:這里的重點是,內置的密碼學貨幣是隨著區塊的挖出而發放的:每出一個塊,就把(預先確定好)一定數量的密碼學貨幣發放給挖出區塊的人(“礦工”)。
上文提到很多次的 “交易”,在比特幣區塊鏈上主要是指比特幣的轉賬交易,而在以太坊上則更為多樣,主要包括 ETH 的轉賬、用戶與智能合約的交互、以及智能合約所發行代幣的轉移。
自原文成章以來,ETH 的價格已經從 13 美元(約 87 元)開始一路上漲,最高曾到達 1347 美元的高位(約 9000 元)(2018 年 1 月)然后逐漸下跌至 100 美元左右(2018 年 10 月),現又開始逐漸回升至 250 美元(2019 年 5 月)。此外,密碼學貨幣對法定貨幣的價格幾乎每天都在大幅波動。
準備好小板凳,我們要開啟更技術也更復雜的話題了。
以太坊的出塊時間更短
在以太坊網絡中,每個區塊之間的時間間隔大概是 14 秒,而比特幣的區塊間隔時間約為 10 分鐘。這個時間差意味著,如果你同時發了比特幣交易和以太坊交易,一般而言,把以太坊交易記錄到以太坊區塊鏈的速度要比比特幣交易記錄到比特幣區塊鏈的速度要快。我們也可以將這一點理解為,比特幣網絡每 10 分鐘寫一次數據庫,而以太坊網絡每 14 秒寫一次數據庫。
編者注:雖然在比特幣和以太坊在這一點上有所不同,但具備這種屬性的原理都是一樣的:它們是 PoW 系統。如上所述,無數計算機處在一個開放式的網絡中,所有計算機都隨時可以退出,也可以隨時加入,那么這就帶來一個嚴肅的問題:如果所有計算機各自為政,自己接收到數據就處理,那么這些計算機就不能形成 “共識”,整個系統也無法實現基本的功能(比如貨幣轉賬,因為各有各記載的交易歷史,誰也無法確定某個賬戶到底有多少錢)。因此,PoW 的意義等于是說:如果你要在這個賬本上記一筆,請先證明你花費了很多計算資源。輔之以 “難度要求” 的變化,我們可以實現對出塊所需工作量的調整,進而調整個網絡的出塊間隔。為什么要實現這種穩定的出塊間隔可能有很多理由(比如可預期的增發數量,比如網絡的安全性),這里不詳細展開了。
以太坊的區塊更小
比特幣中,區塊大小的上限以字節為單位衡量,目前為 1MB,而以太坊則用衡量智能合約計算復雜度的單位來標示區塊的大小,這個大小被稱為 “區塊 Gas 上限”,而且區塊 Gas 上限可以逐塊變化(比特幣的區塊大小上限是一定的)。
目前,以太坊的區塊大小上限約為 1,500,000 Gas。在用戶之間(即不與智能合約交互),通過 ETH 達成的基礎交易或支付有 21,000 Gas 的復雜度,因此,你可以把 70 單交易放進一個區塊中(1,500,000 除以 21,000)。在今天的比特幣網絡中,一個區塊可以包含 1500-2000 單交易。
就數據而言,目前大多數以太坊的區塊都在 2KB 以下。
編者注:截至 2019 年 5 月 17 日,以太坊區塊的 Gas 上限已達到 800 萬 Gas。單塊數據量大小是幾十 KB。
2019 年 9 月,以太坊區塊的 Gas 上限上升到 1000 萬 Gas,單塊數據量大小是 20 多 KB。
以太坊使用 EVM 來運行智能合約
相比于比特幣原始的腳本語言,以太坊上可以部署部署的代碼(“智能合約”)對開發者而言更先進也更友好。智能合約代碼運行在以太坊虛擬機環境中,而網絡中所有的計算機都運行著 EVM。如果你熟悉 Microsoft Excel 宏(由 Excel 運行的代碼段),你應該很容易理解,智能合約就是由以太坊虛擬機運行的代碼段。
在很多資料中,人們通常把以太坊智能合約被稱為 “圖靈完備”(Turing complete)的。這意味著智能合約功能完整,可以執行其他編程語言中能夠執行的所有計算。
以太幣的發行
ETH 是怎么產生的呢?ETH 和 BTC 發幣最大的不同在于—— BTC 大約每 4 年發行量減半一次,而 ETH 的發行量則保持不變(也許只是在 Serenity 版本以前)。
ETH 是怎么產生的呢?ETH 和 BTC 發幣最大的不同在于—— BTC 大約每 4 年發行量減半一次,而 ETH 的發行量則保持不變(也許只是在 Serenity 版本以前)。
編者注:并不是保持不變。如上所述,在區塊鏈上,原生密碼學貨幣是每出塊便增發一次,這個增發數量我們稱為 “區塊獎勵”。以太坊的區塊獎勵也已經過多次削減,在 2017 年 10 月,區塊獎勵由 5 個削減到 3 個 ETH,2019 年 2 月,以太坊區塊獎勵削減為 2 個。因此,我在這里用 ETH 供應量的實際變化圖來替代作者的原圖。
這比 Bitcoin 要復雜得多。概言之,現存的 ETH 幣計算公式如下:
預挖礦(Pre-mine)+ 區塊獎勵(Block rewards) + 叔塊獎勵(Uncle rewards) + 叔塊引用獎勵(Uncle referencing rewards)
預挖礦
在 2014 年 7 月和 8 月的眾籌中,發行的 ETH 數量約為 7200 萬。眾籌中產生的 ETH 被稱為 “預挖礦”。人們決定,眾籌之后 ETH 的發行量將被限制在每年不超過眾籌總量的 25% (也就是說,除了眾籌一次性產生的約 7200 萬 ETH 外,每年的 ETH 發行量不超過 1800 萬)。
區塊獎勵
目前,挖出一個區塊可以獲得 5 個新的 ETH 。如果每 14 秒開采一個區塊,一年有 3150 萬秒(365x24x60x60),這意味著每年可挖出 225 萬個區塊。225 萬 個區塊,每區塊 5 ETH = 1130 萬 ETH /年。這符合每年產生不到 1800 萬個 ETH 的承諾。
叔塊獎勵
實際上 ETH 的發行量會稍大于1800 萬。由于一些區塊挖得比較晚,因而沒有成為主鏈的一部分。在比特幣網絡中,我們把這些挖得稍晚的區塊叫 “孤塊”,是完全拋棄掉的,但是在以太坊中,這些區塊被稱為 “叔塊”,而且后續區塊可以引用這些 “叔塊”。如果有人引用某個 “叔塊”,就會給挖出 “叔塊” 的礦工帶來 4.375 ETH 的 “叔塊獎勵”(相當于八分之七的正常區塊獎勵)。目前,以太坊每天約產生 500 個叔塊,即每天有額外的 2,000 ETH 進入流通(按這個速度,每年會額外發行約 700 萬 ETH )。
引用叔塊的獎勵
在一個叔塊后出塊的礦工,也可以得到 0.15ETH (最多引用 2 個叔塊)。
上面描述的這個模型被稱為 Ghost 協議,(Ghost 即 ”貪婪的最大權重觀察子樹“ 縮寫)。在 Ghost 協議當中,有效的塊是確定的,礦工也可以得到獎勵。
編者注:叔塊獎勵是很多朋友理解中的難點,確實需要不少背景知識。簡單來說就是:在網絡中,傳播區塊是需要時間的,因此某個塊挖出之后,在一定時間內可能只有一部分節點收到了這個區塊,而另一些節點在這期間收到了另一個區塊并把它當成了最新區塊,PoW 系統所用的共識算法是沒法當下就判斷清楚哪個是主鏈的。以太坊的出塊速度比較快,這種情況可能經常發生,因此在共識算法上安排了這種經濟激勵來緩解這種情形——即使出現了叔塊,主鏈還是基本確定的。詳情請看《以太坊設計原理》
未來以太幣的產量變化
在以太坊從工作量證明(包括叔塊獎勵規則)變為的權益證明機制時,機制的變化對發行的影響暫時還無定論。權益證明機制將使用一個名為 Casper 的協議(是的,就是那個鬼馬小精靈,誰還敢說 cryptonerds 沒有幽默感?)。在 Casper 協議下的 ETH 發行率很可能地遠低于 Ghost 協議下的發行率。
挖礦獎勵
那么,礦工可以在挖礦中得到什么?
在比特幣中,每挖到一個新的區塊,礦工會得到 12.5 個比特幣(這是當前的情形);另外,還有打包在區塊中的交易的發起人附帶給礦工的手續費。
在以太坊,礦工可以得到:
· 挖到一個新的區塊會獎勵 5 個以太幣(或者一個叔塊會獎勵 4.375 個以太幣);
· 另外,用于引用至多兩個叔塊另外一個小獎勵, (1/32 個區塊獎勵,即:每個叔塊獎勵 1/32×5 ETH = 0.15625 個以太幣);
· 交易發起者為合約運行和轉賬而支付的 Gas 費用
目前,每個區塊平均的 Gas 上限為 1,500,000,區塊網絡中每個 Gas 的平均價格是 0.000000022 個以太幣,也就是說,一個礦工可能從一個整個區塊中得到的 Gas 獎勵是 0.033 個以太幣。需要注意的是,合約中的 Gas 是用流通中的以太幣支付的,而非用新創造的以太幣支付的。
編者注:發起交易者需要自己為交易設置 Gas 價格(即愿意為每單位 Gas 支付多少費用),這個 Gas Price 會成為礦工選擇是否打包該交易的依據之一。因為人們對交易的需求不是時時都一樣的,Gas Price 也會隨當前人們對交易上鏈需求的改變而波動。
以太坊的其他部分:Swarm 和 Whisper
計算機需要 計算,儲存數據 和 交互。以太坊需要有效且穩健的方式,才能實現不停機、抗審查且自我維持的去中心世界計算機這一愿景。以太坊虛擬機器僅僅是整體中的一個元件。
以太坊虛擬機是能運行合約邏輯的計算原件。
· 這種 計算 不依賴中央服務器
和 BitTorrent 一樣,Swarm 協議是點對點的文件共享協議,不同的是它以小額以太幣支付來激勵文件存儲和分享。文件被分成塊,在網絡參與者之間分發和存儲。存儲和傳播數據塊的節點可以從請求存儲和檢索服務者處得到 ETH 作為報酬。
· Swarm 協議的 文件儲存 不依賴于中央處理器
Whisper 是一種加密通訊協議,允許節點間安全地直接發送信息,還能幫助信息發送者和信息接受者屏蔽掉多余的第三方
· Whisper 協議的 通訊 也無需依賴于中央服務器
以太坊諸概念
智能合約
智能合約是儲存在以太坊區塊鏈上的小程序。用適量的以太幣即可激活并運行這些程序(編者注:也可能需要其它特殊的 Token 才能激活)。更多關于智能合約的資訊,詳情請看:《智能合約簡介》
這里有一個引自維基百科,關于智能合約的實例:
在以太坊中,你可以創建一個包含代碼的新帳戶,并在交易中將其上傳到以太坊的區塊鏈上,從而建立一個智能合約。
只要合約上傳成功,就會像自動點唱機一樣:想要運行合約時,只需要給它發送一個包含以太幣支付的交易,當然可能還需要額外提供另一些信息。
每一臺挖礦電腦會用以太坊虛擬機來運行智能合約(這是他們挖礦過程的一部分),并得出最終的輸出值。理論上,如果沒有人使壞,以太坊網絡上的每臺電腦都會輸出一樣的結果,因為用戶都運行著包含相同信息的智能合約代碼。
挖出區塊后,獲勝的礦工會向網絡的其他用戶公布挖到的塊,其他礦工紛紛驗證并在得到相同的結果后,把該區塊塊放到他們的區塊鏈中。這就是更新以太坊的區塊鏈狀態的方式。
賬戶
在比特幣中,人們把儲存比特幣的地方稱為 “地址(address)”,它就像銀行賬戶,只不過存的是比特幣。在以太坊中,用于儲存以太幣的叫 “賬戶(accounts)”,賬戶有兩種:
· 只儲存著以太幣的賬戶,這和比特幣的地址差不多。它有時也會被稱作 “外部賬戶”(EOA)。這種賬戶都會有相應的私鑰,私鑰持有者可以用私鑰來簽發該賬戶的交易。
這里有一個儲存以太幣的賬戶的例子:https://etherscan.io/address/0x2d7c76202834a11a99576acf2ca95a7e66928ba0
· 存有代碼(并可能存儲著 ETH 或其它 Token)的賬戶。只要存適量的以太幣進去,這些智能合約就會生效。智能合約上傳后,其代碼就一直保存在以太坊區塊鏈上,等待著被激活使用。
合約賬戶的例子,如下:https://etherscan.io/address/0xcbe1060ee68bc0fed3c00f13d6f110b7eb6434f6#code
叔塊和孤塊:差一點就上主鏈的塊
以太坊的區塊生成率遠高于比特幣的區塊生成率(以太坊種每小時可生成 250 個區塊 vs 比特幣中每小時可生成 6 個區塊)。區塊生成得越快,“區塊沖突” 的概率就會上升,即:許多有效的區塊幾乎同時生成,但是它們之中,僅有一塊可以放在主鏈中。從技術上來說,盡管這些未上主鏈的區塊包含的交易都是真實的,但是這些數據不能被認定為主鏈的一部分。
在比特幣協議中,這類未上主鏈的區塊被稱為 “孤塊”,孤塊不是主鏈的組成部分,而且也不會被主鏈上的區塊引用。
而在以太坊中,這些區塊被稱為 “叔塊”,后續一段距離內的區塊可以引用叔塊(詳見上文 “以太幣的發行” 部分)。雖然叔塊中的數據最終也不會派上用場(即叔塊上的交易不會得到執行),挖出叔塊的礦工還是可以獲得稍小一些的區塊獎勵。
這促成了兩個重要結果:
這會激勵礦工保持挖礦動力,即使挖出的區塊不能上主鏈(因為高速的區塊生成率生成了更多的孤塊和叔塊)
承認創建叔塊所花費的能源還可以提高區塊鏈的安全性
編者注:總而言之,Ghost 是快速出塊過程中的一種保護措施,讓沒有挖到主鏈塊的礦工也不至于承受大量損失,有動力去維護主鏈。
Gas 和 Gas Price
激活一個智能合約時,你等于是請求整個網絡中的所有礦工都來執行合約中的計算工作。這會花費礦工的時間和能源,用戶理所當然得給他們報酬。Gas 就是支付服務費的機制。
手續費一般是一筆小額的以太幣,想要運行合約,就需要給礦工支付來讓他們工作。這類似于給自動點唱機投幣。
付款項(單位:以太幣)= 實際使用的 Gas 數量(單位:Gas)* Gas 價格(單位:以太幣/Gas)
Gas 數量
智能合約越復雜(計算步驟的數量和類型、儲存量的大小等),完成合約運行所需的 Gas 就越多。還用投幣點唱機來類比的話,就好比點的歌越久,唱得越大聲,需要支付的費用就越多。
Gas 價格
雖然合約的復雜程度各有差別,但運行具體一個合約所需的 Gas 數量是固定的,(手續費大小差異主要來源于 Gas 價格),而 Gas 價格是由希望運行合約的人在請求運行合約時所指定的(有點像比特幣的交易費用)。礦工會看開出的 Gas 價格高低來決定他們愿不愿意運行合約。如果想讓礦工運行合約,開出高價就好。可以說,Gas 市場是一個競爭激烈的拍賣場,就看用戶愿意為運行智能合約付出多大成本了。
為什么需要 Gas 機制?
運行智能合約需要花費 Gas/以太幣/金錢,有效防止了人們隨意激活合約,從而避免了在免費運行的情況下可能出現的類似垃圾交易擁堵網絡的問題。
編者注:這里沒有言明的一點是,其實交易的 Gas 數量和 Gas 價格都是可以由用戶自由調整的。如果沒有給夠 Gas 數量,無法完成合約中的計算,那么系統會完全回退,就當這筆交易沒有發生過,雖然 Gas 費用還是會全部交給礦工;如果給的 Gas 數量太多,那么完成相關計算后,剩余的 Gas 費用會自動退還給發起交易的賬戶。
以太幣的單位
好比于一美元可以分成 100 美分,一比特幣可以分成 100,000,000 sataoshi,以太幣也有專有的單位命名規則。
以太幣最小的單位是 wei ,每一以太幣等于 1000,000,000,000,000,000 wei,還有其他單位,如:Finney、Szabo、Shannon、Babbage 和 Ada。這些命名都來源于為密碼學貨幣和網絡作出卓越貢獻的科學家。
Wei 和 Ether 是兩種最常見的貨幣面額。
智能合約的語言:Solidity / Serpent, LLL
智能合約有三種通用語言,都可編譯成智能合約并在以太坊虛擬機上運行。這三種語言分別是:
Solidity ——類似 Javascrip 的語言,是目前最流行的、具有強大功能的智能合約的腳本語言。
Serpent ——類似 Python 的語言,在以太坊發展早期比較常用。
LLL——類似于 Lisp,僅用于較為早期的語言編寫中。LLL 或許是最難編寫的語言。
編者注:截至今日(2019 年 5 月 17 日),Solidity 已經成為以太坊生態中最常用的合約編程語言。而其余兩種語言很少有人使用,甚至已經被棄用。此外,以太坊正在研究將以太坊虛擬機 EVM 升級為 eWASM,而 WebAssembly 支持很多高級計算機語言的開發,有望進一步加強以太坊合約編寫的友好性和安全性。
另,有人指出不應該先入為主地認為 Solidity 與 Javascript 很相似,這樣在學習過程中會陷入很多誤區。
以太坊軟件:geth, eth, pyethapp
以太坊的官方客戶端都是開源的,因此你可以看到背后的代碼,還可以拿來調整一下創建自己的客戶端。最流行的客戶端如下:
geth(用 Go 編寫)https://github.com/ethereum/go-ethereum
eth(用 C++ 編寫)https://github.com/ethereum/cpp-ethereum
pyethapp(用 Python 編寫)https://github.com/ethereum/pyethapp
以上都是基于命令行的程序(就是那種在黑色背景上的綠色文字),因此要想使用圖形界面就需要使用別的軟件。目前官方最流行的圖形界面軟件是 Mist(https://github.com/ethereum/mist)。Mist 以 geth 和 eth 為內核。
也就是說,geth 和 eth 是底層難看的代碼,而 Mist 就是運行其上的漂亮界面。
編者注:2019 年 3 月,Mist 項目停止運營,團隊拆分并轉向不同領域。而以太坊生態中最常見的兩款客戶端 Geth 和 Parity·Ethereum 也已發展得相當不錯,都已有了完備的圖形界面。
足跡:以太坊之大事年表
2013 年底,Vitalik Buterin 在白皮書中論述了 “以太坊” 這一概念。2014 年 4 月,Gavin Wood 博士在黃皮書中進一步地闡發了這個概念。自此,以太坊的開發就由一個開發者社區來管理了。
同年的 7 月和 8 月,以太坊為開發眾籌,其開放式主網于 2015 年 7 月 30 日上線。
以太坊的眾籌
2014 年 7 月至 8 月期間,開發團隊通過在線銷售 ETH 代幣獲得資金——人們可以用比特幣來購買 ETH ,當時的兌換比率為 2000 ETH : 1 BTC(到 2016 年 1 月,在開放市場中1 BTC 可以兌換 50 ETH)。
參與眾籌的人可以用比特幣賬戶支付,然后收到一個包含相應數量以太幣的錢包。更多關于技術方面的信息,請參看以太坊博客:https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/
在此期間,以太坊團隊售出了 6000 多萬以太幣,收到了 31500 多的比特幣,當時價值約 1800 萬美元。團隊又挖出了 20%(1200 萬 ETH)用于支持開發和以太坊基金會。
軟件發布代號:Frontier / Homestead / Metropolis / Serenity
以太坊軟件的命名很有意思哦。
Olympic(測試網絡):在 2015 年 2 月發布,測試發布時,其代幣并不是真的以太幣。如今,測試網仍然與主活動網絡并行,以便開發人員測試代碼。
Frontier:在 2015 年 7 月 30 日發布,Frontier 是首個可以挖礦、開發、運行合約的在線版本。
Homestead:于 2016 年 3月 14 日發布,有一些協議的更改,更加穩定。
Metropolis:未發布——從命令行界面升級到圖形界面。
Serenity:未發布——從工作量證明升級到權益證明(Casper)。
編者注:上述代號也被認為是以太坊的路線圖和發展的不同階段。在原文成章的時候(2016 年 10 月),Metropolis(“大都會”)階段還未發布。2017 年 10 月,Metropolis 的第一階段 Byzantine(“拜占庭”)發布;2019 年 2 月,Metropolis 第二階段 Constantinople(“君士坦丁堡”)發布,并且,有望于 2020 年第一季度進入 Serenity 的第一階段。
總結
以太坊開發團隊致力于建立一個不會停機、抗審查和去中心的世界計算機,能運行計算、儲存數據并允許交互。
以太坊有一個 公開、無需許可的開源版本,其代碼副本已被采用并改編為私人網絡。公有版本和私人網絡要解決的是不同的問題。
盡管目前的技術尚未成熟,但是,我們相信經過越來越多人使用、測試、發展并在以太坊上開發軟件,它會發展得越來越穩健。
在區塊鏈世界里,以太坊是最振奮人心的的技術之一,未來的發展值得我們去期待。
責任編輯;zl
評論