Quickstart
Purpose
The purpose of it is to set up a complete private network for Tron development by Docker.
#Build
Dependencies
Minimum Hardware Requirements
- CPU: 64-bit x86_64, 2+ Cores
- RAM: 4 GB+
Environment
- The latest version Docker
- Node.JS Console
Pull the image using Docker:
docker pull trontools/quickstart
Run the container:
docker run -it \
-p 9090:9090 \
--rm \
--name tron \
trontools/quickstart
Note
- The --rm option automatically removes the container after it exits. This is very important because the container cannot be restarted; it MUST be run from scratch to configure the environment correctly.
Verify the image is running correctly:
After entering the command form shell1, contents like shell2 will be displayed
docker exec -it tron ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 20044 1900 pts/0 Ss+ 01:42 0:00 bash ./quickstart v2.0.0
root 13 0.2 0.0 50148 1740 pts/0 Sl+ 01:42 0:00 redis-server *:6379
root 15 0.0 0.0 20044 40 pts/0 S+ 01:42 0:00 bash ./quickstart v2.0.0
root 16 11.5 19.2 5277964 393692 pts/0 Sl+ 01:42 0:31 java -jar FullNode.jar -c fullnode.conf --witness
root 43 0.1 1.8 930932 37456 ? Ssl 01:42 0:00 PM2 v3.3.1: God Daemon (/root/.pm2)
root 54 0.2 2.6 939316 54880 ? Ssl 01:42 0:00 /tron/eventron/eventron
root 67 0.5 3.1 941540 64212 pts/0 Sl+ 01:42 0:01 node /tron/app
root 72 412 32.0 5208448 655136 pts/0 Sl+ 01:42 18:49 java -jar BlockParser.jar --Node-list 127.0.0.1 --intial-block 1 -end -1 --event-server http://127.0.0.1:8060 --secret-key TNSpckEZhGfZ4ryidHG2fYWMARLpZ6U139
root 261 0.0 0.1 20176 3748 pts/1 Ss 01:46 0:00 bash
root 289 0.0 0.1 36068 3168 pts/1 R+ 01:47 0:00 ps aux
Note
- If Redis-server, nodes, or the event server are not running, exit and rerun the container.
View the log of a full node:
docker exec -it tron tail -f /tron/FullNode/logs/tron.log
Usage
Options
Use -e flag to pass environmental variables to the docker. Example:
docker run -it \
-p 9090:9090 \
--rm \
--name tron \
-e "accounts=20" \
trontools/quickstart
List of options:
- accounts=12 sets the number of generated accounts
- useDefaultPrivateKey=true tells Quickstart to use the default account as accounts[0]
- mnemonic=wrong bit chicken kitchen rat uses a specified mnemonic
- defaultBalance=100000 sets the initial balance for the generated accounts (in the example to 100,000 TRX)
- seed=ushwe63hgeWUS sets the seed to be used to generate the mnemonic (if none is passed)
- hdPath=m/44'/60'/0'/0 sets a custom bit39 hdPath
- formatJson=true formats the output
- preapprove=... pre approved proposals (see below for more help)
Pre-approved proposals
To pre-approve, for example, getMultiSignFee and allowMultiSign, you can run the images as:
docker run -it \
-p 9090:9090 \
--rm \
--name tron \
-e "preapprove=multiSignFee:1,allowMultiSign:1" \
trontools/quickstart
Complete list of proposals:
https://api.trongrid.io/wallet/getchainparameters
Available testing accounts
- base58
curl http://127.0.0.1:9090/admin/accounts
- hexstring:
curl http://127.0.0.1:9090/admin/accounts?format=hex
- Both formats
curl http://127.0.0.1:9090/admin/accounts?format=all
Available Accounts
==================
(0) TJdDmJVYa9TcMJvCc9WsdaEXEYgeJrGVPq (100000 TRX)
(1) TNmLX3rJZNdq7kxgxs1y39FP3hp8LWHLUX (100000 TRX)
(2) TASrJ76QANNPRgdDHHikWWApQzxh3HPku4 (100000 TRX)
(3) TNkzaPqNipxKbU5ecUZz7P7UdejiE82zc7 (100000 TRX)
(4) TWCcS3cAVeNWhX1J6LHMEsEkWGq43t4EXc (100000 TRX)
(5) TW1QH88er9UqUKhoHLdm8dQTG2NsYU6C2h (100000 TRX)
(6) TKJu6vpKAknBwzovm5NiBZ1j69nWmeXGyw (100000 TRX)
(7) TQUddX2gBhGV7d33a2kZchVsPuWLdZBeXY (100000 TRX)
(8) TXjdePoR6ZRfBeiaZ9QoUyGwdHGhTPdy6x (100000 TRX)
(9) TGJnVM3TcvsKaDL3zpNm92gw2YHrPx8s3Y (100000 TRX)
Private Keys
==================
(0) 86134c8a51446c21b501f3a05844e18fdb72d3a5420867737c8640ce0ec656ca
(1) 57e04ac5484dd2c3d97b44c5e232b6203c2759642f38c5ea6787b0e4044de165
(2) 138a22c03039e688daa2b7c785d1e8d6b9375d4413e6ea82471b1e7a61701a9d
(3) e83a4958e81654efb162cef269e323ac501aa81d850ba9aed5a7d4f3c26d5a0a
(4) 05cdb18a4638d21d3f1f18e6bdb601a60b4debc85ee9bf8b385a2613693da24f
(5) b66225af9b24c9eb92ef65e3ff540c5c260de9fc8bb01a51fc44490bafe7ab3e
(6) 0b75b702316f1dcb2c7ca5aee9e1cd9bbdcf747e27fc417c324971caaf59772c
(7) 15e2547daf170c6f0e0dd0d64c35c1259206bc481a0c9d571bac0b1197f51d11
(8) 858c97998d9bebddc9320157e538d248dfcc64cd4c5c8ea97dfcb5d8396b37a0
(9) 32d2d45c05758f7de37a542798aac91315bd269565c99eafb33ebfb3a54ac046
HD Wallet
==================
Mnemonic: treat nation math panel calm spy much obey moral hazard they sorry
Base HD Path: m/44'/60'/0'/0/{account_index}
Add accounts
curl http://127.0.0.1:9090/admin/temporary-accounts-generation?accounts=5
Fixed accounts
Two ways to use the same accounts each time:
- Passing a mnemonic to the docker
- Using accounts-data/accounts.json, put your own private keys in the privateKeys array, and run the container.
{ hdPath: 'm/44\'/60\'/0\'/0/',
mnemonic:
'grid wire envelope task bright aerobic fragile mother asset wish harvest wild',
privateKeys:
[ '27c2a416b135d52337725955359a08cd70a73844b1d58b909ecd42cd749a4acb',
'e67a7dec7ce9fa6970a2a36d1f67a789ed1a684271e23c7df395354908d81853',
'5eac42eb3484be190c24e050842ac9e8fa01debc84e3f48771d8b03e9bc21a29',
'9b086cbf9bab77cfb7bab5155dc1c62b1eebd1c5c73822208832e9c4cfbe78b5',
'4fe8f6582e7eeb6bd4e13aa56ec6fa02b4ec77f5fe99860352439fd856db4929',
'f0c8c4812914ba6a3bc37c7e40f28bd4029f0f9e69da74b81ca6357a5a337e72',
'9f7e1842bf257dfeabbb6f20f5c6e2f3a211b504e7cdb8a60fae20cfb9816176',
'0ae57ff2059579af2639dca6b01ffdb47aab2c85e723f4c7ece3e272ee3e4eee',
'43d5f335747e938659a95d3e82482015e69b50b10b8e59b8d12408b52d32aac0',
'e08c645bc4907e9f83593c725f3fbb2e63fc69d603de46c3619c0bc8fb6c6bad' ],
more: [] }
if [[ ! -d "accounts-data" ]]; then mkdir accounts-data; fi
docker run -it -p 9090:9090 \
--name tron \
-v $PWD/accounts-data:/config \
trontools/quickstart
TronBox 2.1+ configuration
Configure the tronbox.js file as:
module.exports = {
networks: {
development: {
privateKey: 'da146374a75310b9666e834ee4ad0866d6f4035967bfc76217c5a495fff9f0d0',
fullHost: "http://127.0.0.1:9090",
network_id: "9"
}
}
};
TronWeb configuration
Instantiate tronWeb as following:
const TronWeb = require('tronweb')
const tronWeb = new TronWeb(
"http://127.0.0.1:9090",
"http://127.0.0.1:9090",
"http://127.0.0.1:9090",
'da146374a75310b9666e834ee4ad0866d6f4035967bfc76217c5a495fff9f0d0',
)
Interact with the private network is by using TronWeb from the container:
docker exec -it tron ./tronWeb
RPC
Set the ports when starting the docker image to interact with the private network via RPC.
docker run -it -p 50051:50051 -p 50052:50052 \
--name tron \
trontools/quickstart
Note
- Running TronBox can put a lot of stress on the local network. If the FullNode is busy, it returns the "SERVER_BUSY" error. If it does, just repeat your command.
Version
#You can see which version you currently running executing
docker ps
#If you want also to know which version of JavaTron is used by Tron Quickstart, run
curl localhost:9090/wallet/getnodeinfo | grep 'codeVersion' --color
Source code
https://github.com/TRON-US/docker-tron-quickstart/tree/b127a0846cfe4d8d20302b816c746749140bd3f1
Updated about 4 years ago