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 引擎的本質 = 高質量標簽庫 + 資金圖譜 + 風險評分 + 規則引擎 + 實時工程。它不是某個炫技算法,而是一套需要長期積累數據與工程能力的體系。德爾泰在這一領域的沉淀,正體現在標簽庫的廣度、污點分析的精度,以及與合規、司法的打通上。

風險與合規提示:本文為技術架構科普,示例代碼與權重僅作說明,不構成具體合規方案;落地需結合所在司法轄區的監管要求。涉及賬戶風控 / 凍結,請通過合法合規途徑處理。