Get Started

Run a Transaction Node

17min

This information on this page will soon be updated following the migration of Palm network to Proof of Stake. In the meantime, please refer to Self-hosted nodes which provides up-to-date information.



Overview

Transaction nodes are used to read transaction history or send transactions on the Palm network without performing validator duties.

What are Validators?

Validators are responsible for proposing blocks and attesting to them within slots. In IBFT 2.0 networks, validators validate transactions and blocks, taking turns to create the next block. Before inserting the block onto the chain, a super-majority (greater than 66%) of validators must first sign the block.

To ensure that your node can successfully join the Palm network, you must specify the correct bootnodes for the environment you are targeting. This allows your node to find existing nodes on the network.

Connecting to existing nodes is important because it allows your node to download the chain history and send transactions to validator nodes.



Running a Palm Transaction Node

The tutorial in this section allows you to run a Palm transaction node locally for the target network environment. Available network environments are:

Network

Description

Palm Testnet

A persistent environment that will not be reset. This is useful as a staging environment and for long-term testing. You can Use the Bridge to transfer assets between Palm Testnet and the Ethereum Goerli testnet.

Palm Mainnet

Palm’s production environment where contracts and accounts hold real value. You can Use the Bridge to transfer assets between Palm Mainnet and Ethereum Mainnet.



🏁 Prerequisites



1. Create the node directory

Create the directory in which to store the required files and data directory:

Shell


Change into the palm-node directory:

Shell




If deploying your node on a cloud service like AWS, we recommend you use a second large data volume for the data directory. In the event of host failure, the data volume can be quickly moved to another host to re-establish connectivity with minimal downtime.



2. Download the genesis file

The genesis file specifies the network-wide settings and defines the first block in the chain. Each Palm environment uses a different genesis file.

The following curl commands downloads the genesis file for the required environment.

Palm Testnet
Palm Mainnet



3. Create the Besu configuration file

The configuration file is a TOML file used to specify the Besu options. Alternatively, specify the options directly when starting Besu. The below configuration file examples include the bootnode addresses for the required environments.

If running multiple Besu clients, ensure you configure the rpc-http-port option to avoid port conflicts.

Create a TOML file named config.toml with the following options:

  • For the data-path option, replace <PATH> with the location of the node directory created in Step 1.
Testnet config.toml
Mainnet config.toml



4. Start Besu

Start Besu and specify the configuration file. Make you are still in the palm-node folder from Step 1.

Shell


The node attempts to connect to the bootnodes and other transaction nodes, and begins synchronization once enough peers are found.

If you don't need a full archive node of all transactions in the chain, then you can speed up the time to sync with the other peers via BESU_SYNC_MODE=FAST for fast sync (the default is BESU_SYNC_MODE=FULL for full sync).

Testnet output example



Document image


You will need to install JDK if you run into the following error:



The operation couldn’t be completed. Unable to locate a Java Runtime. Please visit http://www.java.com for information on installing Java.



5. Confirm the network is running

Once the network is synchronized, start another terminal and use curl to call the JSON-RPC API net_peerCount which returns the number of peers currently connected to the client.

Curl


The result displays the validators on the Palm network:

Shell




Updated 25 Mar 2024
Doc contributor
Doc contributor
Did this page help you?