Using Pre-compiled Binary

Deploy a PFN using Pre-compiled binary

To deploy a Preferred Full Node (PFN) using pre-compiled binary, follow these steps:

  1. Obtain the Endless-Core Software:

    • Using Pre-Compiled Binaries: Download the endless-node pre-compiled binary from endless-releases.

  2. Prepare Your System:

    • Ensure Executable Access: Place the compiled or downloaded endless-node binary in a directory included in your system's executable PATH.

    • Create Directories: Establish a base directory (e.g., /home/endless/) and within it, create a directory for your full node, such as /home/endless/mainnet for mainnet deployments.

  3. Set Up the Full Node Environment

    • Navigate to the base directory and create necessary subdirectories:

    cd `/home/endless/mainnet`
    mkdir -p data genesis config
    • Download Network Files:

      • For Mainnet:

      curl -o ./genesis/genesis.blob \
         https://raw.githubusercontent.com/endless-labs/endless-release/main/endless-networks/mainnet/genesis.blob
      curl -o ./genesis/genesis_waypoint.txt \
         https://raw.githubusercontent.com/endless-labs/endless-release/main/endless-networks/mainnet/genesis_waypoint.txt
      • For Testnet:

      curl -o ./genesis/genesis.blob \
         https://raw.githubusercontent.com/endless-labs/endless-release/main/endless-networks/testnet/genesis.blob
      curl -o ./genesis/genesis_waypoint.txt \
         https://raw.githubusercontent.com/endless-labs/endless-release/main/endless-networks/testnet/genesis_waypoint.txt
      • For Other Networks: Access the appropriate genesis.blob and genesis_waypoint.txt files from the endless-networks and download them into the genesis directory.

  4. Configure the Full Node: Create the Configuration File: In the config directory, create a fullnode.yaml file. Edit Configuration Settings:

    • Specify the Genesis File Location: Set the path to the downloaded genesis.blob by modifying the execution.genesis_file_location parameter in fullnode.yaml. Ensure it points to the correct location, such as /home/endless/mainnet/genesis/genesis.blob.

    • Set the Waypoint File: Update the configuration to reference the genesis_waypoint.txt file, ensuring synchronization with the chosen network.

    • Define Data Storage Path: Configure the node to store synchronized blockchain data in the data directory you created earlier.

    Sample configuration for reference

  5. Start your local public fullnode by running the below command:

endless-node --config ./config/fullnode.yaml

You have now successfully configured and started running a PFN in the Endless mainnet.

To inspect the current synchronization status by running the below command:

curl http://localhost:8080/v1

{"chain_id":220,"epoch":"16","ledger_version":"427179",...,"node_role":"full_node",...,"block_height":"213270",...}

The chain_id indicates the specific Endless network(current network is Endless Mainnet) to which you are connected.

The epoch and block_height represent the current synchronization progress, with block_height continually increasing as new blocks are added.

Sample Configuration of PFN

A sample fullnode.yaml configuration file for typical full node

base:
   role: "full_node"
   data_dir: "/home/endless/mainnet/data"
   waypoint:
      from_file: "/home/endless/mainnet/genesis/genesis_waypoint.txt"

execution:
   genesis_file_location: "/home/endless/mainnet/genesis/genesis.blob"

full_node_networks:
   - network_id: public
      seed_addrs:
         0x415ef8d74118495935e60961806f24a8b502072378c73bdd87661d41a486ce1b:
         - /dns/chain-r-1.endless.link/tcp/6182/noise-ik/0x415ef8d74118495935e60961806f24a8b502072378c73bdd87661d41a486ce1b/handshake/0
         0xd8025b203853e3253393c80d8e81184983a4a00dfc23b432112e72ce1f827d69:
         - /dns/chain-r-2.endless.link/tcp/6182/noise-ik/0xd8025b203853e3253393c80d8e81184983a4a00dfc23b432112e72ce1f827d69/handshake/0
         0x52d09187b0bcc2e24f5aea940910ac42a645c231e6c0c9eebc65676350f1e94e:
         - /dns/chain-r-3.endless.link/tcp/6182/noise-ik/0x52d09187b0bcc2e24f5aea940910ac42a645c231e6c0c9eebc65676350f1e94e/handshake/0
         0x40cc7d84ecaf0b4afd364d7d5bb260aa71f31812c4c8f46be6fd68cccaba1d49:
         - /dns/chain-r-4.endless.link/tcp/6182/noise-ik/0x40cc7d84ecaf0b4afd364d7d5bb260aa71f31812c4c8f46be6fd68cccaba1d49/handshake/0
         0x2f9aac167b64843718a362bb2e4188b031ffcec500e80fd17582cde9437ffb07:
         - /dns/chain-r-5.endless.link/tcp/6182/noise-ik/0x2f9aac167b64843718a362bb2e4188b031ffcec500e80fd17582cde9437ffb07/handshake/0
      listen_address: /ip4/0.0.0.0/tcp/6182

api:
   enabled: true
   address: "0.0.0.0:8080"

Don’t want to allow inbound connections?

Override the following if you do not want other PFNs connecting to yours: listen_address: "/ip4/127.0.0.1/tcp/6182"

Sample configuration with index GRPC enabled

When user need to integrate endless node with endless indexer, it's necessary to enable the index GRPC feature on endless node.

Please add the following lines to configuration of full node, to enable index GRPC.

state_sync:
  state_sync_driver:
    bootstrapping_mode: ExecuteOrApplyFromGenesis
    continuous_syncing_mode: ExecuteTransactionsOrApplyOutputs

storage:
  enable_indexer: true

indexer_grpc:
  enabled: true
  use_data_service_interface: true
  address: "0.0.0.0:50051"  # change to specified ipaddr:port where endless indexer is deployed 

Last updated