Repository navigation
v1.5.1
A rolling patch. No halt, no GovDAO proposal, no version floor: nothing nodes agree on changes, so each operator switches whenever convenient. Cut on the same commit as v1.5.1-rc.1, which onyx ran first.
Released from chain/mainnet at 07e44776c. Previous release: v1.5.0. Recorded in the mainnet upgrade ledger as a rolling release.
Who should run it: mainnet operators, whenever convenient. Nodes on v1.5.0 and v1.5.1 run the same chain and peer with each other, so validators can move one at a time. Onyx stays on v1.5.1-rc.1, the same code.
What changes
Cherry-picked from master; the p2p and faucet code is identical to master's.
- Persistent peers (#6292, #6305, #6303, #5020): dialed only from the redial loop, on their own queue, and a configured hostname is resolved again on every dial. When two nodes dial each other at once, both keep the connection dialed by the lower ID. A peer that keeps dropping is backed off; one that drops after a stable connection is redialed at once. The redial backoff tops out at 30 seconds instead of 10 minutes. There is no wire or config change: nodes running this and older nodes peer as before.
- gnoweb (#6220): every asset URL the page head emits carries the build version, so an edge cache picks up a new release. The two font preloads stay unversioned on purpose, to match the stylesheet.
- gnofaucet (#6252): drips succeed against current nodes again.
Operators, watch for
- An Info line
replacing connection to resolve a simultaneous openis normal. - If
p2p.persistent_peerslists the same peer ID twice, only the last address is dialed, with a warning at startup. - A persistent peer configured by IP is no longer rescued by peer exchange when its IP changes: configure persistent peers by hostname.
max_num_outbound_peersno longer blocks persistent peers, even at 0. They still count toward it.
Docker images
Multi-arch (linux/amd64, linux/arm64), signed keylessly by the release / docker workflow, the index and each platform image.
| Image | Index digest |
|---|---|
ghcr.io/gnolang/gno/gnoland:v1.5.1 |
sha256:810c3d57395dbe85d34b02b2df7b711a400f2b04dcfa9e94e34f9ca53d1f2290 |
ghcr.io/gnolang/gno/gnoweb:v1.5.1 |
sha256:ba8836f151f1a5000dbd8241aa4a87b4e0f56b36aa2abb829fc6752ac890ddba |
ghcr.io/gnolang/gno/gnofaucet:v1.5.1 |
sha256:d936676915a7d70b1b8334f3565e0b7c72416df4192da5fb85d7c2156c32a045 |
ghcr.io/gnolang/gno/gnokey:v1.5.1 |
sha256:dfc24980f30122b90f824d15a054600cf8dcffbf8af22c1eb52da7863597aa59 |
ghcr.io/gnolang/gno/gno:v1.5.1 |
sha256:2dafa995935fc7eb3ef5b42c40972007c1244cdeec2c21c62a7defd7b938b832 |
ghcr.io/gnolang/gno/gnodev:v1.5.1 |
sha256:aca6f52ff0b0f85a36efb794b676e03439468843dab2317c2a3deaf895744ef3 |
ghcr.io/gnolang/gno/gnocontribs:v1.5.1 |
sha256:7cd37f1791852171f66f7b8f70c1323a01272ae7abe163aacc58c326fc2a77ee |
ghcr.io/gnolang/gno/gpao:v1.5.1 |
sha256:f1b2cfb7c67c39fbbc0eacbc248eec155bd07c45235635b261cf3be3e3437219 |
Binaries
Attached below: gno, gnokey, gnoland, gnoweb and gnodev for linux and darwin, amd64 and arm64, built by the release / chain-tag workflow from this tag. CHECKSUMS.txt covers all of them, and gnoland, gnokey and gno print v1.5.1 on version. The binaries and CHECKSUMS.txt carry a build-provenance attestation.
Verify before you run it
gh attestation verify gnoland_linux_amd64 --repo gnolang/gno \
--signer-workflow gnolang/gno/.github/workflows/release-chain-tag.yml \
--source-ref refs/tags/v1.5.1
# cosign v3 or later: the signatures are in the Sigstore bundle format
cosign verify ghcr.io/gnolang/gno/gnoland:v1.5.1 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity https://github.com/gnolang/gno/.github/workflows/release-docker.yml@refs/tags/v1.5.1Changes since v1.5.0
Compare. Node and service code:
- p2p: back off flapping persistent peers and redial stable ones at once (#6303)
- p2p: keep the lower ID's connection when two nodes dial each other at once (#6305)
- p2p: dial persistent peers only from the redial loop, on their own queue (#6292)
- p2p: re-resolve FQDN persistent peers on redial (#5020)
- p2p: cover the timer branch of
waitForDialTime(test only, #6067) - gnofaucet: make drips work against current gno.land nodes (#6252)
- gnoweb: version every asset URL the head emits (#6220)
Release tooling and docs on chain/mainnet since v1.5.0, no node code: the release model and upgrade ledger (#6228), the rolling ledger kind (#6245), signed and attested release artifacts with a daily ledger check (#6243), and the onyx deployment folder (#6244).