curl --request POST \
--url https://rpc.testnet.tempo.xyz/ \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "eth_getFilterChanges",
"params": [
"0x..."
],
"id": 1
}
'{
"jsonrpc": "<string>",
"id": 123,
"result": [
"<unknown>"
]
}curl --request POST \
--url https://rpc.testnet.tempo.xyz/ \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "eth_getFilterChanges",
"params": [
"0x..."
],
"id": 1
}
'{
"jsonrpc": "<string>",
"id": 123,
"result": [
"<unknown>"
]
}eth_newFilter, eth_newBlockFilter, or eth_newPendingTransactionFilter.
filterId — the filter ID returned from a filter creation methodresult — array of changes since last poll:
eth_getFilterChanges code examplesconst ethers = require('ethers');
const NODE_URL = "CHAINSTACK_NODE_URL";
const provider = new ethers.JsonRpcProvider(NODE_URL);
// pathUSD token address
const PATHUSD = "0x20c0000000000000000000000000000000000000";
const TRANSFER_TOPIC = ethers.id("Transfer(address,address,uint256)");
const pollFilter = async () => {
// Create a log filter for Transfer events
const filterId = await provider.send("eth_newFilter", [{
address: PATHUSD,
topics: [TRANSFER_TOPIC]
}]);
console.log(`Created filter: ${filterId}`);
// Poll for changes every 2 seconds
const interval = setInterval(async () => {
const changes = await provider.send("eth_getFilterChanges", [filterId]);
if (changes.length > 0) {
console.log(`\nFound ${changes.length} new Transfer events:`);
for (const log of changes) {
console.log(` Block ${parseInt(log.blockNumber, 16)}: ${log.transactionHash}`);
}
} else {
console.log("No new changes...");
}
}, 2000);
// Stop after 20 seconds
setTimeout(async () => {
clearInterval(interval);
await provider.send("eth_uninstallFilter", [filterId]);
console.log("\nFilter uninstalled");
}, 20000);
};
pollFilter();
Was this page helpful?