Implemente un token TRC-20 con TronWeb y TronBox
La implementación de un token TRC-20 en TRON le permite crear un activo fungible compatible con TronLink, SunSwap y los intercambios que admiten listados personalizados TRC-20. El estándar refleja ERC-20 — Solidity en TVM con TronBox o scripts de implementación TronWeb.
Esta guía va desde el código del contrato hasta la implementación de la red principal y la verificación TronScan.
TRC-20 requisitos {#estándar}
Interfaz mínima (ver Solidity en TRON):
name(),symbol(),decimals()totalSupply(),balanceOf(address)transfer(address,uint256),approve(address,uint256),transferFrom(...)- Eventos:
Transfer,Approval
Utilice OpenZeppelin ERC20 adaptado para la cadena de herramientas TRON para tokens de producción.
Configuración del proyecto con TronBox
npm install -g tronbox tronbox init
Estructura:
contracts/ MyToken.sol migrations/ 2_deploy_token.js tronbox.js
Configure redes en tronbox.js: Shasta y mainnet fullHost apuntando a TronGrid.
Referencia completa de TronBox: Contratos inteligentes de TronBox.
Ejemplo de contrato
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("My Token", "MTK") {
_mint(msg.sender, initialSupply * 10 ** decimals());
}
}
Ajuste decimals() predeterminado (18) frente a USDT (6) según el caso de uso.
Script de migración {#migración}
const MyToken = artifacts.require('MyToken');
module.exports = async function (deployer) {
await deployer.deploy(MyToken, 1000000); // 1M tokens
};
Implementar en Shasta
- Dirección del implementador de fondos con Shasta TRX (grifo).
- Establezca la clave privada en
tronbox.jso env (nunca confirme). - Ejecutar:
tronbox compile tronbox migrate --network shasta
- Anote la dirección del contrato implementado en el resultado.
- Pruebe
transfermediante TronWeb o TronIDE.
Implementar en la red principal
Previo al vuelo:
- [] Revisión de seguridad — seguridad de contrato inteligente
- [] Suficiente TRX/Energía en el implementador
- [ ] Parámetros del constructor final (nombre, suministro, administrador)
- [] No hay claves privadas de prueba en el repositorio
tronbox migrate --network mainnet
Implementar solo con TronWeb
Alternativa sin TronBox: compilar localmente, implementar código de bytes:
const contract = await tronWeb.contract().new({
abi,
bytecode,
feeLimit: 1_000_000_000,
callValue: 0,
parameters: [1000000],
});
console.log(contract.address);
Verificar en TronScan
- Abra la dirección del contrato en TronScan.
- Verificar contrato: fuente de carga, versión del compilador, optimización.
- Los usuarios pueden leer
name/symboly confiar en la coincidencia del código de bytes.
Los tokens no verificados generan sospechas falsas al estilo USDT por parte de los usuarios.
Post-implementación {#post-implementación}
- Acuñar suministro adicional solo si la economía simbólica lo requiere: documentar públicamente
- Crear liquidez SunSwap si se desea realizar operaciones públicas
- Enviar información del token a los exploradores (el proceso varía)
- Integre consultas de saldo en su aplicación
Costo y energía
Los grandes contratos consumen más energía. Congele TRX en la cuenta del implementador antes de la migración para reducir la quema de TRX.
Lista de verificación posterior a la implementación
Después de la implementación: verifique la fuente en TronScan, transfiera la propiedad a multifirma, documente los decimales y el límite de suministro públicamente, pruebe la transferencia/apruebe primero el clon de Shasta y agregue el logotipo del token mediante el envío de TronScan, si corresponde, para la visibilidad de la billetera.
Parámetros de tokenómica
Decida antes de implementar: decimals (generalmente 6 o 18), totalSupply, funciones de acuñabilidad, pausabilidad y lista negra. Cada permiso es una superficie de ataque si las claves se ven comprometidas. Muchos tokens comunitarios utilizan un suministro fijo con propiedad renunciada: documente su elección públicamente para que los poseedores conozcan los supuestos de confianza.
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 de 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
- Contratos inteligentes de TronBox
- Seguridad de contratos inteligentes
- Verificar contrato inteligente TRON
- Crear token TRC-20
Preguntas frecuentes
¿Cuánto cuesta implementar un TRX?
La implementación consume energía y TRX según el tamaño del contrato; normalmente, de decenas a cientos de TRX si la energía no está congelada. Pruebe primero en Shasta.
¿Un token TRC-20 implementado aparece automáticamente en SunSwap?
No. Cualquiera puede crear un grupo, pero cotizar en las principales UI y bolsas requiere procesos de liquidez y revisión separados.
¿TRC-20 frente a TRC-10?
TRC-20 son tokens de contrato inteligente de Solidity. TRC-10 es una emisión de activos nativos sin una lógica de contrato completa. USDT es TRC-20.
¿Puedo hacer un clon de USDT?
Técnicamente sí; jurídica y éticamente problemática. Los estafadores hacen esto: no utilizan símbolos engañosos.
¿Qué versión del compilador?
Haga coincidir Solidity compatible con TronBox: consulte tronbox compile --help y TVM explicó.
Gracias — tu feedback nos ayuda a mejorar la documentación.