rounded

演讲: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 中,我们可以设想类似信用评分的声誉限制系统,但可能更注重于你是否曾被发现未按时还款,这样系统可以提供类似于免费增值模型的服务。

 

好吧,这就是这次演讲的第一部分,希望它对你有帮助。