KYC(Know Your Customer)解決「你的用戶是誰」,KYT(Know Your Transaction)解決「這筆交易、這個地址乾淨嗎」。對交易所、錢包、支付與合規機構而言,KYT 是反洗錢(AML)合規的核心引擎:在用戶充值 / 提現 / 交易的瞬間,判斷對手地址是否涉詐、涉賭、涉制裁、與混幣器關聯,並據此放行、加驗或攔截。德爾泰在為平台客戶搭建鏈上風控能力時,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 要在用戶點「提現」後的幾百毫秒內給出結論,工程挑戰包括:
- 預計算 + 緩存:熱點地址的風險分預先算好、定期刷新,避免實時全圖遍歷。
- 流式處理:用消息隊列 + 流計算(如 Kafka / Flink)實時消費新區塊,增量更新圖譜與標簽。
- 分級響應:低風險走緩存秒級放行,高風險 / 命中規則才觸發深度圖遍歷與人工覆核。
- 多源容災與限頻:不依賴單一數據源,避免接口限頻拖垮整條風控鏈路。
七、德爾泰的 KYT 實踐
把上面這套東西做到生產級、並經得起監管審查,是德爾泰的核心能力之一:
- 千萬級、帶置信度的實體標簽庫,持續更新;
- 多鏈覆蓋 + 多模型污點分析的資金圖譜;
- 可配置、可審計、可回溯的規則引擎;
- 由持證法律專家把技術結論對接合規與司法流程。
對平台客戶,這意味着一套「開箱即用」的鏈上 AML 風控;對個人用戶,這意味着遇到地址被風控 / 凍結時,德爾泰能快速定位風險來源,並給出合規處置路徑。
八、小結
KYT 引擎的本質 = 高質量標簽庫 + 資金圖譜 + 風險評分 + 規則引擎 + 實時工程。它不是某個炫技算法,而是一套需要長期積累數據與工程能力的體系。德爾泰在這一領域的沉淀,正體現在標簽庫的廣度、污點分析的精度,以及與合規、司法的打通上。
風險與合規提示:本文為技術架構科普,示例代碼與權重僅作說明,不構成具體合規方案;落地需結合所在司法轄區的監管要求。涉及賬戶風控 / 凍結,請通過合法合規途徑處理。