2013年由俄羅斯天才開發(fā)者維塔利克·布特林(VitalikButerin)發(fā)布白皮書至今,以太坊在智能合約領域里面一直處于非常領先地位,到目前為止,它也是全球最知名、應用最廣泛的區(qū)塊鏈智能合約底層平臺。
我們之前學習過,比特幣的協議雖然做出了巨大創(chuàng)新,但是也有很多不足。比如比特幣區(qū)塊鏈因為缺少圖靈完備,還記得什么是圖靈完備嗎?是指一切可計算的問題都能計算,這樣的虛擬機或者編程語言就叫圖靈完備的。比特幣不能支持所有種類的計算,無法為賬戶的取款額度提供精細的控制,缺少更豐富的狀態(tài)記錄,導致比特幣區(qū)塊鏈系統(tǒng)的擴展性比較差,不能廣泛應用在除比特幣以外的其他應用上,所以它就更無法支持復雜的智能合約。
所以以太坊建立了一個可編程的、圖靈完備的區(qū)塊鏈。在這個區(qū)塊鏈之上,你可以通過簡單的程序實現各類數字資產的生產,也可以通過編寫程序對以太坊上流通的區(qū)塊鏈資產的狀態(tài)進行精確地控制,比如這個資產是待支付還是被鎖定還是有額度限制、這個賬戶是黑名單還是白名單、以太坊和其他數字資產的自動兌換等等。同時,以太坊是一個可以編程、圖靈完備的區(qū)塊鏈網絡基礎,在這個基礎上,我們能夠實現更多的非區(qū)塊鏈資產的功能產品。比如說我用以太坊建立智能合約,應用在個人日常經濟生活和企業(yè)經濟活動中,這樣的運用也是可以被實現的。
以太坊是建立在區(qū)塊鏈和區(qū)塊鏈資產的概念之上的一個全新開放的區(qū)塊鏈平臺。它允許任何人在平臺上通過使用區(qū)塊鏈技術建立和運行去中心化的應用。簡單地說,以太坊技術就是區(qū)塊鏈技術加上智能合約。
以太坊在創(chuàng)立之初就規(guī)劃了比較詳盡的發(fā)展路徑和迭代版本,以太坊一共規(guī)劃了四個迭代版本:第一個版本Frontier(前沿),第一個版本Homestead(家園),第一個版本Metropolis(大都會),第四個版本Serenity(寧靜)。
那么,我們就來細數一下以太坊的大事記吧:
2013年末,創(chuàng)始人Vitalik發(fā)布了最初版的白皮書,啟動了這個項目。
2014年7月,以太坊進行第一批以太幣的預售。這也是早期ICO中比較知名的一個案例。不過那時候沒有ICO這個名詞,那時候圈內人稱這種代幣發(fā)行叫“幣眾籌”。通過為期42天的預售,以太坊團隊募集了3萬多個比特幣,預售了6000萬個以太幣。
2014年10月,以太坊將區(qū)塊的出塊時間從60秒縮減到了12秒,目前是基本穩(wěn)定在15秒。
2015年7月30日,以太坊的第一個版本Frontire(前沿)發(fā)布,這也是以太坊的最初版本,只有命令行界面,沒有圖形界面,主要適用于開發(fā)者。
2016年3月14日圓周率節(jié),以太坊發(fā)布了第二個版本HomeStead(家園)的版本,這也是目前正在運行的版本,易用性上得到了極大改善,有了圖形界面,從此以后普通用戶也可以體驗以太坊的功能和開發(fā)了。
2016年7月,以太坊進行硬分叉,分為以太坊ETH和以太坊經典ETC。這個后面我們會詳說。
近期,以太坊想要發(fā)布第三個版本大都會,在第三個版本Metropolis(大都會)里,以太坊創(chuàng)始團隊將會發(fā)布一個為非技術用戶設計的瀏覽器,它的名字叫Mist瀏覽器。你可以把它想象成Chrome谷歌瀏覽器,在使用上非常便捷,還有強大完善的應用商店。Mist瀏覽器也將包含去中心化應用商店、基礎性應用,如果這樣的瀏覽器能夠被發(fā)布,將會十分有利于廣大的互聯網用戶的參與并體驗去中心化應用。根據目前以太坊團隊公布的進度,第三個版本有望在2017年年底發(fā)布出來。
最后一個階段 Serenity(寧靜)的發(fā)布時間還沒有確定。在前三個階段,以太坊的共識機制采用工作量證明(PoW)共識機制,在第四階段會切換到混合的共識機制。
混合共識機制是將比特幣式的工作量證明PoW和Vitalik 創(chuàng)建的權益證明機制Casper結合起來,使得礦工和持幣者的權利和利益得到平衡。
說完版本迭代,我再列出來一些以太坊所涉及的名詞,這樣可以幫助你理解以太坊整個體系。
第一個名詞是以太幣。以太坊系統(tǒng)中的代幣,簡稱ETH。以太幣(Ether)是以太坊內部的主要燃料,為在這個體系上運行各種數字資產交易提供主要的流動性,同時也是用于智能合約費用的的支付。它是以太坊內置的區(qū)塊鏈資產,用來支付智能合約運行的。這個概念理解相對簡單,我們之前學習了Hash Cash和工作量證明,不知道大家是否還記得。我們了解了,為了不讓網絡被垃圾郵件充斥,因此要求發(fā)送郵件的計算機要進行一些工作量計算。這樣對于發(fā)送大量垃圾郵件的計算機就是一個巨大的負擔。
同樣的道理,在以太坊網絡上要進行智能合約的建立和運行,也需要一個小小的門檻,這個門檻對于認真想做開發(fā)的人員來說成本比較低,但是對于大量運行垃圾項目的發(fā)起者或者對于攻擊者來說就是比較大的負擔。不過以太坊的這個門檻不是工作量,而是燃料,我們叫“Gas”,Gas用以太幣來兌換。
試想下,如果運行一個智能合約不需要花一些費用的話,在這條區(qū)塊鏈上就會出現很多的垃圾合約或者垃圾應用,這個區(qū)塊鏈會遭到攻擊,使整個網絡陷入無法使用的而狀態(tài)。所以呢,以太坊的區(qū)塊鏈要求每次運行智能合約的時候,需要支付一定數量的Gas,Gas可以以太幣來支付,來確保這個區(qū)塊鏈的穩(wěn)定和安全。
關于以太幣的面值。我們熟悉的比特幣的最小面值是一聰,是一億分之一比特幣。以太坊也一樣,有自己的最小面值,命名為1“wei”,它有多小呢?一枚以太坊代幣分割到小數點后18位,就是1 wei。
還有,在2016年7月,以太坊區(qū)塊鏈發(fā)生硬分叉,這次硬分叉將以太坊分成了兩條區(qū)塊鏈。由創(chuàng)始人Vitalik主導的、升級以后的以太坊叫Ethereum,代幣代號為ETH。不接受這次升級的鏈稱為“Ethereum Classic”原鏈上的以太坊代幣代號為ETC。
第二個概念就是以太坊虛擬機EVM。在一個編程系統(tǒng)之上,通常會有一些編譯和執(zhí)行的虛擬機來去做支撐。JAVA有JVM,那么在以太坊里,也會有以太坊的虛擬機,可以執(zhí)行任意復雜的算法代碼。開發(fā)者可以使用現有的JavaScript 或Python以及其他友好的編程語言,在以太坊上創(chuàng)造出自己想要的應用。
第三個概念是智能合約(Smart Contract)。智能合約的理念并不新鮮,最早是由密碼學家尼克·薩博(Nick Szabo)在1995年時候提出的,幾乎與互聯網同時出現,指的是由計算機程序定義并自動執(zhí)行的承諾協議。雖然說它的理念提出已經由來已久,但是,直到以太坊的出現,智能合約才被廣泛應用。一個重要原因是因為之前缺乏能夠一個友好的、可編程的基礎系統(tǒng)。
有了智能合約,任何人都能夠在以太坊上創(chuàng)建自己想要做的去中心化的應用了。智能合約在以太坊上一旦被創(chuàng)建之后,就無需中間機構參與,就能自動執(zhí)行,并且沒有人能夠阻止其運行。在以太坊上的智能合約,能夠控制區(qū)塊鏈上各種數字資產,進行復雜的算法和操作。
舉個例子:我們經常乘坐飛機會購買飛機延誤險,但是真正延誤之后,你可能還要撥打客服電話了解流程、在線下開證明、找保險公司,才能執(zhí)行完你的延誤險賠付。這時候,如果有了智能合約,輸入條件,連線航班數據,就能夠確保保險公司在航班延誤之后就自動為你打款了。合約的執(zhí)行不需要第三方參與,是自動執(zhí)行,是不是大大提高了社會經濟活動的效率了呢?
在以太坊區(qū)塊鏈上,你可以編寫資產的代碼,創(chuàng)建新的區(qū)塊鏈資產,簡單地說,你可以發(fā)行你自己的區(qū)塊鏈代幣,你使用什么樣的發(fā)行機制、代幣叫什么名字、發(fā)行多少數量、怎么樣去發(fā)行都由你來決定,聽起來是不是很有意思呢?同時,你也可以通過編寫智能合約的代碼,來創(chuàng)造非區(qū)塊鏈資產的功能,比如投票、對賭、條件合同等等。
因為要支持智能合約,所以以太坊上有兩種類型的賬戶地址:一種叫普通賬戶,一種叫合約賬戶。普通賬戶和比特幣網絡的賬戶差不多,合約賬戶主要用于智能合約。