| Token / Chain | Standard Decimals | Authoritative Source | 
|---|---|---|
| USDC | 6 | https://developers.circle.com/stablecoins/quickstart-transfer-10-usdc-on-chain | 
| USDT (Ethereum) | 6 | https://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7#code | 
| Toncoin (TON) | 9 | https://docs.ton.org/v3/guidelines/dapps/cookbook | 
| Bitcoin (BTC) | 8 | https://developer.bitcoin.org/glossary.html#satoshis | 
| Ether & most ERC-20s | 18 | https://docs.openzeppelin.com/contracts/5.x/erc20 | 
| ERC-20 spec | variable | https://eips.ethereum.org/EIPS/eip-20 | 
| Solana (SOL) | 9 | https://docs.solana.com/terminology#lamport | 
decimals field actually represent?
          
            It defines how many base units compose one token
            unit.
            If decimals = 18, an on-chain integer of
            1_000_000_000_000_000_000 equals
            1 token.
            https://docs.openzeppelin.com/contracts/5.x/erc20
          
            Circle chose 6 to mirror fiat “cents” UX and keep
            raw numbers small; every official USDC contract on every chain
            follows this.
            https://developers.circle.com/stablecoins/quickstart-transfer-10-usdc-on-chain
          
            Any 18-decimal variant is a bridged / wrapped token
            (e.g., Binance-Peg).
            Always call the contract’s own decimals() before
            scaling.
            https://developers.circle.com/stablecoins/quickstart-transfer-10-usdc-on-chain
          
            The canonical Ethereum USDT contract locks
            _decimals = 6.
            18-decimal versions are redeployed bridge tokens; verify each
            chain’s contract.
            https://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7#code
          
            No. decimals is an immutable constant in the
            bytecode.
            Changing precision requires a brand-new contract.
            https://eips.ethereum.org/EIPS/eip-20
          
            A satoshi –
            1 BTC = 100 000 000 satoshis, i.e. 8 decimals.
            https://developer.bitcoin.org/glossary.html#satoshis
          
            Toncoin uses 9 decimals (1 TON = 1 000 000 000 nanoTON).
            Most Jettons follow the same rule unless explicitly configured
            (e.g., 6 for TON-USDT).
            https://docs.ton.org/v3/guidelines/dapps/cookbook
          
            Solana’s smallest unit is a lamport;
            1 SOL = 1 000 000 000 lamports (9 decimals).
            https://docs.solana.com/terminology#lamport
          
            Use human = raw / 10**decimals.
            For user input, multiply back (raw = human * 10**decimals).
            Employ arbitrary-precision libraries—never JS
            Number for big values.
            https://docs.openzeppelin.com/contracts/5.x/erc20
          
decimals mandatory in the ERC-20 standard?
          
            No. It’s an optional function in EIP-20; clients
            must not assume it exists.
            https://eips.ethereum.org/EIPS/eip-20
          
            Tip for developers: cache each token’s
            decimals() value per network, and always verify bridged
            or wrapped assets individually to avoid scaling errors.