TronBox:TRON上的智能合约开发
TronBox 是TRON智能合约的标准开发框架——编译 Solidity、运行迁移并部署到 Shasta 或主网。如果您在以太坊上使用过 Truffle,TronBox 工作流程将会感觉很熟悉。
本指南涵盖项目设置、配置、迁移、测试工作流程以及与 TronWeb 的集成。
安装并初始化
npm install -g tronbox mkdir my-tron-dapp && cd my-tron-dapp tronbox init
生成的布局:
contracts/ # Solidity source migrations/ # Deployment scripts tronbox.js # Network config tronbox-config.js # Optional overrides
tronbox.js 配置
module.exports = {
networks: {
shasta: {
privateKey: process.env.SHASTA_PRIVATE_KEY,
userFeePercentage: 100,
feeLimit: 1_000_000_000,
fullHost: 'https://api.shasta.trongrid.io',
network_id: '2',
},
mainnet: {
privateKey: process.env.MAINNET_PRIVATE_KEY,
userFeePercentage: 100,
feeLimit: 1_000_000_000,
fullHost: 'https://api.trongrid.io',
headers: { 'TRON-PRO-API-KEY': process.env.TRONGRID_KEY },
network_id: '1',
},
},
compilers: {
solc: {
version: '0.8.20',
},
},
};
永远不要提交私钥——使用环境变量。
编写合同
TRON 目标的 Solidity TVM。 部署TRC-20指南中的示例TRC-20。
OpenZeppelin 合约支持版本对齐 — 通过 npm 导入并根据需要配置 solc 重新映射。
迁移
migrations/1_initial_migration.js — 部署 Migrations 跟踪器合约。
migrations/2_deploy_mycontract.js:
const MyContract = artifacts.require('MyContract');
module.exports = function (deployer) {
deployer.deploy(MyContract, /* constructor args */);
};
运行:
tronbox compile tronbox migrate --network shasta
重置本地部署状态:
tronbox migrate --reset --network shasta
测试{#testing}
选项:
- 手册 — TronIDE,TronScan读/写合约
- 脚本 — TronWeb 针对 Shasta 的集成测试
- TronBox 控制台 —
tronbox console --network shasta
自动化测试生态系统比以太坊更薄——许多团队使用自定义 Jest + TronWeb 脚本。
Shasta 工作流程
1.生成Shasta钱包(TronLinkShasta模式或tronWeb.createAccount())
2.来自Shasta水龙头的资金
- 迁移合约
- 在 Shasta TronScan 上验证
- 运行 TronWeb 交互脚本
主网部署清单
- [ ] 审计或内部安全审查 - 智能合约安全
- [ ] 构造函数参数经过双重检查
- [ ] 部署者钱包资助 TRX + 能源
- [ ]
feeLimit对于大型合约来说足够了 - [ ] 部署后验证 TronScan 上的源
- [ ] 将所有权转移给多重签名(如果适用)
tronbox migrate --network mainnet
TronBox 与 TronIDE
| 工具 | 最适合 |
|---|---|
| 特隆盒子 | 多合同项目、迁移、CI |
| 特隆IDE | 快速浏览器部署,学习 |
许多团队在 TronIDE 中进行原型设计,在 TronBox 中进行生产。
常见问题
| 问题 | 修复 |
|---|---|
| 编译版本不匹配 | 将 tronbox.js 中的 solc 与 pragma 对齐 |
| OUT_OF_ENERGY 迁移 | 增加费用限额;在部署器上冻结 TRX |
| 网络超时 | 添加TronGrid API 密钥 |
| 错误的网络 ID | 匹配主网 '1' / shasta '2' |
从 TronBox 迁移到 Hardhat
一些团队使用TRON插件迁移到Harhat,以实现统一的以太坊+TRON CI。 TronBox 对于 Solidity 0.5.x/0.8.x TRON 部署仍然有效。每个存储库选择一个工具链以避免配置漂移。
tronbox.js 中的网络配置
使用环境中正确的 fullHost 和 privateKey 定义 mainnet、shasta 和 development 网络。使用测试密钥意外部署主网或反之亦然会导致事件。添加预部署确认脚本,该脚本打印网络名称并需要显式 CONFIRM=mainnet env var。
相关指南 {#相关}
常见问题解答
TronBox 是什么?
TronBox 是TRON 智能合约的开发框架——类似于以太坊上的 Truffle——具有编译、迁移和网络配置功能。
TronBox 可以部署到主网吗?
是的,在网络配置中使用资助的私钥。始终首先在 Shasta 测试网上进行测试。
TronBox 支持 TypeScript 迁移吗?
默认情况下迁移是 JavaScript。您可以使用 ts-node 进行自定义设置或将 TS 编译为 JS。
如何验证 TronBox 部署的合约?
使用 TronScan 使用 tronbox.js 中的准确 solc 版本和优化设置验证 UI。
TronBox 还在维护吗?
检查官方 TRON GitHub 以获取最新版本。生产 CI 中的引脚版本。
感谢你的反馈——帮助我们改进文档。