WIP feat(deployments): gnoland-1.x hardfork content#5376
Open
moul wants to merge 6 commits into
Open
Conversation
Collaborator
🛠 PR Checks SummaryAll Automated Checks passed. ✅ Manual Checks (for Reviewers):
Read More🤖 This bot helps streamline PR reviews by verifying automated checks and providing guidance for contributors and reviewers. ✅ Automated Checks (for Contributors):No automated checks match this pull request. ☑️ Contributor Actions:
☑️ Reviewer Actions:
📚 Resources:Debug
|
This was referenced Mar 27, 2026
Closed
moul
added a commit
that referenced
this pull request
Apr 7, 2026
…es (#5334) ## Summary Adds a halt height mechanism for coordinated chain upgrades. The node stops after committing the specified block height. ### How to set it ```bash gnoland config set halt_height 352922 ``` Or edit `config.toml` directly: ```toml halt_height = 352922 ``` ### How it works 1. After `finalizeCommit`, consensus checks if `height >= halt_height` 2. If so, calls `osm.Kill()` for a graceful shutdown 3. The check is at the consensus level (not ABCI), following the same pattern as `WithEarlyStart` ### Scope and future direction This is a **temporary coordination tool** for the current chain upgrade. For the gnoland1 → gnoland-1 hard fork, validators set `halt_height` in their config, all nodes stop at the same block, then validators swap binary + config and restart. After the upgrade, the proper mechanism will be **GovDAO-based halting** (#5368), which adds: - On-chain `halt_height` param set via governance proposal (no manual config needed) - `halt_min_version` — prevents old binaries from restarting after halt - Version guard at startup so validators can't accidentally run the wrong binary Once #5368 is merged and active, `halt_height` in config becomes a **node operator tool** (e.g., "stop my node at height X for maintenance") rather than a coordination mechanism. Coordination should happen through governance. ### No CLI flag — config only Per @tbruyelle's suggestion, there's no `--halt-height` CLI flag. Config file is the single source of truth. This avoids the risk of validators missing the flag in duplicated command setups across their infrastructure. ### Related - #5368 — GovDAO-based halt height + version guard (Phase 2, replaces this for coordination) - #5376 — gnoland-1 chain config - #5411 — chain upgrade genesis replay <details> <summary>Contributors' checklist</summary> - [x] Added new tests, or not needed, or not feasible - [x] Provided an example (e.g. screenshot) to aid review or the PR is self-explanatory - [x] Updated the official documentation or not needed - [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message was included in the description - [x] Added `benchmarks` label to the PR or not needed </details>
moul
added a commit
that referenced
this pull request
Apr 7, 2026
…es (#5334) ## Summary Adds a halt height mechanism for coordinated chain upgrades. The node stops after committing the specified block height. ### How to set it ```bash gnoland config set halt_height 352922 ``` Or edit `config.toml` directly: ```toml halt_height = 352922 ``` ### How it works 1. After `finalizeCommit`, consensus checks if `height >= halt_height` 2. If so, calls `osm.Kill()` for a graceful shutdown 3. The check is at the consensus level (not ABCI), following the same pattern as `WithEarlyStart` ### Scope and future direction This is a **temporary coordination tool** for the current chain upgrade. For the gnoland1 → gnoland-1 hard fork, validators set `halt_height` in their config, all nodes stop at the same block, then validators swap binary + config and restart. After the upgrade, the proper mechanism will be **GovDAO-based halting** (#5368), which adds: - On-chain `halt_height` param set via governance proposal (no manual config needed) - `halt_min_version` — prevents old binaries from restarting after halt - Version guard at startup so validators can't accidentally run the wrong binary Once #5368 is merged and active, `halt_height` in config becomes a **node operator tool** (e.g., "stop my node at height X for maintenance") rather than a coordination mechanism. Coordination should happen through governance. ### No CLI flag — config only Per @tbruyelle's suggestion, there's no `--halt-height` CLI flag. Config file is the single source of truth. This avoids the risk of validators missing the flag in duplicated command setups across their infrastructure. ### Related - #5368 — GovDAO-based halt height + version guard (Phase 2, replaces this for coordination) - #5376 — gnoland-1 chain config - #5411 — chain upgrade genesis replay <details> <summary>Contributors' checklist</summary> - [x] Added new tests, or not needed, or not feasible - [x] Provided an example (e.g. screenshot) to aid review or the PR is self-explanatory - [x] Updated the official documentation or not needed - [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message was included in the description - [x] Added `benchmarks` label to the PR or not needed </details>
Prepares the repository for the gnoland1 → gnoland-1 hard fork:
- Add misc/deployments/gnoland-1/ with:
- migrate-from-gnoland1.sh: placeholder with a detailed TODO covering
halt verification, state export, migration transforms (r/sys/params,
r/gnops/valopers, namereg, gas params), genesis assembly, verification,
and restart coordination. Exits with an error until implemented.
- config.toml: copy of gnoland1 config with meter_name=gnoland-1 and
peer/seed addresses reset (to be filled post-fork).
- govdao-scripts/: copies of gnoland1 scripts with CHAIN_ID=gnoland-1.
- README.md: upgrade workflow, what changed, and ⚠️ migration TODO warning.
- Update docs:
- docs/resources/gnoland-networks.md: Betanet chain ID gnoland1 → gnoland-1
- docs/resources/gas-fees.md: update --chainid example
- docs/users/explore-with-gnoweb.md: update Betanet chain ID reference
The migration script is the critical missing piece — the hard fork cannot
happen until it is written and dry-run on test12.
Generated with [Claude Code](https://claude.com/claude-code)
via [Happy](https://happy.engineering)
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
cb42f2b to
edfc584
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
aeddi
pushed a commit
that referenced
this pull request
Apr 9, 2026
…es (#5334) ## Summary Adds a halt height mechanism for coordinated chain upgrades. The node stops after committing the specified block height. ### How to set it ```bash gnoland config set halt_height 352922 ``` Or edit `config.toml` directly: ```toml halt_height = 352922 ``` ### How it works 1. After `finalizeCommit`, consensus checks if `height >= halt_height` 2. If so, calls `osm.Kill()` for a graceful shutdown 3. The check is at the consensus level (not ABCI), following the same pattern as `WithEarlyStart` ### Scope and future direction This is a **temporary coordination tool** for the current chain upgrade. For the gnoland1 → gnoland-1 hard fork, validators set `halt_height` in their config, all nodes stop at the same block, then validators swap binary + config and restart. After the upgrade, the proper mechanism will be **GovDAO-based halting** (#5368), which adds: - On-chain `halt_height` param set via governance proposal (no manual config needed) - `halt_min_version` — prevents old binaries from restarting after halt - Version guard at startup so validators can't accidentally run the wrong binary Once #5368 is merged and active, `halt_height` in config becomes a **node operator tool** (e.g., "stop my node at height X for maintenance") rather than a coordination mechanism. Coordination should happen through governance. ### No CLI flag — config only Per @tbruyelle's suggestion, there's no `--halt-height` CLI flag. Config file is the single source of truth. This avoids the risk of validators missing the flag in duplicated command setups across their infrastructure. ### Related - #5368 — GovDAO-based halt height + version guard (Phase 2, replaces this for coordination) - #5376 — gnoland-1 chain config - #5411 — chain upgrade genesis replay <details> <summary>Contributors' checklist</summary> - [x] Added new tests, or not needed, or not feasible - [x] Provided an example (e.g. screenshot) to aid review or the PR is self-explanatory - [x] Updated the official documentation or not needed - [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message was included in the description - [x] Added `benchmarks` label to the PR or not needed </details>
- Revert premature doc references to gnoland-1 chain ID in gas-fees.md and explore-with-gnoweb.md (hardfork hasn't happened yet) - Remove premature "Note" callout from gnoland-networks.md - Update migrate-from-gnoland1.sh: reflect Scenario A decision (genesis tx-replay with InitialHeight), document blockers (#5411, #5390, Jae's InitialHeight tm2 work), reference issue #5374 for tracking - Update gnoland-1/README.md: reflect correct PR merge status, document Scenario A approach, list migration blockers explicitly
PR #5373 (valoper fee script) was closed without merging. The valoper registration fee was already set to 0 via a GovDAO transaction on gnoland1, so no code change is needed — the state is preserved in genesis replay.
- Fix comment headers: 'gnoland1' → 'gnoland-1' in add-validator.sh and rm-validator.sh - Fix stale REMOTE default comment: 127.0.0.1:26657 → betanet endpoint
…m-valopers.sh Comment said 10000000 but actual default was already 50000000.
Closed
21 tasks
moul
added a commit
to moul/gno
that referenced
this pull request
Apr 13, 2026
# Conflicts: # .github/workflows/examples.yml # docs/resources/gnoland-networks.md # misc/deployments/gnoland1/govdao-scripts/README.md # misc/deployments/gnoland1/govdao-scripts/unrestrict-account.sh
moul
added a commit
to moul/gno
that referenced
this pull request
Apr 13, 2026
Adds misc/hf-glue/: a throwaway testbed that chains the tools from gnolang#5411 and gnolang#5376 to run a local, single-validator hardforked chain in docker, with state persisted on disk. Flow: make fetch # hardfork genesis --source rpc.gno.land -> out/genesis.json make init # gnoland secrets init + rewrite validator set to our key make up # docker compose up: single-validator gnoland node, RPC :26657 This exists only to find gaps in gnolang#5411/gnolang#5376 end-to-end. Do NOT merge. Fixes go back upstream.
This was referenced Apr 13, 2026
moul
added a commit
to moul/gno
that referenced
this pull request
Apr 16, 2026
Adds misc/hf-glue/: a throwaway testbed that chains the tools from gnolang#5411 and gnolang#5376 to run a local, single-validator hardforked chain in docker, with state persisted on disk. Flow: make fetch # hardfork genesis --source rpc.gno.land -> out/genesis.json make init # gnoland secrets init + rewrite validator set to our key make up # docker compose up: single-validator gnoland node, RPC :26657 This exists only to find gaps in gnolang#5411/gnolang#5376 end-to-end. Do NOT merge. Fixes go back upstream.
moul
added a commit
to moul/gno
that referenced
this pull request
Apr 19, 2026
- docs/MANIFESTO.md: restore original jaekwon/ephesus URL (upstream is back online; wayback redirect no longer needed) - misc/docs/tools/linter/urls.go: drop archive.org skip — it was a workaround for the MANIFESTO URL flake that is now resolved Leaving gnoland-networks.md etc. untouched (those came in via the gnolang#5376 / gnolang#5511 merges and are intentional).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Prepares the repo for the `gnoland1` → `gnoland-1` hard fork.
Target branch: `chain/gnoland1` — this PR is rebased onto the chain release branch, not master.
PRs bundled in this hard fork binary
Valoper fee = 0: Set via a GovDAO transaction on gnoland1 (not a code change); preserved in genesis replay.
Not confirmed (need explicit sign-off from Jae): #5291, #5289, #5274 (gas params)
Upgrade approach: Scenario A — genesis tx-replay
Agreed with Jae. The new `gnoland-1` chain is bootstrapped from a genesis that embeds all historical txs from `gnoland1` with original block heights and timestamps preserved:
The big TODO: migration script
`misc/deployments/gnoland-1/migrate-from-gnoland1.sh` is a placeholder. It exits with an error until implemented.
Blockers:
Changes
Related PRs
[bot] This PR description was updated by an AI agent.