关于Arbitrum 空投反女巫规则,虽不算漏洞,但远未及格——对X-explore分析报告的再分析
Arbitrum于上周四宣布空投计划,各种社交媒体又一次迎来高潮,此次空投涉及到的地址之广,价值之高,可以说是近年之最,有人一波自由,有人懊悔不已,又一次激发了撸毛党的热情。
然而昨天下午,X-explore和吴说区块链共同发表了一篇针对Arbitrum空投分析的文章,指出空投规则存在巨大漏洞,引得web3媒体纷纷转发扩散。
作为一个Arbitrum空投数量为0的旁观者,我好奇到底Arbitrum的反女巫规则到底有多大的漏洞,但当我打开报告阅读后,发现文章所表达的并没有新闻标题那么夸大,不至于是漏洞,本人更倾向于项目方并没有对女巫规则深入研究,从开始算法选型到策略构建再到结果分析,未展现出其作为L2龙头的实力。
X-explore对Arbitrum 空投高级分析链接 👇🏻👇🏻👇🏻
https://mirror.xyz/x-explore.eth/AFroG11e24I6S1oDvTitNdQSDh8lN5bz9VZAink8lZ4
文章总结下来五点:
空投账号中不仅有EOA账户,还包括合约账户
对小规模团伙(地址数量< 20)无任何识别操作
在检测女巫地址时排除了跨链桥、中心化交易所和智能合约
仅使用 2023 年 2 月 6 日之前的快照数据检测女巫地址, 而不关注公布空投后的地址间关联关系
只有来自 Arbitrum 和以太坊的数据被用于检测女巫地址,却忽略了来自其他以太坊 L2 的数据,例如 Optimism 和 Polygon
个人认为 除了第1点的问题项目方犯了非常低级的错误外,对项目方而言,其他结论不能说是漏洞,更像是一种方案的待优化点或是考虑上的不周。
注:本文所分析来源均为网络公开资料
序:官方采用的聚类算法介绍
在分析结论之前,需要向大家科普一下Louvain 社区检测算法,是聚类算法中的经典算法之一, 一般是针对于检测/提取大型网络的社区结构。它是一种基于模块度优化的启发式方法,2008年被提出的[1],被各大web2公司广泛用于风控领域。
其主要原理是针对网络中的每个点计算一个叫模块度的指标值,再计算与他相邻所有点模块度差值记做模块度增益,不断合并模块度增益较大的相邻点成为同一社群,直到满足算法设定的阈值,生成聚类结果。
更具体原理分析可以阅读 参考文献[2][3][4]给出地址。这里不再赘述。
算法中的点对应对应链上的EOA地址,边则代表着交互关系。同一社群即为项目方眼中的Sybil。
模块度增益越大,说明2点之间关系越紧密,同一社区可能性越高;模块度增益越小,同一社群的可能性越低。
由于是启发式算法,即无标注好数据可以检查算法准确性与否,需要项目方人员根据经验设定大量阈值,这些阈值的会极大影响算法最终结果,即女巫名单。
1、对小规模团伙(地址数量< 20)无任何识别
在 Arbitrum官方空投规则 里举出的规则中,已经说明使用 Louvain 社区检测算法 设定社群中超过20个地址的判定为女巫。也就是说,20个地址以下则会被视作正常用户。
20 作为一个项目方设定的正常用户和女巫的分界阈值,正如原理中所介绍,阈值设定是由项目方工程师决定,在设置中的具体考量与说明,官方并没有公布。
也正如X-explore分析所说,由于Arbitum将20个地址以下社群视作正常用户不做任何处理,20个地址以下可能存在女巫的问题,直接被无视,统统放行。
但是这并不属于漏洞,而是项目方如何界定女巫与正常用户,并且在已界定框架之下,更深层次的优化框架内的模糊情况与判定机制问题。
2、在检测女巫地址时排除了跨链桥、中心化交易所和智能合约
项目方将跨链桥 中心化交易所 与智能合约排除在检测之外,本质是选择Louvain算法后做出妥协的结果,因为跨链桥 中心化交易所 与部分智能合约 会直接导致聚类算法被影响和干扰,如果添加后,最终的结果可能会导致大量错误识别规则。
为什么这么说呢?
我们可以把CEX类比为生活中的支付宝,在现实生活中,同一时刻向支付宝转入转出相同金额的人不计其数,可能在我用账号a转入支付宝5块钱的同时,有1w个账户从支付宝消费/转出5块钱。想通过金额或者时间上同一性信息去判断,账号a和那1w个账号背后是否是同一个人,这是不现实的,还需要更多行为信息去辅助。毕竟CEX使用者中正常用户相比于女巫而言,量级差别过大。
很不幸,基础的Louvain算法只用到了金额和转账方向信息,这就导致该算法天生对于超级节点的误判性过大。
而且Louvain是非时序性的,连时间上的同一性都无法考虑(不能要求15年前的方法适应当下的复杂情况)。交易所,跨链桥,和部分正常合约(NFT、DEX等等)都涉及到极大数量的账户交互,故不适用于Louvain算法。
如果对上面的话理解还有疑惑,下面依据算法计算公式给出例子证明:
△Q是上文所说的模块度增益,两点间增益越大且为正值,同属一个社区可能性越高;反之可能性越小;模块度为负值,不属于同社区。模块度越大分群质量越高。
下图为一个简单的利用Louvain进行社区合并的例子,其中只截取部分子图,且网络中初始链路总权重为120。
可以看出当图中出现中心化交易所时,与之相连的节点过多,假设B和C均为正常地址且只与中心化交易所相连。
如果删除中心化交易所节点,则BC点永远不会被话归为同组,视为正常EOA
当保留中心化交易所时,ABC会在迭代2次后归为同组,得到BC同组,视为可疑女巫地址
与此同时,算法O(n²)的复杂度也会导致过高的计算成本。删除 CEX 、Bridge与合约地址,个人臆测也会降低计算复杂度,提升计算效率。此次参与arb的地址共100w+,最终获得空投地址超过62w。
3、仅使用 2023 年 2 月 6 日之前的快照数据检测女巫地址, 而不关注公布空投后的地址间关联关系
公布快照后的继续监控后续地址,不得不提始作俑者 HOP空投女巫举报 (网友戏称 举报to earn)[5],通过给予奖励给举报者的方式来减少女巫影响,随后不久OP官方也采用了这种方式。
“让英雄查英雄,好汉去查好汉”——《大明王朝1566 嘉靖》
虽然此种方法对于项目方是一个稳赚不赔的买卖,毕竟个人的力量是有限的,集体的力量是无穷的。与此同时圈内互相间的信任感逐渐消失,空投用户从分享喜悦变得沉默噤声,引起了圈内多数人对于此种方式的不满。
与此同时,圈内一部分脑瓜活泛的科学家们,发现了商机——“恶意投毒”,批量对空投用户进行小规模转账操作,使得彼此无关联关系的地址间产生关联。并以此记录举报得奖励。
当然这次Arb空投也不例外:
例如 这个钱包,被网友分析为投毒者,投毒对象见的用户行为看起来没有相似性,不大可能是女巫地址。
https://twitter.com/0xPeche/status/1637639563743985665
项目方如果继续进行女巫检查,那么如何在空投公布后,有效区分投毒者和正常用户?或许这才摆在他们面前最头疼的问题。
4、X-explore分析报告与Arbitrum女巫检测的思考
X-explore 针对这62w地址使用了自己内部的模型二次分析,成功识别了超过 279,328 个同人地址和 148,595 个收到空投的 Sybil 地址。
X-explore的整体分析报告逻辑清晰且简单易懂,举例完全符合Sybil定义,且挖掘出大量被项目方忽略的地址。
但与其说是项目方存在漏洞,不如说项目方对于女巫的防范研究不如X-explore透彻,采用的算法也有些过时(可能有内部优化,这里只针对于基础版本),很多边界条件,特殊地址没有进一步处理。
X-explore作为优秀的Blockchain Bulider,利用更加优质的自研模型,将空投地址结果再次优化,引入更多指标,从更深层次挖掘女巫地址,并给出验证结果。更像是在项目方结果上的一次打补丁,有助于项目方将空投发给更正确的用户。
作为L2赛道的头部明星,估值前5的公链,项目方对于女巫的检测方法。可能还没有一些小项目方思考的全面(可能Arbitrum项目方把精力更多放在公链建设上)。个人认为此次的反女巫策略远未及格。
虽然使用的Louvain社区发现算法能识别出部分女巫,但是正如上文所论述,以X-explore的分析报告所描述的数量,**女巫攻击地址约获得 2.53 亿枚 ARB,占空投代币总数的 21.8%**。不论是对项目方还是正常用户而言,影响还是很大的。甚至出现空投给合约地址这种哭笑不得的操作。
最后,还是想有感而发一下:
链上数据分析发展迅猛,撸毛也越来越难,CEX和跨链桥或许现阶段来说是最好的分发方法,但是说不准以后也会被抓
项目方查女巫方法不相同也不互通,可能这次被标记但下次被空投,但还需注意地址的隔离
空投的分配可能大户(工作室)和散户之间的差距越拉越大,毕竟无论是资金还是技术储备简直是降维打击
博空投还是得真金白银下本钱,大家还是应该更关注主网类项目,测试网除了节点类外别再花太多精力
还得多参与,参与可能没有,不参与肯定没有呀
参考资料:
[1] Fast unfolding of communities in large networks
[2] Louvain算法介绍
[4] 关联网络在度小满风控中的应用
[6]超62万地址获得空投,详解Arbitrum空投数据和防女巫策略
本人twitter: https://twitter.com/coolberwin_eth