TronBox
TronBox is Tron's smart contract development, testing and deployment tool
Overview
Tronbox is a blockchain development tool that you can use to create and deploy smart contracts.
What will you learn?
Through this article, you will learn how to use Tronbox to create smart contracts and deploy them to the TRON network.
What will you do?
- Install and configure Tronbox
- Deploy the contract on the TRON network
- Check contract deployment status on Tronscan
Setup the development environment
Before starting, please install the following software:
Once NodeJS has already installed, we just need one command to install Tronbox:
$ npm install -g tronbox
Type Tronbox version
on the terminal to check if Tronbox is installed correctly.
Create a project
MetaCoin project
We will take the MetaCoin project as an example to introduce the related operations of Tronbox.
-
Create a new directory for the MetaCoin project:
$ mkdir MetaCoin $ cd MetaCoin
-
Download the MetaCoin project:
$ tronbox unbox metacoin
Now you have already created a TronBox project with contracts, test cases and configuration files. Of course you can also use the tronbox init
command to initialize a new TronBox project. Several key files and folders in the TronBox project include:
File/Folder | Description |
---|---|
./contract | The directory storing all smart contract files. |
./migrations | The directory storing all javascript files for migration. |
./test | The directory storing all test scripts for testing the smart contract. |
./tronbox.js | The configuration file of the project. Declare your Full Node address and Event Server in this file. |
Here is the smart contract code in /contract/MetaCoin.sol of this example project:
pragma solidity ^0.5.4;
import "./ConvertLib.sol";
// This is just a simple example of a coin-like contract.
// It is not standards compatible and cannot be expected to talk to other
// coin/token contracts.
contract MetaCoin {
mapping(address => uint) balances;
event Transfer(address _from, address _to, uint256 _value);
address owner;
constructor(uint initialBalance) public {
owner = msg.sender;
balances[msg.sender] = initialBalance;
}
function sendCoin(address receiver, uint amount) public returns (bool sufficient) {
if (balances[msg.sender] < amount) return false;
balances[msg.sender] -= amount;
balances[receiver] += amount;
emit Transfer(msg.sender, receiver, amount);
return true;
}
function getBalanceInEth(address addr) public view returns (uint){
return ConvertLib.convert(getBalance(addr), 2);
}
function getBalance(address addr) public view returns (uint) {
return balances[addr];
}
function getOwner() public view returns (address) {
return owner;
}
}
Configure compilation and deployment parameters
Before deploying the contract, you need to configure the private key, network, compiler version, userFeePercentage and feeLimit and other compilation and deployment parameters.
module.exports = {
networks: {
mainnet: {
// Don't put your private key here:
privateKey: process.env.PRIVATE_KEY_MAINNET,
/*
Create a .env file (it must be gitignored) containing something like
export PRIVATE_KEY_MAINNET=4E7Fxxxxxxxxx
Then, run the migration with:
source .env && tronbox migrate --network mainnet
*/
userFeePercentage: 100,
feeLimit: 1000 * 1e6,
fullHost: 'https://api.trongrid.io',
network_id: '1'
},
shasta: {
privateKey: process.env.PRIVATE_KEY_SHASTA,
userFeePercentage: 50,
feeLimit: 1000 * 1e6,
fullHost: 'https://api.shasta.trongrid.io',
network_id: '2'
},
nile: {
privateKey: process.env.PRIVATE_KEY_NILE,
userFeePercentage: 100,
feeLimit: 1000 * 1e6,
fullHost: 'https://api.nileex.io',
network_id: '3'
},
compilers: {
solc: {
version: '0.6.0' // for compiler version
}
}
},
// solc compiler optimize
solc: {
optimizer: {
enabled: false, // default: false, true: enable solc optimize
runs: 200
},
evmVersion: 'istanbul'
}
}
Please note that tronbox.js can be configured with multiple network information. When deploying, you can select the corresponding network according to the network name.. You also need to pass the private key to Tronbox, which is the private key of the account which will deploy the contract. It is recommended to set the private key in the environment variable, and then configure the environment variable to privateKey
to ensure your account security.
Compile the contract
Compile the smart contract with the following command:
$ tronbox compile
You will see the following output:
The compiled file will be located in the ./build/contracts directory.
Deploy contract
Use the following command to deploy the contract. The --network parameter can be used to specify the network to be deployed on. The network must be a network name in the networks
list in tronbox.js. The following is an example of deploying contract to the shasta network:
$ tronbox migrate --network shasta
Congratulations! You have successfully deployed the MetaCoin smart contract using Tronbox. Now you can check the deployment status in Shasta testnet browser according to the contract address, and interact with the deployed contract.
Updated about 2 years ago