地址监控 🔥
地址监控 🔥
「地址监控」功能应用场景 当被监控地址的交易成功上链后,会发生余额变化。Tokenview 的后台系统就会通过 webhook 的方式,把此交易的相关消息 POST 到您设置的Webhook URL 上。
支持公链 BTC, ETH (ERC20 token), TRX (TRC20 token, TRC10 token), LTC, BCH, DOGE, ETC, DASH, OMNI-USDT, RVN, BSC, ARB。其他公链数据也可以根据客户需要开通支持。
备注:
- 需指定公链名称和地址 hash
- 地址规则
- ETH的地址中大写字母需全部转成小写;
- 监控 USDT ERC20 地址, 公链简称是 eth
- 监控 USDT TRC20 地址, 公链简称是 trx
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/setwebhookurl?apikey={apikey}
参数
- {apikey}: 可在Tokenview API 后台管理系统获取激活状态的 APIKEY: https://services.tokenview.io
被监控地址余额发生变化后,Tokenview 后台系统会把消息POST到您设置的 Webhook URL。您的服务器收到通知后,响应码需是200,并且应答body里必须返回非空文本信息,比如ok。如发送失败,会自动重试3次。
备注:
请在API 服务系统后台获取自己激活状态的 APIKEY,网址: https://services.tokenview.io
不同项目的APIKEY不通用。
余额变化推送的消息为 json 文本, 格式如下
{
"address":"0xab5c66752a9e8167967685f1450532fb96d5d24f", // 被监控地址hash
"txid":"0xdf244cbc60f4220e5d90de0833b647bd7f376f5132314a1672dd9b5128302659", // 交易hash
"time": 1592015420, // 交易发生时间UTC
"confirmations": 1, // 通知第一次发出时此交易的确认数
"value": "-0.002135942", // 余额变化数量
"coin": "ETH", // 交易发生在哪条链上
"height": 10254665, // 交易被打包的区块高度
"tokenAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7", // 如果是token余额发生变化,这个字段就不是null, 表示token的地址
"tokenSymbol": "USDT", // token的符号单位
"tokenValue": "-159" // token的数量变化
}
Request
curl --location 'https://services.tokenview.io/vipapi/monitor/setwebhookurl?apikey={apikey}' \
--header 'Content-Type: text/plain' \
--data 'https://9aa90255-9cde-45e-83a6-2916cd2c3725.mock.pstmn.io/webhook'
Response
{
"code": 1,
"msg": "success",
"data": null
}
查询 webhook URL
GET
https://services.tokenview.io/vipapi/monitor/getwebhookurl?apikey={apikey}
参数
- {apikey}: 可在Tokenview API 后台管理系统获取激活状态的 APIKEY: https://services.tokenview.io
不同项目APIKEY不通用。
Request
curl --location https://services.tokenview.io/vipapi/monitor/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/address/add/{公链简称小写}/{地址}?apikey={apikey}
参数
- {公链简称小写}:btc, eth, trx, ltc, bch, doge, etc, dash, usdt, rvn, bsc, arb。其他公链数据也可以根据客户需要开通支持。
- {地址}:对应公链的地址哈希;
- {apikey}: 可在Tokenview API 后台管理系统获取激活状态的 APIKEY: https://services.tokenview.io
不用项目APIKEY不通用。
Request
curl --location https://services.tokenview.io/vipapi/monitor/address/add/eth/0x21c0afc5d6110323f04b369788e78fb60bfa02b8?apikey={apikey}
Response
{
"code": 1,
"msg": "success",
"data": null
}
删除监控地址
GET
https://services.tokenview.io/vipapi/monitor/address/remove/{公链简称小写}/{地址}?apikey={apikey}
参数
- {公链简称小写}:btc, eth, trx, ltc, bch, doge, etc, dash, usdt, rvn, bsc, arb。其他公链数据也可以根据客户需要开通支持。
- {apikey}: 可在Tokenview API 后台管理系统获取激活状态的 APIKEY: https://services.tokenview.io
备注:
需指定公链简称小写和地址哈希
Request
curl --location https://services.tokenview.io/vipapi/monitor/address/remove/eth/0x21c0afc5d6110323f04b369788e78fb60bfa02b8?apikey={apikey}
Response
{
"code": 1,
"msg": "success",
"data": null
}
查询监控地址列表
GET
https://services.tokenview.io/vipapi/monitor/address/list/{公链简称小写}?page={页码}&apikey={apikey}
参数
- {公链简称小写}:btc, eth, trx, ltc, bch, doge, etc, dash, usdt, rvn, bsc, arb。其他公链数据也可以根据客户需要开通支持。
- {apikey}: 可在Tokenview API 后台管理系统获取激活状态的 APIKEY: https://services.tokenview.io
备注:
需指定公链简称小写和页码。
Request
curl --location https://services.tokenview.io/vipapi/monitor/address/list/eth?page=0&apikey={apikey}
Response
{
"code": 1,
"msg": "success",
"data": {
"page": 1,
"size": 3,
"total": 3,
"list": [
"0x5a0b54d5dc17e0aadc383d2db43b0a0d3e029c4c",
"0xab5c66752a9e8167967685f1450532fb96d5d24f",
"0xea674fdde714fd979de3edf0f56aa9716b898ec8"
]
}
}
查询 webhook 调用历史
GET
https://services.tokenview.io/vipapi/monitor/webhookhistory/{公链简称小写}?page={页码}apikey={apikey}
参数
- {公链简称小写}:btc, eth, trx, ltc, bch, doge, etc, dash, usdt, rvn, bsc, arb。其他公链数据也可以根据客户需要开通支持。
- {页码}:1,2,3,... 50
- {apikey}: 可在Tokenview API 后台管理系统获取激活状态的 APIKEY: https://services.tokenview.io
备注:
- 需指定公链简称小写和页码。
- 返回某个公链所有的调用记录,不能指定查询单个地址调用记录。
- 每页返回固定100条调用记录。
Request
curl --location https://services.tokenview.io/vipapi/monitor/webhookhistory/eth?page=1&apikey={apikey}
Response
{
"code": 1,
"msg": "success",
"data": {
"page": 1,
"size": 2,
"total": 2,
"list": [
{
"coin": "ETH",
"url": "https://8c986322-5e36-4169-b05e-3b40a04e5a.mock.pstmn.io",
"txid": "0xad0fe776f17f4e217af51661dd2cb5d8bfb7b5eddd1a6356c3ba2cf07ea937a5",
"response": "ok",
"request": "{\"address\":\"0x2eaa82538bc040e2df9196208d23b87958a99bb6\",\"coin\":\"ETH\",\"confirmations\":1,\"height\":16502465,\"time\":1674874571,\"txid\":\"0xad0fe776f17f4e217af51661dd2cb5d8bfb7b5eddd1a6356c3ba2cf07ea937a5\",\"value\":\"-0.00585248433044248\"}",
"amount": null,
"time": 1674874571,
"address": "0x2eaa82538bc040e2df9196208d23b87958a99bb6",
"confirmations": 0,
"tryTimes": 0,
"height": 16502465,
"statusCode": 200
},
{
"coin": "ETH",
"url": "https://8c986322-5e36-4169-b05e-3b40a04e5a.mock.pstmn.io",
"txid": "0xad0fe776f17f4e217af51661dd2cb5d8bfb7b5eddd1a6356c3ba2cf07ea937a5",
"response": "ok",
"request": "{\"address\":\"0x2eaa82538bc040e2df9196208d23b87958a99bb6\",\"coin\":\"ETH\",\"confirmations\":1,\"height\":16502465,\"time\":1674874571,\"txid\":\"0xad0fe776f17f4e217af51661dd2cb5d8bfb7b5eddd1a6356c3ba2cf07ea937a5\",\"value\":\"-0.00585248433044248\"}",
"amount": null,
"time": 1674874571,
"address": "0x2eaa82538bc040e2df9196208d23b87958a99bb6",
"confirmations": 0,
"tryTimes": 3,
"height": 16502465,
"statusCode": 200
}
]
}
}
应答字段说明
{
"coin": "ETH", // 公链种简称
"url": "https://8c986322-5e36-4169-b05e-3b40a04e5a.mock.pstmn.io", // webhook URL
"txid": "0xad0fe776f17f4e217af51661dd2cb5d8bfb7b5eddd1a6356c3ba2cf07ea937a5", // 余额变化时的交易hash
"response": "ok", // 调用webhook后,收到的响应内容
"request": "{\"address\":\"0x2eaa82538bc040e2df9196208d23b87958a99bb6\",\"coin\":\"ETH\",\"confirmations\":1,\"height\":16502465,\"time\":1674874571,\"txid\":\"0xad0fe776f17f4e217af51661dd2cb5d8bfb7b5eddd1a6356c3ba2cf07ea937a5\",\"value\":\"-0.00585248433044248\"}", // webhook的消息内容
"amount": null, // 已弃用该字段
"time": 1674874571, // 交易发生的时间戳
"address": "0x2eaa82538bc040e2df9196208d23b87958a99bb6", // 发生余额变化的地址hash
"confirmations": 0, // 发出通知时交易hash的确认数
"tryTimes": 3, // 值为0表示第一次发出通知,您的服务器就已经返回200 OK,值大于0,表示重试的次数
"height": 16502465, // 交易所在的块高
"statusCode": 200 // 您的服务返回的http 应答代号
}