instructions.md Copy instructions---
name: misttrack-skills-cf5117bff46c
description: 使用 MistTrack OpenAPI 进行加密货币地址风险分析、AML 合规检测和交易追踪。MistTrack 是由 SlowMist 开发的反洗钱追踪工具,支持 BTC、ETH、TRX、BNB 等主流链上地址与交易的风险评分、标签查询、交易调查等功能。
---
# MistTrack OpenAPI 技能
## 概述
MistTrack 是由 [SlowMist](https://www.slowmist.com/en/) 开发的加密货币反洗钱(AML)追踪工具,专注于打击加密货币洗钱活动。
- 收录超过 **4 亿个**地址(涵盖主要交易平台的各类钱包)
- 提供 **50 万条**威胁情报地址
- 标记超过 **9000 万个**与恶意活动相关的地址
## API 基本信息
### Base URL
```
https://openapi.misttrack.io
```
### 认证方式
所有请求均需在 Query Parameter 中传入 `api_key`(GET 请求)或 Request Body(POST 请求)。
### 通用响应结构
| 字段 | 类型 | 说明 |
|------|------|------|
| `success` | Boolean | 请求是否成功 |
| `msg` | String | 失败时的错误信息 |
| `data` | Dictionary | 响应数据 |
### 速率限制(Rate Limits)
| 套餐 | 速率 | 每日限额 |
|------|------|----------|
| Standard | 1 次/秒/key | 10,000 次/天/key |
| Compliance | 5 次/秒/key | 50,000 次/天/key |
| Enterprise | 无限制 | 无限制 |
超出限制时返回:
```json
{"success": false, "msg": "ExceededDailyRateLimit", "retry_after": 12345}
{"success": false, "msg": "ExceededRateLimit", "retry_after": 1}
```
---
## 常见错误码
| HTTP 状态码 | 原因 | 解决方案 |
|------------|------|----------|
| 402 | MistTrack 订阅已过期 | 登录并续订 |
| 429 | 请求速度过快 | 参考速率限制指南控制请求频率 |
| 500 | 服务端错误 | 稍后重试 |
### 错误消息(`msg` 字段)
| `msg` 值 | 说明 |
|----------|------|
| `ExceededRateLimit` | 超过每秒速率限制 |
| `ExceededDailyRateLimit` | 超过每日速率限制 |
| `InvalidApiKey` | API Key 无效 |
| `UnsupportedToken` | 不支持的代币 |
| `InvalidAddress` | 无效地址 |
| `PageNotFound` | 页面未找到 |
| `ExpiredPlan` | 套餐已过期 |
| `TaskNotFound` | 任务不存在(需先创建) |
| `UnsupportedAddressType` | 不支持的地址类型(如热钱包地址) |
---
## 多链支持
MistTrack 支持以下区块链及代币:
- **Bitcoin**: BTC
- **Ethereum**: ETH, USDT-ERC20, USDC-ERC20, WETH-ERC20, PEPE-ERC20, SHIB-ERC20, DAI-ERC20 等
- **TRON**: TRX, USDT-TRC20, USDC-TRC20, USDD-TRC20
- **BNB Smart Chain**: BNB, USDT-BEP20, BUSD-BEP20, ETH-BEP20 等
- **Polygon**: POL-Polygon, USDT-Polygon, USDC-Polygon, WETH-Polygon 等
- **Arbitrum One**: ETH-Arbitrum, USDT-Arbitrum, USDC-Arbitrum 等
- **OP Mainnet**: ETH-Optimism, USDT-Optimism, USDC-Optimism 等
- **Base**: ETH-Base, USDC-Base, USDT-Base 等
- **Avalanche**: AVAX-Avalanche, USDT-Avalanche, USDC-Avalanche 等
- **zkSync Era**: ETH-zkSync, ZK-zkSync, USDT-zkSync, USDC-zkSync
- **Toncoin**: TON, USDT-TON
- **Solana**: SOL, USDT-Solana, USDC-Solana, Bonk-Solana 等
- **Litecoin**: LTC
- **Dogecoin**: DOGE
- **Bitcoin Cash**: BCH
- **Merlin Chain**: BTC-Merlin
- **HashKey Chain**: HSK
- **Sui**: SUI, wUSDT-SUI, USDC-SUI
- **IoTeX**: IOTX
完整代币列表请调用 `/v1/status` 接口获取。
---
## API 端点列表
### 1. 获取 API 状态 (`v1/status`)
**功能**:返回 API 状态及支持的代币列表。
```
GET https://openapi.misttrack.io/v1/status
```
**请求参数**:无
**响应示例**:
```json
{
"success": true,
"msg": "",
"data": {
"support_api": ["status", "address_labels", "risk_score", "transactions_investigation", "address_overview", "address_action", "address_trace"],
"support_coin": ["ETH", "USDT-ERC20", "BTC", "TRX", "USDT-TRC20", "..."]
}
}
```
---
### 2. 获取地址标签 (`v1/address_labels`)
**功能**:返回指定地址的标签列表,包括实体名称、地址类型、链上标签、链下标签等。
```
GET https://openapi.misttrack.io/v1/address_labels?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币(如 ETH、BTC、TRX) |
| `address` | string | ✅ | 查询的地址 |
| `api_key` | string | ✅ | API 密钥 |
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `label_list` | list | 地址标签列表,包含实体名称(如 Coinbase、Binance)、地址类型(deposit/hot/cold wallet)、链上标签(ENS、MEV Bots、DeFi Whales)、链下标签(MetaMask Wallet User、Twitter handle) |
| `label_type` | string | 地址类型分类:`exchange`(中心化交易所、支付平台)/ `defi`(DeFi 项目、跨链桥)/ `mixer`(混币器或无 KYC 即时兑换)/ `nft`(NFT 市场)/ 空字符串(未分类) |
**响应示例**:
```json
{
"success": true,
"msg": "",
"data": {
"label_list": ["Binance", "hot"],
"label_type": "exchange"
}
}
```
---
### 3. 获取地址概览 (`v1/address_overview`)
**功能**:返回指定地址的余额及统计数据。
```
GET https://openapi.misttrack.io/v1/address_overview?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | ✅ | 查询的地址 |
| `api_key` | string | ✅ | API 密钥 |
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `balance` | float(4) | 地址余额 |
| `txs_count` | int | 总交易数 |
| `first_seen` | int | 首次交易时间(Unix 时间戳) |
| `last_seen` | int | 最近交易时间(Unix 时间戳) |
| `total_received` | float(4) | 总接收金额 |
| `total_spent` | float(4) | 总支出金额 |
| `received_txs_count` | int | 接收交易总数 |
| `spent_txs_count` | int | 发出交易总数 |
**响应示例**:
```json
{
"success": true,
"msg": "",
"data": {
"balance": 49.8305,
"txs_count": 1231,
"first_seen": 1441800674,
"last_seen": 1670971955,
"total_received": 916204.8697,
"total_spent": 916151.0499,
"received_txs_count": 1018,
"spent_txs_count": 213
}
}
```
---
### 4. 获取风险评分 - 同步模式 (`v2/risk_score`)
**功能**:返回指定地址或交易哈希的 AML 风险评分及风险详情(KYT/KYA)。
> ⚠️ **注意**:风险评分基于地址的所有相关交易计算,因此同一地址下所有代币会获得相同的评分。
```
GET https://openapi.misttrack.io/v2/risk_score?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | 与 txid 二选一 | 查询的地址 |
| `txid` | string | 与 address 二选一 | 查询的交易哈希 |
| `api_key` | string | ✅ | API 密钥 |
> `address` 和 `txid` 只传其中一个,不能同时传。
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `score` | int | 风险评分,范围 3~100 |
| `hacking_event` | string | 相关安全事件名称 |
| `detail_list` | list | 风险描述列表 |
| `risk_level` | string | 风险级别:Low / Moderate / High / Severe |
| `risk_detail` | list | 风险评分计算详情 |
| `risk_report_url` | string | MistTrack AML 风险报告 PDF 链接 |
**`risk_detail` 子字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `entity` | string | 风险实体名称(如 garantex.io) |
| `risk_type` | string | 风险类型:`sanctioned_entity` / `illicit_activity` / `mixer` / `gambling` / `risk_exchange` / `bridge` |
| `exposure_type` | string | 暴露类型:`direct`(直接) / `indirect`(间接) |
| `hop_num` | int | 到风险实体的跳数(≥1) |
| `volume` | float | 与风险实体的交易总额(USD) |
| `percent` | float | 占总交易额的百分比 |
#### 风险描述(`detail_list` 可能的值)
| 描述 | 含义 |
|------|------|
| Malicious Address | 直接参与恶意事件的地址(如 DeFi 攻击者、黑客、被制裁地址) |
| Suspected Malicious Address | 与恶意事件相关的地址 |
| High-risk Tag Address | 高风险实体地址(如混币器、某些嵌套交易所) |
| Medium-risk Tag Address | 中风险实体地址(如赌博平台、无 KYC 交易所) |
| Mixer | 混币器地址(如 Tornado Cash) |
| Sanctioned Entity | 被制裁实体地址(如 garantex) |
| Risk Exchange | 无 KYC 要求的交易所 |
| Gambling | 赌博平台地址 |
| Involved Theft Activity | 参与盗窃事件的地址 |
| Involved Ransom Activity | 参与勒索事件的地址 |
| Involved Phishing Activity | 参与钓鱼事件的地址 |
| Involved Illicit Activity | 参与非法活动的地址(如洗钱) |
| Interact With Malicious Address | 与恶意地址有交互 |
| Interact With Suspected Malicious Address | 与疑似恶意地址有交互 |
| Interact With High-risk Tag Address | 与高风险地址有交互 |
| Interact With Medium-risk Tag Addresses | 与中风险地址有交互 |
#### 风险级别指南
| 风险级别 | 分数范围 | 建议操作 |
|----------|----------|----------|
| **Severe** | 91~100 | 禁止提现和交易,立即上报地址 |
| **High** | 71~90 | 高度监控,通过 MistTrack AML 平台或 OpenAPI 进行交易分析 |
| **Moderate** | 31~70 | 需要适度监管 |
| **Low** | 0~30 | 最低监管要求 |
**响应示例**:
```json
{
"success": true,
"msg": "",
"data": {
"score": 35,
"hacking_event": "",
"detail_list": ["Involved Illicit Activity", "Interact With High-risk Tag Address"],
"risk_level": "Moderate",
"risk_detail": [
{
"entity": "huionepay",
"risk_type": "sanctioned_entity",
"volume": 6700352.55,
"hop_num": 2,
"exposure_type": "indirect",
"percent": 3.419
}
],
"risk_report_url": "https://light.misttrack.io/riskReport/0x..."
}
}
```
---
### 5. 获取风险评分 - 异步模式 (`v2/risk_score_create_task` & `v2/risk_score_query_task`)
**功能**:以异步方式获取地址或交易的风险评分(适用于大批量查询场景)。
#### 5.1 创建任务 (`v2/risk_score_create_task`)
```
POST https://openapi.misttrack.io/v2/risk_score_create_task
Content-Type: application/json
```
**请求 Body**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | 与 txid 二选一 | 查询的地址 |
| `txid` | string | 与 address 二选一 | 查询的交易哈希 |
| `api_key` | string | ✅ | API 密钥 |
**cURL 示例**:
```bash
curl --location 'https://openapi.misttrack.io/v2/risk_score_create_task' \
--header 'Content-Type: application/json' \
--data '{
"address": "TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G",
"coin": "TRX",
"api_key": "YourApiKey"
}'
```
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `has_result` | bool | 是否已有缓存结果 |
| `scanned_ts` | int | 任务结果生成时间戳 |
- **Cache Miss**(`has_result: false`):等待 1-10 秒后调用 `v2/risk_score_query_task`
- **Cache Hit**(`has_result: true`):立即调用 `v2/risk_score_query_task`
#### 5.2 查询任务结果 (`v2/risk_score_query_task`)
> ⚠️ 此接口**无速率限制**。
```
GET https://openapi.misttrack.io/v2/risk_score_query_task?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:与创建任务接口相同。
**响应**:
- 任务未完成:`{"success": true, "msg": "TaskUnderRunning"}`
- 任务完成:与同步 `v2/risk_score` 响应结构相同(含 score、risk_level、detail_list、risk_detail)
---
### 6. 交易调查 (`v1/transactions_investigation`)
**功能**:返回指定地址的交易调查结果,包含转入/转出交易列表及关联地址信息。
```
GET https://openapi.misttrack.io/v1/transactions_investigation?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | ✅ | 查询的地址 |
| `api_key` | string | ✅ | API 密钥 |
| `start_timestamp` | int | ❌ | 开始时间戳(默认为 0) |
| `end_timestamp` | int | ❌ | 结束时间戳(默认为当前时间) |
| `type` | string | ❌ | 查询类型:`in`、`out`、`all`(默认 `all`) |
| `page` | int | ❌ | 页码(默认为 1) |
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `in` | list | 转入交易列表 |
| `out` | list | 转出交易列表 |
| `page` | int | 当前页码 |
| `total_pages` | int | 总页数 |
| `transactions_on_page` | int | 当前页交易数量(最多 1000 条) |
**交易条目子字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `address` | string | 与查询地址有转账关系的地址 |
| `type` | int | 地址类型:1=EOA/BTC地址,2=恶意地址,3=实体标签地址,4=合约地址 |
| `tx_hash_list` | list | 相关交易哈希列表 |
| `amount` | float(4) | 总转账金额 |
| `label` | string | 地址标签详情 |
**响应示例**:
```json
{
"success": true,
"msg": "",
"data": {
"out": [
{
"address": "0xd90e2f925da726b50c4ed8d0fb90ad053324f31b",
"tx_hash_list": ["0x48c2601b..."],
"amount": 743,
"type": 3,
"label": "Tornado.Cash: Router"
}
],
"in": [...],
"page": 1,
"total_pages": 1,
"transactions_on_page": 36
}
}
```
---
### 7. 地址行为分析 (`v1/address_action`)
**功能**:返回指定地址的交易行为分析结果(适合以饼图方式展示)。
```
GET https://openapi.misttrack.io/v1/address_action?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | ✅ | 查询的地址 |
| `api_key` | string | ✅ | API 密钥 |
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `received_txs` | list | 转入交易行为分析结果列表 |
| `spent_txs` | list | 转出交易行为分析结果列表 |
**行为条目子字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `action` | string | 行为类型(如 DEX、Exchange、Mixer、Transfer、Swap) |
| `count` | int | 该类型交易数量 |
| `proportion` | float | 占比(百分比) |
**响应示例**:
```json
{
"success": true,
"msg": "",
"action_dic": {
"received_txs": [
{"action": "DEX", "count": 7, "proportion": 70.0},
{"action": "Mixer", "count": 1, "proportion": 10.0},
{"action": "Exchange", "count": 1, "proportion": 10.0},
{"action": "Swap", "count": 1, "proportion": 10.0}
],
"spent_txs": [
{"action": "Exchange", "count": 15, "proportion": 57.69},
{"action": "DEX", "count": 2, "proportion": 7.69},
{"action": "Transfer", "count": 9, "proportion": 34.62}
]
}
}
```
---
### 8. 地址画像 / 地址追踪 (`v1/address_trace`)
**功能**:追踪地址与哪些平台有过交互(交易所、混币器、DeFi 协议、NFT 平台),识别相关恶意事件,并提供地址附加信息(使用的钱包、ENS 名称、关联 Twitter 账号)。
```
GET https://openapi.misttrack.io/v1/address_trace?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | ✅ | 查询的地址 |
| `api_key` | string | ✅ | API 密钥 |
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `first_address` | string | Gas 费用的来源钱包地址或其标签 |
| `use_platform` | dict | 交互平台信息,包含 `exchange`(交易所)、`dex`(DEX)、`mixer`(混币器)、`nft`(NFT 平台) |
| `malicious_event` | dict | 恶意事件信息,包含 `phishing`(钓鱼)、`ransom`(勒索)、`stealing`(盗窃)、`laundering`(洗钱) |
| `relation_info` | dict | 关联信息,包含 `wallet`(关联钱包)、`ens`(ENS 名称)、`twitter`(Twitter 账号) |
**响应示例**:
```json
{
"success": true,
"msg": "",
"data": {
"first_address": "sideshift.ai",
"use_platform": {
"exchange": {"count": 1, "exchange_list": ["Binance"]},
"dex": {"count": 3, "dex_list": ["Uniswap", "SushiSwap", "Multichain"]},
"mixer": {"count": 2, "mixer_list": ["Tornado.Cash", "sideshift.ai"]},
"nft": {"count": 0, "nft_list": []}
},
"malicious_event": {
"phishing": {"count": 0, "phishing_list": []},
"ransom": {"count": 0, "ransom_list": []},
"stealing": {"count": 5, "stealing_list": ["MMFinance Exploiter"]},
"laundering": {"count": 0, "laundering_list": []}
},
"relation_info": {
"wallet": {"count": 0, "wallet_list": []},
"ens": {"count": 2, "ens_list": ["destruction.eth", "poma.eth"]},
"twitter": {"count": 1, "twitter_list": ["@destructioneth"]}
}
}
}
```
---
### 9. 地址交易对手分析 (`v1/address_counterparty`)
**功能**:返回指定地址的交易对手分析结果(适合以饼图方式展示)。
> ⚠️ **注意**:此接口不支持分析热钱包地址,会返回 `UnsupportedAddressType` 错误。
```
GET https://openapi.misttrack.io/v1/address_counterparty?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | ✅ | 查询的地址 |
| `api_key` | string | ✅ | API 密钥 |
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `address_counterparty_list` | list | 交易对手列表 |
**交易对手条目子字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `name` | string | 实体名称(如 Uniswap、Tornado.Cash、Binance) |
| `amount` | float | 总交易金额(USD) |
| `percent` | float | 占比(百分比) |
**响应示例**:
```json
{
"success": true,
"msg": "",
"address_counterparty_list": [
{"name": "Uniswap", "amount": 4496524.699, "percent": 49.678},
{"name": "Tornado.Cash", "amount": 2377637.58, "percent": 26.268},
{"name": "Binance", "amount": 302.008, "percent": 0.003}
]
}
```
---
## 使用示例
### 场景 1:快速地址风险检测(KYT)
当需要对提币/充值地址进行快速 AML 检查时:
1. 调用 `v2/risk_score` 获取风险评分
2. 根据 `risk_level` 决策:
- `Severe` (91-100):拒绝交易并上报
- `High` (71-90):需人工复核
- `Moderate` (31-70):适度监控
- `Low` (0-30):正常放行
### 场景 2:批量异步风险检测
当需要批量检测大量地址时使用异步模式:
1. 循环调用 `POST v2/risk_score_create_task` 创建任务
2. 等待 1-10 秒(如 `has_result: false`)
3. 调用 `GET v2/risk_score_query_task` 轮询结果(无速率限制)
### 场景 3:地址完整画像调查
对可疑地址进行全面调查时,建议依次调用:
1. `v1/address_labels` → 了解地址实体身份
2. `v1/address_overview` → 了解地址活跃度和资产规模
3. `v2/risk_score` → 获取 AML 风险评分
4. `v1/address_trace` → 了解地址平台交互历史及关联信息
5. `v1/transactions_investigation` → 深入分析具体交易流向
6. `v1/address_counterparty` → 分析主要交易对手构成
---
## 示例脚本
参考 `scripts/` 目录中的示例脚本:
- `risk_check.py` - 单地址风险评分检查
- `batch_risk_check.py` - 批量异步风险评分
- `address_investigation.py` - 地址完整调查
---
## 与 Bitget Wallet Skill 集成 — 转账地址安全检测
> **适用场景**:当 Agent 同时加载了 [bitget-wallet-skill](https://github.com/bitget-wallet-ai-lab/bitget-wallet-skill) 和 misttrack-skills 时,在执行任何**转账 / Swap** 操作前,必须自动调用本技能对**目标地址(recipient / to-address)** 进行 AML 风险检测。
### 为什么需要地址级安全检测?
bitget-wallet-skill 的 Pre-Trade Workflow 已覆盖**代币安全**(蜜罐、税率、流动性),但未检测**收款方地址**的 AML 风险。向被制裁地址、混币器出金地址或黑客钱包转账可能导致:
- 资产被链上追踪机构标记
- 触犯 OFAC 制裁合规要求
- 资金被交易所冻结(如目标是洗钱中转地址)
misttrack-skills 专门填补这一缺口。
---
### 链代码映射表
将 bitget-wallet-skill 的 `chain` 参数映射为 MistTrack `coin` 参数:
| bitget-wallet-skill chain | MistTrack coin | 说明 |
|--------------------------|---------------|------|
| `eth` | `ETH` | Ethereum 原生代币 |
| `sol` | `SOL` | Solana 原生代币 |
| `bnb` | `BNB` | BNB Chain 原生代币 |
| `trx` | `TRX` | TRON 原生代币 |
| `base` | `ETH-Base` | Base 链 ETH |
| `arbitrum` | `ETH-Arbitrum` | Arbitrum 链 ETH |
| `optimism` | `ETH-Optimism` | OP Mainnet ETH |
| `matic` | `POL-Polygon` | Polygon 链原生代币 |
| `ton` | `TON` | TON 链原生代币 |
| `suinet` | `SUI` | Sui 链原生代币 |
> **稳定币注意**:若转账代币为 USDT/USDC(非原生代币),MistTrack 风险评分**对地址是全局计算的**(与代币无关),因此使用原生代币的 coin 参数查询即可。
---
### 决策逻辑
| MistTrack 风险等级 | 分数范围 | Agent 决策 | 操作 |
|-----------------|----------|-----------|------|
| **Low** | 0–30 | ✅ ALLOW | 静默通过,正常继续转账流程 |
| **Moderate** | 31–70 | ⚠️ WARN | 向用户展示风险摘要,请求二次确认后方可继续 |
| **High** | 71–90 | ⚠️ WARN | 向用户展示详细风险报告,强烈建议取消,需明确二次确认 |
| **Severe** | 91–100 | ❌ BLOCK | 拒绝执行转账,告知用户目标地址存在严重风险 |
> **特例 — 已认证白名单地址**:若 `v1/address_labels` 返回的 `label_type` 为 `exchange`(如 Binance、Coinbase 充值地址),且 `risk_level` 为 Low 或 Moderate,可直接 ALLOW,无需二次确认。
---
### Agent 集成工作流
Agent 在执行 `swap-calldata` 或任何转账指令**之前**,自动执行以下步骤(对用户透明,不中断流程):
```
转账安全检测流程(Agent 后台自动执行):
1. 提取目标地址(swap --to-address 或用户指定的收款地址)
2. 识别链类型(通过上方映射表 chain → coin)
3. 调用风险评分脚本:
python3 scripts/transfer_security_check.py --address <to_address> --chain <chain_code>
4. 读取 exit code 和 JSON 输出,按决策逻辑处理:
- exit 0 (ALLOW) → 静默继续,在最终确认摘要中显示 "✅ 收款地址安全"
- exit 1 (WARN) → 暂停,向用户显示风险摘要,等待用户明确确认
- exit 2 (BLOCK) → 终止流程,向用户说明原因,建议放弃转账
- exit 3 (ERROR) → API 不可用,显示 "⚠️ 地址安全检测失败(原因:...)",由用户决定是否继续
```
#### 集成到 bitget-wallet-skill Pre-Trade Workflow
在原有 bitget-wallet-skill 的 Pre-Trade Workflow 基础上,插入第 0 步:
```
0. transfer-security → 检测收款地址 AML 风险(新增,使用 misttrack-skills)
1. security → 检查代币安全(honeypot、tax)
2. token-info → 获取价格、市值
3. liquidity → 检查池深度
4. swap-quote → 获取报价和路由
```
---
### 调用示例
#### 基础调用(推荐 Agent 使用)
```bash
# ETH 链地址检测
python3 scripts/transfer_security_check.py \
--address 0xd90e2f925DA726b50C4Ed8D0Fb90Ad053324F31b \
--chain eth
# Solana 链地址检测
python3 scripts/transfer_security_check.py \
--address 5tzFkiKscXHK5B17AoKFdroMRCEVGvSqtPkRSLzprFwN \
--chain sol
# JSON 输出(便于 Agent 解析)
python3 scripts/transfer_security_check.py \
--address 0x28C6c06298d514Db089934071355E5743bf21d60 \
--chain eth --json
```
#### JSON 输出格式
```json
{
"decision": "ALLOW",
"score": 15,
"risk_level": "Low",
"detail_list": [],
"label_type": "exchange",
"label_list": ["Binance", "hot"],
"risk_report_url": "https://light.misttrack.io/riskReport/0x...",
"address": "0x28C6c06298d514Db089934071355E5743bf21d60",
"coin": "ETH",
"chain": "eth"
}
```
#### WARN 场景示例输出(展示给用户)
```
⚠️ 收款地址安全警告
────────────────────────────────────
地址: 0xABCD...1234
链: ETH
风险评分:55 (Moderate)
风险描述:Interact With High-risk Tag Address, Involved Illicit Activity
风险报告:https://light.misttrack.io/riskReport/0xABCD...
建议:该地址存在中等风险,请确认收款方身份后再继续。
是否仍要继续转账?[yes/no]
```
---
### API 不可用时的降级策略
| 场景 | 原因 | 处理方式 |
|------|------|---------|
| `MISTTRACK_API_KEY` 未设置 | 未配置 | exit 3,警告用户前往设置 |
| `InvalidApiKey` | Key 无效或过期 | exit 3,提示检查 Key |
| `ExceededDailyRateLimit` | 超出每日限额 | exit 3,提示次日重试或升级套餐 |
| 网络超时 | 网络问题 | exit 3,重试 1 次后放弃 |
> **重要**:任何 exit 3 情况下,Agent 必须明确告知用户「地址安全检测失败,无法验证收款地址风险」,并让用户决定是否继续。**不得静默忽略检测失败**。
---
## 与 Trust Wallet Skills 集成 — 转账地址安全检测
> **适用场景**:当 Agent 同时加载了 [tw-agent-skills](https://github.com/trustwallet/tw-agent-skills)(`wallet-core` 或 `trust-web3-provider`)和 misttrack-skills 时,在生成任何含收款地址的代码之前,必须自动调用本技能进行 AML 风险检测。
### Trust Wallet Skills 的转账场景
Trust Wallet skills 是**开发者库**(非命令行工具),收款地址通过代码字段传入:
| 技能 | 场景 | 收款地址字段 |
|------|------|------------|
| **wallet-core** | Swift/Kotlin/TS 签名交易 | `toAddress`(ETH/BTC/Cosmos `sendCoinsMessage`) |
| **trust-web3-provider** | EthereumProvider handler | `eth_sendTransaction.to` |
| **trust-web3-provider** | TonProvider | `ton_sendTransaction.to` |
| **trust-web3-provider** | BitcoinProvider | `signPSBT` outputs 中的目标地址 |
| **trust-web3-provider** | TronProvider | `sign(transaction)` 的目标地址字段 |
### CoinType → MistTrack coin 映射表
| wallet-core CoinType | `--chain` 参数 | MistTrack coin |
|----------------------|--------------|---------------|
| `.ethereum` | `eth` | `ETH` |
| `.bitcoin` | `bitcoin` / `btc` | `BTC` |
| `.solana` | `solana` / `sol` | `SOL` |
| `.smartChain` | `smartchain` / `bsc` | `BNB` |
| `.tron` | `tron` / `trx` | `TRX` |
| `.polygon` | `polygon` / `matic` | `POL-Polygon` |
| `.ton` | `ton` / `tonchain` | `TON` |
| `.cosmos` | `cosmos` / `atom` | ⛔ 不支持,exit 3 |
| `.aptos` | `aptos` | ⛔ 不支持,exit 3 |
> **trust-web3-provider 链映射**:`EthereumProvider` chainId `0x1`→`eth`,`0x38`→`bnb`,`0x89`→`polygon`,`0xa`→`optimism`,`0xa4b1`→`arbitrum`,`0x2105`→`base`。
### Agent 触发规则
Agent 在以下任意时刻**应自动调用安全检测**:
#### wallet-core 场景
当 Agent 生成含 `toAddress` 的签名代码片段时,在给出代码前先检查该地址:
```bash
# 示例:用户请求为 Bitcoin 地址生成签名,先检查目标地址
python3 scripts/transfer_security_check.py \
--address 1MityqAKBEKHPkBpwDCqPMBNbYPxbNbKzr \
--chain bitcoin --json
# 示例:用户构建 Ethereum 转账,先检查 toAddress
python3 scripts/transfer_security_check.py \
--address 0xRecipient... \
--chain eth --json
```
#### trust-web3-provider 场景
当 Agent 帮开发者实现处理 `eth_sendTransaction` / `ton_sendTransaction` 的 handler 时,在处理逻辑中插入检测点:
```bash
# Handler 收到 eth_sendTransaction,目标地址在 params.to
python3 scripts/transfer_security_check.py \
--address <params.to> --chain eth --json
# Handler 收到 ton_sendTransaction
python3 scripts/transfer_security_check.py \
--address <params.to> --chain ton --json
```
### 决策规则(与 Bitget Wallet 集成相同)
| exit | 决策 | Agent 行为 |
|------|------|-----------|
| 0 | ✅ ALLOW | 正常生成代码,确认摘要中添加「✅ 收款地址安全」注释 |
| 1 | ⚠️ WARN | 向用户展示风险详情,等待明确确认后再生成代码 |
| 2 | ❌ BLOCK | 拒绝生成相关代码,向用户说明风险并建议更换地址 |
| 3 | ⚠️ ERROR | 通知用户检测失败原因(API 不可用/链不支持),由用户决定是否继续 |
### 不支持的链处理
**Aptos** 和 **Cosmos/ATOM** 目前 MistTrack 尚未收录,脚本会返回 exit 3 并给出说明:
```bash
$ python3 scripts/transfer_security_check.py --address 0xabc --chain aptos --json
{
"decision": "ERROR",
"error": "MistTrack 暂不支持 Aptos (APT) 链地址查询。请人工核实收款方身份。"
}
# exit code: 3
```
Agent 对此类 exit 3 应向用户说明「该链暂无自动安全检测,请通过其他方式核实收款方身份」。
---
## 参考资料
- [MistTrack 官方文档](https://docs.misttrack.io/)
- [MistTrack OpenAPI 概述](https://docs.misttrack.io/openapi/overview)
- [MistTrack 控制台](https://dashboard.misttrack.io)
- [常见错误消息](https://docs.misttrack.io/support/common-error-messages)
- [Bitget Wallet Skill](https://github.com/bitget-wallet-ai-lab/bitget-wallet-skill)
- [Trust Wallet tw-agent-skills](https://github.com/trustwallet/tw-agent-skills)
---
name: misttrack-skills-cf5117bff46c
description: 使用 MistTrack OpenAPI 进行加密货币地址风险分析、AML 合规检测和交易追踪。MistTrack 是由 SlowMist 开发的反洗钱追踪工具,支持 BTC、ETH、TRX、BNB 等主流链上地址与交易的风险评分、标签查询、交易调查等功能。
---
# MistTrack OpenAPI 技能
## 概述
MistTrack 是由 [SlowMist](https://www.slowmist.com/en/) 开发的加密货币反洗钱(AML)追踪工具,专注于打击加密货币洗钱活动。
- 收录超过 **4 亿个**地址(涵盖主要交易平台的各类钱包)
- 提供 **50 万条**威胁情报地址
- 标记超过 **9000 万个**与恶意活动相关的地址
## API 基本信息
### Base URL
```
https://openapi.misttrack.io
```
### 认证方式
所有请求均需在 Query Parameter 中传入 `api_key`(GET 请求)或 Request Body(POST 请求)。
### 通用响应结构
| 字段 | 类型 | 说明 |
|------|------|------|
| `success` | Boolean | 请求是否成功 |
| `msg` | String | 失败时的错误信息 |
| `data` | Dictionary | 响应数据 |
### 速率限制(Rate Limits)
| 套餐 | 速率 | 每日限额 |
|------|------|----------|
| Standard | 1 次/秒/key | 10,000 次/天/key |
| Compliance | 5 次/秒/key | 50,000 次/天/key |
| Enterprise | 无限制 | 无限制 |
超出限制时返回:
```json
{"success": false, "msg": "ExceededDailyRateLimit", "retry_after": 12345}
{"success": false, "msg": "ExceededRateLimit", "retry_after": 1}
```
---
## 常见错误码
| HTTP 状态码 | 原因 | 解决方案 |
|------------|------|----------|
| 402 | MistTrack 订阅已过期 | 登录并续订 |
| 429 | 请求速度过快 | 参考速率限制指南控制请求频率 |
| 500 | 服务端错误 | 稍后重试 |
### 错误消息(`msg` 字段)
| `msg` 值 | 说明 |
|----------|------|
| `ExceededRateLimit` | 超过每秒速率限制 |
| `ExceededDailyRateLimit` | 超过每日速率限制 |
| `InvalidApiKey` | API Key 无效 |
| `UnsupportedToken` | 不支持的代币 |
| `InvalidAddress` | 无效地址 |
| `PageNotFound` | 页面未找到 |
| `ExpiredPlan` | 套餐已过期 |
| `TaskNotFound` | 任务不存在(需先创建) |
| `UnsupportedAddressType` | 不支持的地址类型(如热钱包地址) |
---
## 多链支持
MistTrack 支持以下区块链及代币:
- **Bitcoin**: BTC
- **Ethereum**: ETH, USDT-ERC20, USDC-ERC20, WETH-ERC20, PEPE-ERC20, SHIB-ERC20, DAI-ERC20 等
- **TRON**: TRX, USDT-TRC20, USDC-TRC20, USDD-TRC20
- **BNB Smart Chain**: BNB, USDT-BEP20, BUSD-BEP20, ETH-BEP20 等
- **Polygon**: POL-Polygon, USDT-Polygon, USDC-Polygon, WETH-Polygon 等
- **Arbitrum One**: ETH-Arbitrum, USDT-Arbitrum, USDC-Arbitrum 等
- **OP Mainnet**: ETH-Optimism, USDT-Optimism, USDC-Optimism 等
- **Base**: ETH-Base, USDC-Base, USDT-Base 等
- **Avalanche**: AVAX-Avalanche, USDT-Avalanche, USDC-Avalanche 等
- **zkSync Era**: ETH-zkSync, ZK-zkSync, USDT-zkSync, USDC-zkSync
- **Toncoin**: TON, USDT-TON
- **Solana**: SOL, USDT-Solana, USDC-Solana, Bonk-Solana 等
- **Litecoin**: LTC
- **Dogecoin**: DOGE
- **Bitcoin Cash**: BCH
- **Merlin Chain**: BTC-Merlin
- **HashKey Chain**: HSK
- **Sui**: SUI, wUSDT-SUI, USDC-SUI
- **IoTeX**: IOTX
完整代币列表请调用 `/v1/status` 接口获取。
---
## API 端点列表
### 1. 获取 API 状态 (`v1/status`)
**功能**:返回 API 状态及支持的代币列表。
```
GET https://openapi.misttrack.io/v1/status
```
**请求参数**:无
**响应示例**:
```json
{
"success": true,
"msg": "",
"data": {
"support_api": ["status", "address_labels", "risk_score", "transactions_investigation", "address_overview", "address_action", "address_trace"],
"support_coin": ["ETH", "USDT-ERC20", "BTC", "TRX", "USDT-TRC20", "..."]
}
}
```
---
### 2. 获取地址标签 (`v1/address_labels`)
**功能**:返回指定地址的标签列表,包括实体名称、地址类型、链上标签、链下标签等。
```
GET https://openapi.misttrack.io/v1/address_labels?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币(如 ETH、BTC、TRX) |
| `address` | string | ✅ | 查询的地址 |
| `api_key` | string | ✅ | API 密钥 |
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `label_list` | list | 地址标签列表,包含实体名称(如 Coinbase、Binance)、地址类型(deposit/hot/cold wallet)、链上标签(ENS、MEV Bots、DeFi Whales)、链下标签(MetaMask Wallet User、Twitter handle) |
| `label_type` | string | 地址类型分类:`exchange`(中心化交易所、支付平台)/ `defi`(DeFi 项目、跨链桥)/ `mixer`(混币器或无 KYC 即时兑换)/ `nft`(NFT 市场)/ 空字符串(未分类) |
**响应示例**:
```json
{
"success": true,
"msg": "",
"data": {
"label_list": ["Binance", "hot"],
"label_type": "exchange"
}
}
```
---
### 3. 获取地址概览 (`v1/address_overview`)
**功能**:返回指定地址的余额及统计数据。
```
GET https://openapi.misttrack.io/v1/address_overview?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | ✅ | 查询的地址 |
| `api_key` | string | ✅ | API 密钥 |
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `balance` | float(4) | 地址余额 |
| `txs_count` | int | 总交易数 |
| `first_seen` | int | 首次交易时间(Unix 时间戳) |
| `last_seen` | int | 最近交易时间(Unix 时间戳) |
| `total_received` | float(4) | 总接收金额 |
| `total_spent` | float(4) | 总支出金额 |
| `received_txs_count` | int | 接收交易总数 |
| `spent_txs_count` | int | 发出交易总数 |
**响应示例**:
```json
{
"success": true,
"msg": "",
"data": {
"balance": 49.8305,
"txs_count": 1231,
"first_seen": 1441800674,
"last_seen": 1670971955,
"total_received": 916204.8697,
"total_spent": 916151.0499,
"received_txs_count": 1018,
"spent_txs_count": 213
}
}
```
---
### 4. 获取风险评分 - 同步模式 (`v2/risk_score`)
**功能**:返回指定地址或交易哈希的 AML 风险评分及风险详情(KYT/KYA)。
> ⚠️ **注意**:风险评分基于地址的所有相关交易计算,因此同一地址下所有代币会获得相同的评分。
```
GET https://openapi.misttrack.io/v2/risk_score?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | 与 txid 二选一 | 查询的地址 |
| `txid` | string | 与 address 二选一 | 查询的交易哈希 |
| `api_key` | string | ✅ | API 密钥 |
> `address` 和 `txid` 只传其中一个,不能同时传。
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `score` | int | 风险评分,范围 3~100 |
| `hacking_event` | string | 相关安全事件名称 |
| `detail_list` | list | 风险描述列表 |
| `risk_level` | string | 风险级别:Low / Moderate / High / Severe |
| `risk_detail` | list | 风险评分计算详情 |
| `risk_report_url` | string | MistTrack AML 风险报告 PDF 链接 |
**`risk_detail` 子字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `entity` | string | 风险实体名称(如 garantex.io) |
| `risk_type` | string | 风险类型:`sanctioned_entity` / `illicit_activity` / `mixer` / `gambling` / `risk_exchange` / `bridge` |
| `exposure_type` | string | 暴露类型:`direct`(直接) / `indirect`(间接) |
| `hop_num` | int | 到风险实体的跳数(≥1) |
| `volume` | float | 与风险实体的交易总额(USD) |
| `percent` | float | 占总交易额的百分比 |
#### 风险描述(`detail_list` 可能的值)
| 描述 | 含义 |
|------|------|
| Malicious Address | 直接参与恶意事件的地址(如 DeFi 攻击者、黑客、被制裁地址) |
| Suspected Malicious Address | 与恶意事件相关的地址 |
| High-risk Tag Address | 高风险实体地址(如混币器、某些嵌套交易所) |
| Medium-risk Tag Address | 中风险实体地址(如赌博平台、无 KYC 交易所) |
| Mixer | 混币器地址(如 Tornado Cash) |
| Sanctioned Entity | 被制裁实体地址(如 garantex) |
| Risk Exchange | 无 KYC 要求的交易所 |
| Gambling | 赌博平台地址 |
| Involved Theft Activity | 参与盗窃事件的地址 |
| Involved Ransom Activity | 参与勒索事件的地址 |
| Involved Phishing Activity | 参与钓鱼事件的地址 |
| Involved Illicit Activity | 参与非法活动的地址(如洗钱) |
| Interact With Malicious Address | 与恶意地址有交互 |
| Interact With Suspected Malicious Address | 与疑似恶意地址有交互 |
| Interact With High-risk Tag Address | 与高风险地址有交互 |
| Interact With Medium-risk Tag Addresses | 与中风险地址有交互 |
#### 风险级别指南
| 风险级别 | 分数范围 | 建议操作 |
|----------|----------|----------|
| **Severe** | 91~100 | 禁止提现和交易,立即上报地址 |
| **High** | 71~90 | 高度监控,通过 MistTrack AML 平台或 OpenAPI 进行交易分析 |
| **Moderate** | 31~70 | 需要适度监管 |
| **Low** | 0~30 | 最低监管要求 |
**响应示例**:
```json
{
"success": true,
"msg": "",
"data": {
"score": 35,
"hacking_event": "",
"detail_list": ["Involved Illicit Activity", "Interact With High-risk Tag Address"],
"risk_level": "Moderate",
"risk_detail": [
{
"entity": "huionepay",
"risk_type": "sanctioned_entity",
"volume": 6700352.55,
"hop_num": 2,
"exposure_type": "indirect",
"percent": 3.419
}
],
"risk_report_url": "https://light.misttrack.io/riskReport/0x..."
}
}
```
---
### 5. 获取风险评分 - 异步模式 (`v2/risk_score_create_task` & `v2/risk_score_query_task`)
**功能**:以异步方式获取地址或交易的风险评分(适用于大批量查询场景)。
#### 5.1 创建任务 (`v2/risk_score_create_task`)
```
POST https://openapi.misttrack.io/v2/risk_score_create_task
Content-Type: application/json
```
**请求 Body**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | 与 txid 二选一 | 查询的地址 |
| `txid` | string | 与 address 二选一 | 查询的交易哈希 |
| `api_key` | string | ✅ | API 密钥 |
**cURL 示例**:
```bash
curl --location 'https://openapi.misttrack.io/v2/risk_score_create_task' \
--header 'Content-Type: application/json' \
--data '{
"address": "TNXoiAJ3dct8Fjg4M9fkLFh9S2v9TXc32G",
"coin": "TRX",
"api_key": "YourApiKey"
}'
```
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `has_result` | bool | 是否已有缓存结果 |
| `scanned_ts` | int | 任务结果生成时间戳 |
- **Cache Miss**(`has_result: false`):等待 1-10 秒后调用 `v2/risk_score_query_task`
- **Cache Hit**(`has_result: true`):立即调用 `v2/risk_score_query_task`
#### 5.2 查询任务结果 (`v2/risk_score_query_task`)
> ⚠️ 此接口**无速率限制**。
```
GET https://openapi.misttrack.io/v2/risk_score_query_task?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:与创建任务接口相同。
**响应**:
- 任务未完成:`{"success": true, "msg": "TaskUnderRunning"}`
- 任务完成:与同步 `v2/risk_score` 响应结构相同(含 score、risk_level、detail_list、risk_detail)
---
### 6. 交易调查 (`v1/transactions_investigation`)
**功能**:返回指定地址的交易调查结果,包含转入/转出交易列表及关联地址信息。
```
GET https://openapi.misttrack.io/v1/transactions_investigation?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | ✅ | 查询的地址 |
| `api_key` | string | ✅ | API 密钥 |
| `start_timestamp` | int | ❌ | 开始时间戳(默认为 0) |
| `end_timestamp` | int | ❌ | 结束时间戳(默认为当前时间) |
| `type` | string | ❌ | 查询类型:`in`、`out`、`all`(默认 `all`) |
| `page` | int | ❌ | 页码(默认为 1) |
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `in` | list | 转入交易列表 |
| `out` | list | 转出交易列表 |
| `page` | int | 当前页码 |
| `total_pages` | int | 总页数 |
| `transactions_on_page` | int | 当前页交易数量(最多 1000 条) |
**交易条目子字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `address` | string | 与查询地址有转账关系的地址 |
| `type` | int | 地址类型:1=EOA/BTC地址,2=恶意地址,3=实体标签地址,4=合约地址 |
| `tx_hash_list` | list | 相关交易哈希列表 |
| `amount` | float(4) | 总转账金额 |
| `label` | string | 地址标签详情 |
**响应示例**:
```json
{
"success": true,
"msg": "",
"data": {
"out": [
{
"address": "0xd90e2f925da726b50c4ed8d0fb90ad053324f31b",
"tx_hash_list": ["0x48c2601b..."],
"amount": 743,
"type": 3,
"label": "Tornado.Cash: Router"
}
],
"in": [...],
"page": 1,
"total_pages": 1,
"transactions_on_page": 36
}
}
```
---
### 7. 地址行为分析 (`v1/address_action`)
**功能**:返回指定地址的交易行为分析结果(适合以饼图方式展示)。
```
GET https://openapi.misttrack.io/v1/address_action?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | ✅ | 查询的地址 |
| `api_key` | string | ✅ | API 密钥 |
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `received_txs` | list | 转入交易行为分析结果列表 |
| `spent_txs` | list | 转出交易行为分析结果列表 |
**行为条目子字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `action` | string | 行为类型(如 DEX、Exchange、Mixer、Transfer、Swap) |
| `count` | int | 该类型交易数量 |
| `proportion` | float | 占比(百分比) |
**响应示例**:
```json
{
"success": true,
"msg": "",
"action_dic": {
"received_txs": [
{"action": "DEX", "count": 7, "proportion": 70.0},
{"action": "Mixer", "count": 1, "proportion": 10.0},
{"action": "Exchange", "count": 1, "proportion": 10.0},
{"action": "Swap", "count": 1, "proportion": 10.0}
],
"spent_txs": [
{"action": "Exchange", "count": 15, "proportion": 57.69},
{"action": "DEX", "count": 2, "proportion": 7.69},
{"action": "Transfer", "count": 9, "proportion": 34.62}
]
}
}
```
---
### 8. 地址画像 / 地址追踪 (`v1/address_trace`)
**功能**:追踪地址与哪些平台有过交互(交易所、混币器、DeFi 协议、NFT 平台),识别相关恶意事件,并提供地址附加信息(使用的钱包、ENS 名称、关联 Twitter 账号)。
```
GET https://openapi.misttrack.io/v1/address_trace?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | ✅ | 查询的地址 |
| `api_key` | string | ✅ | API 密钥 |
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `first_address` | string | Gas 费用的来源钱包地址或其标签 |
| `use_platform` | dict | 交互平台信息,包含 `exchange`(交易所)、`dex`(DEX)、`mixer`(混币器)、`nft`(NFT 平台) |
| `malicious_event` | dict | 恶意事件信息,包含 `phishing`(钓鱼)、`ransom`(勒索)、`stealing`(盗窃)、`laundering`(洗钱) |
| `relation_info` | dict | 关联信息,包含 `wallet`(关联钱包)、`ens`(ENS 名称)、`twitter`(Twitter 账号) |
**响应示例**:
```json
{
"success": true,
"msg": "",
"data": {
"first_address": "sideshift.ai",
"use_platform": {
"exchange": {"count": 1, "exchange_list": ["Binance"]},
"dex": {"count": 3, "dex_list": ["Uniswap", "SushiSwap", "Multichain"]},
"mixer": {"count": 2, "mixer_list": ["Tornado.Cash", "sideshift.ai"]},
"nft": {"count": 0, "nft_list": []}
},
"malicious_event": {
"phishing": {"count": 0, "phishing_list": []},
"ransom": {"count": 0, "ransom_list": []},
"stealing": {"count": 5, "stealing_list": ["MMFinance Exploiter"]},
"laundering": {"count": 0, "laundering_list": []}
},
"relation_info": {
"wallet": {"count": 0, "wallet_list": []},
"ens": {"count": 2, "ens_list": ["destruction.eth", "poma.eth"]},
"twitter": {"count": 1, "twitter_list": ["@destructioneth"]}
}
}
}
```
---
### 9. 地址交易对手分析 (`v1/address_counterparty`)
**功能**:返回指定地址的交易对手分析结果(适合以饼图方式展示)。
> ⚠️ **注意**:此接口不支持分析热钱包地址,会返回 `UnsupportedAddressType` 错误。
```
GET https://openapi.misttrack.io/v1/address_counterparty?coin=ETH&address={address}&api_key={api_key}
```
**请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `coin` | string | ✅ | 查询的代币 |
| `address` | string | ✅ | 查询的地址 |
| `api_key` | string | ✅ | API 密钥 |
**响应字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `address_counterparty_list` | list | 交易对手列表 |
**交易对手条目子字段**:
| 字段 | 类型 | 说明 |
|------|------|------|
| `name` | string | 实体名称(如 Uniswap、Tornado.Cash、Binance) |
| `amount` | float | 总交易金额(USD) |
| `percent` | float | 占比(百分比) |
**响应示例**:
```json
{
"success": true,
"msg": "",
"address_counterparty_list": [
{"name": "Uniswap", "amount": 4496524.699, "percent": 49.678},
{"name": "Tornado.Cash", "amount": 2377637.58, "percent": 26.268},
{"name": "Binance", "amount": 302.008, "percent": 0.003}
]
}
```
---
## 使用示例
### 场景 1:快速地址风险检测(KYT)
当需要对提币/充值地址进行快速 AML 检查时:
1. 调用 `v2/risk_score` 获取风险评分
2. 根据 `risk_level` 决策:
- `Severe` (91-100):拒绝交易并上报
- `High` (71-90):需人工复核
- `Moderate` (31-70):适度监控
- `Low` (0-30):正常放行
### 场景 2:批量异步风险检测
当需要批量检测大量地址时使用异步模式:
1. 循环调用 `POST v2/risk_score_create_task` 创建任务
2. 等待 1-10 秒(如 `has_result: false`)
3. 调用 `GET v2/risk_score_query_task` 轮询结果(无速率限制)
### 场景 3:地址完整画像调查
对可疑地址进行全面调查时,建议依次调用:
1. `v1/address_labels` → 了解地址实体身份
2. `v1/address_overview` → 了解地址活跃度和资产规模
3. `v2/risk_score` → 获取 AML 风险评分
4. `v1/address_trace` → 了解地址平台交互历史及关联信息
5. `v1/transactions_investigation` → 深入分析具体交易流向
6. `v1/address_counterparty` → 分析主要交易对手构成
---
## 示例脚本
参考 `scripts/` 目录中的示例脚本:
- `risk_check.py` - 单地址风险评分检查
- `batch_risk_check.py` - 批量异步风险评分
- `address_investigation.py` - 地址完整调查
---
## 与 Bitget Wallet Skill 集成 — 转账地址安全检测
> **适用场景**:当 Agent 同时加载了 [bitget-wallet-skill](https://github.com/bitget-wallet-ai-lab/bitget-wallet-skill) 和 misttrack-skills 时,在执行任何**转账 / Swap** 操作前,必须自动调用本技能对**目标地址(recipient / to-address)** 进行 AML 风险检测。
### 为什么需要地址级安全检测?
bitget-wallet-skill 的 Pre-Trade Workflow 已覆盖**代币安全**(蜜罐、税率、流动性),但未检测**收款方地址**的 AML 风险。向被制裁地址、混币器出金地址或黑客钱包转账可能导致:
- 资产被链上追踪机构标记
- 触犯 OFAC 制裁合规要求
- 资金被交易所冻结(如目标是洗钱中转地址)
misttrack-skills 专门填补这一缺口。
---
### 链代码映射表
将 bitget-wallet-skill 的 `chain` 参数映射为 MistTrack `coin` 参数:
| bitget-wallet-skill chain | MistTrack coin | 说明 |
|--------------------------|---------------|------|
| `eth` | `ETH` | Ethereum 原生代币 |
| `sol` | `SOL` | Solana 原生代币 |
| `bnb` | `BNB` | BNB Chain 原生代币 |
| `trx` | `TRX` | TRON 原生代币 |
| `base` | `ETH-Base` | Base 链 ETH |
| `arbitrum` | `ETH-Arbitrum` | Arbitrum 链 ETH |
| `optimism` | `ETH-Optimism` | OP Mainnet ETH |
| `matic` | `POL-Polygon` | Polygon 链原生代币 |
| `ton` | `TON` | TON 链原生代币 |
| `suinet` | `SUI` | Sui 链原生代币 |
> **稳定币注意**:若转账代币为 USDT/USDC(非原生代币),MistTrack 风险评分**对地址是全局计算的**(与代币无关),因此使用原生代币的 coin 参数查询即可。
---
### 决策逻辑
| MistTrack 风险等级 | 分数范围 | Agent 决策 | 操作 |
|-----------------|----------|-----------|------|
| **Low** | 0–30 | ✅ ALLOW | 静默通过,正常继续转账流程 |
| **Moderate** | 31–70 | ⚠️ WARN | 向用户展示风险摘要,请求二次确认后方可继续 |
| **High** | 71–90 | ⚠️ WARN | 向用户展示详细风险报告,强烈建议取消,需明确二次确认 |
| **Severe** | 91–100 | ❌ BLOCK | 拒绝执行转账,告知用户目标地址存在严重风险 |
> **特例 — 已认证白名单地址**:若 `v1/address_labels` 返回的 `label_type` 为 `exchange`(如 Binance、Coinbase 充值地址),且 `risk_level` 为 Low 或 Moderate,可直接 ALLOW,无需二次确认。
---
### Agent 集成工作流
Agent 在执行 `swap-calldata` 或任何转账指令**之前**,自动执行以下步骤(对用户透明,不中断流程):
```
转账安全检测流程(Agent 后台自动执行):
1. 提取目标地址(swap --to-address 或用户指定的收款地址)
2. 识别链类型(通过上方映射表 chain → coin)
3. 调用风险评分脚本:
python3 scripts/transfer_security_check.py --address <to_address> --chain <chain_code>
4. 读取 exit code 和 JSON 输出,按决策逻辑处理:
- exit 0 (ALLOW) → 静默继续,在最终确认摘要中显示 "✅ 收款地址安全"
- exit 1 (WARN) → 暂停,向用户显示风险摘要,等待用户明确确认
- exit 2 (BLOCK) → 终止流程,向用户说明原因,建议放弃转账
- exit 3 (ERROR) → API 不可用,显示 "⚠️ 地址安全检测失败(原因:...)",由用户决定是否继续
```
#### 集成到 bitget-wallet-skill Pre-Trade Workflow
在原有 bitget-wallet-skill 的 Pre-Trade Workflow 基础上,插入第 0 步:
```
0. transfer-security → 检测收款地址 AML 风险(新增,使用 misttrack-skills)
1. security → 检查代币安全(honeypot、tax)
2. token-info → 获取价格、市值
3. liquidity → 检查池深度
4. swap-quote → 获取报价和路由
```
---
### 调用示例
#### 基础调用(推荐 Agent 使用)
```bash
# ETH 链地址检测
python3 scripts/transfer_security_check.py \
--address 0xd90e2f925DA726b50C4Ed8D0Fb90Ad053324F31b \
--chain eth
# Solana 链地址检测
python3 scripts/transfer_security_check.py \
--address 5tzFkiKscXHK5B17AoKFdroMRCEVGvSqtPkRSLzprFwN \
--chain sol
# JSON 输出(便于 Agent 解析)
python3 scripts/transfer_security_check.py \
--address 0x28C6c06298d514Db089934071355E5743bf21d60 \
--chain eth --json
```
#### JSON 输出格式
```json
{
"decision": "ALLOW",
"score": 15,
"risk_level": "Low",
"detail_list": [],
"label_type": "exchange",
"label_list": ["Binance", "hot"],
"risk_report_url": "https://light.misttrack.io/riskReport/0x...",
"address": "0x28C6c06298d514Db089934071355E5743bf21d60",
"coin": "ETH",
"chain": "eth"
}
```
#### WARN 场景示例输出(展示给用户)
```
⚠️ 收款地址安全警告
────────────────────────────────────
地址: 0xABCD...1234
链: ETH
风险评分:55 (Moderate)
风险描述:Interact With High-risk Tag Address, Involved Illicit Activity
风险报告:https://light.misttrack.io/riskReport/0xABCD...
建议:该地址存在中等风险,请确认收款方身份后再继续。
是否仍要继续转账?[yes/no]
```
---
### API 不可用时的降级策略
| 场景 | 原因 | 处理方式 |
|------|------|---------|
| `MISTTRACK_API_KEY` 未设置 | 未配置 | exit 3,警告用户前往设置 |
| `InvalidApiKey` | Key 无效或过期 | exit 3,提示检查 Key |
| `ExceededDailyRateLimit` | 超出每日限额 | exit 3,提示次日重试或升级套餐 |
| 网络超时 | 网络问题 | exit 3,重试 1 次后放弃 |
> **重要**:任何 exit 3 情况下,Agent 必须明确告知用户「地址安全检测失败,无法验证收款地址风险」,并让用户决定是否继续。**不得静默忽略检测失败**。
---
## 与 Trust Wallet Skills 集成 — 转账地址安全检测
> **适用场景**:当 Agent 同时加载了 [tw-agent-skills](https://github.com/trustwallet/tw-agent-skills)(`wallet-core` 或 `trust-web3-provider`)和 misttrack-skills 时,在生成任何含收款地址的代码之前,必须自动调用本技能进行 AML 风险检测。
### Trust Wallet Skills 的转账场景
Trust Wallet skills 是**开发者库**(非命令行工具),收款地址通过代码字段传入:
| 技能 | 场景 | 收款地址字段 |
|------|------|------------|
| **wallet-core** | Swift/Kotlin/TS 签名交易 | `toAddress`(ETH/BTC/Cosmos `sendCoinsMessage`) |
| **trust-web3-provider** | EthereumProvider handler | `eth_sendTransaction.to` |
| **trust-web3-provider** | TonProvider | `ton_sendTransaction.to` |
| **trust-web3-provider** | BitcoinProvider | `signPSBT` outputs 中的目标地址 |
| **trust-web3-provider** | TronProvider | `sign(transaction)` 的目标地址字段 |
### CoinType → MistTrack coin 映射表
| wallet-core CoinType | `--chain` 参数 | MistTrack coin |
|----------------------|--------------|---------------|
| `.ethereum` | `eth` | `ETH` |
| `.bitcoin` | `bitcoin` / `btc` | `BTC` |
| `.solana` | `solana` / `sol` | `SOL` |
| `.smartChain` | `smartchain` / `bsc` | `BNB` |
| `.tron` | `tron` / `trx` | `TRX` |
| `.polygon` | `polygon` / `matic` | `POL-Polygon` |
| `.ton` | `ton` / `tonchain` | `TON` |
| `.cosmos` | `cosmos` / `atom` | ⛔ 不支持,exit 3 |
| `.aptos` | `aptos` | ⛔ 不支持,exit 3 |
> **trust-web3-provider 链映射**:`EthereumProvider` chainId `0x1`→`eth`,`0x38`→`bnb`,`0x89`→`polygon`,`0xa`→`optimism`,`0xa4b1`→`arbitrum`,`0x2105`→`base`。
### Agent 触发规则
Agent 在以下任意时刻**应自动调用安全检测**:
#### wallet-core 场景
当 Agent 生成含 `toAddress` 的签名代码片段时,在给出代码前先检查该地址:
```bash
# 示例:用户请求为 Bitcoin 地址生成签名,先检查目标地址
python3 scripts/transfer_security_check.py \
--address 1MityqAKBEKHPkBpwDCqPMBNbYPxbNbKzr \
--chain bitcoin --json
# 示例:用户构建 Ethereum 转账,先检查 toAddress
python3 scripts/transfer_security_check.py \
--address 0xRecipient... \
--chain eth --json
```
#### trust-web3-provider 场景
当 Agent 帮开发者实现处理 `eth_sendTransaction` / `ton_sendTransaction` 的 handler 时,在处理逻辑中插入检测点:
```bash
# Handler 收到 eth_sendTransaction,目标地址在 params.to
python3 scripts/transfer_security_check.py \
--address <params.to> --chain eth --json
# Handler 收到 ton_sendTransaction
python3 scripts/transfer_security_check.py \
--address <params.to> --chain ton --json
```
### 决策规则(与 Bitget Wallet 集成相同)
| exit | 决策 | Agent 行为 |
|------|------|-----------|
| 0 | ✅ ALLOW | 正常生成代码,确认摘要中添加「✅ 收款地址安全」注释 |
| 1 | ⚠️ WARN | 向用户展示风险详情,等待明确确认后再生成代码 |
| 2 | ❌ BLOCK | 拒绝生成相关代码,向用户说明风险并建议更换地址 |
| 3 | ⚠️ ERROR | 通知用户检测失败原因(API 不可用/链不支持),由用户决定是否继续 |
### 不支持的链处理
**Aptos** 和 **Cosmos/ATOM** 目前 MistTrack 尚未收录,脚本会返回 exit 3 并给出说明:
```bash
$ python3 scripts/transfer_security_check.py --address 0xabc --chain aptos --json
{
"decision": "ERROR",
"error": "MistTrack 暂不支持 Aptos (APT) 链地址查询。请人工核实收款方身份。"
}
# exit code: 3
```
Agent 对此类 exit 3 应向用户说明「该链暂无自动安全检测,请通过其他方式核实收款方身份」。
---
## 参考资料
- [MistTrack 官方文档](https://docs.misttrack.io/)
- [MistTrack OpenAPI 概述](https://docs.misttrack.io/openapi/overview)
- [MistTrack 控制台](https://dashboard.misttrack.io)
- [常见错误消息](https://docs.misttrack.io/support/common-error-messages)
- [Bitget Wallet Skill](https://github.com/bitget-wallet-ai-lab/bitget-wallet-skill)
- [Trust Wallet tw-agent-skills](https://github.com/trustwallet/tw-agent-skills)