在本文中,我将向你展示如何接收实时的 ERC20 转账数据,以及如何使用 Webhook Sync 和 Telegram 机器人实时监控大额资金转账。
近年来,dApps(去中心化应用)在复杂性和受欢迎度上都取得了不小的进步。但与 Web2 应用相比,它们的用户体验还有待提高,尤其是缺乏即时的事件通知功能。
对用户而言,能够立刻知道交易是否成功、是否有交易失败、拍卖是否中标,或者钱包是否与新代币发生了交互,这些都非常关键。如果没有这些及时的提醒,用户可能会漏掉交易、忽略某些操作,甚至可能直接放弃使用。而在 Chainbase Webhook Sync 出现之前,要在 dApp 里加入这些通知功能是相当困难的,而且容易出错。
区块链 Webhooks 提供来自区块链的实时通知。它们允许您订阅特定的事件或交易,并在它们发生时接收更新。例如,您可以使用 Webhooks 监控一个地址的活动、检查交易的状态或监听智能合约事件。与传统的 Webhooks 不同,后者通过在服务器事件上向指定的 URL 发送 HTTP 请求来促进 Web 服务器之间的通信,区块链 Webhooks 使用 Web3 技术。特别是 Ethereum Webhooks,它们监听区块链并在区块链上发生事件时向选定的 URL 发送 HTTP 请求。
区块链 Webhooks 对您的 Web3 应用程序的优势包括:
在本文中,我将向你展示如何接收实时的 ERC20 转账数据,以及如何使用 Webhook Sync 和 Telegram 机器人实时监控大额资金转账。
在开始之前,我们需要进行以下准备工作:
在这个案例中,我将创建一个 Webhook 来处理大额资金转账事件并触发 Telegram 消息事件。解析以下代码并在 AirCode 平台上部署它。
注意:您需要手动添加一些依赖项。
// @see https://docs.aircode.io/guide/functions/
const aircode = require('aircode');
const bignumber = require('bignumber.js');
const TelegramBot = require('node-telegram-bot-api');
const usdc_address = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'.toLowerCase();
const usdt_address = '0xdAC17F958D2ee523a2206206994597C13D831ec7'.toLowerCase();
const weth_address = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'.toLowerCase();
const wbtc_address = '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'.toLowerCase();
const token = 'YOUR-TELEGRAM-TOKEN'
const bot = new TelegramBot(token, {
polling: true
})
const symbolMap = new Map();
symbolMap.set(usdc_address, 'USDC');
symbolMap.set(usdt_address, 'USDT');
symbolMap.set(weth_address, 'WETH');
symbolMap.set(wbtc_address, 'WBTC');
module.exports = async function (params, context) {
console.log(params);
let data = params.data;
let value = new bignumber.BigNumber(data.value);
let symbol = symbolMap.get(data.contract_address.toLowerCase());
if (symbol === undefined || symbol === null) {
return {};
}
if (symbol === 'WBTC' && value.lt(new bignumber.BigNumber(1000000000000))) {
return {};
}
if (symbol === 'WETH' && value.lt(new bignumber.BigNumber(10000000000000000))) {
return {};
}
if (symbol === 'USDT' && value.lt(new bignumber.BigNumber(1000000000000000))) {
return {};
}
if (symbol === 'USDC' && value.lt(new bignumber.BigNumber(100000000000000000000))) {
return {};
}
let msg = {
"block": data.block_number,
"transaction_hash": data.transaction_hash,
"from_address": data.from_address,
"to_address": data.to_address,
"value": data.value,
"symbol": symbol,
}
try {
await bot.sendMessage('YOUR-TELEGRAM-CHAT-ID', JSON.stringify(msg));
} catch (e) {
console.log(e);
}
return {
msg,
};
};
如上所示,我在代码中实现了 ERC20 转账的大额资金的过滤和监控。您需要做的就是部署 Webhook。
部署代码后,我们得到了一个像 [<https://xxxxxx.hk.aircode.run/erc20transfer>](<https://gtsfh5g3c4.hk.aircode.run/erc20transfer>)
这样的 Webhook URL 供 Chainbase Sync 使用。然后我们可以继续下一步。
输入您的 Webhook URL,然后点击 TEST WEBHOOK
。在您的 AirCode Webhook 服务上检查日志和请求历史。当一切正常时,我们继续下一步。
以下是 Chainbase 示例过滤对象:
[
{
"field": "contract_address",
"values": [
"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // weth
"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", // wbtc
"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // usdc
"0xdAC17F958D2ee523a2206206994597C13D831ec7" // usdt
]
}
]
在这个例子中,我想过滤四个代币合约地址:WETH、WBTC、USDC、USDT。所以我设置了 contract_address
字段,并将上述代币合约地址设置为值列表。如果您的 Webhook 需要身份验证,您可以修改并将身份验证添加到 additional_headers
字段。
请求预览
curl -X "POST" "https://api.chainbasehq.online/sync/webhook/v1/webhook/{webhook_id}/activate_webhook" \
-H 'x-api-key: <YOUR-API-KEY>' \
-H 'Content-Type: application/json'
设置完毕后,点击 Create
按钮并完成所有设置。启动您的 Webhook 任务可能需要一些时间,只需耐心等待并检查 Webhook 的状态。如果您的 Webhook 失败50次,它将被重置为停用状态。
当您认为您已经准备好接收 Webhook 消息时,只需激活 Webhook,然后您可以检查您的 Telegram 是否像这样发送了实时消息:
接下来,可以根据你的需求尽情的构建想要的实时预警机器人。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!