Join a Network
This guide includes full instructions for joining the testnet and mainet (coming soon) either as an archive/full node or a pruned node.
Last updated
This guide includes full instructions for joining the testnet and mainet (coming soon) either as an archive/full node or a pruned node.
Last updated
Instructions for boosterizing a node using
For instructions to join as a validator, please also see the .
Make sure the following prerequisites are completed:
The current CrossFi networks are:
crossfi-evm-testnet-1
.
crossfi-mainnet-1
.
Running a full archive node can be resource intensive as the full current crossfi-1
can be is over 1TB
. For those who wish to run state sync or use quicksync, the following hardware configuration is recommended:
Validator
32GB
500GB-2TB*
Full
16GB
2TB
Default
16GB
1TB
* Storage size for validators will depend on level of pruning.
Make sure to walk through the basic setup and configuration. Operators will need to initialize crossfid
, download the genesis file for crossfi-1
, and set persistent peers and/or seeds for startup.
Upon startup the node will need to connect to peers. If there are specific nodes a node operator is interested in setting as seeds or as persistent peers, this can be configured in ~/.crossfid/config/config.toml
There are four strategies for pruning state. These strategies apply only to state and do not apply to block storage. A node operator may want to consider custom pruning if node storage is a concern or there is an interest in running an archive node.
To set pruning, adjust the pruning
parameter in the ~/.crossfid/config/app.toml
file. The following pruning state settings are available:
everything
: Prune all saved states other than the current state.
nothing
: Save all states and delete nothing.
default
: Save the last 100 states and the state of every 10,000th block.
custom
: Specify pruning settings with the pruning-keep-recent
, pruning-keep-every
, and pruning-interval
parameters.
By default, every node is in default
mode which is the recommended setting for most environments. If a node operator wants to change their node's pruning strategy then this must be done before the node is initialized.
In ~/.crossfid/config/app.toml
Passing a flag when starting crossfid
will always override settings in the app.toml
file. To change the node's pruning setting to everything
mode then pass the ---pruning everything
flag when running crossfid start
.
By default, the REST API is disabled. To enable the REST API, edit the ~/.crossfid/config/app.toml
file, and set enable
to true
in the [api]
section.
Optionally activate swagger by setting swagger
to true
or change the port of the REST API in the parameter address
. After restarting the application, access the REST API on <NODE IP>:1317
.
By default, gRPC is enabled on port 9090
. The ~/.crossfid/config/app.toml
file is where changes can be made in the gRPC section. To disable the gRPC endpoint, set enable
to false
. To change the port, use the address
parameter.
There are two types of concerns when deciding which sync option is right. Data integrity refers to how reliable the data provided by a subset of network participants is. Historical data refers to how robust and inclusive the chain’s history is.
Minimal Historical Data
Quicksync - Pruned
State Sync
Moderate Historical Data
Quicksync - Default
Full Historical Data
Quicksync - Archive
Blocksync
crossfi-evm-testnet-1
v0.2.0
Getting Started
To enable state sync, visit an explorer to get a recent block height and corresponding hash. A node operator can choose any height/hash in the current bonding period, but as the recommended snapshot period is 1000
blocks, it is advised to choose something close to current height - 1000
.
With the block height and hash selected, update the configuration in ~/.crossfid/config/config.toml
to set enable = true
, and populate the trust_height
and trust_hash
. Node operators can configure the rpc servers to a preferred provider, but there must be at least two entries. It is important that these are two rpc servers the node operator trusts to verify component parts of the chain state. While not recommended, uniqueness is not currently enforced, so it is possible to duplicate the same server in the list and still sync successfully.
Start crossfid to begin state sync. It may take take some time for the node to acquire a snapshot, but the command and output should look similar to the following:
Once state sync successfully completes, the node will begin to process blocks normally. If state sync fails and the node operator encounters the following error: State sync failed err="state sync aborted"
, either try restarting crossfid
or running crossfid unsafe-reset-all
(make sure to backup any configuration and history before doing this).
Saving and serving snapshots helps nodes rapidly join the network. Snapshots are now enabled by default effective 1/20/21
.
While not advised, if a node operator needs to customize this feature, it can be configured in ~/.crossfid/config/app.toml
. The Crossfi Chain recommends setting this value to match pruning-keep-every
in config.toml
.
In app.toml
Cosmovisor is a process manager developed to relieve node operators of having to manually intervene every time there is an upgrade. Cosmovisor monitors the governance module for upgrade proposals; it will take care of downloading the new binary, stopping the old one, switching to the new one, and restarting.
To run the node in a background process with automatic restarts, it's recommended to use a service manager like systemd
. To set this up run the following:
If using Cosmovisor then make sure to add the following:
After the LimitNOFILE
line and replace $(which crossfid)
with $(which cosmovisor)
.
Run the following to setup the daemon:
Then start the process and confirm that it's running.
crossfid can dump the entire application state into a JSON file. This application state dump is useful for manual analysis and can also be used as the genesis file of a new network.
The node can't be running while exporting state, otherwise the operator can expect a resource temporarily unavailable
error.
Export state with:
It is also possible to export state from a particular height (at the end of processing the block of that height):
If planning to start a new network from the exported state, export with the --for-zero-height
flag:
Running invariants on each block is a best practice for disaster prevention. This ensures that the node operator maintains the correct and expect state of the network.
Although this is important for the operation of a node, invariant checks are not enabled by defauls because they are computationally expensive. To run a node with these checks start your node with the assert-invariants-blockly flag:
If an invariant is broken on the node, it will panic and prompt the operator to send a transaction which will halt the network. For example the provided message may look like:
Choose the proper hardware/server configuration. See the .
Ensure crossfid is properly installed. See the for a walkthrough.
Follow the to intialize and prepare the node to sync with the network.
Block explorer -
Execution/Consensus layers explorer -
Execution/Consensus layers explorer -
There are three main ways to sync a node on the Crossfi Chain; Blocksync, State Sync, and Quicksync. See the matrix below for the Hub's recommended setup configuration. This guide will focus on syncing two types of common nodes; full and pruned. For further information on syncing to run a validator node, see the section on .
Make sure to consult the section for guidance on the best configuration for the type of node operating.
Blocksync is faster than traditional consensus and syncs the chain from genesis by downloading blocks and verifying against the merkle tree of validators. For more information see
When syncing via Blocksync, node operators will either need to manually upgrade the chain or set up to upgrade automatically.
It is possible to sync from previous versions of the Crossfi Chain. See the matrix below for the correct crossfid
version. See the for historical genesis files.
Start crossfid to begin syncing with the skip-invariants
flag. For more information on this see network.
State Sync is an efficient and fast way to bootstrap a new node, and it works by replaying larger chunks of application state directly rather than replaying individual blocks or consensus rounds. For more information, see .
In the future, the RPC server requirement will be deprecated as state sync is .
Quicksync.io offers several daily snapshots of the Crossfi Chain with varying levels of pruning (archive
1.4TB, default
540GB, and pruned
265GB). For downloads and installation instructions, visit the .
For more information on how to run a node via Cosmovisor, check out the .