跳至主要內容
Crypto AML AgentAI 鏈上風險監控與異常交易偵測

方法說明

本頁說明 Crypto AML Agent 的系統架構、資料來源、偵測規則、評分公式、機器學習異常偵測與 AI Agent 設計。規則表與門檻直接由程式碼(@aml/engine)產生,確保文件與實作一致。

1. 系統概述

Crypto AML Agent 是一套針對加密貨幣地址的反洗錢(AML)風險監控與調查系統,支援 Ethereum、BNB Smart Chain、TRON 與 Bitcoin 四條鏈。使用者輸入地址後,系統會:

  1. 即時抓取鏈上交易並正規化為統一格式(NormTx);
  2. 比對 OFAC 制裁名單與地址標籤,執行 21 條以洗錢態樣(typology)為基礎的偵測規則;
  3. 以可解釋的公式計算 0–100 風險分數與四級風險等級;
  4. 在瀏覽器端以 Isolation Forest 找出行為異常的單筆交易(與官方分數分開呈現);
  5. 由 GLM AI Agent 透過工具呼叫查證後撰寫中文調查報告,並保存執行軌跡供稽核;
  6. 以排程(Cron)持續掃描監控名單,於儀表板顯示警示。

設計原則是「分數由程式決定、文字由 LLM 撰寫」:所有數字皆可由規則與證據重現,LLM 只負責整理與敘述。

2. 系統架構

Crypto AML Agent 系統架構圖使用者瀏覽器自 Vercel 上的 Next.js 載入前端,並直接以 fetch 呼叫 Cloudflare Worker 的 Hono API 與 SSE 串流。 Worker 內含 AI Agent、共用規則引擎、Cron 排程掃描與 D1 資料庫,並向 Zerion、Blockscout、TronGrid、mempool.space、 OFAC 名單與 Z.ai GLM 取得資料。使用者瀏覽器React UI・ECharts 圖表Isolation Forest(瀏覽器端 ML)@aml/engine 位址偵測/格式化SSE 解析(fetch + Stream)Vercel・Next.js 16App Router 靜態頁面Tailwind CSS v4僅提供前端資源,資料皆由瀏覽器向 API 取得載入頁面Cloudflare WorkerHono REST API /api/*analyze・alerts・stats・watchlist・investigationsAI Agent(SSE 串流)GLM 工具呼叫迴圈・子請求預算・防幻覺護欄@aml/engine 共用規則引擎21 條 AML 規則・評分・制裁比對・報告模板Cron Triggers 排程監控名單/制裁地址掃描・產生警示D1(SQLite)alerts・watchlist・investigations分析快取・速率限制REST JSONPOST + SSEZerionEthereum / BNB Chain 錢包交易BlockscoutETH 備援資料・地址標籤TronGridTRON:TRX / TRC-20mempool.spaceBitcoin:UTXO 交易OFAC SDN 名單制裁地址(每日匯出)Z.ai GLMLLM・Tool calling外部資料來源
圖:系統架構。實線為主要資料流;虛線框為 Cloudflare Worker 執行環境。規則引擎同時被 Worker(評分)與瀏覽器(位址偵測、Isolation Forest)使用,確保文件、前端與後端邏輯一致。
  • 前端:Next.js 16(App Router)部署於 Vercel;所有資料皆由瀏覽器直接呼叫 Worker API,頁面本身可靜態產生。
  • 後端:Cloudflare Worker(Hono)提供 REST API 與 SSE 串流;D1 儲存警示、監控名單、調查紀錄與快取;Cron Triggers 執行排程掃描。
  • 共用引擎:@aml/engine 為 TypeScript 原始碼套件,Worker 用於評分,前端用於位址偵測、格式化、Isolation Forest 與本頁的規則表。

3. 資料來源

資料來源內容
ETHEthereum 鏈上資料Zerion API(未設定金鑰時改用 Blockscout)錢包交易:ETH 與 ERC-20 轉帳(含合約內部轉出),附交易當時 USD 價值、應用名稱與垃圾代幣標記
BSCBNB Smart Chain 鏈上資料Zerion API(需 API 金鑰)錢包交易:BNB 與 BEP-20 轉帳;未設定金鑰時 BSC 僅提供內建情境
TRONTRON 鏈上資料TronGrid帳戶資訊、TRX 與 TRC-20(USDT/USDC)轉帳
BTCBitcoin 鏈上資料mempool.space地址統計與 UTXO 交易(輸入/輸出明細,用於 CoinJoin 與剝離鏈判斷)
制裁名單OFAC SDN(github.com/0xB10C/ofac-sanctioned-digital-currency-addresses)ETH / USDT / USDC / BSC / TRX / XBT 地址;引擎內建快照日期 2026-10-07,Worker 排程更新
地址標籤內建策展名單 + Zerion 應用名稱 / Blockscout 標籤交易所、混幣器(Tornado Cash)、跨鏈橋、穩定幣合約;外部標籤以關鍵字對應類別
AI 報告Z.ai GLM(OpenAI 相容 API)工具呼叫(function calling)蒐集證據後撰寫中文報告;不可用時改用規則模板

4. 偵測規則

共 21 條規則,涵蓋制裁、混幣/匿名化、結構化、分層、詐騙、高風險服務與異常行為。下表由 ruleCatalog() 直接產生;嚴重度為預設值,部分規則會依強度升級(例如 R06 強度 ≥ 0.85 時升為高)。

ID名稱類型說明嚴重度權重適用鏈
R01制裁名單主體制裁調查地址本身列於 OFAC SDN 制裁名單,任何往來皆可能違反制裁規定。極高100全部
R02制裁直接往來制裁與 OFAC 制裁地址有直接轉入或轉出紀錄;轉出至制裁地址視為最嚴重情形。極高90全部
R03制裁間接暴露(1-hop)制裁主要交易對手(依金額前 N 名)曾與制裁地址或混幣器直接往來,形成間接暴露。高45全部
R04混幣器互動混幣/匿名化與 Tornado Cash 等混幣器合約往來。存入(轉出至混幣器)權重高於提領。高60全部
R05CoinJoin 混幣交易混幣/匿名化比特幣交易具多輸入、多輸出且大量輸出金額相同(Whirlpool/Wasabi 等 CoinJoin 特徵)。中40BTC
R06結構化/拆分交易結構化 (Structuring)7 天內多筆金額落在申報門檻 85%–100% 之間(US$10,000、US$3,000、約 NT$500,000),或 24 小時內大量小額來源匯集超過門檻(Smurfing)。中40全部
R07快速過帳/分層分層 (Layering)資金轉入後短時間(EVM/TRON 1 小時、BTC 6 小時)內 80% 以上即轉出,且整體留存率極低,屬典型過水帳戶行為。高45全部
R08剝離鏈 (Peel Chain)分層 (Layering)比特幣交易反覆以「小額支付 + 大額找零」方式逐步剝離資金(小額/大額輸出比 < 0.2),常見於駭客與勒索款洗錢。中35BTC
R09A資金匯集 (Fan-in)匯集24 小時內自 20 個以上(或 7 天內 50 個以上)不同地址收款,常見於詐騙收款或車手帳戶。中30全部
R09B資金分散 (Fan-out)分散24 小時內轉出至 20 個以上(或 7 天內 50 個以上)不同地址,常見於分散洗錢或空投洗量。中30全部
R10交易速度突增異常行為單日交易筆數相對於歷史基線的穩健 z 分數 > 3.5 且至少 10 筆。中25全部
R11整數金額偏好異常行為過半數交易為整數金額(如 10 ETH、5,000 USDT),常見於人工操作的洗錢或詐騙收付。低15全部
R12休眠後活化異常行為地址沉寂 180 天以上後,於 7 天內移動 US$50,000 以上資金。中30全部
R13新地址大額異常行為建立不到 30 天的地址即轉入或轉出 US$100,000 以上(US$1,000,000 以上為高風險)資金。中25全部
R14A地址投毒(受害目標)詐騙收到與既有交易對手首尾字元相同之「相似地址」發出的零元、粉塵或假冒穩定幣轉帳。中20ETHBSCTRON
R14B地址投毒受害轉帳詐騙在投毒事件後,實際轉帳至仿冒的相似地址,資金極可能已遭竊取。高55ETHBSCTRON
R14C地址投毒攻擊者詐騙地址活動以零元/粉塵/假代幣轉帳為主,且對象達 10 個以上,符合投毒攻擊者特徵。高60ETHBSCTRON
R15詐騙/釣魚交易對手詐騙交易對手被標記為詐騙、釣魚、駭客或漏洞利用者(Blockscout 標籤、is_scam 或內建名單)。高50全部
R16跨鏈橋跳轉分層/跨鏈資金自跨鏈橋轉入後短時間內再轉往跨鏈橋,常見於跨鏈分層以切斷追蹤。中30全部
R17高風險服務高風險服務交易對手為高風險服務(如受 FinCEN 311 處分之擔保平台、無 KYC 交易所、線上博弈)。高40全部
R18統計離群金額統計異常以 log 金額的穩健 z 分數(MAD)偵測離群交易:z > 3.5、金額 ≥ US$10,000 且為中位數 5 倍以上。低12全部

5. 關鍵門檻

所有偵測門檻集中於 RULE_CONFIG,下表為程式內的實際值。台灣大額通貨交易申報門檻 NT$500,000 以約 US$15,500 換算。

規則項目門檻
R031-hop 追蹤的主要交易對手依金額前 5 名(BSC 前 3 名);強度下限 0.3
R05CoinJoin 特徵輸入 ≥ 5、輸出 ≥ 5、等額輸出 ≥ 5(每筆 ≥ 0.001 BTC)
R05Whirlpool 池面額0.001 / 0.01 / 0.05 / 0.5 BTC
R06結構化:申報門檻US$10,000、US$3,000、US$15,500
R06結構化:門檻區間與頻率門檻 85%–100%,7 天內 ≥ 3 筆
R06Smurfing(小額匯集)1 天內 ≥ 10 個來源、單筆 < US$1,000、合計 ≥ US$10,000
R07快速過帳轉入後 1.0 小時(BTC 6.0 小時)內轉出 ≥ 80%;≥ 3 次;單次轉入 ≥ US$100
R08剝離鏈≥ 3 次「小額支付 + 大額找零」,小額/大額比 < 0.2
R09A/B資金匯集/分散24 小時內 ≥ 20 個或 7 天內 ≥ 50 個不同地址
R10交易速度突增單日筆數穩健 z > 3.5 且 ≥ 10 筆;基線 7–90 天
R11整數金額偏好整數金額占比 ≥ 50%,樣本 ≥ 5 筆
R12休眠後活化沉寂 ≥ 180 天,之後 7 天內移動 ≥ US$50,000
R13新地址大額地址年齡 < 30 天,金額 ≥ US$100,000(≥ US$1,000,000 升為高)
R14A/B/C地址投毒粉塵 < US$1;攻擊者:對象 ≥ 10 個、投毒轉帳占比 ≥ 80%;相似地址 = 首尾各 4 字元相同
R16跨鏈橋跳轉2.0 小時內 ≥ 2 次跨鏈橋進出
R18統計離群金額log 金額穩健 z > 3.5、≥ US$10,000、≥ 中位數 5 倍;樣本 ≥ 10
A統計異常指數金額/間隔/單日筆數穩健 z ≥ 3.5(間隔 < 600 秒、爆量日 ≥ 10 筆);最多加成 10%
—交易所/服務商減權×0.3,適用 R06、R07、R09A、R09B、R10、R11、R18

6. 風險評分

每條命中規則 i 有權重 wi(0–100)與強度 ci(0–1)。規則分數以 noisy-OR 合成,具飽和性,多條弱訊號不會無限累加:

S_rules = 100 · [ 1 − Π_i ( 1 − w_i · c_i / 100 ) ]

再以統計異常指數 A(0–1;金額離群、短間隔連續交易、爆量日)做有上限的加成(最多 +10%):

S = 100 · [ 1 − ( 1 − S_rules / 100 ) · ( 1 − 0.1 · A ) ]

最後套用嚴重度下限,避免關鍵訊號被稀釋,並四捨五入為整數:

  • R01(地址本身在制裁名單)⇒ S = 100
  • R02(與制裁地址直接往來)⇒ S ≥ 80
  • 任一未減權之「極高」嚴重度規則 ⇒ S ≥ 75
  • 任一未減權之「高」嚴重度規則 ⇒ S ≥ 50

交易所減權:若調查對象本身為交易所/服務商,行為類規則(R06、R07、R09A、R09B、R10、R11、R18)的貢獻乘以 ×0.3,以降低熱錢包大量收付造成的誤報。

低風險

0–24

低:一般盡職調查即可

中風險

25–49

中:加入觀察、必要時補充說明

高風險

50–74

高:啟動加強盡職調查(EDD)

極高風險

75–100

極高:暫停往來並評估申報 STR

7. 機器學習異常偵測(Isolation Forest)

規則擅長捕捉已知態樣;為了發現「與該地址自身行為模式不同」的交易,系統另以 Isolation Forest(Liu, Ting & Zhou, 2008)做非監督式異常偵測。模型在瀏覽器端對每個地址即時訓練與評分,不需標註資料。

特徵(12 維,每筆交易一列)

#特徵中文名稱定義
1log_usd金額規模log₁₀(1 + 美元金額)
2direction資金方向轉入 0、轉出 1、自轉 0.5
3hour_sin交易時段交易時刻(UTC)的正弦編碼
4hour_cos交易時段交易時刻(UTC)的餘弦編碼
5log_gap_prev與前筆交易間隔log₁₀(1 + 與前一筆的秒數)
6log_hold轉入至轉出的持有時間轉出距最近一次轉入的持有秒數(log)
7cp_frequency交易對手往來頻率該交易對手出現次數 / 總筆數
8first_interaction首次往來的對手是否為首次往來的對手(0/1)
9label_risk對手標籤風險對手標籤風險(制裁 1、混幣 0.9…未標記 0.15)
10amount_z金額偏離程度log 金額的穩健 z 分數(截斷於 ±10)
11round_amount整數金額是否為整數金額(0/1)
12degree_24h24 小時內對手數log₁₀(1 + 24 小時內不同對手數)

演算法

  • 建立 100 棵隔離樹;每棵樹自 n 筆交易中不放回抽樣 ψ = min(256, n) 筆,樹高上限 ⌈log₂ ψ⌉。
  • 每個節點隨機選擇一個特徵與介於最小、最大值之間的切點遞迴分割;異常點通常較早被「隔離」,路徑長度 h(x) 較短。
  • 異常分數:
s(x) = 2^( −E[h(x)] / c(ψ) ),c(n) = 2·H(n−1) − 2(n−1)/n,H(i) ≈ ln(i) + 0.5772
  • s 接近 1 表示極易被隔離(異常),約 0.5 以下表示正常。s > 0.6,或位於前 5% 且 s > 0.5 時標記為異常。
  • 可解釋性:以各特徵的穩健 z 分數找出偏離最大的特徵作為標記原因(例如「金額規模異常(z=+4.2)」)。
  • 可重現性:亂數種子由地址決定,同一份資料每次結果相同。
  • 樣本需 ≥ 20 筆成功交易,否則顯示「樣本不足」。
  • ML 分數與官方風險分數分開呈現,不影響規則評分;它是協助調查人員排序與聚焦的輔助訊號。

8. AI Agent 設計(Z.ai GLM)

調查報告由 GLM 以 function calling 驅動的 Agent 產生。Agent 在 Worker 中執行,事件以 SSE 即時串流到瀏覽器(狀態、工具呼叫與結果、預算、報告)。可用工具:

工具名稱用途
get_address_profile取得地址概況餘額、交易數、首次/最近活動時間與地址標籤
get_transactions取得交易紀錄近期交易摘要(方向、對手、金額、時間),供報告引用
run_aml_analysis執行 AML 規則分析執行 21 條規則與評分;回傳分數、等級、命中規則與證據(分數以此為準)
screen_sanctions制裁名單篩查檢查地址是否列於 OFAC SDN 名單
trace_counterparties追蹤交易對手追蹤主要交易對手的 1-hop 曝險(是否接觸制裁地址或混幣器)

防幻覺護欄

  1. 分數由程式計算:風險分數、等級與規則命中只來自 run_aml_analysis,LLM 無權更改。
  2. 評分卡前置:報告開頭固定插入由程式產生的評分卡(分數、S_rules、統計加成、下限與規則貢獻表),LLM 的文字接在其後。
  3. 未驗證地址標註:報告中出現、但未經工具查得的地址會被標記為「未驗證」,並統計數量顯示於報告標頭。
  4. 預算與輪數限制:限制 Worker 子請求數與 LLM 輪數,避免失控迴圈;預算即時顯示於執行軌跡。
  5. 失效安全:LLM 無法使用或逾時時,改以規則模板產生完整報告(標示「規則模板(LLM 不可用)」)。
  6. 輸入清洗:代幣名稱、標籤等鏈上字串先去除控制字元與標記符號,降低提示注入風險;前端不渲染報告中的原始 HTML。

9. 限制

  • 地址標籤與制裁名單並不完整;未標記不代表無風險,制裁名單亦可能有更新延遲。
  • 受免費 API 分頁與 Worker 子請求上限影響,僅分析最近一段交易;長期歷史可能被截斷(會於「資料品質」標示)。
  • 美元估值依可取得的價格資料換算,部分代幣(尤其新發行或假冒代幣)可能缺少價格。
  • 1-hop 曝險僅追蹤主要交易對手,未做多跳圖分析;跨鏈資金流需人工串接。
  • 規則門檻為一般化設定,可能對特定業務(如做市商、支付服務)產生誤報;交易所減權僅部分緩解。
  • Isolation Forest 只比較地址自身的交易分布,對交易筆數少或行為極為一致的地址效果有限。
  • LLM 報告可能出現措辭不精確;所有結論應以評分卡與規則證據為準。
  • 情境資料為合成資料,用於展示偵測邏輯,不代表真實案件。

10. 免責聲明

本系統為課程專題展示,僅供風險評估參考,不構成法律意見;地址標籤與制裁名單可能不完整。任何凍結、申報(STR)或拒絕往來之決定,應由合格之法令遵循人員依《洗錢防制法》及相關法規綜合判斷。本系統涉及之 Ethereum、BNB Smart Chain、TRON、Bitcoin 地址資料均來自公開區塊鏈與公開 API。