一文了解 Vitalik 看好的非金融區塊鏈應用
作者:Vitalik Buterin
原文標題:《Decentralized Society: Finding Web3's Soul》
編譯:隔夜的粥,DeFi之道
特別感謝 Shrey Jain 和 Puja Ohlhaver 提供的大量反饋意見和審查幫助。
最近,人們越來越有興趣關注非金融區塊鏈應用。出於各種原因,我一直強烈支持這一趨勢。上個月,Puja Ohlhaver、Glen Weyl 和我合作撰寫了一篇論文,描述了一個更為詳細的願景,即利用更豐富的靈魂綁定代幣生態可以實現什麼。這引發了一些討論,特別關注的是在去中心化的身份生態中使用區塊鏈是否有意義:
- Kate Sills 為鏈外簽名聲明辯護;
- Puja Ohlhaver 回應了 Kate Sills;
- Evin McMullen 和我自己在一次播客活動上辯論了鏈上 VS 鏈下證明;
- Kevin Yu 撰寫了一篇技術概述文章,提出了鏈上與鏈下的問題;
- Molly White 提出了個反對自我主權身份的悲觀案例;
- Shrey Jain 總結了一個包含上述內容以及很多其他討論的 Twitter 帖子;
縮小範圍並提出一個更廣泛的問題是值得的:一般來說,在非金融應用中使用區塊鏈有什麼意義?我們是否應該走向這樣一個世界:即使是去中心化的聊天應用程序,每一條消息都是包含加密消息的鏈上交易 ?或者,區塊鏈是否只對金融有好處(例如,因為網絡效應意味著資金對"全球視野"有著獨特的需求),而所有其他應用最好使用中心化或更多本地系統來完成?
我個人的看法傾向於,就像區塊鏈投票一樣,我們要遠離"區塊鏈無處不在"的觀點,也要遠離"區塊鏈極簡主義"(blockchain minimalist)。我在很多情況下都看到了區塊鏈的價值,有時是為了真正重要的目標,比如「信任」和「抗審查」,但有時純粹是為了方便。這篇文章將試圖描述區塊鏈可能有用的一些類型情況,特別是身份方面,以及它們不那麼有用的地方。這篇文章並不是一個完整的列表,其中故意遺漏了很多東西,文章的目的是闡明一些常見的用例類別。
用戶賬戶密鑰更改和恢復
加密帳戶系統中最大的挑戰之一是密鑰更改問題。在以下幾種情況下可能會發生:
- 你擔心當前密鑰可能丟失或被盜,因此希望切換到其他密鑰;
- 你想切換到另一種加密算法(例如,因為你擔心量子計算機很快就會出現,你想升級到後量子加密算法);
- 你的密鑰丟失,你想重新訪問自己的賬戶;
- 你的密鑰被盜,你希望重新獲得對自己賬戶的獨占訪問權限(你不希望小偷也能訪問);
[1] 和 [2] 相對簡單,因為它們可以完全自主的方式完成:你控制密鑰 X,你想切換到密鑰 Y,所以你發布了一條用 X 簽名的消息,上面寫著"從現在開始用 Y 驗證我",然後所有人都接受了這一點。
但請注意,即使對於這些較簡單的密鑰更改場景,你也不能僅僅使用密碼學。考慮以下事件順序:
- 你擔心密鑰 A 可能被盜,所以你在一條消息上簽名說"我現在使用 B";
- 一年之後,一名黑客確實盜取了密鑰 A,其用密鑰 A 簽署了一則消息,上面寫道"我現在使用 C",其中 C 是黑客自己的密鑰;
從後來剛收到這兩條消息的人的角度來看,他們看到 A 不再被使用,但他們不知道"用 B 替換的 A"和"用 C 替換 A"的優先級哪個更高。
這相當於設計去中心化貨幣時會遇到的著名的雙花問題,除了目標不是防止以前的 token 持有者能夠再次發送它,這裡的目標是防止以前控制賬戶的密鑰能夠更改密鑰。就像創建去中心化的貨幣一樣,以去中心化的方式進行賬戶管理,也需要像區塊鏈這樣的東西。區塊鏈可以為密鑰更改消息添加時間戳,提供關於 B 或 C 先出現的共同知識。
而 [3] 和 [4] 會更難。一般來說,我自己首選的解決方案是「多重簽名」以及「社交恢復錢包」,如果你的賬戶丟失或被盜,一群朋友、家人和其他聯繫人可以將你的賬戶控制權轉移到新的密鑰。對於關鍵操作(例如轉移大量資金,或者簽署一個重要合約),也可能需要該小組的參與。
而這也需要區塊鏈。使用秘密共享技術進行社交恢復是可能的,但在實踐中會更難:如果你不再信任你的某些聯繫人,或者如果他們想要更改自己的密鑰,那麼你無法在不更改密鑰的情況下撤消訪問權限。所以我們又回到了要求某種形式的鏈上記錄。
DeSoc(去中心化社會)論文中的一個微妙但重要的想法是,為了保持不可轉讓性,個人資料的社交恢復(或"社區恢復")實際上可能需要強制執行。也就是說,即使你出售自己的賬戶,你也可以隨時使用社區恢復來取回賬戶。這將解決一些問題,比如沒有名氣的司機在乘車共享平台上購買經驗證的賬戶。也就是說,這是一個推測性的想法,不必完全實施即可獲得基於區塊鏈的身份和聲譽系統的其他好處。
請注意,寫到這裡,這只是區塊鏈的一個有限用例:在鏈上擁有賬戶,但在鏈下做所有其他的事情,這是完全可以的。有一個地方可以容納這種混合願景,使用以太坊登錄是一個很好的簡單示例,說明了如何在實踐中做到這一點。
修改和撤銷證明
愛麗絲(Alice)去了 XX 學院並獲得了 XX 研究學位,她獲得了一個數字記錄來證明這一點,上面有 XX 學院的密鑰簽名。不幸的是,六個月後,XX 學院發現愛麗絲(Alice)存在大量抄襲行為,並撤銷了她的學位。但愛麗絲繼續使用她的舊數字記錄,並到處向不同的人和機構聲稱她擁有這個學位。潛在地,證明甚至可以帶有一些權限(例如,登錄學院在線論壇的權利),而愛麗絲也可能試圖不恰當地訪問它。我們如何防止這種情況發生?
"區塊鏈極簡主義"的方法,是讓學位成為鏈上 NFT,這樣 XX 學院可以發布鏈上交易來撤銷這個 NFT。但這種方式是昂貴的,也許並不必要(發行很常見,但撤銷很少,如果不需要的話,我們不想要求 XX 學院 為發行交易支付費用)。所以我們可以使用一種混合解決方案:使初始學位成為鏈外簽名消息,並在鏈上進行撤銷 ,這是 OpenCerts 使用的方法。
完全鏈外的解決方案,也是很多鏈外可驗證憑證支持者所提倡的解決方案,即 XX 學院運行一個伺服器,他們在其中發布撤銷的完整列表(為了改善隱私,每個證明都可以附帶一個 nonce,撤銷列表可以只是個 nonce 列表)。
對於一所大學來說,運行伺服器並不是一個很大的負擔。但對於任何較小的組織或個人來說,管理"另一個伺服器腳本"並確保它保持在線對 IT 人員來說是一個巨大的負擔。如果我們告訴人們出於對區塊鏈的恐懼而"只使用伺服器",那麼可能的結果是每個人都將任務外包給一個集中的供應商。最好保持系統去中心化,只使用區塊鏈,尤其是現在 rollup、分片和其他技術終於開始上線,從而使區塊鏈的成本越來越便宜。
負面聲譽(Negative reputation)
鏈下簽名不夠用的另一個重要領域是負面聲譽,即,你正在對其進行認證的個人或組織可能不希望你看到相關證明。我在這裡使用"負面聲譽"這個詞作為技術術語:最明顯的動機用例是證明某人的壞話,比如糟糕的評論或某人在某些情況下濫用行為的報告,但也有一些用例的情況下,"負面"證明並不意味著不良行為,例如,申請貸款並想證明你沒有同時申請過太多其他貸款。
對於鏈外聲明,你可以獲得正面的聲譽,因為讓聲明的接收者看起來更有信譽(或提供 ZK 證明)符合他們的利益,但你不能獲得負面聲譽,因為有人總是可選擇只展示讓他們看起來不錯的聲明,而忽略其他所有聲明。
在這裡,在鏈上進行認證確實可以解決問題。為了保護隱私,我們可以添加加密和零知識證明:證明可以是一個鏈上記錄,數據加密到收件人的公鑰,用戶可以通過運行遍歷鏈上記錄的整個歷史的零知識證明來證明缺乏負面聲譽。鏈上的證明以及區塊鏈驗證過程可以很容易地驗證證明確實遍歷了整個歷史,並且沒有跳過任何記錄。為了使這種計算可行,用戶可以使用增量可驗證計算(如 Halo)來維護和證明已加密的記錄樹,然後在需要時顯示樹的某些部分。
負面聲譽和撤銷證明在某種意義上是等價的問題:你可以通過添加另一個負面聲譽證明來撤銷一個證明,並說"另一個證明不再重要",你可以通過背負正面聲譽來實施負面聲譽撤銷:愛麗絲(Alice)在 XX 學院的學位可以被撤銷,取而代之的學位是"愛麗絲獲得了 XX 研究學位,但她借用了其他人的成果"。
負面聲譽是個好主意嗎?
我們有時會聽到一種對負面聲譽的批評:但負面聲譽難道不是一種反烏托邦的"紅字"計劃嗎?我們不應該盡最大努力用正面聲譽來做事嗎?
在這裡,雖然我支持避免無限負面聲譽的目標,但我並不同意完全避免負面聲譽的想法。負面聲譽對於很多用例來說都是很重要的。無論是區塊鏈領域,還是非相關領域,「無抵押借貸」對於提高資本效率而言都是非常有價值的,這顯然會從負面聲譽中受益。Unirep Social 展示了一個概念驗證社交媒體平台,該平台將高度匿名性與保護隱私的負面聲譽系統相結合,以限制濫用行為。
有時,負面聲譽可能會增強力量,而正面聲譽可能具有排他性。比如一個網絡論壇,每個獨特的人都有權發帖,直到他們因行為不端而受到太多的"打擊",這比一個首先需要某種"良好品格證明"才能被接納並允許發言的論壇更為平等。而那些生活在"系統外"的邊緣化人群,即使他們實際上品行良好,也很難得到這樣的證明。
一些人還可能會考慮性工作者客戶匿名聲譽系統的案例:你想保護隱私,但你也可能想要一個系統,如果客戶虐待性工作者,他們會得到一個"黑印記",這可以提醒其他工作者更加小心或遠離這些客戶。這樣,難以掩飾的負面聲譽實際上可以增強弱勢群體的能力,以保護她們的安全。這裡的重點不是為負面聲譽的某些具體計劃辯護,相反,這是為了表明負面聲譽釋放出的真正價值,一個成功的系統需要以某種方式予以支持。
負面聲譽不一定是無限的負面聲譽:我想說的是,總是有可能以一定的成本創建一個新的個人資料(可能犧牲很多或所有現有的正面聲譽),問責過少與問責過重之間存在一種平衡。但首先,擁有一些能夠讓負面聲譽成為可能的技術,是打開這個設計空間的先決條件。
致力於稀缺性
區塊鏈存在價值的另一個例子,是發布數量有限的證明。如果我想為某人做背書(例如,有人可能會想像一家公司正在找工作,或者一個政府簽證計劃正在查看此類背書),查看背書的第三方會想知道我對背書是否謹慎。
這個問題的理想解決方案是公開背書,這樣背書就與動機相一致:如果我背書的人最終被證明做了錯事,那麼將來每個人都可以對我的背書打折扣。但通常,我們也希望保護隱私。因此,我可以做的是在鏈上發布每個背書的哈希值,這樣任何人都可以看到我給出了多少。
一個更有效的用例是單次多發行( many-at-a-time issuance):如果藝術家想要發布 N 份"限量版"NFT,他們可以在鏈上發布一個包含他們正在發布的 NFT 的 Merkle 根的哈希。單次發布可以防止他們在事後發布更多的 NFT ,你可以將表示數量限制的數字(例如 100)與 Merkle 根一起發布,表示只有最左邊的 100 個 Merkle 分支有效。
通過在鏈上發布單個 Merkle 根和最大計數,你可以提交數量有限的證明。在這個示例中,只有五個可能的有效 Merkle 分支可以滿足證明檢查。精明的讀者可能會注意到,這與 Plasma 鏈在概念上的相似之處。
共同知識(Common Knowledge)
區塊鏈的一個強大特性是它們創造了共同的知識:如果我在鏈上發布了一些東西,那麼 Alice 可以看到它,Alice 可以知道 Bob 可以看到它,Charlie 可以知道 Alice 知道 Bob 可以看到它,等等。
共同的知識對於協調往往很重要,例如,一群人可能想就一個問題發表意見,但只有當他們有足夠多的人同時發表意見,並且他們的人數安全時,他們才會覺得這樣做很舒服。一種可能的方法是讓一個人圍繞特定聲明啟動一個"承諾池",並邀請其他人發布表示他們同意的哈希(最初是私有的)。只有在一段時間內有足夠多的人參與,所有參與者才會被要求公開他們的下一條鏈上消息,以表明他們的立場。
這樣的設計可以通過零知識證明和區塊鏈的組合來完成(這可以在沒有區塊鏈的情況下完成,但需要見證加密(目前尚不可用),或者需要可信硬件(存在嚴重問題的安全假設))。圍繞這類想法有一個很大的設計空間,目前還沒有得到充分的開發,但一旦區塊鏈和加密工具周圍的生態系統進一步發展,就很容易開始增長。
與其他區塊鏈應用的互操作性
這很簡單:有些東西應該在鏈上,以便更好地與其他鏈上的應用互操作。人類證明(Proof of humanity)作為一種鏈上 NFT,使項目更容易實現自動空投或將治理權授予具有人類證明檔案的帳戶。鏈上的預言機數據使 defi 項目更容易讀取。在所有這些情況下,區塊鏈並沒有消除對信任的需求,儘管它可以容納管理信任的 DAO 等結構。但是,鏈上提供的主要價值只是與你正在與之互動的東西在同一個地方,出於其他的原因,這需要區塊鏈。
當然,你也可以運行一個鏈外預言機,並要求僅在需要讀取數據時才導入數據,但在許多情況下,這實際上會更加昂貴,並且不必要地給開發人員帶來複雜性和成本。
開源指標
去中心化社會論文的一個關鍵目標是,應該能夠對證明圖進行計算。一個非常重要的問題是衡量去中心化和多樣性。例如,很多人似乎都同意,理想的投票機制會以某種方式考慮到多樣性,不僅給那些獲得最多幣甚至最多人支持的項目更大的權重,還賦予那些得到最多不同視角支持的項目更大的權重。
Gitcoin Grants中實施的二次方融資還包括一些明確的有利於多樣性的邏輯,以減輕攻擊。
另一個衡量和分數有價值的地方是聲譽系統,這已經以評級的集中形式存在,但它可以更加去中心化的方式完成,其中算法是透明的,同時保留更多的用戶隱私。
除了像這樣的緊密耦合用例,即試圖衡量某一組人之間的聯繫程度並將其直接輸入一個機制之外,還有更廣泛的用例來幫助社區了解自己。在衡量去中心化的情況下,這可能是一個確定集中度過高的領域的問題,這可能需要一個回應。在所有這些情況下,在大量的證明和承諾上運行計算機化算法,並用輸出做真正重要的事情將是不可避免的。
我們不應該試圖廢除量化指標,而是應該嘗試做出更好的指標
Kate Sills 對根據聲譽進行計算的目標表示懷疑,這一論點既適用於公共分析,也適用於個人 ZK 證明他們的聲譽(如在 Unirep Social 中):
"對聲明進行評估的過程非常主觀,並且與上下文相關。人們自然會對他人的可信度產生分歧,而信任取決於環境…[正因如此] 我們應該對任何"計算"聲明以獲得客觀結果的提議,持極端懷疑態度。"
在這種情況下,我同意主觀性和背景的重要性,但我不同意更廣泛的主張,即完全避免圍繞聲譽進行計算是正確的目標。純粹的個人化分析的規模不會遠遠超過鄧巴數,任何試圖支持大規模合作的複雜社會,都必須在一定程度上依賴於聚合和簡化。
也就是說,我認為一個開放參與的證明生態系統(與我們今天的中心化證明生態系統相反)可以通過為更好的指標開闢空間來讓我們兩全其美。以下是此類設計可以遵循的一些原則:
- 主體間性(Inter-subjectivity):例如,聲譽不應該是一個單一的全球分數,相反,它應該是一個更主觀的計算,這涉及被評估的人或實體,還包括查看分數的觀眾,甚至可能涉及當地環境的其他方面。
- 可信的中立性:該計劃顯然不應該為強大的精英留下空間,讓他們不斷地為自己的利益而進行操縱。實現這一點的一些可能方法,是最大的透明度以及算法的不頻繁更改。
- 開放性:能夠做出有意義的輸入,並通過自己運行檢查來審核他人的輸出,這應該對任何人開放,而不僅限於少數強大的群體。
如果我們不創建良好的大規模社會數據聚合體,那我們就有可能將市場份額拱手讓給不透明和中心化的社會信用評分系統。
並非所有數據都應該在鏈上,但以公共知識(Common Knowledge) 的方式公開一些數據有助於提高社區自身的易讀性,而不會造成可能被濫用以進行集中控制的數據訪問懸殊。
作為數據存儲
這是一個真正有争议的用例,即使在那些接受大多數其他用例的人當中也是如此。區塊鏈領域有一個共同的觀點,即區塊鏈只能在真正需要和不可避免的情況下使用,而對於其他任何地方,我們都應該使用其他工具。
在一個交易費用非常昂貴、區塊鏈效率極其低下的世界裡,這種態度是有道理的。但在區塊鏈實現 rollup 和分片技術後(交易費用可以降低到幾美分),那這種看法的意義已經不大了,而且區塊鏈和非區塊鏈去中心化存儲之間的冗餘差異可能只有 100 倍。
即使在這樣的世界中,將所有數據都存儲在鏈上也沒有意義。但如果是小的本文記錄呢?絕對是有必要的,為什麼?因為區塊鏈是一個非常實用的存儲東西的地方。我在 IPFS 上保留了一份這篇博文的副本,但上傳到 IPFS 通常需要一個小時,它需要中心化網關讓用戶以接近網站延遲水平的任何東西訪問它,並且有時文件會丟失並且不再可見。另一方面,將整個博客轉儲到鏈上,將完全解決這個問題。當然,博客太大了,實際上無法在鏈上轉儲,即使是實施分片後,也是如此,但同樣的原則也適用於較小的記錄。
將數據存儲上鏈可能是正確決定的一些小例子包括:
- 增強的秘密共享:將你的密碼分成 N 個片段,其中任何 M = N-R 個片段都可以用於恢復密碼,但你可以選擇所有 N 個片段的內容。例如,這些片段可能都是密碼的哈希值、通過其他工具生成的秘密或安全問題的答案。這是通過在鏈上發布額外的 R 個片段(看起來是隨機的),並在整個集合上進行 N-of-(N+R) 秘密共享來完成的。
- ENS 優化。通過將所有記錄組合成一個哈希,只在鏈上發布哈希,並要求任何訪問數據的人從 IPFS 中獲取完整數據,從而可以提高 ENS 的效率。但這將顯著增加複雜性,並增加另一種軟件依賴性。因此,即使數據長度超過 32 字節,ENS 也能將數據保存在鏈上。
- 社交元數據。連接到你的帳戶的數據(例如,用於以太坊登錄目的),這是你希望公開且長度非常短的數據。對於更大的數據(例如頭像圖片),這通常是不正確的(儘管如果圖片恰好是一個小的 SVG 文件,那它可能是!),但對於文本記錄來說,情況確實如此。
- 證明和訪問權限。特別是如果要存儲的數據長度小於幾百字節,將數據存儲在鏈上可能比將哈希放在鏈上和將數據放在鏈下更方便。
在很多這樣的情況下,權衡的不僅僅是成本,還有那些密鑰或密碼學被破壞的邊際情況下的隱私。有時,隱私只是有點重要(偶爾會因為洩露密鑰或遙遠的量子計算幽靈而失去隱私),這與高度確定數據將保持可訪問性相比沒有那麼重要。畢竟,存儲在"數據錢包"中的鏈外數據也可能遭到黑客攻擊。
但有時,數據會特別敏感,這可能是反對將其置於鏈上並將其作為第二層防禦存儲在本地的另一個論據。但請注意,在這些情況下,隱私需求不僅是反對區塊鏈的理由,也是反對所有去中心化存儲的理由。
結論
在上面的列表中,我個人迄今最有信心的兩個用例是與其他區塊鏈應用的互操作性 以及賬戶管理。第一個已經在鏈上了,而第二個會相對更便宜(每個用戶只需要與鏈交互 1 次,而不是每個操作交互 1 次),情況是很清楚的,並且確實沒有一個好的基於非區塊鏈的解決方案。
負面聲譽和撤銷也很重要,儘管它們仍然是相對早期的用例。通過僅僅依靠鏈外正面聲譽,我們可以在聲譽方面做很多事情,但我預計,隨著時間的推移,撤銷和負面聲譽的用例會變得更加明顯。我預計會有人嘗試使用中心化伺服器來做到這一點,但隨著時間的推移,人們應該清楚地看到,區塊鏈是避免在不便和中心化之間做出艱難選擇的唯一途徑。
區塊鏈作為短文本記錄的數據存儲用例 可能是微不足道的,也可能是重要的,但我確實希望至少有一些這樣的使用會繼續發生。區塊鏈對於廉價和可靠的數據檢索確實非常方便,無論應用有 2 個用戶還是 200 萬用戶,都可以繼續檢索數據。開源指標 仍然是一個非常早期的想法,它仍然需要看看在不被利用的情況下可以做多少事情並使之公開(例如在線評論、社交媒體等一直在被利用)。共同知識(Common Knowledge)遊戲需要說服人們接受社會重要事物的全新工作流,所以這當然也是一個早期想法。
我在很大程度上不確定這些類別中非金融區塊鏈的使用水平到底有多大意義,但很明顯,區塊鏈作為這些領域的支持工具不應該被忽視。