This guide provides notes for major version releases. These notes may be helpful for users when upgrading from previous major versions.
Node operators MUST upgrade their binary to this version prior to the v7 activation height.
v7 enforces new commission rate bounds:
- Minimum commission rate: 20% (previously variable)
- Maximum commission rate: 60%
Non-compliant validators will have their rates automatically adjusted at the upgrade height:
- Validators with a commission rate below 20% will be set to 20%
- Validators with a max commission rate below 60% will be set to 60%
No manual action is required, but validators should be aware of this change.
Horcrux is deprecated starting in v7. Future upgrades will require validator keys for fibre, which demands very low signing latency. Horcrux adds signing latency due to threshold signing and network round trips between cosigner nodes, which may be incompatible with upcoming latency requirements. Validators using horcrux should plan to migrate to a local signing setup.
v7 enforces a minimum min-retain-blocks value of 3000. This ensures nodes retain enough blocks for other nodes to sync from state sync snapshots. If min-retain-blocks in app.toml is set to a value between 1 and 2999, the node will log a warning and automatically override the value to 3000 on startup. Valid values:
0(default): retain all blocks (no pruning)1-2999: automatically overridden to 3000 with a log warning>= 3000: retain at least that many blocks
The mempool type field has been removed from new config.toml files because celestia-app only supports the CAT mempool. If your existing config.toml still contains a mempool type, it will be ignored and overridden to cat at startup with a warning. You can safely remove the type line from the [mempool] section of your config.toml.
v7 prevents direct fund transfers to module accounts via MsgSend or bank send. Module accounts can still receive funds through protocol mechanisms (e.g., escrow). The governance module account is exempt from this restriction.
x/forwarding (CIP-45):
Single-signature cross-chain transfers through Celestia via Hyperlane warp routes. Users send tokens to a deterministically derived forwarding address, and anyone can permissionlessly trigger forwarding to the committed destination.
MsgForward- Forwards tokens from a forwarding address to a committed destination via Hyperlane
See the x/forwarding README for details.
x/zkism:
Hyperlane Interchain Security Module (ISM) that authorizes Hyperlane message processing verified by SP1 Groth16 zero-knowledge proofs.
CreateInterchainSecurityModule- Create an ISM with initial state and verifier configurationUpdateInterchainSecurityModule- Verify a state transition proof and update ISM stateSubmitMessages- Verify a membership proof and authorize Hyperlane message IDs
See the x/zkism README for details.
v7 adds a new store key for the zkism module. This migration is handled automatically by the upgrade handler.
This section is specific to bumping from 32mb/6s in the v6 release to 128mb/6s. If you're upgrading from v5, please check the v6.0.0 first. And only then check this one.
After upgrading to 128mb/6s, specific validator hardware specifications are required to participate in consensus and propose blocks. Based on our validator survey, the following lists the CPUs that passed the benchmark and those that did not. If your CPU is not listed, please run the benchmark available tools/cpu_requirements.
Supported CPUs:
- AMD Ryzen 9 7950X - AMD Ryzen 9 7950X3D - AMD Ryzen 9 9900X - AMD Ryzen 7 PRO 8700GE - AMD Ryzen 7 3700X - AMD Ryzen 3900X - AMD 7600 - AMD 7700X - AMD 7900X - AMD Ryzen 7900 - AMD EPYC 4344P - AMD EPYC 4464P - AMD EPYC 4545P - AMD EPYC 4584PX - AMD EPYC 7313P - AMD EPYC 7452 - AMD EPYC 7543P 32C/64T - AMD EPYC 9124 - AMD EPYC 9454P - AMD EPYC 9555P - 13th Gen Intel Core i5-13500 - Core i7-1270P - Intel Xeon-E 2386GNOT supported CPUs:
- AMD Ryzen 9 5950X - AMD EPYC 7443P 24-Core - Intel Xeon Platinum 8474C - Intel Xeon Gold 6254 - Intel(R) Xeon(R) Silver 4210 - Intel Xeon E5-1620 - Intel Dual Xeon Silver 4116This release contains all the changes from CIP-042. Notably:
- Lowers the unbonding period to ~14 days
- Increases maximum block, square, and transaction size
- Removes the token filter for Hyperlane and IBC
- Privval Interface Extension for Arbitrary Message Signing
- Reduce issuance to 2.5% and increase minimum commission to 10%
v6 changes the hardware requirements for consensus nodes. Please ensure your consensus node meets these requirements.
Validators should build binaries in freshly created environments or download pre-built binaries from official releases. Many validators have experienced issues due to building binaries in environments with outdated dependencies, conflicting libraries, or stale build artifacts.
This release introduces a new message type that needs to be signed by KMS. If you use Horcrux or TmKMS, you must use these versions to participate in consensus. If you use an alternative KMS, please reach out.
Disclaimer: (KMS) are third-party software. Validators are responsible for ensuring their own KMS setup is correctly configured. An incorrect setup may result in double signing, which can lead to slashing. So, any error log should be thoroughly investigated, even if the KMS appears to be signing normally.
Validators must also ensure they maintain a fast and reliable setup. Future network upgrades will require low signing latency, so server colocation can be explored to achieve faster signatures.
Validators choosing to run KMS do so at their own risk.
For horcrux, use v3.3.3-celestia. All the setups and configs remain the same.
For TmKMS, use v0.15.0. All the setups and configs remain the same. Using a prior version will not allow you to propose blocks.
This release introduces a new block propagation reactor and configuration changes to accommodate the increased throughput. The relevant v6 configuration changes can be applied to existing config using the celestia-appd update-config command or by manually updating the config.toml and app.toml.
To modify your existing configs, the celestia-appd update-configs command can be used.
celestia-appd update-configthis uses version 6 and the default home (.celestia-app). Those can be changed or specified with flags as well.
celestia-appd update-config --app-version 6 --home ~/.celestia-appTo manually modify the configs, change the following values.
[rpc]
max_body_bytes = 436207616
[p2p]
send_rate = 25165824
recv_rate = 25165824
[mempool]
type = "cat"
max_tx_bytes = 8388608
ttl-duration = "0s"
ttl-num-blocks = 12
max-gossip-delay = "1m0s"
[consensus]
enable_legacy_block_prop = falseThis major upgrade is an expedited patch release, fixing the problem with failed IBC transfers caused by the incorrectly configured capability module. There should be no additional API breaking changes.
This expedited release will have no upgrade delay. The moment 5/6ths signal and the MsgTryUpgrade is successful, the network will upgrade to v5.
Node operators MUST upgrade their binary to this version prior to the v4 activation height. Node operators SHOULD NOT use cosmovisor to upgrade their binary.
Celestia-app v4.0.0 introduces support for a multiplexer that makes it easier for node operators to run a consensus node that can sync from genesis. The multiplexer contains an embedded celestia-app v3.x.x binary that will be used to sync the node from genesis. After the chain advances to app version v4, the multiplexer will stop routing requests to the embedded celestia-app v3.x.x binary and will instead route requests to the v4.x.x state machine. Binaries that are installed from source (via make install) will include support for the multiplexer. To install Celestia without the multiplexer, you can use the make install-standalone target. Note that the standalone binary will only be able to run on networks that have already upgraded to app version v4.
- The default ABCI client address is now
tcp://127.0.0.1:36658(configured via--proxy_appflag orproxy_appin config.toml). - The default ABCI server address is now
tcp://127.0.0.1:36658(configured via--addressflag).
These two configs must match in order for the multiplexer to work correctly. Please update your config.toml to account for the new default
-proxy_app = "tcp://127.0.0.1:26658"
+proxy_app = "tcp://127.0.0.1:36658"make install currently downloads a v3.x binary with only one custom build flag, ledger. If you use any additional custom build flags (i.e. pebbledb, rocksdb, badgerdb, cleveldb, boltdb), you will need to build the v3.x binary from source (with custom build tags) and include it in the app's embedded binary directory (by default: ~/.celestia-app/bin/). The embedded binary directory layout:
$ tree bin
bin
└── v3.10.2-mocha
├── celestia-appd
├── LICENSE
└── README.mdThe rpc.grpc_laddr config option is now required when running the celestia-app binary with the multiplexer. This option can be set via CLI flag --rpc.grpc_laddr tcp://127.0.0.1:9098 or in the config.toml:
[rpc]
# TCP or UNIX socket address for the gRPC server to listen on
# NOTE: This server only supports /broadcast_tx_commit
grpc_laddr = "tcp://127.0.0.1:9098"Celestia-app v4 uses IAVL v1 for better performance. When upgrading to v4, the migration happens lazily over time. If you'd like to avoid the lazy migration, you can perform a fresh state sync so that your node uses IAVL v1 exclusively.
The default addresses for the Cosmos SDK API server, GRPC server, and GRPC web server have changed from 0.0.0.0 to localhost. See cosmos-sdk#13778.
Celestia-app v4.0.0 includes significant state machine changes due to major dependency upgrades:
- Cosmos SDK v0.46.16 to v0.50.12
- IBC v6.2.2 to v8.7.0
- CometBFT v0.34.35 to v0.38.17
x/circuit Circuit Breaker Module (cosmos-sdk docs):
MsgAuthorizeCircuitBreaker- Grant circuit breaker permissionsMsgTripCircuitBreaker- Disable message executionMsgResetCircuitBreaker- Re-enable message execution
x/consensus Consensus Parameters Module (cosmos-sdk docs):
MsgUpdateParams- Update consensus parameters via governance (replaces CometBFT consensus param updates)
Hyperlane:
hyperlane/core- Cross-chain messaging infrastructurehyperlane/warp- Token bridging and routing
x/crisis Module - Removed in Cosmos SDK v0.50.x
x/capability Module - Removed in Cosmos SDK v0.50.x:
- IBC capability management integrated directly into IBC v8 modules
x/paramfilter Module - Celestia-specific module removed:
- Parameter filtering functionality replaced by circuit breaker
Parameter Management Migration:
- Generic parameter proposals deprecated in favor of module-specific
MsgUpdateParamsmessages - Consensus parameters moved from CometBFT to dedicated
x/consensusmodule - All modules now use module-specific parameter update messages instead of legacy
x/paramsproposals
IBC v6 to v8 Protocol Changes (v6 to v7, v7 to v8)
Import Changes:
- Add:
cosmossdk.io/x/circuit,cosmossdk.io/x/consensus - Remove:
x/capability,x/crisis,x/paramfilter - Update:
github.com/cosmos/ibc-go/v8(from v6)
API Breaking Changes (cosmos-sdk migration guide):
- Module keepers now accept
context.Contextinstead ofsdk.Context BeginBlock/EndBlocksignatures changed- Parameter updates require module-specific
MsgUpdateParamsmessages
Node operators MUST upgrade their binary to this version prior to the v3 activation height. Node operators SHOULD NOT use cosmovisor to upgrade their binary.
Consensus node operators must enable the BBR (Bottleneck Bandwidth and Round-trip propagation time) congestion control algorithm. See #3774. If using Linux in Docker, Kubernetes, a VM or bare-metal, this can be done by calling
make enable-bbrcommand on the host machine.
Consensus node operators should update several configurations for v3. This can be done by calling:
make configure-v3If the config file is not in the default spot, it can be provided using:
make configure-v3 CONFIG_FILE=path/to/other/config.tomlAlternatively, the configurations can be changed manually. This involves updating the mempool TTLs and the send and receive rates.
- Configuring Bandwidth Settings
- Update
recv_rateandsend_ratein your TOML config file to 10MiB (10485760)
- Update
- Extend TTLs
- Update
ttl-num-blocksin your TOML config file to 12
- Update
- Upgrades now use the
x/signalmodule to coordinate the network to an upgrade height.
The following command can be used, if you are a validator in the active set, to signal to upgrade to v3:
celestia-appd tx signal signal 3 <plus transaction flags>You can track the tally of signalling by validators using the following query
celestia-appd query signal tally 3Once 5/6+ of the voting power have signalled, the upgrade will be ready. There is a hard coded delay between confirmation of the upgrade and execution to the new state machine.
To view the upcoming upgrade height use the following query:
celestia-appd query signal upgrade
> An upgrade is pending to app version 3 at height 2348907.For more information refer to the module docs
- Namespace and share constants in the
appconstspackage were moved to celestiaorg/go-square. See #3765.
If you are a consensus node operator, please follow the communication channels listed under network upgrades to learn when this release is recommended for each network (e.g. Mocha, Mainnet Beta).
Consensus node operators are expected to upgrade to this release prior to the Lemongrass hardfork if they intend to continue participating in the network. The command used to start the consensus node or validator node will accept an additional --v2-upgrade-height flag. See this table for upgrade heights for each network. Node operators SHOULD NOT use cosmovisor to upgrade their binary.
Consensus node operators should enable the BBR (Bottleneck Bandwidth and Round-trip propagation time) congestion control algorithm. See #3812.
If you are a library consumer, a number of the Go APIs have changed since celestia-app v1.x.x. Some of the notable changes are:
- Code pertaining to the original data square was extracted to celestiaorg/go-square.
- celestia-app v1.x had a shares package. celestia-app v2.x uses go-square/shares
- celestia-app v1.x had a blob.types package with
CreateCommitmentfunction. celestia-app v2.x usesCreateCommitmentfunction from the go-square/inclusion.
- celestia-app v1.x had a lot of functionality included in the signer. celestia-app v2.x splits a txClient from the signer. See #3433.