Skip to content

Celestia ​

This guide covers connecting your Evolve chain to Celestia for production data availability.

Prerequisites ​

  • Completed an Evolve quickstart tutorial
  • Familiarity with running a Celestia light node

Running a Celestia Light Node ​

Before starting your Evolve chain, you need a Celestia light node running and synced.

Follow the Celestia light node documentation to install, initialize, and start a light node for your target network (Arabica, Mocha, or Mainnet).

Configuring Evolve for Celestia ​

Required Configuration ​

The following flags are required to connect to Celestia:

FlagDescription
--evnode.da.addressCelestia node RPC endpoint
--evnode.da.auth_tokenJWT authentication token
--evnode.da.header_namespaceNamespace for block headers
--evnode.da.data_namespaceNamespace for transaction data

Get DA Block Height ​

Query the current DA height to set as your starting point:

bash
DA_BLOCK_HEIGHT=$(celestia header network-head | jq -r '.result.header.height')
echo "Your DA_BLOCK_HEIGHT is $DA_BLOCK_HEIGHT"

Get Authentication Token ​

Generate a write token for your light node:

Arabica:

bash
AUTH_TOKEN=$(celestia light auth write --p2p.network arabica)

Mocha:

bash
AUTH_TOKEN=$(celestia light auth write --p2p.network mocha)

Mainnet:

bash
AUTH_TOKEN=$(celestia light auth write)

Set Namespaces ​

Choose unique namespaces for your chain's headers and data:

bash
DA_HEADER_NAMESPACE="my_chain_headers"
DA_DATA_NAMESPACE="my_chain_data"

The namespace values are automatically encoded by ev-node for Celestia compatibility.

You can use the same namespace for both headers and data, or separate them for optimized syncing (light clients can sync headers only).

Set DA Address ​

Default Celestia light node port is 26658. Note: Connection to a celestia-node DA requires a websocket connection:

bash
DA_ADDRESS=ws://localhost:26658

Running Your Chain ​

Start your chain with Celestia configuration:

bash
evnode start \
    --evnode.node.aggregator \
    --evnode.da.auth_token $AUTH_TOKEN \
    --evnode.da.header_namespace $DA_HEADER_NAMESPACE \
    --evnode.da.data_namespace $DA_DATA_NAMESPACE \
    --evnode.da.address $DA_ADDRESS

For Cosmos SDK chains:

bash
appd start \
    --evnode.node.aggregator \
    --evnode.da.auth_token $AUTH_TOKEN \
    --evnode.da.header_namespace $DA_HEADER_NAMESPACE \
    --evnode.da.data_namespace $DA_DATA_NAMESPACE \
    --evnode.da.address $DA_ADDRESS

Viewing Your Chain Data ​

Once running, you can view your chain's data on Celestia block explorers:

Search by your namespace or account address to see submitted blobs.

Configuration Options ​

Gas Price ​

By default, ev-node uses automatic gas price detection. Keep the default unless you have an operational reason to override it:

bash
--evnode.da.gas_price 0.01

Higher gas prices result in faster inclusion during congestion. Omit this flag to use the automatic default.

Block Time ​

Set the expected DA block time (affects retry timing):

bash
--evnode.da.block_time 6s

Celestia's block time is approximately 6 seconds.

Multiple Signing Addresses ​

For high-throughput chains, use multiple signing addresses to avoid nonce conflicts:

bash
--evnode.da.signing_addresses celestia1abc...,celestia1def...,celestia1ghi...

All addresses must be funded and loaded in the Celestia node's keyring.

Funding Your Account ​

Testnet (Mocha/Arabica) ​

Get testnet TIA from faucets:

Mainnet ​

Purchase TIA and transfer to your Celestia light node address.

Check your address:

bash
celestia state account-address

Troubleshooting ​

Out of Funds ​

If you see Code: 19 errors, your account is out of TIA:

  1. Fund your account
  2. Increase gas price to unstick pending transactions
  3. Restart your chain

See Troubleshooting Guide for details.

Connection Refused ​

Verify your Celestia node is running:

bash
curl http://localhost:26658/header/sync_state

Token Expired ​

Regenerate your auth token:

bash
celestia light auth write --p2p.network <network>

See Also ​

Released under the APACHE-2.0 License