LogoLogo
  • Persistence Hub
    • 👓Overview
    • 🌐Persistence Ecosystem
  • Begin & Explore
    • 🔏Wallet Setup
    • 📓Getting Your Persistence Address
    • 💰Acquiring $XPRT Tokens
  • Products
    • 🦾Persistence DEX (V1)
      • 📘Introduction
      • 📖Guides
        • 👨‍💼Managing Assets
        • 💱Trading Assets
        • 🚰Providing Liquidity
        • ⛓️Bonding/Unbonding Tokens
        • 🎉Claiming Rewards
        • 🏗️Creating New Pool
          • 🌀Metastable Pool
          • ⚖️Weighted Pool
          • 🧊Stable Swap Pool
      • 🏊‍♂️Pools
      • ⚡Instant LP Unbonding
      • 🎁Tradooor Rebate Program
      • 💰Fees
      • 🏆Rewards
      • ⚙️Technical Architecture
    • Bitcoin Cross-Chain Swaps (V2)
      • 🌟Introduction
      • 📚Fundamentals
        • 💱BTCfi
        • 🌉Bitcoin Layer 2s
        • Interoperability for BTCfi
        • 💡Intents for Blockchain Interoperability
      • 🔀Traditional Bridges vs. Intent-Based Swaps
      • ⚙️Product Mechanism
  • 💂Security
    • 📖Audits
  • Participate & Explore
    • $XPRT Token
      • 🛒Acquire
      • 📈Stake
      • 🏛️Governance
    • 🖥️Alternative Frontends
      • 🔃Hosting IPFS Versions with Pinata
      • 🤖IPFS Automation
    • 💼Wallets
    • 🔍Explorers
    • 💸Grants
  • Persistence Core-1 Chain
    • 🟢Running Nodes
      • Run a Local Node
      • Run a Testnet Node
      • Run a Mainnet Node
      • Node operations
        • State Sync
        • Run in the background
        • Cosmovisor upgrades
        • Manual upgrades
      • Seed & Peers
    • Public Infrastructure
      • Persistence Testnet
      • Endpoints
      • Snapshots & Archival Nodes
      • Faucets
      • Chain Registry
    • 🛡️Validators
      • Validate on Testnet
      • Validate on Mainnet
      • Validator Communication
    • 📡Relayers
      • IBC Channels
      • IBC Relayers
      • Relay on Mainnet
      • Relay on Testnet
    • 🫗Liquid Staking Module
      • For Validators
    • 📄Smart Contracts
      • Overview
      • Uploading a Contract
    • 👨‍💻Developer Tools
      • Persistence JS
      • Persistence SDK
    • ⚒️Community Tools
  • Community & Support
    • 🇹🇰Foundation Delegations
      • ➡️Round 1 - Closed
      • ➡️Round 2 - Closed
      • ⭐Bonus Delegation
      • ➡️Round 3 - Delegation Period Over
    • ⭕Coin-type Migration from 750 to 118
      • Persistence Wallet
      • Keplr Wallet
      • Ledger Hardware Wallet
      • Cosmostation Wallet
      • Coin98 Super Wallet
      • Math Wallet
      • Leap Wallet
      • Citadel Wallet
    • 🌎Geofencing on Persistence
    • 😍Connect & Follow
Powered by GitBook
On this page
  • Hardware Requirements
  • Prerequisites
  • Install Go
  • Install jq, git, gcc, and make
  • Installation Steps
  • Install the persistenceCore Binary
  • Create or Import Key (XPRT Address)
  • Create and Sync the Node
  • Node operations
  • Run your node in the background
  • Upgrade the Node's Software

Was this helpful?

Edit on GitHub
  1. Persistence Core-1 Chain
  2. Running Nodes

Run a Testnet Node

Hardware Requirements

The minimum and recommended requirements to run a Testnet Persistence Node increase as it produces more blocks and more features are added. Thus, there are no exact hardware requirements that are permanently sufficient. A testnet node should always have redundant resources available.

  • Recommended:

    • 8 GB RAM

    • 100 GB SSD

    • 4 CPU

  • Operating System:

    • Recommended: Linux(x86_64)

    • Others: Windows/MacOS(x86)

Prerequisites

To successfully run a Persistence Testnet Node, we need to install a few prerequirements. Because running the Persistence software depends on them, prerequirements are also known as dependencies.

We need to install and/or setup 5 dependencies - Go, jq, gcc, make, and git.

Install Go

Ubuntu

  1. Remove any previous installation:

    rm -rf /usr/local/go
  2. Add the Go PPA to Your System:

    First, add the longsleep/golang-backports PPA to your system. This repository contains the latest version of Go. You can add it by running the following command in your terminal:

    sudo add-apt-repository ppa:longsleep/golang-backports
  3. Update Your Package List:

    After adding the PPA, update your package list to include the latest packages available in the repository:

    sudo apt update
  4. Install Go:

    Now, install Go using the apt package manager. This command will install the latest version of Go available in the PPA:

    sudo apt install golang-go
  5. Set Up Your Go Environment: After installation, set up your Go workspace and add Go binaries to your PATH. You can do this by adding the following lines to your ~/.profile file:

    echo "" >> ~/.profile
    echo "export GOPATH=$HOME/go" >> ~/.profile
    echo "export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin" >> ~/.profile
    source ~/.profile
  6. Verify the Installation:

    Finally, verify that Go has been installed correctly by checking its version. You should see the latest version of Go as the output:

    go version

macOS

  1. Install Go using Homebrew: Open a terminal and run the following command:

    brew install go
  2. To ensure Go is installed correctly, check its version. In the terminal, type:

    go version

Install jq, git, gcc, and make

  1. Install:

    • Ubuntu: apt install jq git gcc make

    • macOS: brew install jq git gcc make

  2. Verify Installations:

    • Verify jq: jq --version (sample output: jq-1.6)

    • Verify gcc : gcc --version (sample output: gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0)

    • Verify make: make --version (sample output: GNU Make 4.2.1)

    • Verify git: git --version (sample output: git version 2.25.1)

Installation Steps

Install the persistenceCore Binary

  1. Clone the persistenceCore repository:

    git clone https://github.com/persistenceOne/persistenceCore.git $GOPATH/source/persistenceCore && cd $GOPATH/source/persistenceCore
  2. Switch to the branch of the latest version (v6.0.0-rc5 as of time of writing):

    git checkout v6.0.0-rc5
  3. Install the persistenceCore binary:

    make all
  4. Verify installation (sample output: v6.0.0-rc5):

    persistenceCore version

Create or Import Key (XPRT Address)

  • Create key (ensure you safely store the mnemonic seed phrase):

    persistenceCore keys add <KEY_NAME>
  • Recover key (you'll be required to input your mnemonic seed phrase):

    persistenceCore keys add <KEY_NAME> --recover
  • Verify the key was created successfully:

    persistenceCore keys list

Create and Sync the Node

  1. Initialize the node (moniker = node name):

    persistenceCore init <MONIKER> --chain-id="test-core-2" # e.g. persistenceCore init "Persistence Node" --chain-id="test-core-2"
  2. Download the test-core-2 genesis file:

    wget -O genesis.json https://raw.githubusercontent.com/persistenceOne/networks/master/test-core-2/genesis.json
  3. Use StateSync to sync with the rest of the nodes. Follow the step-by-step guide below:

    • Run the following command and copy the values of trust_height and trust_hash. They are required in the next steps.

      curl -s https://persistence-testnet-rpc.cosmonautstakes.com/status | jq '.result .sync_info | {trust_height: .latest_block_height, trust_hash: .latest_block_hash} | values'
    • Open config:

      nano ~/.persistenceCore/config/config.toml
    • Replace the existing settings in the opened file with the following:

      [p2p]
      seeds = "b4237f8a7ca357d380ad119b76cbceec7e7e8a75@seed.testnet.persistence.one:26656"
      
      persistent_peers = "14ecdc5126ea8d93c7d3a863d9d38e380e46fc06@185.225.233.30:26656"
      
      [statesync]
      enable = true
      rpc_servers = "https://persistence-testnet-rpc.cosmonautstakes.com:443,https://persistence-testnet-rpc.cosmonautstakes.com:443"
      trust_height = XXXXXXX # Replace with the value copied in the previous step
      trust_hash = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" # Replace with the value copied in the previous step
      trust_period = "112h0m0s"
    • Make sure you replace trust_height and trust_hash values with the ones you've copied in the previous step.

  4. Open the app.toml file (application-related configuration file):

    nano ~/.persistenceCore/config/app.toml
  5. Change minimum-gas-prices to minimum-gas-prices = "0.005uxprt"

  6. Start the node:

    persistenceCore start
  7. Because we used StateSync to sync with the other nodes, it shouldn't take more than 10 minutes to complete. In the meantime, a lot of output messages will pop one after another.

  8. When the node is completely synced, you should observe a similar output:

    11:28PM INF received complete proposal block hash=AE7196316065BC778E2BA5AFD1626C06CA2113B4F67DB2F4052B98700FD4B982 height=9305912 module=consensus
    11:28PM INF finalizing commit of block hash={} height=9305912 module=consensus num_txs=0 root=7B6B6A7C6D2CC68F266086794995E52F321B69FCA9530220093C47EC383278D0
    11:28PM INF minted coins from module account amount=8173386uxprt from=mint module=x/bank
    11:28PM INF executed block height=9305912 module=state num_invalid_txs=0 num_valid_txs=0
    11:28PM INF commit synced commit=436F6D6D697449447B5B3235312031313220323236203434203735203139322031362036312031373620373020323138203130332031383220313233203134302032332031353620313032203133392033342031393020323220343920313230203137322038203130372032313720313835203135322038332036345D3A3844464633387D
    11:28PM INF committed state app_hash=FB70E22C4BC0103DB046DA67B67B8C179C668B22BE163178AC086BD9B9985340 height=9305912 module=state num_txs=0
    11:28PM INF indexed block exents height=9305912 module=txindex

    Alternatively, you can use the following command (response must be false):

    curl http://localhost:26657/status | jq -r ".result.sync_info.catching_up"

Node operations

Upgrade the Node's Software

PreviousRun a Local NodeNextRun a Mainnet Node

Last updated 4 months ago

Was this helpful?

Install Homebrew (if not already installed): If you don't have Homebrew on your macOS, you need to install it first. Visit the for installation instructions.

Note The latest version available in the might not be the one running on the test-core-2 chain. To ensure you're running the correct version, join the .

Check what version is running on the test-core-2 chain by visiting the .

Note: For an automated script for StateSync, follow the instructions on this . Refer to peers here: . For additional helpful values like seeds, refer here: .

🟢
Homebrew website
releases page
Discord Testnet Validator Announcements Channel
Discord Testnet Validators Announcements Channel
link
peers.json
polkachu
Run your node in the background
Using Cosmovisor
Manually swap binaries