暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

一个 Demo 看懂 Web3 风控新范式:图技术追踪链上资金

NebulaGraph 2026-04-17
112
随着加密货币和 DeFi 的快速发展,链上资产转移与洗钱、欺诈等非法活动日益频繁。
图数据库能够将链上地址、交易、以及链下身份信息(如设备、IP、邮箱)关联起来,形成完整的风险图谱,帮助监管机构或安全团队识别黑名单地址、追踪资金链路、发现隐蔽团伙。
本 Demo 以 Web3 场景为例,建立包含用户、加密地址、转账关系以及链下信息的图模型,并通过多个查询示例展示如何追踪资金流向、发现与黑名单地址的关联。

Demo 🔗

 https://demo-v5-studio.nebula-graph.com.cn

💡本 Demo 演示了从用户到地址、再到交易流转的核心查询,仅作为简单场景下的 NebulaGraph 使用参考,实际应用中可结合图算法(如 PageRank、社区发现)进一步自动化风险挖掘。

🥳 特别感谢@Neil、@Phoenix 的支持~

(点击图片,报名本周六 NebulaGraph 杭州 MeetUp)


一、Why NebulaGraph?

1. 原生关系建模,精准刻画关系密集型风险

黑客盗币、洗钱、批量注册等行为都隐藏在复杂的地址、设备、IP、交易路径中。传统关系型数据库难以处理多维关联与深度链路查询,而 NebulaGraph 以「点」和「边」形式天然建模实体与关系,能将链上地址、交易记录、KYC 信息、设备指纹等异构数据融合为统一图模型,让隐匿的关联团伙和资金网络无处遁形。

2. 毫秒级多跳穿透,实时阻断链上资金链路

稳定币和加密资产的风控要求毫秒级响应,尤其是追踪 5 层以上的转账路径或识别跨链混币行为。NebulaGraph 支持秒级多跳查询,精准还原黑客从盗币、转移、混币到提币的完整行为链。

✅在某头部交易所反作弊场景中,50 毫秒完成 3 跳查询,实时拦截批量注册与套利,将风险拦截在交易完成前。

3. 融合链上链下全域数据,打破数据孤岛

合规风控不仅需要链上交易,还需关联用户 KYC、支付渠道、设备指纹等链下信息。NebulaGraph 支持千亿点万亿边的统一图模型,轻松整合 Crypto Address、Blockchain TX、ID/Phone/Email、 等多源数据,构建从匿名地址到真实身份的完整画像,满足 FATF 旅行规则、MiCA 等监管对穿透式 KYC/AML 的要求。

4. 百亿级规模化部署,支撑交易所级实时合规

头部交易所日交易量超百亿美元,风控系统需在海量数据中保持高性能。NebulaGraph 已在真实生产环境支撑 40 亿点、400 亿边的风控图谱,实现秒级交易穿透、自动化合规报告,同时相比 GraphX 等方案算法性能提升 10-100 倍、内存开销降低 5 倍,大幅优化存储与算力成本(存储减 40%,算力省 60%),真正满足 Web3 高并发、低延迟、强扩展的严苛需求。


二、图模型设计

💡实际使用场景中,可对 Schema 进行相应修改与管理,为便于在线体验,本 Demo 暂不支持。

首先创建图类型与图空间,并执行以下语句以定义节点、边结构及属性:

    CREATE GRAPH TYPE IF NOT EXISTS `web3_risk_type` AS {
      NODE TYPE `user` (LABEL `user`{`user_id` STRING NOT NULL`name` STRING DEFAULT NULL`age` INT64 DEFAULT NULL`education` STRING DEFAULT NULL`gender` STRING DEFAULT NULL`occupation` STRING DEFAULT NULL`occupation_status` STRING DEFAULT NULL`is_black_node` BOOL DEFAULT NULL`zhangli` STRING DEFAULT NULL`marital_status` STRING DEFAULT NULLPRIMARY KEY (`user_id`)}),
      NODE TYPE `address` (LABEL `address`{`address` STRING NOT NULL`is_black_node` BOOL DEFAULT NULLPRIMARY KEY (`address`)}),
      NODE TYPE `card` (LABEL `card`{`card` STRING NOT NULL`is_black_node` BOOL DEFAULT NULLPRIMARY KEY (`card`)}),
      NODE TYPE `crypto_address` (LABEL `crypto_address`{`crypto_address` STRING NOT NULL`is_black_node` BOOL DEFAULT NULLPRIMARY KEY (`crypto_address`)}),
      NODE TYPE `email` (LABEL `email`{`email` STRING NOT NULL`is_black_node` BOOL DEFAULT NULLPRIMARY KEY (`email`)}),
      NODE TYPE `device` (LABEL `device`{`device` STRING NOT NULL`is_black_node` BOOL DEFAULT NULLPRIMARY KEY (`device`)}),
      NODE TYPE `id_no` (LABEL `id_no`{`id_no` STRING NOT NULL`is_black_node` BOOL DEFAULT NULLPRIMARY KEY (`id_no`)}),
      NODE TYPE `ip` (LABEL `ip`{`ip` STRING NOT NULL`is_black_node` BOOL DEFAULT NULLPRIMARY KEY (`ip`)}),
      NODE TYPE `phone` (LABEL `phone`{`phone` STRING NOT NULL`is_black_node` BOOL DEFAULT NULLPRIMARY KEY (`phone`)}),
      EDGE TYPE `transfer` (`crypto_address`)-[LABEL `transfer`{}]->(`crypto_address`),
      EDGE TYPE `user_address` (`user`)-[LABEL `user_address`{}]->(`address`),
      EDGE TYPE `user_card` (`user`)-[LABEL `user_card`{}]->(`card`),
      EDGE TYPE `user_crypto_address` (`user`)-[LABEL `user_crypto_address`{}]->(`crypto_address`),
      EDGE TYPE `user_device` (`user`)-[LABEL `user_device`{}]->(`device`),
      EDGE TYPE `user_ip` (`user`)-[LABEL `user_ip`{}]->(`ip`)
    }
    CREATE GRAPH `web3_risk_graph` :: `web3_risk_type`

    1 . 节点

    2.边


    三、数据导入

    💡本 Demo 仅预置约百名用户及数千条关联关系用于体验,实际应用中,数据量可达亿级、百亿级甚至更多,具体可按需配置。

    使用 INSERT 
    语句分别导入用户、加密地址、转账关系等数据。

    以下为部分示例:

      -- 导入用户节点
      TABLE `t_user` { `is_black_node`,`user_id`,`name`,`age`,`education`,`zhangli`,`marital_status`,`gender`,`occupation`,`occupation_status` } = 
      (false,"370049xxxxxxxx0851","张xx",18,"小学","12","未知","女","产品经理","自由职业"),
      (false,"430026xxxxxxxx0831","欧xx",15,"初中","27","未知","女","其他","其他"),
      ...
      (false,"410111xxxxxxxx12345","王x",30,"博士","30","未婚","男","医生","在职")
      USE `web3_risk_graph`
      FOR re IN `t_user`
      INSERT (@`user` {`user_id`: re.`user_id`, `name`: re.`name`, `age`: CAST(re.`age` AS INT64), `education`: re.`education`, `gender`: re.`gender`, `occupation`: re.`occupation`, `occupation_status`: re.`occupation_status`, `is_black_node`: CAST(re.`is_black_node` AS BOOLEAN),`zhangli`: re.`zhangli`,`marital_status`:re.`marital_status`})
      -- 导入加密地址节点
      TABLE `t_crypto_address` { `crypto_address`, `is_black_node` } = 
      ("0xaad0bfba1a0db3b31ab5dadf3a1d4441deeed4c4",false),
      ("0xe4fc4c48bd2e9b34520ff7886d42aad4bcabba51",false),
      ...
      ("0xd07aad9a3544aa5e02a2f0fce200ecd9fbffbcfb",true)
      USE `web3_risk_graph`
      FOR re IN `t_crypto_address`
      INSERT (@`crypto_address` {`crypto_address`: re.`crypto_address`, `is_black_node`: CAST(re.`is_black_node` AS BOOLEAN)})


      四、关键查询示例

      1. 查询用户链上转出后的直接关联用户

      目的给定一个用户,找出其持有的加密地址转出的资金最终流向了哪些其他用户,识别资金上下游关系,关联越紧密则风险等级越高。

        USE `web3_risk_graph`
        MATCH path=(u@`user`{`user_id`:"450055199805200521"})-[@`user_crypto_address`]->(src@`crypto_address`)-[@`transfer`]->(dst@`crypto_address`)<-[@`user_crypto_address`]-(peer@`user`)
        RETURN path

        基于图的解释

        • 这张图展示了从用户 450055199805200521 
          出发的完整资金流转路径:该用户持有的加密地址向另一个地址发起转账,而该接收地址又被其他用户所持有,从而形成了用户之间的间接资金关联。
        • 存在同一接收地址被多个用户持有、多个来源地址向同一目标地址转账的路径,揭示了潜在的团伙共用地址、资金归集或洗钱风险。
        • 如果路径中的任何地址或用户带有黑名单标记(is_black_node: true),则整条链的风险等级将显著升高,需重点排查。

        2. 查询与黑名单用户共享 IP 的关联用户

        目的找出所有与某个黑名单用户共用 IP的其他用户,挖掘潜在关联账号。

          USE `web3_risk_graph`
          MATCH path=(blk@`user`{`user_id`:"220069199106190627"})-[@`user_ip`]->(ipnode@`ip`)<-[@`user_ip`]-(peer@`user`)
          RETURN path

          基于图的解释黑名单用户 220069199106190627 
          与另外两个用户共同使用 15.731.65.74 IP ,可能为同一人/团伙作案,下一步需叠加更多维度以判断团伙风险。

          3. 查询用户关联地址在 1-2 跳内触达的黑名单链上地址

          目的检测用户的加密地址是否通过多层转账与已知黑名单地址产生关联。

            USE `web3_risk_graph`
            MATCH path=(u@`user`{`user_id`:"450055199805200521"})-[@`user_crypto_address`]->(src@`crypto_address`)-[@`transfer`]->{1,2}(risk@`crypto_address`{`is_black_node`:true})
            RETURN path

            基于图的解释用户 450055199805200521 
            的链上地址与黑名单地址存在直接资金往来(1 跳关系),属于高风险关联用户。

            4. 追踪用户链上资金多跳流向(1-3 跳)

            目的:全面追踪用户资金的流转路径,识别最终汇聚地址或分散模式。

              USE `web3_risk_graph`
              MATCH path=(a@`user`{`user_id`:"450055199805200521"})-[@`user_crypto_address`]->(src@`crypto_address`)-[@`transfer`]->{1,3}(dest@`crypto_address`)
              RETURN path

              基于图的解释 该资金流向拓扑图直观展示了 用户 450055199805200521
              (蓝色节点)名下的资产如何穿过复杂的链上网络进行扩散,绿色节点(关联地址)与黑色直线(转账)代表资金在 1 到 3 跳过程中的扩散与演变轨迹。

              • 密集区域(图中上部):显示资金在第 1-2 跳时非常活跃,可能存在多地址归集或频繁的分散转账。
              • 稀疏区域(图中下部):代表资金流向的末端(第 3 跳),这些地址可能是最终的提现点或冷钱包。

              5. 链上地址多跳路径追踪

              💡建议在 Demo 中,仅查询 5 跳内的路径

              目的针对一个可疑的链上地址,追踪其 5 跳内的资金流转路径。

                USE `web3_risk_graph`
                MATCH path=(src@`crypto_address`{`crypto_address`:"0xfdf3a4bfdacc3ac7e5ae831a9eb0feeb4b749fbf"})-[@`transfer`]->{5}(dest@`crypto_address`)
                RETURN path LIMIT 10

                基于图的解释对资金流向进行长程穿透追踪,展示连续经过 5 次转账移动到深层地址,用于排查那些试图通过多次转账掩盖资金来源的洗钱长链。

                图之所以显得疏朗,是因为代码中设置了 LIMIT 10
                ,代表从该地址发起的成千上万条路径中,系统只随机或按顺序抽取了 10 条典型的长程链路进行展示,避免了视觉过载,便于审计人员逐一剖析。


                五、总结

                通过 NebulaGraph 将链上交易与链下身份信息融合,Web3 风险分析可以实现:

                • 追踪资金流向,发现黑名单地址的间接关联;
                • 识别共用 IP、设备等行为的团伙;
                • 量化地址的风险等级;
                • 支持监管合规与反洗钱调查;
                • ......

                通过原生关系建模与毫秒级多跳查询能力,NebulaGraph 能够精准追踪多层嵌套的资金流向、发现与黑名单地址的间接关联、识别共用 IP/设备等团伙行为,并支持监管合规与反洗钱调查。在真实生产环境中,NebulaGraph 已支撑百亿级节点边的风控图谱,实现存储与算力的大幅优化,为 Web3 风险防控提供了可扩展、高性能、可解释的基础设施。


                推荐阅读⬇️

                技术科普|稳定币监管全面升级,发行机构如何应对风控新挑战?

                风控利器:BlockSec 用图+标签破解 Crypto 合规难题

                基于知识图谱的 Web3 风控:普适智能一站式知识中台



                如果你觉得 NebulaGraph 能帮到你,或者你只是单纯支持开源精神,可以在 GitHub 上为 NebulaGraph 点个 Star!

                每一个 Star 都是对我们的支持和鼓励✨

                GitHub:https://github.com/vesoft-inc/nebula

                官网:https://www.nebula-graph.com.cn/

                论坛:https://discuss.nebula-graph.com.cn/



                扫码添加

                 可爱星云

                技术交流

                资料分享


                NebulaGraph 用户案例

                Why Graph Database?⬇️

                复杂关系场景,图数据库为何是首选?

                风控场普适智能|中证数智BlockSec携程Airwallex众安保险中国移动Akulaku邦盛科技360数科BOSS直聘金蝶征信快手青藤云安全

                平台建设:博睿数据携程众安科技微信OPPOvivo美团百度爱番番携程金融普适智能BIGO

                知识图谱:普适智能|中证数智中医药大学企查查腾讯音乐中科大脑泰康在线苏宁微澜同花顺携程酒店

                数据血缘:波克城市微众银行携程金融

                智能运维BOSS直聘|58同城中亦安图

                供应链:京东物流震坤行

                营销推荐:阿里妈妈

                GraphRAG:中科数睿

                ✨ NebulaGraph 推荐阅读

                文章转载自NebulaGraph,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论