去中心化自治公司:安全多方運算打造無人管理新紀元

作者:

分類:
在當今商業環境中,公司組織形式多元,但其本質不脫離「人」與契約的結合。公司擁有資產,實質上是透過法律契約,賦予特定人士(董事會)在特定規範下使用資產的權力。公司的決策、僱傭行為,也都仰賴相關人士在契約框架下達成共識。甚至,公司享有的有限責任,也是政府賦予特定人士的法律特權。總而言之,公司的運作離不開「人」與「契約」。 然而,隨著科技進步,一個有趣的問題浮現:我們是否真的需要「人」?一方面,在可預見的未來,人類的參與仍是不可或缺的,特別是在與實體世界互動方面。另一方面,過去兩百年來的工業革命,已逐漸以機器取代人力。現今,高度自動化的工廠、機械手臂,已能獨立生產複雜產品,如汽車。
然而,這些進展多集中於基層勞力的自動化,管理階層仍由人類主導。因此,我們能否反向思考:即使特定專業任務仍需人類執行,是否能將管理層從組織中移除? 多數公司都有其使命宣言,常見的目標是為股東創造利潤。有時,使命宣言也會包含道德考量,或社區服務等目標。然而,這些宣言的實踐,往往取決於董事會和股東的詮釋。那麼,我們能否利用現代資訊科技,將使命宣言編碼成程式?換言之,建立一套不可竄改的契約,使其能自動產生收入、支付人員執行特定職能、尋找硬體資源來運作,且無需由上而下的人為干預? 誠如 Daniel Larmier 所言,從某種意義上來說,比特幣本身可被視為早期雛形。比特幣擁有 2100 萬股,由持有者(股東)掌控。它也有員工(礦工),並具備一套支付機制:每十分鐘隨機支付 25 枚比特幣給一位礦工。甚至,比特幣也擁有行銷部門,主要由股東組成。 然而,比特幣也存在諸多限制。它幾乎不了解世界,僅知當前時間。除了調整挖礦難度,它無法改變自身功能,且本身並無實際作為,僅仰賴外界認可。因此,我們能否更進一步,打造更完善的組織形式? 首要挑戰顯而易見:如何讓這種組織做出決策?撰寫程式以根據特定輸入,計算出理想行動方案並不難。但誰來執行這些程式碼?如果程式碼僅存在於特定機器上,如何防止機器擁有者關閉系統,或修改程式碼以將資金轉移至個人帳戶?針對此問題,唯一有效的解決方案是:分散式運算。 然而,此處所需的分散式運算,不同於 SETI@home 或 Folding@home 等計畫。這些計畫仍依賴中央伺服器來收集資料、發送請求。我們需要的是類似比特幣的分散式運算:一套能以去中心化方式自我驗證計算結果的規則。在比特幣中,此機制仰賴簡單的多數決:若節點未參與區塊鏈的計算,其區塊將被丟棄,且無法獲得區塊獎勵。此理論假設,單一攻擊者無法掌握足夠的算力來顛覆此機制,因此,最可行的策略是「順應潮流」,誠實地支持網路運作,以獲取區塊獎勵。 那麼,我們能否將此機制直接應用於去中心化運算?也就是說,要求網路中的每台電腦評估一項程式,並僅獎勵那些答案與多數結果相符的節點?遺憾的是,答案是否定的。比特幣是個特例,因為它很簡單,僅是一種貨幣,本身不攜帶任何資產或私人資料。然而,虛擬公司可能需要儲存比特幣錢包的私鑰——這份資料不應完全公開,但又必須能夠使用。因此,我們需要一套能夠以去中心化方式產生比特幣位址、簽署交易的系統。幸運的是,比特幣允許我們做到這點。 首先想到的可能是多重簽名位址。假設有一千台電腦可信賴,讓它們各自產生私鑰,並建立一個 501-of-1000 多重簽名位址。若要花費資金,只需建立一筆包含 501 個節點簽名的交易,並將其廣播至區塊鏈。此方法的缺點顯而易見:交易規模過大。每個簽名約佔 70 位元組,501 個簽名將產生 35 KB 的交易——這很難被網路接受。 其次,此方案僅適用於比特幣。若公司想儲存非金融用途的私人資料,多重簽名腳本便無用武之地。多重簽名位址之所以有效,是因為比特幣網路會驗證它們,並根據驗證結果將交易放入區塊鏈。若要處理私人資料,類似的解決方案需要一個去中心化的機構來儲存資料,並僅在收到 1000 個簽名中的 501 個時才發布資料——這又回到了原點。 然而,另一種方案仍帶來希望:密碼學家稱之為「安全多方運算」(Secure Multiparty Computation)。在安全多方運算中,程式的輸入(或更精確地說,模擬「電路」的輸入,因為安全多方運算無法處理「if」語句和條件迴圈)會使用「沙米爾秘密分享」(Shamir’s Secret Sharing)演算法進行分割,並將一部分資訊提供給每個參與者。沙米爾秘密分享可用於將任何資料分割成 N 個部分,其中任何 K 個部分(但不是 K-1 個部分)足以恢復原始資料——您可以在執行演算法時選擇 K 和 N。2-of-3、5-of-10 和 501-of-1000 都是可行的。然後,可以在這些資料片段上以分散式方式評估一個電路,如此一來,在計算結束時,每個人都會得到計算結果的一部分,但在計算過程中,沒有任何一個人能夠稍微窺視正在發生的事情。最後,將這些片段組合起來以揭示結果。演算法的執行時間為 O(n3),這表示評估一個計算所需的計算步驟數量大致與參與者數量的三次方成正比;在 10 個節點上,有 1000 個計算步驟,在 1000 個節點上,有 10 億個步驟。一個簡單的 10 億步迴圈在我的筆記型電腦上大約需要 20 秒,而伺服器可以在不到一秒的時間內完成,因此 1000 個節點目前大致處於計算實用性的極限。
事實證明,安全多方運算可用於產生比特幣地址和簽署交易。對於產生地址,協定非常簡單: 1. 每個人都會產生一個隨機數字作為私鑰。 2. 每個人都會計算對應於該私鑰的公鑰。 3. 每個人都會顯示他們的公鑰,並使用沙米爾秘密分享演算法來計算一個可以從所顯示的一千個公鑰中的任何 501 個公鑰重建的公鑰。 4. 從該公鑰產生一個地址。 由於公鑰可以被加法、減法、乘法,甚至整數除法,令人驚訝的是,此演算法的效果完全符合您的預期。如果每個人都以相同的方式組合一個 501-of-1000 私鑰,那麼該私鑰將能夠花費發送到透過將 501-of-1000 演算法應用於對應公鑰而產生的地址的資金。其原因是沙米爾秘密分享實際上只是一個代數公式,也就是說,它僅使用加法、減法、乘法和除法,而且人們可以「在」公鑰上計算此公式,就像使用地址一樣輕鬆;因此,私鑰到公鑰轉換是在代數之前還是之後完成並不重要。簽署交易可以用類似的方式完成,儘管該過程有點複雜。 安全多方運算的優點在於它不僅僅適用於比特幣;它同樣可以用來執行公司賴以運營的人工智慧演算法。所謂的「機器學習」是檢測真實世界資料模式並允許電腦對其進行建模而無需人為干預的一組演算法的常用名稱,並且廣泛應用於垃圾郵件篩選器和自駕車等領域,它也「只是代數」,並且也可以在安全多方運算中實作。實際上,如果將該計算分解為輸入各個位元上的電路,則可以進行任何計算。可以實現的複雜性自然存在一些限制;將複雜演算法轉換為電路通常會引入額外的複雜性,而且如上所述,沙米爾秘密分享本身可能會變得昂貴。因此,它應該只真正用於實作演算法的「核心」;更複雜的高階思考任務最好由外部承包商解決。