O que é um endereço de contrato em cripto e como verificar um?

Endereços de contrato no Ethereum, Tron e Solana, explicados por ChainGate.

Um endereço de contrato é o endereço de um smart contract em uma blockchain. Ele é criado no momento do deploy do contrato, não tem chave privada e é a string a que as pessoas se referem quando escrevem "CA" ao lado de um token.

No Ethereum e em toda rede EVM ele é exatamente igual a um endereço de carteira: 0x seguido de 40 caracteres hexadecimais. Um token como USDT ou USDC é um contrato, então o endereço do token é um endereço de contrato. O que muda em relação a um endereço de carteira é o que está por trás dele: código e armazenamento em vez de uma pessoa com uma chave privada.

O termo aparece em três lugares: quando você adiciona um token personalizado a uma carteira, quando um block explorer rotula um endereço como contrato e quando alguém publica o CA de uma moeda nova. Este guia explica o que o endereço identifica, como ele é gerado, como diferenciá-lo de um endereço de carteira, onde encontrar o endereço real de um token e o que acontece se você enviar fundos para um.

A versão curta

  • Um endereço de contrato aponta para código; um endereço de carteira aponta para quem tem uma chave. Os dois usam o mesmo formato nas redes EVM, então o formato sozinho não diz qual é qual. Um block explorer ou uma chamada eth_getCode dizem.
  • Nas redes EVM o endereço é 0x + 40 caracteres hexadecimais, derivado do endereço e do nonce de quem fez o deploy, ou de um salt com CREATE2. A Tron usa 34 caracteres começando com T, a Solana um endereço de mint em base58.
  • Copie o endereço de um token do site ou da documentação do emissor, depois confira se o explorer mostra código-fonte verified, muitos holders e um histórico longo. Tokens de golpe reutilizam nomes e símbolos reais.
  • A maioria dos contratos de token não consegue devolver tokens enviados para o próprio endereço. Depósitos vão para um endereço de carteira; com um contrato você interage por meio de uma dApp ou de uma carteira que conhece as funções dele.

1. O que é um endereço de contrato?

Toda conta no Ethereum, e nas redes construídas como ele, tem um endereço. Existem dois tipos de conta. Uma conta de propriedade externa pertence a quem tem a chave privada dela. Uma conta de contrato guarda um programa e os dados que esse programa mantém, e o endereço dela é o endereço de contrato. A documentação do ethereum.org diz isso diretamente: contas de contrato não têm chave privada; elas são controladas pela lógica do código do smart contract.

Um contrato recebe o deploy uma única vez, por uma transação, ganha seu endereço nesse momento e o mantém enquanto a rede existir. Qualquer pessoa pode enviar uma transação para esse endereço para chamar uma das funções do contrato. Uma transferência de token ou um swap em uma exchange descentralizada é uma transação endereçada a um contrato.

Tokens são o caso mais comum. USDT, USDC, WETH e todo outro token ERC-20 é um contrato que mantém uma tabela de saldos. O endereço do token é, portanto, um endereço de contrato, e é a única informação de que uma carteira precisa para exibir um token que ainda não conhece.

2. O que significa "CA" em cripto?

CA é a sigla de contract address, endereço de contrato. No X, no Telegram e no Discord, um post sobre um token novo costuma terminar com CA seguido do endereço, porque o nome e o ticker de um token não são únicos e o endereço é. Sites de trading e carteiras usam a mesma abreviação.

Na Solana o CA é o endereço de mint do token, a conta que define o supply e as casas decimais do token. No Ethereum, na BNB Chain, na Base e em outras redes EVM é o endereço do contrato ERC-20 ou BEP-20. Nos dois casos o endereço é o que você cola em uma carteira ou em um explorer para chegar ao token exato de que alguém está falando. É também por isso que CAs falsos são um golpe comum: um token imitador com o mesmo nome tem um endereço diferente.

3. Como é um endereço de contrato?

O formato segue a rede, e é o mesmo formato que a rede usa para endereços de carteira. Estes são os endereços oficiais de duas stablecoins muito usadas, tirados das páginas dos emissores:

RedeTokenEndereço de contratoFormato
EthereumUSDT (ERC-20)0xdAC17F958D2ee523a2206206994597C13D831ec70x + 40 caracteres hexadecimais
EthereumUSDC0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB480x + 40 caracteres hexadecimais
BaseUSDC0x833589fCD6eDb6E08f4c7C32D4f71b54bdA029130x + 40 caracteres hexadecimais
Arbitrum OneUSDC0xaf88d065e77c8cC2239327C5EDb3A432268e58310x + 40 caracteres hexadecimais
Polygon PoSUSDC0x3c499c542cEF5E3811e1192ce70d8cC03d5c33590x + 40 caracteres hexadecimais
TronUSDT (TRC-20)TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t34 caracteres base58check começando com T
SolanaUSDC (endereço de mint)EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v32 a 44 caracteres base58

As entradas de Ethereum, Base, Arbitrum e Polygon vêm da lista de endereços de contrato do USDC da Circle, e as de USDT da página de protocolos suportados da Tether. O USDC tem um endereço diferente em cada rede: o mesmo nome não significa o mesmo contrato. As letras maiúsculas e minúsculas de um endereço EVM formam um checksum definido na EIP-55; a forma toda em minúsculas é o mesmo endereço, e explorers e carteiras aceitam as duas.

O Bitcoin não tem endereços de contrato. Um endereço de Bitcoin que começa com 3 ou bc1 pode codificar um script, mas não há um programa vivendo no endereço para você chamar. O conceito pertence a redes baseadas em contas, como Ethereum, Tron e Solana.

4. Endereço de contrato vs endereço de carteira: qual é a diferença?

Em uma rede EVM os dois são idênticos na aparência, então a distinção está no que controla o endereço.

Endereço de carteira (conta de propriedade externa)Endereço de contrato
Controlado porUma chave privada, normalmente derivada de uma seed phraseO código do contrato; não há chave privada
Pode iniciar uma transaçãoSimNão. Ele só executa quando uma transação ou outro contrato o chama
Guarda códigoNão, a menos que delegue a código via EIP-7702Sim, além do próprio armazenamento
Como é criadoDe graça: derivado de uma chave pública, sem precisar de transaçãoPor uma transação de deploy que paga gas
Uso típicoReceber fundos, assinar transaçõesTokens, exchanges, pools de empréstimo, coleções de NFT, bridges
Em um block explorerExibido como um endereço normalRotulado como contrato, com uma aba Contract

A única zona cinzenta é a EIP-7702, ativa no Ethereum desde a atualização Pectra, de maio de 2025. Ela permite que um endereço de carteira anexe código delegado a si mesmo para agrupar chamadas ou deixar outra pessoa pagar suas taxas. A chave continua controlando a conta e a conta continua podendo enviar transações, então ele continua sendo um endereço de carteira com código anexado.

Para diferenciá-los, abra o endereço em um block explorer: um contrato tem uma aba Contract, um endereço de criador e, se o código-fonte foi publicado, código verified. Em código, o método JSON-RPC eth_getCode devolve o bytecode armazenado em um endereço, e apenas 0x para um endereço de carteira. O guia do Etherscan mostra onde fica cada uma dessas abas.

5. Como um endereço de contrato é gerado?

O endereço é calculado, não escolhido, e cada rede tem sua própria regra:

Ethereum e redes EVM (CREATE)
O endereço são os últimos 20 bytes do hash Keccak-256 do endereço de quem faz o deploy e do nonce dele, a contagem de transações que esse endereço já enviou. Fazer o deploy duas vezes a partir da mesma conta dá dois endereços diferentes, porque o nonce avançou.
Ethereum e redes EVM (CREATE2)
Um contrato pode fazer o deploy de outro contrato em um endereço calculado a partir do próprio endereço, de um salt que ele escolhe e do hash do código de criação: keccak256(0xff ++ address ++ salt ++ keccak256(init_code))[12:]. O endereço é conhecido antes de qualquer deploy, e é assim que um mesmo contrato pode aparecer no mesmo endereço em muitas redes.
Tron
Um endereço da Tron tem 21 bytes com um 0x41 inicial, exibidos como 34 caracteres base58check começando com T. Endereços de contrato usam o mesmo formato dos endereços de carteira e são derivados do ID da transação de deploy e do endereço de quem fez o deploy.
Solana
O endereço de um programa é a chave pública da conta que armazena seu código executável. Um token é identificado pelo endereço da sua conta mint, que pertence ao Token Program. A carteira que possui o token recebe uma conta de token separada para cada mint.

As regras estão na documentação de contas do ethereum.org, na EIP-1014 para o CREATE2, na referência de contas da Tron e na documentação de tokens da Solana.

6. O endereço do token é o mesmo que o endereço de contrato?

Nas redes EVM, sim. O endereço do token é o endereço de contrato do contrato do token, e carteiras, explorers e exchanges usam os dois nomes para a mesma string. Adicionar um token personalizado a uma carteira significa colar esse endereço; a carteira então lê o símbolo e o número de casas decimais do próprio contrato, e é por isso que um endereço errado mostra um token errado em vez de um erro.

Dois casos precisam de um identificador extra. Um NFT é identificado pelo endereço de contrato da coleção mais um ID do token, já que um único contrato guarda a coleção inteira. Na Solana o endereço do token é o endereço de mint, e o saldo que você possui fica em uma conta de token ligada à sua carteira, não no mint.

7. Como encontro o endereço de contrato de um token?

Pegue-o de uma fonte controlada pelo emissor e depois confirme em um explorer.

O site ou a documentação do emissor
Emissores de stablecoins, protocolos e a maioria dos projetos publicam seus endereços por rede. A Circle e a Tether mantêm uma página cada uma para o USDC e o USDT, e as entradas da tabela acima vêm de lá.
CoinMarketCap e CoinGecko
A página do token lista o endereço de contrato de cada rede em Contracts, com um botão de copiar e um link para o explorer.
Um block explorer
Pesquise o nome do token no Etherscan, BscScan, Polygonscan, Tronscan ou Solscan. Os explorers marcam o token estabelecido e mostram o número de holders; uma cópia com o mesmo nome e dez holders é um token diferente.
Sua carteira ou exchange
As carteiras mostram o endereço na tela de detalhes do token. As exchanges mostram nas páginas de depósito e saque, junto com a rede a que o endereço pertence.

Copie a string inteira e guarde a rede junto com ela. Um endereço de USDC da Base não significa nada na Arbitrum, e um explorer mostra um endereço vazio se você o procurar na rede errada.

8. Como verificar se um endereço de contrato é legítimo?

O nome e o símbolo de um token são texto livre no contrato, então qualquer pessoa pode fazer o deploy de um segundo USDC. Estas verificações separam o contrato real das cópias:

Compare com o do emissor
O endereço precisa ser idêntico, caractere por caractere, ao que está no site ou na documentação do emissor. Compare mais do que os primeiros e os últimos caracteres; endereços imitadores são gerados justamente para coincidir neles.
Procure código-fonte verified
No Etherscan e em explorers parecidos, a aba Contract mostra se quem fez o deploy publicou o código-fonte e se o explorer o recompilou para bater com o bytecode. Bytecode não verified é um sinal de alerta para qualquer token de uso amplo.
Verifique holders, idade e atividade
O contrato de uma stablecoin real tem milhões de transferências e anos de histórico. Um contrato com deploy na semana passada, um punhado de holders e sem código-fonte verified é outro token, seja qual for o nome.
Leia as regras do token
Explorers e scanners de token sinalizam contratos cujo owner pode mintar à vontade, pausar transferências, mudar taxas ou bloquear vendas. Um contrato proxy mantém o endereço, mas pode trocar a implementação, então confira quem controla o upgrade.
Confira a rede
O mesmo projeto tem endereços diferentes em redes diferentes, então garanta que o explorer, a carteira e a fonte se referem todos à mesma rede.

O guia do Etherscan percorre a aba Contract e as visões Read Contract e Write Contract usadas nessas verificações.

9. Posso enviar cripto para um endereço de contrato?

Pode, e o resultado depende do contrato. Depositar em um pool de empréstimo, comprar em uma exchange descentralizada ou mintar um NFT funcionam enviando uma transação para um contrato, normalmente com uma chamada de função anexada, por meio de uma carteira ou de uma dApp que conhece a interface do contrato.

Enviar tokens para o próprio endereço de contrato do token é o erro a evitar. O padrão ERC-20 define funções de transferência, aprovação e saldo, e nada que permita ao contrato devolver tokens, então moedas enviadas por engano para um contrato de token normalmente estão perdidas, a menos que o emissor tenha criado uma função de recuperação e concorde em usá-la. O mesmo vale para a maioria dos contratos que nunca foram projetados para receber transferências simples: alguns as rejeitam, outros as aceitam em silêncio.

Quando uma exchange ou uma pessoa pede um depósito, ela dá a você um endereço de carteira. Quando um protocolo quer que você interaja, a dApp monta a transação para você. Se você se pegar colando o endereço de contrato de um token no campo de destinatário de uma transferência, pare e confira o que está fazendo.

10. O endereço de contrato é o mesmo em todas as blockchains?

Não, a menos que quem fez o deploy tenha feito isso de propósito. A tabela do USDC acima mostra quatro endereços diferentes em quatro redes EVM para o mesmo ativo, porque cada deploy foi uma transação separada, a partir de uma conta com um nonce diferente. Versões de um token transferidas por bridge, muitas vezes marcadas com um sufixo como .e, têm endereços próprios, então um explorer pode mostrar mais de um token chamado USDC em uma mesma rede.

Endereços idênticos em várias redes são possíveis com o CREATE2, ou repetindo a mesma transação de deploy assinada a partir de uma conta nova em cada rede. O Multicall3, um contrato auxiliar usado por carteiras e bibliotecas, fica em 0xcA11bde05977b3631167028862bE2a173976CA11 em mais de cem redes por esse motivo, e sua lista de deploys confirma isso. A maioria dos tokens não recebe deploy desse jeito, então procure o endereço na rede que você está usando.

Se você não tem certeza de a qual rede uma carteira está conectada, a lista de chain IDs associa cada chain ID à sua rede e ao seu explorer.

11. Como verificar um endereço em código

Um aplicativo que deixa o usuário colar o endereço de um token ou de um destinatário deve validar o formato antes de montar uma transação. O SDK da ChainGate valida endereços de Bitcoin, Ethereum, Litecoin, Dogecoin, Bitcoin Cash e de qualquer rede EVM que você registrar, e rejeita um endereço EVM cujo checksum de maiúsculas e minúsculas não bate:

import { ChainGate, isValidEvmAddress } from 'chaingate';

const cg = new ChainGate({ apiKey: process.env.CHAINGATE_API_KEY });

// Format checks: true for a well-formed address, false otherwise
cg.networks.ethereum.isValidAddress('0xdAC17F958D2ee523a2206206994597C13D831ec7'); // true  (USDT contract)
cg.networks.ethereum.isValidAddress('0xD8DA6bf26964af9d7eed9e03e53415d37aa96045'); // false (EIP-55 checksum does not match)
isValidEvmAddress('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48');                  // true  (USDC contract)

// Bitcoin: validate and classify the address type
cg.networks.bitcoin.isValidAddress('bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4');      // true
cg.networks.bitcoin.identifyAddressType('bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4'); // 'segwit-p2wpkh'

A validação de formato diz que a string é um endereço bem formado; não diz se há código nele. Para isso, chame eth_getCode em um endpoint RPC: um contrato devolve seu bytecode e um endereço de carteira devolve 0x. A documentação de validação de endereços lista todas as redes suportadas e os tipos de endereço de Bitcoin que o SDK reconhece.

12. Por onde continuar

Um endereço de contrato diz com qual programa você está falando, o hash da transação diz qual chamada você fez, e o guia do Etherscan mostra como ler os dois em um explorer. Toda chamada a um contrato custa gas, e o gas tracker mostra quanto isso custa agora em cada rede. Se quiser que a validação de endereços, os saldos e as transferências sejam resolvidos em Bitcoin, Ethereum e nas outras redes a partir de um único SDK, a ChainGate faz isso.

Perguntas frequentes

O que é um endereço de contrato em cripto?

O endereço de um smart contract na blockchain: um programa publicado por uma transação de deploy, com armazenamento próprio e sem chave privada. Tokens, exchanges descentralizadas, pools de empréstimo e coleções de NFT são contratos, então cada um tem um endereço de contrato. No Ethereum e em outras redes EVM ele é 0x seguido de 40 caracteres hexadecimais, o mesmo formato de um endereço de carteira.

O que significa CA em cripto?

CA é a abreviação de contract address, endereço de contrato. As pessoas o publicam ao lado do nome de um token porque nomes e tickers não são únicos e o endereço é. Na Solana o CA é o endereço de mint do token; no Ethereum, na BNB Chain ou na Base é o endereço do contrato do token.

Endereço de contrato é o mesmo que endereço de carteira?

Não. Um endereço de carteira é controlado por uma chave privada e pode iniciar transações. Um endereço de contrato é controlado pelo código que recebeu deploy nele, não tem chave privada e só age quando uma transação o chama. Nas redes EVM os dois têm o mesmo formato 0x, então você os diferencia em um block explorer, onde contratos têm uma aba Contract, ou com a chamada RPC eth_getCode, que devolve 0x para um endereço de carteira.

Como é um endereço de contrato?

Ethereum, BNB Chain, Polygon, Arbitrum, Base e outras redes EVM: 0x mais 40 caracteres hexadecimais, por exemplo o USDT em 0xdAC17F958D2ee523a2206206994597C13D831ec7. Tron: 34 caracteres base58check começando com T, por exemplo o USDT em TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t. Solana: um endereço de mint em base58 com 32 a 44 caracteres, por exemplo o USDC em EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v.

Como encontro o endereço de contrato de um token?

Pegue-o do site ou da documentação do emissor, ou da seção Contracts da página do token no CoinMarketCap ou no CoinGecko, e depois confirme no block explorer da mesma rede: código-fonte verified, um grande número de holders e um histórico longo de transferências marcam o contrato real. As carteiras mostram o endereço na tela de detalhes do token e as exchanges nas páginas de depósito.

Como sei se um endereço é um contrato?

Abra-o em um block explorer. A página de um contrato mostra uma aba Contract, o endereço do criador e, se foi publicado, o código-fonte verified. Em código, o método RPC eth_getCode devolve o bytecode de um contrato e 0x para um endereço de carteira.

Posso enviar tokens para um endereço de contrato?

Só quando o contrato foi projetado para recebê-los, como um pool de empréstimo ou uma exchange, e normalmente por meio de uma dApp que anexa a chamada de função certa. Enviar tokens para o próprio endereço de contrato do token normalmente os perde, porque o padrão ERC-20 não tem função para devolvê-los. Depósitos em exchanges e pagamentos a pessoas vão sempre para um endereço de carteira.

O que é o endereço de um token?

O endereço de contrato do smart contract do token. Carteiras, explorers e exchanges usam endereço do token e endereço de contrato para a mesma string. Na Solana o endereço do token é o endereço de mint; um NFT é identificado pelo endereço de contrato da sua coleção mais um ID do token.

O endereço de contrato é o mesmo em todas as redes?

Por padrão, não. O USDC tem um endereço diferente no Ethereum, na Base, na Arbitrum e na Polygon porque cada deploy é uma transação separada. Projetos podem obter endereços idênticos em muitas redes com o CREATE2 ou repetindo a mesma transação de deploy assinada, como faz o Multicall3, mas você deve sempre procurar o endereço na rede que está usando.

Um smart contract tem chave privada?

Não. Uma conta de contrato é controlada pelo seu código. Se o código inclui funções de owner, o owner é um endereço separado, normalmente uma carteira ou uma multisig, que tem as próprias chaves. Um contrato cuja propriedade foi renunciada não tem ninguém que possa alterá-lo.

Construa com ChainGate

Leve estas ideias para o código — a ChainGate te oferece wallets, transações e RPC gerenciado para Ethereum e mais de 20 blockchains com uma única instalação.