一个实体把资金拆到多个钱包,链上显示的持币地址数会直接乘以拆分份数——拆100个地址,持有人就虚增100倍。这件事在项目方刷数据、制造虚假热度时极其常见,你看到的"10万持币地址"很可能只是几百个真实用户反复拆分的幻象。下面直接讲清虚增机制、识别方法以及你拿到持币列表后怎样算出相对真实的人数。
为什么拆分钱包会让持有人数虚增
链上统计口径里的"持有人"或"Unique Addresses",实际上只认地址,不认人。一个项目方或巨鲸把100万枚代币平摊到500个新地址,浏览器就会报告持有者增加了500。这个数量与真实独立用户毫无关系。
虚增倍数 = 拆分出的地址总数 ÷ 独立实体的数目。极端情况下,一个实体能制造上万个"持有者",而Etherscan、BscScan等区块浏览器本身不会自动去重,统计面板上直接就膨胀了。
⚠️ 风险提醒:单一实体控制大量地址进行虚增,在很多司法管辖区可能构成市场操纵或虚假陈述。例如美国SEC曾对通过多钱包刷量的ICO项目提起诉讼,项目方主要负责人面临罚款与市场禁入。对于普通投资者,把高持币地址数等同于"社区活跃"而买入,极易买在庄家出货前夜。
步骤1:调取一份完整的持币地址列表
你需要先拿到目标代币合约的前N大持有者数据。这件事不需要写代码,用浏览器或免费API就能做。
做什么:获取当前时刻持有该代币的全部地址及余额。
怎么做:
- 情况A:在 Etherscan / BscScan 页面直接查看
打开代币合约页面 → 点击 "Holders" 标签。默认展示前10,000个地址,可翻页。若需要更多,改用API。
- 情况B:通过区块链浏览器的免费 API 拉取
以 BscScan 为例,用 token/tokenholderlist 接口。需要先注册免费 API Key。请求示例:
https://api.bscscan.com/api?module=token&action=tokenholderlist&contractaddress=&page=1&offset=10000
重复翻页直到收集齐全地址。Etherscan、PolygonScan 等类似。
完成标准:导出至少一份包含 address 和 balance 两列的 CSV 或表格,确保涵盖99%以上的总流通量地址(前十页通常覆盖绝大部分)。如果某个代币持币地址数超过10万,可能不需要全部导出;优先截取余额大于0且按持有量降序的前1-2万个地址。
常见失败原因:API 返回的字段带有科学计数法或未去零,Excel 打开时余额被截断。导入前将 balance 列设为文本格式,或用链上原始 decimal 转换为可读数量(例如 BSC 代币通常18位,除以10^18)。
步骤2:找出疑似"同一控制人"的关联地址簇
虚增过的地址列表里,大量地址具备资金溯源重复、操作时间相近、余额高度雷同等特征。
做什么:用几个维度标记可疑地址群,把同一个实体控制的几百甚至几千个地址抓出来。
怎么做:
- 追溯资金源头
在浏览器中抽查一批小持有地址(比如余额在100-1000枚之间),查看其获得代币的那笔交易。如果几十个地址的代币都来自同一个发送方钱包,并且在短时间内(几小时内)完成分发,几乎可以确定是同一控制人在拆分。
- 检查首次交互时间
如果一个地址群的所有地址都在同一天的2小时内第一次收到该代币,再结合资金同源,可以直接归为一个簇。
- 余额分布分析
把余额列表做降序排列,很多虚增方案会让"士兵地址"持有完全相等或极相近的数量,例如全是1000.00。这种机械式等额分配是机器批量生成的痕迹,自然人持仓很难如此整齐。
- 关联其他资产与行为
如果这些地址还同时持有另一种用于"刷交互"的垃圾代币,或者它们都调用了同一个未开源合约的函数,关联置信度极高。可以用区块浏览器的"Token Transfers"查看地址历史上共同接触过的合约。
完成标准:标记出若干地址簇,每个簇内的地址有清晰的同源交易或行为特征。标明每个簇的地址数量和首次分发交易哈希。
批量化处理时,可以用像 Dune Analytics 这样的平台编写查询(需基本SQL)。关于如何搭建链上监控面板,请参考《链上数据查询实战》一文。
步骤3:估算真实独立持有人数量,得出虚增倍数
拿到簇数据后,就可以去重,把簇内所有地址累加成一个"实体"。虚增倍数 = 报告持币地址数 ÷ 去重后实体数。
做什么:计算去重后的实际控制人数,对比浏览器显示的持有人数。
怎么做:
- 将步骤2中已确认的每个地址簇视为1个独立实体。
- 其余未归入任何簇的地址,若无法证明关联,暂时均视为1个实体。
- 把所有实体数量加总,得到最小独立实体数。注意,这仍然可能高估真实人数,因为还有未发现的关联以及一人多钱包的散户。
计算示例:
假设某代币显示 20,000 个持币地址。
你发现:
- 簇A(资金同源+同时接收+余额均等1000):3,500 个地址 → 计为1个实体。
- 簇B(同源分发、余额1万):1,200 个地址 → 计为1个实体。
- 其余 15,300 个地址暂时无明确关联 → 每地址暂算1个实体。
最小实体数 = 1 + 1 + 15,300 = 15,302。
虚增倍数 ≈ 20,000 ÷ 15,302 ≈ 1.3 倍。如果簇A背后是项目方自己,且还关联更多未查出的簇,实际虚增可能更高。
完成标准:输出一个去重后的实体数,以及最低虚增倍数。即便无法查出所有关联,仅把最显著的同源分发簇去除,已经能暴露数据注水程度。
常见问题
持币地址数增长一定代表虚增吗?
不一定。如果是空投/大所上新后自然扩散,地址同源情况较少,增长曲线相对平滑。如果出现一天内暴涨3000%且大量余额相等,基本可判定为人为拆分。
是不是所有等额余额都是刷的?
不是。有些代币的质押合约或分红机制会导致大量地址持有等额份额,这类地址通常与协议合约交互频繁,可通过检查其是否调用了标准质押方法辨别。虚增地址往往只收不发,没有任何其它交互。
链上浏览器显示"Holder"包含交易所和合约地址,要怎么处理?
很多浏览器已将知名交易所钱包和合约地址排除在持有者统计之外,比如Etherscan默认过滤了0x0地址和部分合约。但规则不完全透明。你可以在导出地址后,手动剔除已知的中心化交易所充值地址、销毁地址和黑洞地址,再做聚类。避免把这些地址误判为虚增。
项目方撤销虚增地址后,数据能恢复吗?
链上记录永存,原持有者计数曾经虚高的历史会被部分链上分析平台(如Nansen、CoinMarketCap的历史快照)记录下来。但主流浏览器只显示当前状态。你如果需要历史数据,可在Dune上查询特定区块高度的余额表,重建过去某一时刻的真实持有人。
操作结束后的核验方式:打开你刚刚分析的代币页面,用浏览器查看"Holders"标签的地址列表,随机抽取10个地址,逐一核对它们的首笔接收交易。如果其中超过7个都来源于你标记的同一个分发地址,你做的簇划分就是成立的。整个聚类分析,熟练后对一个代币完成初筛约需30分钟,可自行判断该标的的"持有人数"含金量。



