TVM explicado: TRON Máquina virtual para desarrolladores — TRON Wiki

TVM explicado: TRON Máquina virtual para desarrolladores

10 min de lectura · ⌘K buscar

La máquina virtual TRON (TVM) ejecuta un código de bytes de contrato inteligente en la cadena de bloques TRON. Los desarrolladores escriben Solidity (o Vyper en algunas herramientas), lo compilan en código de bytes TVM y lo implementan a través de TronBox o TronWeb. La herencia EVM de TVM significa que muchos patrones de Ethereum se portan directamente, pero la medición de recursos y los detalles de la cadena difieren.

Esta guía explica la arquitectura TVM, la comparación de EVM, los costos de energía y las implicaciones prácticas para los desarrolladores de dApp.

rol de TVM en TRON

Cuando llama a un enrutador TRC-20 transfer o SunSwap:

  1. La transacción incluye dirección del contrato + datos de llamada
  2. TVM carga el código de bytes del contrato
  3. Se ejecutan códigos de operación (SLOAD, CALL, etc.)
  4. Actualizaciones de estado (saldos, almacenamiento)
  5. Registros de recibos Energía utilizada, éxito/fracaso

TRX las transferencias sin contratos utilizan una validación más simple: no hay ejecución completa del contrato TVM para transferencias básicas.

TVM frente a EVM

AspectoEVM (Etereum)TVM (TRON)
IdiomaSolidez primariaSolidez primaria
Ficha de gasETHEnergía + Ancho de banda / TRX quema
Bloquear tiempo~12s~3s
Formato de dirección0x hexadecimalBase58 T...
HerramientasCasco, FundiciónTronBox, TronIDE

La mayoría de los patrones ERC-20 se asignan a TRC-20. La portabilidad entre cadenas aún requiere:

  • Recompilar para TVM
  • Vuelva a probar todas las llamadas y oráculos externos.
  • Ajustar feeLimit vs gasLimit

Consulte Solidity en TRON.

Energía y feeLimit

La ejecución de TVM consume Energía (función conceptual similar al gas):

  • Los usuarios congelan TRX → reciben energía
  • Sin energía, TRX arde a velocidad dinámica
  • feeLimit limita el consumo máximo de TRX por transacción (unidades solares)

Los desarrolladores de contratos deben optimizar el almacenamiento y los bucles: los contratos costosos cuestan a los usuarios más transferencias USDT.

Código
await contract.method().send({ feeLimit: 150_000_000 });

Ancho de banda {#ancho de banda}

Las transacciones simples consumen Ancho de banda (cuota diaria gratuita + congelado TRX). Las llamadas de contratos inteligentes afectan principalmente a Energía, pero el ancho de banda aún se aplica a los bytes de transacciones.

Código de bytes y compilación

Solidez → Código de bytes TVM a través de solc con parches TRON. Versiones del compilador de pines de TronBox. El código de bytes se implementa a través de:

  • CREATE código de operación en migración
  • TronWeb contract().new()

La dirección implementada es T... Base58 derivada de creador + nonce.

Contratos precompilados

TVM incluye precompilaciones para verificación de firmas, hash, etc. Las direcciones difieren de las de Ethereum: las suposiciones codificadas address(0x1) pueden fallar.

REVERT y depuración

La ejecución fallida de TVM regresa REVERT: no hay cambios de estado, excepto el consumo de tarifas. Depurar mediante:

  • TronScan pestaña de transacciones internas
  • Reproducción de la red de prueba de Shasta
  • Contratos de prueba más pequeños que aíslan la lógica.

Patrones de actualización

Los patrones de proxy (estilo EIP-1967) existen en TRON con adaptaciones. La capacidad de actualización agrega riesgo de seguridad: los usuarios deben confiar en las claves de administrador.

Registros de eventos

TVM emite registros consumidos por indexadores y escuchadores de eventos. Transfer eventos de potencia USDT detección de depósitos.

Características de rendimiento

Los bloques de 3 segundos permiten una experiencia de usuario receptiva pero aumentan la consideración de reorganización para una entrega instantánea de alto valor (problema poco común en las cadenas TRON frente a PoW).

Diferencias de código de operación entre TVM y EVM

La medición de energía difiere del gas Ethereum: los precios de los códigos de operación no son idénticos. Los bucles y las escrituras de almacenamiento cuestan más en términos relativos en algunas operaciones. Perfil del contrato de Energía en testnet con energy_usage_total en los recibos de transacciones antes del lanzamiento de la mainnet.

Resumen del modelo de recursos

La ejecución de TVM consume energía; los bytes de transacción consumen ancho de banda. Los desarrolladores contratados optimizan para lograr menos escrituras de almacenamiento y bucles más estrechos para reducir los costos de usuario. Los usuarios congelan TRX para obtener energía: la experiencia del usuario de su dApp depende directamente de qué tan pesadas son las funciones de su contrato en términos de energía.

Lista de verificación para solucionar problemas

Si 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

¿TVM es compatible con los contratos inteligentes de Ethereum?

TVM es en gran medida compatible con EVM en el nivel de Solidez, pero los modelos de gas/Energía, las precompilaciones y algunos códigos de operación difieren. Pruebe minuciosamente en Shasta.

¿Qué paga por la ejecución de TVM?

Energía y Ancho de Banda. Las llamadas de contrato consumen energía; Se quema energía insuficiente TRX de la cuenta de la persona que llama.

¿Puedo implementar un código de bytes de Ethereum sin modificar?

No. Vuelva a compilar con la cadena de herramientas TRON. Los códigos de operación y la codificación de direcciones difieren.

¿Por qué mi contrato costó más Energía de lo esperado?

Las escrituras de almacenamiento, las llamadas externas y los grandes datos de llamadas aumentan los costos. Optimice los patrones de solidez.

¿Dónde se ejecuta TVM?

En los bloques de validación de nodos completos de TRON Súper Representantes. TronGrid expone HTTP para activar llamadas TVM de forma remota.