evm-token-decimals
Ajuda seu agente a evitar erros com números decimais em diferentes redes blockchain. Garante que os valores de tokens sejam precisos em transações e cálculos.
O que ela faz
Essa ferramenta ajuda a garantir que os valores de moedas digitais (tokens) em diferentes redes blockchain sejam calculados corretamente. Ela evita erros que fazem com que os valores pareçam muito maiores ou menores do que realmente são.
Quando usar
- ✓Ao verificar o saldo de uma moeda digital.
- ✓Ao calcular o valor em dinheiro de seus ativos digitais.
- ✓Ao comparar valores de moedas digitais entre diferentes redes blockchain.
Exemplo do que pedir para a IA
“Qual o saldo real de tokens UNI na minha carteira na rede Polygon?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ela consulta a informação correta sobre a moeda digital em tempo real e armazena essa informação para uso futuro. Isso garante que os cálculos sejam sempre precisos, mesmo que a mesma moeda digital tenha representações diferentes em redes distintas.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add affaan-m/ECC --skill evm-token-decimalsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/skills/evm-token-decimals/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Decimais de Tokens EVM
Divergências silenciosas de decimais são uma das maneiras mais fáceis de enviar saldos ou valores em USD com ordens de magnitude de diferença, sem gerar um erro.
Quando Usar
- Lendo saldos de ERC-20 em Python, TypeScript ou Solidity
- Calculando valores em moeda fiduciária a partir de saldos on-chain
- Comparando quantidades de tokens entre múltiplas cadeias EVM
- Lidando com ativos "bridged" (transferidos entre cadeias)
- Construindo rastreadores de portfólio, bots ou agregadores
Como Funciona
Nunca assuma que stablecoins usam os mesmos decimais em todos os lugares. Consulte decimals() em tempo de execução, armazene em cache por (chain_id, token_address) e use matemática segura para decimais em cálculos de valor.
Exemplos
Consultar decimais em tempo de execução
from decimal import Decimal
from web3 import Web3
ERC20_ABI = [
{"name": "decimals", "type": "function", "inputs": [],
"outputs": [{"type": "uint8"}], "stateMutability": "view"},
{"name": "balanceOf", "type": "function",
"inputs": [{"name": "account", "type": "address"}],
"outputs": [{"type": "uint256"}], "stateMutability": "view"},
]
def get_token_balance(w3: Web3, token_address: str, wallet: str) -> Decimal:
contract = w3.eth.contract(
address=Web3.to_checksum_address(token_address),
abi=ERC20_ABI,
)
decimals = contract.functions.decimals().call()
raw = contract.functions.balanceOf(Web3.to_checksum_address(wallet)).call()
return Decimal(raw) / Decimal(10 ** decimals)
Não codifique embutido 1_000_000 porque um símbolo geralmente tem 6 decimais em outro lugar.
Armazenar em cache por cadeia e token
from functools import lru_cache
@lru_cache(maxsize=512)
def get_decimals(chain_id: int, token_address: str) -> int:
w3 = get_web3_for_chain(chain_id)
contract = w3.eth.contract(
address=Web3.to_checksum_address(token_address),
abi=ERC20_ABI,
)
return contract.functions.decimals().call()
Lidar com tokens incomuns de forma defensiva
try:
decimals = contract.functions.decimals().call()
except Exception:
logging.warning(
"decimals() reverted on %s (chain %s), defaulting to 18",
token_address,
chain_id,
)
decimals = 18
Registre o fallback e mantenha-o visível. Tokens antigos ou não padronizados ainda existem.
Normalizar para WAD de 18 decimais em Solidity
interface IERC20Metadata {
function decimals() external view returns (uint8);
}
function normalizeToWad(address token, uint256 amount) internal view returns (uint256) {
uint8 d = IERC20Metadata(token).decimals();
if (d == 18) return amount;
if (d < 18) return amount * 10 ** (18 - d);
return amount / 10 ** (d - 18);
}
TypeScript com ethers
import { Contract, formatUnits } from 'ethers';
const ERC20_ABI = [
'function decimals() view returns (uint8)',
'function balanceOf(address) view returns (uint256)',
];
async function getBalance(provider: any, tokenAddress: string, wallet: string): Promise<string> {
const token = new Contract(tokenAddress, ERC20_ABI, provider);
const [decimals, raw] = await Promise.all([
token.decimals(),
token.balanceOf(wallet),
]);
return formatUnits(raw, decimals);
}
Verificação rápida on-chain
cast call <token_address> "decimals()(uint8)" --rpc-url <rpc>
Regras
- Sempre consulte
decimals()em tempo de execução - Armazene em cache por cadeia mais endereço do token, não por símbolo
- Use
Decimal,BigIntou matemática exata equivalente, não ponto flutuante - Reconsulte os decimais após mudanças de "bridging" ou "wrapper"
- Normalize a contabilidade interna de forma consistente antes da comparação ou precificação
Perguntas frequentes
Por que o saldo de uma moeda digital aparece errado?
Isso pode acontecer porque diferentes redes blockchain usam um número diferente de 'casas decimais' para representar a mesma moeda digital. Essa ferramenta corrige essa diferença.
O que são 'casas decimais' no contexto de moedas digitais?
É como a moeda digital é dividida. Por exemplo, 1 Bitcoin pode ser representado como 1.000.000.000.000.000.000 unidades menores, dependendo das 'casas decimais' definidas.
Essa ferramenta funciona para todas as moedas digitais?
Ela é projetada para moedas digitais na rede EVM (Ethereum Virtual Machine), que inclui redes populares como Ethereum, Polygon, Binance Smart Chain, entre outras.
Detalhes
Descrição original do autor
Prevent silent decimal mismatch bugs across EVM chains. Covers runtime decimal lookup, chain-aware caching, bridged-token precision drift, and safe normalization for bots, dashboards, and DeFi tools. Use when handling token amounts across EVM chains, or when a balance, price, or transfer amount is off by orders of magnitude.
repo: affaan-m/ECC
Popularidade
- Estrelas no GitHub
- 280 mil
- Posição no ranking
- #187
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
knowledge-agent
Cria e consulta bases de conhecimento com inteligência artificial. Permite fazer perguntas sobre trabalhos passados ou compilar conhecimento sobre um tema.
thedotmack/claude-mem
Snowflake Automation
Faz seu agente interagir com o Snowflake. Ele pode listar dados, executar comandos SQL e gerenciar fluxos de trabalho de dados.
ComposioHQ/awesome-claude-skills
alphagenome
Consulta efeitos genômicos pré-calculados para variantes genéticas. Ele fornece pontuações e explicações para entender o impacto das variantes no genoma.
K-Dense-AI/scientific-agent-skills