> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monad.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

We provide several changelogs:

* [Releases](/developer-essentials/changelog/releases): a list of all notable releases. Some releases only apply to one network.
* [Testnet Changelog](/developer-essentials/changelog/testnet): only changes made to `testnet`

## How changes happen in Monad

[Revisions](#revisions) are behavioral changes to the protocol (as contrasted with efficiency
improvements to the client, which don't impact correctness). Revisions are referred to in other
blockchains as hard forks.

Monad tracks revisions with a counter. The client code typically activates revisions at a future
timestamp so that validators can come to agreement about whether to accept the revision and
upgrade ahead of time. When the future timestamp is hit, a supermajority of the validators have
already upgraded, and they update their behavior in sync, allowing the chain to continue without
any pauses.

There are multiple networks (owing to the existence of several test networks). Each network
has a different schedule for when each Revision is adopted. These schedules are tracked in
[ChainConfigs](#chainconfigs).

The node software is under active development, resulting in occasional [releases](/developer-essentials/changelog/releases).
Releases are rolled out to different networks at different schedules, and not all releases apply
to all networks.

### Revisions

Monad revisions are major behavioral changes to the protocol, as defined in
[`revision.h`](https://github.com/category-labs/monad/blob/main/category/vm/evm/monad/revision.h).

<div class="mintlify-table-wrapper">
  <table class="mintlify-table">
    <thead>
      <tr>
        <th>Revision</th>
        <th>Notes</th>
      </tr>
    </thead>

    <tbody>
      <tr>
        <td><code>MONAD\_NINE</code></td>

        <td>
          <ul>
            <li>\[[MIP-3](https://github.com/monad-crypto/MIPs/blob/main/MIPS/MIP-3.md)] Linear memory implementation</li>
            <li>\[[MIP-4](https://github.com/monad-crypto/MIPs/blob/main/MIPS/MIP-4.md)] Reserve balance precompile</li>
            <li>\[[MIP-5](https://github.com/monad-crypto/MIPs/blob/main/MIPS/MIP-5.md)] Activate Osaka fork (CLZ opcode)</li>
          </ul>
        </td>
      </tr>

      <tr>
        <td><code>MONAD\_EIGHT</code></td>

        <td>
          <ul>
            <li>[Reserve balance](/developer-essentials/reserve-balance) checks now use final state code hash</li>
            <li>\[Staking] Reduce pagination on staking precompile inverse mappings (`precompile_get_delegations()` and `precompile_get_delegators()`) from 100 to 50</li>
          </ul>
        </td>
      </tr>

      <tr>
        <td><code>MONAD\_SEVEN</code></td>

        <td>
          <ul>
            <li>[Opcode pricing](/developer-essentials/opcode-pricing) implemented</li>
          </ul>
        </td>
      </tr>

      <tr>
        <td><code>MONAD\_SIX</code></td>

        <td>
          <ul>
            <li>EIP-2935 bugfix</li>
          </ul>
        </td>
      </tr>

      <tr>
        <td><code>MONAD\_FIVE</code></td>

        <td>
          <ul>
            <li>\[Staking] Lower `ACTIVE_VALIDATOR_STAKE` from `25,000,000 MON` to `10,000,000 MON`</li>
          </ul>
        </td>
      </tr>

      <tr>
        <td><code>MONAD\_FOUR</code></td>

        <td>
          <ul>
            <li>[Staking](/monad-arch/consensus/staking) goes live with the following parameters:<ul><li>`ACTIVE_VALIDATOR_STAKE = 25,000,000 MON`</li><li>`MIN_AUTH_ADDRESS_STAKE = 100,000 MON`</li></ul></li>
            <li>[Reserve balance](/developer-essentials/reserve-balance)</li>
            <li> [EIP-7702](/developer-essentials/eip-7702)</li>
            <li>[Dynamic base fee](/developer-essentials/gas-pricing)</li>
            <li>Min base fee [raised](/developer-essentials/gas-pricing) (50 MON-gwei -> 100 MON-gwei)</li>
            <li>[Per-transaction gas limit](/developer-essentials/gas-pricing) of 30M gas</li>
            <li>Block gas limit (150M -> 200M), i.e. gas per second 375Mgps -> 500Mgps</li>
            <li>Enable [EIP-2935](https://eips.ethereum.org/EIPS/eip-2935) (extended historical block hashes)</li>
            <li>Enable [EIP-7951](https://eips.ethereum.org/EIPS/eip-7951) (P256VERIFY precompile)</li>
            <li>Enable [EIP-2537](https://eips.ethereum.org/EIPS/eip-2537) (BLS12-381 precompiles)</li>
            <li>Raise max contract size for `CREATE`/`CREATE2` to 128 kb</li>
          </ul>
        </td>
      </tr>

      <tr>
        <td><code>MONAD\_THREE</code></td>
        <td><ul><li>[MonadBFT](/monad-arch/consensus/monad-bft) implemented</li> <li>Block time (500ms -> 400ms), i.e. gas per second 300Mgps -> 375Mgps</li></ul></td>
      </tr>

      <tr>
        <td><code>MONAD\_TWO</code></td>
        <td><ul><li>Raise max contract size for plain contract creation transactions (24.5kb -> 128 kb)</li></ul></td>
      </tr>

      <tr>
        <td><code>MONAD\_ONE</code></td>
        <td><ul><li>Block time (1s -> 500ms)</li> <li>Block gas limit (300M -> 150M); gas per second unchanged at 300Mgps</li> <li>Transactions [charged by gas limit](/developer-essentials/gas-pricing)</li></ul></td>
      </tr>
    </tbody>
  </table>
</div>

### ChainConfigs

Each ChainConfig describes one network, including its history of upgrading to different Revisions.
The ChainConfigs are defined in
[`monad-chain-config/src/lib.rs`](https://github.com/category-labs/monad-bft/blob/master/monad-chain-config/src/lib.rs).

| ChainConfig | Notes                                                                    |
| ----------- | ------------------------------------------------------------------------ |
| `mainnet`   | Chain id 143                                                             |
| `testnet`   | Chain id 10143; see [changelog](/developer-essentials/changelog/testnet) |
| `devnet`    | Chain id 20143                                                           |
