Fundamentos de Solidity
¿Necesitas repasar el lenguaje? Revisa la sintaxis de Solidity, la compatibilidad con EVM y los patrones específicos de TRON.
Esta guía es tu rampa de lanzamiento al ecosistema de TRON. Al finalizarla, no solo habrás desplegado un contrato inteligente, sino que comprenderás las herramientas subyacentes, la gestión de recursos y cómo conectar tu entorno local a la red de forma segura. Asumimos conocimientos básicos de JavaScript y Solidity — comencemos a construir.
Antes de escribir cualquier código, asegúrate de que tu entorno local tenga los elementos esenciales:
node --version)Nunca debes mezclar tus fondos personales con el desarrollo. Las herramientas de desarrollo requieren acceso a claves privadas para firmar despliegues, y al crear una billetera “sandbox” dedicada y aislada, eliminas por completo el riesgo de quemar TRX real en un script de prueba fallido.
Cada operación que modifica la blockchain (como desplegar un contrato) consume recursos de red (Energía y Ancho de banda). En la red principal, esto cuesta TRX real. En una red de prueba, usas “TRX de Red de Prueba” gratuito y sin valor real para simular estos costos sin riesgo financiero.
TRON mantiene dos redes de prueba públicas principales:
Para el desarrollo general y para seguir esta guía, usaremos Nile, el sandbox estándar para nuevos desarrolladores. Vamos a financiar tu billetera:
Compilar Solidity a bytecode y enviarlo manualmente a la blockchain mediante solicitudes HTTP sin procesar es tedioso y propenso a errores. TronBox es el framework estándar que automatiza el flujo de compilación, despliegue y pruebas, manteniendo tu proyecto organizado.
# Tarea: Instalar el framework TronBox de forma global para poder usarlo desde cualquier directorio.npm install -g tronboxtronbox --versionVamos a crear un directorio de trabajo limpio:
# Tarea: Inicializar un nuevo proyecto TronBox para generar la estructura de directorios necesaria.mkdir my-tron-projectcd my-tron-projecttronbox initTronBox crea una estructura estándar:
/contracts/: Donde viven tus archivos Solidity./migrations/: Scripts que dictan exactamente cómo se deben desplegar tus contratos./test/: Donde escribirás las pruebas para garantizar que tu lógica sea sólida.tronbox.js: El archivo de configuración principal.TronBox necesita saber dónde desplegar tus contratos (los endpoints de red) y quién paga el despliegue (la clave privada de tu billetera de desarrollo). Usamos variables de entorno (.env) para inyectar la clave privada de forma dinámica, de modo que nunca quede escrita directamente en tus archivos fuente.
Reemplaza el contenido de tronbox.js con esta configuración:
// Tarea: Indicarle a TronBox cómo conectarse a la red de prueba Nile de forma segura.module.exports = { networks: { nile: { privateKey: process.env.PRIVATE_KEY_NILE, userFeePercentage: 100, feeLimit: 1000000000, fullHost: 'https://nile.trongrid.io', network_id: '3', }, mainnet: { privateKey: process.env.PRIVATE_KEY_MAINNET, userFeePercentage: 100, feeLimit: 1000000000, fullHost: 'https://api.trongrid.io', network_id: '1', }, }, compilers: { solc: { version: '0.8.18', }, },};Crea un archivo .env en la raíz de tu proyecto (¡y agrégalo inmediatamente a tu .gitignore!):
# Tarea: Almacenar tu clave privada de la red de prueba de forma segura, fuera del control de versiones.PRIVATE_KEY_NILE=your_nile_dev_wallet_private_key_here(Para obtener tu clave privada: Abre TronLink → selecciona tu cuenta de desarrollo → haz clic en el menú de tres puntos → Export Account).
La Máquina Virtual de TRON (TVM) es altamente compatible con la Máquina Virtual de Ethereum (EVM). Esto significa que escribimos nuestros contratos en Solidity. Al compilar, TronBox traduce este Solidity legible por humanos a bytecode legible por máquinas y genera un ABI (Interfaz Binaria de Aplicación), que sirve como “manual” para que los frontends puedan interactuar con el contrato.
Crea un nuevo archivo en contracts/SimpleStorage.sol:
// Tarea: Definir un contrato mínimo que almacene y recupere un solo número.// SPDX-License-Identifier: MITpragma solidity ^0.8.18;
contract SimpleStorage { uint256 private value;
// Los eventos permiten que los frontends escuchen cambios en la blockchain event ValueSet(uint256 indexed newValue, address indexed setter);
// Las funciones 'external' pueden ser llamadas por usuarios u otros contratos function set(uint256 _value) external { value = _value; emit ValueSet(_value, msg.sender); }
// 'view' significa que esta función lee datos pero no modifica la blockchain function get() external view returns (uint256) { return value; }}Ahora, ordénale a TronBox que lo compile:
# Tarea: Traducir el código Solidity a bytecode y ABI listos para la TVM.tronbox compileRevisa la carpeta build/contracts/. TronBox acaba de generar los artefactos necesarios para el despliegue.
Una blockchain es una máquina de estados. “Migrar” simplemente significa llevar la blockchain de su estado actual a un nuevo estado que incluya tu contrato. El script de migración le dice a TronBox exactamente qué contratos desplegar y en qué orden.
Crea migrations/2_deploy_simple_storage.js:
// Tarea: Indicarle a TronBox que despliegue el artefacto del contrato SimpleStorage.const SimpleStorage = artifacts.require('SimpleStorage');
module.exports = function (deployer) { deployer.deploy(SimpleStorage);};Es hora de hacerlo real. Al ejecutar el comando de migración, TronBox construirá una transacción de despliegue, la firmará con tu clave privada del .env y la transmitirá a la red Nile. La red deducirá TRX de Red de Prueba (Energía/Ancho de banda) para almacenar permanentemente el bytecode de tu contrato.
# Tarea: Transmitir tu contrato a la red para que esté activo.source .env # Carga tu clave privada en la sesión del terminaltronbox migrate --network nileObserva el terminal. TronBox mostrará la dirección del contrato desplegado (comenzando con T...). Copia esta dirección.
Verificación de éxito: Ve a nile.tronscan.org y busca la dirección de tu nuevo contrato. Verás la Energía exacta consumida y la transacción de despliegue verificada. Estás oficialmente en vivo en TRON.
Un contrato inteligente no es muy útil si nadie puede comunicarse con él. tronweb es el SDK oficial de JavaScript. Lo usamos para conectar un script de Node.js (o un frontend en React) directamente a la blockchain y ejecutar nuestras funciones set() y get().
Primero, instala el SDK:
# Tarea: Añadir el SDK de TronWeb a tu proyecto para habilitar la comunicación con la blockchain.npm install tronwebCrea scripts/interact.js:
// Tarea: Usar TronWeb para leer y escribir en tu contrato en vivo.import TronWeb from "tronweb"
// Inicializar TronWeb con el endpoint de Nile y tu clave de desarrolloconst tronWeb = new TronWeb({ fullHost: 'https://nile.trongrid.io', privateKey: process.env.PRIVATE_KEY_NILE,});
const CONTRACT_ADDRESS = 'T...'; // ¡Pega aquí tu dirección desplegada!
async function main() { // Cargar el ABI para que TronWeb sepa qué funciones existen const contract = await tronWeb.contract().at(CONTRACT_ADDRESS);
console.log('Ejecutando operación de escritura...'); // .send() crea una transacción, consume Energía y altera el estado de la blockchain const tx = await contract.set(42).send(); console.log('Hash de la transacción:', tx);
console.log('Ejecutando operación de lectura...'); // .call() es una consulta local gratuita a un nodo. No altera el estado. const result = await contract.get().call(); console.log('Valor almacenado actualmente en cadena:', result.toString());}
main().catch(console.error);Ejecuta tu script de interacción:
# Tarea: Ejecutar el script para comunicarse con la red de prueba Nile.node scripts/interact.js¡Felicidades! Has completado con éxito el ciclo de vida completo del desarrollo de DApps en TRON. Ahora tienes:
tronweb para leer y escribir en la blockchain.Tienes los cimientos. Ahora es momento de construir algo complejo.
Fundamentos de Solidity
¿Necesitas repasar el lenguaje? Revisa la sintaxis de Solidity, la compatibilidad con EVM y los patrones específicos de TRON.
Contratos Inteligentes
¿Listo para escribir lógica compleja? Profundiza en los comportamientos específicos de la TVM y las técnicas de optimización de Energía.
SDK tronweb
¿Quieres crear un frontend? Consulta la referencia completa para gestión de cuentas, firma de transacciones y escucha de eventos.
Modelo de Comisiones y Recursos
¿Te preguntas por qué los despliegues consumen Energía? Aprende cómo el modelo de recursos de TRON difiere del gas tradicional.