Create PlasmaChain node

PlasmaDLT Mainet Set-up Guide

The minimum requirements for server infrastructure are:

  • Minimum specification: 250 Mbit/s+

  • High availability (SLA): 99.9999%

  • The hardware must meet certain requirements to run a full node

  • 500 GB of free disk space

  • Accessible at a minimum read/write speed of 100 MB/s

  • 4 cores of CPU and 8 gigabytes of memory (RAM)

Technical documentation for launching a node on a cloud or physical server: Docker - GitHub -

We recommend using the cloud data centers of the following providers:

You can find a complete list of data centers here - link. You can select any server's region for running a node.

Networks name

Testnet - Friedman Mainet - Liberty (mainet) Public Explorer - Official wallet - Github - Get config on Github

Run mainet node

Create dirs for producer node data

mkdir /data
mkdir /data/<producer name>
mkdir /data/<producer name>/producer/conf

Get the docker image

docker pull plasmachain/mainet:latest

Setting up Configurations

Create account

Get and edit the configuration file accordingly config.ini :

  • http-server-address = register the port on which the host will listen to http requests

  • p2p-listen-endpoint = set the port on which the host will listen for p2p incoming connections. Also, the value of this parameter should be given to the network administrator, so that he would include this host in the list of p2p-peer-address addresses of all producer nodes of the network.

  • p2p-peer-address fill in the list of p2p network producer nodes. It must be obtained from the network testnet or mainet from

  • agent-name set the name of the node.

  • producer-name set the node name equal to the name of the account that the node owner received in step 1

  • signature-provider - set the key values that the node owner received from

Plugin - fill in the plugins section:

  • ion :: chain_api_plugin,

  • ion :: http_plugin,

  • ion :: net_api_plugin

  • optional (ion :: history_plugin, ion :: history_api_plugin)

If you would like to run a Block Producer node and register your node at public Plasma blockchain explorer write to support chat at web or to our email message: your account name, your public key, your website address.

Edit config

producer-name = <producer name>
p2p-peer-address = <peer address (see>
signature-provider = <Public key>=KEY:<Private key> (keys taken from account's active permission)
http-server-address =
agent-name=<name to identify this node>

Copy config files

cp config.ini /data/<producer name>/producer/conf
cp genesis.json /data/<producer name>/producer/conf

Create docker-compose.yml file

version: '3.5'
image: plasmachain/mainet:latest
hostname: localhost
container_name: <producer name>
command: >
bash -c "ionode --replay-blockchain
--genesis-json <producer name>/conf/genesis.json
--config <producer name>/conf/config.ini
--data-dir /<producer name>/blockchain
- ./data/<producer name>/producer:/<producer name>
restart: always
- 8888:8888
- 9876:9876
- <producer name> # Set your network what described in origin docs
networks: # Here we are invokes network to work
<producer name>:
name: <producer name>
driver: bridge

Start producer node

docker-compose up --build
Creating network <producer name> with driver "bridge"
Creating <producer name> ... done
Attaching to <producer name>
<producer name> | APPBASE: Warning: The following configuration items in the config.ini file are redundantly set to
<producer name> | their default value:
<producer name> | https-client-validate-peers, p2p-listen-endpoint, allowed-connection
<producer name> | Explicit values will override future changes to application defaults. Consider commenting out or
<producer name> | removing these items.
<producer name> | info 2019-10-27T09:31:35.356 thread-0 chain_plugin.cpp:333 plugin_initialize ] initializing chain plugin
<producer name> | info 2019-10-27T09:31:35.357 thread-0 chain_plugin.cpp:512 plugin_initialize ] Replay requested: deleting state database
<producer name> | info 2019-10-27T09:31:35.388 thread-0 block_log.cpp:125 open ] Log is nonempty
<producer name> | info 2019-10-27T09:31:35.389 thread-0 block_log.cpp:152 open ] Index is nonempty
<producer name> | info 2019-10-27T09:31:35.394 thread-0 http_plugin.cpp:452 plugin_initialize ] configured http to listen on
<producer name> | warn 2019-10-27T09:31:35.394 thread-0 net_api_plugin.cpp:96 plugin_initialize ]
<producer name> | **********SECURITY WARNING**********
<producer name> | * *
<producer name> | * -- Net API -- *
<producer name> | * - EXPOSED to the LOCAL NETWORK - *
<producer name> | * - USE ONLY ON SECURE NETWORKS! - *
<producer name> | * *
<producer name> | ************************************
<producer name> |
<producer name> | warn 2019-10-27T09:31:35.394 thread-0 history_plugin.cpp:321 plugin_initialize ] --filter-on * enabled. This can fill shared_mem, causing ionode to stop.
<producer name> | info 2019-10-27T09:31:35.394 thread-0 http_plugin.cpp:399 operator() ] configured http with Access-Control-Allow-Origin: *
<producer name> | info 2019-10-27T09:31:35.395 thread-0 main.cpp:99 main ] ionode version v.0.1.0-dirty
<producer name> | info 2019-10-27T09:31:35.395 thread-0 main.cpp:100 main ] ion root is /root/.local/share
<producer name> | info 2019-10-27T09:31:35.395 thread-0 main.cpp:101 main ] ionode using configuration file /<producer name>/conf/config.ini
<producer name> | info 2019-10-27T09:31:35.395 thread-0 main.cpp:102 main ] ionode data directory is /<producer name>/blockchain
<producer name> | error 2019-10-27T09:31:35.395 thread-0 controller.cpp:1735 startup ] No head block in fork db, perhaps we need to replay
<producer name> | warn 2019-10-27T09:31:35.396 thread-0 controller.cpp:576 initialize_fork_db ] Initializing new blockchain with genesis state
<producer name> | info 2019-10-27T09:31:35.450 thread-0 controller.cpp:307 replay ] existing block log, attempting to replay from 2 to 8213126 blocks
  • The launched container must have access to the Internet, it is accessible by the public ip address and is accessible by the ports 8888 and 9876. It is necessary to provide a public key for registering the producer on the mainet network

  • Check if you can access you node using link http://you_server:your_http_port/v1/chain/get_info

Verifying that the Producer is registered

docker exec -it <producer name> sol --url <peer address> get table ion ion producers --index 2 --key-type i128 -r -l 100
"url": "",
"memo": "tdominionb"
"owner": "<producer name>",
"stake": {
"symbol": "18,PLASMA",
"amount": "0x000064a7b3b6e00d0000000000000000",
"value": "1.000000000000000000 PLASMA"
"producerKey": "<Public key>",
"isActive": 1,
"url": "",
"memo": "add <producer name>"
"more": false

Deploy contract in Mainet using active key

Choice producer from the network testnet or mainet from

docker exec -i <network> sol --url --wallet-url set contract accountname /host-share/helllloworld

Test deployed contract

docker exec -i <network> sol --url --wallet-url push action accountname <action name> '{"user": "accountname"}' -p [email protected]
docker exec -i <network> ol --url --wallet-url push action accountname <action name> '{"user": "accountname"}' -p [email protected]

Register a node on the blockchain network

To register your node on the network, place it on block explorer and start earning Plasma, send the following information to the support chat or to our email [email protected]:

  • Your email from your PlasmaPay account

  • Url address of your website / company (public information for explorer)

  • Address of your Plasma account

  • Plasma account public key

  • Type of node

Your request will be processed within 24 hours, and you will see the node on the explorer