gno pearl
Pearl is a fresh testnet for the Gno testnet line — a new chain, not a hardfork.
- Release tag:
chain/pearl - Target commit:
c4c72fdd2 - Previous release tag:
chain/sapphire - Previous release commit:
9ab5198ac - Full release compare:
tags/chain/sapphire...tags/chain/pearl - Pearl release-candidate PR: #6091
Summary
Pearl follows the fresh-chain recipe: a 2.7 MB genesis built from the repo's examples/ tree in about a minute, booting in seconds. No state carries over from sapphire — balances, realms, and registered names start from zero. Grab GNOT from the faucet and re-register.
The chain: chain-id pearl-1, 85 curated packages at genesis, aeddi as sole GovDAO T1 member, 3 founding validators with operator-keyed valoper profiles (at 3 × 60 power, one validator dark is exactly the one-third halt boundary — accepted for launch until partners join), namespace enforcement (r/sys/names) enabled from block 1, 3 pre-funded faucet accounts, and unrestricted token transfers.
New this release: genesis vesting accounts. The genesis builder supports a VESTED_ACCOUNTS list (addr=coins;vesting=coins,start,end[;type=delayed] — continuous schedules unlock linearly, delayed ones are a cliff), guarded end to end: malformed entries, duplicate or fee-payer/faucet collisions, and invalid schedules all abort the build before any node runs, and the measurement nodes exercise vesting-account creation on every build. Pearl ships ten vested test accounts covering the schedule matrix (ended-at-genesis, 1h/1d/3d/7d linear, 1h/1d/7d cliffs, a future start, and a mid-vest straddling genesis).
Code baseline: master c04f8793d — 25 commits ahead of sapphire's baseline.
Changes since sapphire
Breaking / consensus-relevant:
- inert-package flow completed:
MsgRunallowlist, delegated params (#6088, fixes in #6093) AddPackagetype-checks production files only; test files are stored and syntax-parsed (#6025)- three ways coins were lost or over-authorized around the send-envelope (#6062)
- gov/dao: allowlist lockdown, proposal-page escaping, executor disclosure (#6068)
- per-file Go version pinned in the consensus type-check (#5978)
VM correctness:
- type-switch with a sole
case nil:(#5766), clause-local names on switch fallthrough (#6056),gotoout of nested loops (#5963), map composite-literal keys inside for loops (#6037),ComputeMapKeymetered on the realm-restore path (#5710), unsupported tilde operator rejected at parse (#6057)
Performance:
- size-aware encode, decode and render paths (
acd01fa29) - runtime blocks recycled through a per-machine pool (#5813); vestigial
Defer.Parentdropped (#5856)
New features:
- grc721 core rewritten on the Token/PrivateLedger/Teller axis, plus stackable metadata, royalty, and enumerable extensions (#6072, #6073)
- gnovm chain-params reader API (#6094)
- p2p:
config.P2P.Seedswired into the switch (#6023); dial-loop backoff fix (#6054) - audit pattern harness with executable security-pattern fixtures (#5835)
Deployments:
Genesis + binaries
All assets are attached to this release:
genesis.json— verify before use:
shasum -a 256 genesis.json
# c45fe60c8c8a1f859d9e4d5aad7ce4d100ff0eb78302e71318ba0de481a8dc91 genesis.json- Prebuilt
gno,gnokey,gnoland,gnowebbinaries fordarwin/linux×amd64/arm64(CGO_ENABLED=0, built from the target commit), with aCHECKSUMS.txtcovering every asset.
To regenerate the genesis yourself, or to join as a validator: misc/deployments/pearl.gno.land/ (README.md + VALIDATOR.md).