Files
zeekayandHanzo Dev 7fc9b1d950 Pin off two poisoned versions, and forward to a set that agrees
luxfi/keys v1.0.8 and luxfi/precompile v0.5.17 were force-moved in a bulk
retag, so go.sum holds the pre-move hash and the build died at a checksum
mismatch before compiling a line. sum.golang.org is append-only and still
holds the original bytes, so those versions can never verify again. The repair
is to pin forward to versions the proxy holds immutably, which restores
verification rather than working around its absence: the proxy 404s every
precompile from v0.5.17 through v0.5.37, and keys v1.0.8.

Bumping constants to v1.6.4 carries warp and proto forward with it, and the
stale pins downstream of them had to move too or the build broke somewhere
else: proto v1.4.10 for the codec-free wire the wallet signer already writes
against, evm v1.104.50 and gpu v1.1.2 for that warp, netrunner v1.20.4 for the
genesis those pull in.

evm is the large move and it is not optional: v0.8.49 did not compile against
any warp this module can resolve, including the v1.18.6 it was pinned beside,
so the tree could not build with it even before any of this. Of the thirteen
evm packages this SDK imports, ten are identical at the exported API, core is
purely additive, and predicate.PackPredicate -- the one actually called -- is
byte-identical. Two things did change, and in both the SDK was the side that
had fallen behind:

The Warp precompile moved from 0x16201 to the canonical
0x0200000000000000000000000000000000000005, which is what genesis and the
canonical evm tree already carry. This SDK reads that address symbolically to
build an access list and to filter weight-update logs, so on v0.8.49 it was
filtering an address nothing answers on -- no logs, no error.

ValidatorUptime lost the reflection codec for a fixed 44-byte layout: 2-byte
version, 2-byte type, 32-byte validation ID, 8-byte uptime. The verifier that
reads these lives in evm's own warp/verifier_backend.go and already expects
that layout, so the 46-byte codec framing v0.8.49 produced is what could not
be read.

One value change carries a hazard this SDK does not feel: warp's minimum
quorum numerator went from 33 to 67. Nothing here references it, but a
hand-written genesis with a numerator between 33 and 66 is valid today and
rejected after.

api v1.1.14 turns the admin replies from objects into ordered lists. The
client keys them back, so callers still get the map they always did, and an
absent list stays an absent map.

Every version was resolved through the proxy with GONOSUMDB, GOPRIVATE and
GONOPROXY cleared, so each one verified against the public notary.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-30 15:26:33 -07:00
..