Skip to main content

Method Signature

align.blockchain.contracts.getEvents(
  params: ContractEventQuery
): Promise<ContractEvent[]>

Parameters

contractAddress
string
required
Contract address to query
abi
array
required
Contract ABI (needs event definitions)
eventName
string
required
Event name to filter
fromBlock
number
Starting block (default: 0)
toBlock
number | string
Ending block (default: "latest")
network
string
required
Network to query

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]}`);
});

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.