最简易链上信息脚本:打印Uniswap Router02的内存池交易
在本篇文章中,我们将从零开始,教你如何用 Node.js
和 ethers.js
写一个最基础的链上监听脚本:它将打印所有发送到 Uniswap Router02 合约的交易哈希与 input data。
步骤 1:安装 Node.js
首先,确保你本地已经安装了 Node.js。你可以从 官网 下载对应平台的安装包。安装完成后,打开终端,输入以下命令确认:
node -v
npm -v
步骤 2:初始化一个 Node.js 项目
打开终端,创建一个新的项目文件夹并进入:
mkdir mempool-watcher
cd mempool-watcher
npm init -y
步骤 3:安装必要的依赖
我们需要使用 ethers 库来与以太坊节点通信:
npm install ethers
步骤 4:创建监听脚本
在项目目录下创建 index.js
文件,并粘贴以下代码:
const { ethers } = require("ethers");
// 使用你自己的以太坊本地节点 WebSocket 地址
const provider = new ethers.providers.WebSocketProvider("ws://localhost:8546");
// Uniswap V2 Router02 合约地址(主网)
const UNISWAP_ROUTER02 = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"; // 这里也替换为任何你想要监听的地址
console.log("开始监听内存池中与 Uniswap Router02 互动的交易...");
provider.on("pending", async (txHash) => {
try {
const tx = await provider.getTransaction(txHash);
if (tx && tx.to && tx.to.toLowerCase() === UNISWAP_ROUTER02.toLowerCase()) {
console.log("---");
console.log("交易哈希:", tx.hash);
console.log("Input Data:", tx.data);
}
} catch (err) {
// 忽略获取不到交易内容的情况
}
});
⚠️ 请注意:
- 你需要确保你的本地节点 Geth 跟着上一篇博客内容设置并且启用了 WebSocket 支持(
--ws
和--ws.api
参数)。
运行脚本
在终端中执行以下命令启动脚本:
node index.js
运行后,你将看到不断打印出与 Router02 合约交互的交易哈希和 input data!
如果你还没配置自己的以太坊节点,可以查看我写的教程:如何配置本地 Geth 节点并查询链上数据
—— Holycrab