以太坊
出自 MBA智库百科(https://wiki.mbalib.com/)
以太坊(Ethereum)
目錄 |
以太坊是一個平臺和一種編程語言,使開發人員能夠建立和發佈下一代分散式應用。 以太坊可以用來編程,分散,擔保和交易任何事物:投票,功能變數名稱,金融交易所,眾籌,公司管理, 合同和大部分的協議,知識產權,還有得益於硬體集成的智能資產。[1]
創始人:傑弗里•維爾克(Jeffrey Wilcke)
比特幣開創了去中心化密碼貨幣的先河,五年多的時間充分檢驗了區塊鏈技術的可行性和安全性。比特幣的區塊鏈事實上是一套分散式的資料庫,如果再在其中加進一個符號——比特幣,並規定一套協議使得這個符號可以在資料庫上安全地轉移,並且無需信任第三方,這些特征的組合完美地構造了一個貨幣傳輸體系——比特幣網路。
然而比特幣並不完美,其中協議的擴展性是一項不足,例如比特幣網路里只有一種符號——比特幣,用戶無法自定義另外的符號,這些符號可以是代表公司的股票,或者是債務憑證等,這就損失了一些功能。另外,比特幣協議里使用了一套基於堆棧的腳本語言,這語言雖然具有一定靈活性,使得像多重簽名這樣的功能得以實現,然而卻不足以構建更高級的應用,例如去中心化交易所等。以太坊從設計上就是為瞭解決比特幣擴展性不足的問題。
區塊鏈技術是比特幣的底層技術,這一技術第一次被描述是在中本聰2008年發表的白皮書“比特幣:點對點電子現金系統”中。區塊鏈技術更多的一般性用途在原書中已經有所討論,但直到幾年後,區塊鏈技術才作為通用術語出現。一個區塊鏈是一個分散式計算架構,裡面的每個網路節點執行並記錄相同的交易,交易被分組為區塊。一次只能增加一個區塊,每個區塊有一個數學證明來保證新的區塊與之前的區塊保持先後順序。這樣一來,區塊鏈的“分散式資料庫”就能和整個網路保持一致。個體用戶與總賬的互動(交易)受到安全的密碼保護。由數學執行並編碼到協議中的經濟激勵因素刺激著維持和驗證網路的節點。
在比特幣中,分散式資料庫被設想為一個賬戶餘額表,一個總賬,交易就是通過比特幣的轉移以實現個體之間無需信任基礎的金融活動。但是隨著比特幣吸引了越來越多開發者和技術專家的註意,新的項目開始將比特幣網路用於有價代幣轉移之外的其他用途。其中很多都採用了“代幣”的形式——以原始比特幣協議為基礎,增加了新的特征或功能,採用各自加密貨幣的獨立區塊鏈。在2013年末,以太坊的發明者Vitalik Buterin建議能夠通過程式重組來運行任意複雜運算的單個區塊鏈應該包含其他的程式。
2014年,以太坊的創始人Vitalik Buterin, Gavin Wood和Jeffrey Wilcke開始研究新一代區塊鏈,試圖實現一個總體上完全無需信任基礎的智能合約平臺。
以太坊是可編程的區塊鏈。它並不是給用戶一系列預先設定好的操作(例如比特幣交易),而是允許用戶按照自己的意願創建複雜的操作。這樣一來,它就可以作為多種類型去中心化區塊鏈應用的平臺,包括加密貨幣在內但並不僅限於此。
以太坊狹義上是指一系列定義去中心化應用平臺的協議,它的核心是以太坊虛擬機(“EVM”),可以執行任意複雜演算法的編碼。在電腦科學術語中,以太坊是“圖靈完備的”。開發者能夠使用現有的JavaScript和Python等語言為模型的其他友好的編程語言,創建出在以太坊模擬機上運行的應用。
和其他區塊鏈一樣,以太坊也有一個點對點網路協議。以太坊區塊鏈資料庫由眾多連接到網路的節點來維護和更新。每個網路節點都運行著以太坊模擬機並執行相同的指令。因此,人們有時形象地稱以太坊為“世界電腦”。
這個貫穿整個以太坊網路的大規模並行運算並不是為了使運算更高效。實際上,這個過程使得在以太坊上的運算比在傳統“電腦”上更慢更昂貴。然而,每個以太坊節點都運行著以太坊虛擬機是為了保持整個區塊鏈的一致性。去中心化的一致使以太坊有極高的故障容錯性,保證零停機,而且可以使存儲在區塊鏈上的數據保持永遠不變且抗審查。
以太坊平臺本身沒有特點,沒有價值性。和編程語言相似,它由企業家和開發者決定其用途。不過很明顯,某些應用類型較之其他更能從以太坊的功能中獲益。以太坊尤其適合那些在點與點之間自動進行直接交互或者跨網路促進小組協調活動的應用。例如,協調點對點市場的應用,或是複雜財務合約的自動化。比特幣使個體能夠不藉助金融機構、銀行或政府等其他中介來進行貨幣交換。以太坊的影響可能更為深遠。理論上,任何複雜的金融活動或交易都能在以太坊上用編碼自動且可靠地進行。除金融類應用外,任何對信任、安全和持久性要求較高的應用場景——比如資產註冊、投票、管理和物聯網——都會大規模地受到以太坊平臺影響。
以太坊合併了很多對比特幣用戶來說十分熟悉的特征和技術,同時自己也進行了很多修正和創新。比特幣區塊鏈純粹是一個關於交易的列表,而以太坊的基礎單元是賬戶。以太坊區塊鏈跟蹤每個賬戶的狀態,所有以太坊區塊鏈上的狀態轉換都是賬戶之間價值和信息的轉移。賬戶分為兩類:
1.外部賬戶(EOA),由私人密碼控制
2.合約賬戶,由它們的合約編碼控制,只能由外部賬戶“激活”
對於大部分用戶來說,兩者基本的區別在於外部賬戶是由人類用戶掌控——因為他們能夠控制私鑰,進而控制外部賬戶。而合約賬戶則是由內部編碼管控。如果他們是被人類用戶“控制”的,那也是因為程式設定它們被具有特定地址的外部賬戶控制,進而被持有私鑰控制外部賬戶的人控制著。“智能合約”這個流行的術語指的是在合約賬戶中編碼——交易被髮送給該賬戶時所運行的程式。用戶可以通過在區塊鏈中部署編碼來創建新的合約。
只有當外部賬戶發出指令時,合約賬戶才會執行相應的操作。所以合約賬戶不可能自發地執行諸如任意數位生成或應用程式界面調用等操作--只有受外部賬戶提示時,它才會做這些事。這是因為以太坊要求節點能夠與運算結果保持一致,這就要求保證嚴格確定執行。
和比特幣一樣,以太坊用戶必須向網路支付少量交易費用。這可以使以太坊區塊鏈免受無關緊要或惡意的運算任務干擾,比如分散式拒絕服務(DDoS)攻擊或無限迴圈 。交易的發送者必須在激活的“程式”每一步付款,包括運算和記憶儲存。費用通過以太坊自有的有價代幣,以太幣的形式支付。
交易費用由節點收集,節點使網路生效。這些“礦工”就是以太坊網路中收集、傳播、確認和執行交易的節點。礦工們將交易分組——包括許多以太坊區塊鏈中賬戶“狀態”的更新——分成的組被稱為“區塊”,礦工們會互相競爭,以使他們的區塊可以添加到下一個區塊鏈上。礦工們每挖到一個成功的區塊就會得到以太幣獎勵。這就為人們帶來了經濟激勵,促使人們為以太坊網路貢獻硬體和電力。
和比特幣網路一樣,礦工們有解決複雜數學問題的任務以便成功地“挖”到區塊。這被稱為“工作量證明”。一個運算問題,如果在演算法上解決,比驗證解決方法需要更多數量級的資源,那麼它就是工作證明的極佳選擇。為防止比特幣網路中已經發生的,專門硬體(例如特定用途集成電路)造成的中心化現象,以太坊選擇了難以存儲的運算問題。如果問題需要存儲器和CPU,事實上理想的硬體是普通的電腦。這就使以太坊的工作量證明具有抗特定用途集成電路性,和比特幣這種由專門硬體控制挖礦的區塊鏈相比,能夠帶來更加去中心化的安全分佈。
總的來說,以太坊是一個平臺,她上面提供各種模塊讓用戶來搭建應用,如果將搭建應用比作造房子,那麼以太坊就提供了牆面、屋頂、地板等模塊,用戶只需像搭積木一樣把房子搭起來,因此在以太坊上建立應用的成本和速度都大大改善。具體來說,以太坊通過一套圖靈完備的腳本語言(Ethereum Virtual Machine code,簡稱EVM語言)來建立應用,它類似於彙編語言,我們知道,直接用彙編語言編程是非常痛苦的,但以太坊里的編程並不需要直接使用EVM語言,而是類似C語言、Python、Lisp等高級語言,再通過編譯器轉成EVM語言。
上面所說的平臺之上的應用,其實就是合約,這是以太坊的核心。合約是一個活在以太坊系統里的自動代理人,他有一個自己的以太幣地址,當用戶向合約的地址里發送一筆交易後,該合約就被激活,然後根據交易中的額外信息,合約會運行自身的代碼,最後返回一個結果,這個結果可能是從合約的地址發出另外一筆交易。需要指出的是,以太坊中的交易,不單隻是發送以太幣而已,它還可以嵌入相當多的額外信息。如果一筆交易是發送給合約的,那麼這些信息就非常重要,因為合約將根據這些信息來完成自身的業務邏輯。
合約所能提供的業務,幾乎是無窮無盡的,它的邊界就是你的想象力,因為圖靈完備的語言提供了完整的自由度,讓用戶搭建各種應用。白皮書舉了幾個例子,如儲蓄賬戶、用戶自定義的子貨幣等。[2]
自從進入2016年以來,那些密切關註數字貨幣產業的人都急切地觀察著第二代加密貨幣平臺以太坊的發展動向。
作為一種比較新的利用比特幣技術的開發項目,以太坊致力於實施全球去中心化且無所有權的的數字技術電腦來執行點對點合約。簡單來說就是,以太坊是一個你無法關閉的世界電腦。加密架構與圖靈完整性的創新型結合可以促進大量的新產業的出現。反過來,傳統行業的創新壓力越來越大,甚至面臨淘汰的風險。
比特幣網路事實上是一套分散式的資料庫,而以太坊則更進一步,它可以看作是一臺分散式的電腦:區塊鏈是電腦的ROM,合約是程式,而以太坊的礦工們則負責計算,擔任CPU的角色。這台電腦不是、也不可能是免費使用的,不然任何人都可以往裡面存儲各種垃圾信息和執行各種雞毛蒜皮的計算,使用它至少需要支付計算費和存儲費,當然還有其它一些費用。[2]
1. 簡潔原則
以太坊協議將儘可能簡單,即便以某些數據存儲和時間上的低效為代價。一個普通的程式員也能夠完美地去實現完整的開發說明。這將最終有助於降低任何特殊個人或精英團體可能對協議的影響並且推進以太坊作為對所有人開放的協議的應用前景。添加複雜性的優化將不會被接受,除非它們提供了非常根本性的益處。
2. 通用原則
沒有“特性”是以太坊設計哲學中的一個根本性部分。取而代之的是,以太坊提供了一個內部的圖靈完備的腳本語言以供用戶來構建任何可以精確定義的智能合約或交易類型。想發明你自己的金融衍生品?用以太坊,你可以。想創造你自己的貨幣?把它做成一個以太坊合約就好。想建立一個全規模的守護程式(Daemon)或天網(Skynet),你可能需要幾千個聯鎖合約並且確定慷慨地喂養它們,一切皆有可能。
3. 模塊化原則
以太坊的不同部分應被設計為儘可能模塊化的和可分的。開發過程中,應該能夠容易地讓在協議某處做一個小改動的同時應用層卻可以不加改動地繼續正常運行。以太坊開發應該最大程度地做好這些事情以助益於整個加密貨幣生態系統,而不僅是自身。
4. 無歧視原則
協議不應主動地試圖限制或阻礙特定的類目或用法,協議中的所有監管機制都應被設計為直接監管危害,不應試圖反對特定的不受歡迎的應用。人們甚至可以在以太坊之上運行一個無限迴圈腳本,只要他願意為其支付按計算步驟計算的交易費用。
學習中