¿Qué es una dirección de contrato en cripto y cómo se comprueba?

Las direcciones de contrato en Ethereum, Tron y Solana, explicadas por ChainGate.

Una dirección de contrato es la dirección de un smart contract en una blockchain. Se crea cuando el contrato se despliega, no tiene clave privada y es el string al que se refiere la gente cuando escribe "CA" junto a un token.

En Ethereum y en todas las cadenas EVM tiene exactamente el mismo aspecto que una dirección de wallet: 0x seguido de 40 caracteres hexadecimales. Un token como USDT o USDC es un contrato, así que la dirección del token es una dirección de contrato. Lo que la diferencia de una dirección de wallet es lo que hay detrás: código y almacenamiento en lugar de una persona con una clave privada.

El término aparece en tres sitios: cuando añades un token personalizado a una wallet, cuando un explorador de bloques etiqueta una dirección como contrato y cuando alguien publica el CA de una moneda nueva. Esta guía explica qué identifica la dirección, cómo se genera, cómo distinguirla de una dirección de wallet, dónde encontrar la dirección real de un token y qué pasa si envías fondos a una.

La versión corta

  • Una dirección de contrato apunta a código; una dirección de wallet apunta a quien tiene una clave. Ambas usan el mismo formato en las cadenas EVM, así que el formato por sí solo no te dice cuál es cuál. Un explorador de bloques o una llamada a eth_getCode sí.
  • En las cadenas EVM la dirección es 0x + 40 caracteres hexadecimales, derivada de la dirección y el nonce de quien la despliega, o de un salt con CREATE2. Tron usa 34 caracteres que empiezan por T, Solana una dirección de mint en base58.
  • Copia la dirección de un token desde la web o la documentación del emisor y comprueba después que el explorador muestra código fuente verificado, muchos holders y un historial largo. Los tokens fraudulentos reutilizan nombres y símbolos reales.
  • La mayoría de los contratos de tokens no pueden devolver los tokens enviados a su propia dirección. Los depósitos van a una dirección de wallet; con un contrato interactúas a través de una dApp o de una wallet que conoce sus funciones.

1. ¿Qué es una dirección de contrato?

Cada cuenta de Ethereum, y de las cadenas construidas como Ethereum, tiene una dirección. Existen dos tipos de cuenta. Una cuenta de propiedad externa pertenece a quien tiene su clave privada. Una cuenta de contrato contiene un programa y los datos que ese programa guarda, y su dirección es la dirección de contrato. La documentación de ethereum.org lo dice sin rodeos: las cuentas de contrato no tienen clave privada; las controla la lógica del código del smart contract.

Un contrato se despliega una sola vez mediante una transacción, recibe su dirección en ese momento y la conserva mientras exista la cadena. Cualquiera puede enviar una transacción a esa dirección para llamar a una de las funciones del contrato. Una transferencia de tokens o un swap en un exchange descentralizado son transacciones dirigidas a un contrato.

Los tokens son el caso más habitual. USDT, USDC, WETH y cualquier otro token ERC-20 es un contrato que mantiene una tabla de balances. La dirección del token es, por tanto, una dirección de contrato, y es el único dato que una wallet necesita para mostrar un token que todavía no conoce.

2. ¿Qué significa "CA" en cripto?

CA son las siglas de contract address, dirección de contrato. En X, Telegram y Discord, una publicación sobre un token nuevo suele terminar con CA seguido de la dirección, porque el nombre y el ticker de un token no son únicos y la dirección sí. Las webs de trading y las wallets usan la misma abreviatura.

En Solana el CA es la dirección de mint del token, la cuenta que define el suministro y los decimales del token. En Ethereum, BNB Chain, Base y otras redes EVM es la dirección del contrato ERC-20 o BEP-20. En ambos casos la dirección es lo que pegas en una wallet o en un explorador para llegar al token exacto del que alguien está hablando. Por eso mismo los CA falsos son una estafa habitual: un token imitador con el mismo nombre tiene una dirección distinta.

3. ¿Qué aspecto tiene una dirección de contrato?

El formato depende de la cadena, y es el mismo que la cadena usa para las direcciones de wallet. Estas son las direcciones oficiales de dos stablecoins muy usadas, tomadas de las páginas de sus emisores:

RedTokenDirección de contratoFormato
EthereumUSDT (ERC-20)0xdAC17F958D2ee523a2206206994597C13D831ec70x + 40 caracteres hexadecimales
EthereumUSDC0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB480x + 40 caracteres hexadecimales
BaseUSDC0x833589fCD6eDb6E08f4c7C32D4f71b54bdA029130x + 40 caracteres hexadecimales
Arbitrum OneUSDC0xaf88d065e77c8cC2239327C5EDb3A432268e58310x + 40 caracteres hexadecimales
Polygon PoSUSDC0x3c499c542cEF5E3811e1192ce70d8cC03d5c33590x + 40 caracteres hexadecimales
TronUSDT (TRC-20)TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t34 caracteres base58check que empiezan por T
SolanaUSDC (dirección de mint)EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1vDe 32 a 44 caracteres base58

Las entradas de Ethereum, Base, Arbitrum y Polygon proceden de la lista de direcciones de contrato de USDC de Circle, y las de USDT de la página de protocolos soportados de Tether. USDC tiene una dirección distinta en cada cadena: el mismo nombre no significa el mismo contrato. Las mayúsculas y minúsculas de una dirección EVM forman un checksum definido en EIP-55; la forma todo en minúsculas es la misma dirección, y exploradores y wallets aceptan ambas.

Bitcoin no tiene direcciones de contrato. Una dirección de Bitcoin que empieza por 3 o bc1 puede codificar un script, pero no hay ningún programa viviendo en la dirección al que puedas llamar. El concepto pertenece a las cadenas basadas en cuentas, como Ethereum, Tron y Solana.

4. Dirección de contrato vs dirección de wallet: ¿cuál es la diferencia?

En una cadena EVM las dos tienen un aspecto idéntico, así que la distinción está en qué controla la dirección.

Dirección de wallet (cuenta de propiedad externa)Dirección de contrato
Quién la controlaUna clave privada, normalmente derivada de una seed phraseEl código del contrato; no hay clave privada
Puede iniciar una transacciónSíNo. Solo se ejecuta cuando una transacción u otro contrato la llama
Contiene códigoNo, salvo que delegue en código mediante EIP-7702Sí, además de su propio almacenamiento
Cómo se creaGratis: se deriva de una clave pública, sin necesidad de transacciónMediante una transacción de despliegue que paga gas
Uso habitualRecibir fondos, firmar transaccionesTokens, exchanges, pools de préstamos, colecciones de NFT, puentes
En un explorador de bloquesSe muestra como una dirección normalEtiquetada como contrato, con una pestaña Contract

La única zona gris es EIP-7702, activa en Ethereum desde la actualización Pectra de mayo de 2025. Permite que una dirección de wallet incorpore código delegado para agrupar llamadas o para que otro pague sus comisiones. La clave sigue controlando la cuenta y la cuenta sigue pudiendo enviar transacciones, así que sigue siendo una dirección de wallet con código asociado.

Para distinguirlas, abre la dirección en un explorador de bloques: un contrato tiene una pestaña Contract, una dirección de creador y, si el código fuente se publicó, código verificado. Desde código, el método JSON-RPC eth_getCode devuelve el bytecode almacenado en una dirección, y solo 0x para una dirección de wallet. La guía de Etherscan muestra dónde está cada una de estas pestañas.

5. ¿Cómo se genera una dirección de contrato?

La dirección se calcula, no se elige, y cada cadena tiene su propia regla:

Ethereum y cadenas EVM (CREATE)
La dirección son los últimos 20 bytes del hash Keccak-256 de la dirección de quien despliega y su nonce, el número de transacciones que esa dirección ha enviado. Desplegar dos veces desde la misma cuenta da dos direcciones distintas porque el nonce ha avanzado.
Ethereum y cadenas EVM (CREATE2)
Un contrato puede desplegar otro contrato en una dirección calculada a partir de su propia dirección, un salt que él elige y el hash del código de creación: keccak256(0xff ++ address ++ salt ++ keccak256(init_code))[12:]. La dirección se conoce antes de desplegar nada, y así es como un mismo contrato puede aparecer en la misma dirección en muchas cadenas.
Tron
Una dirección de Tron son 21 bytes con un 0x41 inicial, mostrados como 34 caracteres base58check que empiezan por T. Las direcciones de contrato usan el mismo formato que las de wallet y se derivan del ID de la transacción de despliegue y de la dirección de quien despliega.
Solana
La dirección de un programa es la clave pública de la cuenta que almacena su código ejecutable. Un token se identifica por la dirección de su cuenta mint, que pertenece al Token Program. La wallet que tiene el token recibe una cuenta de token separada para cada mint.

Las reglas están en la documentación de cuentas de ethereum.org, en EIP-1014 para CREATE2, en la referencia de cuentas de Tron y en la documentación de tokens de Solana.

6. ¿Es lo mismo la dirección de un token que una dirección de contrato?

En las cadenas EVM, sí. La dirección de un token es la dirección de contrato del contrato del token, y wallets, exploradores y exchanges usan los dos nombres para el mismo string. Añadir un token personalizado a una wallet consiste en pegar esa dirección; la wallet lee entonces el símbolo y el número de decimales del propio contrato, y por eso una dirección equivocada muestra un token equivocado en lugar de un error.

Dos casos necesitan un identificador adicional. Un NFT se identifica por la dirección de contrato de la colección más un ID de token, ya que un solo contrato contiene toda la colección. En Solana la dirección del token es la dirección de mint, y el balance que posees vive en una cuenta de token vinculada a tu wallet, no en el mint.

7. ¿Cómo encuentro la dirección de contrato de un token?

Tómala de una fuente que controle el emisor y confírmala después en un explorador.

La web o la documentación del emisor
Los emisores de stablecoins, los protocolos y la mayoría de los proyectos publican sus direcciones por cadena. Circle y Tether mantienen una página cada uno para USDC y USDT, y de ahí salen las entradas de la tabla de arriba.
CoinMarketCap y CoinGecko
La página del token lista la dirección de contrato de cada cadena en la sección Contracts, con un botón para copiarla y un enlace al explorador.
Un explorador de bloques
Busca el nombre del token en Etherscan, BscScan, Polygonscan, Tronscan o Solscan. Los exploradores marcan el token consolidado y muestran el número de holders; una copia con el mismo nombre y diez holders es un token distinto.
Tu wallet o tu exchange
Las wallets muestran la dirección en la pantalla de detalles del token. Los exchanges la muestran en las páginas de depósito y retiro, junto con la red a la que pertenece la dirección.

Copia el string completo y guarda la red junto a él. Una dirección de USDC de Base no significa nada en Arbitrum, y un explorador muestra una dirección vacía si la buscas en la cadena equivocada.

8. ¿Cómo compruebo que una dirección de contrato es legítima?

El nombre y el símbolo de un token son texto libre dentro del contrato, así que cualquiera puede desplegar un segundo USDC. Estas comprobaciones separan el contrato real de las copias:

Compárala con la del emisor
La dirección debe ser idéntica, carácter por carácter, a la que aparece en la web o la documentación del emisor. Compara algo más que los primeros y los últimos caracteres; las direcciones imitadoras se generan precisamente para coincidir en esos.
Busca código fuente verificado
En Etherscan y exploradores similares, la pestaña Contract muestra si quien desplegó el contrato publicó el código fuente y el explorador lo recompiló para comprobar que coincide con el bytecode. Un bytecode sin verificar es una señal de alarma en cualquier token de uso extendido.
Comprueba holders, antigüedad y actividad
El contrato de una stablecoin real tiene millones de transferencias y años de historial. Un contrato desplegado la semana pasada con un puñado de holders y sin código verificado es otro token, se llame como se llame.
Lee las reglas del token
Los exploradores y los escáneres de tokens señalan los contratos cuyo owner puede mintear sin límite, pausar transferencias, cambiar comisiones o bloquear las ventas. Un contrato proxy conserva su dirección pero puede cambiar su implementación, así que comprueba quién controla la actualización.
Contrasta la cadena
El mismo proyecto tiene direcciones distintas en cadenas distintas, así que asegúrate de que el explorador, la wallet y la fuente se refieren todos a la misma red.

La guía de Etherscan recorre la pestaña Contract y las vistas Read Contract y Write Contract que se usan en estas comprobaciones.

9. ¿Puedo enviar cripto a una dirección de contrato?

Puedes, y el resultado depende del contrato. Depositar en un pool de préstamos, comprar en un exchange descentralizado o mintear un NFT funcionan enviando una transacción a un contrato, normalmente con una llamada a una función adjunta, a través de una wallet o de una dApp que conoce la interfaz del contrato.

Enviar tokens a la propia dirección de contrato del token es el error que hay que evitar. El estándar ERC-20 define funciones de transferencia, aprobación y balance, y nada que permita al contrato devolver tokens, así que las monedas enviadas por error a un contrato de token normalmente se pierden, salvo que el emisor haya incluido una función de recuperación y acceda a usarla. Lo mismo vale para la mayoría de los contratos que nunca se diseñaron para recibir transferencias simples: algunos las rechazan, otros las aceptan en silencio.

Cuando un exchange o una persona te pide un depósito, te da una dirección de wallet. Cuando un protocolo quiere que interactúes, la dApp construye la transacción por ti. Si te ves pegando la dirección de contrato de un token en el campo de destinatario de una transferencia, para y revisa lo que estás haciendo.

10. ¿Es la misma dirección de contrato en todas las blockchains?

No, salvo que quien la desplegó lo hiciera así a propósito. La tabla de USDC de arriba muestra cuatro direcciones distintas en cuatro cadenas EVM para el mismo activo, porque cada despliegue fue una transacción separada desde una cuenta con un nonce distinto. Las versiones puenteadas de un token, a menudo marcadas con un sufijo como .e, tienen sus propias direcciones, así que un explorador puede mostrar más de un token llamado USDC en una misma red.

Es posible tener direcciones idénticas en varias cadenas mediante CREATE2, o reproduciendo la misma transacción de despliegue firmada desde una cuenta nueva en cada cadena. Multicall3, un contrato auxiliar que usan wallets y librerías, está en 0xcA11bde05977b3631167028862bE2a173976CA11 en más de cien cadenas por ese motivo, y su lista de despliegues lo confirma. La mayoría de los tokens no se despliegan así, de modo que busca la dirección en la cadena que estés usando.

Si no sabes con seguridad a qué red está conectada una wallet, la lista de ID de cadena asocia cada ID de cadena con su red y su explorador.

11. Cómo comprobar una dirección desde código

Una aplicación que permite a los usuarios pegar la dirección de un token o de un destinatario debería validar el formato antes de construir una transacción. El SDK de ChainGate valida direcciones de Bitcoin, Ethereum, Litecoin, Dogecoin, Bitcoin Cash y cualquier red EVM que registres, y rechaza una dirección EVM cuyo checksum de mayúsculas y minúsculas no coincide:

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'

La validación de formato dice que el string es una dirección bien formada; no dice si hay código en ella. Para eso, llama a eth_getCode en un endpoint RPC: un contrato devuelve su bytecode y una dirección de wallet devuelve 0x. La documentación de validación de direcciones lista todas las redes soportadas y los tipos de dirección de Bitcoin que el SDK reconoce.

12. Por dónde seguir

Una dirección de contrato te dice con qué programa estás hablando, el hash de transacción te dice qué llamada hiciste, y la guía de Etherscan muestra cómo leer ambos en un explorador. Cada llamada a un contrato cuesta gas, y el gas tracker muestra cuánto cuesta eso ahora mismo en cada red. Si quieres que la validación de direcciones, los balances y las transferencias se resuelvan en Bitcoin, Ethereum y el resto de redes desde un solo SDK, ChainGate lo hace.

Preguntas frecuentes

¿Qué es una dirección de contrato en cripto?

La dirección en la blockchain de un smart contract: un programa desplegado mediante una transacción, con su propio almacenamiento y sin clave privada. Los tokens, los exchanges descentralizados, los pools de préstamos y las colecciones de NFT son contratos, así que cada uno tiene una dirección de contrato. En Ethereum y otras cadenas EVM es 0x seguido de 40 caracteres hexadecimales, el mismo formato que una dirección de wallet.

¿Qué significa CA en cripto?

CA es la abreviatura de contract address, dirección de contrato. La gente la publica junto al nombre de un token porque los nombres y los tickers no son únicos y la dirección sí. En Solana el CA es la dirección de mint del token; en Ethereum, BNB Chain o Base es la dirección del contrato del token.

¿Es lo mismo una dirección de contrato que una dirección de wallet?

No. Una dirección de wallet la controla una clave privada y puede iniciar transacciones. Una dirección de contrato la controla el código desplegado en ella, no tiene clave privada y solo actúa cuando una transacción la llama. En las cadenas EVM ambas tienen el mismo formato 0x, así que se distinguen en un explorador de bloques, donde los contratos tienen una pestaña Contract, o con la llamada RPC eth_getCode, que devuelve 0x para una dirección de wallet.

¿Qué aspecto tiene una dirección de contrato?

Ethereum, BNB Chain, Polygon, Arbitrum, Base y otras cadenas EVM: 0x más 40 caracteres hexadecimales, por ejemplo USDT en 0xdAC17F958D2ee523a2206206994597C13D831ec7. Tron: 34 caracteres base58check que empiezan por T, por ejemplo USDT en TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t. Solana: una dirección de mint en base58 de 32 a 44 caracteres, por ejemplo USDC en EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v.

¿Cómo encuentro la dirección de contrato de un token?

Tómala de la web o la documentación del emisor, o de la sección Contracts de la página del token en CoinMarketCap o CoinGecko, y confírmala después en el explorador de bloques de la misma cadena: código fuente verificado, un gran número de holders y un historial largo de transferencias señalan el contrato real. Las wallets muestran la dirección en la pantalla de detalles del token y los exchanges en sus páginas de depósito.

¿Cómo sé si una dirección es un contrato?

Ábrela en un explorador de bloques. La página de un contrato muestra una pestaña Contract, la dirección del creador y, si se publicó, el código fuente verificado. Desde código, el método RPC eth_getCode devuelve el bytecode de un contrato y 0x para una dirección de wallet.

¿Puedo enviar tokens a una dirección de contrato?

Solo cuando el contrato está diseñado para recibirlos, como un pool de préstamos o un exchange, y normalmente a través de una dApp que adjunta la llamada a la función correcta. Enviar tokens a la propia dirección de contrato del token normalmente los pierde, porque el estándar ERC-20 no tiene ninguna función para devolverlos. Los depósitos en exchanges y los pagos a personas van siempre a una dirección de wallet.

¿Qué es la dirección de un token?

La dirección de contrato del smart contract del token. Wallets, exploradores y exchanges usan dirección de token y dirección de contrato para el mismo string. En Solana la dirección del token es la dirección de mint; un NFT se identifica por la dirección de contrato de su colección más un ID de token.

¿Es la misma dirección de contrato en todas las cadenas?

Por defecto, no. USDC tiene una dirección distinta en Ethereum, Base, Arbitrum y Polygon porque cada despliegue es una transacción separada. Los proyectos pueden obtener direcciones idénticas en muchas cadenas mediante CREATE2 o reproduciendo la misma transacción de despliegue firmada, como hace Multicall3, pero siempre debes buscar la dirección en la cadena que estés usando.

¿Tiene clave privada un smart contract?

No. Una cuenta de contrato la controla su código. Si el código incluye funciones de owner, el owner es una dirección aparte, normalmente una wallet o una multisig, que tiene sus propias claves. Un contrato cuya propiedad se ha renunciado no tiene a nadie que pueda cambiarlo.

Construye con ChainGate

Lleva estas ideas al código — ChainGate te ofrece wallets, transacciones y RPC gestionado para Ethereum y más de 20 blockchains con una sola librería.