Running your own client node
A node in Public Mint is a crucial part of the network. The network operates in the bases of a Peer-to-Peer (P2P) network, thus all nodes have similar responsibilities, requirements and they need to talk to each other. Therefore, it is crucial, if you operate a Public Mint node, to follow all the guidance in this page.
Minimum System Requirements
4GB of RAM
2 vCPU
For instance, in Amazon Web Services a t3.medium EC2 type fits the requirements.
Disk Space
Syncing Public Mint MaiNet or TestNet requires 50GB for a full sync. Thus, we recommend 50GB of available disk space.
The disk used will tend to grow in the future, following the grow of the blockchain history. Thus, this requirement will be adjusted accordingly.
Running Public Mint client from Binary Distribution
Works for Linux, Unix, Windows & macOS.
Prerequisites
Java JDK (version 11 or or higher)
Public Mint client requires Java 11+; earlier versions are not supported. Public Mint client is currently supported only on 64-bit versions of Windows, and requires a 64-bit version of JDK/JRE. We recommend that you also remove any 32-bit JDK/JRE installations.
Linux Open File Limit
If a Too many open files RocksDB exception occurs, increase the maximum number of open files allowed using ulimit.
Filename | Release number | Release date | Release notes |
1.0.3 | 2020/01/21 | First version |
Unpack the downloaded files and change into the publicmint-<release>
directory.
Display Public Mint command line help to confirm installation:
Linux/macOS
bin/publicmint --help
Windows
bin\publicmint --help
Starting Public Mint client
Take into account the minimum system requirements.
Local Block Data
When connecting to a network other than the network previously connected to, you must either delete the local block data or use the --data-path option to specify a different data directory.
To delete the local block data, delete the database directory in the publicmint/build/distribution/publicmint-<version>
directory.
Genesis Configuration
The client specifies the genesis configuration, and sets the network ID and bootnodes when connecting to the different Public Mint networks.
To operate your node on PublicMint TestNet you need to specify --network=publicmint_testnet
to use the correct genesis configuration. To operate your node in PublicMint MainNet use --network=publicmint_mainnet
Recap
For TestNet use: --network=publicmint_testnet
For MainNet use: --network=publicmint_mainnet
Or you can use the configuration file to specify the network.
Configuration file
To specify command line options in a file, use a TOML configuration file.
The configuration file can be saved and reused across node startups. To specify the configuration file, use the --config-file option.
To override an option specified in the configuration file, specify the same option on the command line. If an option is specified in multiple places, the order of priority is command line, configuration file.
An example of a configuration file to run a Public Mint node:
Starting client with a configuration file:
bin/publicmint --config-file=/home/me/publicmint_node/config.toml
The node by default is running on host 127.0.0.1 and the HTTP port is 8545 and Web Service port is 8546
Configuring Ports
Ports must be exposed appropriately to enable communication. An example port configuration for a node on AWS is:
30303 is the default P2P port, that can be specified using --p2p-port
.
Confirm Node is Running
If you have started the client with the --rpc-http-enabled
option, use cURL to call web3_clientVersion to confirm the node is running.
Running Public Mint client from Docker Image
A Docker image is provided to run a Public Mint node in a Docker container.
Use this Docker image to run a single Public Mint node without installing Public Mint client.
Prerequisites
MacOS or Linux
The Docker image does not run on Windows
Starting Public Mint client
Take into account the minimum system requirements.
Available tags for the image are listed at https://hub.docker.com/r/publicmint/client/tags
Exposing Ports
Expose ports for P2P peer discovery, and HTTP and WebSockets JSON-RPC. Exposing the ports is required to use the default ports or the ports specified using --rpc-http-port, --p2p-port and --rpc-ws-port options.
To run and expose local ports for access:
Example
To enable JSON-RPC HTTP calls to 127.0.0.1:8545 and P2P discovery on 127.0.0.1:13001:
Run a Node on Public Mint TestNet
Important
Do not mount a volume at the default data path (/opt/publicmint). Mounting a volume at the default data path interferes with the operation of the node and prevents it from safely launching.
To run a node that maintains the node state (key and database), [--data-path] must be set to a location other than /opt/publicmint and a storage volume mounted at that location.
To run a node on TestNet with the Web Service and HTTP JSON-RPC service enabled:
Stopping node and cleaning up resources
When you’re done running nodes, you can shut down the node container without deleting resources or you can delete the container after stopping it. Run docker container ls and docker volume ls to obtain the container and volume names.
To stop a container:
docker stop <container-name>
To delete a container:
docker rm <container-name>
Troubleshooting
If Public Mint client is not working as expected, here are some things to check or try.
Host Not Authorised
If you are receiving a Host not authorised error when attempting to access the JSON-RPC API, ensure --host-whitelist includes the host from which you are sending the RPC or * - that allows any host to access your node JSON-RPC API.
Peers Fail to Connect
If nodes are not communicating, ensure the required ports are open.
If your nodes are running in AWS, check you have appropriate SecurityGroups to allow access to the required ports.
Last updated