如何使用 Webhook 实时监控链上大额转账交易

  • Chainbase
  • 更新于 2023-08-30 19:27
  • 阅读 4599

在本文中,我将向你展示如何接收实时的 ERC20 转账数据,以及如何使用 Webhook Sync 和 Telegram 机器人实时监控大额资金转账。

介绍

近年来,dApps(去中心化应用)在复杂性和受欢迎度上都取得了不小的进步。但与 Web2 应用相比,它们的用户体验还有待提高,尤其是缺乏即时的事件通知功能。

对用户而言,能够立刻知道交易是否成功、是否有交易失败、拍卖是否中标,或者钱包是否与新代币发生了交互,这些都非常关键。如果没有这些及时的提醒,用户可能会漏掉交易、忽略某些操作,甚至可能直接放弃使用。而在 Chainbase Webhook Sync 出现之前,要在 dApp 里加入这些通知功能是相当困难的,而且容易出错。

区块链 Webhooks 提供来自区块链的实时通知。它们允许您订阅特定的事件或交易,并在它们发生时接收更新。例如,您可以使用 Webhooks 监控一个地址的活动、检查交易的状态或监听智能合约事件。与传统的 Webhooks 不同,后者通过在服务器事件上向指定的 URL 发送 HTTP 请求来促进 Web 服务器之间的通信,区块链 Webhooks 使用 Web3 技术。特别是 Ethereum Webhooks,它们监听区块链并在区块链上发生事件时向选定的 URL 发送 HTTP 请求。

区块链 Webhooks 对您的 Web3 应用程序的优势包括:

  1. 提高效率:通过使用 Webhook,开发者不必对区块链节点的进行持续轮询或查询,节省时间、带宽和资源。
  2. 及时响应:Webhooks 允许对区块链事件(如转账或合约执行)进行即时响应。它们可以触发如通知、数据库更新或服务器/客户端逻辑执行等操作。
  3. 集成化:它们将您的 Web3 应用程序与其他 Web 服务连接起来,允许基于区块链活动的数据交换和工作流自动化。
  4. 定制化:Webhooks 提供控制和适应性,让您可以根据自己的需求进行定制,从事件订阅到数据过滤和通知设置。

概述

在本文中,我将向你展示如何接收实时的 ERC20 转账数据,以及如何使用 Webhook Sync 和 Telegram 机器人实时监控大额资金转账。

在开始之前,我们需要进行以下准备工作:

  1. 申请 Chainbase API-Key 以供 Webhook 服务使用。
  2. 创建一个 Webhook URL 以接收消息推送。在本文中,我将使用 AirCode 作为我的 Webhook URL 服务提供商来处理大额资金转账事件。
  3. 创建一个 Telegram 机器人作为方便的通知提醒器。关于如何创建 Telegram 机器人的详细信息:https://core.telegram.org/bots/api

第一步 设置 Webhook

在这个案例中,我将创建一个 Webhook 来处理大额资金转账事件并触发 Telegram 消息事件。解析以下代码并在 AirCode 平台上部署它。

注意:您需要手动添加一些依赖项。

1.png

// @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

输入您的 Webhook URL,然后点击 TEST WEBHOOK。在您的 AirCode Webhook 服务上检查日志和请求历史。当一切正常时,我们继续下一步。

2.png

第三步 创建 Webhook 同步任务

以下是 Chainbase 示例过滤对象:

[
    {
      "field": "contract_address",
      "values": [
        "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // weth
        "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", // wbtc
        "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // usdc
        "0xdAC17F958D2ee523a2206206994597C13D831ec7"  // usdt 
      ]
    }
  ]

在这个例子中,我想过滤四个代币合约地址:WETH、WBTC、USDC、USDT。所以我设置了 contract_address 字段,并将上述代币合约地址设置为值列表。如果您的 Webhook 需要身份验证,您可以修改并将身份验证添加到 additional_headers 字段。

3.png

请求预览


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 消息时,只需激活 Webhook,然后您可以检查您的 Telegram 是否像这样发送了实时消息:

4.png

接下来,可以根据你的需求尽情的构建想要的实时预警机器人。

点赞 2
收藏 4
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Chainbase
Chainbase
0x7C46...d02D
Chainbase 是领先的 Web3 数据基础设施,帮助开发者轻松访问加密数据,并支持对数据的大规模索引、转换和使用。