KYC(Know Your Customer)解决「你的用户是谁」,KYT(Know Your Transaction)解决「这笔交易、这个地址干净吗」。对交易所、钱包、支付与合规机构而言,KYT 是反洗钱(AML)合规的核心引擎:在用户充值 / 提现 / 交易的瞬间,判断对手地址是否涉诈、涉赌、涉制裁、与混币器关联,并据此放行、加验或拦截。德尔泰在为平台客户搭建链上风控能力时,KYT 引擎几乎是绕不开的基础设施。这篇就以一线链上风控团队的视角,拆解一套 KYT 引擎该怎么设计。

一、整体架构

一套生产级 KYT 引擎,大致由五个模块组成:数据接入层、标签解析库、图谱关系网、评分计算引擎、规则研判系统。

其中,数据接入负责把多链原始数据「喂」进来;标签库与资金图谱是「关系」与「知识」;风险评分把关系量化成分数;规则引擎把分数翻译成动作。以下是整体流程简图:

KYT 风控引擎整体架构
德尔泰实时 KYT 引擎的整体架构设计与模块划分

二、数据层:多链接入与地址标签库

多链数据接入:归档全节点 + 浏览器 API + 第三方数据源,覆盖 BTC / ETH / Tron 等主流链与主要稳定币,支持历史状态回溯。

地址标签库:KYT 的「知识」全在标签库里——交易所、混币器、诈骗、制裁名单(如 OFAC SDN)、暗网市场、OTC 等实体标签,每个标签都应带来源、时间、置信度。

德尔泰维护的是一份持续更新的千万级实体标签库,这是 KYT 评分准确性的根基——标签库的质量,直接决定风控的误报率与漏报率。这也是 KYT 难以靠一套开源代码速成、必须长期积累的原因。

三、风险评分模型:风险敞口与传播衰减

核心思想:一个地址的风险,不只看它「自己是不是黑」,更要看它和高风险实体的资金距离。直接和制裁地址交易,风险极高;隔了五跳才间接相关,风险则大幅衰减。

一个可用的评分模型:地址风险分 = Σ(命中标签权重 × 资金占比 × 距离衰减)。

RISK_WEIGHTS = {
    "sanctioned": 100,  # 制裁名单
    "scam": 90,        # 诈骗
    "darkmarket": 80,  # 暗网市场
    "mixer": 70,       # 混币器
    "gambling": 40,    # 涉赌
    "exchange": 5,     # 普通交易所(低风险)
}

def address_risk_score(address, max_hops=5, decay=0.5):
    """
    基于资金敞口的地址风险评分(0-100)。
    get_exposures 返回 [(风险类别, 资金占比, 距离hops), ...],
    由资金图谱 + 标签库 + 污点分析计算得到。
    """
    score = 0.0
    for category, ratio, hops in get_exposures(address, max_hops):
        weight = RISK_WEIGHTS.get(category, 0)
        score += weight * ratio * (decay ** hops)  # 距离越远,衰减越多
    return min(round(score, 1), 100)

这里的 get_exposures 正是建立在资金图谱 + 污点分析之上——这也是为什么 KYT 引擎离不开一张高质量的资金图谱。德尔泰的评分引擎在此基础上支持多模型污点分析(Haircut / FIFO / Poison)与跨链续链,让「间接风险」也能被量化。

四、规则引擎:把分数翻译成动作

评分之上是规则引擎,它把「分数」翻译成「放行 / 加验 / 拦截」。规则应当可配置、可审计、可回溯:

RULES = [
    {"if": lambda ctx: ctx["risk"] >= 90, "then": "BLOCK", "reason": "高风险:疑似制裁 / 诈骗关联"},
    {"if": lambda ctx: ctx["risk"] >= 60, "then": "REVIEW", "reason": "中风险:转人工复核"},
    {"if": lambda ctx: ctx["mixer_hops"] is not None and ctx["mixer_hops"] <= 2,
     "then": "REVIEW", "reason": "两跳内关联混币器"},
    {"if": lambda ctx: ctx["amount"] >= 100000, "then": "REVIEW", "reason": "大额交易"},
]

def evaluate(ctx):
    for rule in RULES:
        if rule["if"](ctx):
            return rule["then"], rule["reason"]
    return "PASS", "低风险放行"

德尔泰在实战中会按客户的牌照地区、业务类型与风险偏好定制规则集,并保留每一次命中的快照,以备监管审查——合规风控的价值,一半在判断,一半在「可解释、可追溯」。

五、资金图谱:用图数据库做多跳关联

风险评分要「看多跳」,背后就需要一张资金图谱。用图数据库(如 Neo4j)存「地址—交易」关系,支持多跳查询与污点传播:

// 查询某地址 3 跳内是否关联到任意「制裁」标签地址
MATCH path = (a:Address {addr: $addr})-[:SENT*1..3]->(b:Address)
WHERE b.label = 'sanctioned'
RETURN path LIMIT 10

德尔泰的资金图谱在此之上叠加了多模型污点分析,不仅判断「是否关联」,还能量化「关联了多少」——这正是出具合规报告与司法证据时的关键区别。

六、实时性与工程挑战

KYT 要在用户点「提现」后的几百毫秒内给出结论,工程挑战包括:

七、德尔泰的 KYT 实践

把上面这套东西做到生产级、并经得起监管审查,是德尔泰的核心能力之一:

对平台客户,这意味着一套「开箱即用」的链上 AML 风控;对个人用户,这意味着遇到地址被风控 / 冻结时,德尔泰能快速定位风险来源,并给出合规处置路径。

八、小结

KYT 引擎的本质 = 高质量标签库 + 资金图谱 + 风险评分 + 规则引擎 + 实时工程。它不是某个炫技算法,而是一套需要长期积累数据与工程能力的体系。德尔泰在这一领域的沉淀,正体现在标签库的广度、污点分析的精度,以及与合规、司法的打通上。

风险与合规提示:本文为技术架构科普,示例代码与权重仅作说明,不构成具体合规方案;落地需结合所在司法辖区的监管要求。涉及账户风控 / 冻结,请通过合法合规途径处理。