Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 2 additions & 8 deletions docs/network-upgrades/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,9 @@ keywords:

Mina Protocol evolves through network upgrades (hard forks). Each upgrade introduces new protocol features, performance improvements, or governance changes. Hard forks are not backward compatible — all node operators must upgrade before the fork activates.

:::tip Mesa preflight hard fork completed
:::tip Mesa preflight update

The Mesa preflight network hard-forked at **2026-04-27 13:00 UTC**. The post-fork chain is now running the Mesa release **`4.0.0-preflight-3f038cb`**, which raises the **transaction protocol version to 5.0.0**.

Operators must run **`4.0.0-preflight-3f038cb`** to remain on the preflight network. Earlier builds — including the stop-slot release `4.0.0-preflight-stop-2967b39` — are no longer compatible with the post-fork chain.

zkApp developers must update to **`o1js@3.0.0-mesa.698ca`**, which targets transaction protocol v5.0.0; earlier o1js releases will produce transactions that the post-fork network rejects.

See [Preflight Network](/network-upgrades/mesa/preflight-network) for the full upgrade path.
The Mesa preflight network hard fork completed on **2026-04-27 13:00 UTC**. See [Preflight Network](/network-upgrades/mesa/preflight-network) for the current build versions and upgrade path.

:::

Expand Down
45 changes: 35 additions & 10 deletions docs/network-upgrades/mesa/archive-upgrade.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,51 @@ keywords:
- archive node
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

# Archive Upgrade

This guide describes the general procedure for upgrading a Mina archive database from Berkeley to Mesa. The same steps apply to every Mesa deployment (preflight, devnet, mainnet) — only the archive package version differs.

:::tip Mesa preflight hard fork completed

The Mesa preflight network hard-forked at **2026-04-27 13:00 UTC**. The post-fork chain runs **`4.0.0-preflight-3f038cb`**, which raises the **transaction protocol version to 5.0.0**. Pre-fork builds — including the stop-slot release `4.0.0-preflight-stop-2967b39` — are no longer compatible.
:::tip Preflight-specific version info

When upgrading a preflight archive database, install the matching `mina-archive-mesa=4.0.0-preflight-3f038cb` package so the archive node speaks the new transaction protocol.
The Mesa preflight network has already forked. See [Preflight Network](/network-upgrades/mesa/preflight-network) for the current build versions and transaction protocol details.

:::

:::info Choosing the Mesa archive version
<Tabs groupId="network">
<TabItem value="preflight" label="Preflight" default>

The preflight archive version is **`4.0.0-preflight-3f038cb`** (post-hard-fork; transaction protocol v5.0.0). Docker tag: `gcr.io/o1labs-192920/mina-archive:4.0.0-preflight-3f038cb-bookworm-mesa`. See [Preflight Network](./preflight-network) for the full release matrix.

```bash
# Substitute this version wherever <MESA_VERSION> appears below
MESA_VERSION=4.0.0-preflight-3f038cb
```

The commands below use `<MESA_VERSION>` as a placeholder for the archive build you want to install. Substitute the tag that matches your target network:
</TabItem>
<TabItem value="devnet" label="Devnet">

- **Preflight network** — use `4.0.0-preflight-3f038cb` (post-hard-fork; transaction protocol v5.0.0). See [Preflight Network](./preflight-network) for the full release matrix.
- **Devnet / mainnet** — use the Mesa release tag published for that network when it is announced.
The devnet Mesa archive version will be published when the devnet fork is scheduled. Check [Mina releases](https://github.com/MinaProtocol/mina/releases?q=mesa) for the latest tag.

:::
```bash
# Substitute this version wherever <MESA_VERSION> appears below
MESA_VERSION=<devnet-mesa-tag>
```

</TabItem>
<TabItem value="mainnet" label="Mainnet">

The mainnet Mesa archive version will be published in the Mesa release announcement. Check [Mina releases](https://github.com/MinaProtocol/mina/releases?q=mesa) for the `4.x.x` tag.

```bash
# Substitute this version wherever <MESA_VERSION> appears below
MESA_VERSION=<mainnet-mesa-tag>
```

</TabItem>
</Tabs>

To successfully upgrade the archive database to Mesa, you must ensure that your environment meets the foundational requirements.

Expand All @@ -43,7 +68,7 @@ To successfully upgrade the archive database to Mesa, you must ensure that your

## Archive database

One of the most obvious prerequisites is a Mainnet database. If you don't have an existing database with Devnet/Mainnet archive data,
One of the most obvious prerequisites is an archive database with Berkeley-era data. If you don't have an existing database with Devnet or Mainnet archive data,
you can always download it from the O1Labs Google Cloud bucket.

## Upgrade process
Expand Down
44 changes: 22 additions & 22 deletions docs/network-upgrades/mesa/fork-schedule.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,14 @@ The relevant moments are:
The mainnet Mesa fork schedule has not been announced. The values below are placeholders. They will be filled in once o1Labs publishes the stop-slot release and the Mesa genesis timestamp.
:::

| Field | Value |
|---|---|
| Pre-fork (stop-slot) release | _TBD — will be a `3.x.x` tag_ |
| Mesa release | _TBD — will be a `4.x.x` tag_ |
| `stop-transaction-slot` (`slot_tx_end`) | _TBD_ |
| `stop-network-slot` (`slot_chain_end`) | _TBD_ |
| Mesa genesis timestamp (UTC) | _TBD — exactly 3 hours after the stop-network-slot_ |
| State Finalization window | Exactly 100 slots = exactly 5 hours between `slot_tx_end` and `slot_chain_end` |
| Field | Value |
| --------------------------------------- | ------------------------------------------------------------------------------ |
| Pre-fork (stop-slot) release | _TBD — will be a `3.x.x` tag_ |
| Mesa release | _TBD — will be a `4.x.x` tag_ |
| `stop-transaction-slot` (`slot_tx_end`) | _TBD_ |
| `stop-network-slot` (`slot_chain_end`) | _TBD_ |
| Mesa genesis timestamp (UTC) | _TBD — exactly 3 hours after the stop-network-slot_ |
| State Finalization window | Exactly 100 slots = exactly 5 hours between `slot_tx_end` and `slot_chain_end` |

Subscribe to the [MinaProtocol/mina releases](https://github.com/MinaProtocol/mina/releases?q=mesa) and watch the [Mina Foundation announcements channel](https://discord.gg/minaprotocol) for the schedule publication.

Expand All @@ -46,26 +46,26 @@ Subscribe to the [MinaProtocol/mina releases](https://github.com/MinaProtocol/mi
Devnet typically forks ahead of mainnet to give integrators a final dress rehearsal. Schedule will be posted here once announced.
:::

| Field | Value |
|---|---|
| Pre-fork (stop-slot) release | _TBD_ |
| Mesa release | _TBD_ |
| Field | Value |
| --------------------------------------- | ----- |
| Pre-fork (stop-slot) release | _TBD_ |
| Mesa release | _TBD_ |
| `stop-transaction-slot` (`slot_tx_end`) | _TBD_ |
| `stop-network-slot` (`slot_chain_end`) | _TBD_ |
| Mesa genesis timestamp (UTC) | _TBD_ |
| `stop-network-slot` (`slot_chain_end`) | _TBD_ |
| Mesa genesis timestamp (UTC) | _TBD_ |

## Preflight

The Mesa preflight network has already forked. The numbers below are historical; they will not change.

| Field | Value |
|---|---|
| Pre-fork release | `4.0.0-preflight1-b649c79` |
| Stop-slot release | `4.0.0-preflight-stop-2967b39` |
| Mesa release | `4.0.0-preflight-3f038cb` |
| Mesa hard-fork time (UTC) | 2026-04-27 13:00 |
| Transaction protocol version after fork | 5.0.0 |
| o1js version targeting protocol v5.0.0 | `o1js@3.0.0-mesa.698ca` |
| Field | Value |
| --------------------------------------- | ------------------------------ |
| Pre-fork release | `4.0.0-preflight1-b649c79` |
| Stop-slot release | `4.0.0-preflight-stop-2967b39` |
| Mesa release | `4.0.0-preflight-3f038cb` |
| Mesa hard-fork time (UTC) | 2026-04-27 13:00 |
| Transaction protocol version after fork | 5.0.0 |
| o1js version targeting protocol v5.0.0 | `o1js@3.0.0-mesa.698ca` |

For the full preflight context, see [Preflight Network](/network-upgrades/mesa/preflight-network).

Expand Down
29 changes: 20 additions & 9 deletions docs/network-upgrades/mesa/glossary.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -120,23 +120,34 @@ The official ledger checkpoint published with the [Mesa release](#mesa-release).

## Mesa-Specific Changes and Conventions

Mesa bundles four Mina Improvement Proposals (MIPs) that change protocol behavior. Full descriptions live in the [Mesa overview](/network-upgrades/mesa#what-mesa-introduces); the brief definitions below link each to its canonical spec.
Mesa bundles four Mina Improvement Proposals (MIPs) that change protocol behavior. The canonical MIP specs live in the [MinaProtocol/MIPs](https://github.com/MinaProtocol/MIPs/tree/main/MIPS) repository; each section below links to the spec for the proposal it describes.

### Faster Blocks
### Faster Blocks — [MIP6](https://github.com/MinaProtocol/MIPs/blob/main/MIPS/mip-0006-slot-reduction-90s.md)

Mesa reduces the slot time to 90 seconds and unsets the default zkApp soft limit (previously 24 commands per block). Defined in [MIP6](https://github.com/MinaProtocol/MIPs/blob/main/MIPS/mip-0006-slot-reduction-90s.md).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We may need to add that we lowered zkApp soft limit from 24 to 12.

Mesa halves Mina's slot time from **180 seconds to 90 seconds**, doubling block production frequency. To keep the long-term token emission rate flat, the per-block **coinbase reward is also halved** (from 720 MINA to 360 MINA). The total Mina supplied per epoch is unchanged.

### Expanded zkApp State
Several second-order consequences flow from the slot-time change:

Mesa increases the on-chain state available to zkApps from 8 fields (indexes `0–7`) to 32 fields (indexes `0–31`) per account. This applies to both the `zkapp_states` and `zkapp_states_nullable` database tables. Defined in [MIP7](https://github.com/MinaProtocol/MIPs/blob/main/MIPS/mip-0007-increase-state-size-limit.md). See [Archive Node Schema Changes](/network-upgrades/mesa/appendix/archive-node-schema-changes) for the SQL diff.
- **Epoch duration halves** from ~14.9 days to ~7.4 days. Scripts and operational procedures tied to epoch boundaries (delegation cooldown, automated payouts, monitoring dashboards) trigger about twice as often.
- **Vesting schedules on active vesting accounts are automatically migrated** during the hard fork so they continue unlocking on the same real-world cadence. No operator action is required.
- **The zkApp per-block command soft limit is lowered** from 24 to 12, ensuring SNARK workers can keep up with the faster 90-second block cadence. This change is delivered via soft fork before Mesa.
- **SNARK coordinators handling maximum-cost zkApp transactions should deploy at least 4 workers** (≈4 CPU cores each) to keep up with the new 90-second slot timing. A prerequisite SNARK-worker parallelization is delivered via soft fork before Mesa.

### Larger Events and Actions
### Expanded zkApp State — [MIP7](https://github.com/MinaProtocol/MIPs/blob/main/MIPS/mip-0007-increase-state-size-limit.md)

Mesa raises the per-transaction limit on events and actions from 100 to 1024 field elements each, and removes the previous 16-field-element cap per individual event or action. Defined in [MIP8](https://github.com/MinaProtocol/MIPs/blob/main/MIPS/mip-0008-increase-events-actions-limit.md).
Mesa raises the on-chain state available to a zkApp account from **8 field elements (indexes `0–7`) to 32 field elements (indexes `0–31`)**. zkApps can now store roughly four times more data directly on chain without off-chain workarounds. This applies to both the `zkapp_states` and `zkapp_states_nullable` database tables. See [Archive Node Schema Changes](/network-upgrades/mesa/appendix/archive-node-schema-changes) for the SQL diff.

### Larger zkApp Transactions
### Larger Events and Actions — [MIP8](https://github.com/MinaProtocol/MIPs/blob/main/MIPS/mip-0008-increase-events-actions-limit.md)

Mesa roughly triples the maximum number of account updates a single zkApp transaction can contain. Defined in [MIP9](https://github.com/MinaProtocol/MIPs/blob/main/MIPS/mip-0009-increase-zkapp-account-update-limit.md).
Mesa raises the per-transaction limit on events and actions from **100 field elements to 1024 field elements** for each. The previous cap of 16 field elements per individual event or action is also removed. This makes events and actions a viable channel for richer on-chain signaling and larger off-chain dispatch payloads in a single transaction.

Mostly relevant to zkApp developers — node operators do not need to act on this change, but block producers will validate against the new limits automatically after the fork.

### Larger zkApp Transactions — [MIP9](https://github.com/MinaProtocol/MIPs/blob/main/MIPS/mip-0009-increase-zkapp-account-update-limit.md)

Mesa **roughly triples** the maximum number of account updates a single zkApp transaction can contain. The previous weighted-cost formula (`10.26·np + 10.08·n2 + 9.14·n1 < 69.45`) is replaced with a simpler `np + n2 + n1 ≤ 16` rule that admits any balanced binary proof tree of height 4.

This depends on the SNARK-worker parallelization shipped as a prerequisite for [MIP6](https://github.com/MinaProtocol/MIPs/blob/main/MIPS/mip-0006-slot-reduction-90s.md) — without it, processing maximum-size transactions inside a 90-second slot would not be feasible.

### Mesa Package Naming Convention

Expand Down
Loading
Loading