From 34cdfea0a07a03a68d443a0e817c62e1aa7f068b Mon Sep 17 00:00:00 2001 From: Aleksei Kokinos Date: Wed, 29 Oct 2025 18:51:00 +0700 Subject: [PATCH 1/5] update evm mod for ed25519 precompile support --- contrib/localnet/init.sh | 17 ++++++++++++++++- go.mod | 4 ++-- go.sum | 4 ++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/contrib/localnet/init.sh b/contrib/localnet/init.sh index d6461d7..657bb31 100755 --- a/contrib/localnet/init.sh +++ b/contrib/localnet/init.sh @@ -157,7 +157,22 @@ sed -i.bak "s/\"allow_unprotected_txs\": false/\"allow_unprotected_txs\": true/g sed -i.bak "s/allow-unprotected-txs = false/allow-unprotected-txs = true/g" $HOMEDIR/config/app.toml # set evm precompiles -sed -i.bak "s/\"active_static_precompiles\": \[\]/\"active_static_precompiles\": \[\"0x0000000000000000000000000000000000000100\",\"0x0000000000000000000000000000000000000400\",\"0x0000000000000000000000000000000000000800\",\"0x0000000000000000000000000000000000000801\",\"0x0000000000000000000000000000000000000802\",\"0x0000000000000000000000000000000000000803\",\"0x0000000000000000000000000000000000000804\",\"0x0000000000000000000000000000000000000805\",\"0x0000000000000000000000000000000000000806\",\"0x0000000000000000000000000000000000000807\", \"0x0000000000000000000000000000000000001600\"\]/g" $HOMEDIR/config/genesis.json +jq ' + .app_state.evm.params.active_static_precompiles = [ + "0x0000000000000000000000000000000000000100", + "0x0000000000000000000000000000000000000400", + "0x0000000000000000000000000000000000000800", + "0x0000000000000000000000000000000000000801", + "0x0000000000000000000000000000000000000802", + "0x0000000000000000000000000000000000000803", + "0x0000000000000000000000000000000000000804", + "0x0000000000000000000000000000000000000805", + "0x0000000000000000000000000000000000000806", + "0x0000000000000000000000000000000000000807", + "0x00000000000000000000000000000000000008f3", + "0x0000000000000000000000000000000000001600" + ] +' "$HOMEDIR/config/genesis.json" > "$HOMEDIR/config/genesis_patched.json" && mv "$HOMEDIR/config/genesis_patched.json" "$HOMEDIR/config/genesis.json" # set x/feemarket min gas price sed -i.bak "s/\"min_gas_price\": \"0.000000000000000000\"/\"min_gas_price\": \"$MIN_GAS_PRICE\"/g" $HOMEDIR/config/genesis.json diff --git a/go.mod b/go.mod index f063b25..5434b49 100644 --- a/go.mod +++ b/go.mod @@ -273,8 +273,8 @@ replace ( // replace to cosmos-sdk fork for liquid stake support. See: https://github.com/TacBuild/cosmos-sdk/pull/2 github.com/cosmos/cosmos-sdk => github.com/TacBuild/cosmos-sdk v0.0.0-20251010131633-e43d8d10a9a9 - // replace to cosmos/evm fork for liquid stake support. See: https://github.com/TacBuild/evm/pull/9 - github.com/cosmos/evm => github.com/TacBuild/evm v0.0.0-20251010145635-9055209fc1d5 + // replace to cosmos/evm fork for ed25519 precompile support. See: https://github.com/TacBuild/evm/pull/8 + github.com/cosmos/evm => github.com/TacBuild/evm v0.0.0-20251029112054-b16fa6d8f52c // replace with our fork using geth v1.13.15 github.com/ethereum/go-ethereum => github.com/TacBuild/go-ethereum v0.0.0-20250428082551-b4f5a8f8420a diff --git a/go.sum b/go.sum index 37c1e18..0988012 100644 --- a/go.sum +++ b/go.sum @@ -244,8 +244,8 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/TacBuild/cosmos-sdk v0.0.0-20251010131633-e43d8d10a9a9 h1:jMjIlOrdA+vBfZkuljd7V/54L1az5n3Sw12iE7Pea00= github.com/TacBuild/cosmos-sdk v0.0.0-20251010131633-e43d8d10a9a9/go.mod h1:0Fo5FGFsiXxRRrVm7hBwxzwCeHhNxFPIMUSXqe9P8aA= -github.com/TacBuild/evm v0.0.0-20251010145635-9055209fc1d5 h1:ALJ3HjJscsYgDCFHKF4lCE5yx1cvWyvLbb2CjOOAhyQ= -github.com/TacBuild/evm v0.0.0-20251010145635-9055209fc1d5/go.mod h1:9+gL3zGzrGuh1oF5vfFl7kuswgma6v7IN0KDbBmO0eA= +github.com/TacBuild/evm v0.0.0-20251029112054-b16fa6d8f52c h1:U2nvMSSStb4OrB3jzc559v11Z/8zqZr3HWy9aq6VXWs= +github.com/TacBuild/evm v0.0.0-20251029112054-b16fa6d8f52c/go.mod h1:9+gL3zGzrGuh1oF5vfFl7kuswgma6v7IN0KDbBmO0eA= github.com/TacBuild/go-ethereum v0.0.0-20250428082551-b4f5a8f8420a h1:d5s3in80qbAEpMLo2gVHKPrR6qn60nyxV+rK17tqZ1Q= github.com/TacBuild/go-ethereum v0.0.0-20250428082551-b4f5a8f8420a/go.mod h1:TN8ZiHrdJwSe8Cb6x+p0hs5CxhJZPbqB7hHkaUXcmIU= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= From 33bd2bf8bdd206f5f0c1f4ca2826ba82afb27107 Mon Sep 17 00:00:00 2001 From: Aleksei Kokinos Date: Wed, 29 Oct 2025 19:44:09 +0700 Subject: [PATCH 2/5] fix comment --- go.mod | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 5434b49..a9a21e5 100644 --- a/go.mod +++ b/go.mod @@ -273,7 +273,9 @@ replace ( // replace to cosmos-sdk fork for liquid stake support. See: https://github.com/TacBuild/cosmos-sdk/pull/2 github.com/cosmos/cosmos-sdk => github.com/TacBuild/cosmos-sdk v0.0.0-20251010131633-e43d8d10a9a9 - // replace to cosmos/evm fork for ed25519 precompile support. See: https://github.com/TacBuild/evm/pull/8 + // replace to cosmos/evm fork + // added liquid stake support. See: https://github.com/TacBuild/evm/pull/9 + // added ed25519 precompile support. See: https://github.com/TacBuild/evm/pull/8 github.com/cosmos/evm => github.com/TacBuild/evm v0.0.0-20251029112054-b16fa6d8f52c // replace with our fork using geth v1.13.15 From a8b0c9eeeec5638cb9eb0f8d1e3c051e544cbcd4 Mon Sep 17 00:00:00 2001 From: Aleksei Kokinos Date: Wed, 29 Oct 2025 20:10:01 +0700 Subject: [PATCH 3/5] added upgrade handler --- app/upgrades.go | 3 +++ app/upgrades/types.go | 3 +++ app/upgrades/v1.0.3/upgrades.go | 48 +++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 app/upgrades/v1.0.3/upgrades.go diff --git a/app/upgrades.go b/app/upgrades.go index b5eb39a..80832f4 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -11,6 +11,7 @@ import ( v009 "github.com/Asphere-xyz/tacchain/app/upgrades/v0.0.9" v101 "github.com/Asphere-xyz/tacchain/app/upgrades/v1.0.1" v102 "github.com/Asphere-xyz/tacchain/app/upgrades/v1.0.2" + v103 "github.com/Asphere-xyz/tacchain/app/upgrades/v1.0.3" ) // Upgrades list of chain upgrades @@ -20,6 +21,7 @@ var Upgrades = []upgrades.Upgrade{ v0011.Upgrade, v101.Upgrade, v102.Upgrade, // liquid stake + v103.Upgrade, // ed25519 precompile } // RegisterUpgradeHandlers registers the chain upgrade handlers @@ -36,6 +38,7 @@ func (app *TacChainApp) RegisterUpgradeHandlers() { BankKeeper: app.BankKeeper, Erc20Keeper: &app.Erc20Keeper, StakingKeeper: app.StakingKeeper, + EVMKeeper: app.EVMKeeper, } app.GetStoreKeys() // register all upgrade handlers diff --git a/app/upgrades/types.go b/app/upgrades/types.go index a170249..0eba608 100644 --- a/app/upgrades/types.go +++ b/app/upgrades/types.go @@ -19,6 +19,8 @@ import ( bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" evmerc20keeper "github.com/cosmos/evm/x/erc20/keeper" liquidstakekeeper "github.com/cosmos/evm/x/liquidstake/keeper" + + evmvmkeeper "github.com/cosmos/evm/x/vm/keeper" ) type AppKeepers struct { @@ -33,6 +35,7 @@ type AppKeepers struct { BankKeeper bankkeeper.Keeper Erc20Keeper *evmerc20keeper.Keeper StakingKeeper *stakingkeeper.Keeper + EVMKeeper *evmvmkeeper.Keeper } type ModuleManager interface { diff --git a/app/upgrades/v1.0.3/upgrades.go b/app/upgrades/v1.0.3/upgrades.go new file mode 100644 index 0000000..737ae3e --- /dev/null +++ b/app/upgrades/v1.0.3/upgrades.go @@ -0,0 +1,48 @@ +package v103 + +import ( + "context" + "slices" + + storetypes "cosmossdk.io/store/types" + upgradetypes "cosmossdk.io/x/upgrade/types" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Asphere-xyz/tacchain/app/upgrades" + "github.com/cosmos/cosmos-sdk/types/module" + + evmtypes "github.com/cosmos/evm/x/vm/types" +) + +const UpgradeName = "v1.0.3" + +var Upgrade = upgrades.Upgrade{ + UpgradeName: UpgradeName, + CreateUpgradeHandler: CreateUpgradeHandler, + StoreUpgrades: storetypes.StoreUpgrades{}, +} + +func CreateUpgradeHandler( + mm upgrades.ModuleManager, + configurator module.Configurator, + ak *upgrades.AppKeepers, +) upgradetypes.UpgradeHandler { + return func(ctx context.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { + vm, err := mm.RunMigrations(ctx, configurator, fromVM) + if err != nil { + return vm, err + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + + evmParams := ak.EVMKeeper.GetParams(sdkCtx) + target := evmtypes.Ed25519PrecompileAddress + if !slices.Contains(evmParams.ActiveStaticPrecompiles, target) { + evmParams.ActiveStaticPrecompiles = append(evmParams.ActiveStaticPrecompiles, target) + if err := ak.EVMKeeper.SetParams(sdkCtx, evmParams); err != nil { + return vm, err + } + } + return vm, nil + } +} From 61f16ed30fef5bc17bc1149c3e125063023904b8 Mon Sep 17 00:00:00 2001 From: Aleksei Kokinos Date: Tue, 4 Nov 2025 17:37:17 +0700 Subject: [PATCH 4/5] bump evm version with fix liquid stake epsilon --- go.mod | 3 ++- go.sum | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a9a21e5..9093285 100644 --- a/go.mod +++ b/go.mod @@ -276,7 +276,8 @@ replace ( // replace to cosmos/evm fork // added liquid stake support. See: https://github.com/TacBuild/evm/pull/9 // added ed25519 precompile support. See: https://github.com/TacBuild/evm/pull/8 - github.com/cosmos/evm => github.com/TacBuild/evm v0.0.0-20251029112054-b16fa6d8f52c + // fix liquid stake espilon. See: https://github.com/TacBuild/evm/pull/10 + github.com/cosmos/evm => github.com/TacBuild/evm v0.0.0-20251030120744-79ed002a3490 // replace with our fork using geth v1.13.15 github.com/ethereum/go-ethereum => github.com/TacBuild/go-ethereum v0.0.0-20250428082551-b4f5a8f8420a diff --git a/go.sum b/go.sum index 0988012..bfc5ed7 100644 --- a/go.sum +++ b/go.sum @@ -244,8 +244,8 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/TacBuild/cosmos-sdk v0.0.0-20251010131633-e43d8d10a9a9 h1:jMjIlOrdA+vBfZkuljd7V/54L1az5n3Sw12iE7Pea00= github.com/TacBuild/cosmos-sdk v0.0.0-20251010131633-e43d8d10a9a9/go.mod h1:0Fo5FGFsiXxRRrVm7hBwxzwCeHhNxFPIMUSXqe9P8aA= -github.com/TacBuild/evm v0.0.0-20251029112054-b16fa6d8f52c h1:U2nvMSSStb4OrB3jzc559v11Z/8zqZr3HWy9aq6VXWs= -github.com/TacBuild/evm v0.0.0-20251029112054-b16fa6d8f52c/go.mod h1:9+gL3zGzrGuh1oF5vfFl7kuswgma6v7IN0KDbBmO0eA= +github.com/TacBuild/evm v0.0.0-20251030120744-79ed002a3490 h1:3obQEWEzVE4yrdskdDXAEoySEsfyc/8JP+zbJCiTflE= +github.com/TacBuild/evm v0.0.0-20251030120744-79ed002a3490/go.mod h1:9+gL3zGzrGuh1oF5vfFl7kuswgma6v7IN0KDbBmO0eA= github.com/TacBuild/go-ethereum v0.0.0-20250428082551-b4f5a8f8420a h1:d5s3in80qbAEpMLo2gVHKPrR6qn60nyxV+rK17tqZ1Q= github.com/TacBuild/go-ethereum v0.0.0-20250428082551-b4f5a8f8420a/go.mod h1:TN8ZiHrdJwSe8Cb6x+p0hs5CxhJZPbqB7hHkaUXcmIU= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= From 9ad12a308dae1e91c55b656b055bf685488e17d8 Mon Sep 17 00:00:00 2001 From: Aleksei Kokinos Date: Tue, 4 Nov 2025 18:10:24 +0700 Subject: [PATCH 5/5] fix expected_evm_params --- tests/localnet/test-params.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/localnet/test-params.sh b/tests/localnet/test-params.sh index 60a3a08..3b75c32 100755 --- a/tests/localnet/test-params.sh +++ b/tests/localnet/test-params.sh @@ -278,6 +278,7 @@ expected_evm_params='{ "0x0000000000000000000000000000000000000805", "0x0000000000000000000000000000000000000806", "0x0000000000000000000000000000000000000807", + "0x00000000000000000000000000000000000008f3", "0x0000000000000000000000000000000000001600" ] }'