Files
lab2/scripts/contract-explorer.ts
2026-02-26 16:17:30 +01:00

56 lines
1.5 KiB
TypeScript

import prompts from 'prompts';
import { createPublicClient, erc20Abi, http } from 'viem';
import { nextChain } from '../chains/next.js';
const client = createPublicClient({
chain: nextChain,
transport: http()
});
// you don't have to touch this function, it's already good
const readErc20Contract = async (contractAddress: `0x${string}`, func: any, args: any) => {
return client.readContract({
address: contractAddress,
abi: erc20Abi,
functionName: func,
args: args
})
}
async function main() {
const { contractAddress, accountAddress }:
{ contractAddress: `0x${string}`, accountAddress: `0x${string}` } = await prompts([{
type: 'text',
name: 'contractAddress',
message: 'Enter the contract address to explore:',
}, {
type: 'text',
name: 'accountAddress',
message: 'Enter the account address:',
}]);
if (!contractAddress || !accountAddress) {
console.error('You need to enter both a contract address and an account address.');
return;
}
// you can start coding here
// ...
console.log(`Contract address: ${contractAddress}`);
console.log(`========================================`);
console.log(`Name: ...`);
console.log(`Symbol: ...`);
console.log(`Decimals: ...`);
console.log(); console.log(); console.log();
console.log(`Account address: ${accountAddress}`);
console.log(`========================================`);
console.log(`Balance: ...`);
}
main();