Home指南API 参考手册
指南API 参考手册社区Discord博客FAQ漏洞赏金公告中心English(英文版)Log In
指南

从 Truffle 到 TronBox 的项目迁移指南

简介

TronBox 是基于 Truffle 的 TRON 智能合约开发工具,支持合约编译、部署、测试等功能。
本文档将帮助你将以太坊 Truffle 项目迁移到 TronBox,适配 TRON 网络。

环境准备

安装 TronBox

npm install -g tronbox

初始化 TronBox 项目

tronbox init

配置迁移

配置文件重命名与修改

truffle-config.js 重命名为 tronbox-config.js ,并按 TronBox 规范修改网络配置:

/**
* TronBox 网络配置示例  
*/  
module.exports = {  
 networks: {  
   development: {  
     privateKey: process.env.PRIVATE_KEY, // 推荐用环境变量存储私钥  
     userFeePercentage: 100,  
     feeLimit: 1e8,  
     fullHost: "<http://127.0.0.1:9090">,  
     network_id: "9"  
   },  
   shasta: {  
     privateKey: process.env.PRIVATE_KEY,  
     userFeePercentage: 50,  
     feeLimit: 1e8,  
     fullHost: "<https://api.shasta.trongrid.io">,  
     network_id: "2"  
   },  
   mainnet: {  
     privateKey: process.env.PRIVATE_KEY,  
     userFeePercentage: 50,  
     feeLimit: 1e8,  
     fullHost: "<https://api.trongrid.io">,  
     network_id: "1"  
   }  
 },  
 compilers: {  
   solc: {  
     version: '0.8.6'  
   }  
 }  
}

边界情况与错误处理:

  • 私钥建议用环境变量,避免泄露。
  • feeLimit 过低会导致部署失败,可适当调高。
  • fullHost 地址需与目标网络一致。

命令对照表


功能Truffle 命令TronBox 命令
初始化truffle inittronbox init
编译truffle compiletronbox compile
部署truffle migratetronbox migrate
测试truffle testtronbox test
获取模板truffle unboxtronbox unbox
控制台truffle consoletronbox console

合约与脚本适配

地址与单位

  • 以太坊地址为 0x 前缀,TRON 地址为41前缀(Base58 格式)。
  • 以太坊使用的单位是 weiether,其中 1 ether (ETH) = 10^18wei;TRON 使用的单位是 sunTRX,其中 1 TRX = 1,000,000 sun。

合约调用与能量

TronBox 中的 feeLimit 参数取代了 truffle-config.js 中用于限制交易资源消耗的 gas 参数,用于设置单笔交易在 TRON 网络中可消耗的能量(Energy)和带宽(Bandwidth)资源的上限。

JavaScript 脚本适配

使用 TronWeb 替代 web3.js

迁移流程

初始化 TronBox 工程

创建一个空文件夹,在该文件夹下运行如下脚本创建一个空的 TronBox 工程。

tronbox init

复制合约与迁移脚本

  • 将 Truffle 工程 contracts 目录下的合约文件复制到 TronBox 工程 contracts 中。
  • 将 Truffle 工程 migrations 目录下的部署脚本复制到 TronBox 工程 migrations 中。
  • 将 Truffle 工程 test 目录下的测试文件复制到 TronBox 工程 test 中。

配置文件修改

修改 tronbox-config.js 中的网络以及 solc 版本信息。

依赖适配和测试脚本适配

  • 在 TronBox 项目中,推荐使用 TronWeb 替代 web3.js 作为与区块链交互的库。
  • 测试脚本大部分可直接复用,但如涉及地址、单位等需适配。

命令替换

运行迁移后的 TronBox 流程:

 tronbox compile  
 tronbox migrate  
 tronbox test

常见问题与解决方案

  • 部署失败 :检查 feeLimit 是否足够,账户 TRX 余额是否充足,网络配置是否正确。
  • 事件监听差异 :TRON 事件监听需用 TronWeb 的相关方法。

最佳实践

  • 使用 .env 管理私钥等敏感信息。
  • 先在本地或 Nile 测试网充分测试,再部署主网。
  • 定期更新 TronBox 及依赖库,关注官方变更。

参考资料