Skip to content

chain/pearl

Latest

Choose a tag to compare

@aeddi aeddi released this 27 Aug 08:01
c4c72fd

gno pearl

Pearl is a fresh testnet for the Gno testnet line — a new chain, not a hardfork.

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: MsgRun allowlist, delegated params (#6088, fixes in #6093)
  • AddPackage type-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), goto out of nested loops (#5963), map composite-literal keys inside for loops (#6037), ComputeMapKey metered 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.Parent dropped (#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.Seeds wired into the switch (#6023); dial-loop backoff fix (#6054)
  • audit pattern harness with executable security-pattern fixtures (#5835)

Deployments:

  • sapphire release candidate (#6044); test13 deployment archive (#6041)

Genesis + binaries

All assets are attached to this release:

shasum -a 256 genesis.json
# c45fe60c8c8a1f859d9e4d5aad7ce4d100ff0eb78302e71318ba0de481a8dc91  genesis.json
  • Prebuilt gno, gnokey, gnoland, gnoweb binaries for darwin/linux × amd64/arm64 (CGO_ENABLED=0, built from the target commit), with a CHECKSUMS.txt covering every asset.

To regenerate the genesis yourself, or to join as a validator: misc/deployments/pearl.gno.land/ (README.md + VALIDATOR.md).