Method Signature
align.blockchain.contracts.getEvents(
params: ContractEventQuery
): Promise<ContractEvent[]>
Parameters
Contract address to query
Contract ABI (needs event definitions)
Starting block (default: 0)
Ending block (default: "latest")
Examples
import Align from "@tolbel/align";
const align = new Align({
apiKey: process.env.ALIGN_API_KEY!,
environment: "sandbox",
});
// Get USDC Transfer events
const ERC20_ABI = [
"event Transfer(address indexed from, address indexed to, uint256 value)",
];
const events = await align.blockchain.contracts.getEvents({
contractAddress: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
abi: ERC20_ABI,
eventName: "Transfer",
fromBlock: 50000000,
toBlock: "latest",
network: "polygon",
});
console.log(`Found ${events.length} Transfer events`);
events.forEach((event) => {
console.log(`${event.args[0]} → ${event.args[1]}: ${event.args[2]}`);
});
const events = await align.blockchain.contracts.getEvents({
contractAddress: tokenAddress,
abi: ERC20_ABI,
eventName: "Transfer",
fromBlock: 0,
toBlock: "latest",
network: "polygon",
});
Track Wallet Activity
// Get all transfers to/from a specific wallet
const walletAddress = "0x...";
const events = await align.blockchain.contracts.getEvents({
contractAddress: USDC_ADDRESS,
abi: [
"event Transfer(address indexed from, address indexed to, uint256 value)",
],
eventName: "Transfer",
fromBlock: 50000000,
toBlock: "latest",
network: "polygon",
});
// Filter for our wallet
const incoming = events.filter(
(e) => e.args[1].toLowerCase() === walletAddress.toLowerCase()
);
const outgoing = events.filter(
(e) => e.args[0].toLowerCase() === walletAddress.toLowerCase()
);
console.log(`Incoming: ${incoming.length}, Outgoing: ${outgoing.length}`);
Querying large block ranges may be slow or rate-limited. Use smaller ranges
for better performance.