EOSIO Single Node Testnet Setup
1. Overview
EOSIO comes with a number of programs. The primary ones are:
- nodeos: server-side blockchain node component
- cleos: command line interface to interact with the blockchain and to manage wallets
- keosd: component that manages EOSIO wallets
The basic relationship between these components is illustrated in the following diagram.
2. Getting the Code
To download all of the code, clone the eos
repository and its submodules.
git clone https://github.com/EOSIO/eos --recursive
3. Building EOSIO
There is an automated build script that can install all dependencies and build EOSIO. The build places content in the eos/build
folder. The executables can be found in subfolders within the eos/build/programs
folder.
3.1. System requirements
- 8GB RAM free required
- 20GB Disk free required
3.2. Run the build script
cd eos
./eosio_build.sh
Result:
3.3. Build validation
Optionally, a set of tests can be run against your build to perform some basic validation. To run the test suite after building, start mongod
and the run make test
.
/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &
cd build
make test
3.4. Install the executables
sudo make install
4. Creating and Launching a Single Node Testnet
After successfully building the project, the nodeos
binary should be present in the build/programs/nodeos
folder. nodeos
can be run directly from the build
folder using programs/nodeos/nodeos
, or you can cd build/programs/nodeos
to change into the folder and run the nodeos
command from there.
You can start your own single-node blockchain with this single command:
cd build/programs/nodeos
./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin
When running nodeos
you should get log messages similar to below. It means the blocks are successfully produced.
At this point, nodeos
is running with a single producer, eosio
. You can press ctr + c
to stop producing.
4.1. Advanced steps
nodeos
uses a custom configuration folder. The location of this folder is determined by your system.
For Mac OS: ~/Library/Application Support/eosio/nodeos/config
nodeos
will need a properly configured config.ini
file in order to do meaningful work. On startup, nodeos
looks in the config folder for config.ini
. If one is not found, a default config.ini
file is created. If you do not already have a config.ini
file ready to use, run nodeos
and then close it immediately with Ctrl-C. A default configuration (config.ini
) will have been created in the config folder. Edit the config.ini
file, adding/updating the following settings to the defaults already in place:
# Load the testnet genesis state, which creates some initial block producers with the default key. E.g. genesis-json = "/Users/LiuYang/Library/Application Support/eosio/nodeos/config/genesis.json"
genesis-json = /path/to/eos/source/genesis.json
# Enable production on a stale chain, since a single-node test chain is pretty much always stale
enable-stale-production = true
# Enable block production with the testnet producers
producer-name = eosio
# Load the block producer plugin, so you can produce blocks
plugin = eosio::producer_plugin
# Wallet plugin
plugin = eosio::wallet_api_plugin
# As well as API and HTTP plugins
plugin = eosio::chain_api_plugin
plugin = eosio::http_plugin
# This will be used by the validation step below, to view account history
plugin = eosio::account_history_api_plugin
Now it should be possible to run nodeos
in /eos/programs
folder or eos/build/programs
folder, and see it begin producing blocks.