BigInt vs Number for crypto
Number gives you ~15-17 significant digits. That's enough for ETH values up to about 9 ETH (because 10¹⁸ Wei needs 19 digits). For anything larger — or for sub-Gwei precision — BigInt is mandatory. Most production libraries (ethers.js, viem) standardise on BigInt for exactly this reason.