Created
January 25, 2024 18:18
-
-
Save soos3d/caa502eb37f07f48c2e8a9b38e7ef48a to your computer and use it in GitHub Desktop.
Listen to events with ethers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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