Skip to content

v4.0.1 - emergency tx-layer fix

Choose a tag to compare

@Ninjaxan Ninjaxan released this 09 Jul 16:18

Passage v4.0.1 — emergency fix for the v4.0.0 tx-layer outage

On v4.0.0, no transaction of any kind can be included in a block — not staking, not IBC, not even a bank send. Signer resolution fails at CheckTx for every message, so the chain produces empty blocks (consensus is healthy; the tx layer is dead). Governance cannot fix this — a proposal is itself a transaction and is rejected too — so the remedy is a coordinated binary swap. All validators must switch at the same height or the chain forks.

Fixes (four defects from the SDK 0.47→0.50 port)

  1. Address codec in InterfaceRegistry (app/params/proto.go) — the registry was built without an address codec, so signer resolution fails: InterfaceRegistry requires a proper address codec implementation.
  2. Ante handler nil codec (app/app.go) — HandlerOptions.Codec was left unset, so the custom BlockAccountDecorator got a nil codec and nil-pointer panicked on every tx once (1) was fixed. (1) and (2) must ship together, or the chain stays dead — see verification.
  3. ibctm / solomachine light-client registration (app/app.go) — ibc-go v8 no longer bundles the light clients; without ibctm, /ibc.lightclients.tendermint.v1.ClientState fails to decode, breaking IBC client-state queries and relayer client updates.
  4. cosmwasm_1_3 capability (app/app.go) — restored the wasm capability v3.0.0 had and the port dropped.

Diff: four commits in PR envadiv/Passage3D#210.

Verification — real mainnet state, by broadcast (not generate-only)

On a fork of real mainnet state: v4.0.0 rejects a bank send (code 1); after swapping to v4.0.1 the same send is accepted and included in a block (code 0). The 10-second on-node repro and the harness are in the coordination channel.

Coordinated upgrade

Binary swap at height 19972000 (~Fri Jul 10 17:25 UTC). Build from source only from the v4.0.1 tag (carries the vendored iavl empty-store patch; unpatched trees won't load the DB). SHA256SUMS.txt attached — verify before running.