From d8357af3ecc0d166a1f7a8cbfbfafbd8a31ebb6d Mon Sep 17 00:00:00 2001 From: matteyu Date: Thu, 16 Jul 2026 22:12:49 -0700 Subject: [PATCH 01/14] chore: use evm-private tag fix --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 69d52ff8..979a58ad 100644 --- a/go.mod +++ b/go.mod @@ -312,7 +312,7 @@ replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 // Use our fork w/ fee abstraction possibility - github.com/cosmos/evm => github.com/KiiChain/evm v0.6.0-fork.2 + github.com/cosmos/evm => github.com/KiiChain/evm-private v0.6.0-fork.3 // TODO: remove it: https://github.com/cosmos/cosmos-sdk/issues/13134 github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2 diff --git a/go.sum b/go.sum index f2d2b9a5..efb9321b 100644 --- a/go.sum +++ b/go.sum @@ -705,8 +705,8 @@ github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXY github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM= -github.com/KiiChain/evm v0.6.0-fork.2 h1:OHk0OI5hIYbHHMWCESHCROErdMcJlofLgpQ6p0TdNmA= -github.com/KiiChain/evm v0.6.0-fork.2/go.mod h1:QnaJDtxqon2mywiYqxM8VwW8FKeFazi0au0qzVpFAG8= +github.com/KiiChain/evm-private v0.6.0-fork.3 h1:q3o5VyBIlWPg35+a4QFKD9MypLvt8HlaQyMcZkUOYDM= +github.com/KiiChain/evm-private v0.6.0-fork.3/go.mod h1:QnaJDtxqon2mywiYqxM8VwW8FKeFazi0au0qzVpFAG8= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= From 62d72c4d8b7d67f9cadafea9bb8c201b5bd8481d Mon Sep 17 00:00:00 2001 From: matteyu Date: Mon, 20 Jul 2026 09:38:04 -0700 Subject: [PATCH 02/14] feat: add go releaser for linux --- .goreleaser.yml | 44 +++++++++++++++++++++++++++++++++++++++++++- Makefile | 13 ++++++++++++- app/app.go | 2 ++ 3 files changed, 57 insertions(+), 2 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index c6b3cd7f..ea3aa5e1 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -96,7 +96,7 @@ builds: hooks: pre: - wget -O /lib/libwasmvm_muslc.x86_64.a https://github.com/CosmWasm/wasmvm/releases/download/{{ .Env.COSMWASM_VERSION }}/libwasmvm_muslc.x86_64.a - - echo "a4a3d09b36fabb65b119d5ba23442c23694401fcbee4451fe6b7e22e325a4bac /lib/libwasmvm_muslc.x86_64.a" | sha256sum -c + - echo "cefe73f0caa5a9eaba3733c639cdf5040c4746a93c20670ba6c9287fe39448ba /lib/libwasmvm_muslc.x86_64.a" | sha256sum -c - cp /lib/libwasmvm_muslc.x86_64.a /lib/libwasmvm_muslc.a - curl -LO https://musl.cc/x86_64-linux-musl-cross.tgz - tar xf x86_64-linux-musl-cross.tgz @@ -114,6 +114,47 @@ builds: - -X github.com/cosmos/cosmos-sdk/version.BuildTags=muslc,ledger - -X github.com/cometbft/cometbft/version.TMCoreSemVer={{ .Env.TM_VERSION }} + - id: kiichaind-linux-arm64 + main: ./cmd/kiichaind + binary: kiichaind + builder: go + gobinary: "go" + env: + - CGO_ENABLED=1 + - CC=/opt/musl-cross-arm64/bin/aarch64-linux-musl-gcc + - LD=/opt/musl-cross-arm64/bin/aarch64-linux-musl-ld + # Isolated -L dir so this does not clobber the amd64 build running in parallel + - CGO_LDFLAGS=-L/lib/aarch64 + goos: + - linux + goarch: + - arm64 + mod_timestamp: "{{ .CommitTimestamp }}" + tags: + - muslc + - ledger + hooks: + pre: + - mkdir -p /lib/aarch64 + - wget -O /lib/aarch64/libwasmvm_muslc.aarch64.a https://github.com/CosmWasm/wasmvm/releases/download/{{ .Env.COSMWASM_VERSION }}/libwasmvm_muslc.aarch64.a + - echo "a04969b4f931be1d2e2f3f2313a68a20a202693f67559f7aaf1dd97250823aec /lib/aarch64/libwasmvm_muslc.aarch64.a" | sha256sum -c + - cp /lib/aarch64/libwasmvm_muslc.aarch64.a /lib/aarch64/libwasmvm_muslc.a + - curl -LO https://musl.cc/aarch64-linux-musl-cross.tgz + - tar xf aarch64-linux-musl-cross.tgz + - mv aarch64-linux-musl-cross /opt/musl-cross-arm64 + ldflags: + - -s -w + - -linkmode=external + - -extldflags "-Wl,-z,muldefs -static" + - -X main.commit={{.Commit}} + - -X main.date={{ .CommitDate }} + - -X github.com/cosmos/cosmos-sdk/version.Name=kiichain + - -X github.com/cosmos/cosmos-sdk/version.AppName=kiichaind + - -X github.com/cosmos/cosmos-sdk/version.Version=v{{ .Version }} + - -X github.com/cosmos/cosmos-sdk/version.Commit={{ .Commit }} + - -X github.com/cosmos/cosmos-sdk/version.BuildTags=muslc,ledger + - -X github.com/cometbft/cometbft/version.TMCoreSemVer={{ .Env.TM_VERSION }} + universal_binaries: - id: kiichaind-darwin-universal ids: @@ -144,6 +185,7 @@ archives: - kiichaind-darwin-arm64 - kiichaind-darwin-amd64 - kiichaind-linux-amd64 + - kiichaind-linux-arm64 wrap_in_directory: false files: - none* diff --git a/Makefile b/Makefile index 94a4360f..293d4829 100644 --- a/Makefile +++ b/Makefile @@ -148,6 +148,7 @@ distclean: clean GO_VERSION := $(shell cat go.mod | grep -E 'go [0-9].[0-9]+' | cut -d ' ' -f 2) GORELEASER_IMAGE := ghcr.io/goreleaser/goreleaser-cross:v$(REQUIRE_GO_VERSION) COSMWASM_VERSION := $(shell go list -m github.com/CosmWasm/wasmvm/v3 | sed 's/.* //') +GOMODCACHE := $(shell go env GOMODCACHE) # create tag and run goreleaser without publishing # errors are possible while running goreleaser - the process can run for >30 min @@ -165,9 +166,12 @@ ifneq ($(strip $(TAG)),) @docker run \ --rm \ -e CGO_ENABLED=1 \ + -e GOPRIVATE=github.com/KiiChain/* \ + -e GOMODCACHE=/go/pkg/mod \ -e TM_VERSION=$(TM_VERSION) \ -e COSMWASM_VERSION=$(COSMWASM_VERSION) \ -v `pwd`:/go/src/kiichaind \ + -v $(GOMODCACHE):/go/pkg/mod \ -w /go/src/kiichaind \ $(GORELEASER_IMAGE) \ release \ @@ -206,9 +210,12 @@ goreleaser-build-local: docker run \ --rm \ -e CGO_ENABLED=1 \ + -e GOPRIVATE=github.com/KiiChain/* \ + -e GOMODCACHE=/go/pkg/mod \ -e TM_VERSION=$(TM_VERSION) \ -e COSMWASM_VERSION=$(COSMWASM_VERSION) \ -v `pwd`:/go/src/kiichaind \ + -v $(GOMODCACHE):/go/pkg/mod \ -w /go/src/kiichaind \ $(GORELEASER_IMAGE) \ release \ @@ -216,7 +223,8 @@ goreleaser-build-local: --skip=publish \ --release-notes ./RELEASE_NOTES.md \ --timeout 90m \ - --verbose + --verbose \ + --clean # uses goreleaser to create static binaries for linux an darwin # requires access to GITHUB_TOKEN which has to be available in the CI environment @@ -226,9 +234,12 @@ ci-release: --rm \ -e CGO_ENABLED=1 \ -e GITHUB_TOKEN=$(GITHUB_TOKEN) \ + -e GOPRIVATE=github.com/KiiChain/* \ + -e GOMODCACHE=/go/pkg/mod \ -e TM_VERSION=$(TM_VERSION) \ -e COSMWASM_VERSION=$(COSMWASM_VERSION) \ -v `pwd`:/go/src/kiichaind \ + -v $(GOMODCACHE):/go/pkg/mod \ -w /go/src/kiichaind \ $(GORELEASER_IMAGE) \ release \ diff --git a/app/app.go b/app/app.go index c3db6222..fa7eb6d4 100644 --- a/app/app.go +++ b/app/app.go @@ -69,6 +69,7 @@ import ( "github.com/kiichain/kiichain/v7/app/keepers" "github.com/kiichain/kiichain/v7/app/upgrades" v7_2 "github.com/kiichain/kiichain/v7/app/upgrades/v7_2" + v7_3 "github.com/kiichain/kiichain/v7/app/upgrades/v7_3" "github.com/kiichain/kiichain/v7/client/docs" ) @@ -79,6 +80,7 @@ var ( // Upgrades is a list of all the upgrades that are available for the application. Upgrades = []upgrades.Upgrade{ v7_2.Upgrade, + v7_3.Upgrade, } ) From 146e6b92424fd76e5b3fb02a1dd00a0c2e99d544 Mon Sep 17 00:00:00 2001 From: matteyu Date: Mon, 20 Jul 2026 10:19:27 -0700 Subject: [PATCH 03/14] chore: add changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 23437cee..1ae261a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Dependencies - [EVM](https://github.com/KiiChain/evm) fork from v0.6.0-fork.1 to [v0.6.0-fork.2](https://github.com/KiiChain/evm/releases/tag/v0.6.0-fork.2): bounded internal EVM call gas limit, EVM fee refunds, distribution precompile 32-byte withdraw fix, and CosmWasm EVM query undercharge fix +- EVM fork bump from `v0.6.0-fork.2` to `v0.6.0-fork.3` (maintenance and stability update), applied via the coordinated `v7.3.0` upgrade ### Added From f4971f1ce835220b2c1663031dfab8b2707b5ab6 Mon Sep 17 00:00:00 2001 From: matteyu Date: Mon, 20 Jul 2026 21:42:02 -0700 Subject: [PATCH 04/14] feat: add upgrade 7.3.0 --- app/upgrades/v7_3/constants.go | 20 +++++++++++++++++++ app/upgrades/v7_3/upgrade.go | 36 ++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 app/upgrades/v7_3/constants.go create mode 100644 app/upgrades/v7_3/upgrade.go diff --git a/app/upgrades/v7_3/constants.go b/app/upgrades/v7_3/constants.go new file mode 100644 index 00000000..de1d1e25 --- /dev/null +++ b/app/upgrades/v7_3/constants.go @@ -0,0 +1,20 @@ +package v730 + +import ( + "github.com/kiichain/kiichain/v7/app/upgrades" +) + +const ( + // UpgradeName is the name of the upgrade + UpgradeName = "v7.3.0" +) + +// Upgrade defines the coordinated upgrade for the EVM v0.6.0-fork.3 dependency +// bump. The fork.3 changes (precompile gas accounting, statedb locked-balance +// handling, and feemarket EndBlock) are state-machine-breaking, so this upgrade +// ensures every validator switches to the new binary at the same height. No +// store migrations are required. +var Upgrade = upgrades.Upgrade{ + UpgradeName: UpgradeName, + CreateUpgradeHandler: CreateUpgradeHandler, +} diff --git a/app/upgrades/v7_3/upgrade.go b/app/upgrades/v7_3/upgrade.go new file mode 100644 index 00000000..99256fc1 --- /dev/null +++ b/app/upgrades/v7_3/upgrade.go @@ -0,0 +1,36 @@ +package v730 + +import ( + "context" + + upgradetypes "cosmossdk.io/x/upgrade/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + + "github.com/kiichain/kiichain/v7/app/keepers" +) + +// CreateUpgradeHandler creates the upgrade handler for the v7.3.0 upgrade. +// This upgrade coordinates the switch to the EVM v0.6.0-fork.3 dependency, whose +// changes are state-machine-breaking. No custom state migrations are needed, so +// the handler only runs pending module migrations. +func CreateUpgradeHandler( + mm *module.Manager, + configurator module.Configurator, + _ *keepers.AppKeepers, +) upgradetypes.UpgradeHandler { + return func(c context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + ctx := sdk.UnwrapSDKContext(c) + + ctx.Logger().Info("Starting module migrations for v7.3.0...") + + vm, err := mm.RunMigrations(ctx, configurator, vm) + if err != nil { + return vm, err + } + + ctx.Logger().Info("Upgrade v7.3.0 complete") + return vm, nil + } +} From 3cd0f14fd12db656b918a444d87f301300991e8e Mon Sep 17 00:00:00 2001 From: mattkii <142337545+mattkii@users.noreply.github.com> Date: Wed, 22 Jul 2026 21:40:49 -0700 Subject: [PATCH 05/14] chore: document private v7.3.0 release and fix ERC20 test deployer Co-authored-by: Cursor --- CHANGELOG.md | 2 +- RELEASE_NOTES.md | 55 ++++++++++++++++++++++++ app/app.go | 2 - app/apptesting/evm.go | 44 +++++++++++++++---- app/upgrades/v7_2/constants.go | 17 -------- app/upgrades/v7_2/upgrade.go | 35 --------------- go.mod | 21 ++++++++- wasmbinding/evm/reflect_query_test.go | 14 +++--- x/feeabstraction/ante/cosmos/fee_test.go | 2 +- x/feeabstraction/keeper/fee_test.go | 4 +- 10 files changed, 122 insertions(+), 74 deletions(-) create mode 100644 RELEASE_NOTES.md delete mode 100644 app/upgrades/v7_2/constants.go delete mode 100644 app/upgrades/v7_2/upgrade.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ae261a2..29ccc434 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ ### Dependencies - [EVM](https://github.com/KiiChain/evm) fork from v0.6.0-fork.1 to [v0.6.0-fork.2](https://github.com/KiiChain/evm/releases/tag/v0.6.0-fork.2): bounded internal EVM call gas limit, EVM fee refunds, distribution precompile 32-byte withdraw fix, and CosmWasm EVM query undercharge fix -- EVM fork bump from `v0.6.0-fork.2` to `v0.6.0-fork.3` (maintenance and stability update), applied via the coordinated `v7.3.0` upgrade +- EVM fork bump from `v0.6.0-fork.2` to `v0.6.0-fork.3`, applied via the coordinated `v7.3.0` upgrade. This is a **private coordinated upgrade** following Cosmos Labs' recommended coordinated-disclosure process for the July 2026 Cosmos EVM hotfix (precompile gas accounting alignment and StateDB locked-balance snapshotting). Until Cosmos publishes the fix, the dependency is temporarily sourced from the private `github.com/KiiChain/evm-private` mirror so binaries can be built and verified without leaking the patch early. The dependency will be flipped back to the public `github.com/KiiChain/evm` tag the day after Cosmos makes the corresponding release public on their end. ### Added diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md new file mode 100644 index 00000000..1ff5086c --- /dev/null +++ b/RELEASE_NOTES.md @@ -0,0 +1,55 @@ +# Kiichain v7.3.0 — Private Coordinated Release + +> **Why binaries are attached:** This release ships prebuilt `kiichaind` binaries because the patched EVM dependency lives in the private `github.com/KiiChain/evm-private` mirror. **You cannot build this release from public source** until after Cosmos EVM’s public disclosure window. +> +> **Public build-from-source release:** We will publish a follow-up public release (same binary hashes / equivalent public module path) **1 day after Cosmos EVM’s announced public disclosure date**. Until then, use only the binaries and checksums attached to this GitHub Release. + +## Summary + +Coordinated `v7.3.0` upgrade that bumps the EVM dependency to +`KiiChain/evm-private v0.6.0-fork.3` (Cosmos Labs–coordinated July 2026 Cosmos EVM hotfix backported onto our fee-abstraction fork). This release is **state-machine-breaking** and must be applied by all validators at the same block height. + +## Why private? + +Cosmos Labs shared a hotfix with affected chains ahead of public disclosure. The changes are consensus-breaking (precompile gas accounting alignment, StateDB locked-balance snapshotting, and related fixes), so every validator must switch at a coordinated height. Publishing the patch in a public Go module before Cosmos’s disclosure date would leak the fix early, so the dependency is temporarily sourced from `github.com/KiiChain/evm-private`. + +## Changes + +- chore: update `github.com/cosmos/evm` replacement to `github.com/KiiChain/evm-private v0.6.0-fork.3`. +- feat: add `v7.3.0` coordinated upgrade handler (module migrations only; no store migrations). +- chore: strip completed `v7.2.0` upgrade handler. + +## Upgrade + +- Upgrade name: `v7.3.0` +- Consensus-breaking: **yes** — every validator must be running this binary by the upgrade height. +- Mechanism: governance `software-upgrade` proposal scheduling height per network; cosmovisor swaps the binary at the height. +- Store migrations: none required. + +## Rollout order + +1. Plata (devnet) — done +2. Oro (testnet) — governance proposal +3. Mainnet — governance proposal + +## Binaries + +Build with `make goreleaser-build-local` using `--platform linux/amd64` for reproducible hashes across machines. + +| OS | Arch | Artifact | +| ------ | ----- | --------------------------------- | +| linux | amd64 | `kiichaind-v7.3.0-linux-amd64` | +| linux | arm64 | `kiichaind-v7.3.0-linux-arm64` | +| darwin | arm64 | `kiichaind-v7.3.0-darwin-arm64` | +| darwin | amd64 | `kiichaind-v7.3.0-darwin-amd64` | + +Verify downloads against `SHA256SUMS-v7.3.0.txt`. + +### Reproduced checksums (linux/amd64 GoReleaser container) + +```text +6dd640a9b9943856e5890e9705fb9f8267b80a36d0fb3ad6dd5e4cc64803c62a kiichaind-darwin-amd64 +b91dedaea1e822618ef05f2ac77e9c9baa6a2bbe26b2bc952972a92f8cff8bbf kiichaind-darwin-arm64 +b99a7dd0097fe377c7248a12184d3c0ff1efb1c7886db7e6b366fc1701225b01 kiichaind-linux-amd64 +46e553bee97c8bf68b3d5b14885497ad660735e36d4dc0b4c3788a96c662e688 kiichaind-linux-arm64 +``` diff --git a/app/app.go b/app/app.go index fa7eb6d4..162c5089 100644 --- a/app/app.go +++ b/app/app.go @@ -68,7 +68,6 @@ import ( kiiante "github.com/kiichain/kiichain/v7/ante" "github.com/kiichain/kiichain/v7/app/keepers" "github.com/kiichain/kiichain/v7/app/upgrades" - v7_2 "github.com/kiichain/kiichain/v7/app/upgrades/v7_2" v7_3 "github.com/kiichain/kiichain/v7/app/upgrades/v7_3" "github.com/kiichain/kiichain/v7/client/docs" ) @@ -79,7 +78,6 @@ var ( // Upgrades is a list of all the upgrades that are available for the application. Upgrades = []upgrades.Upgrade{ - v7_2.Upgrade, v7_3.Upgrade, } ) diff --git a/app/apptesting/evm.go b/app/apptesting/evm.go index 5e645b50..efc9ea58 100644 --- a/app/apptesting/evm.go +++ b/app/apptesting/evm.go @@ -9,7 +9,6 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/evm/contracts" erc20types "github.com/cosmos/evm/x/erc20/types" @@ -18,10 +17,37 @@ import ( app "github.com/kiichain/kiichain/v7/app" ) -// DeployERC20 deploys an ERC20 contract +// ERC20DeployerSeed is used to derive a deterministic non-module deployer for +// test ERC20 deployments. Module accounts cannot receive balance updates via +// SetBalanceWithLocked after the Cosmos EVM locked-balance hotfix. +const ERC20DeployerSeed = "kiichain/apptesting/erc20-deployer" + +// DefaultFirstERC20 is the contract address produced by the first DeployERC20 +// call (deployer nonce 0) using ERC20DeployerAddress. +const DefaultFirstERC20 = "0xaF095889C624F74f349c59443D09E3958B227270" + +// ERC20DeployerAddress returns the deterministic EOA used to deploy/mint test +// ERC20 contracts. +func ERC20DeployerAddress() common.Address { + seed := crypto.Keccak256([]byte(ERC20DeployerSeed)) + key, err := crypto.ToECDSA(seed) + if err != nil { + panic(err) + } + return crypto.PubkeyToAddress(key.PublicKey) +} + +// ensureAccountExists creates the account if missing so nonce tracking works. +func ensureAccountExists(ctx sdk.Context, app *app.KiichainApp, addr sdk.AccAddress) { + if app.AccountKeeper.GetAccount(ctx, addr) == nil { + app.AccountKeeper.SetAccount(ctx, app.AccountKeeper.NewAccountWithAddress(ctx, addr)) + } +} + +// DeployERC20 deploys an ERC20 contract from a deterministic non-module EOA. func DeployERC20(ctx sdk.Context, app *app.KiichainApp) (common.Address, error) { - // Select the from as the erc20 module address - from := common.BytesToAddress(authtypes.NewModuleAddress(erc20types.ModuleName).Bytes()) + from := ERC20DeployerAddress() + ensureAccountExists(ctx, app, sdk.AccAddress(from.Bytes())) // Set the data erc20ABI := contracts.ERC20MinterBurnerDecimalsContract.ABI @@ -47,10 +73,11 @@ func DeployERC20(ctx sdk.Context, app *app.KiichainApp) (common.Address, error) return contractAddr, nil } -// MintERC20 mints an ERC20 token +// MintERC20 mints an ERC20 token using the same deployer EOA that owns the +// contract from DeployERC20. func MintERC20(ctx sdk.Context, app *app.KiichainApp, contractAddr common.Address, to common.Address, amount *big.Int) error { - // Sender must be an account with ETH balance and nonce tracking - from := common.BytesToAddress(authtypes.NewModuleAddress(erc20types.ModuleName).Bytes()) + from := ERC20DeployerAddress() + ensureAccountExists(ctx, app, sdk.AccAddress(from.Bytes())) // Load the ABI and pack the mint() call erc20ABI := contracts.ERC20MinterBurnerDecimalsContract.ABI @@ -71,14 +98,13 @@ func MintERC20(ctx sdk.Context, app *app.KiichainApp, contractAddr common.Addres // CreateERC20Allowance creates an ERC20 allowance func CreateERC20Allowance(ctx sdk.Context, app *app.KiichainApp, contractAddr common.Address, owner common.Address, spender common.Address, amount *big.Int) error { - // Load the ABI and pack the mint() call + // Load the ABI and pack the approve() call erc20ABI := contracts.ERC20MinterBurnerDecimalsContract.ABI inputData, err := erc20ABI.Pack("approve", spender, amount) if err != nil { return err } - // Send transaction to call mint stateDB := statedb.New(ctx, app.EVMKeeper, statedb.NewEmptyTxConfig()) _, err = app.EVMKeeper.CallEVMWithData(ctx, stateDB, owner, &contractAddr, inputData, true, false, nil) if err != nil { diff --git a/app/upgrades/v7_2/constants.go b/app/upgrades/v7_2/constants.go deleted file mode 100644 index 55dfe269..00000000 --- a/app/upgrades/v7_2/constants.go +++ /dev/null @@ -1,17 +0,0 @@ -package v720 - -import ( - "github.com/kiichain/kiichain/v7/app/upgrades" -) - -const ( - // UpgradeName is the name of the upgrade - UpgradeName = "v7.2.0" -) - -// Upgrade defines the upgrade, running module migrations to backfill the -// tokenfactory admin secondary index. -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - CreateUpgradeHandler: CreateUpgradeHandler, -} diff --git a/app/upgrades/v7_2/upgrade.go b/app/upgrades/v7_2/upgrade.go deleted file mode 100644 index b1b5d644..00000000 --- a/app/upgrades/v7_2/upgrade.go +++ /dev/null @@ -1,35 +0,0 @@ -package v720 - -import ( - "context" - - upgradetypes "cosmossdk.io/x/upgrade/types" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - - "github.com/kiichain/kiichain/v7/app/keepers" -) - -// CreateUpgradeHandler creates the upgrade handler for the v7.2.0 upgrade. -// It runs all pending module migrations, which includes the tokenfactory v1→v2 -// migration that backfills the secondary admin index. -func CreateUpgradeHandler( - mm *module.Manager, - configurator module.Configurator, - _ *keepers.AppKeepers, -) upgradetypes.UpgradeHandler { - return func(c context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - ctx := sdk.UnwrapSDKContext(c) - - ctx.Logger().Info("Starting module migrations for v7.2.0...") - - vm, err := mm.RunMigrations(ctx, configurator, vm) - if err != nil { - return vm, err - } - - ctx.Logger().Info("Upgrade v7.2.0 complete") - return vm, nil - } -} diff --git a/go.mod b/go.mod index 979a58ad..6978b150 100644 --- a/go.mod +++ b/go.mod @@ -311,7 +311,26 @@ replace ( // Use cosmos keyring github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 - // Use our fork w/ fee abstraction possibility + // Temporary private Cosmos EVM dependency for the coordinated v7.3.0 upgrade. + // + // Context: + // Cosmos Labs privately shared a July 2026 Cosmos EVM hotfix with affected + // chains ahead of public disclosure (precompile gas accounting alignment, + // StateDB locked-balance snapshotting, and related state-machine fixes). + // Those changes are state-machine-breaking, so validators must switch at a + // coordinated height. Until Cosmos publishes the fix upstream, we cannot + // source it from the public github.com/cosmos/evm or github.com/KiiChain/evm + // tags without leaking the patch early. + // + // Why github.com/KiiChain/evm-private: + // The hotfix is backported onto our existing fee-abstraction fork as + // v0.6.0-fork.3 and kept in a private mirror so operators can build and + // verify binaries before the public disclosure window. + // + // Follow-up: + // After Cosmos makes the corresponding release public, flip this replace + // back to the public KiiChain/evm (or upstream cosmos/evm) tag on the day + // after their public disclosure date, and remove the private-repo CI auth. github.com/cosmos/evm => github.com/KiiChain/evm-private v0.6.0-fork.3 // TODO: remove it: https://github.com/cosmos/cosmos-sdk/issues/13134 diff --git a/wasmbinding/evm/reflect_query_test.go b/wasmbinding/evm/reflect_query_test.go index 3b1ae2a5..d8a5ad26 100644 --- a/wasmbinding/evm/reflect_query_test.go +++ b/wasmbinding/evm/reflect_query_test.go @@ -12,9 +12,7 @@ import ( "github.com/stretchr/testify/require" sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - erc20types "github.com/cosmos/evm/x/erc20/types" "github.com/cosmos/evm/x/vm/statedb" app "github.com/kiichain/kiichain/v7/app" @@ -205,8 +203,10 @@ func TestQueryERC20Allowance(t *testing.T) { // deployCounter deploys the counter contract func deployCounter(t *testing.T, ctx sdk.Context, app *app.KiichainApp) common.Address { t.Helper() - // Select the from as the erc20 module address - from := common.BytesToAddress(authtypes.NewModuleAddress(erc20types.ModuleName).Bytes()) + from := apptesting.ERC20DeployerAddress() + if app.AccountKeeper.GetAccount(ctx, sdk.AccAddress(from.Bytes())) == nil { + app.AccountKeeper.SetAccount(ctx, app.AccountKeeper.NewAccountWithAddress(ctx, sdk.AccAddress(from.Bytes()))) + } // Set the data counterABI, err := mock.CounterMetaData.GetAbi() @@ -230,8 +230,10 @@ func deployCounter(t *testing.T, ctx sdk.Context, app *app.KiichainApp) common.A // incrementCounter increments the counter in the contract func incrementCounter(t *testing.T, ctx sdk.Context, app *app.KiichainApp, contractAddr common.Address) { t.Helper() - // Sender must be an account with ETH balance and nonce tracking - from := common.BytesToAddress(authtypes.NewModuleAddress(erc20types.ModuleName).Bytes()) + from := apptesting.ERC20DeployerAddress() + if app.AccountKeeper.GetAccount(ctx, sdk.AccAddress(from.Bytes())) == nil { + app.AccountKeeper.SetAccount(ctx, app.AccountKeeper.NewAccountWithAddress(ctx, sdk.AccAddress(from.Bytes()))) + } // Load the ABI and pack the increment() call counterABI, err := mock.CounterMetaData.GetAbi() diff --git a/x/feeabstraction/ante/cosmos/fee_test.go b/x/feeabstraction/ante/cosmos/fee_test.go index d78a8266..22e7aa76 100644 --- a/x/feeabstraction/ante/cosmos/fee_test.go +++ b/x/feeabstraction/ante/cosmos/fee_test.go @@ -31,7 +31,7 @@ import ( ) var ( - DefaultFirstERC20 = "0x80b5a32E4F032B2a058b4F29EC95EEfEEB87aDcd" + DefaultFirstERC20 = apptesting.DefaultFirstERC20 DefaultFirstERC20Denom = "erc20:" + DefaultFirstERC20 DefaultMinFeeValue = int64(875000000000000) diff --git a/x/feeabstraction/keeper/fee_test.go b/x/feeabstraction/keeper/fee_test.go index 8edb6c2b..24670d03 100644 --- a/x/feeabstraction/keeper/fee_test.go +++ b/x/feeabstraction/keeper/fee_test.go @@ -25,8 +25,8 @@ func (s *KeeperTestSuite) TestConvertNativeFee() { feePayer := apptesting.RandomAccountAddress() s.app.AccountKeeper.SetAccount(s.ctx, s.app.AccountKeeper.NewAccountWithAddress(s.ctx, feePayer)) - // Default erc20 address to use in tests - DefaultFirstERC20 := "0x80b5a32E4F032B2a058b4F29EC95EEfEEB87aDcd" + // Default erc20 address to use in tests (first DeployERC20 from apptesting deployer) + DefaultFirstERC20 := apptesting.DefaultFirstERC20 // Reactivate keeper since it was disabled on abci err := s.app.FeeAbstractionKeeper.Params.Set(s.ctx, types.DefaultParams()) From 16f740cf7462b9ac11f250abca486543e6f3f1eb Mon Sep 17 00:00:00 2001 From: mattkii <142337545+mattkii@users.noreply.github.com> Date: Wed, 22 Jul 2026 21:52:09 -0700 Subject: [PATCH 06/14] chore: address remaining release review nits Co-authored-by: Cursor --- .goreleaser.yml | 10 ++++------ Makefile | 6 +++--- RELEASE_NOTES.md | 2 +- app/apptesting/evm.go | 8 ++++---- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index ea3aa5e1..a5d87fa2 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -98,9 +98,8 @@ builds: - wget -O /lib/libwasmvm_muslc.x86_64.a https://github.com/CosmWasm/wasmvm/releases/download/{{ .Env.COSMWASM_VERSION }}/libwasmvm_muslc.x86_64.a - echo "cefe73f0caa5a9eaba3733c639cdf5040c4746a93c20670ba6c9287fe39448ba /lib/libwasmvm_muslc.x86_64.a" | sha256sum -c - cp /lib/libwasmvm_muslc.x86_64.a /lib/libwasmvm_muslc.a - - curl -LO https://musl.cc/x86_64-linux-musl-cross.tgz - - tar xf x86_64-linux-musl-cross.tgz - - mv x86_64-linux-musl-cross /opt/musl-cross + - curl -L https://musl.cc/x86_64-linux-musl-cross.tgz | tar xz -C /opt + - mv /opt/x86_64-linux-musl-cross /opt/musl-cross ldflags: - -s -w - -linkmode=external @@ -139,9 +138,8 @@ builds: - wget -O /lib/aarch64/libwasmvm_muslc.aarch64.a https://github.com/CosmWasm/wasmvm/releases/download/{{ .Env.COSMWASM_VERSION }}/libwasmvm_muslc.aarch64.a - echo "a04969b4f931be1d2e2f3f2313a68a20a202693f67559f7aaf1dd97250823aec /lib/aarch64/libwasmvm_muslc.aarch64.a" | sha256sum -c - cp /lib/aarch64/libwasmvm_muslc.aarch64.a /lib/aarch64/libwasmvm_muslc.a - - curl -LO https://musl.cc/aarch64-linux-musl-cross.tgz - - tar xf aarch64-linux-musl-cross.tgz - - mv aarch64-linux-musl-cross /opt/musl-cross-arm64 + - curl -L https://musl.cc/aarch64-linux-musl-cross.tgz | tar xz -C /opt + - mv /opt/aarch64-linux-musl-cross /opt/musl-cross-arm64 ldflags: - -s -w - -linkmode=external diff --git a/Makefile b/Makefile index 293d4829..3e69a4b1 100644 --- a/Makefile +++ b/Makefile @@ -171,7 +171,7 @@ ifneq ($(strip $(TAG)),) -e TM_VERSION=$(TM_VERSION) \ -e COSMWASM_VERSION=$(COSMWASM_VERSION) \ -v `pwd`:/go/src/kiichaind \ - -v $(GOMODCACHE):/go/pkg/mod \ + -v $(GOMODCACHE):/go/pkg/mod:ro \ -w /go/src/kiichaind \ $(GORELEASER_IMAGE) \ release \ @@ -215,7 +215,7 @@ goreleaser-build-local: -e TM_VERSION=$(TM_VERSION) \ -e COSMWASM_VERSION=$(COSMWASM_VERSION) \ -v `pwd`:/go/src/kiichaind \ - -v $(GOMODCACHE):/go/pkg/mod \ + -v $(GOMODCACHE):/go/pkg/mod:ro \ -w /go/src/kiichaind \ $(GORELEASER_IMAGE) \ release \ @@ -239,7 +239,7 @@ ci-release: -e TM_VERSION=$(TM_VERSION) \ -e COSMWASM_VERSION=$(COSMWASM_VERSION) \ -v `pwd`:/go/src/kiichaind \ - -v $(GOMODCACHE):/go/pkg/mod \ + -v $(GOMODCACHE):/go/pkg/mod:ro \ -w /go/src/kiichaind \ $(GORELEASER_IMAGE) \ release \ diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 1ff5086c..295ed6e5 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -2,7 +2,7 @@ > **Why binaries are attached:** This release ships prebuilt `kiichaind` binaries because the patched EVM dependency lives in the private `github.com/KiiChain/evm-private` mirror. **You cannot build this release from public source** until after Cosmos EVM’s public disclosure window. > -> **Public build-from-source release:** We will publish a follow-up public release (same binary hashes / equivalent public module path) **1 day after Cosmos EVM’s announced public disclosure date**. Until then, use only the binaries and checksums attached to this GitHub Release. +> **Public build-from-source release:** We will publish a follow-up public release with the public module path **1 day after Cosmos EVM’s announced public disclosure date**, and attach fresh checksums for that rebuild. Until then, use only the binaries and checksums attached to this GitHub Release. ## Summary diff --git a/app/apptesting/evm.go b/app/apptesting/evm.go index efc9ea58..4330bdf8 100644 --- a/app/apptesting/evm.go +++ b/app/apptesting/evm.go @@ -22,10 +22,6 @@ import ( // SetBalanceWithLocked after the Cosmos EVM locked-balance hotfix. const ERC20DeployerSeed = "kiichain/apptesting/erc20-deployer" -// DefaultFirstERC20 is the contract address produced by the first DeployERC20 -// call (deployer nonce 0) using ERC20DeployerAddress. -const DefaultFirstERC20 = "0xaF095889C624F74f349c59443D09E3958B227270" - // ERC20DeployerAddress returns the deterministic EOA used to deploy/mint test // ERC20 contracts. func ERC20DeployerAddress() common.Address { @@ -37,6 +33,10 @@ func ERC20DeployerAddress() common.Address { return crypto.PubkeyToAddress(key.PublicKey) } +// DefaultFirstERC20 is the contract address produced by the first DeployERC20 +// call (deployer nonce 0). +var DefaultFirstERC20 = crypto.CreateAddress(ERC20DeployerAddress(), 0).Hex() + // ensureAccountExists creates the account if missing so nonce tracking works. func ensureAccountExists(ctx sdk.Context, app *app.KiichainApp, addr sdk.AccAddress) { if app.AccountKeeper.GetAccount(ctx, addr) == nil { From 7e5471881430c5edf015e9a0907f19fbf0364ae7 Mon Sep 17 00:00:00 2001 From: mattkii <142337545+mattkii@users.noreply.github.com> Date: Wed, 22 Jul 2026 22:03:49 -0700 Subject: [PATCH 07/14] chore: prefetch modules before read-only goreleaser mounts Co-authored-by: Cursor --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index 3e69a4b1..6f825e5d 100644 --- a/Makefile +++ b/Makefile @@ -163,6 +163,7 @@ ifneq ($(strip $(TAG)),) @git tag -d $(TAG) @echo "--> Running goreleaser" @go install github.com/goreleaser/goreleaser@latest + @GOPRIVATE=github.com/KiiChain/* go mod download @docker run \ --rm \ -e CGO_ENABLED=1 \ @@ -207,6 +208,7 @@ build-static-linux-amd64: go.sum $(BUILDDIR)/ # uses goreleaser to create static binaries for darwin on local machine goreleaser-build-local: + GOPRIVATE=github.com/KiiChain/* go mod download docker run \ --rm \ -e CGO_ENABLED=1 \ @@ -230,6 +232,7 @@ goreleaser-build-local: # requires access to GITHUB_TOKEN which has to be available in the CI environment ifdef GITHUB_TOKEN ci-release: + GOPRIVATE=github.com/KiiChain/* go mod download docker run \ --rm \ -e CGO_ENABLED=1 \ From 5148f6c22c7f27bd4de9c4900e1d67cf7dc97da1 Mon Sep 17 00:00:00 2001 From: mattkii <142337545+mattkii@users.noreply.github.com> Date: Wed, 22 Jul 2026 22:40:11 -0700 Subject: [PATCH 08/14] docs: clarify private v7.3.0 release header Co-authored-by: Cursor --- RELEASE_NOTES.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 295ed6e5..82421886 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,8 +1,14 @@ # Kiichain v7.3.0 — Private Coordinated Release -> **Why binaries are attached:** This release ships prebuilt `kiichaind` binaries because the patched EVM dependency lives in the private `github.com/KiiChain/evm-private` mirror. **You cannot build this release from public source** until after Cosmos EVM’s public disclosure window. +> **Why binaries are attached:** Validators cannot build this release from public source. The patched EVM dependency is temporarily published only in the private `github.com/KiiChain/evm-private` mirror (`v0.6.0-fork.3`), following Cosmos Labs’ coordinated-disclosure process for the July 2026 Cosmos EVM hotfix. We are attaching prebuilt `kiichaind` binaries (and checksums) so operators can upgrade without needing private module access. > -> **Public build-from-source release:** We will publish a follow-up public release with the public module path **1 day after Cosmos EVM’s announced public disclosure date**, and attach fresh checksums for that rebuild. Until then, use only the binaries and checksums attached to this GitHub Release. +> **Cannot build from source (yet):** `go mod download` / `make build` against public GitHub will fail until the dependency is flipped back to a public module path. +> +> **Public build-from-source release:** A follow-up public release (public `KiiChain/evm` / upstream module path, with its own checksums) will be published **1 day after Cosmos EVM’s announced public disclosure date**. +> - Cosmos EVM public disclosure date: **TBD (fill from Cosmos announcement)** +> - Kiichain public build-from-source release target: **TBD + 1 day** +> +> Until that public release, use **only** the binaries and `SHA256SUMS-v7.3.0.txt` attached to this GitHub Release. ## Summary From e2c859b1928e8df7f5476f39498bf5890f0afe20 Mon Sep 17 00:00:00 2001 From: mattkii <142337545+mattkii@users.noreply.github.com> Date: Wed, 22 Jul 2026 22:40:34 -0700 Subject: [PATCH 09/14] docs: set Cosmos disclosure and public release dates Co-authored-by: Cursor --- RELEASE_NOTES.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 82421886..822b57de 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -5,8 +5,8 @@ > **Cannot build from source (yet):** `go mod download` / `make build` against public GitHub will fail until the dependency is flipped back to a public module path. > > **Public build-from-source release:** A follow-up public release (public `KiiChain/evm` / upstream module path, with its own checksums) will be published **1 day after Cosmos EVM’s announced public disclosure date**. -> - Cosmos EVM public disclosure date: **TBD (fill from Cosmos announcement)** -> - Kiichain public build-from-source release target: **TBD + 1 day** +> - Cosmos EVM public disclosure date: **July 27, 2026** +> - Kiichain public build-from-source release target: **July 28, 2026** > > Until that public release, use **only** the binaries and `SHA256SUMS-v7.3.0.txt` attached to this GitHub Release. From cedbf486bcdf1d7744b7506e7f3880eb21bd61c3 Mon Sep 17 00:00:00 2001 From: mattkii <142337545+mattkii@users.noreply.github.com> Date: Wed, 22 Jul 2026 22:42:30 -0700 Subject: [PATCH 10/14] fix: download musl toolchains to /opt during release builds Co-authored-by: Cursor --- .goreleaser.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index a5d87fa2..324536cd 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -98,7 +98,9 @@ builds: - wget -O /lib/libwasmvm_muslc.x86_64.a https://github.com/CosmWasm/wasmvm/releases/download/{{ .Env.COSMWASM_VERSION }}/libwasmvm_muslc.x86_64.a - echo "cefe73f0caa5a9eaba3733c639cdf5040c4746a93c20670ba6c9287fe39448ba /lib/libwasmvm_muslc.x86_64.a" | sha256sum -c - cp /lib/libwasmvm_muslc.x86_64.a /lib/libwasmvm_muslc.a - - curl -L https://musl.cc/x86_64-linux-musl-cross.tgz | tar xz -C /opt + - curl -L -o /opt/x86_64-linux-musl-cross.tgz https://musl.cc/x86_64-linux-musl-cross.tgz + - tar xf /opt/x86_64-linux-musl-cross.tgz -C /opt + - rm -f /opt/x86_64-linux-musl-cross.tgz - mv /opt/x86_64-linux-musl-cross /opt/musl-cross ldflags: - -s -w @@ -138,7 +140,9 @@ builds: - wget -O /lib/aarch64/libwasmvm_muslc.aarch64.a https://github.com/CosmWasm/wasmvm/releases/download/{{ .Env.COSMWASM_VERSION }}/libwasmvm_muslc.aarch64.a - echo "a04969b4f931be1d2e2f3f2313a68a20a202693f67559f7aaf1dd97250823aec /lib/aarch64/libwasmvm_muslc.aarch64.a" | sha256sum -c - cp /lib/aarch64/libwasmvm_muslc.aarch64.a /lib/aarch64/libwasmvm_muslc.a - - curl -L https://musl.cc/aarch64-linux-musl-cross.tgz | tar xz -C /opt + - curl -L -o /opt/aarch64-linux-musl-cross.tgz https://musl.cc/aarch64-linux-musl-cross.tgz + - tar xf /opt/aarch64-linux-musl-cross.tgz -C /opt + - rm -f /opt/aarch64-linux-musl-cross.tgz - mv /opt/aarch64-linux-musl-cross /opt/musl-cross-arm64 ldflags: - -s -w From f2fcc705f1c321996a2263606bc4d6e37017828d Mon Sep 17 00:00:00 2001 From: mattkii <142337545+mattkii@users.noreply.github.com> Date: Wed, 22 Jul 2026 23:18:21 -0700 Subject: [PATCH 11/14] docs: record v7.3.0 release checksums --- RELEASE_NOTES.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 822b57de..cefe3f7b 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -51,11 +51,11 @@ Build with `make goreleaser-build-local` using `--platform linux/amd64` for repr Verify downloads against `SHA256SUMS-v7.3.0.txt`. -### Reproduced checksums (linux/amd64 GoReleaser container) +### Checksums (`SHA256SUMS-v7.3.0.txt`) ```text -6dd640a9b9943856e5890e9705fb9f8267b80a36d0fb3ad6dd5e4cc64803c62a kiichaind-darwin-amd64 -b91dedaea1e822618ef05f2ac77e9c9baa6a2bbe26b2bc952972a92f8cff8bbf kiichaind-darwin-arm64 -b99a7dd0097fe377c7248a12184d3c0ff1efb1c7886db7e6b366fc1701225b01 kiichaind-linux-amd64 -46e553bee97c8bf68b3d5b14885497ad660735e36d4dc0b4c3788a96c662e688 kiichaind-linux-arm64 +c8de862ae2a57801c03165acab8b002b283513e14d39cc791b2e27fa70af9e6e kiichaind-v7.3.0-darwin-amd64 +f544123d3a7f4db6f5580b0170c7a822ae4f625834d577761637765bf8a0b5dc kiichaind-v7.3.0-darwin-arm64 +be366ab7e9508f958267010bfa9bdc5b44957705e1bda5a31cc95b47c4c91dfd kiichaind-v7.3.0-linux-amd64 +ccaece2adc055dbdc5b79b38b2e082d9f864720cae6d4eb2fea4c884e8c64a70 kiichaind-v7.3.0-linux-arm64 ``` From a48905f28af9b9bc083183e393e946799405cc82 Mon Sep 17 00:00:00 2001 From: mattkii <142337545+mattkii@users.noreply.github.com> Date: Fri, 24 Jul 2026 12:14:46 -0700 Subject: [PATCH 12/14] docs: update v7.3.0 checksums to reproduced linux hashes --- RELEASE_NOTES.md | 45 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index cefe3f7b..099ae022 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -21,10 +21,34 @@ Cosmos Labs shared a hotfix with affected chains ahead of public disclosure. The ## Changes +### Coordinated upgrade + - chore: update `github.com/cosmos/evm` replacement to `github.com/KiiChain/evm-private v0.6.0-fork.3`. - feat: add `v7.3.0` coordinated upgrade handler (module migrations only; no store migrations). - chore: strip completed `v7.2.0` upgrade handler. +### Kiichain ([KiiChain/kiichain](https://github.com/KiiChain/kiichain)) + +- [#341](https://github.com/KiiChain/kiichain/pull/341) fix: tokenfactory metadata size limit +- [#340](https://github.com/KiiChain/kiichain/pull/340) fix: distribution precompile 32-byte withdraw address inflates native supply +- [#344](https://github.com/KiiChain/kiichain/pull/344) fix: MsgVoteWeighted and Nested Authz Bypass Vote Stake Requirements +- [#343](https://github.com/KiiChain/kiichain/pull/343) fix: Feegrant Denomination Bypass via Post-Allowance Fee Conversion +- [#342](https://github.com/KiiChain/kiichain/pull/342) fix: add authz guarded router +- [#345](https://github.com/KiiChain/kiichain/pull/345) fix: cosmwasm evm query path repeatable undercharged evm exec +- [#346](https://github.com/KiiChain/kiichain/pull/346) fix: prevent rewards BeginBlocker chain halt on bank transfer failure +- [#347](https://github.com/KiiChain/kiichain/pull/347) fix: Reward Pool Exhaustion via Forced Minimum 1-Unit-Per-Block Release +- [#350](https://github.com/KiiChain/kiichain/pull/350) fix: EIP-7702 Delegated EOAs Permanently Locked Out +- [#352](https://github.com/KiiChain/kiichain/pull/352) fix: Oracle Slashing Bypass via voteTargets Map Mutation +- [#354](https://github.com/KiiChain/kiichain/pull/354) fix: Unweighted Oracle Standard Deviation Inflates Reward Band +- [#353](https://github.com/KiiChain/kiichain/pull/353) fix: Expedited Governance Proposal Whitelist Bypass via authz Wrapping +- [#365](https://github.com/KiiChain/kiichain/pull/365) chore: bump evm fork + +### EVM ([KiiChain/evm](https://github.com/KiiChain/evm)) + +- [#16](https://github.com/KiiChain/evm/pull/16) fix: distribution precompile 32-byte withdraw address inflates native supply +- [#17](https://github.com/KiiChain/evm/pull/17) fix: evm fees refund +- [#18](https://github.com/KiiChain/evm/pull/18) fix: cosmwasm evm query path repeatable undercharged evm exec + ## Upgrade - Upgrade name: `v7.3.0` @@ -40,22 +64,23 @@ Cosmos Labs shared a hotfix with affected chains ahead of public disclosure. The ## Binaries -Build with `make goreleaser-build-local` using `--platform linux/amd64` for reproducible hashes across machines. +**Validators: use the Linux prebuilt binaries only.** Do not build from public source for this release, and do not use Darwin artifacts on validator nodes. + +Release linux/darwin hashes were reproduced from tag `v7.3.0` (`cedbf48`) via GoReleaser release mode (no `--snapshot`). Verify downloads against `SHA256SUMS-v7.3.0.txt` below. -| OS | Arch | Artifact | -| ------ | ----- | --------------------------------- | -| linux | amd64 | `kiichaind-v7.3.0-linux-amd64` | -| linux | arm64 | `kiichaind-v7.3.0-linux-arm64` | -| darwin | arm64 | `kiichaind-v7.3.0-darwin-arm64` | -| darwin | amd64 | `kiichaind-v7.3.0-darwin-amd64` | +| Role | OS | Arch | Artifact | +| ---- | -- | ---- | -------- | +| **Validator (recommended)** | linux | amd64 | `kiichaind-v7.3.0-linux-amd64` | +| Validator (ARM hosts) | linux | arm64 | `kiichaind-v7.3.0-linux-arm64` | +| Local Mac only (not for validators) | darwin | amd64 / arm64 | `kiichaind-v7.3.0-darwin-*` | -Verify downloads against `SHA256SUMS-v7.3.0.txt`. +Verify downloads against `SHA256SUMS-v7.3.0.txt`. After install, `kiichaind version` should report `v7.3.0` (commit `cedbf486bcdf1d7744b7506e7f3880eb21bd61c3`). ### Checksums (`SHA256SUMS-v7.3.0.txt`) ```text +be9f08d4d04d4d2f6eb576c59415a7bd8965f03d8893e4a95c25b22584f3bc44 kiichaind-v7.3.0-linux-amd64 +b65d99295c8ead7708ceed21a3c1f36e096a0c7160f939fe6dbc36b64f08875d kiichaind-v7.3.0-linux-arm64 c8de862ae2a57801c03165acab8b002b283513e14d39cc791b2e27fa70af9e6e kiichaind-v7.3.0-darwin-amd64 f544123d3a7f4db6f5580b0170c7a822ae4f625834d577761637765bf8a0b5dc kiichaind-v7.3.0-darwin-arm64 -be366ab7e9508f958267010bfa9bdc5b44957705e1bda5a31cc95b47c4c91dfd kiichaind-v7.3.0-linux-amd64 -ccaece2adc055dbdc5b79b38b2e082d9f864720cae6d4eb2fea4c884e8c64a70 kiichaind-v7.3.0-linux-arm64 ``` From 569cd3fe2981cf98155d3cdf16baab648cec8b2f Mon Sep 17 00:00:00 2001 From: mattkii <142337545+mattkii@users.noreply.github.com> Date: Tue, 28 Jul 2026 07:30:42 -0700 Subject: [PATCH 13/14] chore: use public evm fork v0.6.1-fork.1 --- CHANGELOG.md | 2 +- Makefile | 9 +++---- RELEASE_NOTES.md | 44 +++++++++------------------------- app/upgrades/v7_3/constants.go | 4 ++-- app/upgrades/v7_3/upgrade.go | 2 +- go.mod | 23 ++---------------- go.sum | 4 ++-- 7 files changed, 22 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29ccc434..b9f07f8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ ### Dependencies - [EVM](https://github.com/KiiChain/evm) fork from v0.6.0-fork.1 to [v0.6.0-fork.2](https://github.com/KiiChain/evm/releases/tag/v0.6.0-fork.2): bounded internal EVM call gas limit, EVM fee refunds, distribution precompile 32-byte withdraw fix, and CosmWasm EVM query undercharge fix -- EVM fork bump from `v0.6.0-fork.2` to `v0.6.0-fork.3`, applied via the coordinated `v7.3.0` upgrade. This is a **private coordinated upgrade** following Cosmos Labs' recommended coordinated-disclosure process for the July 2026 Cosmos EVM hotfix (precompile gas accounting alignment and StateDB locked-balance snapshotting). Until Cosmos publishes the fix, the dependency is temporarily sourced from the private `github.com/KiiChain/evm-private` mirror so binaries can be built and verified without leaking the patch early. The dependency will be flipped back to the public `github.com/KiiChain/evm` tag the day after Cosmos makes the corresponding release public on their end. +- [EVM](https://github.com/KiiChain/evm) fork bump from `v0.6.0-fork.2` to [v0.6.1-fork.1](https://github.com/KiiChain/evm/releases/tag/v0.6.1-fork.1), applied via the coordinated `v7.3.0` upgrade: the July 2026 Cosmos EVM hotfix (precompile gas accounting alignment and StateDB locked-balance snapshotting), published upstream as [cosmos/evm v0.6.1](https://github.com/cosmos/evm/releases/tag/v0.6.1) ### Added diff --git a/Makefile b/Makefile index 6f825e5d..d06d184f 100644 --- a/Makefile +++ b/Makefile @@ -163,11 +163,10 @@ ifneq ($(strip $(TAG)),) @git tag -d $(TAG) @echo "--> Running goreleaser" @go install github.com/goreleaser/goreleaser@latest - @GOPRIVATE=github.com/KiiChain/* go mod download + @go mod download @docker run \ --rm \ -e CGO_ENABLED=1 \ - -e GOPRIVATE=github.com/KiiChain/* \ -e GOMODCACHE=/go/pkg/mod \ -e TM_VERSION=$(TM_VERSION) \ -e COSMWASM_VERSION=$(COSMWASM_VERSION) \ @@ -208,11 +207,10 @@ build-static-linux-amd64: go.sum $(BUILDDIR)/ # uses goreleaser to create static binaries for darwin on local machine goreleaser-build-local: - GOPRIVATE=github.com/KiiChain/* go mod download + go mod download docker run \ --rm \ -e CGO_ENABLED=1 \ - -e GOPRIVATE=github.com/KiiChain/* \ -e GOMODCACHE=/go/pkg/mod \ -e TM_VERSION=$(TM_VERSION) \ -e COSMWASM_VERSION=$(COSMWASM_VERSION) \ @@ -232,12 +230,11 @@ goreleaser-build-local: # requires access to GITHUB_TOKEN which has to be available in the CI environment ifdef GITHUB_TOKEN ci-release: - GOPRIVATE=github.com/KiiChain/* go mod download + go mod download docker run \ --rm \ -e CGO_ENABLED=1 \ -e GITHUB_TOKEN=$(GITHUB_TOKEN) \ - -e GOPRIVATE=github.com/KiiChain/* \ -e GOMODCACHE=/go/pkg/mod \ -e TM_VERSION=$(TM_VERSION) \ -e COSMWASM_VERSION=$(COSMWASM_VERSION) \ diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 099ae022..3957396b 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,29 +1,17 @@ -# Kiichain v7.3.0 — Private Coordinated Release - -> **Why binaries are attached:** Validators cannot build this release from public source. The patched EVM dependency is temporarily published only in the private `github.com/KiiChain/evm-private` mirror (`v0.6.0-fork.3`), following Cosmos Labs’ coordinated-disclosure process for the July 2026 Cosmos EVM hotfix. We are attaching prebuilt `kiichaind` binaries (and checksums) so operators can upgrade without needing private module access. -> -> **Cannot build from source (yet):** `go mod download` / `make build` against public GitHub will fail until the dependency is flipped back to a public module path. -> -> **Public build-from-source release:** A follow-up public release (public `KiiChain/evm` / upstream module path, with its own checksums) will be published **1 day after Cosmos EVM’s announced public disclosure date**. -> - Cosmos EVM public disclosure date: **July 27, 2026** -> - Kiichain public build-from-source release target: **July 28, 2026** -> -> Until that public release, use **only** the binaries and `SHA256SUMS-v7.3.0.txt` attached to this GitHub Release. +# Kiichain v7.3.0 ## Summary Coordinated `v7.3.0` upgrade that bumps the EVM dependency to -`KiiChain/evm-private v0.6.0-fork.3` (Cosmos Labs–coordinated July 2026 Cosmos EVM hotfix backported onto our fee-abstraction fork). This release is **state-machine-breaking** and must be applied by all validators at the same block height. +[`KiiChain/evm v0.6.1-fork.1`](https://github.com/KiiChain/evm/releases/tag/v0.6.1-fork.1), carrying the July 2026 Cosmos EVM hotfix ([cosmos/evm v0.6.1](https://github.com/cosmos/evm/releases/tag/v0.6.1)) on top of our fee-abstraction fork. This release is **state-machine-breaking** and must be applied by all validators at the same block height. -## Why private? - -Cosmos Labs shared a hotfix with affected chains ahead of public disclosure. The changes are consensus-breaking (precompile gas accounting alignment, StateDB locked-balance snapshotting, and related fixes), so every validator must switch at a coordinated height. Publishing the patch in a public Go module before Cosmos’s disclosure date would leak the fix early, so the dependency is temporarily sourced from `github.com/KiiChain/evm-private`. +The hotfix was developed under Cosmos Labs' coordinated-disclosure process and is now public upstream, so this release builds from public source — `make build` and `make install` work without private module access. ## Changes ### Coordinated upgrade -- chore: update `github.com/cosmos/evm` replacement to `github.com/KiiChain/evm-private v0.6.0-fork.3`. +- chore: update `github.com/cosmos/evm` replacement to `github.com/KiiChain/evm v0.6.1-fork.1`. - feat: add `v7.3.0` coordinated upgrade handler (module migrations only; no store migrations). - chore: strip completed `v7.2.0` upgrade handler. @@ -48,6 +36,7 @@ Cosmos Labs shared a hotfix with affected chains ahead of public disclosure. The - [#16](https://github.com/KiiChain/evm/pull/16) fix: distribution precompile 32-byte withdraw address inflates native supply - [#17](https://github.com/KiiChain/evm/pull/17) fix: evm fees refund - [#18](https://github.com/KiiChain/evm/pull/18) fix: cosmwasm evm query path repeatable undercharged evm exec +- [#19](https://github.com/KiiChain/evm/pull/19) fix: port July 2026 Cosmos EVM hotfix (upstream `v0.6.1`) ## Upgrade @@ -59,28 +48,17 @@ Cosmos Labs shared a hotfix with affected chains ahead of public disclosure. The ## Rollout order 1. Plata (devnet) — done -2. Oro (testnet) — governance proposal +2. Oro (testnet) — done, applied at height 33,659,735 3. Mainnet — governance proposal ## Binaries -**Validators: use the Linux prebuilt binaries only.** Do not build from public source for this release, and do not use Darwin artifacts on validator nodes. - -Release linux/darwin hashes were reproduced from tag `v7.3.0` (`cedbf48`) via GoReleaser release mode (no `--snapshot`). Verify downloads against `SHA256SUMS-v7.3.0.txt` below. +Validators can either build from source or use the prebuilt linux binaries attached to this release. | Role | OS | Arch | Artifact | | ---- | -- | ---- | -------- | -| **Validator (recommended)** | linux | amd64 | `kiichaind-v7.3.0-linux-amd64` | -| Validator (ARM hosts) | linux | arm64 | `kiichaind-v7.3.0-linux-arm64` | -| Local Mac only (not for validators) | darwin | amd64 / arm64 | `kiichaind-v7.3.0-darwin-*` | - -Verify downloads against `SHA256SUMS-v7.3.0.txt`. After install, `kiichaind version` should report `v7.3.0` (commit `cedbf486bcdf1d7744b7506e7f3880eb21bd61c3`). - -### Checksums (`SHA256SUMS-v7.3.0.txt`) +| **Validator (recommended)** | linux | amd64 | `kiichaind-linux-amd64` | +| Validator (ARM hosts) | linux | arm64 | `kiichaind-linux-arm64` | +| Local Mac only (not for validators) | darwin | amd64 / arm64 | `kiichaind-darwin-*` | -```text -be9f08d4d04d4d2f6eb576c59415a7bd8965f03d8893e4a95c25b22584f3bc44 kiichaind-v7.3.0-linux-amd64 -b65d99295c8ead7708ceed21a3c1f36e096a0c7160f939fe6dbc36b64f08875d kiichaind-v7.3.0-linux-arm64 -c8de862ae2a57801c03165acab8b002b283513e14d39cc791b2e27fa70af9e6e kiichaind-v7.3.0-darwin-amd64 -f544123d3a7f4db6f5580b0170c7a822ae4f625834d577761637765bf8a0b5dc kiichaind-v7.3.0-darwin-arm64 -``` +Verify downloads against the `SHA256SUMS` file attached to this release, and confirm `kiichaind version` reports the released tag before staging the binary in cosmovisor under the upgrade name `v7.3.0`. diff --git a/app/upgrades/v7_3/constants.go b/app/upgrades/v7_3/constants.go index de1d1e25..5b8bff35 100644 --- a/app/upgrades/v7_3/constants.go +++ b/app/upgrades/v7_3/constants.go @@ -9,8 +9,8 @@ const ( UpgradeName = "v7.3.0" ) -// Upgrade defines the coordinated upgrade for the EVM v0.6.0-fork.3 dependency -// bump. The fork.3 changes (precompile gas accounting, statedb locked-balance +// Upgrade defines the coordinated upgrade for the EVM v0.6.1-fork.1 dependency +// bump. Those changes (precompile gas accounting, statedb locked-balance // handling, and feemarket EndBlock) are state-machine-breaking, so this upgrade // ensures every validator switches to the new binary at the same height. No // store migrations are required. diff --git a/app/upgrades/v7_3/upgrade.go b/app/upgrades/v7_3/upgrade.go index 99256fc1..f11e4e7b 100644 --- a/app/upgrades/v7_3/upgrade.go +++ b/app/upgrades/v7_3/upgrade.go @@ -12,7 +12,7 @@ import ( ) // CreateUpgradeHandler creates the upgrade handler for the v7.3.0 upgrade. -// This upgrade coordinates the switch to the EVM v0.6.0-fork.3 dependency, whose +// This upgrade coordinates the switch to the EVM v0.6.1-fork.1 dependency, whose // changes are state-machine-breaking. No custom state migrations are needed, so // the handler only runs pending module migrations. func CreateUpgradeHandler( diff --git a/go.mod b/go.mod index 6978b150..b8fdcd6e 100644 --- a/go.mod +++ b/go.mod @@ -311,27 +311,8 @@ replace ( // Use cosmos keyring github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 - // Temporary private Cosmos EVM dependency for the coordinated v7.3.0 upgrade. - // - // Context: - // Cosmos Labs privately shared a July 2026 Cosmos EVM hotfix with affected - // chains ahead of public disclosure (precompile gas accounting alignment, - // StateDB locked-balance snapshotting, and related state-machine fixes). - // Those changes are state-machine-breaking, so validators must switch at a - // coordinated height. Until Cosmos publishes the fix upstream, we cannot - // source it from the public github.com/cosmos/evm or github.com/KiiChain/evm - // tags without leaking the patch early. - // - // Why github.com/KiiChain/evm-private: - // The hotfix is backported onto our existing fee-abstraction fork as - // v0.6.0-fork.3 and kept in a private mirror so operators can build and - // verify binaries before the public disclosure window. - // - // Follow-up: - // After Cosmos makes the corresponding release public, flip this replace - // back to the public KiiChain/evm (or upstream cosmos/evm) tag on the day - // after their public disclosure date, and remove the private-repo CI auth. - github.com/cosmos/evm => github.com/KiiChain/evm-private v0.6.0-fork.3 + // Use our fork w/ fee abstraction possibility + github.com/cosmos/evm => github.com/KiiChain/evm v0.6.1-fork.1 // TODO: remove it: https://github.com/cosmos/cosmos-sdk/issues/13134 github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2 diff --git a/go.sum b/go.sum index efb9321b..9d3626f3 100644 --- a/go.sum +++ b/go.sum @@ -705,8 +705,8 @@ github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXY github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM= -github.com/KiiChain/evm-private v0.6.0-fork.3 h1:q3o5VyBIlWPg35+a4QFKD9MypLvt8HlaQyMcZkUOYDM= -github.com/KiiChain/evm-private v0.6.0-fork.3/go.mod h1:QnaJDtxqon2mywiYqxM8VwW8FKeFazi0au0qzVpFAG8= +github.com/KiiChain/evm v0.6.1-fork.1 h1:o6kbWW26YbiSW2NSAIi1Nf1Cty66HvXm60Ki5hzb7Uo= +github.com/KiiChain/evm v0.6.1-fork.1/go.mod h1:QnaJDtxqon2mywiYqxM8VwW8FKeFazi0au0qzVpFAG8= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= From 1d36d0e09007bd8bf1d1f29469601ddfbbfc3a92 Mon Sep 17 00:00:00 2001 From: mattkii <142337545+mattkii@users.noreply.github.com> Date: Tue, 28 Jul 2026 10:43:28 -0700 Subject: [PATCH 14/14] chore: drop RELEASE_NOTES.md in favor of generated notes --- Makefile | 2 -- RELEASE_NOTES.md | 64 ------------------------------------------------ 2 files changed, 66 deletions(-) delete mode 100644 RELEASE_NOTES.md diff --git a/Makefile b/Makefile index d06d184f..cc2dc35c 100644 --- a/Makefile +++ b/Makefile @@ -221,7 +221,6 @@ goreleaser-build-local: release \ --snapshot \ --skip=publish \ - --release-notes ./RELEASE_NOTES.md \ --timeout 90m \ --verbose \ --clean @@ -243,7 +242,6 @@ ci-release: -w /go/src/kiichaind \ $(GORELEASER_IMAGE) \ release \ - --release-notes ./RELEASE_NOTES.md \ --timeout=90m \ --clean else diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md deleted file mode 100644 index 3957396b..00000000 --- a/RELEASE_NOTES.md +++ /dev/null @@ -1,64 +0,0 @@ -# Kiichain v7.3.0 - -## Summary - -Coordinated `v7.3.0` upgrade that bumps the EVM dependency to -[`KiiChain/evm v0.6.1-fork.1`](https://github.com/KiiChain/evm/releases/tag/v0.6.1-fork.1), carrying the July 2026 Cosmos EVM hotfix ([cosmos/evm v0.6.1](https://github.com/cosmos/evm/releases/tag/v0.6.1)) on top of our fee-abstraction fork. This release is **state-machine-breaking** and must be applied by all validators at the same block height. - -The hotfix was developed under Cosmos Labs' coordinated-disclosure process and is now public upstream, so this release builds from public source — `make build` and `make install` work without private module access. - -## Changes - -### Coordinated upgrade - -- chore: update `github.com/cosmos/evm` replacement to `github.com/KiiChain/evm v0.6.1-fork.1`. -- feat: add `v7.3.0` coordinated upgrade handler (module migrations only; no store migrations). -- chore: strip completed `v7.2.0` upgrade handler. - -### Kiichain ([KiiChain/kiichain](https://github.com/KiiChain/kiichain)) - -- [#341](https://github.com/KiiChain/kiichain/pull/341) fix: tokenfactory metadata size limit -- [#340](https://github.com/KiiChain/kiichain/pull/340) fix: distribution precompile 32-byte withdraw address inflates native supply -- [#344](https://github.com/KiiChain/kiichain/pull/344) fix: MsgVoteWeighted and Nested Authz Bypass Vote Stake Requirements -- [#343](https://github.com/KiiChain/kiichain/pull/343) fix: Feegrant Denomination Bypass via Post-Allowance Fee Conversion -- [#342](https://github.com/KiiChain/kiichain/pull/342) fix: add authz guarded router -- [#345](https://github.com/KiiChain/kiichain/pull/345) fix: cosmwasm evm query path repeatable undercharged evm exec -- [#346](https://github.com/KiiChain/kiichain/pull/346) fix: prevent rewards BeginBlocker chain halt on bank transfer failure -- [#347](https://github.com/KiiChain/kiichain/pull/347) fix: Reward Pool Exhaustion via Forced Minimum 1-Unit-Per-Block Release -- [#350](https://github.com/KiiChain/kiichain/pull/350) fix: EIP-7702 Delegated EOAs Permanently Locked Out -- [#352](https://github.com/KiiChain/kiichain/pull/352) fix: Oracle Slashing Bypass via voteTargets Map Mutation -- [#354](https://github.com/KiiChain/kiichain/pull/354) fix: Unweighted Oracle Standard Deviation Inflates Reward Band -- [#353](https://github.com/KiiChain/kiichain/pull/353) fix: Expedited Governance Proposal Whitelist Bypass via authz Wrapping -- [#365](https://github.com/KiiChain/kiichain/pull/365) chore: bump evm fork - -### EVM ([KiiChain/evm](https://github.com/KiiChain/evm)) - -- [#16](https://github.com/KiiChain/evm/pull/16) fix: distribution precompile 32-byte withdraw address inflates native supply -- [#17](https://github.com/KiiChain/evm/pull/17) fix: evm fees refund -- [#18](https://github.com/KiiChain/evm/pull/18) fix: cosmwasm evm query path repeatable undercharged evm exec -- [#19](https://github.com/KiiChain/evm/pull/19) fix: port July 2026 Cosmos EVM hotfix (upstream `v0.6.1`) - -## Upgrade - -- Upgrade name: `v7.3.0` -- Consensus-breaking: **yes** — every validator must be running this binary by the upgrade height. -- Mechanism: governance `software-upgrade` proposal scheduling height per network; cosmovisor swaps the binary at the height. -- Store migrations: none required. - -## Rollout order - -1. Plata (devnet) — done -2. Oro (testnet) — done, applied at height 33,659,735 -3. Mainnet — governance proposal - -## Binaries - -Validators can either build from source or use the prebuilt linux binaries attached to this release. - -| Role | OS | Arch | Artifact | -| ---- | -- | ---- | -------- | -| **Validator (recommended)** | linux | amd64 | `kiichaind-linux-amd64` | -| Validator (ARM hosts) | linux | arm64 | `kiichaind-linux-arm64` | -| Local Mac only (not for validators) | darwin | amd64 / arm64 | `kiichaind-darwin-*` | - -Verify downloads against the `SHA256SUMS` file attached to this release, and confirm `kiichaind version` reports the released tag before staging the binary in cosmovisor under the upgrade name `v7.3.0`.