Join the Network Hardware Specification Validators should expect to provision one or more data center locations with redundant power, networking, firewalls, HSMs and servers.
We initially recommend this minimum hardware specifications and they might rise as network usage increases.
Copy
4+ vCPU x64 2.0+ GHz
32+ GB RAM
1TB+ SSD
Install injectived and peggo
Copy
wget https://github.com/InjectiveLabs/injective-chain-releases/releases/download/v1.7.0-1662223156/linux-amd64.zip
unzip linux-amd64.zip
sudo mv peggo /usr/bin
sudo mv injectived /usr/bin
Initialize a new Injective Chain node Before actually running the Injective Chain node, we need to initialize the chain, and most importantly its genesis file.
Copy
# The argument <moniker> is the custom username of your node, it should be human-readable.
export MONIKER=<moniker>
# the Injective Chain has a chain-id of "injective-1"
injectived init $MONIKER --chain-id injective-1
Running this command will create injectived
default configuration files at ~/.injectived
.
Prepare configuration to join Mainnet You should now update the default configuration with the Mainnet's genesis file and application config file, as well as configure your persistent peers with a seed node.
Copy
git clone https://github.com/InjectiveLabs/mainnet-config
cp mainnet-config/10001/genesis.json ~/.injectived/config/genesis.json
cp mainnet-config/10001/app.toml ~/.injectived/config/app.toml
You can also run verify the checksum of the genesis checksum - 573b89727e42b41d43156cd6605c0c8ad4a1ce16d9aad1e1604b02864015d528
Copy
sha256sum ~/.injectived/config/genesis.json
Then open update the persistent_peers field present in ~/.injectived/config/config.toml with the contents of mainnet-config/10001/seeds.txt and update the timeout_commit
to 800ms
.
Copy
cat mainnet-config/10001/seeds.txt
nano ~/.injectived/config/config.toml
Edit the config at /etc/systemd/system/injectived.service
:
Copy
[ Unit]
Description = injectived
[ Service]
WorkingDirectory = /usr/bin
ExecStart = /bin/bash -c '/usr/bin/injectived --log-level=error start'
Type = simple
Restart = always
RestartSec = 5
User = root
[ Install]
WantedBy = multi-user.target
Starting and restarting the systemd service
Copy
sudo systemctl daemon-reload
sudo systemctl restart injectived
sudo systemctl status injectived
sudo systemctl enable injectived
journalctl -u injectived -f
Sync with the network Option 1. State-Sync You can use state-sync to join the network by following the below instructions.
Copy
sudo systemctl stop injectived
sudo injectived tendermint unsafe-reset-all --home ~/.injectived
CUR_HEIGHT = $( curl -sS https://tm.injective.network/block | jq .result.block.header.height | tr -d '"' )
SNAPSHOT_INTERVAL = 5000
RPC_SERVERS = "38c18461209694e1f667ff2c8636ba827cc01c86\@mainnet-sentry-de-0.injective.network:26657,4f9025feca44211eddc26cd983372114947b2e85\@mainnet-sentry-de-1.injective.network:26657,c98bb1b889ddb58b46e4ad3726c1382d37cd5609\@mainnet-sentry-fi-0.injective.network:26657,23d0eea9bb42316ff5ea2f8b4cd8475ef3f35209\@mainnet-sentry-fi-1.injective.network:26657,f9ae40fb4a37b63bea573cc0509b4a63baa1a37a\@mainnet-sentry-ca-0.injective.network:26657,7f3473ddab10322b63789acb4ac58647929111ba\@mainnet-sentry-ca-1.injective.network:26657"
TRUST_HEIGHT = $(( CUR_HEIGHT / SNAPSHOT_INTERVAL * SNAPSHOT_INTERVAL ))
TRUSTED_HASH = $( curl -sS https://tm.injective.network/block?height= $TRUST_HEIGHT | jq .result.block_id.hash)
perl -i -pe 's|enable = false|enable = true|g' ~/.injectived/config/config.toml
perl -i -pe 's|rpc_servers = ".*?"|rpc_servers = "' $RPC_SERVERS '"|g' ~/.injectived/config/config.toml
perl -i -pe 's/^trust_height = \d+/trust_height = ' $TRUST_HEIGHT '/' ~/.injectived/config/config.toml
perl -i -pe 's/^trust_hash = ".*?"/trust_hash = ' $TRUSTED_HASH '/' ~/.injectived/config/config.toml
sudo systemctl start injectived
Option 2. Snapshots You can find archival and pruned snapshots on ChainLayer (opens new window) .
Alternatively you can use the archival or pruned snapshots on AWS.
Archival
Copy
aws s3 sync --acl public-read --delete --no-sign-request s3://injective-snapshots/mainnet/injectived/daily/data $HOME /.injectived/data
aws s3 sync --acl public-read --delete --no-sign-request s3://injective-snapshots/mainnet/injectived/daily/wasm $HOME /.injectived/wasm
Pruned
Copy
aws s3 sync --acl public-read --delete --no-sign-request s3://injective-snapshots/mainnet/injectived/pruned/data $HOME /.injectived/data
aws s3 sync --acl public-read --delete --no-sign-request s3://injective-snapshots/mainnet/injectived/pruned/wasm $HOME /.injectived/wasm
Support For any further questions, you can always connect with the Injective Team via Discord, Telegram, and email.
Discord (opens new window) Telegram (opens new window) E-mail