多钱包管理与关联风险:女巫检测怎么做的
女巫检测的本质是图聚类:把地址当节点、资金流与行为相似度当边,把连成一团的地址整批判定为同一实体。理解这套逻辑的用途是评估自己的风险敞口,而不是获得通过筛选的方法——完全规避在数学上不可能,因为「行为过于独特」本身也是一种特征。
本文要点
- 资金来源同源是最强的关联证据,一次中转就足以把整组地址连成一个簇。
- 操作时序、交互路径、Gas 价格设置构成行为指纹,多个弱特征叠加即形成强判定。
- 检测方在图上做整批处置:一个地址被认定,同簇地址通常一并排除。
- 理解规则只能帮你评估风险大小,不能保证通过筛选,也不能保证项目会发币。
- 完全规避不可能:既要避开常见模式,又要避开「刻意规避」留下的异常痕迹。
先理解检测方的目标函数
项目方做女巫检测不是为了追求准确率,而是为了在有限预算下把代币分给更可能长期留存的用户。这个目标决定了检测的三个性质,而这三个性质直接影响你的风险评估。
第一,它偏向宁可错杀。漏掉一个真实用户的成本对项目方来说很低,多分给一个女巫的成本则直接损害代币分配质量。所以判定阈值通常设得比你预期的更松,误伤是设计的一部分而非缺陷。
第二,它按簇处置而不是按地址处置。检测方构建的是一张关系图,一旦某个簇被标记,整簇一起排除。这意味着你的风险不是每个钱包独立的,而是高度相关的——一个钱包出问题,可能全部归零。
第三,规则事后公布且可以改。多数项目在发放前才说明筛选标准,有些甚至完全不公布。这让「针对规则优化」在逻辑上不成立:你在优化一个未知的、可变的目标函数。
关联特征逐项拆解
检测用到的特征可以分为四类:资金图、网络环境、行为时序、交互模式。它们的证据强度差异很大,下面这张表按强度排序。
| 特征类别 | 具体表现 | 风险等级 | 检测难度(对检测方) | 说明 |
|---|---|---|---|---|
| 资金同源 | 多个地址的初始资金来自同一个地址或同一次提币 | 极高 | 极低(链上公开可查) | 单条即可判定,无需其他证据 |
| 资金归集 | 多个地址最终把资产转到同一地址 | 极高 | 极低 | 常见于收币后归集,事后暴露整簇 |
| 互相转账 | 钱包之间直接或经一跳互转 | 极高 | 极低 | 等于自己画出了关系图 |
| 交易所同账户 | 多个地址从同一交易所账户提币,或提币金额时间高度接近 | 高 | 中(交易所侧数据) | 部分项目与交易所有数据配合 |
| 同 IP / 同设备 | 同一出口 IP 或同一浏览器指纹操作多个钱包 | 高 | 中(需前端埋点) | 对有前端交互的项目适用 |
| 操作时序聚集 | 多个地址在几分钟内完成相同操作,或每天固定时刻活跃 | 中高 | 低 | 叠加其他弱特征后成为强证据 |
| 交互路径相同 | 相同的合约调用顺序、相同的金额、相同的滑点设置 | 中高 | 低 | 脚本批量操作的典型痕迹 |
| Gas 价格模式 | 相同的自定义 Gas 上限或相同的非默认小费设置 | 中 | 低 | 指纹性很强,几乎无人注意 |
| 金额指纹 | 总是使用相同的整数金额或相同小数尾数 | 中 | 低 | 手动操作也会留下这类习惯 |
| 余额行为一致 | 同时清空、同时补仓、同时停止活动 | 中 | 低 | 生命周期同步是明显的簇特征 |
读这张表要注意「检测难度」这一列。资金图相关的特征对检测方几乎零成本——链上数据完全公开,一条 SQL 就能跑出资金同源的地址簇。而多数人的注意力放在 IP 和设备指纹上,那反而是检测方最难拿到的数据。防护重点和实际风险来源经常是错位的。
另一个要点是弱特征的叠加效应。单看「每天晚上 11 点活跃」不能说明什么,但「每天晚上 11 点活跃 + 相同的合约调用顺序 + 相同的 Gas 上限 + 余额同时归零」四项叠加,在统计上已经足以形成高置信度判定。检测方用的通常是打分模型而非单条规则,所以每个弱特征都在累加分值。
资金来源隔离:唯一真正有效的部分
如果只做一件事,就做资金来源隔离。原因在上一节已经说清:资金图是检测成本最低、证据强度最高的一类特征。而它也是唯一可以在事前彻底处理的部分——行为指纹可以减弱但难以消除,资金图则要么干净要么不干净。
隔离的核心原则是每个地址的资金历史不与其他地址在任何跳数内相交。注意「任何跳数」:通过一个中间地址分发资金不叫隔离,只是把关系推后了一跳,图聚类算法会照样把它们连在一起。多跳中转同理,只是让图变大了一点。
同样重要的是出口。很多人在入口做了隔离,收到代币后却全部归集到一个地址卖出——这在事后把整簇关系完整暴露,而且是在最糟糕的时点:项目方通常会持续监控发放后的资金流向,用于后续轮次的筛选和追溯。
| 项目 | 做法 | 常见错误 | 残留风险 |
|---|---|---|---|
| 入口资金 | 每个地址的资金来自独立来源,互不交叉 | 从同一交易所账户批量提币 | 交易所侧仍可关联 |
| 中转 | 不使用任何共享的中转地址 | 用一个「分发钱包」给所有地址打款 | 一跳即成簇,等同于无隔离 |
| 地址间转账 | 任何情况下不互转 | 缺 Gas 时临时从另一钱包补一笔 | 单笔即建立永久链上证据 |
| Gas 补充 | 各自独立获取,不共用来源 | 统一从一个地址补 Gas | 与中转同等风险 |
| 出口归集 | 分散、错时、经不同路径处理 | 收币后立刻全部转到一处 | 事后暴露整簇,影响后续轮次 |
| 网络环境 | 不同网络出口,不共用浏览器配置 | 同一浏览器切换钱包插件 | 指纹与 IP 双重关联 |
| 操作时间 | 分散在不同时段,间隔不规则 | 脚本按固定间隔批量执行 | 时序聚集,弱特征累加 |
| 交互内容 | 各地址的路径、金额、深度自然不同 | 所有地址执行完全相同的脚本 | 路径指纹,强度接近资金同源 |
| 生命周期 | 起止时间不同,活跃强度不同 | 同一天全部创建、同一天全部停止 | 簇边界清晰,极易识别 |
这份清单越往下越难做到,也越容易被放弃。但注意「交互内容」那一行的风险强度:完全相同的脚本执行痕迹,其判定强度接近资金同源。这是自动化撸毛最本质的矛盾——脚本的价值在于批量执行相同操作,而批量执行相同操作正是最容易被识别的特征。脚本安全与行为设计的取舍在交互脚本自动化里有单独讨论。
为什么完全规避不可能
这一节是全文的核心结论。假设你把上面所有清单都做到了极致,风险依然无法归零,原因有三个,且都是结构性的。
第一,「过于独特」本身是特征。真实用户的行为分布有它的统计特征:大部分人用默认 Gas、在少数几个常见时段活跃、操作路径集中在几种主流方式。如果你的地址每一项都刻意避开常见模式,你就落在了分布的尾部,而尾部同样是可检测的。检测模型识别的是「不像真实用户分布」,不是「像其他女巫」。
第二,规则未知且可变。你无法针对一个未公布的评分模型优化。项目方甚至可能在发放前引入你完全没想到的维度(例如与某个历史事件的地址交集、某类资产的持仓时长)。任何「我做到了 X 所以安全」的推论都缺少前提。
第三,判定是相对的而非绝对的。多数项目的做法是排序取前 N,而不是设一个固定通过线。这意味着即使你的行为完全正常,只要参与人数增加、整体交互深度提高,你的相对位置就会下降。你的通过与否依赖于其他人做了什么,这部分完全不在你的控制范围内。
把它当成风险定价问题
既然无法消除风险,正确的处理方式是给它定价,然后把这个价格放进期望值测算。做法是在期望值公式里给达标概率乘一个折扣系数。
折扣怎么估?按你实际做到的隔离程度分档。资金图完全干净、行为自然、单钱包操作,折扣很小;资金同源或使用统一脚本批量操作,折扣可能达到 50% 以上甚至接近全损。关键是这个折扣要显式写进测算,而不是留在心里当成「应该没事」。
这个视角还会改变钱包数量的选择。加一个钱包带来的边际收益是「一份可能的份额」,边际成本除了真实花费之外,还包括它对整簇关联风险的提升——后者作用在你已有的所有钱包上。这个负外部性使最优钱包数远小于纯成本计算的结果。完整的成本与期望值框架见撸毛路线图。
- 按上面的特征表逐项自查,给每个钱包打一个隔离质量分。
- 把隔离质量映射为达标概率的折扣系数(例如 0.9 / 0.6 / 0.3)。
- 把折扣后的概率代入期望值公式,重算 EV。
- 若 EV 转负,减少钱包数量并把资源集中到隔离质量最高的几个上。
- 记录每次的判定结果,用实际数据校准你的折扣系数。
一个更根本的问题
值得退一步问:如果多钱包的期望值在计入关联风险后经常为负,为什么它仍然如此流行?
一部分原因是生存者偏差。成功案例被广泛传播,失败案例(投入数月、几十个钱包全部被排除)通常不会有人写出来。这让参与者接触到的样本分布严重偏离真实分布,从而系统性高估通过率。
另一部分原因是成本被低估。多钱包的边际成本感受上很小(多付点 Gas 而已),但真实成本包含了摊薄的交互深度、成倍的时间、以及施加在整簇上的关联风险。当分母被低估时,任何做法看起来都划算。
所以更实际的结论是:把精力放在项目筛选上,回报通常高于放在钱包数量上。筛掉一个期望值为负的项目,节省的是全部成本;多加一个钱包,增加的是成本和相关风险。哪种项目不值得做,可以参考空投预期管理里的筛选评分方法。
常见问题
用不同的交易所提币到不同地址,算做到资金隔离了吗?
比同一账户批量提币好,但并不彻底。链上层面确实不同源,可是每个交易所账户通常都绑定了同一个人的身份信息,若项目方与交易所有数据配合,这层隔离就失效了。此外提币的时间与金额若高度接近,仍构成时序与金额指纹。资金隔离能降低最强的一类证据,但不能理解为安全。
行为随机化能有效降低被判定的概率吗?
能降低部分风险,但存在上限且可能反向。随机化确实能打散时序聚集和金额指纹这类弱特征。问题是真实用户的行为并不是均匀随机的,而是有明显的习惯性聚集;如果你的地址在每个维度上都呈现完美随机,这本身就偏离了真实用户分布。目标应该是「像一个真实用户」,而不是「尽可能随机」,而前者难以用脚本实现。
被判定为女巫会有除了拿不到空投之外的后果吗?
视项目与平台而定。多数情况下后果就是排除在本次发放之外,但也存在其他可能:被列入黑名单影响后续轮次、在中心化平台上违反服务条款导致账号受限、关联地址在其他项目的筛选中被一并参考(部分女巫名单是公开的且被复用)。因此把风险按单个项目的单次损失来估算,可能低估了实际影响范围。
单钱包认真交互,是不是比多钱包更好的选择?
在计入关联风险和时间成本后,单钱包深度交互往往具有更好的风险调整后期望值:没有整簇归零的风险,交互深度最大,时间成本最低,隔离质量天然最高。它的代价是份额上限较低。这本质上是集中与分散的权衡,但由于多钱包的失败是高度相关的,它并不提供真正的分散化效果。无论选哪种,都不保证发币。