Midnight Indexer v4.4.101 release notes
For the complete documentation index, see llms.txt
- Version: v4.4.101
- Date: November 6, 2026
- Paired node: 2.1.101
- Paired ledger: 9.1.0.1
- Environment: Mainnet, Preview
High-level summary
Midnight Indexer 4.4.101 is the indexer line for the ledger 9 network upgrade. It indexes the chain across the switch from ledger 8 to ledger 9, so it reads both ledger 8 and ledger 9 blocks, and it follows the chain across the upgrade by itself.
Mainnet moves to ledger 9 at the upgrade. Preview was reset on 6 November 2026 as a new chain that runs ledger 9, and it also runs indexer 4.4.101. Preprod stays on ledger 8 and the 4.3.x indexer line until a later upgrade.
Audience
This release note is relevant for:
- Operators who run their own Midnight Indexer against Mainnet or Preview
- Wallet and DApp developers who query a self-hosted indexer on Mainnet or Preview
- Applications that subscribe to contract actions through the indexer API
If you use a hosted Mainnet indexer, you don't need to re-index. Check with your provider that it runs 4.4.101.
What changed
- Indexes the ledger 9 network upgrade on Mainnet, reading ledger 8 blocks before the switch and ledger 9 blocks after it.
- Stores contract state as ledger-arena keys rather than blobs. This is a breaking change and requires a re-index.
- Serves post-upgrade state for contracts that no transaction has touched since the switch. Ledger 9 clients could not decode the earlier state of these contracts.
- Reports DUST capacity correctly after the DUST reset at the upgrade.
- Indexes events that contracts emit, so you can observe them through the indexer API.
- Exposes the protocol version on all progress updates.
- Reports zero fees for failed transactions.
Breaking changes
Re-index from genesis
The 4.4.x line stores contract state in a new layout and needs a database built by 4.4.x. You can't upgrade an existing 4.3.x database in place. See Upgrade notes.
Contract action subscriptions start at their offset
A contract action subscription opened without an offset now delivers only new actions. It no longer replays the contract's history.
To replay history, pass an explicit offset, such as height 0. Midnight.js 5.0.0 does this for you. Midnight.js 4.x does not, so it receives no history.
Contract state can be newer than its transaction
For a contract that no transaction has touched since the upgrade, the indexer serves the contract's state in the ledger 9 encoding. That state can be in a newer encoding than the protocol version of the transaction that last wrote it. In the 4.4.0 release candidates, each contract action carries a stateAt field that names the block the state belongs to, and clients decode the state by stateAt.protocolVersion. The change adds the contract_action_translations database migration.
Upgrade notes
You must run a full re-index from genesis with 4.4.101. Wipe the indexer database and the ledger database, and re-index them together. Finish the re-index before the ledger 9 network upgrade, so your indexer is ready when Mainnet switches.
- On Preview, there is nothing to re-index from the old chain. Start 4.4.101 with an empty database against the new chain.
- Moving from 4.3.800 to 4.4.101 is not an upgrade path. The 4.3.x and 4.4.x lines can't share a database.
- If your database already indexes blocks past the upgrade with an earlier 4.4 build, re-index it so it serves the correct contract state after the switch.
- Sync from a local archive node if you can. It's much faster than a public RPC endpoint.
- Wallet SDK 2.0.0 needs indexer 4.4.101. Wallet SDK 1.x can't transact on Mainnet after the upgrade.
For the full list of what changes at the upgrade, see the ledger 9 upgrade page.
Links and references
- GitHub release: v4.4.101 on GitHub. The public release follows in the next few days.
- Ledger 9 upgrade: Ledger 9 network upgrade
- API reference: Midnight Indexer API v4
- Docker images: Chain Indexer, Indexer API, Wallet Indexer, Indexer Standalone, SPO Indexer