- 權益證明
- (加)維塔利克·布特林
- 7303字
- 2023-04-14 11:13:04
以太坊
下一代加密貨幣和去中心化應用平臺
過去一年,圍繞所謂的“比特幣2.0協議”的討論越來越多,這是一種受比特幣啟發的替代加密網絡,其目的是讓底層技術能夠用于加密貨幣之外的用途。最早實現這一想法的是域名幣(Namecoin),這是一種創建于2010年、用于去中心化域名注冊的類似比特幣的加密貨幣。最近,我們看到了染色幣,它允許用戶在比特幣網絡上創建自己的貨幣,以及諸如萬事達幣(Maste rcoin)、比特股(BitSha res)和合約幣(Counterparty)等旨在提供金融衍生品、儲蓄錢包及去中心化交易等功能的更先進的協議。但到目前為止,所有已經發明的協議都是專門化的、針對特定行業或應用程序的詳細功能集,它們通常都有金融性質。現在,包括我在內的一群開發人員想出了一個相反的項目:一個旨在盡可能通用并允許任何人為幾乎任何可以想象的目的創建專門應用程序的加密貨幣網絡。這個項目就是以太坊。
加密貨幣協議就像洋蔥
許多加密貨幣2.0協議都有一個共同的設計理念:正如互聯網一樣,當協議能分成不同的層次時,加密貨幣設計將會最為有效。根據這種思路,比特幣被認為是加密貨幣生態系統的TCP/IP(傳輸控制協議/網際協議),其他下一代協議可以建立在比特幣之上,就像我們在TCP之上有SMTP用于電子郵件,HTTP用于網頁,XMPP用于聊天一樣,它們都有一個通用的底部數據層。
到目前為止,遵循這種模式的三個主要協議是染色幣、萬事達幣和合約幣。染色幣協議的工作方式很簡單。首先,為了創建染色幣,用戶可以對特定的比特幣做標記,以此表示特殊含義。例如,設想鮑勃是黃金的發行人,他可能希望標記一些比特幣,并說每個聰(satoshi)代表0.1克可從他那里贖回的黃金。協議可以通過區塊鏈跟蹤這些比特幣,于是就可以隨時知道誰擁有了這些比特幣。
萬事達幣和合約幣要更抽象一些,它們使用比特幣區塊鏈存儲數據,因此萬事達幣或合約幣的交易就是比特幣交易,不過協議會以完全不同的方式解釋交易。一個人可以有兩筆萬事達幣交易,一筆發送1個萬事達幣,另一筆發送100 000個萬事達幣,但從一個不知道萬事達幣協議如何工作的比特幣用戶的角度看,這兩筆交易看起來都像是發送0.0006個比特幣的小交易。萬事達幣的特定元數據會被編碼在交易輸出結果中。然后,萬事達幣用戶需要在比特幣區塊鏈中搜索萬事達幣的交易,以確定當前萬事達幣的資產負債表狀況。
我個人有幸與染色幣和萬事達幣協議的多位發起者有過直接交流,并深度參與了這兩個項目的開發。但是,經過大約兩個月的研究和參與,我最終意識到,盡管在低級協議之上使用此類高級協議的基本想法值得稱贊,但正如目前的情況一樣,它們的執行過程存在根本性的缺陷,這很可能會損害項目的吸引力。
造成上述情況的原因并非協議背后的想法不好;這些想法都很棒,僅社區的反應就足以證明提出這些想法的人正在嘗試做一些非常有必要的事情。真正的問題在于,他們試圖在比特幣之上構建高級協議,而低級協議根本不適合這項任務。這并不是說比特幣不好,或者不是革命性的發明;作為一種存儲和轉移價值的協議,比特幣相當出色。但是,就作為一種有效的低級協議而言,比特幣的效果較差;比特幣不像一個可以在其上構建HTTP的TCP,而是像SMTP;它是一種可以很好地完成其目標任務(就像在SMTP的情況下是電子郵件,在比特幣的情況下則是金錢)的協議,但要作為其他任何事情的基礎則不是特別合適。
比特幣的具體問題集中在一個地方:可擴展性。比特幣本身具有加密貨幣的可擴展性;即使區塊鏈膨脹到超過1TB(太字節),也有一種稱為“簡化支付驗證”(SPV)的協議,如比特幣白皮書所述,該協議允許只有幾兆字節帶寬和存儲的“輕客戶端”安全地確定它們是否已經收到交易。但是,對于染色幣和萬事達幣,這種可能性并不存在。原因是這樣的:為了確定染色幣的顏色,你不僅需要使用比特幣簡化支付驗證來證明它的存在,還需要一直追溯它的起源,并在每一步進行簡化支付驗證。有時,反向掃描是指數型的,由于使用元幣(metacoin)協議,如果不驗證每一筆交易,就無法知道任何事情。
這就是以太坊打算解決的問題。以太坊并不打算成為瑞士軍刀式的協議,有數百種功能來滿足每一種需求;相反,以太坊的目標是成為優秀的基礎協議,允許在其基礎上,而不是在比特幣的基礎上構建其他去中心化的應用程序,并為這些程序提供更多的工具,讓它們能夠充分利用以太坊的可擴展性和效率。
合約,不僅僅為了差價
在開發以太坊的時候,人們對允許在加密貨幣之上創建金融合約有很大興趣;合約的基本類型是“差價合約”(CFD)。在差價合約中,雙方同意投入一定金額的資金,然后根據基礎資產的價值按一定比例提取資金。例如,一份差價合約可能會讓愛麗絲和鮑勃各投入1 000美元。30天后,區塊鏈會自動返還愛麗絲1 000美元本金,并且在此期間,萊特幣兌美元的比價每上漲1個單位,系統就會多返還其100美元收益;剩余部分的資金則會返還給鮑勃。這些合約允許人們在不集中交易的情況下以高杠桿率對資產進行投機,或者通過取消他們的風險敞口來保護自己免受加密貨幣波動的影響。
在這里需要指出的是,差價合約顯然只是公式合約(contracts for formulas)這個更一般概念的特例。除了讓合約從愛麗絲那里獲取 x美元,從鮑勃那里獲取y美元,然后返回給愛麗絲x美元,并按照給定標價物每上漲1美元,額外返還z美元的情形,一份價差合約應該還能夠返還給愛麗絲基于任何數學公式計算得出的資金數量,而不論合約的復雜程度如何。如果公式允許隨機數據作為輸入,這些廣義的差價合約甚至可以用于執行點對點(peer-to-peer)賭博。
以太坊采納了這個想法,并將它推進了一步。以太坊上的合約不再是由雙方開始和結束的協議,而更像是由區塊鏈模擬的一類自治主體。每份以太坊合約都有自己的內部腳本代碼,每次發送交易時都會激活腳本代碼。腳本語言可以訪問交易的值、發送方和可選數據字段,以及一些塊數據和它自己的內存,并把它們作為輸入,同時還可以發送交易。為了制作一份差價合約,愛麗絲會創建一份合約,并在其中存入價值1 000美元的加密貨幣,然后等待鮑勃發送含有1 000美元的交易來接受合約。隨后,合約會設定一個計時程序,30天后,愛麗絲或鮑勃可以向合約發送一筆小額交易,以再次激活它并釋放資金。
以下是用高級語言編寫的以太坊貨幣合約代碼示例:


然而,除了這種狹義的差價合約模型之外,白皮書還給出了許多其他交易類型,這些類型將通過以太坊腳本實現,其中包括:
● 多重簽名托管。其精神與比特幣仲裁服務Bitrated類似,但規則更復雜。例如,簽名者無須手動傳遞部分簽名的交易;人們可以在區塊鏈上一次對一筆取款進行異步授權
,然后在有足夠的人授權后自動完成交易。
● 儲蓄賬戶。一個有趣的設置如下:假設愛麗絲想存一大筆錢,但不想冒私鑰丟失或被盜的風險。她與“半可信”(semitrustworthy)的銀行鮑勃簽訂了一份合約,規定如下:愛麗絲每天的默認取款上限為1單位;在經鮑勃批準后,愛麗絲可以提取任何金額;鮑勃每天最多可以獨自支取0.05單位。通常,愛麗絲一次只需要少量金額,如果她想要更多,可以向鮑勃證明自己的身份并取款。如果愛麗絲的私鑰被盜,她可以去鮑勃那里,把錢轉移到另一份合約中,以免竊賊盜取超過1單位的資金。如果愛麗絲丟失了她的私鑰,鮑勃最終能夠恢復她的資金。如果鮑勃被發現居心不良,那么愛麗絲可以比他快20倍地提取自己的資金。簡言之,以上就達到了傳統銀行業的所有安全設定,但幾乎不用任何信任。
● 點對點賭博。任何類型的點對點賭博協議都可以在以太坊上實現。一種非常基本的協議就是對隨機數據(如區塊哈希值)的差價合約。
● 創建自己的貨幣。使用以太坊的內存存儲,你可以在以太坊內創建一種全新的貨幣。這些新貨幣可被設定為允許人們彼此互動,開展去中心化交易,也可以加入其他任何高級功能。
這就是以太坊代碼的優勢:因為腳本語言被設計成除收費系統外沒有任何限制,所以基本上任何類型的規則都可以在其中編碼。甚至可以讓整個公司通過合約來管理它在區塊鏈上的儲蓄,而這份合約規定無限制動用資金需要公司有60名現任股東同意(或許,如果是30名股東,那每天最多只能動用1單位資金)。不那么傳統資本主義式的其他結構也是可能的;一種想法是建立一個民主組織,唯一的規則是邀請新成員時必須有三分之二的現有組織成員同意。
超越金融
但是,金融應用程序只觸及以太坊和以太坊之上的加密協議的表面。雖然以太坊的金融應用最初可能會讓加密貨幣社區的許多人興奮不已,但長期的愿景應該更關注以太坊與其他非金融點對點協議的協作模式。到目前為止,非金融對等協議面臨的主要問題之一是缺乏激勵,也就是說,與中心化營利平臺不同,去中心化平臺缺少參與的經濟理由。在某些情況下,參與本身在一定意義上就是對參與者的回報;正是出于這個原因,人們才持續編寫開源軟件、為維基百科做貢獻、在論壇上發表評論、撰寫博客文章。然而,對于點對點協議而言,參與通常不是任何有意義的“有趣”活動;相反,它需要人們投入大量資源,耗費CPU(中央處理器)和電池電量讓守護程序(Daemon)在后臺自動運行而不必管它。
例如,很長一段時間以來,已經有了諸如Freenet之類的數據協議,它們主要為每個人提供去中心化的、不受審查的靜態內容托管。不過,在實踐中Freenet的速度非常慢,而且很少有人貢獻資源。所有文件共享協議都面臨著同樣的問題:盡管利他主義足以傳播流行的商業大片,但在傳播那些不那么受主流偏好的內容時,利他主義的效果則明顯降低。因此,恰恰相反,文件共享的點對點性質實際上可能加劇了娛樂和媒體制作的中心化,而非相反。但是,如果我們增加激勵措施,讓人們不僅可以建立非營利項目,還可以通過參與網絡做生意和維持生計,那所有這些問題都有可能得到解決。
● 激勵性數據存儲。它本質上是一個去中心化的Dropbox。其原理如下:如果用戶希望網絡備份一個1GB(千兆字節)的文件,他們可以從數據中構造一個被稱為“默克爾樹”的數據結構。然后,他們將樹根以及10個以太幣放入一份合約中,并將文件上傳到另一個網絡。這個網絡的節點會出租其硬盤空間,并接收消息。每天,合約都會自動選擇樹的一個隨機分支(例如,“左→右→左→左→左→右→左”),將它存在一個文件區塊上,并向第一個節點提供0.01個以太幣作為提供該分支的報酬。節點為了最大化其獲得獎勵的機會,將會存儲整個文件。
● Bitmessage和Tor。Bitmessage是下一代電子郵件協議,它是完全去中心化和加密的,允許任何人安全地向任何其他Bitmessage用戶發送消息,而不依賴于除網絡以外的任何第三方。然而,Bitmessage有一個很大的可用性缺陷:你需要將消息發送給包含34個字符的Bitmessage地址,例如“BM-BcbRqcFFSQUUm-XFKsPJgVQPSiFA3Xash”,而不能將它發送到一個“人類友好型”的電子郵件地址,比如myname@email。以太坊合約提供了一個解決方案:人們可以在一個特殊的以太坊合約上注冊自己的用戶名,Bitmessage客戶端可以查詢以太坊區塊鏈,以獲得與用戶名相關聯的34個字符的Bitmessage地址。在線匿名網絡Tor也面臨同樣的問題,因此也可以從這個解決方案中受益。
● 身份和聲譽系統。當你可以在區塊鏈上注冊你的用戶名后,下一步是顯而易見的:在區塊鏈中建立信任網絡。信任網絡是有效的點對點通信基礎設施的關鍵部分:你不僅需要知道給定的公鑰指的是給定的人,還需要知道這個人首先是值得信賴的。解決方案是使用社交網絡:如果你信任A,A信任B,B信任C,那么你很有可能信任C,至少在某種程度上是這樣。以太坊可以作為一個完全去中心化的信譽系統的數據層,最終可能是一個完全去中心化的市場。
上述很多應用程序都由正在開發中的點對點協議和項目組成;在這些情況下,我們打算與盡可能多的類似項目建立合作伙伴關系,為其提供資助,并將其價值帶入以太坊生態系統。我們不僅希望幫助加密貨幣社區,還希望幫助整個點對點社區,包括文件共享、種子、數據存儲和網狀網絡。我們認為,有許多項目,尤其是非金融領域的項目,可能為社區帶來巨大價值。但由于它們缺乏有效地引入金融成分的機會,因而其發展面臨著資金不足的問題。也許以太坊最終會推動數十個這樣的項目進入下一階段。
為什么所有這些應用程序都可以在以太坊之上實現呢?答案在于加密貨幣的內部編程語言。這里可以用互聯網做一個類比。早在1996年,網絡只不過是HTML,人們能做的就是在GeoCities等網站上提供靜態網頁。然后,開發者發現人們對用HTML提交表單的需求十分迫切,于是就在HTML添加了表單功能。這就像一個網絡協議的“染色幣”:試圖解決一個特定問題,但只是在一個弱協議之上進行,而沒有考慮全局。然而,我們很快就開發出了一種web瀏覽器中的編程語言JavaScript。正是JavaScript解決了這個問題,因為它是一種圖靈完備的通用編程語言,可以用來構建任意復雜度的應用程序;Gmail、臉書甚至比特幣錢包都是用這種語言制作的。這并不是因為JavaScript的開發人員決定讓人們建立Gmail、臉書和比特幣錢包,他們只是想要一種編程語言。我們能用語言做什么取決于我們自己的想象。這就是我們想要帶給以太坊的精神。以太坊并不打算成為所有加密貨幣創新的終點,而是打算成為起點。
進一步創新
除了圖靈完備的通用腳本語言等主要功能外,以太坊還將對現有加密貨幣進行許多其他改進。
● 費用:以太坊合同將規制其圖靈完備功能,并對腳本執行的每個計算步驟收取交易費用,以防止濫用交易行為,如內存占用和無限循環腳本。更昂貴的操作,如存儲訪問和密碼學操作,將收取更高的費用,合約填寫的每個存儲項目也將收取費用。為了鼓勵合約的自行清理,當一個合約減少了使用的存儲量后,將會收取負費用;事實上,有一個特殊的“自殺”(SUICIDE)操作碼可以清除合約,并將所有資金和大量的負費用退還給創建者。
● 挖礦算法:人們熱衷于創建能抵制專業硬件進行挖礦的加密貨幣,這可以讓普通用戶使用一般的硬件參與,而無須任何資本投資,從而有助于避免中心化。到目前為止,主要的解決方法是Scrypt,這是一種需要大量計算能力和內存才能進行計算的挖礦算法;但是,Scrypt的硬內存(memory-hard)
不夠,有些公司正在為其構建專門的設備。我們已經提出了Dagger
,一種比Scrypt有更強“硬內存”的原型工作量證明,以及Slasher
等完全繞過挖礦問題的原型權益證明算法。但最終,我們打算舉辦一場競賽,類似于那些確定AES(高級加密標準)和SHA3(第三代安全散列算法)標準的競賽,我們將邀請世界各地大學的研究小組設計出盡可能最好的普通硬件友好型挖礦算法。
● GHOST:GHOST是阿維夫·佐哈爾(Aviv Zohar)和尤納坦·蘇姆波林斯基(Yonatan Sompolinsky)首創的一種新的區塊傳播協議,允許區塊鏈擁有更快的區塊確認時間(理想情況下在3~30秒內),而不會遇到快速區塊確認通常帶來的集中化和高過時率問題。以太坊是第一個將簡化的單級GHOST版本作為其協議的一部分進行整合的主要加密貨幣。
以太坊的計劃
以太坊可能是一項規模巨大、影響廣泛的事業,需要數月的時間來發展。有鑒于此,這種加密貨幣將分多個階段發行。第一階段已經開始,即白皮書的發布。論壇、維基和博客已經建立,任何人都可以自由訪問,并在論壇上設置賬戶和評論。1月25日,為期60天的籌款活動將在邁阿密的會議上啟動,在此期間,任何人都可以購買以太幣,它是以太坊的內部貨幣,就像用比特幣為萬事達幣籌款一樣。比特幣與以太幣的比價將是1∶1 000,但早期的以太坊投資者將獲得大約2倍的收益,以補償他們之前參與項目所冒的風險。籌款的參與者不僅會得到以太幣;還有一些額外的獎勵,如免費的會議門票、一個將32字節放入創世區塊的位置等,以及對于頂級捐贈者甚至可以命名這種加密貨幣的三種計量單位(這類似于比特幣的單位“microbitcoin”)。
以太幣的發行不會采用任何一種單一機制;相反,它會使用折中的方法,將多種方法的優點結合起來。其發行模型的工作原理如下:以太幣將以每比特幣兌換1 000~2 000以太幣的價格在募捐活動中發布,早期的資助者將獲得更優惠的價格,以補償早期參與的更大不確定性。最低資金金額為0.01比特幣。假設x單位以太幣以如下方式發布:
● 0.225x單位以太幣將分配給籌款開始前就已實質上參與項目的信托成員和早期出資人。該部分份額將存儲在鎖定時間的合約中;其中大約40%在一年后可以使用,70%在兩年后可以使用,100%在三年后可以使用。
● 0.05x單位以太幣將被配置給一個基金,用于在籌款開始后以太幣發行前用該貨幣支付費用和獎勵。
● 0.225x單位以太幣將被配置為一個長期儲備金池,用于在以太幣發行后用該貨幣支付費用、工資和獎勵。
● 此后,每年將開采0.4x單位以太幣。
與比特幣和大多數其他加密貨幣相比,以太幣有一個重要的區別:它最終的供給是無限的。設計“永久的線性通貨膨脹”模型是為了既不造成通貨膨脹,也不造成通貨緊縮;供給沒有上限意在抑制現有貨幣的一些投機性效應和財富不平等效應;與此同時,線性而非傳統的指數通脹模型意味著,隨時間推移,有效通脹率趨于零。此外,由于初始貨幣供給量不會從零開始,因此前八年的貨幣供給量增長實際上將慢于比特幣,這為籌款參與者和早期采用者提供了在中期大幅受益的機會。
在2月的某個時候,我們將發布一個中心化的測試網絡,任何人都可以用它發送交易和創建合同。不久之后,我們將使用去中心化的測試網絡來測試不同的挖礦算法,確保點對點守護程序的運作和安全,并采取措施優化腳本語言。最后,一旦確定協議和客戶端是安全的,我們就將發布創世區塊,并允許開始挖礦。
未來展望
由于以太坊包含一種圖靈完備的腳本語言,所以我們可以從數學上證明,與比特幣類似的區塊鏈加密貨幣可以做的任何事情,以太坊基本上也能做。但目前的協議仍有一些問題尚未解決。例如,以太坊沒有解決所有基于區塊鏈的加密貨幣都面臨的可擴展性這個根本問題,即每個完整節點都必須存儲整個資產負債表并驗證每筆交易。以太坊從瑞波幣借用了獨立的“狀態樹”和“交易列表”概念,一定程度上緩解了可擴展性問題,但沒有任何根本性的突破。為了達到這一點,需要有新技術,如伊萊·本薩森(Eli Ben-Sasson)的安全的計算完整性和隱私技術(Secure Computational Integrity and Privacy,SCIP),該技術目前正在開發中。
此外,以太坊沒有改進傳統的工作量證明挖礦及其所有缺陷,卓越證明和瑞波幣式的共識機制也尚未被探索。如果事實表明權益證明或其他工作量證明算法是更好的解決方案,那么未來的加密貨幣可能會使用MC2和Slasher等權益證明算法。如果以太坊2.0有發展空間,那就是在這些方面進行改進,也就是說,以太坊最終會是一個開放式項目;如果該項目獲得足夠的資金,我們甚至可能自己發布以太坊2.0,將原始賬戶余額轉移到一個被進一步改進后的網絡上。歸根結底,正如我們給以太幣本身賦予的標語一樣,唯一的限制是我們的想象力。