第4章:用户KYC与AML — 从入门到实战

大家好,我是老张。今天咱们聊聊KYC和AML。说实话,这两个词在交易所圈子里都快被说烂了,但真正做对、做透的团队,我见过的真不多。

KYC不是填个身份证就完事。AML也不是拉个黑名单就交差。它们是一整套防御体系。我当年在上一家平台,就因为KYC等级划分太粗糙,被监管罚了一笔不小的数目。嗯,从那以后,我对这套东西就格外上心。

KYC与AML 核心体系 用户 身份管理 KYC等级划分 实名认证流程 反洗钱规则 黑名单管理 链上地址追踪

4.1 KYC等级划分 — 别一刀切

很多团队上来就搞三级KYC:初级、中级、高级。但说实话,这太死板了。我建议你根据用户的交易行为资产规模动态调整等级。

举个例子。一个用户每天充提几十万U,但只过了初级KYC,你觉得风险大不大?我在项目中遇到过,有个用户就是利用低等级KYC的漏洞,频繁换地址洗钱。后来我们才把规则改成了「交易量触发升级」机制。

核心思路:KYC等级 = 身份可信度 × 行为风险系数

我个人习惯把等级分成四档:

等级认证要求日交易限额提币限额
L0 - 未认证1000 USDT500 USDT
L1 - 基础手机号+邮箱10000 USDT5000 USDT
L2 - 标准身份证+人脸50000 USDT20000 USDT
L3 - 高级地址证明+视频面签无限100000 USDT

小技巧:L0用户虽然门槛低,但一定要限制提币速度。我曾经见过有人注册100个L0账号,每个提500U,一天就洗出去5万U。后来我们加了「新账号24小时冷静期」,这个问题才解决。

4.2 实名认证流程 — 用户体验与安全的平衡

认证流程太复杂,用户跑了。太简单,风控形同虚设。怎么平衡?我总结了一个「三步走」策略。

  1. 第一步:OCR识别 — 自动提取身份证信息,减少用户输入。这里要注意,有些国家的身份证格式很奇葩,比如日本驾照、香港智能身份证。我们的OCR模型必须覆盖主流国家。
  2. 第二步:活体检测 — 不是随便拍张照片就行。要检测眨眼、张嘴、转头。我见过有人用视频伪造活体,后来我们加入了「随机动作指令」,比如「请先眨眼再向左转头」,大大提高了攻击成本。
  3. 第三步:人工审核兜底 — 机器判不了的就转人工。但人工审核效率低,我建议设置「自动通过率」目标,比如80%的认证请求由机器自动完成,只有20%的异常请求才转人工。

注意:人脸数据是敏感信息,存储必须加密。我见过有团队把用户人脸照片直接存MongoDB,结果被拖库。一定要用独立的加密存储服务,且与业务数据库物理隔离。

4.3 反洗钱规则 — 别只盯着大额

很多人以为反洗钱就是监控大额交易。其实不是。洗钱高手最擅长「化整为零」。比如一笔100万U的交易,拆成1000笔1000U,每笔都低于你的监控阈值。

我建议你关注三个维度:

  • 交易频率异常 — 比如一个用户1小时内充值20次,每次金额相近。这明显是结构化交易(structuring)。
  • 地址关联性 — 新地址收到资金后,立刻转给另一个新地址,再转给第三个。这种「跳转」模式很可疑。
  • 时间模式 — 凌晨3点到5点的交易量突然暴增。正常人不会这个时间频繁操作,除非是机器人或洗钱团伙。

实战规则示例:

规则1: 单日充值次数 > 10 且 单笔金额 < 5000 USDT → 触发人工审核
规则2: 资金在30分钟内经过 ≥ 3个地址 → 标记为「混币嫌疑」
规则3: 凌晨0-6点交易量占比 > 60% → 限制提币24小时

我曾经遇到一个案例。有个用户每天凌晨2点准时充值,每次4999 USDT,连续一周。系统自动标记后,我们一查,发现他的资金来源是一个赌博网站。嗯,这就是规则3的价值。

4.4 黑名单管理 — 别只依赖官方名单

黑名单分两种:官方黑名单和自建黑名单。官方名单比如OFAC、FATF的制裁名单,这些必须接入。但说实话,官方名单更新慢,而且很多洗钱地址根本不在上面。

我建议你自建一个「行为黑名单」:

  • 地址黑名单 — 被举报过的地址、与已知黑客地址有关联的地址。
  • 设备黑名单 — 曾经用于欺诈的设备指纹。比如某个手机号注册了10个账号,全部触发风控,那这个设备就该进黑名单。
  • IP黑名单 — 来自高风险地区的IP,或者频繁更换IP的用户。

避坑指南:我曾经犯过一个错误——黑名单只增不减。结果名单越来越长,很多地址其实已经失效了。后来我们加了「黑名单有效期」机制,比如地址黑名单90天自动过期,除非有新的证据链。

4.5 链上地址追踪 — 别只看一层

链上追踪是AML的终极武器。但很多团队只追踪「直接交易对手」,这远远不够。洗钱团伙会用混币器、跨链桥、去中心化交易所来切断资金链路。

我建议你至少追踪三层:

  1. 第一层:直接对手 — 用户充值的地址是谁的?如果是交易所地址,那还好。如果是个人地址,就要警惕。
  2. 第二层:间接对手 — 这个地址的资金来源是哪里?有没有混币器(比如Tornado Cash)的参与?
  3. 第三层:关联图谱 — 所有与这个地址有交易的地址,形成一个网络。如果这个网络中有大量「休眠地址突然激活」,那基本可以确定是洗钱行为。

技术实现思路:

// 伪代码示例
function traceAddress(address, depth=3) {
  let graph = new Graph();
  let queue = [{addr: address, level: 0}];
  
  while(queue.length > 0) {
    let current = queue.shift();
    if(current.level > depth) break;
    
    let txs = getTransactions(current.addr);
    for(let tx of txs) {
      graph.addEdge(current.addr, tx.to);
      if(current.level + 1 <= depth) {
        queue.push({addr: tx.to, level: current.level + 1});
      }
    }
  }
  return graph;
}

说实话,链上追踪很吃计算资源。我建议你只对「高风险用户」做全链路追踪,普通用户只做第一层检查。不然你的服务器会扛不住的。

最后提醒:KYC和AML不是一次性工作。用户的行为会变,监管政策会变,洗钱手法也会变。我每个季度都会复盘一次规则的有效性,该加的加,该删的删。这套体系才能持续运转。


专注资料整理