作者:Gavin Wood
Gavin 近期一直在關注的女巫攻擊(civil resistance)的問題,PolkaWorld 回顧了 Gavin Wood 博士在 Polkadot Decoded 2024 上的主題演講,想要探究 Gavin 在如何防止女巫攻擊上的一些見解。
什麼是女巫攻擊?
你們可能知道,我一直在研究一些項目,我在編寫灰皮書,專注於 JAM 項目,也在這個方向上做了一些代碼的工作。實際上,在過去的兩年時間裏,我一直在思考一個非常關鍵的問題,這個問題在這個領域中非常重要,那就是如何防止女巫攻擊(civil resistance)。這個問題無處不在。區塊鏈系統是基於博弈論的,而在分析博弈時,我們通常需要限制參與者的數量,或者管理參與者可能表現出的任意性的情況。
當我們設計數字系統時,我們非常希望能夠確定某個特定的端點 —— 也就是一個數字端點 —— 是否由人類操作。我想先明確一點,這裏我並不是在討論身份問題。身份問題當然很重要,但這裏並不是要確定某個端點在現實世界中的具體身份,而是要區分這個設備和當前由人類操作的設備之間的區別。除此之外,還有一個附加問題是:如果設備確實由人類操作,我們能否爲這個人提供一個化名,以便在特定的上下文中識別他們,並且如果他們以後再次使用這個設備與我們互動,我們就能夠再次識別出他們。
隨着我們的互動方式從主要與他人交流(比如我出生的 80 年代)逐漸轉變爲與系統互動,這類數字系統,尤其是去中心化的 Web3 系統,變得越來越重要。在 80 年代,人們主要是直接與他人交流;到了 90 年代,我們開始通過電話與服務進行互動,比如電話銀行。這對我們來說是一個重大變化,雖然最初電話銀行只是由大量人工操作的呼叫中心組成,我們通過電話與人交流,但最終這些系統演變成了今天的自動語音系統。隨着互聯網的發展,這種人際互動變得越來越少,在日常服務中,我們幾乎不再與人類直接互動。當然,隨着 Web2 電子商務的興起,這種趨勢變得更加顯著。而 Web3 則進一步鞏固了這一點 —— 在 Web3 中,你幾乎不會再與人類互動。Web3 的核心理念就是讓你與機器互動,甚至讓機器之間也能相互互動。
研究女巫攻擊的意義是什麼?
那麼,這究竟有什麼意義呢?這是任何真正社會的基礎要素,也是我們許多社會系統的核心,包括商業、治理、投票、意見整合等各個方面。所有這些都在很大程度上依賴於防止女巫攻擊的能力來構建社區。我們在企業中視爲理所當然的許多機制實際上都是基於防止女巫攻擊的假設。無論是公平合理的使用、噪聲控制,還是社區管理,都是建立在這種防禦能力的基礎上的。許多事情都需要我們確認某個實體是否是真實的人類。如果有人行爲不當,我們可能會希望將其暫時從社區中排除。你可以在數字服務中看到這種現象,當然,在現實世界中也是如此。
通過防止女巫攻擊,我們可以引入一些約束行爲的機制,而不需要設置進入門檻或犧牲系統的可訪問性。例如,激勵行爲有兩種基本方式。一種是「胡蘿蔔加大棒」的策略(即一種獎懲機制)。大棒(懲罰)的做法是要求你交一筆押金,如果你行爲不當,就沒收這筆押金,質押(staking)就是這樣一個簡單的例子。胡蘿蔔(獎勵)的做法是假設你會表現良好,如果你沒有達到預期,我們就剝奪你的一些權利。這其實是大多數公民社會的基本運作方式。
但是,如果區塊鏈上缺乏防女巫攻擊的機制,這種方法就無法真正實施。在公民社會中,這樣的機制之所以有效,是因爲一旦某人被監禁,他們就不能再次犯下同樣的罪行,至少在他們被關押期間不行。自由是與生俱來的,原則上政府可以剝奪它。我並不是說要在鏈上監禁任何人,而是說,目前在鏈上無法實現類似的約束措施。這就導致我們很難通過提供免費服務來抑制不良行爲,而不僅僅是鼓勵良好行爲。商業和推廣活動非常依賴於能夠確認交易者是否是真實的人。
這是我偶爾使用的一個網站的截圖。這是一種非常好的威士忌,許多人都非常喜歡它,在它的原產國很難買到。而在歐洲,買到它相對便宜一些,但看起來他們通過限制個人的購買數量來維持較低的價格。然而,這種操作在一個真正的 Web3 系統中幾乎不可能實現。
在社區建設、空投以及識別和分發社區成員方面也存在很大困難。總體而言,空投在資本支出上的效率非常低,因爲空投的目標是希望能夠覆蓋儘可能多的人。在進行空投時,要有效地做到公平分配,需要先識別個體,然後給每個人相同的數量。但在實際操作中會遇到各種問題,比如錢包餘額的不同。最終你可能會陷入困境,導致分配曲線變得非常不平衡,呈現出極大的差異。結果是,大多數人幾乎得不到足夠的激勵。
關於「公平合理的使用」問題,雖然現在的影響較小,但如果你使用過多的網絡資源,系統通常只會降低你的速度,儘管你仍然可以繼續使用網絡。
回到過去,大約 10 到 15 年前,如果你使用了太多的互聯網資源,互聯網服務提供商可能會認爲你並沒有合理使用這個無限制的網絡服務。因此,他們基本上會徹底停止你的服務,而不是像現在這樣僅僅降低你的網速。這種做法讓他們能夠爲大多數用戶提供近乎無限的互聯網服務,因爲他們可以通過識別用戶來區分誰在合理使用資源。
Web2 的一個基礎是高級服務模式,這在很大程度上依賴於識別用戶的能力。20 多年前,用戶識別機制可能不那麼複雜,但現在情況大不相同。如果你想開一個賬戶,通常會有三種以上的機制來確認你是否是真正的個體,是否是他們以前沒有見過的用戶。比如,如果你嘗試在沒有購買 iPhone 的情況下注冊一個 Apple 賬戶,那簡直就像在闖關一樣,這些公司基本上不願意給你一個賬戶。當然,他們宣傳說你可以免費獲得賬戶,但我不知道後臺的 AI 在做什麼,我自己嘗試了 10 次才最終成功。結果我還是不得不買了一部 iPhone。
我覺得,如果我們能夠更好地識別個體,許多類似於「Oracleization」(信息驗證)的過程將會變得更加容易。
社會中使用防女巫攻擊的「人性證明」來進行信息驗證的一個典型例子是陪審團制度。當我們需要一個公正的判斷者(即 Oracle)來裁定某人是否有罪時,系統會隨機從社會中挑選出奇數個普通人,讓他們聽取證據並做出裁決。類似地,在社會生活的其他領域,比如代表權和意見收集,代表權是社會的重要組成部分,我們通過防女巫攻擊的手段來管理代表權。當然,由於當前的公民基礎設施並不完善,這種管理方式往往並不理想,特別是在代表權與身份混淆的情況下。很多時候,當你想投票時,你需要證明你的真實身份,比如出示駕照或護照。但實際上,投票代表的是你的一部分投票權,而不是要將這張票與個人身份直接關聯。
如何防止女巫攻擊?當前的解決方案是什麼?
所以,這應該怎麼做呢?
在 Web 2 以及 Web 2 之前,有很多方法來實現身份驗證。現在的 Web 2 系統中,這些方法通常是組合使用的。例如,如果你想創建一個新的 Google 賬戶,你可能需要通過驗證碼,並且進行郵件和短信驗證。有時候,短信驗證可以替代與真人通話。如果你曾經遇到過亞馬遜賬戶被鎖定的情況,你就知道我在說什麼。基本上,這就是一個複雜的迷宮遊戲,直到你找到正確的按鈕和電話選項,最終能夠與真人客服對話。對於更復雜的防女巫攻擊,我們可能會使用像身份證或信用卡這樣的信息。
然而,當我們進入 Web 3 的世界時,我的研究並沒有發現什麼真正讓我滿意的完美解決方案。現在有一些候選方案,但它們在三個方面存在很大差異:是否去中心化、是否保護隱私,以及是否真正具備韌性(即抗攻擊能力)。
韌性正成爲一個越來越大的問題。實際上大多數系統都面臨這兩種問題。
有一個系統,我稱之爲「常見的懺悔系統」,也就是你向某個特定的權威機構泄露你的隱私,這個機構會掌握你的一些信息,而這些信息可能是你不願與他人分享的。比如,你可能會掃描你的護照並提交給某個機構,然後這個機構就掌握了所有人的護照信息,從而處於一個強勢地位,因爲他們擁有所有這些信息。常見的懺悔系統並不適合 Web3。
此外,你有時會看到一些類似 Web3 的個性化系統,它依賴於「常見的密鑰管理機構」。其中有一個擁有權力的機構,這個機構通過掌握密鑰來決定誰是合法的個體。也就是說,這個機構有權決定哪些人可以被認爲是系統中的「真實用戶」。有時候,這些機構甚至替用戶保管密鑰,但更多情況下,他們僅僅保留了決定誰是合法個體的權力。
這些都依賴於中心化的權威機構來掌控用戶的隱私或身份信息,這與 Web 3 去中心化和用戶自主的理念相悖。
把某個東西放在鏈上並不意味着它就是 Web3。你可以把 Web2 的策略或依賴中心化權威的策略簡單地移到鏈上,但這樣做並不會改變策略本身。它只意味着這個策略可能會更有韌性地執行,但策略本身仍然不是 Web3。僅僅因爲一個名字是一個很長的十六進制字符串,並不意味着它一定是私密的。如果不採取特定措施,這種字符串仍然可能與現實世界的身份信息關聯起來。
如果一個系統依賴於常見的「懺悔機制」,那它就不是一個隱私保護的解決方案。我們已經看到太多的數據泄露事件,這讓我們明白,僅僅把數據放在公司文件牆後面或某些可信硬件中是無法確保安全的。一個適合 Web3 的個性化解決方案需要的不是本地的個體身份或本地社區成員身份,而是全球性的個體身份,這兩者是完全不同的概念。
有一些系統嘗試解決這個問題,但它們依賴於單一硬件和常見的密鑰管理機構,所以並不是真正的 Web3 方案。比如,Worldcoin 這個項目嘗試通過可信硬件來解決這個問題,但它使用了一個統一的密鑰管理機構和集中化的數據源,因此不太符合 Web3 的去中心化理念。
另一個例子是 Gitcoin Passport,這在以太坊社區中使用廣泛,是其他身份和個性化解決方案的一個綜合平臺。它依賴於一個聯邦制的密鑰管理機構來認定個體身份,但這些數據源往往基於集中化的權威,包括像 CoinBase 這樣的中心化機構(CC)。
Idena,一個有趣的 Web3 解決方案,沒有常見密鑰管理機構或中心化機構。不過,它只是一種單一的機制,而且在面對不斷髮展的人工智能產業時,這種機制是否具有足夠的韌性還不明確。到目前爲止,它表現得還不錯,但用戶數量還相對較少,只有大約一千名用戶。
總的來說,目前還沒有哪種方法能夠完全解決這個問題。
Gavin 對解決女巫攻擊的看法
關於個體身份,有兩種思考方式:一種是遠程的,另一種是本地的。機器並不能天然理解「個體身份」,我們不太可能看到某種加密技術突然解決這一問題。有人可能會說,指紋或生物識別技術能夠讓人類具有獨特性,機器可以測量這些,但純數字系統很難證明這一點。可能最接近這個目標的系統是 Worldcoin,但它也只是一個機器,能夠以一種不容易被破解的方式進行驗證。
因此,我們需要理解,個體身份更多的是關於認證的問題。它涉及數字系統內的元素如何驗證其他元素是否是真實的個體。那麼,問題在於,這種認證的依據是什麼?是物理上的接觸,還是其他方面的懷疑?我們相信一個賬戶是真實的個體,因爲我們見過這個人,並且在見面時我們認爲他沒有與其他人接觸過,因此可以推斷他在特定環境中是唯一的個體,還是僅僅因爲我們在屏幕上看到了某些信息,並且有其他證據支持他的個體身份?
當我們談到遠程認證(即非直接、非物理證據的認證)時,AI(人工智能)可能會帶來一些問題。而如果我們依賴於物理證據,實際操作性又可能成爲一個問題。因此,我們在這兩個限制之間陷入了困境。不過,我認爲通過創新和想象力,我們還是能找到一些可行的解決方案。
那我們需要做什麼?
那麼,我們需要什麼?我們的計劃是什麼?
我認爲,讓 Polkadot 在現實世界中更加有用(不僅僅是在 DeFi、NFTs 和虛擬區塊鏈領域),關鍵在於找到一種簡單的方法來識別個人身份。這裏的識別並不是指確定這個人是誰,比如不是說 「我知道這是 Gavin Wood」,而是識別「這是一位獨特的個人」。我不認爲會有單一的解決方案,因此我們需要一個模塊化且可擴展的框架。
首先可以將現有的、合理的解決方案(比如 Idena)集成進去。其次,這個系統不應被某一個人的想法所限制,不應僅依賴於某個人對什麼機制可能有效的想象力。這應該在某種程度上是開放的,允許所有人貢獻解決方案。
其次,我們需要強有力的上下文化的化名(pseudonymity)。實際上,我最初寫的是匿名性(anonymity),在某種程度上我確實指的是匿名性,即與你的現實世界身份的匿名性。但與此同時,我們也希望有化名(pseudonymity),這樣在任何特定的上下文中,你不僅能夠證明自己是獨一無二的個體,而且當你再次在同一上下文中使用該系統時,能夠證明你是之前那個獨特的個體。
最後,我們需要強大的 SDK 和 API,使這個功能像 Substrate 或 Polkadot 智能合約中的任何其他功能一樣易於使用,或者在即將到來的 JAM 生態系統中也是如此。它必須易於使用。比如說,具體一點,我不知道這裏有多少編寫過 Frame 代碼的人,但在編寫新的區塊鏈時,你經常會看到一行代碼 let account = ensure_signed (origin)。這行代碼的作用是獲取交易的來源,並確認這個來源是否來自某個賬戶,如果是,則告訴我這個賬戶是什麼。但賬戶並不等同於個人,一個人可能使用一個或多個賬戶,同樣,一個腳本也可能使用一個或多個賬戶。賬戶本身無法提供任何關於個體身份的信息,至少單獨無法做到。所以,如果我們想確保某筆交易來自一個真實的人,而不是一百萬個賬戶中的某一個,我們就需要能夠將這一行代碼替換爲另一行代碼 let alias = ensure_person (origin, &b「My context」)。
有兩點好處值得注意。
第一,我們不僅僅在問這是否是一個賬戶在簽署交易,而是問是否是一個人簽署了交易。這在我們能夠實現的功能上帶來了巨大的差異。
第二,重要的是,不同的操作有不同的上下文,並且我們在這些上下文中實現了匿名性和化名保護。當上下文變化時,化名也會變化,不同上下文中的化名之間無法關聯,也無法將化名與背後的人關聯。這些完全是匿名的化名系統,這在區塊鏈開發,特別是開發現實世界中有用的系統時,成爲了一個非常重要的工具。
那麼,我們在實際識別個人身份的機制上可能會施加哪些限制呢?首先,這個機制必須是廣泛可訪問的。如果它只允許一部分人羣參與,那麼它將不會非常有用。它不應要求資產,也不應要求昂貴的費用,至少不應該是過高的費用。
不可避免地,不同機制之間會有權衡。我不認爲會有一個萬能的解決方案。但有些權衡是可以接受的,而有些則不能。韌性、去中心化和主權不應該被妥協對待,但有些機制可能需要較少的努力但更多的承諾,而其他機制則可能需要更多的努力但較少的承諾。我們應該有一個合理的預期,即通過系統驗證的個人(即鏈接到某個人的賬戶,或者說化名)背後確實是一個獨特的現實世界中的個體。
不同的機制在去中心化的 Web3 系統中以韌性和非權威基礎的方式來衡量個體身份時,可能會存在重疊。這意味着實際上我們不可能做到完美無缺,但也不應該有數量級上的誤差,差異應該大幅小於一個數量級。此外,系統必須具備極強的抵抗身份濫用的能力,以防止少數人或組織試圖獲取大量的個體身份。
至關重要的是,系統必須有保障機制來防範這種情況。可能有些機制能夠提供相對較低置信度的個體身份評分,這是一個更高的目標。有些機制可能實現這一點,有些可能無法實現,有些可能是二元的,要麼我們相信這個賬戶是一個獨特的個體,要麼我們不相信。還有些機制可能會表示我們有 50% 的把握,但也可能這個個體有兩個賬戶,而我們對這兩個賬戶的把握都是 50%。
當然,這一切必須是無需許可的,並且必須不難實現。我本不應該需要特別強調,但系統中不應有常見的懺悔機制或常見的密鑰管理機構。
這樣做有什麼好處?
那麼爲什麼要這樣做呢?有什麼好處?
我們已經討論了一些社會如何使用或依賴個體身份的方式。但這些如何在鏈上實現呢?我們可以開始想象一個不需要支付交易費用的 Polkadot 系統,也就是合理使用是免費的。想象一下一個「廣場鏈」(Plaza),如果你不熟悉的話,它基本上是一個增強版的資產中心(Asset Hub),具備智能合約功能並能夠利用質押系統。
如果我們設想這樣的廣場鏈(Plaza),可以想象一個不需要支付 gas 費用的情景。只要你在合理的使用範圍內,gas 是免費的。當然,如果你編寫腳本或進行大量交易,那麼你就需要支付費用,因爲這已經超出了普通個人的使用權利範圍。試想一下,這些系統開始免費向公衆開放,我們可以通過空投等方式,有針對性地、高效地啓動社區。同時,我們還可以設想更爲先進的 Polkadot 治理方式。
現在,我對「一人一票」的理念並不是特別信服。在某些情況下它是必要的,以確保合法性,但通常它並不會帶來特別好的結果。不過,我們可以考慮一些其他的投票方式,比如二次方投票,或者區域投票。在某些代表性的元素中,一人一票可能會非常有啓發性。
我們還可以想象一個類似於陪審團的 Oracle 系統,平行鏈和智能合約可以使用本地的次級 Oracle 系統,也許是用於價格預言,也許是用於處理用戶之間的爭議。但他們也可以說,如果需要,我們會利用一種「大陪審團」或「最高法院」的系統,從已知的隨機個體中選出成員來做出決策,幫助解決爭端,並給予一些小額報酬。由於這些成員是從一個大的、公正的羣體中隨機選出的,我們可以期望這種方式能夠提供一個有韌性、可靠的爭端解決方法。
你可以想象噪聲限制系統,特別是在社交媒體集成中的去中心化社交媒體集成,可以幫助管理垃圾信息和不良行爲。在 DeFi 中,我們可以設想類似信用評分的聲譽限制系統,但可能更注重於你是否曾被發現未按時還款,這樣系統可以提供類似於免費增值模型的服務。
好吧,這就是這次演講的第一部分,希望它對你有幫助。