You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写脚本监听特定合约新交易并接收通知,及web3.js合约监控常用库

Web3.js合约监控相关问题解答

一、合约新交易主动通知脚本编写方法

前置准备

你需要先安装web3.js依赖:
npm install web3
注意:必须使用WebSocket或IPC类型的节点Provider,HTTP类型节点不支持主动订阅功能,只能采用低效率的轮询方案,非特殊情况不推荐使用

实现步骤

  1. 初始化web3实例和合约对象
const { Web3 } = require('web3');
// 填入你的节点WebSocket地址
const web3 = new Web3('wss://你的节点WS地址');
// 填入目标合约地址和对应ABI
const TARGET_CONTRACT_ADDR = '0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
const CONTRACT_ABI = [/* 替换为目标合约的ABI内容 */];
const targetContract = new web3.eth.Contract(CONTRACT_ABI, TARGET_CONTRACT_ADDR);
  1. 订阅合约事件/交易
    你可以根据需求选择监听范围:
  • 监听合约所有交互产生的事件,只要有新交易触发合约事件就会收到通知:
targetContract.events.allEvents({
  fromBlock: 'latest'
}, (error, event) => {
  if (error) {
    console.error('监听出错:', error);
    return;
  }
  // 拿到新交易相关信息
  const txInfo = {
    hash: event.transactionHash,
    blockHeight: event.blockNumber,
    eventParams: event.returnValues
  };
  console.log('监测到合约新交易:', txInfo.hash);
  // 这里写你的通知逻辑,比如调用邮件、钉钉、Telegram bot的推送接口
  sendNotification(txInfo);
})
  • 只监听合约的特定事件,比如Transfer、Mint等,把上面的allEvents换成对应事件名即可,比如targetContract.events.Transfer(...)
  • 如果需要监听还没上链的pending交易,可以订阅pending交易池再过滤目标合约地址:
web3.eth.subscribe('pendingTransactions', async (error, txHash) => {
  if (error) return;
  const tx = await web3.eth.getTransaction(txHash);
  if (tx?.to?.toLowerCase() === TARGET_CONTRACT_ADDR.toLowerCase()) {
    console.log('监测到合约待确认交易:', txHash);
    // 触发通知逻辑
  }
})
  1. 补充异常处理
    记得加节点断连重连逻辑,同时缓存已处理的最新区块高度,重连后补查中间漏的区块数据,避免漏掉交易通知。

二、合约监控脚本常用实用库

  • web3.js/ethers.js:核心链交互库,二选一即可,ethers.js API更简洁、体积更小,新手也可以优先选择
  • dotenv:用来管理节点地址、推送密钥等敏感配置,不用硬编码到代码里,降低泄露风险
  • winston/pino:专业日志库,支持日志分级、落地存储、自动加时间戳,比原生console.log更适合长期运行的监控脚本排查问题
  • node-schedule:如果只能用HTTP节点走轮询方案,可以用这个库实现定时拉取区块的任务调度
  • chalk:给控制台输出增加不同颜色标记,报错标红、新交易通知标绿,查看日志更直观
  • viem:近几年流行的轻量链交互库,性能比web3.js和ethers.js更高,多链监控场景更适用

内容的提问来源于stack exchange,提问作者Neil Christiane Buenaobra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:15:03