Creating an Evire Testnet Node: A Detailed Guide

evire
4 min readJul 17, 2024

--

This article will guide you through the steps necessary to set up and synchronize an Evire testnet node.

Running an Evire testnet node offers a practical way to engage with the Evire blockchain and explore its potential applications. Whether you’re a developer looking to build on the Evire platform or a blockchain enthusiast interested in learning more, setting up a testnet node is a worthwhile endeavor. By following the steps outlined in this guide, you can easily set up and run your own node, gaining valuable experience with the Evire network.

Repository Overview: evire-pos-testnet

The evire-pos-testnet repository on our GitHub (https://github.com/evireFW/evire-pos-testnet) contains all the necessary files and scripts to set up a testnet node. The key components include:

  • Dockerfile: Defines the environment setup for the node.
  • docker-compose.yml: Facilitates the orchestration of containerized services.
  • genesis.json: Contains the genesis block configuration for the testnet.
  • init-and-run.sh: A script to initialize and run the node.
  • jwtsecret: Used for securing the JSON Web Tokens.
  • clean.sh: A utility script for cleaning up the environment.

Detailed Setup Tutorial

Detailed Setup Tutorial

1. Clone the Repository Start by cloning the evire-pos-testnet repository to your local machine:

git clone https://github.com/evireFW/evire-pos-testnet.git && cd evire-pos-testnet

2. Clean the Environment If you’ve previously set up the environment and need a clean start, run the clean script:

./clean.sh

3. Build the Docker Image Use the Docker Compose to build the Docker images for your node:

docker-compose build

4. Run the Node Start the node using Docker Compose:

docker-compose up -d
  • You will see the following output:
Creating network "evire-pos-testnet_default" with the default driver 
Creating volume "evire-pos-testnet_execution" with default driver
Creating volume "evire-pos-testnet_consensus" with default driver
Creating evire-pos-testnet_geth_1 ... done
Creating evire-pos-testnet_beacon-chain_1 ... done

5. Inspect Node Logs Verify that your node is running and synchronizing with the testnet by checking the logs:

docker logs evire-pos-testnet_geth_1 -f
  • You should see logs similar to this:
INFO [07-12|07:36:10.244] Starting peer-to-peer node               instance=Geth/v1.14.8-unstable-cf037849/linux-amd64/go1.22.5
INFO [07-12|07:36:10.275] New local node record seq=1,720,769,770,273 id=1cca575df592cc69 ip=127.0.0.1 udp=30303 tcp=30303
INFO [07-12|07:36:10.276] Started P2P networking self=enode://2dfbb3a40637dade2e3894c43cf92e998f68528a34c7a58808809c3df8bd8ae5542efe09c6d89063b695c9d856a1fb4982ed9931e7aa6061ad256bc1a0916276@127.0.0.1:30303
INFO [07-12|07:36:10.282] IPC endpoint opened url=/root/.ethereum/geth.ipc
INFO [07-12|07:36:10.283] Loaded JWT secret file path=/root/.ethereum/jwtsecret crc32=0xcfbeb5ea
INFO [07-12|07:36:10.284] HTTP server started endpoint=[::]:8545 auth=false prefix= cors=* vhosts=*
INFO [07-12|07:36:10.284] WebSocket enabled url=ws://[::]:8546
INFO [07-12|07:36:10.284] WebSocket enabled url=ws://[::]:8551
INFO [07-12|07:36:10.284] HTTP server started endpoint=[::]:8551 auth=true prefix= cors=localhost vhosts=*
INFO [07-12|07:36:11.447] New local node record seq=1,720,769,770,274 id=1cca575df592cc69 ip=65.21.25.235 udp=30303 tcp=30303
INFO [07-12|07:36:20.290] Looking for peers peercount=1 tried=99 static=0
INFO [07-12|07:36:30.296] Looking for peers peercount=1 tried=220 static=0

6. Available Features and Commands To connect to the Evire Testnet Geth and attach a new node, you can use the following commands:

  • List Peers
docker-compose exec geth geth attach --exec "admin.peers" /root/.ethereum/geth.ipc
  • You will see output similar to:
[{
caps: ["eth/68", "snap/1"],
enode: "enode://2cb6d2a84d927c4cf8794cd8985de3afa824472f13264e4fdf410e83cb056f59ee407e7297b8f12d298a5794f3f91c7bd75bbcb72456d35fbed7edfcae5836d1@37.27.118.184:30303",
id: "37fd85d907ce2771d7fd1cd7390dca9f17f4349946bcdc05f53a88cc93790367",
name: "Geth/v1.14.7-unstable-37590b2c/linux-amd64/go1.22.5",
network: {
inbound: false,
localAddress: "172.18.0.2:43844",
remoteAddress: "37.27.118.184:30303",
static: false,
trusted: false
},
protocols: {
eth: {
version: 68
},
snap: {
version: 1
}
}
}]
  • Node Info
docker-compose exec geth geth attach --exec "admin.nodeInfo" /root/.ethereum/geth.ipc
  • You will see output similar to:
{
enode: "enode://2dfbb3a40637dade2e3894c43cf92e998f68528a34c7a58808809c3df8bd8ae5542efe09c6d89063b695c9d856a1fb4982ed9931e7aa6061ad256bc1a0916276@65.21.25.235:30303",
enr: "enr:-Ke4QG65XqiXVuI4WlZ9suebJffgyjPQzPYuTcAgWGo_2BdFdB9iNIn8dgatrlxNpoDXcRtYznY17E5fREIHriHt_IKGAZCl3vMig2V0aMvKhGcNMYCEZr6sZoJpZIJ2NIJpcIRBFRnriXNlY3AyNTZrMaECLfuzpAY32t4uOJTEPPkumY9oUoo0x6WICICcPfi9iuWEc25hcMCDdGNwgnZfg3VkcIJ2Xw",
id: "1cca575df592cc6944ea49eb1185bfe092f8da4f4a5b5b6df8fab22d46ea8f0d",
ip: "65.21.25.235",
listenAddr: "[::]:30303",
name: "Geth/v1.14.8-unstable-cf037849/linux-amd64/go1.22.5",
ports: {
discovery: 30303,
listener: 30303
},
protocols: {
eth: {
config: {
arrowGlacierBlock: 0,
berlinBlock: 0,
byzantiumBlock: 0,
cancunTime: 1723772006,
chainId: 787878,
constantinopleBlock: 0,
daoForkSupport: true,
eip150Block: 0,
eip155Block: 0,
eip158Block: 0,
grayGlacierBlock: 0,
homesteadBlock: 0,
istanbulBlock: 0,
londonBlock: 0,
muirGlacierBlock: 0,
petersburgBlock: 0,
shanghaiTime: 1720537190,
terminalTotalDifficulty: 0,
terminalTotalDifficultyPassed: true
},
difficulty: 1,
genesis: "0xd8e3047433f21e3a4e08a8af235bdcafcd58edd1e00aeb8160265123a0990ff7",
head: "0xd8e3047433f21e3a4e08a8af235bdcafcd58edd1e00aeb8160265123a0990ff7",
network: 787878
},
snap: {}
}
}

7. Cleaning Up If you need to stop the node and clean up your environment, use the provided script:

./clean.sh

While setting up and running a testnet node is a valuable exercise, it’s important to understand that external nodes will not be selected as validators for the upcoming incentivized testnet campaign. This decision is based on our current need to manage multiple successive updates efficiently. Coordinating these updates with external validators would require constant communication and synchronization, potentially complicating our development process. Therefore, this measure allows us to streamline our development work and ensure that our updates can be implemented smoothly and effectively.

External nodes can still participate in the testnet for demonstration purposes and for enthusiasts to explore the functionality and features of the Evire blockchain. However, these nodes will not be considered for validator roles during the incentivized testnet campaign.

However, please keep in mind that due to the need for streamlined updates and development processes, external nodes will not participate as validators in the immediate incentivized testnet campaign. We appreciate your understanding and look forward to your contributions to the Evire ecosystem. By running your own testnet node, you can help us test and improve the network, paving the way for a robust and scalable mainnet launch in the future.

--

--

evire

Evire is a layer 1 blockchain that aims to provide native support for AI, gaming, RWA and DePIN, empowering developers to build efficient, cutting-edge dApps.