TronBox:TRON上的智能合约开发 — TRON Wiki

TronBox:TRON上的智能合约开发

11 分钟阅读 · ⌘K 搜索

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水龙头的资金

  1. 迁移合约
  2. 在 Shasta TronScan 上验证
  3. 运行 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 中的网络配置

使用环境中正确的 fullHostprivateKey 定义 mainnetshastadevelopment 网络。使用测试密钥意外部署主网或反之亦然会导致事件。添加预部署确认脚本,该脚本打印网络名称并需要显式 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 中的引脚版本。