Method Signature
align.blockchain.contracts.read(
params: ContractCall
): Promise<unknown>
Parameters
Contract ABI (only needs the function you’re calling)
Function arguments (if any)
Network: ethereum, polygon, base, arbitrum
Examples
import Align from "@tolbel/align";
const align = new Align({
apiKey: process.env.ALIGN_API_KEY!,
environment: "sandbox",
});
// ERC-20 balanceOf example
const ERC20_ABI = [
"function balanceOf(address) view returns (uint256)",
"function decimals() view returns (uint8)",
"function symbol() view returns (string)",
];
const balance = await align.blockchain.contracts.read({
contractAddress: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", // USDC
abi: ERC20_ABI,
method: "balanceOf",
args: ["0xWalletAddress..."],
network: "polygon",
});
console.log(`Balance: ${balance.toString()}`);
const balance = await align.blockchain.contracts.read({
contractAddress: USDC_ADDRESS,
abi: ERC20_ABI,
method: "balanceOf",
args: [walletAddress],
network: "polygon",
});
Read Multiple Values
const [symbol, decimals, balance] = await Promise.all([
align.blockchain.contracts.read({
contractAddress: tokenAddress,
abi: ERC20_ABI,
method: "symbol",
args: [],
network: "polygon",
}),
align.blockchain.contracts.read({
contractAddress: tokenAddress,
abi: ERC20_ABI,
method: "decimals",
args: [],
network: "polygon",
}),
align.blockchain.contracts.read({
contractAddress: tokenAddress,
abi: ERC20_ABI,
method: "balanceOf",
args: [walletAddress],
network: "polygon",
}),
]);
console.log(`${symbol}: ${formatUnits(balance, decimals)}`);
Read operations are free - they don’t require gas or signing.