berwinYes

Posted on Nov 20, 2022Read on Mirror.xyz

Gitcoin女巫检测方案Top1解读及思考

GITCOIN在两个月前举办了 OpenData 社区黑客马拉松!其中公布了三个重点领域,分别是:

女巫检测、捐款激励措施优化分析、Dune高效分析,其结果也于近日公布

相信大家最关心的应该是女巫问题,因为今年在OP和APT的刺激下,出现了人人羡慕撸毛党,人人皆是撸毛党的盛况。

今天对女巫检测的第一名开源方案结合自身理解,进行技术向的解读,并在文末给出自己对于女巫检测的一些个人思考。相信看完这篇文章,无论是项目方还是交互者都能有所收获。

注:本文不代表官方观点,仅为个人兴趣解读。

剧透,本文较长,涉及很多技术分析,没耐心的可以直接跳转文末浏览本文总结与个人思考。

由于出题者是gitcoin,其主要交互场景为捐赠。但内在逻辑在其他的场景下同样适用(transfer、mint等动作),以下将与项目方进行交互的操作统称为项目交互。

方案一:批量转移和交互

女巫攻击本质上是用户将资金分散到多个地址,操纵这些地址与项目方合约进行交互的过程。

那么在这个过程中则可以将整个过程拆分两个部分,分别是 批量资金转移和合约批量交互。

1.1 批量转账检测

选择数据

批量转账最简单的就是通过智能合约的方式进行,因为节约gas费用。所以作者利用工具提取与项目方合约有过关联且链上具有批量转账操作的tx_hash。

设计指标

风险计算

作者采集了18926个贡献者地址与批量转账有关。 将风险性压缩到0-13分,经过分析归纳得到

辅助判断手段

1、如果一个地址使用以下dapp,即使分数不高,也应该注意,是sybil的一个重要信号。

2、交互地址在其他平台存在可疑批量操作 如opensea element Looksrare等

1.2 批量交互检测

女巫假设

  • 为了简单,交互数额相同

  • 为了经济,交互数额尽量小

  • 为了方便,使用脚本/工具,使用相同的参数设置进行 交互,如链ID、链层、令牌、数量

  • 为了统一,以一种顺序的方式交互,非常紧密

交互地址分组及指标计算

7个指标值转化女巫风险得分如下图:

女巫结果展示

方案二:行为序列模式挖掘

用户行为序列即用户交互时按执行时间顺序的事件集合。该检测主要针对于群控玩家。

相似性定义

两个钱包Addr的行为序列分别为s1= {a1,a2,a3,...,an},s2={b1,b2,b3,...,bm}

相似度Sim(s1,s2)=1的条件为:

  • s1的长度=s2的长度,即 n=m

  • 对于每一对动作 ai,bi,它们是相同的,只有可以忽略的时间差异。

作者认为将来可以尝试使用更复杂的指标。

相似性筛选

作者代码中将行为序列长度≥3,相似度为1,且地址集合数量≥5个的Addr认定为女巫。

相似性聚类

作者还尝试了通过AI的聚类方法进行相似度计算。

方案三:资产转移图(ATG)

删除交易所地址和合约地址,只留下EOA类型Addr和项目方地址作为构图节点,ETH、DAI、USDC、USDT流向作为边,构建有向图。

寻找寻找链式结构和钻石结构。

链式结构:即从第一个EOA地址出发,每次资金转移到另一个EOA地址,操纵该EOA地址进行一次项目方合约地址交互,剩余资金转移到下一个EOA地址,循环该过程,直到资金转移到最后一个EOA地址。

钻石结构:这个更为常见,一个EOA将资金分散给其他EOA地址,进行项目交互。

项目总结

女巫的行为,总结下来两个特征:批量性、同一性

无论是利用同步器多开,还是批量化脚本操作,都无法逃脱这两种性质。

所以在反女巫分析时,多数项目方和分析师也是顺着这两种方法进行查找,但是在个别参数阈值的选择和使用AI或者链路分析的范围上互有差别。

另外,项目方还掌握着链上不会记录的信息,即IP和指纹这两个大特征。与此同时,现在项目方尽量从源头上去规避这些问题,例如更为严格的测试代币发放,利用twitter和dc进行机器人过滤和严格的KYC认证。毕竟项目方都想把空投发给真实用户

但是虽然升级了反制措施,但是女巫仍旧层出不穷,毕竟空投的真金白银可太香了,反女巫检测并不是一成不变,而是动态升级的,毕竟女巫们在金钱面前,技术迭代绝对是更快的那个。

写在最后

写了那么多女巫检测的方法,也想站在一个希望拿到空投的参与者角度来谈谈如何避免自己成为项目方眼中的女巫:

  • 交互资金不交叉,即不要出现上文中资金的链式或者钻石型,可视化一下资金链路,一清二楚,EigenTx或者其他插件直接一键生成,检测成本几乎为0;

  • IP与指纹的重要性,对于部分项目方而言,是最稳妥和省时的过滤手段之一;

  • 不要使用几个相同的钱包多次批量交互不同的项目,链上信息永久保存,你的钱包之前做过什么,任何人都看得到

  • 不要为了空投而空投,你的钱包多去参与其他活动,例如银河任务,alphabot的NFT抽奖,要让项目方相信你的项目经历够丰富,认为你就是他们空投的必要目标,不给你空投,都是他们的损失那种;

  • 保持平常心,空投是项目方的馈赠而不是项目方的义务,希望大家别 做任务时笑开颜,最后RNM退钱。

希望每个项目参与者能有所收获,每个项目方都能熬过牛熊。毕竟2022,太多不可能颠覆了我们的认知。量力而为,切勿上头。

这里是coolberwin的Mirror,创作不易,希望看完顺手关注我的Twitter,感激不尽。

https://twitter.com/coolberwin_eth

参考资料:Trusta Lab官方资料汇总github链接

https://github.com/0x9simon/slaysybil

作者及团队

https://twitter.com/csctgrace

https://twitter.com/TrustaLabs