Skip to content

Instantly share code, notes, and snippets.

@soos3d
Created January 25, 2024 18:18
Show Gist options
  • Save soos3d/caa502eb37f07f48c2e8a9b38e7ef48a to your computer and use it in GitHub Desktop.
Save soos3d/caa502eb37f07f48c2e8a9b38e7ef48a to your computer and use it in GitHub Desktop.
Listen to events with ethers
const ethers = require("ethers");
const WebSocket = require("ws");
const NODE_URL =
"BASE_WSS";
function createWebSocket() {
const ws = new WebSocket(NODE_URL);
ws.on("close", () => {
// Get the current date and time
const currentTime = new Date().toLocaleString();
// Log the current time to the console
console.log(`Current time: ${currentTime}`);
// Existing log statement
console.log("Disconnected. Reconnecting...");
// Existing reconnection logic
setTimeout(() => {
provider = new ethers.WebSocketProvider(createWebSocket());
startListening();
}, 3000);
});
ws.on("error", (error) => {
console.log("WebSocket error: ", error);
});
return ws;
}
let provider = new ethers.WebSocketProvider(createWebSocket());
const contractAddress = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"; // USDC on Base
const contractABI = [
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "from",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "to",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256",
},
],
name: "Transfer",
type: "event",
},
];
function startListening() {
console.log(`Listening for transfers on ${contractAddress}...`);
const contract = new ethers.Contract(contractAddress, contractABI, provider);
// Remove any existing listeners if needed
contract.removeAllListeners("Transfer");
// Listen to the Transfer event
contract.on("Transfer", (from, to, value, event) => {
console.log(`Transfer event: ${from} -> ${to}, Value: ${value}`);
// ... rest of your code
});
}
startListening();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment