Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
* [#3990](https://github.com/sei-protocol/sei-chain/pull/3990) Freeze mode is limited to full nodes and disables transaction and evidence submission, mempool gossip, and state sync from startup while preserving query RPC and mempool-backed reads. Frozen and Autobahn nodes no longer advertise the unused mempool P2P channel.

### Upgrade guide
* **IBC core removal.** Removes the retired IBC core source, protobufs, light clients, CLI, and simulation support. Retired IBC stores remain mounted but are omitted from `export-genesis`; preserve the state database or use v6.6 freeze nodes for historical IBC data.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[suggestion] export-genesis is not a command in this repo. The CLI is seid export (sei-cosmos/server/export.go:41, registered via ExportCmd in sei-cosmos/server/util.go:369), backed by App.ExportAppStateAndValidators. The substance is correct — the retired modules are no longer in the module manager, so their state is not exported — but an operator following this upgrade guide will get an unknown-command error. The identical string was removed from docs/ibc_retirement.md; this copy was missed.

* **IBC transfer removal.** Removes ICS-20 execution, module APIs, CLI commands, CosmWasm transfer messages, transfer codecs, and transfer keeper integration, including the IBC EVM precompile's keeper injection. The transfer store and module account remain materialized for state compatibility. Transfer queries, historical transfer transaction decoding, and pre-v6.7 IBC precompile tracing must be served by v6.6 freeze nodes; v6.7 nodes do not provide them.
* **IBC query removal.** Removes the IBC core gRPC, REST, Protobuf, raw ABCI store, and native CosmWasm query APIs, along with CLI query commands. Historical IBC queries must be served by v6.6 freeze nodes.
* **Capability removal.** Removes the capability module and its IBC, transfer, and CosmWasm integrations. The capability store remains mounted for historical state access in freeze mode.
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ For the most up to date documentation please visit https://www.docs.sei.io/
Developer reference in this repo: [EVM JSON-RPC explicitly unsupported methods](docs/evm_jsonrpc_unsupported.md) (methods that return `-32000` with a clear message).

Starting with v6.7, IBC module source and wiring are removed. IBC queries, historical transfer transaction decoding, and pre-v6.7 IBC precompile tracing are not served by v6.7 nodes. Run a v6.6 freeze node to serve pre-v6.7 IBC history.
See [IBC retirement](docs/ibc_retirement.md) for the retained CosmWasm and state behavior.

# Sei Optimizations
Sei introduces four major innovations:
Expand Down
3 changes: 3 additions & 0 deletions app/upgrade_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/sei-protocol/sei-chain/sei-cosmos/crypto/keys/secp256k1"
sdk "github.com/sei-protocol/sei-chain/sei-cosmos/types"
"github.com/sei-protocol/sei-chain/sei-cosmos/x/upgrade/types"
storekeys "github.com/sei-protocol/sei-chain/sei-db/common/keys"
abci "github.com/sei-protocol/sei-chain/sei-tendermint/abci/types"
tmproto "github.com/sei-protocol/sei-chain/sei-tendermint/proto/tendermint/types"
"github.com/stretchr/testify/require"
Expand Down Expand Up @@ -38,6 +39,7 @@ func TestV67RemovesRetiredModuleVersions(t *testing.T) {
testWrapper.App.RegisterUpgradeHandlers()

versionMap := testWrapper.App.UpgradeKeeper.GetModuleVersionMap(testWrapper.Ctx)
versionMap[storekeys.IBCStoreKey] = 1
versionMap["capability"] = 1
versionMap["feegrant"] = 1
versionMap["transfer"] = 2
Expand All @@ -49,6 +51,7 @@ func TestV67RemovesRetiredModuleVersions(t *testing.T) {
})

versionMap = testWrapper.App.UpgradeKeeper.GetModuleVersionMap(testWrapper.Ctx)
require.NotContains(t, versionMap, storekeys.IBCStoreKey)
require.NotContains(t, versionMap, "capability")
require.NotContains(t, versionMap, "feegrant")
require.NotContains(t, versionMap, "transfer")
Expand Down
2 changes: 2 additions & 0 deletions app/upgrades.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
sdk "github.com/sei-protocol/sei-chain/sei-cosmos/types"
"github.com/sei-protocol/sei-chain/sei-cosmos/types/module"
upgradetypes "github.com/sei-protocol/sei-chain/sei-cosmos/x/upgrade/types"
storekeys "github.com/sei-protocol/sei-chain/sei-db/common/keys"
"golang.org/x/mod/semver"
)

Expand Down Expand Up @@ -97,6 +98,7 @@ func (app *App) RegisterUpgradeHandlers() {
if err != nil {
return nil, err
}
app.UpgradeKeeper.DeleteModuleVersion(ctx, storekeys.IBCStoreKey)
app.UpgradeKeeper.DeleteModuleVersion(ctx, capabilityModuleName)
app.UpgradeKeeper.DeleteModuleVersion(ctx, feegrantModuleName)
app.UpgradeKeeper.DeleteModuleVersion(ctx, transferModuleName)
Expand Down
15 changes: 15 additions & 0 deletions docs/ibc_retirement.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# IBC retirement

IBC core and ICS-20 execution are removed from v6.7 nodes. Pre-v6.7 IBC
history, transaction decoding, queries, and precompile tracing are served by
v6.6 freeze nodes.

CosmWasm contracts retain their recorded IBC port metadata. During contract
execution, the `PortID` query remains available. Channel and channel-list
queries are unsupported, and every IBC send, transfer, or close message returns
a deterministic unsupported-operation error. ABCI smart queries do not expose
IBC data.

The `ibc`, `transfer`, and `capability` stores remain mounted for state
compatibility. Preserve the state database when those retired stores are
required.
12 changes: 6 additions & 6 deletions mod_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import (
"golang.org/x/mod/module"
)

// bannedUpstream lists original upstream modules that sei has forked into local
// subdirectories. Neither go.mod nor go.sum should reference these.
// bannedUpstream lists upstream modules that Sei does not depend on directly.
// Most have local forks; IBC is retired.
var bannedUpstream = []string{
"github.com/tendermint/tendermint",
"github.com/cosmos/cosmos-sdk",
Expand All @@ -37,7 +37,7 @@ func isBannedModule(modPath string) (banned string, ok bool) {
}

// TestGoMod_NoBannedDependencies ensures that go.mod require directives never
// reference original upstream modules that sei has forked.
// reference banned upstream modules.
//
// Module paths may carry a major-version suffix (e.g. github.com/cosmos/ibc-go/v6).
// The check strips the suffix with module.SplitPathVersion before comparing,
Expand All @@ -54,13 +54,13 @@ func TestGoMod_NoBannedDependencies(t *testing.T) {

for _, req := range f.Require {
banned, ok := isBannedModule(req.Mod.Path)
require.Falsef(t, ok, "go.mod must not depend on %s (use local fork instead), but found: %s %s",
require.Falsef(t, ok, "go.mod must not depend on banned module %s, but found: %s %s",
banned, req.Mod.Path, req.Mod.Version)
}
}

// TestGoSum_NoBannedDependencies ensures that go.sum never contains checksums
// for original upstream modules that sei has forked.
// for banned upstream modules.
func TestGoSum_NoBannedDependencies(t *testing.T) {
f, err := os.Open("go.sum")
require.NoError(t, err)
Expand All @@ -75,7 +75,7 @@ func TestGoSum_NoBannedDependencies(t *testing.T) {
continue
}
banned, ok := isBannedModule(modPath)
require.Falsef(t, ok, "go.sum must not reference %s (use local fork instead), but found: %s",
require.Falsef(t, ok, "go.sum must not reference banned module %s, but found: %s",
banned, line)
}
require.NoError(t, scanner.Err())
Expand Down
3 changes: 0 additions & 3 deletions sei-wasmd/contrib/relayer-tests/.gitignore

This file was deleted.

13 changes: 0 additions & 13 deletions sei-wasmd/contrib/relayer-tests/README.md

This file was deleted.

This file was deleted.

This file was deleted.

63 changes: 0 additions & 63 deletions sei-wasmd/contrib/relayer-tests/init_two_chainz_relayer.sh

This file was deleted.

116 changes: 0 additions & 116 deletions sei-wasmd/contrib/relayer-tests/one_chain.sh

This file was deleted.

5 changes: 3 additions & 2 deletions sei-wasmd/x/wasm/types/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,9 @@ var (
// ErrDuplicate error for content that exists
ErrDuplicate = sdkErrors.Register(DefaultCodespace, 15, "duplicate")

// ErrMaxIBCChannels error for maximum number of ibc channels reached
ErrMaxIBCChannels = sdkErrors.Register(DefaultCodespace, 16, "max transfer channels")
Comment thread
seidroid[bot] marked this conversation as resolved.
// Error for maximum number of ibc channels reached is no longer supported since
// IBC is removed. This variable is kept for reserving the code registration.
_ = sdkErrors.Register(DefaultCodespace, 16, "max transfer channels")

// ErrUnsupportedForContract error when a feature is used that is not supported for/ by this contract
ErrUnsupportedForContract = sdkErrors.Register(DefaultCodespace, 17, "unsupported for this contract")
Expand Down
Loading