Monitor & Alert
Monitor & Alert
Webhook 签名 & 安全
为了确保您的 Webhook 安全,您可以使用您唯一的 Webhook 签名密钥生成 HMAC SHA-256 哈希码来验证它们是否来自 Tokenview。
如何获取 signing key
导航至 services 后台的项目设置页面。 单击“获取”:将显示签名密钥并可以复制以供使用。
验证收到的签名
每个出站请求的header中都包含经过哈希处理的身份验证签名(X-Tokenview-Signature)。它是通过将您的签名密钥和请求正文连接在一起来计算的。 然后使用 HMAC SHA256 哈希算法生成一个哈希值。
为了验证签名来自 Tokenview,您需要生成 HMAC SHA256 哈希并将其与收到的签名进行比较。
请求头示例
Content-Type: application/json;charset=UTF-8
X-Tokenview-Signature: your-hashed-signature
签名验证示例(python)
import hmac
import hashlib
# abcde是要加密的内容,即webhook消息的body
data=bytes('abcde','utf-8')
key=bytes('signkey string','utf-8')
# digest为signature,即X-Tokenview-Signature的值
digest=hmac.new(key,data,digestmod=hashlib.sha256).hexdigest()
print(digest)
设置 webhook URL
POST
https://services.tokenview.io/vipapi/monitor/stablecoin/setwebhookurl?apikey={apikey}
当链上出现印钞、销毁、发行、回收、冻结、解冻等交易信息时,Tokenview 会把消息实时POST到你设置的 Webhook URL。 你的服务器收到通知后,需响应200。如Webhook URL回调失败,系统会自动重试3次,每次重试间隔10秒
参数
- {apikey}: 可在Tokenview API 后台管理系统获取激活状态的 APIKEY: https://services.tokenview.io
余额变化推送的消息为 json 文本, 格式如下
{
"action": "ISSUE", // 值为印钞:MINT,发行:ISSUE,销毁DESTORY,回收REDEEM
"amount": "19000000", // 金额数量
"from": "0x5754284f345afc66a98fbb0a0afe71e0f007b949", //转出地址
"fromAlias": "Tether Treasury", // 转出地址标签别名
"height": 12076299, // 交易所在区块高度
"network": "ETH:0xdac17f958d2ee523a2206206994597c13d831ec7", // 链名:稳定币合约地址
"stableCoinName": "USDT", // 稳定币名称
"time": 1616251614, // 交易发出时间
"to": "0xa953550fdcd9d08fe362bc4a5f3561b26988833d", // 转入地址
"txid": "0x40562f0f3206d78a928c1a2faf751213eb5d693819cf72700a43261210ec876a" // 交易hash
}
Request
curl --location 'https://services.tokenview.io/vipapi/monitor/stablecoin/setwebhookurl?apikey={apikey}' \
--header 'Content-Type: text/plain' \
--data 'https://9aa90255-9cde-453e-83a6-2916cd2c3725.mock.pstmn.io/webhook'
Response
{
"code": 1,
"msg": "success",
"data": null
}
查询 webhook URL
GET
https://services.tokenview.io/vipapi/monitor/stablecoin/getwebhookurl?apikey={apikey}
参数
- {apikey}: 可在Tokenview API 后台管理系统获取激活状态的 APIKEY: https://services.tokenview.io
Request
curl --location https://services.tokenview.io/vipapi/monitor/stablecoin/getwebhookurl?apikey={apikey}
Response
{
"code": 1,
"msg": "success",
"data": "https://9aa90255-9cde-453e-83a6-2916cd2c3725.mock.pstmn.io/webhook"
}
稳定币监控列表
GET
https://services.tokenview.io/vipapi/monitor/stablecoin/list?page={页码}apikey={apikey}
参数
- {页码}: 页码
- {apikey}: 可在Tokenview API 后台管理系统获取激活状态的 APIKEY: https://services.tokenview.io
Request
curl --location https://services.tokenview.io/vipapi/monitor/stablecoin/list?page=0&apikey={apikey}
Response
{
"code": 1,
"msg": "success",
"data": {
"page": 1,
"size": 7,
"total": 7,
"list": [
"busd",
"gusd",
"husd",
"pax",
"susd",
"tusd",
"usdc"
]
}
}
增加监控币种
GET
https://services.tokenview.io/vipapi/monitor/stablecoin/add/{币简称小写}?apikey={apikey}
备注: 币种简称支持:USDT,USDC,GUSD,sUSD,TUSD,PAX,HUSD`
参数
- {币简称小写}: usdt, usdc, gusd,susd, tusd, pax, husd
- {apikey}: 可在Tokenview API 后台管理系统获取激活状态的 APIKEY: https://services.tokenview.io
Request
curl --location https://services.tokenview.io/vipapi/monitor/stablecoin/add/usdt?apikey={apikey}
Response
{
"code": 1,
"msg": "success",
"data": null
}
删除监控币种
GET
https://services.tokenview.io/vipapi/monitor/stablecoin/remove/{币简称小写}?apikey={apikey}
参数
- {币简称小写}: usdt, usdc, gusd,susd, tusd, pax, husd
- {apikey}: 可在Tokenview API 后台管理系统获取激活状态的 APIKEY: https://services.tokenview.io
Request
curl --location https://services.tokenview.io/vipapi/monitor/stablecoin/remove/usdt?apikey={apikey}
Response
{
"code": 1,
"msg": "success",
"data": null
}
查询 webhook 调用历史
GET
https://services.tokenview.io/vipapi/monitor/stablecoin/webhookhistory/{币简称小写}?page={页码}apikey={apikey}
参数
- {币简称小写}: usdt, usdc, gusd,susd, tusd, pax, husd
- {页码}: 页码
- {apikey}: 可在Tokenview API 后台管理系统获取激活状态的 APIKEY: https://services.tokenview.io
备注:
- 需指定币种名称和页码。
- 返回某个币种所有的调用记录,不能指定查询单个地址调用记录。
- 每页返回固定100条调用记录。
Request
curl --location https://services.tokenview.io/vipapi/monitor/stablecoin/webhookhistory/eth?page=1&apikey={apikey}
Response
{
"code": 1,
"msg": "success",
"data": {
"page": 1,
"size": 100,
"total": 3785,
"list": [
{
"coin": "ETH",
"url": "https://9aa90255-9cde-453e-83a6-2916cd2c3725.mock.pstmn.io/webhook",
"response": "ok",
"txid": "0xd832d6af2b89ad5f192578cdfe3c4a2102890f33407047162a794dcf36ab1f22",
"address": "0x5a0b54d5dc17e0aadc383d2db43b0a0d3e029c4c",
"confirmations": 0,
"tryTimes": 0,
"height": 10255999,
"statusCode": 200
},
{
"coin": "ETH",
"url": "https://9aa90255-9cde-453e-83a6-2916cd2c3725.mock.pstmn.io/webhook",
"response": "ok",
"txid": "0x16e36cca0bbe24743e82c250b01a1344af7b652efca53c078452f8f01772eb88",
"address": "0xab5c66752a9e8167967685f1450532fb96d5d24f",
"confirmations": 0,
"tryTimes": 0,
"height": 10254563,
"statusCode": 200
}
]
}
}