Files
proxmox/token-lists/scripts/find-tokens-via-events.js
defiQUG f0ab0eadc2 Add complete token lists for Ethereum Mainnet, ChainID 138, and ALL Mainnet
- Added Ethereum Mainnet token list (1 token: USDT)
- Updated ChainID 138 token list (6 tokens: added cUSDT and cUSDC)
- Added ALL Mainnet token list (9 tokens including AUSDT)
- Discovered ALL Mainnet tokens via Transfer event scanning
- Updated validation scripts for multi-chain support
- Created comprehensive documentation and guides
- Updated master documentation indexes
- All token lists validated and ready for submission
2026-01-26 13:52:05 -08:00

62 lines
1.9 KiB
JavaScript
Executable File

#!/usr/bin/env node
/**
* Find tokens via Transfer events
* ERC-20 tokens emit Transfer events, we can find token addresses this way
*/
import { ethers } from 'ethers';
const RPC_URL = 'https://mainnet-rpc.alltra.global';
const CHAIN_ID = 651940;
// Transfer event signature
const TRANSFER_TOPIC = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
async function findTokensViaEvents() {
const provider = new ethers.JsonRpcProvider(RPC_URL);
console.log(`🔍 Finding tokens via Transfer events on ALL Mainnet (ChainID ${CHAIN_ID})\n`);
const currentBlock = await provider.getBlockNumber();
const fromBlock = Math.max(0, currentBlock - 10000); // Last 10k blocks
console.log(`Scanning blocks ${fromBlock} to ${currentBlock} for Transfer events...\n`);
try {
// Get Transfer events
const filter = {
topics: [TRANSFER_TOPIC],
fromBlock: fromBlock,
toBlock: currentBlock
};
const logs = await provider.getLogs(filter);
console.log(`Found ${logs.length} Transfer events\n`);
// Extract unique contract addresses (token addresses)
const tokenAddresses = new Set();
logs.forEach(log => {
tokenAddresses.add(log.address);
});
console.log(`Found ${tokenAddresses.size} unique token addresses\n`);
console.log('Token addresses found:\n');
const addresses = Array.from(tokenAddresses).slice(0, 20); // Limit to first 20
addresses.forEach((addr, i) => {
console.log(`${i + 1}. ${addr}`);
});
if (addresses.length > 0) {
console.log('\n💡 Use extract-tokens-from-explorer.js to get metadata:');
console.log(`node token-lists/scripts/extract-tokens-from-explorer.js ${addresses.join(' ')}`);
}
} catch (error) {
console.error('Error:', error.message);
console.log('\n💡 Alternative: Visit https://alltra.global/tokens to get token addresses');
}
}
findTokensViaEvents().catch(console.error);