javascriptethereumintegrationintermediate
Listen to Contract Events with ethers.js
Subscribe to real-time smart contract events using ethers.js event listeners.
All snippets
Code
javascript
import { ethers } from "ethers";
const provider = new ethers.WebSocketProvider(
"wss://eth-mainnet.g.alchemy.com/v2/YOUR_KEY"
);
const abi = [
"event Transfer(address indexed from, address indexed to, uint256 value)"
];
const contract = new ethers.Contract(
"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
abi,
provider
);
contract.on("Transfer", (from, to, value, event) => {
console.log(`Transfer: ${ethers.formatUnits(value, 6)} USDC`);
console.log(` From: ${from}`);
console.log(` To: ${to}`);
console.log(` Tx: ${event.log.transactionHash}\n`);
});Explanation
Event listening lets you build real-time dashboards and notifications.
Key points:
- Use
WebSocketProvider(not HTTP) for real-time streaming. contract.on(eventName, callback)fires on every matching event.- Indexed parameters (
from,to) are passed directly; non-indexed are in the lasteventobject.
Remember to call contract.removeAllListeners() on cleanup to avoid memory leaks.
ethers.jseventswebsocketreal-time