> For the complete documentation index, see [llms.txt](https://docs.gravity.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.gravity.xyz/gravity-networks/testnet-hardforks.md).

# Gravity Longevity Testnet Hardforks

Gravity Longevity Testnet (L1) hardfork schedule, how activations are stored, and the node version needed to follow the live chain.

Longevity Testnet (chain ID `7771625`) activation times live in each node's `genesis.json` under `config.<name>` (for example `pragueTime`, `alphaTime`). Rolling upgrades append those fields. They are **not** compiled into `gravity_node` the way [Mainnet hardforks](/gravity-networks/mainnet-hardforks.md) are.

A public full node must use:

1. a `genesis.json` / `waypoint.txt` pair that matches the live chain identity and hardfork schedule; and
2. a `gravity_node` release that implements every fork already activated on testnet.

## Current required version

Testnet operators are on [v1.10.1-testnet](https://github.com/Galxe/gravity-sdk/releases/tag/v1.10.1-testnet) (or newer) after the TestnetOwnerFix activation. Build or pull that tag before syncing a new PFN to the live tip.

```bash
docker pull ghcr.io/galxe/gravity_node:v1.10.1-testnet
```

Canonical artifacts:

* Genesis / waypoint: [`gravity-sdk/genesis/testnet`](https://github.com/Galxe/gravity-sdk/tree/main/genesis/testnet)
* Network overview: [Gravity Longevity Testnet (L1)](/gravity-networks/l1-longevity-testnet.md)
* Deploy a PFN: [binary](/gravity-networks/run-a-testnet-pfn.md) · [Docker](/gravity-networks/run-a-testnet-pfn-with-docker.md)

## Schedule

Newest first. Times are taken from live `debug_chainConfig` and match the recorded upgrade plans under `mono-grav/docs/testnet/upgrades/`. Rows other than TestnetOwnerFix have already activated; TestnetOwnerFix is scheduled.

| Hardfork                    | Activation (UTC)    | Unix         | First release used on testnet                                                                                    |
| --------------------------- | ------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------- |
| TestnetOwnerFix (scheduled) | 2026-09-04 03:00:00 | `1788490800` | [v1.10.1-testnet](https://github.com/Galxe/gravity-sdk/releases/tag/v1.10.1-testnet)                             |
| Gamma                       | 2026-08-19 03:00:00 | `1787108400` | [v1.10.0-pre](https://github.com/Galxe/gravity-sdk/releases/tag/v1.10.0-pre)                                     |
| Beta + Osaka                | 2026-08-04 03:00:00 | `1785812400` | [v1.9.0](https://github.com/Galxe/gravity-sdk/releases/tag/v1.9.0)                                               |
| Alpha                       | 2026-07-06 09:00:00 | `1783328400` | live genesis field (`alphaTime`; no archived upgrade JSON)                                                       |
| Prague                      | 2026-06-08 09:04:02 | `1780909442` | [`v1.6.3`](https://github.com/Galxe/gravity-sdk/tree/v1.6.3) (upgrade artifact labeled `gravity-mainnet-v1.6.3`) |

Beijing (UTC+8) equivalents: TestnetOwnerFix 11:00, Gamma 11:00, Beta/Osaka 11:00, Alpha 17:00, Prague 17:04:02 on the same calendar dates.

## Testnet vs mainnet

|                      | Longevity Testnet                  | Mainnet                                                     |
| -------------------- | ---------------------------------- | ----------------------------------------------------------- |
| Chain ID             | `7771625`                          | `127001`                                                    |
| Where times live     | `genesis.json` `config.*` fields   | compiled into `gravity_node`                                |
| Editing genesis      | updates the schedule for that node | does not override the binary                                |
| Public schedule page | this page                          | [Mainnet hardforks](/gravity-networks/mainnet-hardforks.md) |

Do not copy mainnet unix timestamps onto testnet (or the reverse). The two networks activate the same fork names on different clocks.

## If you miss a hardfork

A node on older rules computes a different execution hash once the network has moved on. The first mismatched block stops the process. RPC height stops increasing. This is fail-stop: the node does not keep serving a private fork.

Search logs for:

```
commit_info mismatch
Block hash mismatch
assertion `left == right` failed
```

There is no dedicated "hardfork missed" message.

Recovery for a public full node is usually: install a current release, load a genesis that includes the live hardfork fields, then warm-start from a [testnet data snapshot](https://storage.googleapis.com/storage/v1/b/gravity-public-bucket/o?prefix=gravity-testnet-data/\&fields=items\(name,size,updated\)) instead of replaying from block zero.

## See also

* [Gravity Longevity Testnet (L1)](/gravity-networks/l1-longevity-testnet.md)
* [Run a Gravity Testnet Public Full Node](/gravity-networks/run-a-testnet-pfn.md)
* [Run a Gravity Testnet Public Full Node With Docker](/gravity-networks/run-a-testnet-pfn-with-docker.md)
* [Gravity Mainnet Hardforks](/gravity-networks/mainnet-hardforks.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.gravity.xyz/gravity-networks/testnet-hardforks.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
