啟動一個去中心化組織:第一部分

Vitalik Buterin于2013年12月31日發布,我翻譯了它,供大家參考。

美國總統候選人米特·羅姆尼提醒我們,公司就是人。無論你是否同意他的支持者從這一主張中得出的結論,這份申明肯定包含著大量的真理。什么是公司,總而言之,不過是某群人在一套特定的制度下一起工作。當一家公司擁有財產時,其真正意思時有一份法律合同明確規定這些財產只能在現有董事會成員的控制下為了某些目的而使用——這一名稱本身可由特定股東修改。如果公司做什么事情,那是因為董事會已經同意這么做了。如果公司雇傭員工,這意味著雇員同意在一套特定的規則下為公司的客戶提供服務,特別是涉及付款的規則。當一家公司擁有有限責任時,著意味著一些特定的人員被授予了額外的特權,可以在不擔心政府啟訴的情況下行事——這群人比單獨行事的普通人擁有更多的權利,但是最終還是會成為普通人。任何情況下,一直下來只不過是人與合同的關系。

然而,產生了一個有趣的問題:我們真的需要人嗎?一方面,答案是肯定的:盡管在后奇點時代,未來的機器能夠獨自生存,但是在可預見的未來,一些與物理世界互動的人類活動是完全必須的。然而在另一方面,從過去兩百多年的發展來看,答案傾向于否定。工業革命使我們第一次開始大規模地用機器取代人類勞動,現在我們擁有先進的數字化工廠和機械臂,它們可以獨立生產汽車等復雜產品。然而這只是低端自動化,不再需要普通的體力勞動者,代之以少量的專業人員來維護機器人,而公司的管理層保持不變。那么問題來了,我們能不能從另外一個方向來處理這個問題:盡管仍然需要人類來完成某些特定任務,那能不能將管理也從等式中移除?

大多數公司都有某種類型的宗旨申明,大多數宗旨是為股東賺錢,有時候這些宗旨也含有生產某種創新的特殊產品的情懷,或者有時候幫助社區參與混合,至少理論是這樣。目前,該宗旨申明僅在董事會以及最終股東對其解釋的情況下存在,但是如果在現代信息技術的力量下,我們能將宗旨申明編成代碼,創造一個不可侵犯的合同,創造收入,為人們履行某些職能付款,找到硬件讓它自身運行,所有這些都不需要自上而下的人為指導?

正如丹尼爾·拉米爾(Daniel Larmier?)在《讓我們談談比特幣》中通過他自己的探索在這個概念上指出的那樣,從某種意義上來說,比特幣本身就可以認為是這種東西的非常早期的模型。比特幣有2100萬股股份,這些股份由比特幣的股東持有。它有員工,并且有一份合同支付員工工資:大概每十分鐘向隨機一名員工支付25BTC。它甚至有自己的營銷部門,很大程度上由股東自己組成。然而,它也非常受限,除了當前的時間它對世界幾乎一無所知,除了改變難度它不能對自己的功能做任何改變,實際上它本身沒有做任何事情。它簡簡單單存在,留給世界來認識它。問題是,我們能做的更好一些嗎?

運算

首先挑戰是明顯的:這樣的公司究竟如何做出決定?編寫這樣的代碼很容易,至少給定預期的環境,輸入給定的參數,計算出需要的操作。但是由誰來運行代碼呢?如果代碼只是簡單的作為計算機程序存在某臺特定的機器上,那么由什么來阻止機器所有者來關掉這臺機器,或者甚至修改代碼把所有的錢發送給他自己?對于這個問題,唯一有效的答案是:分布式計算。

然而,我們尋找的這種分布式計算與SETI@home和Folding@home項目所使用的分布式計算是不同的。在那些情況下,仍然存在中心服務器從分布式節點收集數據,并發送請求。更準確的說,這里所需要的是我們在比特幣中看到那種分布式計算:一套分散的自我驗證自身運算的規則。在比特幣中,這是通過簡單的多數投票來完成的,如果你沒有使用多數網絡力量幫助計算區塊鏈,你的區塊將被拋棄,你也得不到任何區塊獎勵。該理論認為單一的攻擊者沒有足夠的算力來顛覆這一機制,因此唯一可行的策略本質上是“隨波逐流”和誠實行事,來幫助支持網絡,并獲得區塊鏈獎勵。因此我們能簡單的應用這個機制來做去中心化計算嗎?也就是說,我們能簡單的要求網絡中的每一臺計算機來評估一個程序,然后只獎勵那些答案與投票多數相符的人嗎?遺憾的是,答案否定。比特幣是一個特殊例子,因為比特幣簡單:它只是一種貨幣,并不攜帶任何屬性和它自己的隱私數據。另一方面,虛擬公司需要將私鑰存儲到比特幣錢包中——一段數據,任何人不能完全獲取,不像在比特幣交易中那樣對任何人提供。但是,當然,私鑰仍然必須有用,這樣我們所需要的是交易簽名系統,甚至以一種去中心化的方式計算生成比特幣地址。幸運的是,比特幣能讓我們準確的做到這一點。

第一個可能想到的解決方案多重簽名系統。假設有一千臺靠得住的電腦,它們繼續支持這個公司,每臺電腦創建一個私鑰,這樣在它們中間生成501-1000個多重簽名地址。要使用這些資金,只需簡單的構建一個具有來自任何501個節點的交易,并把它廣播到區塊鏈中。這里有一個明顯的問題:交易將變得很大。每個簽名大約由70字節構成,那么其中501個節點構成了35K字節的交易——這很難被網絡接受,因為比特幣默認拒絕任何超過10000字節的腳本。其次,解決方案針對比特幣,如果公司想為了非財務目的存儲私人數據,多重簽名腳本是無用的。多重簽名地址之所以有效,是因為有比特幣網絡來評估它們,并根據評估是否成功來決定是否將交易放入區塊鏈。在私有數據的情況下,一個類似的解決方案本質上就是需要一些分散的權力,只有1000個簽名中的501個簽名才可以把數據發出去——這讓我們回到了起點。

然而,仍然有希望使用另外的解決方案;密碼學家通常把它稱為“安全多方計算”。在安全多方計算中,對程序的輸入(或者更準確地說,對模擬“電路”的輸入,因為安全多方計算無法處理“如果”語句和條件循環)使用稱為沙米爾秘密共享的算法進行分割,并將一段信息提供給每個參與者。沙米爾秘密共享算法能夠把任何數據分成N個片段,這樣它們中的K個片段(不是K-1)都足以恢復原始數據——運行算法時你可以選擇K和N是什么。2和3,5和10,501和1000都是可能的。然后,可以以分散的方式,在數據片段上對電路進行評估。這樣計算到最后,每人都可以得到一個計算的結果。但是在計算過程中,任何個人都不能對正在發生的事情有絲毫的了解。最后,片段放在一起,顯示出結果。運算時間是O(n3)。意味著評估計算的計算步數大概與參與節點數的立方成正比。有10個節點時,計算步數是1000,有1000個節點時,運算步數是10億。10億步循環計算用C++在我的筆記本電腦上大概要花20秒時間,服務器只需花幾分之一秒。因此1000個節點現在大致處于計算實用性的極限。

事實證明,安全多方計算可以用來生成比特幣地址和簽署交易,對于地址生成,協議很簡單:

1.每人生成一個隨機數作為私鑰。

2.每人計算私鑰對應的公鑰。

3.每人公開他們的公鑰,然后使用沙米爾秘密共享的算法計算出一個公鑰,該公鑰可以從公開的1000個公鑰中的任何501個進行重構。

4.從那個公鑰就產生了一個地址。

因為公鑰可以被整數加減乘除,令人驚訝的是該算法的工作原理與你預期的完全相同。如果每人用相同的方法組合一個500-of-1000私鑰,那么該私鑰可以使用發送到地址的錢,該地址是通過對相應的公鑰使用501-of-1000算法生成的,因為沙米爾秘密共享實際上只是一個運算公式。也就是說,只使用加減乘除,就可以在公鑰之上計算該公式,就像計算地址一樣簡單。因此,私鑰轉換為公鑰的運算是否在代數式之前還是之后進行并不重要。簽名交易可以用相同的方法進行,盡管過程有些復雜。

安全多方計算的美妙之處是它可以延申到比特幣之外,它可以容易的應用到企業依賴的人工智能運算,所謂的“機器學習”就是一套運算的通常叫法,這套運算探測現實世界數據的模型,允許計算機在人工干預之外來建模,大量應用于類似垃圾郵件過濾器和自動駕駛汽車等場合,這也“只是代數”,也能用安全多方計算來實現。實際上,如果那個計算在輸入單元上分解電路,任何計算都能做到。對于這種可能的復雜性自然有一些限制,把復雜運算轉化為電路通常會引入額外的復雜性,并且,如上所述,沙米爾保密共享獨個兒可能會很昂貴,因此,實際上它只能應用于核心運算之中,更復雜的高級思維任務最好交給外部承包商來解決。




Excited about this topic? Look forward to parts 2, 3 and 4: howdecentralized corporations can interact with the outside world, how some simplesecure multiparty computation circuits work on a mathematical level, and twoexamples of how these decentralized corporations can make a difference in thereal world.

?


原文:Bootstrapping

A Decentralized Autonomous Corporation: Part I | Ethereum Foundation Blog

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容