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:
| Flag | Description |
|---|---|
--evnode.da.address | Celestia node RPC endpoint |
--evnode.da.auth_token | JWT authentication token |
--evnode.da.header_namespace | Namespace for block headers |
--evnode.da.data_namespace | Namespace for transaction data |
Get DA Block Height
Query the current DA height to set as your starting point:
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:
AUTH_TOKEN=$(celestia light auth write --p2p.network arabica)Mocha:
AUTH_TOKEN=$(celestia light auth write --p2p.network mocha)Mainnet:
AUTH_TOKEN=$(celestia light auth write)Set Namespaces
Choose unique namespaces for your chain's headers and data:
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:
DA_ADDRESS=ws://localhost:26658Running Your Chain
Start your chain with Celestia configuration:
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_ADDRESSFor Cosmos SDK chains:
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_ADDRESSViewing 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:
--evnode.da.gas_price 0.01Higher 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):
--evnode.da.block_time 6sCelestia's block time is approximately 6 seconds.
Multiple Signing Addresses
For high-throughput chains, use multiple signing addresses to avoid nonce conflicts:
--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:
celestia state account-addressTroubleshooting
Out of Funds
If you see Code: 19 errors, your account is out of TIA:
- Fund your account
- Increase gas price to unstick pending transactions
- Restart your chain
See Troubleshooting Guide for details.
Connection Refused
Verify your Celestia node is running:
curl http://localhost:26658/header/sync_stateToken Expired
Regenerate your auth token:
celestia light auth write --p2p.network <network>See Also
- Local DA Guide - Development setup
- Troubleshooting - Common issues
- Configuration Reference - All DA options