首页>博客>行业科普>链上地址聚类——图数据库如何从匿名地址中发现实体身份?
链上地址聚类——图数据库如何从匿名地址中发现实体身份?

某 Web3 安全团队在追踪一起 DeFi 盗窃案时面对这样一个困境:攻击者将盗取的 8000 万美元分散转入了 300 个不同的钱包地址,然后通过混币器、跨链桥、场外交易等手段层层洗白。安全团队拿到的是 300 个看似毫无关联的链上地址——每个地址的转账记录都是独立的,链上身份是匿名的,没有任何一个地址直接绑定了 KYC 信息。但安全团队知道,这 300 个地址背后大概率是同一个实体(或同一个犯罪团伙)控制——因为它们的资金流向、操作时间、交互合约存在微妙的关联。问题是,如何从 300 个匿名地址中发现"它们属于同一个实体"这个事实?传统的关系型数据库可以把每条转账记录存为一张表的行,但无法回答"这 300 个地址的转账行为模式有多相似、它们是否共享过资金来源、是否在同一个时间窗口内与同一个合约交互"这类关系密集型问题。
链上地址聚类的本质是一个图聚类问题——地址是节点,转账是边,行为模式相似性是边的权重,实体识别是图上的社群发现。在以太坊上,每天新增 50-100 万个活跃地址、数百万笔转账交易,累计地址数已超过 2.6 亿。在这个规模的地址海洋中,把属于同一个实体的地址聚类到一起,相当于在一个 2.6 亿节点的图上做社群发现——这对图数据库的存储规模、查询性能和算法能力都提出了极致要求。链上地址不是孤立的字符串,而是图上的节点;转账不是独立的记录,而是图上的边;实体身份不是一个地址的属性,而是一簇地址的拓扑结构——图数据库是链上地址聚类的原生计算引擎。
一、链上地址聚类为什么是图问题
要理解图数据库为什么是地址聚类的核心引擎,需要先拆解"地址聚类"的数据本质——它不是一组地址列表的去重,而是一张交易图上的社群发现。
传统地址归集的逻辑是"规则匹配"。 区块链浏览器(如 Etherscan)的地址标签系统采用人工标注 + 规则匹配的方式——已知交易所的热钱包地址打上"Binance"标签,已知攻击者的地址打上"Exploiter"标签。当新地址出现时,系统检查它是否与已标注地址有直接转账关系——如果有,则继承标签。这种方式的覆盖率极低——以太坊 2.6 亿地址中,有明确标签的不超过 5%。剩下 95% 的地址是"暗地址"——没有标签,没有 KYC,只有链上转账记录。规则匹配只能处理"已知实体的新地址",无法处理"完全未知的实体"。
地址聚类的数据结构是交易图上的社群。 区块链的本质是一张有向图——地址是节点,转账是边,边携带金额、时间戳、代币类型等属性。同一个实体控制的多个地址在交易图上会形成"地址簇"——簇内地址之间资金流动密集(同一实体的地址互相转账),簇间地址资金流动稀疏(不同实体的地址直接交互少)。更关键的是,同一实体的地址会共享一些行为特征——同一时间窗口内与相同的 DeFi 合约交互、资金来源相同(从同一个充值地址转入)、操作时间模式一致(都在 UTC+8 工作时间活跃)。这些特征在交易图上表现为拓扑结构——地址簇是一个密集子图,实体识别就是在全图上找到这些密集子图。这是经典的图社群发现问题——不是规则匹配能解决的。
| 聚类维度 | 传统规则匹配 | 图数据库社群发现 |
|---|---|---|
| 数据基础 | 地址标签库 | 完整交易图 |
| 覆盖率 | 仅已标注地址(<5%) | 全量地址(100%) |
| 关联方式 | 直接转账关系 | 多跳路径 + 行为模式 + 时间窗口 |
| 实体识别 | 已知实体的新地址 | 完全未知的地址簇 |
| 可扩展性 | 人工标注瓶颈 | 算法自动发现,随图扩展 |
| 实时性 | 人工标注滞后 | 链上数据实时写入,聚类实时更新 |
传统规则匹配能告诉你"这个地址是 Binance 的",图数据库社群发现能告诉你"这 300 个匿名地址大概率属于同一个实体,因为它有 8 个资金汇聚点、在 3 个 DEX 上有相同交易模式、活跃时间高度一致"。对于 Web3 安全追踪而言,后者才是从匿名到实体的关键链路。
二、图数据库如何驱动地址聚类
图数据库对地址聚类的支撑不是"比规则匹配快",而是从数据模型层面让地址关联回到了原生结构——从行为特征提取到社群发现到实体画像在同一个图引擎中完成。
交易图谱建模:两类节点 + 四类边。 在图数据库中,链上数据统一建模为异构图——地址节点(携带地址哈希、首次活跃时间、链类型、余额等属性)、合约节点(携带合约地址、类型如 DEX/借贷/NFT、部署者等属性)。四类边连接这些节点——"转账"边(地址→转账→地址,携带金额、代币、时间戳)、"调用"边(地址→调用→合约,携带交互类型如 swap/deposit/borrow)、"授权"边(地址→授权→合约,携带授权额度),"跨链"边(地址→跨链桥→地址,携带源链、目标链、桥协议)。两类节点和四类边在同一个图空间中,一次遍历即可走完"地址 A→转账→地址 B→调用→Uniswap 合约→转账→地址 C"的完整资金路径——在关系型数据库中需要 JOIN 交易表、合约表、授权表至少 5 次,在图数据库中是一次连续的多跳遍历。
多跳资金路径追踪:百毫秒发现地址关联。 地址聚类的第一步是发现地址间的资金关联——两个地址是否有共同的资金来源、是否在同一个资金链路上。图数据库沿"转账"边做多跳遍历——从地址 A 出发,沿转账边追溯 3-5 跳,找到 A 的所有上游资金来源和下游资金去向。如果地址 A 和地址 B 的 3 跳资金路径在某个汇聚节点交汇(比如 A←X→B,X 是共同的充值地址),则 A 和 B 可能属于同一实体。这个多跳遍历在亿级地址图上百毫秒级完成——安全团队输入一个可疑地址,1 秒内返回所有关联地址及关联路径。传统方案在关系型数据库中做 5 层递归 JOIN,在 2.6 亿地址规模下基本不可用。
Louvain 社群发现:自动识别地址簇。 资金路径关联只是第一步——安全团队需要的是"自动发现地址簇",而非逐个地址查询。Louvain 社群发现算法在交易图上运行后,地址自动划分为若干"地址簇"——每个簇内部的转账边密度远高于簇间。算法的原理是最大化图模块度(modularity)——让簇内连接尽可能多,簇间连接尽可能少。一个实体控制的 50 个地址互相频繁转账、共享资金来源,在交易图上形成一个密集子图——Louvain 自动将它们划入同一个社群。悦数图数据库内置 Louvain 算法,一条 nGQL 语句在亿级交易图上分钟级返回全图社群划分结果——数百万个地址簇,每个簇代表一个可能的实体。与传统规则匹配的"逐个标注"相比,Louvain 是"全图自动发现"——覆盖率从 5% 跃升到接近 100%。
行为特征叠加:从"可能同一实体"到"高置信度实体"。 资金关联和社群发现提供了地址聚类的拓扑依据,但同一社群的地址不一定属于同一实体——比如 100 个用户都通过同一个交易所热钱包充值,它们在交易图上形成"星形"结构,Louvain 可能把它们划入同一个社群,但它们显然不属于同一实体。图数据库通过叠加行为特征边来细化聚类——在地址之间增加"同时间窗口活跃"边(两个地址在相同 1 小时窗口内发起交易)、"同合约交互"边(两个地址调用过相同的 DeFi 合约)、"同资金模式"边(两个地址的转账金额分布相似)。这些行为特征边与转账边共同构成聚类图——Louvain 在加权图上运行,行为特征边作为权重叠加,地址簇的划分更精准。某安全团队使用加权图聚类后,地址聚类的准确率从 72% 提升至 91%——误报率大幅下降。
三、大模型 + 图算法:从"地址聚类"到"实体画像"
地址聚类找到了"哪些地址属于同一个实体",但安全团队还需要知道"这个实体是谁"——是交易所、是做市商、是黑客、是普通用户。大模型和图算法的结合,让聚类结果从"地址簇"进化为"实体身份画像"。
PageRank 识别地址簇中的核心地址。 在一个 50 个地址的地址簇中,并非所有地址地位相同——有些地址是"核心地址"(频繁发起交易、资金吞吐量大、与其他地址交互密集),有些是"卫星地址"(偶尔活跃、资金量小、只与核心地址交互)。PageRank 算法在地址簇子图上运行,每个地址获得的分数反映其"在簇内的重要性"。核心地址通常是实体实际操作最频繁的钱包——安全团队优先分析核心地址的交互模式(与哪些交易所、哪些 DeFi 协议、哪些已知实体有过交互),为实体身份推断提供最高信号量的线索。悦数图数据库内置 PageRank,一条 nGQL 语句在子图上秒级返回地址重要性排名。
图算法构建实体行为指纹。 每个地址簇的行为模式可以提炼为一组结构化特征——活跃时间段分布(UTC+8 工作时间 vs UTC+0 夜间)、交易频率分布(高频小额 vs 低频大额)、合约交互偏好(DEX 主导 vs 借贷主导 vs NFT 主导)、资金流向模式(只进不出 vs 进出平衡 vs 只出不进)、跨链行为频率。这些特征在图数据库中通过聚合查询从子图提取——一次图遍历即可计算地址簇内所有地址的统计特征。这些特征构成实体的"行为指纹"——与已知实体的行为指纹比对,推断未知实体的类型。某安全团队建立了 200+ 已知实体类型的行为指纹库(交易所热钱包、做市商、套利机器人、混币器、黑客等),新发现的地址簇行为指纹与库中指纹做相似度匹配——匹配度超过 85% 即自动标注实体类型。
大模型做实体身份推理与归因报告。 当地址聚类和行为指纹分析完成后,大模型在 GraphRAG 架构下做实体身份推理——从图数据库中提取地址簇的完整上下文:核心地址的交互历史、资金来源链路、合约交互模式、与已知实体的关联路径。大模型综合这些信息生成实体身份推理报告——"地址簇 #12783 包含 47 个地址,核心地址为 0x7a3…f2c,该簇行为特征:活跃时间集中在 UTC+8 09:00-18:00(工作时间段),高频调用 Uniswap V3 和 Aave 合约,资金来源为 Binance 和 OKX 热钱包,转账金额分布集中在 10-50 ETH 区间,符合'亚洲时区做市商'的行为指纹(匹配度 92%)。该实体过去 30 天总交易量 12,400 ETH,在 Uniswap V3 的 WETH/USDC 池中提供流动性。"大模型不仅推断实体类型,还生成可读的归因链路——安全分析师据此决定是否需要进一步调查。
GraphRAG 的地址溯源报告。 安全团队在追踪盗窃资金时,GraphRAG 生成完整的地址溯源报告——"目标地址 0x4b2…8e1 属于地址簇 #12783(置信度 94%),该簇包含 47 个地址,核心地址 0x7a3…f2c。资金流向追踪:盗窃资金 8000 万美元→分散转入 300 个地址→经 Tornado Cash 混币→跨链至 Polygon→经 QuickSwap 兑换为 USDC→最终汇聚于地址 0xc9f…3d2(与 Binance 热钱包有交互记录)。实体身份推断:地址簇 #12783 行为指纹匹配'亚洲时区做市商'(92%),但资金来源包含盗窃地址(置信度 94%),推断为盗窃者控制的洗钱地址簇。建议:联系 Binance 冻结 0xc9f…3d2 的关联账户。"这份报告每一步都有图数据库中的遍历路径和算法结果作为依据——不是黑盒推断,而是白盒可审计的溯源过程。
四、实战场景:链上地址聚类的落地
场景一:DeFi 盗窃案资金追踪。 某 DeFi 协议被攻击盗取 8000 万美元,攻击者将资金分散到 300 个地址。安全团队将 300 个可疑地址导入图数据库,沿转账边做多跳遍历——发现 300 个地址中有 287 个在 Tornado Cash 混币后有汇聚行为,资金最终流入 3 个跨链桥地址。Louvain 在交易子图上运行后,287 个地址被划分为 3 个地址簇——对应攻击者使用的 3 个洗钱阶段。PageRank 识别每个簇的核心地址,行为指纹分析发现 3 个簇的活跃时间模式一致(同一操作者),最终锁定一个汇聚地址与某 CEX 热钱包有交互——安全团队在 2 小时内完成从"300 个匿名地址"到"CEX 可冻结账户"的追踪链路。传统人工分析需要 3-5 天,图数据库驱动的聚类将追踪时间压缩到 2 小时。
场景二:交易所用户实体识别。 某交易所需要识别"同一用户控制多个地址"的行为——用于风控、反洗钱和账户关联。交易所将链上转账数据与内部充提币记录融合建模到图数据库——链上地址节点 + 内部账户节点 + 充提币边 + 链上转账边。Louvain 在融合图上运行后,发现 120 万个链上地址聚类为 45 万个实体——平均每个实体控制 2.7 个链上地址。其中 3200 个实体控制超过 10 个地址——这些是"多地址用户",交易所对其做增强尽调。某多地址用户通过 15 个链上地址分批提币,单地址提币金额均在报告阈值以下,但聚类后发现 15 个地址属于同一实体,累计提币金额触发了反洗钱预警——传统逐地址监控完全无法发现这种"化整为零"的规避行为。
场景三:跨链地址去匿名化。 某安全团队追踪一个跨链洗钱网络——资金从以太坊经 Polygon 桥→Solana Wormhole→Arbitrum 桥→BSC。传统单链分析只能看到每条链上的地址活动,无法关联跨链地址。图数据库建模跨链桥为"跨链"边——以太坊地址 A→跨链桥→Polygon 地址 B,地址 A 和 B 在图上通过跨链边直接连接。Louvain 在跨链图上运行后,同一实体在不同链上的地址被聚入同一个地址簇——一个实体在 4 条链上的 23 个地址被聚类为同一个实体。行为指纹分析发现该实体在每条链上都有"兑换为 USDC→跨链→兑换为本地代币→存入借贷协议"的相同模式——跨链洗钱的典型路径。安全团队据此向 4 条链的 DeFi 协议发出风险预警,冻结了相关地址。
五、悦数图数据库的核心支撑
链上地址聚类对图数据库提出了四项硬性要求,悦数在每一项上有明确的工程支撑。
亿级多跳百毫秒地址关联遍历。 区块链地址规模随时间增长——以太坊 2.6 亿地址、数十亿条转账边。地址聚类的核心操作是 3-5 跳资金路径遍历——在亿级图上遍历数千节点。悦数的分布式存储和并行查询引擎在亿级地址规模下保持多跳遍历百毫秒级响应——安全团队输入可疑地址后 1 秒内,关联地址和资金路径返回。存算分离架构让链上数据持续写入(每个区块约 12 秒新增数千条交易)和聚类遍历查询并行进行——链上数据实时入库不阻塞聚类查询,查询不受写入高峰影响。
动态 Schema 兼容多链异构地址。 多链地址聚类的挑战在于——不同链的数据模型不同。以太坊地址是 20 字节哈希,Solana 地址是 32 字节公钥,比特币地址是 Base58 编码。不同链的交易结构也不同——以太坊有 gas fee 和合约调用,Solana 有 instruction 和 program,比特币有 UTXO 模型。悦数动态 Schema 允许为每条链定义不同的地址和交易属性模板——所有链的地址在同一个图空间中并存,跨链桥边连接不同链的地址。新增一条链的数据只需要定义新的 Schema 模板,不需要重建图——多链地址聚类随链生态扩展持续覆盖。
内置 Louvain 与 PageRank 聚类算法。 地址聚类不是简单的"多跳遍历"——它需要图算法做社群发现和节点重要性排序。悦数图数据库内置 Louvain 社群发现、PageRank 节点重要性、介数中心性桥梁地址识别、连通分量分析地址簇检测等核心图算法,直接在引擎层执行——地址簇发现、核心地址识别、洗钱桥梁定位、地址簇检测,一条 nGQL 语句即可获得算法结果,与资金路径遍历结果融合输出。安全团队不需要维护独立的图算法计算平台——算法和查询在同一引擎中完成,数据零拷贝,聚类结果实时。
Text2nGQL 自然语言地址查询。 安全分析师在地址追踪过程中需要灵活查询地址关联和资金路径——"这个地址的 3 跳资金来源有哪些""哪些地址与它共享过同一个混币器""这个地址簇的核心地址过去 7 天在哪些 DEX 上交易过"。这些查询用 nGQL 写可能超过 20 行。Text2nGQL 把自然语言翻译为图查询——安全分析师用自然语言描述查询意图,系统自动翻译为多跳遍历 + 属性过滤 + 路径搜索的复合查询语句。地址追踪从"查链上浏览器写脚本"降到"问一句话得结果"——安全分析效率提升数倍。
区块链的匿名性不是真正的匿名——每个地址的每一笔交易都永久记录在链上。但匿名性之所以有效,是因为传统工具无法从海量交易记录中发现地址间的关联模式。关系型数据库把每笔交易存为一行记录,地址间的关系在逐行存储中被打散——300 个地址看起来像 300 个独立实体。图数据库保存的不是交易记录,而是地址间的关系——每笔转账、每次合约调用、每个跨链桥都是图上的边。当全量交易记录在图数据库中汇聚为一张完整的交易图,Louvain 社群发现就能从拓扑结构中自动识别地址簇,PageRank 就能找到每个簇的核心地址,行为指纹就能推断实体类型。链上地址聚类不是"更快的区块链浏览器",而是从数据结构层面重建了地址关联的逻辑——让匿名地址背后的实体浮出水面。

