Contrato no encontrado en TRON: causas y soluciones — TRON Wiki

Contrato no encontrado en TRON: causas y soluciones

9 min de lectura · ⌘K buscar

"Contrato no encontrado" aparece en scripts TronWeb, conexiones de dApp de billetera y búsquedas del explorador cuando el sistema espera un código de bytes de contrato inteligente en una dirección pero no encuentra ninguno. En TRON, una dirección que parece válida aún puede ser una billetera simple con código de contrato cero, o el contrato puede existir en la red principal mientras su herramienta apunta a la red de prueba de Shasta.

Esta guía analiza cada causa común y la solución que la resuelve.

Qué muestra TronScan

Busque la dirección en TronScan:

TronScan pestañaCartera lisaContrato inteligente
Pestaña ContratoVacío/sin códigoCódigo fuente o código de bytes
TransaccionesTRX transferenciasActivadores del contrato
Rastreador de tokensSólo participacionesPuede ser un contrato simbólico

Si la pestaña Contrato no muestra ninguna implementación y esperaba un enrutador DApp o USDT: dirección incorrecta o red incorrecta.

Causa 1: Red incorrecta

Error de desarrollador más común. Contrato implementado en mainnet pero TronWeb configurado para Shasta o Nile testnet.

Síntomas

  • contract not found en TronWeb
  • TronScan mainnet muestra contrato; tu aplicación no

Arreglar

Código
const tronWeb = new TronWeb({
  fullHost: 'https://api.trongrid.io', // mainnet
  privateKey: '...'
});

Haga coincidir la red en TronLink cuando interactúe a través del navegador. Guía: mainnet vs testnet.

Red principal oficial USDT: TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t: no existe en Shasta con la misma dirección.

Causa 2: Error tipográfico en la dirección o formato incorrecto

Las direcciones TRON son Base58Check, 34 caracteres, comienzan con T. Un personaje incorrecto = cuenta diferente.

Arreglar

Causa 3: El contrato nunca se implementó

La transacción de implementación falló o nunca se envió. La dirección se puede predecir antes de la implementación, pero está vacía en la cadena.

Verificar

  1. Busque el txid de implementación en la salida del script de implementación
  2. ¿Buscar en TronScan — SUCCESS?
  3. Marque contract_address en el recibo de la transacción

Vuelva a implementar a través de TronBox o implementar TRC-20.

Causa 4: Uso de la dirección de la billetera como contrato

Los usuarios pegan su dirección de recepción TronLink cuando una dApp solicita dirección de contrato. Las billeteras son cuentas, no contratos (a menos que se utilicen patrones de billetera de contrato).

Arreglar

Obtenga la dirección del contrato de la documentación oficial del proyecto: enrutador SunSwap, contrato USDT, etc.

Causa 5: TronWeb No coincide ABI

Mensajes de error menos comunes pero relacionados: contract not found o errores de llamada cuando ABI no coincide con el código de bytes implementado.

Arreglar

  • Descargue ABI desde la página del contrato TronScan verificada
  • Garantizar que el artefacto coincida con la versión implementada
  • Verificar contrato inteligente en el explorador

Causa 6: Contratos proxy y actualizables

El patrón de proxy almacena la lógica en la dirección de implementación; El usuario interactúa con la dirección proxy. Llamar directamente a la implementación puede comportarse de forma inesperada.

Arreglar

Utilice la dirección proxy de los documentos oficiales. Lea las ranuras de almacenamiento de proxy en TronScan si la depuración es avanzada.

Causa 7: Sincronización de nodos/retraso de API

Raro en TRON: el contrato recién implementado aún no está indexado por el nodo TronGrid.

Arreglar

  • Espere de 3 a 10 segundos después del despliegue
  • Reintentar tronWeb.contract().at(address)
  • Cambie el punto final TronGrid o use su propio nodo completo

Causa 8: Contrato autodestruido

SELFDESTRUCT (si se usa) elimina el código de bytes. La dirección puede contener TRX pero ningún código al que se pueda llamar.

TronScan muestra la implementación histórica sin código actual. No envíe fondos esperando la lógica del contrato.

Lista de verificación de depuración del desarrollador

Código
// Check if address has code
const code = await tronWeb.trx.getCode(contractAddress);
console.log(code.bytecode); // empty = no contract
  • [] Corregir fullHost para la red de destino
  • [] Suma de verificación de dirección válida Base58
  • [] getCode devuelve un código de bytes no vacío
  • [] ABI coincide con la fuente verificada en TronScan
  • [] Uso de dirección proxy, no implementación

Errores de dApp orientados al usuario

Cuando un sitio web dice contrato no encontrado:

  1. Desconectar la billetera, verificar la URL del sitio (riesgo de phishing)
  2. Confirme que la red TronLink coincida con las expectativas del sitio
  3. Consulte el proyecto Twitter/Discord para ver los anuncios de migración de contratos.
  4. Informe la estafa si el sitio exige conexión a una dirección vacía

Lista de verificación para solucionar problemasSi algo sale mal en TRON, trátelo como un problema de depuración estructurado: confirme el txid exacto en la cadena, verifique la dirección del contrato de destino y solo entonces decida si la falla es recuperable. En TRON, muchos problemas "misteriosos" son simplemente uno de: red incorrecta (mainnet vs testnet), contrato de token incorrecto (falso USDT/tokens con nombres similares), recursos insuficientes (OUT_OF_ENERGY/ancho de banda) o retraso en la interfaz de usuario/indexador entre la billetera y el explorador.

Comience con estas comprobaciones en cadena:

  • Copie siempre el txid/hash completo de su billetera o explorador.
  • Confirme el estado del resultado del tx en TronScan (SUCCESS, REVERT, OUT_OF_ENERGY o aún pendiente).
  • Compruebe si la dirección del destinatario/contrato coincide con la que desea enviar.
  • Si se trata de una llamada de contrato, confirme que el selector de función y los parámetros coincidan con el estándar de token que cree que está utilizando (TRC-20 vs TRC-10 vs BEP-20 en BSC).

Luego aplique la ruta de corrección para su categoría:

  • Confirmar el estado y los parámetros de la transacción.
  • Verificar direcciones (contrato de token, destinatario, enrutador/gastador).
  • Agregar o delegar recursos (Energía/Ancho de banda) cuando el fallo esté basado en recursos.

Errores comunes

Estos patrones causan la mayoría de los errores a nivel de usuario:

  • Usar direcciones de mainnet en testnet (o al revés).
  • Copiar un símbolo de token en lugar de la dirección del contrato TRC-20 real.
  • Firmar la dirección de aprobación/gastador incorrecta porque el enlace de la interfaz de usuario es malicioso o está desactualizado.
  • Reintentar sin cambiar la entrada fallida (por ejemplo, REVERT sigue revirtiéndose hasta que corrija el parámetro).

Si no está seguro, no “simplemente envíe de nuevo”. Realice un cambio controlado, verifique en TronScan y luego continúe.

Preguntas frecuentes

¿Cómo sé si una transacción está realmente confirmada?

Utilice TronScan y verifique el estado del resultado del tx. Las etiquetas "pendientes" de la billetera pueden retrasarse; El estado de la cadena es la fuente de la verdad. Copie txid y verifique SUCCESS/REVERT/OUT_OF_ENERGY, no solo el texto de la interfaz de usuario.

¿Por qué la interfaz de usuario difiere de TronScan?

Algunas billeteras y dApps utilizan diferentes indexadores o capas de caché. Es normal que haya un breve retraso entre la transmisión y la indexación; compare txid y espere a que la cadena se estabilice antes de concluir que hay una falla.

¿Qué debo hacer después de un REVERT?

Detenga y decodifique la llamada fallida. La mayoría de los REVERT se deben a parámetros no válidos, dirección de contrato incorrecta, aprobaciones faltantes o una falta de coincidencia entre el estándar del token y el método. Solucione la causa y luego vuelva a firmar.

¿Es seguro firmar una aprobación ilimitada?

Las aprobaciones ilimitadas son seguras solo para direcciones de gastadores confiables que usted haya verificado (fuente verificada, enrutador correcto y contrato de token esperado). Para las pruebas, prefiera aprobaciones limitadas y revoque una vez que haya terminado.

¿Qué recursos requiere TRON para las llamadas de contrato?

La ejecución de contratos inteligentes consume principalmente energía, mientras que los bytes de transacciones consumen ancho de banda. Si recibe OUT_OF_ENERGY, agregue/congela/delegue energía. Si se agota el ancho de banda, concéntrese en mantener suficiente líquido TRX para bytes y asignación de recursos.

¿Cómo puedo reducir los tickets de soporte?

Muestre a los usuarios un mensaje claro de "qué sucedió" basado en el estado de la cadena y vincule directamente a la guía relevante (pendiente, fallida, sin energía o verificación). Guarda txid para que puedas conciliar rápidamente.

Guías relacionadas

Preguntas frecuentes

¿Qué significa "contrato no encontrado" en TRON?

No existe ningún código de bytes de contrato en esa dirección en la red que está consultando: dirección incorrecta, error tipográfico, contrato no implementado o está conectado a la red de prueba mientras el contrato está en la red principal.

¿Puede existir una dirección TRON sin contrato?

Sí. Las direcciones de billetera normales contienen TRX y tokens, pero no tienen código de contrato. Sólo las direcciones con código de bytes implementado son contratos inteligentes.

¿Por qué el contrato USDT funciona para otros pero no para mí?

Probablemente estés en testnet o estés usando una dirección USDT falsa. Oficial de Mainnet: TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t.

¿Cómo confirmo que un contrato está implementado?

TronScan La pestaña Contrato muestra el código. O tronWeb.trx.getCode(address) devuelve código de bytes hexadecimal.

¿La activación de la cuenta afecta las llamadas de contrato?

Llamar a un contrato desde una cuenta no activada puede fallar por otros motivos, pero "contrato no encontrado" significa específicamente que la dirección de destino no tiene código.