什么是女巫攻击?
Sybil Attack,中文翻译成“女巫攻击”。
Sybil 一词最早出自 1973 年的小说《Sybil》,这本小说讲的是女主 Sybil Dorsett 进行心理治疗的故事。她被诊断为分离性身份认同障碍,兼具 16 种人格。
而 Sybil Attack 这个词是由 John R. Douceur 在 2002 年提出的,用于形容 P2P 网络中的一种特定攻击形式。在 P2P 网络中,节点可以随时加入和退出,所以为了维护网络的稳定,同一份数据需要备份到多个分布式节点上,这就是数据冗余机制。如果网络中存在一个恶意节点,那么这个恶意节点就可以伪装成多重身份,如同小说中的女主可以分裂出 16 个人格。原来需要备份到多个节点的数据被欺骗地备份到了同一个恶意节点,这样一来作恶的节点,就有可能掌握网络的控制权。
简单讲,一人化身为多人,这就是女巫攻击的本质。
在空投领域,所谓女巫攻击,就是指一个“肉身”控制了多个链上地址,伪装成不同用户进行交互的行为。
对于项目方来说,女巫的行为其实破坏了项目去中心化的过程,所以在空投发放的过程中项目方可能会主动筛查女巫,或者由社区举报,从而取消其空投资格。
项目方怎么查女巫?
首先我们要明确一点,项目方查女巫是很耗费时间和精力的,这并不是一件容易的事情。而过往查到的女巫行为很大一部分其实是来自于社区的举报。
比如跨链桥 Hop Protocol 就发动社区「举报 to earn」,举报者将会获得女巫地址被罚没空投代币的 25% ,最初 Hop 符合空投条件的有 43, 058 个地址,后来因社区举报有 10, 253 个地址被认定为女巫,取消了空投资格。同样在 Optimism 的第一轮空投中,社区也主动举报了 1.7 万个女巫地址,导致最后 1400 万个 $OP 代币被重新分配。
Optimism 并没有公开社区举报的详细信息,以及他们的判断标准。所以下面我们就从 Hop Protocol 具体的提案中,看看究竟哪些行为被查到或者说被举报了。
Hop 举报提案:https://github.com/hop-protocol/hop-airdrop/issues
案例一:
https://github.com/hop-protocol/hop-airdrop/issues/3
该用户在使用完 Hop 之后,在 Arbitrum 网络上归集资金,将 471 个地址的所有资金都转移到了同一地址。
案例二:
https://github.com/hop-protocol/hop-airdrop/issues/163
最中心的地址将 MATIC 分发给蓝色的地址,接着蓝色地址再将资金转移到绿色地址,最后绿色地址进行 Hop 交互从而拿到了空投。(相当于资金做了二级关联,但是依然被判定为女巫)
案例三:
https://github.com/hop-protocol/hop-airdrop/issues/367
地址之间的转账显然更加复杂,但是依然属于资金关联从而被判定为女巫。这个案例还有一点值得一提,举报者是在社区成员讨论交互策略的时候,发现了几个地址,然后着手深挖了这一系列的资金关系。这个事情告诉我们尽量不要公开自己的地址,埋伏空投别张扬。
案例四:
https://github.com/hop-protocol/hop-airdrop/issues/592
这 158 个地址在 Optimism 和 Arbitrum 上有完全类似的活动,并且他们在 Fantom、Gnosis 和 Polygon 链上的所有的交易都在一天内完成,并且这之后就没有任何交易记录了。
案例五:
https://github.com/hop-protocol/hop-airdrop/issues/9
这 25 个地址之间存在关联性,并且这 25 个地址都在同一段时间内在 Arbitrum 上铸造了同一个 NFT,同样的所有地址又在同一段时间内铸造了 Uniswap V3 LP NFT。并且在 Snapshot 上面的 Arbitrum Odyssey 的所有投票中,这些地址投票选项一模一样。并且每次都是由下图最中间深色的地址最先操作。
翻看 Hop 社区举报的案例,被判定为女巫的主要就是以下两种行为👇
多个钱包之间存在资金关联
短时间内大量钱包进行类似的操作
埋伏空投如何避免“被女巫”?
1、不要在链上进行资金分发/归集,用交易所代替
避免钱包之间的关联,这一点最最最最最重要。而相比于使用混币等方法掩盖钱包之间的转账关系,交易所才是最好的解决方案。
从交易所提币,资金都是从交易所几个固定的热钱包转出的。而交易所的热钱包每天都有大量的转账行为,所以没有人会从这里去查女巫,难度系数太大了。
但是向交易所充币就得注意了,比如我打算把 Optimism 网络的 ETH 充值回交易所,但是我币安的充值地址就是固定的一个,而我链上有 30 个钱包的资金需要归集。这里我肯定不能把 30 个钱包的币都打到这一个充值地址,因为这样就成了“多对一”的关系,会被怀疑是女巫攻击。
那么该如何解决呢?如果我有 30 个币安账户,有 30 个充值地址,那当然可以。不过使用 OKX 进行资金的汇集显然会更加方便。
因为 OKX 有一个功能非常好用,每一个主账户可以生成 20 个充值地址,如果你觉得不够用,那就开通子账户,每个账号最多开通 20 个子账户。也就是说你开通一个 OKX 的账号,最多可以拥有 21* 20 = 420 个不同的充值地址。(关于 OKX 具体的操作,放在文末了)
2、避免短时间集中的批量行为,做到操作的随机化
所谓的随机化,包括两方面
交互方面:交互时间随机化;交互金额随机化;交互路线随机化
钱包方面:钱包创建时间随机化;资金转账随机化;ENS 取名随机化
比如像 Optimism Quests (俗称 OP 奥德赛),你打算撸 50 个账号,你在操作的时候除了要避免资金关联,在实际交互的时候也可以稍微注意一下:尽量不要在短时间内集中转账/做任务,偶尔打乱任务的顺序……
总之,如果你是纯手工操作的话,基本是可以规避这些问题的。批量化的行为大部分是靠程序去操控的。
3、低调,不要公开自己的地址
撸空投这件事儿当然需要“伙伴”,因为这是一件枯燥的事情,伙伴之间互相监督互相打气很有必要。但是这也是私底下的事儿,千万不要在公开场合高调讨论自己的交互,更不要去曝光自己的地址。
就如同前面 Hop 的案例三,不小心公开了自己的地址,就有人去挖他的链上操作,只要被人抓到把柄,人家反手就是一个举报。
4、其它
其它我们可以做的就是尽可能丰富自己的链上行为,比如注册 ENS 域名,平时多参与 snapshot 投票,参与 gitcoin 捐赠…… 总之就是让你的账号像一个真人。
不过最后还是想说,大家在多账号进行交互的时候,也不需要过于小心翼翼。
比如关于 IP 的问题,过往发空投的项目其实很少有查 IP 的,除非是一些免费撸的,或者像 gamefi、元宇宙类的可能会查。另外,少数几个账号存在资金关联,比如四五个账号之间有互转,其实也没大问题的。