From 773438f47b95c4db11a4b90f7747a7ee5705c935 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 26 Jun 2024 20:26:08 +0800 Subject: [PATCH 001/210] Problem: gasWanted is not aligned for process proposal mode (#493) * Problem: gasWanted is not aligned for process proposal mode * check maxGasWanted --- CHANGELOG.md | 1 + app/ante/eth.go | 11 +++-------- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- gomod2nix.toml | 10 +++++----- 5 files changed, 21 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fbaba4dec2..73902501da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#443](https://github.com/crypto-org-chain/ethermint/pull/443) Keep behavior of random opcode as before. * (app) [#451](https://github.com/crypto-org-chain/ethermint/pull/451) Disable block gas meter, it's not compatible with parallel tx execution. It's safe to do as long as we checks total gas-wanted against block gas limit in process proposal, which we do in default handler. +* (ante) [#493](https://github.com/crypto-org-chain/ethermint/pull/493) Align gasWanted for process proposal mode. ### Bug Fixes diff --git a/app/ante/eth.go b/app/ante/eth.go index 8d86c3404e..14d14aa7d8 100644 --- a/app/ante/eth.go +++ b/app/ante/eth.go @@ -122,18 +122,13 @@ func CheckEthGasConsume( minPriority = priority } + // We can't trust the tx gas limit, because we'll refund the unused gas. gasLimit := msgEthTx.GetGas() - if ctx.IsCheckTx() && maxGasWanted != 0 { - // We can't trust the tx gas limit, because we'll refund the unused gas. - if gasLimit > maxGasWanted { - gasWanted += maxGasWanted - } else { - gasWanted += gasLimit - } + if maxGasWanted != 0 { + gasWanted += min(gasLimit, maxGasWanted) } else { gasWanted += gasLimit } - // user balance is already checked during CheckTx so there's no need to // verify it again during ReCheckTx if ctx.IsReCheckTx() { diff --git a/go.mod b/go.mod index 9c2283c1ae..ea8637951d 100644 --- a/go.mod +++ b/go.mod @@ -243,10 +243,10 @@ require ( replace ( // release/v0.50.x - cosmossdk.io/client/v2 => github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240604100318-cf12e5ad62e4 - cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240604100318-cf12e5ad62e4 - cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240604100318-cf12e5ad62e4 - github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.0.0-20240604100318-cf12e5ad62e4 + cosmossdk.io/client/v2 => github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240626040048-36295f051595 + cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240626040048-36295f051595 + cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240626040048-36295f051595 + github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.0.0-20240626040048-36295f051595 ) replace ( diff --git a/go.sum b/go.sum index 72e7660c6e..90a7b37354 100644 --- a/go.sum +++ b/go.sum @@ -411,14 +411,14 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+FBB8cMkDE2j2VBVsbY+HCkPIu0YsJ/9bbGeQ= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/crypto-org-chain/cosmos-sdk v0.0.0-20240604100318-cf12e5ad62e4 h1:tU2H8foSm+CVtU9HPEephknr3C6mTrVeSERwRUs6yFY= -github.com/crypto-org-chain/cosmos-sdk v0.0.0-20240604100318-cf12e5ad62e4/go.mod h1:bIUzWfqXnCF2WTFb2uN+FjzMIG3BsOk+P2QmvMtm4ic= -github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240604100318-cf12e5ad62e4 h1:ucFYZpOSYOi5BE96Y782iuczZK7d6ZJVhUoQ3ijrgf4= -github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240604100318-cf12e5ad62e4/go.mod h1:W5sR4asmVDUhJpEmuXTUBkk/yEefKlXTjVWcNciVSR0= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240604100318-cf12e5ad62e4 h1:aW5FkDdXGz+Nl9W5bkTTxkleEo3CNGLl78nU5CxikhQ= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240604100318-cf12e5ad62e4/go.mod h1:gjE3DZe4t/+VeIk6CmrouyqiuDbZ7QOVDDq3nLqBTpg= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240604100318-cf12e5ad62e4 h1:0SAVpeeKAJQLX+5aygBW57EIyVNtvYXXWs9zDusblKk= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240604100318-cf12e5ad62e4/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= +github.com/crypto-org-chain/cosmos-sdk v0.0.0-20240626040048-36295f051595 h1:qiUv1Y+OE8ZgB5mfXFti8R9bjq8zmfuoe2m2g3Iq41c= +github.com/crypto-org-chain/cosmos-sdk v0.0.0-20240626040048-36295f051595/go.mod h1:bIUzWfqXnCF2WTFb2uN+FjzMIG3BsOk+P2QmvMtm4ic= +github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240626040048-36295f051595 h1:xfrVLBZgV2DXjQXTSlaWHcG/s6Fdeme8tczaN4TTERw= +github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240626040048-36295f051595/go.mod h1:W5sR4asmVDUhJpEmuXTUBkk/yEefKlXTjVWcNciVSR0= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240626040048-36295f051595 h1:gHBOTNAuuGeD9HXGkTE04x3zee+00bXcVd8Jb3WG0nY= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240626040048-36295f051595/go.mod h1:gjE3DZe4t/+VeIk6CmrouyqiuDbZ7QOVDDq3nLqBTpg= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240626040048-36295f051595 h1:MPKv1EzM16dx+HzkJowgb9PrlbatRlgFYqk1IucsL2s= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240626040048-36295f051595/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= github.com/crypto-org-chain/go-block-stm v0.0.0-20240408011717-9f11af197bde h1:sQIHTJfVt5VTrF7po9eZiFkZiPjlHbFvnXtGCOoBjNM= github.com/crypto-org-chain/go-block-stm v0.0.0-20240408011717-9f11af197bde/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240425065928-ebb09502e7a7 h1:V43F3JFcqG4MUThf9W/DytnPblpR6CcaLBw2Wx6zTgE= diff --git a/gomod2nix.toml b/gomod2nix.toml index ec35a16cf6..66be6b960e 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -20,7 +20,7 @@ schema = 3 version = "v0.7.5" hash = "sha256-Nuw697sJr56kU3EU7DV1eYNkyI76psznIVqYAV6RfbQ=" [mod."cosmossdk.io/client/v2"] - version = "v2.0.0-20240604100318-cf12e5ad62e4" + version = "v2.0.0-20240626040048-36295f051595" hash = "sha256-60hmufv3Ml4Pv3zNwgn8eeqlEINOR6n9MKr2QHddoxo=" replaced = "github.com/crypto-org-chain/cosmos-sdk/client/v2" [mod."cosmossdk.io/collections"] @@ -42,7 +42,7 @@ schema = 3 version = "v1.3.0" hash = "sha256-EEFK43Cr0g0ndhQhkIKher0FqV3mvkmE9z0sP7uVSHg=" [mod."cosmossdk.io/store"] - version = "v0.0.0-20240604100318-cf12e5ad62e4" + version = "v0.0.0-20240626040048-36295f051595" hash = "sha256-zne7cIFs9WLg11pIr9VLBBc+G+kZfKLn8UU1mP4w6BM=" replaced = "github.com/crypto-org-chain/cosmos-sdk/store" [mod."cosmossdk.io/tools/confix"] @@ -55,7 +55,7 @@ schema = 3 version = "v0.1.0" hash = "sha256-/gWvrqvy6bW90+NU66T+9QysYgvG1VbwfYJZ8tkqpeA=" [mod."cosmossdk.io/x/tx"] - version = "v0.0.0-20240604100318-cf12e5ad62e4" + version = "v0.0.0-20240626040048-36295f051595" hash = "sha256-xT5IdapEx1h46ofBpxcBQfzGF2EntmC8xZl7aym/6xE=" replaced = "github.com/crypto-org-chain/cosmos-sdk/x/tx" [mod."cosmossdk.io/x/upgrade"] @@ -163,8 +163,8 @@ schema = 3 version = "v1.0.0-beta.5" hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg=" [mod."github.com/cosmos/cosmos-sdk"] - version = "v0.0.0-20240604100318-cf12e5ad62e4" - hash = "sha256-rKHP2oF2+W7iP4jor3jkGtieHTjccX9Gm2GQ1yeomC4=" + version = "v0.0.0-20240626040048-36295f051595" + hash = "sha256-rwGLcCHeeq74zLoqZ/yCSB6WdHmdwFiz/xRw1SIiBYQ=" replaced = "github.com/crypto-org-chain/cosmos-sdk" [mod."github.com/cosmos/go-bip39"] version = "v1.0.0" From f9cd15e7c20abdcc7e55b9c54db94b89dc388280 Mon Sep 17 00:00:00 2001 From: yihuang Date: Fri, 28 Jun 2024 14:17:13 +0800 Subject: [PATCH 002/210] Problem: no way to disable nonce checking in benchmark (#495) Solution: - add unsafe option to turn off nonce checking --- app/ante/handler_options.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index 2d50fcc3f6..ffd8193972 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -50,6 +50,9 @@ type HandlerOptions struct { DisabledAuthzMsgs []string ExtraDecorators []sdk.AnteDecorator PendingTxListener PendingTxListener + + // see #494, just for benchmark, don't turn on on production + UnsafeUnorderedTx bool } func (options HandlerOptions) validate() error { @@ -128,8 +131,10 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { return ctx, err } - if err := CheckEthSenderNonce(ctx, tx, options.AccountKeeper); err != nil { - return ctx, err + if !options.UnsafeUnorderedTx { + if err := CheckEthSenderNonce(ctx, tx, options.AccountKeeper); err != nil { + return ctx, err + } } extraDecorators := options.ExtraDecorators From e5b222ffaf901cf38c386c5ecd7707cacfd91b93 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Tue, 2 Jul 2024 20:54:17 +0800 Subject: [PATCH 003/210] Problem: no MaxTx set from config for mempool (#496) * Problem: no MaxTx set from config for mempool * Update config.go Co-authored-by: yihuang Signed-off-by: mmsqe --------- Signed-off-by: mmsqe Co-authored-by: yihuang --- CHANGELOG.md | 1 + app/app.go | 5 +++++ server/config/config.go | 1 + server/start.go | 1 + 4 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73902501da..214d9706b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,6 +75,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (app) [#483](https://github.com/crypto-org-chain/ethermint/pull/483) Make keyring-backend client config accessible in app. * (deps) [#489](https://github.com/crypto-org-chain/ethermint/pull/489) Update cosmos-sdk to `v0.50.7`. * (rpc) [#491](https://github.com/crypto-org-chain/ethermint/pull/491) Avoid unnecessary tx decode in tx listener. +* [#496](https://github.com/crypto-org-chain/cronos/pull/496) Set mempool MaxTx from config. ## v0.21.x-cronos diff --git a/app/app.go b/app/app.go index df5399df18..40d991e8a3 100644 --- a/app/app.go +++ b/app/app.go @@ -272,9 +272,14 @@ func NewEthermintApp( // NOTE we use custom transaction decoder that supports the sdk.Tx interface instead of sdk.StdTx // Setup Mempool and Proposal Handlers baseAppOptions = append(baseAppOptions, func(app *baseapp.BaseApp) { + maxTxs := cast.ToInt(appOpts.Get(server.FlagMempoolMaxTxs)) + if maxTxs <= 0 { + maxTxs = srvconfig.DefaultMaxTxs + } mempool := mempool.NewPriorityMempool(mempool.PriorityNonceMempoolConfig[int64]{ TxPriority: mempool.NewDefaultTxPriority(), SignerExtractor: NewEthSignerExtractionAdapter(mempool.NewDefaultSignerExtractionAdapter()), + MaxTx: maxTxs, }) handler := baseapp.NewDefaultProposalHandler(mempool, app) diff --git a/server/config/config.go b/server/config/config.go index 8e9167719b..aa32e17be3 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -100,6 +100,7 @@ const ( BlockExecutorSequential = "sequential" BlockExecutorBlockSTM = "block-stm" + DefaultMaxTxs = 3000 ) var ( diff --git a/server/start.go b/server/start.go index e1a5854ac6..d96a5f0bc7 100644 --- a/server/start.go +++ b/server/start.go @@ -227,6 +227,7 @@ which accepts a path for the resulting pprof file. cmd.Flags().Uint64(server.FlagStateSyncSnapshotInterval, 0, "State sync snapshot interval") cmd.Flags().Uint32(server.FlagStateSyncSnapshotKeepRecent, 2, "State sync snapshot to keep") + cmd.Flags().Int(server.FlagMempoolMaxTxs, config.DefaultMaxTxs, "Sets MaxTx value for the app-side mempool") // add support for all CometBFT-specific command line options tcmd.AddNodeFlags(cmd) From 45ac081b929c0ab41d9f96b97108c6f4d878523a Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 12 Jul 2024 15:00:16 +0800 Subject: [PATCH 004/210] Problem: insufficient invalid value check in eth transaction (#497) --- CHANGELOG.md | 1 + app/ante/eth.go | 10 +++++++--- app/ante/eth_test.go | 20 +++++++++++++++++--- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 214d9706b5..05717600a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,6 +76,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (deps) [#489](https://github.com/crypto-org-chain/ethermint/pull/489) Update cosmos-sdk to `v0.50.7`. * (rpc) [#491](https://github.com/crypto-org-chain/ethermint/pull/491) Avoid unnecessary tx decode in tx listener. * [#496](https://github.com/crypto-org-chain/cronos/pull/496) Set mempool MaxTx from config. +* (ante) [#497](https://github.com/crypto-org-chain/ethermint/pull/497) Enforce positive value check in eth transaction. ## v0.21.x-cronos diff --git a/app/ante/eth.go b/app/ante/eth.go index 14d14aa7d8..a09caa7d8d 100644 --- a/app/ante/eth.go +++ b/app/ante/eth.go @@ -16,6 +16,7 @@ package ante import ( + "fmt" "math" "math/big" @@ -216,15 +217,18 @@ func CheckEthCanTransfer( ) } } - + value := tx.Value() + if value == nil || value.Sign() == -1 { + return fmt.Errorf("value (%s) must be positive", value) + } from := common.BytesToAddress(msgEthTx.From) // check that caller has enough balance to cover asset transfer for **topmost** call // NOTE: here the gas consumed is from the context with the infinite gas meter - if tx.Value().Sign() > 0 && !canTransfer(ctx, evmKeeper, evmParams.EvmDenom, from, tx.Value()) { + if value.Sign() > 0 && !canTransfer(ctx, evmKeeper, evmParams.EvmDenom, from, value) { return errorsmod.Wrapf( errortypes.ErrInsufficientFunds, "failed to transfer %s from address %s using the EVM block context transfer function", - tx.Value(), + value, from, ) } diff --git a/app/ante/eth_test.go b/app/ante/eth_test.go index 93a3da1eea..5919dcb76a 100644 --- a/app/ante/eth_test.go +++ b/app/ante/eth_test.go @@ -353,11 +353,24 @@ func (suite *AnteTestSuite) TestCanTransferDecorator() { nil, ðtypes.AccessList{}, ) + tx3 := evmtypes.NewTxContract( + suite.app.EvmKeeper.ChainID(), + 1, + big.NewInt(-10), + 1000, + big.NewInt(150), + big.NewInt(200), + nil, + nil, + ðtypes.AccessList{}, + ) - tx.From = addr.Bytes() + for _, tx := range []*evmtypes.MsgEthereumTx{tx, tx3} { + tx.From = addr.Bytes() - err := tx.Sign(suite.ethSigner, tests.NewSigner(privKey)) - suite.Require().NoError(err) + err := tx.Sign(suite.ethSigner, tests.NewSigner(privKey)) + suite.Require().NoError(err) + } var vmdb *statedb.StateDB @@ -369,6 +382,7 @@ func (suite *AnteTestSuite) TestCanTransferDecorator() { }{ {"invalid transaction type", &invalidTx{}, func() {}, false}, {"AsMessage failed", tx2, func() {}, false}, + {"negative value", tx3, func() {}, false}, { "evm CanTransfer failed", tx, From 9c959a26e04fab7b71d5c0e251fa731d9dfd0efe Mon Sep 17 00:00:00 2001 From: yihuang Date: Mon, 15 Jul 2024 14:15:33 +0800 Subject: [PATCH 005/210] Problem: incarnation cache not enabled (#498) * Problem: incarnation cache not enabled * Update CHANGELOG.md Signed-off-by: yihuang * cache eth sig verification result * fix concurrent incarnations * update deps --------- Signed-off-by: yihuang --- CHANGELOG.md | 1 + app/ante/handler_options.go | 12 +++++++++++- app/executor.go | 27 +++++++++++++++++++++++---- go.mod | 2 +- go.sum | 4 ++-- gomod2nix.toml | 4 ++-- 6 files changed, 40 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05717600a8..543b02b336 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features * (evm) [#414](https://github.com/crypto-org-chain/ethermint/pull/414) Integrate go-block-stm for parallel tx execution. +* (block-stm) [#498](https://github.com/crypto-org-chain/ethermint/pull/498) Enable incarnation cache for block-stm executor. ### State Machine Breaking diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index ffd8193972..e1c5e63bb0 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -32,6 +32,8 @@ import ( evmtypes "github.com/evmos/ethermint/x/evm/types" ) +const EthSigVerificationResultCacheKey = "ante:EthSigVerificationResult" + // HandlerOptions extend the SDK's AnteHandler options by requiring the IBC // channel keeper, EVM Keeper and Fee Market Keeper. type HandlerOptions struct { @@ -111,7 +113,15 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { return ctx, err } - if err := VerifyEthSig(tx, ethSigner); err != nil { + if v, ok := ctx.GetIncarnationCache(EthSigVerificationResultCacheKey); ok { + if v != nil { + err = v.(error) + } + } else { + err = VerifyEthSig(tx, ethSigner) + ctx.SetIncarnationCache(EthSigVerificationResultCacheKey, err) + } + if err != nil { return ctx, err } diff --git a/app/executor.go b/app/executor.go index 8086e49327..632e45ba36 100644 --- a/app/executor.go +++ b/app/executor.go @@ -3,6 +3,7 @@ package app import ( "context" "io" + "sync/atomic" "cosmossdk.io/store/cachemulti" storetypes "cosmossdk.io/store/types" @@ -17,11 +18,11 @@ import ( func DefaultTxExecutor(_ context.Context, blockSize int, ms storetypes.MultiStore, - deliverTxWithMultiStore func(int, storetypes.MultiStore) *abci.ExecTxResult, + deliverTxWithMultiStore func(int, storetypes.MultiStore, map[string]any) *abci.ExecTxResult, ) ([]*abci.ExecTxResult, error) { results := make([]*abci.ExecTxResult, blockSize) for i := 0; i < blockSize; i++ { - results[i] = deliverTxWithMultiStore(i, ms) + results[i] = deliverTxWithMultiStore(i, ms, nil) } return evmtypes.PatchTxResponses(results), nil } @@ -35,12 +36,17 @@ func STMTxExecutor(stores []storetypes.StoreKey, workers int) baseapp.TxExecutor ctx context.Context, blockSize int, ms storetypes.MultiStore, - deliverTxWithMultiStore func(int, storetypes.MultiStore) *abci.ExecTxResult, + deliverTxWithMultiStore func(int, storetypes.MultiStore, map[string]any) *abci.ExecTxResult, ) ([]*abci.ExecTxResult, error) { if blockSize == 0 { return nil, nil } results := make([]*abci.ExecTxResult, blockSize) + incarnationCache := make([]atomic.Pointer[map[string]any], blockSize) + for i := 0; i < blockSize; i++ { + m := make(map[string]any) + incarnationCache[i].Store(&m) + } if err := blockstm.ExecuteBlock( ctx, blockSize, @@ -48,8 +54,21 @@ func STMTxExecutor(stores []storetypes.StoreKey, workers int) baseapp.TxExecutor stmMultiStoreWrapper{ms}, workers, func(txn blockstm.TxnIndex, ms blockstm.MultiStore) { - result := deliverTxWithMultiStore(int(txn), msWrapper{ms}) + var cache map[string]any + + // only one of the concurrent incarnations gets the cache if there are any, otherwise execute without + // cache, concurrent incarnations should be rare. + v := incarnationCache[txn].Swap(nil) + if v != nil { + cache = *v + } + + result := deliverTxWithMultiStore(int(txn), msWrapper{ms}, cache) results[txn] = result + + if v != nil { + incarnationCache[txn].Store(v) + } }, ); err != nil { return nil, err diff --git a/go.mod b/go.mod index ea8637951d..eb0b64b124 100644 --- a/go.mod +++ b/go.mod @@ -246,7 +246,7 @@ replace ( cosmossdk.io/client/v2 => github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240626040048-36295f051595 cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240626040048-36295f051595 cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240626040048-36295f051595 - github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.0.0-20240626040048-36295f051595 + github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240715031529-5a1594f17924 ) replace ( diff --git a/go.sum b/go.sum index 90a7b37354..c7c64b4a37 100644 --- a/go.sum +++ b/go.sum @@ -411,8 +411,8 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+FBB8cMkDE2j2VBVsbY+HCkPIu0YsJ/9bbGeQ= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/crypto-org-chain/cosmos-sdk v0.0.0-20240626040048-36295f051595 h1:qiUv1Y+OE8ZgB5mfXFti8R9bjq8zmfuoe2m2g3Iq41c= -github.com/crypto-org-chain/cosmos-sdk v0.0.0-20240626040048-36295f051595/go.mod h1:bIUzWfqXnCF2WTFb2uN+FjzMIG3BsOk+P2QmvMtm4ic= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240715031529-5a1594f17924 h1:rTiEYiXC8AxKeKsOTz4QODkX9fvMAnlAj8R2gOACoxU= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240715031529-5a1594f17924/go.mod h1:bIUzWfqXnCF2WTFb2uN+FjzMIG3BsOk+P2QmvMtm4ic= github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240626040048-36295f051595 h1:xfrVLBZgV2DXjQXTSlaWHcG/s6Fdeme8tczaN4TTERw= github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240626040048-36295f051595/go.mod h1:W5sR4asmVDUhJpEmuXTUBkk/yEefKlXTjVWcNciVSR0= github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240626040048-36295f051595 h1:gHBOTNAuuGeD9HXGkTE04x3zee+00bXcVd8Jb3WG0nY= diff --git a/gomod2nix.toml b/gomod2nix.toml index 66be6b960e..13ad51aea6 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -163,8 +163,8 @@ schema = 3 version = "v1.0.0-beta.5" hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg=" [mod."github.com/cosmos/cosmos-sdk"] - version = "v0.0.0-20240626040048-36295f051595" - hash = "sha256-rwGLcCHeeq74zLoqZ/yCSB6WdHmdwFiz/xRw1SIiBYQ=" + version = "v0.50.6-0.20240715031529-5a1594f17924" + hash = "sha256-1oX4RDHti4eGTkHIdqUZfCYUXpw5Ao7oBZDfZclF1Mk=" replaced = "github.com/crypto-org-chain/cosmos-sdk" [mod."github.com/cosmos/go-bip39"] version = "v1.0.0" From d874df7ebe73a4811f2158756e8098136a7ac083 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 17 Jul 2024 11:05:46 +0800 Subject: [PATCH 006/210] Problem: no overflow check when add gasLimit to gasWanted (#500) --- CHANGELOG.md | 2 +- app/ante/eth.go | 8 ++++--- app/ante/eth_test.go | 51 ++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 55 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 543b02b336..8a5d495bab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,7 +46,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#443](https://github.com/crypto-org-chain/ethermint/pull/443) Keep behavior of random opcode as before. * (app) [#451](https://github.com/crypto-org-chain/ethermint/pull/451) Disable block gas meter, it's not compatible with parallel tx execution. It's safe to do as long as we checks total gas-wanted against block gas limit in process proposal, which we do in default handler. -* (ante) [#493](https://github.com/crypto-org-chain/ethermint/pull/493) Align gasWanted for process proposal mode. +* (ante) [#493](https://github.com/crypto-org-chain/ethermint/pull/493) Align gasWanted for process proposal mode, [#500](https://github.com/crypto-org-chain/ethermint/pull/500) Check for overflow before adding gasLimit to gasWanted. ### Bug Fixes diff --git a/app/ante/eth.go b/app/ante/eth.go index a09caa7d8d..efc8c93e8d 100644 --- a/app/ante/eth.go +++ b/app/ante/eth.go @@ -126,10 +126,12 @@ func CheckEthGasConsume( // We can't trust the tx gas limit, because we'll refund the unused gas. gasLimit := msgEthTx.GetGas() if maxGasWanted != 0 { - gasWanted += min(gasLimit, maxGasWanted) - } else { - gasWanted += gasLimit + gasLimit = min(gasLimit, maxGasWanted) } + if gasWanted > math.MaxInt64-gasLimit { + return ctx, fmt.Errorf("gasWanted(%d) + gasLimit(%d) overflow", gasWanted, gasLimit) + } + gasWanted += gasLimit // user balance is already checked during CheckTx so there's no need to // verify it again during ReCheckTx if ctx.IsReCheckTx() { diff --git a/app/ante/eth_test.go b/app/ante/eth_test.go index 5919dcb76a..8f83d2f9d1 100644 --- a/app/ante/eth_test.go +++ b/app/ante/eth_test.go @@ -1,10 +1,13 @@ package ante_test import ( + "errors" + "fmt" "math" "math/big" sdk "github.com/cosmos/cosmos-sdk/types" + "google.golang.org/protobuf/proto" storetypes "cosmossdk.io/store/types" ethtypes "github.com/ethereum/go-ethereum/core/types" @@ -155,6 +158,18 @@ func (suite *AnteTestSuite) TestEthNonceVerificationDecorator() { } } +type multiTx struct { + Msgs []sdk.Msg +} + +func (msg *multiTx) GetMsgs() []sdk.Msg { + return msg.Msgs +} + +func (msg *multiTx) GetMsgsV2() ([]proto.Message, error) { + return nil, errors.New("not implemented") +} + func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { evmParams := suite.app.EvmKeeper.GetParams(suite.ctx) chainID := suite.app.EvmKeeper.ChainID() @@ -189,6 +204,9 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { dynamicFeeTx.From = addr.Bytes() dynamicFeeTxPriority := int64(1) + maxGasLimitTx := evmtypes.NewTxContract(suite.app.EvmKeeper.ChainID(), 1, big.NewInt(10), math.MaxUint64, gasPrice, nil, nil, nil, ðtypes.AccessList{{Address: addr, StorageKeys: nil}}) + maxGasLimitTx.From = addr.Bytes() + var vmdb *statedb.StateDB testCases := []struct { @@ -199,8 +217,9 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { expPass bool expPanic bool expPriority int64 + err error }{ - {"invalid transaction type", &invalidTx{}, math.MaxUint64, func() {}, false, false, 0}, + {"invalid transaction type", &invalidTx{}, math.MaxUint64, func() {}, false, false, 0, nil}, { "sender not found", evmtypes.NewTxContract(suite.app.EvmKeeper.ChainID(), 1, big.NewInt(10), 1000, big.NewInt(1), nil, nil, nil, nil), @@ -208,6 +227,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { func() {}, false, false, 0, + nil, }, { "gas limit too low", @@ -216,6 +236,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { func() {}, false, false, 0, + nil, }, { "gas limit above block gas limit", @@ -224,6 +245,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { func() {}, false, false, 0, + nil, }, { "not enough balance for fees", @@ -232,6 +254,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { func() {}, false, false, 0, + nil, }, { "not enough tx gas", @@ -242,6 +265,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { }, false, true, 0, + nil, }, { "not enough block gas", @@ -253,6 +277,22 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { }, false, true, 0, + nil, + }, + { + "gas limit overflow", + &multiTx{ + Msgs: []sdk.Msg{maxGasLimitTx, tx2}, + }, + math.MaxUint64, + func() { + limit := new(big.Int).SetUint64(math.MaxUint64) + balance := new(big.Int).Mul(limit, gasPrice) + vmdb.AddBalance(addr, balance) + }, + false, false, + 0, + fmt.Errorf("gasWanted(%d) + gasLimit(%d) overflow", maxGasLimitTx.GetGas(), tx2.GetGas()), }, { "success - legacy tx", @@ -264,6 +304,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { }, true, false, tx2Priority, + nil, }, { "success - dynamic fee tx", @@ -275,6 +316,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { }, true, false, dynamicFeeTxPriority, + nil, }, { "success - gas limit on gasMeter is set on ReCheckTx mode", @@ -286,6 +328,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { }, true, false, 1, + nil, }, } @@ -313,7 +356,11 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { suite.Require().NoError(err) suite.Require().Equal(tc.expPriority, ctx.Priority()) } else { - suite.Require().Error(err) + if tc.err != nil { + suite.Require().ErrorContains(err, tc.err.Error()) + } else { + suite.Require().Error(err) + } } suite.Require().Equal(tc.gasLimit, ctx.GasMeter().Limit()) }) From f3e62cb250701daf5ac34275a017f149b6390d9e Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 24 Jul 2024 21:36:25 +0800 Subject: [PATCH 007/210] Problem: invalid chain id for signer (#501) https://github.com/crypto-org-chain/cronos/actions/runs/10051584712/job/27781409154 --- CHANGELOG.md | 1 + app/app.go | 1 + x/evm/keeper/keeper.go | 9 +++++++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a5d495bab..7f58ff534b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#474](https://github.com/crypto-org-chain/ethermint/pull/474), [#476](https://github.com/crypto-org-chain/ethermint/pull/441) Align genesis related cmd. * (rpc) [#480](https://github.com/crypto-org-chain/ethermint/pull/480), [#482](https://github.com/crypto-org-chain/ethermint/pull/482) Fix parsed logs from old events. * (rpc) [#488](https://github.com/crypto-org-chain/ethermint/pull/488) Fix handling of pending transactions related APIs. +* (rpc) [#501](https://github.com/crypto-org-chain/ethermint/pull/501) Avoid invalid chain id for signer error when rpc call before chain id set in BeginBlock. ### Improvements diff --git a/app/app.go b/app/app.go index 40d991e8a3..aacc1cb2d8 100644 --- a/app/app.go +++ b/app/app.go @@ -1026,6 +1026,7 @@ func (app *EthermintApp) SimulationManager() *module.SimulationManager { // API server. func (app *EthermintApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) { clientCtx := apiSvr.ClientCtx + app.EvmKeeper.WithChainIDString(clientCtx.ChainID) // Register new tx routes from grpc-gateway. authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) // Register new tendermint queries routes from grpc-gateway. diff --git a/x/evm/keeper/keeper.go b/x/evm/keeper/keeper.go index 56acb834f5..99d12e085e 100644 --- a/x/evm/keeper/keeper.go +++ b/x/evm/keeper/keeper.go @@ -120,9 +120,14 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { return sdkCtx.Logger().With("module", "x/"+types.ModuleName) } -// WithChainID sets the chain id to the local variable in the keeper +// WithChainID sets the chain ID for the keeper by extracting it from the provided context func (k *Keeper) WithChainID(ctx sdk.Context) { - chainID, err := ethermint.ParseChainID(ctx.ChainID()) + k.WithChainIDString(ctx.ChainID()) +} + +// WithChainIDString sets the chain ID for the keeper after parsing the provided string value +func (k *Keeper) WithChainIDString(value string) { + chainID, err := ethermint.ParseChainID(value) if err != nil { panic(err) } From 350955227f143d04cbc8d601a8f6a8fbe8203fb4 Mon Sep 17 00:00:00 2001 From: yihuang Date: Mon, 29 Jul 2024 15:08:24 +0800 Subject: [PATCH 008/210] Problem: benchmark logic don't increase nonce (#502) Solution: - keep the benchmark logic closer to real one, only removing the nonce check part --- app/ante/eth.go | 18 ++++++++++-------- app/ante/eth_test.go | 6 +++--- app/ante/handler_options.go | 6 ++---- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/ante/eth.go b/app/ante/eth.go index efc8c93e8d..66b0071001 100644 --- a/app/ante/eth.go +++ b/app/ante/eth.go @@ -249,7 +249,7 @@ func canTransfer(ctx sdk.Context, evmKeeper EVMKeeper, denom string, from common // contract creation, the nonce will be incremented during the transaction execution and not within // this AnteHandler decorator. func CheckEthSenderNonce( - ctx sdk.Context, tx sdk.Tx, ak evmtypes.AccountKeeper, + ctx sdk.Context, tx sdk.Tx, ak evmtypes.AccountKeeper, unsafeUnOrderedTx bool, ) error { for _, msg := range tx.GetMsgs() { msgEthTx, ok := msg.(*evmtypes.MsgEthereumTx) @@ -269,13 +269,15 @@ func CheckEthSenderNonce( } nonce := acc.GetSequence() - // we merged the nonce verification to nonce increment, so when tx includes multiple messages - // with same sender, they'll be accepted. - if tx.Nonce() != nonce { - return errorsmod.Wrapf( - errortypes.ErrInvalidSequence, - "invalid nonce; got %d, expected %d", tx.Nonce(), nonce, - ) + if !unsafeUnOrderedTx { + // we merged the nonce verification to nonce increment, so when tx includes multiple messages + // with same sender, they'll be accepted. + if tx.Nonce() != nonce { + return errorsmod.Wrapf( + errortypes.ErrInvalidSequence, + "invalid nonce; got %d, expected %d", tx.Nonce(), nonce, + ) + } } if err := acc.SetSequence(nonce + 1); err != nil { diff --git a/app/ante/eth_test.go b/app/ante/eth_test.go index 8f83d2f9d1..49ceacc6af 100644 --- a/app/ante/eth_test.go +++ b/app/ante/eth_test.go @@ -147,7 +147,7 @@ func (suite *AnteTestSuite) TestEthNonceVerificationDecorator() { for _, tc := range testCases { suite.Run(tc.name, func() { tc.malleate() - err := ante.CheckEthSenderNonce(suite.ctx.WithIsReCheckTx(tc.reCheckTx), tc.tx, suite.app.AccountKeeper) + err := ante.CheckEthSenderNonce(suite.ctx.WithIsReCheckTx(tc.reCheckTx), tc.tx, suite.app.AccountKeeper, false) if tc.expPass { suite.Require().NoError(err) @@ -539,12 +539,12 @@ func (suite *AnteTestSuite) TestEthIncrementSenderSequenceDecorator() { if tc.expPanic { suite.Require().Panics(func() { - _ = ante.CheckEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper) + _ = ante.CheckEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false) }) return } - err := ante.CheckEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper) + err := ante.CheckEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false) if tc.expPass { suite.Require().NoError(err) diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index e1c5e63bb0..551711db1f 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -141,10 +141,8 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { return ctx, err } - if !options.UnsafeUnorderedTx { - if err := CheckEthSenderNonce(ctx, tx, options.AccountKeeper); err != nil { - return ctx, err - } + if err := CheckEthSenderNonce(ctx, tx, options.AccountKeeper, options.UnsafeUnorderedTx); err != nil { + return ctx, err } extraDecorators := options.ExtraDecorators From c36b266e5a1bc658c14e4c2861a341f546e3435a Mon Sep 17 00:00:00 2001 From: mmsqe Date: Thu, 1 Aug 2024 22:06:55 +0900 Subject: [PATCH 009/210] Problem: cometbft not up to date (#505) include the fix from https://github.com/cometbft/cometbft/pull/3196 --- CHANGELOG.md | 1 + go.mod | 4 ++-- go.sum | 8 ++++---- gomod2nix.toml | 10 +++++----- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f58ff534b..a4be68837d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -79,6 +79,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#491](https://github.com/crypto-org-chain/ethermint/pull/491) Avoid unnecessary tx decode in tx listener. * [#496](https://github.com/crypto-org-chain/cronos/pull/496) Set mempool MaxTx from config. * (ante) [#497](https://github.com/crypto-org-chain/ethermint/pull/497) Enforce positive value check in eth transaction. +* (deps) [#505](https://github.com/crypto-org-chain/ethermint/pull/505) Update cometbft to v0.38.10. ## v0.21.x-cronos diff --git a/go.mod b/go.mod index eb0b64b124..5d1887824b 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( cosmossdk.io/x/upgrade v0.1.1 github.com/btcsuite/btcd v0.23.4 github.com/btcsuite/btcd/btcutil v1.1.3 - github.com/cometbft/cometbft v0.38.7 + github.com/cometbft/cometbft v0.38.10 github.com/cosmos/cosmos-db v1.0.2 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.6 @@ -153,6 +153,7 @@ require ( github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect @@ -169,7 +170,6 @@ require ( github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.7 // indirect - github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/linxGnu/grocksdb v1.8.14 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect diff --git a/go.sum b/go.sum index c7c64b4a37..95751366b8 100644 --- a/go.sum +++ b/go.sum @@ -357,8 +357,8 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.38.7 h1:ULhIOJ9+LgSy6nLekhq9ae3juX3NnQUMMPyVdhZV6Hk= -github.com/cometbft/cometbft v0.38.7/go.mod h1:HIyf811dFMI73IE0F7RrnY/Fr+d1+HuJAgtkEpQjCMY= +github.com/cometbft/cometbft v0.38.10 h1:2ePuglchT+j0Iao+cfmt/nw5U7K2lnGDzXSUPGVdXaU= +github.com/cometbft/cometbft v0.38.10/go.mod h1:jHPx9vQpWzPHEAiYI/7EDKaB1NXhK6o3SArrrY8ExKc= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -747,6 +747,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= @@ -834,8 +836,6 @@ github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+ github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= -github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= diff --git a/gomod2nix.toml b/gomod2nix.toml index 13ad51aea6..64a3186f9c 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -148,8 +148,8 @@ schema = 3 version = "v1.0.0" hash = "sha256-z/0E0NiEGo7zxM7d94ImgUf8P0/KG6hbP9T4Vuym4p0=" [mod."github.com/cometbft/cometbft"] - version = "v0.38.7" - hash = "sha256-mN7L3Q4xZ0YcwMIRkIsodCzRPBZqrSKD7VgDHBOWM98=" + version = "v0.38.10" + hash = "sha256-zd/vD0uUgawzuuzuNweRK4HctzWmCb3tnLUFmaOT4OE=" [mod."github.com/cometbft/cometbft-db"] version = "v0.9.1" hash = "sha256-ftRdle5ok2aCyqT3u5rYY0jKB8WT8uDus26Pw4Mo1go=" @@ -383,6 +383,9 @@ schema = 3 [mod."github.com/hashicorp/golang-lru"] version = "v1.0.2" hash = "sha256-yy+5botc6T5wXgOe2mfNXJP3wr+MkVlUZ2JBkmmrA48=" + [mod."github.com/hashicorp/golang-lru/v2"] + version = "v2.0.7" + hash = "sha256-t1bcXLgrQNOYUVyYEZ0knxcXpsTk4IuJZDjKvyJX75g=" [mod."github.com/hashicorp/hcl"] version = "v1.0.0" hash = "sha256-xsRCmYyBfglMxeWUvTZqkaRLSW+V2FvNodEDjTGg1WA=" @@ -434,9 +437,6 @@ schema = 3 [mod."github.com/lib/pq"] version = "v1.10.7" hash = "sha256-YPUv1VBZNFVUjFxQKdYd0Djje6KYYE99Hz6FnTfrmMw=" - [mod."github.com/libp2p/go-buffer-pool"] - version = "v0.1.0" - hash = "sha256-wQqGTtRWsfR9n0O/SXHVgECebbnNmHddxJIbG63OJBQ=" [mod."github.com/linxGnu/grocksdb"] version = "v1.8.14" hash = "sha256-dT647UzB25Ye1Gv6b9JEtJZjuWKdJo4D8kw9cB0W8gA=" From b0022eab0eea1913611f14f15888fd592d076004 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Thu, 1 Aug 2024 22:28:44 +0900 Subject: [PATCH 010/210] Problem: disable of create vesting account messages are not complete (#506) * Problem: disable of create vesting account messages are not complete * Update CHANGELOG.md Signed-off-by: mmsqe --------- Signed-off-by: mmsqe --- CHANGELOG.md | 1 + app/ante/authz_test.go | 20 ++++++++++++++++++++ app/app.go | 2 ++ 3 files changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4be68837d..04edf7cbdf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,6 +47,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#443](https://github.com/crypto-org-chain/ethermint/pull/443) Keep behavior of random opcode as before. * (app) [#451](https://github.com/crypto-org-chain/ethermint/pull/451) Disable block gas meter, it's not compatible with parallel tx execution. It's safe to do as long as we checks total gas-wanted against block gas limit in process proposal, which we do in default handler. * (ante) [#493](https://github.com/crypto-org-chain/ethermint/pull/493) Align gasWanted for process proposal mode, [#500](https://github.com/crypto-org-chain/ethermint/pull/500) Check for overflow before adding gasLimit to gasWanted. +* (ante) [#506](https://github.com/crypto-org-chain/ethermint/pull/506) Disable MsgCreatePermanentLockedAccount and MsgCreatePeriodicVestingAccount messages. ### Bug Fixes diff --git a/app/ante/authz_test.go b/app/ante/authz_test.go index d6e52a022d..1d8ef92eac 100644 --- a/app/ante/authz_test.go +++ b/app/ante/authz_test.go @@ -255,6 +255,26 @@ func (suite *AnteTestSuite) TestRejectDeliverMsgsInAuthz() { }, expectedCode: sdkerrors.ErrUnauthorized.ABCICode(), }, + { + name: "a MsgGrant with MsgCreatePermanentLockedAccount typeURL on the authorization field is blocked", + msgs: []sdk.Msg{ + newGenericMsgGrant( + testAddresses, + sdk.MsgTypeURL(&sdkvesting.MsgCreatePermanentLockedAccount{}), + ), + }, + expectedCode: sdkerrors.ErrUnauthorized.ABCICode(), + }, + { + name: "a MsgGrant with MsgCreatePeriodicVestingAccount typeURL on the authorization field is blocked", + msgs: []sdk.Msg{ + newGenericMsgGrant( + testAddresses, + sdk.MsgTypeURL(&sdkvesting.MsgCreatePeriodicVestingAccount{}), + ), + }, + expectedCode: sdkerrors.ErrUnauthorized.ABCICode(), + }, { name: "a MsgGrant with MsgEthereumTx typeURL on the authorization field included on EIP712 tx is blocked", msgs: []sdk.Msg{ diff --git a/app/app.go b/app/app.go index aacc1cb2d8..940b0f95b7 100644 --- a/app/app.go +++ b/app/app.go @@ -823,6 +823,8 @@ func (app *EthermintApp) setAnteHandler(txConfig client.TxConfig, maxGasWanted u DisabledAuthzMsgs: []string{ sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), sdk.MsgTypeURL(&vestingtypes.MsgCreateVestingAccount{}), + sdk.MsgTypeURL(&vestingtypes.MsgCreatePermanentLockedAccount{}), + sdk.MsgTypeURL(&vestingtypes.MsgCreatePeriodicVestingAccount{}), }, PendingTxListener: app.onPendingTx, }) From ff4caa1aac5c99a8cf519536840fd7f01443557b Mon Sep 17 00:00:00 2001 From: fx0x55 <80245546+fx0x55@users.noreply.github.com> Date: Fri, 2 Aug 2024 12:45:03 +0800 Subject: [PATCH 011/210] Optimize AnteHandle method to skip checks if disabledMsgs is empty (#504) * Optimize AnteHandle method to skip checks if disabledMsgs is empty * Problem: cometbft not up to date (#505) include the fix from https://github.com/cometbft/cometbft/pull/3196 * Problem: disable of create vesting account messages are not complete (#506) * Problem: disable of create vesting account messages are not complete * Update CHANGELOG.md Signed-off-by: mmsqe --------- Signed-off-by: mmsqe * CHANGELOG * Update CHANGELOG.md Signed-off-by: mmsqe --------- Signed-off-by: mmsqe Signed-off-by: fx0x55 <80245546+fx0x55@users.noreply.github.com> Co-authored-by: mmsqe Co-authored-by: mmsqe --- CHANGELOG.md | 1 + app/ante/authz.go | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04edf7cbdf..1120c4f87b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -81,6 +81,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#496](https://github.com/crypto-org-chain/cronos/pull/496) Set mempool MaxTx from config. * (ante) [#497](https://github.com/crypto-org-chain/ethermint/pull/497) Enforce positive value check in eth transaction. * (deps) [#505](https://github.com/crypto-org-chain/ethermint/pull/505) Update cometbft to v0.38.10. +* (ante) [#504](https://github.com/crypto-org-chain/ethermint/pull/504) Optimize AnteHandle method to skip checks if disabledMsgs is empty. ## v0.21.x-cronos diff --git a/app/ante/authz.go b/app/ante/authz.go index 3909d0b3e1..561e8ea11d 100644 --- a/app/ante/authz.go +++ b/app/ante/authz.go @@ -48,6 +48,10 @@ func NewAuthzLimiterDecorator(disabledMsgTypes []string) AuthzLimiterDecorator { } func (ald AuthzLimiterDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { + if len(ald.disabledMsgs) == 0 { + return next(ctx, tx, simulate) + } + if err := ald.checkDisabledMsgs(tx.GetMsgs(), false, 0); err != nil { return ctx, errorsmod.Wrapf(errortypes.ErrUnauthorized, err.Error()) } From 0e0baa4ea54079296cebf233fe7510700f981830 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 2 Aug 2024 14:22:16 +0900 Subject: [PATCH 012/210] Problem: vote_extensions is not disabled in test (#507) * Problem: vote_extensions is not disabled in test * bump sdk --- go.mod | 6 +++--- go.sum | 12 ++++++------ gomod2nix.toml | 6 +++--- tests/integration_tests/configs/default.jsonnet | 3 --- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 5d1887824b..aa320e8bd2 100644 --- a/go.mod +++ b/go.mod @@ -243,9 +243,9 @@ require ( replace ( // release/v0.50.x - cosmossdk.io/client/v2 => github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240626040048-36295f051595 - cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240626040048-36295f051595 - cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240626040048-36295f051595 + cosmossdk.io/client/v2 => github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240715031529-5a1594f17924 + cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240715031529-5a1594f17924 + cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240715031529-5a1594f17924 github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240715031529-5a1594f17924 ) diff --git a/go.sum b/go.sum index 95751366b8..9a96d1c125 100644 --- a/go.sum +++ b/go.sum @@ -413,12 +413,12 @@ github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+F github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240715031529-5a1594f17924 h1:rTiEYiXC8AxKeKsOTz4QODkX9fvMAnlAj8R2gOACoxU= github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240715031529-5a1594f17924/go.mod h1:bIUzWfqXnCF2WTFb2uN+FjzMIG3BsOk+P2QmvMtm4ic= -github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240626040048-36295f051595 h1:xfrVLBZgV2DXjQXTSlaWHcG/s6Fdeme8tczaN4TTERw= -github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240626040048-36295f051595/go.mod h1:W5sR4asmVDUhJpEmuXTUBkk/yEefKlXTjVWcNciVSR0= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240626040048-36295f051595 h1:gHBOTNAuuGeD9HXGkTE04x3zee+00bXcVd8Jb3WG0nY= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240626040048-36295f051595/go.mod h1:gjE3DZe4t/+VeIk6CmrouyqiuDbZ7QOVDDq3nLqBTpg= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240626040048-36295f051595 h1:MPKv1EzM16dx+HzkJowgb9PrlbatRlgFYqk1IucsL2s= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240626040048-36295f051595/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= +github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240715031529-5a1594f17924 h1:blkVK4n/pPTFq3nyN3j91AD7Hs3c5qqsO2DXknFpEOM= +github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240715031529-5a1594f17924/go.mod h1:W5sR4asmVDUhJpEmuXTUBkk/yEefKlXTjVWcNciVSR0= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240715031529-5a1594f17924 h1:/F1OL8c4anqKwLNTYDfd7F4wFsf0T6fJoP6tiP0CjOw= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240715031529-5a1594f17924/go.mod h1:gjE3DZe4t/+VeIk6CmrouyqiuDbZ7QOVDDq3nLqBTpg= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240715031529-5a1594f17924 h1:zJUxWcSGsahMpDYACCmsuzdu/K+3Col1pNsoC8YEIiU= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240715031529-5a1594f17924/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= github.com/crypto-org-chain/go-block-stm v0.0.0-20240408011717-9f11af197bde h1:sQIHTJfVt5VTrF7po9eZiFkZiPjlHbFvnXtGCOoBjNM= github.com/crypto-org-chain/go-block-stm v0.0.0-20240408011717-9f11af197bde/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240425065928-ebb09502e7a7 h1:V43F3JFcqG4MUThf9W/DytnPblpR6CcaLBw2Wx6zTgE= diff --git a/gomod2nix.toml b/gomod2nix.toml index 64a3186f9c..e94e7cdb16 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -20,7 +20,7 @@ schema = 3 version = "v0.7.5" hash = "sha256-Nuw697sJr56kU3EU7DV1eYNkyI76psznIVqYAV6RfbQ=" [mod."cosmossdk.io/client/v2"] - version = "v2.0.0-20240626040048-36295f051595" + version = "v2.0.0-20240715031529-5a1594f17924" hash = "sha256-60hmufv3Ml4Pv3zNwgn8eeqlEINOR6n9MKr2QHddoxo=" replaced = "github.com/crypto-org-chain/cosmos-sdk/client/v2" [mod."cosmossdk.io/collections"] @@ -42,7 +42,7 @@ schema = 3 version = "v1.3.0" hash = "sha256-EEFK43Cr0g0ndhQhkIKher0FqV3mvkmE9z0sP7uVSHg=" [mod."cosmossdk.io/store"] - version = "v0.0.0-20240626040048-36295f051595" + version = "v0.0.0-20240715031529-5a1594f17924" hash = "sha256-zne7cIFs9WLg11pIr9VLBBc+G+kZfKLn8UU1mP4w6BM=" replaced = "github.com/crypto-org-chain/cosmos-sdk/store" [mod."cosmossdk.io/tools/confix"] @@ -55,7 +55,7 @@ schema = 3 version = "v0.1.0" hash = "sha256-/gWvrqvy6bW90+NU66T+9QysYgvG1VbwfYJZ8tkqpeA=" [mod."cosmossdk.io/x/tx"] - version = "v0.0.0-20240626040048-36295f051595" + version = "v0.0.0-20240715031529-5a1594f17924" hash = "sha256-xT5IdapEx1h46ofBpxcBQfzGF2EntmC8xZl7aym/6xE=" replaced = "github.com/crypto-org-chain/cosmos-sdk/x/tx" [mod."cosmossdk.io/x/upgrade"] diff --git a/tests/integration_tests/configs/default.jsonnet b/tests/integration_tests/configs/default.jsonnet index fba86f6d22..0f5a0495f7 100644 --- a/tests/integration_tests/configs/default.jsonnet +++ b/tests/integration_tests/configs/default.jsonnet @@ -47,9 +47,6 @@ max_bytes: '1048576', max_gas: '81500000', }, - abci: { - vote_extensions_enable_height: '1', - }, }, }, app_state: { From e3b813e7244f9db4584ce94cb4380bd0cb86360a Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 7 Aug 2024 15:11:34 +0800 Subject: [PATCH 013/210] Problem: no debug files uploaded when timeout in ci (#511) * Problem: no debug files uploaded when timeout in ci 30mins for marked, 1h for all in pytest * Apply suggestions from code review * set both --- scripts/run-integration-tests.sh | 4 ++-- tests/integration_tests/poetry.lock | 16 +++++++++++++++- tests/integration_tests/pyproject.toml | 1 + 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/scripts/run-integration-tests.sh b/scripts/run-integration-tests.sh index e867e392a9..869b079cf1 100755 --- a/scripts/run-integration-tests.sh +++ b/scripts/run-integration-tests.sh @@ -15,8 +15,8 @@ TESTS_TO_RUN="${TESTS_TO_RUN:-all}" if [[ "$TESTS_TO_RUN" == "all" ]]; then echo "run all tests" - pytest -vv -s + pytest -vv -s --session-timeout=3600 --timeout=3600 else echo "run tests matching $TESTS_TO_RUN" - pytest -vv -s -m "$TESTS_TO_RUN" + pytest -vv -s --session-timeout=1800 --timeout=1800 -m "$TESTS_TO_RUN" fi diff --git a/tests/integration_tests/poetry.lock b/tests/integration_tests/poetry.lock index eec61d6f31..f0623209a6 100644 --- a/tests/integration_tests/poetry.lock +++ b/tests/integration_tests/poetry.lock @@ -1682,6 +1682,20 @@ files = [ [package.dependencies] pytest = ">=4.0.0" +[[package]] +name = "pytest-timeout" +version = "2.3.1" +description = "pytest plugin to abort hanging tests" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-timeout-2.3.1.tar.gz", hash = "sha256:12397729125c6ecbdaca01035b9e5239d4db97352320af155b3f5de1ba5165d9"}, + {file = "pytest_timeout-2.3.1-py3-none-any.whl", hash = "sha256:68188cb703edfc6a18fad98dc25a3c61e9f24d644b0b70f33af545219fc7813e"}, +] + +[package.dependencies] +pytest = ">=7.0.0" + [[package]] name = "python-dateutil" version = "2.8.2" @@ -2438,4 +2452,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "e2b24f3af2972f3799b6b7877084e48158b3dde1833c5837d32701f7ce81c42c" +content-hash = "65304e32f3e7250a07fb7efedcb7649c08d4a421ddbba9ce0b1b0097e3e3b277" diff --git a/tests/integration_tests/pyproject.toml b/tests/integration_tests/pyproject.toml index 01528df262..c7376e91fb 100644 --- a/tests/integration_tests/pyproject.toml +++ b/tests/integration_tests/pyproject.toml @@ -27,6 +27,7 @@ flaky = "^3.7" eth-bloom = "^3.0" eth-hash = "^0" jedi-language-server = "^0.41.3" +pytest-timeout = "^2.3.1" [tool.poetry.dev-dependencies] From 7ef8af1388ac62f925275cd9511528281e53be73 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 7 Aug 2024 21:21:47 +0800 Subject: [PATCH 014/210] Problem: nondeterministic account set occurs with more stm workers (#509) * rename * pytest -v -s test_debug_traceblock.py * follow existing practice * update test * update stm * test * add timeout * disable * revert * fix * update deps --------- Co-authored-by: huangyi --- CHANGELOG.md | 1 + app/ante/eth.go | 4 ++-- app/ante/eth_test.go | 6 +++--- app/ante/handler_options.go | 2 +- go.mod | 10 +++++----- go.sum | 20 +++++++++---------- gomod2nix.toml | 16 +++++++-------- server/config/config.go | 2 +- .../integration_tests/configs/default.jsonnet | 20 ++++++++++++++----- .../test_debug_traceblock.py | 2 ++ 10 files changed, 48 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1120c4f87b..951ca23da0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,6 +63,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#480](https://github.com/crypto-org-chain/ethermint/pull/480), [#482](https://github.com/crypto-org-chain/ethermint/pull/482) Fix parsed logs from old events. * (rpc) [#488](https://github.com/crypto-org-chain/ethermint/pull/488) Fix handling of pending transactions related APIs. * (rpc) [#501](https://github.com/crypto-org-chain/ethermint/pull/501) Avoid invalid chain id for signer error when rpc call before chain id set in BeginBlock. +* (block-stm) [#510](https://github.com/crypto-org-chain/ethermint/pull/510) Include a fix to avoid nondeterministic account set when stm workers execute in parallel. ### Improvements diff --git a/app/ante/eth.go b/app/ante/eth.go index 66b0071001..8d9cd28250 100644 --- a/app/ante/eth.go +++ b/app/ante/eth.go @@ -245,10 +245,10 @@ func canTransfer(ctx sdk.Context, evmKeeper EVMKeeper, denom string, from common return balance.Cmp(amount) >= 0 } -// CheckEthSenderNonce handles incrementing the sequence of the signer (i.e sender). If the transaction is a +// CheckAndSetEthSenderNonce handles incrementing the sequence of the signer (i.e sender). If the transaction is a // contract creation, the nonce will be incremented during the transaction execution and not within // this AnteHandler decorator. -func CheckEthSenderNonce( +func CheckAndSetEthSenderNonce( ctx sdk.Context, tx sdk.Tx, ak evmtypes.AccountKeeper, unsafeUnOrderedTx bool, ) error { for _, msg := range tx.GetMsgs() { diff --git a/app/ante/eth_test.go b/app/ante/eth_test.go index 49ceacc6af..670e6ff974 100644 --- a/app/ante/eth_test.go +++ b/app/ante/eth_test.go @@ -147,7 +147,7 @@ func (suite *AnteTestSuite) TestEthNonceVerificationDecorator() { for _, tc := range testCases { suite.Run(tc.name, func() { tc.malleate() - err := ante.CheckEthSenderNonce(suite.ctx.WithIsReCheckTx(tc.reCheckTx), tc.tx, suite.app.AccountKeeper, false) + err := ante.CheckAndSetEthSenderNonce(suite.ctx.WithIsReCheckTx(tc.reCheckTx), tc.tx, suite.app.AccountKeeper, false) if tc.expPass { suite.Require().NoError(err) @@ -539,12 +539,12 @@ func (suite *AnteTestSuite) TestEthIncrementSenderSequenceDecorator() { if tc.expPanic { suite.Require().Panics(func() { - _ = ante.CheckEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false) + _ = ante.CheckAndSetEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false) }) return } - err := ante.CheckEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false) + err := ante.CheckAndSetEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false) if tc.expPass { suite.Require().NoError(err) diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index 551711db1f..a6396cd8a0 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -141,7 +141,7 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { return ctx, err } - if err := CheckEthSenderNonce(ctx, tx, options.AccountKeeper, options.UnsafeUnorderedTx); err != nil { + if err := CheckAndSetEthSenderNonce(ctx, tx, options.AccountKeeper, options.UnsafeUnorderedTx); err != nil { return ctx, err } diff --git a/go.mod b/go.mod index aa320e8bd2..76c1e26504 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/cosmos/ibc-go/modules/capability v1.0.0 github.com/cosmos/ibc-go/v8 v8.1.0 github.com/cosmos/rosetta v0.50.3-1 - github.com/crypto-org-chain/go-block-stm v0.0.0-20240408011717-9f11af197bde + github.com/crypto-org-chain/go-block-stm v0.0.0-20240806075927-09a64748f883 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/ethereum/go-ethereum v1.10.26 github.com/gogo/protobuf v1.3.2 @@ -243,10 +243,10 @@ require ( replace ( // release/v0.50.x - cosmossdk.io/client/v2 => github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240715031529-5a1594f17924 - cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240715031529-5a1594f17924 - cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240715031529-5a1594f17924 - github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240715031529-5a1594f17924 + cosmossdk.io/client/v2 => github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240722033504-50f1fa0c49d1 + cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240722033504-50f1fa0c49d1 + cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240722033504-50f1fa0c49d1 + github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240722033504-50f1fa0c49d1 ) replace ( diff --git a/go.sum b/go.sum index 9a96d1c125..47e04d00a9 100644 --- a/go.sum +++ b/go.sum @@ -411,16 +411,16 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+FBB8cMkDE2j2VBVsbY+HCkPIu0YsJ/9bbGeQ= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240715031529-5a1594f17924 h1:rTiEYiXC8AxKeKsOTz4QODkX9fvMAnlAj8R2gOACoxU= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240715031529-5a1594f17924/go.mod h1:bIUzWfqXnCF2WTFb2uN+FjzMIG3BsOk+P2QmvMtm4ic= -github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240715031529-5a1594f17924 h1:blkVK4n/pPTFq3nyN3j91AD7Hs3c5qqsO2DXknFpEOM= -github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240715031529-5a1594f17924/go.mod h1:W5sR4asmVDUhJpEmuXTUBkk/yEefKlXTjVWcNciVSR0= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240715031529-5a1594f17924 h1:/F1OL8c4anqKwLNTYDfd7F4wFsf0T6fJoP6tiP0CjOw= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240715031529-5a1594f17924/go.mod h1:gjE3DZe4t/+VeIk6CmrouyqiuDbZ7QOVDDq3nLqBTpg= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240715031529-5a1594f17924 h1:zJUxWcSGsahMpDYACCmsuzdu/K+3Col1pNsoC8YEIiU= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240715031529-5a1594f17924/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= -github.com/crypto-org-chain/go-block-stm v0.0.0-20240408011717-9f11af197bde h1:sQIHTJfVt5VTrF7po9eZiFkZiPjlHbFvnXtGCOoBjNM= -github.com/crypto-org-chain/go-block-stm v0.0.0-20240408011717-9f11af197bde/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240722033504-50f1fa0c49d1 h1:xahHemSiT79xgh8Ig8zOTeHSLHt9FfPzViK7rATWhUM= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240722033504-50f1fa0c49d1/go.mod h1:Rb43DdB0i/rKcCN69Tg2X3+zA4WhJ7MC8K3a6Ezh38E= +github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240722033504-50f1fa0c49d1 h1:zqTYZqMKnv15UkKwCEbGqshZ6tWczctBYP53FxmEiF8= +github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240722033504-50f1fa0c49d1/go.mod h1:W5sR4asmVDUhJpEmuXTUBkk/yEefKlXTjVWcNciVSR0= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240722033504-50f1fa0c49d1 h1:ZlezTiQu9pYpVO+6sB9+W3fvthIpV1GgSI8kPjw+v5s= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240722033504-50f1fa0c49d1/go.mod h1:gjE3DZe4t/+VeIk6CmrouyqiuDbZ7QOVDDq3nLqBTpg= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240722033504-50f1fa0c49d1 h1:r0ALP31Wnw19FqEmqzsK2SFNqdMetHshnM/X/FeJRIo= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240722033504-50f1fa0c49d1/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= +github.com/crypto-org-chain/go-block-stm v0.0.0-20240806075927-09a64748f883 h1:Oj7VvlK8iXRaugnpGA8CBXGrgkyigji+Ae5weSRD85I= +github.com/crypto-org-chain/go-block-stm v0.0.0-20240806075927-09a64748f883/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240425065928-ebb09502e7a7 h1:V43F3JFcqG4MUThf9W/DytnPblpR6CcaLBw2Wx6zTgE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240425065928-ebb09502e7a7/go.mod h1:+a8pUj1tOyJ2RinsNQD4326YS+leSoKGiG/uVVb0x6Y= github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= diff --git a/gomod2nix.toml b/gomod2nix.toml index e94e7cdb16..489d5e12aa 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -20,7 +20,7 @@ schema = 3 version = "v0.7.5" hash = "sha256-Nuw697sJr56kU3EU7DV1eYNkyI76psznIVqYAV6RfbQ=" [mod."cosmossdk.io/client/v2"] - version = "v2.0.0-20240715031529-5a1594f17924" + version = "v2.0.0-20240722033504-50f1fa0c49d1" hash = "sha256-60hmufv3Ml4Pv3zNwgn8eeqlEINOR6n9MKr2QHddoxo=" replaced = "github.com/crypto-org-chain/cosmos-sdk/client/v2" [mod."cosmossdk.io/collections"] @@ -42,8 +42,8 @@ schema = 3 version = "v1.3.0" hash = "sha256-EEFK43Cr0g0ndhQhkIKher0FqV3mvkmE9z0sP7uVSHg=" [mod."cosmossdk.io/store"] - version = "v0.0.0-20240715031529-5a1594f17924" - hash = "sha256-zne7cIFs9WLg11pIr9VLBBc+G+kZfKLn8UU1mP4w6BM=" + version = "v0.0.0-20240722033504-50f1fa0c49d1" + hash = "sha256-Dm3sSZNJBcnBF33PULoTpK4rkNQbsZl0DfTqH1GPCQM=" replaced = "github.com/crypto-org-chain/cosmos-sdk/store" [mod."cosmossdk.io/tools/confix"] version = "v0.1.1" @@ -55,7 +55,7 @@ schema = 3 version = "v0.1.0" hash = "sha256-/gWvrqvy6bW90+NU66T+9QysYgvG1VbwfYJZ8tkqpeA=" [mod."cosmossdk.io/x/tx"] - version = "v0.0.0-20240715031529-5a1594f17924" + version = "v0.0.0-20240722033504-50f1fa0c49d1" hash = "sha256-xT5IdapEx1h46ofBpxcBQfzGF2EntmC8xZl7aym/6xE=" replaced = "github.com/crypto-org-chain/cosmos-sdk/x/tx" [mod."cosmossdk.io/x/upgrade"] @@ -163,8 +163,8 @@ schema = 3 version = "v1.0.0-beta.5" hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg=" [mod."github.com/cosmos/cosmos-sdk"] - version = "v0.50.6-0.20240715031529-5a1594f17924" - hash = "sha256-1oX4RDHti4eGTkHIdqUZfCYUXpw5Ao7oBZDfZclF1Mk=" + version = "v0.50.6-0.20240722033504-50f1fa0c49d1" + hash = "sha256-OjJgi6tq5c4czeQLZVeJRBo4s4kC37h4IFT/GGvF7G0=" replaced = "github.com/crypto-org-chain/cosmos-sdk" [mod."github.com/cosmos/go-bip39"] version = "v1.0.0" @@ -203,8 +203,8 @@ schema = 3 version = "v0.0.24" hash = "sha256-4vUukHONOjNn0qfQr4esK6TWfPWsIp+rbdz65og84lw=" [mod."github.com/crypto-org-chain/go-block-stm"] - version = "v0.0.0-20240408011717-9f11af197bde" - hash = "sha256-+UTSUoh4DxkWPQEc/j0atak1Oxq3tdP8r6ZMmB0k5KE=" + version = "v0.0.0-20240806075927-09a64748f883" + hash = "sha256-DuqcnTqpUVRxV+I+CaBuDg/1CLmMeXdw4VEFeuCsUbU=" [mod."github.com/danieljoos/wincred"] version = "v1.2.0" hash = "sha256-LHcvTJCc8++bFndbd8ZgMSTe4L5h2C4rN+cSWHCz54Y=" diff --git a/server/config/config.go b/server/config/config.go index aa32e17be3..4182ef85e5 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -258,7 +258,7 @@ func (c EVMConfig) Validate() error { return fmt.Errorf("invalid tracer type %s, available types: %v", c.Tracer, evmTracers) } - if !strings.StringInSlice(c.BlockExecutor, blockExecutors) { + if c.BlockExecutor != "" && !strings.StringInSlice(c.BlockExecutor, blockExecutors) { return fmt.Errorf("invalid block executor type %s, available types: %v", c.BlockExecutor, blockExecutors) } diff --git a/tests/integration_tests/configs/default.jsonnet b/tests/integration_tests/configs/default.jsonnet index 0f5a0495f7..1345ee682a 100644 --- a/tests/integration_tests/configs/default.jsonnet +++ b/tests/integration_tests/configs/default.jsonnet @@ -6,9 +6,6 @@ 'app-config': { 'minimum-gas-prices': '0aphoton', 'index-events': ['ethereum_tx.ethereumTxHash'], - evm: { - 'block-executor': 'block-stm', - }, 'json-rpc': { address: '127.0.0.1:{EVMRPC_PORT}', 'ws-address': '127.0.0.1:{EVMRPC_PORT_WS}', @@ -22,11 +19,24 @@ validators: [{ coins: '1000000000000000000stake,10000000000000000000000aphoton', staked: '1000000000000000000stake', - mnemonic: mnemonic, + mnemonic: '${VALIDATOR1_MNEMONIC}', client_config: { 'broadcast-mode': 'sync', }, - } for mnemonic in ['${VALIDATOR1_MNEMONIC}', '${VALIDATOR2_MNEMONIC}']], + 'app-config': { + evm: { + 'block-executor': 'block-stm', + 'block-stm-workers': 32, + }, + }, + }, { + coins: '1000000000000000000stake,10000000000000000000000aphoton', + staked: '1000000000000000000stake', + mnemonic: '${VALIDATOR2_MNEMONIC}', + client_config: { + 'broadcast-mode': 'sync', + }, + }], accounts: [{ name: 'community', coins: '10000000000000000000000aphoton', diff --git a/tests/integration_tests/test_debug_traceblock.py b/tests/integration_tests/test_debug_traceblock.py index 2e83fdd069..906d14c078 100644 --- a/tests/integration_tests/test_debug_traceblock.py +++ b/tests/integration_tests/test_debug_traceblock.py @@ -5,6 +5,7 @@ derive_new_account, send_transaction, sign_transaction, + w3_wait_for_block, wait_for_new_blocks, ) @@ -56,3 +57,4 @@ def trace_blk(blk): if total < expected: total += len(trace_blk(blk + 1)) assert total == expected + w3_wait_for_block(w3, w3.eth.block_number + 3, timeout=30) From fe3f4fd535d72e50e2628f44487d3159efb4d4ec Mon Sep 17 00:00:00 2001 From: mmsqe Date: Thu, 15 Aug 2024 13:15:59 +0800 Subject: [PATCH 015/210] Problem: unnecessary GetAccount in ante handlers (#513) * Problem: unnecessary GetAccount in ante handlers reuse account after verify account balance to avoid get again when check sender sequence * rename * less MakeSigner * cast string * cleanup * fix test * fix lint * cleanup * cleanup test * rm prefix * fix * fix test, account created automatically * rename * fix comment * Apply suggestions from code review Signed-off-by: yihuang * cleanup --------- Signed-off-by: yihuang Co-authored-by: huangyi --- CHANGELOG.md | 1 + app/ante/authz.go | 2 +- app/ante/eth.go | 46 ++++++++++++++++++++++++++--------- app/ante/eth_test.go | 13 ++++++---- app/ante/handler_options.go | 10 +++++--- tests/rpc/utils.go | 2 +- x/evm/keeper/keeper.go | 12 +-------- x/evm/keeper/utils.go | 2 +- x/evm/statedb/state_object.go | 14 +++++++++++ 9 files changed, 68 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 951ca23da0..7980fc8963 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (app) [#451](https://github.com/crypto-org-chain/ethermint/pull/451) Disable block gas meter, it's not compatible with parallel tx execution. It's safe to do as long as we checks total gas-wanted against block gas limit in process proposal, which we do in default handler. * (ante) [#493](https://github.com/crypto-org-chain/ethermint/pull/493) Align gasWanted for process proposal mode, [#500](https://github.com/crypto-org-chain/ethermint/pull/500) Check for overflow before adding gasLimit to gasWanted. * (ante) [#506](https://github.com/crypto-org-chain/ethermint/pull/506) Disable MsgCreatePermanentLockedAccount and MsgCreatePeriodicVestingAccount messages. +* (ante) [#513](https://github.com/crypto-org-chain/ethermint/pull/513) Avoid unnecessary GetAccount and MakeSigner in ante handlers. ### Bug Fixes diff --git a/app/ante/authz.go b/app/ante/authz.go index 561e8ea11d..5c71dc2cef 100644 --- a/app/ante/authz.go +++ b/app/ante/authz.go @@ -53,7 +53,7 @@ func (ald AuthzLimiterDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate } if err := ald.checkDisabledMsgs(tx.GetMsgs(), false, 0); err != nil { - return ctx, errorsmod.Wrapf(errortypes.ErrUnauthorized, err.Error()) + return ctx, errorsmod.Wrap(errortypes.ErrUnauthorized, err.Error()) } return next(ctx, tx, simulate) } diff --git a/app/ante/eth.go b/app/ante/eth.go index 8d9cd28250..67a95113e0 100644 --- a/app/ante/eth.go +++ b/app/ante/eth.go @@ -28,21 +28,46 @@ import ( ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm/keeper" + "github.com/evmos/ethermint/x/evm/statedb" evmtypes "github.com/evmos/ethermint/x/evm/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/params" ) +type AccountGetter func(sdk.AccAddress) sdk.AccountI + +// NewCachedAccountGetter cache the account objects during the ante handler execution, +// it's safe because there's no store branching in the ante handlers, +// it also creates new account in memory if it doesn't exist in the store. +func NewCachedAccountGetter(ctx sdk.Context, ak evmtypes.AccountKeeper) AccountGetter { + accounts := make(map[string]sdk.AccountI, 1) + return func(addr sdk.AccAddress) sdk.AccountI { + acc := accounts[string(addr)] + if acc == nil { + acc = ak.GetAccount(ctx, addr) + if acc == nil { + // we create a new account in memory if it doesn't exist, + // which is only set to store when updated. + acc = ak.NewAccountWithAddress(ctx, addr) + } + accounts[string(addr)] = acc + } + return acc + } +} + // VerifyEthAccount validates checks that the sender balance is greater than the total transaction cost. -// The account will be set to store if it doesn't exis, i.e cannot be found on store. +// The account will be created in memory if it doesn't exist, i.e cannot be found on store, which will eventually set to +// store when increasing nonce. // This AnteHandler decorator will fail if: // - any of the msgs is not a MsgEthereumTx // - from address is empty // - account balance is lower than the transaction cost func VerifyEthAccount( ctx sdk.Context, tx sdk.Tx, - evmKeeper EVMKeeper, ak evmtypes.AccountKeeper, evmDenom string, + evmKeeper EVMKeeper, evmDenom string, + accountGetter AccountGetter, ) error { if !ctx.IsCheckTx() { return nil @@ -63,13 +88,9 @@ func VerifyEthAccount( } // check whether the sender address is EOA - fromAddr := common.BytesToAddress(from) - acct := evmKeeper.GetAccount(ctx, fromAddr) - - if acct == nil { - acc := ak.NewAccountWithAddress(ctx, from) - ak.SetAccount(ctx, acc) - } else if acct.IsContract() { + acct := statedb.NewAccountFromSdkAccount(accountGetter(from)) + if acct.IsContract() { + fromAddr := common.BytesToAddress(from) return errorsmod.Wrapf(errortypes.ErrInvalidType, "the sender is not EOA: address %s, codeHash <%s>", fromAddr, acct.CodeHash) } @@ -249,7 +270,7 @@ func canTransfer(ctx sdk.Context, evmKeeper EVMKeeper, denom string, from common // contract creation, the nonce will be incremented during the transaction execution and not within // this AnteHandler decorator. func CheckAndSetEthSenderNonce( - ctx sdk.Context, tx sdk.Tx, ak evmtypes.AccountKeeper, unsafeUnOrderedTx bool, + ctx sdk.Context, tx sdk.Tx, ak evmtypes.AccountKeeper, unsafeUnOrderedTx bool, accountGetter AccountGetter, ) error { for _, msg := range tx.GetMsgs() { msgEthTx, ok := msg.(*evmtypes.MsgEthereumTx) @@ -260,11 +281,12 @@ func CheckAndSetEthSenderNonce( tx := msgEthTx.AsTransaction() // increase sequence of sender - acc := ak.GetAccount(ctx, msgEthTx.GetFrom()) + from := msgEthTx.GetFrom() + acc := accountGetter(from) if acc == nil { return errorsmod.Wrapf( errortypes.ErrUnknownAddress, - "account %s is nil", common.BytesToAddress(msgEthTx.GetFrom().Bytes()), + "account %s is nil", common.BytesToAddress(from.Bytes()), ) } nonce := acc.GetSequence() diff --git a/app/ante/eth_test.go b/app/ante/eth_test.go index 670e6ff974..c44863db27 100644 --- a/app/ante/eth_test.go +++ b/app/ante/eth_test.go @@ -92,7 +92,8 @@ func (suite *AnteTestSuite) TestNewEthAccountVerificationDecorator() { tc.malleate() suite.Require().NoError(vmdb.Commit()) - err := ante.VerifyEthAccount(suite.ctx.WithIsCheckTx(tc.checkTx), tc.tx, suite.app.EvmKeeper, suite.app.AccountKeeper, evmtypes.DefaultEVMDenom) + accountGetter := ante.NewCachedAccountGetter(suite.ctx, suite.app.AccountKeeper) + err := ante.VerifyEthAccount(suite.ctx.WithIsCheckTx(tc.checkTx), tc.tx, suite.app.EvmKeeper, evmtypes.DefaultEVMDenom, accountGetter) if tc.expPass { suite.Require().NoError(err) @@ -147,7 +148,8 @@ func (suite *AnteTestSuite) TestEthNonceVerificationDecorator() { for _, tc := range testCases { suite.Run(tc.name, func() { tc.malleate() - err := ante.CheckAndSetEthSenderNonce(suite.ctx.WithIsReCheckTx(tc.reCheckTx), tc.tx, suite.app.AccountKeeper, false) + accountGetter := ante.NewCachedAccountGetter(suite.ctx, suite.app.AccountKeeper) + err := ante.CheckAndSetEthSenderNonce(suite.ctx.WithIsReCheckTx(tc.reCheckTx), tc.tx, suite.app.AccountKeeper, false, accountGetter) if tc.expPass { suite.Require().NoError(err) @@ -514,7 +516,7 @@ func (suite *AnteTestSuite) TestEthIncrementSenderSequenceDecorator() { "account not set to store", tx, func() {}, - false, false, + true, false, }, { "success - create contract", @@ -536,15 +538,16 @@ func (suite *AnteTestSuite) TestEthIncrementSenderSequenceDecorator() { for _, tc := range testCases { suite.Run(tc.name, func() { tc.malleate() + accountGetter := ante.NewCachedAccountGetter(suite.ctx, suite.app.AccountKeeper) if tc.expPanic { suite.Require().Panics(func() { - _ = ante.CheckAndSetEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false) + _ = ante.CheckAndSetEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false, accountGetter) }) return } - err := ante.CheckAndSetEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false) + err := ante.CheckAndSetEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false, accountGetter) if tc.expPass { suite.Require().NoError(err) diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index a6396cd8a0..ccf446a88a 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -87,7 +87,6 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { feemarketParams := &blockCfg.FeeMarketParams baseFee := blockCfg.BaseFee rules := blockCfg.Rules - ethSigner := ethtypes.MakeSigner(blockCfg.ChainConfig, blockCfg.BlockNumber) // all transactions must implement FeeTx _, ok := tx.(sdk.FeeTx) @@ -118,6 +117,7 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { err = v.(error) } } else { + ethSigner := ethtypes.MakeSigner(blockCfg.ChainConfig, blockCfg.BlockNumber) err = VerifyEthSig(tx, ethSigner) ctx.SetIncarnationCache(EthSigVerificationResultCacheKey, err) } @@ -125,7 +125,11 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { return ctx, err } - if err := VerifyEthAccount(ctx, tx, options.EvmKeeper, options.AccountKeeper, evmDenom); err != nil { + // AccountGetter cache the account objects during the ante handler execution, + // it's safe because there's no store branching in the ante handlers. + accountGetter := NewCachedAccountGetter(ctx, options.AccountKeeper) + + if err := VerifyEthAccount(ctx, tx, options.EvmKeeper, evmDenom, accountGetter); err != nil { return ctx, err } @@ -141,7 +145,7 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { return ctx, err } - if err := CheckAndSetEthSenderNonce(ctx, tx, options.AccountKeeper, options.UnsafeUnorderedTx); err != nil { + if err := CheckAndSetEthSenderNonce(ctx, tx, options.AccountKeeper, options.UnsafeUnorderedTx, accountGetter); err != nil { return ctx, err } diff --git a/tests/rpc/utils.go b/tests/rpc/utils.go index 77539af10d..f1c5055c79 100644 --- a/tests/rpc/utils.go +++ b/tests/rpc/utils.go @@ -149,7 +149,7 @@ func CallWithError(method string, params interface{}) (*Response, error) { } if rpcRes.Error != nil { - return nil, fmt.Errorf(rpcRes.Error.Message) + return nil, errors.New(rpcRes.Error.Message) } return rpcRes, nil diff --git a/x/evm/keeper/keeper.go b/x/evm/keeper/keeper.go index 99d12e085e..39997b685b 100644 --- a/x/evm/keeper/keeper.go +++ b/x/evm/keeper/keeper.go @@ -216,17 +216,7 @@ func (k *Keeper) GetAccount(ctx sdk.Context, addr common.Address) *statedb.Accou if acct == nil { return nil } - - codeHash := types.EmptyCodeHash - ethAcct, ok := acct.(ethermint.EthAccountI) - if ok { - codeHash = ethAcct.GetCodeHash().Bytes() - } - - return &statedb.Account{ - Nonce: acct.GetSequence(), - CodeHash: codeHash, - } + return statedb.NewAccountFromSdkAccount(acct) } // GetAccountOrEmpty returns empty account if not exist, returns error if it's not `EthAccount` diff --git a/x/evm/keeper/utils.go b/x/evm/keeper/utils.go index d2b1257692..1da011225c 100644 --- a/x/evm/keeper/utils.go +++ b/x/evm/keeper/utils.go @@ -169,7 +169,7 @@ func DeductFees(bankKeeper types.BankKeeper, ctx sdk.Context, acc sdk.AccountI, } if ctx.BlockHeight() > 0 { if err := bankKeeper.SendCoinsFromAccountToModuleVirtual(ctx, acc.GetAddress(), authtypes.FeeCollectorName, fees); err != nil { - return errorsmod.Wrapf(errortypes.ErrInsufficientFunds, err.Error()) + return errorsmod.Wrap(errortypes.ErrInsufficientFunds, err.Error()) } } return nil diff --git a/x/evm/statedb/state_object.go b/x/evm/statedb/state_object.go index a9cffe6525..30b60b6554 100644 --- a/x/evm/statedb/state_object.go +++ b/x/evm/statedb/state_object.go @@ -19,8 +19,10 @@ import ( "bytes" "sort" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" + ethermint "github.com/evmos/ethermint/types" ) var emptyCodeHash = crypto.Keccak256(nil) @@ -39,6 +41,18 @@ func NewEmptyAccount() *Account { } } +// NewAccountFromSdkAccount extracts the nonce and code hash from the provided SDK account. +func NewAccountFromSdkAccount(acct sdk.AccountI) *Account { + acc := NewEmptyAccount() + acc.Nonce = acct.GetSequence() + + if ethAcct, ok := acct.(ethermint.EthAccountI); ok { + acc.CodeHash = ethAcct.GetCodeHash().Bytes() + } + + return acc +} + // IsContract returns if the account contains contract code. func (acct Account) IsContract() bool { return !bytes.Equal(acct.CodeHash, emptyCodeHash) From d26adadb8dcce75f6b24e2251ab922dcf9b5c0f2 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Tue, 10 Sep 2024 11:46:52 +0800 Subject: [PATCH 016/210] Problem: handle for integer overflow is messy (#517) --- CHANGELOG.md | 1 + app/ante/fee_checker.go | 9 ++-- ethereum/eip712/domain.go | 4 +- ethereum/eip712/eip712.go | 7 ++- ethereum/eip712/eip712_legacy.go | 7 ++- indexer/kv_indexer.go | 14 ++++-- rpc/backend/account_info.go | 15 ++++--- rpc/backend/blocks.go | 6 ++- rpc/backend/chain_info.go | 23 +++++++--- rpc/backend/tracing.go | 8 +++- rpc/backend/tx_info.go | 31 ++++++++++--- rpc/namespaces/ethereum/debug/api.go | 58 +++++++++++++++++++----- rpc/types/block.go | 9 ++-- rpc/types/events.go | 13 ++++-- testutil/tx/cosmos.go | 3 +- types/int.go | 67 +++++++++++++++++++++++++--- x/evm/keeper/msg_server.go | 12 ++++- x/evm/keeper/state_transition.go | 12 ++++- x/evm/simulation/operations.go | 4 +- x/evm/types/eth.go | 6 ++- x/feemarket/keeper/abci.go | 19 ++++---- x/feemarket/keeper/grpc_query.go | 9 ++-- 22 files changed, 260 insertions(+), 77 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7980fc8963..b597bf12a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -84,6 +84,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (ante) [#497](https://github.com/crypto-org-chain/ethermint/pull/497) Enforce positive value check in eth transaction. * (deps) [#505](https://github.com/crypto-org-chain/ethermint/pull/505) Update cometbft to v0.38.10. * (ante) [#504](https://github.com/crypto-org-chain/ethermint/pull/504) Optimize AnteHandle method to skip checks if disabledMsgs is empty. +* [#517](https://github.com/crypto-org-chain/ethermint/pull/517) Add check for integer overflow to ensure safe conversion. ## v0.21.x-cronos diff --git a/app/ante/fee_checker.go b/app/ante/fee_checker.go index 3a97ecb0b2..53b890311b 100644 --- a/app/ante/fee_checker.go +++ b/app/ante/fee_checker.go @@ -118,7 +118,10 @@ func checkTxFeeWithValidatorMinGasPrices(ctx sdk.Context, tx sdk.Tx) (sdk.Coins, } feeCoins := feeTx.GetFee() - gas := feeTx.GetGas() + gas, err := ethermint.SafeInt64(feeTx.GetGas()) + if err != nil { + return nil, 0, err + } minGasPrices := ctx.MinGasPrices() // Ensure that the provided fees meet a minimum threshold for the validator, @@ -129,7 +132,7 @@ func checkTxFeeWithValidatorMinGasPrices(ctx sdk.Context, tx sdk.Tx) (sdk.Coins, // Determine the required fees by multiplying each required minimum gas // price by the gas limit, where fee = ceil(minGasPrice * gasLimit). - glDec := sdkmath.LegacyNewDec(int64(gas)) + glDec := sdkmath.LegacyNewDec(gas) for i, gp := range minGasPrices { fee := gp.Amount.Mul(glDec) @@ -141,7 +144,7 @@ func checkTxFeeWithValidatorMinGasPrices(ctx sdk.Context, tx sdk.Tx) (sdk.Coins, } } - priority := getTxPriority(feeCoins, int64(gas)) + priority := getTxPriority(feeCoins, gas) return feeCoins, priority, nil } diff --git a/ethereum/eip712/domain.go b/ethereum/eip712/domain.go index 5c63df4299..6390d53e9e 100644 --- a/ethereum/eip712/domain.go +++ b/ethereum/eip712/domain.go @@ -21,11 +21,11 @@ import ( ) // createEIP712Domain creates the typed data domain for the given chainID. -func createEIP712Domain(chainID uint64) apitypes.TypedDataDomain { +func createEIP712Domain(chainID int64) apitypes.TypedDataDomain { domain := apitypes.TypedDataDomain{ Name: "Cosmos Web3", Version: "1.0.0", - ChainId: math.NewHexOrDecimal256(int64(chainID)), // #nosec G701 + ChainId: math.NewHexOrDecimal256(chainID), VerifyingContract: "cosmos", Salt: "0", } diff --git a/ethereum/eip712/eip712.go b/ethereum/eip712/eip712.go index cef97b31b1..e87de9491e 100644 --- a/ethereum/eip712/eip712.go +++ b/ethereum/eip712/eip712.go @@ -17,6 +17,7 @@ package eip712 import ( "github.com/ethereum/go-ethereum/signer/core/apitypes" + ethermint "github.com/evmos/ethermint/types" ) // WrapTxToTypedData wraps an Amino-encoded Cosmos Tx JSON SignDoc @@ -36,7 +37,11 @@ func WrapTxToTypedData( return apitypes.TypedData{}, err } - domain := createEIP712Domain(chainID) + value, err := ethermint.SafeInt64(chainID) + if err != nil { + return apitypes.TypedData{}, err + } + domain := createEIP712Domain(value) typedData := apitypes.TypedData{ Types: types, diff --git a/ethereum/eip712/eip712_legacy.go b/ethereum/eip712/eip712_legacy.go index e093065ee2..57b3376b0a 100644 --- a/ethereum/eip712/eip712_legacy.go +++ b/ethereum/eip712/eip712_legacy.go @@ -29,6 +29,7 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" sdk "github.com/cosmos/cosmos-sdk/types" errortypes "github.com/cosmos/cosmos-sdk/types/errors" + ethermint "github.com/evmos/ethermint/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/math" @@ -52,6 +53,10 @@ func LegacyWrapTxToTypedData( data []byte, feeDelegation *FeeDelegationOptions, ) (apitypes.TypedData, error) { + value, err := ethermint.SafeInt64(chainID) + if err != nil { + return apitypes.TypedData{}, err + } txData := make(map[string]interface{}) if err := json.Unmarshal(data, &txData); err != nil { @@ -61,7 +66,7 @@ func LegacyWrapTxToTypedData( domain := apitypes.TypedDataDomain{ Name: "Cosmos Web3", Version: "1.0.0", - ChainId: math.NewHexOrDecimal256(int64(chainID)), + ChainId: math.NewHexOrDecimal256(value), VerifyingContract: "cosmos", Salt: "0", } diff --git a/indexer/kv_indexer.go b/indexer/kv_indexer.go index 7849418021..c6ca943a67 100644 --- a/indexer/kv_indexer.go +++ b/indexer/kv_indexer.go @@ -70,6 +70,10 @@ func (kv *KVIndexer) IndexBlock(block *tmtypes.Block, txResults []*abci.ExecTxRe // record index of valid eth tx during the iteration var ethTxIndex int32 for txIndex, tx := range block.Txs { + txIdx, err := ethermint.SafeUint32(txIndex) + if err != nil { + return err + } result := txResults[txIndex] if !rpctypes.TxSuccessOrExceedsBlockGasLimit(result) { continue @@ -93,13 +97,17 @@ func (kv *KVIndexer) IndexBlock(block *tmtypes.Block, txResults []*abci.ExecTxRe var cumulativeGasUsed uint64 for msgIndex, msg := range tx.GetMsgs() { + msgIdx, err := ethermint.SafeUint32(msgIndex) + if err != nil { + return err + } ethMsg := msg.(*evmtypes.MsgEthereumTx) var txHash common.Hash txResult := ethermint.TxResult{ Height: height, - TxIndex: uint32(txIndex), - MsgIndex: uint32(msgIndex), + TxIndex: txIdx, + MsgIndex: msgIdx, EthTxIndex: ethTxIndex, } if result.Code != abci.CodeTypeOK { @@ -243,5 +251,5 @@ func parseBlockNumberFromKey(key []byte) (int64, error) { return 0, fmt.Errorf("wrong tx index key length, expect: %d, got: %d", TxIndexKeyLength, len(key)) } - return int64(sdk.BigEndianToUint64(key[1:9])), nil + return ethermint.SafeInt64(sdk.BigEndianToUint64(key[1:9])) } diff --git a/rpc/backend/account_info.go b/rpc/backend/account_info.go index ea4c130179..b3069038a2 100644 --- a/rpc/backend/account_info.go +++ b/rpc/backend/account_info.go @@ -16,8 +16,6 @@ package backend import ( - "fmt" - "math" "math/big" errorsmod "cosmossdk.io/errors" @@ -29,6 +27,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" rpctypes "github.com/evmos/ethermint/rpc/types" + ethermint "github.com/evmos/ethermint/types" evmtypes "github.com/evmos/ethermint/x/evm/types" "github.com/pkg/errors" ) @@ -74,11 +73,10 @@ func (b *Backend) GetProof(address common.Address, storageKeys []string, blockNr return nil, err } - if bn > math.MaxInt64 { - return nil, fmt.Errorf("not able to query block number greater than MaxInt64") + height, err = ethermint.SafeHexToInt64(bn) + if err != nil { + return nil, err } - - height = int64(bn) } clientCtx := b.clientCtx.WithHeight(height) @@ -195,8 +193,11 @@ func (b *Backend) GetTransactionCount(address common.Address, blockNum rpctypes. if err != nil { return &n, err } + currentHeight, err := ethermint.SafeHexToInt64(bn) + if err != nil { + return nil, err + } height := blockNum.Int64() - currentHeight := int64(bn) if height > currentHeight { return &n, errorsmod.Wrapf( sdkerrors.ErrInvalidHeight, diff --git a/rpc/backend/blocks.go b/rpc/backend/blocks.go index fe946ebfc1..4b7f70a1d2 100644 --- a/rpc/backend/blocks.go +++ b/rpc/backend/blocks.go @@ -30,6 +30,7 @@ import ( ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/trie" rpctypes "github.com/evmos/ethermint/rpc/types" + ethermint "github.com/evmos/ethermint/types" evmtypes "github.com/evmos/ethermint/x/evm/types" "github.com/pkg/errors" "google.golang.org/grpc" @@ -179,7 +180,10 @@ func (b *Backend) TendermintBlockByNumber(blockNum rpctypes.BlockNumber) (*tmrpc if err != nil { return nil, err } - height = int64(n) + height, err = ethermint.SafeHexToInt64(n) + if err != nil { + return nil, err + } } resBlock, err := b.clientCtx.Client.Block(b.ctx, &height) if err != nil { diff --git a/rpc/backend/chain_info.go b/rpc/backend/chain_info.go index 883b062544..78af6d1f98 100644 --- a/rpc/backend/chain_info.go +++ b/rpc/backend/chain_info.go @@ -182,18 +182,25 @@ func (b *Backend) FeeHistory( return nil, fmt.Errorf("%w: #%d:%f > #%d:%f", errInvalidPercentile, i-1, rewardPercentiles[i-1], i, p) } } - blockNumber, err := b.BlockNumber() + blkNumber, err := b.BlockNumber() + if err != nil { + return nil, err + } + blockNumber, err := ethermint.SafeHexToInt64(blkNumber) if err != nil { return nil, err } blockEnd := int64(lastBlock) if blockEnd < 0 { - blockEnd = int64(blockNumber) - } else if int64(blockNumber) < blockEnd { - return nil, fmt.Errorf("%w: requested %d, head %d", errRequestBeyondHead, blockEnd, int64(blockNumber)) + blockEnd = blockNumber + } else if blockNumber < blockEnd { + return nil, fmt.Errorf("%w: requested %d, head %d", errRequestBeyondHead, blockEnd, blockNumber) } - blocks := int64(userBlockCount) + blocks, err := ethermint.SafeInt64(uint64(userBlockCount)) + if err != nil { + return nil, err + } maxBlockCount := int64(b.cfg.JSONRPC.FeeHistoryCap) if blocks > maxBlockCount { return nil, fmt.Errorf("FeeHistory user block count %d higher than %d", blocks, maxBlockCount) @@ -226,6 +233,10 @@ func (b *Backend) FeeHistory( if blockID+int64(i) >= blockEnd+1 { break } + value := blockID - blockStart + int64(i) + if value > math.MaxInt32 || value < math.MinInt32 { + return nil, fmt.Errorf("integer overflow: calculated value %d exceeds int32 limits", value) + } wg.Add(1) go func(index int32) { defer func() { @@ -282,7 +293,7 @@ func (b *Backend) FeeHistory( } } } - }(int32(blockID - blockStart + int64(i))) + }(int32(value)) //nolint:gosec // checked } go func() { wg.Wait() diff --git a/rpc/backend/tracing.go b/rpc/backend/tracing.go index 2b80baba1d..ab0845dc5a 100644 --- a/rpc/backend/tracing.go +++ b/rpc/backend/tracing.go @@ -24,6 +24,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" rpctypes "github.com/evmos/ethermint/rpc/types" + ethermint "github.com/evmos/ethermint/types" evmtypes "github.com/evmos/ethermint/x/evm/types" "github.com/pkg/errors" ) @@ -48,9 +49,12 @@ func (b *Backend) TraceTransaction(hash common.Hash, config *rpctypes.TraceConfi b.logger.Debug("block not found", "height", transaction.Height) return nil, err } - + total, err := ethermint.SafeUint32(len(blk.Block.Txs)) + if err != nil { + return nil, err + } // check tx index is not out of bound - if uint32(len(blk.Block.Txs)) < transaction.TxIndex { + if total < transaction.TxIndex { b.logger.Debug("tx index out of bounds", "index", transaction.TxIndex, "hash", hash.String(), "height", blk.Block.Height) return nil, fmt.Errorf("transaction not included in block %v", blk.Block.Height) } diff --git a/rpc/backend/tx_info.go b/rpc/backend/tx_info.go index 2e626e2565..e004b413ee 100644 --- a/rpc/backend/tx_info.go +++ b/rpc/backend/tx_info.go @@ -65,8 +65,12 @@ func (b *Backend) GetTransactionByHash(txHash common.Hash) (*rpctypes.RPCTransac // Fallback to find tx index by iterating all valid eth transactions msgs := b.EthMsgsFromTendermintBlock(block, blockRes) for i := range msgs { + idx, err := ethermint.SafeIntToInt32(i) + if err != nil { + return nil, err + } if msgs[i].Hash() == txHash { - res.EthTxIndex = int32(i) + res.EthTxIndex = idx break } } @@ -209,8 +213,12 @@ func (b *Backend) GetTransactionReceipt(hash common.Hash) (map[string]interface{ // Fallback to find tx index by iterating all valid eth transactions msgs := b.EthMsgsFromTendermintBlock(resBlock, blockRes) for i := range msgs { + idx, err := ethermint.SafeIntToInt32(i) + if err != nil { + return nil, err + } if msgs[i].Hash() == hash { - res.EthTxIndex = int32(i) + res.EthTxIndex = idx break } } @@ -328,9 +336,17 @@ func (b *Backend) GetTxByEthHash(hash common.Hash) (*ethermint.TxResult, error) } // GetTxByTxIndex uses `/tx_query` to find transaction by tx index of valid ethereum txs -func (b *Backend) GetTxByTxIndex(height int64, index uint) (*ethermint.TxResult, error) { +func (b *Backend) GetTxByTxIndex(height int64, i uint) (*ethermint.TxResult, error) { + index, err := ethermint.SafeUintToInt32(i) + if err != nil { + return nil, err + } + idx, err := ethermint.SafeInt(i) + if err != nil { + return nil, err + } if b.indexer != nil { - return b.indexer.GetByBlockAndIndex(height, int32(index)) + return b.indexer.GetByBlockAndIndex(height, index) } // fallback to tendermint tx indexer @@ -339,7 +355,7 @@ func (b *Backend) GetTxByTxIndex(height int64, index uint) (*ethermint.TxResult, evmtypes.AttributeKeyTxIndex, index, ) txResult, err := b.queryTendermintTxIndexer(query, func(txs *rpctypes.ParsedTxs) *rpctypes.ParsedTx { - return txs.GetTxByTxIndex(int(index)) + return txs.GetTxByTxIndex(idx) }) if err != nil { return nil, errorsmod.Wrapf(err, "GetTxByTxIndex %d %d", height, index) @@ -398,7 +414,10 @@ func (b *Backend) GetTransactionByBlockAndIndex(block *tmrpctypes.ResultBlock, i return nil, nil } } else { - i := int(idx) + i, err := ethermint.SafeHexToInt(idx) + if err != nil { + return nil, err + } ethMsgs := b.EthMsgsFromTendermintBlock(block, blockRes) if i >= len(ethMsgs) { b.logger.Debug("block txs index out of bound", "index", i) diff --git a/rpc/namespaces/ethereum/debug/api.go b/rpc/namespaces/ethereum/debug/api.go index bfdae08af9..52219c9685 100644 --- a/rpc/namespaces/ethereum/debug/api.go +++ b/rpc/namespaces/ethereum/debug/api.go @@ -29,8 +29,8 @@ import ( "github.com/davecgh/go-spew/spew" + ethermint "github.com/evmos/ethermint/types" evmtypes "github.com/evmos/ethermint/x/evm/types" - stderrors "github.com/pkg/errors" "github.com/cosmos/cosmos-sdk/server" @@ -128,26 +128,41 @@ func (a *API) TraceCall( return a.backend.TraceCall(args, blockNrOrHash, config) } +func parseDuration(nsec uint) (time.Duration, error) { + if nsec > uint(time.Duration(1<<63-1)/time.Second) { + return time.Duration(0), fmt.Errorf("value %d exceeds maximum duration for time.Duration", nsec) + } + return time.Duration(nsec) * time.Second, nil //nolint:gosec // checked +} + // BlockProfile turns on goroutine profiling for nsec seconds and writes profile data to // file. It uses a profile rate of 1 for most accurate information. If a different rate is // desired, set the rate and write the profile manually. func (a *API) BlockProfile(file string, nsec uint) error { + d, err := parseDuration(nsec) + if err != nil { + return err + } a.logger.Debug("debug_blockProfile", "file", file, "nsec", nsec) runtime.SetBlockProfileRate(1) defer runtime.SetBlockProfileRate(0) - time.Sleep(time.Duration(nsec) * time.Second) + time.Sleep(d) return writeProfile("block", file, a.logger) } // CpuProfile turns on CPU profiling for nsec seconds and writes // profile data to file. func (a *API) CpuProfile(file string, nsec uint) error { //nolint: golint, stylecheck, revive + d, err := parseDuration(nsec) + if err != nil { + return err + } a.logger.Debug("debug_cpuProfile", "file", file, "nsec", nsec) if err := a.StartCPUProfile(file); err != nil { return err } - time.Sleep(time.Duration(nsec) * time.Second) + time.Sleep(d) return a.StopCPUProfile() } @@ -162,11 +177,15 @@ func (a *API) GcStats() *debug.GCStats { // GoTrace turns on tracing for nsec seconds and writes // trace data to file. func (a *API) GoTrace(file string, nsec uint) error { + d, err := parseDuration(nsec) + if err != nil { + return err + } a.logger.Debug("debug_goTrace", "file", file, "nsec", nsec) if err := a.StartGoTrace(file); err != nil { return err } - time.Sleep(time.Duration(nsec) * time.Second) + time.Sleep(d) return a.StopGoTrace() } @@ -280,9 +299,13 @@ func (a *API) WriteMemProfile(file string) error { // It uses a profile rate of 1 for most accurate information. If a different rate is // desired, set the rate and write the profile manually. func (a *API) MutexProfile(file string, nsec uint) error { + d, err := parseDuration(nsec) + if err != nil { + return err + } a.logger.Debug("debug_mutexProfile", "file", file, "nsec", nsec) runtime.SetMutexProfileFraction(1) - time.Sleep(time.Duration(nsec) * time.Second) + time.Sleep(d) defer runtime.SetMutexProfileFraction(0) return writeProfile("mutex", file, a.logger) } @@ -314,7 +337,11 @@ func (a *API) SetGCPercent(v int) int { // GetHeaderRlp retrieves the RLP encoded for of a single header. func (a *API) GetHeaderRlp(number uint64) (hexutil.Bytes, error) { - header, err := a.backend.HeaderByNumber(rpctypes.BlockNumber(number)) + value, err := ethermint.SafeInt64(number) + if err != nil { + return nil, err + } + header, err := a.backend.HeaderByNumber(rpctypes.BlockNumber(value)) if err != nil { return nil, err } @@ -324,7 +351,11 @@ func (a *API) GetHeaderRlp(number uint64) (hexutil.Bytes, error) { // GetBlockRlp retrieves the RLP encoded for of a single block. func (a *API) GetBlockRlp(number uint64) (hexutil.Bytes, error) { - block, err := a.backend.EthBlockByNumber(rpctypes.BlockNumber(number)) + value, err := ethermint.SafeInt64(number) + if err != nil { + return nil, err + } + block, err := a.backend.EthBlockByNumber(rpctypes.BlockNumber(value)) if err != nil { return nil, err } @@ -334,17 +365,24 @@ func (a *API) GetBlockRlp(number uint64) (hexutil.Bytes, error) { // PrintBlock retrieves a block and returns its pretty printed form. func (a *API) PrintBlock(number uint64) (string, error) { - block, err := a.backend.EthBlockByNumber(rpctypes.BlockNumber(number)) + value, err := ethermint.SafeInt64(number) + if err != nil { + return "", err + } + block, err := a.backend.EthBlockByNumber(rpctypes.BlockNumber(value)) if err != nil { return "", err } - return spew.Sdump(block), nil } // SeedHash retrieves the seed hash of a block. func (a *API) SeedHash(number uint64) (string, error) { - _, err := a.backend.HeaderByNumber(rpctypes.BlockNumber(number)) + value, err := ethermint.SafeInt64(number) + if err != nil { + return "", err + } + _, err = a.backend.HeaderByNumber(rpctypes.BlockNumber(value)) if err != nil { return "", err } diff --git a/rpc/types/block.go b/rpc/types/block.go index 9f4b533950..eeaf5d1557 100644 --- a/rpc/types/block.go +++ b/rpc/types/block.go @@ -20,7 +20,6 @@ import ( "encoding/json" "errors" "fmt" - "math" "math/big" "strings" @@ -103,11 +102,11 @@ func (bn *BlockNumber) UnmarshalJSON(data []byte) error { } else if err != nil { return err } - - if blckNum > math.MaxInt64 { - return fmt.Errorf("block number larger than int64") + b, err := ethermint.SafeInt64(blckNum) + if err != nil { + return err } - *bn = BlockNumber(blckNum) + *bn = BlockNumber(b) return nil } diff --git a/rpc/types/events.go b/rpc/types/events.go index a0ce40a56a..16bc3f46ef 100644 --- a/rpc/types/events.go +++ b/rpc/types/events.go @@ -162,11 +162,14 @@ func ParseTxIndexerResult(txResult *tmrpctypes.ResultTx, tx sdk.Tx, getter func( if parsedTx == nil { return nil, fmt.Errorf("ethereum tx not found in msgs: block %d, index %d", txResult.Height, txResult.Index) } - + msgIndex, err := ethermint.SafeUint32(parsedTx.MsgIndex) + if err != nil { + return nil, err + } return ðermint.TxResult{ Height: txResult.Height, TxIndex: txResult.Index, - MsgIndex: uint32(parsedTx.MsgIndex), + MsgIndex: msgIndex, EthTxIndex: parsedTx.EthTxIndex, Failed: parsedTx.Failed, GasUsed: parsedTx.GasUsed, @@ -251,7 +254,11 @@ func fillTxAttribute(tx *ParsedTx, key []byte, value []byte) error { if err != nil { return err } - tx.EthTxIndex = int32(txIndex) + txIdx, err := ethermint.SafeUint64ToInt32(txIndex) + if err != nil { + return err + } + tx.EthTxIndex = txIdx case evmtypes.AttributeKeyTxGasUsed: gasUsed, err := strconv.ParseUint(string(value), 10, 64) if err != nil { diff --git a/testutil/tx/cosmos.go b/testutil/tx/cosmos.go index 91ce574057..43f9d51191 100644 --- a/testutil/tx/cosmos.go +++ b/testutil/tx/cosmos.go @@ -67,7 +67,8 @@ func PrepareCosmosTx( var fees sdk.Coins if args.GasPrice != nil { - fees = sdk.Coins{{Denom: evmtypes.DefaultEVMDenom, Amount: args.GasPrice.MulRaw(int64(args.Gas))}} + gas := int64(args.Gas) //nolint:gosec // test only + fees = sdk.Coins{{Denom: evmtypes.DefaultEVMDenom, Amount: args.GasPrice.MulRaw(gas)}} } else { fees = sdk.Coins{DefaultFee} } diff --git a/types/int.go b/types/int.go index 9342b836c6..3c717d3c68 100644 --- a/types/int.go +++ b/types/int.go @@ -21,9 +21,8 @@ import ( "math/big" "math/bits" - errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" - errortypes "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/ethereum/go-ethereum/common/hexutil" ) const ( @@ -40,18 +39,74 @@ func init() { // SafeInt64 checks for overflows while casting a uint64 to int64 value. func SafeInt64(value uint64) (int64, error) { if value > uint64(math.MaxInt64) { - return 0, errorsmod.Wrapf(errortypes.ErrInvalidHeight, "uint64 value %v cannot exceed %v", value, int64(math.MaxInt64)) + return 0, fmt.Errorf("uint64 value %v cannot exceed %v", value, math.MaxInt64) } - return int64(value), nil + return int64(value), nil //nolint:gosec // checked +} + +func SafeUint64ToInt32(value uint64) (int32, error) { + if value > uint64(math.MaxInt64) { + return 0, fmt.Errorf("uint64 value %v cannot exceed %v", value, math.MaxInt64) + } + + return int32(value), nil //nolint:gosec // checked +} + +func SafeUint64ToInt(value uint64) (int, error) { + if value > uint64(math.MaxInt64) { + return 0, fmt.Errorf("uint64 value %v cannot exceed %v", value, math.MaxInt64) + } + + return int(value), nil //nolint:gosec // checked +} + +func SafeHexToInt64(value hexutil.Uint64) (int64, error) { + if value > math.MaxInt64 { + return 0, fmt.Errorf("hexutil.Uint64 value %v cannot exceed %v", value, math.MaxInt64) + } + + return int64(value), nil //nolint:gosec // checked +} + +func SafeUint32(value int) (uint32, error) { + if value > math.MaxUint32 { + return 0, fmt.Errorf("int value %v cannot exceed %v", value, math.MaxUint32) + } + + return uint32(value), nil //nolint:gosec // checked +} + +func SafeUintToInt32(value uint) (int32, error) { + if value > uint(math.MaxInt32) { + return 0, fmt.Errorf("uint value %v cannot exceed %v", value, math.MaxUint32) + } + + return int32(value), nil //nolint:gosec // checked +} + +func SafeIntToInt32(value int) (int32, error) { + if value > int(math.MaxInt32) { + return 0, fmt.Errorf("int value %v cannot exceed %v", value, math.MaxUint32) + } + + return int32(value), nil //nolint:gosec // checked } func SafeInt(value uint) (int, error) { if value > uint(math.MaxInt64) { - return 0, errorsmod.Wrapf(errortypes.ErrInvalidHeight, "uint value %v cannot exceed %v", value, int(math.MaxInt64)) + return 0, fmt.Errorf("uint value %v cannot exceed %v", value, math.MaxInt64) + } + + return int(value), nil //nolint:gosec // checked +} + +func SafeHexToInt(value hexutil.Uint) (int, error) { + if value > hexutil.Uint(math.MaxInt) { + return 0, fmt.Errorf("hexutil.Uint value %v cannot exceed %v", value, math.MaxInt) } - return int(value), nil + return int(value), nil //nolint:gosec // checked } // SafeNewIntFromBigInt constructs Int from big.Int, return error if more than 256bits diff --git a/x/evm/keeper/msg_server.go b/x/evm/keeper/msg_server.go index cb23aad6fc..ed799c6ea7 100644 --- a/x/evm/keeper/msg_server.go +++ b/x/evm/keeper/msg_server.go @@ -31,6 +31,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/hashicorp/go-metrics" + ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm/types" ) @@ -75,8 +76,15 @@ func (k *Keeper) EthereumTx(goCtx context.Context, msg *types.MsgEthereumTx) (*t // Observe which users define a gas limit >> gas used. Note, that // gas_limit and gas_used are always > 0 - gasLimit := sdkmath.LegacyNewDec(int64(tx.Gas())) - gasRatio, err := gasLimit.QuoInt64(int64(response.GasUsed)).Float64() + gasLimit, err := ethermint.SafeInt64(tx.Gas()) + if err != nil { + k.Logger(ctx).Error("failed to cast gas to int64", "error", err) + } + gasUsed, err := ethermint.SafeInt64(response.GasUsed) + if err != nil { + k.Logger(ctx).Error("failed to cast gasUsed to int64", "error", err) + } + gasRatio, err := sdkmath.LegacyNewDec(gasLimit).QuoInt64(gasUsed).Float64() if err == nil { telemetry.SetGaugeWithLabels( []string{"tx", "msg", "ethereum_tx", "gas_limit", "per", "gas_used"}, diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index 0c7189f1e0..02e534f822 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -418,7 +418,11 @@ func (k *Keeper) ApplyMessageWithConfig( // calculate a minimum amount of gas to be charged to sender if GasLimit // is considerably higher than GasUsed to stay more aligned with Tendermint gas mechanics // for more info https://github.com/evmos/ethermint/issues/1085 - gasLimit := sdkmath.LegacyNewDec(int64(msg.GasLimit)) + limit, err := ethermint.SafeInt64(msg.GasLimit) + if err != nil { + return nil, err + } + gasLimit := sdkmath.LegacyNewDec(limit) minGasMultiplier := cfg.FeeMarketParams.MinGasMultiplier if minGasMultiplier.IsNil() { // in case we are executing eth_call on a legacy block, returns a zero value. @@ -429,8 +433,12 @@ func (k *Keeper) ApplyMessageWithConfig( if msg.GasLimit < leftoverGas { return nil, errorsmod.Wrapf(types.ErrGasOverflow, "message gas limit < leftover gas (%d < %d)", msg.GasLimit, leftoverGas) } + tempGasUsed, err := ethermint.SafeInt64(temporaryGasUsed) + if err != nil { + return nil, err + } - gasUsed := sdkmath.LegacyMaxDec(minimumGasUsed, sdkmath.LegacyNewDec(int64(temporaryGasUsed))).TruncateInt().Uint64() + gasUsed := sdkmath.LegacyMaxDec(minimumGasUsed, sdkmath.LegacyNewDec(tempGasUsed)).TruncateInt().Uint64() // reset leftoverGas, to be used by the tracer leftoverGas = msg.GasLimit - gasUsed diff --git a/x/evm/simulation/operations.go b/x/evm/simulation/operations.go index 89ed26009a..d09603496d 100644 --- a/x/evm/simulation/operations.go +++ b/x/evm/simulation/operations.go @@ -215,7 +215,7 @@ func CreateRandomValidEthTx(ctx *simulateContext, return nil, err } // we suppose that gasLimit should be larger than estimateGas to ensure tx validity - gasLimit := estimateGas + uint64(ctx.rand.Intn(int(sdktx.MaxGasWanted-estimateGas))) + gasLimit := estimateGas + uint64(ctx.rand.Intn(int(sdktx.MaxGasWanted-estimateGas))) //nolint:gosec // test only ethChainID := ctx.keeper.ChainID() chainConfig := ctx.keeper.GetParams(ctx.context).ChainConfig.EthereumConfig(ethChainID) gasPrice := ctx.keeper.GetBaseFee(ctx.context, chainConfig) @@ -256,7 +256,7 @@ func EstimateGas(ctx *simulateContext, from, to *common.Address, data *hexutil.B // Transferable amount is between the range [0, spendable), spendable = balance - gasFeeCap * GasLimit. func RandomTransferableAmount(ctx *simulateContext, address common.Address, estimateGas uint64, gasFeeCap *big.Int) (amount *big.Int, err error) { balance := ctx.keeper.GetEVMDenomBalance(ctx.context, address) - feeLimit := new(big.Int).Mul(gasFeeCap, big.NewInt(int64(estimateGas))) + feeLimit := new(big.Int).Mul(gasFeeCap, big.NewInt(int64(estimateGas))) //nolint:gosec // test only if (feeLimit.Cmp(balance)) > 0 { return nil, ErrNoEnoughBalance } diff --git a/x/evm/types/eth.go b/x/evm/types/eth.go index e1fb2655bf..81290c20f8 100644 --- a/x/evm/types/eth.go +++ b/x/evm/types/eth.go @@ -21,7 +21,11 @@ func (tx EthereumTx) Size() int { if tx.Transaction == nil { return 0 } - return int(tx.Transaction.Size()) + size, err := types.SafeUint64ToInt(tx.Transaction.Size()) + if err != nil { + panic(err) + } + return size } func (tx EthereumTx) MarshalTo(dst []byte) (int, error) { diff --git a/x/feemarket/keeper/abci.go b/x/feemarket/keeper/abci.go index d721496da9..be02d8e151 100644 --- a/x/feemarket/keeper/abci.go +++ b/x/feemarket/keeper/abci.go @@ -17,13 +17,13 @@ package keeper import ( "fmt" - "math" "github.com/evmos/ethermint/x/feemarket/types" sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" + ethermint "github.com/evmos/ethermint/types" ) // BeginBlock updates base fee @@ -56,14 +56,13 @@ func (k *Keeper) BeginBlock(ctx sdk.Context) error { // an empty slice. func (k *Keeper) EndBlock(ctx sdk.Context) error { gasWanted := ctx.BlockGasWanted() - gasUsed := ctx.BlockGasUsed() - - if gasWanted > math.MaxInt64 { - return fmt.Errorf("integer overflow by integer type conversion. Gas wanted %d > MaxInt64", gasWanted) + gw, err := ethermint.SafeInt64(gasWanted) + if err != nil { + return err } - - if gasUsed > math.MaxInt64 { - return fmt.Errorf("integer overflow by integer type conversion. Gas used %d > MaxInt64", gasUsed) + gasUsed, err := ethermint.SafeInt64(ctx.BlockGasUsed()) + if err != nil { + return err } // to prevent BaseFee manipulation we limit the gasWanted so that @@ -71,8 +70,8 @@ func (k *Keeper) EndBlock(ctx sdk.Context) error { // this will be keep BaseFee protected from un-penalized manipulation // more info here https://github.com/evmos/ethermint/pull/1105#discussion_r888798925 minGasMultiplier := k.GetParams(ctx).MinGasMultiplier - limitedGasWanted := sdkmath.LegacyNewDec(int64(gasWanted)).Mul(minGasMultiplier) - gasWanted = sdkmath.LegacyMaxDec(limitedGasWanted, sdkmath.LegacyNewDec(int64(gasUsed))).TruncateInt().Uint64() + limitedGasWanted := sdkmath.LegacyNewDec(gw).Mul(minGasMultiplier) + gasWanted = sdkmath.LegacyMaxDec(limitedGasWanted, sdkmath.LegacyNewDec(gasUsed)).TruncateInt().Uint64() k.SetBlockGasWanted(ctx, gasWanted) defer func() { diff --git a/x/feemarket/keeper/grpc_query.go b/x/feemarket/keeper/grpc_query.go index 82ea42b6bd..d77be6d5ff 100644 --- a/x/feemarket/keeper/grpc_query.go +++ b/x/feemarket/keeper/grpc_query.go @@ -21,6 +21,7 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/feemarket/types" ) @@ -54,9 +55,11 @@ func (k Keeper) BaseFee(c context.Context, _ *types.QueryBaseFeeRequest) (*types // BlockGas implements the Query/BlockGas gRPC method func (k Keeper) BlockGas(c context.Context, _ *types.QueryBlockGasRequest) (*types.QueryBlockGasResponse, error) { ctx := sdk.UnwrapSDKContext(c) - gas := k.GetBlockGasWanted(ctx) - + gas, err := ethermint.SafeInt64(k.GetBlockGasWanted(ctx)) + if err != nil { + return nil, err + } return &types.QueryBlockGasResponse{ - Gas: int64(gas), + Gas: gas, }, nil } From 452b0cf94261cc386adb7167a2d9d591c2805857 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Tue, 10 Sep 2024 23:31:24 +0800 Subject: [PATCH 017/210] Problem: method eth_chainId crashed occasionally (#516) * Problem: method eth_chainId crashed occasionally add fallback default config to ensure no panic in IsEIP155 check * cleanup --------- Co-authored-by: huangyi --- CHANGELOG.md | 3 +- indexer/kv_indexer.go | 12 +++++- rpc/backend/blocks.go | 23 +++++++---- rpc/backend/chain_info.go | 16 ++++---- rpc/backend/node_info.go | 13 ++++-- rpc/backend/tx_info.go | 48 +++++++++++++++++------ rpc/backend/utils.go | 12 +++++- rpc/namespaces/ethereum/debug/api.go | 2 +- rpc/namespaces/ethereum/eth/api.go | 7 +++- rpc/stream/rpc.go | 7 +++- rpc/types/events.go | 6 ++- rpc/types/utils.go | 44 +++++++++++++++++---- tests/integration_tests/test_grpc_only.py | 2 +- testutil/base_test_suite.go | 2 +- types/int.go | 36 +++++++++++++++-- x/evm/keeper/config.go | 11 +++++- x/evm/keeper/grpc_query.go | 15 +++++-- x/evm/types/key.go | 25 ++++++++++-- 18 files changed, 225 insertions(+), 59 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b597bf12a2..5359649384 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,6 +65,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#488](https://github.com/crypto-org-chain/ethermint/pull/488) Fix handling of pending transactions related APIs. * (rpc) [#501](https://github.com/crypto-org-chain/ethermint/pull/501) Avoid invalid chain id for signer error when rpc call before chain id set in BeginBlock. * (block-stm) [#510](https://github.com/crypto-org-chain/ethermint/pull/510) Include a fix to avoid nondeterministic account set when stm workers execute in parallel. +* (rpc) [#516](https://github.com/crypto-org-chain/ethermint/pull/516) Avoid method eth_chainId crashed due to nil pointer on IsEIP155 check. ### Improvements @@ -80,7 +81,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (app) [#483](https://github.com/crypto-org-chain/ethermint/pull/483) Make keyring-backend client config accessible in app. * (deps) [#489](https://github.com/crypto-org-chain/ethermint/pull/489) Update cosmos-sdk to `v0.50.7`. * (rpc) [#491](https://github.com/crypto-org-chain/ethermint/pull/491) Avoid unnecessary tx decode in tx listener. -* [#496](https://github.com/crypto-org-chain/cronos/pull/496) Set mempool MaxTx from config. +* [#496](https://github.com/crypto-org-chain/ethermint/pull/496) Set mempool MaxTx from config. * (ante) [#497](https://github.com/crypto-org-chain/ethermint/pull/497) Enforce positive value check in eth transaction. * (deps) [#505](https://github.com/crypto-org-chain/ethermint/pull/505) Update cometbft to v0.38.10. * (ante) [#504](https://github.com/crypto-org-chain/ethermint/pull/504) Optimize AnteHandle method to skip checks if disabledMsgs is empty. diff --git a/indexer/kv_indexer.go b/indexer/kv_indexer.go index c6ca943a67..a4bd61d308 100644 --- a/indexer/kv_indexer.go +++ b/indexer/kv_indexer.go @@ -190,8 +190,16 @@ func TxHashKey(hash common.Hash) []byte { // TxIndexKey returns the key for db entry: `(block number, tx index) -> tx hash` func TxIndexKey(blockNumber int64, txIndex int32) []byte { - bz1 := sdk.Uint64ToBigEndian(uint64(blockNumber)) - bz2 := sdk.Uint64ToBigEndian(uint64(txIndex)) + value, err := ethermint.SafeUint64(blockNumber) + if err != nil { + panic(err) + } + bz1 := sdk.Uint64ToBigEndian(value) + value, err = ethermint.SafeInt32ToUint64(txIndex) + if err != nil { + panic(err) + } + bz2 := sdk.Uint64ToBigEndian(value) return append(append([]byte{KeyPrefixTxIndex}, bz1...), bz2...) } diff --git a/rpc/backend/blocks.go b/rpc/backend/blocks.go index 4b7f70a1d2..26aff3f7d8 100644 --- a/rpc/backend/blocks.go +++ b/rpc/backend/blocks.go @@ -385,7 +385,10 @@ func (b *Backend) RPCBlockFromTendermintBlock( ) (map[string]interface{}, error) { ethRPCTxs := []interface{}{} block := resBlock.Block - + height, err := ethermint.SafeUint64(block.Height) + if err != nil { + return nil, err + } baseFee, err := b.BaseFee(blockRes) if err != nil { // handle the error for pruned node. @@ -398,12 +401,15 @@ func (b *Backend) RPCBlockFromTendermintBlock( ethRPCTxs = append(ethRPCTxs, ethMsg.Hash()) continue } - + index, err := ethermint.SafeIntToUint64(txIndex) + if err != nil { + return nil, err + } rpcTx, err := rpctypes.NewRPCTransaction( ethMsg, common.BytesToHash(block.Hash()), - uint64(block.Height), - uint64(txIndex), + height, + index, baseFee, b.chainID, ) @@ -450,15 +456,18 @@ func (b *Backend) RPCBlockFromTendermintBlock( b.logger.Error("failed to query consensus params", "error", err.Error()) } - gasUsed := uint64(0) - + var gasUsed uint64 for _, txsResult := range blockRes.TxsResults { // workaround for cosmos-sdk bug. https://github.com/cosmos/cosmos-sdk/issues/10832 if ShouldIgnoreGasUsed(txsResult) { // block gas limit has exceeded, other txs must have failed with same reason. break } - gasUsed += uint64(txsResult.GetGasUsed()) + gas, err := ethermint.SafeUint64(txsResult.GetGasUsed()) + if err != nil { + return nil, err + } + gasUsed += gas } formattedBlock := rpctypes.FormatBlock( diff --git a/rpc/backend/chain_info.go b/rpc/backend/chain_info.go index 78af6d1f98..4f9d4c4d67 100644 --- a/rpc/backend/chain_info.go +++ b/rpc/backend/chain_info.go @@ -41,18 +41,20 @@ import ( // ChainID is the EIP-155 replay-protection chain id for the current ethereum chain config. func (b *Backend) ChainID() (*hexutil.Big, error) { - eip155ChainID, err := ethermint.ParseChainID(b.clientCtx.ChainID) - if err != nil { - panic(err) - } // if current block is at or past the EIP-155 replay-protection fork block, return chainID from config bn, err := b.BlockNumber() if err != nil { b.logger.Debug("failed to fetch latest block number", "error", err.Error()) - return (*hexutil.Big)(eip155ChainID), nil + return (*hexutil.Big)(b.chainID), nil + } + + config := b.ChainConfig() + if config == nil { + // assume eip-155 is enabled + return (*hexutil.Big)(b.chainID), nil } - if config := b.ChainConfig(); config.IsEIP155(new(big.Int).SetUint64(uint64(bn))) { + if config.IsEIP155(new(big.Int).SetUint64(uint64(bn))) { return (*hexutil.Big)(config.ChainID), nil } @@ -293,7 +295,7 @@ func (b *Backend) FeeHistory( } } } - }(int32(value)) //nolint:gosec // checked + }(int32(value)) } go func() { wg.Wait() diff --git a/rpc/backend/node_info.go b/rpc/backend/node_info.go index 94745a040b..764ec1c1fc 100644 --- a/rpc/backend/node_info.go +++ b/rpc/backend/node_info.go @@ -78,10 +78,17 @@ func (b *Backend) Syncing() (interface{}, error) { if !status.SyncInfo.CatchingUp { return false, nil } - + start, err := ethermint.SafeUint64(status.SyncInfo.EarliestBlockHeight) + if err != nil { + return false, err + } + current, err := ethermint.SafeUint64(status.SyncInfo.LatestBlockHeight) + if err != nil { + return false, err + } return map[string]interface{}{ - "startingBlock": hexutil.Uint64(status.SyncInfo.EarliestBlockHeight), - "currentBlock": hexutil.Uint64(status.SyncInfo.LatestBlockHeight), + "startingBlock": hexutil.Uint64(start), + "currentBlock": hexutil.Uint64(current), // "highestBlock": nil, // NA // "pulledStates": nil, // NA // "knownStates": nil, // NA diff --git a/rpc/backend/tx_info.go b/rpc/backend/tx_info.go index e004b413ee..b33ccab66f 100644 --- a/rpc/backend/tx_info.go +++ b/rpc/backend/tx_info.go @@ -38,7 +38,10 @@ func (b *Backend) GetTransactionByHash(txHash common.Hash) (*rpctypes.RPCTransac if err != nil { return b.getTransactionByHashPending(txHash) } - + height, err := ethermint.SafeUint64(res.Height) + if err != nil { + return nil, err + } block, err := b.TendermintBlockByNumber(rpctypes.BlockNumber(res.Height)) if err != nil { return nil, err @@ -79,18 +82,20 @@ func (b *Backend) GetTransactionByHash(txHash common.Hash) (*rpctypes.RPCTransac if res.EthTxIndex == -1 { return nil, errors.New("can't find index of ethereum tx") } - + index, err := ethermint.SafeInt32ToUint64(res.EthTxIndex) + if err != nil { + return nil, err + } baseFee, err := b.BaseFee(blockRes) if err != nil { // handle the error for pruned node. b.logger.Error("failed to fetch Base Fee from prunned block. Check node prunning configuration", "height", blockRes.Height, "error", err) } - return rpctypes.NewTransactionFromMsg( msg, common.BytesToHash(block.BlockID.Hash.Bytes()), - uint64(res.Height), - uint64(res.EthTxIndex), + height, + index, baseFee, b.chainID, ) @@ -171,14 +176,18 @@ func (b *Backend) GetTransactionReceipt(hash common.Hash) (map[string]interface{ return nil, err } - cumulativeGasUsed := uint64(0) + var cumulativeGasUsed uint64 blockRes, err := b.TendermintBlockResultByNumber(&res.Height) if err != nil { b.logger.Debug("failed to retrieve block results", "height", res.Height, "error", err.Error()) return nil, nil } for _, txResult := range blockRes.TxsResults[0:res.TxIndex] { - cumulativeGasUsed += uint64(txResult.GasUsed) + gas, err := ethermint.SafeUint64(txResult.GasUsed) + if err != nil { + return nil, err + } + cumulativeGasUsed += gas } cumulativeGasUsed += res.CumulativeGasUsed @@ -198,12 +207,16 @@ func (b *Backend) GetTransactionReceipt(hash common.Hash) (map[string]interface{ return nil, err } + height, err := ethermint.SafeUint64(blockRes.Height) + if err != nil { + return nil, err + } // parse tx logs from events logs, err := evmtypes.DecodeMsgLogsFromEvents( blockRes.TxsResults[res.TxIndex].Data, blockRes.TxsResults[res.TxIndex].Events, int(res.MsgIndex), - uint64(blockRes.Height), + height, ) if err != nil { b.logger.Debug("failed to parse logs", "hash", hash, "error", err.Error()) @@ -228,6 +241,14 @@ func (b *Backend) GetTransactionReceipt(hash common.Hash) (map[string]interface{ return nil, errors.New("can't find index of ethereum tx") } + blockNumber, err := ethermint.SafeUint64(res.Height) + if err != nil { + return nil, err + } + transactionIndex, err := ethermint.SafeInt32ToUint64(res.EthTxIndex) + if err != nil { + return nil, err + } receipt := map[string]interface{}{ // Consensus fields: These fields are defined by the Yellow Paper "status": status, @@ -244,8 +265,8 @@ func (b *Backend) GetTransactionReceipt(hash common.Hash) (map[string]interface{ // Inclusion information: These fields provide information about the inclusion of the // transaction corresponding to this receipt. "blockHash": common.BytesToHash(resBlock.Block.Header.Hash()).Hex(), - "blockNumber": hexutil.Uint64(res.Height), - "transactionIndex": hexutil.Uint64(res.EthTxIndex), + "blockNumber": hexutil.Uint64(blockNumber), + "transactionIndex": hexutil.Uint64(transactionIndex), // sender and receiver (contract or EOA) addreses "from": from, @@ -433,10 +454,15 @@ func (b *Backend) GetTransactionByBlockAndIndex(block *tmrpctypes.ResultBlock, i b.logger.Error("failed to fetch Base Fee from prunned block. Check node prunning configuration", "height", block.Block.Height, "error", err) } + height, err := ethermint.SafeUint64(block.Block.Height) + if err != nil { + return nil, err + } + return rpctypes.NewTransactionFromMsg( msg, common.BytesToHash(block.Block.Hash()), - uint64(block.Block.Height), + height, uint64(idx), baseFee, b.chainID, diff --git a/rpc/backend/utils.go b/rpc/backend/utils.go index 46760319f0..f236b994da 100644 --- a/rpc/backend/utils.go +++ b/rpc/backend/utils.go @@ -39,6 +39,7 @@ import ( "github.com/cometbft/cometbft/proto/tendermint/crypto" "github.com/evmos/ethermint/rpc/types" + ethermint "github.com/evmos/ethermint/types" evmtypes "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" ) @@ -244,7 +245,10 @@ func (b *Backend) processBlock( b.logger.Debug("failed to decode transaction in block", "height", blockHeight, "error", err.Error()) continue } - txGasUsed := uint64(eachTendermintTxResult.GasUsed) + txGasUsed, err := ethermint.SafeUint64(eachTendermintTxResult.GasUsed) + if err != nil { + return err + } for _, msg := range tx.GetMsgs() { ethMsg, ok := msg.(*evmtypes.MsgEthereumTx) if !ok { @@ -290,9 +294,13 @@ func ShouldIgnoreGasUsed(res *abci.ExecTxResult) bool { // GetLogsFromBlockResults returns the list of event logs from the tendermint block result response func GetLogsFromBlockResults(blockRes *tmrpctypes.ResultBlockResults) ([][]*ethtypes.Log, error) { + height, err := ethermint.SafeUint64(blockRes.Height) + if err != nil { + return nil, err + } blockLogs := [][]*ethtypes.Log{} for _, txResult := range blockRes.TxsResults { - logs, err := evmtypes.DecodeTxLogsFromEvents(txResult.Data, txResult.Events, uint64(blockRes.Height)) + logs, err := evmtypes.DecodeTxLogsFromEvents(txResult.Data, txResult.Events, height) if err != nil { return nil, err } diff --git a/rpc/namespaces/ethereum/debug/api.go b/rpc/namespaces/ethereum/debug/api.go index 52219c9685..7860f915ee 100644 --- a/rpc/namespaces/ethereum/debug/api.go +++ b/rpc/namespaces/ethereum/debug/api.go @@ -132,7 +132,7 @@ func parseDuration(nsec uint) (time.Duration, error) { if nsec > uint(time.Duration(1<<63-1)/time.Second) { return time.Duration(0), fmt.Errorf("value %d exceeds maximum duration for time.Duration", nsec) } - return time.Duration(nsec) * time.Second, nil //nolint:gosec // checked + return time.Duration(nsec) * time.Second, nil } // BlockProfile turns on goroutine profiling for nsec seconds and writes profile data to diff --git a/rpc/namespaces/ethereum/eth/api.go b/rpc/namespaces/ethereum/eth/api.go index df9c8577a3..2572f1726e 100644 --- a/rpc/namespaces/ethereum/eth/api.go +++ b/rpc/namespaces/ethereum/eth/api.go @@ -448,13 +448,16 @@ func (e *PublicAPI) GetTransactionLogs(txHash common.Hash) ([]*ethtypes.Log, err e.logger.Debug("block result not found", "number", res.Height, "error", err.Error()) return nil, nil } - + height, err := ethermint.SafeUint64(resBlockResult.Height) + if err != nil { + return nil, err + } // parse tx logs from events logs, err := evmtypes.DecodeMsgLogsFromEvents( resBlockResult.TxsResults[res.TxIndex].Data, resBlockResult.TxsResults[res.TxIndex].Events, int(res.MsgIndex), - uint64(resBlockResult.Height), + height, ) if err != nil { e.logger.Debug("failed to parse tx logs", "error", err.Error()) diff --git a/rpc/stream/rpc.go b/rpc/stream/rpc.go index d23388ada7..680cfc67e7 100644 --- a/rpc/stream/rpc.go +++ b/rpc/stream/rpc.go @@ -14,6 +14,7 @@ import ( "github.com/ethereum/go-ethereum/common" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/evmos/ethermint/rpc/types" + ethermint "github.com/evmos/ethermint/types" evmtypes "github.com/evmos/ethermint/x/evm/types" ) @@ -167,7 +168,11 @@ func (s *RPCStream) start( s.logger.Error("event data type mismatch", "type", fmt.Sprintf("%T", ev.Data)) continue } - txLogs, err := evmtypes.DecodeTxLogsFromEvents(dataTx.TxResult.Result.Data, dataTx.TxResult.Result.Events, uint64(dataTx.TxResult.Height)) + height, err := ethermint.SafeUint64(dataTx.TxResult.Height) + if err != nil { + continue + } + txLogs, err := evmtypes.DecodeTxLogsFromEvents(dataTx.TxResult.Result.Data, dataTx.TxResult.Result.Events, height) if err != nil { s.logger.Error("fail to decode evm tx response", "error", err.Error()) continue diff --git a/rpc/types/events.go b/rpc/types/events.go index 16bc3f46ef..0b53f5e282 100644 --- a/rpc/types/events.go +++ b/rpc/types/events.go @@ -135,7 +135,11 @@ func ParseTxResult(result *abci.ExecTxResult, tx sdk.Tx) (*ParsedTxs, error) { // some old versions miss some events, fill it with tx result if len(p.Txs) == 1 { - p.Txs[0].GasUsed = uint64(result.GasUsed) + value, err := ethermint.SafeUint64(result.GasUsed) + if err != nil { + return nil, err + } + p.Txs[0].GasUsed = value } // this could only happen if tx exceeds block gas limit diff --git a/rpc/types/utils.go b/rpc/types/utils.go index fb7b0facfc..9f2e3d724e 100644 --- a/rpc/types/utils.go +++ b/rpc/types/utils.go @@ -37,6 +37,7 @@ import ( "github.com/ethereum/go-ethereum/common/math" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/params" + ethermint "github.com/evmos/ethermint/types" ) // ExceedBlockGasLimitError defines the error message when tx execution exceeds the block gas limit. @@ -68,7 +69,17 @@ func EthHeaderFromTendermint(header tmtypes.Header, bloom ethtypes.Bloom, baseFe if len(header.DataHash) == 0 { txHash = common.BytesToHash(header.DataHash) } - + var ( + blockTime uint64 + err error + ) + time := header.Time + if !time.IsZero() { + blockTime, err = ethermint.SafeUint64(time.Unix()) + if err != nil { + panic(err) + } + } return ðtypes.Header{ ParentHash: common.BytesToHash(header.LastBlockID.Hash.Bytes()), UncleHash: ethtypes.EmptyUncleHash, @@ -81,7 +92,7 @@ func EthHeaderFromTendermint(header tmtypes.Header, bloom ethtypes.Bloom, baseFe Number: big.NewInt(header.Height), GasLimit: 0, GasUsed: 0, - Time: uint64(header.Time.UTC().Unix()), + Time: blockTime, Extra: []byte{}, MixDigest: common.Hash{}, Nonce: ethtypes.BlockNonce{}, @@ -125,9 +136,28 @@ func FormatBlock( } else { transactionsRoot = common.BytesToHash(header.DataHash) } - + number, err := ethermint.SafeUint64(header.Height) + if err != nil { + panic(err) + } + limit, err := ethermint.SafeUint64(gasLimit) + if err != nil { + panic(err) + } + time := header.Time + var blockTime uint64 + if !time.IsZero() { + blockTime, err = ethermint.SafeUint64(time.Unix()) + if err != nil { + panic(err) + } + } + s, err := ethermint.SafeIntToUint64(size) + if err != nil { + panic(err) + } result := map[string]interface{}{ - "number": hexutil.Uint64(header.Height), + "number": hexutil.Uint64(number), "hash": hexutil.Bytes(header.Hash()), "parentHash": common.BytesToHash(header.LastBlockID.Hash.Bytes()), "nonce": ethtypes.BlockNonce{}, // PoW specific @@ -138,10 +168,10 @@ func FormatBlock( "mixHash": common.Hash{}, "difficulty": (*hexutil.Big)(big.NewInt(0)), "extraData": "0x", - "size": hexutil.Uint64(size), - "gasLimit": hexutil.Uint64(gasLimit), // Static gas limit + "size": hexutil.Uint64(s), + "gasLimit": hexutil.Uint64(limit), // Static gas limit "gasUsed": (*hexutil.Big)(gasUsed), - "timestamp": hexutil.Uint64(header.Time.Unix()), + "timestamp": hexutil.Uint64(blockTime), "transactionsRoot": transactionsRoot, "receiptsRoot": ethtypes.EmptyRootHash, diff --git a/tests/integration_tests/test_grpc_only.py b/tests/integration_tests/test_grpc_only.py index 1fb0105c30..ecb207a57f 100644 --- a/tests/integration_tests/test_grpc_only.py +++ b/tests/integration_tests/test_grpc_only.py @@ -78,7 +78,7 @@ def test_grpc_mode(custom_ethermint): api_port = ports.api_port(custom_ethermint.base_port(1)) def expect_cb(rsp): - ret = rsp["ret"] + ret = rsp.get("ret") valid = ret is not None return valid and 9000 == int.from_bytes(base64.b64decode(ret.encode()), "big") diff --git a/testutil/base_test_suite.go b/testutil/base_test_suite.go index 4136d45268..ab74ece864 100644 --- a/testutil/base_test_suite.go +++ b/testutil/base_test_suite.go @@ -61,7 +61,7 @@ func (suite *BaseTestSuite) MintFeeCollectorVirtual(coins sdk.Coins) { func addVirtualCoins(store storetypes.ObjKVStore, txIndex int, addr sdk.AccAddress, amt sdk.Coins) { key := make([]byte, len(addr)+8) copy(key, addr) - binary.BigEndian.PutUint64(key[len(addr):], uint64(txIndex)) + binary.BigEndian.PutUint64(key[len(addr):], uint64(txIndex)) //nolint:gosec // test only var coins sdk.Coins value := store.Get(key) diff --git a/types/int.go b/types/int.go index 3c717d3c68..de02539067 100644 --- a/types/int.go +++ b/types/int.go @@ -42,7 +42,7 @@ func SafeInt64(value uint64) (int64, error) { return 0, fmt.Errorf("uint64 value %v cannot exceed %v", value, math.MaxInt64) } - return int64(value), nil //nolint:gosec // checked + return int64(value), nil } func SafeUint64ToInt32(value uint64) (int32, error) { @@ -58,7 +58,7 @@ func SafeUint64ToInt(value uint64) (int, error) { return 0, fmt.Errorf("uint64 value %v cannot exceed %v", value, math.MaxInt64) } - return int(value), nil //nolint:gosec // checked + return int(value), nil } func SafeHexToInt64(value hexutil.Uint64) (int64, error) { @@ -77,12 +77,40 @@ func SafeUint32(value int) (uint32, error) { return uint32(value), nil //nolint:gosec // checked } +func SafeUint64(value int64) (uint64, error) { + if value < 0 { + return 0, fmt.Errorf("invalid value: %d", value) + } + return uint64(value), nil +} + +func SafeIntToUint64(value int) (uint64, error) { + if value < 0 { + return 0, fmt.Errorf("invalid value: %d", value) + } + return uint64(value), nil +} + +func SafeInt32ToUint64(value int32) (uint64, error) { + if value < 0 { + return 0, fmt.Errorf("invalid value: %d", value) + } + return uint64(value), nil +} + +func SafeUint(value int) (uint, error) { + if value < 0 { + return 0, fmt.Errorf("invalid value: %d", value) + } + return uint(value), nil +} + func SafeUintToInt32(value uint) (int32, error) { if value > uint(math.MaxInt32) { return 0, fmt.Errorf("uint value %v cannot exceed %v", value, math.MaxUint32) } - return int32(value), nil //nolint:gosec // checked + return int32(value), nil } func SafeIntToInt32(value int) (int32, error) { @@ -98,7 +126,7 @@ func SafeInt(value uint) (int, error) { return 0, fmt.Errorf("uint value %v cannot exceed %v", value, math.MaxInt64) } - return int(value), nil //nolint:gosec // checked + return int(value), nil } func SafeHexToInt(value hexutil.Uint) (int, error) { diff --git a/x/evm/keeper/config.go b/x/evm/keeper/config.go index 4a19709975..ef97b58f80 100644 --- a/x/evm/keeper/config.go +++ b/x/evm/keeper/config.go @@ -24,6 +24,7 @@ import ( "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/params" rpctypes "github.com/evmos/ethermint/rpc/types" + ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm/statedb" "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" @@ -85,8 +86,14 @@ func (k *Keeper) EVMBlockConfig(ctx sdk.Context, chainID *big.Int) (*EVMBlockCon baseFee = new(big.Int) } } - - blockTime := uint64(ctx.BlockHeader().Time.Unix()) + time := ctx.BlockHeader().Time + var blockTime uint64 + if !time.IsZero() { + blockTime, err = ethermint.SafeUint64(time.Unix()) + if err != nil { + return nil, err + } + } blockNumber := big.NewInt(ctx.BlockHeight()) rules := ethCfg.Rules(blockNumber, ethCfg.MergeNetsplitBlock != nil, blockTime) diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index 30bed2e3b8..12179d35f4 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -315,7 +315,10 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type // Query block gas limit params := ctx.ConsensusParams() if params.Block != nil && params.Block.MaxGas > 0 { - hi = uint64(params.Block.MaxGas) + hi, err = ethermint.SafeUint64(params.Block.MaxGas) + if err != nil { + return nil, err + } } else { hi = req.GasCap } @@ -491,7 +494,10 @@ func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*typ continue } cfg.TxConfig.TxHash = ethTx.Hash() - cfg.TxConfig.TxIndex = uint(i) + cfg.TxConfig.TxIndex, err = ethermint.SafeUint(i) + if err != nil { + continue + } rsp, err := k.ApplyMessageWithConfig(ctx, msg, cfg, true) if err != nil { continue @@ -558,7 +564,10 @@ func (k Keeper) TraceBlock(c context.Context, req *types.QueryTraceBlockRequest) result := types.TxTraceResult{} ethTx := tx.AsTransaction() cfg.TxConfig.TxHash = ethTx.Hash() - cfg.TxConfig.TxIndex = uint(i) + cfg.TxConfig.TxIndex, err = ethermint.SafeUint(i) + if err != nil { + return nil, err + } msg, err := core.TransactionToMessage(ethTx, signer, cfg.BaseFee) if err != nil { result.Error = status.Error(codes.Internal, err.Error()).Error() diff --git a/x/evm/types/key.go b/x/evm/types/key.go index 51b19a469a..b3b7173ba9 100644 --- a/x/evm/types/key.go +++ b/x/evm/types/key.go @@ -19,6 +19,7 @@ import ( "encoding/binary" "github.com/ethereum/go-ethereum/common" + ethermint "github.com/evmos/ethermint/types" ) const ( @@ -80,14 +81,32 @@ func StateKey(address common.Address, key []byte) []byte { func ObjectGasUsedKey(txIndex int) []byte { var key [1 + 8]byte key[0] = prefixObjectGasUsed - binary.BigEndian.PutUint64(key[1:], uint64(txIndex)) + if txIndex < 0 { + return key[:] + } + idx, err := ethermint.SafeIntToUint64(txIndex) + if err != nil { + panic(err) + } + binary.BigEndian.PutUint64(key[1:], idx) return key[:] } func ObjectBloomKey(txIndex, msgIndex int) []byte { var key [1 + 8 + 8]byte key[0] = prefixObjectBloom - binary.BigEndian.PutUint64(key[1:], uint64(txIndex)) - binary.BigEndian.PutUint64(key[9:], uint64(msgIndex)) + if txIndex < 0 || msgIndex < 0 { + return key[:] + } + value, err := ethermint.SafeIntToUint64(txIndex) + if err != nil { + panic(err) + } + binary.BigEndian.PutUint64(key[1:], value) + value, err = ethermint.SafeIntToUint64(msgIndex) + if err != nil { + panic(err) + } + binary.BigEndian.PutUint64(key[9:], value) return key[:] } From 3fabdbeba4e01138397b35ab4f7cb61aeea95969 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 11 Sep 2024 14:02:43 +0800 Subject: [PATCH 018/210] Problem: hash in subscribe newHeads differs from eth_getBlockByNumber (#521) * Problem: hash in subscribe newHeads differs from eth_getBlockByNumber * fix test * cleanup --- CHANGELOG.md | 1 + rpc/backend/blocks.go | 21 +++++++--- rpc/backend/blocks_test.go | 26 +++++++++++- rpc/backend/call_tx_test.go | 12 ++++++ rpc/backend/evm_query_client_test.go | 7 ++++ rpc/backend/sign_tx_test.go | 5 ++- rpc/backend/utils.go | 13 ++++++ rpc/stream/rpc.go | 34 +++++++++++++--- rpc/types/utils.go | 5 ++- rpc/websockets.go | 47 +++++++++++++++++++++- server/json_rpc.go | 4 +- tests/integration_tests/test_websockets.py | 15 +++++++ 12 files changed, 171 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5359649384..40302e494d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,6 +65,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#488](https://github.com/crypto-org-chain/ethermint/pull/488) Fix handling of pending transactions related APIs. * (rpc) [#501](https://github.com/crypto-org-chain/ethermint/pull/501) Avoid invalid chain id for signer error when rpc call before chain id set in BeginBlock. * (block-stm) [#510](https://github.com/crypto-org-chain/ethermint/pull/510) Include a fix to avoid nondeterministic account set when stm workers execute in parallel. +* (rpc) [#521](https://github.com/crypto-org-chain/ethermint/pull/521) Align hash and miner in subscribe newHeads with eth_getBlockByNumber. * (rpc) [#516](https://github.com/crypto-org-chain/ethermint/pull/516) Avoid method eth_chainId crashed due to nil pointer on IsEIP155 check. ### Improvements diff --git a/rpc/backend/blocks.go b/rpc/backend/blocks.go index 26aff3f7d8..5d8365cd01 100644 --- a/rpc/backend/blocks.go +++ b/rpc/backend/blocks.go @@ -325,8 +325,11 @@ func (b *Backend) HeaderByNumber(blockNum rpctypes.BlockNumber) (*ethtypes.Heade // handle the error for pruned node. b.logger.Error("failed to fetch Base Fee from prunned block. Check node prunning configuration", "height", resBlock.Block.Height, "error", err) } - - ethHeader := rpctypes.EthHeaderFromTendermint(resBlock.Block.Header, bloom, baseFee) + validator, err := b.getValidatorAccount(resBlock) + if err != nil { + return nil, err + } + ethHeader := rpctypes.EthHeaderFromTendermint(resBlock.Block.Header, bloom, baseFee, validator) return ethHeader, nil } @@ -355,8 +358,11 @@ func (b *Backend) HeaderByHash(blockHash common.Hash) (*ethtypes.Header, error) // handle the error for pruned node. b.logger.Error("failed to fetch Base Fee from prunned block. Check node prunning configuration", "height", resBlock.Block.Height, "error", err) } - - ethHeader := rpctypes.EthHeaderFromTendermint(resBlock.Block.Header, bloom, baseFee) + validator, err := b.getValidatorAccount(resBlock) + if err != nil { + return nil, err + } + ethHeader := rpctypes.EthHeaderFromTendermint(resBlock.Block.Header, bloom, baseFee, validator) return ethHeader, nil } @@ -515,8 +521,11 @@ func (b *Backend) EthBlockFromTendermintBlock( // handle error for pruned node and log b.logger.Error("failed to fetch Base Fee from prunned block. Check node prunning configuration", "height", height, "error", err) } - - ethHeader := rpctypes.EthHeaderFromTendermint(block.Header, bloom, baseFee) + validator, err := b.getValidatorAccount(resBlock) + if err != nil { + return nil, err + } + ethHeader := rpctypes.EthHeaderFromTendermint(block.Header, bloom, baseFee, validator) msgs := b.EthMsgsFromTendermintBlock(resBlock, blockRes) txs := make([]*ethtypes.Transaction, len(msgs)) diff --git a/rpc/backend/blocks_test.go b/rpc/backend/blocks_test.go index 431a10629c..5c646a795b 100644 --- a/rpc/backend/blocks_test.go +++ b/rpc/backend/blocks_test.go @@ -1187,6 +1187,7 @@ func (suite *BackendTestSuite) TestHeaderByNumber() { var expResultBlock *tmrpctypes.ResultBlock _, bz := suite.buildEthereumTx() + validator := sdk.AccAddress(tests.GenerateAddress().Bytes()) testCases := []struct { name string @@ -1241,6 +1242,7 @@ func (suite *BackendTestSuite) TestHeaderByNumber() { queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterBaseFeeError(queryClient) + RegisterValidatorAccount(queryClient, validator) }, true, }, @@ -1256,6 +1258,7 @@ func (suite *BackendTestSuite) TestHeaderByNumber() { queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterBaseFee(queryClient, baseFee) + RegisterValidatorAccount(queryClient, validator) }, true, }, @@ -1271,6 +1274,7 @@ func (suite *BackendTestSuite) TestHeaderByNumber() { queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterBaseFee(queryClient, baseFee) + RegisterValidatorAccount(queryClient, validator) }, true, }, @@ -1283,7 +1287,7 @@ func (suite *BackendTestSuite) TestHeaderByNumber() { header, err := suite.backend.HeaderByNumber(tc.blockNumber) if tc.expPass { - expHeader := ethrpc.EthHeaderFromTendermint(expResultBlock.Block.Header, ethtypes.Bloom{}, tc.baseFee) + expHeader := ethrpc.EthHeaderFromTendermint(expResultBlock.Block.Header, ethtypes.Bloom{}, tc.baseFee, validator) suite.Require().NoError(err) suite.Require().Equal(expHeader, header) } else { @@ -1299,6 +1303,8 @@ func (suite *BackendTestSuite) TestHeaderByHash() { _, bz := suite.buildEthereumTx() block := tmtypes.MakeBlock(1, []tmtypes.Tx{bz}, nil, nil) emptyBlock := tmtypes.MakeBlock(1, []tmtypes.Tx{}, nil, nil) + validator := sdk.AccAddress(tests.GenerateAddress().Bytes()) + emptyBlock.Header.ProposerAddress = validator.Bytes() testCases := []struct { name string @@ -1351,6 +1357,7 @@ func (suite *BackendTestSuite) TestHeaderByHash() { queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterBaseFeeError(queryClient) + RegisterValidatorAccount(queryClient, validator) }, true, }, @@ -1366,6 +1373,7 @@ func (suite *BackendTestSuite) TestHeaderByHash() { queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterBaseFee(queryClient, baseFee) + RegisterValidatorAccount(queryClient, validator) }, true, }, @@ -1381,6 +1389,7 @@ func (suite *BackendTestSuite) TestHeaderByHash() { queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterBaseFee(queryClient, baseFee) + RegisterValidatorAccount(queryClient, validator) }, true, }, @@ -1393,7 +1402,7 @@ func (suite *BackendTestSuite) TestHeaderByHash() { header, err := suite.backend.HeaderByHash(tc.hash) if tc.expPass { - expHeader := ethrpc.EthHeaderFromTendermint(expResultBlock.Block.Header, ethtypes.Bloom{}, tc.baseFee) + expHeader := ethrpc.EthHeaderFromTendermint(expResultBlock.Block.Header, ethtypes.Bloom{}, tc.baseFee, validator) suite.Require().NoError(err) suite.Require().Equal(expHeader, header) } else { @@ -1406,6 +1415,8 @@ func (suite *BackendTestSuite) TestHeaderByHash() { func (suite *BackendTestSuite) TestEthBlockByNumber() { msgEthereumTx, bz := suite.buildEthereumTx() emptyBlock := tmtypes.MakeBlock(1, []tmtypes.Tx{}, nil, nil) + validator := sdk.AccAddress(tests.GenerateAddress().Bytes()) + emptyBlock.Header.ProposerAddress = validator.Bytes() testCases := []struct { name string @@ -1449,12 +1460,14 @@ func (suite *BackendTestSuite) TestEthBlockByNumber() { queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) baseFee := sdkmath.NewInt(1) RegisterBaseFee(queryClient, baseFee) + RegisterValidatorAccount(queryClient, validator) }, ethtypes.NewBlock( ethrpc.EthHeaderFromTendermint( emptyBlock.Header, ethtypes.Bloom{}, sdkmath.NewInt(1).BigInt(), + validator, ), []*ethtypes.Transaction{}, nil, @@ -1475,12 +1488,14 @@ func (suite *BackendTestSuite) TestEthBlockByNumber() { queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) baseFee := sdkmath.NewInt(1) RegisterBaseFee(queryClient, baseFee) + RegisterValidatorAccount(queryClient, validator) }, ethtypes.NewBlock( ethrpc.EthHeaderFromTendermint( emptyBlock.Header, ethtypes.Bloom{}, sdkmath.NewInt(1).BigInt(), + validator, ), []*ethtypes.Transaction{msgEthereumTx.AsTransaction()}, nil, @@ -1520,6 +1535,9 @@ func (suite *BackendTestSuite) TestEthBlockByNumber() { func (suite *BackendTestSuite) TestEthBlockFromTendermintBlock() { msgEthereumTx, bz := suite.buildEthereumTx() emptyBlock := tmtypes.MakeBlock(1, []tmtypes.Tx{}, nil, nil) + validator := sdk.AccAddress(tests.GenerateAddress().Bytes()) + emptyBlock.Header.ProposerAddress = validator.Bytes() + consAddress := sdk.ConsAddress(emptyBlock.Header.ProposerAddress).String() testCases := []struct { name string @@ -1543,12 +1561,14 @@ func (suite *BackendTestSuite) TestEthBlockFromTendermintBlock() { func(baseFee sdkmath.Int, blockNum int64) { queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterBaseFee(queryClient, baseFee) + RegisterValidatorAccountWithConsAddress(queryClient, validator, consAddress) }, ethtypes.NewBlock( ethrpc.EthHeaderFromTendermint( emptyBlock.Header, ethtypes.Bloom{}, sdkmath.NewInt(1).BigInt(), + validator, ), []*ethtypes.Transaction{}, nil, @@ -1578,12 +1598,14 @@ func (suite *BackendTestSuite) TestEthBlockFromTendermintBlock() { func(baseFee sdkmath.Int, blockNum int64) { queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterBaseFee(queryClient, baseFee) + RegisterValidatorAccount(queryClient, validator) }, ethtypes.NewBlock( ethrpc.EthHeaderFromTendermint( emptyBlock.Header, ethtypes.Bloom{}, sdkmath.NewInt(1).BigInt(), + validator, ), []*ethtypes.Transaction{msgEthereumTx.AsTransaction()}, nil, diff --git a/rpc/backend/call_tx_test.go b/rpc/backend/call_tx_test.go index dc2865791d..9ace06c491 100644 --- a/rpc/backend/call_tx_test.go +++ b/rpc/backend/call_tx_test.go @@ -6,6 +6,7 @@ import ( "math/big" sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/rlp" @@ -22,6 +23,7 @@ func (suite *BackendTestSuite) TestResend() { gasPrice := new(hexutil.Big) toAddr := tests.GenerateAddress() chainID := (*hexutil.Big)(suite.backend.chainID) + validator := sdk.AccAddress(tests.GenerateAddress().Bytes()) callArgs := evmtypes.TransactionArgs{ From: nil, To: &toAddr, @@ -67,6 +69,7 @@ func (suite *BackendTestSuite) TestResend() { RegisterBlock(client, 1, nil) RegisterBlockResults(client, 1) RegisterBaseFeeDisabled(queryClient) + RegisterValidatorAccount(queryClient, validator) }, evmtypes.TransactionArgs{ Nonce: &txNonce, @@ -89,6 +92,7 @@ func (suite *BackendTestSuite) TestResend() { RegisterBlock(client, 1, nil) RegisterBlockResults(client, 1) RegisterBaseFee(queryClient, baseFee) + RegisterValidatorAccount(queryClient, validator) }, evmtypes.TransactionArgs{ Nonce: &txNonce, @@ -108,6 +112,7 @@ func (suite *BackendTestSuite) TestResend() { RegisterBlock(client, 1, nil) RegisterBlockResults(client, 1) RegisterBaseFeeDisabled(queryClient) + RegisterValidatorAccount(queryClient, validator) }, evmtypes.TransactionArgs{ Nonce: &txNonce, @@ -161,6 +166,7 @@ func (suite *BackendTestSuite) TestResend() { RegisterBlock(client, 1, nil) RegisterBlockResults(client, 1) RegisterBaseFee(queryClient, baseFee) + RegisterValidatorAccount(queryClient, validator) }, evmtypes.TransactionArgs{ Nonce: &txNonce, @@ -184,6 +190,7 @@ func (suite *BackendTestSuite) TestResend() { RegisterBlock(client, 1, nil) RegisterBlockResults(client, 1) RegisterBaseFee(queryClient, baseFee) + RegisterValidatorAccount(queryClient, validator) }, evmtypes.TransactionArgs{ Nonce: &txNonce, @@ -208,6 +215,7 @@ func (suite *BackendTestSuite) TestResend() { RegisterParams(queryClient, &header, 1) RegisterParamsWithoutHeader(queryClient, 1) RegisterUnconfirmedTxsError(client, nil) + RegisterValidatorAccount(queryClient, validator) }, evmtypes.TransactionArgs{ Nonce: &txNonce, @@ -236,6 +244,7 @@ func (suite *BackendTestSuite) TestResend() { RegisterParams(queryClient, &header, 1) RegisterParamsWithoutHeader(queryClient, 1) RegisterUnconfirmedTxsEmpty(client, nil) + RegisterValidatorAccount(queryClient, validator) }, evmtypes.TransactionArgs{ Nonce: &txNonce, @@ -437,6 +446,7 @@ func (suite *BackendTestSuite) TestDoCall() { func (suite *BackendTestSuite) TestGasPrice() { defaultGasPrice := (*hexutil.Big)(big.NewInt(1)) + validator := sdk.AccAddress(tests.GenerateAddress().Bytes()) testCases := []struct { name string @@ -456,6 +466,7 @@ func (suite *BackendTestSuite) TestGasPrice() { RegisterBlock(client, 1, nil) RegisterBlockResults(client, 1) RegisterBaseFee(queryClient, sdkmath.NewInt(1)) + RegisterValidatorAccount(queryClient, validator) }, defaultGasPrice, true, @@ -472,6 +483,7 @@ func (suite *BackendTestSuite) TestGasPrice() { RegisterBlock(client, 1, nil) RegisterBlockResults(client, 1) RegisterBaseFee(queryClient, sdkmath.NewInt(1)) + RegisterValidatorAccount(queryClient, validator) }, defaultGasPrice, false, diff --git a/rpc/backend/evm_query_client_test.go b/rpc/backend/evm_query_client_test.go index 357901a5fc..f052d1442b 100644 --- a/rpc/backend/evm_query_client_test.go +++ b/rpc/backend/evm_query_client_test.go @@ -206,6 +206,13 @@ func RegisterValidatorAccount(queryClient *mocks.EVMQueryClient, validator sdk.A Return(&evmtypes.QueryValidatorAccountResponse{AccountAddress: validator.String()}, nil) } +func RegisterValidatorAccountWithConsAddress(queryClient *mocks.EVMQueryClient, validator sdk.AccAddress, consAddress string) { + queryClient.On("ValidatorAccount", rpc.ContextWithHeight(1), &evmtypes.QueryValidatorAccountRequest{ + ConsAddress: consAddress, + }). + Return(&evmtypes.QueryValidatorAccountResponse{AccountAddress: validator.String()}, nil) +} + func RegisterValidatorAccountError(queryClient *mocks.EVMQueryClient) { queryClient.On("ValidatorAccount", rpc.ContextWithHeight(1), &evmtypes.QueryValidatorAccountRequest{}). Return(nil, status.Error(codes.InvalidArgument, "empty request")) diff --git a/rpc/backend/sign_tx_test.go b/rpc/backend/sign_tx_test.go index 6d1dce3dc7..a8bcb24803 100644 --- a/rpc/backend/sign_tx_test.go +++ b/rpc/backend/sign_tx_test.go @@ -35,8 +35,8 @@ func (suite *BackendTestSuite) TestSendTransaction() { Gas: &gas, Nonce: &nonce, } - hash := common.Hash{} + validator := sdk.AccAddress(tests.GenerateAddress().Bytes()) testCases := []struct { name string @@ -79,6 +79,7 @@ func (suite *BackendTestSuite) TestSendTransaction() { RegisterBlock(client, 1, nil) RegisterBlockResults(client, 1) RegisterBaseFee(queryClient, baseFee) + RegisterValidatorAccount(queryClient, validator) }, evmtypes.TransactionArgs{ From: &from, @@ -110,6 +111,7 @@ func (suite *BackendTestSuite) TestSendTransaction() { txEncoder := suite.backend.clientCtx.TxConfig.TxEncoder() txBytes, _ := txEncoder(tx) RegisterBroadcastTxError(client, txBytes) + RegisterValidatorAccount(queryClient, validator) }, callArgsDefault, common.Hash{}, @@ -135,6 +137,7 @@ func (suite *BackendTestSuite) TestSendTransaction() { txEncoder := suite.backend.clientCtx.TxConfig.TxEncoder() txBytes, _ := txEncoder(tx) RegisterBroadcastTx(client, txBytes) + RegisterValidatorAccount(queryClient, validator) }, callArgsDefault, hash, diff --git a/rpc/backend/utils.go b/rpc/backend/utils.go index f236b994da..33a44a775b 100644 --- a/rpc/backend/utils.go +++ b/rpc/backend/utils.go @@ -325,3 +325,16 @@ func GetHexProofs(proof *crypto.ProofOps) []string { } return proofs } + +func (b *Backend) getValidatorAccount(resBlock *tmrpctypes.ResultBlock) (sdk.AccAddress, error) { + res, err := b.queryClient.ValidatorAccount( + types.ContextWithHeight(resBlock.Block.Header.Height), + &evmtypes.QueryValidatorAccountRequest{ + ConsAddress: sdk.ConsAddress(resBlock.Block.Header.ProposerAddress).String(), + }, + ) + if err != nil { + return nil, fmt.Errorf("failed to get validator account %w", err) + } + return sdk.AccAddressFromBech32(res.AccountAddress) +} diff --git a/rpc/stream/rpc.go b/rpc/stream/rpc.go index 680cfc67e7..baa2a59660 100644 --- a/rpc/stream/rpc.go +++ b/rpc/stream/rpc.go @@ -16,6 +16,7 @@ import ( "github.com/evmos/ethermint/rpc/types" ethermint "github.com/evmos/ethermint/types" evmtypes "github.com/evmos/ethermint/x/evm/types" + "google.golang.org/grpc" ) const ( @@ -45,6 +46,10 @@ type RPCHeader struct { Hash common.Hash } +type validatorAccountFunc func( + ctx context.Context, in *evmtypes.QueryValidatorAccountRequest, opts ...grpc.CallOption, +) (*evmtypes.QueryValidatorAccountResponse, error) + // RPCStream provides data streams for newHeads, logs, and pendingTransactions. type RPCStream struct { evtClient rpcclient.EventsClient @@ -55,22 +60,25 @@ type RPCStream struct { pendingTxStream *Stream[common.Hash] logStream *Stream[*ethtypes.Log] - wg sync.WaitGroup + wg sync.WaitGroup + validatorAccount validatorAccountFunc } func NewRPCStreams( evtClient rpcclient.EventsClient, logger log.Logger, txDecoder sdk.TxDecoder, + validatorAccount validatorAccountFunc, ) (*RPCStream, error) { s := &RPCStream{ evtClient: evtClient, logger: logger, txDecoder: txDecoder, - headerStream: NewStream[RPCHeader](headerStreamSegmentSize, headerStreamCapacity), - pendingTxStream: NewStream[common.Hash](txStreamSegmentSize, txStreamCapacity), - logStream: NewStream[*ethtypes.Log](logStreamSegmentSize, logStreamCapacity), + headerStream: NewStream[RPCHeader](headerStreamSegmentSize, headerStreamCapacity), + pendingTxStream: NewStream[common.Hash](txStreamSegmentSize, txStreamCapacity), + logStream: NewStream[*ethtypes.Log](logStreamSegmentSize, logStreamCapacity), + validatorAccount: validatorAccount, } ctx := context.Background() @@ -146,9 +154,23 @@ func (s *RPCStream) start( } baseFee := types.BaseFeeFromEvents(data.ResultFinalizeBlock.Events) - + res, err := s.validatorAccount( + types.ContextWithHeight(data.Block.Height), + &evmtypes.QueryValidatorAccountRequest{ + ConsAddress: sdk.ConsAddress(data.Block.Header.ProposerAddress).String(), + }, + ) + if err != nil { + s.logger.Error("failed to get validator account", "err", err) + continue + } + validator, err := sdk.AccAddressFromBech32(res.AccountAddress) + if err != nil { + s.logger.Error("failed to convert validator account", "err", err) + continue + } // TODO: fetch bloom from events - header := types.EthHeaderFromTendermint(data.Block.Header, ethtypes.Bloom{}, baseFee) + header := types.EthHeaderFromTendermint(data.Block.Header, ethtypes.Bloom{}, baseFee, validator) s.headerStream.Add(RPCHeader{EthHeader: header, Hash: common.BytesToHash(data.Block.Header.Hash())}) case ev, ok := <-chLogs: diff --git a/rpc/types/utils.go b/rpc/types/utils.go index 9f2e3d724e..c0ae4b4e2e 100644 --- a/rpc/types/utils.go +++ b/rpc/types/utils.go @@ -26,6 +26,7 @@ import ( errorsmod "cosmossdk.io/errors" "github.com/cosmos/cosmos-sdk/client" + sdk "github.com/cosmos/cosmos-sdk/types" errortypes "github.com/cosmos/cosmos-sdk/types/errors" evmtypes "github.com/evmos/ethermint/x/evm/types" @@ -64,7 +65,7 @@ func RawTxToEthTx(clientCtx client.Context, txBz tmtypes.Tx) ([]*evmtypes.MsgEth // EthHeaderFromTendermint is an util function that returns an Ethereum Header // from a tendermint Header. -func EthHeaderFromTendermint(header tmtypes.Header, bloom ethtypes.Bloom, baseFee *big.Int) *ethtypes.Header { +func EthHeaderFromTendermint(header tmtypes.Header, bloom ethtypes.Bloom, baseFee *big.Int, miner sdk.AccAddress) *ethtypes.Header { txHash := ethtypes.EmptyRootHash if len(header.DataHash) == 0 { txHash = common.BytesToHash(header.DataHash) @@ -83,7 +84,7 @@ func EthHeaderFromTendermint(header tmtypes.Header, bloom ethtypes.Bloom, baseFe return ðtypes.Header{ ParentHash: common.BytesToHash(header.LastBlockID.Hash.Bytes()), UncleHash: ethtypes.EmptyUncleHash, - Coinbase: common.BytesToAddress(header.ProposerAddress), + Coinbase: common.BytesToAddress(miner), Root: common.BytesToHash(header.AppHash), TxHash: txHash, ReceiptHash: ethtypes.EmptyRootHash, diff --git a/rpc/websockets.go b/rpc/websockets.go index 0268f9797f..7303a7717a 100644 --- a/rpc/websockets.go +++ b/rpc/websockets.go @@ -33,6 +33,7 @@ import ( "github.com/pkg/errors" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/eth/filters" "github.com/ethereum/go-ethereum/rpc" @@ -385,18 +386,62 @@ func (api *pubSubAPI) subscribe(wsConn *wsConn, subID rpc.ID, params []interface } } +// https://github.com/ethereum/go-ethereum/blob/release/1.11/core/types/gen_header_json.go#L18 +type Header struct { + ParentHash common.Hash `json:"parentHash" gencodec:"required"` + UncleHash common.Hash `json:"sha3Uncles" gencodec:"required"` + // update string avoid lost checksumed miner after MarshalText + Coinbase string `json:"miner"` + Root common.Hash `json:"stateRoot" gencodec:"required"` + TxHash common.Hash `json:"transactionsRoot" gencodec:"required"` + ReceiptHash common.Hash `json:"receiptsRoot" gencodec:"required"` + Bloom ethtypes.Bloom `json:"logsBloom" gencodec:"required"` + Difficulty *hexutil.Big `json:"difficulty" gencodec:"required"` + Number *hexutil.Big `json:"number" gencodec:"required"` + GasLimit hexutil.Uint64 `json:"gasLimit" gencodec:"required"` + GasUsed hexutil.Uint64 `json:"gasUsed" gencodec:"required"` + Time hexutil.Uint64 `json:"timestamp" gencodec:"required"` + Extra hexutil.Bytes `json:"extraData" gencodec:"required"` + MixDigest common.Hash `json:"mixHash"` + Nonce ethtypes.BlockNonce `json:"nonce"` + BaseFee *hexutil.Big `json:"baseFeePerGas" rlp:"optional"` + WithdrawalsHash *common.Hash `json:"withdrawalsRoot" rlp:"optional"` + // overwrite rlpHash + Hash common.Hash `json:"hash"` +} + func (api *pubSubAPI) subscribeNewHeads(wsConn *wsConn, subID rpc.ID) (context.CancelFunc, error) { ctx, cancel := context.WithCancel(context.Background()) //nolint: errcheck go api.events.HeaderStream().Subscribe(ctx, func(headers []stream.RPCHeader, _ int) error { for _, header := range headers { + h := header.EthHeader + var enc Header + enc.ParentHash = h.ParentHash + enc.UncleHash = h.UncleHash + enc.Coinbase = h.Coinbase.Hex() + enc.Root = h.Root + enc.TxHash = h.TxHash + enc.ReceiptHash = h.ReceiptHash + enc.Bloom = h.Bloom + enc.Difficulty = (*hexutil.Big)(h.Difficulty) + enc.Number = (*hexutil.Big)(h.Number) + enc.GasLimit = hexutil.Uint64(h.GasLimit) + enc.GasUsed = hexutil.Uint64(h.GasUsed) + enc.Time = hexutil.Uint64(h.Time) + enc.Extra = h.Extra + enc.MixDigest = h.MixDigest + enc.Nonce = h.Nonce + enc.BaseFee = (*hexutil.Big)(h.BaseFee) + enc.WithdrawalsHash = h.WithdrawalsHash + enc.Hash = header.Hash // write to ws conn res := &SubscriptionNotification{ Jsonrpc: "2.0", Method: "eth_subscription", Params: &SubscriptionResult{ Subscription: subID, - Result: header.EthHeader, + Result: enc, }, } diff --git a/server/json_rpc.go b/server/json_rpc.go index 9a18e14333..9156aeb6ec 100644 --- a/server/json_rpc.go +++ b/server/json_rpc.go @@ -32,6 +32,7 @@ import ( "github.com/evmos/ethermint/app/ante" "github.com/evmos/ethermint/rpc" "github.com/evmos/ethermint/rpc/stream" + rpctypes "github.com/evmos/ethermint/rpc/types" "github.com/evmos/ethermint/server/config" ethermint "github.com/evmos/ethermint/types" ) @@ -62,8 +63,9 @@ func StartJSONRPC(srvCtx *server.Context, var rpcStream *stream.RPCStream var err error + queryClient := rpctypes.NewQueryClient(clientCtx) for i := 0; i < MaxRetry; i++ { - rpcStream, err = stream.NewRPCStreams(evtClient, logger, clientCtx.TxConfig.TxDecoder()) + rpcStream, err = stream.NewRPCStreams(evtClient, logger, clientCtx.TxConfig.TxDecoder(), queryClient.ValidatorAccount) if err == nil { break } diff --git a/tests/integration_tests/test_websockets.py b/tests/integration_tests/test_websockets.py index ffe9e2542c..5c127c4b40 100644 --- a/tests/integration_tests/test_websockets.py +++ b/tests/integration_tests/test_websockets.py @@ -100,6 +100,19 @@ async def assert_unsubscribe(c: Client, sub_id): # unsubscribe again return False assert not await c.unsubscribe(sub_id) + async def subscriber_test(c: Client, w3): + sub_id = await c.subscribe("newHeads") + # wait for three new blocks + msgs = [await c.recv_subscription(sub_id) for i in range(3)] + # check blocks are consecutive + assert int(msgs[1]["number"], 0) == int(msgs[0]["number"], 0) + 1 + assert int(msgs[2]["number"], 0) == int(msgs[1]["number"], 0) + 1 + for msg in msgs: + b = w3.eth.get_block(msg["number"]) + assert HexBytes(msg["hash"]) == b["hash"] + assert msg["miner"] == b["miner"] + await assert_unsubscribe(c, sub_id) + async def logs_test(c: Client, w3, contract): method = "Transfer(address,address,uint256)" topic = f"0x{abi.event_signature_to_log_topic(method).hex()}" @@ -136,6 +149,8 @@ async def async_test(): async with websockets.connect(ethermint.w3_ws_endpoint) as ws: c = Client(ws) t = asyncio.create_task(c.receive_loop()) + # run three subscribers concurrently + await asyncio.gather(*[subscriber_test(c, ethermint.w3) for i in range(3)]) # run send concurrently await asyncio.gather(*[c.send(id) for id in ["0", 1, 2.0]]) contract, _ = deploy_contract(ethermint.w3, CONTRACTS["TestERC20A"]) From 79bb39ed91e4f972002b6a75fb46b62c9de5c22c Mon Sep 17 00:00:00 2001 From: yihuang Date: Wed, 11 Sep 2024 17:35:56 +0800 Subject: [PATCH 019/210] Problem: block-stm tx executor bad worst case performance (#522) * Problem: block-stm tx executor don't do simple static dependency analysis Solution: - estimate dependencies based on tx fee payer, try to optimise worst case performance. * fix build * customize estimates instead of dependencies * fix context * update api * cleanup * changelog * cleanup * cleanup * cleanup * pre-estimate config * fix lint --- CHANGELOG.md | 1 + app/app.go | 25 ++++++----- app/executor.go | 97 +++++++++++++++++++++++++++++++++++++---- go.mod | 12 ++--- go.sum | 20 ++++----- gomod2nix.toml | 14 +++--- server/config/config.go | 11 +++-- server/config/toml.go | 2 + server/flags/flags.go | 9 ++-- 9 files changed, 139 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40302e494d..3046b3f4b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,6 +87,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (deps) [#505](https://github.com/crypto-org-chain/ethermint/pull/505) Update cometbft to v0.38.10. * (ante) [#504](https://github.com/crypto-org-chain/ethermint/pull/504) Optimize AnteHandle method to skip checks if disabledMsgs is empty. * [#517](https://github.com/crypto-org-chain/ethermint/pull/517) Add check for integer overflow to ensure safe conversion. +* [#522](https://github.com/crypto-org-chain/ethermint/pull/522) block-stm executor support optional pre-estimations. ## v0.21.x-cronos diff --git a/app/app.go b/app/app.go index 940b0f95b7..2c07fb517d 100644 --- a/app/app.go +++ b/app/app.go @@ -337,18 +337,6 @@ func NewEthermintApp( okeys: okeys, } - executor := cast.ToString(appOpts.Get(srvflags.EVMBlockExecutor)) - switch executor { - case srvconfig.BlockExecutorBlockSTM: - sdk.SetAddrCacheEnabled(false) - workers := cast.ToInt(appOpts.Get(srvflags.EVMBlockSTMWorkers)) - app.SetTxExecutor(STMTxExecutor(app.GetStoreKeys(), workers)) - case "", srvconfig.BlockExecutorSequential: - app.SetTxExecutor(DefaultTxExecutor) - default: - panic(fmt.Errorf("unknown EVM block executor: %s", executor)) - } - // init params keeper and subspaces app.ParamsKeeper = initParamsKeeper(appCodec, cdc, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) @@ -803,6 +791,19 @@ func NewEthermintApp( app.ScopedIBCKeeper = scopedIBCKeeper app.ScopedTransferKeeper = scopedTransferKeeper + executor := cast.ToString(appOpts.Get(srvflags.EVMBlockExecutor)) + switch executor { + case srvconfig.BlockExecutorBlockSTM: + sdk.SetAddrCacheEnabled(false) + workers := cast.ToInt(appOpts.Get(srvflags.EVMBlockSTMWorkers)) + preEstimate := cast.ToBool(appOpts.Get(srvflags.EVMBlockSTMPreEstimate)) + app.SetTxExecutor(STMTxExecutor(app.GetStoreKeys(), workers, preEstimate, app.EvmKeeper, txConfig.TxDecoder())) + case "", srvconfig.BlockExecutorSequential: + app.SetTxExecutor(DefaultTxExecutor) + default: + panic(fmt.Errorf("unknown EVM block executor: %s", executor)) + } + return app } diff --git a/app/executor.go b/app/executor.go index 632e45ba36..8cbbaafc58 100644 --- a/app/executor.go +++ b/app/executor.go @@ -5,39 +5,64 @@ import ( "io" "sync/atomic" + "cosmossdk.io/collections" + "cosmossdk.io/log" "cosmossdk.io/store/cachemulti" storetypes "cosmossdk.io/store/types" abci "github.com/cometbft/cometbft/abci/types" + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" evmtypes "github.com/evmos/ethermint/x/evm/types" "github.com/cosmos/cosmos-sdk/baseapp" + sdk "github.com/cosmos/cosmos-sdk/types" blockstm "github.com/crypto-org-chain/go-block-stm" ) func DefaultTxExecutor(_ context.Context, - blockSize int, + txs [][]byte, ms storetypes.MultiStore, - deliverTxWithMultiStore func(int, storetypes.MultiStore, map[string]any) *abci.ExecTxResult, + deliverTxWithMultiStore func(int, sdk.Tx, storetypes.MultiStore, map[string]any) *abci.ExecTxResult, ) ([]*abci.ExecTxResult, error) { + blockSize := len(txs) results := make([]*abci.ExecTxResult, blockSize) for i := 0; i < blockSize; i++ { - results[i] = deliverTxWithMultiStore(i, ms, nil) + results[i] = deliverTxWithMultiStore(i, nil, ms, nil) } return evmtypes.PatchTxResponses(results), nil } -func STMTxExecutor(stores []storetypes.StoreKey, workers int) baseapp.TxExecutor { +type evmKeeper interface { + GetParams(ctx sdk.Context) evmtypes.Params +} + +func STMTxExecutor( + stores []storetypes.StoreKey, + workers int, + estimate bool, + evmKeeper evmKeeper, + txDecoder sdk.TxDecoder, +) baseapp.TxExecutor { + var authStore, bankStore int index := make(map[storetypes.StoreKey]int, len(stores)) for i, k := range stores { + switch k.Name() { + case authtypes.StoreKey: + authStore = i + case banktypes.StoreKey: + bankStore = i + } index[k] = i } return func( ctx context.Context, - blockSize int, + txs [][]byte, ms storetypes.MultiStore, - deliverTxWithMultiStore func(int, storetypes.MultiStore, map[string]any) *abci.ExecTxResult, + deliverTxWithMultiStore func(int, sdk.Tx, storetypes.MultiStore, map[string]any) *abci.ExecTxResult, ) ([]*abci.ExecTxResult, error) { + blockSize := len(txs) if blockSize == 0 { return nil, nil } @@ -47,12 +72,27 @@ func STMTxExecutor(stores []storetypes.StoreKey, workers int) baseapp.TxExecutor m := make(map[string]any) incarnationCache[i].Store(&m) } - if err := blockstm.ExecuteBlock( + + var estimates map[int]blockstm.MultiLocations + memTxs := make([]sdk.Tx, len(txs)) + if estimate { + for i, rawTx := range txs { + if memTx, err := txDecoder(rawTx); err == nil { + memTxs[i] = memTx + } + } + // pre-estimation + evmDenom := evmKeeper.GetParams(sdk.NewContext(ms, cmtproto.Header{}, false, log.NewNopLogger())).EvmDenom + estimates = preEstimates(memTxs, authStore, bankStore, evmDenom) + } + + if err := blockstm.ExecuteBlockWithEstimates( ctx, blockSize, index, stmMultiStoreWrapper{ms}, workers, + estimates, func(txn blockstm.TxnIndex, ms blockstm.MultiStore) { var cache map[string]any @@ -63,8 +103,7 @@ func STMTxExecutor(stores []storetypes.StoreKey, workers int) baseapp.TxExecutor cache = *v } - result := deliverTxWithMultiStore(int(txn), msWrapper{ms}, cache) - results[txn] = result + results[txn] = deliverTxWithMultiStore(int(txn), memTxs[txn], msWrapper{ms}, cache) if v != nil { incarnationCache[txn].Store(v) @@ -146,3 +185,43 @@ func (ms stmMultiStoreWrapper) GetKVStore(key storetypes.StoreKey) storetypes.KV func (ms stmMultiStoreWrapper) GetObjKVStore(key storetypes.StoreKey) storetypes.ObjKVStore { return ms.MultiStore.GetObjKVStore(key) } + +// preEstimates returns a static estimation of the written keys for each transaction. +// NOTE: make sure it sync with the latest sdk logic when sdk upgrade. +func preEstimates(txs []sdk.Tx, authStore, bankStore int, evmDenom string) map[int]blockstm.MultiLocations { + estimates := make(map[int]blockstm.MultiLocations, len(txs)) + for i, tx := range txs { + feeTx, ok := tx.(sdk.FeeTx) + if !ok { + continue + } + feePayer := sdk.AccAddress(feeTx.FeePayer()) + + // account key + accKey, err := collections.EncodeKeyWithPrefix( + authtypes.AddressStoreKeyPrefix, + sdk.AccAddressKey, + feePayer, + ) + if err != nil { + continue + } + + // balance key + balanceKey, err := collections.EncodeKeyWithPrefix( + banktypes.BalancesPrefix, + collections.PairKeyCodec(sdk.AccAddressKey, collections.StringKey), + collections.Join(feePayer, evmDenom), + ) + if err != nil { + continue + } + + estimates[i] = blockstm.MultiLocations{ + authStore: {accKey}, + bankStore: {balanceKey}, + } + } + + return estimates +} diff --git a/go.mod b/go.mod index 76c1e26504..4724128218 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ toolchain go1.21.5 require ( cosmossdk.io/api v0.7.5 cosmossdk.io/client/v2 v2.0.0-beta.1 + cosmossdk.io/collections v0.4.0 cosmossdk.io/core v0.11.0 cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.3.1 @@ -28,7 +29,7 @@ require ( github.com/cosmos/ibc-go/modules/capability v1.0.0 github.com/cosmos/ibc-go/v8 v8.1.0 github.com/cosmos/rosetta v0.50.3-1 - github.com/crypto-org-chain/go-block-stm v0.0.0-20240806075927-09a64748f883 + github.com/crypto-org-chain/go-block-stm v0.0.0-20240911081142-92839e79a3ae github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/ethereum/go-ethereum v1.10.26 github.com/gogo/protobuf v1.3.2 @@ -65,7 +66,6 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.1.6 // indirect cloud.google.com/go/storage v1.36.0 // indirect - cosmossdk.io/collections v0.4.0 // indirect cosmossdk.io/depinject v1.0.0-alpha.4 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect @@ -243,10 +243,10 @@ require ( replace ( // release/v0.50.x - cosmossdk.io/client/v2 => github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240722033504-50f1fa0c49d1 - cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240722033504-50f1fa0c49d1 - cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240722033504-50f1fa0c49d1 - github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240722033504-50f1fa0c49d1 + cosmossdk.io/client/v2 => github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240911084450-6870ba130be2 + cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240911084450-6870ba130be2 + cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240911084450-6870ba130be2 + github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240911084450-6870ba130be2 ) replace ( diff --git a/go.sum b/go.sum index 47e04d00a9..3f98d733d4 100644 --- a/go.sum +++ b/go.sum @@ -411,16 +411,16 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+FBB8cMkDE2j2VBVsbY+HCkPIu0YsJ/9bbGeQ= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240722033504-50f1fa0c49d1 h1:xahHemSiT79xgh8Ig8zOTeHSLHt9FfPzViK7rATWhUM= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240722033504-50f1fa0c49d1/go.mod h1:Rb43DdB0i/rKcCN69Tg2X3+zA4WhJ7MC8K3a6Ezh38E= -github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240722033504-50f1fa0c49d1 h1:zqTYZqMKnv15UkKwCEbGqshZ6tWczctBYP53FxmEiF8= -github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240722033504-50f1fa0c49d1/go.mod h1:W5sR4asmVDUhJpEmuXTUBkk/yEefKlXTjVWcNciVSR0= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240722033504-50f1fa0c49d1 h1:ZlezTiQu9pYpVO+6sB9+W3fvthIpV1GgSI8kPjw+v5s= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240722033504-50f1fa0c49d1/go.mod h1:gjE3DZe4t/+VeIk6CmrouyqiuDbZ7QOVDDq3nLqBTpg= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240722033504-50f1fa0c49d1 h1:r0ALP31Wnw19FqEmqzsK2SFNqdMetHshnM/X/FeJRIo= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240722033504-50f1fa0c49d1/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= -github.com/crypto-org-chain/go-block-stm v0.0.0-20240806075927-09a64748f883 h1:Oj7VvlK8iXRaugnpGA8CBXGrgkyigji+Ae5weSRD85I= -github.com/crypto-org-chain/go-block-stm v0.0.0-20240806075927-09a64748f883/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240911084450-6870ba130be2 h1:4SoAvnxDaiIWcgm6XOmPDIdCf4/WNhNYLXGbij1eaA0= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240911084450-6870ba130be2/go.mod h1:Rb43DdB0i/rKcCN69Tg2X3+zA4WhJ7MC8K3a6Ezh38E= +github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240911084450-6870ba130be2 h1:5oGZtOUcauk9dtv+8BCfj2PEQyXEEEV+K3sP4OSvBmg= +github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240911084450-6870ba130be2/go.mod h1:W5sR4asmVDUhJpEmuXTUBkk/yEefKlXTjVWcNciVSR0= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240911084450-6870ba130be2 h1:CGh5I0L6IYhe0AJevb4vf5TE3ru+qAgMs437BlWCwo8= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240911084450-6870ba130be2/go.mod h1:gjE3DZe4t/+VeIk6CmrouyqiuDbZ7QOVDDq3nLqBTpg= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240911084450-6870ba130be2 h1:mxlOSCru7YgmX055rrlkCSUu0D8lAqJ8Dnhp0yXCBuM= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240911084450-6870ba130be2/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= +github.com/crypto-org-chain/go-block-stm v0.0.0-20240911081142-92839e79a3ae h1:gakWYsVubWX8P9NpxaPnvg0UJYfIZigfko5WN57t7OA= +github.com/crypto-org-chain/go-block-stm v0.0.0-20240911081142-92839e79a3ae/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240425065928-ebb09502e7a7 h1:V43F3JFcqG4MUThf9W/DytnPblpR6CcaLBw2Wx6zTgE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240425065928-ebb09502e7a7/go.mod h1:+a8pUj1tOyJ2RinsNQD4326YS+leSoKGiG/uVVb0x6Y= github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= diff --git a/gomod2nix.toml b/gomod2nix.toml index 489d5e12aa..3c1044e75d 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -20,7 +20,7 @@ schema = 3 version = "v0.7.5" hash = "sha256-Nuw697sJr56kU3EU7DV1eYNkyI76psznIVqYAV6RfbQ=" [mod."cosmossdk.io/client/v2"] - version = "v2.0.0-20240722033504-50f1fa0c49d1" + version = "v2.0.0-20240911084450-6870ba130be2" hash = "sha256-60hmufv3Ml4Pv3zNwgn8eeqlEINOR6n9MKr2QHddoxo=" replaced = "github.com/crypto-org-chain/cosmos-sdk/client/v2" [mod."cosmossdk.io/collections"] @@ -42,7 +42,7 @@ schema = 3 version = "v1.3.0" hash = "sha256-EEFK43Cr0g0ndhQhkIKher0FqV3mvkmE9z0sP7uVSHg=" [mod."cosmossdk.io/store"] - version = "v0.0.0-20240722033504-50f1fa0c49d1" + version = "v0.0.0-20240911084450-6870ba130be2" hash = "sha256-Dm3sSZNJBcnBF33PULoTpK4rkNQbsZl0DfTqH1GPCQM=" replaced = "github.com/crypto-org-chain/cosmos-sdk/store" [mod."cosmossdk.io/tools/confix"] @@ -55,7 +55,7 @@ schema = 3 version = "v0.1.0" hash = "sha256-/gWvrqvy6bW90+NU66T+9QysYgvG1VbwfYJZ8tkqpeA=" [mod."cosmossdk.io/x/tx"] - version = "v0.0.0-20240722033504-50f1fa0c49d1" + version = "v0.0.0-20240911084450-6870ba130be2" hash = "sha256-xT5IdapEx1h46ofBpxcBQfzGF2EntmC8xZl7aym/6xE=" replaced = "github.com/crypto-org-chain/cosmos-sdk/x/tx" [mod."cosmossdk.io/x/upgrade"] @@ -163,8 +163,8 @@ schema = 3 version = "v1.0.0-beta.5" hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg=" [mod."github.com/cosmos/cosmos-sdk"] - version = "v0.50.6-0.20240722033504-50f1fa0c49d1" - hash = "sha256-OjJgi6tq5c4czeQLZVeJRBo4s4kC37h4IFT/GGvF7G0=" + version = "v0.50.6-0.20240911084450-6870ba130be2" + hash = "sha256-kl2sLe8vITIguRGtdeviDeP3R5JIbRg+eDsheGd4PqM=" replaced = "github.com/crypto-org-chain/cosmos-sdk" [mod."github.com/cosmos/go-bip39"] version = "v1.0.0" @@ -203,8 +203,8 @@ schema = 3 version = "v0.0.24" hash = "sha256-4vUukHONOjNn0qfQr4esK6TWfPWsIp+rbdz65og84lw=" [mod."github.com/crypto-org-chain/go-block-stm"] - version = "v0.0.0-20240806075927-09a64748f883" - hash = "sha256-DuqcnTqpUVRxV+I+CaBuDg/1CLmMeXdw4VEFeuCsUbU=" + version = "v0.0.0-20240911081142-92839e79a3ae" + hash = "sha256-8MhSeC5BB5BwOet3k3Rfua0TBeBATtLSwaW6s5WpYCM=" [mod."github.com/danieljoos/wincred"] version = "v1.2.0" hash = "sha256-LHcvTJCc8++bFndbd8ZgMSTe4L5h2C4rN+cSWHCz54Y=" diff --git a/server/config/config.go b/server/config/config.go index 4182ef85e5..7fb16d37a5 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -134,6 +134,8 @@ type EVMConfig struct { BlockExecutor string `mapstructure:"block-executor"` // BlockSTMWorkers is the number of workers for block-stm execution, `0` means using all available CPUs. BlockSTMWorkers int `mapstructure:"block-stm-workers"` + // BlockSTMPreEstimate is the flag to enable pre-estimation for block-stm execution. + BlockSTMPreEstimate bool `mapstructure:"block-stm-pre-estimate"` } // JSONRPCConfig defines configuration for the EVM RPC server. @@ -407,10 +409,11 @@ func GetConfig(v *viper.Viper) (Config, error) { return Config{ Config: cfg, EVM: EVMConfig{ - Tracer: v.GetString("evm.tracer"), - MaxTxGasWanted: v.GetUint64("evm.max-tx-gas-wanted"), - BlockExecutor: v.GetString("evm.block-executor"), - BlockSTMWorkers: v.GetInt("evm.block-stm-workers"), + Tracer: v.GetString("evm.tracer"), + MaxTxGasWanted: v.GetUint64("evm.max-tx-gas-wanted"), + BlockExecutor: v.GetString("evm.block-executor"), + BlockSTMWorkers: v.GetInt("evm.block-stm-workers"), + BlockSTMPreEstimate: v.GetBool("evm.block-stm-pre-estimate"), }, JSONRPC: JSONRPCConfig{ Enable: v.GetBool("json-rpc.enable"), diff --git a/server/config/toml.go b/server/config/toml.go index b82d492c7f..31b07d50a1 100644 --- a/server/config/toml.go +++ b/server/config/toml.go @@ -35,6 +35,8 @@ max-tx-gas-wanted = {{ .EVM.MaxTxGasWanted }} block-executor = "{{ .EVM.BlockExecutor }}" # BlockSTMWorkers is the number of workers for block-stm execution, 0 means using all available CPUs. block-stm-workers = {{ .EVM.BlockSTMWorkers }} +# BlockSTMPreEstimate is the flag to enable pre-estimation for block-stm execution. +block-stm-pre-estimate = {{ .EVM.BlockSTMPreEstimate }} ############################################################################### ### JSON RPC Configuration ### diff --git a/server/flags/flags.go b/server/flags/flags.go index 02dc161342..c795013c15 100644 --- a/server/flags/flags.go +++ b/server/flags/flags.go @@ -76,10 +76,11 @@ const ( // EVM flags const ( - EVMTracer = "evm.tracer" - EVMMaxTxGasWanted = "evm.max-tx-gas-wanted" - EVMBlockExecutor = "evm.block-executor" - EVMBlockSTMWorkers = "evm.block-stm-workers" + EVMTracer = "evm.tracer" + EVMMaxTxGasWanted = "evm.max-tx-gas-wanted" + EVMBlockExecutor = "evm.block-executor" + EVMBlockSTMWorkers = "evm.block-stm-workers" + EVMBlockSTMPreEstimate = "evm.block-stm-pre-estimate" ) // TLS flags From 56f8a5be75ecc5f2493cc250e026b4ea565fbc4e Mon Sep 17 00:00:00 2001 From: yihuang Date: Thu, 12 Sep 2024 14:01:35 +0800 Subject: [PATCH 020/210] Problem: pre-estimation don't run in parallel (#523) * Problem: pre-estimation don't run in parallel * fix build * fix race * cleanup chunking * keep unchanged --------- Co-authored-by: mmsqe --- app/executor.go | 107 ++++++++++++++++++++++++++++++------------------ go.mod | 2 +- go.sum | 4 +- gomod2nix.toml | 4 +- 4 files changed, 73 insertions(+), 44 deletions(-) diff --git a/app/executor.go b/app/executor.go index 8cbbaafc58..1cff225d61 100644 --- a/app/executor.go +++ b/app/executor.go @@ -3,6 +3,7 @@ package app import ( "context" "io" + "sync" "sync/atomic" "cosmossdk.io/collections" @@ -21,6 +22,8 @@ import ( blockstm "github.com/crypto-org-chain/go-block-stm" ) +const MinimalParallelPreEstimate = 16 + func DefaultTxExecutor(_ context.Context, txs [][]byte, ms storetypes.MultiStore, @@ -73,17 +76,14 @@ func STMTxExecutor( incarnationCache[i].Store(&m) } - var estimates map[int]blockstm.MultiLocations - memTxs := make([]sdk.Tx, len(txs)) + var ( + estimates []blockstm.MultiLocations + memTxs []sdk.Tx + ) if estimate { - for i, rawTx := range txs { - if memTx, err := txDecoder(rawTx); err == nil { - memTxs[i] = memTx - } - } // pre-estimation evmDenom := evmKeeper.GetParams(sdk.NewContext(ms, cmtproto.Header{}, false, log.NewNopLogger())).EvmDenom - estimates = preEstimates(memTxs, authStore, bankStore, evmDenom) + memTxs, estimates = preEstimates(txs, workers, authStore, bankStore, evmDenom, txDecoder) } if err := blockstm.ExecuteBlockWithEstimates( @@ -103,7 +103,11 @@ func STMTxExecutor( cache = *v } - results[txn] = deliverTxWithMultiStore(int(txn), memTxs[txn], msWrapper{ms}, cache) + var memTx sdk.Tx + if memTxs != nil { + memTx = memTxs[txn] + } + results[txn] = deliverTxWithMultiStore(int(txn), memTx, msWrapper{ms}, cache) if v != nil { incarnationCache[txn].Store(v) @@ -188,40 +192,65 @@ func (ms stmMultiStoreWrapper) GetObjKVStore(key storetypes.StoreKey) storetypes // preEstimates returns a static estimation of the written keys for each transaction. // NOTE: make sure it sync with the latest sdk logic when sdk upgrade. -func preEstimates(txs []sdk.Tx, authStore, bankStore int, evmDenom string) map[int]blockstm.MultiLocations { - estimates := make(map[int]blockstm.MultiLocations, len(txs)) - for i, tx := range txs { - feeTx, ok := tx.(sdk.FeeTx) - if !ok { - continue - } - feePayer := sdk.AccAddress(feeTx.FeePayer()) +func preEstimates(txs [][]byte, workers, authStore, bankStore int, evmDenom string, txDecoder sdk.TxDecoder) ([]sdk.Tx, []blockstm.MultiLocations) { + memTxs := make([]sdk.Tx, len(txs)) + estimates := make([]blockstm.MultiLocations, len(txs)) + + job := func(start, end int) { + for i := start; i < end; i++ { + rawTx := txs[i] + tx, err := txDecoder(rawTx) + if err != nil { + continue + } + memTxs[i] = tx - // account key - accKey, err := collections.EncodeKeyWithPrefix( - authtypes.AddressStoreKeyPrefix, - sdk.AccAddressKey, - feePayer, - ) - if err != nil { - continue - } + feeTx, ok := tx.(sdk.FeeTx) + if !ok { + continue + } + feePayer := sdk.AccAddress(feeTx.FeePayer()) + + // account key + accKey, err := collections.EncodeKeyWithPrefix( + authtypes.AddressStoreKeyPrefix, + sdk.AccAddressKey, + feePayer, + ) + if err != nil { + continue + } - // balance key - balanceKey, err := collections.EncodeKeyWithPrefix( - banktypes.BalancesPrefix, - collections.PairKeyCodec(sdk.AccAddressKey, collections.StringKey), - collections.Join(feePayer, evmDenom), - ) - if err != nil { - continue - } + // balance key + balanceKey, err := collections.EncodeKeyWithPrefix( + banktypes.BalancesPrefix, + collections.PairKeyCodec(sdk.AccAddressKey, collections.StringKey), + collections.Join(feePayer, evmDenom), + ) + if err != nil { + continue + } - estimates[i] = blockstm.MultiLocations{ - authStore: {accKey}, - bankStore: {balanceKey}, + estimates[i] = blockstm.MultiLocations{ + authStore: {accKey}, + bankStore: {balanceKey}, + } } } - return estimates + blockSize := len(txs) + chunk := (blockSize + workers - 1) / workers + var wg sync.WaitGroup + for i := 0; i < blockSize; i += chunk { + start := i + end := min(i+chunk, blockSize) + wg.Add(1) + go func() { + defer wg.Done() + job(start, end) + }() + } + wg.Wait() + + return memTxs, estimates } diff --git a/go.mod b/go.mod index 4724128218..3c0f63db35 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/cosmos/ibc-go/modules/capability v1.0.0 github.com/cosmos/ibc-go/v8 v8.1.0 github.com/cosmos/rosetta v0.50.3-1 - github.com/crypto-org-chain/go-block-stm v0.0.0-20240911081142-92839e79a3ae + github.com/crypto-org-chain/go-block-stm v0.0.0-20240912024944-1cd89976aa5e github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/ethereum/go-ethereum v1.10.26 github.com/gogo/protobuf v1.3.2 diff --git a/go.sum b/go.sum index 3f98d733d4..5a1a9c20dc 100644 --- a/go.sum +++ b/go.sum @@ -419,8 +419,8 @@ github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240911084450-6870ba130be2 github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240911084450-6870ba130be2/go.mod h1:gjE3DZe4t/+VeIk6CmrouyqiuDbZ7QOVDDq3nLqBTpg= github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240911084450-6870ba130be2 h1:mxlOSCru7YgmX055rrlkCSUu0D8lAqJ8Dnhp0yXCBuM= github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240911084450-6870ba130be2/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= -github.com/crypto-org-chain/go-block-stm v0.0.0-20240911081142-92839e79a3ae h1:gakWYsVubWX8P9NpxaPnvg0UJYfIZigfko5WN57t7OA= -github.com/crypto-org-chain/go-block-stm v0.0.0-20240911081142-92839e79a3ae/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= +github.com/crypto-org-chain/go-block-stm v0.0.0-20240912024944-1cd89976aa5e h1:FFpE6+Y4o5GxkeGwUcETM6amgohh7msWvWf1MDqueVc= +github.com/crypto-org-chain/go-block-stm v0.0.0-20240912024944-1cd89976aa5e/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240425065928-ebb09502e7a7 h1:V43F3JFcqG4MUThf9W/DytnPblpR6CcaLBw2Wx6zTgE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240425065928-ebb09502e7a7/go.mod h1:+a8pUj1tOyJ2RinsNQD4326YS+leSoKGiG/uVVb0x6Y= github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= diff --git a/gomod2nix.toml b/gomod2nix.toml index 3c1044e75d..aafb878fe2 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -203,8 +203,8 @@ schema = 3 version = "v0.0.24" hash = "sha256-4vUukHONOjNn0qfQr4esK6TWfPWsIp+rbdz65og84lw=" [mod."github.com/crypto-org-chain/go-block-stm"] - version = "v0.0.0-20240911081142-92839e79a3ae" - hash = "sha256-8MhSeC5BB5BwOet3k3Rfua0TBeBATtLSwaW6s5WpYCM=" + version = "v0.0.0-20240912024944-1cd89976aa5e" + hash = "sha256-rY8W4dSciOXT29MCySbH5sw0Fp15IQVgBK9QlMX0JeU=" [mod."github.com/danieljoos/wincred"] version = "v1.2.0" hash = "sha256-LHcvTJCc8++bFndbd8ZgMSTe4L5h2C4rN+cSWHCz54Y=" From dbc7eb41488cf6f7f3dd75ca9d71dbd4d8986d73 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 13 Sep 2024 18:02:16 +0800 Subject: [PATCH 021/210] Problem: tx evm raw doesn't work under offline (#524) add evm-denom flag --- CHANGELOG.md | 1 + x/evm/client/cli/tx.go | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3046b3f4b0..cb625018e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (block-stm) [#510](https://github.com/crypto-org-chain/ethermint/pull/510) Include a fix to avoid nondeterministic account set when stm workers execute in parallel. * (rpc) [#521](https://github.com/crypto-org-chain/ethermint/pull/521) Align hash and miner in subscribe newHeads with eth_getBlockByNumber. * (rpc) [#516](https://github.com/crypto-org-chain/ethermint/pull/516) Avoid method eth_chainId crashed due to nil pointer on IsEIP155 check. +* (cli) [#524](https://github.com/crypto-org-chain/ethermint/pull/524) Allow tx evm raw run for generate only when offline with evm-denom flag. ### Improvements diff --git a/x/evm/client/cli/tx.go b/x/evm/client/cli/tx.go index 3e14f9547c..08144f8b94 100644 --- a/x/evm/client/cli/tx.go +++ b/x/evm/client/cli/tx.go @@ -33,6 +33,8 @@ import ( "github.com/evmos/ethermint/x/evm/types" ) +const FlagEvmDenom = "evm-denom" + // GetTxCmd returns the transaction commands for this module func GetTxCmd() *cobra.Command { cmd := &cobra.Command{ @@ -77,12 +79,20 @@ func NewRawTxCmd() *cobra.Command { return err } - rsp, err := rpctypes.NewQueryClient(clientCtx).Params(cmd.Context(), &types.QueryParamsRequest{}) + evmDenom, err := cmd.Flags().GetString(FlagEvmDenom) if err != nil { return err } - tx, err := msg.BuildTx(clientCtx.TxConfig.NewTxBuilder(), rsp.Params.EvmDenom) + if evmDenom == "" { + rsp, err := rpctypes.NewQueryClient(clientCtx).Params(cmd.Context(), &types.QueryParamsRequest{}) + if err != nil { + return err + } + evmDenom = rsp.Params.EvmDenom + } + + tx, err := msg.BuildTx(clientCtx.TxConfig.NewTxBuilder(), evmDenom) if err != nil { return err } @@ -129,5 +139,6 @@ func NewRawTxCmd() *cobra.Command { } flags.AddTxFlagsToCmd(cmd) + cmd.Flags().String(FlagEvmDenom, "", "defines the EVM denomination which could be used for generate only when offline") return cmd } From 7e3076202e6db0aada5b01c667a358d4976af6e4 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Mon, 23 Sep 2024 09:11:04 +0800 Subject: [PATCH 022/210] Problem: get unnecessary block result when only need header (#526) --- CHANGELOG.md | 1 + rpc/backend/blocks.go | 37 ++++++++++++++++---------------- rpc/backend/blocks_test.go | 44 +++++++++++++++----------------------- rpc/backend/client_test.go | 19 ++++++++++++++++ rpc/backend/utils.go | 7 +++--- 5 files changed, 60 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb625018e5..7e501763ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -89,6 +89,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (ante) [#504](https://github.com/crypto-org-chain/ethermint/pull/504) Optimize AnteHandle method to skip checks if disabledMsgs is empty. * [#517](https://github.com/crypto-org-chain/ethermint/pull/517) Add check for integer overflow to ensure safe conversion. * [#522](https://github.com/crypto-org-chain/ethermint/pull/522) block-stm executor support optional pre-estimations. +* [#526](https://github.com/crypto-org-chain/ethermint/pull/526) Avoid unnecessary block result in header related api call. ## v0.21.x-cronos diff --git a/rpc/backend/blocks.go b/rpc/backend/blocks.go index 5d8365cd01..28ab754487 100644 --- a/rpc/backend/blocks.go +++ b/rpc/backend/blocks.go @@ -249,14 +249,15 @@ func (b *Backend) BlockNumberFromTendermint(blockNrOrHash rpctypes.BlockNumberOr // BlockNumberFromTendermintByHash returns the block height of given block hash func (b *Backend) BlockNumberFromTendermintByHash(blockHash common.Hash) (*big.Int, error) { - resBlock, err := b.TendermintBlockByHash(blockHash) + sc, ok := b.clientCtx.Client.(tmrpcclient.SignClient) + if !ok { + b.logger.Error("invalid rpc client") + } + resHeader, err := sc.HeaderByHash(b.ctx, blockHash.Bytes()) if err != nil { return nil, err } - if resBlock == nil { - return nil, errors.Errorf("block not found for hash %s", blockHash.Hex()) - } - return big.NewInt(resBlock.Block.Height), nil + return big.NewInt(resHeader.Header.Height), nil } // EthMsgsFromTendermintBlock returns all real MsgEthereumTxs from a @@ -325,7 +326,7 @@ func (b *Backend) HeaderByNumber(blockNum rpctypes.BlockNumber) (*ethtypes.Heade // handle the error for pruned node. b.logger.Error("failed to fetch Base Fee from prunned block. Check node prunning configuration", "height", resBlock.Block.Height, "error", err) } - validator, err := b.getValidatorAccount(resBlock) + validator, err := b.getValidatorAccount(&resBlock.Block.Header) if err != nil { return nil, err } @@ -335,34 +336,34 @@ func (b *Backend) HeaderByNumber(blockNum rpctypes.BlockNumber) (*ethtypes.Heade // HeaderByHash returns the block header identified by hash. func (b *Backend) HeaderByHash(blockHash common.Hash) (*ethtypes.Header, error) { - resBlock, err := b.TendermintBlockByHash(blockHash) + sc, ok := b.clientCtx.Client.(tmrpcclient.SignClient) + if !ok { + b.logger.Error("invalid rpc client") + } + resHeader, err := sc.HeaderByHash(b.ctx, blockHash.Bytes()) if err != nil { return nil, err } - if resBlock == nil { - return nil, errors.Errorf("block not found for hash %s", blockHash.Hex()) - } - - blockRes, err := b.TendermintBlockResultByNumber(&resBlock.Block.Height) + blockRes, err := b.TendermintBlockResultByNumber(&resHeader.Header.Height) if err != nil { - return nil, errors.Errorf("block result not found for height %d", resBlock.Block.Height) + return nil, errors.Errorf("block result not found for height %d", resHeader.Header.Height) } bloom, err := b.BlockBloom(blockRes) if err != nil { - b.logger.Debug("HeaderByHash BlockBloom failed", "height", resBlock.Block.Height) + b.logger.Debug("HeaderByHash BlockBloom failed", "height", resHeader.Header.Height) } baseFee, err := b.BaseFee(blockRes) if err != nil { // handle the error for pruned node. - b.logger.Error("failed to fetch Base Fee from prunned block. Check node prunning configuration", "height", resBlock.Block.Height, "error", err) + b.logger.Error("failed to fetch Base Fee from prunned block. Check node prunning configuration", "height", resHeader.Header.Height, "error", err) } - validator, err := b.getValidatorAccount(resBlock) + validator, err := b.getValidatorAccount(resHeader.Header) if err != nil { return nil, err } - ethHeader := rpctypes.EthHeaderFromTendermint(resBlock.Block.Header, bloom, baseFee, validator) + ethHeader := rpctypes.EthHeaderFromTendermint(*resHeader.Header, bloom, baseFee, validator) return ethHeader, nil } @@ -521,7 +522,7 @@ func (b *Backend) EthBlockFromTendermintBlock( // handle error for pruned node and log b.logger.Error("failed to fetch Base Fee from prunned block. Check node prunning configuration", "height", height, "error", err) } - validator, err := b.getValidatorAccount(resBlock) + validator, err := b.getValidatorAccount(&resBlock.Block.Header) if err != nil { return nil, err } diff --git a/rpc/backend/blocks_test.go b/rpc/backend/blocks_test.go index 5c646a795b..151b45b77d 100644 --- a/rpc/backend/blocks_test.go +++ b/rpc/backend/blocks_test.go @@ -326,7 +326,6 @@ func (suite *BackendTestSuite) TestGetBlockByHash() { height := int64(1) client := suite.backend.clientCtx.Client.(*mocks.Client) resBlock, _ = RegisterBlockByHash(client, hash, txBz) - blockRes, _ = RegisterBlockResults(client, height) RegisterConsensusParams(client, height) @@ -674,7 +673,7 @@ func (suite *BackendTestSuite) TestTendermintBlockResultByNumber() { } func (suite *BackendTestSuite) TestBlockNumberFromTendermint() { - var resBlock *tmrpctypes.ResultBlock + var resHeader *tmrpctypes.ResultHeader _, bz := suite.buildEthereumTx() block := tmtypes.MakeBlock(1, []tmtypes.Tx{bz}, nil, nil) @@ -701,7 +700,7 @@ func (suite *BackendTestSuite) TestBlockNumberFromTendermint() { &blockHash, func(hash *common.Hash) { client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlockByHashError(client, *hash, bz) + RegisterHeaderByHashError(client, *hash, bz) }, false, }, @@ -711,7 +710,7 @@ func (suite *BackendTestSuite) TestBlockNumberFromTendermint() { &blockHash, func(hash *common.Hash) { client := suite.backend.clientCtx.Client.(*mocks.Client) - resBlock, _ = RegisterBlockByHash(client, *hash, bz) + resHeader, _ = RegisterHeaderByHash(client, *hash, bz) }, true, }, @@ -740,7 +739,7 @@ func (suite *BackendTestSuite) TestBlockNumberFromTendermint() { if tc.hash == nil { suite.Require().Equal(*tc.blockNum, blockNum) } else { - expHeight := ethrpc.NewBlockNumber(big.NewInt(resBlock.Block.Height)) + expHeight := ethrpc.NewBlockNumber(big.NewInt(resHeader.Header.Height)) suite.Require().Equal(expHeight, blockNum) } } else { @@ -751,7 +750,7 @@ func (suite *BackendTestSuite) TestBlockNumberFromTendermint() { } func (suite *BackendTestSuite) TestBlockNumberFromTendermintByHash() { - var resBlock *tmrpctypes.ResultBlock + var resHeader *tmrpctypes.ResultHeader _, bz := suite.buildEthereumTx() block := tmtypes.MakeBlock(1, []tmtypes.Tx{bz}, nil, nil) @@ -768,7 +767,7 @@ func (suite *BackendTestSuite) TestBlockNumberFromTendermintByHash() { common.BytesToHash(block.Hash()), func(hash common.Hash) { client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlockByHashError(client, hash, bz) + RegisterHeaderByHashError(client, hash, bz) }, false, }, @@ -777,7 +776,7 @@ func (suite *BackendTestSuite) TestBlockNumberFromTendermintByHash() { common.BytesToHash(emptyBlock.Hash()), func(hash common.Hash) { client := suite.backend.clientCtx.Client.(*mocks.Client) - resBlock, _ = RegisterBlockByHash(client, hash, bz) + resHeader, _ = RegisterHeaderByHash(client, hash, bz) }, true, }, @@ -786,7 +785,7 @@ func (suite *BackendTestSuite) TestBlockNumberFromTendermintByHash() { common.BytesToHash(block.Hash()), func(hash common.Hash) { client := suite.backend.clientCtx.Client.(*mocks.Client) - resBlock, _ = RegisterBlockByHash(client, hash, bz) + resHeader, _ = RegisterHeaderByHash(client, hash, bz) }, true, }, @@ -798,7 +797,7 @@ func (suite *BackendTestSuite) TestBlockNumberFromTendermintByHash() { tc.registerMock(tc.hash) blockNum, err := suite.backend.BlockNumberFromTendermintByHash(tc.hash) if tc.expPass { - expHeight := big.NewInt(resBlock.Block.Height) + expHeight := big.NewInt(resHeader.Header.Height) suite.Require().NoError(err) suite.Require().Equal(expHeight, blockNum) } else { @@ -1298,7 +1297,7 @@ func (suite *BackendTestSuite) TestHeaderByNumber() { } func (suite *BackendTestSuite) TestHeaderByHash() { - var expResultBlock *tmrpctypes.ResultBlock + var resHeader *tmrpctypes.ResultHeader _, bz := suite.buildEthereumTx() block := tmtypes.MakeBlock(1, []tmtypes.Tx{bz}, nil, nil) @@ -1319,17 +1318,7 @@ func (suite *BackendTestSuite) TestHeaderByHash() { sdkmath.NewInt(1).BigInt(), func(hash common.Hash, baseFee sdkmath.Int) { client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlockByHashError(client, hash, bz) - }, - false, - }, - { - "fail - block not found for height", - common.BytesToHash(block.Hash()), - sdkmath.NewInt(1).BigInt(), - func(hash common.Hash, baseFee sdkmath.Int) { - client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlockByHashNotFound(client, hash, bz) + RegisterHeaderByHashError(client, hash, bz) }, false, }, @@ -1340,8 +1329,9 @@ func (suite *BackendTestSuite) TestHeaderByHash() { func(hash common.Hash, baseFee sdkmath.Int) { height := int64(1) client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlockByHash(client, hash, bz) + RegisterHeaderByHash(client, hash, bz) RegisterBlockResultsError(client, height) + RegisterHeaderByHashError(client, hash, bz) }, false, }, @@ -1352,7 +1342,7 @@ func (suite *BackendTestSuite) TestHeaderByHash() { func(hash common.Hash, baseFee sdkmath.Int) { height := int64(1) client := suite.backend.clientCtx.Client.(*mocks.Client) - expResultBlock, _ = RegisterBlockByHash(client, hash, bz) + resHeader, _ = RegisterHeaderByHash(client, hash, bz) RegisterBlockResults(client, height) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) @@ -1368,7 +1358,7 @@ func (suite *BackendTestSuite) TestHeaderByHash() { func(hash common.Hash, baseFee sdkmath.Int) { height := int64(1) client := suite.backend.clientCtx.Client.(*mocks.Client) - expResultBlock, _ = RegisterBlockByHash(client, hash, nil) + resHeader, _ = RegisterHeaderByHash(client, hash, bz) RegisterBlockResults(client, height) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) @@ -1384,7 +1374,7 @@ func (suite *BackendTestSuite) TestHeaderByHash() { func(hash common.Hash, baseFee sdkmath.Int) { height := int64(1) client := suite.backend.clientCtx.Client.(*mocks.Client) - expResultBlock, _ = RegisterBlockByHash(client, hash, bz) + resHeader, _ = RegisterHeaderByHash(client, hash, bz) RegisterBlockResults(client, height) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) @@ -1402,7 +1392,7 @@ func (suite *BackendTestSuite) TestHeaderByHash() { header, err := suite.backend.HeaderByHash(tc.hash) if tc.expPass { - expHeader := ethrpc.EthHeaderFromTendermint(expResultBlock.Block.Header, ethtypes.Bloom{}, tc.baseFee, validator) + expHeader := ethrpc.EthHeaderFromTendermint(*resHeader.Header, ethtypes.Bloom{}, tc.baseFee, validator) suite.Require().NoError(err) suite.Require().Equal(expHeader, header) } else { diff --git a/rpc/backend/client_test.go b/rpc/backend/client_test.go index a48df59a57..f4708137ef 100644 --- a/rpc/backend/client_test.go +++ b/rpc/backend/client_test.go @@ -270,6 +270,25 @@ func RegisterBlockByHashNotFound(client *mocks.Client, hash common.Hash, tx []by Return(nil, nil) } +// HeaderByHash +func RegisterHeaderByHash( + client *mocks.Client, + hash common.Hash, + tx []byte, +) (*tmrpctypes.ResultHeader, error) { + block := types.MakeBlock(1, []types.Tx{tx}, nil, nil) + resHeader := &tmrpctypes.ResultHeader{Header: &block.Header} + + client.On("HeaderByHash", rpc.ContextWithHeight(1), bytes.HexBytes(hash.Bytes())). + Return(resHeader, nil) + return resHeader, nil +} + +func RegisterHeaderByHashError(client *mocks.Client, hash common.Hash, tx []byte) { + client.On("HeaderByHash", rpc.ContextWithHeight(1), bytes.HexBytes(hash.Bytes())). + Return(nil, errortypes.ErrInvalidRequest) +} + func RegisterABCIQueryWithOptions(client *mocks.Client, height int64, path string, data bytes.HexBytes, opts tmrpcclient.ABCIQueryOptions) { client.On("ABCIQueryWithOptions", context.Background(), path, data, opts). Return(&tmrpctypes.ResultABCIQuery{ diff --git a/rpc/backend/utils.go b/rpc/backend/utils.go index 33a44a775b..db5b3b6f4b 100644 --- a/rpc/backend/utils.go +++ b/rpc/backend/utils.go @@ -36,6 +36,7 @@ import ( abci "github.com/cometbft/cometbft/abci/types" tmrpctypes "github.com/cometbft/cometbft/rpc/core/types" + cmttypes "github.com/cometbft/cometbft/types" "github.com/cometbft/cometbft/proto/tendermint/crypto" "github.com/evmos/ethermint/rpc/types" @@ -326,11 +327,11 @@ func GetHexProofs(proof *crypto.ProofOps) []string { return proofs } -func (b *Backend) getValidatorAccount(resBlock *tmrpctypes.ResultBlock) (sdk.AccAddress, error) { +func (b *Backend) getValidatorAccount(header *cmttypes.Header) (sdk.AccAddress, error) { res, err := b.queryClient.ValidatorAccount( - types.ContextWithHeight(resBlock.Block.Header.Height), + types.ContextWithHeight(header.Height), &evmtypes.QueryValidatorAccountRequest{ - ConsAddress: sdk.ConsAddress(resBlock.Block.Header.ProposerAddress).String(), + ConsAddress: sdk.ConsAddress(header.ProposerAddress).String(), }, ) if err != nil { From bcac9e2de9d1c874afe049fe3040ae08311c56ee Mon Sep 17 00:00:00 2001 From: yihuang Date: Tue, 24 Sep 2024 16:31:02 +0800 Subject: [PATCH 023/210] Problem: trace block gas refund change not committed (#527) * Problem: trace block not accurate for dynamic fee transaction fix changelog temp * Update x/evm/keeper/state_transition.go Signed-off-by: yihuang * avoid mutate config tracer * fix test * adjust test * more test * resolve --------- Signed-off-by: yihuang Co-authored-by: mmsqe --- CHANGELOG.md | 1 + x/evm/keeper/config.go | 13 ++++++---- x/evm/keeper/grpc_query_test.go | 26 ++++++++++++++++++++ x/evm/keeper/state_transition.go | 42 +++++++++++++++++++------------- x/evm/keeper/statedb.go | 14 +++++++++++ 5 files changed, 74 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e501763ac..dde589e6cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#521](https://github.com/crypto-org-chain/ethermint/pull/521) Align hash and miner in subscribe newHeads with eth_getBlockByNumber. * (rpc) [#516](https://github.com/crypto-org-chain/ethermint/pull/516) Avoid method eth_chainId crashed due to nil pointer on IsEIP155 check. * (cli) [#524](https://github.com/crypto-org-chain/ethermint/pull/524) Allow tx evm raw run for generate only when offline with evm-denom flag. +* (rpc) [#527](https://github.com/crypto-org-chain/ethermint/pull/527) Fix balance consistency between trace-block and state machine. ### Improvements diff --git a/x/evm/keeper/config.go b/x/evm/keeper/config.go index ef97b58f80..fb9f1fc6d3 100644 --- a/x/evm/keeper/config.go +++ b/x/evm/keeper/config.go @@ -118,6 +118,13 @@ func (k *Keeper) RemoveParamsCache(ctx sdk.Context) { ctx.ObjectStore(k.objectKey).Delete(types.KeyPrefixObjectParams) } +func (cfg EVMConfig) GetTracer() vm.EVMLogger { + if _, ok := cfg.Tracer.(*types.NoOpTracer); ok { + return nil + } + return cfg.Tracer +} + // EVMConfig creates the EVMConfig based on current state func (k *Keeper) EVMConfig(ctx sdk.Context, chainID *big.Int, txHash common.Hash) (*EVMConfig, error) { blockCfg, err := k.EVMBlockConfig(ctx, chainID) @@ -155,12 +162,8 @@ func (k Keeper) VMConfig(ctx sdk.Context, cfg *EVMConfig) vm.Config { noBaseFee = cfg.FeeMarketParams.NoBaseFee } - if _, ok := cfg.Tracer.(*types.NoOpTracer); ok { - cfg.Tracer = nil - } - return vm.Config{ - Tracer: cfg.Tracer, + Tracer: cfg.GetTracer(), NoBaseFee: noBaseFee, ExtraEips: cfg.Params.EIPs(), } diff --git a/x/evm/keeper/grpc_query_test.go b/x/evm/keeper/grpc_query_test.go index 5ce91aa026..fcf5b06014 100644 --- a/x/evm/keeper/grpc_query_test.go +++ b/x/evm/keeper/grpc_query_test.go @@ -899,6 +899,20 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceTx() { } predecessors = []*types.MsgEthereumTx{} }, + expPass: false, + enableFeemarket: true, + }, + { + msg: "default trace with enableFeemarket and sufficient balance", + malleate: func() { + suite.App.EvmKeeper.SetBalance(suite.Ctx, suite.Address, big.NewInt(1000000000000000000), types.DefaultEVMDenom) + traceConfig = &types.TraceConfig{ + DisableStack: true, + DisableStorage: true, + EnableMemory: false, + } + predecessors = []*types.MsgEthereumTx{} + }, expPass: true, traceResponse: "{\"gas\":34828,\"failed\":false,\"returnValue\":\"0000000000000000000000000000000000000000000000000000000000000001\",\"structLogs\":[{\"pc\":0,\"op\":\"PUSH1\",\"gas\":", enableFeemarket: true, @@ -911,6 +925,18 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceTx() { } predecessors = []*types.MsgEthereumTx{} }, + expPass: false, + enableFeemarket: true, + }, + { + msg: "javascript tracer with enableFeemarket and sufficient balance", + malleate: func() { + suite.App.EvmKeeper.SetBalance(suite.Ctx, suite.Address, big.NewInt(1000000000000000000), types.DefaultEVMDenom) + traceConfig = &types.TraceConfig{ + Tracer: "{data: [], fault: function(log) {}, step: function(log) { if(log.op.toString() == \"CALL\") this.data.push(log.stack.peek(0)); }, result: function() { return this.data; }}", + } + predecessors = []*types.MsgEthereumTx{} + }, expPass: true, traceResponse: "[]", enableFeemarket: true, diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index 02e534f822..d8eaccc49c 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -322,33 +322,41 @@ func (k *Keeper) ApplyMessageWithConfig( return nil, errorsmod.Wrap(types.ErrCallDisabled, "failed to call contract") } - stateDB := statedb.NewWithParams(ctx, k, cfg.TxConfig, cfg.Params.EvmDenom) - var evm *vm.EVM - if cfg.Overrides != nil { - if err := cfg.Overrides.Apply(stateDB); err != nil { - return nil, errorsmod.Wrap(err, "failed to apply state override") - } - } - evm = k.NewEVM(ctx, msg, cfg, stateDB) - leftoverGas := msg.GasLimit - sender := vm.AccountRef(msg.From) // Allow the tracer captures the tx level events, mainly the gas consumption. - vmCfg := evm.Config - if vmCfg.Tracer != nil { + leftoverGas := msg.GasLimit + senderAddr := sdk.AccAddress(msg.From.Bytes()) + tracer := cfg.GetTracer() + if tracer != nil { if cfg.DebugTrace { // msg.GasPrice should have been set to effective gas price - stateDB.SubBalance(sender.Address(), new(big.Int).Mul(msg.GasPrice, new(big.Int).SetUint64(msg.GasLimit))) - stateDB.SetNonce(sender.Address(), stateDB.GetNonce(sender.Address())+1) + amount := new(big.Int).Mul(msg.GasPrice, new(big.Int).SetUint64(msg.GasLimit)) + if err := k.SubBalance(ctx, senderAddr, sdk.NewCoins(sdk.NewCoin(cfg.Params.EvmDenom, sdkmath.NewIntFromBigInt(amount)))); err != nil { + return nil, errorsmod.Wrap(err, "failed to subtract balance") + } + if err := k.incrNonce(ctx, senderAddr); err != nil { + return nil, errorsmod.Wrap(err, "failed to increment nonce") + } } - vmCfg.Tracer.CaptureTxStart(leftoverGas) + tracer.CaptureTxStart(leftoverGas) defer func() { if cfg.DebugTrace { - stateDB.AddBalance(sender.Address(), new(big.Int).Mul(msg.GasPrice, new(big.Int).SetUint64(leftoverGas))) + amount := new(big.Int).Mul(msg.GasPrice, new(big.Int).SetUint64(leftoverGas)) + _ = k.AddBalance(ctx, senderAddr, sdk.NewCoins(sdk.NewCoin(cfg.Params.EvmDenom, sdkmath.NewIntFromBigInt(amount)))) } - vmCfg.Tracer.CaptureTxEnd(leftoverGas) + tracer.CaptureTxEnd(leftoverGas) }() } + stateDB := statedb.NewWithParams(ctx, k, cfg.TxConfig, cfg.Params.EvmDenom) + var evm *vm.EVM + if cfg.Overrides != nil { + if err := cfg.Overrides.Apply(stateDB); err != nil { + return nil, errorsmod.Wrap(err, "failed to apply state override") + } + } + evm = k.NewEVM(ctx, msg, cfg, stateDB) + sender := vm.AccountRef(msg.From) + rules := cfg.Rules contractCreation := msg.To == nil intrinsicGas, err := k.GetEthIntrinsicGas(msg, rules, contractCreation) diff --git a/x/evm/keeper/statedb.go b/x/evm/keeper/statedb.go index e718de0148..e4e6f0d9ae 100644 --- a/x/evm/keeper/statedb.go +++ b/x/evm/keeper/statedb.go @@ -138,6 +138,20 @@ func (k *Keeper) SetAccount(ctx sdk.Context, addr common.Address, account stated return nil } +func (k *Keeper) incrNonce(ctx sdk.Context, addr sdk.AccAddress) error { + acct := k.accountKeeper.GetAccount(ctx, addr) + if acct == nil { + acct = k.accountKeeper.NewAccountWithAddress(ctx, addr) + } + + if err := acct.SetSequence(acct.GetSequence() + 1); err != nil { + return err + } + + k.accountKeeper.SetAccount(ctx, acct) + return nil +} + // SetState update contract storage, delete if value is empty. func (k *Keeper) SetState(ctx sdk.Context, addr common.Address, key common.Hash, value []byte) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.AddressStoragePrefix(addr)) From f2a562ba9b9f6dc51ec74977debc0c374c43d686 Mon Sep 17 00:00:00 2001 From: yihuang Date: Wed, 25 Sep 2024 10:41:03 +0800 Subject: [PATCH 024/210] Problem: db is double closed when shutdown (#530) * Problem: db is double closed when shutdown * fix standAlone --- server/start.go | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/server/start.go b/server/start.go index d96a5f0bc7..2ec776339d 100644 --- a/server/start.go +++ b/server/start.go @@ -244,12 +244,6 @@ func startStandAlone(svrCtx *server.Context, opts StartOptions) error { return err } - defer func() { - if err := db.Close(); err != nil { - svrCtx.Logger.Error("error closing db", "error", err.Error()) - } - }() - traceWriterFile := svrCtx.Viper.GetString(srvflags.TraceStore) traceWriter, err := openTraceWriter(traceWriterFile) if err != nil { @@ -317,12 +311,6 @@ func startInProcess(svrCtx *server.Context, clientCtx client.Context, opts Start return err } - defer func() { - if err := db.Close(); err != nil { - logger.With("error", err).Error("error closing db") - } - }() - traceWriterFile := svrCtx.Viper.GetString(srvflags.TraceStore) traceWriter, err := openTraceWriter(traceWriterFile) if err != nil { From 975533377be35e4c2b755a7782041876a2fe8bfa Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 25 Sep 2024 15:53:31 +0800 Subject: [PATCH 025/210] Problem: no time in Transaction (#531) * Problem: no time in Transaction * update deps --- go.mod | 2 +- go.sum | 4 +- gomod2nix.toml | 4 +- rpc/backend/blocks_test.go | 10 ++++- rpc/backend/evm_query_client_test.go | 55 ++++++++++++++++++++++++++-- 5 files changed, 66 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 3c0f63db35..a01f282b91 100644 --- a/go.mod +++ b/go.mod @@ -254,7 +254,7 @@ replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 github.com/cockroachdb/pebble => github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 // release/v1.11.x - github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240425065928-ebb09502e7a7 + github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240925072350-e05e994a492f // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0 diff --git a/go.sum b/go.sum index 5a1a9c20dc..1cc14f5b31 100644 --- a/go.sum +++ b/go.sum @@ -421,8 +421,8 @@ github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240911084450-6870ba130be2 h github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240911084450-6870ba130be2/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= github.com/crypto-org-chain/go-block-stm v0.0.0-20240912024944-1cd89976aa5e h1:FFpE6+Y4o5GxkeGwUcETM6amgohh7msWvWf1MDqueVc= github.com/crypto-org-chain/go-block-stm v0.0.0-20240912024944-1cd89976aa5e/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= -github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240425065928-ebb09502e7a7 h1:V43F3JFcqG4MUThf9W/DytnPblpR6CcaLBw2Wx6zTgE= -github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240425065928-ebb09502e7a7/go.mod h1:+a8pUj1tOyJ2RinsNQD4326YS+leSoKGiG/uVVb0x6Y= +github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240925072350-e05e994a492f h1:jR3nEDZMhGtZODqWFVbaTJ2X26k5r7nkiRk39i+SJ10= +github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240925072350-e05e994a492f/go.mod h1:+a8pUj1tOyJ2RinsNQD4326YS+leSoKGiG/uVVb0x6Y= github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= github.com/danieljoos/wincred v1.2.0/go.mod h1:FzQLLMKBFdvu+osBrnFODiv32YGwCfx0SkRa/eYHgec= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/gomod2nix.toml b/gomod2nix.toml index aafb878fe2..21f1e828e2 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -248,8 +248,8 @@ schema = 3 version = "v1.6.1" hash = "sha256-zOpoaepCfPLmU9iQji/Ait+SVEHI9eF3rwtW0h/8lho=" [mod."github.com/ethereum/go-ethereum"] - version = "v1.10.20-0.20240425065928-ebb09502e7a7" - hash = "sha256-lE4G5FaRb3MVi9FFVn+WlwsSTOB4SbjmVboKyQ5yB0A=" + version = "v1.10.20-0.20240925072350-e05e994a492f" + hash = "sha256-lDIqRLUrXYCb9mmFBY/+WW+ee69+IkxOgqjHVyo4ij0=" replaced = "github.com/crypto-org-chain/go-ethereum" [mod."github.com/fatih/color"] version = "v1.16.0" diff --git a/rpc/backend/blocks_test.go b/rpc/backend/blocks_test.go index 151b45b77d..cf36189793 100644 --- a/rpc/backend/blocks_test.go +++ b/rpc/backend/blocks_test.go @@ -1,6 +1,7 @@ package backend import ( + "encoding/json" "fmt" "math/big" @@ -1177,7 +1178,14 @@ func (suite *BackendTestSuite) TestEthMsgsFromTendermintBlock() { suite.SetupTest() // reset test and queries msgs := suite.backend.EthMsgsFromTendermintBlock(tc.resBlock, tc.blockRes) - suite.Require().Equal(tc.expMsgs, msgs) + suite.Require().Equal(len(tc.expMsgs), len(msgs)) + for i, expMsg := range tc.expMsgs { + expBytes, err := json.Marshal(expMsg) + suite.Require().Nil(err) + bytes, err := json.Marshal(msgs[i]) + suite.Require().Nil(err) + suite.Require().Equal(expBytes, bytes) + } }) } } diff --git a/rpc/backend/evm_query_client_test.go b/rpc/backend/evm_query_client_test.go index f052d1442b..0b73443436 100644 --- a/rpc/backend/evm_query_client_test.go +++ b/rpc/backend/evm_query_client_test.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "slices" "strconv" "testing" @@ -35,13 +36,48 @@ var _ evmtypes.QueryClient = &mocks.EVMQueryClient{} func RegisterTraceTransactionWithPredecessors(queryClient *mocks.EVMQueryClient, msgEthTx *evmtypes.MsgEthereumTx, predecessors []*evmtypes.MsgEthereumTx) { data := []byte{0x7b, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x22, 0x7d} queryClient.On("TraceTx", rpc.ContextWithHeight(1), - &evmtypes.QueryTraceTxRequest{Msg: msgEthTx, BlockNumber: 1, Predecessors: predecessors, ChainId: 9000}). + mock.MatchedBy(func(req *evmtypes.QueryTraceTxRequest) bool { + if req.BlockNumber != 1 { + return false + } + bytes, _ := json.Marshal(msgEthTx) + bytes2, _ := json.Marshal(req.Msg) + if slices.Compare(bytes, bytes2) != 0 { + return false + } + if len(req.Predecessors) != len(predecessors) { + return false + } + bytes, _ = json.Marshal(req.Predecessors) + bytes2, _ = json.Marshal(predecessors) + if slices.Compare(bytes, bytes2) != 0 { + return false + } + if req.ChainId != 9000 { + return false + } + return true + })). Return(&evmtypes.QueryTraceTxResponse{Data: data}, nil) } func RegisterTraceTransaction(queryClient *mocks.EVMQueryClient, msgEthTx *evmtypes.MsgEthereumTx) { data := []byte{0x7b, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x22, 0x7d} - queryClient.On("TraceTx", rpc.ContextWithHeight(1), &evmtypes.QueryTraceTxRequest{Msg: msgEthTx, BlockNumber: 1, ChainId: 9000}). + queryClient.On("TraceTx", rpc.ContextWithHeight(1), + mock.MatchedBy(func(req *evmtypes.QueryTraceTxRequest) bool { + if req.BlockNumber != 1 { + return false + } + bytes, _ := json.Marshal(msgEthTx) + bytes2, _ := json.Marshal(req.Msg) + if slices.Compare(bytes, bytes2) != 0 { + return false + } + if req.ChainId != 9000 { + return false + } + return true + })). Return(&evmtypes.QueryTraceTxResponse{Data: data}, nil) } @@ -54,7 +90,20 @@ func RegisterTraceTransactionError(queryClient *mocks.EVMQueryClient, msgEthTx * func RegisterTraceBlock(queryClient *mocks.EVMQueryClient, txs []*evmtypes.MsgEthereumTx) { data := []byte{0x7b, 0x22, 0x74, 0x65, 0x73, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x22, 0x7d} queryClient.On("TraceBlock", rpc.ContextWithHeight(1), - &evmtypes.QueryTraceBlockRequest{Txs: txs, BlockNumber: 1, TraceConfig: &evmtypes.TraceConfig{}, ChainId: 9000}). + mock.MatchedBy(func(req *evmtypes.QueryTraceBlockRequest) bool { + if req.BlockNumber != 1 { + return false + } + bytes, _ := json.Marshal(txs) + bytes2, _ := json.Marshal(req.Txs) + if slices.Compare(bytes, bytes2) != 0 { + return false + } + if req.ChainId != 9000 { + return false + } + return true + })). Return(&evmtypes.QueryTraceBlockResponse{Data: data}, nil) } From 33e3cc6ed3656ff77514abf41f4d987640ba1f10 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 27 Sep 2024 14:10:36 +0800 Subject: [PATCH 026/210] Problem: multisig account failed on threshold encode after send tx (#532) * Problem: marshal error get overwritten by unexpected end of JSON input * test multisig * fix threshold encode * pass * update deps --- go.mod | 8 ++-- go.sum | 16 +++---- gomod2nix.toml | 12 ++--- tests/integration_tests/cosmoscli.py | 64 +++++++++++++++++++++++++-- tests/integration_tests/test_batch.py | 47 ++++++++++++++++++++ types/account_test.go | 21 ++++++++- 6 files changed, 146 insertions(+), 22 deletions(-) diff --git a/go.mod b/go.mod index a01f282b91..8b0153ff76 100644 --- a/go.mod +++ b/go.mod @@ -243,10 +243,10 @@ require ( replace ( // release/v0.50.x - cosmossdk.io/client/v2 => github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240911084450-6870ba130be2 - cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240911084450-6870ba130be2 - cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240911084450-6870ba130be2 - github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240911084450-6870ba130be2 + cosmossdk.io/client/v2 => github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240927054437-c2a1e0678f4b + cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240927054437-c2a1e0678f4b + cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240927054437-c2a1e0678f4b + github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240927054437-c2a1e0678f4b ) replace ( diff --git a/go.sum b/go.sum index 1cc14f5b31..9cb024ce7c 100644 --- a/go.sum +++ b/go.sum @@ -411,14 +411,14 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+FBB8cMkDE2j2VBVsbY+HCkPIu0YsJ/9bbGeQ= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240911084450-6870ba130be2 h1:4SoAvnxDaiIWcgm6XOmPDIdCf4/WNhNYLXGbij1eaA0= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240911084450-6870ba130be2/go.mod h1:Rb43DdB0i/rKcCN69Tg2X3+zA4WhJ7MC8K3a6Ezh38E= -github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240911084450-6870ba130be2 h1:5oGZtOUcauk9dtv+8BCfj2PEQyXEEEV+K3sP4OSvBmg= -github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240911084450-6870ba130be2/go.mod h1:W5sR4asmVDUhJpEmuXTUBkk/yEefKlXTjVWcNciVSR0= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240911084450-6870ba130be2 h1:CGh5I0L6IYhe0AJevb4vf5TE3ru+qAgMs437BlWCwo8= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240911084450-6870ba130be2/go.mod h1:gjE3DZe4t/+VeIk6CmrouyqiuDbZ7QOVDDq3nLqBTpg= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240911084450-6870ba130be2 h1:mxlOSCru7YgmX055rrlkCSUu0D8lAqJ8Dnhp0yXCBuM= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240911084450-6870ba130be2/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240927054437-c2a1e0678f4b h1:praAPgsPxIr/bcnUalyH6i+VG7o4tbNc5hhqJsUVBEU= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240927054437-c2a1e0678f4b/go.mod h1:Rb43DdB0i/rKcCN69Tg2X3+zA4WhJ7MC8K3a6Ezh38E= +github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240927054437-c2a1e0678f4b h1:fBJcK1IbrS/GKfPAKNFBdm2aY59Zuruop+8jf2dOFP4= +github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240927054437-c2a1e0678f4b/go.mod h1:W5sR4asmVDUhJpEmuXTUBkk/yEefKlXTjVWcNciVSR0= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240927054437-c2a1e0678f4b h1:DsLD76+ndjkh/yIXD3l9t0l+6H8ZLUK7d8q3Avi3gEo= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240927054437-c2a1e0678f4b/go.mod h1:gjE3DZe4t/+VeIk6CmrouyqiuDbZ7QOVDDq3nLqBTpg= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240927054437-c2a1e0678f4b h1:qwJufXFJ8dt+swi5p8SmTgLTr9ClHIO9GZh1XlO78mE= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240927054437-c2a1e0678f4b/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= github.com/crypto-org-chain/go-block-stm v0.0.0-20240912024944-1cd89976aa5e h1:FFpE6+Y4o5GxkeGwUcETM6amgohh7msWvWf1MDqueVc= github.com/crypto-org-chain/go-block-stm v0.0.0-20240912024944-1cd89976aa5e/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240925072350-e05e994a492f h1:jR3nEDZMhGtZODqWFVbaTJ2X26k5r7nkiRk39i+SJ10= diff --git a/gomod2nix.toml b/gomod2nix.toml index 21f1e828e2..ea99361b37 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -20,7 +20,7 @@ schema = 3 version = "v0.7.5" hash = "sha256-Nuw697sJr56kU3EU7DV1eYNkyI76psznIVqYAV6RfbQ=" [mod."cosmossdk.io/client/v2"] - version = "v2.0.0-20240911084450-6870ba130be2" + version = "v2.0.0-20240927054437-c2a1e0678f4b" hash = "sha256-60hmufv3Ml4Pv3zNwgn8eeqlEINOR6n9MKr2QHddoxo=" replaced = "github.com/crypto-org-chain/cosmos-sdk/client/v2" [mod."cosmossdk.io/collections"] @@ -42,7 +42,7 @@ schema = 3 version = "v1.3.0" hash = "sha256-EEFK43Cr0g0ndhQhkIKher0FqV3mvkmE9z0sP7uVSHg=" [mod."cosmossdk.io/store"] - version = "v0.0.0-20240911084450-6870ba130be2" + version = "v0.0.0-20240927054437-c2a1e0678f4b" hash = "sha256-Dm3sSZNJBcnBF33PULoTpK4rkNQbsZl0DfTqH1GPCQM=" replaced = "github.com/crypto-org-chain/cosmos-sdk/store" [mod."cosmossdk.io/tools/confix"] @@ -55,8 +55,8 @@ schema = 3 version = "v0.1.0" hash = "sha256-/gWvrqvy6bW90+NU66T+9QysYgvG1VbwfYJZ8tkqpeA=" [mod."cosmossdk.io/x/tx"] - version = "v0.0.0-20240911084450-6870ba130be2" - hash = "sha256-xT5IdapEx1h46ofBpxcBQfzGF2EntmC8xZl7aym/6xE=" + version = "v0.0.0-20240927054437-c2a1e0678f4b" + hash = "sha256-5HPcm3oCWAC9oKOGMP+PVMdCPF7ELVHmxpN1FasUgAY=" replaced = "github.com/crypto-org-chain/cosmos-sdk/x/tx" [mod."cosmossdk.io/x/upgrade"] version = "v0.1.1" @@ -163,8 +163,8 @@ schema = 3 version = "v1.0.0-beta.5" hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg=" [mod."github.com/cosmos/cosmos-sdk"] - version = "v0.50.6-0.20240911084450-6870ba130be2" - hash = "sha256-kl2sLe8vITIguRGtdeviDeP3R5JIbRg+eDsheGd4PqM=" + version = "v0.50.6-0.20240927054437-c2a1e0678f4b" + hash = "sha256-/5W/4n6getoWtj/MIotvel86dcJUD7jm9a4aDdDD95w=" replaced = "github.com/crypto-org-chain/cosmos-sdk" [mod."github.com/cosmos/go-bip39"] version = "v1.0.0" diff --git a/tests/integration_tests/cosmoscli.py b/tests/integration_tests/cosmoscli.py index e6435997c6..2b2e96c2eb 100644 --- a/tests/integration_tests/cosmoscli.py +++ b/tests/integration_tests/cosmoscli.py @@ -204,6 +204,18 @@ def account(self, addr): ) ) + def account_by_num(self, num): + return json.loads( + self.raw( + "q", + "auth", + "address-by-acc-num", + num, + output="json", + node=self.node_rpc, + ) + ) + def tx_search(self, events: str): "/tx_search" return json.loads( @@ -264,7 +276,7 @@ def staking_pool(self, bonded=True): def transfer(self, from_, to, coins, generate_only=False, **kwargs): kwargs.setdefault("gas_prices", DEFAULT_GAS_PRICE) - return json.loads( + rsp = json.loads( self.raw( "tx", "bank", @@ -278,6 +290,9 @@ def transfer(self, from_, to, coins, generate_only=False, **kwargs): **kwargs, ) ) + if not generate_only and rsp["code"] == 0: + rsp = self.event_query_tx_for(rsp["txhash"]) + return rsp def get_delegated_amount(self, which_addr): return json.loads( @@ -384,7 +399,7 @@ def withdraw_all_rewards(self, from_delegator): ) def make_multisig(self, name, signer1, signer2): - self.raw( + return self.raw( "keys", "add", name, @@ -498,9 +513,12 @@ def combine_batch_multisig_tx( def broadcast_tx(self, tx_file, **kwargs): kwargs.setdefault("broadcast_mode", "sync") kwargs.setdefault("output", "json") - return json.loads( + rsp = json.loads( self.raw("tx", "broadcast", tx_file, node=self.node_rpc, **kwargs) ) + if rsp["code"] == 0: + rsp = self.event_query_tx_for(rsp["txhash"]) + return rsp def broadcast_tx_json(self, tx, **kwargs): with tempfile.NamedTemporaryFile("w") as fp: @@ -857,3 +875,43 @@ def submit_gov_proposal(self, proposal, **kwargs): **(default_kwargs | kwargs), ) ) + + def query_grant(self, granter, grantee): + "query grant details by granter and grantee addresses" + res = json.loads( + self.raw( + "query", + "feegrant", + "grant", + granter, + grantee, + home=self.data_dir, + node=self.node_rpc, + output="json", + ) + ) + res = res.get("allowance") or res + return res + + def grant(self, granter, grantee, limit, **kwargs): + default_kwargs = self.get_default_kwargs() + rsp = json.loads( + self.raw( + "tx", + "feegrant", + "grant", + granter, + grantee, + "--period", + "60", + "--period-limit", + limit, + "-y", + home=self.data_dir, + stderr=subprocess.DEVNULL, + **(default_kwargs | kwargs), + ) + ) + if rsp["code"] == 0: + rsp = self.event_query_tx_for(rsp["txhash"]) + return rsp diff --git a/tests/integration_tests/test_batch.py b/tests/integration_tests/test_batch.py index ce006669a3..80181d45c0 100644 --- a/tests/integration_tests/test_batch.py +++ b/tests/integration_tests/test_batch.py @@ -72,3 +72,50 @@ def test_batch_tx(ethermint): txs = w3.eth.get_block(receipts[0].blockNumber, True).transactions for i in range(3): assert txs[i].transactionIndex == i + + +def test_multisig(ethermint, tmp_path): + cli = ethermint.cosmos_cli() + cli.make_multisig("multitest1", "signer1", "signer2") + multi_addr = cli.address("multitest1") + signer1 = cli.address("signer1") + denom = "aphoton" + amt = 2000000000000000000 + rsp = cli.transfer(signer1, multi_addr, f"{amt}{denom}") + assert rsp["code"] == 0, rsp["raw_log"] + assert cli.balance(multi_addr, denom=denom) == amt + + acc = cli.account(multi_addr)["account"]["value"]["base_account"] + res = cli.account_by_num(acc["account_number"]) + assert res["account_address"] == multi_addr + + m_txt = tmp_path / "m.txt" + p1_txt = tmp_path / "p1.txt" + p2_txt = tmp_path / "p2.txt" + tx_txt = tmp_path / "tx.txt" + amt = 1 + signer2 = cli.address("signer2") + multi_tx = cli.transfer( + multi_addr, + signer2, + f"{amt}{denom}", + generate_only=True, + ) + json.dump(multi_tx, m_txt.open("w")) + signature1 = cli.sign_multisig_tx(m_txt, multi_addr, "signer1") + json.dump(signature1, p1_txt.open("w")) + signature2 = cli.sign_multisig_tx(m_txt, multi_addr, "signer2") + json.dump(signature2, p2_txt.open("w")) + final_multi_tx = cli.combine_multisig_tx( + m_txt, + "multitest1", + p1_txt, + p2_txt, + ) + json.dump(final_multi_tx, tx_txt.open("w")) + rsp = cli.broadcast_tx(tx_txt) + assert rsp["code"] == 0, rsp["raw_log"] + assert ( + cli.account(multi_addr)["account"]["value"]["base_account"]["address"] + == acc["address"] + ) diff --git a/types/account_test.go b/types/account_test.go index 9afac71ebc..21458827a6 100644 --- a/types/account_test.go +++ b/types/account_test.go @@ -7,15 +7,18 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/stretchr/testify/suite" + "cosmossdk.io/x/tx/signing/aminojson" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - cryptocodec "github.com/evmos/ethermint/crypto/codec" "github.com/evmos/ethermint/crypto/ethsecp256k1" ethermintcodec "github.com/evmos/ethermint/encoding/codec" "github.com/evmos/ethermint/types" + ethermint "github.com/evmos/ethermint/types" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/types/known/anypb" ) func init() { @@ -56,3 +59,19 @@ func (suite *AccountTestSuite) TestAccountType() { suite.account.CodeHash = common.BytesToHash(crypto.Keccak256([]byte{1, 2, 3})).Hex() suite.Require().Equal(types.AccountTypeContract, suite.account.Type()) } + +func TestAminoMarshal(t *testing.T) { + registry := codectypes.NewInterfaceRegistry() + ethermint.RegisterInterfaces(registry) + value := "\n\x86\x02\n+tcrc1l8h07yxmwvc963tg08at7k9882d5ha4t34guxe\x12\xd2\x01\n)/cosmos.crypto.multisig.LegacyAminoPubKey\x12\xa4\x01\x08\x02\x12O\n(/ethermint.crypto.v1.ethsecp256k1.PubKey\x12#\n!\x03һ\xfb\x81\x1a\xb40E\xc0\x16\xf4\x17\xfba\xe5V\x10\xfd]\x8d\x19m\x08\xe0\xc6i\x83\xf9S\x9e\x1b\xd8\x12O\n(/ethermint.crypto.v1.ethsecp256k1.PubKey\x12#\n!\x02\x19]\xed\xa5\x84:\xae\xa2\x0fȌ\xb6MKR\xfc\xc5\xc8SD1\x0cSn\x83|P\xad'\xf7\xa8\x8d\x18\x12 \x02\x12B0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" + msg := &anypb.Any{ + TypeUrl: "/ethermint.types.v1.EthAccount", + Value: []byte(value), + } + aj := aminojson.NewEncoder(aminojson.EncoderOptions{ + FileResolver: registry, + Indent: " ", + }) + _, err := aj.Marshal(msg) + require.NoError(t, err) +} From 5acb559e9337c7c4cdacde458bad3788a37a13c7 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Mon, 30 Sep 2024 11:01:56 +0800 Subject: [PATCH 027/210] Problem: dependencies are outdated (#533) * Problem: dependencies are outdated * bump cometbft ibc * cleanup * fix build --- .github/workflows/lint.yml | 4 +- .github/workflows/test.yml | 4 +- CHANGELOG.md | 1 + app/app.go | 2 +- cmd/ethermintd/root.go | 2 - go.mod | 162 +++++------ go.sum | 359 ++++++++++++------------- gomod2nix.toml | 314 ++++++++++----------- nix/default.nix | 4 +- nix/sources.json | 12 +- server/start.go | 2 +- tests/integration_tests/poetry.lock | 112 ++++---- tests/integration_tests/pyproject.toml | 1 + 13 files changed, 483 insertions(+), 496 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 2931b27153..79abf1644d 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -64,7 +64,7 @@ jobs: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v26 with: - nix_path: nixpkgs=channel:nixos-23.11 + nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - uses: cachix/cachix-action@v14 @@ -84,7 +84,7 @@ jobs: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v26 with: - nix_path: nixpkgs=channel:nixos-23.11 + nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - uses: cachix/cachix-action@v14 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ab418bf56a..262e87b7b1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -99,7 +99,7 @@ jobs: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v26 with: - nix_path: nixpkgs=channel:nixos-23.11 + nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - uses: cachix/cachix-action@v14 @@ -138,7 +138,7 @@ jobs: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v26 with: - nix_path: nixpkgs=channel:nixos-23.11 + nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - uses: cachix/cachix-action@v14 diff --git a/CHANGELOG.md b/CHANGELOG.md index dde589e6cd..400cc0827f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -91,6 +91,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#517](https://github.com/crypto-org-chain/ethermint/pull/517) Add check for integer overflow to ensure safe conversion. * [#522](https://github.com/crypto-org-chain/ethermint/pull/522) block-stm executor support optional pre-estimations. * [#526](https://github.com/crypto-org-chain/ethermint/pull/526) Avoid unnecessary block result in header related api call. +* [#533](https://github.com/crypto-org-chain/ethermint/pull/533) Bump cosmos-sdk to v0.50.10, cometbft to v0.38.13 and ibc-go to v8.5.1. ## v0.21.x-cronos diff --git a/app/app.go b/app/app.go index 2c07fb517d..f3033bbba6 100644 --- a/app/app.go +++ b/app/app.go @@ -120,7 +120,7 @@ import ( ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" ibc "github.com/cosmos/ibc-go/v8/modules/core" - ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" //nolint:staticcheck + ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" ibcconnectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" diff --git a/cmd/ethermintd/root.go b/cmd/ethermintd/root.go index 5d03d32d56..9b87971820 100644 --- a/cmd/ethermintd/root.go +++ b/cmd/ethermintd/root.go @@ -38,7 +38,6 @@ import ( "github.com/cosmos/cosmos-sdk/client/pruning" "github.com/cosmos/cosmos-sdk/client/rpc" "github.com/cosmos/cosmos-sdk/client/snapshot" - "github.com/cosmos/cosmos-sdk/crypto/keyring" sdkserver "github.com/cosmos/cosmos-sdk/server" servertypes "github.com/cosmos/cosmos-sdk/server/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -142,7 +141,6 @@ func NewRootCmd() (*cobra.Command, ethermint.EncodingConfig) { initRootCmd(rootCmd, encodingConfig, tempApp.BasicModuleManager) autoCliOpts := tempApp.AutoCliOpts() initClientCtx, _ = clientcfg.ReadDefaultValuesFromDefaultClientConfig(initClientCtx) - autoCliOpts.Keyring, _ = keyring.NewAutoCLIKeyring(initClientCtx.Keyring) autoCliOpts.ClientCtx = initClientCtx if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil { panic(err) diff --git a/go.mod b/go.mod index 8b0153ff76..af84c95e75 100644 --- a/go.mod +++ b/go.mod @@ -1,72 +1,73 @@ module github.com/evmos/ethermint -go 1.21 +go 1.22.2 -toolchain go1.21.5 +toolchain go1.22.3 require ( - cosmossdk.io/api v0.7.5 - cosmossdk.io/client/v2 v2.0.0-beta.1 + cosmossdk.io/api v0.7.6 + cosmossdk.io/client/v2 v2.0.0-beta.5 cosmossdk.io/collections v0.4.0 - cosmossdk.io/core v0.11.0 + cosmossdk.io/core v0.11.1 cosmossdk.io/errors v1.0.1 - cosmossdk.io/log v1.3.1 + cosmossdk.io/log v1.4.1 cosmossdk.io/math v1.3.0 - cosmossdk.io/store v1.1.0 - cosmossdk.io/tools/confix v0.1.1 - cosmossdk.io/x/evidence v0.1.0 - cosmossdk.io/x/feegrant v0.1.0 - cosmossdk.io/x/tx v0.13.3 - cosmossdk.io/x/upgrade v0.1.1 - github.com/btcsuite/btcd v0.23.4 - github.com/btcsuite/btcd/btcutil v1.1.3 - github.com/cometbft/cometbft v0.38.10 - github.com/cosmos/cosmos-db v1.0.2 + cosmossdk.io/store v1.1.1 + cosmossdk.io/tools/confix v0.1.2 + cosmossdk.io/x/evidence v0.1.1 + cosmossdk.io/x/feegrant v0.1.1 + cosmossdk.io/x/tx v0.13.5 + cosmossdk.io/x/upgrade v0.1.4 + github.com/btcsuite/btcd v0.24.2 + github.com/btcsuite/btcd/btcutil v1.1.6 + github.com/cometbft/cometbft v0.38.13-0.20240920204745-fdf90d16f608 + github.com/cosmos/cosmos-db v1.0.3-0.20240408151834-e75f6e4b28d8 github.com/cosmos/cosmos-proto v1.0.0-beta.5 - github.com/cosmos/cosmos-sdk v0.50.6 + github.com/cosmos/cosmos-sdk v0.50.9 github.com/cosmos/go-bip39 v1.0.0 - github.com/cosmos/gogoproto v1.4.12 - github.com/cosmos/ibc-go/modules/capability v1.0.0 - github.com/cosmos/ibc-go/v8 v8.1.0 + github.com/cosmos/gogoproto v1.7.0 + github.com/cosmos/ibc-go/modules/capability v1.0.1 + github.com/cosmos/ibc-go/v8 v8.5.1 github.com/cosmos/rosetta v0.50.3-1 - github.com/crypto-org-chain/go-block-stm v0.0.0-20240912024944-1cd89976aa5e + github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/ethereum/go-ethereum v1.10.26 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 github.com/gorilla/mux v1.8.1 - github.com/gorilla/websocket v1.5.1 + github.com/gorilla/websocket v1.5.3 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/go-metrics v0.5.3 github.com/improbable-eng/grpc-web v0.15.0 github.com/onsi/ginkgo/v2 v2.7.0 github.com/onsi/gomega v1.26.0 github.com/pkg/errors v0.9.1 - github.com/rs/cors v1.10.1 + github.com/rs/cors v1.11.1 github.com/spf13/cast v1.6.0 - github.com/spf13/cobra v1.8.0 - github.com/spf13/viper v1.18.2 + github.com/spf13/cobra v1.8.1 + github.com/spf13/viper v1.19.0 github.com/status-im/keycard-go v0.2.0 github.com/stretchr/testify v1.9.0 github.com/tidwall/gjson v1.14.4 github.com/tidwall/sjson v1.2.5 github.com/tyler-smith/go-bip39 v1.1.0 - golang.org/x/net v0.24.0 - golang.org/x/sync v0.7.0 - golang.org/x/text v0.14.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de - google.golang.org/grpc v1.63.2 - google.golang.org/protobuf v1.33.0 + golang.org/x/net v0.29.0 + golang.org/x/sync v0.8.0 + golang.org/x/text v0.18.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 + google.golang.org/grpc v1.66.1 + google.golang.org/protobuf v1.34.2 sigs.k8s.io/yaml v1.4.0 ) require ( - cloud.google.com/go v0.112.0 // indirect - cloud.google.com/go/compute v1.24.0 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v1.1.6 // indirect - cloud.google.com/go/storage v1.36.0 // indirect - cosmossdk.io/depinject v1.0.0-alpha.4 // indirect + cloud.google.com/go v0.115.0 // indirect + cloud.google.com/go/auth v0.6.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect + cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/iam v1.1.9 // indirect + cloud.google.com/go/storage v1.41.0 // indirect + cosmossdk.io/depinject v1.0.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect @@ -81,23 +82,24 @@ require ( github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect github.com/bits-and-blooms/bitset v1.8.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect - github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect + github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect - github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect - github.com/cockroachdb/errors v1.11.1 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v1.1.0 // indirect + github.com/cockroachdb/pebble v1.1.2 // indirect github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect - github.com/cometbft/cometbft-db v0.9.1 // indirect + github.com/cometbft/cometbft-db v0.12.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v1.1.2 // indirect - github.com/cosmos/ics23/go v0.10.0 // indirect + github.com/cosmos/iavl v1.2.0 // indirect + github.com/cosmos/ics23/go v0.11.0 // indirect github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect github.com/creachadair/atomicfile v0.3.1 // indirect @@ -106,9 +108,8 @@ require ( github.com/deckarep/golang-set/v2 v2.1.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect - github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/badger/v4 v4.2.0 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dlclark/regexp2 v1.7.0 // indirect github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7 // indirect github.com/dustin/go-humanize v1.0.1 // indirect @@ -131,22 +132,23 @@ require ( github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect - github.com/golang/glog v1.2.0 // indirect + github.com/golang/glog v1.2.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect - github.com/google/btree v1.1.2 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/flatbuffers v1.12.1 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/googleapis/gax-go/v2 v2.12.5 // indirect github.com/gorilla/handlers v1.5.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.3 // indirect + github.com/hashicorp/go-getter v1.7.4 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-plugin v1.6.0 // indirect @@ -166,7 +168,7 @@ require ( github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.17.7 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.7 // indirect @@ -176,24 +178,25 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect - github.com/minio/highwayhash v1.0.2 // indirect + github.com/minio/highwayhash v1.0.3 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/pelletier/go-toml/v2 v2.1.1 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_golang v1.20.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.52.2 // indirect - github.com/prometheus/procfs v0.13.0 // indirect + github.com/prometheus/common v0.57.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect - github.com/rs/zerolog v1.32.0 // indirect + github.com/rs/zerolog v1.33.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect @@ -213,26 +216,25 @@ require ( github.com/ulikunitz/xz v0.5.11 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.8 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect - go.opentelemetry.io/otel v1.22.0 // indirect - go.opentelemetry.io/otel/metric v1.22.0 // indirect - go.opentelemetry.io/otel/trace v1.22.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.24.0 // indirect + go.opentelemetry.io/otel/metric v1.24.0 // indirect + go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.22.0 // indirect - golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect - golang.org/x/mod v0.17.0 // indirect - golang.org/x/oauth2 v0.18.0 // indirect - golang.org/x/sys v0.19.0 // indirect - golang.org/x/term v0.19.0 // indirect + golang.org/x/crypto v0.27.0 // indirect + golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect + golang.org/x/mod v0.18.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/term v0.24.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.20.0 // indirect - google.golang.org/api v0.162.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect + golang.org/x/tools v0.22.0 // indirect + google.golang.org/api v0.186.0 // indirect + google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -243,18 +245,16 @@ require ( replace ( // release/v0.50.x - cosmossdk.io/client/v2 => github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240927054437-c2a1e0678f4b - cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240927054437-c2a1e0678f4b - cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240927054437-c2a1e0678f4b - github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240927054437-c2a1e0678f4b + cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240930015419-f4ea363b3fdf + cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240930015419-f4ea363b3fdf + github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240930015419-f4ea363b3fdf ) replace ( // use cosmos keyring github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 - github.com/cockroachdb/pebble => github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 // release/v1.11.x - github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240925072350-e05e994a492f + github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240926023215-d2275b4afb9a // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0 diff --git a/go.sum b/go.sum index 9cb024ce7c..26744c4247 100644 --- a/go.sum +++ b/go.sum @@ -30,8 +30,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= -cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= +cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -46,6 +46,10 @@ cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjby cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g= +cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g= +cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= +cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -68,10 +72,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= -cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -109,8 +111,8 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= -cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/iam v1.1.9 h1:oSkYLVtVme29uGYrOcKcvJRht7cHJpYD09GM9JaR0TE= +cloud.google.com/go/iam v1.1.9/go.mod h1:Nt1eDWNYH9nGQg3d/mY7U1hvfGmsaG9o/kLGoLoLXjQ= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= @@ -171,8 +173,8 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= -cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0= +cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= @@ -184,30 +186,32 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= -cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY= +cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/client/v2 v2.0.0-beta.5 h1:0LVv3nEByn//hFDIrYLs2WvsEU3HodOelh4SDHnA/1I= +cosmossdk.io/client/v2 v2.0.0-beta.5/go.mod h1:4p0P6o0ro+FizakJUYS9SeM94RNbv0thLmkHRw5o5as= cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= -cosmossdk.io/core v0.11.0 h1:vtIafqUi+1ZNAE/oxLOQQ7Oek2n4S48SWLG8h/+wdbo= -cosmossdk.io/core v0.11.0/go.mod h1:LaTtayWBSoacF5xNzoF8tmLhehqlA9z1SWiPuNC6X1w= -cosmossdk.io/depinject v1.0.0-alpha.4 h1:PLNp8ZYAMPTUKyG9IK2hsbciDWqna2z1Wsl98okJopc= -cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU= +cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= +cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= +cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050= +cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8= cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/log v1.3.1 h1:UZx8nWIkfbbNEWusZqzAx3ZGvu54TZacWib3EzUYmGI= -cosmossdk.io/log v1.3.1/go.mod h1:2/dIomt8mKdk6vl3OWJcPk2be3pGOS8OQaLUM/3/tCM= +cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= +cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= -cosmossdk.io/tools/confix v0.1.1 h1:aexyRv9+y15veH3Qw16lxQwo+ki7r2I+g0yNTEFEQM8= -cosmossdk.io/tools/confix v0.1.1/go.mod h1:nQVvP1tHsGXS83PonPVWJtSbddIqyjEw99L4M3rPJyQ= -cosmossdk.io/x/circuit v0.1.0 h1:IAej8aRYeuOMritczqTlljbUVHq1E85CpBqaCTwYgXs= -cosmossdk.io/x/circuit v0.1.0/go.mod h1:YDzblVE8+E+urPYQq5kq5foRY/IzhXovSYXb4nwd39w= -cosmossdk.io/x/evidence v0.1.0 h1:J6OEyDl1rbykksdGynzPKG5R/zm6TacwW2fbLTW4nCk= -cosmossdk.io/x/evidence v0.1.0/go.mod h1:hTaiiXsoiJ3InMz1uptgF0BnGqROllAN8mwisOMMsfw= -cosmossdk.io/x/feegrant v0.1.0 h1:c7s3oAq/8/UO0EiN1H5BIjwVntujVTkYs35YPvvrdQk= -cosmossdk.io/x/feegrant v0.1.0/go.mod h1:4r+FsViJRpcZif/yhTn+E0E6OFfg4n0Lx+6cCtnZElU= -cosmossdk.io/x/upgrade v0.1.1 h1:aoPe2gNvH+Gwt/Pgq3dOxxQVU3j5P6Xf+DaUJTDZATc= -cosmossdk.io/x/upgrade v0.1.1/go.mod h1:MNLptLPcIFK9CWt7Ra//8WUZAxweyRDNcbs5nkOcQy0= +cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4= +cosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo= +cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ= +cosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q= +cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4= +cosmossdk.io/x/evidence v0.1.1/go.mod h1:OoDsWlbtuyqS70LY51aX8FBTvguQqvFrt78qL7UzeNc= +cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8= +cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ= +cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38= +cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= @@ -227,7 +231,6 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= @@ -253,7 +256,6 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= @@ -277,20 +279,22 @@ github.com/bits-and-blooms/bitset v1.8.0 h1:FD+XqgOZDUxxZ8hzoBFuV9+cGWY9CslN6d5M github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= -github.com/btcsuite/btcd v0.23.0/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= -github.com/btcsuite/btcd v0.23.4 h1:IzV6qqkfwbItOS/sg/aDfPDsjPP8twrCOE2R93hxMlQ= -github.com/btcsuite/btcd v0.23.4/go.mod h1:0QJIIN1wwIXF/3G/m87gIwGniDMDQqjVn4SZgnFpsYY= +github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A= +github.com/btcsuite/btcd v0.24.2 h1:aLmxPguqxza+4ag8R1I2nnJjSu2iFn/kqtHTIImswcY= +github.com/btcsuite/btcd v0.24.2/go.mod h1:5C8ChTkl5ejr3WHj8tkQSCmydiMEPB0ZhQhehpq7Dgg= github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= -github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= -github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= -github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/btcutil v1.1.5/go.mod h1:PSZZ4UitpLBWzxGd5VGOrLnmOjtPP/a6HaFo12zMs00= +github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= +github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= @@ -311,7 +315,6 @@ github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -339,40 +342,40 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa h1:jQCWAUqqlij9Pgj2i/PB79y4KOPYVyFYdROxgaCwdTQ= -github.com/cncf/xds/go v0.0.0-20231128003011-0fa0005c9caa/go.mod h1:x/1Gn8zydmfq8dk6e9PdstVsDgu9RuyIIJqAaF//0IM= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v1.0.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= -github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= -github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 h1:ytcWPaNPhNoGMWEhDvS3zToKcDpRsLuRolQJBVGdozk= -github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811/go.mod h1:Nb5lgvnQ2+oGlE/EyZy4+2/CxRh9KfvCXnag1vtpxVM= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.38.10 h1:2ePuglchT+j0Iao+cfmt/nw5U7K2lnGDzXSUPGVdXaU= -github.com/cometbft/cometbft v0.38.10/go.mod h1:jHPx9vQpWzPHEAiYI/7EDKaB1NXhK6o3SArrrY8ExKc= -github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= -github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= +github.com/cometbft/cometbft v0.38.13-0.20240920204745-fdf90d16f608 h1:H/OAewlwE0zYQYbaYx2fLgw8agjr8F10Ai43Ug92P4w= +github.com/cometbft/cometbft v0.38.13-0.20240920204745-fdf90d16f608/go.mod h1:a8NBI2IdO283RZdpH0MuXlze3j+lv6PXuzOtTCq4YGE= +github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= +github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= -github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= +github.com/cosmos/cosmos-db v1.0.3-0.20240408151834-e75f6e4b28d8 h1:QV1tpwwqSPWcs1Hy07Y5JHfa61bE/Cz+blqKtuaz86c= +github.com/cosmos/cosmos-db v1.0.3-0.20240408151834-e75f6e4b28d8/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= @@ -380,16 +383,16 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.4.12 h1:vB6Lbe/rtnYGjQuFxkPiPYiCybqFT8QvLipDZP8JpFE= -github.com/cosmos/gogoproto v1.4.12/go.mod h1:LnZob1bXRdUoqMMtwYlcR3wjiElmlC+FkjaZRv1/eLY= -github.com/cosmos/iavl v1.1.2 h1:zL9FK7C4L/P4IF1Dm5fIwz0WXCnn7Bp1M2FxH0ayM7Y= -github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= -github.com/cosmos/ibc-go/modules/capability v1.0.0 h1:r/l++byFtn7jHYa09zlAdSeevo8ci1mVZNO9+V0xsLE= -github.com/cosmos/ibc-go/modules/capability v1.0.0/go.mod h1:D81ZxzjZAe0ZO5ambnvn1qedsFQ8lOwtqicG6liLBco= -github.com/cosmos/ibc-go/v8 v8.1.0 h1:pf1106wl0Cf+p1+FjXzV6odlS9DnqVunPVWCH1Uz+lQ= -github.com/cosmos/ibc-go/v8 v8.1.0/go.mod h1:o1ipS95xpdjqNcB8Drq0eI3Sn4FRLigjll42ec1ECuU= -github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= -github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= +github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= +github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= +github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM= +github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI= +github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI= +github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E= +github.com/cosmos/ibc-go/v8 v8.5.1 h1:3JleEMKBjRKa3FeTKt4fjg22za/qygLBo7mDkoYTNBs= +github.com/cosmos/ibc-go/v8 v8.5.1/go.mod h1:P5hkAvq0Qbg0h18uLxDVA9q1kOJ0l36htMsskiNwXbo= +github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= +github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= github.com/cosmos/keyring v1.2.0/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= @@ -398,11 +401,9 @@ github.com/cosmos/rosetta v0.50.3-1 h1:tqBTfS2I+SIT28zmlKHV/87qPELYrj5Dr5Z68EJvv github.com/cosmos/rosetta v0.50.3-1/go.mod h1:aayFO1rJpgOENMJPTm5TKJ8S8wIZoIfDjPot9xkMS5k= github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM= github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4= -github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creachadair/atomicfile v0.3.1 h1:yQORkHjSYySh/tv5th1dkKcn02NEW5JleB84sjt+W4Q= github.com/creachadair/atomicfile v0.3.1/go.mod h1:mwfrkRxFKwpNAflYZzytbSwxvbK6fdGRRlp0KEQc0qU= github.com/creachadair/tomledit v0.0.24 h1:5Xjr25R2esu1rKCbQEmjZYlrhFkDspoAbAKb6QKQDhQ= @@ -411,18 +412,16 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+FBB8cMkDE2j2VBVsbY+HCkPIu0YsJ/9bbGeQ= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240927054437-c2a1e0678f4b h1:praAPgsPxIr/bcnUalyH6i+VG7o4tbNc5hhqJsUVBEU= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240927054437-c2a1e0678f4b/go.mod h1:Rb43DdB0i/rKcCN69Tg2X3+zA4WhJ7MC8K3a6Ezh38E= -github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240927054437-c2a1e0678f4b h1:fBJcK1IbrS/GKfPAKNFBdm2aY59Zuruop+8jf2dOFP4= -github.com/crypto-org-chain/cosmos-sdk/client/v2 v2.0.0-20240927054437-c2a1e0678f4b/go.mod h1:W5sR4asmVDUhJpEmuXTUBkk/yEefKlXTjVWcNciVSR0= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240927054437-c2a1e0678f4b h1:DsLD76+ndjkh/yIXD3l9t0l+6H8ZLUK7d8q3Avi3gEo= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240927054437-c2a1e0678f4b/go.mod h1:gjE3DZe4t/+VeIk6CmrouyqiuDbZ7QOVDDq3nLqBTpg= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240927054437-c2a1e0678f4b h1:qwJufXFJ8dt+swi5p8SmTgLTr9ClHIO9GZh1XlO78mE= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240927054437-c2a1e0678f4b/go.mod h1:RTiTs4hkXG6IvYGknvB8p79YgjYJdcbzLUOGJChsPnY= -github.com/crypto-org-chain/go-block-stm v0.0.0-20240912024944-1cd89976aa5e h1:FFpE6+Y4o5GxkeGwUcETM6amgohh7msWvWf1MDqueVc= -github.com/crypto-org-chain/go-block-stm v0.0.0-20240912024944-1cd89976aa5e/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= -github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240925072350-e05e994a492f h1:jR3nEDZMhGtZODqWFVbaTJ2X26k5r7nkiRk39i+SJ10= -github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240925072350-e05e994a492f/go.mod h1:+a8pUj1tOyJ2RinsNQD4326YS+leSoKGiG/uVVb0x6Y= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240930015419-f4ea363b3fdf h1:QNQ9uB3DEfJqSMwERDSaYQMofgfzfcSp49iDt7B2jvc= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240930015419-f4ea363b3fdf/go.mod h1:iJLknPnyzlcQGdgfIp9d8QCuqt8g1RjJeh8pJ/p5wj4= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240930015419-f4ea363b3fdf h1:vGFA8f1EbNLgabbSBBnT1bArLnrl4ETk4PUTJLb01Pc= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240930015419-f4ea363b3fdf/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240930015419-f4ea363b3fdf h1:u6BY+dtlmhuQYfPDnpGhDBF2uiCA0HvrIk22L67nB6Q= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240930015419-f4ea363b3fdf/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716 h1:OvD5Rm0B6LHUJk6z858UgwdP72jU2DuUdXeclRyKpDI= +github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= +github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240926023215-d2275b4afb9a h1:IUPD+dg1YQl8cLocxQ/Mbx/ObTgAgcrZlcBhFjsLO40= +github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240926023215-d2275b4afb9a/go.mod h1:A249HEl6XyiV5zSnKM9j9RF3szMghMNONMyNvYuqQIw= github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= github.com/danieljoos/wincred v1.2.0/go.mod h1:FzQLLMKBFdvu+osBrnFODiv32YGwCfx0SkRa/eYHgec= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -441,9 +440,8 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3 github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= -github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= -github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= +github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= @@ -486,8 +484,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= @@ -569,8 +565,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= -github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -614,8 +610,10 @@ github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXi github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= +github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -642,8 +640,8 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= +github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -682,8 +680,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA= +github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= @@ -695,8 +693,9 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= -github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= @@ -716,8 +715,8 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.3 h1:bN2+Fw9XPFvOCjB0UOevFIMICZ7G2XSQHzfvLUyOM5E= -github.com/hashicorp/go-getter v1.7.3/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= +github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -815,10 +814,9 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= -github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -841,7 +839,6 @@ github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0U github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= @@ -865,8 +862,8 @@ github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/Qd github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= +github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -888,6 +885,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -948,9 +947,8 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml/v2 v2.1.1 h1:LWAJwfNvjQZCFIDKWYQaM62NcYeYViCmWIwmOStowAI= -github.com/pelletier/go-toml/v2 v2.1.1/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= @@ -975,8 +973,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= +github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -991,16 +989,16 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.52.2 h1:LW8Vk7BccEdONfrJBDffQGRtpSzi5CQaRZGtboOO2ck= -github.com/prometheus/common v0.52.2/go.mod h1:lrWtQx+iDfn2mbH5GUzlH9TSHyfZpHkSiG1W7y3sF2Q= +github.com/prometheus/common v0.57.0 h1:Ro/rKjwdq9mZn1K5QPctzh+MA4Lp0BuYk5ZZEVhoNcY= +github.com/prometheus/common v0.57.0/go.mod h1:7uRPFSUTbfZWsJ7MHY56sqt7hLQu3bxXHDnNhl8E9qI= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= -github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -1012,13 +1010,11 @@ github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/f github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.10.1 h1:L0uuZVXIKlI1SShY2nhFfo44TYvDPQ1w4oFkUJNfhyo= -github.com/rs/cors v1.10.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= -github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= -github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -1038,8 +1034,8 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= @@ -1047,26 +1043,18 @@ github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJ github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1117,7 +1105,6 @@ github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqri github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= @@ -1128,7 +1115,6 @@ github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/urfave/cli/v2 v2.17.2-0.20221006022127-8f469abc00aa h1:5SqCsI/2Qya2bCzK15ozrqo2sZxkh0FHynJZOTVoV6Q= github.com/urfave/cli/v2 v2.17.2-0.20221006022127-8f469abc00aa/go.mod h1:1CNUng3PtjQMtRzJO4FMXBQvkGtuYRxxiR9xMa7jMwI= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1142,8 +1128,8 @@ github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWp github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= -go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -1156,18 +1142,18 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 h1:UNQQKPfTDe1J81ViolILjTKPr9WetKW6uei2hFgJmFs= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0/go.mod h1:r9vWsPS/3AQItv3OSlEJ/E4mbrhUbbw18meOjArPtKQ= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 h1:sv9kVfal0MK0wBMCOGr+HeJm9v803BkJxGrk2au7j08= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0/go.mod h1:SK2UL73Zy1quvRPonmOmRDiWk1KBV3LyIeeIxcEApWw= -go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= -go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= -go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= -go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= -go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= -go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1186,7 +1172,6 @@ go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1195,8 +1180,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1208,8 +1193,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 h1:985EYyeCOxTpcgOTJpflJUwOeEz0CQOdPt73OzpE9F8= -golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1236,8 +1221,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1298,8 +1283,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= -golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1325,8 +1310,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1341,8 +1326,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1351,8 +1336,6 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1361,7 +1344,6 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1441,13 +1423,14 @@ golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= -golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1457,10 +1440,9 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1529,8 +1511,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= -golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1538,8 +1520,9 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1589,8 +1572,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.162.0 h1:Vhs54HkaEpkMBdgGdOT2P6F0csGG/vxDS0hWHJzmmps= -google.golang.org/api v0.162.0/go.mod h1:6SulDkfoBIg4NFmCuZ39XeeAgSHCPecfSUuDyYlAHs0= +google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug= +google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1599,8 +1582,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1707,12 +1688,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de h1:jFNzHPIeuzhdRwVhbZdiym9q0ory/xY3sA+v2wPg8I0= -google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 h1:6whtk83KtD3FkGrVb2hFXuQ+ZMbCNdakARIn/aHMmG8= +google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094/go.mod h1:Zs4wYw8z1zr6RNF4cwYb31mvN/EGaKAdQjNCF3DW6K4= +google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0= +google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1754,8 +1735,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM= +google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1772,8 +1753,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/gomod2nix.toml b/gomod2nix.toml index ea99361b37..ebb0549b6e 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -2,65 +2,67 @@ schema = 3 [mod] [mod."cloud.google.com/go"] - version = "v0.112.0" - hash = "sha256-lmNLoqmLURfxu+a6V/SeoP8xVn0Wi2SD7uxxAtSjm+o=" - [mod."cloud.google.com/go/compute"] - version = "v1.24.0" - hash = "sha256-icDjR0uxYeazRbhsBgl8Dx7z/oRZJ/iqK6CGjCtsaQQ=" + version = "v0.115.0" + hash = "sha256-FIfzk9JYArEfDnJtdXXHBrI4yTGzZPyefQm1O1ldez8=" + [mod."cloud.google.com/go/auth"] + version = "v0.6.0" + hash = "sha256-gOhYABjjNn62exyu2fzqUMJev9Tva6scdYVdaSHwrqo=" + [mod."cloud.google.com/go/auth/oauth2adapt"] + version = "v0.2.2" + hash = "sha256-rdgb3uWekFSfsMZeY7DqHr7Q8ELOwLIZO4W7t2Cvt40=" [mod."cloud.google.com/go/compute/metadata"] - version = "v0.2.3" - hash = "sha256-kYB1FTQRdTDqCqJzSU/jJYbVUGyxbkASUKbEs36FUyU=" + version = "v0.3.0" + hash = "sha256-hj2Xjlz3vj7KYONZO/ItclWGGJEUgo5EvMEkGPfQi1Q=" [mod."cloud.google.com/go/iam"] - version = "v1.1.6" - hash = "sha256-u91oZdyy/wgk3J8Z+4mWmn+YliSBIATu6kpyH20Dd8k=" + version = "v1.1.9" + hash = "sha256-xC4/ssYSWYXlGz9y5BrVKHizSM7bGV/gi10qvf9dvKA=" [mod."cloud.google.com/go/storage"] - version = "v1.36.0" - hash = "sha256-dRKH1NEyAfEpVo5Mma677L7z0JO9Mfd1bv1lr1uFngI=" + version = "v1.41.0" + hash = "sha256-y2/EHhY+gE/U8FdILHAfiCgZZHey8wn6e7N/smv5Yks=" [mod."cosmossdk.io/api"] - version = "v0.7.5" - hash = "sha256-Nuw697sJr56kU3EU7DV1eYNkyI76psznIVqYAV6RfbQ=" + version = "v0.7.6" + hash = "sha256-ubE78Xrsz+YQcOGyjpp/MwqUHwsGVbkcWXVzMFfFw0I=" [mod."cosmossdk.io/client/v2"] - version = "v2.0.0-20240927054437-c2a1e0678f4b" - hash = "sha256-60hmufv3Ml4Pv3zNwgn8eeqlEINOR6n9MKr2QHddoxo=" - replaced = "github.com/crypto-org-chain/cosmos-sdk/client/v2" + version = "v2.0.0-beta.5" + hash = "sha256-zivawuJLLbNn0zE9FRWjCtrpks7vlDprQ7DbNKqhwWc=" [mod."cosmossdk.io/collections"] version = "v0.4.0" hash = "sha256-minFyzgO/D+Oda4E3B1qvOAN5qd65SjS6nmjca4cp/8=" [mod."cosmossdk.io/core"] - version = "v0.11.0" - hash = "sha256-zUiOF04lWHK8OZqGhwVuzKYfig5I0107D+8fWX5/pbQ=" + version = "v0.11.1" + hash = "sha256-A857PYFy22B43qo8raLkstLOao7RRltt6TB+s3ZuuM4=" [mod."cosmossdk.io/depinject"] - version = "v1.0.0-alpha.4" - hash = "sha256-xpLH0K6ivQznFrLw2hmhWIIyYgqjstV47OhTEj/c1oQ=" + version = "v1.0.0" + hash = "sha256-dtsNfj5zUlX6e4YslzyegrebztmlLiBFvqDb2IHV+Zc=" [mod."cosmossdk.io/errors"] version = "v1.0.1" hash = "sha256-MgTocXkBzri9FKkNtkARJXPmxRrRO/diQJS5ZzvYrJY=" [mod."cosmossdk.io/log"] - version = "v1.3.1" - hash = "sha256-otkUvsz35VuuUWXoTmWBwR61+o6YzvWETGdLfwWDvwY=" + version = "v1.4.1" + hash = "sha256-pgI770MdI/OfZcK6UFmQ9iyPBgapz/ErrUe8WVO3iBg=" [mod."cosmossdk.io/math"] version = "v1.3.0" hash = "sha256-EEFK43Cr0g0ndhQhkIKher0FqV3mvkmE9z0sP7uVSHg=" [mod."cosmossdk.io/store"] - version = "v0.0.0-20240927054437-c2a1e0678f4b" - hash = "sha256-Dm3sSZNJBcnBF33PULoTpK4rkNQbsZl0DfTqH1GPCQM=" + version = "v0.0.0-20240930015419-f4ea363b3fdf" + hash = "sha256-6MLZ2SPWwmpisfLmkZ9MOnL2/phjIUwo4EuVA6ORjYE=" replaced = "github.com/crypto-org-chain/cosmos-sdk/store" [mod."cosmossdk.io/tools/confix"] - version = "v0.1.1" - hash = "sha256-/Et2FFhb4XfakbLFvGQK3QxN5Y7alzO+DGfi2/EWbxo=" + version = "v0.1.2" + hash = "sha256-1VhdIdBDG7jaSiRTNYtoQ3WGaGm+vQ1Qf671zSiWAek=" [mod."cosmossdk.io/x/evidence"] - version = "v0.1.0" - hash = "sha256-ZhVrmCGOzx2yODpcgvM9c48jkqz37NwU2ln/uVuCEfc=" + version = "v0.1.1" + hash = "sha256-iSjMwFPu1InR6weF/m4hGHP+StsudOCqeDZefGPTfxw=" [mod."cosmossdk.io/x/feegrant"] - version = "v0.1.0" - hash = "sha256-/gWvrqvy6bW90+NU66T+9QysYgvG1VbwfYJZ8tkqpeA=" + version = "v0.1.1" + hash = "sha256-aps3LfnQau1TYeccGwtqHQvy1Rudc9+O+iVAwXBKyDw=" [mod."cosmossdk.io/x/tx"] - version = "v0.0.0-20240927054437-c2a1e0678f4b" - hash = "sha256-5HPcm3oCWAC9oKOGMP+PVMdCPF7ELVHmxpN1FasUgAY=" + version = "v0.0.0-20240930015419-f4ea363b3fdf" + hash = "sha256-YmgVsfnkZpQ5kMYpQL/ftfGIeWWWtTei4jWdHrBzVO8=" replaced = "github.com/crypto-org-chain/cosmos-sdk/x/tx" [mod."cosmossdk.io/x/upgrade"] - version = "v0.1.1" - hash = "sha256-bM9ybpaibMH7k4M6/QAXCZ3fJcADfJHxvMgp4AVUihs=" + version = "v0.1.4" + hash = "sha256-lm0Ccc9zWs1ldWv1cArXuzRxq45zMir1ZNvoPY+9n7o=" [mod."filippo.io/edwards25519"] version = "v1.1.0" hash = "sha256-9ACANrgWZSd5HYPfDZHY8DVbPSC9LOMgy8deq3rDOoc=" @@ -105,23 +107,20 @@ schema = 3 version = "v1.8.0" hash = "sha256-ySle5MJXSGMHJa1HSf/ZMDTYXdow9ct7JXth4k5Po50=" [mod."github.com/btcsuite/btcd"] - version = "v0.23.4" - hash = "sha256-xP7TLBdOoUIjg5Q3MOjbT5P9tkCWjsd4bWgZLp539Wo=" + version = "v0.24.2" + hash = "sha256-ahlpwEr4KfyrEA899X07QtuSDnC8U+SnwL+z72DiK5E=" [mod."github.com/btcsuite/btcd/btcec/v2"] - version = "v2.3.2" - hash = "sha256-natWs+yIAuD1UI07iZtjPilroQLfXizFn3lNOiOT83U=" + version = "v2.3.4" + hash = "sha256-9fV41jYeTUrpoyu19LPuGBG/N9wFv6D6wVBE8R5WzRI=" [mod."github.com/btcsuite/btcd/btcutil"] - version = "v1.1.3" - hash = "sha256-6Y9sP1yvPBO8PhqmFVVXNV7dxsXlERDAB+TPTEfW3kI=" + version = "v1.1.6" + hash = "sha256-TYbwJLNX/+63nm+b3RqPH3ZIvTBnsm9peqJP05v9Z90=" [mod."github.com/btcsuite/btcd/chaincfg/chainhash"] - version = "v1.0.1" - hash = "sha256-vix0j/KGNvoKjhlKgVeSLY6un2FHeIEoZWMC4z3yvZ4=" + version = "v1.1.0" + hash = "sha256-F+EqvufC+KBslZV/vL8ph6MqDoVD5ic5rVaM27reDqo=" [mod."github.com/cenkalti/backoff/v4"] version = "v4.2.1" hash = "sha256-CKogmPe0pCcAdpztzPwr24rLTJZfq8QVZ9AUduwAcoA=" - [mod."github.com/cespare/xxhash"] - version = "v1.1.0" - hash = "sha256-nVDTtXH9PC3yJ0THaQZEN243UP9xgLi/clt5xRqj3+M=" [mod."github.com/cespare/xxhash/v2"] version = "v2.3.0" hash = "sha256-7hRlwSR+fos1kx4VZmJ/7snR7zHh8ZFKX+qqqqGcQpY=" @@ -132,39 +131,44 @@ schema = 3 version = "v2.0.2" hash = "sha256-UrPHkvqVF8V78+kXKmjTHl79XsgDBnqFsje5BMYh0E4=" [mod."github.com/cockroachdb/errors"] - version = "v1.11.1" - hash = "sha256-ufKtavyfW/i3ZemiqDqKGc0JM+f0IBi6bZWkZyb/jdc=" + version = "v1.11.3" + hash = "sha256-kDiT0MVVRnnQ0ugZWVHcZmv3UgwnxEW6xzt+mV22dTI=" + [mod."github.com/cockroachdb/fifo"] + version = "v0.0.0-20240606204812-0bbfbd93a7ce" + hash = "sha256-M/9/e4i7gXA2kYjSEMlQd94vijLLmWZVUXOKiFeINbk=" [mod."github.com/cockroachdb/logtags"] version = "v0.0.0-20230118201751-21c54148d20b" hash = "sha256-7dQH6j1o99fuxHKkw0RhNC5wJKkvRLMDJpUiVnDx6h8=" [mod."github.com/cockroachdb/pebble"] - version = "v0.0.0-20230209160836-829675f94811" - hash = "sha256-DpbEXN/YWWXap83lz99r6sAUUk76ixDe4fRn1GpBWpo=" - replaced = "github.com/cockroachdb/pebble" + version = "v1.1.2" + hash = "sha256-btyS8BkdGK15BtbIaPERmDQ2ayVw9S05ciJw1YhoTLk=" [mod."github.com/cockroachdb/redact"] version = "v1.1.5" hash = "sha256-0rtT7LRO0wxf9XovOK8GXRrhmx8OcbdPK/mXOKbJdog=" + [mod."github.com/cockroachdb/tokenbucket"] + version = "v0.0.0-20230807174530-cc333fc44b06" + hash = "sha256-yZdBXkTVzPxRYntI9I2Gu4gkI11m52Nwl8RNNdlXSrA=" [mod."github.com/coinbase/rosetta-sdk-go/types"] version = "v1.0.0" hash = "sha256-z/0E0NiEGo7zxM7d94ImgUf8P0/KG6hbP9T4Vuym4p0=" [mod."github.com/cometbft/cometbft"] - version = "v0.38.10" - hash = "sha256-zd/vD0uUgawzuuzuNweRK4HctzWmCb3tnLUFmaOT4OE=" + version = "v0.38.13-0.20240920204745-fdf90d16f608" + hash = "sha256-fusVsybvHUoqb0arjAyacGbCu/s50HOhlt1DV/7jpjM=" [mod."github.com/cometbft/cometbft-db"] - version = "v0.9.1" - hash = "sha256-ftRdle5ok2aCyqT3u5rYY0jKB8WT8uDus26Pw4Mo1go=" + version = "v0.12.0" + hash = "sha256-mfeUD8+V+xUzEhSOLgQQP0GFDWt7ch/TeBw9gnTJuHk=" [mod."github.com/cosmos/btcutil"] version = "v1.0.5" hash = "sha256-t572Sr5iiHcuMKLMWa2i+LBAt192oa+G1oA371tG/eI=" [mod."github.com/cosmos/cosmos-db"] - version = "v1.0.2" - hash = "sha256-WjDoB2AGoIyEW30LlGcQX5JVACJbs0jWSY58IuJHz0M=" + version = "v1.0.3-0.20240408151834-e75f6e4b28d8" + hash = "sha256-8g+F6KqJD4UymXZjES5TG4FQ/Pyww2SjpXOOibyztRc=" [mod."github.com/cosmos/cosmos-proto"] version = "v1.0.0-beta.5" hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg=" [mod."github.com/cosmos/cosmos-sdk"] - version = "v0.50.6-0.20240927054437-c2a1e0678f4b" - hash = "sha256-/5W/4n6getoWtj/MIotvel86dcJUD7jm9a4aDdDD95w=" + version = "v0.50.6-0.20240930015419-f4ea363b3fdf" + hash = "sha256-CzL+v06/nATLLXFhKTQjR7avEyW3hOvr38FTTnqqooc=" replaced = "github.com/crypto-org-chain/cosmos-sdk" [mod."github.com/cosmos/go-bip39"] version = "v1.0.0" @@ -173,20 +177,20 @@ schema = 3 version = "v1.2.0" hash = "sha256-Hd19V0RCiMoCL67NsqvWIsvWF8KM3LnuJTbYjWtQkEo=" [mod."github.com/cosmos/gogoproto"] - version = "v1.4.12" - hash = "sha256-e2tbfaZtzLijq+EMnNG9GWKDCG4sBj8wIVnn6/R26iM=" + version = "v1.7.0" + hash = "sha256-ZkEUImxBBo8Q/6c7tVR0rybpLbtlplzvgfLl5xvtV00=" [mod."github.com/cosmos/iavl"] - version = "v1.1.2" - hash = "sha256-fhh5fN1BMDxbF4PobERMQdIb9vIrxaSl0tRXas0WKmc=" + version = "v1.2.0" + hash = "sha256-NYSt6LOGyspP6eZXo9e5+2MFwyrWxD/rp2dRTtlWg2E=" [mod."github.com/cosmos/ibc-go/modules/capability"] - version = "v1.0.0" - hash = "sha256-xOeHJWUj6fTc2EUGiE4dgfY2WkvrqTg/FWewoUvQcvg=" + version = "v1.0.1" + hash = "sha256-iRhj2WTr99DgAl80h25pxtkO6iHYjyHflwpxKKG5b6E=" [mod."github.com/cosmos/ibc-go/v8"] - version = "v8.1.0" - hash = "sha256-uwYDKW+lFEfLR6Ro+HM3KhBi7B0mGMutH8oWdoZM7d8=" + version = "v8.5.1" + hash = "sha256-F4VZbKo1n9fLSxLSR+/ZaisbJ2v+EHjpXVpCovGTiyQ=" [mod."github.com/cosmos/ics23/go"] - version = "v0.10.0" - hash = "sha256-KYEv727BO/ht63JO02xiKFGFAddg41Ve9l2vSSZZBq0=" + version = "v0.11.0" + hash = "sha256-mgU/pqp4kASmW/bP0z6PzssfjRp7GU9ioyvNlDdGC+E=" [mod."github.com/cosmos/ledger-cosmos-go"] version = "v0.13.3" hash = "sha256-4f73odipfgWku0/gK2UtXbrBXvj8kT9sg4IhnfAP/S0=" @@ -203,8 +207,8 @@ schema = 3 version = "v0.0.24" hash = "sha256-4vUukHONOjNn0qfQr4esK6TWfPWsIp+rbdz65og84lw=" [mod."github.com/crypto-org-chain/go-block-stm"] - version = "v0.0.0-20240912024944-1cd89976aa5e" - hash = "sha256-rY8W4dSciOXT29MCySbH5sw0Fp15IQVgBK9QlMX0JeU=" + version = "v0.0.0-20240919080136-6c49aef68716" + hash = "sha256-krCdJz96mpIgmpmRI64W2+W1ycNg+EdLaqeVtAuaW4A=" [mod."github.com/danieljoos/wincred"] version = "v1.2.0" hash = "sha256-LHcvTJCc8++bFndbd8ZgMSTe4L5h2C4rN+cSWHCz54Y=" @@ -220,15 +224,12 @@ schema = 3 [mod."github.com/desertbit/timer"] version = "v0.0.0-20180107155436-c41aec40b27f" hash = "sha256-abLOtEcomAqCWLphd2X6WkD/ED764w6sa6unox4BXss=" - [mod."github.com/dgraph-io/badger/v2"] - version = "v2.2007.4" - hash = "sha256-+KwqZJZpViv8S3TqUVvPXrFoMgWFyS3NoLsi4RR5fGk=" + [mod."github.com/dgraph-io/badger/v4"] + version = "v4.2.0" + hash = "sha256-hsNONsIJIYmMzjTXdNxjheL2Zz3Z86J8Uxj2r0el/DY=" [mod."github.com/dgraph-io/ristretto"] version = "v0.1.1" hash = "sha256-Wr9ovXhGi71+n37EnrpIj2o9goyaQHtY4Vvurv6IVlY=" - [mod."github.com/dgryski/go-farm"] - version = "v0.0.0-20200201041132-a6ae2369ad13" - hash = "sha256-aOMlPwFY36bLiiIx4HonbCYRAhagk5N6HAWN7Ygif+E=" [mod."github.com/dlclark/regexp2"] version = "v1.7.0" hash = "sha256-Z/M62esiZ0fVwvueVQhwz18z0eS22LZ3DJ4O8FKp3AY=" @@ -248,8 +249,8 @@ schema = 3 version = "v1.6.1" hash = "sha256-zOpoaepCfPLmU9iQji/Ait+SVEHI9eF3rwtW0h/8lho=" [mod."github.com/ethereum/go-ethereum"] - version = "v1.10.20-0.20240925072350-e05e994a492f" - hash = "sha256-lDIqRLUrXYCb9mmFBY/+WW+ee69+IkxOgqjHVyo4ij0=" + version = "v1.10.20-0.20240926023215-d2275b4afb9a" + hash = "sha256-ozwVS2BhAoz+OOisAyMhgg+lq8FdQjf90xoOq9cxtGw=" replaced = "github.com/crypto-org-chain/go-ethereum" [mod."github.com/fatih/color"] version = "v1.16.0" @@ -303,8 +304,8 @@ schema = 3 version = "v1.3.2" hash = "sha256-pogILFrrk+cAtb0ulqn9+gRZJ7sGnnLLdtqITvxvG6c=" [mod."github.com/golang/glog"] - version = "v1.2.0" - hash = "sha256-eCWkUlsWbHSjsuTw8HcNpj3KxT+QPvW5SSIv88hAsxA=" + version = "v1.2.1" + hash = "sha256-H9gR4sQRFOb4ZlSwvxU0MGR6iKnYWv4NSY3genjN/V4=" [mod."github.com/golang/groupcache"] version = "v0.0.0-20210331224755-41bb18bfe9da" hash = "sha256-7Gs7CS9gEYZkbu5P4hqPGBpeGZWC64VDwraSKFF+VR0=" @@ -318,8 +319,11 @@ schema = 3 version = "v0.0.5-0.20220116011046-fa5810519dcb" hash = "sha256-4GVLPBwJIXYFJU+Uvoa/sb5VHea7yJhwE7feABa7ucs=" [mod."github.com/google/btree"] - version = "v1.1.2" - hash = "sha256-K7V2obq3pLM71Mg0vhhHtZ+gtaubwXPQx3xcIyZDCjM=" + version = "v1.1.3" + hash = "sha256-/6Us2eNRFi2IIp7p5uPUXLridilAdk4SmZhcTYR0csw=" + [mod."github.com/google/flatbuffers"] + version = "v1.12.1" + hash = "sha256-v9/ewAmNdQ4SNBlBwgHkxn3IVJAf31D7zVlxwEK/LRs=" [mod."github.com/google/go-cmp"] version = "v0.6.0" hash = "sha256-qgra5jze4iPGP0JSTVeY5qV5AvEnEu39LYAuUCIkMtg=" @@ -336,8 +340,8 @@ schema = 3 version = "v0.3.2" hash = "sha256-wVuR3QC0mYFl5LNeKdRXdKdod7BGP5sv2h6VVib85v8=" [mod."github.com/googleapis/gax-go/v2"] - version = "v2.12.0" - hash = "sha256-ZcXS+1B11UaJHf8D15N3ZCh00fiMUncpHd+eNRffLZ4=" + version = "v2.12.5" + hash = "sha256-hqZ8F2tXqrlbMA/iN0mXw+LdDkoYsU7i2L/mt1VMQPY=" [mod."github.com/gorilla/handlers"] version = "v1.5.2" hash = "sha256-2WQeVCe7vQg+8MpNLMhOGsRdbrcWLpbtUhUX8mbiQrs=" @@ -345,8 +349,8 @@ schema = 3 version = "v1.8.1" hash = "sha256-nDABvAhlYgxUW2N/brrep7NkQXoSGcHhA+XI4+tK0F0=" [mod."github.com/gorilla/websocket"] - version = "v1.5.1" - hash = "sha256-eHZ/U+eeE5tSgWc1jEDuBwtTRbXKP9fqP9zfW4Zw8T0=" + version = "v1.5.3" + hash = "sha256-vTIGEFMEi+30ZdO6ffMNJ/kId6pZs5bbyqov8xe9BM0=" [mod."github.com/grpc-ecosystem/go-grpc-middleware"] version = "v1.4.0" hash = "sha256-0UymBjkg41C9MPqkBLz/ZY9WbimZrabpJk+8C/X63h8=" @@ -360,8 +364,8 @@ schema = 3 version = "v0.5.2" hash = "sha256-N9GOKYo7tK6XQUFhvhImtL7PZW/mr4C4Manx/yPVvcQ=" [mod."github.com/hashicorp/go-getter"] - version = "v1.7.3" - hash = "sha256-z3zrjcOsgJrZkGLwaKVauq/MFAPtulXatV/RrkKNJv4=" + version = "v1.7.4" + hash = "sha256-GtJSwcS1WXLn9lFAuTRCseIQBXJOElAywEhTtYrsfbE=" [mod."github.com/hashicorp/go-hclog"] version = "v1.5.0" hash = "sha256-u3Jqg7Qex11IZ7vbk4hRGgLy6e0cF70CCx7ERF0GUHo=" @@ -426,8 +430,8 @@ schema = 3 version = "v1.0.0" hash = "sha256-xEd0mDBeq3eR/GYeXjoTVb2sPs8sTCosn5ayWkcgENI=" [mod."github.com/klauspost/compress"] - version = "v1.17.7" - hash = "sha256-UkW+tAFEZYj067z9gXDQjQx0dCF8noCn5OSw/APh4oo=" + version = "v1.17.9" + hash = "sha256-FxHk4OuwsbiH1OLI+Q0oA4KpcOB786sEfik0G+GNoow=" [mod."github.com/kr/pretty"] version = "v0.3.1" hash = "sha256-DlER7XM+xiaLjvebcIPiB12oVNjyZHuJHoRGITzzpKU=" @@ -456,8 +460,8 @@ schema = 3 version = "v0.0.9" hash = "sha256-dK/kIPe1tcxEubwI4CWfov/HWRBgD/fqlPC3d5i30CY=" [mod."github.com/minio/highwayhash"] - version = "v1.0.2" - hash = "sha256-UeHeepKtToyA5e/w3KdmpbCn+4medesZG0cAcU6P2cY=" + version = "v1.0.3" + hash = "sha256-5M2Y3d0hnvo8JHz6910upUNbRRaUVes90F0jaIzo4pE=" [mod."github.com/mitchellh/go-homedir"] version = "v1.1.0" hash = "sha256-oduBKXHAQG8X6aqLEpqZHs5DOKe84u6WkBwi4W6cv3k=" @@ -470,6 +474,9 @@ schema = 3 [mod."github.com/mtibben/percent"] version = "v0.2.1" hash = "sha256-Zj1lpCP6mKQ0UUTMs2By4LC414ou+iJzKkK+eBHfEcc=" + [mod."github.com/munnerz/goautoneg"] + version = "v0.0.0-20191010083416-a7dc8b61c822" + hash = "sha256-79URDDFenmGc9JZu+5AXHToMrtTREHb3BC84b/gym9Q=" [mod."github.com/oasisprotocol/curve25519-voi"] version = "v0.0.0-20230904125328-1f23a7beb09a" hash = "sha256-N5MMNn4rytO3ObXVXoY34Sf7AGPkw2dTPkXjigjozls=" @@ -486,8 +493,8 @@ schema = 3 version = "v1.26.0" hash = "sha256-B18jsoJHK/oE+wudT0dOsUb41s5+ZIAu/ZBzQ5djOLE=" [mod."github.com/pelletier/go-toml/v2"] - version = "v2.1.1" - hash = "sha256-BQtflYQ8Dt7FL/yFI9OnxwvsRk0oEO37ZXuGXFveVpo=" + version = "v2.2.2" + hash = "sha256-ukxk1Cfm6cQW18g/aa19tLcUu5BnF7VmfAvrDHAOl6A=" [mod."github.com/petermattis/goid"] version = "v0.0.0-20231207134359-e60b3f734c67" hash = "sha256-73DbyhUTwYhqmvbcI96CNblTrfl6uz9OvM6z/h8j5TM=" @@ -498,17 +505,17 @@ schema = 3 version = "v1.0.1-0.20181226105442-5d4384ee4fb2" hash = "sha256-XA4Oj1gdmdV/F/+8kMI+DBxKPthZ768hbKsO3d9Gx90=" [mod."github.com/prometheus/client_golang"] - version = "v1.19.0" - hash = "sha256-YV8sxMPR+xorTUCriTfcFsaV2b7PZfPJDQmOgUYOZJo=" + version = "v1.20.1" + hash = "sha256-V6r2m3/bh07DYL2y6eMdXg6msM0G0k3abJdUoyrmYLU=" [mod."github.com/prometheus/client_model"] version = "v0.6.1" hash = "sha256-rIDyUzNfxRA934PIoySR0EhuBbZVRK/25Jlc/r8WODw=" [mod."github.com/prometheus/common"] - version = "v0.52.2" - hash = "sha256-XQUvk9/Kwf9NDlDUVl7mOWRD7z7z9QEbLH/rNU4D2nI=" + version = "v0.57.0" + hash = "sha256-Lh9qK+5EfNHvT9u9QNvCTZFHJDB7CiFiHB+XqGENXNY=" [mod."github.com/prometheus/procfs"] - version = "v0.13.0" - hash = "sha256-J31K36TkIiQU2EGOcmqDa+dkoKXiVuxafPVT4rKbEsg=" + version = "v0.15.1" + hash = "sha256-H+WXJemFFwdoglmD6p7JRjrJJZmIVAmJwYmLbZ8Q9sw=" [mod."github.com/rcrowley/go-metrics"] version = "v0.0.0-20201227073835-cf1acfcdf475" hash = "sha256-10ytHQ1SpMKYTiKuOPdEMuOVa8HVvv9ryYSIF9BHEBI=" @@ -516,11 +523,11 @@ schema = 3 version = "v1.12.0" hash = "sha256-qvDNCe3l84/LgrA8X4O15e1FeDcazyX91m9LmXGXX6M=" [mod."github.com/rs/cors"] - version = "v1.10.1" - hash = "sha256-um4INJM5/675MLK42npIsDbSQ1/Iy5ZiUNuAFReUfeM=" + version = "v1.11.1" + hash = "sha256-0z4aFR5VjuVYn+XnANbjui0ADcdG7gU56A9Y/NtrzCQ=" [mod."github.com/rs/zerolog"] - version = "v1.32.0" - hash = "sha256-9dZjtsES+wLp1cFiSVMuEUbdeXVFcgT0dgg5ACZkILk=" + version = "v1.33.0" + hash = "sha256-jT/Y/izhZiCdrDbC/ty83FGs8UQavTU+OW03O4vKFkY=" [mod."github.com/sagikazarmark/locafero"] version = "v0.4.0" hash = "sha256-7I1Oatc7GAaHgAqBFO6Tv4IbzFiYeU9bJAfJhXuWaXk=" @@ -543,14 +550,14 @@ schema = 3 version = "v1.6.0" hash = "sha256-hxioqRZfXE0AE5099wmn3YG0AZF8Wda2EB4c7zHF6zI=" [mod."github.com/spf13/cobra"] - version = "v1.8.0" - hash = "sha256-oAE+fEaRfZPE541IPWE0GMeBBYgH2DMhtZNxzp7DFlY=" + version = "v1.8.1" + hash = "sha256-yDF6yAHycV1IZOrt3/hofR+QINe+B2yqkcIaVov3Ky8=" [mod."github.com/spf13/pflag"] version = "v1.0.5" hash = "sha256-w9LLYzxxP74WHT4ouBspH/iQZXjuAh2WQCHsuvyEjAw=" [mod."github.com/spf13/viper"] - version = "v1.18.2" - hash = "sha256-MXYbK6w1LEaoZ2/L/STF3WU1tbK+7NwGVxUCLKPkwks=" + version = "v1.19.0" + hash = "sha256-MZ8EAvdgpGbw6kmUz8UOaAAAMdPPGd14TrCBAY+A1T4=" [mod."github.com/status-im/keycard-go"] version = "v0.2.0" hash = "sha256-UUiGmlgaIZDeMUJv3fdZBoQ9hJeSsg2ixRGmm6TgHug=" @@ -605,83 +612,80 @@ schema = 3 version = "v0.14.3" hash = "sha256-tldEok5ebZ4R4B7H8dSlYS5oVuLvh89n9wUaVlDjYwg=" [mod."go.etcd.io/bbolt"] - version = "v1.3.8" - hash = "sha256-ekKy8198B2GfPldHLYZnvNjID6x07dUPYKgFx84TgVs=" + version = "v1.4.0-alpha.0.0.20240404170359-43604f3112c5" + hash = "sha256-U/PkBhk4m6iKFDuR0ULO4EFXb8gFnKNGgNnwMU0OGoM=" [mod."go.opencensus.io"] version = "v0.24.0" hash = "sha256-4H+mGZgG2c9I1y0m8avF4qmt8LUKxxVsTqR8mKgP4yo=" [mod."go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"] - version = "v0.47.0" - hash = "sha256-D+bP2jEZcB4S8AprlDM3qAghYtxhqc8fSKZNac6WVFs=" + version = "v0.49.0" + hash = "sha256-cgb4o14zow/ztWOKyXi7XQwVxV7OIsT2Ko8yaqQ7Lb8=" [mod."go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"] - version = "v0.47.0" - hash = "sha256-Pv1X0oIWYXyVxEaDQmgYcw+49I9+65N9Y+1wbxoXOog=" + version = "v0.49.0" + hash = "sha256-1/7YxtXZM4i75rXXIO6UN4CTY93nE/v2k2htS0uUOVg=" [mod."go.opentelemetry.io/otel"] - version = "v1.22.0" - hash = "sha256-4K70RPjaPzPpTO/VkE9ueoSo9EANuNXneDR6jEiUaJQ=" + version = "v1.24.0" + hash = "sha256-VGyV7EqJX6mRY0Ecyg+g0IZy+dt1GES4r9txQcaTNUg=" [mod."go.opentelemetry.io/otel/metric"] - version = "v1.22.0" - hash = "sha256-Lb4wdlZNmz6Ut6CljBAePSUA8X0RBEOEDyOl2oO+pL8=" + version = "v1.24.0" + hash = "sha256-KB5UQiaVmbB2VZO3al4WHb5HY79ioWaAQjaGkUKLvP8=" [mod."go.opentelemetry.io/otel/trace"] - version = "v1.22.0" - hash = "sha256-38zzkmcoOzYYeDN+rC44HmwmdnalIcEpObCS6tIvMO8=" + version = "v1.24.0" + hash = "sha256-FHP0hg+i7+wxCsM0u/5hQcgvvr3D+lq8o/7E/HkaW4s=" [mod."go.uber.org/multierr"] version = "v1.11.0" hash = "sha256-Lb6rHHfR62Ozg2j2JZy3MKOMKdsfzd1IYTR57r3Mhp0=" [mod."golang.org/x/crypto"] - version = "v0.22.0" - hash = "sha256-2+u9nd32+Bi7EEv7QFc12CRTbfV7DApNv+yKIr7+lTw=" + version = "v0.27.0" + hash = "sha256-8HP4+gr4DbXI22GhdgZmCWr1ijtI9HNLsTcE0kltY9o=" [mod."golang.org/x/exp"] - version = "v0.0.0-20240404231335-c0f41cb1a7a0" - hash = "sha256-pBDEjILNDJVYAaUIPOoTwMetstVvMybVKtTvFbLM/tg=" + version = "v0.0.0-20240613232115-7f521ea00fb8" + hash = "sha256-QRK52QHPPhj+JIcQbd4/hI5ceEbKu3e9mR57XxocwOE=" [mod."golang.org/x/mod"] - version = "v0.17.0" - hash = "sha256-CLaPeF6uTFuRDv4oHwOQE6MCMvrzkUjWN3NuyywZjKU=" + version = "v0.18.0" + hash = "sha256-zCSO2dmE0nhrScqRKzIUeqiELzCyBA6MDAW1NV1hTZw=" [mod."golang.org/x/net"] - version = "v0.24.0" - hash = "sha256-w1c21ljta5wNIyel9CSIn/crPzwOCRofNKhqmfs4aEQ=" + version = "v0.29.0" + hash = "sha256-dH9Rdf5T04KJ4B5WvIZh12ogMbADWiWgIt77nvPTk2k=" [mod."golang.org/x/oauth2"] - version = "v0.18.0" - hash = "sha256-TX4CvtvHU+SGSmqlxaQqlgJjlJiOtLGYAZa0zeBfZak=" + version = "v0.21.0" + hash = "sha256-0xgi5k7fxMScMH+rDwXhDqe8raTFHh5ih727jGVS918=" [mod."golang.org/x/sync"] - version = "v0.7.0" - hash = "sha256-2ETllEu2GDWoOd/yMkOkLC2hWBpKzbVZ8LhjLu0d2A8=" + version = "v0.8.0" + hash = "sha256-usvF0z7gq1vsX58p4orX+8WHlv52pdXgaueXlwj2Wss=" [mod."golang.org/x/sys"] - version = "v0.19.0" - hash = "sha256-cmuL31TYLJmDm/fDnI2Sn0wB88cpdOHV1+urorsJWx4=" + version = "v0.25.0" + hash = "sha256-PXZ9EQZ7SFpcL7d3E1+KGTxziYlHEIZPfoXEbnaVD3I=" [mod."golang.org/x/term"] - version = "v0.19.0" - hash = "sha256-wFwEMwhtsr0C4mqjxukjMM7lxJLYPvb7gAPO95xyhyg=" + version = "v0.24.0" + hash = "sha256-PfC5psjzEWKRm1DlnBXX0ntw9OskJFrq1RRjyBa1lOk=" [mod."golang.org/x/text"] - version = "v0.14.0" - hash = "sha256-yh3B0tom1RfzQBf1RNmfdNWF1PtiqxV41jW1GVS6JAg=" + version = "v0.18.0" + hash = "sha256-aNvJW4gQs+MTfdz6DZqyyHQS2GJ9W8L8qKPVODPn4+k=" [mod."golang.org/x/time"] version = "v0.5.0" hash = "sha256-W6RgwgdYTO3byIPOFxrP2IpAZdgaGowAaVfYby7AULU=" [mod."golang.org/x/tools"] - version = "v0.20.0" - hash = "sha256-g5T5FrNPO/cf2W1lc+/93FcFB3HftPjqI72FueD9Wt8=" + version = "v0.22.0" + hash = "sha256-07Vf9dS8pa2JAXpbNc03Kf6d3SkX1R0MdJSysRS2IOI=" [mod."google.golang.org/api"] - version = "v0.162.0" - hash = "sha256-+AsT4DPjefEmPPelZoSHuQ8nCHhmhhUWU4UGnJ/8+fg=" - [mod."google.golang.org/appengine"] - version = "v1.6.8" - hash = "sha256-decMa0MiWfW/Bzr8QPPzzpeya0YWGHhZAt4Cr/bD1wQ=" + version = "v0.186.0" + hash = "sha256-dSr9mxKwuE4/m3OYtjTeVHMxyXw9cCgKsBwDqvBr2HU=" [mod."google.golang.org/genproto"] - version = "v0.0.0-20240227224415-6ceb2ff114de" - hash = "sha256-G+tvsCTXxzk3sS6HbBxPN1DYaN1tPOqKsa60mI05Feg=" + version = "v0.0.0-20240701130421-f6361c86f094" + hash = "sha256-5ZxSUe1BHYoiaiw0K1lLJmuobmBvk0+Y3CNkaLMnEic=" [mod."google.golang.org/genproto/googleapis/api"] - version = "v0.0.0-20240227224415-6ceb2ff114de" - hash = "sha256-H3d2ZhPJI9RH5EK9NsxUAFmT6tr2DgGV9SjZgqJ80r4=" + version = "v0.0.0-20240701130421-f6361c86f094" + hash = "sha256-uDvld45ensSUweUJYFdUfVt/0mNRrexpuQ3Jas3GMv4=" [mod."google.golang.org/genproto/googleapis/rpc"] - version = "v0.0.0-20240401170217-c3f982113cda" - hash = "sha256-P5SBku16dYnK4koUQxTeGwPxAAWH8rxbDm2pOzFLo/Q=" + version = "v0.0.0-20240709173604-40e1e62336c5" + hash = "sha256-ass/74EkCljwk7DaASDtK2zipn2cZv6tCLKvwONUWgY=" [mod."google.golang.org/grpc"] - version = "v1.63.2" - hash = "sha256-RmtVjYLam97k7IHTHU7Gn16xNX+GvA9AiLKlQwOiZXU=" + version = "v1.66.1" + hash = "sha256-RIXP4zfg3dUciGpnbf0k2KTw8SAnSm06iCz+5dTW0iw=" [mod."google.golang.org/protobuf"] - version = "v1.33.0" - hash = "sha256-cWwQjtUwSIEkAlAadrlxK1PYZXTRrV4NKzt7xDpJgIU=" + version = "v1.34.2" + hash = "sha256-nMTlrDEE2dbpWz50eQMPBQXCyQh4IdjrTIccaU0F3m0=" [mod."gopkg.in/ini.v1"] version = "v1.67.0" hash = "sha256-V10ahGNGT+NLRdKUyRg1dos5RxLBXBk1xutcnquc/+4=" diff --git a/nix/default.nix b/nix/default.nix index f3f6433c9b..c8943df9d7 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -8,7 +8,7 @@ import sources.nixpkgs { go-ethereum = pkgs.callPackage ./go-ethereum.nix { inherit (pkgs.darwin) libobjc; inherit (pkgs.darwin.apple_sdk.frameworks) IOKit; - buildGoModule = pkgs.buildGo120Module; + buildGoModule = pkgs.buildGo121Module; }; }) # update to a version that supports eip-1559 (import "${sources.poetry2nix}/overlay.nix") @@ -24,7 +24,7 @@ import sources.nixpkgs { }) (_: pkgs: { test-env = pkgs.callPackage ./testenv.nix { }; }) (_: pkgs: { - cosmovisor = pkgs.buildGo120Module rec { + cosmovisor = pkgs.buildGo121Module rec { name = "cosmovisor"; src = sources.cosmos-sdk + "/cosmovisor"; subPackages = [ "./cmd/cosmovisor" ]; diff --git a/nix/sources.json b/nix/sources.json index 054b1ea6e1..99eb3aadc5 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -17,10 +17,10 @@ "homepage": null, "owner": "nix-community", "repo": "gomod2nix", - "rev": "30e3c3a9ec4ac8453282ca7f67fca9e1da12c3e6", - "sha256": "1m0q0p1xidsp61xfrbj8ld1dqk3fhyrfifxj2ks36yjbnzmi1x69", + "rev": "31b6d2e40b36456e792cd6cf50d5a8ddd2fa59a1", + "sha256": "0b8cmc8dk34pgcac5s1jvryfcn8kyhbzhh1i22rzv5kf00f09lhb", "type": "tarball", - "url": "https://github.com/nix-community/gomod2nix/archive/30e3c3a9ec4ac8453282ca7f67fca9e1da12c3e6.tar.gz", + "url": "https://github.com/nix-community/gomod2nix/archive/31b6d2e40b36456e792cd6cf50d5a8ddd2fa59a1.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "niv": { @@ -41,10 +41,10 @@ "homepage": "", "owner": "NixOS", "repo": "nixpkgs", - "rev": "86ef6bd96b6279e1a4a53236d341f5df1ede3803", - "sha256": "0mmgk3bg8rqs4mlsaxr5hyvzqn3sg53pqqm1aiwq00kmcnhds7nx", + "rev": "63dacb46bf939521bdc93981b4cbb7ecb58427a0", + "sha256": "1lr1h35prqkd1mkmzriwlpvxcb34kmhc9dnr48gkm8hh089hifmx", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/86ef6bd96b6279e1a4a53236d341f5df1ede3803.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/63dacb46bf939521bdc93981b4cbb7ecb58427a0.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "poetry2nix": { diff --git a/server/start.go b/server/start.go index 2ec776339d..b1e6c290f3 100644 --- a/server/start.go +++ b/server/start.go @@ -580,7 +580,7 @@ func startGrpcServer( } // if gRPC is enabled, configure gRPC client for gRPC gateway and json-rpc - grpcClient, err := grpc.Dial( + grpcClient, err := grpc.NewClient( config.Address, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithDefaultCallOptions( diff --git a/tests/integration_tests/poetry.lock b/tests/integration_tests/poetry.lock index f0623209a6..8149161d65 100644 --- a/tests/integration_tests/poetry.lock +++ b/tests/integration_tests/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "aiohttp" @@ -1759,62 +1759,64 @@ files = [ [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] @@ -2452,4 +2454,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "65304e32f3e7250a07fb7efedcb7649c08d4a421ddbba9ce0b1b0097e3e3b277" +content-hash = "250de604d40c8546d723cca7b74a237ac10d99d4c525f91be84783430f2f2267" diff --git a/tests/integration_tests/pyproject.toml b/tests/integration_tests/pyproject.toml index c7376e91fb..eff0e248ea 100644 --- a/tests/integration_tests/pyproject.toml +++ b/tests/integration_tests/pyproject.toml @@ -28,6 +28,7 @@ eth-bloom = "^3.0" eth-hash = "^0" jedi-language-server = "^0.41.3" pytest-timeout = "^2.3.1" +pyyaml = "^6.0.2rc1" [tool.poetry.dev-dependencies] From b16b4891a23b2f9f6f7ad5352c28e4cc1f5ba5f6 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 4 Oct 2024 09:24:09 +0800 Subject: [PATCH 028/210] Problem: get unnecessary block result in header related api call (#535) * Problem: get unnecessary block result in DoCall * GetProof GetBalance * HeaderByNumber * EstimateGas * TraceCall * fix test --- CHANGELOG.md | 2 +- rpc/backend/account_info.go | 4 +- rpc/backend/account_info_test.go | 29 ++++++----- rpc/backend/blocks.go | 66 +++++++++++++++++-------- rpc/backend/blocks_test.go | 31 +++++++----- rpc/backend/call_tx.go | 9 ++-- rpc/backend/call_tx_test.go | 75 +++++++++++++++-------------- rpc/backend/client_test.go | 23 +++++++++ rpc/backend/sign_tx_test.go | 22 ++++----- rpc/backend/tracing.go | 12 ++--- rpc/backend/tracing_test.go | 3 +- tests/integration_tests/test_gas.py | 2 +- 12 files changed, 174 insertions(+), 104 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 400cc0827f..0ca67bb764 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -90,7 +90,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (ante) [#504](https://github.com/crypto-org-chain/ethermint/pull/504) Optimize AnteHandle method to skip checks if disabledMsgs is empty. * [#517](https://github.com/crypto-org-chain/ethermint/pull/517) Add check for integer overflow to ensure safe conversion. * [#522](https://github.com/crypto-org-chain/ethermint/pull/522) block-stm executor support optional pre-estimations. -* [#526](https://github.com/crypto-org-chain/ethermint/pull/526) Avoid unnecessary block result in header related api call. +* [#526](https://github.com/crypto-org-chain/ethermint/pull/526), [#535](https://github.com/crypto-org-chain/ethermint/pull/535) Avoid unnecessary block result in header related api call. * [#533](https://github.com/crypto-org-chain/ethermint/pull/533) Bump cosmos-sdk to v0.50.10, cometbft to v0.38.13 and ibc-go to v8.5.1. ## v0.21.x-cronos diff --git a/rpc/backend/account_info.go b/rpc/backend/account_info.go index b3069038a2..fe3af58b88 100644 --- a/rpc/backend/account_info.go +++ b/rpc/backend/account_info.go @@ -59,7 +59,7 @@ func (b *Backend) GetProof(address common.Address, storageKeys []string, blockNr } height := blockNum.Int64() - _, err = b.TendermintBlockByNumber(blockNum) + _, err = b.TendermintHeaderByNumber(blockNum) if err != nil { // the error message imitates geth behavior return nil, errors.New("header not found") @@ -163,7 +163,7 @@ func (b *Backend) GetBalance(address common.Address, blockNrOrHash rpctypes.Bloc Address: address.String(), } - _, err = b.TendermintBlockByNumber(blockNum) + _, err = b.TendermintHeaderByNumber(blockNum) if err != nil { return nil, err } diff --git a/rpc/backend/account_info_test.go b/rpc/backend/account_info_test.go index 200cf36385..e3a7abe018 100644 --- a/rpc/backend/account_info_test.go +++ b/rpc/backend/account_info_test.go @@ -97,7 +97,8 @@ func (suite *BackendTestSuite) TestGetProof() { rpctypes.BlockNumberOrHash{BlockNumber: &blockNrInvalid}, func(bn rpctypes.BlockNumber, addr common.Address) { client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlock(client, bn.Int64(), nil) + height := bn.Int64() + RegisterHeader(client, &height, nil) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterAccount(queryClient, addr, blockNrInvalid.Int64()) }, @@ -111,7 +112,8 @@ func (suite *BackendTestSuite) TestGetProof() { rpctypes.BlockNumberOrHash{BlockNumber: &blockNrInvalid}, func(bn rpctypes.BlockNumber, addr common.Address) { client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlockError(client, bn.Int64()) + height := bn.Int64() + RegisterHeaderError(client, &height) }, false, &rpctypes.AccountResult{}, @@ -122,12 +124,12 @@ func (suite *BackendTestSuite) TestGetProof() { []string{"0x0"}, rpctypes.BlockNumberOrHash{BlockNumber: &blockNr}, func(bn rpctypes.BlockNumber, addr common.Address) { - suite.backend.ctx = rpctypes.ContextWithHeight(bn.Int64()) - + height := bn.Int64() + suite.backend.ctx = rpctypes.ContextWithHeight(height) client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlock(client, bn.Int64(), nil) + RegisterHeader(client, &height, nil) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) - RegisterAccount(queryClient, addr, bn.Int64()) + RegisterAccount(queryClient, addr, height) // Use the IAVL height if a valid tendermint height is passed in. iavlHeight := bn.Int64() @@ -270,7 +272,8 @@ func (suite *BackendTestSuite) TestGetBalance() { rpctypes.BlockNumberOrHash{BlockNumber: &blockNr}, func(bn rpctypes.BlockNumber, addr common.Address) { client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlockError(client, bn.Int64()) + height := bn.Int64() + RegisterHeaderError(client, &height) }, false, nil, @@ -281,7 +284,8 @@ func (suite *BackendTestSuite) TestGetBalance() { rpctypes.BlockNumberOrHash{BlockNumber: &blockNr}, func(bn rpctypes.BlockNumber, addr common.Address) { client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlock(client, bn.Int64(), nil) + height := bn.Int64() + RegisterHeader(client, &height, nil) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterBalanceError(queryClient, addr, bn.Int64()) }, @@ -294,7 +298,8 @@ func (suite *BackendTestSuite) TestGetBalance() { rpctypes.BlockNumberOrHash{BlockNumber: &blockNr}, func(bn rpctypes.BlockNumber, addr common.Address) { client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlock(client, bn.Int64(), nil) + height := bn.Int64() + RegisterHeader(client, &height, nil) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterBalanceInvalid(queryClient, addr, bn.Int64()) }, @@ -307,7 +312,8 @@ func (suite *BackendTestSuite) TestGetBalance() { rpctypes.BlockNumberOrHash{BlockNumber: &blockNr}, func(bn rpctypes.BlockNumber, addr common.Address) { client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlock(client, bn.Int64(), nil) + height := bn.Int64() + RegisterHeader(client, &height, nil) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterBalanceNegative(queryClient, addr, bn.Int64()) }, @@ -320,7 +326,8 @@ func (suite *BackendTestSuite) TestGetBalance() { rpctypes.BlockNumberOrHash{BlockNumber: &blockNr}, func(bn rpctypes.BlockNumber, addr common.Address) { client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlock(client, bn.Int64(), nil) + height := bn.Int64() + RegisterHeader(client, &height, nil) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) RegisterBalance(queryClient, addr, bn.Int64()) }, diff --git a/rpc/backend/blocks.go b/rpc/backend/blocks.go index 28ab754487..131c8407ff 100644 --- a/rpc/backend/blocks.go +++ b/rpc/backend/blocks.go @@ -173,30 +173,52 @@ func (b *Backend) GetBlockTransactionCount(block *tmrpctypes.ResultBlock) *hexut // TendermintBlockByNumber returns a Tendermint-formatted block for a given // block number func (b *Backend) TendermintBlockByNumber(blockNum rpctypes.BlockNumber) (*tmrpctypes.ResultBlock, error) { + height, err := b.getHeightByBlockNum(blockNum) + if err != nil { + return nil, err + } + resBlock, err := b.clientCtx.Client.Block(b.ctx, &height) + if err != nil { + b.logger.Debug("tendermint client failed to get block", "height", height, "error", err.Error()) + return nil, err + } + + if resBlock.Block == nil { + b.logger.Debug("TendermintBlockByNumber block not found", "height", height) + return nil, nil + } + + return resBlock, nil +} + +func (b *Backend) getHeightByBlockNum(blockNum rpctypes.BlockNumber) (int64, error) { height := blockNum.Int64() if height <= 0 { // fetch the latest block number from the app state, more accurate than the tendermint block store state. n, err := b.BlockNumber() if err != nil { - return nil, err + return 0, err } height, err = ethermint.SafeHexToInt64(n) if err != nil { - return nil, err + return 0, err } } - resBlock, err := b.clientCtx.Client.Block(b.ctx, &height) + return height, nil +} + +// TendermintHeaderByNumber returns a Tendermint-formatted header for a given +// block number +func (b *Backend) TendermintHeaderByNumber(blockNum rpctypes.BlockNumber) (*tmrpctypes.ResultHeader, error) { + height, err := b.getHeightByBlockNum(blockNum) if err != nil { - b.logger.Debug("tendermint client failed to get block", "height", height, "error", err.Error()) return nil, err } - - if resBlock.Block == nil { - b.logger.Debug("TendermintBlockByNumber block not found", "height", height) - return nil, nil + sc, ok := b.clientCtx.Client.(tmrpcclient.SignClient) + if !ok { + return nil, errors.New("invalid rpc client") } - - return resBlock, nil + return sc.Header(b.ctx, &height) } // TendermintBlockResultByNumber returns a Tendermint-formatted block result @@ -257,6 +279,9 @@ func (b *Backend) BlockNumberFromTendermintByHash(blockHash common.Hash) (*big.I if err != nil { return nil, err } + if resHeader.Header == nil { + return nil, errors.Errorf("header not found for hash %s", blockHash.Hex()) + } return big.NewInt(resHeader.Header.Height), nil } @@ -302,35 +327,35 @@ func (b *Backend) EthMsgsFromTendermintBlock( // HeaderByNumber returns the block header identified by height. func (b *Backend) HeaderByNumber(blockNum rpctypes.BlockNumber) (*ethtypes.Header, error) { - resBlock, err := b.TendermintBlockByNumber(blockNum) + res, err := b.TendermintHeaderByNumber(blockNum) if err != nil { return nil, err } - if resBlock == nil { - return nil, errors.Errorf("block not found for height %d", blockNum) + if res == nil || res.Header == nil { + return nil, errors.Errorf("header not found for height %d", blockNum) } - blockRes, err := b.TendermintBlockResultByNumber(&resBlock.Block.Height) + blockRes, err := b.TendermintBlockResultByNumber(&res.Header.Height) if err != nil { - return nil, fmt.Errorf("block result not found for height %d", resBlock.Block.Height) + return nil, fmt.Errorf("header result not found for height %d", res.Header.Height) } bloom, err := b.BlockBloom(blockRes) if err != nil { - b.logger.Debug("HeaderByNumber BlockBloom failed", "height", resBlock.Block.Height) + b.logger.Debug("HeaderByNumber BlockBloom failed", "height", res.Header.Height) } baseFee, err := b.BaseFee(blockRes) if err != nil { // handle the error for pruned node. - b.logger.Error("failed to fetch Base Fee from prunned block. Check node prunning configuration", "height", resBlock.Block.Height, "error", err) + b.logger.Error("failed to fetch Base Fee from prunned block. Check node prunning configuration", "height", res.Header.Height, "error", err) } - validator, err := b.getValidatorAccount(&resBlock.Block.Header) + validator, err := b.getValidatorAccount(res.Header) if err != nil { return nil, err } - ethHeader := rpctypes.EthHeaderFromTendermint(resBlock.Block.Header, bloom, baseFee, validator) + ethHeader := rpctypes.EthHeaderFromTendermint(*res.Header, bloom, baseFee, validator) return ethHeader, nil } @@ -344,6 +369,9 @@ func (b *Backend) HeaderByHash(blockHash common.Hash) (*ethtypes.Header, error) if err != nil { return nil, err } + if resHeader.Header == nil { + return nil, errors.Errorf("header not found for hash %s", blockHash.Hex()) + } blockRes, err := b.TendermintBlockResultByNumber(&resHeader.Header.Height) if err != nil { return nil, errors.Errorf("block result not found for height %d", resHeader.Header.Height) diff --git a/rpc/backend/blocks_test.go b/rpc/backend/blocks_test.go index cf36189793..f40e96d6c8 100644 --- a/rpc/backend/blocks_test.go +++ b/rpc/backend/blocks_test.go @@ -1191,7 +1191,7 @@ func (suite *BackendTestSuite) TestEthMsgsFromTendermintBlock() { } func (suite *BackendTestSuite) TestHeaderByNumber() { - var expResultBlock *tmrpctypes.ResultBlock + var expResultHeader *tmrpctypes.ResultHeader _, bz := suite.buildEthereumTx() validator := sdk.AccAddress(tests.GenerateAddress().Bytes()) @@ -1210,29 +1210,29 @@ func (suite *BackendTestSuite) TestHeaderByNumber() { func(blockNum ethrpc.BlockNumber, baseFee sdkmath.Int) { height := blockNum.Int64() client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlockError(client, height) + RegisterHeaderError(client, &height) }, false, }, { - "fail - block not found for height", + "fail - header not found for height", ethrpc.BlockNumber(1), sdkmath.NewInt(1).BigInt(), func(blockNum ethrpc.BlockNumber, baseFee sdkmath.Int) { height := blockNum.Int64() client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlockNotFound(client, height) + RegisterHeaderNotFound(client, height) }, false, }, { - "fail - block not found for height", + "fail - header not found for height", ethrpc.BlockNumber(1), sdkmath.NewInt(1).BigInt(), func(blockNum ethrpc.BlockNumber, baseFee sdkmath.Int) { height := blockNum.Int64() client := suite.backend.clientCtx.Client.(*mocks.Client) - RegisterBlock(client, height, nil) + RegisterHeader(client, &height, nil) RegisterBlockResultsError(client, height) }, false, @@ -1244,7 +1244,7 @@ func (suite *BackendTestSuite) TestHeaderByNumber() { func(blockNum ethrpc.BlockNumber, baseFee sdkmath.Int) { height := blockNum.Int64() client := suite.backend.clientCtx.Client.(*mocks.Client) - expResultBlock, _ = RegisterBlock(client, height, nil) + expResultHeader, _ = RegisterHeader(client, &height, nil) RegisterBlockResults(client, height) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) @@ -1260,7 +1260,7 @@ func (suite *BackendTestSuite) TestHeaderByNumber() { func(blockNum ethrpc.BlockNumber, baseFee sdkmath.Int) { height := blockNum.Int64() client := suite.backend.clientCtx.Client.(*mocks.Client) - expResultBlock, _ = RegisterBlock(client, height, nil) + expResultHeader, _ = RegisterHeader(client, &height, nil) RegisterBlockResults(client, height) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) @@ -1276,7 +1276,7 @@ func (suite *BackendTestSuite) TestHeaderByNumber() { func(blockNum ethrpc.BlockNumber, baseFee sdkmath.Int) { height := blockNum.Int64() client := suite.backend.clientCtx.Client.(*mocks.Client) - expResultBlock, _ = RegisterBlock(client, height, bz) + expResultHeader, _ = RegisterHeader(client, &height, bz) RegisterBlockResults(client, height) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) @@ -1294,7 +1294,7 @@ func (suite *BackendTestSuite) TestHeaderByNumber() { header, err := suite.backend.HeaderByNumber(tc.blockNumber) if tc.expPass { - expHeader := ethrpc.EthHeaderFromTendermint(expResultBlock.Block.Header, ethtypes.Bloom{}, tc.baseFee, validator) + expHeader := ethrpc.EthHeaderFromTendermint(*expResultHeader.Header, ethtypes.Bloom{}, tc.baseFee, validator) suite.Require().NoError(err) suite.Require().Equal(expHeader, header) } else { @@ -1330,6 +1330,16 @@ func (suite *BackendTestSuite) TestHeaderByHash() { }, false, }, + { + "fail - header not found for height", + common.BytesToHash(block.Hash()), + sdkmath.NewInt(1).BigInt(), + func(hash common.Hash, baseFee sdkmath.Int) { + client := suite.backend.clientCtx.Client.(*mocks.Client) + RegisterHeaderByHashNotFound(client, hash, bz) + }, + false, + }, { "fail - block not found for height", common.BytesToHash(block.Hash()), @@ -1339,7 +1349,6 @@ func (suite *BackendTestSuite) TestHeaderByHash() { client := suite.backend.clientCtx.Client.(*mocks.Client) RegisterHeaderByHash(client, hash, bz) RegisterBlockResultsError(client, height) - RegisterHeaderByHashError(client, hash, bz) }, false, }, diff --git a/rpc/backend/call_tx.go b/rpc/backend/call_tx.go index f9be170c78..c42a33fda1 100644 --- a/rpc/backend/call_tx.go +++ b/rpc/backend/call_tx.go @@ -333,7 +333,7 @@ func (b *Backend) EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *rp return 0, err } - header, err := b.TendermintBlockByNumber(blockNr) + header, err := b.TendermintHeaderByNumber(blockNr) if err != nil { // the error message imitates geth behavior return 0, errors.New("header not found") @@ -342,7 +342,7 @@ func (b *Backend) EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *rp req := evmtypes.EthCallRequest{ Args: bz, GasCap: b.RPCGasCap(), - ProposerAddress: sdk.ConsAddress(header.Block.ProposerAddress), + ProposerAddress: sdk.ConsAddress(header.Header.ProposerAddress), ChainId: b.chainID.Int64(), } @@ -369,12 +369,11 @@ func (b *Backend) DoCall( if err != nil { return nil, err } - header, err := b.TendermintBlockByNumber(blockNr) + header, err := b.TendermintHeaderByNumber(blockNr) if err != nil { // the error message imitates geth behavior return nil, errors.New("header not found") } - var bzOverrides []byte if overrides != nil { bzOverrides = *overrides @@ -383,7 +382,7 @@ func (b *Backend) DoCall( req := evmtypes.EthCallRequest{ Args: bz, GasCap: b.RPCGasCap(), - ProposerAddress: sdk.ConsAddress(header.Block.ProposerAddress), + ProposerAddress: sdk.ConsAddress(header.Header.ProposerAddress), ChainId: b.chainID.Int64(), Overrides: bzOverrides, } diff --git a/rpc/backend/call_tx_test.go b/rpc/backend/call_tx_test.go index 9ace06c491..dd1a377913 100644 --- a/rpc/backend/call_tx_test.go +++ b/rpc/backend/call_tx_test.go @@ -24,6 +24,7 @@ func (suite *BackendTestSuite) TestResend() { toAddr := tests.GenerateAddress() chainID := (*hexutil.Big)(suite.backend.chainID) validator := sdk.AccAddress(tests.GenerateAddress().Bytes()) + height := int64(1) callArgs := evmtypes.TransactionArgs{ From: nil, To: &toAddr, @@ -65,8 +66,8 @@ func (suite *BackendTestSuite) TestResend() { var header metadata.MD client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) - RegisterParams(queryClient, &header, 1) - RegisterBlock(client, 1, nil) + RegisterParams(queryClient, &header, height) + RegisterHeader(client, &height, nil) RegisterBlockResults(client, 1) RegisterBaseFeeDisabled(queryClient) RegisterValidatorAccount(queryClient, validator) @@ -87,10 +88,10 @@ func (suite *BackendTestSuite) TestResend() { client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) feeMarketClient := suite.backend.queryClient.FeeMarket.(*mocks.FeeMarketQueryClient) - RegisterParams(queryClient, &header, 1) - RegisterFeeMarketParams(feeMarketClient, 1) - RegisterBlock(client, 1, nil) - RegisterBlockResults(client, 1) + RegisterParams(queryClient, &header, height) + RegisterFeeMarketParams(feeMarketClient, height) + RegisterHeader(client, &height, nil) + RegisterBlockResults(client, height) RegisterBaseFee(queryClient, baseFee) RegisterValidatorAccount(queryClient, validator) }, @@ -108,9 +109,9 @@ func (suite *BackendTestSuite) TestResend() { var header metadata.MD client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) - RegisterParams(queryClient, &header, 1) - RegisterBlock(client, 1, nil) - RegisterBlockResults(client, 1) + RegisterParams(queryClient, &header, height) + RegisterHeader(client, &height, nil) + RegisterBlockResults(client, height) RegisterBaseFeeDisabled(queryClient) RegisterValidatorAccount(queryClient, validator) }, @@ -145,8 +146,8 @@ func (suite *BackendTestSuite) TestResend() { var header metadata.MD client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) - RegisterParams(queryClient, &header, 1) - RegisterBlockError(client, 1) + RegisterParams(queryClient, &header, height) + RegisterHeaderError(client, &height) }, evmtypes.TransactionArgs{ Nonce: &txNonce, @@ -162,9 +163,9 @@ func (suite *BackendTestSuite) TestResend() { var header metadata.MD client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) - RegisterParams(queryClient, &header, 1) - RegisterBlock(client, 1, nil) - RegisterBlockResults(client, 1) + RegisterParams(queryClient, &header, height) + RegisterHeader(client, &height, nil) + RegisterBlockResults(client, height) RegisterBaseFee(queryClient, baseFee) RegisterValidatorAccount(queryClient, validator) }, @@ -186,9 +187,9 @@ func (suite *BackendTestSuite) TestResend() { var header metadata.MD client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) - RegisterParams(queryClient, &header, 1) - RegisterBlock(client, 1, nil) - RegisterBlockResults(client, 1) + RegisterParams(queryClient, &header, height) + RegisterHeader(client, &height, nil) + RegisterBlockResults(client, height) RegisterBaseFee(queryClient, baseFee) RegisterValidatorAccount(queryClient, validator) }, @@ -208,12 +209,12 @@ func (suite *BackendTestSuite) TestResend() { var header metadata.MD client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) - RegisterBlock(client, 1, nil) - RegisterBlockResults(client, 1) + RegisterHeader(client, &height, nil) + RegisterBlockResults(client, height) RegisterBaseFee(queryClient, baseFee) RegisterEstimateGas(queryClient, callArgs) - RegisterParams(queryClient, &header, 1) - RegisterParamsWithoutHeader(queryClient, 1) + RegisterParams(queryClient, &header, height) + RegisterParamsWithoutHeader(queryClient, height) RegisterUnconfirmedTxsError(client, nil) RegisterValidatorAccount(queryClient, validator) }, @@ -237,12 +238,12 @@ func (suite *BackendTestSuite) TestResend() { var header metadata.MD client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) - RegisterBlock(client, 1, nil) - RegisterBlockResults(client, 1) + RegisterHeader(client, &height, nil) + RegisterBlockResults(client, height) RegisterBaseFee(queryClient, baseFee) RegisterEstimateGas(queryClient, callArgs) - RegisterParams(queryClient, &header, 1) - RegisterParamsWithoutHeader(queryClient, 1) + RegisterParams(queryClient, &header, height) + RegisterParamsWithoutHeader(queryClient, height) RegisterUnconfirmedTxsEmpty(client, nil) RegisterValidatorAccount(queryClient, validator) }, @@ -405,7 +406,8 @@ func (suite *BackendTestSuite) TestDoCall() { func() { client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) - RegisterBlock(client, 1, bz) + height := int64(1) + RegisterHeader(client, &height, bz) RegisterEthCallError(queryClient, &evmtypes.EthCallRequest{Args: argsBz, ChainId: suite.backend.chainID.Int64()}) }, rpctypes.BlockNumber(1), @@ -418,7 +420,8 @@ func (suite *BackendTestSuite) TestDoCall() { func() { client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) - RegisterBlock(client, 1, bz) + height := int64(1) + RegisterHeader(client, &height, bz) RegisterEthCall(queryClient, &evmtypes.EthCallRequest{Args: argsBz, ChainId: suite.backend.chainID.Int64()}) }, rpctypes.BlockNumber(1), @@ -447,7 +450,7 @@ func (suite *BackendTestSuite) TestDoCall() { func (suite *BackendTestSuite) TestGasPrice() { defaultGasPrice := (*hexutil.Big)(big.NewInt(1)) validator := sdk.AccAddress(tests.GenerateAddress().Bytes()) - + height := int64(1) testCases := []struct { name string registerMock func() @@ -461,10 +464,10 @@ func (suite *BackendTestSuite) TestGasPrice() { client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) feeMarketClient := suite.backend.queryClient.FeeMarket.(*mocks.FeeMarketQueryClient) - RegisterFeeMarketParams(feeMarketClient, 1) - RegisterParams(queryClient, &header, 1) - RegisterBlock(client, 1, nil) - RegisterBlockResults(client, 1) + RegisterFeeMarketParams(feeMarketClient, height) + RegisterParams(queryClient, &header, height) + RegisterHeader(client, &height, nil) + RegisterBlockResults(client, height) RegisterBaseFee(queryClient, sdkmath.NewInt(1)) RegisterValidatorAccount(queryClient, validator) }, @@ -478,10 +481,10 @@ func (suite *BackendTestSuite) TestGasPrice() { client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) feeMarketClient := suite.backend.queryClient.FeeMarket.(*mocks.FeeMarketQueryClient) - RegisterFeeMarketParamsError(feeMarketClient, 1) - RegisterParams(queryClient, &header, 1) - RegisterBlock(client, 1, nil) - RegisterBlockResults(client, 1) + RegisterFeeMarketParamsError(feeMarketClient, height) + RegisterParams(queryClient, &header, height) + RegisterHeader(client, &height, nil) + RegisterBlockResults(client, height) RegisterBaseFee(queryClient, sdkmath.NewInt(1)) RegisterValidatorAccount(queryClient, validator) }, diff --git a/rpc/backend/client_test.go b/rpc/backend/client_test.go index f4708137ef..0e1d8b2a36 100644 --- a/rpc/backend/client_test.go +++ b/rpc/backend/client_test.go @@ -289,6 +289,29 @@ func RegisterHeaderByHashError(client *mocks.Client, hash common.Hash, tx []byte Return(nil, errortypes.ErrInvalidRequest) } +func RegisterHeaderByHashNotFound(client *mocks.Client, hash common.Hash, tx []byte) { + client.On("HeaderByHash", rpc.ContextWithHeight(1), bytes.HexBytes(hash.Bytes())). + Return(&tmrpctypes.ResultHeader{Header: nil}, nil) +} + +// Header +func RegisterHeader(client *mocks.Client, height *int64, tx []byte) (*tmrpctypes.ResultHeader, error) { + block := types.MakeBlock(*height, []types.Tx{tx}, nil, nil) + resHeader := &tmrpctypes.ResultHeader{Header: &block.Header} + client.On("Header", rpc.ContextWithHeight(*height), height).Return(resHeader, nil) + return resHeader, nil +} + +func RegisterHeaderError(client *mocks.Client, height *int64) { + client.On("Header", rpc.ContextWithHeight(*height), height).Return(nil, errortypes.ErrInvalidRequest) +} + +// Header not found +func RegisterHeaderNotFound(client *mocks.Client, height int64) { + client.On("Header", rpc.ContextWithHeight(height), mock.AnythingOfType("*int64")). + Return(&tmrpctypes.ResultHeader{Header: nil}, nil) +} + func RegisterABCIQueryWithOptions(client *mocks.Client, height int64, path string, data bytes.HexBytes, opts tmrpcclient.ABCIQueryOptions) { client.On("ABCIQueryWithOptions", context.Background(), path, data, opts). Return(&tmrpctypes.ResultABCIQuery{ diff --git a/rpc/backend/sign_tx_test.go b/rpc/backend/sign_tx_test.go index a8bcb24803..d555bc995e 100644 --- a/rpc/backend/sign_tx_test.go +++ b/rpc/backend/sign_tx_test.go @@ -37,7 +37,7 @@ func (suite *BackendTestSuite) TestSendTransaction() { } hash := common.Hash{} validator := sdk.AccAddress(tests.GenerateAddress().Bytes()) - + height := int64(1) testCases := []struct { name string registerMock func() @@ -60,8 +60,8 @@ func (suite *BackendTestSuite) TestSendTransaction() { client := suite.backend.clientCtx.Client.(*mocks.Client) armor := crypto.EncryptArmorPrivKey(priv, "", "eth_secp256k1") suite.backend.clientCtx.Keyring.ImportPrivKey("test_key", armor, "") - RegisterParams(queryClient, &header, 1) - RegisterBlockError(client, 1) + RegisterParams(queryClient, &header, height) + RegisterHeaderError(client, &height) }, callArgsDefault, hash, @@ -76,8 +76,8 @@ func (suite *BackendTestSuite) TestSendTransaction() { armor := crypto.EncryptArmorPrivKey(priv, "", "eth_secp256k1") suite.backend.clientCtx.Keyring.ImportPrivKey("test_key", armor, "") RegisterParams(queryClient, &header, 1) - RegisterBlock(client, 1, nil) - RegisterBlockResults(client, 1) + RegisterHeader(client, &height, nil) + RegisterBlockResults(client, height) RegisterBaseFee(queryClient, baseFee) RegisterValidatorAccount(queryClient, validator) }, @@ -100,10 +100,10 @@ func (suite *BackendTestSuite) TestSendTransaction() { armor := crypto.EncryptArmorPrivKey(priv, "", "eth_secp256k1") suite.backend.clientCtx.Keyring.ImportPrivKey("test_key", armor, "") RegisterParams(queryClient, &header, 1) - RegisterBlock(client, 1, nil) - RegisterBlockResults(client, 1) + RegisterHeader(client, &height, nil) + RegisterBlockResults(client, height) RegisterBaseFee(queryClient, baseFee) - RegisterParamsWithoutHeader(queryClient, 1) + RegisterParamsWithoutHeader(queryClient, height) ethSigner := ethtypes.LatestSigner(suite.backend.ChainConfig()) msg := callArgsDefault.ToTransaction() msg.Sign(ethSigner, suite.backend.clientCtx.Keyring) @@ -126,10 +126,10 @@ func (suite *BackendTestSuite) TestSendTransaction() { armor := crypto.EncryptArmorPrivKey(priv, "", "eth_secp256k1") suite.backend.clientCtx.Keyring.ImportPrivKey("test_key", armor, "") RegisterParams(queryClient, &header, 1) - RegisterBlock(client, 1, nil) - RegisterBlockResults(client, 1) + RegisterHeader(client, &height, nil) + RegisterBlockResults(client, height) RegisterBaseFee(queryClient, baseFee) - RegisterParamsWithoutHeader(queryClient, 1) + RegisterParamsWithoutHeader(queryClient, height) ethSigner := ethtypes.LatestSigner(suite.backend.ChainConfig()) msg := callArgsDefault.ToTransaction() msg.Sign(ethSigner, suite.backend.clientCtx.Keyring) diff --git a/rpc/backend/tracing.go b/rpc/backend/tracing.go index ab0845dc5a..fe70f9eca7 100644 --- a/rpc/backend/tracing.go +++ b/rpc/backend/tracing.go @@ -231,7 +231,7 @@ func (b *Backend) TraceCall( if err != nil { return nil, err } - blk, err := b.TendermintBlockByNumber(blockNr) + header, err := b.TendermintHeaderByNumber(blockNr) if err != nil { // the error message imitates geth behavior return nil, errors.New("header not found") @@ -240,10 +240,10 @@ func (b *Backend) TraceCall( traceCallRequest := evmtypes.QueryTraceCallRequest{ Args: bz, GasCap: b.RPCGasCap(), - ProposerAddress: sdk.ConsAddress(blk.Block.ProposerAddress), - BlockNumber: blk.Block.Height, - BlockHash: common.Bytes2Hex(blk.BlockID.Hash), - BlockTime: blk.Block.Time, + ProposerAddress: sdk.ConsAddress(header.Header.ProposerAddress), + BlockNumber: header.Header.Height, + BlockHash: common.Bytes2Hex(header.Header.Hash()), + BlockTime: header.Header.Time, ChainId: b.chainID.Int64(), } @@ -252,7 +252,7 @@ func (b *Backend) TraceCall( } // get the context of provided block - contextHeight := blk.Block.Height + contextHeight := header.Header.Height if contextHeight < 1 { // 0 is a special value in `ContextWithHeight` contextHeight = 1 diff --git a/rpc/backend/tracing_test.go b/rpc/backend/tracing_test.go index 78f2284aaa..1cf69ffe61 100644 --- a/rpc/backend/tracing_test.go +++ b/rpc/backend/tracing_test.go @@ -307,7 +307,8 @@ func (suite *BackendTestSuite) TestDebugTraceCall() { func() { client := suite.backend.clientCtx.Client.(*mocks.Client) queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) - RegisterBlock(client, 1, bz) + height := int64(1) + RegisterHeader(client, &height, bz) RegisterTraceCall( queryClient, &evmtypes.QueryTraceCallRequest{Args: argsBz, ChainId: suite.backend.chainID.Int64(), BlockNumber: 1}, diff --git a/tests/integration_tests/test_gas.py b/tests/integration_tests/test_gas.py index 9ab4c5480f..99f88eea2f 100644 --- a/tests/integration_tests/test_gas.py +++ b/tests/integration_tests/test_gas.py @@ -119,4 +119,4 @@ def discard(request, tmp_path_factory): def test_discard_abci_responses(discard): with pytest.raises(ValueError) as exc: discard.w3.eth.gas_price - assert "block result not found for height" in str(exc) + assert "header result not found for height" in str(exc) From c4cef0fc4056e135f5c62e7dbf2362992e3cc872 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 4 Oct 2024 09:51:19 +0800 Subject: [PATCH 029/210] Problem: unsuppored sign mode SIGN_MODE_TEXTUAL in bank transfer (#537) --- CHANGELOG.md | 1 + app/app.go | 18 ++++++++++++++++++ cmd/ethermintd/root.go | 21 +++++++++++++++------ tests/integration_tests/test_batch.py | 12 ++++++++++++ 4 files changed, 46 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ca67bb764..372dbc4ac4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#516](https://github.com/crypto-org-chain/ethermint/pull/516) Avoid method eth_chainId crashed due to nil pointer on IsEIP155 check. * (cli) [#524](https://github.com/crypto-org-chain/ethermint/pull/524) Allow tx evm raw run for generate only when offline with evm-denom flag. * (rpc) [#527](https://github.com/crypto-org-chain/ethermint/pull/527) Fix balance consistency between trace-block and state machine. +* (cli) [#537](https://github.com/crypto-org-chain/ethermint/pull/537) Fix unsuppored sign mode SIGN_MODE_TEXTUAL for bank transfer. ### Improvements diff --git a/app/app.go b/app/app.go index f3033bbba6..112f7f1b11 100644 --- a/app/app.go +++ b/app/app.go @@ -23,6 +23,7 @@ import ( "net/http" "os" "path/filepath" + "slices" "sort" autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" @@ -31,6 +32,7 @@ import ( "cosmossdk.io/core/appmodule" runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services" "github.com/cosmos/cosmos-sdk/server" + sigtypes "github.com/cosmos/cosmos-sdk/types/tx/signing" "github.com/cosmos/gogoproto/proto" "github.com/gorilla/mux" @@ -75,6 +77,7 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/posthandler" authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" + txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/cosmos-sdk/x/auth/vesting" vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" @@ -380,6 +383,21 @@ func NewEthermintApp( authAddr, logger, ) + // optional: enable sign mode textual by overwriting the default tx config (after setting the bank keeper) + enabledSignModes := slices.Clone(authtx.DefaultSignModes) + enabledSignModes = append(enabledSignModes, sigtypes.SignMode_SIGN_MODE_TEXTUAL) + txConfigOpts := authtx.ConfigOptions{ + EnabledSignModes: enabledSignModes, + TextualCoinMetadataQueryFn: txmodule.NewBankKeeperCoinMetadataQueryFn(app.BankKeeper), + } + txConfig, err := authtx.NewTxConfigWithOptions( + appCodec, + txConfigOpts, + ) + if err != nil { + panic(err) + } + app.txConfig = txConfig app.StakingKeeper = stakingkeeper.NewKeeper( appCodec, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), diff --git a/cmd/ethermintd/root.go b/cmd/ethermintd/root.go index 9b87971820..02501654da 100644 --- a/cmd/ethermintd/root.go +++ b/cmd/ethermintd/root.go @@ -19,6 +19,7 @@ import ( "errors" "io" "os" + "slices" "github.com/spf13/cobra" @@ -43,6 +44,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/client/debug" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" "github.com/cosmos/cosmos-sdk/types/tx/signing" authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -65,14 +67,13 @@ const ( ChainID = "ethermint_9000-1" ) -type emptyAppOptions struct{} - -func (ao emptyAppOptions) Get(_ string) interface{} { return nil } - // NewRootCmd creates a new root command for simd. It is called once in the // main function. func NewRootCmd() (*cobra.Command, ethermint.EncodingConfig) { - tempApp := app.NewEthermintApp(cmtlog.NewNopLogger(), dbm.NewMemDB(), nil, true, emptyAppOptions{}) + tempApp := app.NewEthermintApp( + cmtlog.NewNopLogger(), dbm.NewMemDB(), nil, true, + simtestutil.NewAppOptionsWithFlagHome(app.DefaultNodeHome), + ) encodingConfig := tempApp.EncodingConfig() initClientCtx := client.Context{}. WithCodec(encodingConfig.Codec). @@ -86,6 +87,11 @@ func NewRootCmd() (*cobra.Command, ethermint.EncodingConfig) { WithKeyringOptions(hd.EthSecp256k1Option()). WithViper(EnvPrefix) + initClientCtx, err := clientcfg.ReadDefaultValuesFromDefaultClientConfig(initClientCtx) + if err != nil { + panic(err) + } + eip712.SetEncodingConfig(encodingConfig) rootCmd := &cobra.Command{ @@ -96,6 +102,7 @@ func NewRootCmd() (*cobra.Command, ethermint.EncodingConfig) { cmd.SetOut(cmd.OutOrStdout()) cmd.SetErr(cmd.ErrOrStderr()) + initClientCtx = initClientCtx.WithCmdContext(cmd.Context()) initClientCtx, err := client.ReadPersistentCommandFlags(initClientCtx, cmd.Flags()) if err != nil { return err @@ -110,8 +117,10 @@ func NewRootCmd() (*cobra.Command, ethermint.EncodingConfig) { // sets the RPC client needed for SIGN_MODE_TEXTUAL. This sign mode // is only available if the client is online. if !initClientCtx.Offline { + enabledSignModes := slices.Clone(tx.DefaultSignModes) + enabledSignModes = append(enabledSignModes, signing.SignMode_SIGN_MODE_TEXTUAL) txConfigOpts := tx.ConfigOptions{ - EnabledSignModes: append(tx.DefaultSignModes, signing.SignMode_SIGN_MODE_TEXTUAL), + EnabledSignModes: enabledSignModes, TextualCoinMetadataQueryFn: txmodule.NewGRPCCoinMetadataQueryFn(initClientCtx), } txConfig, err := tx.NewTxConfigWithOptions( diff --git a/tests/integration_tests/test_batch.py b/tests/integration_tests/test_batch.py index 80181d45c0..b43934a5b4 100644 --- a/tests/integration_tests/test_batch.py +++ b/tests/integration_tests/test_batch.py @@ -119,3 +119,15 @@ def test_multisig(ethermint, tmp_path): cli.account(multi_addr)["account"]["value"]["base_account"]["address"] == acc["address"] ) + + +def test_textual(ethermint): + cli = ethermint.cosmos_cli() + rsp = cli.transfer( + cli.address("validator"), + cli.address("signer2"), + "1aphoton", + sign_mode="textual", + ) + print("mm-rsp", rsp) + assert rsp["code"] == 0, rsp["raw_log"] From 617eac98d1fbe74040add1508992f9c7eeda898b Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 4 Oct 2024 15:19:15 +0800 Subject: [PATCH 030/210] Problem: validation broke after transaction conversion with raw field (#536) * Problem: validation broke after transaction conversion with raw field * cleanup * less validate * borrow * Apply suggestions from code review Signed-off-by: yihuang * rm chainid check --------- Signed-off-by: yihuang Co-authored-by: yihuang --- CHANGELOG.md | 1 + tests/integration_tests/test_priority.py | 24 +++++- x/evm/types/eth.go | 15 +++- x/evm/types/msg.go | 2 - x/evm/types/msg_test.go | 96 ++++++++++++++++++++++++ 5 files changed, 131 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 372dbc4ac4..8eba179458 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#516](https://github.com/crypto-org-chain/ethermint/pull/516) Avoid method eth_chainId crashed due to nil pointer on IsEIP155 check. * (cli) [#524](https://github.com/crypto-org-chain/ethermint/pull/524) Allow tx evm raw run for generate only when offline with evm-denom flag. * (rpc) [#527](https://github.com/crypto-org-chain/ethermint/pull/527) Fix balance consistency between trace-block and state machine. +* (rpc) [#536](https://github.com/crypto-org-chain/ethermint/pull/536) Fix validate basic after transaction conversion with raw field. * (cli) [#537](https://github.com/crypto-org-chain/ethermint/pull/537) Fix unsuppored sign mode SIGN_MODE_TEXTUAL for bank transfer. ### Improvements diff --git a/tests/integration_tests/test_priority.py b/tests/integration_tests/test_priority.py index b899fcf22d..e1191e138b 100644 --- a/tests/integration_tests/test_priority.py +++ b/tests/integration_tests/test_priority.py @@ -3,7 +3,14 @@ import pytest from .network import setup_ethermint -from .utils import ADDRS, KEYS, eth_to_bech32, sign_transaction, wait_for_new_blocks +from .utils import ( + ADDRS, + KEYS, + eth_to_bech32, + send_transaction, + sign_transaction, + wait_for_new_blocks, +) PRIORITY_REDUCTION = 1000000 @@ -202,3 +209,18 @@ def test_native_tx_priority(ethermint): def get_max_priority_price(max_priority_price): "default to max int64 if None" return max_priority_price if max_priority_price is not None else sys.maxsize + + +def test_validate(ethermint): + w3 = ethermint.w3 + gas = int(1.2 * w3.eth.gas_price) + tx = { + "to": "0x0000000000000000000000000000000000000000", + "value": 1, + "gas": 21000, + "maxFeePerGas": gas, + "maxPriorityFeePerGas": gas + 1, + } + with pytest.raises(ValueError) as exc: + send_transaction(w3, tx) + assert "max priority fee per gas higher than max fee per gas" in str(exc) diff --git a/x/evm/types/eth.go b/x/evm/types/eth.go index 81290c20f8..4ac6e9fbaa 100644 --- a/x/evm/types/eth.go +++ b/x/evm/types/eth.go @@ -72,17 +72,24 @@ func (tx EthereumTx) Validate() error { if tx.Gas() == 0 { return errorsmod.Wrap(ErrInvalidGasLimit, "gas limit must not be zero") } - if !types.IsValidInt256(tx.GasPrice()) { + if tx.GasPrice().BitLen() > 256 { return errorsmod.Wrap(ErrInvalidGasPrice, "out of bound") } - if !types.IsValidInt256(tx.GasFeeCap()) { + if tx.GasFeeCap().BitLen() > 256 { return errorsmod.Wrap(ErrInvalidGasPrice, "out of bound") } - if !types.IsValidInt256(tx.GasTipCap()) { + if tx.GasTipCap().BitLen() > 256 { return errorsmod.Wrap(ErrInvalidGasPrice, "out of bound") } - if !types.IsValidInt256(tx.Cost()) { + if tx.Cost().BitLen() > 256 { return errorsmod.Wrap(ErrInvalidGasFee, "out of bound") } + if tx.GasFeeCapIntCmp(tx.GasTipCap()) < 0 { + return errorsmod.Wrapf( + ErrInvalidGasCap, + "max priority fee per gas higher than max fee per gas (%s > %s)", + tx.GasTipCap(), tx.GasFeeCap(), + ) + } return nil } diff --git a/x/evm/types/msg.go b/x/evm/types/msg.go index c2089b18f9..9b395a46ba 100644 --- a/x/evm/types/msg.go +++ b/x/evm/types/msg.go @@ -178,11 +178,9 @@ func (msg MsgEthereumTx) ValidateBasic() error { if msg.Data != nil { return errorsmod.Wrapf(errortypes.ErrInvalidRequest, "tx data is deprecated in favor of Raw") } - if err := msg.Raw.Validate(); err != nil { return err } - return nil } diff --git a/x/evm/types/msg_test.go b/x/evm/types/msg_test.go index fbaaa66d49..f2ff8992f2 100644 --- a/x/evm/types/msg_test.go +++ b/x/evm/types/msg_test.go @@ -19,6 +19,7 @@ import ( "github.com/evmos/ethermint/crypto/ethsecp256k1" "github.com/evmos/ethermint/encoding" "github.com/evmos/ethermint/tests" + ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm/types" ) @@ -782,3 +783,98 @@ func assertEqual(orig *ethtypes.Transaction, cpy *ethtypes.Transaction) error { } return nil } + +func (suite *MsgsTestSuite) TestValidateEthereumTx() { + maxInt256 := ethermint.MaxInt256 + maxInt256Plus1 := new(big.Int).Add(ethermint.MaxInt256, big.NewInt(1)) + normal := big.NewInt(100) + gasLimit := uint64(21000) + testCases := []struct { + name string + tx types.EthereumTx + expError bool + }{ + { + "valid transaction", + types.NewTxWithData(ðtypes.LegacyTx{ + Gas: gasLimit, + GasPrice: normal, + Value: normal, + }).Raw, + false, + }, + { + "zero gas limit", + types.NewTxWithData(ðtypes.LegacyTx{ + Gas: 0, + GasPrice: normal, + Value: normal, + }).Raw, + true, + }, + { + "gas price exceeds int256 limit", + types.NewTxWithData(ðtypes.LegacyTx{ + Value: normal, + Gas: gasLimit, + GasPrice: maxInt256Plus1, + }).Raw, + true, + }, + { + "gas fee cap exceeds int256 limit", + types.NewTxWithData(ðtypes.DynamicFeeTx{ + Value: normal, + Gas: gasLimit, + GasFeeCap: maxInt256Plus1, + }).Raw, + true, + }, + { + "gas tip cap exceeds int256 limit", + types.NewTxWithData(ðtypes.DynamicFeeTx{ + Value: normal, + Gas: gasLimit, + GasFeeCap: normal, + GasTipCap: maxInt256Plus1, + }).Raw, + true, + }, + { + "LegacyTx cost exceeds int256 limit", + types.NewTxWithData(ðtypes.LegacyTx{ + Gas: gasLimit, + GasPrice: maxInt256, + Value: normal, + }).Raw, + true, + }, + { + "DynamicFeeTx cost exceeds int256 limit", + types.NewTxWithData(ðtypes.DynamicFeeTx{ + Gas: gasLimit, + Value: maxInt256Plus1, + }).Raw, + true, + }, + { + "AccessListTx cost exceeds int256 limit", + types.NewTxWithData(ðtypes.AccessListTx{ + Gas: gasLimit, + GasPrice: maxInt256, + Value: normal, + }).Raw, + true, + }, + } + for _, tc := range testCases { + suite.Run(tc.name, func() { + err := tc.tx.Validate() + if tc.expError { + suite.Require().Error(err, tc.name) + } else { + suite.Require().NoError(err, tc.name) + } + }) + } +} From 853e1e5b3475c832f6674e039e6a26eba15f93ab Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 4 Oct 2024 15:46:23 +0800 Subject: [PATCH 031/210] Problem: opBlockhash broke after sdk50 (#534) * Problem: opBlockhash broke after sdk50 * cleanup * Apply suggestions from code review * DeleteHeaderHash * add header_hash_num in param * Apply suggestions from code review Signed-off-by: yihuang * Apply suggestions from code review Signed-off-by: yihuang * Update x/evm/types/key.go Signed-off-by: yihuang * Apply suggestions from code review * fix build * lint --------- Signed-off-by: yihuang Co-authored-by: yihuang --- CHANGELOG.md | 1 + app/upgrades.go | 16 ++- client/docs/swagger-ui/swagger.yaml | 120 ++++++++++++++---- proto/ethermint/evm/v1/params.proto | 2 + .../configs/cosmovisor.jsonnet | 5 + .../integration_tests/configs/default.jsonnet | 1 + .../contracts/TestBlockTxProperties.sol | 8 ++ tests/integration_tests/test_block.py | 14 ++ tests/integration_tests/utils.py | 1 + x/evm/keeper/abci.go | 17 ++- x/evm/keeper/keeper.go | 22 ++++ x/evm/keeper/state_transition.go | 45 +------ x/evm/keeper/state_transition_test.go | 111 +++++++--------- x/evm/types/key.go | 15 ++- x/evm/types/params.go | 3 + x/evm/types/params.pb.go | 88 +++++++++---- 16 files changed, 310 insertions(+), 159 deletions(-) create mode 100644 tests/integration_tests/hardhat/contracts/TestBlockTxProperties.sol create mode 100644 tests/integration_tests/test_block.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 8eba179458..f593c90c74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#516](https://github.com/crypto-org-chain/ethermint/pull/516) Avoid method eth_chainId crashed due to nil pointer on IsEIP155 check. * (cli) [#524](https://github.com/crypto-org-chain/ethermint/pull/524) Allow tx evm raw run for generate only when offline with evm-denom flag. * (rpc) [#527](https://github.com/crypto-org-chain/ethermint/pull/527) Fix balance consistency between trace-block and state machine. +* (rpc) [#534](https://github.com/crypto-org-chain/ethermint/pull/534) Fix opBlockhash when no block header in abci request. * (rpc) [#536](https://github.com/crypto-org-chain/ethermint/pull/536) Fix validate basic after transaction conversion with raw field. * (cli) [#537](https://github.com/crypto-org-chain/ethermint/pull/537) Fix unsuppored sign mode SIGN_MODE_TEXTUAL for bank transfer. diff --git a/app/upgrades.go b/app/upgrades.go index f6289b9e20..bc1f660a43 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -19,14 +19,28 @@ import ( "context" upgradetypes "cosmossdk.io/x/upgrade/types" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + evmtypes "github.com/evmos/ethermint/x/evm/types" ) func (app *EthermintApp) RegisterUpgradeHandlers() { planName := "sdk50" app.UpgradeKeeper.SetUpgradeHandler(planName, func(ctx context.Context, _ upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { - return app.ModuleManager.RunMigrations(ctx, app.Configurator(), fromVM) + m, err := app.ModuleManager.RunMigrations(ctx, app.configurator, fromVM) + if err != nil { + return m, err + } + sdkCtx := sdk.UnwrapSDKContext(ctx) + { + params := app.EvmKeeper.GetParams(sdkCtx) + params.HeaderHashNum = evmtypes.DefaultHeaderHashNum + if err := app.EvmKeeper.SetParams(sdkCtx, params); err != nil { + return m, err + } + } + return m, nil }, ) } diff --git a/client/docs/swagger-ui/swagger.yaml b/client/docs/swagger-ui/swagger.yaml index e8c1d48c18..eaa4cc6a98 100644 --- a/client/docs/swagger-ui/swagger.yaml +++ b/client/docs/swagger-ui/swagger.yaml @@ -140,6 +140,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -179,7 +183,6 @@ paths: name "y.z". - JSON @@ -357,6 +360,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -396,7 +403,6 @@ paths: name "y.z". - JSON @@ -574,6 +580,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -613,7 +623,6 @@ paths: name "y.z". - JSON @@ -784,6 +793,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -823,7 +836,6 @@ paths: name "y.z". - JSON @@ -1009,6 +1021,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -1048,7 +1064,6 @@ paths: name "y.z". - JSON @@ -1234,6 +1249,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -1273,7 +1292,6 @@ paths: name "y.z". - JSON @@ -1572,6 +1590,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -1611,7 +1633,6 @@ paths: name "y.z". - JSON @@ -1828,7 +1849,7 @@ paths: prague) description: >- ChainConfig defines the Ethereum ChainConfig parameters - using *sdk.Int values + using *sdkmath.Int values instead of *big.Int. allow_unprotected_txs: @@ -1838,6 +1859,10 @@ paths: EIP155 signed) transactions can be executed on the state machine. + header_hash_num: + type: string + format: uint64 + description: header_hash_num is the number of header hash to persist. title: Params defines the EVM module parameters description: >- QueryParamsResponse defines the response type for querying x/evm @@ -1955,6 +1980,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -1994,7 +2023,6 @@ paths: name "y.z". - JSON @@ -2168,6 +2196,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -2207,7 +2239,6 @@ paths: name "y.z". - JSON @@ -2389,6 +2420,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -2428,7 +2463,6 @@ paths: name "y.z". - JSON @@ -2833,6 +2867,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -2872,7 +2910,6 @@ paths: name "y.z". - JSON @@ -3289,6 +3326,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -3328,7 +3369,6 @@ paths: name "y.z". - JSON @@ -3434,7 +3474,7 @@ paths: required: false type: number format: double - - name: msg.hash + - name: msg.deprecated_hash description: hash of the transaction in hex format. in: query required: false @@ -3455,6 +3495,12 @@ paths: required: false type: string format: byte + - name: msg.raw + description: raw is the raw bytes of the ethereum transaction. + in: query + required: false + type: string + format: byte - name: trace_config.tracer description: tracer is a custom javascript tracer. in: query @@ -3835,6 +3881,10 @@ paths: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -3874,7 +3924,6 @@ paths: name "y.z". - JSON @@ -4014,7 +4063,7 @@ definitions: type: string title: prague switch time (nil = no fork, 0 = already on prague) description: >- - ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int + ChainConfig defines the Ethereum ChainConfig parameters using *sdkmath.Int values instead of *big.Int. @@ -4187,6 +4236,10 @@ definitions: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -4222,7 +4275,6 @@ definitions: name "y.z". - JSON @@ -4261,7 +4313,7 @@ definitions: type: number format: double title: size is the encoded storage size of the transaction (DEPRECATED) - hash: + deprecated_hash: type: string title: hash of the transaction in hex format deprecated_from: @@ -4276,6 +4328,10 @@ definitions: against the address derived from the signature (V, R, S) using the secp256k1 elliptic curve + raw: + type: string + format: byte + title: raw is the raw bytes of the ethereum transaction description: MsgEthereumTx encapsulates an Ethereum transaction as an SDK message. ethermint.evm.v1.MsgEthereumTxResponse: type: object @@ -4488,8 +4544,8 @@ definitions: type: string title: prague switch time (nil = no fork, 0 = already on prague) description: >- - ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int - values + ChainConfig defines the Ethereum ChainConfig parameters using + *sdkmath.Int values instead of *big.Int. allow_unprotected_txs: @@ -4497,6 +4553,10 @@ definitions: description: |- allow_unprotected_txs defines if replay-protected (i.e non EIP155 signed) transactions can be executed on the state machine. + header_hash_num: + type: string + format: uint64 + description: header_hash_num is the number of header hash to persist. title: Params defines the EVM module parameters ethermint.evm.v1.QueryAccountResponse: type: object @@ -4685,7 +4745,7 @@ definitions: title: prague switch time (nil = no fork, 0 = already on prague) description: >- ChainConfig defines the Ethereum ChainConfig parameters using - *sdk.Int values + *sdkmath.Int values instead of *big.Int. allow_unprotected_txs: @@ -4693,6 +4753,10 @@ definitions: description: |- allow_unprotected_txs defines if replay-protected (i.e non EIP155 signed) transactions can be executed on the state machine. + header_hash_num: + type: string + format: uint64 + description: header_hash_num is the number of header hash to persist. title: Params defines the EVM module parameters description: >- QueryParamsResponse defines the response type for querying x/evm @@ -4874,8 +4938,8 @@ definitions: type: string title: prague switch time (nil = no fork, 0 = already on prague) description: >- - ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int - values + ChainConfig defines the Ethereum ChainConfig parameters using + *sdkmath.Int values instead of *big.Int. enable_memory: @@ -4986,6 +5050,10 @@ definitions: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -5021,7 +5089,6 @@ definitions: name "y.z". - JSON @@ -5162,6 +5229,10 @@ definitions: if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } Example 3: Pack and unpack a message in Python. @@ -5197,7 +5268,6 @@ definitions: name "y.z". - JSON diff --git a/proto/ethermint/evm/v1/params.proto b/proto/ethermint/evm/v1/params.proto index c4c64323aa..48c0c944ce 100644 --- a/proto/ethermint/evm/v1/params.proto +++ b/proto/ethermint/evm/v1/params.proto @@ -22,4 +22,6 @@ message Params { // allow_unprotected_txs defines if replay-protected (i.e non EIP155 // signed) transactions can be executed on the state machine. bool allow_unprotected_txs = 6; + // header_hash_num is the number of header hash to persist. + uint64 header_hash_num = 7; } \ No newline at end of file diff --git a/tests/integration_tests/configs/cosmovisor.jsonnet b/tests/integration_tests/configs/cosmovisor.jsonnet index 4630f9a5ab..34ec86b27c 100644 --- a/tests/integration_tests/configs/cosmovisor.jsonnet +++ b/tests/integration_tests/configs/cosmovisor.jsonnet @@ -13,6 +13,11 @@ config { }, }, app_state+: { + evm+: { + params+: { + header_hash_num:: super.header_hash_num, + }, + }, feemarket+: { params+: { base_fee:: super.base_fee, diff --git a/tests/integration_tests/configs/default.jsonnet b/tests/integration_tests/configs/default.jsonnet index 1345ee682a..c90f910848 100644 --- a/tests/integration_tests/configs/default.jsonnet +++ b/tests/integration_tests/configs/default.jsonnet @@ -63,6 +63,7 @@ evm: { params: { evm_denom: 'aphoton', + header_hash_num: 2, }, }, gov: { diff --git a/tests/integration_tests/hardhat/contracts/TestBlockTxProperties.sol b/tests/integration_tests/hardhat/contracts/TestBlockTxProperties.sol new file mode 100644 index 0000000000..07d5b0d20d --- /dev/null +++ b/tests/integration_tests/hardhat/contracts/TestBlockTxProperties.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +contract TestBlockTxProperties { + function getBlockHash(uint256 blockNumber) public view returns (bytes32) { + return blockhash(blockNumber); + } +} diff --git a/tests/integration_tests/test_block.py b/tests/integration_tests/test_block.py new file mode 100644 index 0000000000..f19b026e57 --- /dev/null +++ b/tests/integration_tests/test_block.py @@ -0,0 +1,14 @@ +from .utils import CONTRACTS, deploy_contract, w3_wait_for_new_blocks + + +def test_call(ethermint): + w3 = ethermint.w3 + contract, res = deploy_contract(w3, CONTRACTS["TestBlockTxProperties"]) + height = w3.eth.get_block_number() + w3_wait_for_new_blocks(w3, 1) + res = contract.caller.getBlockHash(height).hex() + blk = w3.eth.get_block(height) + assert f"0x{res}" == blk.hash.hex(), res + w3_wait_for_new_blocks(w3, 1) + res = contract.caller.getBlockHash(height).hex() + assert f"0x{res}" == "0x" + "0" * 64, res diff --git a/tests/integration_tests/utils.py b/tests/integration_tests/utils.py index 4eb1fdcfa3..b450c99eeb 100644 --- a/tests/integration_tests/utils.py +++ b/tests/integration_tests/utils.py @@ -43,6 +43,7 @@ "Calculator": "Calculator.sol", "Caller": "Caller.sol", "Random": "Random.sol", + "TestBlockTxProperties": "TestBlockTxProperties.sol", } diff --git a/x/evm/keeper/abci.go b/x/evm/keeper/abci.go index d890eb53f3..04c6d1442d 100644 --- a/x/evm/keeper/abci.go +++ b/x/evm/keeper/abci.go @@ -17,6 +17,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" + ethermint "github.com/evmos/ethermint/types" ) // BeginBlock sets the sdk Context and EIP155 chain id to the Keeper. @@ -24,10 +25,22 @@ func (k *Keeper) BeginBlock(ctx sdk.Context) error { k.WithChainID(ctx) // cache parameters that's common for the whole block. - if _, err := k.EVMBlockConfig(ctx, k.ChainID()); err != nil { + cfg, err := k.EVMBlockConfig(ctx, k.ChainID()) + if err != nil { return err } - + k.SetHeaderHash(ctx) + headerHashNum, err := ethermint.SafeInt64(cfg.Params.GetHeaderHashNum()) + if err != nil { + panic(err) + } + if i := ctx.BlockHeight() - headerHashNum; i > 0 { + h, err := ethermint.SafeUint64(i) + if err != nil { + panic(err) + } + k.DeleteHeaderHash(ctx, h) + } return nil } diff --git a/x/evm/keeper/keeper.go b/x/evm/keeper/keeper.go index 39997b685b..8689485435 100644 --- a/x/evm/keeper/keeper.go +++ b/x/evm/keeper/keeper.go @@ -305,3 +305,25 @@ func (k Keeper) AddTransientGasUsed(ctx sdk.Context, gasUsed uint64) (uint64, er k.SetTransientGasUsed(ctx, result) return result, nil } + +// SetHeaderHash stores the hash of the current block header in the store. +func (k Keeper) SetHeaderHash(ctx sdk.Context) { + store := ctx.KVStore(k.storeKey) + height, err := ethermint.SafeUint64(ctx.BlockHeight()) + if err != nil { + panic(err) + } + store.Set(types.GetHeaderHashKey(height), ctx.HeaderHash()) +} + +// GetHeaderHash retrieves the hash of a block header from the store by height. +func (k Keeper) GetHeaderHash(ctx sdk.Context, height uint64) []byte { + store := ctx.KVStore(k.storeKey) + return store.Get(types.GetHeaderHashKey(height)) +} + +// DeleteHeaderHash removes the hash of a block header from the store by height +func (k Keeper) DeleteHeaderHash(ctx sdk.Context, height uint64) { + store := ctx.KVStore(k.storeKey) + store.Delete(types.GetHeaderHashKey(height)) +} diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index d8eaccc49c..c6d493f56a 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -21,8 +21,6 @@ import ( "math/big" "sort" - cmttypes "github.com/cometbft/cometbft/types" - errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" @@ -100,51 +98,18 @@ func (k Keeper) GetHashFn(ctx sdk.Context) vm.GetHashFunc { return func(height uint64) common.Hash { h, err := ethermint.SafeInt64(height) if err != nil { - k.Logger(ctx).Error("failed to cast height to int64", "error", err) return common.Hash{} } - - switch { - case ctx.BlockHeight() == h: - // Case 1: The requested height matches the one from the context so we can retrieve the header - // hash directly from the context. - // Note: The headerHash is only set at begin block, it will be nil in case of a query context + if ctx.BlockHeight() < h { + return common.Hash{} + } + if ctx.BlockHeight() == h { headerHash := ctx.HeaderHash() if len(headerHash) != 0 { return common.BytesToHash(headerHash) } - - // only recompute the hash if not set (eg: checkTxState) - contextBlockHeader := ctx.BlockHeader() - header, err := cmttypes.HeaderFromProto(&contextBlockHeader) - if err != nil { - k.Logger(ctx).Error("failed to cast tendermint header from proto", "error", err) - return common.Hash{} - } - - headerHash = header.Hash() - return common.BytesToHash(headerHash) - - case ctx.BlockHeight() > h: - // Case 2: if the chain is not the current height we need to retrieve the hash from the store for the - // current chain epoch. This only applies if the current height is greater than the requested height. - histInfo, err := k.stakingKeeper.GetHistoricalInfo(ctx, h) - if err != nil { - k.Logger(ctx).Debug("historical info not found", "height", h, "err", err.Error()) - return common.Hash{} - } - - header, err := cmttypes.HeaderFromProto(&histInfo.Header) - if err != nil { - k.Logger(ctx).Error("failed to cast tendermint header from proto", "error", err) - return common.Hash{} - } - - return common.BytesToHash(header.Hash()) - default: - // Case 3: heights greater than the current one returns an empty hash. - return common.Hash{} } + return common.BytesToHash(k.GetHeaderHash(ctx, height)) } } diff --git a/x/evm/keeper/state_transition_test.go b/x/evm/keeper/state_transition_test.go index bdc95a1f87..cad82800be 100644 --- a/x/evm/keeper/state_transition_test.go +++ b/x/evm/keeper/state_transition_test.go @@ -5,12 +5,16 @@ import ( "math" "math/big" "testing" + "time" sdkmath "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" + cmtcrypto "github.com/cometbft/cometbft/crypto" "github.com/cometbft/cometbft/crypto/tmhash" - tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + cmtrand "github.com/cometbft/cometbft/libs/rand" + cmtversion "github.com/cometbft/cometbft/proto/tendermint/version" tmtypes "github.com/cometbft/cometbft/types" + "github.com/cometbft/cometbft/version" codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -84,86 +88,67 @@ func TestStateTransitionTestSuite(t *testing.T) { suite.Run(t, new(StateTransitionTestSuite)) } +func makeRandHeader(height uint64) tmtypes.Header { + chainID := "test" + t := time.Now() + randBytes := cmtrand.Bytes(tmhash.Size) + randAddress := cmtrand.Bytes(cmtcrypto.AddressSize) + h := tmtypes.Header{ + Version: cmtversion.Consensus{Block: version.BlockProtocol, App: 1}, + ChainID: chainID, + Height: int64(height), + Time: t, + LastBlockID: tmtypes.BlockID{}, + LastCommitHash: randBytes, + DataHash: randBytes, + ValidatorsHash: randBytes, + NextValidatorsHash: randBytes, + ConsensusHash: randBytes, + AppHash: randBytes, + LastResultsHash: randBytes, + EvidenceHash: randBytes, + ProposerAddress: randAddress, + } + return h +} + +func (suite *StateTransitionTestSuite) registerHeader(header tmtypes.Header) { + suite.Ctx.WithBlockHeight(header.Height) + suite.Ctx.WithHeaderHash(header.Hash()) + suite.App.EvmKeeper.SetHeaderHash(suite.Ctx) +} + func (suite *StateTransitionTestSuite) TestGetHashFn() { - header := suite.Ctx.BlockHeader() - h, _ := tmtypes.HeaderFromProto(&header) - hash := h.Hash() + height := uint64(10) + header := makeRandHeader(height) + hash := header.Hash() testCases := []struct { msg string height uint64 - malleate func() + malleate func(height uint64) expHash common.Hash }{ { - "case 1.1: context hash cached", - uint64(suite.Ctx.BlockHeight()), - func() { - suite.Ctx = suite.Ctx.WithHeaderHash(tmhash.Sum([]byte("header"))).WithConsensusParams(*testutil.DefaultConsensusParams) - }, - common.BytesToHash(tmhash.Sum([]byte("header"))), - }, - { - "case 1.2: failed to cast Tendermint header", - uint64(suite.Ctx.BlockHeight()), - func() { - header := tmproto.Header{} - header.Height = suite.Ctx.BlockHeight() - suite.Ctx = suite.Ctx.WithBlockHeader(header).WithConsensusParams(*testutil.DefaultConsensusParams) - }, + "header not found", + height, + func(height uint64) {}, common.Hash{}, }, { - "case 1.3: hash calculated from Tendermint header", - uint64(suite.Ctx.BlockHeight()), - func() { - suite.Ctx = suite.Ctx.WithBlockHeader(header).WithConsensusParams(*testutil.DefaultConsensusParams) + "header found", + height, + func(height uint64) { + suite.Ctx = suite.Ctx.WithBlockHeight(header.Height).WithHeaderHash(header.Hash()) + suite.App.EvmKeeper.SetHeaderHash(suite.Ctx) }, common.BytesToHash(hash), }, - { - "case 2.1: height lower than current one, hist info not found", - 1, - func() { - suite.Ctx = suite.Ctx.WithBlockHeight(10).WithConsensusParams(*testutil.DefaultConsensusParams) - }, - common.Hash{}, - }, - { - "case 2.2: height lower than current one, invalid hist info header", - 1, - func() { - suite.App.StakingKeeper.SetHistoricalInfo(suite.Ctx, 1, &stakingtypes.HistoricalInfo{}) - suite.Ctx = suite.Ctx.WithBlockHeight(10).WithConsensusParams(*testutil.DefaultConsensusParams) - }, - common.Hash{}, - }, - { - "case 2.3: height lower than current one, calculated from hist info header", - 1, - func() { - histInfo := &stakingtypes.HistoricalInfo{ - Header: header, - } - suite.App.StakingKeeper.SetHistoricalInfo(suite.Ctx, 1, histInfo) - suite.Ctx = suite.Ctx.WithBlockHeight(10).WithConsensusParams(*testutil.DefaultConsensusParams) - }, - common.BytesToHash(hash), - }, - { - "case 3: height greater than current one", - 200, - func() {}, - common.Hash{}, - }, } - for _, tc := range testCases { suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset - - tc.malleate() - + tc.malleate(tc.height) hash := suite.App.EvmKeeper.GetHashFn(suite.Ctx)(tc.height) suite.Require().Equal(tc.expHash, hash) }) diff --git a/x/evm/types/key.go b/x/evm/types/key.go index b3b7173ba9..569ce7bb90 100644 --- a/x/evm/types/key.go +++ b/x/evm/types/key.go @@ -44,6 +44,7 @@ const ( prefixCode = iota + 1 prefixStorage prefixParams + prefixHeaderHash ) // prefix bytes for the EVM object store @@ -55,9 +56,10 @@ const ( // KVStore key prefixes var ( - KeyPrefixCode = []byte{prefixCode} - KeyPrefixStorage = []byte{prefixStorage} - KeyPrefixParams = []byte{prefixParams} + KeyPrefixCode = []byte{prefixCode} + KeyPrefixStorage = []byte{prefixStorage} + KeyPrefixParams = []byte{prefixParams} + KeyPrefixHeaderHash = []byte{prefixHeaderHash} ) // Object Store key prefixes @@ -110,3 +112,10 @@ func ObjectBloomKey(txIndex, msgIndex int) []byte { binary.BigEndian.PutUint64(key[9:], value) return key[:] } + +func GetHeaderHashKey(height uint64) []byte { + var key [1 + 8]byte + key[0] = prefixHeaderHash + binary.BigEndian.PutUint64(key[1:], height) + return key[:] +} diff --git a/x/evm/types/params.go b/x/evm/types/params.go index 27d84155cd..f18b65f4e5 100644 --- a/x/evm/types/params.go +++ b/x/evm/types/params.go @@ -34,6 +34,8 @@ var ( DefaultEnableCreate = true // DefaultEnableCall enables contract calls (i.e true) DefaultEnableCall = true + // DefaultHeaderHashNum defines the default number of header hash to persist. + DefaultHeaderHashNum = uint64(10000) ) // NewParams creates a new Params instance @@ -58,6 +60,7 @@ func DefaultParams() Params { EnableCall: DefaultEnableCall, ChainConfig: config, AllowUnprotectedTxs: DefaultAllowUnprotectedTxs, + HeaderHashNum: DefaultHeaderHashNum, } } diff --git a/x/evm/types/params.pb.go b/x/evm/types/params.pb.go index ed314c775e..165d458898 100644 --- a/x/evm/types/params.pb.go +++ b/x/evm/types/params.pb.go @@ -39,6 +39,8 @@ type Params struct { // allow_unprotected_txs defines if replay-protected (i.e non EIP155 // signed) transactions can be executed on the state machine. AllowUnprotectedTxs bool `protobuf:"varint,6,opt,name=allow_unprotected_txs,json=allowUnprotectedTxs,proto3" json:"allow_unprotected_txs,omitempty"` + // header_hash_num is the number of header hash to persist. + HeaderHashNum uint64 `protobuf:"varint,7,opt,name=header_hash_num,json=headerHashNum,proto3" json:"header_hash_num,omitempty"` } func (m *Params) Reset() { *m = Params{} } @@ -116,6 +118,13 @@ func (m *Params) GetAllowUnprotectedTxs() bool { return false } +func (m *Params) GetHeaderHashNum() uint64 { + if m != nil { + return m.HeaderHashNum + } + return 0 +} + func init() { proto.RegisterType((*Params)(nil), "ethermint.evm.v1.Params") } @@ -123,32 +132,34 @@ func init() { func init() { proto.RegisterFile("ethermint/evm/v1/params.proto", fileDescriptor_e7d3c06c1322f20f) } var fileDescriptor_e7d3c06c1322f20f = []byte{ - // 391 bytes of a gzipped FileDescriptorProto + // 423 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0x41, 0x8b, 0xd3, 0x40, - 0x18, 0x86, 0x93, 0xed, 0x5a, 0x36, 0xd3, 0x15, 0xd6, 0xb1, 0x4a, 0x58, 0xd8, 0x24, 0x44, 0x90, - 0x9c, 0x12, 0xba, 0x1e, 0x04, 0x41, 0xd0, 0xd4, 0x0a, 0xde, 0x96, 0xa0, 0x17, 0x2f, 0x61, 0x9a, - 0x7e, 0xa6, 0x81, 0x99, 0x4c, 0xc8, 0x4c, 0x63, 0xfa, 0x2f, 0xfc, 0x59, 0x3d, 0xf6, 0xe8, 0x29, - 0x48, 0xfa, 0x0f, 0xf2, 0x0b, 0x24, 0xd3, 0xda, 0x56, 0xbd, 0xcd, 0xf7, 0x3d, 0xef, 0xfb, 0xc1, - 0xbc, 0x2f, 0xba, 0x03, 0xb9, 0x84, 0x92, 0x65, 0xb9, 0x0c, 0xa0, 0x62, 0x41, 0x35, 0x09, 0x0a, - 0x52, 0x12, 0x26, 0xfc, 0xa2, 0xe4, 0x92, 0xe3, 0x9b, 0x23, 0xf6, 0xa1, 0x62, 0x7e, 0x35, 0xb9, - 0x1d, 0xa7, 0x3c, 0xe5, 0x0a, 0x06, 0xfd, 0x6b, 0xaf, 0xbb, 0x7d, 0xf1, 0xdf, 0x99, 0x64, 0x49, - 0xb2, 0x3c, 0x4e, 0x78, 0xfe, 0x2d, 0x4b, 0xf7, 0x22, 0xb7, 0xbb, 0x40, 0xc3, 0x07, 0x75, 0x1d, - 0x4f, 0x90, 0x01, 0x15, 0x8b, 0x17, 0x90, 0x73, 0x66, 0xea, 0x8e, 0xee, 0x19, 0xe1, 0xb8, 0x6b, - 0xec, 0x9b, 0x35, 0x61, 0xf4, 0x8d, 0x7b, 0x44, 0x6e, 0x74, 0x05, 0x15, 0xfb, 0xd0, 0x3f, 0xf1, - 0x5b, 0xf4, 0x18, 0x72, 0x32, 0xa7, 0x10, 0x27, 0x25, 0x10, 0x09, 0xe6, 0x85, 0xa3, 0x7b, 0x57, - 0xa1, 0xd9, 0x35, 0xf6, 0xf8, 0x60, 0x3b, 0xc7, 0x6e, 0x74, 0xbd, 0x9f, 0xa7, 0x6a, 0xc4, 0xaf, - 0xd1, 0xe8, 0x0f, 0x27, 0x94, 0x9a, 0x03, 0x65, 0x7e, 0xde, 0x35, 0x36, 0xfe, 0xdb, 0x4c, 0x28, - 0x75, 0x23, 0x74, 0xb0, 0x12, 0x4a, 0xf1, 0x7b, 0x84, 0xa0, 0x96, 0x25, 0x89, 0x21, 0x2b, 0x84, - 0x79, 0xe9, 0x0c, 0xbc, 0x41, 0xe8, 0xb6, 0x8d, 0x6d, 0xcc, 0xfa, 0xed, 0xec, 0xd3, 0x83, 0xe8, - 0x1a, 0xfb, 0xc9, 0xe1, 0xc8, 0x51, 0xe8, 0x46, 0x86, 0x1a, 0x66, 0x59, 0x21, 0xf0, 0x47, 0x74, - 0x7d, 0x1e, 0x87, 0xf9, 0xc8, 0xd1, 0xbd, 0xd1, 0xfd, 0x9d, 0xff, 0x6f, 0xb8, 0xfe, 0xb4, 0x57, - 0x4d, 0x95, 0x28, 0xbc, 0xdc, 0x34, 0xb6, 0x16, 0x8d, 0x92, 0xd3, 0x0a, 0xdf, 0xa3, 0x67, 0x84, - 0x52, 0xfe, 0x3d, 0x5e, 0xe5, 0x7d, 0xa2, 0x90, 0x48, 0x58, 0xc4, 0xb2, 0x16, 0xe6, 0xb0, 0xff, - 0x4d, 0xf4, 0x54, 0xc1, 0x2f, 0x27, 0xf6, 0xb9, 0x16, 0xe1, 0xbb, 0x4d, 0x6b, 0xe9, 0xdb, 0xd6, - 0xd2, 0x7f, 0xb5, 0x96, 0xfe, 0x63, 0x67, 0x69, 0xdb, 0x9d, 0xa5, 0xfd, 0xdc, 0x59, 0xda, 0xd7, - 0x97, 0x69, 0x26, 0x97, 0xab, 0xb9, 0x9f, 0x70, 0xd6, 0x97, 0xc6, 0x45, 0x70, 0x2a, 0xb1, 0x56, - 0x35, 0xca, 0x75, 0x01, 0x62, 0x3e, 0x54, 0xed, 0xbd, 0xfa, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x51, - 0x16, 0x95, 0xc2, 0x2b, 0x02, 0x00, 0x00, + 0x18, 0x86, 0x1b, 0x5b, 0xeb, 0x76, 0xba, 0x8b, 0xeb, 0x58, 0x65, 0x58, 0xd8, 0x24, 0x44, 0x58, + 0x72, 0x4a, 0xe8, 0x7a, 0x10, 0x04, 0x41, 0x53, 0x2b, 0x7a, 0x91, 0x25, 0xe8, 0xc5, 0xcb, 0x30, + 0x4d, 0x3f, 0x9b, 0xc0, 0x4c, 0x26, 0x64, 0xa6, 0xb1, 0xfb, 0x2f, 0x3c, 0xfb, 0x8b, 0xf6, 0xb8, + 0x47, 0x4f, 0x41, 0xda, 0x7f, 0xd0, 0x5f, 0x20, 0x99, 0xd4, 0x76, 0xd5, 0xdb, 0x7c, 0xdf, 0xf3, + 0xbe, 0x1f, 0xcc, 0xfb, 0xa2, 0x73, 0xd0, 0x29, 0x94, 0x22, 0xcb, 0x75, 0x08, 0x95, 0x08, 0xab, + 0x71, 0x58, 0xb0, 0x92, 0x09, 0x15, 0x14, 0xa5, 0xd4, 0x12, 0x9f, 0xee, 0x71, 0x00, 0x95, 0x08, + 0xaa, 0xf1, 0xd9, 0x68, 0x21, 0x17, 0xd2, 0xc0, 0xb0, 0x79, 0xb5, 0xba, 0xb3, 0x67, 0xff, 0x9d, + 0x49, 0x52, 0x96, 0xe5, 0x34, 0x91, 0xf9, 0xd7, 0x6c, 0xd1, 0x8a, 0xbc, 0x1f, 0x5d, 0xd4, 0xbf, + 0x32, 0xd7, 0xf1, 0x18, 0x0d, 0xa0, 0x12, 0x74, 0x0e, 0xb9, 0x14, 0xc4, 0x72, 0x2d, 0x7f, 0x10, + 0x8d, 0xb6, 0xb5, 0x73, 0x7a, 0xcd, 0x04, 0x7f, 0xe9, 0xed, 0x91, 0x17, 0x1f, 0x41, 0x25, 0xde, + 0x36, 0x4f, 0xfc, 0x0a, 0x9d, 0x40, 0xce, 0x66, 0x1c, 0x68, 0x52, 0x02, 0xd3, 0x40, 0xee, 0xb9, + 0x96, 0x7f, 0x14, 0x91, 0x6d, 0xed, 0x8c, 0x76, 0xb6, 0xbb, 0xd8, 0x8b, 0x8f, 0xdb, 0x79, 0x62, + 0x46, 0xfc, 0x02, 0x0d, 0xff, 0x70, 0xc6, 0x39, 0xe9, 0x1a, 0xf3, 0xd3, 0x6d, 0xed, 0xe0, 0xbf, + 0xcd, 0x8c, 0x73, 0x2f, 0x46, 0x3b, 0x2b, 0xe3, 0x1c, 0xbf, 0x41, 0x08, 0x56, 0xba, 0x64, 0x14, + 0xb2, 0x42, 0x91, 0x9e, 0xdb, 0xf5, 0xbb, 0x91, 0xb7, 0xae, 0x9d, 0xc1, 0xb4, 0xd9, 0x4e, 0x3f, + 0x5c, 0xa9, 0x6d, 0xed, 0x3c, 0xda, 0x1d, 0xd9, 0x0b, 0xbd, 0x78, 0x60, 0x86, 0x69, 0x56, 0x28, + 0xfc, 0x0e, 0x1d, 0xdf, 0x8d, 0x83, 0xdc, 0x77, 0x2d, 0x7f, 0x78, 0x79, 0x1e, 0xfc, 0x1b, 0x6e, + 0x30, 0x69, 0x54, 0x13, 0x23, 0x8a, 0x7a, 0x37, 0xb5, 0xd3, 0x89, 0x87, 0xc9, 0x61, 0x85, 0x2f, + 0xd1, 0x13, 0xc6, 0xb9, 0xfc, 0x46, 0x97, 0x79, 0x93, 0x28, 0x24, 0x1a, 0xe6, 0x54, 0xaf, 0x14, + 0xe9, 0x37, 0xbf, 0x89, 0x1f, 0x1b, 0xf8, 0xf9, 0xc0, 0x3e, 0xad, 0x14, 0xbe, 0x40, 0x0f, 0x53, + 0x60, 0x73, 0x28, 0x69, 0xca, 0x54, 0x4a, 0xf3, 0xa5, 0x20, 0x0f, 0x5c, 0xcb, 0xef, 0xc5, 0x27, + 0xed, 0xfa, 0x3d, 0x53, 0xe9, 0xc7, 0xa5, 0x88, 0x5e, 0xdf, 0xac, 0x6d, 0xeb, 0x76, 0x6d, 0x5b, + 0xbf, 0xd6, 0xb6, 0xf5, 0x7d, 0x63, 0x77, 0x6e, 0x37, 0x76, 0xe7, 0xe7, 0xc6, 0xee, 0x7c, 0xb9, + 0x58, 0x64, 0x3a, 0x5d, 0xce, 0x82, 0x44, 0x8a, 0xa6, 0x5c, 0xa9, 0xc2, 0x43, 0xd9, 0x2b, 0x53, + 0xb7, 0xbe, 0x2e, 0x40, 0xcd, 0xfa, 0xa6, 0xe5, 0xe7, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x01, + 0xa5, 0x92, 0x40, 0x53, 0x02, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { @@ -171,6 +182,11 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.HeaderHashNum != 0 { + i = encodeVarintParams(dAtA, i, uint64(m.HeaderHashNum)) + i-- + dAtA[i] = 0x38 + } if m.AllowUnprotectedTxs { i-- if m.AllowUnprotectedTxs { @@ -279,6 +295,9 @@ func (m *Params) Size() (n int) { if m.AllowUnprotectedTxs { n += 2 } + if m.HeaderHashNum != 0 { + n += 1 + sovParams(uint64(m.HeaderHashNum)) + } return n } @@ -518,6 +537,25 @@ func (m *Params) Unmarshal(dAtA []byte) error { } } m.AllowUnprotectedTxs = bool(v != 0) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HeaderHashNum", wireType) + } + m.HeaderHashNum = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.HeaderHashNum |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipParams(dAtA[iNdEx:]) From 580ce6efa77bec8527e5e6d6b070b02146d824e3 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Mon, 7 Oct 2024 15:58:36 +0800 Subject: [PATCH 032/210] Problem: default headerHashNum is too large (#539) * clean up * Problem: default headerHashNum is too large --- x/evm/types/msg.go | 5 ----- x/evm/types/params.go | 2 +- x/feemarket/types/msg.go | 11 ----------- 3 files changed, 1 insertion(+), 17 deletions(-) diff --git a/x/evm/types/msg.go b/x/evm/types/msg.go index 9b395a46ba..7d11751ee6 100644 --- a/x/evm/types/msg.go +++ b/x/evm/types/msg.go @@ -401,8 +401,3 @@ func (m *MsgUpdateParams) ValidateBasic() error { return m.Params.Validate() } - -// GetSignBytes implements the LegacyMsg interface. -func (m MsgUpdateParams) GetSignBytes() []byte { - return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&m)) -} diff --git a/x/evm/types/params.go b/x/evm/types/params.go index f18b65f4e5..2dd5563988 100644 --- a/x/evm/types/params.go +++ b/x/evm/types/params.go @@ -35,7 +35,7 @@ var ( // DefaultEnableCall enables contract calls (i.e true) DefaultEnableCall = true // DefaultHeaderHashNum defines the default number of header hash to persist. - DefaultHeaderHashNum = uint64(10000) + DefaultHeaderHashNum = uint64(256) ) // NewParams creates a new Params instance diff --git a/x/feemarket/types/msg.go b/x/feemarket/types/msg.go index 71d49fdbc9..f24cef817f 100644 --- a/x/feemarket/types/msg.go +++ b/x/feemarket/types/msg.go @@ -7,12 +7,6 @@ import ( var _ sdk.Msg = &MsgUpdateParams{} -// GetSigners returns the expected signers for a MsgUpdateParams message. -func (m *MsgUpdateParams) GetSigners() []sdk.AccAddress { - addr := sdk.MustAccAddressFromBech32(m.Authority) - return []sdk.AccAddress{addr} -} - // ValidateBasic does a sanity check of the provided data func (m *MsgUpdateParams) ValidateBasic() error { if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { @@ -21,8 +15,3 @@ func (m *MsgUpdateParams) ValidateBasic() error { return m.Params.Validate() } - -// GetSignBytes implements the LegacyMsg interface. -func (m MsgUpdateParams) GetSignBytes() []byte { - return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&m)) -} From a2ad87c8a1ccf9722f7a6516e2cf74df01eb146d Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 9 Oct 2024 10:01:50 +0800 Subject: [PATCH 033/210] Problem: no header hash from fallback historicalInfo (#540) * Problem: no header hash from fallback historicalInfo * test * keep headerNum no change * align check * more test --- CHANGELOG.md | 2 +- .../integration_tests/configs/default.jsonnet | 1 - tests/integration_tests/test_block.py | 3 - tests/integration_tests/test_fee_history.py | 25 +++----- tests/integration_tests/test_upgrade.py | 38 +++++++++++- tests/integration_tests/utils.py | 15 +++++ x/evm/keeper/state_transition.go | 47 +++++++++++---- x/evm/keeper/state_transition_test.go | 58 +++++++++++++++---- 8 files changed, 147 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f593c90c74..208f661084 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,7 +69,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#516](https://github.com/crypto-org-chain/ethermint/pull/516) Avoid method eth_chainId crashed due to nil pointer on IsEIP155 check. * (cli) [#524](https://github.com/crypto-org-chain/ethermint/pull/524) Allow tx evm raw run for generate only when offline with evm-denom flag. * (rpc) [#527](https://github.com/crypto-org-chain/ethermint/pull/527) Fix balance consistency between trace-block and state machine. -* (rpc) [#534](https://github.com/crypto-org-chain/ethermint/pull/534) Fix opBlockhash when no block header in abci request. +* (rpc) [#534](https://github.com/crypto-org-chain/ethermint/pull/534), [#540](https://github.com/crypto-org-chain/ethermint/pull/540) Fix opBlockhash when no block header in abci request. * (rpc) [#536](https://github.com/crypto-org-chain/ethermint/pull/536) Fix validate basic after transaction conversion with raw field. * (cli) [#537](https://github.com/crypto-org-chain/ethermint/pull/537) Fix unsuppored sign mode SIGN_MODE_TEXTUAL for bank transfer. diff --git a/tests/integration_tests/configs/default.jsonnet b/tests/integration_tests/configs/default.jsonnet index c90f910848..1345ee682a 100644 --- a/tests/integration_tests/configs/default.jsonnet +++ b/tests/integration_tests/configs/default.jsonnet @@ -63,7 +63,6 @@ evm: { params: { evm_denom: 'aphoton', - header_hash_num: 2, }, }, gov: { diff --git a/tests/integration_tests/test_block.py b/tests/integration_tests/test_block.py index f19b026e57..b8c1facc32 100644 --- a/tests/integration_tests/test_block.py +++ b/tests/integration_tests/test_block.py @@ -9,6 +9,3 @@ def test_call(ethermint): res = contract.caller.getBlockHash(height).hex() blk = w3.eth.get_block(height) assert f"0x{res}" == blk.hash.hex(), res - w3_wait_for_new_blocks(w3, 1) - res = contract.caller.getBlockHash(height).hex() - assert f"0x{res}" == "0x" + "0" * 64, res diff --git a/tests/integration_tests/test_fee_history.py b/tests/integration_tests/test_fee_history.py index 22f21d5b9b..3f65fa7fae 100644 --- a/tests/integration_tests/test_fee_history.py +++ b/tests/integration_tests/test_fee_history.py @@ -1,5 +1,4 @@ import hashlib -import json from concurrent.futures import ThreadPoolExecutor, as_completed from pathlib import Path @@ -9,9 +8,9 @@ from .network import setup_custom_ethermint from .utils import ( ADDRS, - approve_proposal, eth_to_bech32, send_transaction, + submit_gov_proposal, w3_wait_for_block, w3_wait_for_new_blocks, ) @@ -167,27 +166,21 @@ def update_feemarket_param(node, tmp_path, new_multiplier=2, new_denominator=200 p["base_fee"] = new_base_fee p["elasticity_multiplier"] = new_multiplier p["base_fee_change_denominator"] = new_denominator - proposal = tmp_path / "proposal.json" + # governance module account as signer data = hashlib.sha256("gov".encode()).digest()[:20] - signer = eth_to_bech32(data) - proposal_src = { - "messages": [ + authority = eth_to_bech32(data) + submit_gov_proposal( + node, + tmp_path, + messages=[ { "@type": "/ethermint.feemarket.v1.MsgUpdateParams", - "authority": signer, + "authority": authority, "params": p, } ], - "deposit": "2aphoton", - "title": "title", - "summary": "summary", - } - proposal.write_text(json.dumps(proposal_src)) - rsp = cli.submit_gov_proposal(proposal, from_="community") - assert rsp["code"] == 0, rsp["raw_log"] - approve_proposal(node, rsp) - print("check params have been updated now") + ) p = cli.get_params("feemarket")["params"] assert p["base_fee"] == new_base_fee assert p["elasticity_multiplier"] == new_multiplier diff --git a/tests/integration_tests/test_upgrade.py b/tests/integration_tests/test_upgrade.py index da02f3b4b2..c230a16ef7 100644 --- a/tests/integration_tests/test_upgrade.py +++ b/tests/integration_tests/test_upgrade.py @@ -1,4 +1,5 @@ import configparser +import hashlib import json import re import subprocess @@ -14,7 +15,9 @@ CONTRACTS, approve_proposal, deploy_contract, + eth_to_bech32, send_transaction, + submit_gov_proposal, wait_for_block, wait_for_port, ) @@ -84,7 +87,7 @@ def custom_ethermint(tmp_path_factory): ) -def test_cosmovisor_upgrade(custom_ethermint: Ethermint): +def test_cosmovisor_upgrade(custom_ethermint: Ethermint, tmp_path): """ - propose an upgrade and pass it - wait for it to happen @@ -166,3 +169,36 @@ def test_cosmovisor_upgrade(custom_ethermint: Ethermint): ) ) assert p == {"allowed_clients": ["06-solomachine", "07-tendermint", "09-localhost"]} + + p = cli.get_params("evm")["params"] + header_hash_num = "20" + p["header_hash_num"] = header_hash_num + # governance module account as signer + data = hashlib.sha256("gov".encode()).digest()[:20] + authority = eth_to_bech32(data) + submit_gov_proposal( + custom_ethermint, + tmp_path, + messages=[ + { + "@type": "/ethermint.evm.v1.MsgUpdateParams", + "authority": authority, + "params": p, + } + ], + ) + p = cli.get_params("evm")["params"] + assert p["header_hash_num"] == header_hash_num, p + contract, _ = deploy_contract(w3, CONTRACTS["TestBlockTxProperties"]) + for h in [target_height - 1, target_height, target_height + 1]: + res = contract.caller.getBlockHash(h).hex() + blk = w3.eth.get_block(h) + assert f"0x{res}" == blk.hash.hex(), res + + height = w3.eth.block_number + for h in [ + height - int(header_hash_num) - 1, # num64 < lower + height + 100, # num64 >= upper + ]: + res = contract.caller.getBlockHash(h).hex() + assert f"0x{res}" == "0x" + "0" * 64, res diff --git a/tests/integration_tests/utils.py b/tests/integration_tests/utils.py index b450c99eeb..9d5e9a15b2 100644 --- a/tests/integration_tests/utils.py +++ b/tests/integration_tests/utils.py @@ -357,6 +357,21 @@ def cb(attrs): assert proposal["status"] == "PROPOSAL_STATUS_PASSED", proposal +def submit_gov_proposal(ethermint, tmp_path, **kwargs): + proposal = tmp_path / "proposal.json" + proposal_src = { + "title": "title", + "summary": "summary", + "deposit": "2aphoton", + **kwargs, + } + proposal.write_text(json.dumps(proposal_src)) + rsp = ethermint.cosmos_cli().submit_gov_proposal(proposal, from_="community") + assert rsp["code"] == 0, rsp["raw_log"] + approve_proposal(ethermint, rsp) + print("check params have been updated now") + + class ContractAddress(rlp.Serializable): fields = [ ("from", rlp.sedes.Binary()), diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index c6d493f56a..ecb2b3ee21 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -28,6 +28,7 @@ import ( "github.com/evmos/ethermint/x/evm/statedb" "github.com/evmos/ethermint/x/evm/types" + cmttypes "github.com/cometbft/cometbft/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" ethtypes "github.com/ethereum/go-ethereum/core/types" @@ -90,26 +91,52 @@ func (k *Keeper) NewEVM( return evm } -// GetHashFn implements vm.GetHashFunc for Ethermint. It handles 3 cases: -// 1. The requested height matches the current height from context (and thus same epoch number) -// 2. The requested height is from an previous height from the same chain epoch -// 3. The requested height is from a height greater than the latest one +// GetHashFn implements vm.GetHashFunc for Ethermint. It returns hash for 3 cases: +// 1. The requested height matches current block height from the context. +// 2. The requested height is within the valid range, retrieve the hash from GetHeaderHash for heights after sdk50. +// 3. The requested height is within the valid range, retrieve the hash from GetHistoricalInfo for heights before sdk50. func (k Keeper) GetHashFn(ctx sdk.Context) vm.GetHashFunc { - return func(height uint64) common.Hash { - h, err := ethermint.SafeInt64(height) + return func(num64 uint64) common.Hash { + h, err := ethermint.SafeInt64(num64) if err != nil { return common.Hash{} } - if ctx.BlockHeight() < h { + upper, err := ethermint.SafeUint64(ctx.BlockHeight()) + if err != nil { return common.Hash{} } - if ctx.BlockHeight() == h { + if upper == num64 { headerHash := ctx.HeaderHash() - if len(headerHash) != 0 { + if len(headerHash) > 0 { return common.BytesToHash(headerHash) } } - return common.BytesToHash(k.GetHeaderHash(ctx, height)) + // Align check with https://github.com/ethereum/go-ethereum/blob/release/1.11/core/vm/instructions.go#L433 + headerNum := k.GetParams(ctx).HeaderHashNum + var lower uint64 + if upper <= headerNum { + lower = 0 + } else { + lower = upper - headerNum + } + if num64 < lower || num64 >= upper { + return common.Hash{} + } + hash := k.GetHeaderHash(ctx, num64) + if len(hash) > 0 { + return common.BytesToHash(hash) + } + histInfo, err := k.stakingKeeper.GetHistoricalInfo(ctx, h) + if err != nil { + k.Logger(ctx).Debug("historical info not found", "height", h, "err", err.Error()) + return common.Hash{} + } + header, err := cmttypes.HeaderFromProto(&histInfo.Header) + if err != nil { + k.Logger(ctx).Error("failed to cast tendermint header from proto", "error", err) + return common.Hash{} + } + return common.BytesToHash(header.Hash()) } } diff --git a/x/evm/keeper/state_transition_test.go b/x/evm/keeper/state_transition_test.go index cad82800be..01c8278c02 100644 --- a/x/evm/keeper/state_transition_test.go +++ b/x/evm/keeper/state_transition_test.go @@ -33,6 +33,7 @@ import ( "github.com/evmos/ethermint/x/evm/keeper" "github.com/evmos/ethermint/x/evm/statedb" "github.com/evmos/ethermint/x/evm/types" + evmtypes "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -119,36 +120,73 @@ func (suite *StateTransitionTestSuite) registerHeader(header tmtypes.Header) { } func (suite *StateTransitionTestSuite) TestGetHashFn() { - height := uint64(10) + height := uint64(evmtypes.DefaultHeaderHashNum + 2) header := makeRandHeader(height) hash := header.Hash() testCases := []struct { msg string height uint64 - malleate func(height uint64) + malleate func(int64) expHash common.Hash }{ { - "header not found", + "use cached header hash", height, - func(height uint64) {}, - common.Hash{}, + func(_ int64) { + suite.Ctx = suite.Ctx.WithHeaderHash(hash) + }, + common.BytesToHash(hash), }, { - "header found", - height, - func(height uint64) { - suite.Ctx = suite.Ctx.WithBlockHeight(header.Height).WithHeaderHash(header.Hash()) + "header after sdk50 found", + height - 1, + func(height int64) { + suite.Ctx = suite.Ctx.WithBlockHeight(height).WithHeaderHash(header.Hash()) suite.App.EvmKeeper.SetHeaderHash(suite.Ctx) }, common.BytesToHash(hash), }, + { + "header before sdk50 found", + height - 1, + func(height int64) { + suite.App.StakingKeeper.SetHistoricalInfo(suite.Ctx, height, &stakingtypes.HistoricalInfo{ + Header: *header.ToProto(), + }) + }, + common.BytesToHash(hash), + }, + { + "header in context not found with current height", + height, + func(_ int64) {}, + common.Hash{}, + }, + { + "height greater than current height", + height + 1, + func(_ int64) {}, + common.Hash{}, + }, + { + "height less than header hash num range", + height - evmtypes.DefaultHeaderHashNum - 1, + func(_ int64) {}, + common.Hash{}, + }, + { + "header not found in stores", + height - 1, + func(_ int64) {}, + common.Hash{}, + }, } for _, tc := range testCases { suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { suite.SetupTest() // reset - tc.malleate(tc.height) + tc.malleate(int64(tc.height)) + suite.Ctx = suite.Ctx.WithBlockHeight(header.Height) hash := suite.App.EvmKeeper.GetHashFn(suite.Ctx)(tc.height) suite.Require().Equal(tc.expHash, hash) }) From 816389c76eac127790e6913de6111976215b53e5 Mon Sep 17 00:00:00 2001 From: yihuang Date: Thu, 17 Oct 2024 21:09:35 +0800 Subject: [PATCH 034/210] Problem: node can't quit by signal (#543) * Problem: node can't quit by signal Solution: - cleanup graceful shutdown procedure * Update CHANGELOG.md Signed-off-by: yihuang * fix lint * cleanup --------- Signed-off-by: yihuang Co-authored-by: mmsqe --- CHANGELOG.md | 1 + server/json_rpc.go | 37 ++++++++++++++++++------- server/start.go | 54 +++++++++++-------------------------- testutil/network/network.go | 28 ++++++------------- testutil/network/util.go | 4 +-- 5 files changed, 55 insertions(+), 69 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 208f661084..ad9969a5fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#534](https://github.com/crypto-org-chain/ethermint/pull/534), [#540](https://github.com/crypto-org-chain/ethermint/pull/540) Fix opBlockhash when no block header in abci request. * (rpc) [#536](https://github.com/crypto-org-chain/ethermint/pull/536) Fix validate basic after transaction conversion with raw field. * (cli) [#537](https://github.com/crypto-org-chain/ethermint/pull/537) Fix unsuppored sign mode SIGN_MODE_TEXTUAL for bank transfer. +* (cli) [#543](https://github.com/crypto-org-chain/ethermint/pull/543) Fix graceful shutdown. ### Improvements diff --git a/server/json_rpc.go b/server/json_rpc.go index 9156aeb6ec..130af9bc69 100644 --- a/server/json_rpc.go +++ b/server/json_rpc.go @@ -16,6 +16,7 @@ package server import ( + "context" "fmt" "net/http" "time" @@ -47,18 +48,20 @@ type AppWithPendingTxStream interface { } // StartJSONRPC starts the JSON-RPC server -func StartJSONRPC(srvCtx *server.Context, +func StartJSONRPC( + ctx context.Context, + srvCtx *server.Context, clientCtx client.Context, g *errgroup.Group, config *config.Config, indexer ethermint.EVMTxIndexer, app AppWithPendingTxStream, -) (*http.Server, chan struct{}, error) { +) (*http.Server, error) { logger := srvCtx.Logger.With("module", "geth") evtClient, ok := clientCtx.Client.(rpcclient.EventsClient) if !ok { - return nil, nil, fmt.Errorf("client %T does not implement EventsClient", clientCtx.Client) + return nil, fmt.Errorf("client %T does not implement EventsClient", clientCtx.Client) } var rpcStream *stream.RPCStream @@ -73,7 +76,7 @@ func StartJSONRPC(srvCtx *server.Context, } if err != nil { - return nil, nil, fmt.Errorf("failed to create rpc streams after %d attempts: %w", MaxRetry, err) + return nil, fmt.Errorf("failed to create rpc streams after %d attempts: %w", MaxRetry, err) } app.RegisterPendingTxListener(rpcStream.ListenPendingTx) @@ -104,7 +107,7 @@ func StartJSONRPC(srvCtx *server.Context, "namespace", api.Namespace, "service", api.Service, ) - return nil, nil, err + return nil, err } } @@ -128,12 +131,29 @@ func StartJSONRPC(srvCtx *server.Context, ln, err := Listen(httpSrv.Addr, config) if err != nil { - return nil, nil, err + return nil, err } g.Go(func() error { srvCtx.Logger.Info("Starting JSON-RPC server", "address", config.JSONRPC.Address) - if err := httpSrv.Serve(ln); err != nil { + errCh := make(chan error) + go func() { + errCh <- httpSrv.Serve(ln) + }() + + // Start a blocking select to wait for an indication to stop the server or that + // the server failed to start properly. + select { + case <-ctx.Done(): + // The calling process canceled or closed the provided context, so we must + // gracefully stop the JSON-RPC server. + logger.Info("stopping JSON-RPC server...", "address", config.JSONRPC.Address) + if err := httpSrv.Shutdown(context.Background()); err != nil { + logger.Error("failed to shutdown JSON-RPC server", "error", err.Error()) + } + return ln.Close() + + case err := <-errCh: if err == http.ErrServerClosed { close(httpSrvDone) } @@ -141,12 +161,11 @@ func StartJSONRPC(srvCtx *server.Context, srvCtx.Logger.Error("failed to start JSON-RPC server", "error", err.Error()) return err } - return nil }) srvCtx.Logger.Info("Starting JSON WebSocket server", "address", config.JSONRPC.WsAddress) wsSrv := rpc.NewWebsocketsServer(clientCtx, srvCtx.Logger, rpcStream, config) wsSrv.Start() - return httpSrv, httpSrvDone, nil + return httpSrv, nil } diff --git a/server/start.go b/server/start.go index b1e6c290f3..fec317d82a 100644 --- a/server/start.go +++ b/server/start.go @@ -20,11 +20,9 @@ import ( "fmt" "io" "net" - "net/http" "os" "path/filepath" "runtime/pprof" - "time" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/crypto/keyring" @@ -419,10 +417,11 @@ func startInProcess(svrCtx *server.Context, clientCtx client.Context, opts Start idxer = indexer.NewKVIndexer(idxDB, idxLogger, clientCtx) indexerService := NewEVMIndexerService(idxer, clientCtx.Client.(rpcclient.Client), config.JSONRPC.AllowIndexerGap) indexerService.SetLogger(servercmtlog.CometLoggerWrapper{Logger: idxLogger}) - - g.Go(func() error { - return indexerService.Start() - }) + go func() { + if err := indexerService.Start(); err != nil { + logger.Error("failed to start evm indexer service", "error", err.Error()) + } + }() } if config.API.Enable || config.JSONRPC.Enable { @@ -443,30 +442,12 @@ func startInProcess(svrCtx *server.Context, clientCtx client.Context, opts Start if err != nil { return err } - if grpcSrv != nil { - defer grpcSrv.GracefulStop() - } - apiSrv := startAPIServer(ctx, svrCtx, clientCtx, g, config.Config, app, grpcSrv, metrics) - if apiSrv != nil { - defer apiSrv.Close() - } + startAPIServer(ctx, svrCtx, clientCtx, g, config.Config, app, grpcSrv, metrics) - clientCtx, httpSrv, httpSrvDone, err := startJSONRPCServer(svrCtx, clientCtx, g, config, genDocProvider, idxer, app) - if httpSrv != nil { - defer func() { - shutdownCtx, cancelFn := context.WithTimeout(context.Background(), 10*time.Second) - defer cancelFn() - if err := httpSrv.Shutdown(shutdownCtx); err != nil { - logger.Error("HTTP server shutdown produced a warning", "error", err.Error()) - } else { - logger.Info("HTTP server shut down, waiting 5 sec") - select { - case <-time.Tick(5 * time.Second): - case <-httpSrvDone: - } - } - }() + clientCtx, err = startJSONRPCServer(ctx, svrCtx, clientCtx, g, config, genDocProvider, idxer, app) + if err != nil { + return err } // At this point it is safe to block the process if we're in query only mode as @@ -619,9 +600,9 @@ func startAPIServer( app types.Application, grpcSrv *grpc.Server, metrics *telemetry.Metrics, -) *api.Server { +) { if !svrCfg.API.Enable { - return nil + return } apiSrv := api.New(clientCtx, svrCtx.Logger.With("server", "api"), grpcSrv) @@ -634,10 +615,10 @@ func startAPIServer( g.Go(func() error { return apiSrv.Start(ctx, svrCfg) }) - return apiSrv } func startJSONRPCServer( + stdCtx context.Context, svrCtx *server.Context, clientCtx client.Context, g *errgroup.Group, @@ -645,7 +626,7 @@ func startJSONRPCServer( genDocProvider node.GenesisDocProvider, idxer ethermint.EVMTxIndexer, app types.Application, -) (ctx client.Context, httpSrv *http.Server, httpSrvDone chan struct{}, err error) { +) (ctx client.Context, err error) { ctx = clientCtx if !config.JSONRPC.Enable { return @@ -653,19 +634,16 @@ func startJSONRPCServer( txApp, ok := app.(AppWithPendingTxStream) if !ok { - return ctx, httpSrv, httpSrvDone, fmt.Errorf("json-rpc server requires AppWithPendingTxStream") + return ctx, fmt.Errorf("json-rpc server requires AppWithPendingTxStream") } genDoc, err := genDocProvider() if err != nil { - return ctx, httpSrv, httpSrvDone, err + return ctx, err } ctx = clientCtx.WithChainID(genDoc.ChainID) - g.Go(func() error { - httpSrv, httpSrvDone, err = StartJSONRPC(svrCtx, clientCtx, g, &config, idxer, txApp) - return err - }) + _, err = StartJSONRPC(stdCtx, svrCtx, clientCtx, g, &config, idxer, txApp) return } diff --git a/testutil/network/network.go b/testutil/network/network.go index e3d5e0c52d..08652cb6e4 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -196,14 +196,13 @@ type ( RPCClient tmrpcclient.Client JSONRPCClient *ethclient.Client - tmNode *node.Node - api *api.Server - grpc *grpc.Server - grpcWeb *http.Server - jsonrpc *http.Server - jsonrpcDone chan struct{} - errGroup *errgroup.Group - cancelFn context.CancelFunc + tmNode *node.Node + api *api.Server + grpc *grpc.Server + grpcWeb *http.Server + jsonrpc *http.Server + errGroup *errgroup.Group + cancelFn context.CancelFunc } ) @@ -648,18 +647,7 @@ func (n *Network) Cleanup() { } if v.jsonrpc != nil { - shutdownCtx, cancelFn := context.WithTimeout(context.Background(), 10*time.Second) - defer cancelFn() - - if err := v.jsonrpc.Shutdown(shutdownCtx); err != nil { - v.tmNode.Logger.Error("HTTP server shutdown produced a warning", "error", err.Error()) - } else { - v.tmNode.Logger.Info("HTTP server shut down, waiting 5 sec") - select { - case <-time.Tick(5 * time.Second): - case <-v.jsonrpcDone: - } - } + _ = v.jsonrpc.Close() } } diff --git a/testutil/network/util.go b/testutil/network/util.go index ebc5e1e044..9b8721fe19 100644 --- a/testutil/network/util.go +++ b/testutil/network/util.go @@ -143,8 +143,8 @@ func startInProcess(cfg Config, val *Validator) error { return fmt.Errorf("validator %s context is nil", val.Moniker) } - val.jsonrpc, val.jsonrpcDone, err = server.StartJSONRPC( - val.Ctx, val.ClientCtx, val.errGroup, val.AppConfig, + val.jsonrpc, err = server.StartJSONRPC( + ctx, val.Ctx, val.ClientCtx, val.errGroup, val.AppConfig, nil, app.(server.AppWithPendingTxStream), ) if err != nil { From 4300682947271e377983fb5216bfef557c3a2962 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Tue, 22 Oct 2024 10:56:36 +0800 Subject: [PATCH 035/210] Problem: state overwrite not work in debug trace API (#545) * Problem: state overwrite not work in debug trace API * test * fix --- CHANGELOG.md | 1 + .../integration_tests/configs/default.jsonnet | 1 + tests/integration_tests/test_tracers.py | 97 ++++++++++++++++++- x/evm/keeper/state_transition.go | 33 +++---- x/evm/keeper/statedb.go | 14 --- x/evm/statedb/statedb.go | 4 + 6 files changed, 115 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad9969a5fe..38e2fb44d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,6 +73,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#536](https://github.com/crypto-org-chain/ethermint/pull/536) Fix validate basic after transaction conversion with raw field. * (cli) [#537](https://github.com/crypto-org-chain/ethermint/pull/537) Fix unsuppored sign mode SIGN_MODE_TEXTUAL for bank transfer. * (cli) [#543](https://github.com/crypto-org-chain/ethermint/pull/543) Fix graceful shutdown. +* (rpc) [#545](https://github.com/crypto-org-chain/ethermint/pull/545) Fix state overwrite in debug trace APIs. ### Improvements diff --git a/tests/integration_tests/configs/default.jsonnet b/tests/integration_tests/configs/default.jsonnet index 1345ee682a..e43a490b55 100644 --- a/tests/integration_tests/configs/default.jsonnet +++ b/tests/integration_tests/configs/default.jsonnet @@ -88,6 +88,7 @@ params: { no_base_fee: false, base_fee: '100000000000', + min_gas_multiplier: '0.5', }, }, }, diff --git a/tests/integration_tests/test_tracers.py b/tests/integration_tests/test_tracers.py index eedb0f031d..ea1c051641 100644 --- a/tests/integration_tests/test_tracers.py +++ b/tests/integration_tests/test_tracers.py @@ -113,8 +113,7 @@ def process(w3): assert res[0] == res[-1] == EXPECTED_CONTRACT_CREATE_TRACER, res -def fund_acc(w3, acc): - fund = 3000000000000000000 +def fund_acc(w3, acc, fund=3000000000000000000): addr = acc.address if w3.eth.get_balance(addr, "latest") == 0: tx = {"to": addr, "value": fund, "gasPrice": w3.eth.gas_price} @@ -459,6 +458,100 @@ def process(w3): assert res[0] == res[-1] == balance, res +def test_refund_unused_gas_when_contract_tx_reverted(ethermint): + w3 = ethermint.w3 + test_revert, _ = deploy_contract(w3, CONTRACTS["TestRevert"]) + gas = 1000000 + gas_price = 6060000000000 + acc = derive_new_account(10) + fund_acc(w3, acc, fund=10000000000000000000) + p = ethermint.cosmos_cli().get_params("feemarket")["params"] + min_gas_multiplier = float(p["min_gas_multiplier"]) + sender = acc.address.lower() + tx_res = w3.provider.make_request( + "debug_traceCall", + [ + { + "value": "0x0", + "to": test_revert.address, + "from": sender, + "data": "0x9ffb86a5", + "gas": hex(gas), + "gasPrice": hex(gas_price), + }, + "latest", + { + "tracer": "prestateTracer", + "tracerConfig": { + "diffMode": True, + }, + }, + ], + ) + assert "result" in tx_res + tx_res = tx_res["result"] + pre = int(tx_res["pre"][sender]["balance"], 16) + post = int(tx_res["post"][sender]["balance"], 16) + diff = pre - gas * gas_price * min_gas_multiplier - post + assert diff == 0, diff + + pre = w3.eth.get_balance(acc.address) + receipt = send_transaction( + w3, + test_revert.functions.revertWithMsg().build_transaction( + { + "gas": gas, + "gasPrice": gas_price, + } + ), + key=acc.key, + ) + assert receipt["status"] == 0, receipt["status"] + post = w3.eth.get_balance(acc.address) + diff = pre - gas * gas_price * min_gas_multiplier - post + assert diff == 0, diff + + +def test_refund_unused_gas_when_contract_tx_reverted_state_overrides(ethermint): + w3 = ethermint.w3 + test_revert, _ = deploy_contract(w3, CONTRACTS["TestRevert"]) + gas = 21000 + gas_price = 6060000000000 + acc = derive_new_account(10) + fund_acc(w3, acc, fund=10000000000000000000) + sender = acc.address.lower() + balance = 10000000000000000000000 + nonce = 1000 + tx_res = w3.provider.make_request( + "debug_traceCall", + [ + { + "value": "0x1", + "to": test_revert.address, + "from": sender, + "gas": hex(gas), + "gasPrice": hex(gas_price), + }, + "latest", + { + "tracer": "prestateTracer", + "stateOverrides": { + sender: { + "balance": hex(balance), + "nonce": hex(nonce), + } + } + }, + ], + ) + assert "result" in tx_res + tx_res = tx_res["result"] + balance_af = int(tx_res[sender]["balance"], 16) + nonce_af = tx_res[sender]["nonce"] + assert balance_af == balance, balance_af + assert nonce_af == nonce, nonce_af + + def test_debug_tracecall_return_revert_data_when_call_failed(ethermint, geth): expected = "08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001a46756e6374696f6e20686173206265656e207265766572746564000000000000" # noqa: E501 diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index ecb2b3ee21..3b4906246e 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -314,41 +314,36 @@ func (k *Keeper) ApplyMessageWithConfig( return nil, errorsmod.Wrap(types.ErrCallDisabled, "failed to call contract") } + stateDB := statedb.NewWithParams(ctx, k, cfg.TxConfig, cfg.Params.EvmDenom) + var evm *vm.EVM + if cfg.Overrides != nil { + if err := cfg.Overrides.Apply(stateDB); err != nil { + return nil, errorsmod.Wrap(err, "failed to apply state override") + } + } + evm = k.NewEVM(ctx, msg, cfg, stateDB) // Allow the tracer captures the tx level events, mainly the gas consumption. leftoverGas := msg.GasLimit - senderAddr := sdk.AccAddress(msg.From.Bytes()) + sender := vm.AccountRef(msg.From) tracer := cfg.GetTracer() if tracer != nil { if cfg.DebugTrace { - // msg.GasPrice should have been set to effective gas price amount := new(big.Int).Mul(msg.GasPrice, new(big.Int).SetUint64(msg.GasLimit)) - if err := k.SubBalance(ctx, senderAddr, sdk.NewCoins(sdk.NewCoin(cfg.Params.EvmDenom, sdkmath.NewIntFromBigInt(amount)))); err != nil { - return nil, errorsmod.Wrap(err, "failed to subtract balance") - } - if err := k.incrNonce(ctx, senderAddr); err != nil { - return nil, errorsmod.Wrap(err, "failed to increment nonce") + stateDB.SubBalance(sender.Address(), amount) + if err := stateDB.Error(); err != nil { + return nil, err } + stateDB.SetNonce(sender.Address(), stateDB.GetNonce(sender.Address())+1) } tracer.CaptureTxStart(leftoverGas) defer func() { if cfg.DebugTrace { - amount := new(big.Int).Mul(msg.GasPrice, new(big.Int).SetUint64(leftoverGas)) - _ = k.AddBalance(ctx, senderAddr, sdk.NewCoins(sdk.NewCoin(cfg.Params.EvmDenom, sdkmath.NewIntFromBigInt(amount)))) + stateDB.AddBalance(sender.Address(), new(big.Int).Mul(msg.GasPrice, new(big.Int).SetUint64(leftoverGas))) } tracer.CaptureTxEnd(leftoverGas) }() } - stateDB := statedb.NewWithParams(ctx, k, cfg.TxConfig, cfg.Params.EvmDenom) - var evm *vm.EVM - if cfg.Overrides != nil { - if err := cfg.Overrides.Apply(stateDB); err != nil { - return nil, errorsmod.Wrap(err, "failed to apply state override") - } - } - evm = k.NewEVM(ctx, msg, cfg, stateDB) - sender := vm.AccountRef(msg.From) - rules := cfg.Rules contractCreation := msg.To == nil intrinsicGas, err := k.GetEthIntrinsicGas(msg, rules, contractCreation) diff --git a/x/evm/keeper/statedb.go b/x/evm/keeper/statedb.go index e4e6f0d9ae..e718de0148 100644 --- a/x/evm/keeper/statedb.go +++ b/x/evm/keeper/statedb.go @@ -138,20 +138,6 @@ func (k *Keeper) SetAccount(ctx sdk.Context, addr common.Address, account stated return nil } -func (k *Keeper) incrNonce(ctx sdk.Context, addr sdk.AccAddress) error { - acct := k.accountKeeper.GetAccount(ctx, addr) - if acct == nil { - acct = k.accountKeeper.NewAccountWithAddress(ctx, addr) - } - - if err := acct.SetSequence(acct.GetSequence() + 1); err != nil { - return err - } - - k.accountKeeper.SetAccount(ctx, acct) - return nil -} - // SetState update contract storage, delete if value is empty. func (k *Keeper) SetState(ctx sdk.Context, addr common.Address, key common.Hash, value []byte) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.AddressStoragePrefix(addr)) diff --git a/x/evm/statedb/statedb.go b/x/evm/statedb/statedb.go index b5f3caf027..ab4f7ac414 100644 --- a/x/evm/statedb/statedb.go +++ b/x/evm/statedb/statedb.go @@ -637,6 +637,10 @@ func (s *StateDB) RevertToSnapshot(revid int) { s.validRevisions = s.validRevisions[:idx] } +func (s *StateDB) Error() error { + return s.err +} + // Commit writes the dirty states to keeper // the StateDB object should be discarded after committed. func (s *StateDB) Commit() error { From e786b3fb61c5f6bebea26321032fcb29287d031e Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 23 Oct 2024 16:32:02 +0800 Subject: [PATCH 036/210] Problem: dependencies are outdated (#542) Co-authored-by: yihuang --- go.mod | 8 ++++---- go.sum | 12 ++++++------ gomod2nix.toml | 10 +++++----- tests/integration_tests/poetry.lock | 3 +-- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index af84c95e75..e5ba5c2de9 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( cosmossdk.io/tools/confix v0.1.2 cosmossdk.io/x/evidence v0.1.1 cosmossdk.io/x/feegrant v0.1.1 - cosmossdk.io/x/tx v0.13.5 + cosmossdk.io/x/tx v0.13.6-0.20241003112805-ff8789a02871 cosmossdk.io/x/upgrade v0.1.4 github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcutil v1.1.6 @@ -245,9 +245,9 @@ require ( replace ( // release/v0.50.x - cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240930015419-f4ea363b3fdf - cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240930015419-f4ea363b3fdf - github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240930015419-f4ea363b3fdf + cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241015015202-783e224f9517 + cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241015015202-783e224f9517 + github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517 ) replace ( diff --git a/go.sum b/go.sum index 26744c4247..47d297cd9b 100644 --- a/go.sum +++ b/go.sum @@ -412,12 +412,12 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+FBB8cMkDE2j2VBVsbY+HCkPIu0YsJ/9bbGeQ= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240930015419-f4ea363b3fdf h1:QNQ9uB3DEfJqSMwERDSaYQMofgfzfcSp49iDt7B2jvc= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20240930015419-f4ea363b3fdf/go.mod h1:iJLknPnyzlcQGdgfIp9d8QCuqt8g1RjJeh8pJ/p5wj4= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240930015419-f4ea363b3fdf h1:vGFA8f1EbNLgabbSBBnT1bArLnrl4ETk4PUTJLb01Pc= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20240930015419-f4ea363b3fdf/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240930015419-f4ea363b3fdf h1:u6BY+dtlmhuQYfPDnpGhDBF2uiCA0HvrIk22L67nB6Q= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20240930015419-f4ea363b3fdf/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517 h1:iRnJMiquXPE3OpVX8ENCrcstfd7mI206yC3Bkl6WeK4= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517/go.mod h1:JwwsMeZldLN20b72mmbWPY0EV9rs+v/12hRu1JFttvY= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241015015202-783e224f9517 h1:y3i8TiU7E60zmbpLyo4PqrnwZaWNU3kizU+1OezuoA8= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241015015202-783e224f9517/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241015015202-783e224f9517 h1:CwheSMAqz+kYCFz/X4lZq3BJAWINm/hndzVkjOc/2mI= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241015015202-783e224f9517/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716 h1:OvD5Rm0B6LHUJk6z858UgwdP72jU2DuUdXeclRyKpDI= github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240926023215-d2275b4afb9a h1:IUPD+dg1YQl8cLocxQ/Mbx/ObTgAgcrZlcBhFjsLO40= diff --git a/gomod2nix.toml b/gomod2nix.toml index ebb0549b6e..4fb382514d 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -44,7 +44,7 @@ schema = 3 version = "v1.3.0" hash = "sha256-EEFK43Cr0g0ndhQhkIKher0FqV3mvkmE9z0sP7uVSHg=" [mod."cosmossdk.io/store"] - version = "v0.0.0-20240930015419-f4ea363b3fdf" + version = "v0.0.0-20241015015202-783e224f9517" hash = "sha256-6MLZ2SPWwmpisfLmkZ9MOnL2/phjIUwo4EuVA6ORjYE=" replaced = "github.com/crypto-org-chain/cosmos-sdk/store" [mod."cosmossdk.io/tools/confix"] @@ -57,8 +57,8 @@ schema = 3 version = "v0.1.1" hash = "sha256-aps3LfnQau1TYeccGwtqHQvy1Rudc9+O+iVAwXBKyDw=" [mod."cosmossdk.io/x/tx"] - version = "v0.0.0-20240930015419-f4ea363b3fdf" - hash = "sha256-YmgVsfnkZpQ5kMYpQL/ftfGIeWWWtTei4jWdHrBzVO8=" + version = "v0.0.0-20241015015202-783e224f9517" + hash = "sha256-EEM93+QilFlUOTSR0RwbZYyyAnl70PXtJq8ZEGjxL3g=" replaced = "github.com/crypto-org-chain/cosmos-sdk/x/tx" [mod."cosmossdk.io/x/upgrade"] version = "v0.1.4" @@ -167,8 +167,8 @@ schema = 3 version = "v1.0.0-beta.5" hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg=" [mod."github.com/cosmos/cosmos-sdk"] - version = "v0.50.6-0.20240930015419-f4ea363b3fdf" - hash = "sha256-CzL+v06/nATLLXFhKTQjR7avEyW3hOvr38FTTnqqooc=" + version = "v0.50.6-0.20241015015202-783e224f9517" + hash = "sha256-CXmNDKUfGAhKLUWO1BxqcesvzvlUxVOG0xRJhqqZNC8=" replaced = "github.com/crypto-org-chain/cosmos-sdk" [mod."github.com/cosmos/go-bip39"] version = "v1.0.0" diff --git a/tests/integration_tests/poetry.lock b/tests/integration_tests/poetry.lock index 8149161d65..274ce7075b 100644 --- a/tests/integration_tests/poetry.lock +++ b/tests/integration_tests/poetry.lock @@ -1636,7 +1636,6 @@ python-dateutil = "^2.8" python-dotenv = "^1.0" pyyaml = "^6.0" pyyaml-include = "^1.3" -rpds-py = "^0.17.0" supervisor = "^4.2" tomlkit = "^0" @@ -1644,7 +1643,7 @@ tomlkit = "^0" type = "git" url = "https://github.com/crypto-com/pystarport.git" reference = "main" -resolved_reference = "4704c4a27b159eaa4d434ef44b9bf1046e81da1b" +resolved_reference = "a7dac7f485b9acef30540d803b53fadaf1a1850a" [[package]] name = "pytest" From e567c5ad3acfa151bda7a9d359d594eb31ab8760 Mon Sep 17 00:00:00 2001 From: yihuang Date: Mon, 28 Oct 2024 09:58:56 +0800 Subject: [PATCH 037/210] Problem: check tx blocks consensus (#546) * Problem: check tx blocks consensus Solution: - try NewConnSyncLocalClientCreator * optional * optional in flags * add log * changelog --- CHANGELOG.md | 1 + server/start.go | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38e2fb44d6..d79471d745 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -97,6 +97,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#522](https://github.com/crypto-org-chain/ethermint/pull/522) block-stm executor support optional pre-estimations. * [#526](https://github.com/crypto-org-chain/ethermint/pull/526), [#535](https://github.com/crypto-org-chain/ethermint/pull/535) Avoid unnecessary block result in header related api call. * [#533](https://github.com/crypto-org-chain/ethermint/pull/533) Bump cosmos-sdk to v0.50.10, cometbft to v0.38.13 and ibc-go to v8.5.1. +* [#546](https://github.com/crypto-org-chain/ethermint/pull/546) Introduce `--async-check-tx` flag to run check-tx async with consensus. ## v0.21.x-cronos diff --git a/server/start.go b/server/start.go index fec317d82a..8d5bca5e29 100644 --- a/server/start.go +++ b/server/start.go @@ -69,6 +69,8 @@ import ( ethermint "github.com/evmos/ethermint/types" ) +const FlagAsyncCheckTx = "async-check-tx" + // DBOpener is a function to open `application.db`, potentially with customized options. type DBOpener func(opts types.AppOptions, rootDir string, backend dbm.BackendType) (dbm.DB, error) @@ -227,6 +229,8 @@ which accepts a path for the resulting pprof file. cmd.Flags().Uint32(server.FlagStateSyncSnapshotKeepRecent, 2, "State sync snapshot to keep") cmd.Flags().Int(server.FlagMempoolMaxTxs, config.DefaultMaxTxs, "Sets MaxTx value for the app-side mempool") + cmd.Flags().Bool(FlagAsyncCheckTx, false, "Enable async check tx [experimental]") + // add support for all CometBFT-specific command line options tcmd.AddNodeFlags(cmd) return cmd @@ -355,12 +359,21 @@ func startInProcess(svrCtx *server.Context, clientCtx client.Context, opts Start logger.Info("starting node with ABCI CometBFT in-process") cmtApp := server.NewCometABCIWrapper(app) + + var clientCreator proxy.ClientCreator + if svrCtx.Viper.GetBool(FlagAsyncCheckTx) { + logger.Info("enabling async check tx") + clientCreator = proxy.NewConnSyncLocalClientCreator(cmtApp) + } else { + clientCreator = proxy.NewLocalClientCreator(cmtApp) + } + tmNode, err = node.NewNodeWithContext( ctx, cfg, pvm.LoadOrGenFilePV(cfg.PrivValidatorKeyFile(), cfg.PrivValidatorStateFile()), nodeKey, - proxy.NewLocalClientCreator(cmtApp), + clientCreator, genDocProvider, cmtcfg.DefaultDBProvider, node.DefaultMetricsProvider(cfg.Instrumentation), From ce5773ecf6c39bdf13d6bca6eeebee5199509f2c Mon Sep 17 00:00:00 2001 From: valli_0x <65861300+valli0x@users.noreply.github.com> Date: Wed, 30 Oct 2024 05:32:06 +0300 Subject: [PATCH 038/210] graceful shutdown of websocket (#547) * graceful shutdown of websocket * context for unsubscribe logs * added a logger to the log subscription * lint --------- Co-authored-by: mmsqe --- rpc/websockets.go | 30 ++++++++++++++++++------------ server/json_rpc.go | 2 +- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/rpc/websockets.go b/rpc/websockets.go index 7303a7717a..b4d34b2283 100644 --- a/rpc/websockets.go +++ b/rpc/websockets.go @@ -86,7 +86,9 @@ type websocketsServer struct { logger log.Logger } -func NewWebsocketsServer(clientCtx client.Context, logger log.Logger, stream *stream.RPCStream, cfg *config.Config) WebsocketsServer { +func NewWebsocketsServer( + ctx context.Context, clientCtx client.Context, logger log.Logger, stream *stream.RPCStream, cfg *config.Config, +) WebsocketsServer { logger = logger.With("api", "websocket-server") _, port, _ := net.SplitHostPort(cfg.JSONRPC.Address) @@ -95,7 +97,7 @@ func NewWebsocketsServer(clientCtx client.Context, logger log.Logger, stream *st wsAddr: cfg.JSONRPC.WsAddress, certFile: cfg.TLS.CertificatePath, keyFile: cfg.TLS.KeyPath, - api: newPubSubAPI(clientCtx, logger, stream), + api: newPubSubAPI(ctx, clientCtx, logger, stream), logger: logger, } } @@ -347,18 +349,20 @@ func (s *websocketsServer) tcpGetAndSendResponse(wsConn *wsConn, mb []byte) erro // pubSubAPI is the eth_ prefixed set of APIs in the Web3 JSON-RPC spec type pubSubAPI struct { - events *stream.RPCStream - logger log.Logger - clientCtx client.Context + events *stream.RPCStream + logger log.Logger + clientCtx client.Context + cancelContext context.Context } // newPubSubAPI creates an instance of the ethereum PubSub API. -func newPubSubAPI(clientCtx client.Context, logger log.Logger, stream *stream.RPCStream) *pubSubAPI { +func newPubSubAPI(ctx context.Context, clientCtx client.Context, logger log.Logger, stream *stream.RPCStream) *pubSubAPI { logger = logger.With("module", "websocket-client") return &pubSubAPI{ - events: stream, - logger: logger, - clientCtx: clientCtx, + events: stream, + logger: logger, + clientCtx: clientCtx, + cancelContext: ctx, } } @@ -411,7 +415,8 @@ type Header struct { } func (api *pubSubAPI) subscribeNewHeads(wsConn *wsConn, subID rpc.ID) (context.CancelFunc, error) { - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(api.cancelContext) + //nolint: errcheck go api.events.HeaderStream().Subscribe(ctx, func(headers []stream.RPCHeader, _ int) error { for _, header := range headers { @@ -569,7 +574,7 @@ func (api *pubSubAPI) subscribeLogs(wsConn *wsConn, subID rpc.ID, extra interfac } } - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(api.cancelContext) //nolint: errcheck go api.events.LogStream().Subscribe(ctx, func(txLogs []*ethtypes.Log, _ int) error { logs := rpcfilters.FilterLogs(txLogs, crit.FromBlock, crit.ToBlock, crit.Addresses, crit.Topics) @@ -589,6 +594,7 @@ func (api *pubSubAPI) subscribeLogs(wsConn *wsConn, subID rpc.ID, extra interfac err := wsConn.WriteJSON(res) if err != nil { + api.logger.Error("error writing header, will drop peer", "error", err.Error()) try(func() { if err != websocket.ErrCloseSent { _ = wsConn.Close() @@ -605,7 +611,7 @@ func (api *pubSubAPI) subscribeLogs(wsConn *wsConn, subID rpc.ID, extra interfac } func (api *pubSubAPI) subscribePendingTransactions(wsConn *wsConn, subID rpc.ID) (context.CancelFunc, error) { - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithCancel(api.cancelContext) //nolint: errcheck go api.events.PendingTxStream().Subscribe(ctx, func(items []common.Hash, _ int) error { for _, hash := range items { diff --git a/server/json_rpc.go b/server/json_rpc.go index 130af9bc69..c8b5b5eedb 100644 --- a/server/json_rpc.go +++ b/server/json_rpc.go @@ -165,7 +165,7 @@ func StartJSONRPC( srvCtx.Logger.Info("Starting JSON WebSocket server", "address", config.JSONRPC.WsAddress) - wsSrv := rpc.NewWebsocketsServer(clientCtx, srvCtx.Logger, rpcStream, config) + wsSrv := rpc.NewWebsocketsServer(ctx, clientCtx, srvCtx.Logger, rpcStream, config) wsSrv.Start() return httpSrv, nil } From 885530b80c206c67f86dcf20cde672a643326cea Mon Sep 17 00:00:00 2001 From: yihuang Date: Wed, 30 Oct 2024 16:37:05 +0800 Subject: [PATCH 039/210] Problem: build fail without cgo (#549) * Problem: build fail without cgo * Update CHANGELOG.md Signed-off-by: yihuang * revert --------- Signed-off-by: yihuang --- CHANGELOG.md | 1 + app/ante/eip712.go | 5 ++--- go.mod | 2 +- go.sum | 4 ++-- gomod2nix.toml | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d79471d745..a9e82a4c87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -98,6 +98,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#526](https://github.com/crypto-org-chain/ethermint/pull/526), [#535](https://github.com/crypto-org-chain/ethermint/pull/535) Avoid unnecessary block result in header related api call. * [#533](https://github.com/crypto-org-chain/ethermint/pull/533) Bump cosmos-sdk to v0.50.10, cometbft to v0.38.13 and ibc-go to v8.5.1. * [#546](https://github.com/crypto-org-chain/ethermint/pull/546) Introduce `--async-check-tx` flag to run check-tx async with consensus. +* [#549](https://github.com/crypto-org-chain/ethermint/pull/549) Support build without cgo. ## v0.21.x-cronos diff --git a/app/ante/eip712.go b/app/ante/eip712.go index 2237a7910c..3ccef365f7 100644 --- a/app/ante/eip712.go +++ b/app/ante/eip712.go @@ -32,7 +32,6 @@ import ( ibcante "github.com/cosmos/ibc-go/v8/modules/core/ante" ethcrypto "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/crypto/secp256k1" "github.com/ethereum/go-ethereum/signer/core/apitypes" "github.com/evmos/ethermint/crypto/ethsecp256k1" "github.com/evmos/ethermint/ethereum/eip712" @@ -301,7 +300,7 @@ func VerifySignature( feePayerSig[ethcrypto.RecoveryIDOffset] -= 27 } - feePayerPubkey, err := secp256k1.RecoverPubkey(sigHash, feePayerSig) + feePayerPubkey, err := ethcrypto.Ecrecover(sigHash, feePayerSig) if err != nil { return errorsmod.Wrap(err, "failed to recover delegated fee payer from sig") } @@ -327,7 +326,7 @@ func VerifySignature( // VerifySignature of ethsecp256k1 accepts 64 byte signature [R||S] // WARNING! Under NO CIRCUMSTANCES try to use pubKey.VerifySignature there - if !secp256k1.VerifySignature(pubKey.Bytes(), sigHash, feePayerSig[:len(feePayerSig)-1]) { + if !ethcrypto.VerifySignature(pubKey.Bytes(), sigHash, feePayerSig[:len(feePayerSig)-1]) { return errorsmod.Wrap(errortypes.ErrorInvalidSigner, "unable to verify signer signature of EIP712 typed data") } diff --git a/go.mod b/go.mod index e5ba5c2de9..136ce83dc2 100644 --- a/go.mod +++ b/go.mod @@ -254,7 +254,7 @@ replace ( // use cosmos keyring github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 // release/v1.11.x - github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240926023215-d2275b4afb9a + github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183 // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0 diff --git a/go.sum b/go.sum index 47d297cd9b..c2411241b5 100644 --- a/go.sum +++ b/go.sum @@ -420,8 +420,8 @@ github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241015015202-783e224f9517 h github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241015015202-783e224f9517/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716 h1:OvD5Rm0B6LHUJk6z858UgwdP72jU2DuUdXeclRyKpDI= github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= -github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240926023215-d2275b4afb9a h1:IUPD+dg1YQl8cLocxQ/Mbx/ObTgAgcrZlcBhFjsLO40= -github.com/crypto-org-chain/go-ethereum v1.10.20-0.20240926023215-d2275b4afb9a/go.mod h1:A249HEl6XyiV5zSnKM9j9RF3szMghMNONMyNvYuqQIw= +github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183 h1:JDBTqDkd9X9oBF2C4FKOpn0GVDQDzVkHzeS8eDWNl6A= +github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183/go.mod h1:5DnkptqPQr+Mo3sy/2V3OQu+K94x1PVzFGZJZbDF8mI= github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= github.com/danieljoos/wincred v1.2.0/go.mod h1:FzQLLMKBFdvu+osBrnFODiv32YGwCfx0SkRa/eYHgec= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/gomod2nix.toml b/gomod2nix.toml index 4fb382514d..03fa4cc785 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -249,8 +249,8 @@ schema = 3 version = "v1.6.1" hash = "sha256-zOpoaepCfPLmU9iQji/Ait+SVEHI9eF3rwtW0h/8lho=" [mod."github.com/ethereum/go-ethereum"] - version = "v1.10.20-0.20240926023215-d2275b4afb9a" - hash = "sha256-ozwVS2BhAoz+OOisAyMhgg+lq8FdQjf90xoOq9cxtGw=" + version = "v1.10.20-0.20241030073450-b9cc632bc183" + hash = "sha256-5nh0HZOZwlZBMmHv08BELlNfDZyq5zwq65ByyMzOetA=" replaced = "github.com/crypto-org-chain/go-ethereum" [mod."github.com/fatih/color"] version = "v1.16.0" From 8afdc6924206a2443a1217ba22f73300a9e8c31b Mon Sep 17 00:00:00 2001 From: yihuang Date: Fri, 1 Nov 2024 13:30:09 +0800 Subject: [PATCH 040/210] Problem: rpc stream overhead even if not used (#551) * Problem: rpc stream overhead even if not used Solution: - init the underlying subscriptions lazily. * Update CHANGELOG.md Signed-off-by: yihuang * fix build * ignore pending tx --------- Signed-off-by: yihuang --- CHANGELOG.md | 1 + rpc/stream/rpc.go | 48 ++++++++++++++++++++++++++++++---------------- server/json_rpc.go | 19 ++---------------- 3 files changed, 35 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9e82a4c87..c9cf53a8f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -99,6 +99,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#533](https://github.com/crypto-org-chain/ethermint/pull/533) Bump cosmos-sdk to v0.50.10, cometbft to v0.38.13 and ibc-go to v8.5.1. * [#546](https://github.com/crypto-org-chain/ethermint/pull/546) Introduce `--async-check-tx` flag to run check-tx async with consensus. * [#549](https://github.com/crypto-org-chain/ethermint/pull/549) Support build without cgo. +* [#551](https://github.com/crypto-org-chain/ethermint/pull/551) Start event stream on demand. ## v0.21.x-cronos diff --git a/rpc/stream/rpc.go b/rpc/stream/rpc.go index baa2a59660..5e4d1bb78c 100644 --- a/rpc/stream/rpc.go +++ b/rpc/stream/rpc.go @@ -51,14 +51,18 @@ type validatorAccountFunc func( ) (*evmtypes.QueryValidatorAccountResponse, error) // RPCStream provides data streams for newHeads, logs, and pendingTransactions. +// it's only started on demand, so there's no overhead if the filter apis are not called at all. type RPCStream struct { evtClient rpcclient.EventsClient logger log.Logger txDecoder sdk.TxDecoder - headerStream *Stream[RPCHeader] + // headerStream/logStream are backed by cometbft event subscription + headerStream *Stream[RPCHeader] + logStream *Stream[*ethtypes.Log] + + // pendingTxStream is backed by check-tx ante handler pendingTxStream *Stream[common.Hash] - logStream *Stream[*ethtypes.Log] wg sync.WaitGroup validatorAccount validatorAccountFunc @@ -69,23 +73,30 @@ func NewRPCStreams( logger log.Logger, txDecoder sdk.TxDecoder, validatorAccount validatorAccountFunc, -) (*RPCStream, error) { - s := &RPCStream{ - evtClient: evtClient, - logger: logger, - txDecoder: txDecoder, - - headerStream: NewStream[RPCHeader](headerStreamSegmentSize, headerStreamCapacity), - pendingTxStream: NewStream[common.Hash](txStreamSegmentSize, txStreamCapacity), - logStream: NewStream[*ethtypes.Log](logStreamSegmentSize, logStreamCapacity), +) *RPCStream { + return &RPCStream{ + evtClient: evtClient, + logger: logger, + txDecoder: txDecoder, validatorAccount: validatorAccount, + pendingTxStream: NewStream[common.Hash](txStreamSegmentSize, txStreamCapacity), } +} + +func (s *RPCStream) initSubscriptions() { + if s.headerStream != nil { + // already initialized + return + } + + s.headerStream = NewStream[RPCHeader](headerStreamSegmentSize, headerStreamCapacity) + s.logStream = NewStream[*ethtypes.Log](logStreamSegmentSize, logStreamCapacity) ctx := context.Background() chBlocks, err := s.evtClient.Subscribe(ctx, streamSubscriberName, blockEvents, subscribBufferSize) if err != nil { - return nil, err + panic(err) } chLogs, err := s.evtClient.Subscribe(ctx, streamSubscriberName, evmEvents, subscribBufferSize) @@ -93,15 +104,18 @@ func NewRPCStreams( if err := s.evtClient.UnsubscribeAll(context.Background(), streamSubscriberName); err != nil { s.logger.Error("failed to unsubscribe", "err", err) } - return nil, err + panic(err) } go s.start(&s.wg, chBlocks, chLogs) - - return s, nil } func (s *RPCStream) Close() error { + if s.headerStream == nil { + // not initialized + return nil + } + if err := s.evtClient.UnsubscribeAll(context.Background(), streamSubscriberName); err != nil { return err } @@ -110,6 +124,7 @@ func (s *RPCStream) Close() error { } func (s *RPCStream) HeaderStream() *Stream[RPCHeader] { + s.initSubscriptions() return s.headerStream } @@ -118,12 +133,13 @@ func (s *RPCStream) PendingTxStream() *Stream[common.Hash] { } func (s *RPCStream) LogStream() *Stream[*ethtypes.Log] { + s.initSubscriptions() return s.logStream } // ListenPendingTx is a callback passed to application to listen for pending transactions in CheckTx. func (s *RPCStream) ListenPendingTx(hash common.Hash) { - s.pendingTxStream.Add(hash) + s.PendingTxStream().Add(hash) } func (s *RPCStream) start( diff --git a/server/json_rpc.go b/server/json_rpc.go index c8b5b5eedb..5fee46da97 100644 --- a/server/json_rpc.go +++ b/server/json_rpc.go @@ -38,10 +38,7 @@ import ( ethermint "github.com/evmos/ethermint/types" ) -const ( - ServerStartTime = 5 * time.Second - MaxRetry = 6 -) +const ServerStartTime = 5 * time.Second type AppWithPendingTxStream interface { RegisterPendingTxListener(listener ante.PendingTxListener) @@ -64,20 +61,8 @@ func StartJSONRPC( return nil, fmt.Errorf("client %T does not implement EventsClient", clientCtx.Client) } - var rpcStream *stream.RPCStream - var err error queryClient := rpctypes.NewQueryClient(clientCtx) - for i := 0; i < MaxRetry; i++ { - rpcStream, err = stream.NewRPCStreams(evtClient, logger, clientCtx.TxConfig.TxDecoder(), queryClient.ValidatorAccount) - if err == nil { - break - } - time.Sleep(time.Second) - } - - if err != nil { - return nil, fmt.Errorf("failed to create rpc streams after %d attempts: %w", MaxRetry, err) - } + rpcStream := stream.NewRPCStreams(evtClient, logger, clientCtx.TxConfig.TxDecoder(), queryClient.ValidatorAccount) app.RegisterPendingTxListener(rpcStream.ListenPendingTx) From e52a5558ab9a56ce6700d83f604834bbaaab39db Mon Sep 17 00:00:00 2001 From: valli_0x <65861300+valli0x@users.noreply.github.com> Date: Fri, 1 Nov 2024 14:20:36 +0300 Subject: [PATCH 041/210] removed listener closing in gracefully shutdown json-rpc server (#550) * removed listener closing in gracefully shutdown json-rpc server * just logging error from shutdown json-rpc server --------- Co-authored-by: yihuang --- server/json_rpc.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/json_rpc.go b/server/json_rpc.go index 5fee46da97..326353c049 100644 --- a/server/json_rpc.go +++ b/server/json_rpc.go @@ -136,7 +136,7 @@ func StartJSONRPC( if err := httpSrv.Shutdown(context.Background()); err != nil { logger.Error("failed to shutdown JSON-RPC server", "error", err.Error()) } - return ln.Close() + return nil case err := <-errCh: if err == http.ErrServerClosed { From e4d00df93541fbd6d0e8fb79623af67995e449bc Mon Sep 17 00:00:00 2001 From: yihuang Date: Fri, 1 Nov 2024 21:47:53 +0800 Subject: [PATCH 042/210] Problem: check-tx don't run in parallel (#552) * Problem: check-tx don't run in parallel Solution: - try with experimental flag * fix test --------- Co-authored-by: mmsqe --- flake.lock | 36 ++++++++++----------- flake.nix | 2 +- go.mod | 38 +++++++++++----------- go.sum | 77 ++++++++++++++++++++++----------------------- gomod2nix.toml | 69 ++++++++++++++++++++-------------------- nix/default.nix | 2 +- nix/go-ethereum.nix | 5 +-- nix/sources.json | 14 ++++----- server/start.go | 2 +- 9 files changed, 124 insertions(+), 121 deletions(-) diff --git a/flake.lock b/flake.lock index d316e6910e..bf3b2f9809 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1710154385, - "narHash": "sha256-4c3zQ2YY4BZOufaBJB4v9VBBeN2dH7iVdoJw8SDNCfI=", + "lastModified": 1729448365, + "narHash": "sha256-oquZeWTYWTr5IxfwEzgsxjtD8SSFZYLdO9DaQb70vNU=", "owner": "nix-community", "repo": "gomod2nix", - "rev": "872b63ddd28f318489c929d25f1f0a3c6039c971", + "rev": "5d387097aa716f35dd99d848dc26d8d5b62a104c", "type": "github" }, "original": { @@ -49,11 +49,11 @@ ] }, "locked": { - "lastModified": 1703863825, - "narHash": "sha256-rXwqjtwiGKJheXB43ybM8NwWB8rO2dSRrEqes0S7F5Y=", + "lastModified": 1729742964, + "narHash": "sha256-B4mzTcQ0FZHdpeWcpDYPERtyjJd/NIuaQ9+BV1h+MpA=", "owner": "nix-community", "repo": "nix-github-actions", - "rev": "5163432afc817cf8bd1f031418d1869e4c9d5547", + "rev": "e04df33f62cdcf93d73e9a04142464753a16db67", "type": "github" }, "original": { @@ -64,11 +64,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1710283812, - "narHash": "sha256-F+s4//HwNEXtgxZ6PLoe5khDTmUukPYbjCvx7us2vww=", + "lastModified": 1730272153, + "narHash": "sha256-B5WRZYsRlJgwVHIV6DvidFN7VX7Fg9uuwkRW9Ha8z+w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "73bf415737ceb66a6298f806f600cfe4dccd0a41", + "rev": "2d2a9ddbe3f2c00747398f3dc9b05f7f2ebb0f53", "type": "github" }, "original": { @@ -91,11 +91,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1708589824, - "narHash": "sha256-2GOiFTkvs5MtVF65sC78KNVxQSmsxtk0WmV1wJ9V2ck=", + "lastModified": 1730284601, + "narHash": "sha256-eHYcKVLIRRv3J1vjmxurS6HVdGphB53qxUeAkylYrZY=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "3c92540611f42d3fb2d0d084a6c694cd6544b609", + "rev": "43a898b4d76f7f3f70df77a2cc2d40096bc9d75e", "type": "github" }, "original": { @@ -149,11 +149,11 @@ ] }, "locked": { - "lastModified": 1708335038, - "narHash": "sha256-ETLZNFBVCabo7lJrpjD6cAbnE11eDOjaQnznmg/6hAE=", + "lastModified": 1730120726, + "narHash": "sha256-LqHYIxMrl/1p3/kvm2ir925tZ8DkI0KA10djk8wecSk=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "e504621290a1fd896631ddbc5e9c16f4366c9f65", + "rev": "9ef337e492a5555d8e17a51c911ff1f02635be15", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 0d86cd34d5..e48e77e182 100644 --- a/flake.nix +++ b/flake.nix @@ -58,7 +58,7 @@ ) ) // { overlay = final: super: { - go = super.go_1_22; + go = super.go_1_23; test-env = final.callPackage ./nix/testenv.nix { }; }; }; diff --git a/go.mod b/go.mod index 136ce83dc2..8169c56b1d 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,8 @@ module github.com/evmos/ethermint -go 1.22.2 +go 1.22.7 -toolchain go1.22.3 +toolchain go1.23.1 require ( cosmossdk.io/api v0.7.6 @@ -53,9 +53,9 @@ require ( github.com/tyler-smith/go-bip39 v1.1.0 golang.org/x/net v0.29.0 golang.org/x/sync v0.8.0 - golang.org/x/text v0.18.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 - google.golang.org/grpc v1.66.1 + golang.org/x/text v0.19.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 + google.golang.org/grpc v1.67.1 google.golang.org/protobuf v1.34.2 sigs.k8s.io/yaml v1.4.0 ) @@ -64,7 +64,7 @@ require ( cloud.google.com/go v0.115.0 // indirect cloud.google.com/go/auth v0.6.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.9 // indirect cloud.google.com/go/storage v1.41.0 // indirect cosmossdk.io/depinject v1.0.0 // indirect @@ -95,7 +95,7 @@ require ( github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect - github.com/cometbft/cometbft-db v0.12.0 // indirect + github.com/cometbft/cometbft-db v0.14.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/iavl v1.2.0 // indirect @@ -132,7 +132,7 @@ require ( github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect - github.com/golang/glog v1.2.1 // indirect + github.com/golang/glog v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect @@ -171,7 +171,7 @@ require ( github.com/klauspost/compress v1.17.9 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/lib/pq v1.10.7 // indirect + github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.8.14 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect @@ -188,18 +188,18 @@ require ( github.com/oklog/run v1.1.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect - github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect + github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.20.1 // indirect + github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.57.0 // indirect + github.com/prometheus/common v0.59.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/zerolog v1.33.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect @@ -224,17 +224,17 @@ require ( go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.27.0 // indirect + golang.org/x/crypto v0.28.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect golang.org/x/mod v0.18.0 // indirect - golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sys v0.25.0 // indirect - golang.org/x/term v0.24.0 // indirect + golang.org/x/oauth2 v0.22.0 // indirect + golang.org/x/sys v0.26.0 // indirect + golang.org/x/term v0.25.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.22.0 // indirect google.golang.org/api v0.186.0 // indirect google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -253,6 +253,8 @@ replace ( replace ( // use cosmos keyring github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 + // v0.38.x + github.com/cometbft/cometbft => github.com/crypto-org-chain/cometbft v0.0.0-20241101110921-cee5fa03c9ba // release/v1.11.x github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183 // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. diff --git a/go.sum b/go.sum index c2411241b5..34c01955a1 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -240,8 +240,8 @@ github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= -github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= +github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I= +github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -362,10 +362,8 @@ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1: github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft v0.38.13-0.20240920204745-fdf90d16f608 h1:H/OAewlwE0zYQYbaYx2fLgw8agjr8F10Ai43Ug92P4w= -github.com/cometbft/cometbft v0.38.13-0.20240920204745-fdf90d16f608/go.mod h1:a8NBI2IdO283RZdpH0MuXlze3j+lv6PXuzOtTCq4YGE= -github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= -github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= +github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ= +github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -412,6 +410,8 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+FBB8cMkDE2j2VBVsbY+HCkPIu0YsJ/9bbGeQ= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= +github.com/crypto-org-chain/cometbft v0.0.0-20241101110921-cee5fa03c9ba h1:g3uPF40faoyCZsRRyS1aljDGNSZmDP44e4VjRl8k1Ik= +github.com/crypto-org-chain/cometbft v0.0.0-20241101110921-cee5fa03c9ba/go.mod h1:7v7mf87Zd7umLS1rtRs4Z4wgUqs2stVPZza0eMLWd/Y= github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517 h1:iRnJMiquXPE3OpVX8ENCrcstfd7mI206yC3Bkl6WeK4= github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517/go.mod h1:JwwsMeZldLN20b72mmbWPY0EV9rs+v/12hRu1JFttvY= github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241015015202-783e224f9517 h1:y3i8TiU7E60zmbpLyo4PqrnwZaWNU3kizU+1OezuoA8= @@ -565,8 +565,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= +github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -832,8 +832,8 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= @@ -930,8 +930,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= -github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= -github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= +github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -950,9 +950,8 @@ github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= -github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= @@ -973,8 +972,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= -github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -989,8 +988,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.57.0 h1:Ro/rKjwdq9mZn1K5QPctzh+MA4Lp0BuYk5ZZEVhoNcY= -github.com/prometheus/common v0.57.0/go.mod h1:7uRPFSUTbfZWsJ7MHY56sqt7hLQu3bxXHDnNhl8E9qI= +github.com/prometheus/common v0.59.1 h1:LXb1quJHWm1P6wq/U824uxYi4Sg0oGvNeUm1z5dJoX0= +github.com/prometheus/common v0.59.1/go.mod h1:GpWM7dewqmVYcd7SmRaiWVe9SSqjf0UrwnYnpEZNuT0= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1024,8 +1023,8 @@ github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgY github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= -github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= +github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= @@ -1180,8 +1179,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= -golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1310,8 +1309,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1424,13 +1423,13 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= -golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= -golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1441,8 +1440,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= -golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1690,10 +1689,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 h1:6whtk83KtD3FkGrVb2hFXuQ+ZMbCNdakARIn/aHMmG8= google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094/go.mod h1:Zs4wYw8z1zr6RNF4cwYb31mvN/EGaKAdQjNCF3DW6K4= -google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0= -google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5 h1:SbSDUWW1PAO24TNpLdeheoYPd7kllICcLU52x6eD4kQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1735,8 +1734,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM= -google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= diff --git a/gomod2nix.toml b/gomod2nix.toml index 03fa4cc785..f82c63568f 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -11,8 +11,8 @@ schema = 3 version = "v0.2.2" hash = "sha256-rdgb3uWekFSfsMZeY7DqHr7Q8ELOwLIZO4W7t2Cvt40=" [mod."cloud.google.com/go/compute/metadata"] - version = "v0.3.0" - hash = "sha256-hj2Xjlz3vj7KYONZO/ItclWGGJEUgo5EvMEkGPfQi1Q=" + version = "v0.5.0" + hash = "sha256-IyVEEElHNPLTRFUMF8ymV3FfQEJQfEdTSeU5PodfOzA=" [mod."cloud.google.com/go/iam"] version = "v1.1.9" hash = "sha256-xC4/ssYSWYXlGz9y5BrVKHizSM7bGV/gi10qvf9dvKA=" @@ -152,11 +152,12 @@ schema = 3 version = "v1.0.0" hash = "sha256-z/0E0NiEGo7zxM7d94ImgUf8P0/KG6hbP9T4Vuym4p0=" [mod."github.com/cometbft/cometbft"] - version = "v0.38.13-0.20240920204745-fdf90d16f608" - hash = "sha256-fusVsybvHUoqb0arjAyacGbCu/s50HOhlt1DV/7jpjM=" + version = "v0.0.0-20241101110921-cee5fa03c9ba" + hash = "sha256-Zlu11cj2cv++ecqF9urfsGhPgfh6Q4Rk9WBlB1hcwX4=" + replaced = "github.com/crypto-org-chain/cometbft" [mod."github.com/cometbft/cometbft-db"] - version = "v0.12.0" - hash = "sha256-mfeUD8+V+xUzEhSOLgQQP0GFDWt7ch/TeBw9gnTJuHk=" + version = "v0.14.1" + hash = "sha256-QvWMRGsdgCsSfL+DHp3w1Bm4jXa14SeT7oRK3PiNGV0=" [mod."github.com/cosmos/btcutil"] version = "v1.0.5" hash = "sha256-t572Sr5iiHcuMKLMWa2i+LBAt192oa+G1oA371tG/eI=" @@ -304,8 +305,8 @@ schema = 3 version = "v1.3.2" hash = "sha256-pogILFrrk+cAtb0ulqn9+gRZJ7sGnnLLdtqITvxvG6c=" [mod."github.com/golang/glog"] - version = "v1.2.1" - hash = "sha256-H9gR4sQRFOb4ZlSwvxU0MGR6iKnYWv4NSY3genjN/V4=" + version = "v1.2.2" + hash = "sha256-AIPEkLcrbIw49fuTDKfDifVLCtSpFPHgujQ/c99dPqk=" [mod."github.com/golang/groupcache"] version = "v0.0.0-20210331224755-41bb18bfe9da" hash = "sha256-7Gs7CS9gEYZkbu5P4hqPGBpeGZWC64VDwraSKFF+VR0=" @@ -439,8 +440,8 @@ schema = 3 version = "v0.2.0" hash = "sha256-fadcWxZOORv44oak3jTxm6YcITcFxdGt4bpn869HxUE=" [mod."github.com/lib/pq"] - version = "v1.10.7" - hash = "sha256-YPUv1VBZNFVUjFxQKdYd0Djje6KYYE99Hz6FnTfrmMw=" + version = "v1.10.9" + hash = "sha256-Gl6dLtL+yk6UrTTWfas43aM4lP/pNa2l7+ITXnjQyKs=" [mod."github.com/linxGnu/grocksdb"] version = "v1.8.14" hash = "sha256-dT647UzB25Ye1Gv6b9JEtJZjuWKdJo4D8kw9cB0W8gA=" @@ -496,8 +497,8 @@ schema = 3 version = "v2.2.2" hash = "sha256-ukxk1Cfm6cQW18g/aa19tLcUu5BnF7VmfAvrDHAOl6A=" [mod."github.com/petermattis/goid"] - version = "v0.0.0-20231207134359-e60b3f734c67" - hash = "sha256-73DbyhUTwYhqmvbcI96CNblTrfl6uz9OvM6z/h8j5TM=" + version = "v0.0.0-20240813172612-4fcff4a6cae7" + hash = "sha256-tfb/0LbMHJQsmxwaj2RItXiYn2AVd05E92Z/vp+rJhs=" [mod."github.com/pkg/errors"] version = "v0.9.1" hash = "sha256-mNfQtcrQmu3sNg/7IwiieKWOgFQOVVe2yXgKBpe/wZw=" @@ -505,14 +506,14 @@ schema = 3 version = "v1.0.1-0.20181226105442-5d4384ee4fb2" hash = "sha256-XA4Oj1gdmdV/F/+8kMI+DBxKPthZ768hbKsO3d9Gx90=" [mod."github.com/prometheus/client_golang"] - version = "v1.20.1" - hash = "sha256-V6r2m3/bh07DYL2y6eMdXg6msM0G0k3abJdUoyrmYLU=" + version = "v1.20.5" + hash = "sha256-RbDZTBH+j2ZNLbHSMFxW0j8UStvkwc4IHTz3My9w4qo=" [mod."github.com/prometheus/client_model"] version = "v0.6.1" hash = "sha256-rIDyUzNfxRA934PIoySR0EhuBbZVRK/25Jlc/r8WODw=" [mod."github.com/prometheus/common"] - version = "v0.57.0" - hash = "sha256-Lh9qK+5EfNHvT9u9QNvCTZFHJDB7CiFiHB+XqGENXNY=" + version = "v0.59.1" + hash = "sha256-PYoEunC2Rx1KP8vH2inTD7uBCfUlvcROfeeAGRRjXPY=" [mod."github.com/prometheus/procfs"] version = "v0.15.1" hash = "sha256-H+WXJemFFwdoglmD6p7JRjrJJZmIVAmJwYmLbZ8Q9sw=" @@ -535,8 +536,8 @@ schema = 3 version = "v0.1.0" hash = "sha256-F92BQXXmn3mCwu3mBaGh+joTRItQDSDhsjU6SofkYdA=" [mod."github.com/sasha-s/go-deadlock"] - version = "v0.3.1" - hash = "sha256-2CBEi9/iN/OMt7wEIG+hRjgDH6CRWIgibGGGy1dQ78I=" + version = "v0.3.5" + hash = "sha256-1vyxWqOTVVVeodipm/tpDgRKUMkEdkoLWSgtiVZaZmw=" [mod."github.com/shirou/gopsutil"] version = "v3.21.4-0.20210419000835-c7a38de76ee5+incompatible" hash = "sha256-oqIqyFquWabIE6DID6uTEc8oFEmM1rVu2ATn3toiCEg=" @@ -636,8 +637,8 @@ schema = 3 version = "v1.11.0" hash = "sha256-Lb6rHHfR62Ozg2j2JZy3MKOMKdsfzd1IYTR57r3Mhp0=" [mod."golang.org/x/crypto"] - version = "v0.27.0" - hash = "sha256-8HP4+gr4DbXI22GhdgZmCWr1ijtI9HNLsTcE0kltY9o=" + version = "v0.28.0" + hash = "sha256-AYjr0BcWQMwWY1u8c2hzUprtqHUmAH7RNSxHz2hhnZs=" [mod."golang.org/x/exp"] version = "v0.0.0-20240613232115-7f521ea00fb8" hash = "sha256-QRK52QHPPhj+JIcQbd4/hI5ceEbKu3e9mR57XxocwOE=" @@ -648,20 +649,20 @@ schema = 3 version = "v0.29.0" hash = "sha256-dH9Rdf5T04KJ4B5WvIZh12ogMbADWiWgIt77nvPTk2k=" [mod."golang.org/x/oauth2"] - version = "v0.21.0" - hash = "sha256-0xgi5k7fxMScMH+rDwXhDqe8raTFHh5ih727jGVS918=" + version = "v0.22.0" + hash = "sha256-3gmmXfCcxYBMaXmKRzGBpX01h4lMenFPkqWT9TwqIBE=" [mod."golang.org/x/sync"] version = "v0.8.0" hash = "sha256-usvF0z7gq1vsX58p4orX+8WHlv52pdXgaueXlwj2Wss=" [mod."golang.org/x/sys"] - version = "v0.25.0" - hash = "sha256-PXZ9EQZ7SFpcL7d3E1+KGTxziYlHEIZPfoXEbnaVD3I=" + version = "v0.26.0" + hash = "sha256-YjklsWNhx4g4TaWRWfFe1TMFKujbqiaNvZ38bfI35fM=" [mod."golang.org/x/term"] - version = "v0.24.0" - hash = "sha256-PfC5psjzEWKRm1DlnBXX0ntw9OskJFrq1RRjyBa1lOk=" + version = "v0.25.0" + hash = "sha256-vwNqnxEcgeVxQxdKBUnkb7y9jg6LlNDJxfG1GugSeRQ=" [mod."golang.org/x/text"] - version = "v0.18.0" - hash = "sha256-aNvJW4gQs+MTfdz6DZqyyHQS2GJ9W8L8qKPVODPn4+k=" + version = "v0.19.0" + hash = "sha256-C92pSYLLUQ2NKKcc60wpoSJ5UWAfnWkmd997C13fXdU=" [mod."golang.org/x/time"] version = "v0.5.0" hash = "sha256-W6RgwgdYTO3byIPOFxrP2IpAZdgaGowAaVfYby7AULU=" @@ -675,14 +676,14 @@ schema = 3 version = "v0.0.0-20240701130421-f6361c86f094" hash = "sha256-5ZxSUe1BHYoiaiw0K1lLJmuobmBvk0+Y3CNkaLMnEic=" [mod."google.golang.org/genproto/googleapis/api"] - version = "v0.0.0-20240701130421-f6361c86f094" - hash = "sha256-uDvld45ensSUweUJYFdUfVt/0mNRrexpuQ3Jas3GMv4=" + version = "v0.0.0-20240814211410-ddb44dafa142" + hash = "sha256-NosKwVYZLpvtvRq7oD4ldoNcodSur62X1bpujarh9t8=" [mod."google.golang.org/genproto/googleapis/rpc"] - version = "v0.0.0-20240709173604-40e1e62336c5" - hash = "sha256-ass/74EkCljwk7DaASDtK2zipn2cZv6tCLKvwONUWgY=" + version = "v0.0.0-20240814211410-ddb44dafa142" + hash = "sha256-4T4DTrmFbqT4tD7PSL7Ie7u8ZN2iwGkhK02nWugssxk=" [mod."google.golang.org/grpc"] - version = "v1.66.1" - hash = "sha256-RIXP4zfg3dUciGpnbf0k2KTw8SAnSm06iCz+5dTW0iw=" + version = "v1.67.1" + hash = "sha256-VqfKp80c2B1MK4m1WtHW4r7ykqdChJbqaMn+gMEYmYc=" [mod."google.golang.org/protobuf"] version = "v1.34.2" hash = "sha256-nMTlrDEE2dbpWz50eQMPBQXCyQh4IdjrTIccaU0F3m0=" diff --git a/nix/default.nix b/nix/default.nix index c8943df9d7..ddee5400b1 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -4,7 +4,7 @@ import sources.nixpkgs { overlays = [ (_: pkgs: { flake-compat = import sources.flake-compat; - go = pkgs.go_1_22; + go = pkgs.go_1_23; go-ethereum = pkgs.callPackage ./go-ethereum.nix { inherit (pkgs.darwin) libobjc; inherit (pkgs.darwin.apple_sdk.frameworks) IOKit; diff --git a/nix/go-ethereum.nix b/nix/go-ethereum.nix index 74280075ed..d40c65dcd6 100644 --- a/nix/go-ethereum.nix +++ b/nix/go-ethereum.nix @@ -7,7 +7,8 @@ let "clef" ]; -in buildGoModule rec { +in +buildGoModule rec { pname = "go-ethereum"; version = "1.11.6"; @@ -60,4 +61,4 @@ in buildGoModule rec { license = with licenses; [ lgpl3Plus gpl3Plus ]; maintainers = with maintainers; [ adisbladis RaghavSood ]; }; -} \ No newline at end of file +} diff --git a/nix/sources.json b/nix/sources.json index 99eb3aadc5..e96b2d28a0 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -17,10 +17,10 @@ "homepage": null, "owner": "nix-community", "repo": "gomod2nix", - "rev": "31b6d2e40b36456e792cd6cf50d5a8ddd2fa59a1", - "sha256": "0b8cmc8dk34pgcac5s1jvryfcn8kyhbzhh1i22rzv5kf00f09lhb", + "rev": "5d387097aa716f35dd99d848dc26d8d5b62a104c", + "sha256": "1mdwyjz43nnh7gfq4rc54kql6fy65hw17w0p4gwklnfqciwrkax2", "type": "tarball", - "url": "https://github.com/nix-community/gomod2nix/archive/31b6d2e40b36456e792cd6cf50d5a8ddd2fa59a1.tar.gz", + "url": "https://github.com/nix-community/gomod2nix/archive/5d387097aa716f35dd99d848dc26d8d5b62a104c.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "niv": { @@ -36,15 +36,15 @@ "url_template": "https://github.com///archive/.tar.gz" }, "nixpkgs": { - "branch": "nixpkgs-unstable", + "branch": "release-24.05", "description": "Nix Packages collection", "homepage": "", "owner": "NixOS", "repo": "nixpkgs", - "rev": "63dacb46bf939521bdc93981b4cbb7ecb58427a0", - "sha256": "1lr1h35prqkd1mkmzriwlpvxcb34kmhc9dnr48gkm8hh089hifmx", + "rev": "50286248f2d7283682bdd47ba14af33a9233b88b", + "sha256": "19sqfs6pamknhlg3mqpqs3wj0wj1ynj5icfmhqmjjvq08byfc2hl", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/63dacb46bf939521bdc93981b4cbb7ecb58427a0.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/50286248f2d7283682bdd47ba14af33a9233b88b.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "poetry2nix": { diff --git a/server/start.go b/server/start.go index 8d5bca5e29..9a0d934e9e 100644 --- a/server/start.go +++ b/server/start.go @@ -363,7 +363,7 @@ func startInProcess(svrCtx *server.Context, clientCtx client.Context, opts Start var clientCreator proxy.ClientCreator if svrCtx.Viper.GetBool(FlagAsyncCheckTx) { logger.Info("enabling async check tx") - clientCreator = proxy.NewConnSyncLocalClientCreator(cmtApp) + clientCreator = proxy.NewConsensusSyncLocalClientCreator(cmtApp) } else { clientCreator = proxy.NewLocalClientCreator(cmtApp) } From 836617d2161919f73f12e34e7496fef96b6c1a0e Mon Sep 17 00:00:00 2001 From: mmsqe Date: Fri, 8 Nov 2024 10:00:06 +0800 Subject: [PATCH 043/210] Problem: no trace detail on insufficient balance (#554) * Problem: no trace detail on insufficient balance * skip check * simple reproduce --- CHANGELOG.md | 1 + .../hardhat/contracts/FeeCollector.sol | 10 +++++ tests/integration_tests/test_tracers.py | 37 ++++++++++++++++++- tests/integration_tests/utils.py | 1 + x/evm/keeper/grpc_query.go | 6 --- 5 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 tests/integration_tests/hardhat/contracts/FeeCollector.sol diff --git a/CHANGELOG.md b/CHANGELOG.md index c9cf53a8f1..28b6971aa3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -74,6 +74,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (cli) [#537](https://github.com/crypto-org-chain/ethermint/pull/537) Fix unsuppored sign mode SIGN_MODE_TEXTUAL for bank transfer. * (cli) [#543](https://github.com/crypto-org-chain/ethermint/pull/543) Fix graceful shutdown. * (rpc) [#545](https://github.com/crypto-org-chain/ethermint/pull/545) Fix state overwrite in debug trace APIs. +* (rpc) [#554](https://github.com/crypto-org-chain/ethermint/pull/554) No trace detail on insufficient balance. ### Improvements diff --git a/tests/integration_tests/hardhat/contracts/FeeCollector.sol b/tests/integration_tests/hardhat/contracts/FeeCollector.sol new file mode 100644 index 0000000000..71027eed74 --- /dev/null +++ b/tests/integration_tests/hardhat/contracts/FeeCollector.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +contract FeeCollector { + event TokensMinted(address indexed to, uint256 amount); + + function mint(uint256 amount) public payable { + emit TokensMinted(msg.sender, amount); + } +} diff --git a/tests/integration_tests/test_tracers.py b/tests/integration_tests/test_tracers.py index ea1c051641..968bb7c196 100644 --- a/tests/integration_tests/test_tracers.py +++ b/tests/integration_tests/test_tracers.py @@ -19,8 +19,10 @@ deploy_contract, derive_new_account, derive_random_account, + send_raw_transactions, send_transaction, send_txs, + sign_transaction, w3_wait_for_new_blocks, ) @@ -156,6 +158,39 @@ def process(w3): assert res[0] == res[-1], res +def test_trace_tx_reverse_transfer(ethermint): + print("reproduce only") + return + method = "debug_traceTransaction" + tracer = {"tracer": "callTracer"} + acc = derive_new_account(11) + w3 = ethermint.w3 + fund_acc(w3, acc, fund=40000000000000000) + contract, _ = deploy_contract(w3, CONTRACTS["FeeCollector"]) + amt = 18633908679862681 + raw_transactions = [] + nonce = w3.eth.get_transaction_count(acc.address) + tx = contract.functions.mint(amt).build_transaction( + { + "from": acc.address, + "value": hex(amt), + "nonce": nonce, + } + ) + raw_transactions.append(sign_transaction(w3, tx, acc.key).rawTransaction) + tx = tx | {"nonce": nonce + 1} + raw_transactions.append(sign_transaction(w3, tx, acc.key).rawTransaction) + w3_wait_for_new_blocks(w3, 1) + sended_hash_set = send_raw_transactions(w3, raw_transactions) + for h in sended_hash_set: + tx_hash = h.hex() + tx_res = w3.provider.make_request( + method, + [tx_hash, tracer], + ) + print(tx_res) + + def test_tracecall_insufficient_funds(ethermint, geth): method = "debug_traceCall" acc = derive_random_account() @@ -540,7 +575,7 @@ def test_refund_unused_gas_when_contract_tx_reverted_state_overrides(ethermint): "balance": hex(balance), "nonce": hex(nonce), } - } + }, }, ], ) diff --git a/tests/integration_tests/utils.py b/tests/integration_tests/utils.py index 9d5e9a15b2..1893cdc374 100644 --- a/tests/integration_tests/utils.py +++ b/tests/integration_tests/utils.py @@ -44,6 +44,7 @@ "Caller": "Caller.sol", "Random": "Random.sol", "TestBlockTxProperties": "TestBlockTxProperties.sol", + "FeeCollector": "FeeCollector.sol", } diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index 12179d35f4..13626e35a9 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -728,12 +728,6 @@ func (k *Keeper) prepareTrace( return nil, 0, status.Error(codes.Internal, err.Error()) } - if res.VmError != "" { - if res.VmError == vm.ErrInsufficientBalance.Error() { - return nil, 0, status.Error(codes.Internal, res.VmError) - } - } - var result interface{} result, err = tracer.GetResult() if err != nil { From c9e06fa7ad1be7fa88a3172936baafaee5b2b7d9 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Mon, 11 Nov 2024 10:17:32 +0800 Subject: [PATCH 044/210] Problem: incorrect balance when no tracer in predecessors (#558) * Problem: incorrect balance when no tracer in predecessors * lint --- CHANGELOG.md | 1 + rpc/types/utils.go | 8 +++--- types/dynamic_fee.go | 4 +-- x/evm/keeper/grpc_query.go | 59 ++++++++++++++++++++++++-------------- x/evm/types/codec.go | 8 +++--- 5 files changed, 48 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28b6971aa3..e59663687d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,6 +75,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (cli) [#543](https://github.com/crypto-org-chain/ethermint/pull/543) Fix graceful shutdown. * (rpc) [#545](https://github.com/crypto-org-chain/ethermint/pull/545) Fix state overwrite in debug trace APIs. * (rpc) [#554](https://github.com/crypto-org-chain/ethermint/pull/554) No trace detail on insufficient balance. +* (rpc) [#558](https://github.com/crypto-org-chain/ethermint/pull/558) New tracer in predecessors to trace balance correctly when `debug_traceTransaction`. ### Improvements diff --git a/rpc/types/utils.go b/rpc/types/utils.go index c0ae4b4e2e..a8e5f21f14 100644 --- a/rpc/types/utils.go +++ b/rpc/types/utils.go @@ -288,9 +288,9 @@ func BaseFeeFromEvents(events []abci.Event) *big.Int { // CheckTxFee is an internal function used to check whether the fee of // the given transaction is _reasonable_(under the cap). -func CheckTxFee(gasPrice *big.Int, gas uint64, cap float64) error { +func CheckTxFee(gasPrice *big.Int, gas uint64, feeCap float64) error { // Short circuit if there is no cap for transaction fee at all. - if cap == 0 { + if feeCap == 0 { return nil } totalfee := new(big.Float).SetInt(new(big.Int).Mul(gasPrice, new(big.Int).SetUint64(gas))) @@ -300,8 +300,8 @@ func CheckTxFee(gasPrice *big.Int, gas uint64, cap float64) error { feeEth := new(big.Float).Quo(totalfee, oneToken) // no need to check error from parsing feeFloat, _ := feeEth.Float64() - if feeFloat > cap { - return fmt.Errorf("tx fee (%.2f ether) exceeds the configured cap (%.2f ether)", feeFloat, cap) + if feeFloat > feeCap { + return fmt.Errorf("tx fee (%.2f ether) exceeds the configured cap (%.2f ether)", feeFloat, feeCap) } return nil } diff --git a/types/dynamic_fee.go b/types/dynamic_fee.go index 04bc572e7e..c3e783ff26 100644 --- a/types/dynamic_fee.go +++ b/types/dynamic_fee.go @@ -20,7 +20,7 @@ import ( ) // HasDynamicFeeExtensionOption returns true if the tx implements the `ExtensionOptionDynamicFeeTx` extension option. -func HasDynamicFeeExtensionOption(any *codectypes.Any) bool { - _, ok := any.GetCachedValue().(*ExtensionOptionDynamicFeeTx) +func HasDynamicFeeExtensionOption(codecAny *codectypes.Any) bool { + _, ok := codecAny.GetCachedValue().(*ExtensionOptionDynamicFeeTx) return ok } diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index 13626e35a9..a173cff820 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -41,6 +41,7 @@ import ( rpctypes "github.com/evmos/ethermint/rpc/types" ethermint "github.com/evmos/ethermint/types" + "github.com/evmos/ethermint/x/evm/statedb" "github.com/evmos/ethermint/x/evm/types" ) @@ -424,6 +425,7 @@ func execTrace[T traceRequest]( msgCb func( ctx sdk.Context, cfg *EVMConfig, + traceConfig *types.TraceConfig, ) (*core.Message, error), ) ([]byte, error) { var zero T @@ -457,7 +459,7 @@ func execTrace[T traceRequest]( return nil, status.Errorf(codes.Internal, "failed to load evm config: %s", err.Error()) } - msg, err := msgCb(ctx, cfg) + msg, err := msgCb(ctx, cfg, req.GetTraceConfig()) if err != nil { return nil, status.Error(codes.Internal, err.Error()) } @@ -484,9 +486,14 @@ func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*typ c, req, k, - func(ctx sdk.Context, cfg *EVMConfig) (*core.Message, error) { + func(ctx sdk.Context, cfg *EVMConfig, traceConfig *types.TraceConfig) (*core.Message, error) { signer := ethtypes.MakeSigner(cfg.ChainConfig, big.NewInt(ctx.BlockHeight())) - cfg.Tracer = types.NewNoOpTracer() + tracer, err := newTacer(&logger.Config{}, cfg.TxConfig, traceConfig) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + cfg.Tracer = tracer + cfg.DebugTrace = true for i, tx := range req.Predecessors { ethTx := tx.AsTransaction() msg, err := core.TransactionToMessage(ethTx, signer, cfg.BaseFee) @@ -601,7 +608,7 @@ func (k Keeper) TraceCall(c context.Context, req *types.QueryTraceCallRequest) ( c, req, k, - func(ctx sdk.Context, cfg *EVMConfig) (*core.Message, error) { + func(ctx sdk.Context, cfg *EVMConfig, _ *types.TraceConfig) (*core.Message, error) { var args types.TransactionArgs err := json.Unmarshal(req.Args, &args) if err != nil { @@ -628,6 +635,31 @@ func (k Keeper) TraceCall(c context.Context, req *types.QueryTraceCallRequest) ( }, nil } +func newTacer(logConfig *logger.Config, txConfig statedb.TxConfig, traceConfig *types.TraceConfig) (tracers.Tracer, error) { + tracer := logger.NewStructLogger(logConfig) + if traceConfig != nil && traceConfig.Tracer != "" { + txIndex, err := ethermint.SafeInt(txConfig.TxIndex) + if err != nil { + return nil, err + } + tCtx := &tracers.Context{ + BlockHash: txConfig.BlockHash, + TxIndex: txIndex, + TxHash: txConfig.TxHash, + } + var cfg json.RawMessage + if traceConfig.TracerJsonConfig != "" { + cfg = json.RawMessage(traceConfig.TracerJsonConfig) + } + tracer, err := tracers.DefaultDirectory.New(traceConfig.Tracer, tCtx, cfg) + if err != nil { + return nil, err + } + return tracer, nil + } + return tracer, nil +} + // prepareTrace prepare trace on one Ethereum message, it returns a tuple: (traceResult, nextLogIndex, error). func (k *Keeper) prepareTrace( ctx sdk.Context, @@ -663,28 +695,11 @@ func (k *Keeper) prepareTrace( Overrides: overrides, } - tracer = logger.NewStructLogger(&logConfig) - - txIndex, err := ethermint.SafeInt(txConfig.TxIndex) + tracer, err = newTacer(&logConfig, txConfig, traceConfig) if err != nil { return nil, 0, status.Error(codes.Internal, err.Error()) } - tCtx := &tracers.Context{ - BlockHash: txConfig.BlockHash, - TxIndex: txIndex, - TxHash: txConfig.TxHash, - } - if traceConfig.Tracer != "" { - var cfg json.RawMessage - if traceConfig.TracerJsonConfig != "" { - cfg = json.RawMessage(traceConfig.TracerJsonConfig) - } - if tracer, err = tracers.DefaultDirectory.New(traceConfig.Tracer, tCtx, cfg); err != nil { - return nil, 0, status.Error(codes.Internal, err.Error()) - } - } - // Define a meaningful timeout of a single transaction trace if traceConfig.Timeout != "" { if timeout, err = time.ParseDuration(traceConfig.Timeout); err != nil { diff --git a/x/evm/types/codec.go b/x/evm/types/codec.go index 9b681d4846..babecead77 100644 --- a/x/evm/types/codec.go +++ b/x/evm/types/codec.go @@ -92,14 +92,14 @@ func PackTxData(txData TxData) (*codectypes.Any, error) { // UnpackTxData unpacks an Any into a TxData. It returns an error if the // client state can't be unpacked into a TxData. -func UnpackTxData(any *codectypes.Any) (TxData, error) { - if any == nil { +func UnpackTxData(codecAny *codectypes.Any) (TxData, error) { + if codecAny == nil { return nil, errorsmod.Wrap(errortypes.ErrUnpackAny, "protobuf Any message cannot be nil") } - txData, ok := any.GetCachedValue().(TxData) + txData, ok := codecAny.GetCachedValue().(TxData) if !ok { - return nil, errorsmod.Wrapf(errortypes.ErrUnpackAny, "cannot unpack Any into TxData %T", any) + return nil, errorsmod.Wrapf(errortypes.ErrUnpackAny, "cannot unpack Any into TxData %T", codecAny) } return txData, nil From 64bd2de950f6362c4e4b1b8152f23bb7e8e1ac61 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Tue, 12 Nov 2024 18:45:54 +0800 Subject: [PATCH 045/210] Problem: different maxGasWanted config leads hash mismatch (#560) this bug was introduced in https://github.com/crypto-org-chain/ethermint/commit/773438f47b95c4db11a4b90f7747a7ee5705c935 --- CHANGELOG.md | 1 + app/ante/eth.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e59663687d..6e82638a44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,6 +76,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#545](https://github.com/crypto-org-chain/ethermint/pull/545) Fix state overwrite in debug trace APIs. * (rpc) [#554](https://github.com/crypto-org-chain/ethermint/pull/554) No trace detail on insufficient balance. * (rpc) [#558](https://github.com/crypto-org-chain/ethermint/pull/558) New tracer in predecessors to trace balance correctly when `debug_traceTransaction`. +* (ante) [#560](https://github.com/crypto-org-chain/ethermint/pull/560) Check gasWanted only in checkTx mode. ### Improvements diff --git a/app/ante/eth.go b/app/ante/eth.go index 67a95113e0..ca608777a7 100644 --- a/app/ante/eth.go +++ b/app/ante/eth.go @@ -146,7 +146,7 @@ func CheckEthGasConsume( // We can't trust the tx gas limit, because we'll refund the unused gas. gasLimit := msgEthTx.GetGas() - if maxGasWanted != 0 { + if ctx.IsCheckTx() && maxGasWanted != 0 { gasLimit = min(gasLimit, maxGasWanted) } if gasWanted > math.MaxInt64-gasLimit { From 4fb45a3b9aba7c29353442d16ef3a291fa1080a7 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Tue, 12 Nov 2024 21:02:28 +0800 Subject: [PATCH 046/210] Problem: wrong gas price when using basefee of minus one height when trace tx (#559) * Problem: wrong gas price when using basefee of minus one height when trace tx * add basefee req --------- Signed-off-by: mmsqe --- CHANGELOG.md | 1 + client/docs/swagger-ui/swagger.yaml | 9 +- proto/ethermint/evm/v1/query.proto | 4 +- rpc/backend/tracing.go | 7 + rpc/backend/tracing_test.go | 4 + x/evm/keeper/grpc_query.go | 11 ++ x/evm/types/interfaces.go | 1 + x/evm/types/query.pb.go | 255 +++++++++++++++++----------- 8 files changed, 190 insertions(+), 102 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e82638a44..9a65a26d30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,6 +76,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#545](https://github.com/crypto-org-chain/ethermint/pull/545) Fix state overwrite in debug trace APIs. * (rpc) [#554](https://github.com/crypto-org-chain/ethermint/pull/554) No trace detail on insufficient balance. * (rpc) [#558](https://github.com/crypto-org-chain/ethermint/pull/558) New tracer in predecessors to trace balance correctly when `debug_traceTransaction`. +* (rpc) [#559](https://github.com/crypto-org-chain/ethermint/pull/559) Use basefee of transaction height instead of minus one height when `debug_traceTransaction`. * (ante) [#560](https://github.com/crypto-org-chain/ethermint/pull/560) Check gasWanted only in checkTx mode. ### Improvements diff --git a/client/docs/swagger-ui/swagger.yaml b/client/docs/swagger-ui/swagger.yaml index eaa4cc6a98..bf0dd950b4 100644 --- a/client/docs/swagger-ui/swagger.yaml +++ b/client/docs/swagger-ui/swagger.yaml @@ -3730,12 +3730,19 @@ paths: format: byte - name: chain_id description: >- - chain_id is the the eip155 chain id parsed from the requested block + chain_id is the eip155 chain id parsed from the requested block header. in: query required: false type: string format: int64 + - name: base_fee + description: >- + base_fee is the base fee based on the block_number of requested + transaction. + in: query + required: false + type: string tags: - Query /ethermint/evm/v1/validator_account/{cons_address}: diff --git a/proto/ethermint/evm/v1/query.proto b/proto/ethermint/evm/v1/query.proto index 8898dd7287..e96a7af804 100644 --- a/proto/ethermint/evm/v1/query.proto +++ b/proto/ethermint/evm/v1/query.proto @@ -267,8 +267,10 @@ message QueryTraceTxRequest { google.protobuf.Timestamp block_time = 7 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; // proposer_address is the proposer of the requested block bytes proposer_address = 8 [(gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.ConsAddress"]; - // chain_id is the the eip155 chain id parsed from the requested block header + // chain_id is the eip155 chain id parsed from the requested block header int64 chain_id = 9; + // base_fee is the base fee based on the block_number of requested transaction + string base_fee = 10 [(gogoproto.customtype) = "cosmossdk.io/math.Int"]; } // QueryTraceTxResponse defines TraceTx response diff --git a/rpc/backend/tracing.go b/rpc/backend/tracing.go index fe70f9eca7..12282f42b4 100644 --- a/rpc/backend/tracing.go +++ b/rpc/backend/tracing.go @@ -26,6 +26,7 @@ import ( rpctypes "github.com/evmos/ethermint/rpc/types" ethermint "github.com/evmos/ethermint/types" evmtypes "github.com/evmos/ethermint/x/evm/types" + feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" "github.com/pkg/errors" ) @@ -117,6 +118,12 @@ func (b *Backend) TraceTransaction(hash common.Hash, config *rpctypes.TraceConfi // 0 is a special value in `ContextWithHeight` contextHeight = 1 } + // Get basefee from transaction height + res, err := b.queryClient.FeeMarket.Params(rpctypes.ContextWithHeight(transaction.Height), &feemarkettypes.QueryParamsRequest{}) + if err != nil { + return nil, err + } + traceTxRequest.BaseFee = &res.Params.BaseFee traceResult, err := b.queryClient.TraceTx(rpctypes.ContextWithHeight(contextHeight), &traceTxRequest) if err != nil { return nil, err diff --git a/rpc/backend/tracing_test.go b/rpc/backend/tracing_test.go index 1cf69ffe61..454da33611 100644 --- a/rpc/backend/tracing_test.go +++ b/rpc/backend/tracing_test.go @@ -129,6 +129,8 @@ func (suite *BackendTestSuite) TestTraceTransaction() { queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) client := suite.backend.clientCtx.Client.(*mocks.Client) RegisterBlockMultipleTxs(client, 1, []types.Tx{txBz, txBz2}) + feeMarketClient := suite.backend.queryClient.FeeMarket.(*mocks.FeeMarketQueryClient) + RegisterFeeMarketParams(feeMarketClient, 1) RegisterTraceTransactionWithPredecessors(queryClient, msgEthereumTx, []*evmtypes.MsgEthereumTx{msgEthereumTx}) }, &types.Block{Header: types.Header{Height: 1, ChainID: ChainID}, Data: types.Data{Txs: []types.Tx{txBz, txBz2}}}, @@ -169,6 +171,8 @@ func (suite *BackendTestSuite) TestTraceTransaction() { queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) client := suite.backend.clientCtx.Client.(*mocks.Client) RegisterBlock(client, 1, txBz) + feeMarketClient := suite.backend.queryClient.FeeMarket.(*mocks.FeeMarketQueryClient) + RegisterFeeMarketParams(feeMarketClient, 1) RegisterTraceTransaction(queryClient, msgEthereumTx) }, &types.Block{Header: types.Header{Height: 1}, Data: types.Data{Txs: []types.Tx{txBz}}}, diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index a173cff820..038f90acfb 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -422,6 +422,7 @@ func execTrace[T traceRequest]( c context.Context, req T, k Keeper, + baseFee *big.Int, msgCb func( ctx sdk.Context, cfg *EVMConfig, @@ -459,6 +460,10 @@ func execTrace[T traceRequest]( return nil, status.Errorf(codes.Internal, "failed to load evm config: %s", err.Error()) } + if baseFee != nil { + cfg.BaseFee = baseFee + } + msg, err := msgCb(ctx, cfg, req.GetTraceConfig()) if err != nil { return nil, status.Error(codes.Internal, err.Error()) @@ -482,10 +487,15 @@ func execTrace[T traceRequest]( // executes the given message in the provided environment. The return value will // be tracer dependent. func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*types.QueryTraceTxResponse, error) { + var baseFee *big.Int + if req != nil && req.BaseFee != nil { + baseFee = big.NewInt(req.BaseFee.Int64()) + } resultData, err := execTrace( c, req, k, + baseFee, func(ctx sdk.Context, cfg *EVMConfig, traceConfig *types.TraceConfig) (*core.Message, error) { signer := ethtypes.MakeSigner(cfg.ChainConfig, big.NewInt(ctx.BlockHeight())) tracer, err := newTacer(&logger.Config{}, cfg.TxConfig, traceConfig) @@ -608,6 +618,7 @@ func (k Keeper) TraceCall(c context.Context, req *types.QueryTraceCallRequest) ( c, req, k, + nil, func(ctx sdk.Context, cfg *EVMConfig, _ *types.TraceConfig) (*core.Message, error) { var args types.TransactionArgs err := json.Unmarshal(req.Args, &args) diff --git a/x/evm/types/interfaces.go b/x/evm/types/interfaces.go index 3d30a27f6c..fea304940e 100644 --- a/x/evm/types/interfaces.go +++ b/x/evm/types/interfaces.go @@ -63,6 +63,7 @@ type StakingKeeper interface { // FeeMarketKeeper type FeeMarketKeeper interface { GetBaseFee(ctx sdk.Context) *big.Int + CalculateBaseFee(ctx sdk.Context) *big.Int GetParams(ctx sdk.Context) feemarkettypes.Params } diff --git a/x/evm/types/query.pb.go b/x/evm/types/query.pb.go index 253948b1c9..dfbdc84575 100644 --- a/x/evm/types/query.pb.go +++ b/x/evm/types/query.pb.go @@ -951,8 +951,10 @@ type QueryTraceTxRequest struct { BlockTime time.Time `protobuf:"bytes,7,opt,name=block_time,json=blockTime,proto3,stdtime" json:"block_time"` // proposer_address is the proposer of the requested block ProposerAddress github_com_cosmos_cosmos_sdk_types.ConsAddress `protobuf:"bytes,8,opt,name=proposer_address,json=proposerAddress,proto3,casttype=github.com/cosmos/cosmos-sdk/types.ConsAddress" json:"proposer_address,omitempty"` - // chain_id is the the eip155 chain id parsed from the requested block header + // chain_id is the eip155 chain id parsed from the requested block header ChainId int64 `protobuf:"varint,9,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + // base_fee is the base fee based on the block_number of requested transaction + BaseFee *cosmossdk_io_math.Int `protobuf:"bytes,10,opt,name=base_fee,json=baseFee,proto3,customtype=cosmossdk.io/math.Int" json:"base_fee,omitempty"` } func (m *QueryTraceTxRequest) Reset() { *m = QueryTraceTxRequest{} } @@ -1500,105 +1502,106 @@ func init() { func init() { proto.RegisterFile("ethermint/evm/v1/query.proto", fileDescriptor_e15a877459347994) } var fileDescriptor_e15a877459347994 = []byte{ - // 1566 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4d, 0x6f, 0x13, 0xc7, - 0x1b, 0xcf, 0xc6, 0x4e, 0xec, 0x8c, 0x13, 0xc8, 0x7f, 0x48, 0xfe, 0x38, 0xdb, 0xc4, 0x0e, 0x1b, - 0xf2, 0x06, 0x61, 0xb7, 0x71, 0x11, 0x52, 0xb9, 0x14, 0x62, 0x05, 0x4a, 0x81, 0x8a, 0x6e, 0xa3, - 0x1e, 0x2a, 0x55, 0xd6, 0x78, 0x3d, 0xac, 0xad, 0x78, 0x77, 0xcc, 0xce, 0xd8, 0x75, 0x78, 0xe9, - 0xa1, 0x6a, 0x29, 0x15, 0x52, 0x85, 0xd4, 0x7b, 0xc5, 0x37, 0xe8, 0xd7, 0xe0, 0x88, 0x54, 0x55, - 0xaa, 0x7a, 0xa0, 0x08, 0x7a, 0xe8, 0x27, 0xe8, 0xa1, 0xa7, 0x6a, 0x66, 0x67, 0xed, 0xb5, 0xd7, - 0x6b, 0x87, 0x8a, 0x4a, 0x48, 0x3d, 0x79, 0x5e, 0x9e, 0x79, 0x9e, 0xdf, 0xcc, 0xf3, 0xf6, 0x5b, - 0x83, 0x45, 0xcc, 0xaa, 0xd8, 0x73, 0x6a, 0x2e, 0x33, 0x70, 0xcb, 0x31, 0x5a, 0xdb, 0xc6, 0xad, - 0x26, 0xf6, 0x0e, 0xf4, 0x86, 0x47, 0x18, 0x81, 0xb3, 0x9d, 0x5d, 0x1d, 0xb7, 0x1c, 0xbd, 0xb5, - 0xad, 0x9e, 0xb2, 0x08, 0x75, 0x08, 0x35, 0xca, 0x88, 0x62, 0x5f, 0xd4, 0x68, 0x6d, 0x97, 0x31, - 0x43, 0xdb, 0x46, 0x03, 0xd9, 0x35, 0x17, 0xb1, 0x1a, 0x71, 0xfd, 0xd3, 0xea, 0x42, 0x44, 0x37, - 0x6b, 0xcb, 0x2d, 0x35, 0xb2, 0x55, 0x27, 0xb6, 0xdc, 0x5b, 0x8a, 0xec, 0x35, 0x90, 0x87, 0x1c, - 0x2a, 0xb7, 0x57, 0xa2, 0x5a, 0x3d, 0x64, 0xe1, 0x92, 0x45, 0xdc, 0x9b, 0xb5, 0x40, 0xc7, 0x9c, - 0x4d, 0x6c, 0x22, 0x86, 0x06, 0x1f, 0xc9, 0xd5, 0x45, 0x9b, 0x10, 0xbb, 0x8e, 0x0d, 0xd4, 0xa8, - 0x19, 0xc8, 0x75, 0x09, 0x13, 0x68, 0x03, 0xc5, 0x79, 0xb9, 0x2b, 0x66, 0xe5, 0xe6, 0x4d, 0x83, - 0xd5, 0x1c, 0x4c, 0x19, 0x72, 0x1a, 0xbe, 0x80, 0xf6, 0x2e, 0x38, 0xf6, 0x11, 0xbf, 0xf1, 0x45, - 0xcb, 0x22, 0x4d, 0x97, 0x99, 0xf8, 0x56, 0x13, 0x53, 0x06, 0xb3, 0x20, 0x85, 0x2a, 0x15, 0x0f, - 0x53, 0x9a, 0x55, 0x96, 0x95, 0x8d, 0x29, 0x33, 0x98, 0x9e, 0x4f, 0x3f, 0x78, 0x9c, 0x1f, 0xfb, - 0xe3, 0x71, 0x7e, 0x4c, 0xb3, 0xc0, 0x5c, 0xef, 0x51, 0xda, 0x20, 0x2e, 0xc5, 0xfc, 0x6c, 0x19, - 0xd5, 0x91, 0x6b, 0xe1, 0xe0, 0xac, 0x9c, 0xc2, 0xb7, 0xc0, 0x94, 0x45, 0x2a, 0xb8, 0x54, 0x45, - 0xb4, 0x9a, 0x1d, 0x17, 0x7b, 0x69, 0xbe, 0xf0, 0x3e, 0xa2, 0x55, 0x38, 0x07, 0x26, 0x5c, 0xc2, - 0x0f, 0x25, 0x96, 0x95, 0x8d, 0xa4, 0xe9, 0x4f, 0xb4, 0xf7, 0xc0, 0x82, 0x30, 0x52, 0x14, 0x2e, - 0xfa, 0x07, 0x28, 0xef, 0x2b, 0x40, 0x1d, 0xa4, 0x41, 0x82, 0x5d, 0x05, 0x47, 0x7c, 0xef, 0x97, - 0x7a, 0x35, 0xcd, 0xf8, 0xab, 0x17, 0xfd, 0x45, 0xa8, 0x82, 0x34, 0xe5, 0x46, 0x39, 0xbe, 0x71, - 0x81, 0xaf, 0x33, 0xe7, 0x2a, 0x90, 0xaf, 0xb5, 0xe4, 0x36, 0x9d, 0x32, 0xf6, 0xe4, 0x0d, 0x66, - 0xe4, 0xea, 0x87, 0x62, 0x51, 0xbb, 0x0a, 0x16, 0x05, 0x8e, 0x4f, 0x50, 0xbd, 0x56, 0x41, 0x8c, - 0x78, 0x7d, 0x97, 0x39, 0x01, 0xa6, 0x2d, 0xe2, 0xf6, 0xe3, 0xc8, 0xf0, 0xb5, 0x8b, 0x91, 0x5b, - 0x3d, 0x54, 0xc0, 0x52, 0x8c, 0x36, 0x79, 0xb1, 0x75, 0x70, 0x34, 0x40, 0xd5, 0xab, 0x31, 0x00, - 0xfb, 0x1a, 0xaf, 0x16, 0x04, 0xd1, 0x8e, 0xef, 0xe7, 0x57, 0x71, 0xcf, 0xdb, 0x32, 0x88, 0x3a, - 0x47, 0x47, 0x05, 0x91, 0x76, 0x55, 0x1a, 0xfb, 0x98, 0x11, 0x0f, 0xd9, 0xa3, 0x8d, 0xc1, 0x59, - 0x90, 0xd8, 0xc7, 0x07, 0x32, 0xde, 0xf8, 0x30, 0x64, 0x7e, 0x4b, 0x9a, 0xef, 0x28, 0x93, 0xe6, - 0xe7, 0xc0, 0x44, 0x0b, 0xd5, 0x9b, 0x81, 0x71, 0x7f, 0xa2, 0x9d, 0x03, 0xb3, 0x32, 0x94, 0x2a, - 0xaf, 0x74, 0xc9, 0x75, 0xf0, 0xbf, 0xd0, 0x39, 0x69, 0x02, 0x82, 0x24, 0x8f, 0x7d, 0x71, 0x6a, - 0xda, 0x14, 0x63, 0xed, 0x36, 0x80, 0x42, 0x70, 0xaf, 0x7d, 0x8d, 0xd8, 0x34, 0x30, 0x01, 0x41, - 0x52, 0x64, 0x8c, 0xaf, 0x5f, 0x8c, 0xe1, 0x25, 0x00, 0xba, 0xb5, 0x49, 0xdc, 0x2d, 0x53, 0x58, - 0xd3, 0xfd, 0xa0, 0xd5, 0x79, 0x21, 0xd3, 0xfd, 0x9a, 0x27, 0x0b, 0x99, 0x7e, 0xa3, 0xfb, 0x54, - 0x66, 0xe8, 0x64, 0x08, 0xe4, 0xb7, 0x8a, 0x7c, 0xd8, 0xc0, 0xb8, 0xc4, 0xb9, 0x09, 0x92, 0x75, - 0x62, 0xf3, 0xdb, 0x25, 0x36, 0x32, 0x85, 0x79, 0xbd, 0xbf, 0x7c, 0xea, 0xd7, 0x88, 0x6d, 0x0a, - 0x11, 0x78, 0x79, 0x00, 0xa8, 0xf5, 0x91, 0xa0, 0x7c, 0x3b, 0x61, 0x54, 0xda, 0x9c, 0x7c, 0x87, - 0x1b, 0xa2, 0x48, 0x4a, 0xdc, 0xda, 0x75, 0x09, 0x30, 0x58, 0x95, 0x00, 0xcf, 0x81, 0x49, 0xbf, - 0x98, 0x8a, 0x07, 0xca, 0x14, 0xb2, 0x51, 0x88, 0xfe, 0x89, 0x9d, 0xe4, 0x93, 0x67, 0xf9, 0x31, - 0x53, 0x4a, 0x6b, 0x3f, 0x2b, 0xe0, 0xc8, 0x2e, 0xab, 0x16, 0x51, 0xbd, 0x1e, 0x7a, 0x69, 0xe4, - 0xd9, 0x34, 0xf0, 0x09, 0x1f, 0xc3, 0xe3, 0x20, 0x65, 0x23, 0x5a, 0xb2, 0x50, 0x43, 0xa6, 0xc7, - 0xa4, 0x8d, 0x68, 0x11, 0x35, 0xe0, 0x67, 0x60, 0xb6, 0xe1, 0x91, 0x06, 0xa1, 0xd8, 0xeb, 0xa4, - 0x18, 0x4f, 0x8f, 0xe9, 0x9d, 0xc2, 0x5f, 0xcf, 0xf2, 0xba, 0x5d, 0x63, 0xd5, 0x66, 0x59, 0xb7, - 0x88, 0x63, 0xc8, 0xfe, 0xe2, 0xff, 0x9c, 0xa1, 0x95, 0x7d, 0x83, 0x1d, 0x34, 0x30, 0xd5, 0x8b, - 0xdd, 0xdc, 0x36, 0x8f, 0x06, 0xba, 0x82, 0xbc, 0x5c, 0x00, 0x69, 0xab, 0x8a, 0x6a, 0x6e, 0xa9, - 0x56, 0xc9, 0x26, 0x97, 0x95, 0x8d, 0x84, 0x99, 0x12, 0xf3, 0x2b, 0x15, 0xb8, 0x08, 0xa6, 0x48, - 0x0b, 0x7b, 0x5e, 0xad, 0x82, 0x69, 0x76, 0x42, 0x60, 0xed, 0x2e, 0x68, 0x7b, 0xe0, 0xd8, 0x2e, - 0x65, 0x35, 0x07, 0x31, 0x7c, 0x19, 0x75, 0x9f, 0x69, 0x16, 0x24, 0x6c, 0xe4, 0x5f, 0x2d, 0x69, - 0xf2, 0x21, 0x5f, 0xf1, 0x30, 0x13, 0xb7, 0x9a, 0x36, 0xf9, 0x90, 0xdb, 0x6c, 0x39, 0x25, 0xec, - 0x79, 0xc4, 0xcf, 0xf4, 0x29, 0x33, 0xd5, 0x72, 0x76, 0xf9, 0x54, 0x7b, 0x9e, 0x08, 0xc2, 0x83, - 0x77, 0xa6, 0xbd, 0x76, 0xf0, 0x64, 0xdb, 0x20, 0xe1, 0x50, 0x5b, 0x3e, 0x7d, 0x3e, 0xfa, 0xf4, - 0xd7, 0xa9, 0xbd, 0xcb, 0xd7, 0x70, 0xd3, 0xd9, 0x6b, 0x9b, 0x5c, 0x16, 0x5e, 0x00, 0xd3, 0xe1, - 0xf6, 0x26, 0x2c, 0x65, 0x0a, 0x4b, 0xd1, 0xb3, 0xc2, 0x54, 0x51, 0x08, 0x99, 0x19, 0xd6, 0x9d, - 0xc0, 0x22, 0x98, 0x6e, 0x78, 0xb8, 0x82, 0x2d, 0x4c, 0x29, 0xf1, 0x68, 0x36, 0x29, 0x62, 0x73, - 0xa4, 0xf5, 0x9e, 0x43, 0xbc, 0xe0, 0x96, 0xeb, 0xc4, 0xda, 0x0f, 0x4a, 0xdb, 0x84, 0x78, 0xe4, - 0x8c, 0x58, 0xf3, 0x0b, 0x1b, 0x5c, 0x02, 0xc0, 0x17, 0x11, 0xf9, 0x37, 0x29, 0x5e, 0x64, 0x4a, - 0xac, 0x88, 0x96, 0x55, 0x0c, 0xb6, 0x79, 0x57, 0xcd, 0xa6, 0xc4, 0x35, 0x54, 0xdd, 0x6f, 0xb9, - 0x7a, 0xd0, 0x72, 0xf5, 0xbd, 0xa0, 0xe5, 0xee, 0xa4, 0x79, 0xfc, 0x3d, 0xfa, 0x2d, 0xaf, 0x48, - 0x25, 0x7c, 0x67, 0x60, 0x18, 0xa5, 0xff, 0x9d, 0x30, 0x9a, 0xea, 0x09, 0xa3, 0x0f, 0x92, 0xe9, - 0xf1, 0xd9, 0x84, 0x99, 0x66, 0xed, 0x52, 0xcd, 0xad, 0xe0, 0xb6, 0x76, 0x4a, 0x16, 0xc3, 0x8e, - 0x87, 0xbb, 0x95, 0xaa, 0x82, 0x18, 0x0a, 0xb2, 0x82, 0x8f, 0xb5, 0x6f, 0x12, 0x60, 0xbe, 0x2b, - 0xfc, 0xa6, 0xe6, 0x50, 0x7f, 0xa4, 0x25, 0x5f, 0x39, 0xd2, 0xde, 0x90, 0x20, 0x09, 0x7b, 0x31, - 0xdd, 0xe3, 0x45, 0x6d, 0x0b, 0xfc, 0xbf, 0xdf, 0x11, 0x43, 0xfc, 0xf6, 0x5d, 0x22, 0x2c, 0xbe, - 0xc3, 0x0d, 0x84, 0x32, 0x99, 0xb5, 0x83, 0x3a, 0x3f, 0x3a, 0x93, 0x59, 0x9b, 0xbe, 0x86, 0x4c, - 0xfe, 0xaf, 0x27, 0xa1, 0x76, 0x06, 0x1c, 0x8f, 0xf8, 0x63, 0x88, 0xff, 0xe6, 0x3b, 0x54, 0x8b, - 0xe2, 0x4b, 0x38, 0x68, 0xe9, 0xda, 0xb5, 0x0e, 0x8d, 0x92, 0xcb, 0x52, 0xc5, 0x59, 0x90, 0xe6, - 0x7d, 0xb7, 0x74, 0x13, 0x4b, 0x2a, 0xb3, 0xb3, 0xf0, 0xeb, 0xb3, 0xfc, 0xbc, 0x8f, 0x9e, 0x56, - 0xf6, 0xf5, 0x1a, 0x31, 0x1c, 0xc4, 0xaa, 0xfa, 0x15, 0x97, 0x71, 0x8a, 0x25, 0x4e, 0x17, 0xfe, - 0x9c, 0x01, 0x13, 0x42, 0x1d, 0xfc, 0x5a, 0x01, 0x29, 0xc9, 0x2c, 0xe1, 0x6a, 0xd4, 0xad, 0x03, - 0x3e, 0x1d, 0xd4, 0xb5, 0x51, 0x62, 0x3e, 0x34, 0xed, 0xf4, 0x97, 0x3f, 0xfd, 0xfe, 0xfd, 0xf8, - 0x2a, 0x5c, 0x31, 0x22, 0x1f, 0x3f, 0x92, 0x5d, 0x1a, 0x77, 0xa4, 0x2b, 0xee, 0xc1, 0x1f, 0x14, - 0x30, 0xd3, 0x43, 0xe0, 0xe1, 0xe9, 0x18, 0x33, 0x83, 0x3e, 0x14, 0xd4, 0xad, 0xc3, 0x09, 0x4b, - 0x64, 0x05, 0x81, 0x6c, 0x0b, 0x9e, 0x8a, 0x22, 0x0b, 0xbe, 0x15, 0x22, 0x00, 0x7f, 0x54, 0xc0, - 0x6c, 0x3f, 0x17, 0x87, 0x7a, 0x8c, 0xd9, 0x98, 0x4f, 0x00, 0xd5, 0x38, 0xb4, 0xbc, 0x44, 0x7a, - 0x5e, 0x20, 0x3d, 0x0b, 0x0b, 0x51, 0xa4, 0xad, 0xe0, 0x4c, 0x17, 0x6c, 0xf8, 0xf3, 0xe2, 0x1e, - 0xbc, 0xaf, 0x80, 0x94, 0x64, 0xdd, 0xb1, 0xae, 0xed, 0x25, 0xf4, 0xb1, 0xae, 0xed, 0x23, 0xef, - 0xda, 0x96, 0x80, 0xb5, 0x06, 0x4f, 0x46, 0x61, 0x49, 0x16, 0x4f, 0x43, 0x4f, 0xf7, 0x50, 0x01, - 0x29, 0xc9, 0xbf, 0x63, 0x81, 0xf4, 0x92, 0xfd, 0x58, 0x20, 0x7d, 0x34, 0x5e, 0xdb, 0x16, 0x40, - 0x4e, 0xc3, 0xcd, 0x28, 0x10, 0xea, 0x8b, 0x76, 0x71, 0x18, 0x77, 0xf6, 0xf1, 0xc1, 0x3d, 0x78, - 0x1b, 0x24, 0x39, 0x4d, 0x87, 0x5a, 0x6c, 0xc8, 0x74, 0xb8, 0xbf, 0xba, 0x32, 0x54, 0x46, 0x62, - 0xd8, 0x14, 0x18, 0x56, 0xe0, 0x89, 0x41, 0xd1, 0x54, 0xe9, 0x79, 0x89, 0xcf, 0xc1, 0xa4, 0xcf, - 0x54, 0xe1, 0xc9, 0x18, 0xcd, 0x3d, 0x84, 0x58, 0x5d, 0x1d, 0x21, 0x25, 0x11, 0x2c, 0x0b, 0x04, - 0x2a, 0xcc, 0x1a, 0x31, 0xff, 0x42, 0xc0, 0x36, 0x48, 0x49, 0x26, 0x0c, 0x97, 0xa3, 0x3a, 0x7b, - 0x49, 0xb2, 0xba, 0x3e, 0xaa, 0x35, 0x04, 0x76, 0x35, 0x61, 0x77, 0x11, 0xaa, 0x51, 0xbb, 0x98, - 0x55, 0x4b, 0x16, 0x37, 0xf7, 0x05, 0xc8, 0x84, 0xc8, 0xea, 0x21, 0xac, 0x0f, 0xb8, 0xf3, 0x00, - 0xb6, 0xab, 0xad, 0x09, 0xdb, 0xcb, 0x30, 0x37, 0xc0, 0xb6, 0x14, 0x2f, 0x71, 0x0e, 0x7c, 0x17, - 0xa4, 0x24, 0xdd, 0x89, 0x8d, 0xbd, 0x5e, 0xc2, 0x1b, 0x1b, 0x7b, 0x7d, 0xac, 0x69, 0xd8, 0xed, - 0xfd, 0x9e, 0xc9, 0xda, 0xf0, 0x81, 0x02, 0x40, 0xb7, 0xf0, 0xc3, 0x8d, 0x61, 0xaa, 0xc3, 0xbd, - 0x5a, 0xdd, 0x3c, 0x84, 0xa4, 0xc4, 0xb1, 0x2a, 0x70, 0xe4, 0xe1, 0x52, 0x1c, 0x0e, 0xd1, 0x05, - 0xe1, 0x57, 0x0a, 0x98, 0xea, 0x50, 0x08, 0xb8, 0x3e, 0x4c, 0x7f, 0xd8, 0x1d, 0x1b, 0xa3, 0x05, - 0x25, 0x8e, 0x93, 0x02, 0x47, 0x0e, 0x2e, 0xc6, 0xe1, 0x10, 0xf1, 0x70, 0x97, 0x17, 0x25, 0xd1, - 0x85, 0x86, 0x14, 0xa5, 0x70, 0xeb, 0x1b, 0x52, 0x94, 0x7a, 0x5a, 0xe1, 0x30, 0x7f, 0x04, 0x2d, - 0x72, 0xe7, 0xc2, 0x93, 0x17, 0x39, 0xe5, 0xe9, 0x8b, 0x9c, 0xf2, 0xfc, 0x45, 0x4e, 0x79, 0xf4, - 0x32, 0x37, 0xf6, 0xf4, 0x65, 0x6e, 0xec, 0x97, 0x97, 0xb9, 0xb1, 0x4f, 0xd7, 0x42, 0x14, 0x00, - 0xb7, 0x38, 0x03, 0xe8, 0x6a, 0x69, 0x0b, 0x3d, 0x82, 0x06, 0x94, 0x27, 0x05, 0xe3, 0x78, 0xe7, - 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2b, 0x0f, 0xce, 0x6b, 0x84, 0x14, 0x00, 0x00, + // 1576 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0xcf, 0x6f, 0x1b, 0xc5, + 0x17, 0xcf, 0xc6, 0x4e, 0xec, 0x8c, 0x93, 0x36, 0xdf, 0x69, 0xf2, 0xad, 0xb3, 0x24, 0x76, 0xba, + 0x69, 0x7e, 0xb5, 0xe9, 0x2e, 0x31, 0x55, 0x25, 0x7a, 0xa1, 0x8d, 0x95, 0x96, 0xd2, 0x16, 0x95, + 0x25, 0xe2, 0x80, 0x84, 0xac, 0xf1, 0x7a, 0xba, 0xb6, 0xe2, 0xdd, 0x71, 0x77, 0xc6, 0xc6, 0xe9, + 0x0f, 0x0e, 0x08, 0x4a, 0x51, 0x25, 0x54, 0x09, 0x89, 0x23, 0xea, 0x7f, 0xc0, 0xbf, 0xd1, 0x63, + 0x25, 0x84, 0x84, 0x38, 0x14, 0xd4, 0x72, 0xe0, 0x2f, 0xe0, 0xc0, 0x09, 0xcd, 0xec, 0xac, 0xbd, + 0xf6, 0x7a, 0xed, 0x14, 0x15, 0xa9, 0x12, 0x27, 0xef, 0xbc, 0x79, 0xf3, 0xde, 0xe7, 0xcd, 0xfb, + 0x39, 0x06, 0x8b, 0x98, 0x55, 0xb1, 0xe7, 0xd4, 0x5c, 0x66, 0xe0, 0x96, 0x63, 0xb4, 0xb6, 0x8d, + 0x5b, 0x4d, 0xec, 0x1d, 0xe8, 0x0d, 0x8f, 0x30, 0x02, 0x67, 0x3b, 0xbb, 0x3a, 0x6e, 0x39, 0x7a, + 0x6b, 0x5b, 0x3d, 0x65, 0x11, 0xea, 0x10, 0x6a, 0x94, 0x11, 0xc5, 0x3e, 0xab, 0xd1, 0xda, 0x2e, + 0x63, 0x86, 0xb6, 0x8d, 0x06, 0xb2, 0x6b, 0x2e, 0x62, 0x35, 0xe2, 0xfa, 0xa7, 0xd5, 0x85, 0x88, + 0x6c, 0xd6, 0x96, 0x5b, 0x6a, 0x64, 0xab, 0x4e, 0x6c, 0xb9, 0xb7, 0x14, 0xd9, 0x6b, 0x20, 0x0f, + 0x39, 0x54, 0x6e, 0xaf, 0x44, 0xa5, 0x7a, 0xc8, 0xc2, 0x25, 0x8b, 0xb8, 0x37, 0x6b, 0x81, 0x8c, + 0x39, 0x9b, 0xd8, 0x44, 0x7c, 0x1a, 0xfc, 0x4b, 0x52, 0x17, 0x6d, 0x42, 0xec, 0x3a, 0x36, 0x50, + 0xa3, 0x66, 0x20, 0xd7, 0x25, 0x4c, 0xa0, 0x0d, 0x04, 0xe7, 0xe5, 0xae, 0x58, 0x95, 0x9b, 0x37, + 0x0d, 0x56, 0x73, 0x30, 0x65, 0xc8, 0x69, 0xf8, 0x0c, 0xda, 0xdb, 0xe0, 0xd8, 0x07, 0xdc, 0xe2, + 0x8b, 0x96, 0x45, 0x9a, 0x2e, 0x33, 0xf1, 0xad, 0x26, 0xa6, 0x0c, 0x66, 0x41, 0x0a, 0x55, 0x2a, + 0x1e, 0xa6, 0x34, 0xab, 0x2c, 0x2b, 0x1b, 0x53, 0x66, 0xb0, 0x3c, 0x9f, 0x7e, 0xf0, 0x38, 0x3f, + 0xf6, 0xc7, 0xe3, 0xfc, 0x98, 0x66, 0x81, 0xb9, 0xde, 0xa3, 0xb4, 0x41, 0x5c, 0x8a, 0xf9, 0xd9, + 0x32, 0xaa, 0x23, 0xd7, 0xc2, 0xc1, 0x59, 0xb9, 0x84, 0x6f, 0x80, 0x29, 0x8b, 0x54, 0x70, 0xa9, + 0x8a, 0x68, 0x35, 0x3b, 0x2e, 0xf6, 0xd2, 0x9c, 0xf0, 0x2e, 0xa2, 0x55, 0x38, 0x07, 0x26, 0x5c, + 0xc2, 0x0f, 0x25, 0x96, 0x95, 0x8d, 0xa4, 0xe9, 0x2f, 0xb4, 0x77, 0xc0, 0x82, 0x50, 0x52, 0x14, + 0x2e, 0xfa, 0x07, 0x28, 0xef, 0x2b, 0x40, 0x1d, 0x24, 0x41, 0x82, 0x5d, 0x05, 0x47, 0x7c, 0xef, + 0x97, 0x7a, 0x25, 0xcd, 0xf8, 0xd4, 0x8b, 0x3e, 0x11, 0xaa, 0x20, 0x4d, 0xb9, 0x52, 0x8e, 0x6f, + 0x5c, 0xe0, 0xeb, 0xac, 0xb9, 0x08, 0xe4, 0x4b, 0x2d, 0xb9, 0x4d, 0xa7, 0x8c, 0x3d, 0x69, 0xc1, + 0x8c, 0xa4, 0xbe, 0x2f, 0x88, 0xda, 0x55, 0xb0, 0x28, 0x70, 0x7c, 0x84, 0xea, 0xb5, 0x0a, 0x62, + 0xc4, 0xeb, 0x33, 0xe6, 0x04, 0x98, 0xb6, 0x88, 0xdb, 0x8f, 0x23, 0xc3, 0x69, 0x17, 0x23, 0x56, + 0x3d, 0x54, 0xc0, 0x52, 0x8c, 0x34, 0x69, 0xd8, 0x3a, 0x38, 0x1a, 0xa0, 0xea, 0x95, 0x18, 0x80, + 0x7d, 0x85, 0xa6, 0x05, 0x41, 0xb4, 0xe3, 0xfb, 0xf9, 0x65, 0xdc, 0xf3, 0xa6, 0x0c, 0xa2, 0xce, + 0xd1, 0x51, 0x41, 0xa4, 0x5d, 0x95, 0xca, 0x3e, 0x64, 0xc4, 0x43, 0xf6, 0x68, 0x65, 0x70, 0x16, + 0x24, 0xf6, 0xf1, 0x81, 0x8c, 0x37, 0xfe, 0x19, 0x52, 0xbf, 0x25, 0xd5, 0x77, 0x84, 0x49, 0xf5, + 0x73, 0x60, 0xa2, 0x85, 0xea, 0xcd, 0x40, 0xb9, 0xbf, 0xd0, 0xce, 0x81, 0x59, 0x19, 0x4a, 0x95, + 0x97, 0x32, 0x72, 0x1d, 0xfc, 0x2f, 0x74, 0x4e, 0xaa, 0x80, 0x20, 0xc9, 0x63, 0x5f, 0x9c, 0x9a, + 0x36, 0xc5, 0xb7, 0x76, 0x1b, 0x40, 0xc1, 0xb8, 0xd7, 0xbe, 0x46, 0x6c, 0x1a, 0xa8, 0x80, 0x20, + 0x29, 0x32, 0xc6, 0x97, 0x2f, 0xbe, 0xe1, 0x25, 0x00, 0xba, 0xb5, 0x49, 0xd8, 0x96, 0x29, 0xac, + 0xe9, 0x7e, 0xd0, 0xea, 0xbc, 0x90, 0xe9, 0x7e, 0xcd, 0x93, 0x85, 0x4c, 0xbf, 0xd1, 0xbd, 0x2a, + 0x33, 0x74, 0x32, 0x04, 0xf2, 0x6b, 0x45, 0x5e, 0x6c, 0xa0, 0x5c, 0xe2, 0xdc, 0x04, 0xc9, 0x3a, + 0xb1, 0xb9, 0x75, 0x89, 0x8d, 0x4c, 0x61, 0x5e, 0xef, 0x2f, 0x9f, 0xfa, 0x35, 0x62, 0x9b, 0x82, + 0x05, 0x5e, 0x1e, 0x00, 0x6a, 0x7d, 0x24, 0x28, 0x5f, 0x4f, 0x18, 0x95, 0x36, 0x27, 0xef, 0xe1, + 0x86, 0x28, 0x92, 0x12, 0xb7, 0x76, 0x5d, 0x02, 0x0c, 0xa8, 0x12, 0xe0, 0x39, 0x30, 0xe9, 0x17, + 0x53, 0x71, 0x41, 0x99, 0x42, 0x36, 0x0a, 0xd1, 0x3f, 0xb1, 0x93, 0x7c, 0xf2, 0x2c, 0x3f, 0x66, + 0x4a, 0x6e, 0xed, 0x27, 0x05, 0x1c, 0xd9, 0x65, 0xd5, 0x22, 0xaa, 0xd7, 0x43, 0x37, 0x8d, 0x3c, + 0x9b, 0x06, 0x3e, 0xe1, 0xdf, 0xf0, 0x38, 0x48, 0xd9, 0x88, 0x96, 0x2c, 0xd4, 0x90, 0xe9, 0x31, + 0x69, 0x23, 0x5a, 0x44, 0x0d, 0xf8, 0x09, 0x98, 0x6d, 0x78, 0xa4, 0x41, 0x28, 0xf6, 0x3a, 0x29, + 0xc6, 0xd3, 0x63, 0x7a, 0xa7, 0xf0, 0xd7, 0xb3, 0xbc, 0x6e, 0xd7, 0x58, 0xb5, 0x59, 0xd6, 0x2d, + 0xe2, 0x18, 0xb2, 0xbf, 0xf8, 0x3f, 0x67, 0x68, 0x65, 0xdf, 0x60, 0x07, 0x0d, 0x4c, 0xf5, 0x62, + 0x37, 0xb7, 0xcd, 0xa3, 0x81, 0xac, 0x20, 0x2f, 0x17, 0x40, 0xda, 0xaa, 0xa2, 0x9a, 0x5b, 0xaa, + 0x55, 0xb2, 0xc9, 0x65, 0x65, 0x23, 0x61, 0xa6, 0xc4, 0xfa, 0x4a, 0x05, 0x2e, 0x82, 0x29, 0xd2, + 0xc2, 0x9e, 0x57, 0xab, 0x60, 0x9a, 0x9d, 0x10, 0x58, 0xbb, 0x04, 0x6d, 0x0f, 0x1c, 0xdb, 0xa5, + 0xac, 0xe6, 0x20, 0x86, 0x2f, 0xa3, 0xee, 0x35, 0xcd, 0x82, 0x84, 0x8d, 0x7c, 0xd3, 0x92, 0x26, + 0xff, 0xe4, 0x14, 0x0f, 0x33, 0x61, 0xd5, 0xb4, 0xc9, 0x3f, 0xb9, 0xce, 0x96, 0x53, 0xc2, 0x9e, + 0x47, 0xfc, 0x4c, 0x9f, 0x32, 0x53, 0x2d, 0x67, 0x97, 0x2f, 0xb5, 0xef, 0x92, 0x41, 0x78, 0xf0, + 0xce, 0xb4, 0xd7, 0x0e, 0xae, 0x6c, 0x1b, 0x24, 0x1c, 0x6a, 0xcb, 0xab, 0xcf, 0x47, 0xaf, 0xfe, + 0x3a, 0xb5, 0x77, 0x39, 0x0d, 0x37, 0x9d, 0xbd, 0xb6, 0xc9, 0x79, 0xe1, 0x05, 0x30, 0x1d, 0x6e, + 0x6f, 0x42, 0x53, 0xa6, 0xb0, 0x14, 0x3d, 0x2b, 0x54, 0x15, 0x05, 0x93, 0x99, 0x61, 0xdd, 0x05, + 0x2c, 0x82, 0xe9, 0x86, 0x87, 0x2b, 0xd8, 0xc2, 0x94, 0x12, 0x8f, 0x66, 0x93, 0x22, 0x36, 0x47, + 0x6a, 0xef, 0x39, 0xc4, 0x0b, 0x6e, 0xb9, 0x4e, 0xac, 0xfd, 0xa0, 0xb4, 0x4d, 0x88, 0x4b, 0xce, + 0x08, 0x9a, 0x5f, 0xd8, 0xe0, 0x12, 0x00, 0x3e, 0x8b, 0xc8, 0xbf, 0x49, 0x71, 0x23, 0x53, 0x82, + 0x22, 0x5a, 0x56, 0x31, 0xd8, 0xe6, 0x5d, 0x35, 0x9b, 0x12, 0x66, 0xa8, 0xba, 0xdf, 0x72, 0xf5, + 0xa0, 0xe5, 0xea, 0x7b, 0x41, 0xcb, 0xdd, 0x49, 0xf3, 0xf8, 0x7b, 0xf4, 0x6b, 0x5e, 0x91, 0x42, + 0xf8, 0xce, 0xc0, 0x30, 0x4a, 0xff, 0x3b, 0x61, 0x34, 0xd5, 0x1b, 0x46, 0x67, 0x41, 0x9a, 0x27, + 0x65, 0xe9, 0x26, 0xc6, 0x59, 0xc0, 0x6d, 0xdb, 0x59, 0xf8, 0xe5, 0x59, 0x7e, 0xde, 0x97, 0x4f, + 0x2b, 0xfb, 0x7a, 0x8d, 0x18, 0x0e, 0x62, 0x55, 0xfd, 0x8a, 0xcb, 0x78, 0xfd, 0xa5, 0xf8, 0x12, + 0xc6, 0xef, 0x25, 0xd3, 0xe3, 0xb3, 0x09, 0x33, 0xcd, 0xda, 0xa5, 0x9a, 0x5b, 0xc1, 0x6d, 0xed, + 0x94, 0x2c, 0xa1, 0x9d, 0xb8, 0xe8, 0xd6, 0xb7, 0x0a, 0x62, 0x28, 0xc8, 0x25, 0xfe, 0xad, 0x7d, + 0x95, 0x00, 0xf3, 0x5d, 0xe6, 0xd7, 0x35, 0xf3, 0xfa, 0xe3, 0x33, 0xf9, 0xd2, 0xf1, 0xf9, 0x9a, + 0x84, 0x56, 0xd8, 0xf7, 0xe9, 0x1e, 0xdf, 0x6b, 0x5b, 0xe0, 0xff, 0xfd, 0x8e, 0x18, 0xe2, 0xb7, + 0x6f, 0x12, 0x61, 0xf6, 0x1d, 0xae, 0x20, 0x94, 0xff, 0xac, 0x1d, 0x74, 0x87, 0xd1, 0xf9, 0xcf, + 0xda, 0xf4, 0x15, 0xe4, 0xff, 0x7f, 0x3d, 0x75, 0xb5, 0x33, 0xe0, 0x78, 0xc4, 0x1f, 0x43, 0xfc, + 0x37, 0xdf, 0x19, 0xd0, 0x44, 0x0e, 0x07, 0x0d, 0xf5, 0x5a, 0x67, 0xf8, 0x92, 0x64, 0x29, 0x22, + 0x5c, 0x18, 0x94, 0xc3, 0x16, 0x86, 0xc2, 0x9f, 0x33, 0x60, 0x42, 0x88, 0x83, 0x5f, 0x2a, 0x20, + 0x25, 0xe7, 0x51, 0xb8, 0x1a, 0x75, 0xeb, 0x80, 0x07, 0x87, 0xba, 0x36, 0x8a, 0xcd, 0x87, 0xa6, + 0x9d, 0xfe, 0xfc, 0xc7, 0xdf, 0xbf, 0x1d, 0x5f, 0x85, 0x2b, 0x46, 0xe4, 0xc9, 0x24, 0x67, 0x52, + 0xe3, 0x8e, 0x74, 0xc5, 0x3d, 0xf8, 0xbd, 0x02, 0x66, 0x7a, 0xc6, 0x7e, 0x78, 0x3a, 0x46, 0xcd, + 0xa0, 0xe7, 0x85, 0xba, 0x75, 0x38, 0x66, 0x89, 0xac, 0x20, 0x90, 0x6d, 0xc1, 0x53, 0x51, 0x64, + 0xc1, 0x0b, 0x23, 0x02, 0xf0, 0x07, 0x05, 0xcc, 0xf6, 0x4f, 0xf0, 0x50, 0x8f, 0x51, 0x1b, 0xf3, + 0x70, 0x50, 0x8d, 0x43, 0xf3, 0x4b, 0xa4, 0xe7, 0x05, 0xd2, 0xb3, 0xb0, 0x10, 0x45, 0xda, 0x0a, + 0xce, 0x74, 0xc1, 0x86, 0x1f, 0x25, 0xf7, 0xe0, 0x7d, 0x05, 0xa4, 0xe4, 0xac, 0x1e, 0xeb, 0xda, + 0xde, 0x67, 0x40, 0xac, 0x6b, 0xfb, 0x46, 0x7e, 0x6d, 0x4b, 0xc0, 0x5a, 0x83, 0x27, 0xa3, 0xb0, + 0xe4, 0xec, 0x4f, 0x43, 0x57, 0xf7, 0x50, 0x01, 0x29, 0x39, 0xb5, 0xc7, 0x02, 0xe9, 0x7d, 0x22, + 0xc4, 0x02, 0xe9, 0x1b, 0xfe, 0xb5, 0x6d, 0x01, 0xe4, 0x34, 0xdc, 0x8c, 0x02, 0xa1, 0x3e, 0x6b, + 0x17, 0x87, 0x71, 0x67, 0x1f, 0x1f, 0xdc, 0x83, 0xb7, 0x41, 0x92, 0x0f, 0xf7, 0x50, 0x8b, 0x0d, + 0x99, 0xce, 0x8b, 0x41, 0x5d, 0x19, 0xca, 0x23, 0x31, 0x6c, 0x0a, 0x0c, 0x2b, 0xf0, 0xc4, 0xa0, + 0x68, 0xaa, 0xf4, 0xdc, 0xc4, 0xa7, 0x60, 0xd2, 0x9f, 0x6f, 0xe1, 0xc9, 0x18, 0xc9, 0x3d, 0x63, + 0xb4, 0xba, 0x3a, 0x82, 0x4b, 0x22, 0x58, 0x16, 0x08, 0x54, 0x98, 0x35, 0x62, 0xfe, 0xbb, 0x80, + 0x6d, 0x90, 0x92, 0xf3, 0x33, 0x5c, 0x8e, 0xca, 0xec, 0x1d, 0xad, 0xd5, 0xf5, 0x51, 0xad, 0x21, + 0xd0, 0xab, 0x09, 0xbd, 0x8b, 0x50, 0x8d, 0xea, 0xc5, 0xac, 0x5a, 0xb2, 0xb8, 0xba, 0xcf, 0x40, + 0x26, 0x34, 0xe2, 0x1e, 0x42, 0xfb, 0x00, 0x9b, 0x07, 0xcc, 0xc8, 0xda, 0x9a, 0xd0, 0xbd, 0x0c, + 0x73, 0x03, 0x74, 0x4b, 0xf6, 0x12, 0x9f, 0x9c, 0xef, 0x82, 0x94, 0x1c, 0x77, 0x62, 0x63, 0xaf, + 0x77, 0x4c, 0x8e, 0x8d, 0xbd, 0xbe, 0xa9, 0x69, 0x98, 0xf5, 0x7e, 0xcf, 0x64, 0x6d, 0xf8, 0x40, + 0x01, 0xa0, 0x5b, 0xf8, 0xe1, 0xc6, 0x30, 0xd1, 0xe1, 0x5e, 0xad, 0x6e, 0x1e, 0x82, 0x53, 0xe2, + 0x58, 0x15, 0x38, 0xf2, 0x70, 0x29, 0x0e, 0x87, 0xe8, 0x82, 0xf0, 0x0b, 0x05, 0x4c, 0x75, 0x46, + 0x08, 0xb8, 0x3e, 0x4c, 0x7e, 0xd8, 0x1d, 0x1b, 0xa3, 0x19, 0x25, 0x8e, 0x93, 0x02, 0x47, 0x0e, + 0x2e, 0xc6, 0xe1, 0x10, 0xf1, 0x70, 0x97, 0x17, 0x25, 0xd1, 0x85, 0x86, 0x14, 0xa5, 0x70, 0xeb, + 0x1b, 0x52, 0x94, 0x7a, 0x5a, 0xe1, 0x30, 0x7f, 0x04, 0x2d, 0x72, 0xe7, 0xc2, 0x93, 0xe7, 0x39, + 0xe5, 0xe9, 0xf3, 0x9c, 0xf2, 0xdb, 0xf3, 0x9c, 0xf2, 0xe8, 0x45, 0x6e, 0xec, 0xe9, 0x8b, 0xdc, + 0xd8, 0xcf, 0x2f, 0x72, 0x63, 0x1f, 0xaf, 0x85, 0x46, 0x00, 0xdc, 0xe2, 0x13, 0x40, 0x57, 0x4a, + 0x5b, 0xc8, 0x11, 0x63, 0x40, 0x79, 0x52, 0x4c, 0x1c, 0x6f, 0xfd, 0x1d, 0x00, 0x00, 0xff, 0xff, + 0xf0, 0x03, 0x0d, 0x87, 0xba, 0x14, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2807,6 +2810,18 @@ func (m *QueryTraceTxRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.BaseFee != nil { + { + size := m.BaseFee.Size() + i -= size + if _, err := m.BaseFee.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } if m.ChainId != 0 { i = encodeVarintQuery(dAtA, i, uint64(m.ChainId)) i-- @@ -3517,6 +3532,10 @@ func (m *QueryTraceTxRequest) Size() (n int) { if m.ChainId != 0 { n += 1 + sovQuery(uint64(m.ChainId)) } + if m.BaseFee != nil { + l = m.BaseFee.Size() + n += 1 + l + sovQuery(uint64(l)) + } return n } @@ -5771,6 +5790,42 @@ func (m *QueryTraceTxRequest) Unmarshal(dAtA []byte) error { break } } + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseFee", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var v cosmossdk_io_math.Int + m.BaseFee = &v + if err := m.BaseFee.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) From 6464c221e6aecce1e91f365f02ab096666bab26f Mon Sep 17 00:00:00 2001 From: yihuang Date: Thu, 14 Nov 2024 16:10:37 +0800 Subject: [PATCH 047/210] Problem: nil pointer error with legacy tx format (#562) * Problem: nil pointer error with legacy tx format * Update CHANGELOG.md Signed-off-by: yihuang --------- Signed-off-by: yihuang --- CHANGELOG.md | 1 + x/evm/types/eth.go | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a65a26d30..ecc8368d17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -78,6 +78,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#558](https://github.com/crypto-org-chain/ethermint/pull/558) New tracer in predecessors to trace balance correctly when `debug_traceTransaction`. * (rpc) [#559](https://github.com/crypto-org-chain/ethermint/pull/559) Use basefee of transaction height instead of minus one height when `debug_traceTransaction`. * (ante) [#560](https://github.com/crypto-org-chain/ethermint/pull/560) Check gasWanted only in checkTx mode. +* (rpc) [#562](https://github.com/crypto-org-chain/ethermint/pull/562) Fix nil pointer panic with legacy transaction format. ### Improvements diff --git a/x/evm/types/eth.go b/x/evm/types/eth.go index 4ac6e9fbaa..e6d39b120a 100644 --- a/x/evm/types/eth.go +++ b/x/evm/types/eth.go @@ -4,6 +4,7 @@ import ( "encoding/json" errorsmod "cosmossdk.io/errors" + errortypes "github.com/cosmos/cosmos-sdk/types/errors" "github.com/ethereum/go-ethereum/common/hexutil" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/evmos/ethermint/types" @@ -60,6 +61,9 @@ func (tx *EthereumTx) UnmarshalJSON(bz []byte) error { } func (tx EthereumTx) MarshalJSON() ([]byte, error) { + if tx.Transaction == nil { + return []byte("null"), nil + } bz, err := tx.MarshalBinary() if err != nil { return nil, err @@ -68,6 +72,10 @@ func (tx EthereumTx) MarshalJSON() ([]byte, error) { } func (tx EthereumTx) Validate() error { + if tx.Transaction == nil { + return errorsmod.Wrapf(errortypes.ErrInvalidRequest, "raw tx is missing") + } + // prevent txs with 0 gas to fill up the mempool if tx.Gas() == 0 { return errorsmod.Wrap(ErrInvalidGasLimit, "gas limit must not be zero") From eac770f96f6ce78b82349b81f4f030fddb43561a Mon Sep 17 00:00:00 2001 From: mmsqe Date: Thu, 14 Nov 2024 16:39:59 +0800 Subject: [PATCH 048/210] Problem: cometbft is outdated (#555) * Problem: cometbft is outdated * toolchain * align gomod2nix * update flake lock --------- Co-authored-by: HuangYi --- CHANGELOG.md | 1 + flake.lock | 11 ++++++----- flake.nix | 2 +- go.mod | 25 +++++++++++-------------- go.sum | 45 ++++++++++++++++++++------------------------- gomod2nix.toml | 48 +++++++++++++++++++++++------------------------- nix/sources.json | 16 ++++++++-------- 7 files changed, 70 insertions(+), 78 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ecc8368d17..3b423df017 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -105,6 +105,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#546](https://github.com/crypto-org-chain/ethermint/pull/546) Introduce `--async-check-tx` flag to run check-tx async with consensus. * [#549](https://github.com/crypto-org-chain/ethermint/pull/549) Support build without cgo. * [#551](https://github.com/crypto-org-chain/ethermint/pull/551) Start event stream on demand. +* [#555](https://github.com/crypto-org-chain/ethermint/pull/555) Update cometbft to 0.38.14 and rocksdb to 9.7.4. ## v0.21.x-cronos diff --git a/flake.lock b/flake.lock index bf3b2f9809..4acaa41ddf 100644 --- a/flake.lock +++ b/flake.lock @@ -28,15 +28,16 @@ ] }, "locked": { - "lastModified": 1729448365, - "narHash": "sha256-oquZeWTYWTr5IxfwEzgsxjtD8SSFZYLdO9DaQb70vNU=", - "owner": "nix-community", + "lastModified": 1725226629, + "narHash": "sha256-0l5gtNAf3408INFPbvbMvHghd44LgKhMuqUcY6vH5N8=", + "owner": "obreitwi", "repo": "gomod2nix", - "rev": "5d387097aa716f35dd99d848dc26d8d5b62a104c", + "rev": "983228366edc1bed1be6e6f7a45e285b4707b9ba", "type": "github" }, "original": { - "owner": "nix-community", + "owner": "obreitwi", + "ref": "fix/go_mod_vendor", "repo": "gomod2nix", "type": "github" } diff --git a/flake.nix b/flake.nix index e48e77e182..34082f2d8e 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,7 @@ nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; gomod2nix = { - url = "github:nix-community/gomod2nix"; + url = "github:obreitwi/gomod2nix/fix/go_mod_vendor"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; diff --git a/go.mod b/go.mod index 8169c56b1d..2ebed1fa16 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module github.com/evmos/ethermint -go 1.22.7 - -toolchain go1.23.1 +go 1.23.1 require ( cosmossdk.io/api v0.7.6 @@ -51,12 +49,12 @@ require ( github.com/tidwall/gjson v1.14.4 github.com/tidwall/sjson v1.2.5 github.com/tyler-smith/go-bip39 v1.1.0 - golang.org/x/net v0.29.0 + golang.org/x/net v0.30.0 golang.org/x/sync v0.8.0 golang.org/x/text v0.19.0 google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 google.golang.org/grpc v1.67.1 - google.golang.org/protobuf v1.34.2 + google.golang.org/protobuf v1.35.1 sigs.k8s.io/yaml v1.4.0 ) @@ -95,7 +93,7 @@ require ( github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect - github.com/cometbft/cometbft-db v0.14.1 // indirect + github.com/cometbft/cometbft-db v0.15.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/iavl v1.2.0 // indirect @@ -106,10 +104,10 @@ require ( github.com/creachadair/tomledit v0.0.24 // indirect github.com/danieljoos/wincred v1.2.0 // indirect github.com/deckarep/golang-set/v2 v2.1.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect - github.com/dgraph-io/badger/v4 v4.2.0 // indirect - github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/dgraph-io/badger/v4 v4.3.0 // indirect + github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91 // indirect github.com/dlclark/regexp2 v1.7.0 // indirect github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7 // indirect github.com/dustin/go-humanize v1.0.1 // indirect @@ -132,7 +130,6 @@ require ( github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect - github.com/golang/glog v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect @@ -172,7 +169,7 @@ require ( github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect - github.com/linxGnu/grocksdb v1.8.14 // indirect + github.com/linxGnu/grocksdb v1.9.3 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -192,7 +189,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.59.1 // indirect + github.com/prometheus/common v0.60.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect @@ -227,7 +224,7 @@ require ( golang.org/x/crypto v0.28.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect golang.org/x/mod v0.18.0 // indirect - golang.org/x/oauth2 v0.22.0 // indirect + golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sys v0.26.0 // indirect golang.org/x/term v0.25.0 // indirect golang.org/x/time v0.5.0 // indirect @@ -254,7 +251,7 @@ replace ( // use cosmos keyring github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 // v0.38.x - github.com/cometbft/cometbft => github.com/crypto-org-chain/cometbft v0.0.0-20241101110921-cee5fa03c9ba + github.com/cometbft/cometbft => github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890 // release/v1.11.x github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183 // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. diff --git a/go.sum b/go.sum index 34c01955a1..27a49786fe 100644 --- a/go.sum +++ b/go.sum @@ -362,8 +362,8 @@ github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1: github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONNbHU7MuEHboiFuA= github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= -github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ= -github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ= +github.com/cometbft/cometbft-db v0.15.0 h1:VLtsRt8udD4jHCyjvrsTBpgz83qne5hnL245AcPJVRk= +github.com/cometbft/cometbft-db v0.15.0/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -410,8 +410,6 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+FBB8cMkDE2j2VBVsbY+HCkPIu0YsJ/9bbGeQ= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/crypto-org-chain/cometbft v0.0.0-20241101110921-cee5fa03c9ba h1:g3uPF40faoyCZsRRyS1aljDGNSZmDP44e4VjRl8k1Ik= -github.com/crypto-org-chain/cometbft v0.0.0-20241101110921-cee5fa03c9ba/go.mod h1:7v7mf87Zd7umLS1rtRs4Z4wgUqs2stVPZza0eMLWd/Y= github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517 h1:iRnJMiquXPE3OpVX8ENCrcstfd7mI206yC3Bkl6WeK4= github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517/go.mod h1:JwwsMeZldLN20b72mmbWPY0EV9rs+v/12hRu1JFttvY= github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241015015202-783e224f9517 h1:y3i8TiU7E60zmbpLyo4PqrnwZaWNU3kizU+1OezuoA8= @@ -435,17 +433,16 @@ github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= -github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= -github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= -github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +github.com/dgraph-io/badger/v4 v4.3.0 h1:lcsCE1/1qrRhqP+zYx6xDZb8n7U+QlwNicpc676Ub40= +github.com/dgraph-io/badger/v4 v4.3.0/go.mod h1:Sc0T595g8zqAQRDf44n+z3wG4BOqLwceaFntt8KPxUM= +github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91 h1:Pux6+xANi0I7RRo5E1gflI4EZ2yx3BGZ75JkAIvGEOA= +github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91/go.mod h1:swkazRqnUf1N62d0Nutz7KIj2UKqsm/H8tD0nBJAXqM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= @@ -461,7 +458,6 @@ github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7/go.mod h1:yRkwfj0CBpOG github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= @@ -565,8 +561,6 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= -github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -836,8 +830,8 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= -github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= +github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= +github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= @@ -988,8 +982,8 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.59.1 h1:LXb1quJHWm1P6wq/U824uxYi4Sg0oGvNeUm1z5dJoX0= -github.com/prometheus/common v0.59.1/go.mod h1:GpWM7dewqmVYcd7SmRaiWVe9SSqjf0UrwnYnpEZNuT0= +github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= +github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1116,6 +1110,8 @@ github.com/urfave/cli/v2 v2.17.2-0.20221006022127-8f469abc00aa/go.mod h1:1CNUng3 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890 h1:JQCpo2LIqYcPCS7QPfxeDheCUfN/NGTB6aUAmlA/fi0= +github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890/go.mod h1:khbgmtxbgwJfMqDmnGY4rl2sQpTdzpPb1f9nqnfpy1o= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1282,8 +1278,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1309,8 +1305,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= -golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1418,7 +1414,6 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1752,8 +1747,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/gomod2nix.toml b/gomod2nix.toml index f82c63568f..0cae733cc4 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -1,4 +1,5 @@ -schema = 3 +schema = 4 +vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud.google.com/go/internal\ncloud.google.com/go/internal/optional\ncloud.google.com/go/internal/trace\ncloud.google.com/go/internal/version\n# cloud.google.com/go/auth v0.6.0\n## explicit; go 1.20\ncloud.google.com/go/auth\ncloud.google.com/go/auth/credentials\ncloud.google.com/go/auth/credentials/internal/externalaccount\ncloud.google.com/go/auth/credentials/internal/externalaccountuser\ncloud.google.com/go/auth/credentials/internal/gdch\ncloud.google.com/go/auth/credentials/internal/impersonate\ncloud.google.com/go/auth/credentials/internal/stsexchange\ncloud.google.com/go/auth/grpctransport\ncloud.google.com/go/auth/httptransport\ncloud.google.com/go/auth/internal\ncloud.google.com/go/auth/internal/credsfile\ncloud.google.com/go/auth/internal/jwt\ncloud.google.com/go/auth/internal/transport\ncloud.google.com/go/auth/internal/transport/cert\n# cloud.google.com/go/auth/oauth2adapt v0.2.2\n## explicit; go 1.19\ncloud.google.com/go/auth/oauth2adapt\n# cloud.google.com/go/compute/metadata v0.5.0\n## explicit; go 1.20\ncloud.google.com/go/compute/metadata\n# cloud.google.com/go/iam v1.1.9\n## explicit; go 1.20\ncloud.google.com/go/iam\ncloud.google.com/go/iam/apiv1/iampb\n# cloud.google.com/go/storage v1.41.0\n## explicit; go 1.19\ncloud.google.com/go/storage\ncloud.google.com/go/storage/internal\ncloud.google.com/go/storage/internal/apiv2\ncloud.google.com/go/storage/internal/apiv2/storagepb\n# cosmossdk.io/api v0.7.6\n## explicit; go 1.20\ncosmossdk.io/api/amino\ncosmossdk.io/api/cosmos/app/runtime/v1alpha1\ncosmossdk.io/api/cosmos/app/v1alpha1\ncosmossdk.io/api/cosmos/auth/module/v1\ncosmossdk.io/api/cosmos/auth/v1beta1\ncosmossdk.io/api/cosmos/authz/module/v1\ncosmossdk.io/api/cosmos/authz/v1beta1\ncosmossdk.io/api/cosmos/autocli/v1\ncosmossdk.io/api/cosmos/bank/module/v1\ncosmossdk.io/api/cosmos/bank/v1beta1\ncosmossdk.io/api/cosmos/base/abci/v1beta1\ncosmossdk.io/api/cosmos/base/query/v1beta1\ncosmossdk.io/api/cosmos/base/reflection/v1beta1\ncosmossdk.io/api/cosmos/base/tendermint/v1beta1\ncosmossdk.io/api/cosmos/base/v1beta1\ncosmossdk.io/api/cosmos/consensus/module/v1\ncosmossdk.io/api/cosmos/consensus/v1\ncosmossdk.io/api/cosmos/crisis/module/v1\ncosmossdk.io/api/cosmos/crisis/v1beta1\ncosmossdk.io/api/cosmos/crypto/ed25519\ncosmossdk.io/api/cosmos/crypto/multisig\ncosmossdk.io/api/cosmos/crypto/multisig/v1beta1\ncosmossdk.io/api/cosmos/crypto/secp256k1\ncosmossdk.io/api/cosmos/crypto/secp256r1\ncosmossdk.io/api/cosmos/distribution/module/v1\ncosmossdk.io/api/cosmos/distribution/v1beta1\ncosmossdk.io/api/cosmos/evidence/module/v1\ncosmossdk.io/api/cosmos/evidence/v1beta1\ncosmossdk.io/api/cosmos/feegrant/module/v1\ncosmossdk.io/api/cosmos/feegrant/v1beta1\ncosmossdk.io/api/cosmos/genutil/module/v1\ncosmossdk.io/api/cosmos/gov/module/v1\ncosmossdk.io/api/cosmos/gov/v1\ncosmossdk.io/api/cosmos/mint/module/v1\ncosmossdk.io/api/cosmos/mint/v1beta1\ncosmossdk.io/api/cosmos/msg/v1\ncosmossdk.io/api/cosmos/params/module/v1\ncosmossdk.io/api/cosmos/params/v1beta1\ncosmossdk.io/api/cosmos/query/v1\ncosmossdk.io/api/cosmos/reflection/v1\ncosmossdk.io/api/cosmos/slashing/module/v1\ncosmossdk.io/api/cosmos/slashing/v1beta1\ncosmossdk.io/api/cosmos/staking/module/v1\ncosmossdk.io/api/cosmos/staking/v1beta1\ncosmossdk.io/api/cosmos/tx/config/v1\ncosmossdk.io/api/cosmos/tx/signing/v1beta1\ncosmossdk.io/api/cosmos/tx/v1beta1\ncosmossdk.io/api/cosmos/upgrade/module/v1\ncosmossdk.io/api/cosmos/upgrade/v1beta1\ncosmossdk.io/api/cosmos/vesting/module/v1\ncosmossdk.io/api/cosmos/vesting/v1beta1\ncosmossdk.io/api/tendermint/abci\ncosmossdk.io/api/tendermint/crypto\ncosmossdk.io/api/tendermint/p2p\ncosmossdk.io/api/tendermint/types\ncosmossdk.io/api/tendermint/version\n# cosmossdk.io/client/v2 v2.0.0-beta.5\n## explicit; go 1.21\ncosmossdk.io/client/v2/autocli\ncosmossdk.io/client/v2/autocli/flag\ncosmossdk.io/client/v2/autocli/flag/maps\ncosmossdk.io/client/v2/autocli/keyring\ncosmossdk.io/client/v2/internal/flags\ncosmossdk.io/client/v2/internal/strcase\ncosmossdk.io/client/v2/internal/util\n# cosmossdk.io/collections v0.4.0\n## explicit; go 1.20\ncosmossdk.io/collections\ncosmossdk.io/collections/codec\ncosmossdk.io/collections/indexes\n# cosmossdk.io/core v0.11.1\n## explicit; go 1.20\ncosmossdk.io/core/address\ncosmossdk.io/core/appmodule\ncosmossdk.io/core/coins\ncosmossdk.io/core/comet\ncosmossdk.io/core/event\ncosmossdk.io/core/genesis\ncosmossdk.io/core/header\ncosmossdk.io/core/store\n# cosmossdk.io/depinject v1.0.0\n## explicit; go 1.20\ncosmossdk.io/depinject\ncosmossdk.io/depinject/appconfig\ncosmossdk.io/depinject/appconfig/v1alpha1\ncosmossdk.io/depinject/internal/appconfig\ncosmossdk.io/depinject/internal/graphviz\ncosmossdk.io/depinject/internal/util\n# cosmossdk.io/errors v1.0.1\n## explicit; go 1.20\ncosmossdk.io/errors\n# cosmossdk.io/log v1.4.1\n## explicit; go 1.20\ncosmossdk.io/log\n# cosmossdk.io/math v1.3.0\n## explicit; go 1.20\ncosmossdk.io/math\ncosmossdk.io/math/unsafe\n# cosmossdk.io/store v1.1.1 => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241015015202-783e224f9517\n## explicit; go 1.21\ncosmossdk.io/store\ncosmossdk.io/store/cache\ncosmossdk.io/store/cachekv\ncosmossdk.io/store/cachekv/internal\ncosmossdk.io/store/cachemulti\ncosmossdk.io/store/dbadapter\ncosmossdk.io/store/gaskv\ncosmossdk.io/store/iavl\ncosmossdk.io/store/internal\ncosmossdk.io/store/internal/btree\ncosmossdk.io/store/internal/kv\ncosmossdk.io/store/internal/maps\ncosmossdk.io/store/internal/proofs\ncosmossdk.io/store/internal/tree\ncosmossdk.io/store/listenkv\ncosmossdk.io/store/mem\ncosmossdk.io/store/metrics\ncosmossdk.io/store/prefix\ncosmossdk.io/store/pruning\ncosmossdk.io/store/pruning/types\ncosmossdk.io/store/rootmulti\ncosmossdk.io/store/snapshots\ncosmossdk.io/store/snapshots/types\ncosmossdk.io/store/streaming\ncosmossdk.io/store/streaming/abci\ncosmossdk.io/store/tracekv\ncosmossdk.io/store/transient\ncosmossdk.io/store/types\ncosmossdk.io/store/wrapper\n# cosmossdk.io/tools/confix v0.1.2\n## explicit; go 1.21\ncosmossdk.io/tools/confix\ncosmossdk.io/tools/confix/cmd\n# cosmossdk.io/x/evidence v0.1.1\n## explicit; go 1.21\ncosmossdk.io/x/evidence\ncosmossdk.io/x/evidence/client\ncosmossdk.io/x/evidence/client/cli\ncosmossdk.io/x/evidence/exported\ncosmossdk.io/x/evidence/keeper\ncosmossdk.io/x/evidence/simulation\ncosmossdk.io/x/evidence/types\n# cosmossdk.io/x/feegrant v0.1.1\n## explicit; go 1.21\ncosmossdk.io/x/feegrant\ncosmossdk.io/x/feegrant/client/cli\ncosmossdk.io/x/feegrant/keeper\ncosmossdk.io/x/feegrant/migrations/v2\ncosmossdk.io/x/feegrant/module\ncosmossdk.io/x/feegrant/simulation\n# cosmossdk.io/x/tx v0.13.6-0.20241003112805-ff8789a02871 => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241015015202-783e224f9517\n## explicit; go 1.21\ncosmossdk.io/x/tx/decode\ncosmossdk.io/x/tx/signing\ncosmossdk.io/x/tx/signing/aminojson\ncosmossdk.io/x/tx/signing/aminojson/internal/aminojsonpb\ncosmossdk.io/x/tx/signing/direct\ncosmossdk.io/x/tx/signing/directaux\ncosmossdk.io/x/tx/signing/textual\ncosmossdk.io/x/tx/signing/textual/internal/cbor\ncosmossdk.io/x/tx/signing/textual/internal/textualpb\n# cosmossdk.io/x/upgrade v0.1.4\n## explicit; go 1.21\ncosmossdk.io/x/upgrade\ncosmossdk.io/x/upgrade/client/cli\ncosmossdk.io/x/upgrade/exported\ncosmossdk.io/x/upgrade/internal/conv\ncosmossdk.io/x/upgrade/keeper\ncosmossdk.io/x/upgrade/plan\ncosmossdk.io/x/upgrade/types\n# filippo.io/edwards25519 v1.1.0\n## explicit; go 1.20\nfilippo.io/edwards25519\nfilippo.io/edwards25519/field\n# github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4\n## explicit\ngithub.com/99designs/go-keychain\n# github.com/99designs/keyring v1.2.2 => github.com/cosmos/keyring v1.2.0\n## explicit; go 1.17\ngithub.com/99designs/keyring\n# github.com/DataDog/datadog-go v4.8.3+incompatible\n## explicit\ngithub.com/DataDog/datadog-go/statsd\n# github.com/DataDog/zstd v1.5.5\n## explicit; go 1.14\ngithub.com/DataDog/zstd\n# github.com/Microsoft/go-winio v0.6.1\n## explicit; go 1.17\ngithub.com/Microsoft/go-winio\ngithub.com/Microsoft/go-winio/internal/fs\ngithub.com/Microsoft/go-winio/internal/socket\ngithub.com/Microsoft/go-winio/internal/stringbuffer\ngithub.com/Microsoft/go-winio/pkg/guid\n# github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6\n## explicit\ngithub.com/StackExchange/wmi\n# github.com/VictoriaMetrics/fastcache v1.6.0\n## explicit; go 1.13\ngithub.com/VictoriaMetrics/fastcache\n# github.com/allegro/bigcache v1.2.1\n## explicit\n# github.com/aws/aws-sdk-go v1.44.224\n## explicit; go 1.11\ngithub.com/aws/aws-sdk-go/aws\ngithub.com/aws/aws-sdk-go/aws/arn\ngithub.com/aws/aws-sdk-go/aws/awserr\ngithub.com/aws/aws-sdk-go/aws/awsutil\ngithub.com/aws/aws-sdk-go/aws/client\ngithub.com/aws/aws-sdk-go/aws/client/metadata\ngithub.com/aws/aws-sdk-go/aws/corehandlers\ngithub.com/aws/aws-sdk-go/aws/credentials\ngithub.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds\ngithub.com/aws/aws-sdk-go/aws/credentials/endpointcreds\ngithub.com/aws/aws-sdk-go/aws/credentials/processcreds\ngithub.com/aws/aws-sdk-go/aws/credentials/ssocreds\ngithub.com/aws/aws-sdk-go/aws/credentials/stscreds\ngithub.com/aws/aws-sdk-go/aws/csm\ngithub.com/aws/aws-sdk-go/aws/defaults\ngithub.com/aws/aws-sdk-go/aws/ec2metadata\ngithub.com/aws/aws-sdk-go/aws/endpoints\ngithub.com/aws/aws-sdk-go/aws/request\ngithub.com/aws/aws-sdk-go/aws/session\ngithub.com/aws/aws-sdk-go/aws/signer/v4\ngithub.com/aws/aws-sdk-go/internal/context\ngithub.com/aws/aws-sdk-go/internal/ini\ngithub.com/aws/aws-sdk-go/internal/s3shared\ngithub.com/aws/aws-sdk-go/internal/s3shared/arn\ngithub.com/aws/aws-sdk-go/internal/s3shared/s3err\ngithub.com/aws/aws-sdk-go/internal/sdkio\ngithub.com/aws/aws-sdk-go/internal/sdkmath\ngithub.com/aws/aws-sdk-go/internal/sdkrand\ngithub.com/aws/aws-sdk-go/internal/sdkuri\ngithub.com/aws/aws-sdk-go/internal/shareddefaults\ngithub.com/aws/aws-sdk-go/internal/strings\ngithub.com/aws/aws-sdk-go/internal/sync/singleflight\ngithub.com/aws/aws-sdk-go/private/checksum\ngithub.com/aws/aws-sdk-go/private/protocol\ngithub.com/aws/aws-sdk-go/private/protocol/eventstream\ngithub.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi\ngithub.com/aws/aws-sdk-go/private/protocol/json/jsonutil\ngithub.com/aws/aws-sdk-go/private/protocol/jsonrpc\ngithub.com/aws/aws-sdk-go/private/protocol/query\ngithub.com/aws/aws-sdk-go/private/protocol/query/queryutil\ngithub.com/aws/aws-sdk-go/private/protocol/rest\ngithub.com/aws/aws-sdk-go/private/protocol/restjson\ngithub.com/aws/aws-sdk-go/private/protocol/restxml\ngithub.com/aws/aws-sdk-go/private/protocol/xml/xmlutil\ngithub.com/aws/aws-sdk-go/service/s3\ngithub.com/aws/aws-sdk-go/service/sso\ngithub.com/aws/aws-sdk-go/service/sso/ssoiface\ngithub.com/aws/aws-sdk-go/service/sts\ngithub.com/aws/aws-sdk-go/service/sts/stsiface\n# github.com/beorn7/perks v1.0.1\n## explicit; go 1.11\ngithub.com/beorn7/perks/quantile\n# github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d\n## explicit\ngithub.com/bgentry/go-netrc/netrc\n# github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816\n## explicit\ngithub.com/bgentry/speakeasy\n# github.com/bits-and-blooms/bitset v1.8.0\n## explicit; go 1.16\ngithub.com/bits-and-blooms/bitset\n# github.com/btcsuite/btcd v0.24.2\n## explicit; go 1.17\ngithub.com/btcsuite/btcd/chaincfg\ngithub.com/btcsuite/btcd/wire\n# github.com/btcsuite/btcd/btcec/v2 v2.3.4\n## explicit; go 1.17\ngithub.com/btcsuite/btcd/btcec/v2\ngithub.com/btcsuite/btcd/btcec/v2/ecdsa\n# github.com/btcsuite/btcd/btcutil v1.1.6\n## explicit; go 1.16\ngithub.com/btcsuite/btcd/btcutil\ngithub.com/btcsuite/btcd/btcutil/base58\ngithub.com/btcsuite/btcd/btcutil/bech32\ngithub.com/btcsuite/btcd/btcutil/hdkeychain\n# github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0\n## explicit; go 1.17\ngithub.com/btcsuite/btcd/chaincfg/chainhash\n# github.com/cenkalti/backoff/v4 v4.2.1\n## explicit; go 1.18\ngithub.com/cenkalti/backoff/v4\n# github.com/cespare/xxhash/v2 v2.3.0\n## explicit; go 1.11\ngithub.com/cespare/xxhash/v2\n# github.com/chzyer/readline v1.5.1\n## explicit; go 1.15\ngithub.com/chzyer/readline\n# github.com/cockroachdb/apd/v2 v2.0.2\n## explicit\ngithub.com/cockroachdb/apd/v2\n# github.com/cockroachdb/errors v1.11.3\n## explicit; go 1.19\ngithub.com/cockroachdb/errors\ngithub.com/cockroachdb/errors/assert\ngithub.com/cockroachdb/errors/barriers\ngithub.com/cockroachdb/errors/contexttags\ngithub.com/cockroachdb/errors/domains\ngithub.com/cockroachdb/errors/errbase\ngithub.com/cockroachdb/errors/errorspb\ngithub.com/cockroachdb/errors/errutil\ngithub.com/cockroachdb/errors/hintdetail\ngithub.com/cockroachdb/errors/issuelink\ngithub.com/cockroachdb/errors/join\ngithub.com/cockroachdb/errors/markers\ngithub.com/cockroachdb/errors/oserror\ngithub.com/cockroachdb/errors/report\ngithub.com/cockroachdb/errors/safedetails\ngithub.com/cockroachdb/errors/secondary\ngithub.com/cockroachdb/errors/stdstrings\ngithub.com/cockroachdb/errors/telemetrykeys\ngithub.com/cockroachdb/errors/withstack\n# github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce\n## explicit; go 1.20\ngithub.com/cockroachdb/fifo\n# github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b\n## explicit; go 1.16\ngithub.com/cockroachdb/logtags\n# github.com/cockroachdb/pebble v1.1.2\n## explicit; go 1.20\ngithub.com/cockroachdb/pebble\ngithub.com/cockroachdb/pebble/bloom\ngithub.com/cockroachdb/pebble/internal/arenaskl\ngithub.com/cockroachdb/pebble/internal/base\ngithub.com/cockroachdb/pebble/internal/batchskl\ngithub.com/cockroachdb/pebble/internal/bytealloc\ngithub.com/cockroachdb/pebble/internal/cache\ngithub.com/cockroachdb/pebble/internal/constants\ngithub.com/cockroachdb/pebble/internal/crc\ngithub.com/cockroachdb/pebble/internal/fastrand\ngithub.com/cockroachdb/pebble/internal/humanize\ngithub.com/cockroachdb/pebble/internal/intern\ngithub.com/cockroachdb/pebble/internal/invalidating\ngithub.com/cockroachdb/pebble/internal/invariants\ngithub.com/cockroachdb/pebble/internal/keyspan\ngithub.com/cockroachdb/pebble/internal/manifest\ngithub.com/cockroachdb/pebble/internal/manual\ngithub.com/cockroachdb/pebble/internal/private\ngithub.com/cockroachdb/pebble/internal/rangedel\ngithub.com/cockroachdb/pebble/internal/rangekey\ngithub.com/cockroachdb/pebble/internal/rawalloc\ngithub.com/cockroachdb/pebble/internal/testkeys\ngithub.com/cockroachdb/pebble/objstorage\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider/objiotracing\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider/remoteobjcat\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider/sharedcache\ngithub.com/cockroachdb/pebble/objstorage/remote\ngithub.com/cockroachdb/pebble/rangekey\ngithub.com/cockroachdb/pebble/record\ngithub.com/cockroachdb/pebble/sstable\ngithub.com/cockroachdb/pebble/vfs\ngithub.com/cockroachdb/pebble/vfs/atomicfs\n# github.com/cockroachdb/redact v1.1.5\n## explicit; go 1.14\ngithub.com/cockroachdb/redact\ngithub.com/cockroachdb/redact/builder\ngithub.com/cockroachdb/redact/interfaces\ngithub.com/cockroachdb/redact/internal/buffer\ngithub.com/cockroachdb/redact/internal/escape\ngithub.com/cockroachdb/redact/internal/fmtforward\ngithub.com/cockroachdb/redact/internal/markers\ngithub.com/cockroachdb/redact/internal/redact\ngithub.com/cockroachdb/redact/internal/rfmt\ngithub.com/cockroachdb/redact/internal/rfmt/fmtsort\n# github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06\n## explicit; go 1.19\ngithub.com/cockroachdb/tokenbucket\n# github.com/coinbase/rosetta-sdk-go/types v1.0.0\n## explicit; go 1.18\ngithub.com/coinbase/rosetta-sdk-go/types\n# github.com/cometbft/cometbft v0.38.13-0.20240920204745-fdf90d16f608 => github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890\n## explicit; go 1.23.1\ngithub.com/cometbft/cometbft/abci/client\ngithub.com/cometbft/cometbft/abci/example/kvstore\ngithub.com/cometbft/cometbft/abci/server\ngithub.com/cometbft/cometbft/abci/types\ngithub.com/cometbft/cometbft/blocksync\ngithub.com/cometbft/cometbft/cmd/cometbft/commands\ngithub.com/cometbft/cometbft/config\ngithub.com/cometbft/cometbft/consensus\ngithub.com/cometbft/cometbft/consensus/types\ngithub.com/cometbft/cometbft/crypto\ngithub.com/cometbft/cometbft/crypto/batch\ngithub.com/cometbft/cometbft/crypto/ed25519\ngithub.com/cometbft/cometbft/crypto/encoding\ngithub.com/cometbft/cometbft/crypto/merkle\ngithub.com/cometbft/cometbft/crypto/secp256k1\ngithub.com/cometbft/cometbft/crypto/sr25519\ngithub.com/cometbft/cometbft/crypto/tmhash\ngithub.com/cometbft/cometbft/evidence\ngithub.com/cometbft/cometbft/inspect\ngithub.com/cometbft/cometbft/inspect/rpc\ngithub.com/cometbft/cometbft/internal/indexer\ngithub.com/cometbft/cometbft/internal/test\ngithub.com/cometbft/cometbft/libs/async\ngithub.com/cometbft/cometbft/libs/autofile\ngithub.com/cometbft/cometbft/libs/bits\ngithub.com/cometbft/cometbft/libs/bytes\ngithub.com/cometbft/cometbft/libs/cli\ngithub.com/cometbft/cometbft/libs/cli/flags\ngithub.com/cometbft/cometbft/libs/clist\ngithub.com/cometbft/cometbft/libs/cmap\ngithub.com/cometbft/cometbft/libs/events\ngithub.com/cometbft/cometbft/libs/fail\ngithub.com/cometbft/cometbft/libs/flowrate\ngithub.com/cometbft/cometbft/libs/json\ngithub.com/cometbft/cometbft/libs/log\ngithub.com/cometbft/cometbft/libs/math\ngithub.com/cometbft/cometbft/libs/net\ngithub.com/cometbft/cometbft/libs/os\ngithub.com/cometbft/cometbft/libs/progressbar\ngithub.com/cometbft/cometbft/libs/protoio\ngithub.com/cometbft/cometbft/libs/pubsub\ngithub.com/cometbft/cometbft/libs/pubsub/query\ngithub.com/cometbft/cometbft/libs/pubsub/query/syntax\ngithub.com/cometbft/cometbft/libs/rand\ngithub.com/cometbft/cometbft/libs/service\ngithub.com/cometbft/cometbft/libs/strings\ngithub.com/cometbft/cometbft/libs/sync\ngithub.com/cometbft/cometbft/libs/tempfile\ngithub.com/cometbft/cometbft/libs/timer\ngithub.com/cometbft/cometbft/light\ngithub.com/cometbft/cometbft/light/provider\ngithub.com/cometbft/cometbft/light/provider/http\ngithub.com/cometbft/cometbft/light/proxy\ngithub.com/cometbft/cometbft/light/rpc\ngithub.com/cometbft/cometbft/light/store\ngithub.com/cometbft/cometbft/light/store/db\ngithub.com/cometbft/cometbft/mempool\ngithub.com/cometbft/cometbft/node\ngithub.com/cometbft/cometbft/p2p\ngithub.com/cometbft/cometbft/p2p/conn\ngithub.com/cometbft/cometbft/p2p/pex\ngithub.com/cometbft/cometbft/privval\ngithub.com/cometbft/cometbft/proto/tendermint/blocksync\ngithub.com/cometbft/cometbft/proto/tendermint/consensus\ngithub.com/cometbft/cometbft/proto/tendermint/crypto\ngithub.com/cometbft/cometbft/proto/tendermint/libs/bits\ngithub.com/cometbft/cometbft/proto/tendermint/mempool\ngithub.com/cometbft/cometbft/proto/tendermint/p2p\ngithub.com/cometbft/cometbft/proto/tendermint/privval\ngithub.com/cometbft/cometbft/proto/tendermint/state\ngithub.com/cometbft/cometbft/proto/tendermint/statesync\ngithub.com/cometbft/cometbft/proto/tendermint/store\ngithub.com/cometbft/cometbft/proto/tendermint/types\ngithub.com/cometbft/cometbft/proto/tendermint/version\ngithub.com/cometbft/cometbft/proxy\ngithub.com/cometbft/cometbft/rpc/client\ngithub.com/cometbft/cometbft/rpc/client/http\ngithub.com/cometbft/cometbft/rpc/client/local\ngithub.com/cometbft/cometbft/rpc/core\ngithub.com/cometbft/cometbft/rpc/core/types\ngithub.com/cometbft/cometbft/rpc/grpc\ngithub.com/cometbft/cometbft/rpc/jsonrpc/client\ngithub.com/cometbft/cometbft/rpc/jsonrpc/server\ngithub.com/cometbft/cometbft/rpc/jsonrpc/types\ngithub.com/cometbft/cometbft/state\ngithub.com/cometbft/cometbft/state/indexer\ngithub.com/cometbft/cometbft/state/indexer/block\ngithub.com/cometbft/cometbft/state/indexer/block/kv\ngithub.com/cometbft/cometbft/state/indexer/block/null\ngithub.com/cometbft/cometbft/state/indexer/sink/psql\ngithub.com/cometbft/cometbft/state/txindex\ngithub.com/cometbft/cometbft/state/txindex/kv\ngithub.com/cometbft/cometbft/state/txindex/null\ngithub.com/cometbft/cometbft/statesync\ngithub.com/cometbft/cometbft/store\ngithub.com/cometbft/cometbft/test/e2e/app\ngithub.com/cometbft/cometbft/types\ngithub.com/cometbft/cometbft/types/time\ngithub.com/cometbft/cometbft/version\n# github.com/cometbft/cometbft-db v0.15.0\n## explicit; go 1.23.1\ngithub.com/cometbft/cometbft-db\n# github.com/cosmos/btcutil v1.0.5\n## explicit; go 1.19\ngithub.com/cosmos/btcutil/bech32\n# github.com/cosmos/cosmos-db v1.0.3-0.20240408151834-e75f6e4b28d8\n## explicit; go 1.19\ngithub.com/cosmos/cosmos-db\n# github.com/cosmos/cosmos-proto v1.0.0-beta.5\n## explicit; go 1.18\ngithub.com/cosmos/cosmos-proto\ngithub.com/cosmos/cosmos-proto/anyutil\ngithub.com/cosmos/cosmos-proto/runtime\n# github.com/cosmos/cosmos-sdk v0.50.9 => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517\n## explicit; go 1.21\ngithub.com/cosmos/cosmos-sdk/baseapp\ngithub.com/cosmos/cosmos-sdk/baseapp/internal/protocompat\ngithub.com/cosmos/cosmos-sdk/baseapp/oe\ngithub.com/cosmos/cosmos-sdk/client\ngithub.com/cosmos/cosmos-sdk/client/config\ngithub.com/cosmos/cosmos-sdk/client/debug\ngithub.com/cosmos/cosmos-sdk/client/docs\ngithub.com/cosmos/cosmos-sdk/client/flags\ngithub.com/cosmos/cosmos-sdk/client/grpc/cmtservice\ngithub.com/cosmos/cosmos-sdk/client/grpc/node\ngithub.com/cosmos/cosmos-sdk/client/grpc/reflection\ngithub.com/cosmos/cosmos-sdk/client/input\ngithub.com/cosmos/cosmos-sdk/client/keys\ngithub.com/cosmos/cosmos-sdk/client/pruning\ngithub.com/cosmos/cosmos-sdk/client/rpc\ngithub.com/cosmos/cosmos-sdk/client/snapshot\ngithub.com/cosmos/cosmos-sdk/client/tx\ngithub.com/cosmos/cosmos-sdk/codec\ngithub.com/cosmos/cosmos-sdk/codec/address\ngithub.com/cosmos/cosmos-sdk/codec/legacy\ngithub.com/cosmos/cosmos-sdk/codec/testutil\ngithub.com/cosmos/cosmos-sdk/codec/types\ngithub.com/cosmos/cosmos-sdk/codec/unknownproto\ngithub.com/cosmos/cosmos-sdk/crypto\ngithub.com/cosmos/cosmos-sdk/crypto/codec\ngithub.com/cosmos/cosmos-sdk/crypto/hd\ngithub.com/cosmos/cosmos-sdk/crypto/keyring\ngithub.com/cosmos/cosmos-sdk/crypto/keys/bcrypt\ngithub.com/cosmos/cosmos-sdk/crypto/keys/ed25519\ngithub.com/cosmos/cosmos-sdk/crypto/keys/internal/ecdsa\ngithub.com/cosmos/cosmos-sdk/crypto/keys/multisig\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1/libsecp256k1/include\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1/libsecp256k1/src\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1/libsecp256k1/src/modules/recovery\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256r1\ngithub.com/cosmos/cosmos-sdk/crypto/ledger\ngithub.com/cosmos/cosmos-sdk/crypto/types\ngithub.com/cosmos/cosmos-sdk/crypto/types/multisig\ngithub.com/cosmos/cosmos-sdk/crypto/xsalsa20symmetric\ngithub.com/cosmos/cosmos-sdk/internal/conv\ngithub.com/cosmos/cosmos-sdk/runtime\ngithub.com/cosmos/cosmos-sdk/runtime/services\ngithub.com/cosmos/cosmos-sdk/server\ngithub.com/cosmos/cosmos-sdk/server/api\ngithub.com/cosmos/cosmos-sdk/server/cmd\ngithub.com/cosmos/cosmos-sdk/server/config\ngithub.com/cosmos/cosmos-sdk/server/grpc\ngithub.com/cosmos/cosmos-sdk/server/grpc/gogoreflection\ngithub.com/cosmos/cosmos-sdk/server/grpc/reflection/v2alpha1\ngithub.com/cosmos/cosmos-sdk/server/log\ngithub.com/cosmos/cosmos-sdk/server/types\ngithub.com/cosmos/cosmos-sdk/std\ngithub.com/cosmos/cosmos-sdk/telemetry\ngithub.com/cosmos/cosmos-sdk/testutil\ngithub.com/cosmos/cosmos-sdk/testutil/mock\ngithub.com/cosmos/cosmos-sdk/testutil/sims\ngithub.com/cosmos/cosmos-sdk/testutil/testdata\ngithub.com/cosmos/cosmos-sdk/types\ngithub.com/cosmos/cosmos-sdk/types/address\ngithub.com/cosmos/cosmos-sdk/types/bech32\ngithub.com/cosmos/cosmos-sdk/types/bech32/legacybech32\ngithub.com/cosmos/cosmos-sdk/types/errors\ngithub.com/cosmos/cosmos-sdk/types/grpc\ngithub.com/cosmos/cosmos-sdk/types/kv\ngithub.com/cosmos/cosmos-sdk/types/mempool\ngithub.com/cosmos/cosmos-sdk/types/module\ngithub.com/cosmos/cosmos-sdk/types/module/testutil\ngithub.com/cosmos/cosmos-sdk/types/msgservice\ngithub.com/cosmos/cosmos-sdk/types/query\ngithub.com/cosmos/cosmos-sdk/types/registry\ngithub.com/cosmos/cosmos-sdk/types/simulation\ngithub.com/cosmos/cosmos-sdk/types/tx\ngithub.com/cosmos/cosmos-sdk/types/tx/amino\ngithub.com/cosmos/cosmos-sdk/types/tx/signing\ngithub.com/cosmos/cosmos-sdk/version\ngithub.com/cosmos/cosmos-sdk/x/auth\ngithub.com/cosmos/cosmos-sdk/x/auth/ante\ngithub.com/cosmos/cosmos-sdk/x/auth/client\ngithub.com/cosmos/cosmos-sdk/x/auth/client/cli\ngithub.com/cosmos/cosmos-sdk/x/auth/codec\ngithub.com/cosmos/cosmos-sdk/x/auth/exported\ngithub.com/cosmos/cosmos-sdk/x/auth/keeper\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v5\ngithub.com/cosmos/cosmos-sdk/x/auth/posthandler\ngithub.com/cosmos/cosmos-sdk/x/auth/signing\ngithub.com/cosmos/cosmos-sdk/x/auth/simulation\ngithub.com/cosmos/cosmos-sdk/x/auth/tx\ngithub.com/cosmos/cosmos-sdk/x/auth/tx/config\ngithub.com/cosmos/cosmos-sdk/x/auth/types\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting/client/cli\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting/exported\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting/types\ngithub.com/cosmos/cosmos-sdk/x/authz\ngithub.com/cosmos/cosmos-sdk/x/authz/client/cli\ngithub.com/cosmos/cosmos-sdk/x/authz/keeper\ngithub.com/cosmos/cosmos-sdk/x/authz/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/authz/module\ngithub.com/cosmos/cosmos-sdk/x/authz/simulation\ngithub.com/cosmos/cosmos-sdk/x/bank\ngithub.com/cosmos/cosmos-sdk/x/bank/client/cli\ngithub.com/cosmos/cosmos-sdk/x/bank/exported\ngithub.com/cosmos/cosmos-sdk/x/bank/keeper\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/bank/simulation\ngithub.com/cosmos/cosmos-sdk/x/bank/types\ngithub.com/cosmos/cosmos-sdk/x/consensus\ngithub.com/cosmos/cosmos-sdk/x/consensus/exported\ngithub.com/cosmos/cosmos-sdk/x/consensus/keeper\ngithub.com/cosmos/cosmos-sdk/x/consensus/types\ngithub.com/cosmos/cosmos-sdk/x/crisis\ngithub.com/cosmos/cosmos-sdk/x/crisis/exported\ngithub.com/cosmos/cosmos-sdk/x/crisis/keeper\ngithub.com/cosmos/cosmos-sdk/x/crisis/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/crisis/types\ngithub.com/cosmos/cosmos-sdk/x/distribution\ngithub.com/cosmos/cosmos-sdk/x/distribution/client/cli\ngithub.com/cosmos/cosmos-sdk/x/distribution/exported\ngithub.com/cosmos/cosmos-sdk/x/distribution/keeper\ngithub.com/cosmos/cosmos-sdk/x/distribution/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/distribution/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/distribution/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/distribution/simulation\ngithub.com/cosmos/cosmos-sdk/x/distribution/types\ngithub.com/cosmos/cosmos-sdk/x/genutil\ngithub.com/cosmos/cosmos-sdk/x/genutil/client/cli\ngithub.com/cosmos/cosmos-sdk/x/genutil/migrations/v043\ngithub.com/cosmos/cosmos-sdk/x/genutil/migrations/v046\ngithub.com/cosmos/cosmos-sdk/x/genutil/migrations/v047\ngithub.com/cosmos/cosmos-sdk/x/genutil/types\ngithub.com/cosmos/cosmos-sdk/x/gov\ngithub.com/cosmos/cosmos-sdk/x/gov/client\ngithub.com/cosmos/cosmos-sdk/x/gov/client/cli\ngithub.com/cosmos/cosmos-sdk/x/gov/client/utils\ngithub.com/cosmos/cosmos-sdk/x/gov/exported\ngithub.com/cosmos/cosmos-sdk/x/gov/keeper\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v5\ngithub.com/cosmos/cosmos-sdk/x/gov/simulation\ngithub.com/cosmos/cosmos-sdk/x/gov/types\ngithub.com/cosmos/cosmos-sdk/x/gov/types/v1\ngithub.com/cosmos/cosmos-sdk/x/gov/types/v1beta1\ngithub.com/cosmos/cosmos-sdk/x/group\ngithub.com/cosmos/cosmos-sdk/x/group/errors\ngithub.com/cosmos/cosmos-sdk/x/group/internal/math\ngithub.com/cosmos/cosmos-sdk/x/group/internal/orm\ngithub.com/cosmos/cosmos-sdk/x/group/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/mint\ngithub.com/cosmos/cosmos-sdk/x/mint/exported\ngithub.com/cosmos/cosmos-sdk/x/mint/keeper\ngithub.com/cosmos/cosmos-sdk/x/mint/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/mint/simulation\ngithub.com/cosmos/cosmos-sdk/x/mint/types\ngithub.com/cosmos/cosmos-sdk/x/params\ngithub.com/cosmos/cosmos-sdk/x/params/client\ngithub.com/cosmos/cosmos-sdk/x/params/client/cli\ngithub.com/cosmos/cosmos-sdk/x/params/client/utils\ngithub.com/cosmos/cosmos-sdk/x/params/keeper\ngithub.com/cosmos/cosmos-sdk/x/params/types\ngithub.com/cosmos/cosmos-sdk/x/params/types/proposal\ngithub.com/cosmos/cosmos-sdk/x/simulation\ngithub.com/cosmos/cosmos-sdk/x/simulation/client/cli\ngithub.com/cosmos/cosmos-sdk/x/slashing\ngithub.com/cosmos/cosmos-sdk/x/slashing/exported\ngithub.com/cosmos/cosmos-sdk/x/slashing/keeper\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/slashing/simulation\ngithub.com/cosmos/cosmos-sdk/x/slashing/types\ngithub.com/cosmos/cosmos-sdk/x/staking\ngithub.com/cosmos/cosmos-sdk/x/staking/client/cli\ngithub.com/cosmos/cosmos-sdk/x/staking/exported\ngithub.com/cosmos/cosmos-sdk/x/staking/keeper\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v5\ngithub.com/cosmos/cosmos-sdk/x/staking/simulation\ngithub.com/cosmos/cosmos-sdk/x/staking/types\n# github.com/cosmos/go-bip39 v1.0.0\n## explicit; go 1.15\ngithub.com/cosmos/go-bip39\n# github.com/cosmos/gogogateway v1.2.0\n## explicit; go 1.12\ngithub.com/cosmos/gogogateway\n# github.com/cosmos/gogoproto v1.7.0\n## explicit; go 1.19\ngithub.com/cosmos/gogoproto/gogoproto\ngithub.com/cosmos/gogoproto/grpc\ngithub.com/cosmos/gogoproto/io\ngithub.com/cosmos/gogoproto/jsonpb\ngithub.com/cosmos/gogoproto/proto\ngithub.com/cosmos/gogoproto/protoc-gen-gogo/descriptor\ngithub.com/cosmos/gogoproto/sortkeys\ngithub.com/cosmos/gogoproto/types\ngithub.com/cosmos/gogoproto/types/any\ngithub.com/cosmos/gogoproto/types/any/internal\n# github.com/cosmos/iavl v1.2.0\n## explicit; go 1.20\ngithub.com/cosmos/iavl\ngithub.com/cosmos/iavl/cache\ngithub.com/cosmos/iavl/db\ngithub.com/cosmos/iavl/fastnode\ngithub.com/cosmos/iavl/internal/bytes\ngithub.com/cosmos/iavl/internal/color\ngithub.com/cosmos/iavl/internal/encoding\ngithub.com/cosmos/iavl/keyformat\ngithub.com/cosmos/iavl/proto\n# github.com/cosmos/ibc-go/modules/capability v1.0.1\n## explicit; go 1.21\ngithub.com/cosmos/ibc-go/modules/capability\ngithub.com/cosmos/ibc-go/modules/capability/keeper\ngithub.com/cosmos/ibc-go/modules/capability/simulation\ngithub.com/cosmos/ibc-go/modules/capability/types\n# github.com/cosmos/ibc-go/v8 v8.5.1\n## explicit; go 1.21\ngithub.com/cosmos/ibc-go/v8/modules/apps/transfer\ngithub.com/cosmos/ibc-go/v8/modules/apps/transfer/client/cli\ngithub.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper\ngithub.com/cosmos/ibc-go/v8/modules/apps/transfer/simulation\ngithub.com/cosmos/ibc-go/v8/modules/apps/transfer/types\ngithub.com/cosmos/ibc-go/v8/modules/core\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/client/cli\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/client/utils\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/keeper\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/migrations/v7\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/simulation\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/types\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection/client/cli\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection/client/utils\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection/keeper\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection/migrations/v7\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection/simulation\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection/types\ngithub.com/cosmos/ibc-go/v8/modules/core/04-channel\ngithub.com/cosmos/ibc-go/v8/modules/core/04-channel/client/cli\ngithub.com/cosmos/ibc-go/v8/modules/core/04-channel/client/utils\ngithub.com/cosmos/ibc-go/v8/modules/core/04-channel/keeper\ngithub.com/cosmos/ibc-go/v8/modules/core/04-channel/simulation\ngithub.com/cosmos/ibc-go/v8/modules/core/04-channel/types\ngithub.com/cosmos/ibc-go/v8/modules/core/05-port/keeper\ngithub.com/cosmos/ibc-go/v8/modules/core/05-port/types\ngithub.com/cosmos/ibc-go/v8/modules/core/23-commitment/types\ngithub.com/cosmos/ibc-go/v8/modules/core/24-host\ngithub.com/cosmos/ibc-go/v8/modules/core/ante\ngithub.com/cosmos/ibc-go/v8/modules/core/client\ngithub.com/cosmos/ibc-go/v8/modules/core/client/cli\ngithub.com/cosmos/ibc-go/v8/modules/core/errors\ngithub.com/cosmos/ibc-go/v8/modules/core/exported\ngithub.com/cosmos/ibc-go/v8/modules/core/keeper\ngithub.com/cosmos/ibc-go/v8/modules/core/simulation\ngithub.com/cosmos/ibc-go/v8/modules/core/types\ngithub.com/cosmos/ibc-go/v8/modules/light-clients/06-solomachine\ngithub.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint\ngithub.com/cosmos/ibc-go/v8/modules/light-clients/09-localhost\n# github.com/cosmos/ics23/go v0.11.0\n## explicit; go 1.21\ngithub.com/cosmos/ics23/go\n# github.com/cosmos/ledger-cosmos-go v0.13.3\n## explicit; go 1.18\ngithub.com/cosmos/ledger-cosmos-go\n# github.com/cosmos/rosetta v0.50.3-1\n## explicit; go 1.21\ngithub.com/cosmos/rosetta\ngithub.com/cosmos/rosetta/cmd\ngithub.com/cosmos/rosetta/lib/errors\ngithub.com/cosmos/rosetta/lib/internal/service\ngithub.com/cosmos/rosetta/lib/server\ngithub.com/cosmos/rosetta/lib/types\n# github.com/cosmos/rosetta-sdk-go v0.10.0\n## explicit; go 1.18\ngithub.com/cosmos/rosetta-sdk-go/asserter\ngithub.com/cosmos/rosetta-sdk-go/errors\ngithub.com/cosmos/rosetta-sdk-go/server\n# github.com/creachadair/atomicfile v0.3.1\n## explicit; go 1.19\ngithub.com/creachadair/atomicfile\n# github.com/creachadair/tomledit v0.0.24\n## explicit; go 1.18\ngithub.com/creachadair/tomledit\ngithub.com/creachadair/tomledit/parser\ngithub.com/creachadair/tomledit/scanner\ngithub.com/creachadair/tomledit/transform\n# github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716\n## explicit; go 1.21\ngithub.com/crypto-org-chain/go-block-stm\n# github.com/danieljoos/wincred v1.2.0\n## explicit; go 1.18\ngithub.com/danieljoos/wincred\n# github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc\n## explicit\ngithub.com/davecgh/go-spew/spew\n# github.com/deckarep/golang-set/v2 v2.1.0\n## explicit; go 1.18\ngithub.com/deckarep/golang-set/v2\n# github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0\n## explicit; go 1.17\ngithub.com/decred/dcrd/dcrec/secp256k1/v4\ngithub.com/decred/dcrd/dcrec/secp256k1/v4/ecdsa\n# github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f\n## explicit\ngithub.com/desertbit/timer\n# github.com/dgraph-io/badger/v4 v4.3.0\n## explicit; go 1.19\ngithub.com/dgraph-io/badger/v4\ngithub.com/dgraph-io/badger/v4/fb\ngithub.com/dgraph-io/badger/v4/options\ngithub.com/dgraph-io/badger/v4/pb\ngithub.com/dgraph-io/badger/v4/skl\ngithub.com/dgraph-io/badger/v4/table\ngithub.com/dgraph-io/badger/v4/trie\ngithub.com/dgraph-io/badger/v4/y\n# github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91\n## explicit; go 1.19\ngithub.com/dgraph-io/ristretto\ngithub.com/dgraph-io/ristretto/z\ngithub.com/dgraph-io/ristretto/z/simd\n# github.com/dlclark/regexp2 v1.7.0\n## explicit; go 1.13\ngithub.com/dlclark/regexp2\ngithub.com/dlclark/regexp2/syntax\n# github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7\n## explicit; go 1.16\ngithub.com/dop251/goja\ngithub.com/dop251/goja/ast\ngithub.com/dop251/goja/file\ngithub.com/dop251/goja/ftoa\ngithub.com/dop251/goja/ftoa/internal/fast\ngithub.com/dop251/goja/parser\ngithub.com/dop251/goja/token\ngithub.com/dop251/goja/unistring\n# github.com/dustin/go-humanize v1.0.1\n## explicit; go 1.16\ngithub.com/dustin/go-humanize\n# github.com/dvsekhvalnov/jose2go v1.6.0\n## explicit; go 1.15\ngithub.com/dvsekhvalnov/jose2go\ngithub.com/dvsekhvalnov/jose2go/aes\ngithub.com/dvsekhvalnov/jose2go/arrays\ngithub.com/dvsekhvalnov/jose2go/base64url\ngithub.com/dvsekhvalnov/jose2go/compact\ngithub.com/dvsekhvalnov/jose2go/kdf\ngithub.com/dvsekhvalnov/jose2go/keys/ecc\ngithub.com/dvsekhvalnov/jose2go/padding\n# github.com/edsrzf/mmap-go v1.0.0\n## explicit\ngithub.com/edsrzf/mmap-go\n# github.com/emicklei/dot v1.6.1\n## explicit; go 1.13\ngithub.com/emicklei/dot\n# github.com/ethereum/go-ethereum v1.10.26 => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183\n## explicit; go 1.19\ngithub.com/ethereum/go-ethereum\ngithub.com/ethereum/go-ethereum/accounts\ngithub.com/ethereum/go-ethereum/accounts/abi\ngithub.com/ethereum/go-ethereum/accounts/keystore\ngithub.com/ethereum/go-ethereum/accounts/scwallet\ngithub.com/ethereum/go-ethereum/common\ngithub.com/ethereum/go-ethereum/common/bitutil\ngithub.com/ethereum/go-ethereum/common/hexutil\ngithub.com/ethereum/go-ethereum/common/lru\ngithub.com/ethereum/go-ethereum/common/math\ngithub.com/ethereum/go-ethereum/common/mclock\ngithub.com/ethereum/go-ethereum/common/prque\ngithub.com/ethereum/go-ethereum/consensus\ngithub.com/ethereum/go-ethereum/consensus/ethash\ngithub.com/ethereum/go-ethereum/consensus/misc\ngithub.com/ethereum/go-ethereum/core\ngithub.com/ethereum/go-ethereum/core/bloombits\ngithub.com/ethereum/go-ethereum/core/rawdb\ngithub.com/ethereum/go-ethereum/core/state\ngithub.com/ethereum/go-ethereum/core/state/snapshot\ngithub.com/ethereum/go-ethereum/core/types\ngithub.com/ethereum/go-ethereum/core/vm\ngithub.com/ethereum/go-ethereum/crypto\ngithub.com/ethereum/go-ethereum/crypto/blake2b\ngithub.com/ethereum/go-ethereum/crypto/bls12381\ngithub.com/ethereum/go-ethereum/crypto/bn256\ngithub.com/ethereum/go-ethereum/crypto/bn256/cloudflare\ngithub.com/ethereum/go-ethereum/crypto/bn256/google\ngithub.com/ethereum/go-ethereum/crypto/ecies\ngithub.com/ethereum/go-ethereum/crypto/secp256k1\ngithub.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/include\ngithub.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src\ngithub.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/modules/recovery\ngithub.com/ethereum/go-ethereum/eth/filters\ngithub.com/ethereum/go-ethereum/eth/tracers\ngithub.com/ethereum/go-ethereum/eth/tracers/js\ngithub.com/ethereum/go-ethereum/eth/tracers/js/internal/tracers\ngithub.com/ethereum/go-ethereum/eth/tracers/logger\ngithub.com/ethereum/go-ethereum/eth/tracers/native\ngithub.com/ethereum/go-ethereum/ethclient\ngithub.com/ethereum/go-ethereum/ethdb\ngithub.com/ethereum/go-ethereum/ethdb/leveldb\ngithub.com/ethereum/go-ethereum/ethdb/memorydb\ngithub.com/ethereum/go-ethereum/ethdb/pebble\ngithub.com/ethereum/go-ethereum/event\ngithub.com/ethereum/go-ethereum/internal/ethapi\ngithub.com/ethereum/go-ethereum/internal/syncx\ngithub.com/ethereum/go-ethereum/internal/version\ngithub.com/ethereum/go-ethereum/log\ngithub.com/ethereum/go-ethereum/metrics\ngithub.com/ethereum/go-ethereum/metrics/exp\ngithub.com/ethereum/go-ethereum/metrics/prometheus\ngithub.com/ethereum/go-ethereum/p2p\ngithub.com/ethereum/go-ethereum/p2p/discover\ngithub.com/ethereum/go-ethereum/p2p/discover/v4wire\ngithub.com/ethereum/go-ethereum/p2p/discover/v5wire\ngithub.com/ethereum/go-ethereum/p2p/enode\ngithub.com/ethereum/go-ethereum/p2p/enr\ngithub.com/ethereum/go-ethereum/p2p/nat\ngithub.com/ethereum/go-ethereum/p2p/netutil\ngithub.com/ethereum/go-ethereum/p2p/rlpx\ngithub.com/ethereum/go-ethereum/params\ngithub.com/ethereum/go-ethereum/rlp\ngithub.com/ethereum/go-ethereum/rlp/internal/rlpstruct\ngithub.com/ethereum/go-ethereum/rpc\ngithub.com/ethereum/go-ethereum/signer/core/apitypes\ngithub.com/ethereum/go-ethereum/trie\n# github.com/fatih/color v1.16.0\n## explicit; go 1.17\ngithub.com/fatih/color\n# github.com/felixge/httpsnoop v1.0.4\n## explicit; go 1.13\ngithub.com/felixge/httpsnoop\n# github.com/fsnotify/fsnotify v1.7.0\n## explicit; go 1.17\ngithub.com/fsnotify/fsnotify\n# github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff\n## explicit\ngithub.com/gballet/go-libpcsclite\n# github.com/getsentry/sentry-go v0.27.0\n## explicit; go 1.18\ngithub.com/getsentry/sentry-go\ngithub.com/getsentry/sentry-go/internal/debug\ngithub.com/getsentry/sentry-go/internal/otel/baggage\ngithub.com/getsentry/sentry-go/internal/otel/baggage/internal/baggage\ngithub.com/getsentry/sentry-go/internal/ratelimit\ngithub.com/getsentry/sentry-go/internal/traceparser\n# github.com/go-kit/kit v0.13.0\n## explicit; go 1.17\ngithub.com/go-kit/kit/metrics\ngithub.com/go-kit/kit/metrics/discard\ngithub.com/go-kit/kit/metrics/internal/lv\ngithub.com/go-kit/kit/metrics/prometheus\n# github.com/go-kit/log v0.2.1\n## explicit; go 1.17\ngithub.com/go-kit/log\ngithub.com/go-kit/log/level\ngithub.com/go-kit/log/term\n# github.com/go-logfmt/logfmt v0.6.0\n## explicit; go 1.17\ngithub.com/go-logfmt/logfmt\n# github.com/go-logr/logr v1.4.1\n## explicit; go 1.18\ngithub.com/go-logr/logr\ngithub.com/go-logr/logr/funcr\n# github.com/go-logr/stdr v1.2.2\n## explicit; go 1.16\ngithub.com/go-logr/stdr\n# github.com/go-ole/go-ole v1.2.6\n## explicit; go 1.12\ngithub.com/go-ole/go-ole\ngithub.com/go-ole/go-ole/oleutil\n# github.com/go-sourcemap/sourcemap v2.1.3+incompatible\n## explicit\ngithub.com/go-sourcemap/sourcemap\ngithub.com/go-sourcemap/sourcemap/internal/base64vlq\n# github.com/go-stack/stack v1.8.1\n## explicit; go 1.17\ngithub.com/go-stack/stack\n# github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2\n## explicit; go 1.12\ngithub.com/godbus/dbus\n# github.com/gofrs/flock v0.8.1\n## explicit\ngithub.com/gofrs/flock\n# github.com/gogo/googleapis v1.4.1\n## explicit; go 1.12\ngithub.com/gogo/googleapis/google/api\n# github.com/gogo/protobuf v1.3.2\n## explicit; go 1.15\ngithub.com/gogo/protobuf/gogoproto\ngithub.com/gogo/protobuf/proto\ngithub.com/gogo/protobuf/protoc-gen-gogo/descriptor\ngithub.com/gogo/protobuf/sortkeys\ngithub.com/gogo/protobuf/types\n# github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da\n## explicit\ngithub.com/golang/groupcache/lru\n# github.com/golang/mock v1.6.0\n## explicit; go 1.11\ngithub.com/golang/mock/gomock\n# github.com/golang/protobuf v1.5.4\n## explicit; go 1.17\ngithub.com/golang/protobuf/descriptor\ngithub.com/golang/protobuf/jsonpb\ngithub.com/golang/protobuf/proto\ngithub.com/golang/protobuf/protoc-gen-go/descriptor\ngithub.com/golang/protobuf/ptypes/any\ngithub.com/golang/protobuf/ptypes/duration\ngithub.com/golang/protobuf/ptypes/empty\ngithub.com/golang/protobuf/ptypes/timestamp\ngithub.com/golang/protobuf/ptypes/wrappers\n# github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb\n## explicit\ngithub.com/golang/snappy\n# github.com/google/btree v1.1.3\n## explicit; go 1.18\ngithub.com/google/btree\n# github.com/google/flatbuffers v1.12.1\n## explicit\ngithub.com/google/flatbuffers/go\n# github.com/google/go-cmp v0.6.0\n## explicit; go 1.13\ngithub.com/google/go-cmp/cmp\ngithub.com/google/go-cmp/cmp/cmpopts\ngithub.com/google/go-cmp/cmp/internal/diff\ngithub.com/google/go-cmp/cmp/internal/flags\ngithub.com/google/go-cmp/cmp/internal/function\ngithub.com/google/go-cmp/cmp/internal/value\n# github.com/google/orderedcode v0.0.1\n## explicit\ngithub.com/google/orderedcode\n# github.com/google/s2a-go v0.1.7\n## explicit; go 1.19\ngithub.com/google/s2a-go\ngithub.com/google/s2a-go/fallback\ngithub.com/google/s2a-go/internal/authinfo\ngithub.com/google/s2a-go/internal/handshaker\ngithub.com/google/s2a-go/internal/handshaker/service\ngithub.com/google/s2a-go/internal/proto/common_go_proto\ngithub.com/google/s2a-go/internal/proto/s2a_context_go_proto\ngithub.com/google/s2a-go/internal/proto/s2a_go_proto\ngithub.com/google/s2a-go/internal/proto/v2/common_go_proto\ngithub.com/google/s2a-go/internal/proto/v2/s2a_context_go_proto\ngithub.com/google/s2a-go/internal/proto/v2/s2a_go_proto\ngithub.com/google/s2a-go/internal/record\ngithub.com/google/s2a-go/internal/record/internal/aeadcrypter\ngithub.com/google/s2a-go/internal/record/internal/halfconn\ngithub.com/google/s2a-go/internal/tokenmanager\ngithub.com/google/s2a-go/internal/v2\ngithub.com/google/s2a-go/internal/v2/certverifier\ngithub.com/google/s2a-go/internal/v2/remotesigner\ngithub.com/google/s2a-go/internal/v2/tlsconfigstore\ngithub.com/google/s2a-go/retry\ngithub.com/google/s2a-go/stream\n# github.com/google/uuid v1.6.0\n## explicit\ngithub.com/google/uuid\n# github.com/googleapis/enterprise-certificate-proxy v0.3.2\n## explicit; go 1.19\ngithub.com/googleapis/enterprise-certificate-proxy/client\ngithub.com/googleapis/enterprise-certificate-proxy/client/util\n# github.com/googleapis/gax-go/v2 v2.12.5\n## explicit; go 1.20\ngithub.com/googleapis/gax-go/v2\ngithub.com/googleapis/gax-go/v2/apierror\ngithub.com/googleapis/gax-go/v2/apierror/internal/proto\ngithub.com/googleapis/gax-go/v2/callctx\ngithub.com/googleapis/gax-go/v2/internal\n# github.com/gorilla/handlers v1.5.2\n## explicit; go 1.20\ngithub.com/gorilla/handlers\n# github.com/gorilla/mux v1.8.1\n## explicit; go 1.20\ngithub.com/gorilla/mux\n# github.com/gorilla/websocket v1.5.3\n## explicit; go 1.12\ngithub.com/gorilla/websocket\n# github.com/grpc-ecosystem/go-grpc-middleware v1.4.0\n## explicit; go 1.14\ngithub.com/grpc-ecosystem/go-grpc-middleware\ngithub.com/grpc-ecosystem/go-grpc-middleware/recovery\n# github.com/grpc-ecosystem/grpc-gateway v1.16.0\n## explicit; go 1.14\ngithub.com/grpc-ecosystem/grpc-gateway/internal\ngithub.com/grpc-ecosystem/grpc-gateway/runtime\ngithub.com/grpc-ecosystem/grpc-gateway/utilities\n# github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c\n## explicit\ngithub.com/gsterjov/go-libsecret\n# github.com/hashicorp/go-cleanhttp v0.5.2\n## explicit; go 1.13\ngithub.com/hashicorp/go-cleanhttp\n# github.com/hashicorp/go-getter v1.7.4\n## explicit; go 1.13\ngithub.com/hashicorp/go-getter\ngithub.com/hashicorp/go-getter/helper/url\n# github.com/hashicorp/go-hclog v1.5.0\n## explicit; go 1.13\ngithub.com/hashicorp/go-hclog\n# github.com/hashicorp/go-immutable-radix v1.3.1\n## explicit\ngithub.com/hashicorp/go-immutable-radix\n# github.com/hashicorp/go-metrics v0.5.3\n## explicit; go 1.12\ngithub.com/hashicorp/go-metrics\ngithub.com/hashicorp/go-metrics/datadog\ngithub.com/hashicorp/go-metrics/prometheus\n# github.com/hashicorp/go-plugin v1.6.0\n## explicit; go 1.17\ngithub.com/hashicorp/go-plugin\ngithub.com/hashicorp/go-plugin/internal/cmdrunner\ngithub.com/hashicorp/go-plugin/internal/grpcmux\ngithub.com/hashicorp/go-plugin/internal/plugin\ngithub.com/hashicorp/go-plugin/runner\n# github.com/hashicorp/go-safetemp v1.0.0\n## explicit\ngithub.com/hashicorp/go-safetemp\n# github.com/hashicorp/go-version v1.6.0\n## explicit\ngithub.com/hashicorp/go-version\n# github.com/hashicorp/golang-lru v1.0.2\n## explicit; go 1.12\ngithub.com/hashicorp/golang-lru\ngithub.com/hashicorp/golang-lru/simplelru\n# github.com/hashicorp/golang-lru/v2 v2.0.7\n## explicit; go 1.18\ngithub.com/hashicorp/golang-lru/v2\ngithub.com/hashicorp/golang-lru/v2/internal\ngithub.com/hashicorp/golang-lru/v2/simplelru\n# github.com/hashicorp/hcl v1.0.0\n## explicit\ngithub.com/hashicorp/hcl\ngithub.com/hashicorp/hcl/hcl/ast\ngithub.com/hashicorp/hcl/hcl/parser\ngithub.com/hashicorp/hcl/hcl/printer\ngithub.com/hashicorp/hcl/hcl/scanner\ngithub.com/hashicorp/hcl/hcl/strconv\ngithub.com/hashicorp/hcl/hcl/token\ngithub.com/hashicorp/hcl/json/parser\ngithub.com/hashicorp/hcl/json/scanner\ngithub.com/hashicorp/hcl/json/token\n# github.com/hashicorp/yamux v0.1.1\n## explicit; go 1.15\ngithub.com/hashicorp/yamux\n# github.com/hdevalence/ed25519consensus v0.2.0\n## explicit; go 1.19\ngithub.com/hdevalence/ed25519consensus\n# github.com/holiman/bloomfilter/v2 v2.0.3\n## explicit; go 1.15\ngithub.com/holiman/bloomfilter/v2\n# github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c\n## explicit; go 1.18\ngithub.com/holiman/uint256\n# github.com/huandu/skiplist v1.2.0\n## explicit; go 1.12\ngithub.com/huandu/skiplist\n# github.com/huin/goupnp v1.0.3\n## explicit; go 1.14\ngithub.com/huin/goupnp\ngithub.com/huin/goupnp/dcps/internetgateway1\ngithub.com/huin/goupnp/dcps/internetgateway2\ngithub.com/huin/goupnp/httpu\ngithub.com/huin/goupnp/scpd\ngithub.com/huin/goupnp/soap\ngithub.com/huin/goupnp/ssdp\n# github.com/iancoleman/strcase v0.3.0\n## explicit; go 1.16\ngithub.com/iancoleman/strcase\n# github.com/improbable-eng/grpc-web v0.15.0\n## explicit; go 1.16\ngithub.com/improbable-eng/grpc-web/go/grpcweb\n# github.com/inconshreveable/mousetrap v1.1.0\n## explicit; go 1.18\ngithub.com/inconshreveable/mousetrap\n# github.com/jackpal/go-nat-pmp v1.0.2\n## explicit\ngithub.com/jackpal/go-nat-pmp\n# github.com/jmespath/go-jmespath v0.4.0\n## explicit; go 1.14\ngithub.com/jmespath/go-jmespath\n# github.com/jmhodges/levigo v1.0.0\n## explicit\ngithub.com/jmhodges/levigo\n# github.com/klauspost/compress v1.17.9\n## explicit; go 1.20\ngithub.com/klauspost/compress\ngithub.com/klauspost/compress/fse\ngithub.com/klauspost/compress/huff0\ngithub.com/klauspost/compress/internal/cpuinfo\ngithub.com/klauspost/compress/internal/race\ngithub.com/klauspost/compress/internal/snapref\ngithub.com/klauspost/compress/s2\ngithub.com/klauspost/compress/snappy\ngithub.com/klauspost/compress/zstd\ngithub.com/klauspost/compress/zstd/internal/xxhash\n# github.com/kr/pretty v0.3.1\n## explicit; go 1.12\ngithub.com/kr/pretty\n# github.com/kr/text v0.2.0\n## explicit\ngithub.com/kr/text\n# github.com/lib/pq v1.10.9\n## explicit; go 1.13\ngithub.com/lib/pq\ngithub.com/lib/pq/oid\ngithub.com/lib/pq/scram\n# github.com/linxGnu/grocksdb v1.9.3\n## explicit; go 1.17\ngithub.com/linxGnu/grocksdb\n# github.com/magiconair/properties v1.8.7\n## explicit; go 1.19\ngithub.com/magiconair/properties\n# github.com/manifoldco/promptui v0.9.0\n## explicit; go 1.12\ngithub.com/manifoldco/promptui\ngithub.com/manifoldco/promptui/list\ngithub.com/manifoldco/promptui/screenbuf\n# github.com/mattn/go-colorable v0.1.13\n## explicit; go 1.15\ngithub.com/mattn/go-colorable\n# github.com/mattn/go-isatty v0.0.20\n## explicit; go 1.15\ngithub.com/mattn/go-isatty\n# github.com/mattn/go-runewidth v0.0.9\n## explicit; go 1.9\ngithub.com/mattn/go-runewidth\n# github.com/minio/highwayhash v1.0.3\n## explicit; go 1.15\ngithub.com/minio/highwayhash\n# github.com/mitchellh/go-homedir v1.1.0\n## explicit\ngithub.com/mitchellh/go-homedir\n# github.com/mitchellh/go-testing-interface v1.14.1\n## explicit; go 1.14\ngithub.com/mitchellh/go-testing-interface\n# github.com/mitchellh/mapstructure v1.5.0\n## explicit; go 1.14\ngithub.com/mitchellh/mapstructure\n# github.com/mtibben/percent v0.2.1\n## explicit; go 1.14\ngithub.com/mtibben/percent\n# github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822\n## explicit\ngithub.com/munnerz/goautoneg\n# github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a\n## explicit; go 1.17\ngithub.com/oasisprotocol/curve25519-voi/curve\ngithub.com/oasisprotocol/curve25519-voi/curve/scalar\ngithub.com/oasisprotocol/curve25519-voi/internal/disalloweq\ngithub.com/oasisprotocol/curve25519-voi/internal/field\ngithub.com/oasisprotocol/curve25519-voi/internal/lattice\ngithub.com/oasisprotocol/curve25519-voi/internal/scalar128\ngithub.com/oasisprotocol/curve25519-voi/internal/strobe\ngithub.com/oasisprotocol/curve25519-voi/internal/subtle\ngithub.com/oasisprotocol/curve25519-voi/internal/toolchain\ngithub.com/oasisprotocol/curve25519-voi/internal/zeroreader\ngithub.com/oasisprotocol/curve25519-voi/primitives/ed25519\ngithub.com/oasisprotocol/curve25519-voi/primitives/ed25519/extra/cache\ngithub.com/oasisprotocol/curve25519-voi/primitives/merlin\ngithub.com/oasisprotocol/curve25519-voi/primitives/sr25519\n# github.com/oklog/run v1.1.0\n## explicit; go 1.13\ngithub.com/oklog/run\n# github.com/olekukonko/tablewriter v0.0.5\n## explicit; go 1.12\ngithub.com/olekukonko/tablewriter\n# github.com/onsi/ginkgo/v2 v2.7.0\n## explicit; go 1.18\ngithub.com/onsi/ginkgo/v2\ngithub.com/onsi/ginkgo/v2/config\ngithub.com/onsi/ginkgo/v2/formatter\ngithub.com/onsi/ginkgo/v2/internal\ngithub.com/onsi/ginkgo/v2/internal/global\ngithub.com/onsi/ginkgo/v2/internal/interrupt_handler\ngithub.com/onsi/ginkgo/v2/internal/parallel_support\ngithub.com/onsi/ginkgo/v2/internal/testingtproxy\ngithub.com/onsi/ginkgo/v2/reporters\ngithub.com/onsi/ginkgo/v2/types\n# github.com/onsi/gomega v1.26.0\n## explicit; go 1.18\ngithub.com/onsi/gomega\ngithub.com/onsi/gomega/format\ngithub.com/onsi/gomega/internal\ngithub.com/onsi/gomega/internal/gutil\ngithub.com/onsi/gomega/matchers\ngithub.com/onsi/gomega/matchers/support/goraph/bipartitegraph\ngithub.com/onsi/gomega/matchers/support/goraph/edge\ngithub.com/onsi/gomega/matchers/support/goraph/node\ngithub.com/onsi/gomega/matchers/support/goraph/util\ngithub.com/onsi/gomega/types\n# github.com/pelletier/go-toml/v2 v2.2.2\n## explicit; go 1.16\ngithub.com/pelletier/go-toml/v2\ngithub.com/pelletier/go-toml/v2/internal/characters\ngithub.com/pelletier/go-toml/v2/internal/danger\ngithub.com/pelletier/go-toml/v2/internal/tracker\ngithub.com/pelletier/go-toml/v2/unstable\n# github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7\n## explicit; go 1.17\ngithub.com/petermattis/goid\n# github.com/pkg/errors v0.9.1\n## explicit\ngithub.com/pkg/errors\n# github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2\n## explicit\ngithub.com/pmezard/go-difflib/difflib\n# github.com/prometheus/client_golang v1.20.5\n## explicit; go 1.20\ngithub.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil\ngithub.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header\ngithub.com/prometheus/client_golang/prometheus\ngithub.com/prometheus/client_golang/prometheus/internal\ngithub.com/prometheus/client_golang/prometheus/promhttp\ngithub.com/prometheus/client_golang/prometheus/push\n# github.com/prometheus/client_model v0.6.1\n## explicit; go 1.19\ngithub.com/prometheus/client_model/go\n# github.com/prometheus/common v0.60.1\n## explicit; go 1.21\ngithub.com/prometheus/common/expfmt\ngithub.com/prometheus/common/model\n# github.com/prometheus/procfs v0.15.1\n## explicit; go 1.20\ngithub.com/prometheus/procfs\ngithub.com/prometheus/procfs/internal/fs\ngithub.com/prometheus/procfs/internal/util\n# github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475\n## explicit\ngithub.com/rcrowley/go-metrics\n# github.com/rogpeppe/go-internal v1.12.0\n## explicit; go 1.20\ngithub.com/rogpeppe/go-internal/fmtsort\n# github.com/rs/cors v1.11.1\n## explicit; go 1.13\ngithub.com/rs/cors\ngithub.com/rs/cors/internal\n# github.com/rs/zerolog v1.33.0\n## explicit; go 1.15\ngithub.com/rs/zerolog\ngithub.com/rs/zerolog/internal/cbor\ngithub.com/rs/zerolog/internal/json\ngithub.com/rs/zerolog/pkgerrors\n# github.com/sagikazarmark/locafero v0.4.0\n## explicit; go 1.20\ngithub.com/sagikazarmark/locafero\n# github.com/sagikazarmark/slog-shim v0.1.0\n## explicit; go 1.20\ngithub.com/sagikazarmark/slog-shim\n# github.com/sasha-s/go-deadlock v0.3.5\n## explicit\ngithub.com/sasha-s/go-deadlock\n# github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible\n## explicit\ngithub.com/shirou/gopsutil/cpu\ngithub.com/shirou/gopsutil/internal/common\n# github.com/sourcegraph/conc v0.3.0\n## explicit; go 1.19\ngithub.com/sourcegraph/conc\ngithub.com/sourcegraph/conc/internal/multierror\ngithub.com/sourcegraph/conc/iter\ngithub.com/sourcegraph/conc/panics\n# github.com/spf13/afero v1.11.0\n## explicit; go 1.19\ngithub.com/spf13/afero\ngithub.com/spf13/afero/internal/common\ngithub.com/spf13/afero/mem\n# github.com/spf13/cast v1.6.0\n## explicit; go 1.19\ngithub.com/spf13/cast\n# github.com/spf13/cobra v1.8.1\n## explicit; go 1.15\ngithub.com/spf13/cobra\n# github.com/spf13/pflag v1.0.5\n## explicit; go 1.12\ngithub.com/spf13/pflag\n# github.com/spf13/viper v1.19.0\n## explicit; go 1.20\ngithub.com/spf13/viper\ngithub.com/spf13/viper/internal/encoding\ngithub.com/spf13/viper/internal/encoding/dotenv\ngithub.com/spf13/viper/internal/encoding/hcl\ngithub.com/spf13/viper/internal/encoding/ini\ngithub.com/spf13/viper/internal/encoding/javaproperties\ngithub.com/spf13/viper/internal/encoding/json\ngithub.com/spf13/viper/internal/encoding/toml\ngithub.com/spf13/viper/internal/encoding/yaml\ngithub.com/spf13/viper/internal/features\n# github.com/status-im/keycard-go v0.2.0\n## explicit; go 1.17\ngithub.com/status-im/keycard-go/derivationpath\ngithub.com/status-im/keycard-go/hexutils\n# github.com/stretchr/objx v0.5.2\n## explicit; go 1.20\ngithub.com/stretchr/objx\n# github.com/stretchr/testify v1.9.0\n## explicit; go 1.17\ngithub.com/stretchr/testify/assert\ngithub.com/stretchr/testify/mock\ngithub.com/stretchr/testify/require\ngithub.com/stretchr/testify/suite\n# github.com/subosito/gotenv v1.6.0\n## explicit; go 1.18\ngithub.com/subosito/gotenv\n# github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7\n## explicit; go 1.14\ngithub.com/syndtr/goleveldb/leveldb\ngithub.com/syndtr/goleveldb/leveldb/cache\ngithub.com/syndtr/goleveldb/leveldb/comparer\ngithub.com/syndtr/goleveldb/leveldb/errors\ngithub.com/syndtr/goleveldb/leveldb/filter\ngithub.com/syndtr/goleveldb/leveldb/iterator\ngithub.com/syndtr/goleveldb/leveldb/journal\ngithub.com/syndtr/goleveldb/leveldb/memdb\ngithub.com/syndtr/goleveldb/leveldb/opt\ngithub.com/syndtr/goleveldb/leveldb/storage\ngithub.com/syndtr/goleveldb/leveldb/table\ngithub.com/syndtr/goleveldb/leveldb/util\n# github.com/tendermint/go-amino v0.16.0\n## explicit; go 1.12\ngithub.com/tendermint/go-amino\n# github.com/tidwall/btree v1.7.0 => github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c\n## explicit; go 1.19\ngithub.com/tidwall/btree\n# github.com/tidwall/gjson v1.14.4\n## explicit; go 1.12\ngithub.com/tidwall/gjson\n# github.com/tidwall/match v1.1.1\n## explicit; go 1.15\ngithub.com/tidwall/match\n# github.com/tidwall/pretty v1.2.0\n## explicit; go 1.16\ngithub.com/tidwall/pretty\n# github.com/tidwall/sjson v1.2.5\n## explicit; go 1.14\ngithub.com/tidwall/sjson\n# github.com/tklauser/go-sysconf v0.3.10\n## explicit; go 1.13\ngithub.com/tklauser/go-sysconf\n# github.com/tklauser/numcpus v0.4.0\n## explicit; go 1.11\ngithub.com/tklauser/numcpus\n# github.com/tyler-smith/go-bip39 v1.1.0\n## explicit; go 1.14\ngithub.com/tyler-smith/go-bip39\ngithub.com/tyler-smith/go-bip39/wordlists\n# github.com/ulikunitz/xz v0.5.11\n## explicit; go 1.12\ngithub.com/ulikunitz/xz\ngithub.com/ulikunitz/xz/internal/hash\ngithub.com/ulikunitz/xz/internal/xlog\ngithub.com/ulikunitz/xz/lzma\n# github.com/zondax/hid v0.9.2\n## explicit\ngithub.com/zondax/hid\n# github.com/zondax/ledger-go v0.14.3\n## explicit; go 1.18\ngithub.com/zondax/ledger-go\n# go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5\n## explicit; go 1.22\ngo.etcd.io/bbolt\ngo.etcd.io/bbolt/errors\ngo.etcd.io/bbolt/internal/common\n# go.opencensus.io v0.24.0\n## explicit; go 1.13\ngo.opencensus.io\ngo.opencensus.io/internal\ngo.opencensus.io/internal/tagencoding\ngo.opencensus.io/metric/metricdata\ngo.opencensus.io/metric/metricproducer\ngo.opencensus.io/plugin/ocgrpc\ngo.opencensus.io/plugin/ochttp\ngo.opencensus.io/plugin/ochttp/propagation/b3\ngo.opencensus.io/resource\ngo.opencensus.io/stats\ngo.opencensus.io/stats/internal\ngo.opencensus.io/stats/view\ngo.opencensus.io/tag\ngo.opencensus.io/trace\ngo.opencensus.io/trace/internal\ngo.opencensus.io/trace/propagation\ngo.opencensus.io/trace/tracestate\n# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0\n## explicit; go 1.20\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal\n# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0\n## explicit; go 1.20\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil\n# go.opentelemetry.io/otel v1.24.0\n## explicit; go 1.20\ngo.opentelemetry.io/otel\ngo.opentelemetry.io/otel/attribute\ngo.opentelemetry.io/otel/baggage\ngo.opentelemetry.io/otel/codes\ngo.opentelemetry.io/otel/internal\ngo.opentelemetry.io/otel/internal/attribute\ngo.opentelemetry.io/otel/internal/baggage\ngo.opentelemetry.io/otel/internal/global\ngo.opentelemetry.io/otel/propagation\ngo.opentelemetry.io/otel/semconv/v1.17.0\ngo.opentelemetry.io/otel/semconv/v1.20.0\n# go.opentelemetry.io/otel/metric v1.24.0\n## explicit; go 1.20\ngo.opentelemetry.io/otel/metric\ngo.opentelemetry.io/otel/metric/embedded\ngo.opentelemetry.io/otel/metric/noop\n# go.opentelemetry.io/otel/trace v1.24.0\n## explicit; go 1.20\ngo.opentelemetry.io/otel/trace\ngo.opentelemetry.io/otel/trace/embedded\n# go.uber.org/multierr v1.11.0\n## explicit; go 1.19\ngo.uber.org/multierr\n# golang.org/x/crypto v0.28.0\n## explicit; go 1.20\ngolang.org/x/crypto/argon2\ngolang.org/x/crypto/bcrypt\ngolang.org/x/crypto/blake2b\ngolang.org/x/crypto/blake2s\ngolang.org/x/crypto/blowfish\ngolang.org/x/crypto/chacha20\ngolang.org/x/crypto/chacha20poly1305\ngolang.org/x/crypto/cryptobyte\ngolang.org/x/crypto/cryptobyte/asn1\ngolang.org/x/crypto/curve25519\ngolang.org/x/crypto/hkdf\ngolang.org/x/crypto/internal/alias\ngolang.org/x/crypto/internal/poly1305\ngolang.org/x/crypto/nacl/box\ngolang.org/x/crypto/nacl/secretbox\ngolang.org/x/crypto/openpgp/armor\ngolang.org/x/crypto/openpgp/errors\ngolang.org/x/crypto/pbkdf2\ngolang.org/x/crypto/ripemd160\ngolang.org/x/crypto/salsa20/salsa\ngolang.org/x/crypto/scrypt\ngolang.org/x/crypto/sha3\n# golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8\n## explicit; go 1.20\ngolang.org/x/exp/constraints\ngolang.org/x/exp/maps\ngolang.org/x/exp/rand\ngolang.org/x/exp/slices\ngolang.org/x/exp/slog\ngolang.org/x/exp/slog/internal\ngolang.org/x/exp/slog/internal/buffer\n# golang.org/x/mod v0.18.0\n## explicit; go 1.18\ngolang.org/x/mod/semver\n# golang.org/x/net v0.30.0\n## explicit; go 1.18\ngolang.org/x/net/context\ngolang.org/x/net/html\ngolang.org/x/net/html/atom\ngolang.org/x/net/html/charset\ngolang.org/x/net/http/httpguts\ngolang.org/x/net/http2\ngolang.org/x/net/http2/hpack\ngolang.org/x/net/idna\ngolang.org/x/net/internal/timeseries\ngolang.org/x/net/netutil\ngolang.org/x/net/trace\n# golang.org/x/oauth2 v0.23.0\n## explicit; go 1.18\ngolang.org/x/oauth2\ngolang.org/x/oauth2/authhandler\ngolang.org/x/oauth2/google\ngolang.org/x/oauth2/google/externalaccount\ngolang.org/x/oauth2/google/internal/externalaccountauthorizeduser\ngolang.org/x/oauth2/google/internal/impersonate\ngolang.org/x/oauth2/google/internal/stsexchange\ngolang.org/x/oauth2/internal\ngolang.org/x/oauth2/jws\ngolang.org/x/oauth2/jwt\n# golang.org/x/sync v0.8.0\n## explicit; go 1.18\ngolang.org/x/sync/errgroup\ngolang.org/x/sync/semaphore\n# golang.org/x/sys v0.26.0\n## explicit; go 1.18\ngolang.org/x/sys/cpu\ngolang.org/x/sys/execabs\ngolang.org/x/sys/plan9\ngolang.org/x/sys/unix\ngolang.org/x/sys/windows\ngolang.org/x/sys/windows/registry\n# golang.org/x/term v0.25.0\n## explicit; go 1.18\ngolang.org/x/term\n# golang.org/x/text v0.19.0\n## explicit; go 1.18\ngolang.org/x/text/cases\ngolang.org/x/text/collate\ngolang.org/x/text/encoding\ngolang.org/x/text/encoding/charmap\ngolang.org/x/text/encoding/htmlindex\ngolang.org/x/text/encoding/internal\ngolang.org/x/text/encoding/internal/identifier\ngolang.org/x/text/encoding/japanese\ngolang.org/x/text/encoding/korean\ngolang.org/x/text/encoding/simplifiedchinese\ngolang.org/x/text/encoding/traditionalchinese\ngolang.org/x/text/encoding/unicode\ngolang.org/x/text/internal\ngolang.org/x/text/internal/colltab\ngolang.org/x/text/internal/language\ngolang.org/x/text/internal/language/compact\ngolang.org/x/text/internal/tag\ngolang.org/x/text/internal/utf8internal\ngolang.org/x/text/language\ngolang.org/x/text/runes\ngolang.org/x/text/secure/bidirule\ngolang.org/x/text/transform\ngolang.org/x/text/unicode/bidi\ngolang.org/x/text/unicode/norm\ngolang.org/x/text/unicode/rangetable\n# golang.org/x/time v0.5.0\n## explicit; go 1.18\ngolang.org/x/time/rate\n# golang.org/x/tools v0.22.0\n## explicit; go 1.19\ngolang.org/x/tools/cmd/stringer\ngolang.org/x/tools/go/gcexportdata\ngolang.org/x/tools/go/internal/packagesdriver\ngolang.org/x/tools/go/packages\ngolang.org/x/tools/go/types/objectpath\ngolang.org/x/tools/internal/aliases\ngolang.org/x/tools/internal/event\ngolang.org/x/tools/internal/event/core\ngolang.org/x/tools/internal/event/keys\ngolang.org/x/tools/internal/event/label\ngolang.org/x/tools/internal/gcimporter\ngolang.org/x/tools/internal/gocommand\ngolang.org/x/tools/internal/packagesinternal\ngolang.org/x/tools/internal/pkgbits\ngolang.org/x/tools/internal/stdlib\ngolang.org/x/tools/internal/tokeninternal\ngolang.org/x/tools/internal/typesinternal\ngolang.org/x/tools/internal/versions\n# google.golang.org/api v0.186.0\n## explicit; go 1.20\ngoogle.golang.org/api/googleapi\ngoogle.golang.org/api/googleapi/transport\ngoogle.golang.org/api/iamcredentials/v1\ngoogle.golang.org/api/internal\ngoogle.golang.org/api/internal/cert\ngoogle.golang.org/api/internal/gensupport\ngoogle.golang.org/api/internal/impersonate\ngoogle.golang.org/api/internal/third_party/uritemplates\ngoogle.golang.org/api/iterator\ngoogle.golang.org/api/option\ngoogle.golang.org/api/option/internaloption\ngoogle.golang.org/api/storage/v1\ngoogle.golang.org/api/transport\ngoogle.golang.org/api/transport/grpc\ngoogle.golang.org/api/transport/http\ngoogle.golang.org/api/transport/http/internal/propagation\n# google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094\n## explicit; go 1.20\ngoogle.golang.org/genproto/googleapis/type/date\ngoogle.golang.org/genproto/googleapis/type/expr\ngoogle.golang.org/genproto/protobuf/field_mask\n# google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142\n## explicit; go 1.21\ngoogle.golang.org/genproto/googleapis/api\ngoogle.golang.org/genproto/googleapis/api/annotations\ngoogle.golang.org/genproto/googleapis/api/httpbody\n# google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142\n## explicit; go 1.21\ngoogle.golang.org/genproto/googleapis/rpc/code\ngoogle.golang.org/genproto/googleapis/rpc/errdetails\ngoogle.golang.org/genproto/googleapis/rpc/status\n# google.golang.org/grpc v1.67.1\n## explicit; go 1.21\ngoogle.golang.org/grpc\ngoogle.golang.org/grpc/attributes\ngoogle.golang.org/grpc/backoff\ngoogle.golang.org/grpc/balancer\ngoogle.golang.org/grpc/balancer/base\ngoogle.golang.org/grpc/balancer/grpclb\ngoogle.golang.org/grpc/balancer/grpclb/grpc_lb_v1\ngoogle.golang.org/grpc/balancer/grpclb/state\ngoogle.golang.org/grpc/balancer/pickfirst\ngoogle.golang.org/grpc/balancer/roundrobin\ngoogle.golang.org/grpc/binarylog/grpc_binarylog_v1\ngoogle.golang.org/grpc/channelz\ngoogle.golang.org/grpc/codes\ngoogle.golang.org/grpc/connectivity\ngoogle.golang.org/grpc/credentials\ngoogle.golang.org/grpc/credentials/alts\ngoogle.golang.org/grpc/credentials/alts/internal\ngoogle.golang.org/grpc/credentials/alts/internal/authinfo\ngoogle.golang.org/grpc/credentials/alts/internal/conn\ngoogle.golang.org/grpc/credentials/alts/internal/handshaker\ngoogle.golang.org/grpc/credentials/alts/internal/handshaker/service\ngoogle.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp\ngoogle.golang.org/grpc/credentials/google\ngoogle.golang.org/grpc/credentials/insecure\ngoogle.golang.org/grpc/credentials/oauth\ngoogle.golang.org/grpc/encoding\ngoogle.golang.org/grpc/encoding/proto\ngoogle.golang.org/grpc/experimental/stats\ngoogle.golang.org/grpc/grpclog\ngoogle.golang.org/grpc/grpclog/internal\ngoogle.golang.org/grpc/health\ngoogle.golang.org/grpc/health/grpc_health_v1\ngoogle.golang.org/grpc/internal\ngoogle.golang.org/grpc/internal/backoff\ngoogle.golang.org/grpc/internal/balancer/gracefulswitch\ngoogle.golang.org/grpc/internal/balancerload\ngoogle.golang.org/grpc/internal/binarylog\ngoogle.golang.org/grpc/internal/buffer\ngoogle.golang.org/grpc/internal/channelz\ngoogle.golang.org/grpc/internal/credentials\ngoogle.golang.org/grpc/internal/envconfig\ngoogle.golang.org/grpc/internal/googlecloud\ngoogle.golang.org/grpc/internal/grpclog\ngoogle.golang.org/grpc/internal/grpcsync\ngoogle.golang.org/grpc/internal/grpcutil\ngoogle.golang.org/grpc/internal/idle\ngoogle.golang.org/grpc/internal/metadata\ngoogle.golang.org/grpc/internal/pretty\ngoogle.golang.org/grpc/internal/resolver\ngoogle.golang.org/grpc/internal/resolver/dns\ngoogle.golang.org/grpc/internal/resolver/dns/internal\ngoogle.golang.org/grpc/internal/resolver/passthrough\ngoogle.golang.org/grpc/internal/resolver/unix\ngoogle.golang.org/grpc/internal/serviceconfig\ngoogle.golang.org/grpc/internal/stats\ngoogle.golang.org/grpc/internal/status\ngoogle.golang.org/grpc/internal/syscall\ngoogle.golang.org/grpc/internal/transport\ngoogle.golang.org/grpc/internal/transport/networktype\ngoogle.golang.org/grpc/internal/xds\ngoogle.golang.org/grpc/keepalive\ngoogle.golang.org/grpc/mem\ngoogle.golang.org/grpc/metadata\ngoogle.golang.org/grpc/peer\ngoogle.golang.org/grpc/reflection\ngoogle.golang.org/grpc/reflection/grpc_reflection_v1\ngoogle.golang.org/grpc/reflection/grpc_reflection_v1alpha\ngoogle.golang.org/grpc/reflection/internal\ngoogle.golang.org/grpc/resolver\ngoogle.golang.org/grpc/resolver/dns\ngoogle.golang.org/grpc/resolver/manual\ngoogle.golang.org/grpc/serviceconfig\ngoogle.golang.org/grpc/stats\ngoogle.golang.org/grpc/status\ngoogle.golang.org/grpc/tap\n# google.golang.org/protobuf v1.35.1\n## explicit; go 1.21\ngoogle.golang.org/protobuf/encoding/protodelim\ngoogle.golang.org/protobuf/encoding/protojson\ngoogle.golang.org/protobuf/encoding/prototext\ngoogle.golang.org/protobuf/encoding/protowire\ngoogle.golang.org/protobuf/internal/descfmt\ngoogle.golang.org/protobuf/internal/descopts\ngoogle.golang.org/protobuf/internal/detrand\ngoogle.golang.org/protobuf/internal/editiondefaults\ngoogle.golang.org/protobuf/internal/editionssupport\ngoogle.golang.org/protobuf/internal/encoding/defval\ngoogle.golang.org/protobuf/internal/encoding/json\ngoogle.golang.org/protobuf/internal/encoding/messageset\ngoogle.golang.org/protobuf/internal/encoding/tag\ngoogle.golang.org/protobuf/internal/encoding/text\ngoogle.golang.org/protobuf/internal/errors\ngoogle.golang.org/protobuf/internal/filedesc\ngoogle.golang.org/protobuf/internal/filetype\ngoogle.golang.org/protobuf/internal/flags\ngoogle.golang.org/protobuf/internal/genid\ngoogle.golang.org/protobuf/internal/impl\ngoogle.golang.org/protobuf/internal/msgfmt\ngoogle.golang.org/protobuf/internal/order\ngoogle.golang.org/protobuf/internal/pragma\ngoogle.golang.org/protobuf/internal/set\ngoogle.golang.org/protobuf/internal/strs\ngoogle.golang.org/protobuf/internal/version\ngoogle.golang.org/protobuf/proto\ngoogle.golang.org/protobuf/protoadapt\ngoogle.golang.org/protobuf/reflect/protodesc\ngoogle.golang.org/protobuf/reflect/protoreflect\ngoogle.golang.org/protobuf/reflect/protoregistry\ngoogle.golang.org/protobuf/runtime/protoiface\ngoogle.golang.org/protobuf/runtime/protoimpl\ngoogle.golang.org/protobuf/testing/protocmp\ngoogle.golang.org/protobuf/types/descriptorpb\ngoogle.golang.org/protobuf/types/dynamicpb\ngoogle.golang.org/protobuf/types/gofeaturespb\ngoogle.golang.org/protobuf/types/known/anypb\ngoogle.golang.org/protobuf/types/known/durationpb\ngoogle.golang.org/protobuf/types/known/emptypb\ngoogle.golang.org/protobuf/types/known/fieldmaskpb\ngoogle.golang.org/protobuf/types/known/timestamppb\ngoogle.golang.org/protobuf/types/known/wrapperspb\n# gopkg.in/ini.v1 v1.67.0\n## explicit\ngopkg.in/ini.v1\n# gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce\n## explicit\ngopkg.in/natefinch/npipe.v2\n# gopkg.in/yaml.v3 v3.0.1\n## explicit\ngopkg.in/yaml.v3\n# gotest.tools/v3 v3.5.1\n## explicit; go 1.17\ngotest.tools/v3/assert\ngotest.tools/v3/assert/cmp\ngotest.tools/v3/internal/assert\ngotest.tools/v3/internal/difflib\ngotest.tools/v3/internal/format\ngotest.tools/v3/internal/source\n# nhooyr.io/websocket v1.8.10\n## explicit; go 1.19\nnhooyr.io/websocket\nnhooyr.io/websocket/internal/bpool\nnhooyr.io/websocket/internal/errd\nnhooyr.io/websocket/internal/util\nnhooyr.io/websocket/internal/wsjs\nnhooyr.io/websocket/internal/xsync\n# pgregory.net/rapid v1.1.0\n## explicit; go 1.18\npgregory.net/rapid\n# sigs.k8s.io/yaml v1.4.0\n## explicit; go 1.12\nsigs.k8s.io/yaml\nsigs.k8s.io/yaml/goyaml.v2\n# cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241015015202-783e224f9517\n# cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241015015202-783e224f9517\n# github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517\n# github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0\n# github.com/cometbft/cometbft => github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890\n# github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183\n# github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0\n# github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7\n# github.com/tidwall/btree => github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c\n" [mod] [mod."cloud.google.com/go"] @@ -152,12 +153,12 @@ schema = 3 version = "v1.0.0" hash = "sha256-z/0E0NiEGo7zxM7d94ImgUf8P0/KG6hbP9T4Vuym4p0=" [mod."github.com/cometbft/cometbft"] - version = "v0.0.0-20241101110921-cee5fa03c9ba" - hash = "sha256-Zlu11cj2cv++ecqF9urfsGhPgfh6Q4Rk9WBlB1hcwX4=" - replaced = "github.com/crypto-org-chain/cometbft" + version = "v0.38.0-alpha.1.0.20241106081635-f702b8b3f890" + hash = "sha256-Eu9HQ7EfyU7/+2DL/aDVHlOwJhtdX2pPHDG/mGI7KyI=" + replaced = "github.com/yihuang/cometbft" [mod."github.com/cometbft/cometbft-db"] - version = "v0.14.1" - hash = "sha256-QvWMRGsdgCsSfL+DHp3w1Bm4jXa14SeT7oRK3PiNGV0=" + version = "v0.15.0" + hash = "sha256-hNtUoPsgrsc9MhU7AONKMOB6k4bEbg757BSXVp7G5EA=" [mod."github.com/cosmos/btcutil"] version = "v1.0.5" hash = "sha256-t572Sr5iiHcuMKLMWa2i+LBAt192oa+G1oA371tG/eI=" @@ -220,17 +221,17 @@ schema = 3 version = "v2.1.0" hash = "sha256-Co6gfAcVn256IUEJNNPmVlx8LZRI4sT+KmqGs2uIQ90=" [mod."github.com/decred/dcrd/dcrec/secp256k1/v4"] - version = "v4.2.0" - hash = "sha256-Mw+axGW3RzaRFzcYc7/9/gpqZgWXZHeyT2c4USFtAQA=" + version = "v4.3.0" + hash = "sha256-ADbhI5Ad+q3OxooIiYeLAq5mMONk1gPIAnTch9zKsIM=" [mod."github.com/desertbit/timer"] version = "v0.0.0-20180107155436-c41aec40b27f" hash = "sha256-abLOtEcomAqCWLphd2X6WkD/ED764w6sa6unox4BXss=" [mod."github.com/dgraph-io/badger/v4"] - version = "v4.2.0" - hash = "sha256-hsNONsIJIYmMzjTXdNxjheL2Zz3Z86J8Uxj2r0el/DY=" + version = "v4.3.0" + hash = "sha256-ydDlzD7dH8k/urIrNDnSJH8SdK16ECnsjuY+mBxr78E=" [mod."github.com/dgraph-io/ristretto"] - version = "v0.1.1" - hash = "sha256-Wr9ovXhGi71+n37EnrpIj2o9goyaQHtY4Vvurv6IVlY=" + version = "v0.1.2-0.20240116140435-c67e07994f91" + hash = "sha256-xBJ+kaQ4KhZ7vCrIQ2YCFEpci1U/AEnbFTgK8Ee5dOs=" [mod."github.com/dlclark/regexp2"] version = "v1.7.0" hash = "sha256-Z/M62esiZ0fVwvueVQhwz18z0eS22LZ3DJ4O8FKp3AY=" @@ -304,9 +305,6 @@ schema = 3 [mod."github.com/gogo/protobuf"] version = "v1.3.2" hash = "sha256-pogILFrrk+cAtb0ulqn9+gRZJ7sGnnLLdtqITvxvG6c=" - [mod."github.com/golang/glog"] - version = "v1.2.2" - hash = "sha256-AIPEkLcrbIw49fuTDKfDifVLCtSpFPHgujQ/c99dPqk=" [mod."github.com/golang/groupcache"] version = "v0.0.0-20210331224755-41bb18bfe9da" hash = "sha256-7Gs7CS9gEYZkbu5P4hqPGBpeGZWC64VDwraSKFF+VR0=" @@ -443,8 +441,8 @@ schema = 3 version = "v1.10.9" hash = "sha256-Gl6dLtL+yk6UrTTWfas43aM4lP/pNa2l7+ITXnjQyKs=" [mod."github.com/linxGnu/grocksdb"] - version = "v1.8.14" - hash = "sha256-dT647UzB25Ye1Gv6b9JEtJZjuWKdJo4D8kw9cB0W8gA=" + version = "v1.9.3" + hash = "sha256-XEyOwHNUxGIvEj8H2YfZgtoREDmjy4gidmAu5u1lb7U=" [mod."github.com/magiconair/properties"] version = "v1.8.7" hash = "sha256-XQ2bnc2s7/IH3WxEO4GishZurMyKwEclZy1DXg+2xXc=" @@ -512,8 +510,8 @@ schema = 3 version = "v0.6.1" hash = "sha256-rIDyUzNfxRA934PIoySR0EhuBbZVRK/25Jlc/r8WODw=" [mod."github.com/prometheus/common"] - version = "v0.59.1" - hash = "sha256-PYoEunC2Rx1KP8vH2inTD7uBCfUlvcROfeeAGRRjXPY=" + version = "v0.60.1" + hash = "sha256-6ZSm800o6QjFKi5QUs/Zsjqq3i+V8UFvkGqR7lWqJ2M=" [mod."github.com/prometheus/procfs"] version = "v0.15.1" hash = "sha256-H+WXJemFFwdoglmD6p7JRjrJJZmIVAmJwYmLbZ8Q9sw=" @@ -646,11 +644,11 @@ schema = 3 version = "v0.18.0" hash = "sha256-zCSO2dmE0nhrScqRKzIUeqiELzCyBA6MDAW1NV1hTZw=" [mod."golang.org/x/net"] - version = "v0.29.0" - hash = "sha256-dH9Rdf5T04KJ4B5WvIZh12ogMbADWiWgIt77nvPTk2k=" + version = "v0.30.0" + hash = "sha256-i1f6wJHfFq0nKtbuY7twZ7uPyUbRYHVjd3uy0SS06mU=" [mod."golang.org/x/oauth2"] - version = "v0.22.0" - hash = "sha256-3gmmXfCcxYBMaXmKRzGBpX01h4lMenFPkqWT9TwqIBE=" + version = "v0.23.0" + hash = "sha256-K1X4ROG88PprttNjZCikDlZw8YYiQIQRdtbZBH3GJgM=" [mod."golang.org/x/sync"] version = "v0.8.0" hash = "sha256-usvF0z7gq1vsX58p4orX+8WHlv52pdXgaueXlwj2Wss=" @@ -685,8 +683,8 @@ schema = 3 version = "v1.67.1" hash = "sha256-VqfKp80c2B1MK4m1WtHW4r7ykqdChJbqaMn+gMEYmYc=" [mod."google.golang.org/protobuf"] - version = "v1.34.2" - hash = "sha256-nMTlrDEE2dbpWz50eQMPBQXCyQh4IdjrTIccaU0F3m0=" + version = "v1.35.1" + hash = "sha256-4NtUQoBvlPGFGjo7c+E1EBS/sb8oy50MGy45KGWPpWo=" [mod."gopkg.in/ini.v1"] version = "v1.67.0" hash = "sha256-V10ahGNGT+NLRdKUyRg1dos5RxLBXBk1xutcnquc/+4=" diff --git a/nix/sources.json b/nix/sources.json index e96b2d28a0..28ac2a7c7d 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -12,15 +12,15 @@ "url_template": "https://github.com///archive/.tar.gz" }, "gomod2nix": { - "branch": "master", + "branch": "fix/go_mod_vendor", "description": "Convert applications using Go modules to Nix expressions", "homepage": null, - "owner": "nix-community", + "owner": "obreitwi", "repo": "gomod2nix", - "rev": "5d387097aa716f35dd99d848dc26d8d5b62a104c", - "sha256": "1mdwyjz43nnh7gfq4rc54kql6fy65hw17w0p4gwklnfqciwrkax2", + "rev": "983228366edc1bed1be6e6f7a45e285b4707b9ba", + "sha256": "1pz4qymn6755p96ai00birvj2y5wrkv6wkyi40y8vpqzs2s60pnj", "type": "tarball", - "url": "https://github.com/nix-community/gomod2nix/archive/5d387097aa716f35dd99d848dc26d8d5b62a104c.tar.gz", + "url": "https://github.com/obreitwi/gomod2nix/archive/983228366edc1bed1be6e6f7a45e285b4707b9ba.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "niv": { @@ -41,10 +41,10 @@ "homepage": "", "owner": "NixOS", "repo": "nixpkgs", - "rev": "50286248f2d7283682bdd47ba14af33a9233b88b", - "sha256": "19sqfs6pamknhlg3mqpqs3wj0wj1ynj5icfmhqmjjvq08byfc2hl", + "rev": "911e6111c71bc861769597f66aadcdc080c2db1e", + "sha256": "09zdp4av5kycq6pvi9ixd0vpx5wx3m5cw0gak87svgkzw9r85152", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/50286248f2d7283682bdd47ba14af33a9233b88b.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/911e6111c71bc861769597f66aadcdc080c2db1e.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "poetry2nix": { From acbe290991ccf529075781fb3e5f353611875280 Mon Sep 17 00:00:00 2001 From: yihuang Date: Tue, 17 Dec 2024 17:48:03 +0800 Subject: [PATCH 049/210] Problem: nonce management in batch tx (#567) * Problem: nonce management in batch tx * changelog --- CHANGELOG.md | 1 + tests/integration_tests/test_batch.py | 3 +++ x/evm/keeper/state_transition.go | 7 ++++--- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b423df017..786cf1e2c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -79,6 +79,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#559](https://github.com/crypto-org-chain/ethermint/pull/559) Use basefee of transaction height instead of minus one height when `debug_traceTransaction`. * (ante) [#560](https://github.com/crypto-org-chain/ethermint/pull/560) Check gasWanted only in checkTx mode. * (rpc) [#562](https://github.com/crypto-org-chain/ethermint/pull/562) Fix nil pointer panic with legacy transaction format. +* (evm) [#567](https://github.com/crypto-org-chain/ethermint/pull/567) Fix nonce management in batch transaction. ### Improvements diff --git a/tests/integration_tests/test_batch.py b/tests/integration_tests/test_batch.py index b43934a5b4..75a50fa79a 100644 --- a/tests/integration_tests/test_batch.py +++ b/tests/integration_tests/test_batch.py @@ -51,6 +51,9 @@ def test_batch_tx(ethermint): == receipts[0].gasUsed + receipts[1].gasUsed + receipts[2].gasUsed ) + # check nonce + assert w3.eth.get_transaction_count(sender) == nonce + 3 + # check traceTransaction rsps = [ w3.provider.make_request("debug_traceTransaction", [h.hex()])["result"] diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index 3b4906246e..c561f6ba7b 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -373,11 +373,12 @@ func (k *Keeper) ApplyMessageWithConfig( if contractCreation { // take over the nonce management from evm: - // - reset sender's nonce to msg.Nonce() before calling evm. - // - increase sender's nonce by one no matter the result. + // - reset sender's nonce to msg.Nonce() to generate correct contract address. + // - set the nonce back to the original value after contract creation. + oldNonce := stateDB.GetNonce(sender.Address()) stateDB.SetNonce(sender.Address(), msg.Nonce) ret, _, leftoverGas, vmErr = evm.Create(sender, msg.Data, leftoverGas, msg.Value) - stateDB.SetNonce(sender.Address(), msg.Nonce+1) + stateDB.SetNonce(sender.Address(), oldNonce) } else { ret, leftoverGas, vmErr = evm.Call(sender, *msg.To, msg.Data, leftoverGas, msg.Value) } From 99985ecae17db267285eea53043818578d7986d6 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Thu, 2 Jan 2025 15:55:10 +0800 Subject: [PATCH 050/210] Problem: sdk 0.52 requires a minimum version of go 1.23.3 (#569) * Problem: latest sdk requires a minimum version of go 1.23.3 * align flake lock --------- Co-authored-by: HuangYi --- flake.lock | 26 +++++++++++++------------- flake.nix | 2 +- go.mod | 2 +- nix/default.nix | 4 ++-- nix/sources.json | 16 ++++++++-------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/flake.lock b/flake.lock index 4acaa41ddf..33e5b48efe 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -28,11 +28,11 @@ ] }, "locked": { - "lastModified": 1725226629, - "narHash": "sha256-0l5gtNAf3408INFPbvbMvHghd44LgKhMuqUcY6vH5N8=", + "lastModified": 1733764984, + "narHash": "sha256-4pHRrZ6bvk4+2XrM4MNaqkcoO+DecjZtFoJcJm9Fab0=", "owner": "obreitwi", "repo": "gomod2nix", - "rev": "983228366edc1bed1be6e6f7a45e285b4707b9ba", + "rev": "9048c4bd5c1c1a48f55760d920617cc3ce6c685b", "type": "github" }, "original": { @@ -65,16 +65,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730272153, - "narHash": "sha256-B5WRZYsRlJgwVHIV6DvidFN7VX7Fg9uuwkRW9Ha8z+w=", + "lastModified": 1735617354, + "narHash": "sha256-5zJyv66q68QZJZsXtmjDBazGnF0id593VSy+8eSckoo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2d2a9ddbe3f2c00747398f3dc9b05f7f2ebb0f53", + "rev": "c46290747b2aaf090f48a478270feb858837bf11", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "release-25.05", "repo": "nixpkgs", "type": "github" } @@ -92,11 +92,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1730284601, - "narHash": "sha256-eHYcKVLIRRv3J1vjmxurS6HVdGphB53qxUeAkylYrZY=", + "lastModified": 1735164664, + "narHash": "sha256-DaWy+vo3c4TQ93tfLjUgcpPaSoDw4qV4t76Y3Mhu84I=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "43a898b4d76f7f3f70df77a2cc2d40096bc9d75e", + "rev": "1fb01e90771f762655be7e0e805516cd7fa4d58e", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 34082f2d8e..ab6922dbb0 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,6 @@ { inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + nixpkgs.url = "github:NixOS/nixpkgs/release-25.05"; flake-utils.url = "github:numtide/flake-utils"; gomod2nix = { url = "github:obreitwi/gomod2nix/fix/go_mod_vendor"; diff --git a/go.mod b/go.mod index 2ebed1fa16..85f54bb948 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/evmos/ethermint -go 1.23.1 +go 1.23.3 require ( cosmossdk.io/api v0.7.6 diff --git a/nix/default.nix b/nix/default.nix index ddee5400b1..52ee3c4684 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -8,7 +8,7 @@ import sources.nixpkgs { go-ethereum = pkgs.callPackage ./go-ethereum.nix { inherit (pkgs.darwin) libobjc; inherit (pkgs.darwin.apple_sdk.frameworks) IOKit; - buildGoModule = pkgs.buildGo121Module; + buildGoModule = pkgs.buildGo122Module; }; }) # update to a version that supports eip-1559 (import "${sources.poetry2nix}/overlay.nix") @@ -24,7 +24,7 @@ import sources.nixpkgs { }) (_: pkgs: { test-env = pkgs.callPackage ./testenv.nix { }; }) (_: pkgs: { - cosmovisor = pkgs.buildGo121Module rec { + cosmovisor = pkgs.buildGo122Module rec { name = "cosmovisor"; src = sources.cosmos-sdk + "/cosmovisor"; subPackages = [ "./cmd/cosmovisor" ]; diff --git a/nix/sources.json b/nix/sources.json index 28ac2a7c7d..8c7a833181 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -36,27 +36,27 @@ "url_template": "https://github.com///archive/.tar.gz" }, "nixpkgs": { - "branch": "release-24.05", + "branch": "release-25.05", "description": "Nix Packages collection", "homepage": "", "owner": "NixOS", "repo": "nixpkgs", - "rev": "911e6111c71bc861769597f66aadcdc080c2db1e", - "sha256": "09zdp4av5kycq6pvi9ixd0vpx5wx3m5cw0gak87svgkzw9r85152", + "rev": "c46290747b2aaf090f48a478270feb858837bf11", + "sha256": "0b96wqvk3hs98dhfrmdhqmx9ibac4kjpanpd1pig19jaglanqnxr", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/911e6111c71bc861769597f66aadcdc080c2db1e.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/c46290747b2aaf090f48a478270feb858837bf11.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "poetry2nix": { "branch": "master", "description": "Convert poetry projects to nix automagically [maintainer=@adisbladis] ", "homepage": "", - "owner": "nix-community", + "owner": "mmsqe", "repo": "poetry2nix", - "rev": "4eb2ac54029af42a001c9901194e9ce19cbd8a40", - "sha256": "16fi71fpywiqsya1z99kkb14dansyrmkkrb2clzs3b5qqx673wf4", + "rev": "7b3eed7d8355fb0404da03964cb6c680912a9e4f", + "sha256": "03c0r1riw8zmc7m485vdsn91r8bgvhh41l7ci72zgpwlpk7dq546", "type": "tarball", - "url": "https://github.com/nix-community/poetry2nix/archive/4eb2ac54029af42a001c9901194e9ce19cbd8a40.tar.gz", + "url": "https://github.com/mmsqe/poetry2nix/archive/7b3eed7d8355fb0404da03964cb6c680912a9e4f.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "flake-compat": { From 62042e2252f633ea2dae324b264ea6da0ee7931f Mon Sep 17 00:00:00 2001 From: mmsqe Date: Thu, 9 Jan 2025 15:51:57 +0800 Subject: [PATCH 051/210] Problem: go 1.23.4 is not supported (#570) * Problem: nixpkgs are outdated * use upstream --- flake.nix | 10 ++++++---- nix/build_overlay.nix | 10 ++++++++++ nix/default.nix | 1 + nix/sources.json | 8 ++++---- 4 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 nix/build_overlay.nix diff --git a/flake.nix b/flake.nix index ab6922dbb0..b79666dff9 100644 --- a/flake.nix +++ b/flake.nix @@ -57,9 +57,11 @@ } ) ) // { - overlay = final: super: { - go = super.go_1_23; - test-env = final.callPackage ./nix/testenv.nix { }; - }; + overlays.default = [ + (import ./nix/build_overlay.nix) + (final: super: { + test-env = final.callPackage ./nix/testenv.nix { }; + }) + ]; }; } diff --git a/nix/build_overlay.nix b/nix/build_overlay.nix new file mode 100644 index 0000000000..e20ffd098f --- /dev/null +++ b/nix/build_overlay.nix @@ -0,0 +1,10 @@ +# some basic overlays necessary for the build +final: super: { + go_1_23 = super.go_1_23.overrideAttrs (old: rec { + version = "1.23.4"; + src = final.fetchurl { + url = "https://go.dev/dl/go${version}.src.tar.gz"; + hash = "sha256-rTRaxCHpCBQpOpaZzKGd1SOCUcP2h5gLvK4oSVsmNTE="; + }; + }); +} diff --git a/nix/default.nix b/nix/default.nix index 52ee3c4684..ed31212e92 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -2,6 +2,7 @@ import sources.nixpkgs { overlays = [ + (import ./build_overlay.nix) (_: pkgs: { flake-compat = import sources.flake-compat; go = pkgs.go_1_23; diff --git a/nix/sources.json b/nix/sources.json index 8c7a833181..754c9fc242 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -51,12 +51,12 @@ "branch": "master", "description": "Convert poetry projects to nix automagically [maintainer=@adisbladis] ", "homepage": "", - "owner": "mmsqe", + "owner": "nix-community", "repo": "poetry2nix", - "rev": "7b3eed7d8355fb0404da03964cb6c680912a9e4f", - "sha256": "03c0r1riw8zmc7m485vdsn91r8bgvhh41l7ci72zgpwlpk7dq546", + "rev": "29b2641c1c6e67d836f9a9fda8a6de85be9644ac", + "sha256": "164qi61dxw3y345bkdpiwxrk7cql7pf6kay2xi9y751ypssrji4m", "type": "tarball", - "url": "https://github.com/mmsqe/poetry2nix/archive/7b3eed7d8355fb0404da03964cb6c680912a9e4f.tar.gz", + "url": "https://github.com/nix-community/poetry2nix/archive/29b2641c1c6e67d836f9a9fda8a6de85be9644ac.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "flake-compat": { From 11b246d20511185ac0c07feba2fe71e723202cc5 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Tue, 14 Jan 2025 16:27:33 +0800 Subject: [PATCH 052/210] Problem: ibc-go v9.x is not used (#563) --- CHANGELOG.md | 1 + app/ante/eip712.go | 2 +- app/ante/handler_options.go | 4 +- app/app.go | 21 ++++----- app/simulation_test.go | 4 +- go.mod | 45 +++++++++--------- go.sum | 94 ++++++++++++++++++------------------- gomod2nix.toml | 93 ++++++++++++++++++------------------ 8 files changed, 129 insertions(+), 135 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 786cf1e2c5..44955ed8bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,6 +107,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#549](https://github.com/crypto-org-chain/ethermint/pull/549) Support build without cgo. * [#551](https://github.com/crypto-org-chain/ethermint/pull/551) Start event stream on demand. * [#555](https://github.com/crypto-org-chain/ethermint/pull/555) Update cometbft to 0.38.14 and rocksdb to 9.7.4. +* [#563](https://github.com/crypto-org-chain/ethermint/pull/563) Bump ibc-go to v9.0.2. ## v0.21.x-cronos diff --git a/app/ante/eip712.go b/app/ante/eip712.go index 3ccef365f7..78a5bedd40 100644 --- a/app/ante/eip712.go +++ b/app/ante/eip712.go @@ -29,7 +29,7 @@ import ( authante "github.com/cosmos/cosmos-sdk/x/auth/ante" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" - ibcante "github.com/cosmos/ibc-go/v8/modules/core/ante" + ibcante "github.com/cosmos/ibc-go/v9/modules/core/ante" ethcrypto "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/signer/core/apitypes" diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index ccf446a88a..1032568aa1 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -26,8 +26,8 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ethtypes "github.com/ethereum/go-ethereum/core/types" - ibcante "github.com/cosmos/ibc-go/v8/modules/core/ante" - ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" + ibcante "github.com/cosmos/ibc-go/v9/modules/core/ante" + ibckeeper "github.com/cosmos/ibc-go/v9/modules/core/keeper" evmtypes "github.com/evmos/ethermint/x/evm/types" ) diff --git a/app/app.go b/app/app.go index 112f7f1b11..8ceff9e81c 100644 --- a/app/app.go +++ b/app/app.go @@ -119,16 +119,16 @@ import ( capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - "github.com/cosmos/ibc-go/v8/modules/apps/transfer" - ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" - ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - ibc "github.com/cosmos/ibc-go/v8/modules/core" - ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" - ibcconnectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" - porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" - ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" - ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + "github.com/cosmos/ibc-go/v9/modules/apps/transfer" + ibctransferkeeper "github.com/cosmos/ibc-go/v9/modules/apps/transfer/keeper" + ibctransfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/v9/modules/core" + ibcclienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" + ibcconnectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types" + porttypes "github.com/cosmos/ibc-go/v9/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported" + ibckeeper "github.com/cosmos/ibc-go/v9/modules/core/keeper" + ibctm "github.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint" "github.com/evmos/ethermint/client/docs" @@ -484,7 +484,6 @@ func NewEthermintApp( app.IBCKeeper = ibckeeper.NewKeeper( appCodec, keys[ibcexported.StoreKey], app.GetSubspace(ibcexported.ModuleName), - app.StakingKeeper, app.UpgradeKeeper, scopedIBCKeeper, authAddr, diff --git a/app/simulation_test.go b/app/simulation_test.go index 9ff347d168..415082314d 100644 --- a/app/simulation_test.go +++ b/app/simulation_test.go @@ -37,8 +37,8 @@ import ( slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" + ibctransfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" + ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported" "github.com/evmos/ethermint/app" "github.com/evmos/ethermint/app/ante" "github.com/evmos/ethermint/testutil" diff --git a/go.mod b/go.mod index 85f54bb948..bebf7d903d 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.7.0 github.com/cosmos/ibc-go/modules/capability v1.0.1 - github.com/cosmos/ibc-go/v8 v8.5.1 + github.com/cosmos/ibc-go/v9 v9.0.2 github.com/cosmos/rosetta v0.50.3-1 github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc @@ -71,23 +71,23 @@ require ( github.com/99designs/keyring v1.2.2 // indirect github.com/DataDog/datadog-go v4.8.3+incompatible // indirect github.com/DataDog/zstd v1.5.5 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect github.com/VictoriaMetrics/fastcache v1.6.0 // indirect github.com/allegro/bigcache v1.2.1 // indirect github.com/aws/aws-sdk-go v1.44.224 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect + github.com/bgentry/speakeasy v0.2.0 // indirect github.com/bits-and-blooms/bitset v1.8.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/cockroachdb/errors v1.11.3 // indirect - github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect + github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/pebble v1.1.2 // indirect github.com/cockroachdb/redact v1.1.5 // indirect @@ -102,23 +102,23 @@ require ( github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect github.com/creachadair/atomicfile v0.3.1 // indirect github.com/creachadair/tomledit v0.0.24 // indirect - github.com/danieljoos/wincred v1.2.0 // indirect + github.com/danieljoos/wincred v1.2.1 // indirect github.com/deckarep/golang-set/v2 v2.1.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect - github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/desertbit/timer v1.0.1 // indirect github.com/dgraph-io/badger/v4 v4.3.0 // indirect github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91 // indirect github.com/dlclark/regexp2 v1.7.0 // indirect github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/dvsekhvalnov/jose2go v1.7.0 // indirect github.com/edsrzf/mmap-go v1.0.0 // indirect - github.com/emicklei/dot v1.6.1 // indirect - github.com/fatih/color v1.16.0 // indirect + github.com/emicklei/dot v1.6.2 // indirect + github.com/fatih/color v1.17.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect - github.com/getsentry/sentry-go v0.27.0 // indirect + github.com/getsentry/sentry-go v0.28.1 // indirect github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect @@ -134,7 +134,7 @@ require ( github.com/golang/mock v1.6.0 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.3 // indirect - github.com/google/flatbuffers v1.12.1 // indirect + github.com/google/flatbuffers v24.3.25+incompatible // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.7 // indirect @@ -146,9 +146,9 @@ require ( github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-getter v1.7.4 // indirect - github.com/hashicorp/go-hclog v1.5.0 // indirect + github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/go-plugin v1.6.0 // indirect + github.com/hashicorp/go-plugin v1.6.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect @@ -174,7 +174,7 @@ require ( github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect github.com/minio/highwayhash v1.0.3 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect @@ -192,9 +192,10 @@ require ( github.com/prometheus/common v0.60.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/rivo/uniseg v0.2.0 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/zerolog v1.33.0 // indirect - github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/locafero v0.6.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect @@ -213,7 +214,7 @@ require ( github.com/ulikunitz/xz v0.5.11 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect + go.etcd.io/bbolt v1.4.0-alpha.1 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect @@ -223,12 +224,10 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.28.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect - golang.org/x/mod v0.18.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sys v0.26.0 // indirect golang.org/x/term v0.25.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.22.0 // indirect google.golang.org/api v0.186.0 // indirect google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect @@ -236,15 +235,15 @@ require ( gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect - nhooyr.io/websocket v1.8.10 // indirect + nhooyr.io/websocket v1.8.11 // indirect pgregory.net/rapid v1.1.0 // indirect ) replace ( // release/v0.50.x - cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241015015202-783e224f9517 - cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241015015202-783e224f9517 - github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517 + cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241205052910-142c0afa4948 + cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241205052910-142c0afa4948 + github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.43.0-beta1.0.20241205052910-142c0afa4948 ) replace ( diff --git a/go.sum b/go.sum index 27a49786fe..d9ed1d3af9 100644 --- a/go.sum +++ b/go.sum @@ -204,8 +204,6 @@ cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4= cosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo= -cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ= -cosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q= cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4= cosmossdk.io/x/evidence v0.1.1/go.mod h1:OoDsWlbtuyqS70LY51aX8FBTvguQqvFrt78qL7UzeNc= cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8= @@ -227,8 +225,8 @@ github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -273,8 +271,8 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= -github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= +github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bits-and-blooms/bitset v1.8.0 h1:FD+XqgOZDUxxZ8hzoBFuV9+cGWY9CslN6d5MS5JVb4c= github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= @@ -310,8 +308,8 @@ github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= @@ -349,8 +347,8 @@ github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaY github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= -github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= -github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= +github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a h1:f52TdbU4D5nozMAhO9TvTJ2ZMCXtN4VIAmfrrZ0JXQ4= +github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= @@ -387,8 +385,8 @@ github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM= github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI= github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI= github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E= -github.com/cosmos/ibc-go/v8 v8.5.1 h1:3JleEMKBjRKa3FeTKt4fjg22za/qygLBo7mDkoYTNBs= -github.com/cosmos/ibc-go/v8 v8.5.1/go.mod h1:P5hkAvq0Qbg0h18uLxDVA9q1kOJ0l36htMsskiNwXbo= +github.com/cosmos/ibc-go/v9 v9.0.2 h1:4481uaqY8Asoqqfb2OZC8Cu9Ud8ZgarF9cS3sntBIsY= +github.com/cosmos/ibc-go/v9 v9.0.2/go.mod h1:FeznzlNFQhhu1O8TrWJT+2L1OyKdUEb1kmmjuWod3VI= github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= @@ -410,18 +408,18 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+FBB8cMkDE2j2VBVsbY+HCkPIu0YsJ/9bbGeQ= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517 h1:iRnJMiquXPE3OpVX8ENCrcstfd7mI206yC3Bkl6WeK4= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517/go.mod h1:JwwsMeZldLN20b72mmbWPY0EV9rs+v/12hRu1JFttvY= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241015015202-783e224f9517 h1:y3i8TiU7E60zmbpLyo4PqrnwZaWNU3kizU+1OezuoA8= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241015015202-783e224f9517/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241015015202-783e224f9517 h1:CwheSMAqz+kYCFz/X4lZq3BJAWINm/hndzVkjOc/2mI= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241015015202-783e224f9517/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +github.com/crypto-org-chain/cosmos-sdk v0.43.0-beta1.0.20241205052910-142c0afa4948 h1:hX86EeDInLGJnWIR3PZ5ymp6/xaHtk+8E5pA9ZuwEfs= +github.com/crypto-org-chain/cosmos-sdk v0.43.0-beta1.0.20241205052910-142c0afa4948/go.mod h1:JwwsMeZldLN20b72mmbWPY0EV9rs+v/12hRu1JFttvY= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241205052910-142c0afa4948 h1:3GPO2XItxofWxxj2exoaz9Ki+cixakumachnqHvmLHQ= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241205052910-142c0afa4948/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241205052910-142c0afa4948 h1:lb8Mztnt2bpCowKbZMHosyQtXN0QtX/MITH9y5DVNkU= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241205052910-142c0afa4948/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716 h1:OvD5Rm0B6LHUJk6z858UgwdP72jU2DuUdXeclRyKpDI= github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183 h1:JDBTqDkd9X9oBF2C4FKOpn0GVDQDzVkHzeS8eDWNl6A= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183/go.mod h1:5DnkptqPQr+Mo3sy/2V3OQu+K94x1PVzFGZJZbDF8mI= -github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= -github.com/danieljoos/wincred v1.2.0/go.mod h1:FzQLLMKBFdvu+osBrnFODiv32YGwCfx0SkRa/eYHgec= +github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs= +github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -436,8 +434,9 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeC github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= +github.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo= +github.com/desertbit/timer v1.0.1/go.mod h1:htRrYeY5V/t4iu1xCJ5XsQvp4xve8QulXXctAzxqcwE= github.com/dgraph-io/badger/v4 v4.3.0 h1:lcsCE1/1qrRhqP+zYx6xDZb8n7U+QlwNicpc676Ub40= github.com/dgraph-io/badger/v4 v4.3.0/go.mod h1:Sc0T595g8zqAQRDf44n+z3wG4BOqLwceaFntt8KPxUM= github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91 h1:Pux6+xANi0I7RRo5E1gflI4EZ2yx3BGZ75JkAIvGEOA= @@ -460,15 +459,15 @@ github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8 github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= -github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/dvsekhvalnov/jose2go v1.7.0 h1:bnQc8+GMnidJZA8zc6lLEAb4xNrIqHwO+9TzqvtQZPo= +github.com/dvsekhvalnov/jose2go v1.7.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/emicklei/dot v1.6.1 h1:ujpDlBkkwgWUY+qPId5IwapRW/xEoligRSYjioR6DFI= -github.com/emicklei/dot v1.6.1/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A= +github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -482,8 +481,8 @@ github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go. github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= +github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= @@ -500,8 +499,8 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= -github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k= +github.com/getsentry/sentry-go v0.28.1/go.mod h1:1fQZ+7l7eeJ3wYi82q5Hg8GqAPgefRq+FP/QhafYVgg= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= @@ -606,8 +605,8 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= -github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v24.3.25+incompatible h1:CX395cjN9Kke9mmalRoL3d81AtFUxJM+yDthflgJGkI= +github.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -711,8 +710,8 @@ github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9n github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= -github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= -github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -720,8 +719,8 @@ github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYS github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= -github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= +github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= +github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= @@ -852,8 +851,9 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= @@ -894,8 +894,8 @@ github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= +github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= @@ -995,6 +995,8 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -1012,8 +1014,8 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= -github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk= +github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= @@ -1123,8 +1125,8 @@ github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWp github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= -go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= +go.etcd.io/bbolt v1.4.0-alpha.1 h1:3yrqQzbRRPFPdOMWS/QQIVxVnzSkAZQYeWlZFv1kbj4= +go.etcd.io/bbolt v1.4.0-alpha.1/go.mod h1:S/Z/Nm3iuOnyO1W4XuFfPci51Gj6F1Hv0z8hisyYYOw= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -1216,8 +1218,6 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1505,8 +1505,6 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= -golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1796,8 +1794,8 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q= -nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= +nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0= +nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/gomod2nix.toml b/gomod2nix.toml index 0cae733cc4..cb14c2fd07 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -1,5 +1,5 @@ schema = 4 -vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud.google.com/go/internal\ncloud.google.com/go/internal/optional\ncloud.google.com/go/internal/trace\ncloud.google.com/go/internal/version\n# cloud.google.com/go/auth v0.6.0\n## explicit; go 1.20\ncloud.google.com/go/auth\ncloud.google.com/go/auth/credentials\ncloud.google.com/go/auth/credentials/internal/externalaccount\ncloud.google.com/go/auth/credentials/internal/externalaccountuser\ncloud.google.com/go/auth/credentials/internal/gdch\ncloud.google.com/go/auth/credentials/internal/impersonate\ncloud.google.com/go/auth/credentials/internal/stsexchange\ncloud.google.com/go/auth/grpctransport\ncloud.google.com/go/auth/httptransport\ncloud.google.com/go/auth/internal\ncloud.google.com/go/auth/internal/credsfile\ncloud.google.com/go/auth/internal/jwt\ncloud.google.com/go/auth/internal/transport\ncloud.google.com/go/auth/internal/transport/cert\n# cloud.google.com/go/auth/oauth2adapt v0.2.2\n## explicit; go 1.19\ncloud.google.com/go/auth/oauth2adapt\n# cloud.google.com/go/compute/metadata v0.5.0\n## explicit; go 1.20\ncloud.google.com/go/compute/metadata\n# cloud.google.com/go/iam v1.1.9\n## explicit; go 1.20\ncloud.google.com/go/iam\ncloud.google.com/go/iam/apiv1/iampb\n# cloud.google.com/go/storage v1.41.0\n## explicit; go 1.19\ncloud.google.com/go/storage\ncloud.google.com/go/storage/internal\ncloud.google.com/go/storage/internal/apiv2\ncloud.google.com/go/storage/internal/apiv2/storagepb\n# cosmossdk.io/api v0.7.6\n## explicit; go 1.20\ncosmossdk.io/api/amino\ncosmossdk.io/api/cosmos/app/runtime/v1alpha1\ncosmossdk.io/api/cosmos/app/v1alpha1\ncosmossdk.io/api/cosmos/auth/module/v1\ncosmossdk.io/api/cosmos/auth/v1beta1\ncosmossdk.io/api/cosmos/authz/module/v1\ncosmossdk.io/api/cosmos/authz/v1beta1\ncosmossdk.io/api/cosmos/autocli/v1\ncosmossdk.io/api/cosmos/bank/module/v1\ncosmossdk.io/api/cosmos/bank/v1beta1\ncosmossdk.io/api/cosmos/base/abci/v1beta1\ncosmossdk.io/api/cosmos/base/query/v1beta1\ncosmossdk.io/api/cosmos/base/reflection/v1beta1\ncosmossdk.io/api/cosmos/base/tendermint/v1beta1\ncosmossdk.io/api/cosmos/base/v1beta1\ncosmossdk.io/api/cosmos/consensus/module/v1\ncosmossdk.io/api/cosmos/consensus/v1\ncosmossdk.io/api/cosmos/crisis/module/v1\ncosmossdk.io/api/cosmos/crisis/v1beta1\ncosmossdk.io/api/cosmos/crypto/ed25519\ncosmossdk.io/api/cosmos/crypto/multisig\ncosmossdk.io/api/cosmos/crypto/multisig/v1beta1\ncosmossdk.io/api/cosmos/crypto/secp256k1\ncosmossdk.io/api/cosmos/crypto/secp256r1\ncosmossdk.io/api/cosmos/distribution/module/v1\ncosmossdk.io/api/cosmos/distribution/v1beta1\ncosmossdk.io/api/cosmos/evidence/module/v1\ncosmossdk.io/api/cosmos/evidence/v1beta1\ncosmossdk.io/api/cosmos/feegrant/module/v1\ncosmossdk.io/api/cosmos/feegrant/v1beta1\ncosmossdk.io/api/cosmos/genutil/module/v1\ncosmossdk.io/api/cosmos/gov/module/v1\ncosmossdk.io/api/cosmos/gov/v1\ncosmossdk.io/api/cosmos/mint/module/v1\ncosmossdk.io/api/cosmos/mint/v1beta1\ncosmossdk.io/api/cosmos/msg/v1\ncosmossdk.io/api/cosmos/params/module/v1\ncosmossdk.io/api/cosmos/params/v1beta1\ncosmossdk.io/api/cosmos/query/v1\ncosmossdk.io/api/cosmos/reflection/v1\ncosmossdk.io/api/cosmos/slashing/module/v1\ncosmossdk.io/api/cosmos/slashing/v1beta1\ncosmossdk.io/api/cosmos/staking/module/v1\ncosmossdk.io/api/cosmos/staking/v1beta1\ncosmossdk.io/api/cosmos/tx/config/v1\ncosmossdk.io/api/cosmos/tx/signing/v1beta1\ncosmossdk.io/api/cosmos/tx/v1beta1\ncosmossdk.io/api/cosmos/upgrade/module/v1\ncosmossdk.io/api/cosmos/upgrade/v1beta1\ncosmossdk.io/api/cosmos/vesting/module/v1\ncosmossdk.io/api/cosmos/vesting/v1beta1\ncosmossdk.io/api/tendermint/abci\ncosmossdk.io/api/tendermint/crypto\ncosmossdk.io/api/tendermint/p2p\ncosmossdk.io/api/tendermint/types\ncosmossdk.io/api/tendermint/version\n# cosmossdk.io/client/v2 v2.0.0-beta.5\n## explicit; go 1.21\ncosmossdk.io/client/v2/autocli\ncosmossdk.io/client/v2/autocli/flag\ncosmossdk.io/client/v2/autocli/flag/maps\ncosmossdk.io/client/v2/autocli/keyring\ncosmossdk.io/client/v2/internal/flags\ncosmossdk.io/client/v2/internal/strcase\ncosmossdk.io/client/v2/internal/util\n# cosmossdk.io/collections v0.4.0\n## explicit; go 1.20\ncosmossdk.io/collections\ncosmossdk.io/collections/codec\ncosmossdk.io/collections/indexes\n# cosmossdk.io/core v0.11.1\n## explicit; go 1.20\ncosmossdk.io/core/address\ncosmossdk.io/core/appmodule\ncosmossdk.io/core/coins\ncosmossdk.io/core/comet\ncosmossdk.io/core/event\ncosmossdk.io/core/genesis\ncosmossdk.io/core/header\ncosmossdk.io/core/store\n# cosmossdk.io/depinject v1.0.0\n## explicit; go 1.20\ncosmossdk.io/depinject\ncosmossdk.io/depinject/appconfig\ncosmossdk.io/depinject/appconfig/v1alpha1\ncosmossdk.io/depinject/internal/appconfig\ncosmossdk.io/depinject/internal/graphviz\ncosmossdk.io/depinject/internal/util\n# cosmossdk.io/errors v1.0.1\n## explicit; go 1.20\ncosmossdk.io/errors\n# cosmossdk.io/log v1.4.1\n## explicit; go 1.20\ncosmossdk.io/log\n# cosmossdk.io/math v1.3.0\n## explicit; go 1.20\ncosmossdk.io/math\ncosmossdk.io/math/unsafe\n# cosmossdk.io/store v1.1.1 => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241015015202-783e224f9517\n## explicit; go 1.21\ncosmossdk.io/store\ncosmossdk.io/store/cache\ncosmossdk.io/store/cachekv\ncosmossdk.io/store/cachekv/internal\ncosmossdk.io/store/cachemulti\ncosmossdk.io/store/dbadapter\ncosmossdk.io/store/gaskv\ncosmossdk.io/store/iavl\ncosmossdk.io/store/internal\ncosmossdk.io/store/internal/btree\ncosmossdk.io/store/internal/kv\ncosmossdk.io/store/internal/maps\ncosmossdk.io/store/internal/proofs\ncosmossdk.io/store/internal/tree\ncosmossdk.io/store/listenkv\ncosmossdk.io/store/mem\ncosmossdk.io/store/metrics\ncosmossdk.io/store/prefix\ncosmossdk.io/store/pruning\ncosmossdk.io/store/pruning/types\ncosmossdk.io/store/rootmulti\ncosmossdk.io/store/snapshots\ncosmossdk.io/store/snapshots/types\ncosmossdk.io/store/streaming\ncosmossdk.io/store/streaming/abci\ncosmossdk.io/store/tracekv\ncosmossdk.io/store/transient\ncosmossdk.io/store/types\ncosmossdk.io/store/wrapper\n# cosmossdk.io/tools/confix v0.1.2\n## explicit; go 1.21\ncosmossdk.io/tools/confix\ncosmossdk.io/tools/confix/cmd\n# cosmossdk.io/x/evidence v0.1.1\n## explicit; go 1.21\ncosmossdk.io/x/evidence\ncosmossdk.io/x/evidence/client\ncosmossdk.io/x/evidence/client/cli\ncosmossdk.io/x/evidence/exported\ncosmossdk.io/x/evidence/keeper\ncosmossdk.io/x/evidence/simulation\ncosmossdk.io/x/evidence/types\n# cosmossdk.io/x/feegrant v0.1.1\n## explicit; go 1.21\ncosmossdk.io/x/feegrant\ncosmossdk.io/x/feegrant/client/cli\ncosmossdk.io/x/feegrant/keeper\ncosmossdk.io/x/feegrant/migrations/v2\ncosmossdk.io/x/feegrant/module\ncosmossdk.io/x/feegrant/simulation\n# cosmossdk.io/x/tx v0.13.6-0.20241003112805-ff8789a02871 => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241015015202-783e224f9517\n## explicit; go 1.21\ncosmossdk.io/x/tx/decode\ncosmossdk.io/x/tx/signing\ncosmossdk.io/x/tx/signing/aminojson\ncosmossdk.io/x/tx/signing/aminojson/internal/aminojsonpb\ncosmossdk.io/x/tx/signing/direct\ncosmossdk.io/x/tx/signing/directaux\ncosmossdk.io/x/tx/signing/textual\ncosmossdk.io/x/tx/signing/textual/internal/cbor\ncosmossdk.io/x/tx/signing/textual/internal/textualpb\n# cosmossdk.io/x/upgrade v0.1.4\n## explicit; go 1.21\ncosmossdk.io/x/upgrade\ncosmossdk.io/x/upgrade/client/cli\ncosmossdk.io/x/upgrade/exported\ncosmossdk.io/x/upgrade/internal/conv\ncosmossdk.io/x/upgrade/keeper\ncosmossdk.io/x/upgrade/plan\ncosmossdk.io/x/upgrade/types\n# filippo.io/edwards25519 v1.1.0\n## explicit; go 1.20\nfilippo.io/edwards25519\nfilippo.io/edwards25519/field\n# github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4\n## explicit\ngithub.com/99designs/go-keychain\n# github.com/99designs/keyring v1.2.2 => github.com/cosmos/keyring v1.2.0\n## explicit; go 1.17\ngithub.com/99designs/keyring\n# github.com/DataDog/datadog-go v4.8.3+incompatible\n## explicit\ngithub.com/DataDog/datadog-go/statsd\n# github.com/DataDog/zstd v1.5.5\n## explicit; go 1.14\ngithub.com/DataDog/zstd\n# github.com/Microsoft/go-winio v0.6.1\n## explicit; go 1.17\ngithub.com/Microsoft/go-winio\ngithub.com/Microsoft/go-winio/internal/fs\ngithub.com/Microsoft/go-winio/internal/socket\ngithub.com/Microsoft/go-winio/internal/stringbuffer\ngithub.com/Microsoft/go-winio/pkg/guid\n# github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6\n## explicit\ngithub.com/StackExchange/wmi\n# github.com/VictoriaMetrics/fastcache v1.6.0\n## explicit; go 1.13\ngithub.com/VictoriaMetrics/fastcache\n# github.com/allegro/bigcache v1.2.1\n## explicit\n# github.com/aws/aws-sdk-go v1.44.224\n## explicit; go 1.11\ngithub.com/aws/aws-sdk-go/aws\ngithub.com/aws/aws-sdk-go/aws/arn\ngithub.com/aws/aws-sdk-go/aws/awserr\ngithub.com/aws/aws-sdk-go/aws/awsutil\ngithub.com/aws/aws-sdk-go/aws/client\ngithub.com/aws/aws-sdk-go/aws/client/metadata\ngithub.com/aws/aws-sdk-go/aws/corehandlers\ngithub.com/aws/aws-sdk-go/aws/credentials\ngithub.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds\ngithub.com/aws/aws-sdk-go/aws/credentials/endpointcreds\ngithub.com/aws/aws-sdk-go/aws/credentials/processcreds\ngithub.com/aws/aws-sdk-go/aws/credentials/ssocreds\ngithub.com/aws/aws-sdk-go/aws/credentials/stscreds\ngithub.com/aws/aws-sdk-go/aws/csm\ngithub.com/aws/aws-sdk-go/aws/defaults\ngithub.com/aws/aws-sdk-go/aws/ec2metadata\ngithub.com/aws/aws-sdk-go/aws/endpoints\ngithub.com/aws/aws-sdk-go/aws/request\ngithub.com/aws/aws-sdk-go/aws/session\ngithub.com/aws/aws-sdk-go/aws/signer/v4\ngithub.com/aws/aws-sdk-go/internal/context\ngithub.com/aws/aws-sdk-go/internal/ini\ngithub.com/aws/aws-sdk-go/internal/s3shared\ngithub.com/aws/aws-sdk-go/internal/s3shared/arn\ngithub.com/aws/aws-sdk-go/internal/s3shared/s3err\ngithub.com/aws/aws-sdk-go/internal/sdkio\ngithub.com/aws/aws-sdk-go/internal/sdkmath\ngithub.com/aws/aws-sdk-go/internal/sdkrand\ngithub.com/aws/aws-sdk-go/internal/sdkuri\ngithub.com/aws/aws-sdk-go/internal/shareddefaults\ngithub.com/aws/aws-sdk-go/internal/strings\ngithub.com/aws/aws-sdk-go/internal/sync/singleflight\ngithub.com/aws/aws-sdk-go/private/checksum\ngithub.com/aws/aws-sdk-go/private/protocol\ngithub.com/aws/aws-sdk-go/private/protocol/eventstream\ngithub.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi\ngithub.com/aws/aws-sdk-go/private/protocol/json/jsonutil\ngithub.com/aws/aws-sdk-go/private/protocol/jsonrpc\ngithub.com/aws/aws-sdk-go/private/protocol/query\ngithub.com/aws/aws-sdk-go/private/protocol/query/queryutil\ngithub.com/aws/aws-sdk-go/private/protocol/rest\ngithub.com/aws/aws-sdk-go/private/protocol/restjson\ngithub.com/aws/aws-sdk-go/private/protocol/restxml\ngithub.com/aws/aws-sdk-go/private/protocol/xml/xmlutil\ngithub.com/aws/aws-sdk-go/service/s3\ngithub.com/aws/aws-sdk-go/service/sso\ngithub.com/aws/aws-sdk-go/service/sso/ssoiface\ngithub.com/aws/aws-sdk-go/service/sts\ngithub.com/aws/aws-sdk-go/service/sts/stsiface\n# github.com/beorn7/perks v1.0.1\n## explicit; go 1.11\ngithub.com/beorn7/perks/quantile\n# github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d\n## explicit\ngithub.com/bgentry/go-netrc/netrc\n# github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816\n## explicit\ngithub.com/bgentry/speakeasy\n# github.com/bits-and-blooms/bitset v1.8.0\n## explicit; go 1.16\ngithub.com/bits-and-blooms/bitset\n# github.com/btcsuite/btcd v0.24.2\n## explicit; go 1.17\ngithub.com/btcsuite/btcd/chaincfg\ngithub.com/btcsuite/btcd/wire\n# github.com/btcsuite/btcd/btcec/v2 v2.3.4\n## explicit; go 1.17\ngithub.com/btcsuite/btcd/btcec/v2\ngithub.com/btcsuite/btcd/btcec/v2/ecdsa\n# github.com/btcsuite/btcd/btcutil v1.1.6\n## explicit; go 1.16\ngithub.com/btcsuite/btcd/btcutil\ngithub.com/btcsuite/btcd/btcutil/base58\ngithub.com/btcsuite/btcd/btcutil/bech32\ngithub.com/btcsuite/btcd/btcutil/hdkeychain\n# github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0\n## explicit; go 1.17\ngithub.com/btcsuite/btcd/chaincfg/chainhash\n# github.com/cenkalti/backoff/v4 v4.2.1\n## explicit; go 1.18\ngithub.com/cenkalti/backoff/v4\n# github.com/cespare/xxhash/v2 v2.3.0\n## explicit; go 1.11\ngithub.com/cespare/xxhash/v2\n# github.com/chzyer/readline v1.5.1\n## explicit; go 1.15\ngithub.com/chzyer/readline\n# github.com/cockroachdb/apd/v2 v2.0.2\n## explicit\ngithub.com/cockroachdb/apd/v2\n# github.com/cockroachdb/errors v1.11.3\n## explicit; go 1.19\ngithub.com/cockroachdb/errors\ngithub.com/cockroachdb/errors/assert\ngithub.com/cockroachdb/errors/barriers\ngithub.com/cockroachdb/errors/contexttags\ngithub.com/cockroachdb/errors/domains\ngithub.com/cockroachdb/errors/errbase\ngithub.com/cockroachdb/errors/errorspb\ngithub.com/cockroachdb/errors/errutil\ngithub.com/cockroachdb/errors/hintdetail\ngithub.com/cockroachdb/errors/issuelink\ngithub.com/cockroachdb/errors/join\ngithub.com/cockroachdb/errors/markers\ngithub.com/cockroachdb/errors/oserror\ngithub.com/cockroachdb/errors/report\ngithub.com/cockroachdb/errors/safedetails\ngithub.com/cockroachdb/errors/secondary\ngithub.com/cockroachdb/errors/stdstrings\ngithub.com/cockroachdb/errors/telemetrykeys\ngithub.com/cockroachdb/errors/withstack\n# github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce\n## explicit; go 1.20\ngithub.com/cockroachdb/fifo\n# github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b\n## explicit; go 1.16\ngithub.com/cockroachdb/logtags\n# github.com/cockroachdb/pebble v1.1.2\n## explicit; go 1.20\ngithub.com/cockroachdb/pebble\ngithub.com/cockroachdb/pebble/bloom\ngithub.com/cockroachdb/pebble/internal/arenaskl\ngithub.com/cockroachdb/pebble/internal/base\ngithub.com/cockroachdb/pebble/internal/batchskl\ngithub.com/cockroachdb/pebble/internal/bytealloc\ngithub.com/cockroachdb/pebble/internal/cache\ngithub.com/cockroachdb/pebble/internal/constants\ngithub.com/cockroachdb/pebble/internal/crc\ngithub.com/cockroachdb/pebble/internal/fastrand\ngithub.com/cockroachdb/pebble/internal/humanize\ngithub.com/cockroachdb/pebble/internal/intern\ngithub.com/cockroachdb/pebble/internal/invalidating\ngithub.com/cockroachdb/pebble/internal/invariants\ngithub.com/cockroachdb/pebble/internal/keyspan\ngithub.com/cockroachdb/pebble/internal/manifest\ngithub.com/cockroachdb/pebble/internal/manual\ngithub.com/cockroachdb/pebble/internal/private\ngithub.com/cockroachdb/pebble/internal/rangedel\ngithub.com/cockroachdb/pebble/internal/rangekey\ngithub.com/cockroachdb/pebble/internal/rawalloc\ngithub.com/cockroachdb/pebble/internal/testkeys\ngithub.com/cockroachdb/pebble/objstorage\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider/objiotracing\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider/remoteobjcat\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider/sharedcache\ngithub.com/cockroachdb/pebble/objstorage/remote\ngithub.com/cockroachdb/pebble/rangekey\ngithub.com/cockroachdb/pebble/record\ngithub.com/cockroachdb/pebble/sstable\ngithub.com/cockroachdb/pebble/vfs\ngithub.com/cockroachdb/pebble/vfs/atomicfs\n# github.com/cockroachdb/redact v1.1.5\n## explicit; go 1.14\ngithub.com/cockroachdb/redact\ngithub.com/cockroachdb/redact/builder\ngithub.com/cockroachdb/redact/interfaces\ngithub.com/cockroachdb/redact/internal/buffer\ngithub.com/cockroachdb/redact/internal/escape\ngithub.com/cockroachdb/redact/internal/fmtforward\ngithub.com/cockroachdb/redact/internal/markers\ngithub.com/cockroachdb/redact/internal/redact\ngithub.com/cockroachdb/redact/internal/rfmt\ngithub.com/cockroachdb/redact/internal/rfmt/fmtsort\n# github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06\n## explicit; go 1.19\ngithub.com/cockroachdb/tokenbucket\n# github.com/coinbase/rosetta-sdk-go/types v1.0.0\n## explicit; go 1.18\ngithub.com/coinbase/rosetta-sdk-go/types\n# github.com/cometbft/cometbft v0.38.13-0.20240920204745-fdf90d16f608 => github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890\n## explicit; go 1.23.1\ngithub.com/cometbft/cometbft/abci/client\ngithub.com/cometbft/cometbft/abci/example/kvstore\ngithub.com/cometbft/cometbft/abci/server\ngithub.com/cometbft/cometbft/abci/types\ngithub.com/cometbft/cometbft/blocksync\ngithub.com/cometbft/cometbft/cmd/cometbft/commands\ngithub.com/cometbft/cometbft/config\ngithub.com/cometbft/cometbft/consensus\ngithub.com/cometbft/cometbft/consensus/types\ngithub.com/cometbft/cometbft/crypto\ngithub.com/cometbft/cometbft/crypto/batch\ngithub.com/cometbft/cometbft/crypto/ed25519\ngithub.com/cometbft/cometbft/crypto/encoding\ngithub.com/cometbft/cometbft/crypto/merkle\ngithub.com/cometbft/cometbft/crypto/secp256k1\ngithub.com/cometbft/cometbft/crypto/sr25519\ngithub.com/cometbft/cometbft/crypto/tmhash\ngithub.com/cometbft/cometbft/evidence\ngithub.com/cometbft/cometbft/inspect\ngithub.com/cometbft/cometbft/inspect/rpc\ngithub.com/cometbft/cometbft/internal/indexer\ngithub.com/cometbft/cometbft/internal/test\ngithub.com/cometbft/cometbft/libs/async\ngithub.com/cometbft/cometbft/libs/autofile\ngithub.com/cometbft/cometbft/libs/bits\ngithub.com/cometbft/cometbft/libs/bytes\ngithub.com/cometbft/cometbft/libs/cli\ngithub.com/cometbft/cometbft/libs/cli/flags\ngithub.com/cometbft/cometbft/libs/clist\ngithub.com/cometbft/cometbft/libs/cmap\ngithub.com/cometbft/cometbft/libs/events\ngithub.com/cometbft/cometbft/libs/fail\ngithub.com/cometbft/cometbft/libs/flowrate\ngithub.com/cometbft/cometbft/libs/json\ngithub.com/cometbft/cometbft/libs/log\ngithub.com/cometbft/cometbft/libs/math\ngithub.com/cometbft/cometbft/libs/net\ngithub.com/cometbft/cometbft/libs/os\ngithub.com/cometbft/cometbft/libs/progressbar\ngithub.com/cometbft/cometbft/libs/protoio\ngithub.com/cometbft/cometbft/libs/pubsub\ngithub.com/cometbft/cometbft/libs/pubsub/query\ngithub.com/cometbft/cometbft/libs/pubsub/query/syntax\ngithub.com/cometbft/cometbft/libs/rand\ngithub.com/cometbft/cometbft/libs/service\ngithub.com/cometbft/cometbft/libs/strings\ngithub.com/cometbft/cometbft/libs/sync\ngithub.com/cometbft/cometbft/libs/tempfile\ngithub.com/cometbft/cometbft/libs/timer\ngithub.com/cometbft/cometbft/light\ngithub.com/cometbft/cometbft/light/provider\ngithub.com/cometbft/cometbft/light/provider/http\ngithub.com/cometbft/cometbft/light/proxy\ngithub.com/cometbft/cometbft/light/rpc\ngithub.com/cometbft/cometbft/light/store\ngithub.com/cometbft/cometbft/light/store/db\ngithub.com/cometbft/cometbft/mempool\ngithub.com/cometbft/cometbft/node\ngithub.com/cometbft/cometbft/p2p\ngithub.com/cometbft/cometbft/p2p/conn\ngithub.com/cometbft/cometbft/p2p/pex\ngithub.com/cometbft/cometbft/privval\ngithub.com/cometbft/cometbft/proto/tendermint/blocksync\ngithub.com/cometbft/cometbft/proto/tendermint/consensus\ngithub.com/cometbft/cometbft/proto/tendermint/crypto\ngithub.com/cometbft/cometbft/proto/tendermint/libs/bits\ngithub.com/cometbft/cometbft/proto/tendermint/mempool\ngithub.com/cometbft/cometbft/proto/tendermint/p2p\ngithub.com/cometbft/cometbft/proto/tendermint/privval\ngithub.com/cometbft/cometbft/proto/tendermint/state\ngithub.com/cometbft/cometbft/proto/tendermint/statesync\ngithub.com/cometbft/cometbft/proto/tendermint/store\ngithub.com/cometbft/cometbft/proto/tendermint/types\ngithub.com/cometbft/cometbft/proto/tendermint/version\ngithub.com/cometbft/cometbft/proxy\ngithub.com/cometbft/cometbft/rpc/client\ngithub.com/cometbft/cometbft/rpc/client/http\ngithub.com/cometbft/cometbft/rpc/client/local\ngithub.com/cometbft/cometbft/rpc/core\ngithub.com/cometbft/cometbft/rpc/core/types\ngithub.com/cometbft/cometbft/rpc/grpc\ngithub.com/cometbft/cometbft/rpc/jsonrpc/client\ngithub.com/cometbft/cometbft/rpc/jsonrpc/server\ngithub.com/cometbft/cometbft/rpc/jsonrpc/types\ngithub.com/cometbft/cometbft/state\ngithub.com/cometbft/cometbft/state/indexer\ngithub.com/cometbft/cometbft/state/indexer/block\ngithub.com/cometbft/cometbft/state/indexer/block/kv\ngithub.com/cometbft/cometbft/state/indexer/block/null\ngithub.com/cometbft/cometbft/state/indexer/sink/psql\ngithub.com/cometbft/cometbft/state/txindex\ngithub.com/cometbft/cometbft/state/txindex/kv\ngithub.com/cometbft/cometbft/state/txindex/null\ngithub.com/cometbft/cometbft/statesync\ngithub.com/cometbft/cometbft/store\ngithub.com/cometbft/cometbft/test/e2e/app\ngithub.com/cometbft/cometbft/types\ngithub.com/cometbft/cometbft/types/time\ngithub.com/cometbft/cometbft/version\n# github.com/cometbft/cometbft-db v0.15.0\n## explicit; go 1.23.1\ngithub.com/cometbft/cometbft-db\n# github.com/cosmos/btcutil v1.0.5\n## explicit; go 1.19\ngithub.com/cosmos/btcutil/bech32\n# github.com/cosmos/cosmos-db v1.0.3-0.20240408151834-e75f6e4b28d8\n## explicit; go 1.19\ngithub.com/cosmos/cosmos-db\n# github.com/cosmos/cosmos-proto v1.0.0-beta.5\n## explicit; go 1.18\ngithub.com/cosmos/cosmos-proto\ngithub.com/cosmos/cosmos-proto/anyutil\ngithub.com/cosmos/cosmos-proto/runtime\n# github.com/cosmos/cosmos-sdk v0.50.9 => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517\n## explicit; go 1.21\ngithub.com/cosmos/cosmos-sdk/baseapp\ngithub.com/cosmos/cosmos-sdk/baseapp/internal/protocompat\ngithub.com/cosmos/cosmos-sdk/baseapp/oe\ngithub.com/cosmos/cosmos-sdk/client\ngithub.com/cosmos/cosmos-sdk/client/config\ngithub.com/cosmos/cosmos-sdk/client/debug\ngithub.com/cosmos/cosmos-sdk/client/docs\ngithub.com/cosmos/cosmos-sdk/client/flags\ngithub.com/cosmos/cosmos-sdk/client/grpc/cmtservice\ngithub.com/cosmos/cosmos-sdk/client/grpc/node\ngithub.com/cosmos/cosmos-sdk/client/grpc/reflection\ngithub.com/cosmos/cosmos-sdk/client/input\ngithub.com/cosmos/cosmos-sdk/client/keys\ngithub.com/cosmos/cosmos-sdk/client/pruning\ngithub.com/cosmos/cosmos-sdk/client/rpc\ngithub.com/cosmos/cosmos-sdk/client/snapshot\ngithub.com/cosmos/cosmos-sdk/client/tx\ngithub.com/cosmos/cosmos-sdk/codec\ngithub.com/cosmos/cosmos-sdk/codec/address\ngithub.com/cosmos/cosmos-sdk/codec/legacy\ngithub.com/cosmos/cosmos-sdk/codec/testutil\ngithub.com/cosmos/cosmos-sdk/codec/types\ngithub.com/cosmos/cosmos-sdk/codec/unknownproto\ngithub.com/cosmos/cosmos-sdk/crypto\ngithub.com/cosmos/cosmos-sdk/crypto/codec\ngithub.com/cosmos/cosmos-sdk/crypto/hd\ngithub.com/cosmos/cosmos-sdk/crypto/keyring\ngithub.com/cosmos/cosmos-sdk/crypto/keys/bcrypt\ngithub.com/cosmos/cosmos-sdk/crypto/keys/ed25519\ngithub.com/cosmos/cosmos-sdk/crypto/keys/internal/ecdsa\ngithub.com/cosmos/cosmos-sdk/crypto/keys/multisig\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1/libsecp256k1/include\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1/libsecp256k1/src\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1/libsecp256k1/src/modules/recovery\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256r1\ngithub.com/cosmos/cosmos-sdk/crypto/ledger\ngithub.com/cosmos/cosmos-sdk/crypto/types\ngithub.com/cosmos/cosmos-sdk/crypto/types/multisig\ngithub.com/cosmos/cosmos-sdk/crypto/xsalsa20symmetric\ngithub.com/cosmos/cosmos-sdk/internal/conv\ngithub.com/cosmos/cosmos-sdk/runtime\ngithub.com/cosmos/cosmos-sdk/runtime/services\ngithub.com/cosmos/cosmos-sdk/server\ngithub.com/cosmos/cosmos-sdk/server/api\ngithub.com/cosmos/cosmos-sdk/server/cmd\ngithub.com/cosmos/cosmos-sdk/server/config\ngithub.com/cosmos/cosmos-sdk/server/grpc\ngithub.com/cosmos/cosmos-sdk/server/grpc/gogoreflection\ngithub.com/cosmos/cosmos-sdk/server/grpc/reflection/v2alpha1\ngithub.com/cosmos/cosmos-sdk/server/log\ngithub.com/cosmos/cosmos-sdk/server/types\ngithub.com/cosmos/cosmos-sdk/std\ngithub.com/cosmos/cosmos-sdk/telemetry\ngithub.com/cosmos/cosmos-sdk/testutil\ngithub.com/cosmos/cosmos-sdk/testutil/mock\ngithub.com/cosmos/cosmos-sdk/testutil/sims\ngithub.com/cosmos/cosmos-sdk/testutil/testdata\ngithub.com/cosmos/cosmos-sdk/types\ngithub.com/cosmos/cosmos-sdk/types/address\ngithub.com/cosmos/cosmos-sdk/types/bech32\ngithub.com/cosmos/cosmos-sdk/types/bech32/legacybech32\ngithub.com/cosmos/cosmos-sdk/types/errors\ngithub.com/cosmos/cosmos-sdk/types/grpc\ngithub.com/cosmos/cosmos-sdk/types/kv\ngithub.com/cosmos/cosmos-sdk/types/mempool\ngithub.com/cosmos/cosmos-sdk/types/module\ngithub.com/cosmos/cosmos-sdk/types/module/testutil\ngithub.com/cosmos/cosmos-sdk/types/msgservice\ngithub.com/cosmos/cosmos-sdk/types/query\ngithub.com/cosmos/cosmos-sdk/types/registry\ngithub.com/cosmos/cosmos-sdk/types/simulation\ngithub.com/cosmos/cosmos-sdk/types/tx\ngithub.com/cosmos/cosmos-sdk/types/tx/amino\ngithub.com/cosmos/cosmos-sdk/types/tx/signing\ngithub.com/cosmos/cosmos-sdk/version\ngithub.com/cosmos/cosmos-sdk/x/auth\ngithub.com/cosmos/cosmos-sdk/x/auth/ante\ngithub.com/cosmos/cosmos-sdk/x/auth/client\ngithub.com/cosmos/cosmos-sdk/x/auth/client/cli\ngithub.com/cosmos/cosmos-sdk/x/auth/codec\ngithub.com/cosmos/cosmos-sdk/x/auth/exported\ngithub.com/cosmos/cosmos-sdk/x/auth/keeper\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v5\ngithub.com/cosmos/cosmos-sdk/x/auth/posthandler\ngithub.com/cosmos/cosmos-sdk/x/auth/signing\ngithub.com/cosmos/cosmos-sdk/x/auth/simulation\ngithub.com/cosmos/cosmos-sdk/x/auth/tx\ngithub.com/cosmos/cosmos-sdk/x/auth/tx/config\ngithub.com/cosmos/cosmos-sdk/x/auth/types\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting/client/cli\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting/exported\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting/types\ngithub.com/cosmos/cosmos-sdk/x/authz\ngithub.com/cosmos/cosmos-sdk/x/authz/client/cli\ngithub.com/cosmos/cosmos-sdk/x/authz/keeper\ngithub.com/cosmos/cosmos-sdk/x/authz/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/authz/module\ngithub.com/cosmos/cosmos-sdk/x/authz/simulation\ngithub.com/cosmos/cosmos-sdk/x/bank\ngithub.com/cosmos/cosmos-sdk/x/bank/client/cli\ngithub.com/cosmos/cosmos-sdk/x/bank/exported\ngithub.com/cosmos/cosmos-sdk/x/bank/keeper\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/bank/simulation\ngithub.com/cosmos/cosmos-sdk/x/bank/types\ngithub.com/cosmos/cosmos-sdk/x/consensus\ngithub.com/cosmos/cosmos-sdk/x/consensus/exported\ngithub.com/cosmos/cosmos-sdk/x/consensus/keeper\ngithub.com/cosmos/cosmos-sdk/x/consensus/types\ngithub.com/cosmos/cosmos-sdk/x/crisis\ngithub.com/cosmos/cosmos-sdk/x/crisis/exported\ngithub.com/cosmos/cosmos-sdk/x/crisis/keeper\ngithub.com/cosmos/cosmos-sdk/x/crisis/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/crisis/types\ngithub.com/cosmos/cosmos-sdk/x/distribution\ngithub.com/cosmos/cosmos-sdk/x/distribution/client/cli\ngithub.com/cosmos/cosmos-sdk/x/distribution/exported\ngithub.com/cosmos/cosmos-sdk/x/distribution/keeper\ngithub.com/cosmos/cosmos-sdk/x/distribution/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/distribution/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/distribution/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/distribution/simulation\ngithub.com/cosmos/cosmos-sdk/x/distribution/types\ngithub.com/cosmos/cosmos-sdk/x/genutil\ngithub.com/cosmos/cosmos-sdk/x/genutil/client/cli\ngithub.com/cosmos/cosmos-sdk/x/genutil/migrations/v043\ngithub.com/cosmos/cosmos-sdk/x/genutil/migrations/v046\ngithub.com/cosmos/cosmos-sdk/x/genutil/migrations/v047\ngithub.com/cosmos/cosmos-sdk/x/genutil/types\ngithub.com/cosmos/cosmos-sdk/x/gov\ngithub.com/cosmos/cosmos-sdk/x/gov/client\ngithub.com/cosmos/cosmos-sdk/x/gov/client/cli\ngithub.com/cosmos/cosmos-sdk/x/gov/client/utils\ngithub.com/cosmos/cosmos-sdk/x/gov/exported\ngithub.com/cosmos/cosmos-sdk/x/gov/keeper\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v5\ngithub.com/cosmos/cosmos-sdk/x/gov/simulation\ngithub.com/cosmos/cosmos-sdk/x/gov/types\ngithub.com/cosmos/cosmos-sdk/x/gov/types/v1\ngithub.com/cosmos/cosmos-sdk/x/gov/types/v1beta1\ngithub.com/cosmos/cosmos-sdk/x/group\ngithub.com/cosmos/cosmos-sdk/x/group/errors\ngithub.com/cosmos/cosmos-sdk/x/group/internal/math\ngithub.com/cosmos/cosmos-sdk/x/group/internal/orm\ngithub.com/cosmos/cosmos-sdk/x/group/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/mint\ngithub.com/cosmos/cosmos-sdk/x/mint/exported\ngithub.com/cosmos/cosmos-sdk/x/mint/keeper\ngithub.com/cosmos/cosmos-sdk/x/mint/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/mint/simulation\ngithub.com/cosmos/cosmos-sdk/x/mint/types\ngithub.com/cosmos/cosmos-sdk/x/params\ngithub.com/cosmos/cosmos-sdk/x/params/client\ngithub.com/cosmos/cosmos-sdk/x/params/client/cli\ngithub.com/cosmos/cosmos-sdk/x/params/client/utils\ngithub.com/cosmos/cosmos-sdk/x/params/keeper\ngithub.com/cosmos/cosmos-sdk/x/params/types\ngithub.com/cosmos/cosmos-sdk/x/params/types/proposal\ngithub.com/cosmos/cosmos-sdk/x/simulation\ngithub.com/cosmos/cosmos-sdk/x/simulation/client/cli\ngithub.com/cosmos/cosmos-sdk/x/slashing\ngithub.com/cosmos/cosmos-sdk/x/slashing/exported\ngithub.com/cosmos/cosmos-sdk/x/slashing/keeper\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/slashing/simulation\ngithub.com/cosmos/cosmos-sdk/x/slashing/types\ngithub.com/cosmos/cosmos-sdk/x/staking\ngithub.com/cosmos/cosmos-sdk/x/staking/client/cli\ngithub.com/cosmos/cosmos-sdk/x/staking/exported\ngithub.com/cosmos/cosmos-sdk/x/staking/keeper\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v5\ngithub.com/cosmos/cosmos-sdk/x/staking/simulation\ngithub.com/cosmos/cosmos-sdk/x/staking/types\n# github.com/cosmos/go-bip39 v1.0.0\n## explicit; go 1.15\ngithub.com/cosmos/go-bip39\n# github.com/cosmos/gogogateway v1.2.0\n## explicit; go 1.12\ngithub.com/cosmos/gogogateway\n# github.com/cosmos/gogoproto v1.7.0\n## explicit; go 1.19\ngithub.com/cosmos/gogoproto/gogoproto\ngithub.com/cosmos/gogoproto/grpc\ngithub.com/cosmos/gogoproto/io\ngithub.com/cosmos/gogoproto/jsonpb\ngithub.com/cosmos/gogoproto/proto\ngithub.com/cosmos/gogoproto/protoc-gen-gogo/descriptor\ngithub.com/cosmos/gogoproto/sortkeys\ngithub.com/cosmos/gogoproto/types\ngithub.com/cosmos/gogoproto/types/any\ngithub.com/cosmos/gogoproto/types/any/internal\n# github.com/cosmos/iavl v1.2.0\n## explicit; go 1.20\ngithub.com/cosmos/iavl\ngithub.com/cosmos/iavl/cache\ngithub.com/cosmos/iavl/db\ngithub.com/cosmos/iavl/fastnode\ngithub.com/cosmos/iavl/internal/bytes\ngithub.com/cosmos/iavl/internal/color\ngithub.com/cosmos/iavl/internal/encoding\ngithub.com/cosmos/iavl/keyformat\ngithub.com/cosmos/iavl/proto\n# github.com/cosmos/ibc-go/modules/capability v1.0.1\n## explicit; go 1.21\ngithub.com/cosmos/ibc-go/modules/capability\ngithub.com/cosmos/ibc-go/modules/capability/keeper\ngithub.com/cosmos/ibc-go/modules/capability/simulation\ngithub.com/cosmos/ibc-go/modules/capability/types\n# github.com/cosmos/ibc-go/v8 v8.5.1\n## explicit; go 1.21\ngithub.com/cosmos/ibc-go/v8/modules/apps/transfer\ngithub.com/cosmos/ibc-go/v8/modules/apps/transfer/client/cli\ngithub.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper\ngithub.com/cosmos/ibc-go/v8/modules/apps/transfer/simulation\ngithub.com/cosmos/ibc-go/v8/modules/apps/transfer/types\ngithub.com/cosmos/ibc-go/v8/modules/core\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/client/cli\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/client/utils\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/keeper\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/migrations/v7\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/simulation\ngithub.com/cosmos/ibc-go/v8/modules/core/02-client/types\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection/client/cli\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection/client/utils\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection/keeper\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection/migrations/v7\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection/simulation\ngithub.com/cosmos/ibc-go/v8/modules/core/03-connection/types\ngithub.com/cosmos/ibc-go/v8/modules/core/04-channel\ngithub.com/cosmos/ibc-go/v8/modules/core/04-channel/client/cli\ngithub.com/cosmos/ibc-go/v8/modules/core/04-channel/client/utils\ngithub.com/cosmos/ibc-go/v8/modules/core/04-channel/keeper\ngithub.com/cosmos/ibc-go/v8/modules/core/04-channel/simulation\ngithub.com/cosmos/ibc-go/v8/modules/core/04-channel/types\ngithub.com/cosmos/ibc-go/v8/modules/core/05-port/keeper\ngithub.com/cosmos/ibc-go/v8/modules/core/05-port/types\ngithub.com/cosmos/ibc-go/v8/modules/core/23-commitment/types\ngithub.com/cosmos/ibc-go/v8/modules/core/24-host\ngithub.com/cosmos/ibc-go/v8/modules/core/ante\ngithub.com/cosmos/ibc-go/v8/modules/core/client\ngithub.com/cosmos/ibc-go/v8/modules/core/client/cli\ngithub.com/cosmos/ibc-go/v8/modules/core/errors\ngithub.com/cosmos/ibc-go/v8/modules/core/exported\ngithub.com/cosmos/ibc-go/v8/modules/core/keeper\ngithub.com/cosmos/ibc-go/v8/modules/core/simulation\ngithub.com/cosmos/ibc-go/v8/modules/core/types\ngithub.com/cosmos/ibc-go/v8/modules/light-clients/06-solomachine\ngithub.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint\ngithub.com/cosmos/ibc-go/v8/modules/light-clients/09-localhost\n# github.com/cosmos/ics23/go v0.11.0\n## explicit; go 1.21\ngithub.com/cosmos/ics23/go\n# github.com/cosmos/ledger-cosmos-go v0.13.3\n## explicit; go 1.18\ngithub.com/cosmos/ledger-cosmos-go\n# github.com/cosmos/rosetta v0.50.3-1\n## explicit; go 1.21\ngithub.com/cosmos/rosetta\ngithub.com/cosmos/rosetta/cmd\ngithub.com/cosmos/rosetta/lib/errors\ngithub.com/cosmos/rosetta/lib/internal/service\ngithub.com/cosmos/rosetta/lib/server\ngithub.com/cosmos/rosetta/lib/types\n# github.com/cosmos/rosetta-sdk-go v0.10.0\n## explicit; go 1.18\ngithub.com/cosmos/rosetta-sdk-go/asserter\ngithub.com/cosmos/rosetta-sdk-go/errors\ngithub.com/cosmos/rosetta-sdk-go/server\n# github.com/creachadair/atomicfile v0.3.1\n## explicit; go 1.19\ngithub.com/creachadair/atomicfile\n# github.com/creachadair/tomledit v0.0.24\n## explicit; go 1.18\ngithub.com/creachadair/tomledit\ngithub.com/creachadair/tomledit/parser\ngithub.com/creachadair/tomledit/scanner\ngithub.com/creachadair/tomledit/transform\n# github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716\n## explicit; go 1.21\ngithub.com/crypto-org-chain/go-block-stm\n# github.com/danieljoos/wincred v1.2.0\n## explicit; go 1.18\ngithub.com/danieljoos/wincred\n# github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc\n## explicit\ngithub.com/davecgh/go-spew/spew\n# github.com/deckarep/golang-set/v2 v2.1.0\n## explicit; go 1.18\ngithub.com/deckarep/golang-set/v2\n# github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0\n## explicit; go 1.17\ngithub.com/decred/dcrd/dcrec/secp256k1/v4\ngithub.com/decred/dcrd/dcrec/secp256k1/v4/ecdsa\n# github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f\n## explicit\ngithub.com/desertbit/timer\n# github.com/dgraph-io/badger/v4 v4.3.0\n## explicit; go 1.19\ngithub.com/dgraph-io/badger/v4\ngithub.com/dgraph-io/badger/v4/fb\ngithub.com/dgraph-io/badger/v4/options\ngithub.com/dgraph-io/badger/v4/pb\ngithub.com/dgraph-io/badger/v4/skl\ngithub.com/dgraph-io/badger/v4/table\ngithub.com/dgraph-io/badger/v4/trie\ngithub.com/dgraph-io/badger/v4/y\n# github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91\n## explicit; go 1.19\ngithub.com/dgraph-io/ristretto\ngithub.com/dgraph-io/ristretto/z\ngithub.com/dgraph-io/ristretto/z/simd\n# github.com/dlclark/regexp2 v1.7.0\n## explicit; go 1.13\ngithub.com/dlclark/regexp2\ngithub.com/dlclark/regexp2/syntax\n# github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7\n## explicit; go 1.16\ngithub.com/dop251/goja\ngithub.com/dop251/goja/ast\ngithub.com/dop251/goja/file\ngithub.com/dop251/goja/ftoa\ngithub.com/dop251/goja/ftoa/internal/fast\ngithub.com/dop251/goja/parser\ngithub.com/dop251/goja/token\ngithub.com/dop251/goja/unistring\n# github.com/dustin/go-humanize v1.0.1\n## explicit; go 1.16\ngithub.com/dustin/go-humanize\n# github.com/dvsekhvalnov/jose2go v1.6.0\n## explicit; go 1.15\ngithub.com/dvsekhvalnov/jose2go\ngithub.com/dvsekhvalnov/jose2go/aes\ngithub.com/dvsekhvalnov/jose2go/arrays\ngithub.com/dvsekhvalnov/jose2go/base64url\ngithub.com/dvsekhvalnov/jose2go/compact\ngithub.com/dvsekhvalnov/jose2go/kdf\ngithub.com/dvsekhvalnov/jose2go/keys/ecc\ngithub.com/dvsekhvalnov/jose2go/padding\n# github.com/edsrzf/mmap-go v1.0.0\n## explicit\ngithub.com/edsrzf/mmap-go\n# github.com/emicklei/dot v1.6.1\n## explicit; go 1.13\ngithub.com/emicklei/dot\n# github.com/ethereum/go-ethereum v1.10.26 => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183\n## explicit; go 1.19\ngithub.com/ethereum/go-ethereum\ngithub.com/ethereum/go-ethereum/accounts\ngithub.com/ethereum/go-ethereum/accounts/abi\ngithub.com/ethereum/go-ethereum/accounts/keystore\ngithub.com/ethereum/go-ethereum/accounts/scwallet\ngithub.com/ethereum/go-ethereum/common\ngithub.com/ethereum/go-ethereum/common/bitutil\ngithub.com/ethereum/go-ethereum/common/hexutil\ngithub.com/ethereum/go-ethereum/common/lru\ngithub.com/ethereum/go-ethereum/common/math\ngithub.com/ethereum/go-ethereum/common/mclock\ngithub.com/ethereum/go-ethereum/common/prque\ngithub.com/ethereum/go-ethereum/consensus\ngithub.com/ethereum/go-ethereum/consensus/ethash\ngithub.com/ethereum/go-ethereum/consensus/misc\ngithub.com/ethereum/go-ethereum/core\ngithub.com/ethereum/go-ethereum/core/bloombits\ngithub.com/ethereum/go-ethereum/core/rawdb\ngithub.com/ethereum/go-ethereum/core/state\ngithub.com/ethereum/go-ethereum/core/state/snapshot\ngithub.com/ethereum/go-ethereum/core/types\ngithub.com/ethereum/go-ethereum/core/vm\ngithub.com/ethereum/go-ethereum/crypto\ngithub.com/ethereum/go-ethereum/crypto/blake2b\ngithub.com/ethereum/go-ethereum/crypto/bls12381\ngithub.com/ethereum/go-ethereum/crypto/bn256\ngithub.com/ethereum/go-ethereum/crypto/bn256/cloudflare\ngithub.com/ethereum/go-ethereum/crypto/bn256/google\ngithub.com/ethereum/go-ethereum/crypto/ecies\ngithub.com/ethereum/go-ethereum/crypto/secp256k1\ngithub.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/include\ngithub.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src\ngithub.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/modules/recovery\ngithub.com/ethereum/go-ethereum/eth/filters\ngithub.com/ethereum/go-ethereum/eth/tracers\ngithub.com/ethereum/go-ethereum/eth/tracers/js\ngithub.com/ethereum/go-ethereum/eth/tracers/js/internal/tracers\ngithub.com/ethereum/go-ethereum/eth/tracers/logger\ngithub.com/ethereum/go-ethereum/eth/tracers/native\ngithub.com/ethereum/go-ethereum/ethclient\ngithub.com/ethereum/go-ethereum/ethdb\ngithub.com/ethereum/go-ethereum/ethdb/leveldb\ngithub.com/ethereum/go-ethereum/ethdb/memorydb\ngithub.com/ethereum/go-ethereum/ethdb/pebble\ngithub.com/ethereum/go-ethereum/event\ngithub.com/ethereum/go-ethereum/internal/ethapi\ngithub.com/ethereum/go-ethereum/internal/syncx\ngithub.com/ethereum/go-ethereum/internal/version\ngithub.com/ethereum/go-ethereum/log\ngithub.com/ethereum/go-ethereum/metrics\ngithub.com/ethereum/go-ethereum/metrics/exp\ngithub.com/ethereum/go-ethereum/metrics/prometheus\ngithub.com/ethereum/go-ethereum/p2p\ngithub.com/ethereum/go-ethereum/p2p/discover\ngithub.com/ethereum/go-ethereum/p2p/discover/v4wire\ngithub.com/ethereum/go-ethereum/p2p/discover/v5wire\ngithub.com/ethereum/go-ethereum/p2p/enode\ngithub.com/ethereum/go-ethereum/p2p/enr\ngithub.com/ethereum/go-ethereum/p2p/nat\ngithub.com/ethereum/go-ethereum/p2p/netutil\ngithub.com/ethereum/go-ethereum/p2p/rlpx\ngithub.com/ethereum/go-ethereum/params\ngithub.com/ethereum/go-ethereum/rlp\ngithub.com/ethereum/go-ethereum/rlp/internal/rlpstruct\ngithub.com/ethereum/go-ethereum/rpc\ngithub.com/ethereum/go-ethereum/signer/core/apitypes\ngithub.com/ethereum/go-ethereum/trie\n# github.com/fatih/color v1.16.0\n## explicit; go 1.17\ngithub.com/fatih/color\n# github.com/felixge/httpsnoop v1.0.4\n## explicit; go 1.13\ngithub.com/felixge/httpsnoop\n# github.com/fsnotify/fsnotify v1.7.0\n## explicit; go 1.17\ngithub.com/fsnotify/fsnotify\n# github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff\n## explicit\ngithub.com/gballet/go-libpcsclite\n# github.com/getsentry/sentry-go v0.27.0\n## explicit; go 1.18\ngithub.com/getsentry/sentry-go\ngithub.com/getsentry/sentry-go/internal/debug\ngithub.com/getsentry/sentry-go/internal/otel/baggage\ngithub.com/getsentry/sentry-go/internal/otel/baggage/internal/baggage\ngithub.com/getsentry/sentry-go/internal/ratelimit\ngithub.com/getsentry/sentry-go/internal/traceparser\n# github.com/go-kit/kit v0.13.0\n## explicit; go 1.17\ngithub.com/go-kit/kit/metrics\ngithub.com/go-kit/kit/metrics/discard\ngithub.com/go-kit/kit/metrics/internal/lv\ngithub.com/go-kit/kit/metrics/prometheus\n# github.com/go-kit/log v0.2.1\n## explicit; go 1.17\ngithub.com/go-kit/log\ngithub.com/go-kit/log/level\ngithub.com/go-kit/log/term\n# github.com/go-logfmt/logfmt v0.6.0\n## explicit; go 1.17\ngithub.com/go-logfmt/logfmt\n# github.com/go-logr/logr v1.4.1\n## explicit; go 1.18\ngithub.com/go-logr/logr\ngithub.com/go-logr/logr/funcr\n# github.com/go-logr/stdr v1.2.2\n## explicit; go 1.16\ngithub.com/go-logr/stdr\n# github.com/go-ole/go-ole v1.2.6\n## explicit; go 1.12\ngithub.com/go-ole/go-ole\ngithub.com/go-ole/go-ole/oleutil\n# github.com/go-sourcemap/sourcemap v2.1.3+incompatible\n## explicit\ngithub.com/go-sourcemap/sourcemap\ngithub.com/go-sourcemap/sourcemap/internal/base64vlq\n# github.com/go-stack/stack v1.8.1\n## explicit; go 1.17\ngithub.com/go-stack/stack\n# github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2\n## explicit; go 1.12\ngithub.com/godbus/dbus\n# github.com/gofrs/flock v0.8.1\n## explicit\ngithub.com/gofrs/flock\n# github.com/gogo/googleapis v1.4.1\n## explicit; go 1.12\ngithub.com/gogo/googleapis/google/api\n# github.com/gogo/protobuf v1.3.2\n## explicit; go 1.15\ngithub.com/gogo/protobuf/gogoproto\ngithub.com/gogo/protobuf/proto\ngithub.com/gogo/protobuf/protoc-gen-gogo/descriptor\ngithub.com/gogo/protobuf/sortkeys\ngithub.com/gogo/protobuf/types\n# github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da\n## explicit\ngithub.com/golang/groupcache/lru\n# github.com/golang/mock v1.6.0\n## explicit; go 1.11\ngithub.com/golang/mock/gomock\n# github.com/golang/protobuf v1.5.4\n## explicit; go 1.17\ngithub.com/golang/protobuf/descriptor\ngithub.com/golang/protobuf/jsonpb\ngithub.com/golang/protobuf/proto\ngithub.com/golang/protobuf/protoc-gen-go/descriptor\ngithub.com/golang/protobuf/ptypes/any\ngithub.com/golang/protobuf/ptypes/duration\ngithub.com/golang/protobuf/ptypes/empty\ngithub.com/golang/protobuf/ptypes/timestamp\ngithub.com/golang/protobuf/ptypes/wrappers\n# github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb\n## explicit\ngithub.com/golang/snappy\n# github.com/google/btree v1.1.3\n## explicit; go 1.18\ngithub.com/google/btree\n# github.com/google/flatbuffers v1.12.1\n## explicit\ngithub.com/google/flatbuffers/go\n# github.com/google/go-cmp v0.6.0\n## explicit; go 1.13\ngithub.com/google/go-cmp/cmp\ngithub.com/google/go-cmp/cmp/cmpopts\ngithub.com/google/go-cmp/cmp/internal/diff\ngithub.com/google/go-cmp/cmp/internal/flags\ngithub.com/google/go-cmp/cmp/internal/function\ngithub.com/google/go-cmp/cmp/internal/value\n# github.com/google/orderedcode v0.0.1\n## explicit\ngithub.com/google/orderedcode\n# github.com/google/s2a-go v0.1.7\n## explicit; go 1.19\ngithub.com/google/s2a-go\ngithub.com/google/s2a-go/fallback\ngithub.com/google/s2a-go/internal/authinfo\ngithub.com/google/s2a-go/internal/handshaker\ngithub.com/google/s2a-go/internal/handshaker/service\ngithub.com/google/s2a-go/internal/proto/common_go_proto\ngithub.com/google/s2a-go/internal/proto/s2a_context_go_proto\ngithub.com/google/s2a-go/internal/proto/s2a_go_proto\ngithub.com/google/s2a-go/internal/proto/v2/common_go_proto\ngithub.com/google/s2a-go/internal/proto/v2/s2a_context_go_proto\ngithub.com/google/s2a-go/internal/proto/v2/s2a_go_proto\ngithub.com/google/s2a-go/internal/record\ngithub.com/google/s2a-go/internal/record/internal/aeadcrypter\ngithub.com/google/s2a-go/internal/record/internal/halfconn\ngithub.com/google/s2a-go/internal/tokenmanager\ngithub.com/google/s2a-go/internal/v2\ngithub.com/google/s2a-go/internal/v2/certverifier\ngithub.com/google/s2a-go/internal/v2/remotesigner\ngithub.com/google/s2a-go/internal/v2/tlsconfigstore\ngithub.com/google/s2a-go/retry\ngithub.com/google/s2a-go/stream\n# github.com/google/uuid v1.6.0\n## explicit\ngithub.com/google/uuid\n# github.com/googleapis/enterprise-certificate-proxy v0.3.2\n## explicit; go 1.19\ngithub.com/googleapis/enterprise-certificate-proxy/client\ngithub.com/googleapis/enterprise-certificate-proxy/client/util\n# github.com/googleapis/gax-go/v2 v2.12.5\n## explicit; go 1.20\ngithub.com/googleapis/gax-go/v2\ngithub.com/googleapis/gax-go/v2/apierror\ngithub.com/googleapis/gax-go/v2/apierror/internal/proto\ngithub.com/googleapis/gax-go/v2/callctx\ngithub.com/googleapis/gax-go/v2/internal\n# github.com/gorilla/handlers v1.5.2\n## explicit; go 1.20\ngithub.com/gorilla/handlers\n# github.com/gorilla/mux v1.8.1\n## explicit; go 1.20\ngithub.com/gorilla/mux\n# github.com/gorilla/websocket v1.5.3\n## explicit; go 1.12\ngithub.com/gorilla/websocket\n# github.com/grpc-ecosystem/go-grpc-middleware v1.4.0\n## explicit; go 1.14\ngithub.com/grpc-ecosystem/go-grpc-middleware\ngithub.com/grpc-ecosystem/go-grpc-middleware/recovery\n# github.com/grpc-ecosystem/grpc-gateway v1.16.0\n## explicit; go 1.14\ngithub.com/grpc-ecosystem/grpc-gateway/internal\ngithub.com/grpc-ecosystem/grpc-gateway/runtime\ngithub.com/grpc-ecosystem/grpc-gateway/utilities\n# github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c\n## explicit\ngithub.com/gsterjov/go-libsecret\n# github.com/hashicorp/go-cleanhttp v0.5.2\n## explicit; go 1.13\ngithub.com/hashicorp/go-cleanhttp\n# github.com/hashicorp/go-getter v1.7.4\n## explicit; go 1.13\ngithub.com/hashicorp/go-getter\ngithub.com/hashicorp/go-getter/helper/url\n# github.com/hashicorp/go-hclog v1.5.0\n## explicit; go 1.13\ngithub.com/hashicorp/go-hclog\n# github.com/hashicorp/go-immutable-radix v1.3.1\n## explicit\ngithub.com/hashicorp/go-immutable-radix\n# github.com/hashicorp/go-metrics v0.5.3\n## explicit; go 1.12\ngithub.com/hashicorp/go-metrics\ngithub.com/hashicorp/go-metrics/datadog\ngithub.com/hashicorp/go-metrics/prometheus\n# github.com/hashicorp/go-plugin v1.6.0\n## explicit; go 1.17\ngithub.com/hashicorp/go-plugin\ngithub.com/hashicorp/go-plugin/internal/cmdrunner\ngithub.com/hashicorp/go-plugin/internal/grpcmux\ngithub.com/hashicorp/go-plugin/internal/plugin\ngithub.com/hashicorp/go-plugin/runner\n# github.com/hashicorp/go-safetemp v1.0.0\n## explicit\ngithub.com/hashicorp/go-safetemp\n# github.com/hashicorp/go-version v1.6.0\n## explicit\ngithub.com/hashicorp/go-version\n# github.com/hashicorp/golang-lru v1.0.2\n## explicit; go 1.12\ngithub.com/hashicorp/golang-lru\ngithub.com/hashicorp/golang-lru/simplelru\n# github.com/hashicorp/golang-lru/v2 v2.0.7\n## explicit; go 1.18\ngithub.com/hashicorp/golang-lru/v2\ngithub.com/hashicorp/golang-lru/v2/internal\ngithub.com/hashicorp/golang-lru/v2/simplelru\n# github.com/hashicorp/hcl v1.0.0\n## explicit\ngithub.com/hashicorp/hcl\ngithub.com/hashicorp/hcl/hcl/ast\ngithub.com/hashicorp/hcl/hcl/parser\ngithub.com/hashicorp/hcl/hcl/printer\ngithub.com/hashicorp/hcl/hcl/scanner\ngithub.com/hashicorp/hcl/hcl/strconv\ngithub.com/hashicorp/hcl/hcl/token\ngithub.com/hashicorp/hcl/json/parser\ngithub.com/hashicorp/hcl/json/scanner\ngithub.com/hashicorp/hcl/json/token\n# github.com/hashicorp/yamux v0.1.1\n## explicit; go 1.15\ngithub.com/hashicorp/yamux\n# github.com/hdevalence/ed25519consensus v0.2.0\n## explicit; go 1.19\ngithub.com/hdevalence/ed25519consensus\n# github.com/holiman/bloomfilter/v2 v2.0.3\n## explicit; go 1.15\ngithub.com/holiman/bloomfilter/v2\n# github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c\n## explicit; go 1.18\ngithub.com/holiman/uint256\n# github.com/huandu/skiplist v1.2.0\n## explicit; go 1.12\ngithub.com/huandu/skiplist\n# github.com/huin/goupnp v1.0.3\n## explicit; go 1.14\ngithub.com/huin/goupnp\ngithub.com/huin/goupnp/dcps/internetgateway1\ngithub.com/huin/goupnp/dcps/internetgateway2\ngithub.com/huin/goupnp/httpu\ngithub.com/huin/goupnp/scpd\ngithub.com/huin/goupnp/soap\ngithub.com/huin/goupnp/ssdp\n# github.com/iancoleman/strcase v0.3.0\n## explicit; go 1.16\ngithub.com/iancoleman/strcase\n# github.com/improbable-eng/grpc-web v0.15.0\n## explicit; go 1.16\ngithub.com/improbable-eng/grpc-web/go/grpcweb\n# github.com/inconshreveable/mousetrap v1.1.0\n## explicit; go 1.18\ngithub.com/inconshreveable/mousetrap\n# github.com/jackpal/go-nat-pmp v1.0.2\n## explicit\ngithub.com/jackpal/go-nat-pmp\n# github.com/jmespath/go-jmespath v0.4.0\n## explicit; go 1.14\ngithub.com/jmespath/go-jmespath\n# github.com/jmhodges/levigo v1.0.0\n## explicit\ngithub.com/jmhodges/levigo\n# github.com/klauspost/compress v1.17.9\n## explicit; go 1.20\ngithub.com/klauspost/compress\ngithub.com/klauspost/compress/fse\ngithub.com/klauspost/compress/huff0\ngithub.com/klauspost/compress/internal/cpuinfo\ngithub.com/klauspost/compress/internal/race\ngithub.com/klauspost/compress/internal/snapref\ngithub.com/klauspost/compress/s2\ngithub.com/klauspost/compress/snappy\ngithub.com/klauspost/compress/zstd\ngithub.com/klauspost/compress/zstd/internal/xxhash\n# github.com/kr/pretty v0.3.1\n## explicit; go 1.12\ngithub.com/kr/pretty\n# github.com/kr/text v0.2.0\n## explicit\ngithub.com/kr/text\n# github.com/lib/pq v1.10.9\n## explicit; go 1.13\ngithub.com/lib/pq\ngithub.com/lib/pq/oid\ngithub.com/lib/pq/scram\n# github.com/linxGnu/grocksdb v1.9.3\n## explicit; go 1.17\ngithub.com/linxGnu/grocksdb\n# github.com/magiconair/properties v1.8.7\n## explicit; go 1.19\ngithub.com/magiconair/properties\n# github.com/manifoldco/promptui v0.9.0\n## explicit; go 1.12\ngithub.com/manifoldco/promptui\ngithub.com/manifoldco/promptui/list\ngithub.com/manifoldco/promptui/screenbuf\n# github.com/mattn/go-colorable v0.1.13\n## explicit; go 1.15\ngithub.com/mattn/go-colorable\n# github.com/mattn/go-isatty v0.0.20\n## explicit; go 1.15\ngithub.com/mattn/go-isatty\n# github.com/mattn/go-runewidth v0.0.9\n## explicit; go 1.9\ngithub.com/mattn/go-runewidth\n# github.com/minio/highwayhash v1.0.3\n## explicit; go 1.15\ngithub.com/minio/highwayhash\n# github.com/mitchellh/go-homedir v1.1.0\n## explicit\ngithub.com/mitchellh/go-homedir\n# github.com/mitchellh/go-testing-interface v1.14.1\n## explicit; go 1.14\ngithub.com/mitchellh/go-testing-interface\n# github.com/mitchellh/mapstructure v1.5.0\n## explicit; go 1.14\ngithub.com/mitchellh/mapstructure\n# github.com/mtibben/percent v0.2.1\n## explicit; go 1.14\ngithub.com/mtibben/percent\n# github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822\n## explicit\ngithub.com/munnerz/goautoneg\n# github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a\n## explicit; go 1.17\ngithub.com/oasisprotocol/curve25519-voi/curve\ngithub.com/oasisprotocol/curve25519-voi/curve/scalar\ngithub.com/oasisprotocol/curve25519-voi/internal/disalloweq\ngithub.com/oasisprotocol/curve25519-voi/internal/field\ngithub.com/oasisprotocol/curve25519-voi/internal/lattice\ngithub.com/oasisprotocol/curve25519-voi/internal/scalar128\ngithub.com/oasisprotocol/curve25519-voi/internal/strobe\ngithub.com/oasisprotocol/curve25519-voi/internal/subtle\ngithub.com/oasisprotocol/curve25519-voi/internal/toolchain\ngithub.com/oasisprotocol/curve25519-voi/internal/zeroreader\ngithub.com/oasisprotocol/curve25519-voi/primitives/ed25519\ngithub.com/oasisprotocol/curve25519-voi/primitives/ed25519/extra/cache\ngithub.com/oasisprotocol/curve25519-voi/primitives/merlin\ngithub.com/oasisprotocol/curve25519-voi/primitives/sr25519\n# github.com/oklog/run v1.1.0\n## explicit; go 1.13\ngithub.com/oklog/run\n# github.com/olekukonko/tablewriter v0.0.5\n## explicit; go 1.12\ngithub.com/olekukonko/tablewriter\n# github.com/onsi/ginkgo/v2 v2.7.0\n## explicit; go 1.18\ngithub.com/onsi/ginkgo/v2\ngithub.com/onsi/ginkgo/v2/config\ngithub.com/onsi/ginkgo/v2/formatter\ngithub.com/onsi/ginkgo/v2/internal\ngithub.com/onsi/ginkgo/v2/internal/global\ngithub.com/onsi/ginkgo/v2/internal/interrupt_handler\ngithub.com/onsi/ginkgo/v2/internal/parallel_support\ngithub.com/onsi/ginkgo/v2/internal/testingtproxy\ngithub.com/onsi/ginkgo/v2/reporters\ngithub.com/onsi/ginkgo/v2/types\n# github.com/onsi/gomega v1.26.0\n## explicit; go 1.18\ngithub.com/onsi/gomega\ngithub.com/onsi/gomega/format\ngithub.com/onsi/gomega/internal\ngithub.com/onsi/gomega/internal/gutil\ngithub.com/onsi/gomega/matchers\ngithub.com/onsi/gomega/matchers/support/goraph/bipartitegraph\ngithub.com/onsi/gomega/matchers/support/goraph/edge\ngithub.com/onsi/gomega/matchers/support/goraph/node\ngithub.com/onsi/gomega/matchers/support/goraph/util\ngithub.com/onsi/gomega/types\n# github.com/pelletier/go-toml/v2 v2.2.2\n## explicit; go 1.16\ngithub.com/pelletier/go-toml/v2\ngithub.com/pelletier/go-toml/v2/internal/characters\ngithub.com/pelletier/go-toml/v2/internal/danger\ngithub.com/pelletier/go-toml/v2/internal/tracker\ngithub.com/pelletier/go-toml/v2/unstable\n# github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7\n## explicit; go 1.17\ngithub.com/petermattis/goid\n# github.com/pkg/errors v0.9.1\n## explicit\ngithub.com/pkg/errors\n# github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2\n## explicit\ngithub.com/pmezard/go-difflib/difflib\n# github.com/prometheus/client_golang v1.20.5\n## explicit; go 1.20\ngithub.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil\ngithub.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header\ngithub.com/prometheus/client_golang/prometheus\ngithub.com/prometheus/client_golang/prometheus/internal\ngithub.com/prometheus/client_golang/prometheus/promhttp\ngithub.com/prometheus/client_golang/prometheus/push\n# github.com/prometheus/client_model v0.6.1\n## explicit; go 1.19\ngithub.com/prometheus/client_model/go\n# github.com/prometheus/common v0.60.1\n## explicit; go 1.21\ngithub.com/prometheus/common/expfmt\ngithub.com/prometheus/common/model\n# github.com/prometheus/procfs v0.15.1\n## explicit; go 1.20\ngithub.com/prometheus/procfs\ngithub.com/prometheus/procfs/internal/fs\ngithub.com/prometheus/procfs/internal/util\n# github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475\n## explicit\ngithub.com/rcrowley/go-metrics\n# github.com/rogpeppe/go-internal v1.12.0\n## explicit; go 1.20\ngithub.com/rogpeppe/go-internal/fmtsort\n# github.com/rs/cors v1.11.1\n## explicit; go 1.13\ngithub.com/rs/cors\ngithub.com/rs/cors/internal\n# github.com/rs/zerolog v1.33.0\n## explicit; go 1.15\ngithub.com/rs/zerolog\ngithub.com/rs/zerolog/internal/cbor\ngithub.com/rs/zerolog/internal/json\ngithub.com/rs/zerolog/pkgerrors\n# github.com/sagikazarmark/locafero v0.4.0\n## explicit; go 1.20\ngithub.com/sagikazarmark/locafero\n# github.com/sagikazarmark/slog-shim v0.1.0\n## explicit; go 1.20\ngithub.com/sagikazarmark/slog-shim\n# github.com/sasha-s/go-deadlock v0.3.5\n## explicit\ngithub.com/sasha-s/go-deadlock\n# github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible\n## explicit\ngithub.com/shirou/gopsutil/cpu\ngithub.com/shirou/gopsutil/internal/common\n# github.com/sourcegraph/conc v0.3.0\n## explicit; go 1.19\ngithub.com/sourcegraph/conc\ngithub.com/sourcegraph/conc/internal/multierror\ngithub.com/sourcegraph/conc/iter\ngithub.com/sourcegraph/conc/panics\n# github.com/spf13/afero v1.11.0\n## explicit; go 1.19\ngithub.com/spf13/afero\ngithub.com/spf13/afero/internal/common\ngithub.com/spf13/afero/mem\n# github.com/spf13/cast v1.6.0\n## explicit; go 1.19\ngithub.com/spf13/cast\n# github.com/spf13/cobra v1.8.1\n## explicit; go 1.15\ngithub.com/spf13/cobra\n# github.com/spf13/pflag v1.0.5\n## explicit; go 1.12\ngithub.com/spf13/pflag\n# github.com/spf13/viper v1.19.0\n## explicit; go 1.20\ngithub.com/spf13/viper\ngithub.com/spf13/viper/internal/encoding\ngithub.com/spf13/viper/internal/encoding/dotenv\ngithub.com/spf13/viper/internal/encoding/hcl\ngithub.com/spf13/viper/internal/encoding/ini\ngithub.com/spf13/viper/internal/encoding/javaproperties\ngithub.com/spf13/viper/internal/encoding/json\ngithub.com/spf13/viper/internal/encoding/toml\ngithub.com/spf13/viper/internal/encoding/yaml\ngithub.com/spf13/viper/internal/features\n# github.com/status-im/keycard-go v0.2.0\n## explicit; go 1.17\ngithub.com/status-im/keycard-go/derivationpath\ngithub.com/status-im/keycard-go/hexutils\n# github.com/stretchr/objx v0.5.2\n## explicit; go 1.20\ngithub.com/stretchr/objx\n# github.com/stretchr/testify v1.9.0\n## explicit; go 1.17\ngithub.com/stretchr/testify/assert\ngithub.com/stretchr/testify/mock\ngithub.com/stretchr/testify/require\ngithub.com/stretchr/testify/suite\n# github.com/subosito/gotenv v1.6.0\n## explicit; go 1.18\ngithub.com/subosito/gotenv\n# github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7\n## explicit; go 1.14\ngithub.com/syndtr/goleveldb/leveldb\ngithub.com/syndtr/goleveldb/leveldb/cache\ngithub.com/syndtr/goleveldb/leveldb/comparer\ngithub.com/syndtr/goleveldb/leveldb/errors\ngithub.com/syndtr/goleveldb/leveldb/filter\ngithub.com/syndtr/goleveldb/leveldb/iterator\ngithub.com/syndtr/goleveldb/leveldb/journal\ngithub.com/syndtr/goleveldb/leveldb/memdb\ngithub.com/syndtr/goleveldb/leveldb/opt\ngithub.com/syndtr/goleveldb/leveldb/storage\ngithub.com/syndtr/goleveldb/leveldb/table\ngithub.com/syndtr/goleveldb/leveldb/util\n# github.com/tendermint/go-amino v0.16.0\n## explicit; go 1.12\ngithub.com/tendermint/go-amino\n# github.com/tidwall/btree v1.7.0 => github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c\n## explicit; go 1.19\ngithub.com/tidwall/btree\n# github.com/tidwall/gjson v1.14.4\n## explicit; go 1.12\ngithub.com/tidwall/gjson\n# github.com/tidwall/match v1.1.1\n## explicit; go 1.15\ngithub.com/tidwall/match\n# github.com/tidwall/pretty v1.2.0\n## explicit; go 1.16\ngithub.com/tidwall/pretty\n# github.com/tidwall/sjson v1.2.5\n## explicit; go 1.14\ngithub.com/tidwall/sjson\n# github.com/tklauser/go-sysconf v0.3.10\n## explicit; go 1.13\ngithub.com/tklauser/go-sysconf\n# github.com/tklauser/numcpus v0.4.0\n## explicit; go 1.11\ngithub.com/tklauser/numcpus\n# github.com/tyler-smith/go-bip39 v1.1.0\n## explicit; go 1.14\ngithub.com/tyler-smith/go-bip39\ngithub.com/tyler-smith/go-bip39/wordlists\n# github.com/ulikunitz/xz v0.5.11\n## explicit; go 1.12\ngithub.com/ulikunitz/xz\ngithub.com/ulikunitz/xz/internal/hash\ngithub.com/ulikunitz/xz/internal/xlog\ngithub.com/ulikunitz/xz/lzma\n# github.com/zondax/hid v0.9.2\n## explicit\ngithub.com/zondax/hid\n# github.com/zondax/ledger-go v0.14.3\n## explicit; go 1.18\ngithub.com/zondax/ledger-go\n# go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5\n## explicit; go 1.22\ngo.etcd.io/bbolt\ngo.etcd.io/bbolt/errors\ngo.etcd.io/bbolt/internal/common\n# go.opencensus.io v0.24.0\n## explicit; go 1.13\ngo.opencensus.io\ngo.opencensus.io/internal\ngo.opencensus.io/internal/tagencoding\ngo.opencensus.io/metric/metricdata\ngo.opencensus.io/metric/metricproducer\ngo.opencensus.io/plugin/ocgrpc\ngo.opencensus.io/plugin/ochttp\ngo.opencensus.io/plugin/ochttp/propagation/b3\ngo.opencensus.io/resource\ngo.opencensus.io/stats\ngo.opencensus.io/stats/internal\ngo.opencensus.io/stats/view\ngo.opencensus.io/tag\ngo.opencensus.io/trace\ngo.opencensus.io/trace/internal\ngo.opencensus.io/trace/propagation\ngo.opencensus.io/trace/tracestate\n# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0\n## explicit; go 1.20\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal\n# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0\n## explicit; go 1.20\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil\n# go.opentelemetry.io/otel v1.24.0\n## explicit; go 1.20\ngo.opentelemetry.io/otel\ngo.opentelemetry.io/otel/attribute\ngo.opentelemetry.io/otel/baggage\ngo.opentelemetry.io/otel/codes\ngo.opentelemetry.io/otel/internal\ngo.opentelemetry.io/otel/internal/attribute\ngo.opentelemetry.io/otel/internal/baggage\ngo.opentelemetry.io/otel/internal/global\ngo.opentelemetry.io/otel/propagation\ngo.opentelemetry.io/otel/semconv/v1.17.0\ngo.opentelemetry.io/otel/semconv/v1.20.0\n# go.opentelemetry.io/otel/metric v1.24.0\n## explicit; go 1.20\ngo.opentelemetry.io/otel/metric\ngo.opentelemetry.io/otel/metric/embedded\ngo.opentelemetry.io/otel/metric/noop\n# go.opentelemetry.io/otel/trace v1.24.0\n## explicit; go 1.20\ngo.opentelemetry.io/otel/trace\ngo.opentelemetry.io/otel/trace/embedded\n# go.uber.org/multierr v1.11.0\n## explicit; go 1.19\ngo.uber.org/multierr\n# golang.org/x/crypto v0.28.0\n## explicit; go 1.20\ngolang.org/x/crypto/argon2\ngolang.org/x/crypto/bcrypt\ngolang.org/x/crypto/blake2b\ngolang.org/x/crypto/blake2s\ngolang.org/x/crypto/blowfish\ngolang.org/x/crypto/chacha20\ngolang.org/x/crypto/chacha20poly1305\ngolang.org/x/crypto/cryptobyte\ngolang.org/x/crypto/cryptobyte/asn1\ngolang.org/x/crypto/curve25519\ngolang.org/x/crypto/hkdf\ngolang.org/x/crypto/internal/alias\ngolang.org/x/crypto/internal/poly1305\ngolang.org/x/crypto/nacl/box\ngolang.org/x/crypto/nacl/secretbox\ngolang.org/x/crypto/openpgp/armor\ngolang.org/x/crypto/openpgp/errors\ngolang.org/x/crypto/pbkdf2\ngolang.org/x/crypto/ripemd160\ngolang.org/x/crypto/salsa20/salsa\ngolang.org/x/crypto/scrypt\ngolang.org/x/crypto/sha3\n# golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8\n## explicit; go 1.20\ngolang.org/x/exp/constraints\ngolang.org/x/exp/maps\ngolang.org/x/exp/rand\ngolang.org/x/exp/slices\ngolang.org/x/exp/slog\ngolang.org/x/exp/slog/internal\ngolang.org/x/exp/slog/internal/buffer\n# golang.org/x/mod v0.18.0\n## explicit; go 1.18\ngolang.org/x/mod/semver\n# golang.org/x/net v0.30.0\n## explicit; go 1.18\ngolang.org/x/net/context\ngolang.org/x/net/html\ngolang.org/x/net/html/atom\ngolang.org/x/net/html/charset\ngolang.org/x/net/http/httpguts\ngolang.org/x/net/http2\ngolang.org/x/net/http2/hpack\ngolang.org/x/net/idna\ngolang.org/x/net/internal/timeseries\ngolang.org/x/net/netutil\ngolang.org/x/net/trace\n# golang.org/x/oauth2 v0.23.0\n## explicit; go 1.18\ngolang.org/x/oauth2\ngolang.org/x/oauth2/authhandler\ngolang.org/x/oauth2/google\ngolang.org/x/oauth2/google/externalaccount\ngolang.org/x/oauth2/google/internal/externalaccountauthorizeduser\ngolang.org/x/oauth2/google/internal/impersonate\ngolang.org/x/oauth2/google/internal/stsexchange\ngolang.org/x/oauth2/internal\ngolang.org/x/oauth2/jws\ngolang.org/x/oauth2/jwt\n# golang.org/x/sync v0.8.0\n## explicit; go 1.18\ngolang.org/x/sync/errgroup\ngolang.org/x/sync/semaphore\n# golang.org/x/sys v0.26.0\n## explicit; go 1.18\ngolang.org/x/sys/cpu\ngolang.org/x/sys/execabs\ngolang.org/x/sys/plan9\ngolang.org/x/sys/unix\ngolang.org/x/sys/windows\ngolang.org/x/sys/windows/registry\n# golang.org/x/term v0.25.0\n## explicit; go 1.18\ngolang.org/x/term\n# golang.org/x/text v0.19.0\n## explicit; go 1.18\ngolang.org/x/text/cases\ngolang.org/x/text/collate\ngolang.org/x/text/encoding\ngolang.org/x/text/encoding/charmap\ngolang.org/x/text/encoding/htmlindex\ngolang.org/x/text/encoding/internal\ngolang.org/x/text/encoding/internal/identifier\ngolang.org/x/text/encoding/japanese\ngolang.org/x/text/encoding/korean\ngolang.org/x/text/encoding/simplifiedchinese\ngolang.org/x/text/encoding/traditionalchinese\ngolang.org/x/text/encoding/unicode\ngolang.org/x/text/internal\ngolang.org/x/text/internal/colltab\ngolang.org/x/text/internal/language\ngolang.org/x/text/internal/language/compact\ngolang.org/x/text/internal/tag\ngolang.org/x/text/internal/utf8internal\ngolang.org/x/text/language\ngolang.org/x/text/runes\ngolang.org/x/text/secure/bidirule\ngolang.org/x/text/transform\ngolang.org/x/text/unicode/bidi\ngolang.org/x/text/unicode/norm\ngolang.org/x/text/unicode/rangetable\n# golang.org/x/time v0.5.0\n## explicit; go 1.18\ngolang.org/x/time/rate\n# golang.org/x/tools v0.22.0\n## explicit; go 1.19\ngolang.org/x/tools/cmd/stringer\ngolang.org/x/tools/go/gcexportdata\ngolang.org/x/tools/go/internal/packagesdriver\ngolang.org/x/tools/go/packages\ngolang.org/x/tools/go/types/objectpath\ngolang.org/x/tools/internal/aliases\ngolang.org/x/tools/internal/event\ngolang.org/x/tools/internal/event/core\ngolang.org/x/tools/internal/event/keys\ngolang.org/x/tools/internal/event/label\ngolang.org/x/tools/internal/gcimporter\ngolang.org/x/tools/internal/gocommand\ngolang.org/x/tools/internal/packagesinternal\ngolang.org/x/tools/internal/pkgbits\ngolang.org/x/tools/internal/stdlib\ngolang.org/x/tools/internal/tokeninternal\ngolang.org/x/tools/internal/typesinternal\ngolang.org/x/tools/internal/versions\n# google.golang.org/api v0.186.0\n## explicit; go 1.20\ngoogle.golang.org/api/googleapi\ngoogle.golang.org/api/googleapi/transport\ngoogle.golang.org/api/iamcredentials/v1\ngoogle.golang.org/api/internal\ngoogle.golang.org/api/internal/cert\ngoogle.golang.org/api/internal/gensupport\ngoogle.golang.org/api/internal/impersonate\ngoogle.golang.org/api/internal/third_party/uritemplates\ngoogle.golang.org/api/iterator\ngoogle.golang.org/api/option\ngoogle.golang.org/api/option/internaloption\ngoogle.golang.org/api/storage/v1\ngoogle.golang.org/api/transport\ngoogle.golang.org/api/transport/grpc\ngoogle.golang.org/api/transport/http\ngoogle.golang.org/api/transport/http/internal/propagation\n# google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094\n## explicit; go 1.20\ngoogle.golang.org/genproto/googleapis/type/date\ngoogle.golang.org/genproto/googleapis/type/expr\ngoogle.golang.org/genproto/protobuf/field_mask\n# google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142\n## explicit; go 1.21\ngoogle.golang.org/genproto/googleapis/api\ngoogle.golang.org/genproto/googleapis/api/annotations\ngoogle.golang.org/genproto/googleapis/api/httpbody\n# google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142\n## explicit; go 1.21\ngoogle.golang.org/genproto/googleapis/rpc/code\ngoogle.golang.org/genproto/googleapis/rpc/errdetails\ngoogle.golang.org/genproto/googleapis/rpc/status\n# google.golang.org/grpc v1.67.1\n## explicit; go 1.21\ngoogle.golang.org/grpc\ngoogle.golang.org/grpc/attributes\ngoogle.golang.org/grpc/backoff\ngoogle.golang.org/grpc/balancer\ngoogle.golang.org/grpc/balancer/base\ngoogle.golang.org/grpc/balancer/grpclb\ngoogle.golang.org/grpc/balancer/grpclb/grpc_lb_v1\ngoogle.golang.org/grpc/balancer/grpclb/state\ngoogle.golang.org/grpc/balancer/pickfirst\ngoogle.golang.org/grpc/balancer/roundrobin\ngoogle.golang.org/grpc/binarylog/grpc_binarylog_v1\ngoogle.golang.org/grpc/channelz\ngoogle.golang.org/grpc/codes\ngoogle.golang.org/grpc/connectivity\ngoogle.golang.org/grpc/credentials\ngoogle.golang.org/grpc/credentials/alts\ngoogle.golang.org/grpc/credentials/alts/internal\ngoogle.golang.org/grpc/credentials/alts/internal/authinfo\ngoogle.golang.org/grpc/credentials/alts/internal/conn\ngoogle.golang.org/grpc/credentials/alts/internal/handshaker\ngoogle.golang.org/grpc/credentials/alts/internal/handshaker/service\ngoogle.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp\ngoogle.golang.org/grpc/credentials/google\ngoogle.golang.org/grpc/credentials/insecure\ngoogle.golang.org/grpc/credentials/oauth\ngoogle.golang.org/grpc/encoding\ngoogle.golang.org/grpc/encoding/proto\ngoogle.golang.org/grpc/experimental/stats\ngoogle.golang.org/grpc/grpclog\ngoogle.golang.org/grpc/grpclog/internal\ngoogle.golang.org/grpc/health\ngoogle.golang.org/grpc/health/grpc_health_v1\ngoogle.golang.org/grpc/internal\ngoogle.golang.org/grpc/internal/backoff\ngoogle.golang.org/grpc/internal/balancer/gracefulswitch\ngoogle.golang.org/grpc/internal/balancerload\ngoogle.golang.org/grpc/internal/binarylog\ngoogle.golang.org/grpc/internal/buffer\ngoogle.golang.org/grpc/internal/channelz\ngoogle.golang.org/grpc/internal/credentials\ngoogle.golang.org/grpc/internal/envconfig\ngoogle.golang.org/grpc/internal/googlecloud\ngoogle.golang.org/grpc/internal/grpclog\ngoogle.golang.org/grpc/internal/grpcsync\ngoogle.golang.org/grpc/internal/grpcutil\ngoogle.golang.org/grpc/internal/idle\ngoogle.golang.org/grpc/internal/metadata\ngoogle.golang.org/grpc/internal/pretty\ngoogle.golang.org/grpc/internal/resolver\ngoogle.golang.org/grpc/internal/resolver/dns\ngoogle.golang.org/grpc/internal/resolver/dns/internal\ngoogle.golang.org/grpc/internal/resolver/passthrough\ngoogle.golang.org/grpc/internal/resolver/unix\ngoogle.golang.org/grpc/internal/serviceconfig\ngoogle.golang.org/grpc/internal/stats\ngoogle.golang.org/grpc/internal/status\ngoogle.golang.org/grpc/internal/syscall\ngoogle.golang.org/grpc/internal/transport\ngoogle.golang.org/grpc/internal/transport/networktype\ngoogle.golang.org/grpc/internal/xds\ngoogle.golang.org/grpc/keepalive\ngoogle.golang.org/grpc/mem\ngoogle.golang.org/grpc/metadata\ngoogle.golang.org/grpc/peer\ngoogle.golang.org/grpc/reflection\ngoogle.golang.org/grpc/reflection/grpc_reflection_v1\ngoogle.golang.org/grpc/reflection/grpc_reflection_v1alpha\ngoogle.golang.org/grpc/reflection/internal\ngoogle.golang.org/grpc/resolver\ngoogle.golang.org/grpc/resolver/dns\ngoogle.golang.org/grpc/resolver/manual\ngoogle.golang.org/grpc/serviceconfig\ngoogle.golang.org/grpc/stats\ngoogle.golang.org/grpc/status\ngoogle.golang.org/grpc/tap\n# google.golang.org/protobuf v1.35.1\n## explicit; go 1.21\ngoogle.golang.org/protobuf/encoding/protodelim\ngoogle.golang.org/protobuf/encoding/protojson\ngoogle.golang.org/protobuf/encoding/prototext\ngoogle.golang.org/protobuf/encoding/protowire\ngoogle.golang.org/protobuf/internal/descfmt\ngoogle.golang.org/protobuf/internal/descopts\ngoogle.golang.org/protobuf/internal/detrand\ngoogle.golang.org/protobuf/internal/editiondefaults\ngoogle.golang.org/protobuf/internal/editionssupport\ngoogle.golang.org/protobuf/internal/encoding/defval\ngoogle.golang.org/protobuf/internal/encoding/json\ngoogle.golang.org/protobuf/internal/encoding/messageset\ngoogle.golang.org/protobuf/internal/encoding/tag\ngoogle.golang.org/protobuf/internal/encoding/text\ngoogle.golang.org/protobuf/internal/errors\ngoogle.golang.org/protobuf/internal/filedesc\ngoogle.golang.org/protobuf/internal/filetype\ngoogle.golang.org/protobuf/internal/flags\ngoogle.golang.org/protobuf/internal/genid\ngoogle.golang.org/protobuf/internal/impl\ngoogle.golang.org/protobuf/internal/msgfmt\ngoogle.golang.org/protobuf/internal/order\ngoogle.golang.org/protobuf/internal/pragma\ngoogle.golang.org/protobuf/internal/set\ngoogle.golang.org/protobuf/internal/strs\ngoogle.golang.org/protobuf/internal/version\ngoogle.golang.org/protobuf/proto\ngoogle.golang.org/protobuf/protoadapt\ngoogle.golang.org/protobuf/reflect/protodesc\ngoogle.golang.org/protobuf/reflect/protoreflect\ngoogle.golang.org/protobuf/reflect/protoregistry\ngoogle.golang.org/protobuf/runtime/protoiface\ngoogle.golang.org/protobuf/runtime/protoimpl\ngoogle.golang.org/protobuf/testing/protocmp\ngoogle.golang.org/protobuf/types/descriptorpb\ngoogle.golang.org/protobuf/types/dynamicpb\ngoogle.golang.org/protobuf/types/gofeaturespb\ngoogle.golang.org/protobuf/types/known/anypb\ngoogle.golang.org/protobuf/types/known/durationpb\ngoogle.golang.org/protobuf/types/known/emptypb\ngoogle.golang.org/protobuf/types/known/fieldmaskpb\ngoogle.golang.org/protobuf/types/known/timestamppb\ngoogle.golang.org/protobuf/types/known/wrapperspb\n# gopkg.in/ini.v1 v1.67.0\n## explicit\ngopkg.in/ini.v1\n# gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce\n## explicit\ngopkg.in/natefinch/npipe.v2\n# gopkg.in/yaml.v3 v3.0.1\n## explicit\ngopkg.in/yaml.v3\n# gotest.tools/v3 v3.5.1\n## explicit; go 1.17\ngotest.tools/v3/assert\ngotest.tools/v3/assert/cmp\ngotest.tools/v3/internal/assert\ngotest.tools/v3/internal/difflib\ngotest.tools/v3/internal/format\ngotest.tools/v3/internal/source\n# nhooyr.io/websocket v1.8.10\n## explicit; go 1.19\nnhooyr.io/websocket\nnhooyr.io/websocket/internal/bpool\nnhooyr.io/websocket/internal/errd\nnhooyr.io/websocket/internal/util\nnhooyr.io/websocket/internal/wsjs\nnhooyr.io/websocket/internal/xsync\n# pgregory.net/rapid v1.1.0\n## explicit; go 1.18\npgregory.net/rapid\n# sigs.k8s.io/yaml v1.4.0\n## explicit; go 1.12\nsigs.k8s.io/yaml\nsigs.k8s.io/yaml/goyaml.v2\n# cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241015015202-783e224f9517\n# cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241015015202-783e224f9517\n# github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20241015015202-783e224f9517\n# github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0\n# github.com/cometbft/cometbft => github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890\n# github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183\n# github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0\n# github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7\n# github.com/tidwall/btree => github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c\n" +vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud.google.com/go/internal\ncloud.google.com/go/internal/optional\ncloud.google.com/go/internal/trace\ncloud.google.com/go/internal/version\n# cloud.google.com/go/auth v0.6.0\n## explicit; go 1.20\ncloud.google.com/go/auth\ncloud.google.com/go/auth/credentials\ncloud.google.com/go/auth/credentials/internal/externalaccount\ncloud.google.com/go/auth/credentials/internal/externalaccountuser\ncloud.google.com/go/auth/credentials/internal/gdch\ncloud.google.com/go/auth/credentials/internal/impersonate\ncloud.google.com/go/auth/credentials/internal/stsexchange\ncloud.google.com/go/auth/grpctransport\ncloud.google.com/go/auth/httptransport\ncloud.google.com/go/auth/internal\ncloud.google.com/go/auth/internal/credsfile\ncloud.google.com/go/auth/internal/jwt\ncloud.google.com/go/auth/internal/transport\ncloud.google.com/go/auth/internal/transport/cert\n# cloud.google.com/go/auth/oauth2adapt v0.2.2\n## explicit; go 1.19\ncloud.google.com/go/auth/oauth2adapt\n# cloud.google.com/go/compute/metadata v0.5.0\n## explicit; go 1.20\ncloud.google.com/go/compute/metadata\n# cloud.google.com/go/iam v1.1.9\n## explicit; go 1.20\ncloud.google.com/go/iam\ncloud.google.com/go/iam/apiv1/iampb\n# cloud.google.com/go/storage v1.41.0\n## explicit; go 1.19\ncloud.google.com/go/storage\ncloud.google.com/go/storage/internal\ncloud.google.com/go/storage/internal/apiv2\ncloud.google.com/go/storage/internal/apiv2/storagepb\n# cosmossdk.io/api v0.7.6\n## explicit; go 1.20\ncosmossdk.io/api/amino\ncosmossdk.io/api/cosmos/app/runtime/v1alpha1\ncosmossdk.io/api/cosmos/app/v1alpha1\ncosmossdk.io/api/cosmos/auth/module/v1\ncosmossdk.io/api/cosmos/auth/v1beta1\ncosmossdk.io/api/cosmos/authz/module/v1\ncosmossdk.io/api/cosmos/authz/v1beta1\ncosmossdk.io/api/cosmos/autocli/v1\ncosmossdk.io/api/cosmos/bank/module/v1\ncosmossdk.io/api/cosmos/bank/v1beta1\ncosmossdk.io/api/cosmos/base/abci/v1beta1\ncosmossdk.io/api/cosmos/base/query/v1beta1\ncosmossdk.io/api/cosmos/base/reflection/v1beta1\ncosmossdk.io/api/cosmos/base/tendermint/v1beta1\ncosmossdk.io/api/cosmos/base/v1beta1\ncosmossdk.io/api/cosmos/consensus/module/v1\ncosmossdk.io/api/cosmos/consensus/v1\ncosmossdk.io/api/cosmos/crisis/module/v1\ncosmossdk.io/api/cosmos/crisis/v1beta1\ncosmossdk.io/api/cosmos/crypto/ed25519\ncosmossdk.io/api/cosmos/crypto/multisig\ncosmossdk.io/api/cosmos/crypto/multisig/v1beta1\ncosmossdk.io/api/cosmos/crypto/secp256k1\ncosmossdk.io/api/cosmos/crypto/secp256r1\ncosmossdk.io/api/cosmos/distribution/module/v1\ncosmossdk.io/api/cosmos/distribution/v1beta1\ncosmossdk.io/api/cosmos/evidence/module/v1\ncosmossdk.io/api/cosmos/evidence/v1beta1\ncosmossdk.io/api/cosmos/feegrant/module/v1\ncosmossdk.io/api/cosmos/feegrant/v1beta1\ncosmossdk.io/api/cosmos/genutil/module/v1\ncosmossdk.io/api/cosmos/gov/module/v1\ncosmossdk.io/api/cosmos/gov/v1\ncosmossdk.io/api/cosmos/mint/module/v1\ncosmossdk.io/api/cosmos/mint/v1beta1\ncosmossdk.io/api/cosmos/msg/v1\ncosmossdk.io/api/cosmos/params/module/v1\ncosmossdk.io/api/cosmos/params/v1beta1\ncosmossdk.io/api/cosmos/query/v1\ncosmossdk.io/api/cosmos/reflection/v1\ncosmossdk.io/api/cosmos/slashing/module/v1\ncosmossdk.io/api/cosmos/slashing/v1beta1\ncosmossdk.io/api/cosmos/staking/module/v1\ncosmossdk.io/api/cosmos/staking/v1beta1\ncosmossdk.io/api/cosmos/tx/config/v1\ncosmossdk.io/api/cosmos/tx/signing/v1beta1\ncosmossdk.io/api/cosmos/tx/v1beta1\ncosmossdk.io/api/cosmos/upgrade/module/v1\ncosmossdk.io/api/cosmos/upgrade/v1beta1\ncosmossdk.io/api/cosmos/vesting/module/v1\ncosmossdk.io/api/cosmos/vesting/v1beta1\ncosmossdk.io/api/tendermint/abci\ncosmossdk.io/api/tendermint/crypto\ncosmossdk.io/api/tendermint/p2p\ncosmossdk.io/api/tendermint/types\ncosmossdk.io/api/tendermint/version\n# cosmossdk.io/client/v2 v2.0.0-beta.5\n## explicit; go 1.21\ncosmossdk.io/client/v2/autocli\ncosmossdk.io/client/v2/autocli/flag\ncosmossdk.io/client/v2/autocli/flag/maps\ncosmossdk.io/client/v2/autocli/keyring\ncosmossdk.io/client/v2/internal/flags\ncosmossdk.io/client/v2/internal/strcase\ncosmossdk.io/client/v2/internal/util\n# cosmossdk.io/collections v0.4.0\n## explicit; go 1.20\ncosmossdk.io/collections\ncosmossdk.io/collections/codec\ncosmossdk.io/collections/indexes\n# cosmossdk.io/core v0.11.1\n## explicit; go 1.20\ncosmossdk.io/core/address\ncosmossdk.io/core/appmodule\ncosmossdk.io/core/coins\ncosmossdk.io/core/comet\ncosmossdk.io/core/event\ncosmossdk.io/core/genesis\ncosmossdk.io/core/header\ncosmossdk.io/core/store\n# cosmossdk.io/depinject v1.0.0\n## explicit; go 1.20\ncosmossdk.io/depinject\ncosmossdk.io/depinject/appconfig\ncosmossdk.io/depinject/appconfig/v1alpha1\ncosmossdk.io/depinject/internal/appconfig\ncosmossdk.io/depinject/internal/graphviz\ncosmossdk.io/depinject/internal/util\n# cosmossdk.io/errors v1.0.1\n## explicit; go 1.20\ncosmossdk.io/errors\n# cosmossdk.io/log v1.4.1\n## explicit; go 1.20\ncosmossdk.io/log\n# cosmossdk.io/math v1.3.0\n## explicit; go 1.20\ncosmossdk.io/math\ncosmossdk.io/math/unsafe\n# cosmossdk.io/store v1.1.1 => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241205052910-142c0afa4948\n## explicit; go 1.21\ncosmossdk.io/store\ncosmossdk.io/store/cache\ncosmossdk.io/store/cachekv\ncosmossdk.io/store/cachekv/internal\ncosmossdk.io/store/cachemulti\ncosmossdk.io/store/dbadapter\ncosmossdk.io/store/gaskv\ncosmossdk.io/store/iavl\ncosmossdk.io/store/internal\ncosmossdk.io/store/internal/btree\ncosmossdk.io/store/internal/kv\ncosmossdk.io/store/internal/maps\ncosmossdk.io/store/internal/proofs\ncosmossdk.io/store/internal/tree\ncosmossdk.io/store/listenkv\ncosmossdk.io/store/mem\ncosmossdk.io/store/metrics\ncosmossdk.io/store/prefix\ncosmossdk.io/store/pruning\ncosmossdk.io/store/pruning/types\ncosmossdk.io/store/rootmulti\ncosmossdk.io/store/snapshots\ncosmossdk.io/store/snapshots/types\ncosmossdk.io/store/streaming\ncosmossdk.io/store/streaming/abci\ncosmossdk.io/store/tracekv\ncosmossdk.io/store/transient\ncosmossdk.io/store/types\ncosmossdk.io/store/wrapper\n# cosmossdk.io/tools/confix v0.1.2\n## explicit; go 1.21\ncosmossdk.io/tools/confix\ncosmossdk.io/tools/confix/cmd\n# cosmossdk.io/x/evidence v0.1.1\n## explicit; go 1.21\ncosmossdk.io/x/evidence\ncosmossdk.io/x/evidence/client\ncosmossdk.io/x/evidence/client/cli\ncosmossdk.io/x/evidence/exported\ncosmossdk.io/x/evidence/keeper\ncosmossdk.io/x/evidence/simulation\ncosmossdk.io/x/evidence/types\n# cosmossdk.io/x/feegrant v0.1.1\n## explicit; go 1.21\ncosmossdk.io/x/feegrant\ncosmossdk.io/x/feegrant/client/cli\ncosmossdk.io/x/feegrant/keeper\ncosmossdk.io/x/feegrant/migrations/v2\ncosmossdk.io/x/feegrant/module\ncosmossdk.io/x/feegrant/simulation\n# cosmossdk.io/x/tx v0.13.6-0.20241003112805-ff8789a02871 => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241205052910-142c0afa4948\n## explicit; go 1.21\ncosmossdk.io/x/tx/decode\ncosmossdk.io/x/tx/signing\ncosmossdk.io/x/tx/signing/aminojson\ncosmossdk.io/x/tx/signing/aminojson/internal/aminojsonpb\ncosmossdk.io/x/tx/signing/direct\ncosmossdk.io/x/tx/signing/directaux\ncosmossdk.io/x/tx/signing/textual\ncosmossdk.io/x/tx/signing/textual/internal/cbor\ncosmossdk.io/x/tx/signing/textual/internal/textualpb\n# cosmossdk.io/x/upgrade v0.1.4\n## explicit; go 1.21\ncosmossdk.io/x/upgrade\ncosmossdk.io/x/upgrade/client/cli\ncosmossdk.io/x/upgrade/exported\ncosmossdk.io/x/upgrade/internal/conv\ncosmossdk.io/x/upgrade/keeper\ncosmossdk.io/x/upgrade/plan\ncosmossdk.io/x/upgrade/types\n# filippo.io/edwards25519 v1.1.0\n## explicit; go 1.20\nfilippo.io/edwards25519\nfilippo.io/edwards25519/field\n# github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4\n## explicit\ngithub.com/99designs/go-keychain\n# github.com/99designs/keyring v1.2.2 => github.com/cosmos/keyring v1.2.0\n## explicit; go 1.17\ngithub.com/99designs/keyring\n# github.com/DataDog/datadog-go v4.8.3+incompatible\n## explicit\ngithub.com/DataDog/datadog-go/statsd\n# github.com/DataDog/zstd v1.5.5\n## explicit; go 1.14\ngithub.com/DataDog/zstd\n# github.com/Microsoft/go-winio v0.6.2\n## explicit; go 1.21\ngithub.com/Microsoft/go-winio\ngithub.com/Microsoft/go-winio/internal/fs\ngithub.com/Microsoft/go-winio/internal/socket\ngithub.com/Microsoft/go-winio/internal/stringbuffer\ngithub.com/Microsoft/go-winio/pkg/guid\n# github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6\n## explicit\ngithub.com/StackExchange/wmi\n# github.com/VictoriaMetrics/fastcache v1.6.0\n## explicit; go 1.13\ngithub.com/VictoriaMetrics/fastcache\n# github.com/allegro/bigcache v1.2.1\n## explicit\n# github.com/aws/aws-sdk-go v1.44.224\n## explicit; go 1.11\ngithub.com/aws/aws-sdk-go/aws\ngithub.com/aws/aws-sdk-go/aws/arn\ngithub.com/aws/aws-sdk-go/aws/awserr\ngithub.com/aws/aws-sdk-go/aws/awsutil\ngithub.com/aws/aws-sdk-go/aws/client\ngithub.com/aws/aws-sdk-go/aws/client/metadata\ngithub.com/aws/aws-sdk-go/aws/corehandlers\ngithub.com/aws/aws-sdk-go/aws/credentials\ngithub.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds\ngithub.com/aws/aws-sdk-go/aws/credentials/endpointcreds\ngithub.com/aws/aws-sdk-go/aws/credentials/processcreds\ngithub.com/aws/aws-sdk-go/aws/credentials/ssocreds\ngithub.com/aws/aws-sdk-go/aws/credentials/stscreds\ngithub.com/aws/aws-sdk-go/aws/csm\ngithub.com/aws/aws-sdk-go/aws/defaults\ngithub.com/aws/aws-sdk-go/aws/ec2metadata\ngithub.com/aws/aws-sdk-go/aws/endpoints\ngithub.com/aws/aws-sdk-go/aws/request\ngithub.com/aws/aws-sdk-go/aws/session\ngithub.com/aws/aws-sdk-go/aws/signer/v4\ngithub.com/aws/aws-sdk-go/internal/context\ngithub.com/aws/aws-sdk-go/internal/ini\ngithub.com/aws/aws-sdk-go/internal/s3shared\ngithub.com/aws/aws-sdk-go/internal/s3shared/arn\ngithub.com/aws/aws-sdk-go/internal/s3shared/s3err\ngithub.com/aws/aws-sdk-go/internal/sdkio\ngithub.com/aws/aws-sdk-go/internal/sdkmath\ngithub.com/aws/aws-sdk-go/internal/sdkrand\ngithub.com/aws/aws-sdk-go/internal/sdkuri\ngithub.com/aws/aws-sdk-go/internal/shareddefaults\ngithub.com/aws/aws-sdk-go/internal/strings\ngithub.com/aws/aws-sdk-go/internal/sync/singleflight\ngithub.com/aws/aws-sdk-go/private/checksum\ngithub.com/aws/aws-sdk-go/private/protocol\ngithub.com/aws/aws-sdk-go/private/protocol/eventstream\ngithub.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi\ngithub.com/aws/aws-sdk-go/private/protocol/json/jsonutil\ngithub.com/aws/aws-sdk-go/private/protocol/jsonrpc\ngithub.com/aws/aws-sdk-go/private/protocol/query\ngithub.com/aws/aws-sdk-go/private/protocol/query/queryutil\ngithub.com/aws/aws-sdk-go/private/protocol/rest\ngithub.com/aws/aws-sdk-go/private/protocol/restjson\ngithub.com/aws/aws-sdk-go/private/protocol/restxml\ngithub.com/aws/aws-sdk-go/private/protocol/xml/xmlutil\ngithub.com/aws/aws-sdk-go/service/s3\ngithub.com/aws/aws-sdk-go/service/sso\ngithub.com/aws/aws-sdk-go/service/sso/ssoiface\ngithub.com/aws/aws-sdk-go/service/sts\ngithub.com/aws/aws-sdk-go/service/sts/stsiface\n# github.com/beorn7/perks v1.0.1\n## explicit; go 1.11\ngithub.com/beorn7/perks/quantile\n# github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d\n## explicit\ngithub.com/bgentry/go-netrc/netrc\n# github.com/bgentry/speakeasy v0.2.0\n## explicit\ngithub.com/bgentry/speakeasy\n# github.com/bits-and-blooms/bitset v1.8.0\n## explicit; go 1.16\ngithub.com/bits-and-blooms/bitset\n# github.com/btcsuite/btcd v0.24.2\n## explicit; go 1.17\ngithub.com/btcsuite/btcd/chaincfg\ngithub.com/btcsuite/btcd/wire\n# github.com/btcsuite/btcd/btcec/v2 v2.3.4\n## explicit; go 1.17\ngithub.com/btcsuite/btcd/btcec/v2\ngithub.com/btcsuite/btcd/btcec/v2/ecdsa\n# github.com/btcsuite/btcd/btcutil v1.1.6\n## explicit; go 1.16\ngithub.com/btcsuite/btcd/btcutil\ngithub.com/btcsuite/btcd/btcutil/base58\ngithub.com/btcsuite/btcd/btcutil/bech32\ngithub.com/btcsuite/btcd/btcutil/hdkeychain\n# github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0\n## explicit; go 1.17\ngithub.com/btcsuite/btcd/chaincfg/chainhash\n# github.com/cenkalti/backoff/v4 v4.3.0\n## explicit; go 1.18\ngithub.com/cenkalti/backoff/v4\n# github.com/cespare/xxhash/v2 v2.3.0\n## explicit; go 1.11\ngithub.com/cespare/xxhash/v2\n# github.com/chzyer/readline v1.5.1\n## explicit; go 1.15\ngithub.com/chzyer/readline\n# github.com/cockroachdb/apd/v2 v2.0.2\n## explicit\ngithub.com/cockroachdb/apd/v2\n# github.com/cockroachdb/errors v1.11.3\n## explicit; go 1.19\ngithub.com/cockroachdb/errors\ngithub.com/cockroachdb/errors/assert\ngithub.com/cockroachdb/errors/barriers\ngithub.com/cockroachdb/errors/contexttags\ngithub.com/cockroachdb/errors/domains\ngithub.com/cockroachdb/errors/errbase\ngithub.com/cockroachdb/errors/errorspb\ngithub.com/cockroachdb/errors/errutil\ngithub.com/cockroachdb/errors/hintdetail\ngithub.com/cockroachdb/errors/issuelink\ngithub.com/cockroachdb/errors/join\ngithub.com/cockroachdb/errors/markers\ngithub.com/cockroachdb/errors/oserror\ngithub.com/cockroachdb/errors/report\ngithub.com/cockroachdb/errors/safedetails\ngithub.com/cockroachdb/errors/secondary\ngithub.com/cockroachdb/errors/stdstrings\ngithub.com/cockroachdb/errors/telemetrykeys\ngithub.com/cockroachdb/errors/withstack\n# github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a\n## explicit; go 1.20\ngithub.com/cockroachdb/fifo\n# github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b\n## explicit; go 1.16\ngithub.com/cockroachdb/logtags\n# github.com/cockroachdb/pebble v1.1.2\n## explicit; go 1.20\ngithub.com/cockroachdb/pebble\ngithub.com/cockroachdb/pebble/bloom\ngithub.com/cockroachdb/pebble/internal/arenaskl\ngithub.com/cockroachdb/pebble/internal/base\ngithub.com/cockroachdb/pebble/internal/batchskl\ngithub.com/cockroachdb/pebble/internal/bytealloc\ngithub.com/cockroachdb/pebble/internal/cache\ngithub.com/cockroachdb/pebble/internal/constants\ngithub.com/cockroachdb/pebble/internal/crc\ngithub.com/cockroachdb/pebble/internal/fastrand\ngithub.com/cockroachdb/pebble/internal/humanize\ngithub.com/cockroachdb/pebble/internal/intern\ngithub.com/cockroachdb/pebble/internal/invalidating\ngithub.com/cockroachdb/pebble/internal/invariants\ngithub.com/cockroachdb/pebble/internal/keyspan\ngithub.com/cockroachdb/pebble/internal/manifest\ngithub.com/cockroachdb/pebble/internal/manual\ngithub.com/cockroachdb/pebble/internal/private\ngithub.com/cockroachdb/pebble/internal/rangedel\ngithub.com/cockroachdb/pebble/internal/rangekey\ngithub.com/cockroachdb/pebble/internal/rawalloc\ngithub.com/cockroachdb/pebble/internal/testkeys\ngithub.com/cockroachdb/pebble/objstorage\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider/objiotracing\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider/remoteobjcat\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider/sharedcache\ngithub.com/cockroachdb/pebble/objstorage/remote\ngithub.com/cockroachdb/pebble/rangekey\ngithub.com/cockroachdb/pebble/record\ngithub.com/cockroachdb/pebble/sstable\ngithub.com/cockroachdb/pebble/vfs\ngithub.com/cockroachdb/pebble/vfs/atomicfs\n# github.com/cockroachdb/redact v1.1.5\n## explicit; go 1.14\ngithub.com/cockroachdb/redact\ngithub.com/cockroachdb/redact/builder\ngithub.com/cockroachdb/redact/interfaces\ngithub.com/cockroachdb/redact/internal/buffer\ngithub.com/cockroachdb/redact/internal/escape\ngithub.com/cockroachdb/redact/internal/fmtforward\ngithub.com/cockroachdb/redact/internal/markers\ngithub.com/cockroachdb/redact/internal/redact\ngithub.com/cockroachdb/redact/internal/rfmt\ngithub.com/cockroachdb/redact/internal/rfmt/fmtsort\n# github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06\n## explicit; go 1.19\ngithub.com/cockroachdb/tokenbucket\n# github.com/coinbase/rosetta-sdk-go/types v1.0.0\n## explicit; go 1.18\ngithub.com/coinbase/rosetta-sdk-go/types\n# github.com/cometbft/cometbft v0.38.13-0.20240920204745-fdf90d16f608 => github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890\n## explicit; go 1.23.1\ngithub.com/cometbft/cometbft/abci/client\ngithub.com/cometbft/cometbft/abci/example/kvstore\ngithub.com/cometbft/cometbft/abci/server\ngithub.com/cometbft/cometbft/abci/types\ngithub.com/cometbft/cometbft/blocksync\ngithub.com/cometbft/cometbft/cmd/cometbft/commands\ngithub.com/cometbft/cometbft/config\ngithub.com/cometbft/cometbft/consensus\ngithub.com/cometbft/cometbft/consensus/types\ngithub.com/cometbft/cometbft/crypto\ngithub.com/cometbft/cometbft/crypto/batch\ngithub.com/cometbft/cometbft/crypto/ed25519\ngithub.com/cometbft/cometbft/crypto/encoding\ngithub.com/cometbft/cometbft/crypto/merkle\ngithub.com/cometbft/cometbft/crypto/secp256k1\ngithub.com/cometbft/cometbft/crypto/sr25519\ngithub.com/cometbft/cometbft/crypto/tmhash\ngithub.com/cometbft/cometbft/evidence\ngithub.com/cometbft/cometbft/inspect\ngithub.com/cometbft/cometbft/inspect/rpc\ngithub.com/cometbft/cometbft/internal/indexer\ngithub.com/cometbft/cometbft/internal/test\ngithub.com/cometbft/cometbft/libs/async\ngithub.com/cometbft/cometbft/libs/autofile\ngithub.com/cometbft/cometbft/libs/bits\ngithub.com/cometbft/cometbft/libs/bytes\ngithub.com/cometbft/cometbft/libs/cli\ngithub.com/cometbft/cometbft/libs/cli/flags\ngithub.com/cometbft/cometbft/libs/clist\ngithub.com/cometbft/cometbft/libs/cmap\ngithub.com/cometbft/cometbft/libs/events\ngithub.com/cometbft/cometbft/libs/fail\ngithub.com/cometbft/cometbft/libs/flowrate\ngithub.com/cometbft/cometbft/libs/json\ngithub.com/cometbft/cometbft/libs/log\ngithub.com/cometbft/cometbft/libs/math\ngithub.com/cometbft/cometbft/libs/net\ngithub.com/cometbft/cometbft/libs/os\ngithub.com/cometbft/cometbft/libs/progressbar\ngithub.com/cometbft/cometbft/libs/protoio\ngithub.com/cometbft/cometbft/libs/pubsub\ngithub.com/cometbft/cometbft/libs/pubsub/query\ngithub.com/cometbft/cometbft/libs/pubsub/query/syntax\ngithub.com/cometbft/cometbft/libs/rand\ngithub.com/cometbft/cometbft/libs/service\ngithub.com/cometbft/cometbft/libs/strings\ngithub.com/cometbft/cometbft/libs/sync\ngithub.com/cometbft/cometbft/libs/tempfile\ngithub.com/cometbft/cometbft/libs/timer\ngithub.com/cometbft/cometbft/light\ngithub.com/cometbft/cometbft/light/provider\ngithub.com/cometbft/cometbft/light/provider/http\ngithub.com/cometbft/cometbft/light/proxy\ngithub.com/cometbft/cometbft/light/rpc\ngithub.com/cometbft/cometbft/light/store\ngithub.com/cometbft/cometbft/light/store/db\ngithub.com/cometbft/cometbft/mempool\ngithub.com/cometbft/cometbft/node\ngithub.com/cometbft/cometbft/p2p\ngithub.com/cometbft/cometbft/p2p/conn\ngithub.com/cometbft/cometbft/p2p/pex\ngithub.com/cometbft/cometbft/privval\ngithub.com/cometbft/cometbft/proto/tendermint/blocksync\ngithub.com/cometbft/cometbft/proto/tendermint/consensus\ngithub.com/cometbft/cometbft/proto/tendermint/crypto\ngithub.com/cometbft/cometbft/proto/tendermint/libs/bits\ngithub.com/cometbft/cometbft/proto/tendermint/mempool\ngithub.com/cometbft/cometbft/proto/tendermint/p2p\ngithub.com/cometbft/cometbft/proto/tendermint/privval\ngithub.com/cometbft/cometbft/proto/tendermint/state\ngithub.com/cometbft/cometbft/proto/tendermint/statesync\ngithub.com/cometbft/cometbft/proto/tendermint/store\ngithub.com/cometbft/cometbft/proto/tendermint/types\ngithub.com/cometbft/cometbft/proto/tendermint/version\ngithub.com/cometbft/cometbft/proxy\ngithub.com/cometbft/cometbft/rpc/client\ngithub.com/cometbft/cometbft/rpc/client/http\ngithub.com/cometbft/cometbft/rpc/client/local\ngithub.com/cometbft/cometbft/rpc/core\ngithub.com/cometbft/cometbft/rpc/core/types\ngithub.com/cometbft/cometbft/rpc/grpc\ngithub.com/cometbft/cometbft/rpc/jsonrpc/client\ngithub.com/cometbft/cometbft/rpc/jsonrpc/server\ngithub.com/cometbft/cometbft/rpc/jsonrpc/types\ngithub.com/cometbft/cometbft/state\ngithub.com/cometbft/cometbft/state/indexer\ngithub.com/cometbft/cometbft/state/indexer/block\ngithub.com/cometbft/cometbft/state/indexer/block/kv\ngithub.com/cometbft/cometbft/state/indexer/block/null\ngithub.com/cometbft/cometbft/state/indexer/sink/psql\ngithub.com/cometbft/cometbft/state/txindex\ngithub.com/cometbft/cometbft/state/txindex/kv\ngithub.com/cometbft/cometbft/state/txindex/null\ngithub.com/cometbft/cometbft/statesync\ngithub.com/cometbft/cometbft/store\ngithub.com/cometbft/cometbft/test/e2e/app\ngithub.com/cometbft/cometbft/types\ngithub.com/cometbft/cometbft/types/time\ngithub.com/cometbft/cometbft/version\n# github.com/cometbft/cometbft-db v0.15.0\n## explicit; go 1.23.1\ngithub.com/cometbft/cometbft-db\n# github.com/cosmos/btcutil v1.0.5\n## explicit; go 1.19\ngithub.com/cosmos/btcutil/bech32\n# github.com/cosmos/cosmos-db v1.0.3-0.20240408151834-e75f6e4b28d8\n## explicit; go 1.19\ngithub.com/cosmos/cosmos-db\n# github.com/cosmos/cosmos-proto v1.0.0-beta.5\n## explicit; go 1.18\ngithub.com/cosmos/cosmos-proto\ngithub.com/cosmos/cosmos-proto/anyutil\ngithub.com/cosmos/cosmos-proto/runtime\n# github.com/cosmos/cosmos-sdk v0.50.9 => github.com/crypto-org-chain/cosmos-sdk v0.43.0-beta1.0.20241205052910-142c0afa4948\n## explicit; go 1.21\ngithub.com/cosmos/cosmos-sdk/baseapp\ngithub.com/cosmos/cosmos-sdk/baseapp/internal/protocompat\ngithub.com/cosmos/cosmos-sdk/baseapp/oe\ngithub.com/cosmos/cosmos-sdk/client\ngithub.com/cosmos/cosmos-sdk/client/config\ngithub.com/cosmos/cosmos-sdk/client/debug\ngithub.com/cosmos/cosmos-sdk/client/docs\ngithub.com/cosmos/cosmos-sdk/client/flags\ngithub.com/cosmos/cosmos-sdk/client/grpc/cmtservice\ngithub.com/cosmos/cosmos-sdk/client/grpc/node\ngithub.com/cosmos/cosmos-sdk/client/grpc/reflection\ngithub.com/cosmos/cosmos-sdk/client/input\ngithub.com/cosmos/cosmos-sdk/client/keys\ngithub.com/cosmos/cosmos-sdk/client/pruning\ngithub.com/cosmos/cosmos-sdk/client/rpc\ngithub.com/cosmos/cosmos-sdk/client/snapshot\ngithub.com/cosmos/cosmos-sdk/client/tx\ngithub.com/cosmos/cosmos-sdk/codec\ngithub.com/cosmos/cosmos-sdk/codec/address\ngithub.com/cosmos/cosmos-sdk/codec/legacy\ngithub.com/cosmos/cosmos-sdk/codec/testutil\ngithub.com/cosmos/cosmos-sdk/codec/types\ngithub.com/cosmos/cosmos-sdk/codec/unknownproto\ngithub.com/cosmos/cosmos-sdk/crypto\ngithub.com/cosmos/cosmos-sdk/crypto/codec\ngithub.com/cosmos/cosmos-sdk/crypto/hd\ngithub.com/cosmos/cosmos-sdk/crypto/keyring\ngithub.com/cosmos/cosmos-sdk/crypto/keys/bcrypt\ngithub.com/cosmos/cosmos-sdk/crypto/keys/ed25519\ngithub.com/cosmos/cosmos-sdk/crypto/keys/internal/ecdsa\ngithub.com/cosmos/cosmos-sdk/crypto/keys/multisig\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1/libsecp256k1/include\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1/libsecp256k1/src\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1/libsecp256k1/src/modules/recovery\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256r1\ngithub.com/cosmos/cosmos-sdk/crypto/ledger\ngithub.com/cosmos/cosmos-sdk/crypto/types\ngithub.com/cosmos/cosmos-sdk/crypto/types/multisig\ngithub.com/cosmos/cosmos-sdk/crypto/xsalsa20symmetric\ngithub.com/cosmos/cosmos-sdk/internal/conv\ngithub.com/cosmos/cosmos-sdk/runtime\ngithub.com/cosmos/cosmos-sdk/runtime/services\ngithub.com/cosmos/cosmos-sdk/server\ngithub.com/cosmos/cosmos-sdk/server/api\ngithub.com/cosmos/cosmos-sdk/server/cmd\ngithub.com/cosmos/cosmos-sdk/server/config\ngithub.com/cosmos/cosmos-sdk/server/grpc\ngithub.com/cosmos/cosmos-sdk/server/grpc/gogoreflection\ngithub.com/cosmos/cosmos-sdk/server/grpc/reflection/v2alpha1\ngithub.com/cosmos/cosmos-sdk/server/log\ngithub.com/cosmos/cosmos-sdk/server/types\ngithub.com/cosmos/cosmos-sdk/std\ngithub.com/cosmos/cosmos-sdk/telemetry\ngithub.com/cosmos/cosmos-sdk/testutil\ngithub.com/cosmos/cosmos-sdk/testutil/mock\ngithub.com/cosmos/cosmos-sdk/testutil/sims\ngithub.com/cosmos/cosmos-sdk/testutil/testdata\ngithub.com/cosmos/cosmos-sdk/types\ngithub.com/cosmos/cosmos-sdk/types/address\ngithub.com/cosmos/cosmos-sdk/types/bech32\ngithub.com/cosmos/cosmos-sdk/types/bech32/legacybech32\ngithub.com/cosmos/cosmos-sdk/types/errors\ngithub.com/cosmos/cosmos-sdk/types/grpc\ngithub.com/cosmos/cosmos-sdk/types/kv\ngithub.com/cosmos/cosmos-sdk/types/mempool\ngithub.com/cosmos/cosmos-sdk/types/module\ngithub.com/cosmos/cosmos-sdk/types/module/testutil\ngithub.com/cosmos/cosmos-sdk/types/msgservice\ngithub.com/cosmos/cosmos-sdk/types/query\ngithub.com/cosmos/cosmos-sdk/types/registry\ngithub.com/cosmos/cosmos-sdk/types/simulation\ngithub.com/cosmos/cosmos-sdk/types/tx\ngithub.com/cosmos/cosmos-sdk/types/tx/amino\ngithub.com/cosmos/cosmos-sdk/types/tx/signing\ngithub.com/cosmos/cosmos-sdk/version\ngithub.com/cosmos/cosmos-sdk/x/auth\ngithub.com/cosmos/cosmos-sdk/x/auth/ante\ngithub.com/cosmos/cosmos-sdk/x/auth/client\ngithub.com/cosmos/cosmos-sdk/x/auth/client/cli\ngithub.com/cosmos/cosmos-sdk/x/auth/codec\ngithub.com/cosmos/cosmos-sdk/x/auth/exported\ngithub.com/cosmos/cosmos-sdk/x/auth/keeper\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v5\ngithub.com/cosmos/cosmos-sdk/x/auth/posthandler\ngithub.com/cosmos/cosmos-sdk/x/auth/signing\ngithub.com/cosmos/cosmos-sdk/x/auth/simulation\ngithub.com/cosmos/cosmos-sdk/x/auth/tx\ngithub.com/cosmos/cosmos-sdk/x/auth/tx/config\ngithub.com/cosmos/cosmos-sdk/x/auth/types\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting/client/cli\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting/exported\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting/types\ngithub.com/cosmos/cosmos-sdk/x/authz\ngithub.com/cosmos/cosmos-sdk/x/authz/client/cli\ngithub.com/cosmos/cosmos-sdk/x/authz/keeper\ngithub.com/cosmos/cosmos-sdk/x/authz/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/authz/module\ngithub.com/cosmos/cosmos-sdk/x/authz/simulation\ngithub.com/cosmos/cosmos-sdk/x/bank\ngithub.com/cosmos/cosmos-sdk/x/bank/client/cli\ngithub.com/cosmos/cosmos-sdk/x/bank/exported\ngithub.com/cosmos/cosmos-sdk/x/bank/keeper\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/bank/simulation\ngithub.com/cosmos/cosmos-sdk/x/bank/types\ngithub.com/cosmos/cosmos-sdk/x/consensus\ngithub.com/cosmos/cosmos-sdk/x/consensus/exported\ngithub.com/cosmos/cosmos-sdk/x/consensus/keeper\ngithub.com/cosmos/cosmos-sdk/x/consensus/types\ngithub.com/cosmos/cosmos-sdk/x/crisis\ngithub.com/cosmos/cosmos-sdk/x/crisis/exported\ngithub.com/cosmos/cosmos-sdk/x/crisis/keeper\ngithub.com/cosmos/cosmos-sdk/x/crisis/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/crisis/types\ngithub.com/cosmos/cosmos-sdk/x/distribution\ngithub.com/cosmos/cosmos-sdk/x/distribution/client/cli\ngithub.com/cosmos/cosmos-sdk/x/distribution/exported\ngithub.com/cosmos/cosmos-sdk/x/distribution/keeper\ngithub.com/cosmos/cosmos-sdk/x/distribution/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/distribution/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/distribution/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/distribution/simulation\ngithub.com/cosmos/cosmos-sdk/x/distribution/types\ngithub.com/cosmos/cosmos-sdk/x/genutil\ngithub.com/cosmos/cosmos-sdk/x/genutil/client/cli\ngithub.com/cosmos/cosmos-sdk/x/genutil/migrations/v043\ngithub.com/cosmos/cosmos-sdk/x/genutil/migrations/v046\ngithub.com/cosmos/cosmos-sdk/x/genutil/migrations/v047\ngithub.com/cosmos/cosmos-sdk/x/genutil/types\ngithub.com/cosmos/cosmos-sdk/x/gov\ngithub.com/cosmos/cosmos-sdk/x/gov/client\ngithub.com/cosmos/cosmos-sdk/x/gov/client/cli\ngithub.com/cosmos/cosmos-sdk/x/gov/client/utils\ngithub.com/cosmos/cosmos-sdk/x/gov/exported\ngithub.com/cosmos/cosmos-sdk/x/gov/keeper\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v5\ngithub.com/cosmos/cosmos-sdk/x/gov/simulation\ngithub.com/cosmos/cosmos-sdk/x/gov/types\ngithub.com/cosmos/cosmos-sdk/x/gov/types/v1\ngithub.com/cosmos/cosmos-sdk/x/gov/types/v1beta1\ngithub.com/cosmos/cosmos-sdk/x/group\ngithub.com/cosmos/cosmos-sdk/x/group/errors\ngithub.com/cosmos/cosmos-sdk/x/group/internal/math\ngithub.com/cosmos/cosmos-sdk/x/group/internal/orm\ngithub.com/cosmos/cosmos-sdk/x/group/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/mint\ngithub.com/cosmos/cosmos-sdk/x/mint/exported\ngithub.com/cosmos/cosmos-sdk/x/mint/keeper\ngithub.com/cosmos/cosmos-sdk/x/mint/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/mint/simulation\ngithub.com/cosmos/cosmos-sdk/x/mint/types\ngithub.com/cosmos/cosmos-sdk/x/params\ngithub.com/cosmos/cosmos-sdk/x/params/client\ngithub.com/cosmos/cosmos-sdk/x/params/client/cli\ngithub.com/cosmos/cosmos-sdk/x/params/client/utils\ngithub.com/cosmos/cosmos-sdk/x/params/keeper\ngithub.com/cosmos/cosmos-sdk/x/params/types\ngithub.com/cosmos/cosmos-sdk/x/params/types/proposal\ngithub.com/cosmos/cosmos-sdk/x/simulation\ngithub.com/cosmos/cosmos-sdk/x/simulation/client/cli\ngithub.com/cosmos/cosmos-sdk/x/slashing\ngithub.com/cosmos/cosmos-sdk/x/slashing/exported\ngithub.com/cosmos/cosmos-sdk/x/slashing/keeper\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/slashing/simulation\ngithub.com/cosmos/cosmos-sdk/x/slashing/types\ngithub.com/cosmos/cosmos-sdk/x/staking\ngithub.com/cosmos/cosmos-sdk/x/staking/client/cli\ngithub.com/cosmos/cosmos-sdk/x/staking/exported\ngithub.com/cosmos/cosmos-sdk/x/staking/keeper\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v5\ngithub.com/cosmos/cosmos-sdk/x/staking/simulation\ngithub.com/cosmos/cosmos-sdk/x/staking/types\n# github.com/cosmos/go-bip39 v1.0.0\n## explicit; go 1.15\ngithub.com/cosmos/go-bip39\n# github.com/cosmos/gogogateway v1.2.0\n## explicit; go 1.12\ngithub.com/cosmos/gogogateway\n# github.com/cosmos/gogoproto v1.7.0\n## explicit; go 1.19\ngithub.com/cosmos/gogoproto/gogoproto\ngithub.com/cosmos/gogoproto/grpc\ngithub.com/cosmos/gogoproto/io\ngithub.com/cosmos/gogoproto/jsonpb\ngithub.com/cosmos/gogoproto/proto\ngithub.com/cosmos/gogoproto/protoc-gen-gogo/descriptor\ngithub.com/cosmos/gogoproto/sortkeys\ngithub.com/cosmos/gogoproto/types\ngithub.com/cosmos/gogoproto/types/any\ngithub.com/cosmos/gogoproto/types/any/internal\n# github.com/cosmos/iavl v1.2.0\n## explicit; go 1.20\ngithub.com/cosmos/iavl\ngithub.com/cosmos/iavl/cache\ngithub.com/cosmos/iavl/db\ngithub.com/cosmos/iavl/fastnode\ngithub.com/cosmos/iavl/internal/bytes\ngithub.com/cosmos/iavl/internal/color\ngithub.com/cosmos/iavl/internal/encoding\ngithub.com/cosmos/iavl/keyformat\ngithub.com/cosmos/iavl/proto\n# github.com/cosmos/ibc-go/modules/capability v1.0.1\n## explicit; go 1.21\ngithub.com/cosmos/ibc-go/modules/capability\ngithub.com/cosmos/ibc-go/modules/capability/keeper\ngithub.com/cosmos/ibc-go/modules/capability/simulation\ngithub.com/cosmos/ibc-go/modules/capability/types\n# github.com/cosmos/ibc-go/v9 v9.0.2\n## explicit; go 1.22.2\ngithub.com/cosmos/ibc-go/v9/internal/validate\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/client/cli\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/events\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/telemetry\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/types\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/keeper\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/simulation\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/types\ngithub.com/cosmos/ibc-go/v9/modules/core\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client/client/cli\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client/client/utils\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client/keeper\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client/migrations/v7\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client/simulation\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client/types\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection/client/cli\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection/client/utils\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection/keeper\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection/migrations/v7\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection/simulation\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection/types\ngithub.com/cosmos/ibc-go/v9/modules/core/04-channel\ngithub.com/cosmos/ibc-go/v9/modules/core/04-channel/client/cli\ngithub.com/cosmos/ibc-go/v9/modules/core/04-channel/client/utils\ngithub.com/cosmos/ibc-go/v9/modules/core/04-channel/keeper\ngithub.com/cosmos/ibc-go/v9/modules/core/04-channel/simulation\ngithub.com/cosmos/ibc-go/v9/modules/core/04-channel/types\ngithub.com/cosmos/ibc-go/v9/modules/core/05-port/keeper\ngithub.com/cosmos/ibc-go/v9/modules/core/05-port/types\ngithub.com/cosmos/ibc-go/v9/modules/core/23-commitment/types\ngithub.com/cosmos/ibc-go/v9/modules/core/23-commitment/types/v2\ngithub.com/cosmos/ibc-go/v9/modules/core/24-host\ngithub.com/cosmos/ibc-go/v9/modules/core/ante\ngithub.com/cosmos/ibc-go/v9/modules/core/client\ngithub.com/cosmos/ibc-go/v9/modules/core/client/cli\ngithub.com/cosmos/ibc-go/v9/modules/core/errors\ngithub.com/cosmos/ibc-go/v9/modules/core/exported\ngithub.com/cosmos/ibc-go/v9/modules/core/internal/telemetry\ngithub.com/cosmos/ibc-go/v9/modules/core/keeper\ngithub.com/cosmos/ibc-go/v9/modules/core/metrics\ngithub.com/cosmos/ibc-go/v9/modules/core/simulation\ngithub.com/cosmos/ibc-go/v9/modules/core/types\ngithub.com/cosmos/ibc-go/v9/modules/light-clients/06-solomachine\ngithub.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint\ngithub.com/cosmos/ibc-go/v9/modules/light-clients/09-localhost\n# github.com/cosmos/ics23/go v0.11.0\n## explicit; go 1.21\ngithub.com/cosmos/ics23/go\n# github.com/cosmos/ledger-cosmos-go v0.13.3\n## explicit; go 1.18\ngithub.com/cosmos/ledger-cosmos-go\n# github.com/cosmos/rosetta v0.50.3-1\n## explicit; go 1.21\ngithub.com/cosmos/rosetta\ngithub.com/cosmos/rosetta/cmd\ngithub.com/cosmos/rosetta/lib/errors\ngithub.com/cosmos/rosetta/lib/internal/service\ngithub.com/cosmos/rosetta/lib/server\ngithub.com/cosmos/rosetta/lib/types\n# github.com/cosmos/rosetta-sdk-go v0.10.0\n## explicit; go 1.18\ngithub.com/cosmos/rosetta-sdk-go/asserter\ngithub.com/cosmos/rosetta-sdk-go/errors\ngithub.com/cosmos/rosetta-sdk-go/server\n# github.com/creachadair/atomicfile v0.3.1\n## explicit; go 1.19\ngithub.com/creachadair/atomicfile\n# github.com/creachadair/tomledit v0.0.24\n## explicit; go 1.18\ngithub.com/creachadair/tomledit\ngithub.com/creachadair/tomledit/parser\ngithub.com/creachadair/tomledit/scanner\ngithub.com/creachadair/tomledit/transform\n# github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716\n## explicit; go 1.21\ngithub.com/crypto-org-chain/go-block-stm\n# github.com/danieljoos/wincred v1.2.1\n## explicit; go 1.18\ngithub.com/danieljoos/wincred\n# github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc\n## explicit\ngithub.com/davecgh/go-spew/spew\n# github.com/deckarep/golang-set/v2 v2.1.0\n## explicit; go 1.18\ngithub.com/deckarep/golang-set/v2\n# github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0\n## explicit; go 1.17\ngithub.com/decred/dcrd/dcrec/secp256k1/v4\ngithub.com/decred/dcrd/dcrec/secp256k1/v4/ecdsa\n# github.com/desertbit/timer v1.0.1\n## explicit; go 1.20\ngithub.com/desertbit/timer\n# github.com/dgraph-io/badger/v4 v4.3.0\n## explicit; go 1.19\ngithub.com/dgraph-io/badger/v4\ngithub.com/dgraph-io/badger/v4/fb\ngithub.com/dgraph-io/badger/v4/options\ngithub.com/dgraph-io/badger/v4/pb\ngithub.com/dgraph-io/badger/v4/skl\ngithub.com/dgraph-io/badger/v4/table\ngithub.com/dgraph-io/badger/v4/trie\ngithub.com/dgraph-io/badger/v4/y\n# github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91\n## explicit; go 1.19\ngithub.com/dgraph-io/ristretto\ngithub.com/dgraph-io/ristretto/z\ngithub.com/dgraph-io/ristretto/z/simd\n# github.com/dlclark/regexp2 v1.7.0\n## explicit; go 1.13\ngithub.com/dlclark/regexp2\ngithub.com/dlclark/regexp2/syntax\n# github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7\n## explicit; go 1.16\ngithub.com/dop251/goja\ngithub.com/dop251/goja/ast\ngithub.com/dop251/goja/file\ngithub.com/dop251/goja/ftoa\ngithub.com/dop251/goja/ftoa/internal/fast\ngithub.com/dop251/goja/parser\ngithub.com/dop251/goja/token\ngithub.com/dop251/goja/unistring\n# github.com/dustin/go-humanize v1.0.1\n## explicit; go 1.16\ngithub.com/dustin/go-humanize\n# github.com/dvsekhvalnov/jose2go v1.7.0\n## explicit; go 1.15\ngithub.com/dvsekhvalnov/jose2go\ngithub.com/dvsekhvalnov/jose2go/aes\ngithub.com/dvsekhvalnov/jose2go/arrays\ngithub.com/dvsekhvalnov/jose2go/base64url\ngithub.com/dvsekhvalnov/jose2go/compact\ngithub.com/dvsekhvalnov/jose2go/kdf\ngithub.com/dvsekhvalnov/jose2go/keys/ecc\ngithub.com/dvsekhvalnov/jose2go/padding\n# github.com/edsrzf/mmap-go v1.0.0\n## explicit\ngithub.com/edsrzf/mmap-go\n# github.com/emicklei/dot v1.6.2\n## explicit; go 1.13\ngithub.com/emicklei/dot\n# github.com/ethereum/go-ethereum v1.10.26 => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183\n## explicit; go 1.19\ngithub.com/ethereum/go-ethereum\ngithub.com/ethereum/go-ethereum/accounts\ngithub.com/ethereum/go-ethereum/accounts/abi\ngithub.com/ethereum/go-ethereum/accounts/keystore\ngithub.com/ethereum/go-ethereum/accounts/scwallet\ngithub.com/ethereum/go-ethereum/common\ngithub.com/ethereum/go-ethereum/common/bitutil\ngithub.com/ethereum/go-ethereum/common/hexutil\ngithub.com/ethereum/go-ethereum/common/lru\ngithub.com/ethereum/go-ethereum/common/math\ngithub.com/ethereum/go-ethereum/common/mclock\ngithub.com/ethereum/go-ethereum/common/prque\ngithub.com/ethereum/go-ethereum/consensus\ngithub.com/ethereum/go-ethereum/consensus/ethash\ngithub.com/ethereum/go-ethereum/consensus/misc\ngithub.com/ethereum/go-ethereum/core\ngithub.com/ethereum/go-ethereum/core/bloombits\ngithub.com/ethereum/go-ethereum/core/rawdb\ngithub.com/ethereum/go-ethereum/core/state\ngithub.com/ethereum/go-ethereum/core/state/snapshot\ngithub.com/ethereum/go-ethereum/core/types\ngithub.com/ethereum/go-ethereum/core/vm\ngithub.com/ethereum/go-ethereum/crypto\ngithub.com/ethereum/go-ethereum/crypto/blake2b\ngithub.com/ethereum/go-ethereum/crypto/bls12381\ngithub.com/ethereum/go-ethereum/crypto/bn256\ngithub.com/ethereum/go-ethereum/crypto/bn256/cloudflare\ngithub.com/ethereum/go-ethereum/crypto/bn256/google\ngithub.com/ethereum/go-ethereum/crypto/ecies\ngithub.com/ethereum/go-ethereum/crypto/secp256k1\ngithub.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/include\ngithub.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src\ngithub.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/modules/recovery\ngithub.com/ethereum/go-ethereum/eth/filters\ngithub.com/ethereum/go-ethereum/eth/tracers\ngithub.com/ethereum/go-ethereum/eth/tracers/js\ngithub.com/ethereum/go-ethereum/eth/tracers/js/internal/tracers\ngithub.com/ethereum/go-ethereum/eth/tracers/logger\ngithub.com/ethereum/go-ethereum/eth/tracers/native\ngithub.com/ethereum/go-ethereum/ethclient\ngithub.com/ethereum/go-ethereum/ethdb\ngithub.com/ethereum/go-ethereum/ethdb/leveldb\ngithub.com/ethereum/go-ethereum/ethdb/memorydb\ngithub.com/ethereum/go-ethereum/ethdb/pebble\ngithub.com/ethereum/go-ethereum/event\ngithub.com/ethereum/go-ethereum/internal/ethapi\ngithub.com/ethereum/go-ethereum/internal/syncx\ngithub.com/ethereum/go-ethereum/internal/version\ngithub.com/ethereum/go-ethereum/log\ngithub.com/ethereum/go-ethereum/metrics\ngithub.com/ethereum/go-ethereum/metrics/exp\ngithub.com/ethereum/go-ethereum/metrics/prometheus\ngithub.com/ethereum/go-ethereum/p2p\ngithub.com/ethereum/go-ethereum/p2p/discover\ngithub.com/ethereum/go-ethereum/p2p/discover/v4wire\ngithub.com/ethereum/go-ethereum/p2p/discover/v5wire\ngithub.com/ethereum/go-ethereum/p2p/enode\ngithub.com/ethereum/go-ethereum/p2p/enr\ngithub.com/ethereum/go-ethereum/p2p/nat\ngithub.com/ethereum/go-ethereum/p2p/netutil\ngithub.com/ethereum/go-ethereum/p2p/rlpx\ngithub.com/ethereum/go-ethereum/params\ngithub.com/ethereum/go-ethereum/rlp\ngithub.com/ethereum/go-ethereum/rlp/internal/rlpstruct\ngithub.com/ethereum/go-ethereum/rpc\ngithub.com/ethereum/go-ethereum/signer/core/apitypes\ngithub.com/ethereum/go-ethereum/trie\n# github.com/fatih/color v1.17.0\n## explicit; go 1.17\ngithub.com/fatih/color\n# github.com/felixge/httpsnoop v1.0.4\n## explicit; go 1.13\ngithub.com/felixge/httpsnoop\n# github.com/fsnotify/fsnotify v1.7.0\n## explicit; go 1.17\ngithub.com/fsnotify/fsnotify\n# github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff\n## explicit\ngithub.com/gballet/go-libpcsclite\n# github.com/getsentry/sentry-go v0.28.1\n## explicit; go 1.18\ngithub.com/getsentry/sentry-go\ngithub.com/getsentry/sentry-go/internal/debug\ngithub.com/getsentry/sentry-go/internal/otel/baggage\ngithub.com/getsentry/sentry-go/internal/otel/baggage/internal/baggage\ngithub.com/getsentry/sentry-go/internal/ratelimit\ngithub.com/getsentry/sentry-go/internal/traceparser\n# github.com/go-kit/kit v0.13.0\n## explicit; go 1.17\ngithub.com/go-kit/kit/metrics\ngithub.com/go-kit/kit/metrics/discard\ngithub.com/go-kit/kit/metrics/internal/lv\ngithub.com/go-kit/kit/metrics/prometheus\n# github.com/go-kit/log v0.2.1\n## explicit; go 1.17\ngithub.com/go-kit/log\ngithub.com/go-kit/log/level\ngithub.com/go-kit/log/term\n# github.com/go-logfmt/logfmt v0.6.0\n## explicit; go 1.17\ngithub.com/go-logfmt/logfmt\n# github.com/go-logr/logr v1.4.1\n## explicit; go 1.18\ngithub.com/go-logr/logr\ngithub.com/go-logr/logr/funcr\n# github.com/go-logr/stdr v1.2.2\n## explicit; go 1.16\ngithub.com/go-logr/stdr\n# github.com/go-ole/go-ole v1.2.6\n## explicit; go 1.12\ngithub.com/go-ole/go-ole\ngithub.com/go-ole/go-ole/oleutil\n# github.com/go-sourcemap/sourcemap v2.1.3+incompatible\n## explicit\ngithub.com/go-sourcemap/sourcemap\ngithub.com/go-sourcemap/sourcemap/internal/base64vlq\n# github.com/go-stack/stack v1.8.1\n## explicit; go 1.17\ngithub.com/go-stack/stack\n# github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2\n## explicit; go 1.12\ngithub.com/godbus/dbus\n# github.com/gofrs/flock v0.8.1\n## explicit\ngithub.com/gofrs/flock\n# github.com/gogo/googleapis v1.4.1\n## explicit; go 1.12\ngithub.com/gogo/googleapis/google/api\n# github.com/gogo/protobuf v1.3.2\n## explicit; go 1.15\ngithub.com/gogo/protobuf/gogoproto\ngithub.com/gogo/protobuf/proto\ngithub.com/gogo/protobuf/protoc-gen-gogo/descriptor\ngithub.com/gogo/protobuf/sortkeys\ngithub.com/gogo/protobuf/types\n# github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da\n## explicit\ngithub.com/golang/groupcache/lru\n# github.com/golang/mock v1.6.0\n## explicit; go 1.11\ngithub.com/golang/mock/gomock\n# github.com/golang/protobuf v1.5.4\n## explicit; go 1.17\ngithub.com/golang/protobuf/descriptor\ngithub.com/golang/protobuf/jsonpb\ngithub.com/golang/protobuf/proto\ngithub.com/golang/protobuf/protoc-gen-go/descriptor\ngithub.com/golang/protobuf/ptypes/any\ngithub.com/golang/protobuf/ptypes/duration\ngithub.com/golang/protobuf/ptypes/empty\ngithub.com/golang/protobuf/ptypes/timestamp\ngithub.com/golang/protobuf/ptypes/wrappers\n# github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb\n## explicit\ngithub.com/golang/snappy\n# github.com/google/btree v1.1.3\n## explicit; go 1.18\ngithub.com/google/btree\n# github.com/google/flatbuffers v24.3.25+incompatible\n## explicit\ngithub.com/google/flatbuffers/go\n# github.com/google/go-cmp v0.6.0\n## explicit; go 1.13\ngithub.com/google/go-cmp/cmp\ngithub.com/google/go-cmp/cmp/cmpopts\ngithub.com/google/go-cmp/cmp/internal/diff\ngithub.com/google/go-cmp/cmp/internal/flags\ngithub.com/google/go-cmp/cmp/internal/function\ngithub.com/google/go-cmp/cmp/internal/value\n# github.com/google/orderedcode v0.0.1\n## explicit\ngithub.com/google/orderedcode\n# github.com/google/s2a-go v0.1.7\n## explicit; go 1.19\ngithub.com/google/s2a-go\ngithub.com/google/s2a-go/fallback\ngithub.com/google/s2a-go/internal/authinfo\ngithub.com/google/s2a-go/internal/handshaker\ngithub.com/google/s2a-go/internal/handshaker/service\ngithub.com/google/s2a-go/internal/proto/common_go_proto\ngithub.com/google/s2a-go/internal/proto/s2a_context_go_proto\ngithub.com/google/s2a-go/internal/proto/s2a_go_proto\ngithub.com/google/s2a-go/internal/proto/v2/common_go_proto\ngithub.com/google/s2a-go/internal/proto/v2/s2a_context_go_proto\ngithub.com/google/s2a-go/internal/proto/v2/s2a_go_proto\ngithub.com/google/s2a-go/internal/record\ngithub.com/google/s2a-go/internal/record/internal/aeadcrypter\ngithub.com/google/s2a-go/internal/record/internal/halfconn\ngithub.com/google/s2a-go/internal/tokenmanager\ngithub.com/google/s2a-go/internal/v2\ngithub.com/google/s2a-go/internal/v2/certverifier\ngithub.com/google/s2a-go/internal/v2/remotesigner\ngithub.com/google/s2a-go/internal/v2/tlsconfigstore\ngithub.com/google/s2a-go/retry\ngithub.com/google/s2a-go/stream\n# github.com/google/uuid v1.6.0\n## explicit\ngithub.com/google/uuid\n# github.com/googleapis/enterprise-certificate-proxy v0.3.2\n## explicit; go 1.19\ngithub.com/googleapis/enterprise-certificate-proxy/client\ngithub.com/googleapis/enterprise-certificate-proxy/client/util\n# github.com/googleapis/gax-go/v2 v2.12.5\n## explicit; go 1.20\ngithub.com/googleapis/gax-go/v2\ngithub.com/googleapis/gax-go/v2/apierror\ngithub.com/googleapis/gax-go/v2/apierror/internal/proto\ngithub.com/googleapis/gax-go/v2/callctx\ngithub.com/googleapis/gax-go/v2/internal\n# github.com/gorilla/handlers v1.5.2\n## explicit; go 1.20\ngithub.com/gorilla/handlers\n# github.com/gorilla/mux v1.8.1\n## explicit; go 1.20\ngithub.com/gorilla/mux\n# github.com/gorilla/websocket v1.5.3\n## explicit; go 1.12\ngithub.com/gorilla/websocket\n# github.com/grpc-ecosystem/go-grpc-middleware v1.4.0\n## explicit; go 1.14\ngithub.com/grpc-ecosystem/go-grpc-middleware\ngithub.com/grpc-ecosystem/go-grpc-middleware/recovery\n# github.com/grpc-ecosystem/grpc-gateway v1.16.0\n## explicit; go 1.14\ngithub.com/grpc-ecosystem/grpc-gateway/internal\ngithub.com/grpc-ecosystem/grpc-gateway/runtime\ngithub.com/grpc-ecosystem/grpc-gateway/utilities\n# github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c\n## explicit\ngithub.com/gsterjov/go-libsecret\n# github.com/hashicorp/go-cleanhttp v0.5.2\n## explicit; go 1.13\ngithub.com/hashicorp/go-cleanhttp\n# github.com/hashicorp/go-getter v1.7.4\n## explicit; go 1.13\ngithub.com/hashicorp/go-getter\ngithub.com/hashicorp/go-getter/helper/url\n# github.com/hashicorp/go-hclog v1.6.3\n## explicit; go 1.13\ngithub.com/hashicorp/go-hclog\n# github.com/hashicorp/go-immutable-radix v1.3.1\n## explicit\ngithub.com/hashicorp/go-immutable-radix\n# github.com/hashicorp/go-metrics v0.5.3\n## explicit; go 1.12\ngithub.com/hashicorp/go-metrics\ngithub.com/hashicorp/go-metrics/datadog\ngithub.com/hashicorp/go-metrics/prometheus\n# github.com/hashicorp/go-plugin v1.6.1\n## explicit; go 1.17\ngithub.com/hashicorp/go-plugin\ngithub.com/hashicorp/go-plugin/internal/cmdrunner\ngithub.com/hashicorp/go-plugin/internal/grpcmux\ngithub.com/hashicorp/go-plugin/internal/plugin\ngithub.com/hashicorp/go-plugin/runner\n# github.com/hashicorp/go-safetemp v1.0.0\n## explicit\ngithub.com/hashicorp/go-safetemp\n# github.com/hashicorp/go-version v1.6.0\n## explicit\ngithub.com/hashicorp/go-version\n# github.com/hashicorp/golang-lru v1.0.2\n## explicit; go 1.12\ngithub.com/hashicorp/golang-lru\ngithub.com/hashicorp/golang-lru/simplelru\n# github.com/hashicorp/golang-lru/v2 v2.0.7\n## explicit; go 1.18\ngithub.com/hashicorp/golang-lru/v2\ngithub.com/hashicorp/golang-lru/v2/internal\ngithub.com/hashicorp/golang-lru/v2/simplelru\n# github.com/hashicorp/hcl v1.0.0\n## explicit\ngithub.com/hashicorp/hcl\ngithub.com/hashicorp/hcl/hcl/ast\ngithub.com/hashicorp/hcl/hcl/parser\ngithub.com/hashicorp/hcl/hcl/printer\ngithub.com/hashicorp/hcl/hcl/scanner\ngithub.com/hashicorp/hcl/hcl/strconv\ngithub.com/hashicorp/hcl/hcl/token\ngithub.com/hashicorp/hcl/json/parser\ngithub.com/hashicorp/hcl/json/scanner\ngithub.com/hashicorp/hcl/json/token\n# github.com/hashicorp/yamux v0.1.1\n## explicit; go 1.15\ngithub.com/hashicorp/yamux\n# github.com/hdevalence/ed25519consensus v0.2.0\n## explicit; go 1.19\ngithub.com/hdevalence/ed25519consensus\n# github.com/holiman/bloomfilter/v2 v2.0.3\n## explicit; go 1.15\ngithub.com/holiman/bloomfilter/v2\n# github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c\n## explicit; go 1.18\ngithub.com/holiman/uint256\n# github.com/huandu/skiplist v1.2.0\n## explicit; go 1.12\ngithub.com/huandu/skiplist\n# github.com/huin/goupnp v1.0.3\n## explicit; go 1.14\ngithub.com/huin/goupnp\ngithub.com/huin/goupnp/dcps/internetgateway1\ngithub.com/huin/goupnp/dcps/internetgateway2\ngithub.com/huin/goupnp/httpu\ngithub.com/huin/goupnp/scpd\ngithub.com/huin/goupnp/soap\ngithub.com/huin/goupnp/ssdp\n# github.com/iancoleman/strcase v0.3.0\n## explicit; go 1.16\ngithub.com/iancoleman/strcase\n# github.com/improbable-eng/grpc-web v0.15.0\n## explicit; go 1.16\ngithub.com/improbable-eng/grpc-web/go/grpcweb\n# github.com/inconshreveable/mousetrap v1.1.0\n## explicit; go 1.18\ngithub.com/inconshreveable/mousetrap\n# github.com/jackpal/go-nat-pmp v1.0.2\n## explicit\ngithub.com/jackpal/go-nat-pmp\n# github.com/jmespath/go-jmespath v0.4.0\n## explicit; go 1.14\ngithub.com/jmespath/go-jmespath\n# github.com/jmhodges/levigo v1.0.0\n## explicit\ngithub.com/jmhodges/levigo\n# github.com/klauspost/compress v1.17.9\n## explicit; go 1.20\ngithub.com/klauspost/compress\ngithub.com/klauspost/compress/fse\ngithub.com/klauspost/compress/huff0\ngithub.com/klauspost/compress/internal/cpuinfo\ngithub.com/klauspost/compress/internal/race\ngithub.com/klauspost/compress/internal/snapref\ngithub.com/klauspost/compress/s2\ngithub.com/klauspost/compress/snappy\ngithub.com/klauspost/compress/zstd\ngithub.com/klauspost/compress/zstd/internal/xxhash\n# github.com/kr/pretty v0.3.1\n## explicit; go 1.12\ngithub.com/kr/pretty\n# github.com/kr/text v0.2.0\n## explicit\ngithub.com/kr/text\n# github.com/lib/pq v1.10.9\n## explicit; go 1.13\ngithub.com/lib/pq\ngithub.com/lib/pq/oid\ngithub.com/lib/pq/scram\n# github.com/linxGnu/grocksdb v1.9.3\n## explicit; go 1.17\ngithub.com/linxGnu/grocksdb\n# github.com/magiconair/properties v1.8.7\n## explicit; go 1.19\ngithub.com/magiconair/properties\n# github.com/manifoldco/promptui v0.9.0\n## explicit; go 1.12\ngithub.com/manifoldco/promptui\ngithub.com/manifoldco/promptui/list\ngithub.com/manifoldco/promptui/screenbuf\n# github.com/mattn/go-colorable v0.1.13\n## explicit; go 1.15\ngithub.com/mattn/go-colorable\n# github.com/mattn/go-isatty v0.0.20\n## explicit; go 1.15\ngithub.com/mattn/go-isatty\n# github.com/mattn/go-runewidth v0.0.15\n## explicit; go 1.9\ngithub.com/mattn/go-runewidth\n# github.com/minio/highwayhash v1.0.3\n## explicit; go 1.15\ngithub.com/minio/highwayhash\n# github.com/mitchellh/go-homedir v1.1.0\n## explicit\ngithub.com/mitchellh/go-homedir\n# github.com/mitchellh/go-testing-interface v1.14.1\n## explicit; go 1.14\ngithub.com/mitchellh/go-testing-interface\n# github.com/mitchellh/mapstructure v1.5.0\n## explicit; go 1.14\ngithub.com/mitchellh/mapstructure\n# github.com/mtibben/percent v0.2.1\n## explicit; go 1.14\ngithub.com/mtibben/percent\n# github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822\n## explicit\ngithub.com/munnerz/goautoneg\n# github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a\n## explicit; go 1.17\ngithub.com/oasisprotocol/curve25519-voi/curve\ngithub.com/oasisprotocol/curve25519-voi/curve/scalar\ngithub.com/oasisprotocol/curve25519-voi/internal/disalloweq\ngithub.com/oasisprotocol/curve25519-voi/internal/field\ngithub.com/oasisprotocol/curve25519-voi/internal/lattice\ngithub.com/oasisprotocol/curve25519-voi/internal/scalar128\ngithub.com/oasisprotocol/curve25519-voi/internal/strobe\ngithub.com/oasisprotocol/curve25519-voi/internal/subtle\ngithub.com/oasisprotocol/curve25519-voi/internal/toolchain\ngithub.com/oasisprotocol/curve25519-voi/internal/zeroreader\ngithub.com/oasisprotocol/curve25519-voi/primitives/ed25519\ngithub.com/oasisprotocol/curve25519-voi/primitives/ed25519/extra/cache\ngithub.com/oasisprotocol/curve25519-voi/primitives/merlin\ngithub.com/oasisprotocol/curve25519-voi/primitives/sr25519\n# github.com/oklog/run v1.1.0\n## explicit; go 1.13\ngithub.com/oklog/run\n# github.com/olekukonko/tablewriter v0.0.5\n## explicit; go 1.12\ngithub.com/olekukonko/tablewriter\n# github.com/onsi/ginkgo/v2 v2.7.0\n## explicit; go 1.18\ngithub.com/onsi/ginkgo/v2\ngithub.com/onsi/ginkgo/v2/config\ngithub.com/onsi/ginkgo/v2/formatter\ngithub.com/onsi/ginkgo/v2/internal\ngithub.com/onsi/ginkgo/v2/internal/global\ngithub.com/onsi/ginkgo/v2/internal/interrupt_handler\ngithub.com/onsi/ginkgo/v2/internal/parallel_support\ngithub.com/onsi/ginkgo/v2/internal/testingtproxy\ngithub.com/onsi/ginkgo/v2/reporters\ngithub.com/onsi/ginkgo/v2/types\n# github.com/onsi/gomega v1.26.0\n## explicit; go 1.18\ngithub.com/onsi/gomega\ngithub.com/onsi/gomega/format\ngithub.com/onsi/gomega/internal\ngithub.com/onsi/gomega/internal/gutil\ngithub.com/onsi/gomega/matchers\ngithub.com/onsi/gomega/matchers/support/goraph/bipartitegraph\ngithub.com/onsi/gomega/matchers/support/goraph/edge\ngithub.com/onsi/gomega/matchers/support/goraph/node\ngithub.com/onsi/gomega/matchers/support/goraph/util\ngithub.com/onsi/gomega/types\n# github.com/pelletier/go-toml/v2 v2.2.2\n## explicit; go 1.16\ngithub.com/pelletier/go-toml/v2\ngithub.com/pelletier/go-toml/v2/internal/characters\ngithub.com/pelletier/go-toml/v2/internal/danger\ngithub.com/pelletier/go-toml/v2/internal/tracker\ngithub.com/pelletier/go-toml/v2/unstable\n# github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7\n## explicit; go 1.17\ngithub.com/petermattis/goid\n# github.com/pkg/errors v0.9.1\n## explicit\ngithub.com/pkg/errors\n# github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2\n## explicit\ngithub.com/pmezard/go-difflib/difflib\n# github.com/prometheus/client_golang v1.20.5\n## explicit; go 1.20\ngithub.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil\ngithub.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header\ngithub.com/prometheus/client_golang/prometheus\ngithub.com/prometheus/client_golang/prometheus/internal\ngithub.com/prometheus/client_golang/prometheus/promhttp\ngithub.com/prometheus/client_golang/prometheus/push\n# github.com/prometheus/client_model v0.6.1\n## explicit; go 1.19\ngithub.com/prometheus/client_model/go\n# github.com/prometheus/common v0.60.1\n## explicit; go 1.21\ngithub.com/prometheus/common/expfmt\ngithub.com/prometheus/common/model\n# github.com/prometheus/procfs v0.15.1\n## explicit; go 1.20\ngithub.com/prometheus/procfs\ngithub.com/prometheus/procfs/internal/fs\ngithub.com/prometheus/procfs/internal/util\n# github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475\n## explicit\ngithub.com/rcrowley/go-metrics\n# github.com/rivo/uniseg v0.2.0\n## explicit; go 1.12\ngithub.com/rivo/uniseg\n# github.com/rogpeppe/go-internal v1.12.0\n## explicit; go 1.20\ngithub.com/rogpeppe/go-internal/fmtsort\n# github.com/rs/cors v1.11.1\n## explicit; go 1.13\ngithub.com/rs/cors\ngithub.com/rs/cors/internal\n# github.com/rs/zerolog v1.33.0\n## explicit; go 1.15\ngithub.com/rs/zerolog\ngithub.com/rs/zerolog/internal/cbor\ngithub.com/rs/zerolog/internal/json\ngithub.com/rs/zerolog/pkgerrors\n# github.com/sagikazarmark/locafero v0.6.0\n## explicit; go 1.20\ngithub.com/sagikazarmark/locafero\n# github.com/sagikazarmark/slog-shim v0.1.0\n## explicit; go 1.20\ngithub.com/sagikazarmark/slog-shim\n# github.com/sasha-s/go-deadlock v0.3.5\n## explicit\ngithub.com/sasha-s/go-deadlock\n# github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible\n## explicit\ngithub.com/shirou/gopsutil/cpu\ngithub.com/shirou/gopsutil/internal/common\n# github.com/sourcegraph/conc v0.3.0\n## explicit; go 1.19\ngithub.com/sourcegraph/conc\ngithub.com/sourcegraph/conc/internal/multierror\ngithub.com/sourcegraph/conc/iter\ngithub.com/sourcegraph/conc/panics\n# github.com/spf13/afero v1.11.0\n## explicit; go 1.19\ngithub.com/spf13/afero\ngithub.com/spf13/afero/internal/common\ngithub.com/spf13/afero/mem\n# github.com/spf13/cast v1.6.0\n## explicit; go 1.19\ngithub.com/spf13/cast\n# github.com/spf13/cobra v1.8.1\n## explicit; go 1.15\ngithub.com/spf13/cobra\n# github.com/spf13/pflag v1.0.5\n## explicit; go 1.12\ngithub.com/spf13/pflag\n# github.com/spf13/viper v1.19.0\n## explicit; go 1.20\ngithub.com/spf13/viper\ngithub.com/spf13/viper/internal/encoding\ngithub.com/spf13/viper/internal/encoding/dotenv\ngithub.com/spf13/viper/internal/encoding/hcl\ngithub.com/spf13/viper/internal/encoding/ini\ngithub.com/spf13/viper/internal/encoding/javaproperties\ngithub.com/spf13/viper/internal/encoding/json\ngithub.com/spf13/viper/internal/encoding/toml\ngithub.com/spf13/viper/internal/encoding/yaml\ngithub.com/spf13/viper/internal/features\n# github.com/status-im/keycard-go v0.2.0\n## explicit; go 1.17\ngithub.com/status-im/keycard-go/derivationpath\ngithub.com/status-im/keycard-go/hexutils\n# github.com/stretchr/objx v0.5.2\n## explicit; go 1.20\ngithub.com/stretchr/objx\n# github.com/stretchr/testify v1.9.0\n## explicit; go 1.17\ngithub.com/stretchr/testify/assert\ngithub.com/stretchr/testify/mock\ngithub.com/stretchr/testify/require\ngithub.com/stretchr/testify/suite\n# github.com/subosito/gotenv v1.6.0\n## explicit; go 1.18\ngithub.com/subosito/gotenv\n# github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7\n## explicit; go 1.14\ngithub.com/syndtr/goleveldb/leveldb\ngithub.com/syndtr/goleveldb/leveldb/cache\ngithub.com/syndtr/goleveldb/leveldb/comparer\ngithub.com/syndtr/goleveldb/leveldb/errors\ngithub.com/syndtr/goleveldb/leveldb/filter\ngithub.com/syndtr/goleveldb/leveldb/iterator\ngithub.com/syndtr/goleveldb/leveldb/journal\ngithub.com/syndtr/goleveldb/leveldb/memdb\ngithub.com/syndtr/goleveldb/leveldb/opt\ngithub.com/syndtr/goleveldb/leveldb/storage\ngithub.com/syndtr/goleveldb/leveldb/table\ngithub.com/syndtr/goleveldb/leveldb/util\n# github.com/tendermint/go-amino v0.16.0\n## explicit; go 1.12\ngithub.com/tendermint/go-amino\n# github.com/tidwall/btree v1.7.0 => github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c\n## explicit; go 1.19\ngithub.com/tidwall/btree\n# github.com/tidwall/gjson v1.14.4\n## explicit; go 1.12\ngithub.com/tidwall/gjson\n# github.com/tidwall/match v1.1.1\n## explicit; go 1.15\ngithub.com/tidwall/match\n# github.com/tidwall/pretty v1.2.0\n## explicit; go 1.16\ngithub.com/tidwall/pretty\n# github.com/tidwall/sjson v1.2.5\n## explicit; go 1.14\ngithub.com/tidwall/sjson\n# github.com/tklauser/go-sysconf v0.3.10\n## explicit; go 1.13\ngithub.com/tklauser/go-sysconf\n# github.com/tklauser/numcpus v0.4.0\n## explicit; go 1.11\ngithub.com/tklauser/numcpus\n# github.com/tyler-smith/go-bip39 v1.1.0\n## explicit; go 1.14\ngithub.com/tyler-smith/go-bip39\ngithub.com/tyler-smith/go-bip39/wordlists\n# github.com/ulikunitz/xz v0.5.11\n## explicit; go 1.12\ngithub.com/ulikunitz/xz\ngithub.com/ulikunitz/xz/internal/hash\ngithub.com/ulikunitz/xz/internal/xlog\ngithub.com/ulikunitz/xz/lzma\n# github.com/zondax/hid v0.9.2\n## explicit\ngithub.com/zondax/hid\n# github.com/zondax/ledger-go v0.14.3\n## explicit; go 1.18\ngithub.com/zondax/ledger-go\n# go.etcd.io/bbolt v1.4.0-alpha.1\n## explicit; go 1.22\ngo.etcd.io/bbolt\ngo.etcd.io/bbolt/errors\ngo.etcd.io/bbolt/internal/common\n# go.opencensus.io v0.24.0\n## explicit; go 1.13\ngo.opencensus.io\ngo.opencensus.io/internal\ngo.opencensus.io/internal/tagencoding\ngo.opencensus.io/metric/metricdata\ngo.opencensus.io/metric/metricproducer\ngo.opencensus.io/plugin/ocgrpc\ngo.opencensus.io/plugin/ochttp\ngo.opencensus.io/plugin/ochttp/propagation/b3\ngo.opencensus.io/resource\ngo.opencensus.io/stats\ngo.opencensus.io/stats/internal\ngo.opencensus.io/stats/view\ngo.opencensus.io/tag\ngo.opencensus.io/trace\ngo.opencensus.io/trace/internal\ngo.opencensus.io/trace/propagation\ngo.opencensus.io/trace/tracestate\n# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0\n## explicit; go 1.20\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal\n# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0\n## explicit; go 1.20\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil\n# go.opentelemetry.io/otel v1.24.0\n## explicit; go 1.20\ngo.opentelemetry.io/otel\ngo.opentelemetry.io/otel/attribute\ngo.opentelemetry.io/otel/baggage\ngo.opentelemetry.io/otel/codes\ngo.opentelemetry.io/otel/internal\ngo.opentelemetry.io/otel/internal/attribute\ngo.opentelemetry.io/otel/internal/baggage\ngo.opentelemetry.io/otel/internal/global\ngo.opentelemetry.io/otel/propagation\ngo.opentelemetry.io/otel/semconv/v1.17.0\ngo.opentelemetry.io/otel/semconv/v1.20.0\n# go.opentelemetry.io/otel/metric v1.24.0\n## explicit; go 1.20\ngo.opentelemetry.io/otel/metric\ngo.opentelemetry.io/otel/metric/embedded\ngo.opentelemetry.io/otel/metric/noop\n# go.opentelemetry.io/otel/trace v1.24.0\n## explicit; go 1.20\ngo.opentelemetry.io/otel/trace\ngo.opentelemetry.io/otel/trace/embedded\n# go.uber.org/multierr v1.11.0\n## explicit; go 1.19\ngo.uber.org/multierr\n# golang.org/x/crypto v0.28.0\n## explicit; go 1.20\ngolang.org/x/crypto/argon2\ngolang.org/x/crypto/bcrypt\ngolang.org/x/crypto/blake2b\ngolang.org/x/crypto/blake2s\ngolang.org/x/crypto/blowfish\ngolang.org/x/crypto/chacha20\ngolang.org/x/crypto/chacha20poly1305\ngolang.org/x/crypto/cryptobyte\ngolang.org/x/crypto/cryptobyte/asn1\ngolang.org/x/crypto/curve25519\ngolang.org/x/crypto/hkdf\ngolang.org/x/crypto/internal/alias\ngolang.org/x/crypto/internal/poly1305\ngolang.org/x/crypto/nacl/box\ngolang.org/x/crypto/nacl/secretbox\ngolang.org/x/crypto/openpgp/armor\ngolang.org/x/crypto/openpgp/errors\ngolang.org/x/crypto/pbkdf2\ngolang.org/x/crypto/ripemd160\ngolang.org/x/crypto/salsa20/salsa\ngolang.org/x/crypto/scrypt\ngolang.org/x/crypto/sha3\n# golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8\n## explicit; go 1.20\ngolang.org/x/exp/constraints\ngolang.org/x/exp/maps\ngolang.org/x/exp/rand\ngolang.org/x/exp/slices\ngolang.org/x/exp/slog\ngolang.org/x/exp/slog/internal\ngolang.org/x/exp/slog/internal/buffer\n# golang.org/x/net v0.30.0\n## explicit; go 1.18\ngolang.org/x/net/context\ngolang.org/x/net/html\ngolang.org/x/net/html/atom\ngolang.org/x/net/html/charset\ngolang.org/x/net/http/httpguts\ngolang.org/x/net/http2\ngolang.org/x/net/http2/hpack\ngolang.org/x/net/idna\ngolang.org/x/net/internal/timeseries\ngolang.org/x/net/netutil\ngolang.org/x/net/trace\n# golang.org/x/oauth2 v0.23.0\n## explicit; go 1.18\ngolang.org/x/oauth2\ngolang.org/x/oauth2/authhandler\ngolang.org/x/oauth2/google\ngolang.org/x/oauth2/google/externalaccount\ngolang.org/x/oauth2/google/internal/externalaccountauthorizeduser\ngolang.org/x/oauth2/google/internal/impersonate\ngolang.org/x/oauth2/google/internal/stsexchange\ngolang.org/x/oauth2/internal\ngolang.org/x/oauth2/jws\ngolang.org/x/oauth2/jwt\n# golang.org/x/sync v0.8.0\n## explicit; go 1.18\ngolang.org/x/sync/errgroup\ngolang.org/x/sync/semaphore\n# golang.org/x/sys v0.26.0\n## explicit; go 1.18\ngolang.org/x/sys/cpu\ngolang.org/x/sys/execabs\ngolang.org/x/sys/plan9\ngolang.org/x/sys/unix\ngolang.org/x/sys/windows\ngolang.org/x/sys/windows/registry\n# golang.org/x/term v0.25.0\n## explicit; go 1.18\ngolang.org/x/term\n# golang.org/x/text v0.19.0\n## explicit; go 1.18\ngolang.org/x/text/cases\ngolang.org/x/text/collate\ngolang.org/x/text/encoding\ngolang.org/x/text/encoding/charmap\ngolang.org/x/text/encoding/htmlindex\ngolang.org/x/text/encoding/internal\ngolang.org/x/text/encoding/internal/identifier\ngolang.org/x/text/encoding/japanese\ngolang.org/x/text/encoding/korean\ngolang.org/x/text/encoding/simplifiedchinese\ngolang.org/x/text/encoding/traditionalchinese\ngolang.org/x/text/encoding/unicode\ngolang.org/x/text/internal\ngolang.org/x/text/internal/colltab\ngolang.org/x/text/internal/language\ngolang.org/x/text/internal/language/compact\ngolang.org/x/text/internal/tag\ngolang.org/x/text/internal/utf8internal\ngolang.org/x/text/language\ngolang.org/x/text/runes\ngolang.org/x/text/secure/bidirule\ngolang.org/x/text/transform\ngolang.org/x/text/unicode/bidi\ngolang.org/x/text/unicode/norm\ngolang.org/x/text/unicode/rangetable\n# golang.org/x/time v0.5.0\n## explicit; go 1.18\ngolang.org/x/time/rate\n# google.golang.org/api v0.186.0\n## explicit; go 1.20\ngoogle.golang.org/api/googleapi\ngoogle.golang.org/api/googleapi/transport\ngoogle.golang.org/api/iamcredentials/v1\ngoogle.golang.org/api/internal\ngoogle.golang.org/api/internal/cert\ngoogle.golang.org/api/internal/gensupport\ngoogle.golang.org/api/internal/impersonate\ngoogle.golang.org/api/internal/third_party/uritemplates\ngoogle.golang.org/api/iterator\ngoogle.golang.org/api/option\ngoogle.golang.org/api/option/internaloption\ngoogle.golang.org/api/storage/v1\ngoogle.golang.org/api/transport\ngoogle.golang.org/api/transport/grpc\ngoogle.golang.org/api/transport/http\ngoogle.golang.org/api/transport/http/internal/propagation\n# google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094\n## explicit; go 1.20\ngoogle.golang.org/genproto/googleapis/type/date\ngoogle.golang.org/genproto/googleapis/type/expr\ngoogle.golang.org/genproto/protobuf/field_mask\n# google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142\n## explicit; go 1.21\ngoogle.golang.org/genproto/googleapis/api\ngoogle.golang.org/genproto/googleapis/api/annotations\ngoogle.golang.org/genproto/googleapis/api/httpbody\n# google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142\n## explicit; go 1.21\ngoogle.golang.org/genproto/googleapis/rpc/code\ngoogle.golang.org/genproto/googleapis/rpc/errdetails\ngoogle.golang.org/genproto/googleapis/rpc/status\n# google.golang.org/grpc v1.67.1\n## explicit; go 1.21\ngoogle.golang.org/grpc\ngoogle.golang.org/grpc/attributes\ngoogle.golang.org/grpc/backoff\ngoogle.golang.org/grpc/balancer\ngoogle.golang.org/grpc/balancer/base\ngoogle.golang.org/grpc/balancer/grpclb\ngoogle.golang.org/grpc/balancer/grpclb/grpc_lb_v1\ngoogle.golang.org/grpc/balancer/grpclb/state\ngoogle.golang.org/grpc/balancer/pickfirst\ngoogle.golang.org/grpc/balancer/roundrobin\ngoogle.golang.org/grpc/binarylog/grpc_binarylog_v1\ngoogle.golang.org/grpc/channelz\ngoogle.golang.org/grpc/codes\ngoogle.golang.org/grpc/connectivity\ngoogle.golang.org/grpc/credentials\ngoogle.golang.org/grpc/credentials/alts\ngoogle.golang.org/grpc/credentials/alts/internal\ngoogle.golang.org/grpc/credentials/alts/internal/authinfo\ngoogle.golang.org/grpc/credentials/alts/internal/conn\ngoogle.golang.org/grpc/credentials/alts/internal/handshaker\ngoogle.golang.org/grpc/credentials/alts/internal/handshaker/service\ngoogle.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp\ngoogle.golang.org/grpc/credentials/google\ngoogle.golang.org/grpc/credentials/insecure\ngoogle.golang.org/grpc/credentials/oauth\ngoogle.golang.org/grpc/encoding\ngoogle.golang.org/grpc/encoding/proto\ngoogle.golang.org/grpc/experimental/stats\ngoogle.golang.org/grpc/grpclog\ngoogle.golang.org/grpc/grpclog/internal\ngoogle.golang.org/grpc/health\ngoogle.golang.org/grpc/health/grpc_health_v1\ngoogle.golang.org/grpc/internal\ngoogle.golang.org/grpc/internal/backoff\ngoogle.golang.org/grpc/internal/balancer/gracefulswitch\ngoogle.golang.org/grpc/internal/balancerload\ngoogle.golang.org/grpc/internal/binarylog\ngoogle.golang.org/grpc/internal/buffer\ngoogle.golang.org/grpc/internal/channelz\ngoogle.golang.org/grpc/internal/credentials\ngoogle.golang.org/grpc/internal/envconfig\ngoogle.golang.org/grpc/internal/googlecloud\ngoogle.golang.org/grpc/internal/grpclog\ngoogle.golang.org/grpc/internal/grpcsync\ngoogle.golang.org/grpc/internal/grpcutil\ngoogle.golang.org/grpc/internal/idle\ngoogle.golang.org/grpc/internal/metadata\ngoogle.golang.org/grpc/internal/pretty\ngoogle.golang.org/grpc/internal/resolver\ngoogle.golang.org/grpc/internal/resolver/dns\ngoogle.golang.org/grpc/internal/resolver/dns/internal\ngoogle.golang.org/grpc/internal/resolver/passthrough\ngoogle.golang.org/grpc/internal/resolver/unix\ngoogle.golang.org/grpc/internal/serviceconfig\ngoogle.golang.org/grpc/internal/stats\ngoogle.golang.org/grpc/internal/status\ngoogle.golang.org/grpc/internal/syscall\ngoogle.golang.org/grpc/internal/transport\ngoogle.golang.org/grpc/internal/transport/networktype\ngoogle.golang.org/grpc/internal/xds\ngoogle.golang.org/grpc/keepalive\ngoogle.golang.org/grpc/mem\ngoogle.golang.org/grpc/metadata\ngoogle.golang.org/grpc/peer\ngoogle.golang.org/grpc/reflection\ngoogle.golang.org/grpc/reflection/grpc_reflection_v1\ngoogle.golang.org/grpc/reflection/grpc_reflection_v1alpha\ngoogle.golang.org/grpc/reflection/internal\ngoogle.golang.org/grpc/resolver\ngoogle.golang.org/grpc/resolver/dns\ngoogle.golang.org/grpc/resolver/manual\ngoogle.golang.org/grpc/serviceconfig\ngoogle.golang.org/grpc/stats\ngoogle.golang.org/grpc/status\ngoogle.golang.org/grpc/tap\n# google.golang.org/protobuf v1.35.1\n## explicit; go 1.21\ngoogle.golang.org/protobuf/encoding/protodelim\ngoogle.golang.org/protobuf/encoding/protojson\ngoogle.golang.org/protobuf/encoding/prototext\ngoogle.golang.org/protobuf/encoding/protowire\ngoogle.golang.org/protobuf/internal/descfmt\ngoogle.golang.org/protobuf/internal/descopts\ngoogle.golang.org/protobuf/internal/detrand\ngoogle.golang.org/protobuf/internal/editiondefaults\ngoogle.golang.org/protobuf/internal/editionssupport\ngoogle.golang.org/protobuf/internal/encoding/defval\ngoogle.golang.org/protobuf/internal/encoding/json\ngoogle.golang.org/protobuf/internal/encoding/messageset\ngoogle.golang.org/protobuf/internal/encoding/tag\ngoogle.golang.org/protobuf/internal/encoding/text\ngoogle.golang.org/protobuf/internal/errors\ngoogle.golang.org/protobuf/internal/filedesc\ngoogle.golang.org/protobuf/internal/filetype\ngoogle.golang.org/protobuf/internal/flags\ngoogle.golang.org/protobuf/internal/genid\ngoogle.golang.org/protobuf/internal/impl\ngoogle.golang.org/protobuf/internal/msgfmt\ngoogle.golang.org/protobuf/internal/order\ngoogle.golang.org/protobuf/internal/pragma\ngoogle.golang.org/protobuf/internal/set\ngoogle.golang.org/protobuf/internal/strs\ngoogle.golang.org/protobuf/internal/version\ngoogle.golang.org/protobuf/proto\ngoogle.golang.org/protobuf/protoadapt\ngoogle.golang.org/protobuf/reflect/protodesc\ngoogle.golang.org/protobuf/reflect/protoreflect\ngoogle.golang.org/protobuf/reflect/protoregistry\ngoogle.golang.org/protobuf/runtime/protoiface\ngoogle.golang.org/protobuf/runtime/protoimpl\ngoogle.golang.org/protobuf/testing/protocmp\ngoogle.golang.org/protobuf/types/descriptorpb\ngoogle.golang.org/protobuf/types/dynamicpb\ngoogle.golang.org/protobuf/types/gofeaturespb\ngoogle.golang.org/protobuf/types/known/anypb\ngoogle.golang.org/protobuf/types/known/durationpb\ngoogle.golang.org/protobuf/types/known/emptypb\ngoogle.golang.org/protobuf/types/known/fieldmaskpb\ngoogle.golang.org/protobuf/types/known/timestamppb\ngoogle.golang.org/protobuf/types/known/wrapperspb\n# gopkg.in/ini.v1 v1.67.0\n## explicit\ngopkg.in/ini.v1\n# gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce\n## explicit\ngopkg.in/natefinch/npipe.v2\n# gopkg.in/yaml.v3 v3.0.1\n## explicit\ngopkg.in/yaml.v3\n# gotest.tools/v3 v3.5.1\n## explicit; go 1.17\ngotest.tools/v3/assert\ngotest.tools/v3/assert/cmp\ngotest.tools/v3/internal/assert\ngotest.tools/v3/internal/difflib\ngotest.tools/v3/internal/format\ngotest.tools/v3/internal/source\n# nhooyr.io/websocket v1.8.11\n## explicit; go 1.19\nnhooyr.io/websocket\nnhooyr.io/websocket/internal/bpool\nnhooyr.io/websocket/internal/errd\nnhooyr.io/websocket/internal/util\nnhooyr.io/websocket/internal/wsjs\nnhooyr.io/websocket/internal/xsync\n# pgregory.net/rapid v1.1.0\n## explicit; go 1.18\npgregory.net/rapid\n# sigs.k8s.io/yaml v1.4.0\n## explicit; go 1.12\nsigs.k8s.io/yaml\nsigs.k8s.io/yaml/goyaml.v2\n# cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241205052910-142c0afa4948\n# cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241205052910-142c0afa4948\n# github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.43.0-beta1.0.20241205052910-142c0afa4948\n# github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0\n# github.com/cometbft/cometbft => github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890\n# github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183\n# github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0\n# github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7\n# github.com/tidwall/btree => github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c\n" [mod] [mod."cloud.google.com/go"] @@ -45,8 +45,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v1.3.0" hash = "sha256-EEFK43Cr0g0ndhQhkIKher0FqV3mvkmE9z0sP7uVSHg=" [mod."cosmossdk.io/store"] - version = "v0.0.0-20241015015202-783e224f9517" - hash = "sha256-6MLZ2SPWwmpisfLmkZ9MOnL2/phjIUwo4EuVA6ORjYE=" + version = "v0.0.0-20241205052910-142c0afa4948" + hash = "sha256-0c5h9pwaR3ZlmA3pnme39K8zn9WyrI1C1GRRDVH39Ug=" replaced = "github.com/crypto-org-chain/cosmos-sdk/store" [mod."cosmossdk.io/tools/confix"] version = "v0.1.2" @@ -58,7 +58,7 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v0.1.1" hash = "sha256-aps3LfnQau1TYeccGwtqHQvy1Rudc9+O+iVAwXBKyDw=" [mod."cosmossdk.io/x/tx"] - version = "v0.0.0-20241015015202-783e224f9517" + version = "v0.0.0-20241205052910-142c0afa4948" hash = "sha256-EEM93+QilFlUOTSR0RwbZYyyAnl70PXtJq8ZEGjxL3g=" replaced = "github.com/crypto-org-chain/cosmos-sdk/x/tx" [mod."cosmossdk.io/x/upgrade"] @@ -81,8 +81,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v1.5.5" hash = "sha256-tSw0aq0pPyroZtQYYb9lWOtPVNaQOt8skYQ4TMXGvAQ=" [mod."github.com/Microsoft/go-winio"] - version = "v0.6.1" - hash = "sha256-BL0BVaHtmPKQts/711W59AbHXjGKqFS4ZTal0RYnR9I=" + version = "v0.6.2" + hash = "sha256-tVNWDUMILZbJvarcl/E7tpSnkn7urqgSHa2Eaka5vSU=" [mod."github.com/StackExchange/wmi"] version = "v0.0.0-20180116203802-5d049714c4a6" hash = "sha256-0yUxhZB3v3ZE3QY36zHs2cJ1S4GXptXIhyAi6sI2nOo=" @@ -102,7 +102,7 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v0.0.0-20140422174119-9fd32a8b3d3d" hash = "sha256-NDxQzO5C5M/aDz5/pjUHfZUh4VwIXovbb3irtxWCwjY=" [mod."github.com/bgentry/speakeasy"] - version = "v0.1.1-0.20220910012023-760eaf8b6816" + version = "v0.2.0" hash = "sha256-Tx3sPuhsoVwrCfJdIwf4ipn7pD92OQNYvpCxl1Z9Wt0=" [mod."github.com/bits-and-blooms/bitset"] version = "v1.8.0" @@ -120,8 +120,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v1.1.0" hash = "sha256-F+EqvufC+KBslZV/vL8ph6MqDoVD5ic5rVaM27reDqo=" [mod."github.com/cenkalti/backoff/v4"] - version = "v4.2.1" - hash = "sha256-CKogmPe0pCcAdpztzPwr24rLTJZfq8QVZ9AUduwAcoA=" + version = "v4.3.0" + hash = "sha256-wfVjNZsGG1WoNC5aL+kdcy6QXPgZo4THAevZ1787md8=" [mod."github.com/cespare/xxhash/v2"] version = "v2.3.0" hash = "sha256-7hRlwSR+fos1kx4VZmJ/7snR7zHh8ZFKX+qqqqGcQpY=" @@ -135,8 +135,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v1.11.3" hash = "sha256-kDiT0MVVRnnQ0ugZWVHcZmv3UgwnxEW6xzt+mV22dTI=" [mod."github.com/cockroachdb/fifo"] - version = "v0.0.0-20240606204812-0bbfbd93a7ce" - hash = "sha256-M/9/e4i7gXA2kYjSEMlQd94vijLLmWZVUXOKiFeINbk=" + version = "v0.0.0-20240616162244-4768e80dfb9a" + hash = "sha256-1SXf9xOjxzr9bHpKPUSnRS0Ek+zxMEFAuqpOchyLAbo=" [mod."github.com/cockroachdb/logtags"] version = "v0.0.0-20230118201751-21c54148d20b" hash = "sha256-7dQH6j1o99fuxHKkw0RhNC5wJKkvRLMDJpUiVnDx6h8=" @@ -169,8 +169,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v1.0.0-beta.5" hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg=" [mod."github.com/cosmos/cosmos-sdk"] - version = "v0.50.6-0.20241015015202-783e224f9517" - hash = "sha256-CXmNDKUfGAhKLUWO1BxqcesvzvlUxVOG0xRJhqqZNC8=" + version = "v0.43.0-beta1.0.20241205052910-142c0afa4948" + hash = "sha256-TQ/mouMHRgxKtXizYUYA8BmFdRnDiPdLKzp7v7HcoZs=" replaced = "github.com/crypto-org-chain/cosmos-sdk" [mod."github.com/cosmos/go-bip39"] version = "v1.0.0" @@ -187,9 +187,9 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. [mod."github.com/cosmos/ibc-go/modules/capability"] version = "v1.0.1" hash = "sha256-iRhj2WTr99DgAl80h25pxtkO6iHYjyHflwpxKKG5b6E=" - [mod."github.com/cosmos/ibc-go/v8"] - version = "v8.5.1" - hash = "sha256-F4VZbKo1n9fLSxLSR+/ZaisbJ2v+EHjpXVpCovGTiyQ=" + [mod."github.com/cosmos/ibc-go/v9"] + version = "v9.0.2" + hash = "sha256-1CJgR4aOrl2E9hCU3j5ReqPnRKKR56OPJ/bILmY/jTM=" [mod."github.com/cosmos/ics23/go"] version = "v0.11.0" hash = "sha256-mgU/pqp4kASmW/bP0z6PzssfjRp7GU9ioyvNlDdGC+E=" @@ -212,8 +212,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v0.0.0-20240919080136-6c49aef68716" hash = "sha256-krCdJz96mpIgmpmRI64W2+W1ycNg+EdLaqeVtAuaW4A=" [mod."github.com/danieljoos/wincred"] - version = "v1.2.0" - hash = "sha256-LHcvTJCc8++bFndbd8ZgMSTe4L5h2C4rN+cSWHCz54Y=" + version = "v1.2.1" + hash = "sha256-hmJediHYMONMEvrRnMs88OXEp4SDt1Pmi8t8eOEk83o=" [mod."github.com/davecgh/go-spew"] version = "v1.1.2-0.20180830191138-d8f796af33cc" hash = "sha256-fV9oI51xjHdOmEx6+dlq7Ku2Ag+m/bmbzPo6A4Y74qc=" @@ -224,8 +224,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v4.3.0" hash = "sha256-ADbhI5Ad+q3OxooIiYeLAq5mMONk1gPIAnTch9zKsIM=" [mod."github.com/desertbit/timer"] - version = "v0.0.0-20180107155436-c41aec40b27f" - hash = "sha256-abLOtEcomAqCWLphd2X6WkD/ED764w6sa6unox4BXss=" + version = "v1.0.1" + hash = "sha256-Uk1Ep6lHLGEadcSF/2R9Bk6zwc5OUbTf/WCHrPatWEM=" [mod."github.com/dgraph-io/badger/v4"] version = "v4.3.0" hash = "sha256-ydDlzD7dH8k/urIrNDnSJH8SdK16ECnsjuY+mBxr78E=" @@ -242,21 +242,21 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v1.0.1" hash = "sha256-yuvxYYngpfVkUg9yAmG99IUVmADTQA0tMbBXe0Fq0Mc=" [mod."github.com/dvsekhvalnov/jose2go"] - version = "v1.6.0" - hash = "sha256-IXn2BuUp4fi/i2zf1tGGW1m9xoYh3VCksB6GJ5Sf06g=" + version = "v1.7.0" + hash = "sha256-kBuUrroBiwDTaO7JGo5bh6nEMNkICSjg2dFZQMGM7Q0=" [mod."github.com/edsrzf/mmap-go"] version = "v1.0.0" hash = "sha256-k1DYvCqO3BKNcGEve/nMW0RxzMkK2tGfXbUbycqcVSo=" [mod."github.com/emicklei/dot"] - version = "v1.6.1" - hash = "sha256-zOpoaepCfPLmU9iQji/Ait+SVEHI9eF3rwtW0h/8lho=" + version = "v1.6.2" + hash = "sha256-X7aNKLKZ7pJBG/wdP+TWuQnlNLNdbUDd+kC5kF4uBtU=" [mod."github.com/ethereum/go-ethereum"] version = "v1.10.20-0.20241030073450-b9cc632bc183" hash = "sha256-5nh0HZOZwlZBMmHv08BELlNfDZyq5zwq65ByyMzOetA=" replaced = "github.com/crypto-org-chain/go-ethereum" [mod."github.com/fatih/color"] - version = "v1.16.0" - hash = "sha256-Aq/SM28aPJVzvapllQ64R/DM4aZ5CHPewcm/AUJPyJQ=" + version = "v1.17.0" + hash = "sha256-QsKMy3MsvjbYNcA9jP8w6c3wpmWDZ0079bybAEzmXR0=" [mod."github.com/felixge/httpsnoop"] version = "v1.0.4" hash = "sha256-c1JKoRSndwwOyOxq9ddCe+8qn7mG9uRq2o/822x5O/c=" @@ -267,8 +267,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v0.0.0-20190607065134-2772fd86a8ff" hash = "sha256-Nr5ocU9s1F2Lhx/Zq6/nIo+KkKEqMjDYOEs3yWRC48g=" [mod."github.com/getsentry/sentry-go"] - version = "v0.27.0" - hash = "sha256-PTkTzVNogqFA/5rc6INLY6RxK5uR1AoJFOO+pOPdE7Q=" + version = "v0.28.1" + hash = "sha256-IR3xr8/XLKEnkpXUD470sjQVhI59Fsq74+Q4i/jcMh4=" [mod."github.com/go-kit/kit"] version = "v0.13.0" hash = "sha256-EncDzq0JVtY+NLlW5lD+nbVewNYTTrfzlOxI4PuwREw=" @@ -321,8 +321,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v1.1.3" hash = "sha256-/6Us2eNRFi2IIp7p5uPUXLridilAdk4SmZhcTYR0csw=" [mod."github.com/google/flatbuffers"] - version = "v1.12.1" - hash = "sha256-v9/ewAmNdQ4SNBlBwgHkxn3IVJAf31D7zVlxwEK/LRs=" + version = "v24.3.25+incompatible" + hash = "sha256-b96yDt5Agzf8/VYrueYjuwvHE7cD8J1H/gVavQH+BRI=" [mod."github.com/google/go-cmp"] version = "v0.6.0" hash = "sha256-qgra5jze4iPGP0JSTVeY5qV5AvEnEu39LYAuUCIkMtg=" @@ -366,8 +366,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v1.7.4" hash = "sha256-GtJSwcS1WXLn9lFAuTRCseIQBXJOElAywEhTtYrsfbE=" [mod."github.com/hashicorp/go-hclog"] - version = "v1.5.0" - hash = "sha256-u3Jqg7Qex11IZ7vbk4hRGgLy6e0cF70CCx7ERF0GUHo=" + version = "v1.6.3" + hash = "sha256-BK2s+SH1tQyUaXCH4kC0/jgqiSu638UFbwamfKjFOYg=" [mod."github.com/hashicorp/go-immutable-radix"] version = "v1.3.1" hash = "sha256-65+A2HiVfS/GV9G+6/TkXXjzXhI/V98e6RlJWjxy+mg=" @@ -375,8 +375,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v0.5.3" hash = "sha256-5jQftEvEhL88yWeVnu+IZKzV5p9osZcgFmwP1zlrjzY=" [mod."github.com/hashicorp/go-plugin"] - version = "v1.6.0" - hash = "sha256-NeY86Z+qJwt0NPV4cNmWDiTryDPSiyKMkS1ivRX9ThE=" + version = "v1.6.1" + hash = "sha256-HEeJ8TV67PcAuUnGCOHphFpZ/BShvJo5B6Obu3P7t8M=" [mod."github.com/hashicorp/go-safetemp"] version = "v1.0.0" hash = "sha256-g5i9m7FSRInQzZ4iRpIsoUu685AY7fppUwjhuZCezT8=" @@ -456,8 +456,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v0.0.20" hash = "sha256-qhw9hWtU5wnyFyuMbKx+7RB8ckQaFQ8D+8GKPkN3HHQ=" [mod."github.com/mattn/go-runewidth"] - version = "v0.0.9" - hash = "sha256-dK/kIPe1tcxEubwI4CWfov/HWRBgD/fqlPC3d5i30CY=" + version = "v0.0.15" + hash = "sha256-WP39EU2UrQbByYfnwrkBDoKN7xzXsBssDq3pNryBGm0=" [mod."github.com/minio/highwayhash"] version = "v1.0.3" hash = "sha256-5M2Y3d0hnvo8JHz6910upUNbRRaUVes90F0jaIzo4pE=" @@ -518,6 +518,9 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. [mod."github.com/rcrowley/go-metrics"] version = "v0.0.0-20201227073835-cf1acfcdf475" hash = "sha256-10ytHQ1SpMKYTiKuOPdEMuOVa8HVvv9ryYSIF9BHEBI=" + [mod."github.com/rivo/uniseg"] + version = "v0.2.0" + hash = "sha256-GLj0jiGrT03Ept4V6FXCN1yeZ/b6PpS3MEXK6rYQ8Eg=" [mod."github.com/rogpeppe/go-internal"] version = "v1.12.0" hash = "sha256-qvDNCe3l84/LgrA8X4O15e1FeDcazyX91m9LmXGXX6M=" @@ -528,8 +531,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v1.33.0" hash = "sha256-jT/Y/izhZiCdrDbC/ty83FGs8UQavTU+OW03O4vKFkY=" [mod."github.com/sagikazarmark/locafero"] - version = "v0.4.0" - hash = "sha256-7I1Oatc7GAaHgAqBFO6Tv4IbzFiYeU9bJAfJhXuWaXk=" + version = "v0.6.0" + hash = "sha256-uAanQ7NRa13axM4zbOgMOyU+YhLALsQyT85XvqEdx2c=" [mod."github.com/sagikazarmark/slog-shim"] version = "v0.1.0" hash = "sha256-F92BQXXmn3mCwu3mBaGh+joTRItQDSDhsjU6SofkYdA=" @@ -611,8 +614,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v0.14.3" hash = "sha256-tldEok5ebZ4R4B7H8dSlYS5oVuLvh89n9wUaVlDjYwg=" [mod."go.etcd.io/bbolt"] - version = "v1.4.0-alpha.0.0.20240404170359-43604f3112c5" - hash = "sha256-U/PkBhk4m6iKFDuR0ULO4EFXb8gFnKNGgNnwMU0OGoM=" + version = "v1.4.0-alpha.1" + hash = "sha256-CHCzkBBaVVcfjB2sKmvDFMGgx2YF3/aDpPFuqvbKIk0=" [mod."go.opencensus.io"] version = "v0.24.0" hash = "sha256-4H+mGZgG2c9I1y0m8avF4qmt8LUKxxVsTqR8mKgP4yo=" @@ -640,9 +643,6 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. [mod."golang.org/x/exp"] version = "v0.0.0-20240613232115-7f521ea00fb8" hash = "sha256-QRK52QHPPhj+JIcQbd4/hI5ceEbKu3e9mR57XxocwOE=" - [mod."golang.org/x/mod"] - version = "v0.18.0" - hash = "sha256-zCSO2dmE0nhrScqRKzIUeqiELzCyBA6MDAW1NV1hTZw=" [mod."golang.org/x/net"] version = "v0.30.0" hash = "sha256-i1f6wJHfFq0nKtbuY7twZ7uPyUbRYHVjd3uy0SS06mU=" @@ -664,9 +664,6 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. [mod."golang.org/x/time"] version = "v0.5.0" hash = "sha256-W6RgwgdYTO3byIPOFxrP2IpAZdgaGowAaVfYby7AULU=" - [mod."golang.org/x/tools"] - version = "v0.22.0" - hash = "sha256-07Vf9dS8pa2JAXpbNc03Kf6d3SkX1R0MdJSysRS2IOI=" [mod."google.golang.org/api"] version = "v0.186.0" hash = "sha256-dSr9mxKwuE4/m3OYtjTeVHMxyXw9cCgKsBwDqvBr2HU=" @@ -698,8 +695,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v3.5.1" hash = "sha256-ps2GEc3P2xvlrU4TCtXz+nLTxyP0RrF7SScz5jUqE5E=" [mod."nhooyr.io/websocket"] - version = "v1.8.10" - hash = "sha256-EsUWUFIA2uJTap1DfsYuSxlPMH3UHDpxEohJMalDOcI=" + version = "v1.8.11" + hash = "sha256-93w5LmnBRdoPwo4gDoPBcAw9J14yzf484YeAyUX7nH0=" [mod."pgregory.net/rapid"] version = "v1.1.0" hash = "sha256-sVQY9EQ9Y5blYyVYfaOa+y12e+399OqdHiEY3BaDnqo=" From bf2278f6c1ac3096195457011c2e1123f2686d2c Mon Sep 17 00:00:00 2001 From: mmsqe Date: Thu, 16 Jan 2025 13:18:13 +0800 Subject: [PATCH 053/210] Problem: CacheWrapWithTrace is not supported (#565) * Problem: CacheWrapWithTrace is not supported * align nixpkgs * deps * fix build --- CHANGELOG.md | 1 + app/executor.go | 4 ++++ flake.lock | 30 +++++++++++++++--------------- flake.nix | 4 ++-- go.mod | 7 ++++--- go.sum | 16 ++++++++-------- gomod2nix.toml | 20 ++++++++++---------- nix/build_overlay.nix | 13 ++++++++++++- nix/go_no_vendor_checks-1.23.patch | 26 ++++++++++++++++++++++++++ nix/sources.json | 18 +++++++++--------- 10 files changed, 91 insertions(+), 48 deletions(-) create mode 100644 nix/go_no_vendor_checks-1.23.patch diff --git a/CHANGELOG.md b/CHANGELOG.md index 44955ed8bb..5acd5f4e31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,6 +107,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#549](https://github.com/crypto-org-chain/ethermint/pull/549) Support build without cgo. * [#551](https://github.com/crypto-org-chain/ethermint/pull/551) Start event stream on demand. * [#555](https://github.com/crypto-org-chain/ethermint/pull/555) Update cometbft to 0.38.14 and rocksdb to 9.7.4. +* [#565](https://github.com/crypto-org-chain/ethermint/pull/565) Add back CacheWrapWithTrace api. * [#563](https://github.com/crypto-org-chain/ethermint/pull/563) Bump ibc-go to v9.0.2. ## v0.21.x-cronos diff --git a/app/executor.go b/app/executor.go index 1cff225d61..0e06cb8387 100644 --- a/app/executor.go +++ b/app/executor.go @@ -152,6 +152,10 @@ func (ms msWrapper) CacheWrap() storetypes.CacheWrap { return ms.CacheMultiStore().(storetypes.CacheWrap) } +func (ms msWrapper) CacheWrapWithTrace(_ io.Writer, _ storetypes.TraceContext) storetypes.CacheWrap { + return ms.CacheWrap() +} + // GetStoreType returns the type of the store. func (ms msWrapper) GetStoreType() storetypes.StoreType { return storetypes.StoreTypeMulti diff --git a/flake.lock b/flake.lock index 33e5b48efe..65aa2dc19d 100644 --- a/flake.lock +++ b/flake.lock @@ -28,16 +28,15 @@ ] }, "locked": { - "lastModified": 1733764984, - "narHash": "sha256-4pHRrZ6bvk4+2XrM4MNaqkcoO+DecjZtFoJcJm9Fab0=", - "owner": "obreitwi", + "lastModified": 1733668782, + "narHash": "sha256-tPsqU00FhgdFr0JiQUiBMgPVbl1jbPCY5gbFiJycL3I=", + "owner": "nix-community", "repo": "gomod2nix", - "rev": "9048c4bd5c1c1a48f55760d920617cc3ce6c685b", + "rev": "514283ec89c39ad0079ff2f3b1437404e4cba608", "type": "github" }, "original": { - "owner": "obreitwi", - "ref": "fix/go_mod_vendor", + "owner": "nix-community", "repo": "gomod2nix", "type": "github" } @@ -65,16 +64,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1735617354, - "narHash": "sha256-5zJyv66q68QZJZsXtmjDBazGnF0id593VSy+8eSckoo=", + "lastModified": 1735651292, + "narHash": "sha256-YLbzcBtYo1/FEzFsB3AnM16qFc6fWPMIoOuSoDwvg9g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c46290747b2aaf090f48a478270feb858837bf11", + "rev": "0da3c44a9460a26d2025ec3ed2ec60a895eb1114", "type": "github" }, "original": { "owner": "NixOS", - "ref": "release-25.05", + "ref": "release-24.05", "repo": "nixpkgs", "type": "github" } @@ -92,11 +91,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1735164664, - "narHash": "sha256-DaWy+vo3c4TQ93tfLjUgcpPaSoDw4qV4t76Y3Mhu84I=", + "lastModified": 1736884309, + "narHash": "sha256-eiCqmKl0BIRiYk5/ZhZozwn4/7Km9CWTbc15Cv+VX5k=", "owner": "nix-community", "repo": "poetry2nix", - "rev": "1fb01e90771f762655be7e0e805516cd7fa4d58e", + "rev": "75d0515332b7ca269f6d7abfd2c44c47a7cbca7b", "type": "github" }, "original": { @@ -138,8 +137,9 @@ "type": "github" }, "original": { - "id": "systems", - "type": "indirect" + "owner": "nix-systems", + "repo": "default", + "type": "github" } }, "treefmt-nix": { diff --git a/flake.nix b/flake.nix index b79666dff9..ba2a389f07 100644 --- a/flake.nix +++ b/flake.nix @@ -1,9 +1,9 @@ { inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/release-25.05"; + nixpkgs.url = "github:NixOS/nixpkgs/release-24.05"; flake-utils.url = "github:numtide/flake-utils"; gomod2nix = { - url = "github:obreitwi/gomod2nix/fix/go_mod_vendor"; + url = "github:nix-community/gomod2nix"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; diff --git a/go.mod b/go.mod index bebf7d903d..d1873f11a2 100644 --- a/go.mod +++ b/go.mod @@ -241,9 +241,9 @@ require ( replace ( // release/v0.50.x - cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241205052910-142c0afa4948 - cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241205052910-142c0afa4948 - github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.43.0-beta1.0.20241205052910-142c0afa4948 + cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20250116033154-05863f6ce4b8 + cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20250116033154-05863f6ce4b8 + github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20250116033154-05863f6ce4b8 ) replace ( @@ -251,6 +251,7 @@ replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 // v0.38.x github.com/cometbft/cometbft => github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890 + github.com/crypto-org-chain/go-block-stm => github.com/mmsqe/go-block-stm v0.0.0-20241212103207-0413e464b7f2 // release/v1.11.x github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183 // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. diff --git a/go.sum b/go.sum index d9ed1d3af9..ebcc858d8b 100644 --- a/go.sum +++ b/go.sum @@ -408,14 +408,12 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+FBB8cMkDE2j2VBVsbY+HCkPIu0YsJ/9bbGeQ= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/crypto-org-chain/cosmos-sdk v0.43.0-beta1.0.20241205052910-142c0afa4948 h1:hX86EeDInLGJnWIR3PZ5ymp6/xaHtk+8E5pA9ZuwEfs= -github.com/crypto-org-chain/cosmos-sdk v0.43.0-beta1.0.20241205052910-142c0afa4948/go.mod h1:JwwsMeZldLN20b72mmbWPY0EV9rs+v/12hRu1JFttvY= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241205052910-142c0afa4948 h1:3GPO2XItxofWxxj2exoaz9Ki+cixakumachnqHvmLHQ= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241205052910-142c0afa4948/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241205052910-142c0afa4948 h1:lb8Mztnt2bpCowKbZMHosyQtXN0QtX/MITH9y5DVNkU= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241205052910-142c0afa4948/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= -github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716 h1:OvD5Rm0B6LHUJk6z858UgwdP72jU2DuUdXeclRyKpDI= -github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20250116033154-05863f6ce4b8 h1:KYwCiEEuNZ8j4zpIRdMwr4AHT58nh3KKfJ+UKLZSw7E= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20250116033154-05863f6ce4b8/go.mod h1:JwwsMeZldLN20b72mmbWPY0EV9rs+v/12hRu1JFttvY= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20250116033154-05863f6ce4b8 h1:7kbrHLCo505EBH0um5be15R8xdc9bw7WIriZDUQJ1Ro= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20250116033154-05863f6ce4b8/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20250116033154-05863f6ce4b8 h1:GwNyoWViRCZa8TLITeRPTxMx1MsGRShszKThxqRngng= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20250116033154-05863f6ce4b8/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183 h1:JDBTqDkd9X9oBF2C4FKOpn0GVDQDzVkHzeS8eDWNl6A= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183/go.mod h1:5DnkptqPQr+Mo3sy/2V3OQu+K94x1PVzFGZJZbDF8mI= github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs= @@ -873,6 +871,8 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/mmsqe/go-block-stm v0.0.0-20241212103207-0413e464b7f2 h1:WhQZ9wFad9LXVHzWxH+nr8kttsHtw4gK+QR+wvbb8Ho= +github.com/mmsqe/go-block-stm v0.0.0-20241212103207-0413e464b7f2/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= diff --git a/gomod2nix.toml b/gomod2nix.toml index cb14c2fd07..2bab174af1 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -1,5 +1,4 @@ -schema = 4 -vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud.google.com/go/internal\ncloud.google.com/go/internal/optional\ncloud.google.com/go/internal/trace\ncloud.google.com/go/internal/version\n# cloud.google.com/go/auth v0.6.0\n## explicit; go 1.20\ncloud.google.com/go/auth\ncloud.google.com/go/auth/credentials\ncloud.google.com/go/auth/credentials/internal/externalaccount\ncloud.google.com/go/auth/credentials/internal/externalaccountuser\ncloud.google.com/go/auth/credentials/internal/gdch\ncloud.google.com/go/auth/credentials/internal/impersonate\ncloud.google.com/go/auth/credentials/internal/stsexchange\ncloud.google.com/go/auth/grpctransport\ncloud.google.com/go/auth/httptransport\ncloud.google.com/go/auth/internal\ncloud.google.com/go/auth/internal/credsfile\ncloud.google.com/go/auth/internal/jwt\ncloud.google.com/go/auth/internal/transport\ncloud.google.com/go/auth/internal/transport/cert\n# cloud.google.com/go/auth/oauth2adapt v0.2.2\n## explicit; go 1.19\ncloud.google.com/go/auth/oauth2adapt\n# cloud.google.com/go/compute/metadata v0.5.0\n## explicit; go 1.20\ncloud.google.com/go/compute/metadata\n# cloud.google.com/go/iam v1.1.9\n## explicit; go 1.20\ncloud.google.com/go/iam\ncloud.google.com/go/iam/apiv1/iampb\n# cloud.google.com/go/storage v1.41.0\n## explicit; go 1.19\ncloud.google.com/go/storage\ncloud.google.com/go/storage/internal\ncloud.google.com/go/storage/internal/apiv2\ncloud.google.com/go/storage/internal/apiv2/storagepb\n# cosmossdk.io/api v0.7.6\n## explicit; go 1.20\ncosmossdk.io/api/amino\ncosmossdk.io/api/cosmos/app/runtime/v1alpha1\ncosmossdk.io/api/cosmos/app/v1alpha1\ncosmossdk.io/api/cosmos/auth/module/v1\ncosmossdk.io/api/cosmos/auth/v1beta1\ncosmossdk.io/api/cosmos/authz/module/v1\ncosmossdk.io/api/cosmos/authz/v1beta1\ncosmossdk.io/api/cosmos/autocli/v1\ncosmossdk.io/api/cosmos/bank/module/v1\ncosmossdk.io/api/cosmos/bank/v1beta1\ncosmossdk.io/api/cosmos/base/abci/v1beta1\ncosmossdk.io/api/cosmos/base/query/v1beta1\ncosmossdk.io/api/cosmos/base/reflection/v1beta1\ncosmossdk.io/api/cosmos/base/tendermint/v1beta1\ncosmossdk.io/api/cosmos/base/v1beta1\ncosmossdk.io/api/cosmos/consensus/module/v1\ncosmossdk.io/api/cosmos/consensus/v1\ncosmossdk.io/api/cosmos/crisis/module/v1\ncosmossdk.io/api/cosmos/crisis/v1beta1\ncosmossdk.io/api/cosmos/crypto/ed25519\ncosmossdk.io/api/cosmos/crypto/multisig\ncosmossdk.io/api/cosmos/crypto/multisig/v1beta1\ncosmossdk.io/api/cosmos/crypto/secp256k1\ncosmossdk.io/api/cosmos/crypto/secp256r1\ncosmossdk.io/api/cosmos/distribution/module/v1\ncosmossdk.io/api/cosmos/distribution/v1beta1\ncosmossdk.io/api/cosmos/evidence/module/v1\ncosmossdk.io/api/cosmos/evidence/v1beta1\ncosmossdk.io/api/cosmos/feegrant/module/v1\ncosmossdk.io/api/cosmos/feegrant/v1beta1\ncosmossdk.io/api/cosmos/genutil/module/v1\ncosmossdk.io/api/cosmos/gov/module/v1\ncosmossdk.io/api/cosmos/gov/v1\ncosmossdk.io/api/cosmos/mint/module/v1\ncosmossdk.io/api/cosmos/mint/v1beta1\ncosmossdk.io/api/cosmos/msg/v1\ncosmossdk.io/api/cosmos/params/module/v1\ncosmossdk.io/api/cosmos/params/v1beta1\ncosmossdk.io/api/cosmos/query/v1\ncosmossdk.io/api/cosmos/reflection/v1\ncosmossdk.io/api/cosmos/slashing/module/v1\ncosmossdk.io/api/cosmos/slashing/v1beta1\ncosmossdk.io/api/cosmos/staking/module/v1\ncosmossdk.io/api/cosmos/staking/v1beta1\ncosmossdk.io/api/cosmos/tx/config/v1\ncosmossdk.io/api/cosmos/tx/signing/v1beta1\ncosmossdk.io/api/cosmos/tx/v1beta1\ncosmossdk.io/api/cosmos/upgrade/module/v1\ncosmossdk.io/api/cosmos/upgrade/v1beta1\ncosmossdk.io/api/cosmos/vesting/module/v1\ncosmossdk.io/api/cosmos/vesting/v1beta1\ncosmossdk.io/api/tendermint/abci\ncosmossdk.io/api/tendermint/crypto\ncosmossdk.io/api/tendermint/p2p\ncosmossdk.io/api/tendermint/types\ncosmossdk.io/api/tendermint/version\n# cosmossdk.io/client/v2 v2.0.0-beta.5\n## explicit; go 1.21\ncosmossdk.io/client/v2/autocli\ncosmossdk.io/client/v2/autocli/flag\ncosmossdk.io/client/v2/autocli/flag/maps\ncosmossdk.io/client/v2/autocli/keyring\ncosmossdk.io/client/v2/internal/flags\ncosmossdk.io/client/v2/internal/strcase\ncosmossdk.io/client/v2/internal/util\n# cosmossdk.io/collections v0.4.0\n## explicit; go 1.20\ncosmossdk.io/collections\ncosmossdk.io/collections/codec\ncosmossdk.io/collections/indexes\n# cosmossdk.io/core v0.11.1\n## explicit; go 1.20\ncosmossdk.io/core/address\ncosmossdk.io/core/appmodule\ncosmossdk.io/core/coins\ncosmossdk.io/core/comet\ncosmossdk.io/core/event\ncosmossdk.io/core/genesis\ncosmossdk.io/core/header\ncosmossdk.io/core/store\n# cosmossdk.io/depinject v1.0.0\n## explicit; go 1.20\ncosmossdk.io/depinject\ncosmossdk.io/depinject/appconfig\ncosmossdk.io/depinject/appconfig/v1alpha1\ncosmossdk.io/depinject/internal/appconfig\ncosmossdk.io/depinject/internal/graphviz\ncosmossdk.io/depinject/internal/util\n# cosmossdk.io/errors v1.0.1\n## explicit; go 1.20\ncosmossdk.io/errors\n# cosmossdk.io/log v1.4.1\n## explicit; go 1.20\ncosmossdk.io/log\n# cosmossdk.io/math v1.3.0\n## explicit; go 1.20\ncosmossdk.io/math\ncosmossdk.io/math/unsafe\n# cosmossdk.io/store v1.1.1 => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241205052910-142c0afa4948\n## explicit; go 1.21\ncosmossdk.io/store\ncosmossdk.io/store/cache\ncosmossdk.io/store/cachekv\ncosmossdk.io/store/cachekv/internal\ncosmossdk.io/store/cachemulti\ncosmossdk.io/store/dbadapter\ncosmossdk.io/store/gaskv\ncosmossdk.io/store/iavl\ncosmossdk.io/store/internal\ncosmossdk.io/store/internal/btree\ncosmossdk.io/store/internal/kv\ncosmossdk.io/store/internal/maps\ncosmossdk.io/store/internal/proofs\ncosmossdk.io/store/internal/tree\ncosmossdk.io/store/listenkv\ncosmossdk.io/store/mem\ncosmossdk.io/store/metrics\ncosmossdk.io/store/prefix\ncosmossdk.io/store/pruning\ncosmossdk.io/store/pruning/types\ncosmossdk.io/store/rootmulti\ncosmossdk.io/store/snapshots\ncosmossdk.io/store/snapshots/types\ncosmossdk.io/store/streaming\ncosmossdk.io/store/streaming/abci\ncosmossdk.io/store/tracekv\ncosmossdk.io/store/transient\ncosmossdk.io/store/types\ncosmossdk.io/store/wrapper\n# cosmossdk.io/tools/confix v0.1.2\n## explicit; go 1.21\ncosmossdk.io/tools/confix\ncosmossdk.io/tools/confix/cmd\n# cosmossdk.io/x/evidence v0.1.1\n## explicit; go 1.21\ncosmossdk.io/x/evidence\ncosmossdk.io/x/evidence/client\ncosmossdk.io/x/evidence/client/cli\ncosmossdk.io/x/evidence/exported\ncosmossdk.io/x/evidence/keeper\ncosmossdk.io/x/evidence/simulation\ncosmossdk.io/x/evidence/types\n# cosmossdk.io/x/feegrant v0.1.1\n## explicit; go 1.21\ncosmossdk.io/x/feegrant\ncosmossdk.io/x/feegrant/client/cli\ncosmossdk.io/x/feegrant/keeper\ncosmossdk.io/x/feegrant/migrations/v2\ncosmossdk.io/x/feegrant/module\ncosmossdk.io/x/feegrant/simulation\n# cosmossdk.io/x/tx v0.13.6-0.20241003112805-ff8789a02871 => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241205052910-142c0afa4948\n## explicit; go 1.21\ncosmossdk.io/x/tx/decode\ncosmossdk.io/x/tx/signing\ncosmossdk.io/x/tx/signing/aminojson\ncosmossdk.io/x/tx/signing/aminojson/internal/aminojsonpb\ncosmossdk.io/x/tx/signing/direct\ncosmossdk.io/x/tx/signing/directaux\ncosmossdk.io/x/tx/signing/textual\ncosmossdk.io/x/tx/signing/textual/internal/cbor\ncosmossdk.io/x/tx/signing/textual/internal/textualpb\n# cosmossdk.io/x/upgrade v0.1.4\n## explicit; go 1.21\ncosmossdk.io/x/upgrade\ncosmossdk.io/x/upgrade/client/cli\ncosmossdk.io/x/upgrade/exported\ncosmossdk.io/x/upgrade/internal/conv\ncosmossdk.io/x/upgrade/keeper\ncosmossdk.io/x/upgrade/plan\ncosmossdk.io/x/upgrade/types\n# filippo.io/edwards25519 v1.1.0\n## explicit; go 1.20\nfilippo.io/edwards25519\nfilippo.io/edwards25519/field\n# github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4\n## explicit\ngithub.com/99designs/go-keychain\n# github.com/99designs/keyring v1.2.2 => github.com/cosmos/keyring v1.2.0\n## explicit; go 1.17\ngithub.com/99designs/keyring\n# github.com/DataDog/datadog-go v4.8.3+incompatible\n## explicit\ngithub.com/DataDog/datadog-go/statsd\n# github.com/DataDog/zstd v1.5.5\n## explicit; go 1.14\ngithub.com/DataDog/zstd\n# github.com/Microsoft/go-winio v0.6.2\n## explicit; go 1.21\ngithub.com/Microsoft/go-winio\ngithub.com/Microsoft/go-winio/internal/fs\ngithub.com/Microsoft/go-winio/internal/socket\ngithub.com/Microsoft/go-winio/internal/stringbuffer\ngithub.com/Microsoft/go-winio/pkg/guid\n# github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6\n## explicit\ngithub.com/StackExchange/wmi\n# github.com/VictoriaMetrics/fastcache v1.6.0\n## explicit; go 1.13\ngithub.com/VictoriaMetrics/fastcache\n# github.com/allegro/bigcache v1.2.1\n## explicit\n# github.com/aws/aws-sdk-go v1.44.224\n## explicit; go 1.11\ngithub.com/aws/aws-sdk-go/aws\ngithub.com/aws/aws-sdk-go/aws/arn\ngithub.com/aws/aws-sdk-go/aws/awserr\ngithub.com/aws/aws-sdk-go/aws/awsutil\ngithub.com/aws/aws-sdk-go/aws/client\ngithub.com/aws/aws-sdk-go/aws/client/metadata\ngithub.com/aws/aws-sdk-go/aws/corehandlers\ngithub.com/aws/aws-sdk-go/aws/credentials\ngithub.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds\ngithub.com/aws/aws-sdk-go/aws/credentials/endpointcreds\ngithub.com/aws/aws-sdk-go/aws/credentials/processcreds\ngithub.com/aws/aws-sdk-go/aws/credentials/ssocreds\ngithub.com/aws/aws-sdk-go/aws/credentials/stscreds\ngithub.com/aws/aws-sdk-go/aws/csm\ngithub.com/aws/aws-sdk-go/aws/defaults\ngithub.com/aws/aws-sdk-go/aws/ec2metadata\ngithub.com/aws/aws-sdk-go/aws/endpoints\ngithub.com/aws/aws-sdk-go/aws/request\ngithub.com/aws/aws-sdk-go/aws/session\ngithub.com/aws/aws-sdk-go/aws/signer/v4\ngithub.com/aws/aws-sdk-go/internal/context\ngithub.com/aws/aws-sdk-go/internal/ini\ngithub.com/aws/aws-sdk-go/internal/s3shared\ngithub.com/aws/aws-sdk-go/internal/s3shared/arn\ngithub.com/aws/aws-sdk-go/internal/s3shared/s3err\ngithub.com/aws/aws-sdk-go/internal/sdkio\ngithub.com/aws/aws-sdk-go/internal/sdkmath\ngithub.com/aws/aws-sdk-go/internal/sdkrand\ngithub.com/aws/aws-sdk-go/internal/sdkuri\ngithub.com/aws/aws-sdk-go/internal/shareddefaults\ngithub.com/aws/aws-sdk-go/internal/strings\ngithub.com/aws/aws-sdk-go/internal/sync/singleflight\ngithub.com/aws/aws-sdk-go/private/checksum\ngithub.com/aws/aws-sdk-go/private/protocol\ngithub.com/aws/aws-sdk-go/private/protocol/eventstream\ngithub.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi\ngithub.com/aws/aws-sdk-go/private/protocol/json/jsonutil\ngithub.com/aws/aws-sdk-go/private/protocol/jsonrpc\ngithub.com/aws/aws-sdk-go/private/protocol/query\ngithub.com/aws/aws-sdk-go/private/protocol/query/queryutil\ngithub.com/aws/aws-sdk-go/private/protocol/rest\ngithub.com/aws/aws-sdk-go/private/protocol/restjson\ngithub.com/aws/aws-sdk-go/private/protocol/restxml\ngithub.com/aws/aws-sdk-go/private/protocol/xml/xmlutil\ngithub.com/aws/aws-sdk-go/service/s3\ngithub.com/aws/aws-sdk-go/service/sso\ngithub.com/aws/aws-sdk-go/service/sso/ssoiface\ngithub.com/aws/aws-sdk-go/service/sts\ngithub.com/aws/aws-sdk-go/service/sts/stsiface\n# github.com/beorn7/perks v1.0.1\n## explicit; go 1.11\ngithub.com/beorn7/perks/quantile\n# github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d\n## explicit\ngithub.com/bgentry/go-netrc/netrc\n# github.com/bgentry/speakeasy v0.2.0\n## explicit\ngithub.com/bgentry/speakeasy\n# github.com/bits-and-blooms/bitset v1.8.0\n## explicit; go 1.16\ngithub.com/bits-and-blooms/bitset\n# github.com/btcsuite/btcd v0.24.2\n## explicit; go 1.17\ngithub.com/btcsuite/btcd/chaincfg\ngithub.com/btcsuite/btcd/wire\n# github.com/btcsuite/btcd/btcec/v2 v2.3.4\n## explicit; go 1.17\ngithub.com/btcsuite/btcd/btcec/v2\ngithub.com/btcsuite/btcd/btcec/v2/ecdsa\n# github.com/btcsuite/btcd/btcutil v1.1.6\n## explicit; go 1.16\ngithub.com/btcsuite/btcd/btcutil\ngithub.com/btcsuite/btcd/btcutil/base58\ngithub.com/btcsuite/btcd/btcutil/bech32\ngithub.com/btcsuite/btcd/btcutil/hdkeychain\n# github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0\n## explicit; go 1.17\ngithub.com/btcsuite/btcd/chaincfg/chainhash\n# github.com/cenkalti/backoff/v4 v4.3.0\n## explicit; go 1.18\ngithub.com/cenkalti/backoff/v4\n# github.com/cespare/xxhash/v2 v2.3.0\n## explicit; go 1.11\ngithub.com/cespare/xxhash/v2\n# github.com/chzyer/readline v1.5.1\n## explicit; go 1.15\ngithub.com/chzyer/readline\n# github.com/cockroachdb/apd/v2 v2.0.2\n## explicit\ngithub.com/cockroachdb/apd/v2\n# github.com/cockroachdb/errors v1.11.3\n## explicit; go 1.19\ngithub.com/cockroachdb/errors\ngithub.com/cockroachdb/errors/assert\ngithub.com/cockroachdb/errors/barriers\ngithub.com/cockroachdb/errors/contexttags\ngithub.com/cockroachdb/errors/domains\ngithub.com/cockroachdb/errors/errbase\ngithub.com/cockroachdb/errors/errorspb\ngithub.com/cockroachdb/errors/errutil\ngithub.com/cockroachdb/errors/hintdetail\ngithub.com/cockroachdb/errors/issuelink\ngithub.com/cockroachdb/errors/join\ngithub.com/cockroachdb/errors/markers\ngithub.com/cockroachdb/errors/oserror\ngithub.com/cockroachdb/errors/report\ngithub.com/cockroachdb/errors/safedetails\ngithub.com/cockroachdb/errors/secondary\ngithub.com/cockroachdb/errors/stdstrings\ngithub.com/cockroachdb/errors/telemetrykeys\ngithub.com/cockroachdb/errors/withstack\n# github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a\n## explicit; go 1.20\ngithub.com/cockroachdb/fifo\n# github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b\n## explicit; go 1.16\ngithub.com/cockroachdb/logtags\n# github.com/cockroachdb/pebble v1.1.2\n## explicit; go 1.20\ngithub.com/cockroachdb/pebble\ngithub.com/cockroachdb/pebble/bloom\ngithub.com/cockroachdb/pebble/internal/arenaskl\ngithub.com/cockroachdb/pebble/internal/base\ngithub.com/cockroachdb/pebble/internal/batchskl\ngithub.com/cockroachdb/pebble/internal/bytealloc\ngithub.com/cockroachdb/pebble/internal/cache\ngithub.com/cockroachdb/pebble/internal/constants\ngithub.com/cockroachdb/pebble/internal/crc\ngithub.com/cockroachdb/pebble/internal/fastrand\ngithub.com/cockroachdb/pebble/internal/humanize\ngithub.com/cockroachdb/pebble/internal/intern\ngithub.com/cockroachdb/pebble/internal/invalidating\ngithub.com/cockroachdb/pebble/internal/invariants\ngithub.com/cockroachdb/pebble/internal/keyspan\ngithub.com/cockroachdb/pebble/internal/manifest\ngithub.com/cockroachdb/pebble/internal/manual\ngithub.com/cockroachdb/pebble/internal/private\ngithub.com/cockroachdb/pebble/internal/rangedel\ngithub.com/cockroachdb/pebble/internal/rangekey\ngithub.com/cockroachdb/pebble/internal/rawalloc\ngithub.com/cockroachdb/pebble/internal/testkeys\ngithub.com/cockroachdb/pebble/objstorage\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider/objiotracing\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider/remoteobjcat\ngithub.com/cockroachdb/pebble/objstorage/objstorageprovider/sharedcache\ngithub.com/cockroachdb/pebble/objstorage/remote\ngithub.com/cockroachdb/pebble/rangekey\ngithub.com/cockroachdb/pebble/record\ngithub.com/cockroachdb/pebble/sstable\ngithub.com/cockroachdb/pebble/vfs\ngithub.com/cockroachdb/pebble/vfs/atomicfs\n# github.com/cockroachdb/redact v1.1.5\n## explicit; go 1.14\ngithub.com/cockroachdb/redact\ngithub.com/cockroachdb/redact/builder\ngithub.com/cockroachdb/redact/interfaces\ngithub.com/cockroachdb/redact/internal/buffer\ngithub.com/cockroachdb/redact/internal/escape\ngithub.com/cockroachdb/redact/internal/fmtforward\ngithub.com/cockroachdb/redact/internal/markers\ngithub.com/cockroachdb/redact/internal/redact\ngithub.com/cockroachdb/redact/internal/rfmt\ngithub.com/cockroachdb/redact/internal/rfmt/fmtsort\n# github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06\n## explicit; go 1.19\ngithub.com/cockroachdb/tokenbucket\n# github.com/coinbase/rosetta-sdk-go/types v1.0.0\n## explicit; go 1.18\ngithub.com/coinbase/rosetta-sdk-go/types\n# github.com/cometbft/cometbft v0.38.13-0.20240920204745-fdf90d16f608 => github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890\n## explicit; go 1.23.1\ngithub.com/cometbft/cometbft/abci/client\ngithub.com/cometbft/cometbft/abci/example/kvstore\ngithub.com/cometbft/cometbft/abci/server\ngithub.com/cometbft/cometbft/abci/types\ngithub.com/cometbft/cometbft/blocksync\ngithub.com/cometbft/cometbft/cmd/cometbft/commands\ngithub.com/cometbft/cometbft/config\ngithub.com/cometbft/cometbft/consensus\ngithub.com/cometbft/cometbft/consensus/types\ngithub.com/cometbft/cometbft/crypto\ngithub.com/cometbft/cometbft/crypto/batch\ngithub.com/cometbft/cometbft/crypto/ed25519\ngithub.com/cometbft/cometbft/crypto/encoding\ngithub.com/cometbft/cometbft/crypto/merkle\ngithub.com/cometbft/cometbft/crypto/secp256k1\ngithub.com/cometbft/cometbft/crypto/sr25519\ngithub.com/cometbft/cometbft/crypto/tmhash\ngithub.com/cometbft/cometbft/evidence\ngithub.com/cometbft/cometbft/inspect\ngithub.com/cometbft/cometbft/inspect/rpc\ngithub.com/cometbft/cometbft/internal/indexer\ngithub.com/cometbft/cometbft/internal/test\ngithub.com/cometbft/cometbft/libs/async\ngithub.com/cometbft/cometbft/libs/autofile\ngithub.com/cometbft/cometbft/libs/bits\ngithub.com/cometbft/cometbft/libs/bytes\ngithub.com/cometbft/cometbft/libs/cli\ngithub.com/cometbft/cometbft/libs/cli/flags\ngithub.com/cometbft/cometbft/libs/clist\ngithub.com/cometbft/cometbft/libs/cmap\ngithub.com/cometbft/cometbft/libs/events\ngithub.com/cometbft/cometbft/libs/fail\ngithub.com/cometbft/cometbft/libs/flowrate\ngithub.com/cometbft/cometbft/libs/json\ngithub.com/cometbft/cometbft/libs/log\ngithub.com/cometbft/cometbft/libs/math\ngithub.com/cometbft/cometbft/libs/net\ngithub.com/cometbft/cometbft/libs/os\ngithub.com/cometbft/cometbft/libs/progressbar\ngithub.com/cometbft/cometbft/libs/protoio\ngithub.com/cometbft/cometbft/libs/pubsub\ngithub.com/cometbft/cometbft/libs/pubsub/query\ngithub.com/cometbft/cometbft/libs/pubsub/query/syntax\ngithub.com/cometbft/cometbft/libs/rand\ngithub.com/cometbft/cometbft/libs/service\ngithub.com/cometbft/cometbft/libs/strings\ngithub.com/cometbft/cometbft/libs/sync\ngithub.com/cometbft/cometbft/libs/tempfile\ngithub.com/cometbft/cometbft/libs/timer\ngithub.com/cometbft/cometbft/light\ngithub.com/cometbft/cometbft/light/provider\ngithub.com/cometbft/cometbft/light/provider/http\ngithub.com/cometbft/cometbft/light/proxy\ngithub.com/cometbft/cometbft/light/rpc\ngithub.com/cometbft/cometbft/light/store\ngithub.com/cometbft/cometbft/light/store/db\ngithub.com/cometbft/cometbft/mempool\ngithub.com/cometbft/cometbft/node\ngithub.com/cometbft/cometbft/p2p\ngithub.com/cometbft/cometbft/p2p/conn\ngithub.com/cometbft/cometbft/p2p/pex\ngithub.com/cometbft/cometbft/privval\ngithub.com/cometbft/cometbft/proto/tendermint/blocksync\ngithub.com/cometbft/cometbft/proto/tendermint/consensus\ngithub.com/cometbft/cometbft/proto/tendermint/crypto\ngithub.com/cometbft/cometbft/proto/tendermint/libs/bits\ngithub.com/cometbft/cometbft/proto/tendermint/mempool\ngithub.com/cometbft/cometbft/proto/tendermint/p2p\ngithub.com/cometbft/cometbft/proto/tendermint/privval\ngithub.com/cometbft/cometbft/proto/tendermint/state\ngithub.com/cometbft/cometbft/proto/tendermint/statesync\ngithub.com/cometbft/cometbft/proto/tendermint/store\ngithub.com/cometbft/cometbft/proto/tendermint/types\ngithub.com/cometbft/cometbft/proto/tendermint/version\ngithub.com/cometbft/cometbft/proxy\ngithub.com/cometbft/cometbft/rpc/client\ngithub.com/cometbft/cometbft/rpc/client/http\ngithub.com/cometbft/cometbft/rpc/client/local\ngithub.com/cometbft/cometbft/rpc/core\ngithub.com/cometbft/cometbft/rpc/core/types\ngithub.com/cometbft/cometbft/rpc/grpc\ngithub.com/cometbft/cometbft/rpc/jsonrpc/client\ngithub.com/cometbft/cometbft/rpc/jsonrpc/server\ngithub.com/cometbft/cometbft/rpc/jsonrpc/types\ngithub.com/cometbft/cometbft/state\ngithub.com/cometbft/cometbft/state/indexer\ngithub.com/cometbft/cometbft/state/indexer/block\ngithub.com/cometbft/cometbft/state/indexer/block/kv\ngithub.com/cometbft/cometbft/state/indexer/block/null\ngithub.com/cometbft/cometbft/state/indexer/sink/psql\ngithub.com/cometbft/cometbft/state/txindex\ngithub.com/cometbft/cometbft/state/txindex/kv\ngithub.com/cometbft/cometbft/state/txindex/null\ngithub.com/cometbft/cometbft/statesync\ngithub.com/cometbft/cometbft/store\ngithub.com/cometbft/cometbft/test/e2e/app\ngithub.com/cometbft/cometbft/types\ngithub.com/cometbft/cometbft/types/time\ngithub.com/cometbft/cometbft/version\n# github.com/cometbft/cometbft-db v0.15.0\n## explicit; go 1.23.1\ngithub.com/cometbft/cometbft-db\n# github.com/cosmos/btcutil v1.0.5\n## explicit; go 1.19\ngithub.com/cosmos/btcutil/bech32\n# github.com/cosmos/cosmos-db v1.0.3-0.20240408151834-e75f6e4b28d8\n## explicit; go 1.19\ngithub.com/cosmos/cosmos-db\n# github.com/cosmos/cosmos-proto v1.0.0-beta.5\n## explicit; go 1.18\ngithub.com/cosmos/cosmos-proto\ngithub.com/cosmos/cosmos-proto/anyutil\ngithub.com/cosmos/cosmos-proto/runtime\n# github.com/cosmos/cosmos-sdk v0.50.9 => github.com/crypto-org-chain/cosmos-sdk v0.43.0-beta1.0.20241205052910-142c0afa4948\n## explicit; go 1.21\ngithub.com/cosmos/cosmos-sdk/baseapp\ngithub.com/cosmos/cosmos-sdk/baseapp/internal/protocompat\ngithub.com/cosmos/cosmos-sdk/baseapp/oe\ngithub.com/cosmos/cosmos-sdk/client\ngithub.com/cosmos/cosmos-sdk/client/config\ngithub.com/cosmos/cosmos-sdk/client/debug\ngithub.com/cosmos/cosmos-sdk/client/docs\ngithub.com/cosmos/cosmos-sdk/client/flags\ngithub.com/cosmos/cosmos-sdk/client/grpc/cmtservice\ngithub.com/cosmos/cosmos-sdk/client/grpc/node\ngithub.com/cosmos/cosmos-sdk/client/grpc/reflection\ngithub.com/cosmos/cosmos-sdk/client/input\ngithub.com/cosmos/cosmos-sdk/client/keys\ngithub.com/cosmos/cosmos-sdk/client/pruning\ngithub.com/cosmos/cosmos-sdk/client/rpc\ngithub.com/cosmos/cosmos-sdk/client/snapshot\ngithub.com/cosmos/cosmos-sdk/client/tx\ngithub.com/cosmos/cosmos-sdk/codec\ngithub.com/cosmos/cosmos-sdk/codec/address\ngithub.com/cosmos/cosmos-sdk/codec/legacy\ngithub.com/cosmos/cosmos-sdk/codec/testutil\ngithub.com/cosmos/cosmos-sdk/codec/types\ngithub.com/cosmos/cosmos-sdk/codec/unknownproto\ngithub.com/cosmos/cosmos-sdk/crypto\ngithub.com/cosmos/cosmos-sdk/crypto/codec\ngithub.com/cosmos/cosmos-sdk/crypto/hd\ngithub.com/cosmos/cosmos-sdk/crypto/keyring\ngithub.com/cosmos/cosmos-sdk/crypto/keys/bcrypt\ngithub.com/cosmos/cosmos-sdk/crypto/keys/ed25519\ngithub.com/cosmos/cosmos-sdk/crypto/keys/internal/ecdsa\ngithub.com/cosmos/cosmos-sdk/crypto/keys/multisig\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1/libsecp256k1/include\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1/libsecp256k1/src\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256k1/internal/secp256k1/libsecp256k1/src/modules/recovery\ngithub.com/cosmos/cosmos-sdk/crypto/keys/secp256r1\ngithub.com/cosmos/cosmos-sdk/crypto/ledger\ngithub.com/cosmos/cosmos-sdk/crypto/types\ngithub.com/cosmos/cosmos-sdk/crypto/types/multisig\ngithub.com/cosmos/cosmos-sdk/crypto/xsalsa20symmetric\ngithub.com/cosmos/cosmos-sdk/internal/conv\ngithub.com/cosmos/cosmos-sdk/runtime\ngithub.com/cosmos/cosmos-sdk/runtime/services\ngithub.com/cosmos/cosmos-sdk/server\ngithub.com/cosmos/cosmos-sdk/server/api\ngithub.com/cosmos/cosmos-sdk/server/cmd\ngithub.com/cosmos/cosmos-sdk/server/config\ngithub.com/cosmos/cosmos-sdk/server/grpc\ngithub.com/cosmos/cosmos-sdk/server/grpc/gogoreflection\ngithub.com/cosmos/cosmos-sdk/server/grpc/reflection/v2alpha1\ngithub.com/cosmos/cosmos-sdk/server/log\ngithub.com/cosmos/cosmos-sdk/server/types\ngithub.com/cosmos/cosmos-sdk/std\ngithub.com/cosmos/cosmos-sdk/telemetry\ngithub.com/cosmos/cosmos-sdk/testutil\ngithub.com/cosmos/cosmos-sdk/testutil/mock\ngithub.com/cosmos/cosmos-sdk/testutil/sims\ngithub.com/cosmos/cosmos-sdk/testutil/testdata\ngithub.com/cosmos/cosmos-sdk/types\ngithub.com/cosmos/cosmos-sdk/types/address\ngithub.com/cosmos/cosmos-sdk/types/bech32\ngithub.com/cosmos/cosmos-sdk/types/bech32/legacybech32\ngithub.com/cosmos/cosmos-sdk/types/errors\ngithub.com/cosmos/cosmos-sdk/types/grpc\ngithub.com/cosmos/cosmos-sdk/types/kv\ngithub.com/cosmos/cosmos-sdk/types/mempool\ngithub.com/cosmos/cosmos-sdk/types/module\ngithub.com/cosmos/cosmos-sdk/types/module/testutil\ngithub.com/cosmos/cosmos-sdk/types/msgservice\ngithub.com/cosmos/cosmos-sdk/types/query\ngithub.com/cosmos/cosmos-sdk/types/registry\ngithub.com/cosmos/cosmos-sdk/types/simulation\ngithub.com/cosmos/cosmos-sdk/types/tx\ngithub.com/cosmos/cosmos-sdk/types/tx/amino\ngithub.com/cosmos/cosmos-sdk/types/tx/signing\ngithub.com/cosmos/cosmos-sdk/version\ngithub.com/cosmos/cosmos-sdk/x/auth\ngithub.com/cosmos/cosmos-sdk/x/auth/ante\ngithub.com/cosmos/cosmos-sdk/x/auth/client\ngithub.com/cosmos/cosmos-sdk/x/auth/client/cli\ngithub.com/cosmos/cosmos-sdk/x/auth/codec\ngithub.com/cosmos/cosmos-sdk/x/auth/exported\ngithub.com/cosmos/cosmos-sdk/x/auth/keeper\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/auth/migrations/v5\ngithub.com/cosmos/cosmos-sdk/x/auth/posthandler\ngithub.com/cosmos/cosmos-sdk/x/auth/signing\ngithub.com/cosmos/cosmos-sdk/x/auth/simulation\ngithub.com/cosmos/cosmos-sdk/x/auth/tx\ngithub.com/cosmos/cosmos-sdk/x/auth/tx/config\ngithub.com/cosmos/cosmos-sdk/x/auth/types\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting/client/cli\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting/exported\ngithub.com/cosmos/cosmos-sdk/x/auth/vesting/types\ngithub.com/cosmos/cosmos-sdk/x/authz\ngithub.com/cosmos/cosmos-sdk/x/authz/client/cli\ngithub.com/cosmos/cosmos-sdk/x/authz/keeper\ngithub.com/cosmos/cosmos-sdk/x/authz/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/authz/module\ngithub.com/cosmos/cosmos-sdk/x/authz/simulation\ngithub.com/cosmos/cosmos-sdk/x/bank\ngithub.com/cosmos/cosmos-sdk/x/bank/client/cli\ngithub.com/cosmos/cosmos-sdk/x/bank/exported\ngithub.com/cosmos/cosmos-sdk/x/bank/keeper\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/bank/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/bank/simulation\ngithub.com/cosmos/cosmos-sdk/x/bank/types\ngithub.com/cosmos/cosmos-sdk/x/consensus\ngithub.com/cosmos/cosmos-sdk/x/consensus/exported\ngithub.com/cosmos/cosmos-sdk/x/consensus/keeper\ngithub.com/cosmos/cosmos-sdk/x/consensus/types\ngithub.com/cosmos/cosmos-sdk/x/crisis\ngithub.com/cosmos/cosmos-sdk/x/crisis/exported\ngithub.com/cosmos/cosmos-sdk/x/crisis/keeper\ngithub.com/cosmos/cosmos-sdk/x/crisis/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/crisis/types\ngithub.com/cosmos/cosmos-sdk/x/distribution\ngithub.com/cosmos/cosmos-sdk/x/distribution/client/cli\ngithub.com/cosmos/cosmos-sdk/x/distribution/exported\ngithub.com/cosmos/cosmos-sdk/x/distribution/keeper\ngithub.com/cosmos/cosmos-sdk/x/distribution/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/distribution/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/distribution/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/distribution/simulation\ngithub.com/cosmos/cosmos-sdk/x/distribution/types\ngithub.com/cosmos/cosmos-sdk/x/genutil\ngithub.com/cosmos/cosmos-sdk/x/genutil/client/cli\ngithub.com/cosmos/cosmos-sdk/x/genutil/migrations/v043\ngithub.com/cosmos/cosmos-sdk/x/genutil/migrations/v046\ngithub.com/cosmos/cosmos-sdk/x/genutil/migrations/v047\ngithub.com/cosmos/cosmos-sdk/x/genutil/types\ngithub.com/cosmos/cosmos-sdk/x/gov\ngithub.com/cosmos/cosmos-sdk/x/gov/client\ngithub.com/cosmos/cosmos-sdk/x/gov/client/cli\ngithub.com/cosmos/cosmos-sdk/x/gov/client/utils\ngithub.com/cosmos/cosmos-sdk/x/gov/exported\ngithub.com/cosmos/cosmos-sdk/x/gov/keeper\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/gov/migrations/v5\ngithub.com/cosmos/cosmos-sdk/x/gov/simulation\ngithub.com/cosmos/cosmos-sdk/x/gov/types\ngithub.com/cosmos/cosmos-sdk/x/gov/types/v1\ngithub.com/cosmos/cosmos-sdk/x/gov/types/v1beta1\ngithub.com/cosmos/cosmos-sdk/x/group\ngithub.com/cosmos/cosmos-sdk/x/group/errors\ngithub.com/cosmos/cosmos-sdk/x/group/internal/math\ngithub.com/cosmos/cosmos-sdk/x/group/internal/orm\ngithub.com/cosmos/cosmos-sdk/x/group/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/mint\ngithub.com/cosmos/cosmos-sdk/x/mint/exported\ngithub.com/cosmos/cosmos-sdk/x/mint/keeper\ngithub.com/cosmos/cosmos-sdk/x/mint/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/mint/simulation\ngithub.com/cosmos/cosmos-sdk/x/mint/types\ngithub.com/cosmos/cosmos-sdk/x/params\ngithub.com/cosmos/cosmos-sdk/x/params/client\ngithub.com/cosmos/cosmos-sdk/x/params/client/cli\ngithub.com/cosmos/cosmos-sdk/x/params/client/utils\ngithub.com/cosmos/cosmos-sdk/x/params/keeper\ngithub.com/cosmos/cosmos-sdk/x/params/types\ngithub.com/cosmos/cosmos-sdk/x/params/types/proposal\ngithub.com/cosmos/cosmos-sdk/x/simulation\ngithub.com/cosmos/cosmos-sdk/x/simulation/client/cli\ngithub.com/cosmos/cosmos-sdk/x/slashing\ngithub.com/cosmos/cosmos-sdk/x/slashing/exported\ngithub.com/cosmos/cosmos-sdk/x/slashing/keeper\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/slashing/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/slashing/simulation\ngithub.com/cosmos/cosmos-sdk/x/slashing/types\ngithub.com/cosmos/cosmos-sdk/x/staking\ngithub.com/cosmos/cosmos-sdk/x/staking/client/cli\ngithub.com/cosmos/cosmos-sdk/x/staking/exported\ngithub.com/cosmos/cosmos-sdk/x/staking/keeper\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v1\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v2\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v3\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v4\ngithub.com/cosmos/cosmos-sdk/x/staking/migrations/v5\ngithub.com/cosmos/cosmos-sdk/x/staking/simulation\ngithub.com/cosmos/cosmos-sdk/x/staking/types\n# github.com/cosmos/go-bip39 v1.0.0\n## explicit; go 1.15\ngithub.com/cosmos/go-bip39\n# github.com/cosmos/gogogateway v1.2.0\n## explicit; go 1.12\ngithub.com/cosmos/gogogateway\n# github.com/cosmos/gogoproto v1.7.0\n## explicit; go 1.19\ngithub.com/cosmos/gogoproto/gogoproto\ngithub.com/cosmos/gogoproto/grpc\ngithub.com/cosmos/gogoproto/io\ngithub.com/cosmos/gogoproto/jsonpb\ngithub.com/cosmos/gogoproto/proto\ngithub.com/cosmos/gogoproto/protoc-gen-gogo/descriptor\ngithub.com/cosmos/gogoproto/sortkeys\ngithub.com/cosmos/gogoproto/types\ngithub.com/cosmos/gogoproto/types/any\ngithub.com/cosmos/gogoproto/types/any/internal\n# github.com/cosmos/iavl v1.2.0\n## explicit; go 1.20\ngithub.com/cosmos/iavl\ngithub.com/cosmos/iavl/cache\ngithub.com/cosmos/iavl/db\ngithub.com/cosmos/iavl/fastnode\ngithub.com/cosmos/iavl/internal/bytes\ngithub.com/cosmos/iavl/internal/color\ngithub.com/cosmos/iavl/internal/encoding\ngithub.com/cosmos/iavl/keyformat\ngithub.com/cosmos/iavl/proto\n# github.com/cosmos/ibc-go/modules/capability v1.0.1\n## explicit; go 1.21\ngithub.com/cosmos/ibc-go/modules/capability\ngithub.com/cosmos/ibc-go/modules/capability/keeper\ngithub.com/cosmos/ibc-go/modules/capability/simulation\ngithub.com/cosmos/ibc-go/modules/capability/types\n# github.com/cosmos/ibc-go/v9 v9.0.2\n## explicit; go 1.22.2\ngithub.com/cosmos/ibc-go/v9/internal/validate\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/client/cli\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/events\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/telemetry\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/internal/types\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/keeper\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/simulation\ngithub.com/cosmos/ibc-go/v9/modules/apps/transfer/types\ngithub.com/cosmos/ibc-go/v9/modules/core\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client/client/cli\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client/client/utils\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client/keeper\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client/migrations/v7\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client/simulation\ngithub.com/cosmos/ibc-go/v9/modules/core/02-client/types\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection/client/cli\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection/client/utils\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection/keeper\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection/migrations/v7\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection/simulation\ngithub.com/cosmos/ibc-go/v9/modules/core/03-connection/types\ngithub.com/cosmos/ibc-go/v9/modules/core/04-channel\ngithub.com/cosmos/ibc-go/v9/modules/core/04-channel/client/cli\ngithub.com/cosmos/ibc-go/v9/modules/core/04-channel/client/utils\ngithub.com/cosmos/ibc-go/v9/modules/core/04-channel/keeper\ngithub.com/cosmos/ibc-go/v9/modules/core/04-channel/simulation\ngithub.com/cosmos/ibc-go/v9/modules/core/04-channel/types\ngithub.com/cosmos/ibc-go/v9/modules/core/05-port/keeper\ngithub.com/cosmos/ibc-go/v9/modules/core/05-port/types\ngithub.com/cosmos/ibc-go/v9/modules/core/23-commitment/types\ngithub.com/cosmos/ibc-go/v9/modules/core/23-commitment/types/v2\ngithub.com/cosmos/ibc-go/v9/modules/core/24-host\ngithub.com/cosmos/ibc-go/v9/modules/core/ante\ngithub.com/cosmos/ibc-go/v9/modules/core/client\ngithub.com/cosmos/ibc-go/v9/modules/core/client/cli\ngithub.com/cosmos/ibc-go/v9/modules/core/errors\ngithub.com/cosmos/ibc-go/v9/modules/core/exported\ngithub.com/cosmos/ibc-go/v9/modules/core/internal/telemetry\ngithub.com/cosmos/ibc-go/v9/modules/core/keeper\ngithub.com/cosmos/ibc-go/v9/modules/core/metrics\ngithub.com/cosmos/ibc-go/v9/modules/core/simulation\ngithub.com/cosmos/ibc-go/v9/modules/core/types\ngithub.com/cosmos/ibc-go/v9/modules/light-clients/06-solomachine\ngithub.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint\ngithub.com/cosmos/ibc-go/v9/modules/light-clients/09-localhost\n# github.com/cosmos/ics23/go v0.11.0\n## explicit; go 1.21\ngithub.com/cosmos/ics23/go\n# github.com/cosmos/ledger-cosmos-go v0.13.3\n## explicit; go 1.18\ngithub.com/cosmos/ledger-cosmos-go\n# github.com/cosmos/rosetta v0.50.3-1\n## explicit; go 1.21\ngithub.com/cosmos/rosetta\ngithub.com/cosmos/rosetta/cmd\ngithub.com/cosmos/rosetta/lib/errors\ngithub.com/cosmos/rosetta/lib/internal/service\ngithub.com/cosmos/rosetta/lib/server\ngithub.com/cosmos/rosetta/lib/types\n# github.com/cosmos/rosetta-sdk-go v0.10.0\n## explicit; go 1.18\ngithub.com/cosmos/rosetta-sdk-go/asserter\ngithub.com/cosmos/rosetta-sdk-go/errors\ngithub.com/cosmos/rosetta-sdk-go/server\n# github.com/creachadair/atomicfile v0.3.1\n## explicit; go 1.19\ngithub.com/creachadair/atomicfile\n# github.com/creachadair/tomledit v0.0.24\n## explicit; go 1.18\ngithub.com/creachadair/tomledit\ngithub.com/creachadair/tomledit/parser\ngithub.com/creachadair/tomledit/scanner\ngithub.com/creachadair/tomledit/transform\n# github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716\n## explicit; go 1.21\ngithub.com/crypto-org-chain/go-block-stm\n# github.com/danieljoos/wincred v1.2.1\n## explicit; go 1.18\ngithub.com/danieljoos/wincred\n# github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc\n## explicit\ngithub.com/davecgh/go-spew/spew\n# github.com/deckarep/golang-set/v2 v2.1.0\n## explicit; go 1.18\ngithub.com/deckarep/golang-set/v2\n# github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0\n## explicit; go 1.17\ngithub.com/decred/dcrd/dcrec/secp256k1/v4\ngithub.com/decred/dcrd/dcrec/secp256k1/v4/ecdsa\n# github.com/desertbit/timer v1.0.1\n## explicit; go 1.20\ngithub.com/desertbit/timer\n# github.com/dgraph-io/badger/v4 v4.3.0\n## explicit; go 1.19\ngithub.com/dgraph-io/badger/v4\ngithub.com/dgraph-io/badger/v4/fb\ngithub.com/dgraph-io/badger/v4/options\ngithub.com/dgraph-io/badger/v4/pb\ngithub.com/dgraph-io/badger/v4/skl\ngithub.com/dgraph-io/badger/v4/table\ngithub.com/dgraph-io/badger/v4/trie\ngithub.com/dgraph-io/badger/v4/y\n# github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91\n## explicit; go 1.19\ngithub.com/dgraph-io/ristretto\ngithub.com/dgraph-io/ristretto/z\ngithub.com/dgraph-io/ristretto/z/simd\n# github.com/dlclark/regexp2 v1.7.0\n## explicit; go 1.13\ngithub.com/dlclark/regexp2\ngithub.com/dlclark/regexp2/syntax\n# github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7\n## explicit; go 1.16\ngithub.com/dop251/goja\ngithub.com/dop251/goja/ast\ngithub.com/dop251/goja/file\ngithub.com/dop251/goja/ftoa\ngithub.com/dop251/goja/ftoa/internal/fast\ngithub.com/dop251/goja/parser\ngithub.com/dop251/goja/token\ngithub.com/dop251/goja/unistring\n# github.com/dustin/go-humanize v1.0.1\n## explicit; go 1.16\ngithub.com/dustin/go-humanize\n# github.com/dvsekhvalnov/jose2go v1.7.0\n## explicit; go 1.15\ngithub.com/dvsekhvalnov/jose2go\ngithub.com/dvsekhvalnov/jose2go/aes\ngithub.com/dvsekhvalnov/jose2go/arrays\ngithub.com/dvsekhvalnov/jose2go/base64url\ngithub.com/dvsekhvalnov/jose2go/compact\ngithub.com/dvsekhvalnov/jose2go/kdf\ngithub.com/dvsekhvalnov/jose2go/keys/ecc\ngithub.com/dvsekhvalnov/jose2go/padding\n# github.com/edsrzf/mmap-go v1.0.0\n## explicit\ngithub.com/edsrzf/mmap-go\n# github.com/emicklei/dot v1.6.2\n## explicit; go 1.13\ngithub.com/emicklei/dot\n# github.com/ethereum/go-ethereum v1.10.26 => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183\n## explicit; go 1.19\ngithub.com/ethereum/go-ethereum\ngithub.com/ethereum/go-ethereum/accounts\ngithub.com/ethereum/go-ethereum/accounts/abi\ngithub.com/ethereum/go-ethereum/accounts/keystore\ngithub.com/ethereum/go-ethereum/accounts/scwallet\ngithub.com/ethereum/go-ethereum/common\ngithub.com/ethereum/go-ethereum/common/bitutil\ngithub.com/ethereum/go-ethereum/common/hexutil\ngithub.com/ethereum/go-ethereum/common/lru\ngithub.com/ethereum/go-ethereum/common/math\ngithub.com/ethereum/go-ethereum/common/mclock\ngithub.com/ethereum/go-ethereum/common/prque\ngithub.com/ethereum/go-ethereum/consensus\ngithub.com/ethereum/go-ethereum/consensus/ethash\ngithub.com/ethereum/go-ethereum/consensus/misc\ngithub.com/ethereum/go-ethereum/core\ngithub.com/ethereum/go-ethereum/core/bloombits\ngithub.com/ethereum/go-ethereum/core/rawdb\ngithub.com/ethereum/go-ethereum/core/state\ngithub.com/ethereum/go-ethereum/core/state/snapshot\ngithub.com/ethereum/go-ethereum/core/types\ngithub.com/ethereum/go-ethereum/core/vm\ngithub.com/ethereum/go-ethereum/crypto\ngithub.com/ethereum/go-ethereum/crypto/blake2b\ngithub.com/ethereum/go-ethereum/crypto/bls12381\ngithub.com/ethereum/go-ethereum/crypto/bn256\ngithub.com/ethereum/go-ethereum/crypto/bn256/cloudflare\ngithub.com/ethereum/go-ethereum/crypto/bn256/google\ngithub.com/ethereum/go-ethereum/crypto/ecies\ngithub.com/ethereum/go-ethereum/crypto/secp256k1\ngithub.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/include\ngithub.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src\ngithub.com/ethereum/go-ethereum/crypto/secp256k1/libsecp256k1/src/modules/recovery\ngithub.com/ethereum/go-ethereum/eth/filters\ngithub.com/ethereum/go-ethereum/eth/tracers\ngithub.com/ethereum/go-ethereum/eth/tracers/js\ngithub.com/ethereum/go-ethereum/eth/tracers/js/internal/tracers\ngithub.com/ethereum/go-ethereum/eth/tracers/logger\ngithub.com/ethereum/go-ethereum/eth/tracers/native\ngithub.com/ethereum/go-ethereum/ethclient\ngithub.com/ethereum/go-ethereum/ethdb\ngithub.com/ethereum/go-ethereum/ethdb/leveldb\ngithub.com/ethereum/go-ethereum/ethdb/memorydb\ngithub.com/ethereum/go-ethereum/ethdb/pebble\ngithub.com/ethereum/go-ethereum/event\ngithub.com/ethereum/go-ethereum/internal/ethapi\ngithub.com/ethereum/go-ethereum/internal/syncx\ngithub.com/ethereum/go-ethereum/internal/version\ngithub.com/ethereum/go-ethereum/log\ngithub.com/ethereum/go-ethereum/metrics\ngithub.com/ethereum/go-ethereum/metrics/exp\ngithub.com/ethereum/go-ethereum/metrics/prometheus\ngithub.com/ethereum/go-ethereum/p2p\ngithub.com/ethereum/go-ethereum/p2p/discover\ngithub.com/ethereum/go-ethereum/p2p/discover/v4wire\ngithub.com/ethereum/go-ethereum/p2p/discover/v5wire\ngithub.com/ethereum/go-ethereum/p2p/enode\ngithub.com/ethereum/go-ethereum/p2p/enr\ngithub.com/ethereum/go-ethereum/p2p/nat\ngithub.com/ethereum/go-ethereum/p2p/netutil\ngithub.com/ethereum/go-ethereum/p2p/rlpx\ngithub.com/ethereum/go-ethereum/params\ngithub.com/ethereum/go-ethereum/rlp\ngithub.com/ethereum/go-ethereum/rlp/internal/rlpstruct\ngithub.com/ethereum/go-ethereum/rpc\ngithub.com/ethereum/go-ethereum/signer/core/apitypes\ngithub.com/ethereum/go-ethereum/trie\n# github.com/fatih/color v1.17.0\n## explicit; go 1.17\ngithub.com/fatih/color\n# github.com/felixge/httpsnoop v1.0.4\n## explicit; go 1.13\ngithub.com/felixge/httpsnoop\n# github.com/fsnotify/fsnotify v1.7.0\n## explicit; go 1.17\ngithub.com/fsnotify/fsnotify\n# github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff\n## explicit\ngithub.com/gballet/go-libpcsclite\n# github.com/getsentry/sentry-go v0.28.1\n## explicit; go 1.18\ngithub.com/getsentry/sentry-go\ngithub.com/getsentry/sentry-go/internal/debug\ngithub.com/getsentry/sentry-go/internal/otel/baggage\ngithub.com/getsentry/sentry-go/internal/otel/baggage/internal/baggage\ngithub.com/getsentry/sentry-go/internal/ratelimit\ngithub.com/getsentry/sentry-go/internal/traceparser\n# github.com/go-kit/kit v0.13.0\n## explicit; go 1.17\ngithub.com/go-kit/kit/metrics\ngithub.com/go-kit/kit/metrics/discard\ngithub.com/go-kit/kit/metrics/internal/lv\ngithub.com/go-kit/kit/metrics/prometheus\n# github.com/go-kit/log v0.2.1\n## explicit; go 1.17\ngithub.com/go-kit/log\ngithub.com/go-kit/log/level\ngithub.com/go-kit/log/term\n# github.com/go-logfmt/logfmt v0.6.0\n## explicit; go 1.17\ngithub.com/go-logfmt/logfmt\n# github.com/go-logr/logr v1.4.1\n## explicit; go 1.18\ngithub.com/go-logr/logr\ngithub.com/go-logr/logr/funcr\n# github.com/go-logr/stdr v1.2.2\n## explicit; go 1.16\ngithub.com/go-logr/stdr\n# github.com/go-ole/go-ole v1.2.6\n## explicit; go 1.12\ngithub.com/go-ole/go-ole\ngithub.com/go-ole/go-ole/oleutil\n# github.com/go-sourcemap/sourcemap v2.1.3+incompatible\n## explicit\ngithub.com/go-sourcemap/sourcemap\ngithub.com/go-sourcemap/sourcemap/internal/base64vlq\n# github.com/go-stack/stack v1.8.1\n## explicit; go 1.17\ngithub.com/go-stack/stack\n# github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2\n## explicit; go 1.12\ngithub.com/godbus/dbus\n# github.com/gofrs/flock v0.8.1\n## explicit\ngithub.com/gofrs/flock\n# github.com/gogo/googleapis v1.4.1\n## explicit; go 1.12\ngithub.com/gogo/googleapis/google/api\n# github.com/gogo/protobuf v1.3.2\n## explicit; go 1.15\ngithub.com/gogo/protobuf/gogoproto\ngithub.com/gogo/protobuf/proto\ngithub.com/gogo/protobuf/protoc-gen-gogo/descriptor\ngithub.com/gogo/protobuf/sortkeys\ngithub.com/gogo/protobuf/types\n# github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da\n## explicit\ngithub.com/golang/groupcache/lru\n# github.com/golang/mock v1.6.0\n## explicit; go 1.11\ngithub.com/golang/mock/gomock\n# github.com/golang/protobuf v1.5.4\n## explicit; go 1.17\ngithub.com/golang/protobuf/descriptor\ngithub.com/golang/protobuf/jsonpb\ngithub.com/golang/protobuf/proto\ngithub.com/golang/protobuf/protoc-gen-go/descriptor\ngithub.com/golang/protobuf/ptypes/any\ngithub.com/golang/protobuf/ptypes/duration\ngithub.com/golang/protobuf/ptypes/empty\ngithub.com/golang/protobuf/ptypes/timestamp\ngithub.com/golang/protobuf/ptypes/wrappers\n# github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb\n## explicit\ngithub.com/golang/snappy\n# github.com/google/btree v1.1.3\n## explicit; go 1.18\ngithub.com/google/btree\n# github.com/google/flatbuffers v24.3.25+incompatible\n## explicit\ngithub.com/google/flatbuffers/go\n# github.com/google/go-cmp v0.6.0\n## explicit; go 1.13\ngithub.com/google/go-cmp/cmp\ngithub.com/google/go-cmp/cmp/cmpopts\ngithub.com/google/go-cmp/cmp/internal/diff\ngithub.com/google/go-cmp/cmp/internal/flags\ngithub.com/google/go-cmp/cmp/internal/function\ngithub.com/google/go-cmp/cmp/internal/value\n# github.com/google/orderedcode v0.0.1\n## explicit\ngithub.com/google/orderedcode\n# github.com/google/s2a-go v0.1.7\n## explicit; go 1.19\ngithub.com/google/s2a-go\ngithub.com/google/s2a-go/fallback\ngithub.com/google/s2a-go/internal/authinfo\ngithub.com/google/s2a-go/internal/handshaker\ngithub.com/google/s2a-go/internal/handshaker/service\ngithub.com/google/s2a-go/internal/proto/common_go_proto\ngithub.com/google/s2a-go/internal/proto/s2a_context_go_proto\ngithub.com/google/s2a-go/internal/proto/s2a_go_proto\ngithub.com/google/s2a-go/internal/proto/v2/common_go_proto\ngithub.com/google/s2a-go/internal/proto/v2/s2a_context_go_proto\ngithub.com/google/s2a-go/internal/proto/v2/s2a_go_proto\ngithub.com/google/s2a-go/internal/record\ngithub.com/google/s2a-go/internal/record/internal/aeadcrypter\ngithub.com/google/s2a-go/internal/record/internal/halfconn\ngithub.com/google/s2a-go/internal/tokenmanager\ngithub.com/google/s2a-go/internal/v2\ngithub.com/google/s2a-go/internal/v2/certverifier\ngithub.com/google/s2a-go/internal/v2/remotesigner\ngithub.com/google/s2a-go/internal/v2/tlsconfigstore\ngithub.com/google/s2a-go/retry\ngithub.com/google/s2a-go/stream\n# github.com/google/uuid v1.6.0\n## explicit\ngithub.com/google/uuid\n# github.com/googleapis/enterprise-certificate-proxy v0.3.2\n## explicit; go 1.19\ngithub.com/googleapis/enterprise-certificate-proxy/client\ngithub.com/googleapis/enterprise-certificate-proxy/client/util\n# github.com/googleapis/gax-go/v2 v2.12.5\n## explicit; go 1.20\ngithub.com/googleapis/gax-go/v2\ngithub.com/googleapis/gax-go/v2/apierror\ngithub.com/googleapis/gax-go/v2/apierror/internal/proto\ngithub.com/googleapis/gax-go/v2/callctx\ngithub.com/googleapis/gax-go/v2/internal\n# github.com/gorilla/handlers v1.5.2\n## explicit; go 1.20\ngithub.com/gorilla/handlers\n# github.com/gorilla/mux v1.8.1\n## explicit; go 1.20\ngithub.com/gorilla/mux\n# github.com/gorilla/websocket v1.5.3\n## explicit; go 1.12\ngithub.com/gorilla/websocket\n# github.com/grpc-ecosystem/go-grpc-middleware v1.4.0\n## explicit; go 1.14\ngithub.com/grpc-ecosystem/go-grpc-middleware\ngithub.com/grpc-ecosystem/go-grpc-middleware/recovery\n# github.com/grpc-ecosystem/grpc-gateway v1.16.0\n## explicit; go 1.14\ngithub.com/grpc-ecosystem/grpc-gateway/internal\ngithub.com/grpc-ecosystem/grpc-gateway/runtime\ngithub.com/grpc-ecosystem/grpc-gateway/utilities\n# github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c\n## explicit\ngithub.com/gsterjov/go-libsecret\n# github.com/hashicorp/go-cleanhttp v0.5.2\n## explicit; go 1.13\ngithub.com/hashicorp/go-cleanhttp\n# github.com/hashicorp/go-getter v1.7.4\n## explicit; go 1.13\ngithub.com/hashicorp/go-getter\ngithub.com/hashicorp/go-getter/helper/url\n# github.com/hashicorp/go-hclog v1.6.3\n## explicit; go 1.13\ngithub.com/hashicorp/go-hclog\n# github.com/hashicorp/go-immutable-radix v1.3.1\n## explicit\ngithub.com/hashicorp/go-immutable-radix\n# github.com/hashicorp/go-metrics v0.5.3\n## explicit; go 1.12\ngithub.com/hashicorp/go-metrics\ngithub.com/hashicorp/go-metrics/datadog\ngithub.com/hashicorp/go-metrics/prometheus\n# github.com/hashicorp/go-plugin v1.6.1\n## explicit; go 1.17\ngithub.com/hashicorp/go-plugin\ngithub.com/hashicorp/go-plugin/internal/cmdrunner\ngithub.com/hashicorp/go-plugin/internal/grpcmux\ngithub.com/hashicorp/go-plugin/internal/plugin\ngithub.com/hashicorp/go-plugin/runner\n# github.com/hashicorp/go-safetemp v1.0.0\n## explicit\ngithub.com/hashicorp/go-safetemp\n# github.com/hashicorp/go-version v1.6.0\n## explicit\ngithub.com/hashicorp/go-version\n# github.com/hashicorp/golang-lru v1.0.2\n## explicit; go 1.12\ngithub.com/hashicorp/golang-lru\ngithub.com/hashicorp/golang-lru/simplelru\n# github.com/hashicorp/golang-lru/v2 v2.0.7\n## explicit; go 1.18\ngithub.com/hashicorp/golang-lru/v2\ngithub.com/hashicorp/golang-lru/v2/internal\ngithub.com/hashicorp/golang-lru/v2/simplelru\n# github.com/hashicorp/hcl v1.0.0\n## explicit\ngithub.com/hashicorp/hcl\ngithub.com/hashicorp/hcl/hcl/ast\ngithub.com/hashicorp/hcl/hcl/parser\ngithub.com/hashicorp/hcl/hcl/printer\ngithub.com/hashicorp/hcl/hcl/scanner\ngithub.com/hashicorp/hcl/hcl/strconv\ngithub.com/hashicorp/hcl/hcl/token\ngithub.com/hashicorp/hcl/json/parser\ngithub.com/hashicorp/hcl/json/scanner\ngithub.com/hashicorp/hcl/json/token\n# github.com/hashicorp/yamux v0.1.1\n## explicit; go 1.15\ngithub.com/hashicorp/yamux\n# github.com/hdevalence/ed25519consensus v0.2.0\n## explicit; go 1.19\ngithub.com/hdevalence/ed25519consensus\n# github.com/holiman/bloomfilter/v2 v2.0.3\n## explicit; go 1.15\ngithub.com/holiman/bloomfilter/v2\n# github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c\n## explicit; go 1.18\ngithub.com/holiman/uint256\n# github.com/huandu/skiplist v1.2.0\n## explicit; go 1.12\ngithub.com/huandu/skiplist\n# github.com/huin/goupnp v1.0.3\n## explicit; go 1.14\ngithub.com/huin/goupnp\ngithub.com/huin/goupnp/dcps/internetgateway1\ngithub.com/huin/goupnp/dcps/internetgateway2\ngithub.com/huin/goupnp/httpu\ngithub.com/huin/goupnp/scpd\ngithub.com/huin/goupnp/soap\ngithub.com/huin/goupnp/ssdp\n# github.com/iancoleman/strcase v0.3.0\n## explicit; go 1.16\ngithub.com/iancoleman/strcase\n# github.com/improbable-eng/grpc-web v0.15.0\n## explicit; go 1.16\ngithub.com/improbable-eng/grpc-web/go/grpcweb\n# github.com/inconshreveable/mousetrap v1.1.0\n## explicit; go 1.18\ngithub.com/inconshreveable/mousetrap\n# github.com/jackpal/go-nat-pmp v1.0.2\n## explicit\ngithub.com/jackpal/go-nat-pmp\n# github.com/jmespath/go-jmespath v0.4.0\n## explicit; go 1.14\ngithub.com/jmespath/go-jmespath\n# github.com/jmhodges/levigo v1.0.0\n## explicit\ngithub.com/jmhodges/levigo\n# github.com/klauspost/compress v1.17.9\n## explicit; go 1.20\ngithub.com/klauspost/compress\ngithub.com/klauspost/compress/fse\ngithub.com/klauspost/compress/huff0\ngithub.com/klauspost/compress/internal/cpuinfo\ngithub.com/klauspost/compress/internal/race\ngithub.com/klauspost/compress/internal/snapref\ngithub.com/klauspost/compress/s2\ngithub.com/klauspost/compress/snappy\ngithub.com/klauspost/compress/zstd\ngithub.com/klauspost/compress/zstd/internal/xxhash\n# github.com/kr/pretty v0.3.1\n## explicit; go 1.12\ngithub.com/kr/pretty\n# github.com/kr/text v0.2.0\n## explicit\ngithub.com/kr/text\n# github.com/lib/pq v1.10.9\n## explicit; go 1.13\ngithub.com/lib/pq\ngithub.com/lib/pq/oid\ngithub.com/lib/pq/scram\n# github.com/linxGnu/grocksdb v1.9.3\n## explicit; go 1.17\ngithub.com/linxGnu/grocksdb\n# github.com/magiconair/properties v1.8.7\n## explicit; go 1.19\ngithub.com/magiconair/properties\n# github.com/manifoldco/promptui v0.9.0\n## explicit; go 1.12\ngithub.com/manifoldco/promptui\ngithub.com/manifoldco/promptui/list\ngithub.com/manifoldco/promptui/screenbuf\n# github.com/mattn/go-colorable v0.1.13\n## explicit; go 1.15\ngithub.com/mattn/go-colorable\n# github.com/mattn/go-isatty v0.0.20\n## explicit; go 1.15\ngithub.com/mattn/go-isatty\n# github.com/mattn/go-runewidth v0.0.15\n## explicit; go 1.9\ngithub.com/mattn/go-runewidth\n# github.com/minio/highwayhash v1.0.3\n## explicit; go 1.15\ngithub.com/minio/highwayhash\n# github.com/mitchellh/go-homedir v1.1.0\n## explicit\ngithub.com/mitchellh/go-homedir\n# github.com/mitchellh/go-testing-interface v1.14.1\n## explicit; go 1.14\ngithub.com/mitchellh/go-testing-interface\n# github.com/mitchellh/mapstructure v1.5.0\n## explicit; go 1.14\ngithub.com/mitchellh/mapstructure\n# github.com/mtibben/percent v0.2.1\n## explicit; go 1.14\ngithub.com/mtibben/percent\n# github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822\n## explicit\ngithub.com/munnerz/goautoneg\n# github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a\n## explicit; go 1.17\ngithub.com/oasisprotocol/curve25519-voi/curve\ngithub.com/oasisprotocol/curve25519-voi/curve/scalar\ngithub.com/oasisprotocol/curve25519-voi/internal/disalloweq\ngithub.com/oasisprotocol/curve25519-voi/internal/field\ngithub.com/oasisprotocol/curve25519-voi/internal/lattice\ngithub.com/oasisprotocol/curve25519-voi/internal/scalar128\ngithub.com/oasisprotocol/curve25519-voi/internal/strobe\ngithub.com/oasisprotocol/curve25519-voi/internal/subtle\ngithub.com/oasisprotocol/curve25519-voi/internal/toolchain\ngithub.com/oasisprotocol/curve25519-voi/internal/zeroreader\ngithub.com/oasisprotocol/curve25519-voi/primitives/ed25519\ngithub.com/oasisprotocol/curve25519-voi/primitives/ed25519/extra/cache\ngithub.com/oasisprotocol/curve25519-voi/primitives/merlin\ngithub.com/oasisprotocol/curve25519-voi/primitives/sr25519\n# github.com/oklog/run v1.1.0\n## explicit; go 1.13\ngithub.com/oklog/run\n# github.com/olekukonko/tablewriter v0.0.5\n## explicit; go 1.12\ngithub.com/olekukonko/tablewriter\n# github.com/onsi/ginkgo/v2 v2.7.0\n## explicit; go 1.18\ngithub.com/onsi/ginkgo/v2\ngithub.com/onsi/ginkgo/v2/config\ngithub.com/onsi/ginkgo/v2/formatter\ngithub.com/onsi/ginkgo/v2/internal\ngithub.com/onsi/ginkgo/v2/internal/global\ngithub.com/onsi/ginkgo/v2/internal/interrupt_handler\ngithub.com/onsi/ginkgo/v2/internal/parallel_support\ngithub.com/onsi/ginkgo/v2/internal/testingtproxy\ngithub.com/onsi/ginkgo/v2/reporters\ngithub.com/onsi/ginkgo/v2/types\n# github.com/onsi/gomega v1.26.0\n## explicit; go 1.18\ngithub.com/onsi/gomega\ngithub.com/onsi/gomega/format\ngithub.com/onsi/gomega/internal\ngithub.com/onsi/gomega/internal/gutil\ngithub.com/onsi/gomega/matchers\ngithub.com/onsi/gomega/matchers/support/goraph/bipartitegraph\ngithub.com/onsi/gomega/matchers/support/goraph/edge\ngithub.com/onsi/gomega/matchers/support/goraph/node\ngithub.com/onsi/gomega/matchers/support/goraph/util\ngithub.com/onsi/gomega/types\n# github.com/pelletier/go-toml/v2 v2.2.2\n## explicit; go 1.16\ngithub.com/pelletier/go-toml/v2\ngithub.com/pelletier/go-toml/v2/internal/characters\ngithub.com/pelletier/go-toml/v2/internal/danger\ngithub.com/pelletier/go-toml/v2/internal/tracker\ngithub.com/pelletier/go-toml/v2/unstable\n# github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7\n## explicit; go 1.17\ngithub.com/petermattis/goid\n# github.com/pkg/errors v0.9.1\n## explicit\ngithub.com/pkg/errors\n# github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2\n## explicit\ngithub.com/pmezard/go-difflib/difflib\n# github.com/prometheus/client_golang v1.20.5\n## explicit; go 1.20\ngithub.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil\ngithub.com/prometheus/client_golang/internal/github.com/golang/gddo/httputil/header\ngithub.com/prometheus/client_golang/prometheus\ngithub.com/prometheus/client_golang/prometheus/internal\ngithub.com/prometheus/client_golang/prometheus/promhttp\ngithub.com/prometheus/client_golang/prometheus/push\n# github.com/prometheus/client_model v0.6.1\n## explicit; go 1.19\ngithub.com/prometheus/client_model/go\n# github.com/prometheus/common v0.60.1\n## explicit; go 1.21\ngithub.com/prometheus/common/expfmt\ngithub.com/prometheus/common/model\n# github.com/prometheus/procfs v0.15.1\n## explicit; go 1.20\ngithub.com/prometheus/procfs\ngithub.com/prometheus/procfs/internal/fs\ngithub.com/prometheus/procfs/internal/util\n# github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475\n## explicit\ngithub.com/rcrowley/go-metrics\n# github.com/rivo/uniseg v0.2.0\n## explicit; go 1.12\ngithub.com/rivo/uniseg\n# github.com/rogpeppe/go-internal v1.12.0\n## explicit; go 1.20\ngithub.com/rogpeppe/go-internal/fmtsort\n# github.com/rs/cors v1.11.1\n## explicit; go 1.13\ngithub.com/rs/cors\ngithub.com/rs/cors/internal\n# github.com/rs/zerolog v1.33.0\n## explicit; go 1.15\ngithub.com/rs/zerolog\ngithub.com/rs/zerolog/internal/cbor\ngithub.com/rs/zerolog/internal/json\ngithub.com/rs/zerolog/pkgerrors\n# github.com/sagikazarmark/locafero v0.6.0\n## explicit; go 1.20\ngithub.com/sagikazarmark/locafero\n# github.com/sagikazarmark/slog-shim v0.1.0\n## explicit; go 1.20\ngithub.com/sagikazarmark/slog-shim\n# github.com/sasha-s/go-deadlock v0.3.5\n## explicit\ngithub.com/sasha-s/go-deadlock\n# github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible\n## explicit\ngithub.com/shirou/gopsutil/cpu\ngithub.com/shirou/gopsutil/internal/common\n# github.com/sourcegraph/conc v0.3.0\n## explicit; go 1.19\ngithub.com/sourcegraph/conc\ngithub.com/sourcegraph/conc/internal/multierror\ngithub.com/sourcegraph/conc/iter\ngithub.com/sourcegraph/conc/panics\n# github.com/spf13/afero v1.11.0\n## explicit; go 1.19\ngithub.com/spf13/afero\ngithub.com/spf13/afero/internal/common\ngithub.com/spf13/afero/mem\n# github.com/spf13/cast v1.6.0\n## explicit; go 1.19\ngithub.com/spf13/cast\n# github.com/spf13/cobra v1.8.1\n## explicit; go 1.15\ngithub.com/spf13/cobra\n# github.com/spf13/pflag v1.0.5\n## explicit; go 1.12\ngithub.com/spf13/pflag\n# github.com/spf13/viper v1.19.0\n## explicit; go 1.20\ngithub.com/spf13/viper\ngithub.com/spf13/viper/internal/encoding\ngithub.com/spf13/viper/internal/encoding/dotenv\ngithub.com/spf13/viper/internal/encoding/hcl\ngithub.com/spf13/viper/internal/encoding/ini\ngithub.com/spf13/viper/internal/encoding/javaproperties\ngithub.com/spf13/viper/internal/encoding/json\ngithub.com/spf13/viper/internal/encoding/toml\ngithub.com/spf13/viper/internal/encoding/yaml\ngithub.com/spf13/viper/internal/features\n# github.com/status-im/keycard-go v0.2.0\n## explicit; go 1.17\ngithub.com/status-im/keycard-go/derivationpath\ngithub.com/status-im/keycard-go/hexutils\n# github.com/stretchr/objx v0.5.2\n## explicit; go 1.20\ngithub.com/stretchr/objx\n# github.com/stretchr/testify v1.9.0\n## explicit; go 1.17\ngithub.com/stretchr/testify/assert\ngithub.com/stretchr/testify/mock\ngithub.com/stretchr/testify/require\ngithub.com/stretchr/testify/suite\n# github.com/subosito/gotenv v1.6.0\n## explicit; go 1.18\ngithub.com/subosito/gotenv\n# github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7\n## explicit; go 1.14\ngithub.com/syndtr/goleveldb/leveldb\ngithub.com/syndtr/goleveldb/leveldb/cache\ngithub.com/syndtr/goleveldb/leveldb/comparer\ngithub.com/syndtr/goleveldb/leveldb/errors\ngithub.com/syndtr/goleveldb/leveldb/filter\ngithub.com/syndtr/goleveldb/leveldb/iterator\ngithub.com/syndtr/goleveldb/leveldb/journal\ngithub.com/syndtr/goleveldb/leveldb/memdb\ngithub.com/syndtr/goleveldb/leveldb/opt\ngithub.com/syndtr/goleveldb/leveldb/storage\ngithub.com/syndtr/goleveldb/leveldb/table\ngithub.com/syndtr/goleveldb/leveldb/util\n# github.com/tendermint/go-amino v0.16.0\n## explicit; go 1.12\ngithub.com/tendermint/go-amino\n# github.com/tidwall/btree v1.7.0 => github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c\n## explicit; go 1.19\ngithub.com/tidwall/btree\n# github.com/tidwall/gjson v1.14.4\n## explicit; go 1.12\ngithub.com/tidwall/gjson\n# github.com/tidwall/match v1.1.1\n## explicit; go 1.15\ngithub.com/tidwall/match\n# github.com/tidwall/pretty v1.2.0\n## explicit; go 1.16\ngithub.com/tidwall/pretty\n# github.com/tidwall/sjson v1.2.5\n## explicit; go 1.14\ngithub.com/tidwall/sjson\n# github.com/tklauser/go-sysconf v0.3.10\n## explicit; go 1.13\ngithub.com/tklauser/go-sysconf\n# github.com/tklauser/numcpus v0.4.0\n## explicit; go 1.11\ngithub.com/tklauser/numcpus\n# github.com/tyler-smith/go-bip39 v1.1.0\n## explicit; go 1.14\ngithub.com/tyler-smith/go-bip39\ngithub.com/tyler-smith/go-bip39/wordlists\n# github.com/ulikunitz/xz v0.5.11\n## explicit; go 1.12\ngithub.com/ulikunitz/xz\ngithub.com/ulikunitz/xz/internal/hash\ngithub.com/ulikunitz/xz/internal/xlog\ngithub.com/ulikunitz/xz/lzma\n# github.com/zondax/hid v0.9.2\n## explicit\ngithub.com/zondax/hid\n# github.com/zondax/ledger-go v0.14.3\n## explicit; go 1.18\ngithub.com/zondax/ledger-go\n# go.etcd.io/bbolt v1.4.0-alpha.1\n## explicit; go 1.22\ngo.etcd.io/bbolt\ngo.etcd.io/bbolt/errors\ngo.etcd.io/bbolt/internal/common\n# go.opencensus.io v0.24.0\n## explicit; go 1.13\ngo.opencensus.io\ngo.opencensus.io/internal\ngo.opencensus.io/internal/tagencoding\ngo.opencensus.io/metric/metricdata\ngo.opencensus.io/metric/metricproducer\ngo.opencensus.io/plugin/ocgrpc\ngo.opencensus.io/plugin/ochttp\ngo.opencensus.io/plugin/ochttp/propagation/b3\ngo.opencensus.io/resource\ngo.opencensus.io/stats\ngo.opencensus.io/stats/internal\ngo.opencensus.io/stats/view\ngo.opencensus.io/tag\ngo.opencensus.io/trace\ngo.opencensus.io/trace/internal\ngo.opencensus.io/trace/propagation\ngo.opencensus.io/trace/tracestate\n# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0\n## explicit; go 1.20\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc\ngo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal\n# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0\n## explicit; go 1.20\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\ngo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/internal/semconvutil\n# go.opentelemetry.io/otel v1.24.0\n## explicit; go 1.20\ngo.opentelemetry.io/otel\ngo.opentelemetry.io/otel/attribute\ngo.opentelemetry.io/otel/baggage\ngo.opentelemetry.io/otel/codes\ngo.opentelemetry.io/otel/internal\ngo.opentelemetry.io/otel/internal/attribute\ngo.opentelemetry.io/otel/internal/baggage\ngo.opentelemetry.io/otel/internal/global\ngo.opentelemetry.io/otel/propagation\ngo.opentelemetry.io/otel/semconv/v1.17.0\ngo.opentelemetry.io/otel/semconv/v1.20.0\n# go.opentelemetry.io/otel/metric v1.24.0\n## explicit; go 1.20\ngo.opentelemetry.io/otel/metric\ngo.opentelemetry.io/otel/metric/embedded\ngo.opentelemetry.io/otel/metric/noop\n# go.opentelemetry.io/otel/trace v1.24.0\n## explicit; go 1.20\ngo.opentelemetry.io/otel/trace\ngo.opentelemetry.io/otel/trace/embedded\n# go.uber.org/multierr v1.11.0\n## explicit; go 1.19\ngo.uber.org/multierr\n# golang.org/x/crypto v0.28.0\n## explicit; go 1.20\ngolang.org/x/crypto/argon2\ngolang.org/x/crypto/bcrypt\ngolang.org/x/crypto/blake2b\ngolang.org/x/crypto/blake2s\ngolang.org/x/crypto/blowfish\ngolang.org/x/crypto/chacha20\ngolang.org/x/crypto/chacha20poly1305\ngolang.org/x/crypto/cryptobyte\ngolang.org/x/crypto/cryptobyte/asn1\ngolang.org/x/crypto/curve25519\ngolang.org/x/crypto/hkdf\ngolang.org/x/crypto/internal/alias\ngolang.org/x/crypto/internal/poly1305\ngolang.org/x/crypto/nacl/box\ngolang.org/x/crypto/nacl/secretbox\ngolang.org/x/crypto/openpgp/armor\ngolang.org/x/crypto/openpgp/errors\ngolang.org/x/crypto/pbkdf2\ngolang.org/x/crypto/ripemd160\ngolang.org/x/crypto/salsa20/salsa\ngolang.org/x/crypto/scrypt\ngolang.org/x/crypto/sha3\n# golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8\n## explicit; go 1.20\ngolang.org/x/exp/constraints\ngolang.org/x/exp/maps\ngolang.org/x/exp/rand\ngolang.org/x/exp/slices\ngolang.org/x/exp/slog\ngolang.org/x/exp/slog/internal\ngolang.org/x/exp/slog/internal/buffer\n# golang.org/x/net v0.30.0\n## explicit; go 1.18\ngolang.org/x/net/context\ngolang.org/x/net/html\ngolang.org/x/net/html/atom\ngolang.org/x/net/html/charset\ngolang.org/x/net/http/httpguts\ngolang.org/x/net/http2\ngolang.org/x/net/http2/hpack\ngolang.org/x/net/idna\ngolang.org/x/net/internal/timeseries\ngolang.org/x/net/netutil\ngolang.org/x/net/trace\n# golang.org/x/oauth2 v0.23.0\n## explicit; go 1.18\ngolang.org/x/oauth2\ngolang.org/x/oauth2/authhandler\ngolang.org/x/oauth2/google\ngolang.org/x/oauth2/google/externalaccount\ngolang.org/x/oauth2/google/internal/externalaccountauthorizeduser\ngolang.org/x/oauth2/google/internal/impersonate\ngolang.org/x/oauth2/google/internal/stsexchange\ngolang.org/x/oauth2/internal\ngolang.org/x/oauth2/jws\ngolang.org/x/oauth2/jwt\n# golang.org/x/sync v0.8.0\n## explicit; go 1.18\ngolang.org/x/sync/errgroup\ngolang.org/x/sync/semaphore\n# golang.org/x/sys v0.26.0\n## explicit; go 1.18\ngolang.org/x/sys/cpu\ngolang.org/x/sys/execabs\ngolang.org/x/sys/plan9\ngolang.org/x/sys/unix\ngolang.org/x/sys/windows\ngolang.org/x/sys/windows/registry\n# golang.org/x/term v0.25.0\n## explicit; go 1.18\ngolang.org/x/term\n# golang.org/x/text v0.19.0\n## explicit; go 1.18\ngolang.org/x/text/cases\ngolang.org/x/text/collate\ngolang.org/x/text/encoding\ngolang.org/x/text/encoding/charmap\ngolang.org/x/text/encoding/htmlindex\ngolang.org/x/text/encoding/internal\ngolang.org/x/text/encoding/internal/identifier\ngolang.org/x/text/encoding/japanese\ngolang.org/x/text/encoding/korean\ngolang.org/x/text/encoding/simplifiedchinese\ngolang.org/x/text/encoding/traditionalchinese\ngolang.org/x/text/encoding/unicode\ngolang.org/x/text/internal\ngolang.org/x/text/internal/colltab\ngolang.org/x/text/internal/language\ngolang.org/x/text/internal/language/compact\ngolang.org/x/text/internal/tag\ngolang.org/x/text/internal/utf8internal\ngolang.org/x/text/language\ngolang.org/x/text/runes\ngolang.org/x/text/secure/bidirule\ngolang.org/x/text/transform\ngolang.org/x/text/unicode/bidi\ngolang.org/x/text/unicode/norm\ngolang.org/x/text/unicode/rangetable\n# golang.org/x/time v0.5.0\n## explicit; go 1.18\ngolang.org/x/time/rate\n# google.golang.org/api v0.186.0\n## explicit; go 1.20\ngoogle.golang.org/api/googleapi\ngoogle.golang.org/api/googleapi/transport\ngoogle.golang.org/api/iamcredentials/v1\ngoogle.golang.org/api/internal\ngoogle.golang.org/api/internal/cert\ngoogle.golang.org/api/internal/gensupport\ngoogle.golang.org/api/internal/impersonate\ngoogle.golang.org/api/internal/third_party/uritemplates\ngoogle.golang.org/api/iterator\ngoogle.golang.org/api/option\ngoogle.golang.org/api/option/internaloption\ngoogle.golang.org/api/storage/v1\ngoogle.golang.org/api/transport\ngoogle.golang.org/api/transport/grpc\ngoogle.golang.org/api/transport/http\ngoogle.golang.org/api/transport/http/internal/propagation\n# google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094\n## explicit; go 1.20\ngoogle.golang.org/genproto/googleapis/type/date\ngoogle.golang.org/genproto/googleapis/type/expr\ngoogle.golang.org/genproto/protobuf/field_mask\n# google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142\n## explicit; go 1.21\ngoogle.golang.org/genproto/googleapis/api\ngoogle.golang.org/genproto/googleapis/api/annotations\ngoogle.golang.org/genproto/googleapis/api/httpbody\n# google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142\n## explicit; go 1.21\ngoogle.golang.org/genproto/googleapis/rpc/code\ngoogle.golang.org/genproto/googleapis/rpc/errdetails\ngoogle.golang.org/genproto/googleapis/rpc/status\n# google.golang.org/grpc v1.67.1\n## explicit; go 1.21\ngoogle.golang.org/grpc\ngoogle.golang.org/grpc/attributes\ngoogle.golang.org/grpc/backoff\ngoogle.golang.org/grpc/balancer\ngoogle.golang.org/grpc/balancer/base\ngoogle.golang.org/grpc/balancer/grpclb\ngoogle.golang.org/grpc/balancer/grpclb/grpc_lb_v1\ngoogle.golang.org/grpc/balancer/grpclb/state\ngoogle.golang.org/grpc/balancer/pickfirst\ngoogle.golang.org/grpc/balancer/roundrobin\ngoogle.golang.org/grpc/binarylog/grpc_binarylog_v1\ngoogle.golang.org/grpc/channelz\ngoogle.golang.org/grpc/codes\ngoogle.golang.org/grpc/connectivity\ngoogle.golang.org/grpc/credentials\ngoogle.golang.org/grpc/credentials/alts\ngoogle.golang.org/grpc/credentials/alts/internal\ngoogle.golang.org/grpc/credentials/alts/internal/authinfo\ngoogle.golang.org/grpc/credentials/alts/internal/conn\ngoogle.golang.org/grpc/credentials/alts/internal/handshaker\ngoogle.golang.org/grpc/credentials/alts/internal/handshaker/service\ngoogle.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp\ngoogle.golang.org/grpc/credentials/google\ngoogle.golang.org/grpc/credentials/insecure\ngoogle.golang.org/grpc/credentials/oauth\ngoogle.golang.org/grpc/encoding\ngoogle.golang.org/grpc/encoding/proto\ngoogle.golang.org/grpc/experimental/stats\ngoogle.golang.org/grpc/grpclog\ngoogle.golang.org/grpc/grpclog/internal\ngoogle.golang.org/grpc/health\ngoogle.golang.org/grpc/health/grpc_health_v1\ngoogle.golang.org/grpc/internal\ngoogle.golang.org/grpc/internal/backoff\ngoogle.golang.org/grpc/internal/balancer/gracefulswitch\ngoogle.golang.org/grpc/internal/balancerload\ngoogle.golang.org/grpc/internal/binarylog\ngoogle.golang.org/grpc/internal/buffer\ngoogle.golang.org/grpc/internal/channelz\ngoogle.golang.org/grpc/internal/credentials\ngoogle.golang.org/grpc/internal/envconfig\ngoogle.golang.org/grpc/internal/googlecloud\ngoogle.golang.org/grpc/internal/grpclog\ngoogle.golang.org/grpc/internal/grpcsync\ngoogle.golang.org/grpc/internal/grpcutil\ngoogle.golang.org/grpc/internal/idle\ngoogle.golang.org/grpc/internal/metadata\ngoogle.golang.org/grpc/internal/pretty\ngoogle.golang.org/grpc/internal/resolver\ngoogle.golang.org/grpc/internal/resolver/dns\ngoogle.golang.org/grpc/internal/resolver/dns/internal\ngoogle.golang.org/grpc/internal/resolver/passthrough\ngoogle.golang.org/grpc/internal/resolver/unix\ngoogle.golang.org/grpc/internal/serviceconfig\ngoogle.golang.org/grpc/internal/stats\ngoogle.golang.org/grpc/internal/status\ngoogle.golang.org/grpc/internal/syscall\ngoogle.golang.org/grpc/internal/transport\ngoogle.golang.org/grpc/internal/transport/networktype\ngoogle.golang.org/grpc/internal/xds\ngoogle.golang.org/grpc/keepalive\ngoogle.golang.org/grpc/mem\ngoogle.golang.org/grpc/metadata\ngoogle.golang.org/grpc/peer\ngoogle.golang.org/grpc/reflection\ngoogle.golang.org/grpc/reflection/grpc_reflection_v1\ngoogle.golang.org/grpc/reflection/grpc_reflection_v1alpha\ngoogle.golang.org/grpc/reflection/internal\ngoogle.golang.org/grpc/resolver\ngoogle.golang.org/grpc/resolver/dns\ngoogle.golang.org/grpc/resolver/manual\ngoogle.golang.org/grpc/serviceconfig\ngoogle.golang.org/grpc/stats\ngoogle.golang.org/grpc/status\ngoogle.golang.org/grpc/tap\n# google.golang.org/protobuf v1.35.1\n## explicit; go 1.21\ngoogle.golang.org/protobuf/encoding/protodelim\ngoogle.golang.org/protobuf/encoding/protojson\ngoogle.golang.org/protobuf/encoding/prototext\ngoogle.golang.org/protobuf/encoding/protowire\ngoogle.golang.org/protobuf/internal/descfmt\ngoogle.golang.org/protobuf/internal/descopts\ngoogle.golang.org/protobuf/internal/detrand\ngoogle.golang.org/protobuf/internal/editiondefaults\ngoogle.golang.org/protobuf/internal/editionssupport\ngoogle.golang.org/protobuf/internal/encoding/defval\ngoogle.golang.org/protobuf/internal/encoding/json\ngoogle.golang.org/protobuf/internal/encoding/messageset\ngoogle.golang.org/protobuf/internal/encoding/tag\ngoogle.golang.org/protobuf/internal/encoding/text\ngoogle.golang.org/protobuf/internal/errors\ngoogle.golang.org/protobuf/internal/filedesc\ngoogle.golang.org/protobuf/internal/filetype\ngoogle.golang.org/protobuf/internal/flags\ngoogle.golang.org/protobuf/internal/genid\ngoogle.golang.org/protobuf/internal/impl\ngoogle.golang.org/protobuf/internal/msgfmt\ngoogle.golang.org/protobuf/internal/order\ngoogle.golang.org/protobuf/internal/pragma\ngoogle.golang.org/protobuf/internal/set\ngoogle.golang.org/protobuf/internal/strs\ngoogle.golang.org/protobuf/internal/version\ngoogle.golang.org/protobuf/proto\ngoogle.golang.org/protobuf/protoadapt\ngoogle.golang.org/protobuf/reflect/protodesc\ngoogle.golang.org/protobuf/reflect/protoreflect\ngoogle.golang.org/protobuf/reflect/protoregistry\ngoogle.golang.org/protobuf/runtime/protoiface\ngoogle.golang.org/protobuf/runtime/protoimpl\ngoogle.golang.org/protobuf/testing/protocmp\ngoogle.golang.org/protobuf/types/descriptorpb\ngoogle.golang.org/protobuf/types/dynamicpb\ngoogle.golang.org/protobuf/types/gofeaturespb\ngoogle.golang.org/protobuf/types/known/anypb\ngoogle.golang.org/protobuf/types/known/durationpb\ngoogle.golang.org/protobuf/types/known/emptypb\ngoogle.golang.org/protobuf/types/known/fieldmaskpb\ngoogle.golang.org/protobuf/types/known/timestamppb\ngoogle.golang.org/protobuf/types/known/wrapperspb\n# gopkg.in/ini.v1 v1.67.0\n## explicit\ngopkg.in/ini.v1\n# gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce\n## explicit\ngopkg.in/natefinch/npipe.v2\n# gopkg.in/yaml.v3 v3.0.1\n## explicit\ngopkg.in/yaml.v3\n# gotest.tools/v3 v3.5.1\n## explicit; go 1.17\ngotest.tools/v3/assert\ngotest.tools/v3/assert/cmp\ngotest.tools/v3/internal/assert\ngotest.tools/v3/internal/difflib\ngotest.tools/v3/internal/format\ngotest.tools/v3/internal/source\n# nhooyr.io/websocket v1.8.11\n## explicit; go 1.19\nnhooyr.io/websocket\nnhooyr.io/websocket/internal/bpool\nnhooyr.io/websocket/internal/errd\nnhooyr.io/websocket/internal/util\nnhooyr.io/websocket/internal/wsjs\nnhooyr.io/websocket/internal/xsync\n# pgregory.net/rapid v1.1.0\n## explicit; go 1.18\npgregory.net/rapid\n# sigs.k8s.io/yaml v1.4.0\n## explicit; go 1.12\nsigs.k8s.io/yaml\nsigs.k8s.io/yaml/goyaml.v2\n# cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241205052910-142c0afa4948\n# cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241205052910-142c0afa4948\n# github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.43.0-beta1.0.20241205052910-142c0afa4948\n# github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0\n# github.com/cometbft/cometbft => github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890\n# github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183\n# github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0\n# github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7\n# github.com/tidwall/btree => github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c\n" +schema = 3 [mod] [mod."cloud.google.com/go"] @@ -45,8 +44,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v1.3.0" hash = "sha256-EEFK43Cr0g0ndhQhkIKher0FqV3mvkmE9z0sP7uVSHg=" [mod."cosmossdk.io/store"] - version = "v0.0.0-20241205052910-142c0afa4948" - hash = "sha256-0c5h9pwaR3ZlmA3pnme39K8zn9WyrI1C1GRRDVH39Ug=" + version = "v0.0.0-20250116033154-05863f6ce4b8" + hash = "sha256-vXJBzc0ZxdjYYn2V5jfzOumbY4VUnMfYtMYfYzzD56M=" replaced = "github.com/crypto-org-chain/cosmos-sdk/store" [mod."cosmossdk.io/tools/confix"] version = "v0.1.2" @@ -58,8 +57,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v0.1.1" hash = "sha256-aps3LfnQau1TYeccGwtqHQvy1Rudc9+O+iVAwXBKyDw=" [mod."cosmossdk.io/x/tx"] - version = "v0.0.0-20241205052910-142c0afa4948" - hash = "sha256-EEM93+QilFlUOTSR0RwbZYyyAnl70PXtJq8ZEGjxL3g=" + version = "v0.0.0-20250116033154-05863f6ce4b8" + hash = "sha256-3A5GTl5NRD4zH3PsSd450C6HvU2zi4I7b4Zqu+L9YAo=" replaced = "github.com/crypto-org-chain/cosmos-sdk/x/tx" [mod."cosmossdk.io/x/upgrade"] version = "v0.1.4" @@ -169,8 +168,8 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v1.0.0-beta.5" hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg=" [mod."github.com/cosmos/cosmos-sdk"] - version = "v0.43.0-beta1.0.20241205052910-142c0afa4948" - hash = "sha256-TQ/mouMHRgxKtXizYUYA8BmFdRnDiPdLKzp7v7HcoZs=" + version = "v0.50.6-0.20250116033154-05863f6ce4b8" + hash = "sha256-FdqMirVPBm0lbUaBrbIxnlIaD9mYmZeW8ooJRUD/oYE=" replaced = "github.com/crypto-org-chain/cosmos-sdk" [mod."github.com/cosmos/go-bip39"] version = "v1.0.0" @@ -209,8 +208,9 @@ vendorModulesTxt = "# cloud.google.com/go v0.115.0\n## explicit; go 1.20\ncloud. version = "v0.0.24" hash = "sha256-4vUukHONOjNn0qfQr4esK6TWfPWsIp+rbdz65og84lw=" [mod."github.com/crypto-org-chain/go-block-stm"] - version = "v0.0.0-20240919080136-6c49aef68716" - hash = "sha256-krCdJz96mpIgmpmRI64W2+W1ycNg+EdLaqeVtAuaW4A=" + version = "v0.0.0-20241212103207-0413e464b7f2" + hash = "sha256-bl5jVL5oouu9/kbuJv9ua4w4hRhchnWQ8ogIEnW9NLs=" + replaced = "github.com/mmsqe/go-block-stm" [mod."github.com/danieljoos/wincred"] version = "v1.2.1" hash = "sha256-hmJediHYMONMEvrRnMs88OXEp4SDt1Pmi8t8eOEk83o=" diff --git a/nix/build_overlay.nix b/nix/build_overlay.nix index e20ffd098f..94ea0019b1 100644 --- a/nix/build_overlay.nix +++ b/nix/build_overlay.nix @@ -1,10 +1,21 @@ # some basic overlays necessary for the build -final: super: { +final: super: +let + replaceLast = + newVal: l: + let + len = builtins.length l; + in + if len == 0 then [ ] else final.lib.lists.take (len - 1) l ++ [ newVal ]; +in +{ go_1_23 = super.go_1_23.overrideAttrs (old: rec { version = "1.23.4"; src = final.fetchurl { url = "https://go.dev/dl/go${version}.src.tar.gz"; hash = "sha256-rTRaxCHpCBQpOpaZzKGd1SOCUcP2h5gLvK4oSVsmNTE="; }; + # https://github.com/NixOS/nixpkgs/pull/372367 + patches = replaceLast ./go_no_vendor_checks-1.23.patch old.patches; }); } diff --git a/nix/go_no_vendor_checks-1.23.patch b/nix/go_no_vendor_checks-1.23.patch new file mode 100644 index 0000000000..eaffb1bef6 --- /dev/null +++ b/nix/go_no_vendor_checks-1.23.patch @@ -0,0 +1,26 @@ +diff --git a/src/cmd/go/internal/modload/import.go b/src/cmd/go/internal/modload/import.go +index a3105b6b6d..0e10154a70 100644 +--- a/src/cmd/go/internal/modload/import.go ++++ b/src/cmd/go/internal/modload/import.go +@@ -345,7 +345,7 @@ func importFromModules(ctx context.Context, path string, rs *Requirements, mg *M + // vendor/modules.txt does not exist or the user manually added directories to the vendor directory. + // Go 1.23 and later require vendored packages to be present in modules.txt to be imported. + _, ok := vendorPkgModule[path] +- if ok || (gover.Compare(MainModules.GoVersion(), gover.ExplicitModulesTxtImportVersion) < 0) { ++ if ok || (gover.Compare(MainModules.GoVersion(), gover.ExplicitModulesTxtImportVersion) < 0) || os.Getenv("GO_NO_VENDOR_CHECKS") == "1" { + mods = append(mods, vendorPkgModule[path]) + dirs = append(dirs, dir) + roots = append(roots, vendorDir) +diff --git a/src/cmd/go/internal/modload/vendor.go b/src/cmd/go/internal/modload/vendor.go +index b2cb44100e..05bf3829d5 100644 +--- a/src/cmd/go/internal/modload/vendor.go ++++ b/src/cmd/go/internal/modload/vendor.go +@@ -159,7 +159,7 @@ func checkVendorConsistency(indexes []*modFileIndex, modFiles []*modfile.File, m + panic(fmt.Errorf("not in workspace mode but number of indexes is %v, not 1", len(indexes))) + } + index := indexes[0] +- if gover.Compare(index.goVersion, "1.14") < 0 { ++ if gover.Compare(index.goVersion, "1.14") < 0 || (os.Getenv("GO_NO_VENDOR_CHECKS") == "1" && len(vendorMeta) == 0) { + // Go versions before 1.14 did not include enough information in + // vendor/modules.txt to check for consistency. + // If we know that we're on an earlier version, relax the consistency check. diff --git a/nix/sources.json b/nix/sources.json index 754c9fc242..973697b7a8 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -12,15 +12,15 @@ "url_template": "https://github.com///archive/.tar.gz" }, "gomod2nix": { - "branch": "fix/go_mod_vendor", + "branch": "master", "description": "Convert applications using Go modules to Nix expressions", "homepage": null, - "owner": "obreitwi", + "owner": "nix-community", "repo": "gomod2nix", - "rev": "983228366edc1bed1be6e6f7a45e285b4707b9ba", - "sha256": "1pz4qymn6755p96ai00birvj2y5wrkv6wkyi40y8vpqzs2s60pnj", + "rev": "514283ec89c39ad0079ff2f3b1437404e4cba608", + "sha256": "tPsqU00FhgdFr0JiQUiBMgPVbl1jbPCY5gbFiJycL3I=", "type": "tarball", - "url": "https://github.com/obreitwi/gomod2nix/archive/983228366edc1bed1be6e6f7a45e285b4707b9ba.tar.gz", + "url": "https://github.com/nix-community/gomod2nix/archive/514283ec89c39ad0079ff2f3b1437404e4cba608.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "niv": { @@ -36,15 +36,15 @@ "url_template": "https://github.com///archive/.tar.gz" }, "nixpkgs": { - "branch": "release-25.05", + "branch": "release-24.05", "description": "Nix Packages collection", "homepage": "", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c46290747b2aaf090f48a478270feb858837bf11", - "sha256": "0b96wqvk3hs98dhfrmdhqmx9ibac4kjpanpd1pig19jaglanqnxr", + "rev": "50286248f2d7283682bdd47ba14af33a9233b88b", + "sha256": "19sqfs6pamknhlg3mqpqs3wj0wj1ynj5icfmhqmjjvq08byfc2hl", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/c46290747b2aaf090f48a478270feb858837bf11.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/50286248f2d7283682bdd47ba14af33a9233b88b.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "poetry2nix": { From b602a262af79ae9cad244e8a73f0a80d701d15ee Mon Sep 17 00:00:00 2001 From: yihuang Date: Fri, 17 Jan 2025 17:36:03 +0800 Subject: [PATCH 054/210] Problem: dependency contains personal fork (#571) --- go.mod | 5 ++--- go.sum | 8 ++++---- gomod2nix.toml | 7 +++---- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index d1873f11a2..269fa37153 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/cosmos/ibc-go/modules/capability v1.0.1 github.com/cosmos/ibc-go/v9 v9.0.2 github.com/cosmos/rosetta v0.50.3-1 - github.com/crypto-org-chain/go-block-stm v0.0.0-20240919080136-6c49aef68716 + github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/ethereum/go-ethereum v1.10.26 github.com/gogo/protobuf v1.3.2 @@ -250,8 +250,7 @@ replace ( // use cosmos keyring github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 // v0.38.x - github.com/cometbft/cometbft => github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890 - github.com/crypto-org-chain/go-block-stm => github.com/mmsqe/go-block-stm v0.0.0-20241212103207-0413e464b7f2 + github.com/cometbft/cometbft => github.com/crypto-org-chain/cometbft v0.0.0-20241106091515-ce418f845d9a // release/v1.11.x github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183 // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. diff --git a/go.sum b/go.sum index ebcc858d8b..c595173fc1 100644 --- a/go.sum +++ b/go.sum @@ -408,12 +408,16 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+FBB8cMkDE2j2VBVsbY+HCkPIu0YsJ/9bbGeQ= github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= +github.com/crypto-org-chain/cometbft v0.0.0-20241106091515-ce418f845d9a h1:0EN1TkzHTAxpgpGaZJY3G7L4jf4+sYnI7FOmBFLCg4U= +github.com/crypto-org-chain/cometbft v0.0.0-20241106091515-ce418f845d9a/go.mod h1:khbgmtxbgwJfMqDmnGY4rl2sQpTdzpPb1f9nqnfpy1o= github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20250116033154-05863f6ce4b8 h1:KYwCiEEuNZ8j4zpIRdMwr4AHT58nh3KKfJ+UKLZSw7E= github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20250116033154-05863f6ce4b8/go.mod h1:JwwsMeZldLN20b72mmbWPY0EV9rs+v/12hRu1JFttvY= github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20250116033154-05863f6ce4b8 h1:7kbrHLCo505EBH0um5be15R8xdc9bw7WIriZDUQJ1Ro= github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20250116033154-05863f6ce4b8/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20250116033154-05863f6ce4b8 h1:GwNyoWViRCZa8TLITeRPTxMx1MsGRShszKThxqRngng= github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20250116033154-05863f6ce4b8/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 h1:6KPEi8dWkDSBddQb4NAvEXmNnTXymF3yVeTaT4Hz1iU= +github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183 h1:JDBTqDkd9X9oBF2C4FKOpn0GVDQDzVkHzeS8eDWNl6A= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183/go.mod h1:5DnkptqPQr+Mo3sy/2V3OQu+K94x1PVzFGZJZbDF8mI= github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs= @@ -871,8 +875,6 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= -github.com/mmsqe/go-block-stm v0.0.0-20241212103207-0413e464b7f2 h1:WhQZ9wFad9LXVHzWxH+nr8kttsHtw4gK+QR+wvbb8Ho= -github.com/mmsqe/go-block-stm v0.0.0-20241212103207-0413e464b7f2/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -1112,8 +1114,6 @@ github.com/urfave/cli/v2 v2.17.2-0.20221006022127-8f469abc00aa/go.mod h1:1CNUng3 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890 h1:JQCpo2LIqYcPCS7QPfxeDheCUfN/NGTB6aUAmlA/fi0= -github.com/yihuang/cometbft v0.38.0-alpha.1.0.20241106081635-f702b8b3f890/go.mod h1:khbgmtxbgwJfMqDmnGY4rl2sQpTdzpPb1f9nqnfpy1o= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/gomod2nix.toml b/gomod2nix.toml index 2bab174af1..4f6dcbda30 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -152,9 +152,9 @@ schema = 3 version = "v1.0.0" hash = "sha256-z/0E0NiEGo7zxM7d94ImgUf8P0/KG6hbP9T4Vuym4p0=" [mod."github.com/cometbft/cometbft"] - version = "v0.38.0-alpha.1.0.20241106081635-f702b8b3f890" + version = "v0.0.0-20241106091515-ce418f845d9a" hash = "sha256-Eu9HQ7EfyU7/+2DL/aDVHlOwJhtdX2pPHDG/mGI7KyI=" - replaced = "github.com/yihuang/cometbft" + replaced = "github.com/crypto-org-chain/cometbft" [mod."github.com/cometbft/cometbft-db"] version = "v0.15.0" hash = "sha256-hNtUoPsgrsc9MhU7AONKMOB6k4bEbg757BSXVp7G5EA=" @@ -208,9 +208,8 @@ schema = 3 version = "v0.0.24" hash = "sha256-4vUukHONOjNn0qfQr4esK6TWfPWsIp+rbdz65og84lw=" [mod."github.com/crypto-org-chain/go-block-stm"] - version = "v0.0.0-20241212103207-0413e464b7f2" + version = "v0.0.0-20241213061541-7afe924fb4a6" hash = "sha256-bl5jVL5oouu9/kbuJv9ua4w4hRhchnWQ8ogIEnW9NLs=" - replaced = "github.com/mmsqe/go-block-stm" [mod."github.com/danieljoos/wincred"] version = "v1.2.1" hash = "sha256-hmJediHYMONMEvrRnMs88OXEp4SDt1Pmi8t8eOEk83o=" From 76bf49e67e7f3b5b0ecbb90350ddd0a0ce28fc96 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 12 Mar 2025 15:21:45 +0800 Subject: [PATCH 055/210] Problem: incorrect spendable balance when debug trace tx (#574) * Problem: incorrect spendable balance when debug trace tx * fix * Update tests/integration_tests/test_tracers.py Co-authored-by: mmsqe Signed-off-by: yihuang --------- Signed-off-by: yihuang Co-authored-by: yihuang --- .github/workflows/test.yml | 2 +- .golangci.yml | 2 - CHANGELOG.md | 1 + .../hardhat/contracts/SelfDestruct.sol | 19 +++++++ tests/integration_tests/test_tracers.py | 52 +++++++++++++++++++ tests/integration_tests/utils.py | 1 + x/evm/keeper/state_transition.go | 26 ++++++---- 7 files changed, 90 insertions(+), 13 deletions(-) create mode 100644 tests/integration_tests/hardhat/contracts/SelfDestruct.sol diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 262e87b7b1..998884584d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -120,7 +120,7 @@ jobs: - name: 'Tar debug files' if: failure() run: tar cfz debug_files.tar.gz -C /tmp/pytest-of-runner . - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 if: failure() with: name: debug-files diff --git a/.golangci.yml b/.golangci.yml index d1aa62dfe1..b0bdbd481c 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -21,7 +21,6 @@ linters: - misspell - nakedret - prealloc - - exportloopref - staticcheck - stylecheck - typecheck @@ -30,7 +29,6 @@ linters: - unused - nolintlint - asciicheck - - exportloopref - gofumpt - gomodguard - whitespace diff --git a/CHANGELOG.md b/CHANGELOG.md index 5acd5f4e31..f603a93e1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (ante) [#560](https://github.com/crypto-org-chain/ethermint/pull/560) Check gasWanted only in checkTx mode. * (rpc) [#562](https://github.com/crypto-org-chain/ethermint/pull/562) Fix nil pointer panic with legacy transaction format. * (evm) [#567](https://github.com/crypto-org-chain/ethermint/pull/567) Fix nonce management in batch transaction. +* (rpc) [#574](https://github.com/crypto-org-chain/ethermint/pull/574) Fix incorrect spendable balance when debug trace tx. ### Improvements diff --git a/tests/integration_tests/hardhat/contracts/SelfDestruct.sol b/tests/integration_tests/hardhat/contracts/SelfDestruct.sol new file mode 100644 index 0000000000..b14f72c560 --- /dev/null +++ b/tests/integration_tests/hardhat/contracts/SelfDestruct.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +contract SelfDestruct { + address payable recipient = payable(0x0F0cb39319129BA867227e5Aae1abe9e7dd5f861); + address payable owner; + + constructor() { + owner = payable(msg.sender); + } + + receive() external payable {} + + function execute() public payable { + require(msg.sender == owner, string(abi.encodePacked("Unauthorized caller: ", msg.sender, " Owner: ", owner))); + payable(recipient).transfer(msg.value); + selfdestruct(owner); + } +} diff --git a/tests/integration_tests/test_tracers.py b/tests/integration_tests/test_tracers.py index 968bb7c196..f8f4043e6d 100644 --- a/tests/integration_tests/test_tracers.py +++ b/tests/integration_tests/test_tracers.py @@ -2,6 +2,7 @@ import json from concurrent.futures import ThreadPoolExecutor, as_completed +import pytest from web3 import Web3 from .expected_constants import ( @@ -24,6 +25,7 @@ send_txs, sign_transaction, w3_wait_for_new_blocks, + wait_for_fn, ) @@ -191,6 +193,56 @@ def test_trace_tx_reverse_transfer(ethermint): print(tx_res) +@pytest.mark.flaky(max_runs=10) +def test_destruct(ethermint): + method = "debug_traceTransaction" + tracer = {"tracer": "callTracer"} + receiver = "0x0F0cb39319129BA867227e5Aae1abe9e7dd5f861" + acc = derive_new_account(11) # ethm13c2n7geavjfsqcan290mq74kajjlxehyzhly4p + w3 = ethermint.w3 + fund_acc(w3, acc, fund=3077735635376769427) + sender = acc.address + raw_transactions = [] + contracts = [] + total = 3 + for _ in range(total): + contract, _ = deploy_contract(w3, CONTRACTS["SelfDestruct"], key=acc.key) + contracts.append(contract) + + nonce = w3.eth.get_transaction_count(sender) + + for i in range(total): + tx = ( + contracts[i] + .functions.execute() + .build_transaction( + { + "from": sender, + "nonce": nonce, + "gas": 167115, + "gasPrice": 5050000000000, + "value": 353434350000000000, + } + ) + ) + raw_transactions.append(sign_transaction(w3, tx, acc.key).rawTransaction) + nonce += 1 + sended_hash_set = send_raw_transactions(w3, raw_transactions) + + def wait_balance(): + return w3.eth.get_balance(receiver) > 0 + + wait_for_fn("wait_balance", wait_balance) + for h in sended_hash_set: + tx_hash = h.hex() + res = w3.provider.make_request( + method, + [tx_hash, tracer], + ) + print(tx_hash, res) + assert "insufficient funds" not in res, res + + def test_tracecall_insufficient_funds(ethermint, geth): method = "debug_traceCall" acc = derive_random_account() diff --git a/tests/integration_tests/utils.py b/tests/integration_tests/utils.py index 1893cdc374..9e2f8f55c5 100644 --- a/tests/integration_tests/utils.py +++ b/tests/integration_tests/utils.py @@ -45,6 +45,7 @@ "Random": "Random.sol", "TestBlockTxProperties": "TestBlockTxProperties.sol", "FeeCollector": "FeeCollector.sol", + "SelfDestruct": "SelfDestruct.sol", } diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index c561f6ba7b..ffddc3b5b5 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -326,6 +326,11 @@ func (k *Keeper) ApplyMessageWithConfig( leftoverGas := msg.GasLimit sender := vm.AccountRef(msg.From) tracer := cfg.GetTracer() + debugFn := func() { + if tracer != nil && cfg.DebugTrace { + stateDB.AddBalance(sender.Address(), new(big.Int).Mul(msg.GasPrice, new(big.Int).SetUint64(leftoverGas))) + } + } if tracer != nil { if cfg.DebugTrace { amount := new(big.Int).Mul(msg.GasPrice, new(big.Int).SetUint64(msg.GasLimit)) @@ -337,9 +342,7 @@ func (k *Keeper) ApplyMessageWithConfig( } tracer.CaptureTxStart(leftoverGas) defer func() { - if cfg.DebugTrace { - stateDB.AddBalance(sender.Address(), new(big.Int).Mul(msg.GasPrice, new(big.Int).SetUint64(leftoverGas))) - } + debugFn() tracer.CaptureTxEnd(leftoverGas) }() } @@ -404,13 +407,6 @@ func (k *Keeper) ApplyMessageWithConfig( vmError = vmErr.Error() } - // The dirty states in `StateDB` is either committed or discarded after return - if commit { - if err := stateDB.Commit(); err != nil { - return nil, errorsmod.Wrap(err, "failed to commit stateDB") - } - } - // calculate a minimum amount of gas to be charged to sender if GasLimit // is considerably higher than GasUsed to stay more aligned with Tendermint gas mechanics // for more info https://github.com/evmos/ethermint/issues/1085 @@ -438,6 +434,16 @@ func (k *Keeper) ApplyMessageWithConfig( // reset leftoverGas, to be used by the tracer leftoverGas = msg.GasLimit - gasUsed + debugFn() + debugFn = func() {} + + // The dirty states in `StateDB` is either committed or discarded after return + if commit { + if err := stateDB.Commit(); err != nil { + return nil, errorsmod.Wrap(err, "failed to commit stateDB") + } + } + return &types.MsgEthereumTxResponse{ GasUsed: gasUsed, VmError: vmError, From 03a1f12a74c66cd3b25ca50a85f801876aff283a Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 19 Mar 2025 14:05:18 +0800 Subject: [PATCH 056/210] Problem: path parameter in debug_goTrace is not safe when serve public rpc (#576) * Problem: no specific dir for the log from debug_goTrace * lint * allow any * revert * cleanup * fix format * fix config * Apply suggestions from code review --------- Co-authored-by: HuangYi --- CHANGELOG.md | 2 ++ rpc/namespaces/ethereum/debug/trace.go | 38 ++++++++++++++++++++++++-- server/config/config.go | 5 ++++ server/config/toml.go | 4 +++ server/flags/flags.go | 1 + server/start.go | 1 + 6 files changed, 49 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f603a93e1c..fc20859d98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -110,6 +110,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [#555](https://github.com/crypto-org-chain/ethermint/pull/555) Update cometbft to 0.38.14 and rocksdb to 9.7.4. * [#565](https://github.com/crypto-org-chain/ethermint/pull/565) Add back CacheWrapWithTrace api. * [#563](https://github.com/crypto-org-chain/ethermint/pull/563) Bump ibc-go to v9.0.2. +* [#576](https://github.com/crypto-org-chain/ethermint/pull/576) Add config `json-rpc.restrict-user-input` to restrict + user input when serving json-rpc in public. ## v0.21.x-cronos diff --git a/rpc/namespaces/ethereum/debug/trace.go b/rpc/namespaces/ethereum/debug/trace.go index 6abbd8306b..c481597d33 100644 --- a/rpc/namespaces/ethereum/debug/trace.go +++ b/rpc/namespaces/ethereum/debug/trace.go @@ -22,9 +22,13 @@ package debug import ( "errors" "os" + "path/filepath" "runtime/trace" + "strings" stderrors "github.com/pkg/errors" + + srvflags "github.com/evmos/ethermint/server/flags" ) // StartGoTrace turns on tracing, writing to the given file. @@ -33,16 +37,46 @@ func (a *API) StartGoTrace(file string) error { a.handler.mu.Lock() defer a.handler.mu.Unlock() + restrictUserInput := a.ctx.Viper.GetBool(srvflags.JSONRPCRestrictUserInput) + if a.handler.traceFile != nil { a.logger.Debug("trace already in progress") return errors.New("trace already in progress") } - fp, err := ExpandHome(file) + var err error + file, err = ExpandHome(file) if err != nil { a.logger.Debug("failed to get filepath for the CPU profile file", "error", err.Error()) return err } - f, err := os.Create(fp) + + file, err = filepath.Abs(file) + if err != nil { + a.logger.Debug("failed to get absolute path for the CPU profile file", "error", err.Error()) + return err + } + + if restrictUserInput { + // Ensure that the trace file is in the data directory. + absDataDir, err := filepath.Abs(a.ctx.Config.RootDir) + if err != nil { + a.logger.Debug("failed to get absolute path for the data directory", "error", err.Error()) + return err + } + + if !strings.HasPrefix(file, absDataDir) { + a.logger.Debug("trace file must be in the data directory") + return errors.New("trace file must be in the data directory") + } + } + + var f *os.File + if restrictUserInput { + // Create the file with O_EXCL to ensure that the file does not exist. + f, err = os.OpenFile(file, os.O_RDWR|os.O_CREATE|os.O_EXCL, 0o666) + } else { + f, err = os.Create(file) + } if err != nil { a.logger.Debug("failed to create go trace file", "error", err.Error()) return err diff --git a/server/config/config.go b/server/config/config.go index 7fb16d37a5..1b5e65c1b0 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -182,6 +182,9 @@ type JSONRPCConfig struct { FixRevertGasRefundHeight int64 `mapstructure:"fix-revert-gas-refund-height"` // ReturnDataLimit defines maximum number of bytes returned from `eth_call` or similar invocations ReturnDataLimit int64 `mapstructure:"return-data-limit"` + // RestrictUserInput will restrict some user input to the JSON-RPC debug apis, + // must be set to true if serving debug namespace to the public. + RestrictUserInput bool `mapstructure:"restrict-user-input"` } // TLSConfig defines the certificate and matching private key for the server. @@ -300,6 +303,7 @@ func DefaultJSONRPCConfig() *JSONRPCConfig { MetricsAddress: DefaultJSONRPCMetricsAddress, FixRevertGasRefundHeight: DefaultFixRevertGasRefundHeight, ReturnDataLimit: DefaultReturnDataLimit, + RestrictUserInput: false, } } @@ -435,6 +439,7 @@ func GetConfig(v *viper.Viper) (Config, error) { MetricsAddress: v.GetString("json-rpc.metrics-address"), FixRevertGasRefundHeight: v.GetInt64("json-rpc.fix-revert-gas-refund-height"), ReturnDataLimit: v.GetInt64("json-rpc.return-data-limit"), + RestrictUserInput: v.GetBool("json-rpc.restrict-user-input"), }, TLS: TLSConfig{ CertificatePath: v.GetString("tls.certificate-path"), diff --git a/server/config/toml.go b/server/config/toml.go index 31b07d50a1..028f9796a6 100644 --- a/server/config/toml.go +++ b/server/config/toml.go @@ -108,6 +108,10 @@ fix-revert-gas-refund-height = {{ .JSONRPC.FixRevertGasRefundHeight }} # Maximum number of bytes returned from eth_call or similar invocations. return-data-limit = {{ .JSONRPC.ReturnDataLimit }} +# RestrictUserInput will restrict some user input to the JSON-RPC debug apis, +# must be set to true if serving debug namespace to the public. +restrict-user-input = {{ .JSONRPC.RestrictUserInput }} + ############################################################################### ### TLS Configuration ### ############################################################################### diff --git a/server/flags/flags.go b/server/flags/flags.go index c795013c15..837b2df8e7 100644 --- a/server/flags/flags.go +++ b/server/flags/flags.go @@ -72,6 +72,7 @@ const ( JSONRPCEnableMetrics = "metrics" JSONRPCFixRevertGasRefundHeight = "json-rpc.fix-revert-gas-refund-height" JSONRPCReturnDataLimit = "json-rpc.return-data-limit" + JSONRPCRestrictUserInput = "json-rpc.restrict-user-input" ) // EVM flags diff --git a/server/start.go b/server/start.go index 9a0d934e9e..87a36c4193 100644 --- a/server/start.go +++ b/server/start.go @@ -217,6 +217,7 @@ which accepts a path for the resulting pprof file. cmd.Flags().Int(srvflags.JSONRPCMaxOpenConnections, config.DefaultMaxOpenConnections, "Sets the maximum number of simultaneous connections for the server listener") //nolint:lll cmd.Flags().Bool(srvflags.JSONRPCEnableIndexer, false, "Enable the custom tx indexer for json-rpc") cmd.Flags().Bool(srvflags.JSONRPCAllowIndexerGap, true, "Allow block gap for the custom tx indexer for json-rpc") + cmd.Flags().Bool(srvflags.JSONRPCRestrictUserInput, false, "Restrict some user input to the JSON-RPC debug apis, must be set to true if serving debug namespace to the public") //nolint:lll cmd.Flags().Bool(srvflags.JSONRPCEnableMetrics, false, "Define if EVM rpc metrics server should be enabled") cmd.Flags().String(srvflags.EVMTracer, config.DefaultEVMTracer, "the EVM tracer type to collect execution traces from the EVM transaction execution (json|struct|access_list|markdown)") //nolint:lll From f2ae8e85b4e0349b05daceab1dd9898d06d180c8 Mon Sep 17 00:00:00 2001 From: yihuang Date: Tue, 8 Apr 2025 14:27:39 +0800 Subject: [PATCH 057/210] Problem: eth_getLogs miss logs with batch transactions. (#577) * Problem: eth_getLogs miss logs with batch transactions. * Update CHANGELOG.md Signed-off-by: yihuang --------- Signed-off-by: yihuang --- CHANGELOG.md | 1 + x/evm/types/utils.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc20859d98..786849aced 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -81,6 +81,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#562](https://github.com/crypto-org-chain/ethermint/pull/562) Fix nil pointer panic with legacy transaction format. * (evm) [#567](https://github.com/crypto-org-chain/ethermint/pull/567) Fix nonce management in batch transaction. * (rpc) [#574](https://github.com/crypto-org-chain/ethermint/pull/574) Fix incorrect spendable balance when debug trace tx. +* (rpc) [#577](https://github.com/crypto-org-chain/ethermint/pull/577) Fix eth_getLogs miss logs with batch transactions. ### Improvements diff --git a/x/evm/types/utils.go b/x/evm/types/utils.go index 72b9f451ce..7f63b659b4 100644 --- a/x/evm/types/utils.go +++ b/x/evm/types/utils.go @@ -77,7 +77,7 @@ func DecodeTxResponses(in []byte) ([]*MsgEthereumTxResponse, error) { func logsFromTxResponse(dst []*ethtypes.Log, rsp *MsgEthereumTxResponse, blockNumber uint64) []*ethtypes.Log { if len(rsp.Logs) == 0 { - return nil + return dst } if dst == nil { From 730da6a6d4e06dfb09f1d5b14978033ee8394d25 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Wed, 9 Apr 2025 10:29:13 +0800 Subject: [PATCH 058/210] Problem: unnecessary length check in logsFromTxResponse (#581) --- x/evm/types/utils.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/x/evm/types/utils.go b/x/evm/types/utils.go index 7f63b659b4..9f553aa6af 100644 --- a/x/evm/types/utils.go +++ b/x/evm/types/utils.go @@ -76,10 +76,6 @@ func DecodeTxResponses(in []byte) ([]*MsgEthereumTxResponse, error) { } func logsFromTxResponse(dst []*ethtypes.Log, rsp *MsgEthereumTxResponse, blockNumber uint64) []*ethtypes.Log { - if len(rsp.Logs) == 0 { - return dst - } - if dst == nil { dst = make([]*ethtypes.Log, 0, len(rsp.Logs)) } From ddba10a9254a6b9ffda4e9b585a61b89c3be2b14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:41:27 +0800 Subject: [PATCH 059/210] build(deps): bump golang.org/x/net from 0.12.0 to 0.15.0 (#339) * build(deps): bump golang.org/x/net from 0.12.0 to 0.15.0 Bumps [golang.org/x/net](https://github.com/golang/net) from 0.12.0 to 0.15.0. - [Commits](https://github.com/golang/net/compare/v0.12.0...v0.15.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * fix: vulncheck * feat: upgrade go version in nix --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu Zhao --- go.mod | 18 +++++++++--------- go.sum | 32 ++++++++++++++++---------------- nix/build_overlay.nix | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/go.mod b/go.mod index 269fa37153..94081845ab 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/evmos/ethermint -go 1.23.3 +go 1.23.10 require ( cosmossdk.io/api v0.7.6 @@ -9,7 +9,7 @@ require ( cosmossdk.io/core v0.11.1 cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.4.1 - cosmossdk.io/math v1.3.0 + cosmossdk.io/math v1.4.0 cosmossdk.io/store v1.1.1 cosmossdk.io/tools/confix v0.1.2 cosmossdk.io/x/evidence v0.1.1 @@ -49,9 +49,9 @@ require ( github.com/tidwall/gjson v1.14.4 github.com/tidwall/sjson v1.2.5 github.com/tyler-smith/go-bip39 v1.1.0 - golang.org/x/net v0.30.0 - golang.org/x/sync v0.8.0 - golang.org/x/text v0.19.0 + golang.org/x/net v0.41.0 + golang.org/x/sync v0.15.0 + golang.org/x/text v0.26.0 google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 google.golang.org/grpc v1.67.1 google.golang.org/protobuf v1.35.1 @@ -145,7 +145,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.4 // indirect + github.com/hashicorp/go-getter v1.7.5 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-plugin v1.6.1 // indirect @@ -222,11 +222,11 @@ require ( go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.28.0 // indirect + golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sys v0.26.0 // indirect - golang.org/x/term v0.25.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/term v0.32.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.186.0 // indirect google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect diff --git a/go.sum b/go.sum index c595173fc1..469ab49e23 100644 --- a/go.sum +++ b/go.sum @@ -200,8 +200,8 @@ cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= -cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= -cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= +cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4= cosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo= cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4= @@ -710,8 +710,8 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= -github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.5 h1:dT58k9hQ/vbxNMwoI5+xFYAJuv6152UNvdHokfI5wE4= +github.com/hashicorp/go-getter v1.7.5/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -1177,8 +1177,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= -golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= +golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1278,8 +1278,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1321,8 +1321,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= +golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1418,13 +1418,13 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= -golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= -golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= +golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= +golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1435,8 +1435,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= +golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/nix/build_overlay.nix b/nix/build_overlay.nix index 94ea0019b1..de6a413166 100644 --- a/nix/build_overlay.nix +++ b/nix/build_overlay.nix @@ -10,10 +10,10 @@ let in { go_1_23 = super.go_1_23.overrideAttrs (old: rec { - version = "1.23.4"; + version = "1.23.10"; src = final.fetchurl { url = "https://go.dev/dl/go${version}.src.tar.gz"; - hash = "sha256-rTRaxCHpCBQpOpaZzKGd1SOCUcP2h5gLvK4oSVsmNTE="; + hash = "sha256-gAp64b/xeaIntlOi9kRRfIAEQ7i0q/MnOvXhy3ET3lk="; }; # https://github.com/NixOS/nixpkgs/pull/372367 patches = replaceLast ./go_no_vendor_checks-1.23.patch old.patches; From e379886965d9d8f6b6d41632205073a2fe70b40a Mon Sep 17 00:00:00 2001 From: Thomas Nguy <81727899+thomas-nguy@users.noreply.github.com> Date: Thu, 12 Jun 2025 17:19:06 +0900 Subject: [PATCH 060/210] Problem: fork dependencies are outdated (#588) * update deps and fix script * fix labeler * upgrade deps --------- Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- .github/labeler.yml | 37 -------------------------------- .github/workflows/labeler.yml | 14 ------------ go.mod | 8 +++---- go.sum | 12 +++++------ tests/solidity/init-test-node.sh | 7 +++--- 5 files changed, 14 insertions(+), 64 deletions(-) delete mode 100644 .github/labeler.yml delete mode 100644 .github/workflows/labeler.yml diff --git a/.github/labeler.yml b/.github/labeler.yml deleted file mode 100644 index 039e8090a5..0000000000 --- a/.github/labeler.yml +++ /dev/null @@ -1,37 +0,0 @@ -"C:Crypto": - - crypto/**/* -"C:Encoding": - - encoding/**/* -"C:JSON-RPC": - - ethereum/rpc/**/* -"C:Proto": - - proto/**/* - - third_party/**/* - - /**/*.pb.go - - /**/*.pb.gw.go -"C:Types": - - types/**/* -"C:x/evm": - - x/evm/**/*/ -"Type: Build": - - Makefile - - Dockerfile - - docker-compose.yml - - scripts/* - - config.yml -"Type: CI": - - .github/**/*.yml - - buf.yaml - - .mergify.yml - - .golangci.yml -"C:CLI": - - client/**/* - - x/*/client/**/* -"Type: Tests": - - tests/**/* - - /**/*/*_test.go -"Type: Docs": - - docs/**/* - - x/*/spec/**/* -"Type: ADR": - - docs/architecture/**/* \ No newline at end of file diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml deleted file mode 100644 index 0b7c0a98fb..0000000000 --- a/.github/workflows/labeler.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: "Pull Request Labeler" -on: - pull_request: - push: - branches: - - develop - -jobs: - triage: - runs-on: ubuntu-latest - steps: - - uses: actions/labeler@v4 - with: - repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/go.mod b/go.mod index 94081845ab..84faab924d 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( cosmossdk.io/x/upgrade v0.1.4 github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcutil v1.1.6 - github.com/cometbft/cometbft v0.38.13-0.20240920204745-fdf90d16f608 + github.com/cometbft/cometbft v0.38.15 github.com/cosmos/cosmos-db v1.0.3-0.20240408151834-e75f6e4b28d8 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.9 @@ -241,9 +241,9 @@ require ( replace ( // release/v0.50.x - cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20250116033154-05863f6ce4b8 - cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20250116033154-05863f6ce4b8 - github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20250116033154-05863f6ce4b8 + cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254 + cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254 + github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20250424063720-28ea58ae20d8 ) replace ( diff --git a/go.sum b/go.sum index 469ab49e23..e0bdcfb6c1 100644 --- a/go.sum +++ b/go.sum @@ -410,12 +410,12 @@ github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+F github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= github.com/crypto-org-chain/cometbft v0.0.0-20241106091515-ce418f845d9a h1:0EN1TkzHTAxpgpGaZJY3G7L4jf4+sYnI7FOmBFLCg4U= github.com/crypto-org-chain/cometbft v0.0.0-20241106091515-ce418f845d9a/go.mod h1:khbgmtxbgwJfMqDmnGY4rl2sQpTdzpPb1f9nqnfpy1o= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20250116033154-05863f6ce4b8 h1:KYwCiEEuNZ8j4zpIRdMwr4AHT58nh3KKfJ+UKLZSw7E= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20250116033154-05863f6ce4b8/go.mod h1:JwwsMeZldLN20b72mmbWPY0EV9rs+v/12hRu1JFttvY= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20250116033154-05863f6ce4b8 h1:7kbrHLCo505EBH0um5be15R8xdc9bw7WIriZDUQJ1Ro= -github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20250116033154-05863f6ce4b8/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20250116033154-05863f6ce4b8 h1:GwNyoWViRCZa8TLITeRPTxMx1MsGRShszKThxqRngng= -github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20250116033154-05863f6ce4b8/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20250424063720-28ea58ae20d8 h1:Sif0pGNc4C384OLucyQ7P/+KjYiJ6uDn8Cf8wR7MI+c= +github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20250424063720-28ea58ae20d8/go.mod h1:JwwsMeZldLN20b72mmbWPY0EV9rs+v/12hRu1JFttvY= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254 h1:NEgy0r3otU/O+0OAjMdEhbn4VotQlg+98hHbD7M23wU= +github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254 h1:JzLOFRiKsDtLJt5h0M0jkEIPDKvFFyja7VEp7gG6O9U= +github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 h1:6KPEi8dWkDSBddQb4NAvEXmNnTXymF3yVeTaT4Hz1iU= github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183 h1:JDBTqDkd9X9oBF2C4FKOpn0GVDQDzVkHzeS8eDWNl6A= diff --git a/tests/solidity/init-test-node.sh b/tests/solidity/init-test-node.sh index 635287cbb5..97e1c08e61 100755 --- a/tests/solidity/init-test-node.sh +++ b/tests/solidity/init-test-node.sh @@ -36,7 +36,7 @@ echo $USER4_MNEMONIC | ethermintd keys add $USER4_KEY --recover --keyring-backen ethermintd init $MONIKER --chain-id $CHAINID # Set gas limit in genesis -cat $HOME/.ethermintd/config/genesis.json | jq '.consensus_params["block"]["max_gas"]="10000000"' > $HOME/.ethermintd/config/tmp_genesis.json && mv $HOME/.ethermintd/config/tmp_genesis.json $HOME/.ethermintd/config/genesis.json +cat $HOME/.ethermintd/config/genesis.json | jq '.consensus["params"]["block"]["max_gas"]="10000000"' > $HOME/.ethermintd/config/tmp_genesis.json && mv $HOME/.ethermintd/config/tmp_genesis.json $HOME/.ethermintd/config/genesis.json # modified default configs if [[ "$OSTYPE" == "darwin"* ]]; then @@ -60,6 +60,7 @@ ethermintd genesis add-genesis-account "$(ethermintd keys show $USER2_KEY -a --k ethermintd genesis add-genesis-account "$(ethermintd keys show $USER3_KEY -a --keyring-backend test)" 1000000000000000000000aphoton,1000000000000000000stake --keyring-backend test ethermintd genesis add-genesis-account "$(ethermintd keys show $USER4_KEY -a --keyring-backend test)" 1000000000000000000000aphoton,1000000000000000000stake --keyring-backend test + # Sign genesis transaction ethermintd genesis gentx $VAL_KEY 1000000000000000000stake --amount=1000000000000000000000aphoton --chain-id $CHAINID --keyring-backend test @@ -67,7 +68,7 @@ ethermintd genesis gentx $VAL_KEY 1000000000000000000stake --amount=100000000000 ethermintd genesis collect-gentxs # Run this to ensure everything worked and that the genesis file is setup correctly -ethermintd genesis validate-genesis +ethermintd genesis validate # Start the node (remove the --pruning=nothing flag if historical queries are not needed) -ethermintd start --metrics --pruning=nothing --rpc.unsafe --keyring-backend test --log_level info --json-rpc.api eth,txpool,personal,net,debug,web3 --api.enable +ethermintd start --metrics --pruning=nothing --rpc.unsafe --keyring-backend test --log_level info --json-rpc.api eth,txpool,personal,net,debug,web3 --api.enable \ No newline at end of file From 14455c84b3d7752b43b49d8e47638e4bba61cc22 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Jun 2025 17:35:51 +0800 Subject: [PATCH 061/210] build(deps): bump github.com/onsi/gomega from 1.26.0 to 1.27.10 (#340) * build(deps): bump github.com/onsi/gomega from 1.26.0 to 1.27.10 Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.26.0 to 1.27.10. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.26.0...v1.27.10) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * ci: use codecov/codecov-action@v5 --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu Zhao --- .github/workflows/test.yml | 2 +- go.mod | 13 ++++++++----- go.sum | 26 ++++++++++++++++---------- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 998884584d..e7701335c3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -38,7 +38,7 @@ jobs: run: | make test-unit-cover if: env.GIT_DIFF - - uses: codecov/codecov-action@v4 + - uses: codecov/codecov-action@v5 with: file: ./coverage.txt fail_ci_if_error: true diff --git a/go.mod b/go.mod index 84faab924d..22c84bdb5e 100644 --- a/go.mod +++ b/go.mod @@ -37,8 +37,8 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/go-metrics v0.5.3 github.com/improbable-eng/grpc-web v0.15.0 - github.com/onsi/ginkgo/v2 v2.7.0 - github.com/onsi/gomega v1.26.0 + github.com/onsi/ginkgo/v2 v2.23.3 + github.com/onsi/gomega v1.37.0 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 github.com/spf13/cast v1.6.0 @@ -54,7 +54,7 @@ require ( golang.org/x/text v0.26.0 google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 google.golang.org/grpc v1.67.1 - google.golang.org/protobuf v1.35.1 + google.golang.org/protobuf v1.36.5 sigs.k8s.io/yaml v1.4.0 ) @@ -122,11 +122,12 @@ require ( github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/go-stack/stack v1.8.1 // indirect + github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect @@ -135,8 +136,9 @@ require ( github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.3 // indirect github.com/google/flatbuffers v24.3.25+incompatible // indirect - github.com/google/go-cmp v0.6.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/google/orderedcode v0.0.1 // indirect + github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect @@ -228,6 +230,7 @@ require ( golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect golang.org/x/time v0.5.0 // indirect + golang.org/x/tools v0.33.0 // indirect google.golang.org/api v0.186.0 // indirect google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect diff --git a/go.sum b/go.sum index e0bdcfb6c1..aa9bd1a8b8 100644 --- a/go.sum +++ b/go.sum @@ -525,8 +525,8 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= @@ -541,6 +541,8 @@ github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= @@ -624,8 +626,8 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -653,6 +655,8 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= @@ -913,14 +917,14 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.7.0 h1:/XxtEV3I3Eif/HobnVx9YmJgk8ENdRsuUmM+fLCFNow= -github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= +github.com/onsi/ginkgo/v2 v2.23.3 h1:edHxnszytJ4lD9D5Jjc4tiDkPBZ3siDeJJkUZJJVkp0= +github.com/onsi/ginkgo/v2 v2.23.3/go.mod h1:zXTP6xIp3U8aVuXN8ENK9IXRaTjFnpVB9mGmaSRvxnM= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= -github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= +github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y= +github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= @@ -1505,6 +1509,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= +golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1745,8 +1751,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From a6fc36bbbafd5cedbc4a4bb1b7e57f644d446af3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Jun 2025 10:50:19 +0000 Subject: [PATCH 062/210] build(deps): bump github.com/onsi/ginkgo/v2 from 2.7.0 to 2.12.0 (#322) * build(deps): bump github.com/onsi/ginkgo/v2 from 2.7.0 to 2.12.0 Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.7.0 to 2.12.0. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.7.0...v2.12.0) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * fix: typo --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu Zhao --- go.mod | 5 +++-- go.sum | 12 ++++++++---- x/evm/spec/01_concepts.md | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 22c84bdb5e..b2dc36ec76 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/go-metrics v0.5.3 github.com/improbable-eng/grpc-web v0.15.0 - github.com/onsi/ginkgo/v2 v2.23.3 + github.com/onsi/ginkgo/v2 v2.23.4 github.com/onsi/gomega v1.37.0 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 @@ -138,7 +138,7 @@ require ( github.com/google/flatbuffers v24.3.25+incompatible // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/orderedcode v0.0.1 // indirect - github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect + github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect @@ -223,6 +223,7 @@ require ( go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect + go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect diff --git a/go.sum b/go.sum index aa9bd1a8b8..216d48c940 100644 --- a/go.sum +++ b/go.sum @@ -655,8 +655,8 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= -github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= @@ -917,8 +917,8 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.23.3 h1:edHxnszytJ4lD9D5Jjc4tiDkPBZ3siDeJJkUZJJVkp0= -github.com/onsi/ginkgo/v2 v2.23.3/go.mod h1:zXTP6xIp3U8aVuXN8ENK9IXRaTjFnpVB9mGmaSRvxnM= +github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= +github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= @@ -966,6 +966,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= @@ -1160,6 +1162,8 @@ go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= +go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= diff --git a/x/evm/spec/01_concepts.md b/x/evm/spec/01_concepts.md index c96162d571..e2cfd328e5 100644 --- a/x/evm/spec/01_concepts.md +++ b/x/evm/spec/01_concepts.md @@ -6,7 +6,7 @@ order: 1 ## EVM -The Ethereum Virtual Machine (EVM) is a computation engine which can be thought of as one single entity maintained by thousands of connected computers (nodes) running an Ethereum client. As a virtual machine ([VM](https://en.wikipedia.org/wiki/Virtual_machine)), the EVM is responisble for computing changes to the state deterministically regardless of its environment (hardware and OS). This means that every node has to get the exact same result given an identical starting state and transaction (tx). +The Ethereum Virtual Machine (EVM) is a computation engine which can be thought of as one single entity maintained by thousands of connected computers (nodes) running an Ethereum client. As a virtual machine ([VM](https://en.wikipedia.org/wiki/Virtual_machine)), the EVM is responsible for computing changes to the state deterministically regardless of its environment (hardware and OS). This means that every node has to get the exact same result given an identical starting state and transaction (tx). The EVM is considered to be the part of the Ethereum protocol that handles the deployment and execution of [smart contracts](https://ethereum.org/en/developers/docs/smart-contracts/). To make a clear distinction: From cfde6e4e83a2bf892f2510578be40010088f0c28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Jun 2025 02:13:31 +0000 Subject: [PATCH 063/210] build(deps): bump github.com/status-im/keycard-go from 0.0.0-20200402102358-957c09536969 to 0.3.0 (#334) * build(deps): bump github.com/status-im/keycard-go Bumps [github.com/status-im/keycard-go](https://github.com/status-im/keycard-go) from 0.0.0-20200402102358-957c09536969 to 0.3.0. - [Release notes](https://github.com/status-im/keycard-go/releases) - [Commits](https://github.com/status-im/keycard-go/commits/v0.3.0) --- updated-dependencies: - dependency-name: github.com/status-im/keycard-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * fix: type to acquire codecov token in old branch --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu Zhao --- go.mod | 2 +- go.sum | 4 ++-- x/evm/spec/01_concepts.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index b2dc36ec76..c1e6c8c367 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 - github.com/status-im/keycard-go v0.2.0 + github.com/status-im/keycard-go v0.3.3 github.com/stretchr/testify v1.9.0 github.com/tidwall/gjson v1.14.4 github.com/tidwall/sjson v1.2.5 diff --git a/go.sum b/go.sum index 216d48c940..e91a791b25 100644 --- a/go.sum +++ b/go.sum @@ -1058,8 +1058,8 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= -github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= -github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= +github.com/status-im/keycard-go v0.3.3 h1:qk/JHSkT9sMka+lVXrTOIVSgHIY7lDm46wrUqTsNa4s= +github.com/status-im/keycard-go v0.3.3/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= diff --git a/x/evm/spec/01_concepts.md b/x/evm/spec/01_concepts.md index e2cfd328e5..cd841424b9 100644 --- a/x/evm/spec/01_concepts.md +++ b/x/evm/spec/01_concepts.md @@ -17,7 +17,7 @@ The `x/evm` module implements the EVM as a Cosmos SDK module. It allows users to ### State -The Ethereum state is a data structure, implemented as a [Merkle Patricia Trie](https://en.wikipedia.org/wiki/Merkle_tree), that keeps all accounts on the chain. The EVM makes changes to this data structure resulting in a new state with a different State Root. Ethereum can therefore be seen as a state chain that transitions from one state to another by executing transations in a block using the EVM. A new block of txs can be described through its Block header (parent hash, block number, time stamp, nonce, receipts,...). +The Ethereum state is a data structure, implemented as a [Merkle Patricia Trie](https://en.wikipedia.org/wiki/Merkle_tree), that keeps all accounts on the chain. The EVM makes changes to this data structure resulting in a new state with a different State Root. Ethereum can therefore be seen as a state chain that transitions from one state to another by executing transactions in a block using the EVM. A new block of txs can be described through its Block header (parent hash, block number, time stamp, nonce, receipts,...). ### Accounts From cc519e7214bcd7a4d876b961d81d3374ba770476 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Jun 2025 11:16:49 +0800 Subject: [PATCH 064/210] build(deps): bump github.com/cosmos/cosmos-db (#608) Bumps [github.com/cosmos/cosmos-db](https://github.com/cosmos/cosmos-db) from 1.0.3-0.20240408151834-e75f6e4b28d8 to 1.1.3. - [Changelog](https://github.com/cosmos/cosmos-db/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-db/commits/v1.1.3) --- updated-dependencies: - dependency-name: github.com/cosmos/cosmos-db dependency-version: 1.1.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 15 ++++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index c1e6c8c367..b03829f8b0 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcutil v1.1.6 github.com/cometbft/cometbft v0.38.15 - github.com/cosmos/cosmos-db v1.0.3-0.20240408151834-e75f6e4b28d8 + github.com/cosmos/cosmos-db v1.1.3 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.9 github.com/cosmos/go-bip39 v1.0.0 @@ -41,11 +41,11 @@ require ( github.com/onsi/gomega v1.37.0 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 - github.com/spf13/cast v1.6.0 + github.com/spf13/cast v1.8.0 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 github.com/status-im/keycard-go v0.3.3 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/tidwall/gjson v1.14.4 github.com/tidwall/sjson v1.2.5 github.com/tyler-smith/go-bip39 v1.1.0 @@ -89,7 +89,7 @@ require ( github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v1.1.2 // indirect + github.com/cockroachdb/pebble v1.1.5 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect diff --git a/go.sum b/go.sum index e91a791b25..1db5b6ed21 100644 --- a/go.sum +++ b/go.sum @@ -351,8 +351,8 @@ github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a h1:f52TdbU4D5nozM github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= -github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/pebble v1.1.5 h1:5AAWCBWbat0uE0blr8qzufZP5tBjkRyy/jWe1QWLnvw= +github.com/cockroachdb/pebble v1.1.5/go.mod h1:17wO9el1YEigxkP/YtV8NtCivQDgoCyBg5c4VR/eOWo= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -370,8 +370,8 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-db v1.0.3-0.20240408151834-e75f6e4b28d8 h1:QV1tpwwqSPWcs1Hy07Y5JHfa61bE/Cz+blqKtuaz86c= -github.com/cosmos/cosmos-db v1.0.3-0.20240408151834-e75f6e4b28d8/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= +github.com/cosmos/cosmos-db v1.1.3 h1:7QNT77+vkefostcKkhrzDK9uoIEryzFrU9eoMeaQOPY= +github.com/cosmos/cosmos-db v1.1.3/go.mod h1:kN+wGsnwUJZYn8Sy5Q2O0vCYA99MJllkKASbs6Unb9U= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= @@ -1048,8 +1048,8 @@ github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIK github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cast v1.8.0 h1:gEN9K4b8Xws4EX0+a0reLmhq8moKn7ntRlQYgjPeCDk= +github.com/spf13/cast v1.8.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= @@ -1080,8 +1080,9 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= From 7213c1d9c2b92384b7ccc1694757ce5d6f914da9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Jun 2025 11:35:49 +0800 Subject: [PATCH 065/210] build(deps): bump cosmossdk.io/math from 1.4.0 to 1.5.3 (#607) Bumps [cosmossdk.io/math](https://github.com/cosmos/cosmos-sdk) from 1.4.0 to 1.5.3. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/log/v1.4.0...math/v1.5.3) --- updated-dependencies: - dependency-name: cosmossdk.io/math dependency-version: 1.5.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index b03829f8b0..264d4d5ab7 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( cosmossdk.io/core v0.11.1 cosmossdk.io/errors v1.0.1 cosmossdk.io/log v1.4.1 - cosmossdk.io/math v1.4.0 + cosmossdk.io/math v1.5.3 cosmossdk.io/store v1.1.1 cosmossdk.io/tools/confix v0.1.2 cosmossdk.io/x/evidence v0.1.1 @@ -195,7 +195,7 @@ require ( github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect - github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/zerolog v1.33.0 // indirect github.com/sagikazarmark/locafero v0.6.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect diff --git a/go.sum b/go.sum index 1db5b6ed21..d0d44da573 100644 --- a/go.sum +++ b/go.sum @@ -200,8 +200,8 @@ cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= -cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= -cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= +cosmossdk.io/math v1.5.3 h1:WH6tu6Z3AUCeHbeOSHg2mt9rnoiUWVWaQ2t6Gkll96U= +cosmossdk.io/math v1.5.3/go.mod h1:uqcZv7vexnhMFJF+6zh9EWdm/+Ylyln34IvPnBauPCQ= cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4= cosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo= cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4= @@ -1010,8 +1010,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= From a4736ecf24ed4faa475a8388c9651a6c35d100c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Jun 2025 11:57:41 +0800 Subject: [PATCH 066/210] build(deps): bump github.com/tidwall/gjson from 1.14.4 to 1.18.0 (#600) Bumps [github.com/tidwall/gjson](https://github.com/tidwall/gjson) from 1.14.4 to 1.18.0. - [Commits](https://github.com/tidwall/gjson/compare/v1.14.4...v1.18.0) --- updated-dependencies: - dependency-name: github.com/tidwall/gjson dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 264d4d5ab7..63b81a70f8 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( github.com/spf13/viper v1.19.0 github.com/status-im/keycard-go v0.3.3 github.com/stretchr/testify v1.10.0 - github.com/tidwall/gjson v1.14.4 + github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 github.com/tyler-smith/go-bip39 v1.1.0 golang.org/x/net v0.41.0 diff --git a/go.sum b/go.sum index d0d44da573..fddb240045 100644 --- a/go.sum +++ b/go.sum @@ -1092,8 +1092,8 @@ github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoM github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= From 0cac0cfbd3f15d866b246dac10b010d90869ef93 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Jun 2025 04:16:30 +0000 Subject: [PATCH 067/210] build(deps): bump github.com/spf13/viper from 1.19.0 to 1.20.1 (#604) Bumps [github.com/spf13/viper](https://github.com/spf13/viper) from 1.19.0 to 1.20.1. - [Release notes](https://github.com/spf13/viper/releases) - [Commits](https://github.com/spf13/viper/compare/v1.19.0...v1.20.1) --- updated-dependencies: - dependency-name: github.com/spf13/viper dependency-version: 1.20.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- go.mod | 72 ++++++++++++++------------ go.sum | 156 ++++++++++++++++++++++++++++++++++----------------------- 2 files changed, 133 insertions(+), 95 deletions(-) diff --git a/go.mod b/go.mod index 63b81a70f8..7dd9be40a7 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( github.com/rs/cors v1.11.1 github.com/spf13/cast v1.8.0 github.com/spf13/cobra v1.8.1 - github.com/spf13/viper v1.19.0 + github.com/spf13/viper v1.20.1 github.com/status-im/keycard-go v0.3.3 github.com/stretchr/testify v1.10.0 github.com/tidwall/gjson v1.18.0 @@ -52,25 +52,30 @@ require ( golang.org/x/net v0.41.0 golang.org/x/sync v0.15.0 golang.org/x/text v0.26.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 - google.golang.org/grpc v1.67.1 + google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 + google.golang.org/grpc v1.67.3 google.golang.org/protobuf v1.36.5 sigs.k8s.io/yaml v1.4.0 ) require ( - cloud.google.com/go v0.115.0 // indirect - cloud.google.com/go/auth v0.6.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect - cloud.google.com/go/compute/metadata v0.5.0 // indirect - cloud.google.com/go/iam v1.1.9 // indirect - cloud.google.com/go/storage v1.41.0 // indirect + cel.dev/expr v0.16.1 // indirect + cloud.google.com/go v0.116.0 // indirect + cloud.google.com/go/auth v0.13.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect + cloud.google.com/go/iam v1.2.2 // indirect + cloud.google.com/go/monitoring v1.21.2 // indirect + cloud.google.com/go/storage v1.49.0 // indirect cosmossdk.io/depinject v1.0.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect github.com/DataDog/datadog-go v4.8.3+incompatible // indirect github.com/DataDog/zstd v1.5.5 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect github.com/VictoriaMetrics/fastcache v1.6.0 // indirect @@ -83,8 +88,10 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect + github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect @@ -114,9 +121,11 @@ require ( github.com/dvsekhvalnov/jose2go v1.7.0 // indirect github.com/edsrzf/mmap-go v1.0.0 // indirect github.com/emicklei/dot v1.6.2 // indirect + github.com/envoyproxy/go-control-plane v0.13.1 // indirect + github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect github.com/fatih/color v1.17.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect github.com/getsentry/sentry-go v0.28.1 // indirect github.com/go-kit/kit v0.13.0 // indirect @@ -128,6 +137,7 @@ require ( github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/go-stack/stack v1.8.1 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect + github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect @@ -139,10 +149,10 @@ require ( github.com/google/go-cmp v0.7.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect - github.com/google/s2a-go v0.1.7 // indirect + github.com/google/s2a-go v0.1.8 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.5 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect + github.com/googleapis/gax-go/v2 v2.14.1 // indirect github.com/gorilla/handlers v1.5.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect @@ -155,7 +165,6 @@ require ( github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect github.com/holiman/bloomfilter/v2 v2.0.3 // indirect @@ -172,7 +181,6 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect - github.com/magiconair/properties v1.8.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -186,8 +194,9 @@ require ( github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect + github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect @@ -197,13 +206,12 @@ require ( github.com/rivo/uniseg v0.2.0 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/zerolog v1.33.0 // indirect - github.com/sagikazarmark/locafero v0.6.0 // indirect - github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/sagikazarmark/locafero v0.7.0 // indirect github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/afero v1.12.0 // indirect + github.com/spf13/pflag v1.0.6 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect @@ -218,24 +226,26 @@ require ( github.com/zondax/ledger-go v0.14.3 // indirect go.etcd.io/bbolt v1.4.0-alpha.1 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.24.0 // indirect - go.opentelemetry.io/otel/metric v1.24.0 // indirect - go.opentelemetry.io/otel/trace v1.24.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.29.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect + go.opentelemetry.io/otel v1.29.0 // indirect + go.opentelemetry.io/otel/metric v1.29.0 // indirect + go.opentelemetry.io/otel/sdk v1.29.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.29.0 // indirect + go.opentelemetry.io/otel/trace v1.29.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect - golang.org/x/oauth2 v0.23.0 // indirect + golang.org/x/oauth2 v0.25.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect - golang.org/x/time v0.5.0 // indirect + golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.33.0 // indirect - google.golang.org/api v0.186.0 // indirect - google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect + google.golang.org/api v0.215.0 // indirect + google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/go.sum b/go.sum index fddb240045..afa12d03d2 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +cel.dev/expr v0.16.1 h1:NR0+oFYzR1CqLFhTAqg3ql59G9VfN8fKq1TCHJ6gq1g= +cel.dev/expr v0.16.1/go.mod h1:AsGA5zb3WruAEQeQng1RZdGEXmBj0jvMWh6l5SnNuC8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -30,8 +32,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= -cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= +cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= +cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -46,10 +48,10 @@ cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjby cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g= -cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g= -cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= -cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= +cloud.google.com/go/auth v0.13.0 h1:8Fu8TZy167JkW8Tj3q7dIkr2v4cndv41ouecJx0PAHs= +cloud.google.com/go/auth v0.13.0/go.mod h1:COOjD9gwfKNKz+IIduatIhYJQIc0mG3H102r/EMxX6Q= +cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= +cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= @@ -72,8 +74,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= -cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -111,18 +113,24 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.9 h1:oSkYLVtVme29uGYrOcKcvJRht7cHJpYD09GM9JaR0TE= -cloud.google.com/go/iam v1.1.9/go.mod h1:Nt1eDWNYH9nGQg3d/mY7U1hvfGmsaG9o/kLGoLoLXjQ= +cloud.google.com/go/iam v1.2.2 h1:ozUSofHUGf/F4tCNy/mu9tHLTaxZFLOUiKzjcgWHGIA= +cloud.google.com/go/iam v1.2.2/go.mod h1:0Ys8ccaZHdI1dEUilwzqng/6ps2YB6vRsjIe00/+6JY= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/logging v1.12.0 h1:ex1igYcGFd4S/RZWOCU51StlIEuey5bjqwH9ZYjHibk= +cloud.google.com/go/logging v1.12.0/go.mod h1:wwYBt5HlYP1InnrtYI0wtwttpVU1rifnMT7RejksUAM= +cloud.google.com/go/longrunning v0.6.2 h1:xjDfh1pQcWPEvnfjZmwjKQEcHnpz6lHjfy7Fo0MK+hc= +cloud.google.com/go/longrunning v0.6.2/go.mod h1:k/vIs83RN4bE3YCswdXC5PFfWVILjm3hpEUlSko4PiI= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/monitoring v1.21.2 h1:FChwVtClH19E7pJ+e0xUhJPGksctZNVOk2UhMmblmdU= +cloud.google.com/go/monitoring v1.21.2/go.mod h1:hS3pXvaG8KgWTSz+dAdyzPrGUYmi2Q+WFX8g2hqVEZU= cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= @@ -173,10 +181,12 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0= -cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80= +cloud.google.com/go/storage v1.49.0 h1:zenOPBOWHCnojRd9aJZAyQXBYqkJkdQS42dxL55CIMw= +cloud.google.com/go/storage v1.49.0/go.mod h1:k1eHhhpLvrPjVGfo0mOUPEJ4Y2+a/Hv5PiwehZI9qGU= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/trace v1.11.2 h1:4ZmaBdL8Ng/ajrgKqY5jfvzqMXbrDcBsUGXOT9aqTtI= +cloud.google.com/go/trace v1.11.2/go.mod h1:bn7OwXd4pd5rFuAnTrzBuoZ4ax2XQeG3qNgYmfCy0Io= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= @@ -224,6 +234,14 @@ github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bp github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 h1:3c8yed4lgqTt+oTQ+JNMDo+F4xprBf+O/il4ZC0nRLw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0/go.mod h1:obipzmGjfSjam60XLwGfqUkJsfiheAl+TUjG+4yzyPM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1/go.mod h1:0wEl7vrAD8mehJyohS9HZy+WyEOaQO2mJx86Cvh93kM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 h1:8nn+rsCvTq9axyEh382S0PFLBeaFwNsT43IrPWzctRU= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE= 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= @@ -311,6 +329,8 @@ github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -340,6 +360,8 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI= +github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -480,7 +502,11 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.13.1 h1:vPfJZCkob6yTMEgS+0TwfTUfbHjfy/6vOJ8hUWX/uXE= +github.com/envoyproxy/go-control-plane v0.13.1/go.mod h1:X45hY0mufo6Fd0KW3rqsGvQMw58jvjymeCzBU3mWyHw= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= @@ -497,8 +523,8 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k= @@ -543,6 +569,8 @@ github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= +github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= @@ -658,8 +686,8 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= +github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -668,8 +696,8 @@ github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= +github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -679,8 +707,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA= -github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E= +github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q= +github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= @@ -747,8 +775,6 @@ github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iP github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= @@ -947,8 +973,8 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= -github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw= github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= @@ -962,6 +988,8 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -1022,10 +1050,8 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk= -github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0= -github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= -github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= +github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= @@ -1046,18 +1072,19 @@ github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJ github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= github.com/spf13/cast v1.8.0 h1:gEN9K4b8Xws4EX0+a0reLmhq8moKn7ntRlQYgjPeCDk= github.com/spf13/cast v1.8.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= -github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= +github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/status-im/keycard-go v0.3.3 h1:qk/JHSkT9sMka+lVXrTOIVSgHIY7lDm46wrUqTsNa4s= github.com/status-im/keycard-go v0.3.3/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1080,7 +1107,6 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= @@ -1146,18 +1172,24 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= -go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= -go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= -go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= -go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= -go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= -go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.opentelemetry.io/contrib/detectors/gcp v1.29.0 h1:TiaiXB4DpGD3sdzNlYQxruQngn5Apwzi1X0DRhuGvDQ= +go.opentelemetry.io/contrib/detectors/gcp v1.29.0/go.mod h1:GW2aWZNwR2ZxDLdv8OyC2G8zkRoQBuURgV7RPQgcPoU= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= +go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= +go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= +go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= +go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= +go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= +go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= +go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= +go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= +go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= +go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1314,8 +1346,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= +golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1450,8 +1482,8 @@ golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1524,8 +1556,6 @@ golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1575,8 +1605,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug= -google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc= +google.golang.org/api v0.215.0 h1:jdYF4qnyczlEz2ReWIsosNLDuzXyvFHJtI5gcr0J7t0= +google.golang.org/api v0.215.0/go.mod h1:fta3CVtuJYOEdugLNWm6WodzOS8KdFckABwN4I40hzY= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1691,12 +1721,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 h1:6whtk83KtD3FkGrVb2hFXuQ+ZMbCNdakARIn/aHMmG8= -google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094/go.mod h1:Zs4wYw8z1zr6RNF4cwYb31mvN/EGaKAdQjNCF3DW6K4= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= +google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= +google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q= +google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1738,8 +1768,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= -google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc v1.67.3 h1:OgPcDAFKHnH8X3O4WcO4XUc8GRDeKsKReqbQtiCj7N8= +google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1770,8 +1800,6 @@ gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= From acb4efec31944038c1b278198f69cd1502b74577 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Jun 2025 13:56:35 +0800 Subject: [PATCH 068/210] build(deps): bump cosmossdk.io/log from 1.4.1 to 1.6.0 (#603) --- go.mod | 12 +++++++++--- go.sum | 30 ++++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 7dd9be40a7..1639bb66af 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( cosmossdk.io/collections v0.4.0 cosmossdk.io/core v0.11.1 cosmossdk.io/errors v1.0.1 - cosmossdk.io/log v1.4.1 + cosmossdk.io/log v1.6.0 cosmossdk.io/math v1.5.3 cosmossdk.io/store v1.1.1 cosmossdk.io/tools/confix v0.1.2 @@ -87,10 +87,13 @@ require ( github.com/bits-and-blooms/bitset v1.8.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect + github.com/bytedance/sonic v1.13.1 // indirect + github.com/bytedance/sonic/loader v0.2.4 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect + github.com/cloudwego/base64x v0.1.5 // indirect github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/cockroachdb/errors v1.11.3 // indirect @@ -177,12 +180,13 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/cpuid/v2 v2.2.10 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/linxGnu/grocksdb v1.9.3 // indirect github.com/manifoldco/promptui v0.9.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/minio/highwayhash v1.0.3 // indirect @@ -205,7 +209,7 @@ require ( github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - github.com/rs/zerolog v1.33.0 // indirect + github.com/rs/zerolog v1.34.0 // indirect github.com/sagikazarmark/locafero v0.7.0 // indirect github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect @@ -221,6 +225,7 @@ require ( github.com/tidwall/pretty v1.2.0 // indirect github.com/tklauser/go-sysconf v0.3.10 // indirect github.com/tklauser/numcpus v0.4.0 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect @@ -236,6 +241,7 @@ require ( go.opentelemetry.io/otel/trace v1.29.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect + golang.org/x/arch v0.15.0 // indirect golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect golang.org/x/oauth2 v0.25.0 // indirect diff --git a/go.sum b/go.sum index afa12d03d2..6f7e466641 100644 --- a/go.sum +++ b/go.sum @@ -208,8 +208,8 @@ cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050= cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8= cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= -cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= +cosmossdk.io/log v1.6.0 h1:SJIOmJ059wi1piyRgNRXKXhlDXGqnB5eQwhcZKv2tOk= +cosmossdk.io/log v1.6.0/go.mod h1:5cXXBvfBkR2/BcXmosdCSLXllvgSjphrrDVdfVRmBGM= cosmossdk.io/math v1.5.3 h1:WH6tu6Z3AUCeHbeOSHg2mt9rnoiUWVWaQ2t6Gkll96U= cosmossdk.io/math v1.5.3/go.mod h1:uqcZv7vexnhMFJF+6zh9EWdm/+Ylyln34IvPnBauPCQ= cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4= @@ -322,6 +322,11 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtE github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= +github.com/bytedance/sonic v1.13.1 h1:Jyd5CIvdFnkOWuKXr+wm4Nyk2h0yAFsr8ucJgEasO3g= +github.com/bytedance/sonic v1.13.1/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= +github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -351,6 +356,9 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= +github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -842,6 +850,10 @@ github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= +github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -871,8 +883,9 @@ github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GW github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= @@ -1043,9 +1056,9 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= -github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= +github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= +github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -1132,6 +1145,8 @@ github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq// github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= @@ -1207,6 +1222,8 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +golang.org/x/arch v0.15.0 h1:QtOrQd0bTUnhNVNndMpLHNWrDmYzZ2KDqSrEymqInZw= +golang.org/x/arch v0.15.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1835,6 +1852,7 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0= nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= From 2c0adef6e095081e8deb36cdb2cbd3658793706b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Jun 2025 06:16:14 +0000 Subject: [PATCH 069/210] build(deps): bump github.com/cosmos/rosetta from 0.50.3-1 to 0.50.12 (#602) --- go.mod | 15 +++++++++------ go.sum | 22 ++++++++++++++-------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index 1639bb66af..94c8581c77 100644 --- a/go.mod +++ b/go.mod @@ -14,19 +14,19 @@ require ( cosmossdk.io/tools/confix v0.1.2 cosmossdk.io/x/evidence v0.1.1 cosmossdk.io/x/feegrant v0.1.1 - cosmossdk.io/x/tx v0.13.6-0.20241003112805-ff8789a02871 + cosmossdk.io/x/tx v0.13.7 cosmossdk.io/x/upgrade v0.1.4 github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcutil v1.1.6 github.com/cometbft/cometbft v0.38.15 github.com/cosmos/cosmos-db v1.1.3 github.com/cosmos/cosmos-proto v1.0.0-beta.5 - github.com/cosmos/cosmos-sdk v0.50.9 + github.com/cosmos/cosmos-sdk v0.50.12 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.7.0 github.com/cosmos/ibc-go/modules/capability v1.0.1 github.com/cosmos/ibc-go/v9 v9.0.2 - github.com/cosmos/rosetta v0.50.3-1 + github.com/cosmos/rosetta v0.50.12 github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/ethereum/go-ethereum v1.10.26 @@ -67,7 +67,7 @@ require ( cloud.google.com/go/iam v1.2.2 // indirect cloud.google.com/go/monitoring v1.21.2 // indirect cloud.google.com/go/storage v1.49.0 // indirect - cosmossdk.io/depinject v1.0.0 // indirect + cosmossdk.io/depinject v1.1.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect @@ -77,6 +77,8 @@ require ( github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/PuerkitoBio/purell v1.1.1 // indirect + github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect github.com/VictoriaMetrics/fastcache v1.6.0 // indirect github.com/allegro/bigcache v1.2.1 // indirect @@ -106,9 +108,9 @@ require ( github.com/cometbft/cometbft-db v0.15.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v1.2.0 // indirect + github.com/cosmos/iavl v1.2.2 // indirect github.com/cosmos/ics23/go v0.11.0 // indirect - github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect + github.com/cosmos/ledger-cosmos-go v0.14.0 // indirect github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect github.com/creachadair/atomicfile v0.3.1 // indirect github.com/creachadair/tomledit v0.0.24 // indirect @@ -157,6 +159,7 @@ require ( github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect github.com/googleapis/gax-go/v2 v2.14.1 // indirect github.com/gorilla/handlers v1.5.2 // indirect + github.com/goware/urlx v0.3.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect diff --git a/go.sum b/go.sum index 6f7e466641..a5081a4922 100644 --- a/go.sum +++ b/go.sum @@ -204,8 +204,8 @@ cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= -cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050= -cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8= +cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E= +cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI= cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= cosmossdk.io/log v1.6.0 h1:SJIOmJ059wi1piyRgNRXKXhlDXGqnB5eQwhcZKv2tOk= @@ -248,6 +248,10 @@ github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= @@ -411,8 +415,8 @@ github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= -github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM= -github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI= +github.com/cosmos/iavl v1.2.2 h1:qHhKW3I70w+04g5KdsdVSHRbFLgt3yY3qTMd4Xa4rC8= +github.com/cosmos/iavl v1.2.2/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI= github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E= github.com/cosmos/ibc-go/v9 v9.0.2 h1:4481uaqY8Asoqqfb2OZC8Cu9Ud8ZgarF9cS3sntBIsY= @@ -421,10 +425,10 @@ github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5Rtn github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= github.com/cosmos/keyring v1.2.0/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= -github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= -github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= -github.com/cosmos/rosetta v0.50.3-1 h1:tqBTfS2I+SIT28zmlKHV/87qPELYrj5Dr5Z68EJvvzs= -github.com/cosmos/rosetta v0.50.3-1/go.mod h1:aayFO1rJpgOENMJPTm5TKJ8S8wIZoIfDjPot9xkMS5k= +github.com/cosmos/ledger-cosmos-go v0.14.0 h1:WfCHricT3rPbkPSVKRH+L4fQGKYHuGOK9Edpel8TYpE= +github.com/cosmos/ledger-cosmos-go v0.14.0/go.mod h1:E07xCWSBl3mTGofZ2QnL4cIUzMbbGVyik84QYKbX3RA= +github.com/cosmos/rosetta v0.50.12 h1:Dy8B5Hc6/aH1xxuUDYAVRvI2Dx5cilPsjCwG3INp6bE= +github.com/cosmos/rosetta v0.50.12/go.mod h1:w80RJd4oW5r6t89rajdZGJbI0mucZ1CSZdi+YeSTKow= github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM= github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -731,6 +735,8 @@ github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/goware/urlx v0.3.2 h1:gdoo4kBHlkqZNaf6XlQ12LGtQOmpKJrR04Rc3RnpJEo= +github.com/goware/urlx v0.3.2/go.mod h1:h8uwbJy68o+tQXCGZNa9D73WN8n0r9OBae5bUnLcgjw= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= From 75d72de50571f104e4bfbc1affe13468c19f2105 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 10:25:32 +0800 Subject: [PATCH 070/210] build(deps): bump github.com/hashicorp/go-metrics from 0.5.3 to 0.5.4 (#619) Bumps [github.com/hashicorp/go-metrics](https://github.com/hashicorp/go-metrics) from 0.5.3 to 0.5.4. - [Release notes](https://github.com/hashicorp/go-metrics/releases) - [Commits](https://github.com/hashicorp/go-metrics/compare/v0.5.3...v0.5.4) --- updated-dependencies: - dependency-name: github.com/hashicorp/go-metrics dependency-version: 0.5.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 94c8581c77..2de62b79a4 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( github.com/gorilla/mux v1.8.1 github.com/gorilla/websocket v1.5.3 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/hashicorp/go-metrics v0.5.3 + github.com/hashicorp/go-metrics v0.5.4 github.com/improbable-eng/grpc-web v0.15.0 github.com/onsi/ginkgo/v2 v2.23.4 github.com/onsi/gomega v1.37.0 diff --git a/go.sum b/go.sum index a5081a4922..5cef55bf0b 100644 --- a/go.sum +++ b/go.sum @@ -277,6 +277,7 @@ github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= @@ -763,8 +764,8 @@ github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVH github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE= -github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= +github.com/hashicorp/go-metrics v0.5.4 h1:8mmPiIJkTPPEbAiV97IxdAGNdRdaWwVap1BU6elejKY= +github.com/hashicorp/go-metrics v0.5.4/go.mod h1:CG5yz4NZ/AI/aQt9Ucm/vdBnbh7fvmv4lxZ350i+QQI= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= @@ -841,6 +842,7 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -1021,6 +1023,7 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -1037,6 +1040,7 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1045,6 +1049,7 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -1440,6 +1445,7 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1449,6 +1455,7 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From da33bb66599e4fcced2109bc5c2496d3597ef9c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 02:45:21 +0000 Subject: [PATCH 071/210] build(deps): bump github.com/spf13/cast from 1.8.0 to 1.9.2 (#618) Bumps [github.com/spf13/cast](https://github.com/spf13/cast) from 1.8.0 to 1.9.2. - [Release notes](https://github.com/spf13/cast/releases) - [Commits](https://github.com/spf13/cast/compare/v1.8.0...v1.9.2) --- updated-dependencies: - dependency-name: github.com/spf13/cast dependency-version: 1.9.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2de62b79a4..2c72db143d 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,7 @@ require ( github.com/onsi/gomega v1.37.0 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 - github.com/spf13/cast v1.8.0 + github.com/spf13/cast v1.9.2 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.20.1 github.com/status-im/keycard-go v0.3.3 diff --git a/go.sum b/go.sum index 5cef55bf0b..9d281ffe60 100644 --- a/go.sum +++ b/go.sum @@ -1098,8 +1098,8 @@ github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIK github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= -github.com/spf13/cast v1.8.0 h1:gEN9K4b8Xws4EX0+a0reLmhq8moKn7ntRlQYgjPeCDk= -github.com/spf13/cast v1.8.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cast v1.9.2 h1:SsGfm7M8QOFtEzumm7UZrZdLLquNdzFYfIbEXntcFbE= +github.com/spf13/cast v1.9.2/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= From c9c543d2467e7635fde9f4d23d45a2e8cb0be6c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 12:26:49 +0800 Subject: [PATCH 072/210] build(deps): bump google.golang.org/grpc from 1.67.3 to 1.73.0 (#613) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.67.3 to 1.73.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.67.3...v1.73.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-version: 1.73.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 37 +++++++++++++++------------- go.sum | 78 +++++++++++++++++++++++++++++++++------------------------- 2 files changed, 64 insertions(+), 51 deletions(-) diff --git a/go.mod b/go.mod index 2c72db143d..26ca847da9 100644 --- a/go.mod +++ b/go.mod @@ -52,14 +52,14 @@ require ( golang.org/x/net v0.41.0 golang.org/x/sync v0.15.0 golang.org/x/text v0.26.0 - google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 - google.golang.org/grpc v1.67.3 - google.golang.org/protobuf v1.36.5 + google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 + google.golang.org/grpc v1.73.0 + google.golang.org/protobuf v1.36.6 sigs.k8s.io/yaml v1.4.0 ) require ( - cel.dev/expr v0.16.1 // indirect + cel.dev/expr v0.23.0 // indirect cloud.google.com/go v0.116.0 // indirect cloud.google.com/go/auth v0.13.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect @@ -73,7 +73,7 @@ require ( github.com/99designs/keyring v1.2.2 // indirect github.com/DataDog/datadog-go v4.8.3+incompatible // indirect github.com/DataDog/zstd v1.5.5 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect @@ -92,11 +92,10 @@ require ( github.com/bytedance/sonic v1.13.1 // indirect github.com/bytedance/sonic/loader v0.2.4 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect - github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cloudwego/base64x v0.1.5 // indirect - github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect + github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect @@ -126,13 +125,14 @@ require ( github.com/dvsekhvalnov/jose2go v1.7.0 // indirect github.com/edsrzf/mmap-go v1.0.0 // indirect github.com/emicklei/dot v1.6.2 // indirect - github.com/envoyproxy/go-control-plane v0.13.1 // indirect - github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/fatih/color v1.17.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.8.0 // indirect github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect github.com/getsentry/sentry-go v0.28.1 // indirect + github.com/go-jose/go-jose/v4 v4.0.5 // indirect github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect @@ -219,6 +219,7 @@ require ( github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.12.0 // indirect github.com/spf13/pflag v1.0.6 // indirect + github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect @@ -230,31 +231,33 @@ require ( github.com/tklauser/numcpus v0.4.0 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ulikunitz/xz v0.5.11 // indirect + github.com/zeebo/errs v1.4.0 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect go.etcd.io/bbolt v1.4.0-alpha.1 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.29.0 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.35.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect - go.opentelemetry.io/otel v1.29.0 // indirect - go.opentelemetry.io/otel/metric v1.29.0 // indirect - go.opentelemetry.io/otel/sdk v1.29.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.29.0 // indirect - go.opentelemetry.io/otel/trace v1.29.0 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect + go.opentelemetry.io/otel/metric v1.35.0 // indirect + go.opentelemetry.io/otel/sdk v1.35.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.15.0 // indirect golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect - golang.org/x/oauth2 v0.25.0 // indirect + golang.org/x/oauth2 v0.28.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect golang.org/x/time v0.8.0 // indirect golang.org/x/tools v0.33.0 // indirect google.golang.org/api v0.215.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.1 // indirect diff --git a/go.sum b/go.sum index 9d281ffe60..561c2ddf52 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -cel.dev/expr v0.16.1 h1:NR0+oFYzR1CqLFhTAqg3ql59G9VfN8fKq1TCHJ6gq1g= -cel.dev/expr v0.16.1/go.mod h1:AsGA5zb3WruAEQeQng1RZdGEXmBj0jvMWh6l5SnNuC8= +cel.dev/expr v0.23.0 h1:wUb94w6OYQS4uXraxo9U+wUAs9jT47Xvl4iPgAwM2ss= +cel.dev/expr v0.23.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -234,8 +234,8 @@ github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bp github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 h1:3c8yed4lgqTt+oTQ+JNMDo+F4xprBf+O/il4ZC0nRLw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0/go.mod h1:obipzmGjfSjam60XLwGfqUkJsfiheAl+TUjG+4yzyPM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 h1:ErKg/3iS1AKcTkf3yixlZ54f9U1rljCkQyEXWUnIUxc= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo= @@ -339,8 +339,6 @@ github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= -github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -373,8 +371,8 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI= -github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f h1:C5bqEmzEPLsHm9Mv73lSE9e9bKV23aB1vxOsmZrkl3k= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -515,11 +513,15 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/go-control-plane v0.13.1 h1:vPfJZCkob6yTMEgS+0TwfTUfbHjfy/6vOJ8hUWX/uXE= -github.com/envoyproxy/go-control-plane v0.13.1/go.mod h1:X45hY0mufo6Fd0KW3rqsGvQMw58jvjymeCzBU3mWyHw= +github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= +github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= +github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= +github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= -github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= +github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= +github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= @@ -550,6 +552,8 @@ github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3Bop github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= +github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= @@ -1109,6 +1113,8 @@ github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= +github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= +github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/status-im/keycard-go v0.3.3 h1:qk/JHSkT9sMka+lVXrTOIVSgHIY7lDm46wrUqTsNa4s= github.com/status-im/keycard-go v0.3.3/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1179,6 +1185,8 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= +github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= @@ -1198,24 +1206,26 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/detectors/gcp v1.29.0 h1:TiaiXB4DpGD3sdzNlYQxruQngn5Apwzi1X0DRhuGvDQ= -go.opentelemetry.io/contrib/detectors/gcp v1.29.0/go.mod h1:GW2aWZNwR2ZxDLdv8OyC2G8zkRoQBuURgV7RPQgcPoU= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/detectors/gcp v1.35.0 h1:bGvFt68+KTiAKFlacHW6AhA56GF2rS0bdD3aJYEnmzA= +go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= -go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= -go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= -go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= -go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= -go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= -go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= -go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= -go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= -go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= -go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1374,8 +1384,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70= -golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= +golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1753,10 +1763,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= -google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q= -google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= +google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 h1:hE3bRWtU6uceqlh4fhrSnUyjKHMKB9KrTLLG+bc0ddM= +google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463/go.mod h1:U90ffi8eUL9MwPcrJylN5+Mk2v3vuPDptd5yyNUiRR8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 h1:e0AIkUUhxyBKh6ssZNrAMeqhA7RKUj42346d1y02i2g= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1798,8 +1808,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.67.3 h1:OgPcDAFKHnH8X3O4WcO4XUc8GRDeKsKReqbQtiCj7N8= -google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1816,8 +1826,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From bc72023debb109830568e86213645c47a5450f64 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 13:01:29 +0800 Subject: [PATCH 073/210] build(deps): bump cosmossdk.io/x/upgrade from 0.1.4 to 0.2.0 (#617) Bumps [cosmossdk.io/x/upgrade](https://github.com/cosmos/cosmos-sdk) from 0.1.4 to 0.2.0. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.2.0/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/x/upgrade/v0.1.4...v0.2.0) --- updated-dependencies: - dependency-name: cosmossdk.io/x/upgrade dependency-version: 0.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 71 ++--- go.sum | 844 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 812 insertions(+), 103 deletions(-) diff --git a/go.mod b/go.mod index 26ca847da9..abfc5f0b8a 100644 --- a/go.mod +++ b/go.mod @@ -3,25 +3,25 @@ module github.com/evmos/ethermint go 1.23.10 require ( - cosmossdk.io/api v0.7.6 + cosmossdk.io/api v0.9.2 cosmossdk.io/client/v2 v2.0.0-beta.5 - cosmossdk.io/collections v0.4.0 - cosmossdk.io/core v0.11.1 - cosmossdk.io/errors v1.0.1 + cosmossdk.io/collections v1.2.0 + cosmossdk.io/core v0.11.3 + cosmossdk.io/errors v1.0.2 cosmossdk.io/log v1.6.0 cosmossdk.io/math v1.5.3 - cosmossdk.io/store v1.1.1 + cosmossdk.io/store v1.1.2 cosmossdk.io/tools/confix v0.1.2 cosmossdk.io/x/evidence v0.1.1 cosmossdk.io/x/feegrant v0.1.1 - cosmossdk.io/x/tx v0.13.7 - cosmossdk.io/x/upgrade v0.1.4 + cosmossdk.io/x/tx v0.14.0 + cosmossdk.io/x/upgrade v0.2.0 github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcutil v1.1.6 - github.com/cometbft/cometbft v0.38.15 + github.com/cometbft/cometbft v0.38.17 github.com/cosmos/cosmos-db v1.1.3 github.com/cosmos/cosmos-proto v1.0.0-beta.5 - github.com/cosmos/cosmos-sdk v0.50.12 + github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.7.0 github.com/cosmos/ibc-go/modules/capability v1.0.1 @@ -42,7 +42,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 github.com/spf13/cast v1.9.2 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 github.com/spf13/viper v1.20.1 github.com/status-im/keycard-go v0.3.3 github.com/stretchr/testify v1.10.0 @@ -61,18 +61,19 @@ require ( require ( cel.dev/expr v0.23.0 // indirect cloud.google.com/go v0.116.0 // indirect - cloud.google.com/go/auth v0.13.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.6 // indirect + cloud.google.com/go/auth v0.14.1 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect cloud.google.com/go/compute/metadata v0.6.0 // indirect cloud.google.com/go/iam v1.2.2 // indirect cloud.google.com/go/monitoring v1.21.2 // indirect cloud.google.com/go/storage v1.49.0 // indirect - cosmossdk.io/depinject v1.1.0 // indirect + cosmossdk.io/depinject v1.2.0 // indirect + cosmossdk.io/schema v1.1.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect github.com/DataDog/datadog-go v4.8.3+incompatible // indirect - github.com/DataDog/zstd v1.5.5 // indirect + github.com/DataDog/zstd v1.5.7 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect @@ -89,7 +90,7 @@ require ( github.com/bits-and-blooms/bitset v1.8.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect - github.com/bytedance/sonic v1.13.1 // indirect + github.com/bytedance/sonic v1.13.2 // indirect github.com/bytedance/sonic/loader v0.2.4 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect @@ -101,7 +102,7 @@ require ( github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/pebble v1.1.5 // indirect - github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/redact v1.1.6 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect github.com/cometbft/cometbft-db v0.15.0 // indirect @@ -115,7 +116,7 @@ require ( github.com/creachadair/tomledit v0.0.24 // indirect github.com/danieljoos/wincred v1.2.1 // indirect github.com/deckarep/golang-set/v2 v2.1.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect github.com/desertbit/timer v1.0.1 // indirect github.com/dgraph-io/badger/v4 v4.3.0 // indirect github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91 // indirect @@ -129,7 +130,7 @@ require ( github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/fatih/color v1.17.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.8.0 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect github.com/getsentry/sentry-go v0.28.1 // indirect github.com/go-jose/go-jose/v4 v4.0.5 // indirect @@ -154,7 +155,7 @@ require ( github.com/google/go-cmp v0.7.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect - github.com/google/s2a-go v0.1.8 // indirect + github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect github.com/googleapis/gax-go/v2 v2.14.1 // indirect @@ -163,26 +164,26 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.5 // indirect + github.com/hashicorp/go-getter v1.7.8 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/go-plugin v1.6.1 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect - github.com/hashicorp/yamux v0.1.1 // indirect + github.com/hashicorp/yamux v0.1.2 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect github.com/holiman/bloomfilter/v2 v2.0.3 // indirect github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c // indirect - github.com/huandu/skiplist v1.2.0 // indirect + github.com/huandu/skiplist v1.2.1 // indirect github.com/huin/goupnp v1.0.3 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.18.0 // indirect github.com/klauspost/cpuid/v2 v2.2.10 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect @@ -201,13 +202,13 @@ require ( github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.20.5 // indirect + github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.60.1 // indirect + github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect @@ -238,8 +239,8 @@ require ( go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/detectors/gcp v1.35.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/metric v1.35.0 // indirect go.opentelemetry.io/otel/sdk v1.35.0 // indirect @@ -249,20 +250,20 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.15.0 // indirect golang.org/x/crypto v0.39.0 // indirect - golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect + golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect golang.org/x/oauth2 v0.28.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect - golang.org/x/time v0.8.0 // indirect + golang.org/x/time v0.10.0 // indirect golang.org/x/tools v0.33.0 // indirect - google.golang.org/api v0.215.0 // indirect + google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - gotest.tools/v3 v3.5.1 // indirect + gotest.tools/v3 v3.5.2 // indirect nhooyr.io/websocket v1.8.11 // indirect - pgregory.net/rapid v1.1.0 // indirect + pgregory.net/rapid v1.2.0 // indirect ) replace ( diff --git a/go.sum b/go.sum index 561c2ddf52..3f47f27003 100644 --- a/go.sum +++ b/go.sum @@ -5,6 +5,7 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= @@ -17,6 +18,7 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= @@ -28,32 +30,96 @@ cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+Y cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U= +cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= +cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= +cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= +cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= +cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= +cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= +cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= +cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= +cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= +cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= +cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= +cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= +cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= +cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= +cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= +cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= +cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= +cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= +cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= +cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= +cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= +cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= +cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= +cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= +cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= +cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= +cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= +cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= +cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= +cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= +cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= +cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= +cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= +cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= +cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= +cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= +cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/auth v0.13.0 h1:8Fu8TZy167JkW8Tj3q7dIkr2v4cndv41ouecJx0PAHs= -cloud.google.com/go/auth v0.13.0/go.mod h1:COOjD9gwfKNKz+IIduatIhYJQIc0mG3H102r/EMxX6Q= -cloud.google.com/go/auth/oauth2adapt v0.2.6 h1:V6a6XDu2lTwPZWOawrAa9HUK+DB2zfJyTuciBG5hFkU= -cloud.google.com/go/auth/oauth2adapt v0.2.6/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= +cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= +cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= +cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= +cloud.google.com/go/auth v0.14.1 h1:AwoJbzUdxA/whv1qj3TLKwh3XX5sikny2fc40wUl+h0= +cloud.google.com/go/auth v0.14.1/go.mod h1:4JHUxlGXisL0AW8kXPtUF6ztuOksyfUQNFjfsOCXkPM= +cloud.google.com/go/auth/oauth2adapt v0.2.7 h1:/Lc7xODdqcEw8IrZ9SvwnlLX6j9FHQM74z6cBk9Rw6M= +cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= +cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= +cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= +cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= +cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= +cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= +cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= +cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= +cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= +cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= +cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= +cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= +cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -61,12 +127,44 @@ cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUM cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= +cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= +cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= +cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= +cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= +cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= +cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= +cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= +cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= +cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= +cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= +cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= +cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= +cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= +cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= +cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= +cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= +cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= +cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= +cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= +cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= +cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= +cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= +cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= +cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= +cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= +cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= +cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= +cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= @@ -74,155 +172,479 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= +cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= +cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= +cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= +cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= +cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= +cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= +cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= +cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= +cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= +cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= +cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= +cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= +cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= +cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= +cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= +cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= +cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= +cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= +cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= +cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= +cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= +cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= +cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= +cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= +cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= +cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= +cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= +cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= +cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= +cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= +cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= +cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= +cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= +cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= +cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= +cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= +cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= +cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= +cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= +cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= +cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= +cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= +cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= +cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= +cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= +cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= +cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= +cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= +cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= +cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= +cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= +cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= +cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= +cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= +cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= +cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= +cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= +cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= +cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= +cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= +cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= +cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= +cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= +cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= +cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= +cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= +cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= +cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= +cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= +cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= +cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= +cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= cloud.google.com/go/iam v1.2.2 h1:ozUSofHUGf/F4tCNy/mu9tHLTaxZFLOUiKzjcgWHGIA= cloud.google.com/go/iam v1.2.2/go.mod h1:0Ys8ccaZHdI1dEUilwzqng/6ps2YB6vRsjIe00/+6JY= +cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= +cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= +cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= +cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= +cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= +cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= +cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= +cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= +cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= +cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= +cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= +cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= +cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= +cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= +cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= +cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= +cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= +cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= +cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= +cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= +cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= +cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= cloud.google.com/go/logging v1.12.0 h1:ex1igYcGFd4S/RZWOCU51StlIEuey5bjqwH9ZYjHibk= cloud.google.com/go/logging v1.12.0/go.mod h1:wwYBt5HlYP1InnrtYI0wtwttpVU1rifnMT7RejksUAM= +cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= +cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= cloud.google.com/go/longrunning v0.6.2 h1:xjDfh1pQcWPEvnfjZmwjKQEcHnpz6lHjfy7Fo0MK+hc= cloud.google.com/go/longrunning v0.6.2/go.mod h1:k/vIs83RN4bE3YCswdXC5PFfWVILjm3hpEUlSko4PiI= +cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= +cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= +cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= +cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= +cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= +cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= +cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= +cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= +cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= +cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= +cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= +cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= +cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= +cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= cloud.google.com/go/monitoring v1.21.2 h1:FChwVtClH19E7pJ+e0xUhJPGksctZNVOk2UhMmblmdU= cloud.google.com/go/monitoring v1.21.2/go.mod h1:hS3pXvaG8KgWTSz+dAdyzPrGUYmi2Q+WFX8g2hqVEZU= cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= +cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= +cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= +cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= +cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= +cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= +cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= +cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= +cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= +cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= +cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= +cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= +cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= +cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= +cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= +cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= +cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= +cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= +cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= +cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= +cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= +cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= +cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= +cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= +cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= +cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= +cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= +cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= +cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= +cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= +cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= +cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= +cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= +cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= +cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= +cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= +cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= +cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= +cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= +cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= +cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= +cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= +cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= +cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= +cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= +cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= +cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= +cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= +cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= +cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= +cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= +cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= +cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= +cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= +cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= +cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= +cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= +cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= +cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= +cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= +cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= +cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= +cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= +cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= +cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= +cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= +cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= +cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= +cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= +cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= +cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= +cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= +cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= +cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= +cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= +cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= +cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= +cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= +cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= +cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= +cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= +cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= +cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= +cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= +cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= +cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= +cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= +cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= +cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= +cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= cloud.google.com/go/storage v1.49.0 h1:zenOPBOWHCnojRd9aJZAyQXBYqkJkdQS42dxL55CIMw= cloud.google.com/go/storage v1.49.0/go.mod h1:k1eHhhpLvrPjVGfo0mOUPEJ4Y2+a/Hv5PiwehZI9qGU= +cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= +cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= +cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= +cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= +cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= +cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= +cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= +cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= +cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= +cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= +cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= +cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= +cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= +cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= +cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= +cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= cloud.google.com/go/trace v1.11.2 h1:4ZmaBdL8Ng/ajrgKqY5jfvzqMXbrDcBsUGXOT9aqTtI= cloud.google.com/go/trace v1.11.2/go.mod h1:bn7OwXd4pd5rFuAnTrzBuoZ4ax2XQeG3qNgYmfCy0Io= +cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= +cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= +cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= +cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= +cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= +cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= +cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= +cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= +cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= +cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= +cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= +cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= +cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= +cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= +cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= +cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= +cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= +cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= +cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= +cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= +cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= +cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= +cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= +cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= +cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= +cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= +cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= +cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cosmossdk.io/api v0.7.6 h1:PC20PcXy1xYKH2KU4RMurVoFjjKkCgYRbVAD4PdqUuY= -cosmossdk.io/api v0.7.6/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= +cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= +cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= +cosmossdk.io/api v0.9.2 h1:9i9ptOBdmoIEVEVWLtYYHjxZonlF/aOVODLFaxpmNtg= +cosmossdk.io/api v0.9.2/go.mod h1:CWt31nVohvoPMTlPv+mMNCtC0a7BqRdESjCsstHcTkU= cosmossdk.io/client/v2 v2.0.0-beta.5 h1:0LVv3nEByn//hFDIrYLs2WvsEU3HodOelh4SDHnA/1I= cosmossdk.io/client/v2 v2.0.0-beta.5/go.mod h1:4p0P6o0ro+FizakJUYS9SeM94RNbv0thLmkHRw5o5as= -cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= -cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= -cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= -cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= -cosmossdk.io/depinject v1.1.0 h1:wLan7LG35VM7Yo6ov0jId3RHWCGRhe8E8bsuARorl5E= -cosmossdk.io/depinject v1.1.0/go.mod h1:kkI5H9jCGHeKeYWXTqYdruogYrEeWvBQCw1Pj4/eCFI= -cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= -cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/collections v1.2.0 h1:IesfVG8G/+FYCMVMP01frS/Cw99Omk5vBh3cHbO01Gg= +cosmossdk.io/collections v1.2.0/go.mod h1:4NkMoYw6qRA8fnSH/yn1D/MOutr8qyQnwsO50Mz9ItU= +cosmossdk.io/core v0.11.3 h1:mei+MVDJOwIjIniaKelE3jPDqShCc/F4LkNNHh+4yfo= +cosmossdk.io/core v0.11.3/go.mod h1:9rL4RE1uDt5AJ4Tg55sYyHWXA16VmpHgbe0PbJc6N2Y= +cosmossdk.io/depinject v1.2.0 h1:6NW/FSK1IkWTrX7XxUpBmX1QMBozpEI9SsWkKTBc5zw= +cosmossdk.io/depinject v1.2.0/go.mod h1:pvitjtUxZZZTQESKNS9KhGjWVslJZxtO9VooRJYyPjk= +cosmossdk.io/errors v1.0.2 h1:wcYiJz08HThbWxd/L4jObeLaLySopyyuUFB5w4AGpCo= +cosmossdk.io/errors v1.0.2/go.mod h1:0rjgiHkftRYPj//3DrD6y8hcm40HcPv/dR4R/4efr0k= cosmossdk.io/log v1.6.0 h1:SJIOmJ059wi1piyRgNRXKXhlDXGqnB5eQwhcZKv2tOk= cosmossdk.io/log v1.6.0/go.mod h1:5cXXBvfBkR2/BcXmosdCSLXllvgSjphrrDVdfVRmBGM= cosmossdk.io/math v1.5.3 h1:WH6tu6Z3AUCeHbeOSHg2mt9rnoiUWVWaQ2t6Gkll96U= cosmossdk.io/math v1.5.3/go.mod h1:uqcZv7vexnhMFJF+6zh9EWdm/+Ylyln34IvPnBauPCQ= +cosmossdk.io/schema v1.1.0 h1:mmpuz3dzouCoyjjcMcA/xHBEmMChN+EHh8EHxHRHhzE= +cosmossdk.io/schema v1.1.0/go.mod h1:Gb7pqO+tpR+jLW5qDcNOSv0KtppYs7881kfzakguhhI= cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4= cosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo= cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4= cosmossdk.io/x/evidence v0.1.1/go.mod h1:OoDsWlbtuyqS70LY51aX8FBTvguQqvFrt78qL7UzeNc= cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8= cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ= -cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38= -cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo= +cosmossdk.io/x/upgrade v0.2.0 h1:ZHy0xny3wBCSLomyhE06+UmQHWO8cYlVYjfFAJxjz5g= +cosmossdk.io/x/upgrade v0.2.0/go.mod h1:DXDtkvi//TrFyHWSOaeCZGBoiGAE6Rs8/0ABt2pcDD0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= @@ -232,8 +654,8 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q= github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= -github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= +github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 h1:ErKg/3iS1AKcTkf3yixlZ54f9U1rljCkQyEXWUnIUxc= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s= @@ -242,6 +664,7 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0 github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1/go.mod h1:0wEl7vrAD8mehJyohS9HZy+WyEOaQO2mJx86Cvh93kM= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 h1:8nn+rsCvTq9axyEh382S0PFLBeaFwNsT43IrPWzctRU= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= 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= @@ -264,6 +687,10 @@ github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I= github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -272,9 +699,13 @@ github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk5 github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKSc= github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= +github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= @@ -298,6 +729,8 @@ github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE5 github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bits-and-blooms/bitset v1.8.0 h1:FD+XqgOZDUxxZ8hzoBFuV9+cGWY9CslN6d5MS5JVb4c= github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A= @@ -327,8 +760,8 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtE github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= -github.com/bytedance/sonic v1.13.1 h1:Jyd5CIvdFnkOWuKXr+wm4Nyk2h0yAFsr8ucJgEasO3g= -github.com/bytedance/sonic v1.13.1/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= +github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ= +github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= @@ -339,10 +772,13 @@ github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= @@ -366,11 +802,15 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f h1:C5bqEmzEPLsHm9Mv73lSE9e9bKV23aB1vxOsmZrkl3k= github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= @@ -386,8 +826,8 @@ github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZe github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/pebble v1.1.5 h1:5AAWCBWbat0uE0blr8qzufZP5tBjkRyy/jWe1QWLnvw= github.com/cockroachdb/pebble v1.1.5/go.mod h1:17wO9el1YEigxkP/YtV8NtCivQDgoCyBg5c4VR/eOWo= -github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= -github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/redact v1.1.6 h1:zXJBwDZ84xJNlHl1rMyCojqyIxv+7YUpQiJLQ7n4314= +github.com/cockroachdb/redact v1.1.6/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= @@ -431,8 +871,8 @@ github.com/cosmos/rosetta v0.50.12/go.mod h1:w80RJd4oW5r6t89rajdZGJbI0mucZ1CSZdi github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzUGSKFTcM= github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creachadair/atomicfile v0.3.1 h1:yQORkHjSYySh/tv5th1dkKcn02NEW5JleB84sjt+W4Q= github.com/creachadair/atomicfile v0.3.1/go.mod h1:mwfrkRxFKwpNAflYZzytbSwxvbK6fdGRRlp0KEQc0qU= github.com/creachadair/tomledit v0.0.24 h1:5Xjr25R2esu1rKCbQEmjZYlrhFkDspoAbAKb6QKQDhQ= @@ -463,11 +903,11 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8Yc github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= -github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U0x++OzVrdms8= +github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo= @@ -486,12 +926,14 @@ github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKoh github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7 h1:kgvzE5wLsLa7XKfV85VZl40QXaMCaeFtHpPwJ8fhotY= github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7/go.mod h1:yRkwfj0CBpOGre+TwBsqPV0IH0Pk73e4PXJOeNDboGs= github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/dvsekhvalnov/jose2go v1.7.0 h1:bnQc8+GMnidJZA8zc6lLEAb4xNrIqHwO+9TzqvtQZPo= @@ -513,6 +955,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= +github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= @@ -520,6 +964,9 @@ github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1 github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -530,6 +977,8 @@ github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2 github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= @@ -538,8 +987,8 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k= @@ -549,6 +998,11 @@ github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -562,6 +1016,8 @@ github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4F github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= @@ -574,6 +1030,8 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= @@ -591,6 +1049,7 @@ github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlnd github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -608,7 +1067,10 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -643,6 +1105,7 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -654,6 +1117,7 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/flatbuffers v24.3.25+incompatible h1:CX395cjN9Kke9mmalRoL3d81AtFUxJM+yDthflgJGkI= github.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -671,6 +1135,7 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= @@ -682,6 +1147,7 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= @@ -695,6 +1161,7 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= @@ -703,8 +1170,8 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= -github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= +github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= +github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -713,6 +1180,8 @@ github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -724,9 +1193,12 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q= github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= @@ -750,6 +1222,8 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= @@ -761,8 +1235,8 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.5 h1:dT58k9hQ/vbxNMwoI5+xFYAJuv6152UNvdHokfI5wE4= -github.com/hashicorp/go-getter v1.7.5/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.8 h1:mshVHx1Fto0/MydBekWan5zUipGq7jO0novchgMmSiY= +github.com/hashicorp/go-getter v1.7.8/go.mod h1:2c6CboOEb9jG6YvmC9xdD+tyAFsrUaJPedwXDGr0TM4= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -772,8 +1246,8 @@ github.com/hashicorp/go-metrics v0.5.4 h1:8mmPiIJkTPPEbAiV97IxdAGNdRdaWwVap1BU6e github.com/hashicorp/go-metrics v0.5.4/go.mod h1:CG5yz4NZ/AI/aQt9Ucm/vdBnbh7fvmv4lxZ350i+QQI= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= -github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= @@ -798,8 +1272,8 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= -github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8= +github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU= github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= @@ -809,12 +1283,13 @@ github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c/go.mod h1:SC8Ryt github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= -github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= -github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= +github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w= +github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -852,22 +1327,28 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -887,6 +1368,9 @@ github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-b github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= +github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= @@ -911,8 +1395,11 @@ github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -998,13 +1485,17 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= -github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw= github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= @@ -1013,6 +1504,8 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -1028,14 +1521,15 @@ github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeD github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -1045,8 +1539,8 @@ github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8b github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1059,6 +1553,7 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= @@ -1077,6 +1572,8 @@ github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= @@ -1100,13 +1597,16 @@ github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJ github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= github.com/spf13/cast v1.9.2 h1:SsGfm7M8QOFtEzumm7UZrZdLLquNdzFYfIbEXntcFbE= github.com/spf13/cast v1.9.2/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= @@ -1136,6 +1636,7 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -1184,9 +1685,12 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= @@ -1210,10 +1714,10 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/detectors/gcp v1.35.0 h1:bGvFt68+KTiAKFlacHW6AhA56GF2rS0bdD3aJYEnmzA= go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 h1:PS8wXpbyaDJQ2VDHHncMe9Vct0Zn1fEjpsjrLxGJoSc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0/go.mod h1:HDBUsEjOuRC0EzKZ1bSaRGZWUBAzo+MhAcUUORSr4D0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= @@ -1227,6 +1731,8 @@ go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstF go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -1252,16 +1758,27 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -1269,10 +1786,22 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= -golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= +golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= +golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= +golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1296,7 +1825,15 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1339,12 +1876,15 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -1355,8 +1895,21 @@ golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1382,8 +1935,12 @@ golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7Lm golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1399,7 +1956,13 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1457,12 +2020,15 @@ golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1472,9 +2038,12 @@ golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1495,15 +2064,37 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1515,20 +2106,35 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= -golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1542,6 +2148,7 @@ golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1575,17 +2182,25 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1596,6 +2211,14 @@ golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= +gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1644,9 +2267,18 @@ google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaE google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.215.0 h1:jdYF4qnyczlEz2ReWIsosNLDuzXyvFHJtI5gcr0J7t0= -google.golang.org/api v0.215.0/go.mod h1:fta3CVtuJYOEdugLNWm6WodzOS8KdFckABwN4I40hzY= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= +google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/api v0.222.0 h1:Aiewy7BKLCuq6cUCeOUrsAlzjXPqBkEeQ/iwGHVQa/4= +google.golang.org/api v0.222.0/go.mod h1:efZia3nXpWELrwMlN5vyQrD4GmJN1Vw0x68Et3r+a9c= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1693,8 +2325,10 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1728,6 +2362,7 @@ google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2 google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= @@ -1760,13 +2395,41 @@ google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53B google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= +google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= +google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 h1:hE3bRWtU6uceqlh4fhrSnUyjKHMKB9KrTLLG+bc0ddM= google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463/go.mod h1:U90ffi8eUL9MwPcrJylN5+Mk2v3vuPDptd5yyNUiRR8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 h1:e0AIkUUhxyBKh6ssZNrAMeqhA7RKUj42346d1y02i2g= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f h1:N/PrbTw4kdkqNRzVfWPrBekzLuarFREcbFOiOLkXon4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1799,6 +2462,7 @@ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= @@ -1808,6 +2472,11 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= @@ -1826,6 +2495,9 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -1862,8 +2534,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= -gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1872,13 +2544,49 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= +modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= +modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= +modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= +modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= +modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= +modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= +modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= +modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= +modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= +modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0= nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= -pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= -pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= +pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= From fac790eca4a19f45c4ee00a2e659a7a24229996d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 14:03:26 +0800 Subject: [PATCH 074/210] build(deps): bump cosmossdk.io/collections from 0.4.0 to 1.3.0 (#616) Bumps [cosmossdk.io/collections](https://github.com/cosmos/cosmos-sdk) from 0.4.0 to 1.3.0. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/v0.4.0...log/v1.3.0) --- updated-dependencies: - dependency-name: cosmossdk.io/collections dependency-version: 1.3.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 22 ++++++++++++---------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index abfc5f0b8a..ba8ea8ef8f 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.23.10 require ( cosmossdk.io/api v0.9.2 cosmossdk.io/client/v2 v2.0.0-beta.5 - cosmossdk.io/collections v1.2.0 + cosmossdk.io/collections v1.3.1 cosmossdk.io/core v0.11.3 cosmossdk.io/errors v1.0.2 cosmossdk.io/log v1.6.0 @@ -98,9 +98,9 @@ require ( github.com/cloudwego/base64x v0.1.5 // indirect github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect - github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/errors v1.12.0 // indirect github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect - github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 // indirect github.com/cockroachdb/pebble v1.1.5 // indirect github.com/cockroachdb/redact v1.1.6 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect @@ -132,7 +132,7 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect - github.com/getsentry/sentry-go v0.28.1 // indirect + github.com/getsentry/sentry-go v0.33.0 // indirect github.com/go-jose/go-jose/v4 v4.0.5 // indirect github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect diff --git a/go.sum b/go.sum index 3f47f27003..c2b0ce807b 100644 --- a/go.sum +++ b/go.sum @@ -618,8 +618,8 @@ cosmossdk.io/api v0.9.2 h1:9i9ptOBdmoIEVEVWLtYYHjxZonlF/aOVODLFaxpmNtg= cosmossdk.io/api v0.9.2/go.mod h1:CWt31nVohvoPMTlPv+mMNCtC0a7BqRdESjCsstHcTkU= cosmossdk.io/client/v2 v2.0.0-beta.5 h1:0LVv3nEByn//hFDIrYLs2WvsEU3HodOelh4SDHnA/1I= cosmossdk.io/client/v2 v2.0.0-beta.5/go.mod h1:4p0P6o0ro+FizakJUYS9SeM94RNbv0thLmkHRw5o5as= -cosmossdk.io/collections v1.2.0 h1:IesfVG8G/+FYCMVMP01frS/Cw99Omk5vBh3cHbO01Gg= -cosmossdk.io/collections v1.2.0/go.mod h1:4NkMoYw6qRA8fnSH/yn1D/MOutr8qyQnwsO50Mz9ItU= +cosmossdk.io/collections v1.3.1 h1:09e+DUId2brWsNOQ4nrk+bprVmMUaDH9xvtZkeqIjVw= +cosmossdk.io/collections v1.3.1/go.mod h1:ynvkP0r5ruAjbmedE+vQ07MT6OtJ0ZIDKrtJHK7Q/4c= cosmossdk.io/core v0.11.3 h1:mei+MVDJOwIjIniaKelE3jPDqShCc/F4LkNNHh+4yfo= cosmossdk.io/core v0.11.3/go.mod h1:9rL4RE1uDt5AJ4Tg55sYyHWXA16VmpHgbe0PbJc6N2Y= cosmossdk.io/depinject v1.2.0 h1:6NW/FSK1IkWTrX7XxUpBmX1QMBozpEI9SsWkKTBc5zw= @@ -818,12 +818,12 @@ github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOG github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= -github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/errors v1.12.0 h1:d7oCs6vuIMUQRVbi6jWWWEJZahLCfJpnJSVobd1/sUo= +github.com/cockroachdb/errors v1.12.0/go.mod h1:SvzfYNNBshAVbZ8wzNc/UPK3w1vf0dKDUP41ucAIf7g= github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a h1:f52TdbU4D5nozMAhO9TvTJ2ZMCXtN4VIAmfrrZ0JXQ4= github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= -github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= -github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 h1:ASDL+UJcILMqgNeV5jiqR4j+sTuvQNHdf2chuKj1M5k= +github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506/go.mod h1:Mw7HqKr2kdtu6aYGn3tPmAftiP3QPX63LdK/zcariIo= github.com/cockroachdb/pebble v1.1.5 h1:5AAWCBWbat0uE0blr8qzufZP5tBjkRyy/jWe1QWLnvw= github.com/cockroachdb/pebble v1.1.5/go.mod h1:17wO9el1YEigxkP/YtV8NtCivQDgoCyBg5c4VR/eOWo= github.com/cockroachdb/redact v1.1.6 h1:zXJBwDZ84xJNlHl1rMyCojqyIxv+7YUpQiJLQ7n4314= @@ -991,8 +991,8 @@ github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k= -github.com/getsentry/sentry-go v0.28.1/go.mod h1:1fQZ+7l7eeJ3wYi82q5Hg8GqAPgefRq+FP/QhafYVgg= +github.com/getsentry/sentry-go v0.33.0 h1:YWyDii0KGVov3xOaamOnF0mjOrqSjBqwv48UEzn7QFg= +github.com/getsentry/sentry-go v0.33.0/go.mod h1:C55omcY9ChRQIUcVcGcs+Zdy4ZpQGvNJ7JYHIoSWOtE= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= @@ -1438,8 +1438,8 @@ github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= -github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= @@ -1740,6 +1740,8 @@ go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= From c34cfe21e22b885e4cca38117db450e498e05a63 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 11:43:24 +0800 Subject: [PATCH 075/210] build(deps): bump brace-expansion in /tests/solidity (#620) Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12. - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 1.1.12 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- tests/solidity/yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/solidity/yarn.lock b/tests/solidity/yarn.lock index b2c1823a89..0bdc1cdd79 100644 --- a/tests/solidity/yarn.lock +++ b/tests/solidity/yarn.lock @@ -3582,17 +3582,17 @@ borc@^2.1.2: readable-stream "^3.6.0" brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== dependencies: balanced-match "^1.0.0" From f9a068a05fa5c4ebd6516b9dcee1472ccfea429c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 11:57:12 +0800 Subject: [PATCH 076/210] build(deps): bump undici in /tests/integration_tests/hardhat (#589) Bumps [undici](https://github.com/nodejs/undici) from 5.28.2 to 5.29.0. - [Release notes](https://github.com/nodejs/undici/releases) - [Commits](https://github.com/nodejs/undici/compare/v5.28.2...v5.29.0) --- updated-dependencies: - dependency-name: undici dependency-version: 5.29.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/integration_tests/hardhat/package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/integration_tests/hardhat/package-lock.json b/tests/integration_tests/hardhat/package-lock.json index 7e178ca74d..518a2628ab 100644 --- a/tests/integration_tests/hardhat/package-lock.json +++ b/tests/integration_tests/hardhat/package-lock.json @@ -8353,9 +8353,10 @@ } }, "node_modules/undici": { - "version": "5.28.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", - "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "license": "MIT", "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -14963,9 +14964,9 @@ } }, "undici": { - "version": "5.28.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", - "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", "requires": { "@fastify/busboy": "^2.0.0" } From e5097e63f6f683d8762c4a4ee0d8f026d9d2164e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 12:11:51 +0800 Subject: [PATCH 077/210] build(deps): bump base-x in /tests/integration_tests/hardhat (#622) Bumps [base-x](https://github.com/cryptocoinjs/base-x) from 3.0.9 to 3.0.11. - [Commits](https://github.com/cryptocoinjs/base-x/compare/v3.0.9...v3.0.11) --- updated-dependencies: - dependency-name: base-x dependency-version: 3.0.11 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- tests/integration_tests/hardhat/package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/integration_tests/hardhat/package-lock.json b/tests/integration_tests/hardhat/package-lock.json index 518a2628ab..d44c213052 100644 --- a/tests/integration_tests/hardhat/package-lock.json +++ b/tests/integration_tests/hardhat/package-lock.json @@ -2861,9 +2861,10 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "license": "MIT", "dependencies": { "safe-buffer": "^5.0.1" } @@ -10884,9 +10885,9 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", "requires": { "safe-buffer": "^5.0.1" } From f62f80ac46838b4fc84d2e06833988f75fa59d74 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 12:14:16 +0800 Subject: [PATCH 078/210] build(deps): bump base-x from 3.0.9 to 3.0.11 in /tests/solidity (#623) Bumps [base-x](https://github.com/cryptocoinjs/base-x) from 3.0.9 to 3.0.11. - [Commits](https://github.com/cryptocoinjs/base-x/compare/v3.0.9...v3.0.11) --- updated-dependencies: - dependency-name: base-x dependency-version: 3.0.11 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/solidity/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/solidity/yarn.lock b/tests/solidity/yarn.lock index 0bdc1cdd79..71791daf02 100644 --- a/tests/solidity/yarn.lock +++ b/tests/solidity/yarn.lock @@ -3337,9 +3337,9 @@ balanced-match@^1.0.0: integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base-x@^3.0.2, base-x@^3.0.8: - version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" - integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + version "3.0.11" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.11.tgz#40d80e2a1aeacba29792ccc6c5354806421287ff" + integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== dependencies: safe-buffer "^5.0.1" From 819de048faae45c83cd2777ca0f61873f67cdf29 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 12:24:27 +0800 Subject: [PATCH 079/210] build(deps): bump @babel/runtime in /tests/solidity (#625) Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.24.4 to 7.27.6. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.27.6/packages/babel-runtime) --- updated-dependencies: - dependency-name: "@babel/runtime" dependency-version: 7.27.6 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/solidity/yarn.lock | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/tests/solidity/yarn.lock b/tests/solidity/yarn.lock index 71791daf02..1d76b3cbbf 100644 --- a/tests/solidity/yarn.lock +++ b/tests/solidity/yarn.lock @@ -194,11 +194,9 @@ semver "^6.3.1" "@babel/runtime@^7.12.1", "@babel/runtime@^7.17.2", "@babel/runtime@^7.21.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd" - integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== - dependencies: - regenerator-runtime "^0.14.0" + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.6.tgz#ec4070a04d76bae8ddbb10770ba55714a417b7c6" + integrity sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q== "@babel/types@^7.24.0": version "7.24.0" @@ -10853,11 +10851,6 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" From eca5019c9c3e4a90ea51a84bb8e4f160f9ce2a82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 13:19:17 +0800 Subject: [PATCH 080/210] build(deps): bump the npm_and_yarn group across 2 directories with 15 updates (#627) Bumps the npm_and_yarn group with 9 updates in the /tests/integration_tests/hardhat directory: | Package | From | To | | --- | --- | --- | | [@openzeppelin/contracts](https://github.com/OpenZeppelin/openzeppelin-contracts) | `4.9.5` | `4.9.6` | | [braces](https://github.com/micromatch/braces) | `3.0.2` | `3.0.3` | | [elliptic](https://github.com/indutny/elliptic) | `6.5.4` | `6.6.1` | | [ethers](https://github.com/ethers-io/ethers.js) | `5.7.2` | `5.8.0` | | [@ethersproject/signing-key](https://github.com/ethers-io/ethers.js/tree/HEAD/packages/signing-key) | `5.7.0` | `5.8.0` | | [follow-redirects](https://github.com/follow-redirects/follow-redirects) | `1.15.5` | `1.15.9` | | [secp256k1](https://github.com/cryptocoinjs/secp256k1-node) | `4.0.3` | `4.0.4` | | [mocha](https://github.com/mochajs/mocha) | `10.2.0` | `10.8.2` | | [ws](https://github.com/websockets/ws) | `7.4.6` | `7.5.10` | Bumps the npm_and_yarn group with 3 updates in the /tests/solidity directory: [follow-redirects](https://github.com/follow-redirects/follow-redirects), [cross-spawn](https://github.com/moxystudio/node-cross-spawn) and [express](https://github.com/expressjs/express). Updates `@openzeppelin/contracts` from 4.9.5 to 4.9.6 - [Release notes](https://github.com/OpenZeppelin/openzeppelin-contracts/releases) - [Changelog](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md) - [Commits](https://github.com/OpenZeppelin/openzeppelin-contracts/compare/v4.9.5...v4.9.6) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `elliptic` from 6.5.4 to 6.6.1 - [Commits](https://github.com/indutny/elliptic/compare/v6.5.4...v6.6.1) Updates `ethers` from 5.7.2 to 5.8.0 - [Release notes](https://github.com/ethers-io/ethers.js/releases) - [Changelog](https://github.com/ethers-io/ethers.js/blob/v5.8.0/CHANGELOG.md) - [Commits](https://github.com/ethers-io/ethers.js/compare/v5.7.2...v5.8.0) Updates `@ethersproject/signing-key` from 5.7.0 to 5.8.0 - [Release notes](https://github.com/ethers-io/ethers.js/releases) - [Changelog](https://github.com/ethers-io/ethers.js/blob/v5.8.0/CHANGELOG.md) - [Commits](https://github.com/ethers-io/ethers.js/commits/v5.8.0/packages/signing-key) Updates `ethers` from 5.7.2 to 5.8.0 - [Release notes](https://github.com/ethers-io/ethers.js/releases) - [Changelog](https://github.com/ethers-io/ethers.js/blob/v5.8.0/CHANGELOG.md) - [Commits](https://github.com/ethers-io/ethers.js/compare/v5.7.2...v5.8.0) Updates `follow-redirects` from 1.15.5 to 1.15.9 - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.9) Updates `secp256k1` from 4.0.3 to 4.0.4 - [Release notes](https://github.com/cryptocoinjs/secp256k1-node/releases) - [Commits](https://github.com/cryptocoinjs/secp256k1-node/compare/v4.0.3...v4.0.4) Updates `mocha` from 10.2.0 to 10.8.2 - [Release notes](https://github.com/mochajs/mocha/releases) - [Changelog](https://github.com/mochajs/mocha/blob/main/CHANGELOG.md) - [Commits](https://github.com/mochajs/mocha/compare/v10.2.0...v10.8.2) Updates `serialize-javascript` from 6.0.0 to 6.0.2 - [Release notes](https://github.com/yahoo/serialize-javascript/releases) - [Commits](https://github.com/yahoo/serialize-javascript/compare/v6.0.0...v6.0.2) Updates `ws` from 7.4.6 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.4.6...7.5.10) Updates `@ethersproject/signing-key` from 5.7.0 to 5.8.0 - [Release notes](https://github.com/ethers-io/ethers.js/releases) - [Changelog](https://github.com/ethers-io/ethers.js/blob/v5.8.0/CHANGELOG.md) - [Commits](https://github.com/ethers-io/ethers.js/commits/v5.8.0/packages/signing-key) Updates `braces` from 3.0.2 to 3.0.3 - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) Updates `ethers` from 5.7.2 to 5.8.0 - [Release notes](https://github.com/ethers-io/ethers.js/releases) - [Changelog](https://github.com/ethers-io/ethers.js/blob/v5.8.0/CHANGELOG.md) - [Commits](https://github.com/ethers-io/ethers.js/compare/v5.7.2...v5.8.0) Updates `follow-redirects` from 1.15.5 to 1.15.9 - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.9) Updates `mocha` from 10.2.0 to 10.8.2 - [Release notes](https://github.com/mochajs/mocha/releases) - [Changelog](https://github.com/mochajs/mocha/blob/main/CHANGELOG.md) - [Commits](https://github.com/mochajs/mocha/compare/v10.2.0...v10.8.2) Updates `serialize-javascript` from 6.0.0 to 6.0.2 - [Release notes](https://github.com/yahoo/serialize-javascript/releases) - [Commits](https://github.com/yahoo/serialize-javascript/compare/v6.0.0...v6.0.2) Updates `ws` from 7.4.6 to 7.5.10 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.4.6...7.5.10) Updates `follow-redirects` from 1.15.6 to 1.15.9 - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.9) Updates `cross-spawn` from 6.0.5 to 6.0.6 - [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/v6.0.6/CHANGELOG.md) - [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v6.0.5...v6.0.6) Updates `express` from 4.19.2 to 4.21.2 - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/4.21.2/History.md) - [Commits](https://github.com/expressjs/express/compare/4.19.2...4.21.2) Updates `follow-redirects` from 1.15.6 to 1.15.9 - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.9) Updates `path-to-regexp` from 0.1.7 to 0.1.12 - [Release notes](https://github.com/pillarjs/path-to-regexp/releases) - [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md) - [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.7...v0.1.12) Updates `send` from 0.18.0 to 0.19.0 - [Release notes](https://github.com/pillarjs/send/releases) - [Changelog](https://github.com/pillarjs/send/blob/master/HISTORY.md) - [Commits](https://github.com/pillarjs/send/compare/0.18.0...0.19.0) Updates `serve-static` from 1.15.0 to 1.16.2 - [Release notes](https://github.com/expressjs/serve-static/releases) - [Changelog](https://github.com/expressjs/serve-static/blob/v1.16.2/HISTORY.md) - [Commits](https://github.com/expressjs/serve-static/compare/v1.15.0...v1.16.2) --- updated-dependencies: - dependency-name: "@openzeppelin/contracts" dependency-version: 4.9.6 dependency-type: direct:production dependency-group: npm_and_yarn - dependency-name: braces dependency-version: 3.0.3 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: elliptic dependency-version: 6.6.1 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: ethers dependency-version: 5.8.0 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: "@ethersproject/signing-key" dependency-version: 5.8.0 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: ethers dependency-version: 5.8.0 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: follow-redirects dependency-version: 1.15.9 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: secp256k1 dependency-version: 4.0.4 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: mocha dependency-version: 10.8.2 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: serialize-javascript dependency-version: 6.0.2 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: ws dependency-version: 7.5.10 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: "@ethersproject/signing-key" dependency-version: 5.8.0 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: braces dependency-version: 3.0.3 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: ethers dependency-version: 5.8.0 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: follow-redirects dependency-version: 1.15.9 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: mocha dependency-version: 10.8.2 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: serialize-javascript dependency-version: 6.0.2 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: ws dependency-version: 7.5.10 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: follow-redirects dependency-version: 1.15.9 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: cross-spawn dependency-version: 6.0.6 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: express dependency-version: 4.21.2 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: follow-redirects dependency-version: 1.15.9 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: path-to-regexp dependency-version: 0.1.12 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: send dependency-version: 0.19.0 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: serve-static dependency-version: 1.16.2 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../hardhat/package-lock.json | 1595 +++++++++-------- tests/solidity/yarn.lock | 122 +- 2 files changed, 913 insertions(+), 804 deletions(-) diff --git a/tests/integration_tests/hardhat/package-lock.json b/tests/integration_tests/hardhat/package-lock.json index d44c213052..5809e07a21 100644 --- a/tests/integration_tests/hardhat/package-lock.json +++ b/tests/integration_tests/hardhat/package-lock.json @@ -546,9 +546,9 @@ "peer": true }, "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", + "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", "funding": [ { "type": "individual", @@ -559,22 +559,23 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", + "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", "funding": [ { "type": "individual", @@ -585,20 +586,21 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0" } }, "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", + "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", "funding": [ { "type": "individual", @@ -609,18 +611,19 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0" } }, "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", + "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", "funding": [ { "type": "individual", @@ -631,18 +634,19 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/rlp": "^5.8.0" } }, "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", + "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", "funding": [ { "type": "individual", @@ -653,14 +657,15 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0" + "@ethersproject/bytes": "^5.8.0" } }, "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz", + "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==", "funding": [ { "type": "individual", @@ -671,15 +676,16 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/properties": "^5.8.0" } }, "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", + "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", "funding": [ { "type": "individual", @@ -690,16 +696,17 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", "bn.js": "^5.2.1" } }, "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", + "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", "funding": [ { "type": "individual", @@ -710,14 +717,15 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/logger": "^5.7.0" + "@ethersproject/logger": "^5.8.0" } }, "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", + "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", "funding": [ { "type": "individual", @@ -728,14 +736,15 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bignumber": "^5.7.0" + "@ethersproject/bignumber": "^5.8.0" } }, "node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz", + "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==", "funding": [ { "type": "individual", @@ -746,23 +755,24 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" + "@ethersproject/abi": "^5.8.0", + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0" } }, "node_modules/@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", + "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", "funding": [ { "type": "individual", @@ -773,22 +783,23 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, "node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz", + "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==", "funding": [ { "type": "individual", @@ -799,25 +810,26 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" } }, "node_modules/@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz", + "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==", "funding": [ { "type": "individual", @@ -828,26 +840,27 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", "aes-js": "3.0.0", "scrypt-js": "3.0.1" } }, "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", + "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", "funding": [ { "type": "individual", @@ -858,15 +871,16 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", + "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", + "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", "funding": [ { "type": "individual", @@ -876,12 +890,13 @@ "type": "individual", "url": "https://www.buymeacoffee.com/ricmoo" } - ] + ], + "license": "MIT" }, "node_modules/@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", + "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", "funding": [ { "type": "individual", @@ -892,14 +907,15 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/logger": "^5.7.0" + "@ethersproject/logger": "^5.8.0" } }, "node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", + "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", "funding": [ { "type": "individual", @@ -910,15 +926,16 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/sha2": "^5.8.0" } }, "node_modules/@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", + "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", "funding": [ { "type": "individual", @@ -929,14 +946,15 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/logger": "^5.7.0" + "@ethersproject/logger": "^5.8.0" } }, "node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", + "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==", "funding": [ { "type": "individual", @@ -947,33 +965,55 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0", "bech32": "1.1.4", - "ws": "7.4.6" + "ws": "8.18.0" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz", + "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==", "funding": [ { "type": "individual", @@ -984,15 +1024,16 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", + "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", "funding": [ { "type": "individual", @@ -1003,15 +1044,16 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", + "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", "funding": [ { "type": "individual", @@ -1022,16 +1064,17 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", "hash.js": "1.1.7" } }, "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", + "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==", "funding": [ { "type": "individual", @@ -1042,19 +1085,20 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", "bn.js": "^5.2.1", - "elliptic": "6.5.4", + "elliptic": "6.6.1", "hash.js": "1.1.7" } }, "node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz", + "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==", "funding": [ { "type": "individual", @@ -1065,19 +1109,20 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, "node_modules/@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", + "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", "funding": [ { "type": "individual", @@ -1088,16 +1133,17 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, "node_modules/@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", + "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", "funding": [ { "type": "individual", @@ -1108,22 +1154,23 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0" } }, "node_modules/@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz", + "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==", "funding": [ { "type": "individual", @@ -1134,16 +1181,17 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, "node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz", + "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==", "funding": [ { "type": "individual", @@ -1154,28 +1202,29 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/json-wallets": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" } }, "node_modules/@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz", + "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==", "funding": [ { "type": "individual", @@ -1186,18 +1235,19 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, "node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz", + "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==", "funding": [ { "type": "individual", @@ -1208,12 +1258,13 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, "node_modules/@fastify/busboy": { @@ -1822,9 +1873,10 @@ } }, "node_modules/@openzeppelin/contracts": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.5.tgz", - "integrity": "sha512-ZK+W5mVhRppff9BE6YdR8CC52C8zAvsVAiWhEtQ5+oNxFE6h1WdeWo+FJSF8KKvtxxVYZ7MTP/5KoVpAU3aSWg==" + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.6.tgz", + "integrity": "sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==", + "license": "MIT" }, "node_modules/@openzeppelin/contracts-upgradeable": { "version": "4.9.5", @@ -2583,7 +2635,8 @@ "node_modules/aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "license": "MIT" }, "node_modules/agent-base": { "version": "6.0.2", @@ -2977,11 +3030,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -3404,11 +3458,12 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -3550,9 +3605,10 @@ } }, "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -3568,9 +3624,10 @@ } }, "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "license": "MIT", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -3991,9 +4048,9 @@ } }, "node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", + "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", "funding": [ { "type": "individual", @@ -4004,37 +4061,38 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" + "@ethersproject/abi": "5.8.0", + "@ethersproject/abstract-provider": "5.8.0", + "@ethersproject/abstract-signer": "5.8.0", + "@ethersproject/address": "5.8.0", + "@ethersproject/base64": "5.8.0", + "@ethersproject/basex": "5.8.0", + "@ethersproject/bignumber": "5.8.0", + "@ethersproject/bytes": "5.8.0", + "@ethersproject/constants": "5.8.0", + "@ethersproject/contracts": "5.8.0", + "@ethersproject/hash": "5.8.0", + "@ethersproject/hdnode": "5.8.0", + "@ethersproject/json-wallets": "5.8.0", + "@ethersproject/keccak256": "5.8.0", + "@ethersproject/logger": "5.8.0", + "@ethersproject/networks": "5.8.0", + "@ethersproject/pbkdf2": "5.8.0", + "@ethersproject/properties": "5.8.0", + "@ethersproject/providers": "5.8.0", + "@ethersproject/random": "5.8.0", + "@ethersproject/rlp": "5.8.0", + "@ethersproject/sha2": "5.8.0", + "@ethersproject/signing-key": "5.8.0", + "@ethersproject/solidity": "5.8.0", + "@ethersproject/strings": "5.8.0", + "@ethersproject/transactions": "5.8.0", + "@ethersproject/units": "5.8.0", + "@ethersproject/wallet": "5.8.0", + "@ethersproject/web": "5.8.0", + "@ethersproject/wordlists": "5.8.0" } }, "node_modules/ethjs-unit": { @@ -4112,9 +4170,10 @@ "peer": true }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4165,15 +4224,16 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -5597,6 +5657,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -6444,31 +6505,31 @@ } }, "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", @@ -6476,24 +6537,13 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "engines": { - "node": ">=6" } }, "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -6524,6 +6574,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -6547,9 +6617,10 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6557,11 +6628,6 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "node_modules/mocha/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -6621,20 +6687,10 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/napi-macros": { "version": "2.2.2", @@ -7412,19 +7468,26 @@ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", + "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", "hasInstallScript": true, + "license": "MIT", "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", "node-gyp-build": "^4.2.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" } }, + "node_modules/secp256k1/node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT" + }, "node_modules/seedrandom": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", @@ -7449,9 +7512,10 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -7945,6 +8009,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -8599,9 +8664,10 @@ } }, "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "license": "Apache-2.0" }, "node_modules/wrap-ansi": { "version": "7.0.0", @@ -8655,9 +8721,10 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", "engines": { "node": ">=8.3.0" }, @@ -8714,9 +8781,10 @@ } }, "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", "engines": { "node": ">=10" } @@ -9221,374 +9289,382 @@ } }, "@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", + "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, "@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", + "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0" } }, "@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", + "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0" } }, "@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", + "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/rlp": "^5.8.0" } }, "@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", + "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", "requires": { - "@ethersproject/bytes": "^5.7.0" + "@ethersproject/bytes": "^5.8.0" } }, "@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz", + "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==", "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/properties": "^5.8.0" } }, "@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", + "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", "bn.js": "^5.2.1" } }, "@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", + "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", "requires": { - "@ethersproject/logger": "^5.7.0" + "@ethersproject/logger": "^5.8.0" } }, "@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", + "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", "requires": { - "@ethersproject/bignumber": "^5.7.0" + "@ethersproject/bignumber": "^5.8.0" } }, "@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "requires": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz", + "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==", + "requires": { + "@ethersproject/abi": "^5.8.0", + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0" } }, "@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", + "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, "@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz", + "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==", + "requires": { + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" } }, "@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz", + "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==", + "requires": { + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", "aes-js": "3.0.0", "scrypt-js": "3.0.1" } }, "@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", + "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", "requires": { - "@ethersproject/bytes": "^5.7.0", + "@ethersproject/bytes": "^5.8.0", "js-sha3": "0.8.0" } }, "@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", + "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==" }, "@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", + "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", "requires": { - "@ethersproject/logger": "^5.7.0" + "@ethersproject/logger": "^5.8.0" } }, "@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", + "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/sha2": "^5.8.0" } }, "@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", + "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", "requires": { - "@ethersproject/logger": "^5.7.0" + "@ethersproject/logger": "^5.8.0" } }, "@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", + "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==", + "requires": { + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0", "bech32": "1.1.4", - "ws": "7.4.6" + "ws": "8.18.0" + }, + "dependencies": { + "ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "requires": {} + } } }, "@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz", + "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==", "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, "@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", + "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, "@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", + "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", "hash.js": "1.1.7" } }, "@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", + "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==", "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", "bn.js": "^5.2.1", - "elliptic": "6.5.4", + "elliptic": "6.6.1", "hash.js": "1.1.7" } }, "@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz", + "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==", "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, "@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", + "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, "@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", + "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0" } }, "@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz", + "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==", "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, "@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz", + "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==", + "requires": { + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/json-wallets": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" } }, "@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz", + "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==", "requires": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, "@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz", + "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==", "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, "@fastify/busboy": { @@ -10038,9 +10114,9 @@ "requires": {} }, "@openzeppelin/contracts": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.5.tgz", - "integrity": "sha512-ZK+W5mVhRppff9BE6YdR8CC52C8zAvsVAiWhEtQ5+oNxFE6h1WdeWo+FJSF8KKvtxxVYZ7MTP/5KoVpAU3aSWg==" + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.6.tgz", + "integrity": "sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==" }, "@openzeppelin/contracts-upgradeable": { "version": "4.9.5", @@ -10981,11 +11057,11 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "brorand": { @@ -11329,11 +11405,11 @@ } }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, "decamelize": { @@ -11422,9 +11498,9 @@ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==" }, "ecc-jsbn": { "version": "0.1.2", @@ -11437,9 +11513,9 @@ } }, "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", "requires": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -11784,40 +11860,40 @@ } }, "ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "requires": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", + "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", + "requires": { + "@ethersproject/abi": "5.8.0", + "@ethersproject/abstract-provider": "5.8.0", + "@ethersproject/abstract-signer": "5.8.0", + "@ethersproject/address": "5.8.0", + "@ethersproject/base64": "5.8.0", + "@ethersproject/basex": "5.8.0", + "@ethersproject/bignumber": "5.8.0", + "@ethersproject/bytes": "5.8.0", + "@ethersproject/constants": "5.8.0", + "@ethersproject/contracts": "5.8.0", + "@ethersproject/hash": "5.8.0", + "@ethersproject/hdnode": "5.8.0", + "@ethersproject/json-wallets": "5.8.0", + "@ethersproject/keccak256": "5.8.0", + "@ethersproject/logger": "5.8.0", + "@ethersproject/networks": "5.8.0", + "@ethersproject/pbkdf2": "5.8.0", + "@ethersproject/properties": "5.8.0", + "@ethersproject/providers": "5.8.0", + "@ethersproject/random": "5.8.0", + "@ethersproject/rlp": "5.8.0", + "@ethersproject/sha2": "5.8.0", + "@ethersproject/signing-key": "5.8.0", + "@ethersproject/solidity": "5.8.0", + "@ethersproject/strings": "5.8.0", + "@ethersproject/transactions": "5.8.0", + "@ethersproject/units": "5.8.0", + "@ethersproject/wallet": "5.8.0", + "@ethersproject/web": "5.8.0", + "@ethersproject/wordlists": "5.8.0" } }, "ethjs-unit": { @@ -11886,9 +11962,9 @@ "peer": true }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "requires": { "to-regex-range": "^5.0.1" } @@ -11926,9 +12002,9 @@ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" }, "follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" }, "for-each": { "version": "0.3.3", @@ -13556,42 +13632,36 @@ } }, "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - }, + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "requires": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "dependencies": { "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "requires": { "balanced-match": "^1.0.0" } @@ -13610,6 +13680,18 @@ "path-exists": "^4.0.0" } }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -13624,18 +13706,13 @@ } }, "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "requires": { "brace-expansion": "^2.0.1" } }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -13673,14 +13750,9 @@ "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==" }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "napi-macros": { "version": "2.2.2", @@ -14243,13 +14315,20 @@ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", + "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", "requires": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", "node-gyp-build": "^4.2.0" + }, + "dependencies": { + "node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + } } }, "seedrandom": { @@ -14270,9 +14349,9 @@ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "requires": { "randombytes": "^2.1.0" } @@ -15170,9 +15249,9 @@ } }, "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==" }, "wrap-ansi": { "version": "7.0.0", @@ -15213,9 +15292,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "requires": {} }, "xtend": { @@ -15249,9 +15328,9 @@ } }, "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" }, "yargs-unparser": { "version": "2.0.0", diff --git a/tests/solidity/yarn.lock b/tests/solidity/yarn.lock index 1d76b3cbbf..4dc8351c34 100644 --- a/tests/solidity/yarn.lock +++ b/tests/solidity/yarn.lock @@ -3543,7 +3543,25 @@ bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.2, body-parser@^1.16.0, body-parser@^1.19.0: +body-parser@1.20.3: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +body-parser@^1.16.0, body-parser@^1.19.0: version "1.20.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== @@ -4435,10 +4453,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== cookie@^0.4.1: version "0.4.2" @@ -4549,9 +4567,9 @@ cross-fetch@^4.0.0: node-fetch "^2.6.12" cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + version "6.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57" + integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== dependencies: nice-try "^1.0.4" path-key "^2.0.1" @@ -5170,6 +5188,11 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + encoding-down@5.0.4, encoding-down@~5.0.0: version "5.0.4" resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-5.0.4.tgz#1e477da8e9e9d0f7c8293d320044f8b2cd8e9614" @@ -6053,36 +6076,36 @@ expand-brackets@^2.1.4: to-regex "^3.0.1" express@^4.14.0, express@^4.17.1: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== + version "4.21.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" + integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.2" + body-parser "1.20.3" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.6.0" + cookie "0.7.1" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.2.0" + finalhandler "1.3.1" fresh "0.5.2" http-errors "2.0.0" - merge-descriptors "1.0.1" + merge-descriptors "1.0.3" methods "~1.1.2" on-finished "2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "0.1.12" proxy-addr "~2.0.7" - qs "6.11.0" + qs "6.13.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" + send "0.19.0" + serve-static "1.16.2" setprototypeof "1.2.0" statuses "2.0.1" type-is "~1.6.18" @@ -6286,13 +6309,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== dependencies: debug "2.6.9" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" on-finished "2.4.1" parseurl "~1.3.3" @@ -6362,9 +6385,9 @@ flow-stoplight@^1.0.0: integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== follow-redirects@^1.14.8, follow-redirects@^1.15.0: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== for-each@^0.3.3, for-each@~0.3.3: version "0.3.3" @@ -8827,10 +8850,10 @@ memorystream@^0.3.1: resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== merge-options@^2.0.0: version "2.0.0" @@ -10086,10 +10109,10 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path-to-regexp@0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== path-type@^1.0.0: version "1.1.0" @@ -10663,6 +10686,13 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +qs@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + qs@^6.7.0: version "6.12.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.0.tgz#edd40c3b823995946a8a0b1f208669c7a200db77" @@ -11246,10 +11276,10 @@ semver@~5.4.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== dependencies: debug "2.6.9" depd "2.0.0" @@ -11280,15 +11310,15 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== dependencies: - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.18.0" + send "0.19.0" servify@^0.1.12: version "0.1.12" From 189aaba9af9aefc83e4ac2c8cd0fe0a0b1f9a64d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 13:21:24 +0800 Subject: [PATCH 081/210] build(deps): bump alpine from 3.17.3 to 3.22.0 (#599) Bumps alpine from 3.17.3 to 3.22.0. --- updated-dependencies: - dependency-name: alpine dependency-version: 3.22.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7ab04d2817..b1268f1883 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ COPY . . RUN make build # Final image -FROM alpine:3.17.3 +FROM alpine:3.22.0 # Install ca-certificates RUN apk add --update ca-certificates jq From 9aa8d0f2ae25f8093e37a6677aee7b2c6a6eaee6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 13:22:43 +0800 Subject: [PATCH 082/210] build(deps): bump nosborn/github-action-markdown-cli from 3.3.0 to 3.5.0 (#598) Bumps [nosborn/github-action-markdown-cli](https://github.com/nosborn/github-action-markdown-cli) from 3.3.0 to 3.5.0. - [Release notes](https://github.com/nosborn/github-action-markdown-cli/releases) - [Commits](https://github.com/nosborn/github-action-markdown-cli/compare/v3.3.0...v3.5.0) --- updated-dependencies: - dependency-name: nosborn/github-action-markdown-cli dependency-version: 3.5.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 79abf1644d..b99c4d3c2d 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -50,7 +50,7 @@ jobs: docs/**/*.md x/**/*.md README.md - - uses: nosborn/github-action-markdown-cli@v3.3.0 + - uses: nosborn/github-action-markdown-cli@v3.5.0 with: files: . config_file: .markdownlint.yml From 21ec2783241e1e99d90d6100dd10c261f5aca80f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 13:24:15 +0800 Subject: [PATCH 083/210] build(deps): bump actions/setup-go from 3 to 4 (#335) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 3 to 4. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- .github/workflows/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e7701335c3..2ba664302f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -152,7 +152,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 120 steps: - - uses: actions/setup-go@v3 + - uses: actions/setup-go@v4 with: go-version: 1.21 check-latest: true @@ -172,7 +172,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 120 steps: - - uses: actions/setup-go@v3 + - uses: actions/setup-go@v4 with: go-version: 1.21 check-latest: true @@ -192,7 +192,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 120 steps: - - uses: actions/setup-go@v3 + - uses: actions/setup-go@v4 with: go-version: 1.21 check-latest: true @@ -212,7 +212,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 120 steps: - - uses: actions/setup-go@v3 + - uses: actions/setup-go@v4 with: go-version: 1.21 check-latest: true From 16b4f51c40e1cb90b41e48af23b81a705aa7aed9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 13:38:57 +0800 Subject: [PATCH 084/210] build(deps): bump github/codeql-action from 2 to 3 (#597) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v2...v3) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: '3' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/security.yml | 2 +- .github/workflows/semgrep.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 845d0a9e34..3ce3336276 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -56,7 +56,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -69,7 +69,7 @@ jobs: # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 if: env.GIT_DIFF # ℹ️ Command-line programs to run using the OS shell. @@ -84,5 +84,5 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 if: env.GIT_DIFF diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index e82cdd18d3..dcd6752985 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -34,7 +34,7 @@ jobs: args: "-no-fail -fmt sarif -out results.sarif ./..." if: "env.GIT_DIFF_FILTERED != ''" - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@v2 + uses: github/codeql-action/upload-sarif@v3 with: # Path to SARIF file relative to the root of the repository sarif_file: results.sarif diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml index 1404cfc575..b6dcad66cb 100644 --- a/.github/workflows/semgrep.yml +++ b/.github/workflows/semgrep.yml @@ -44,7 +44,7 @@ jobs: if: "env.GIT_DIFF_FILTERED != ''" # Upload findings to GitHub Advanced Security Dashboard [step 2/2] - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@v2 + uses: github/codeql-action/upload-sarif@v3 with: sarif_file: semgrep.sarif if: "env.GIT_DIFF_FILTERED != ''" From 155c1413e83dccf4721110ad1e7e7a79d6bf7454 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 13:46:21 +0800 Subject: [PATCH 085/210] build(deps): bump bufbuild/buf-setup-action from 1.16.0 to 1.50.0 (#596) Bumps [bufbuild/buf-setup-action](https://github.com/bufbuild/buf-setup-action) from 1.16.0 to 1.50.0. - [Release notes](https://github.com/bufbuild/buf-setup-action/releases) - [Commits](https://github.com/bufbuild/buf-setup-action/compare/v1.16.0...v1.50.0) --- updated-dependencies: - dependency-name: bufbuild/buf-setup-action dependency-version: 1.50.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- .github/workflows/proto.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/proto.yml b/.github/workflows/proto.yml index 556b9b3210..4a65761d13 100644 --- a/.github/workflows/proto.yml +++ b/.github/workflows/proto.yml @@ -16,7 +16,7 @@ jobs: timeout-minutes: 5 steps: - uses: actions/checkout@v3 - - uses: bufbuild/buf-setup-action@v1.16.0 + - uses: bufbuild/buf-setup-action@v1.50.0 - uses: bufbuild/buf-lint-action@v1 with: input: "proto" @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: bufbuild/buf-setup-action@v1.16.0 + - uses: bufbuild/buf-setup-action@v1.50.0 - uses: bufbuild/buf-breaking-action@v1 with: input: "proto" From ae1e9395ec6b6e63cdd837a794f6b542468946d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 05:47:14 +0000 Subject: [PATCH 086/210] build(deps): bump golangci/golangci-lint-action from 3.4.0 to 8.0.0 (#595) Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 3.4.0 to 8.0.0. - [Release notes](https://github.com/golangci/golangci-lint-action/releases) - [Commits](https://github.com/golangci/golangci-lint-action/compare/v3.4.0...v8.0.0) --- updated-dependencies: - dependency-name: golangci/golangci-lint-action dependency-version: 8.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index b99c4d3c2d..e483895c91 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -30,7 +30,7 @@ jobs: **/**.go go.mod go.sum - - uses: golangci/golangci-lint-action@v3.4.0 + - uses: golangci/golangci-lint-action@v8.0.0 with: # Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version. version: latest From fbb4e8c2cfd9869d979ed886755e497d26b35f59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 13:50:03 +0800 Subject: [PATCH 087/210] build(deps): bump cachix/install-nix-action from 26 to 31 (#594) Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 26 to 31. - [Release notes](https://github.com/cachix/install-nix-action/releases) - [Changelog](https://github.com/cachix/install-nix-action/blob/master/RELEASE.md) - [Commits](https://github.com/cachix/install-nix-action/compare/v26...v31) --- updated-dependencies: - dependency-name: cachix/install-nix-action dependency-version: '31' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/lint.yml | 4 ++-- .github/workflows/test.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e483895c91..a9da9b77c1 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -62,7 +62,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v26 + - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | @@ -82,7 +82,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v26 + - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2ba664302f..5697ac2cc5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -97,7 +97,7 @@ jobs: TESTS_TO_RUN: ${{ matrix.tests }} steps: - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v26 + - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | @@ -136,7 +136,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v26 + - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | From 4cdc3f6dac98f3df5c02cbf68c054bbf5c9701d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 13:50:59 +0800 Subject: [PATCH 088/210] build(deps): bump cachix/cachix-action from 14 to 16 (#593) Bumps [cachix/cachix-action](https://github.com/cachix/cachix-action) from 14 to 16. - [Release notes](https://github.com/cachix/cachix-action/releases) - [Commits](https://github.com/cachix/cachix-action/compare/v14...v16) --- updated-dependencies: - dependency-name: cachix/cachix-action dependency-version: '16' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- .github/workflows/lint.yml | 4 ++-- .github/workflows/test.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a9da9b77c1..48486ff57f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -67,7 +67,7 @@ jobs: nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - uses: cachix/cachix-action@v14 + - uses: cachix/cachix-action@v16 with: name: crypto-ethermint - uses: technote-space/get-diff-action@v6.1.2 @@ -87,7 +87,7 @@ jobs: nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - uses: cachix/cachix-action@v14 + - uses: cachix/cachix-action@v16 with: name: crypto-ethermint - uses: technote-space/get-diff-action@v6.1.2 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5697ac2cc5..21a2672749 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -102,7 +102,7 @@ jobs: nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - uses: cachix/cachix-action@v14 + - uses: cachix/cachix-action@v16 with: name: crypto-ethermint signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}" @@ -141,7 +141,7 @@ jobs: nix_path: nixpkgs=channel:nixos-22.11 extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - uses: cachix/cachix-action@v14 + - uses: cachix/cachix-action@v16 with: name: crypto-ethermint signingKey: "${{ secrets.CACHIX_SIGNING_KEY }}" From 6a3051c7c853500da2d1d8d66030ec28556702fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 14:05:46 +0800 Subject: [PATCH 089/210] build(deps): bump the npm_and_yarn group across 2 directories with 2 updates (#628) Bumps the npm_and_yarn group with 1 update in the /tests/integration_tests/hardhat directory: [brace-expansion](https://github.com/juliangruber/brace-expansion). Bumps the npm_and_yarn group with 1 update in the /tests/solidity directory: [body-parser](https://github.com/expressjs/body-parser). Updates `brace-expansion` from 1.1.11 to 1.1.12 - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12) Updates `body-parser` from 1.20.2 to 1.20.3 - [Release notes](https://github.com/expressjs/body-parser/releases) - [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md) - [Commits](https://github.com/expressjs/body-parser/compare/1.20.2...1.20.3) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 1.1.12 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: body-parser dependency-version: 1.20.3 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- .../hardhat/package-lock.json | 13 ++++----- tests/solidity/yarn.lock | 27 +------------------ 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/tests/integration_tests/hardhat/package-lock.json b/tests/integration_tests/hardhat/package-lock.json index 5809e07a21..ef3ee39b37 100644 --- a/tests/integration_tests/hardhat/package-lock.json +++ b/tests/integration_tests/hardhat/package-lock.json @@ -3021,9 +3021,10 @@ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -11048,9 +11049,9 @@ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" diff --git a/tests/solidity/yarn.lock b/tests/solidity/yarn.lock index 4dc8351c34..81acf018c4 100644 --- a/tests/solidity/yarn.lock +++ b/tests/solidity/yarn.lock @@ -3543,7 +3543,7 @@ bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.3: +body-parser@1.20.3, body-parser@^1.16.0, body-parser@^1.19.0: version "1.20.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== @@ -3561,24 +3561,6 @@ body-parser@1.20.3: type-is "~1.6.18" unpipe "1.0.0" -body-parser@^1.16.0, body-parser@^1.19.0: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -10679,13 +10661,6 @@ pure-rand@^5.0.1: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-5.0.5.tgz#bda2a7f6a1fc0f284d78d78ca5902f26f2ad35cf" integrity sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw== -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - qs@6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" From 08e1fa5bb480dc95ffbe9dd0569da4c2ee7a9dbe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 14:09:42 +0800 Subject: [PATCH 090/210] build(deps): bump actions/setup-node from 3 to 4 (#592) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- .github/workflows/deploy-contract.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-contract.yml b/.github/workflows/deploy-contract.yml index bde98337b5..097ba75033 100644 --- a/.github/workflows/deploy-contract.yml +++ b/.github/workflows/deploy-contract.yml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Use Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: '12.x' - name: Install dependencies From cf6c0f4eba9329a9de33e02546454645c91fefd6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 14:10:56 +0800 Subject: [PATCH 091/210] build(deps): bump technote-space/get-diff-action from 6.1.1 to 6.1.2 (#336) Bumps [technote-space/get-diff-action](https://github.com/technote-space/get-diff-action) from 6.1.1 to 6.1.2. - [Release notes](https://github.com/technote-space/get-diff-action/releases) - [Changelog](https://github.com/technote-space/get-diff-action/blob/main/.releasegarc) - [Commits](https://github.com/technote-space/get-diff-action/compare/v6.1.1...v6.1.2) --- updated-dependencies: - dependency-name: technote-space/get-diff-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- .github/workflows/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 21a2672749..e60be85339 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -157,7 +157,7 @@ jobs: go-version: 1.21 check-latest: true - uses: actions/checkout@v3 - - uses: technote-space/get-diff-action@v6.1.1 + - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | **/**.go @@ -177,7 +177,7 @@ jobs: go-version: 1.21 check-latest: true - uses: actions/checkout@v3 - - uses: technote-space/get-diff-action@v6.1.1 + - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | **/**.go @@ -197,7 +197,7 @@ jobs: go-version: 1.21 check-latest: true - uses: actions/checkout@v3 - - uses: technote-space/get-diff-action@v6.1.1 + - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | **/**.go @@ -217,7 +217,7 @@ jobs: go-version: 1.21 check-latest: true - uses: actions/checkout@v3 - - uses: technote-space/get-diff-action@v6.1.1 + - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | **/**.go From 0a84f6b120d517da4eab0d439957bb5758e8cf33 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 14:14:38 +0800 Subject: [PATCH 092/210] build(deps): bump actions/checkout from 3 to 4 (#330) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/dependencies.yml | 2 +- .github/workflows/deploy-contract.yml | 2 +- .github/workflows/goreleaser.yml | 2 +- .github/workflows/lint.yml | 8 ++++---- .github/workflows/markdown-links.yml | 2 +- .github/workflows/proto.yml | 4 ++-- .github/workflows/security.yml | 2 +- .github/workflows/semgrep.yml | 4 ++-- .github/workflows/test.yml | 18 +++++++++--------- 11 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 238d7fd3aa..9b47d91ff7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-go@v4 with: go-version: 1.21 diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 3ce3336276..ae967f8b81 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -43,7 +43,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index aa8ea5fdf7..f794c1c3ab 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -13,7 +13,7 @@ jobs: go-version: 1.21 check-latest: true - name: "Checkout Repository" - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | diff --git a/.github/workflows/deploy-contract.yml b/.github/workflows/deploy-contract.yml index 097ba75033..e1c9d57b7f 100644 --- a/.github/workflows/deploy-contract.yml +++ b/.github/workflows/deploy-contract.yml @@ -20,7 +20,7 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js uses: actions/setup-node@v4 with: diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 6dbc318535..d163470add 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest environment: release steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: true - name: Set up Go diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 48486ff57f..71783c4615 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -23,7 +23,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -43,7 +43,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -61,7 +61,7 @@ jobs: name: Run flake8 on python integration tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 @@ -81,7 +81,7 @@ jobs: name: Check gomod2nix.toml file is up to date runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 diff --git a/.github/workflows/markdown-links.yml b/.github/workflows/markdown-links.yml index 854dbb49dc..4b0cf347a5 100644 --- a/.github/workflows/markdown-links.yml +++ b/.github/workflows/markdown-links.yml @@ -17,7 +17,7 @@ jobs: markdown-link-check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: diff --git a/.github/workflows/proto.yml b/.github/workflows/proto.yml index 4a65761d13..0e6f52309a 100644 --- a/.github/workflows/proto.yml +++ b/.github/workflows/proto.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 5 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: bufbuild/buf-setup-action@v1.50.0 - uses: bufbuild/buf-lint-action@v1 with: @@ -24,7 +24,7 @@ jobs: break-check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: bufbuild/buf-setup-action@v1.50.0 - uses: bufbuild/buf-breaking-action@v1 with: diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index dcd6752985..2a8d17f8d9 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -19,7 +19,7 @@ jobs: GO111MODULE: on steps: - name: Checkout Source - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Get Diff uses: technote-space/get-diff-action@v6.1.2 with: diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml index b6dcad66cb..6e8e4942ce 100644 --- a/.github/workflows/semgrep.yml +++ b/.github/workflows/semgrep.yml @@ -25,7 +25,7 @@ jobs: steps: - name: Permission issue fix run: git config --global --add safe.directory /__w/ethermint/ethermint - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Get Diff uses: technote-space/get-diff-action@v6.1.2 with: @@ -36,7 +36,7 @@ jobs: **/*.sol go.mod go.sum - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: semgrep scan --sarif --output=semgrep.sarif --config auto env: # Upload findings to GitHub Advanced Security Dashboard [step 1/2] diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e60be85339..0d4ea7b6db 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,7 +26,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -53,7 +53,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: @@ -74,7 +74,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -96,7 +96,7 @@ jobs: env: TESTS_TO_RUN: ${{ matrix.tests }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 @@ -135,7 +135,7 @@ jobs: os: [macos-latest] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 @@ -156,7 +156,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -176,7 +176,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -196,7 +196,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -216,7 +216,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | From 3127fd5f6e32ab3e08d71f54004ef447283dee8c Mon Sep 17 00:00:00 2001 From: Xinyu <91446598+XinyuCRO@users.noreply.github.com> Date: Wed, 18 Jun 2025 09:38:09 +0800 Subject: [PATCH 093/210] Revert "build(deps): bump golangci/golangci-lint-action from 3.4.0 to 8.0.0 (#595)" (#633) This reverts commit ae1e9395ec6b6e63cdd837a794f6b542468946d1. --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 71783c4615..3104278824 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -30,7 +30,7 @@ jobs: **/**.go go.mod go.sum - - uses: golangci/golangci-lint-action@v8.0.0 + - uses: golangci/golangci-lint-action@v3.4.0 with: # Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version. version: latest From dca6b28115aa283a13809532e480ecc35119e6b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Jun 2025 09:52:18 +0800 Subject: [PATCH 094/210] build(deps): bump actions/setup-go from 4 to 5 (#636) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4 to 5. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/dependencies.yml | 2 +- .github/workflows/goreleaser.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/test.yml | 14 +++++++------- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9b47d91ff7..da1de6e6e4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: 1.21 check-latest: true diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index f794c1c3ab..4bbde9708d 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -8,7 +8,7 @@ jobs: dependency-review: runs-on: ubuntu-latest steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: 1.21 check-latest: true diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index d163470add..5a847d7685 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -13,7 +13,7 @@ jobs: with: submodules: true - name: Set up Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.21 check-latest: true diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3104278824..354a2d05f5 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -19,7 +19,7 @@ jobs: timeout-minutes: 10 steps: # Required: setup-go, for all versions v3.0.0+ of golangci-lint - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: 1.21 check-latest: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0d4ea7b6db..2d1015b52b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,7 @@ jobs: test-unit-cover: runs-on: ubuntu-latest steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: 1.21 check-latest: true @@ -49,7 +49,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: 1.21 check-latest: true @@ -70,7 +70,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: 1.21 check-latest: true @@ -152,7 +152,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 120 steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: 1.21 check-latest: true @@ -172,7 +172,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 120 steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: 1.21 check-latest: true @@ -192,7 +192,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 120 steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: 1.21 check-latest: true @@ -212,7 +212,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 120 steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: 1.21 check-latest: true From 34454166b4250b3971f1cbc937757e84bea35765 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Jun 2025 09:55:46 +0800 Subject: [PATCH 095/210] build(deps): bump actions/stale from 8 to 9 (#635) Bumps [actions/stale](https://github.com/actions/stale) from 8 to 9. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/v8...v9) --- updated-dependencies: - dependency-name: actions/stale dependency-version: '9' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index e6e0b131d4..2f24723d67 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -7,7 +7,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v8 + - uses: actions/stale@v9 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-pr-message: "This pull request has been automatically marked as stale because it has not had From 5ad5141adcc350d43e0ae60ce9c308b28e8f8e33 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Jun 2025 02:08:31 +0000 Subject: [PATCH 096/210] build(deps): bump actions/dependency-review-action from 3 to 4 (#634) * build(deps): bump actions/dependency-review-action from 3 to 4 Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 3 to 4. - [Release notes](https://github.com/actions/dependency-review-action/releases) - [Commits](https://github.com/actions/dependency-review-action/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/dependency-review-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * ci: remove dependabot reviewers --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Xinyu Zhao --- .github/dependabot.yml | 6 ------ .github/workflows/dependencies.yml | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 9457055bff..125e46bf75 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,9 +6,6 @@ updates: interval: daily time: "10:00" open-pull-requests-limit: 10 - reviewers: - - fedekunze - - khoslaventures labels: - dependencies - package-ecosystem: docker @@ -17,9 +14,6 @@ updates: interval: daily time: "10:00" open-pull-requests-limit: 10 - reviewers: - - fedekunze - - khoslaventures - package-ecosystem: gomod directory: "/" schedule: diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index 4bbde9708d..0c15924cc8 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -21,7 +21,7 @@ jobs: go.mod go.sum - name: "Dependency Review" - uses: actions/dependency-review-action@v3 + uses: actions/dependency-review-action@v4 if: env.GIT_DIFF - name: "Go vulnerability check" run: make vulncheck From ee43f5600caaee47c9a1734d3e6e13a3f3627fc0 Mon Sep 17 00:00:00 2001 From: Thomas Nguy <81727899+thomas-nguy@users.noreply.github.com> Date: Mon, 23 Jun 2025 10:25:58 +0900 Subject: [PATCH 097/210] feat: add support for eth_getBlockReceipts (#638) * feat: add support for eth_getBlockReceipts (#629) * add support for eth_getblockreceipts * update changelog * Update rpc/backend/blocks.go Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> Signed-off-by: Thomas Nguy <81727899+thomas-nguy@users.noreply.github.com> * fix lint * optimization * remove empty space * add test case * fix length and add test * return err details * fix tests * fix lint * fix tests --------- Signed-off-by: Thomas Nguy <81727899+thomas-nguy@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> * update changelog --------- Signed-off-by: Thomas Nguy <81727899+thomas-nguy@users.noreply.github.com> Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- CHANGELOG.md | 1 + rpc/backend/backend.go | 3 +- rpc/backend/blocks.go | 51 ++++++++- rpc/backend/blocks_test.go | 165 ++++++++++++++++++++++++++++- rpc/backend/chain_info_test.go | 2 +- rpc/backend/tx_info.go | 14 +-- rpc/backend/tx_info_test.go | 2 +- rpc/namespaces/ethereum/eth/api.go | 10 +- 8 files changed, 230 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 786849aced..9ce7c19abc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features +* (rpc) [#638](https://github.com/crypto-org-chain/ethermint/pull/638) Add support for eth_getBlockReceipts. * (evm) [#414](https://github.com/crypto-org-chain/ethermint/pull/414) Integrate go-block-stm for parallel tx execution. * (block-stm) [#498](https://github.com/crypto-org-chain/ethermint/pull/498) Enable incarnation cache for block-stm executor. diff --git a/rpc/backend/backend.go b/rpc/backend/backend.go index 68090e4767..9e29ef391e 100644 --- a/rpc/backend/backend.go +++ b/rpc/backend/backend.go @@ -85,6 +85,7 @@ type EVMBackend interface { GetBlockByHash(hash common.Hash, fullTx bool) (map[string]interface{}, error) GetBlockTransactionCountByHash(hash common.Hash) *hexutil.Uint GetBlockTransactionCountByNumber(blockNum rpctypes.BlockNumber) *hexutil.Uint + GetBlockReceipts(blockNum rpctypes.BlockNumber) ([]map[string]interface{}, error) TendermintBlockByNumber(blockNum rpctypes.BlockNumber) (*tmrpctypes.ResultBlock, error) TendermintBlockResultByNumber(height *int64) (*tmrpctypes.ResultBlockResults, error) TendermintBlockByHash(blockHash common.Hash) (*tmrpctypes.ResultBlock, error) @@ -121,7 +122,7 @@ type EVMBackend interface { GetTxByEthHash(txHash common.Hash) (*ethermint.TxResult, error) GetTxByTxIndex(height int64, txIndex uint) (*ethermint.TxResult, error) GetTransactionByBlockAndIndex(block *tmrpctypes.ResultBlock, idx hexutil.Uint) (*rpctypes.RPCTransaction, error) - GetTransactionReceipt(hash common.Hash) (map[string]interface{}, error) + GetTransactionReceipt(hash common.Hash, resBlock *tmrpctypes.ResultBlock) (map[string]interface{}, error) GetTransactionByBlockHashAndIndex(hash common.Hash, idx hexutil.Uint) (*rpctypes.RPCTransaction, error) GetTransactionByBlockNumberAndIndex(blockNum rpctypes.BlockNumber, idx hexutil.Uint) (*rpctypes.RPCTransaction, error) diff --git a/rpc/backend/blocks.go b/rpc/backend/blocks.go index 131c8407ff..73dd7d481b 100644 --- a/rpc/backend/blocks.go +++ b/rpc/backend/blocks.go @@ -79,7 +79,7 @@ func (b *Backend) GetBlockByNumber(blockNum rpctypes.BlockNumber, fullTx bool) ( blockRes, err := b.TendermintBlockResultByNumber(&resBlock.Block.Height) if err != nil { b.logger.Debug("failed to fetch block result from Tendermint", "height", blockNum, "error", err.Error()) - return nil, nil + return nil, err } res, err := b.RPCBlockFromTendermintBlock(resBlock, blockRes, fullTx) @@ -91,6 +91,36 @@ func (b *Backend) GetBlockByNumber(blockNum rpctypes.BlockNumber, fullTx bool) ( return res, nil } +// GetBlockReceipts returns a list of Ethereum transaction receipts given a block number +func (b *Backend) GetBlockReceipts(blockNum rpctypes.BlockNumber) ([]map[string]interface{}, error) { + resBlock, err := b.TendermintBlockByNumber(blockNum) + if err != nil { + return nil, nil + } + // return if requested block height is greater than the current one + if resBlock == nil || resBlock.Block == nil { + return nil, nil + } + blockRes, err := b.TendermintBlockResultByNumber(&resBlock.Block.Height) + if err != nil { + b.logger.Debug("failed to fetch block result from Tendermint", "height", blockNum, "error", err.Error()) + return nil, err + } + + txHashes := b.TransactionHashesFromTendermintBlock(resBlock, blockRes) + + res := make([]map[string]interface{}, 0, len(txHashes)) + for _, txHash := range txHashes { + receipt, err := b.GetTransactionReceipt(txHash, resBlock) + if err != nil { + return nil, err + } + res = append(res, receipt) + } + + return res, nil +} + // GetBlockByHash returns the JSON-RPC compatible Ethereum block identified by // hash. func (b *Backend) GetBlockByHash(hash common.Hash, fullTx bool) (map[string]interface{}, error) { @@ -107,7 +137,7 @@ func (b *Backend) GetBlockByHash(hash common.Hash, fullTx bool) (map[string]inte blockRes, err := b.TendermintBlockResultByNumber(&resBlock.Block.Height) if err != nil { b.logger.Debug("failed to fetch block result from Tendermint", "block-hash", hash.String(), "error", err.Error()) - return nil, nil + return nil, err } res, err := b.RPCBlockFromTendermintBlock(resBlock, blockRes, fullTx) @@ -185,7 +215,7 @@ func (b *Backend) TendermintBlockByNumber(blockNum rpctypes.BlockNumber) (*tmrpc if resBlock.Block == nil { b.logger.Debug("TendermintBlockByNumber block not found", "height", height) - return nil, nil + return nil, fmt.Errorf("tendermint block not found") } return resBlock, nil @@ -513,6 +543,21 @@ func (b *Backend) RPCBlockFromTendermintBlock( return formattedBlock, nil } +// TransactionHashesFromTendermintBlock returns list of eth transaction hashes +// given Tendermint block and its block result. +func (b *Backend) TransactionHashesFromTendermintBlock( + resBlock *tmrpctypes.ResultBlock, + blockRes *tmrpctypes.ResultBlockResults, +) []common.Hash { + msgs := b.EthMsgsFromTendermintBlock(resBlock, blockRes) + ethHashes := make([]common.Hash, 0, len(msgs)) + for _, ethMsg := range msgs { + ethHashes = append(ethHashes, ethMsg.Hash()) + } + + return ethHashes +} + // EthBlockByNumber returns the Ethereum Block identified by number. func (b *Backend) EthBlockByNumber(blockNum rpctypes.BlockNumber) (*ethtypes.Block, error) { resBlock, err := b.TendermintBlockByNumber(blockNum) diff --git a/rpc/backend/blocks_test.go b/rpc/backend/blocks_test.go index f40e96d6c8..9b84939cae 100644 --- a/rpc/backend/blocks_test.go +++ b/rpc/backend/blocks_test.go @@ -1,13 +1,17 @@ package backend import ( + tmlog "cosmossdk.io/log" "encoding/json" "fmt" + dbm "github.com/cosmos/cosmos-db" + "github.com/evmos/ethermint/indexer" "math/big" sdkmath "cosmossdk.io/math" "github.com/cometbft/cometbft/abci/types" tmrpctypes "github.com/cometbft/cometbft/rpc/core/types" + comettypes "github.com/cometbft/cometbft/types" tmtypes "github.com/cometbft/cometbft/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" @@ -132,7 +136,7 @@ func (suite *BackendTestSuite) TestGetBlockByNumber() { true, }, { - "pass - block results error", + "fail - block results error", ethrpc.BlockNumber(1), true, sdkmath.NewInt(1).BigInt(), @@ -146,7 +150,7 @@ func (suite *BackendTestSuite) TestGetBlockByNumber() { RegisterBlockResultsError(client, blockNum.Int64()) }, true, - true, + false, }, { "pass - without tx", @@ -290,7 +294,7 @@ func (suite *BackendTestSuite) TestGetBlockByHash() { RegisterBlockResultsError(client, height) }, true, - true, + false, }, { "pass - without tx", @@ -547,7 +551,7 @@ func (suite *BackendTestSuite) TestTendermintBlockByNumber() { RegisterBlockNotFound(client, height) }, false, - true, + false, }, { "fail - blockNum < 0 with app state height error", @@ -1644,3 +1648,156 @@ func (suite *BackendTestSuite) TestEthBlockFromTendermintBlock() { }) } } + +// TODO fix this test case and TestGetTransactionReceipt +func (suite *BackendTestSuite) TestEthBlockReceipts() { + msgEthereumTx, _ := suite.buildEthereumTx() + txBz := suite.signAndEncodeEthTx(msgEthereumTx) + txHash := msgEthereumTx.Hash() + + testCases := []struct { + name string + registerMock func() + tx *evmtypes.MsgEthereumTx + block *comettypes.Block + blockResult []*types.ExecTxResult + expTxReceipt map[string]interface{} + expPass bool + }{ + { + "fail - Receipts do not match ", + func() { + var header metadata.MD + queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) + client := suite.backend.clientCtx.Client.(*mocks.Client) + RegisterParams(queryClient, &header, 1) + RegisterParamsWithoutHeader(queryClient, 1) + RegisterBlock(client, 1, txBz) + RegisterBlockResults(client, 1) + }, + msgEthereumTx, + &comettypes.Block{Header: comettypes.Header{Height: 1}, Data: comettypes.Data{Txs: []comettypes.Tx{txBz}}}, + []*types.ExecTxResult{ + { + Code: 0, + Events: []types.Event{ + {Type: evmtypes.EventTypeEthereumTx, Attributes: []types.EventAttribute{ + {Key: "ethereumTxHash", Value: txHash.Hex()}, + {Key: "txIndex", Value: "0"}, + {Key: "amount", Value: "1000"}, + {Key: "txGasUsed", Value: "21000"}, + {Key: "txHash", Value: ""}, + {Key: "recipient", Value: "0x775b87ef5D82ca211811C1a02CE0fE0CA3a455d7"}, + }}, + }, + }, + }, + map[string]interface{}(nil), + false, + }, + { + "Success - Receipts match", + func() { + var header metadata.MD + queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) + client := suite.backend.clientCtx.Client.(*mocks.Client) + RegisterParams(queryClient, &header, 1) + RegisterParamsWithoutHeader(queryClient, 1) + RegisterBlock(client, 1, txBz) + RegisterBlockResults(client, 1) + }, + msgEthereumTx, + &comettypes.Block{Header: comettypes.Header{Height: 1}, Data: comettypes.Data{Txs: []comettypes.Tx{txBz}}}, + []*types.ExecTxResult{ + { + Code: 0, + Events: []types.Event{ + {Type: evmtypes.EventTypeEthereumTx, Attributes: []types.EventAttribute{ + {Key: "ethereumTxHash", Value: txHash.Hex()}, + {Key: "txIndex", Value: "0"}, + {Key: "amount", Value: "1000"}, + {Key: "txGasUsed", Value: "21000"}, + {Key: "txHash", Value: ""}, + {Key: "recipient", Value: "0x775b87ef5D82ca211811C1a02CE0fE0CA3a455d7"}, + }}, + }, + }, + }, + map[string]interface{}(nil), + false, //needs to be set to true + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.SetupTest() // reset test and queries + tc.registerMock() + + db := dbm.NewMemDB() + suite.backend.indexer = indexer.NewKVIndexer(db, tmlog.NewNopLogger(), suite.backend.clientCtx) + err := suite.backend.indexer.IndexBlock(tc.block, tc.blockResult) + suite.Require().NoError(err) + + receipts, err := suite.backend.GetBlockReceipts(ethrpc.BlockNumber(1)) + + for receipt := range receipts { + if tc.expPass { + suite.Require().NoError(err) + suite.Require().Equal(receipt, tc.expTxReceipt) + } else { + suite.Require().NotEqual(receipt, tc.expTxReceipt) + } + } + + }) + } +} + +func (suite *BackendTestSuite) TestTransactionHashesFromTendermintBlock() { + msgEthereumTx, bz := suite.buildEthereumTx() + emptyBlock := tmtypes.MakeBlock(1, []tmtypes.Tx{}, nil, nil) + testCases := []struct { + name string + resBlock *tmrpctypes.ResultBlock + blockRes *tmrpctypes.ResultBlockResults + expHashes []common.Hash + }{ + { + "empty block", + &tmrpctypes.ResultBlock{ + Block: emptyBlock, + }, + &tmrpctypes.ResultBlockResults{ + Height: 1, + TxsResults: []*types.ExecTxResult{{Code: 0, GasUsed: 0}}, + }, + []common.Hash{}, + }, + { + "block with tx", + &tmrpctypes.ResultBlock{ + Block: tmtypes.MakeBlock(1, []tmtypes.Tx{bz}, nil, nil), + }, + &tmrpctypes.ResultBlockResults{ + Height: 1, + TxsResults: []*types.ExecTxResult{{Code: 0, GasUsed: 0}}, + FinalizeBlockEvents: []types.Event{ + { + Type: evmtypes.EventTypeBlockBloom, + Attributes: []types.EventAttribute{ + {Key: string(bAttributeKeyEthereumBloom)}, + }, + }, + }, + }, + []common.Hash{msgEthereumTx.Hash()}, + }, + } + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.name), func() { + suite.SetupTest() // reset test and queries + hashes := suite.backend.TransactionHashesFromTendermintBlock(tc.resBlock, tc.blockRes) + + suite.Require().Equal(tc.expHashes, hashes) + }) + } +} diff --git a/rpc/backend/chain_info_test.go b/rpc/backend/chain_info_test.go index 0c2025116d..4eb01ce378 100644 --- a/rpc/backend/chain_info_test.go +++ b/rpc/backend/chain_info_test.go @@ -410,7 +410,7 @@ func (suite *BackendTestSuite) TestFeeHistory() { 1, nil, nil, - true, + false, nil, }, { diff --git a/rpc/backend/tx_info.go b/rpc/backend/tx_info.go index b33ccab66f..35d4ea0719 100644 --- a/rpc/backend/tx_info.go +++ b/rpc/backend/tx_info.go @@ -149,8 +149,8 @@ func (b *Backend) GetGasUsed(res *ethermint.TxResult, gas uint64) uint64 { return res.GasUsed } -// GetTransactionReceipt returns the transaction receipt identified by hash. -func (b *Backend) GetTransactionReceipt(hash common.Hash) (map[string]interface{}, error) { +// GetTransactionReceipt returns the transaction receipt identified by hash. It takes an optional resBlock, if nil then the method will fetch it. +func (b *Backend) GetTransactionReceipt(hash common.Hash, resBlock *tmrpctypes.ResultBlock) (map[string]interface{}, error) { b.logger.Debug("eth_getTransactionReceipt", "hash", hash) res, err := b.GetTxByEthHash(hash) @@ -158,10 +158,12 @@ func (b *Backend) GetTransactionReceipt(hash common.Hash) (map[string]interface{ b.logger.Debug("tx not found", "hash", hash, "error", err.Error()) return nil, nil } - resBlock, err := b.TendermintBlockByNumber(rpctypes.BlockNumber(res.Height)) - if err != nil { - b.logger.Debug("block not found", "height", res.Height, "error", err.Error()) - return nil, nil + if resBlock == nil { + resBlock, err = b.TendermintBlockByNumber(rpctypes.BlockNumber(res.Height)) + if err != nil { + b.logger.Debug("block not found", "height", res.Height, "error", err.Error()) + return nil, nil + } } tx, err := b.clientCtx.TxConfig.TxDecoder()(resBlock.Block.Txs[res.TxIndex]) if err != nil { diff --git a/rpc/backend/tx_info_test.go b/rpc/backend/tx_info_test.go index fd0471303f..afb8aa36c5 100644 --- a/rpc/backend/tx_info_test.go +++ b/rpc/backend/tx_info_test.go @@ -586,7 +586,7 @@ func (suite *BackendTestSuite) TestGetTransactionReceipt() { err := suite.backend.indexer.IndexBlock(tc.block, tc.blockResult) suite.Require().NoError(err) - txReceipt, err := suite.backend.GetTransactionReceipt(tc.tx.Hash()) + txReceipt, err := suite.backend.GetTransactionReceipt(tc.tx.Hash(), nil) if tc.expPass { suite.Require().NoError(err) suite.Require().Equal(txReceipt, tc.expTxReceipt) diff --git a/rpc/namespaces/ethereum/eth/api.go b/rpc/namespaces/ethereum/eth/api.go index 2572f1726e..b07841512e 100644 --- a/rpc/namespaces/ethereum/eth/api.go +++ b/rpc/namespaces/ethereum/eth/api.go @@ -62,7 +62,7 @@ type EthereumAPI interface { GetTransactionReceipt(hash common.Hash) (map[string]interface{}, error) GetTransactionByBlockHashAndIndex(hash common.Hash, idx hexutil.Uint) (*rpctypes.RPCTransaction, error) GetTransactionByBlockNumberAndIndex(blockNum rpctypes.BlockNumber, idx hexutil.Uint) (*rpctypes.RPCTransaction, error) - // eth_getBlockReceipts + GetBlockReceipts(blockNum rpctypes.BlockNumber) ([]map[string]interface{}, error) // Writing Transactions // @@ -195,7 +195,7 @@ func (e *PublicAPI) GetTransactionCount(address common.Address, blockNrOrHash rp func (e *PublicAPI) GetTransactionReceipt(hash common.Hash) (map[string]interface{}, error) { hexTx := hash.Hex() e.logger.Debug("eth_getTransactionReceipt", "hash", hexTx) - return e.backend.GetTransactionReceipt(hash) + return e.backend.GetTransactionReceipt(hash, nil) } // GetBlockTransactionCountByHash returns the number of transactions in the block identified by hash. @@ -222,6 +222,12 @@ func (e *PublicAPI) GetTransactionByBlockNumberAndIndex(blockNum rpctypes.BlockN return e.backend.GetTransactionByBlockNumberAndIndex(blockNum, idx) } +// GetBlockReceipts returns a list of transaction receipts given a block number. +func (e *PublicAPI) GetBlockReceipts(blockNum rpctypes.BlockNumber) ([]map[string]interface{}, error) { + e.logger.Debug("eth_getBlockReceipts", "number", blockNum) + return e.backend.GetBlockReceipts(blockNum) +} + /////////////////////////////////////////////////////////////////////////////// /// Write Txs /// /////////////////////////////////////////////////////////////////////////////// From 6362b9870791594a146a2ccf6bcbb72c87560a06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Jun 2025 12:52:32 +0900 Subject: [PATCH 098/210] build(deps): bump sigs.k8s.io/yaml from 1.4.0 to 1.5.0 (#642) Bumps [sigs.k8s.io/yaml](https://github.com/kubernetes-sigs/yaml) from 1.4.0 to 1.5.0. - [Release notes](https://github.com/kubernetes-sigs/yaml/releases) - [Changelog](https://github.com/kubernetes-sigs/yaml/blob/master/RELEASE.md) - [Commits](https://github.com/kubernetes-sigs/yaml/compare/v1.4.0...v1.5.0) --- updated-dependencies: - dependency-name: sigs.k8s.io/yaml dependency-version: 1.5.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 3 ++- go.sum | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index ba8ea8ef8f..48255e6cf8 100644 --- a/go.mod +++ b/go.mod @@ -55,7 +55,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 - sigs.k8s.io/yaml v1.4.0 + sigs.k8s.io/yaml v1.5.0 ) require ( @@ -248,6 +248,7 @@ require ( go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/arch v0.15.0 // indirect golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect diff --git a/go.sum b/go.sum index c2b0ce807b..f42c87aee3 100644 --- a/go.sum +++ b/go.sum @@ -1751,6 +1751,10 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= +go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/arch v0.15.0 h1:QtOrQd0bTUnhNVNndMpLHNWrDmYzZ2KDqSrEymqInZw= golang.org/x/arch v0.15.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -2592,6 +2596,6 @@ rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= +sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= From 0e50b397cfec9d0695c545de156c357354f4d4f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Jun 2025 04:10:53 +0000 Subject: [PATCH 099/210] build(deps): bump github.com/go-viper/mapstructure/v2 (#643) Bumps the go_modules group with 1 update: [github.com/go-viper/mapstructure/v2](https://github.com/go-viper/mapstructure). Updates `github.com/go-viper/mapstructure/v2` from 2.2.1 to 2.3.0 - [Release notes](https://github.com/go-viper/mapstructure/releases) - [Changelog](https://github.com/go-viper/mapstructure/blob/main/CHANGELOG.md) - [Commits](https://github.com/go-viper/mapstructure/compare/v2.2.1...v2.3.0) --- updated-dependencies: - dependency-name: github.com/go-viper/mapstructure/v2 dependency-version: 2.3.0 dependency-type: indirect dependency-group: go_modules ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas Nguy <81727899+thomas-nguy@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 48255e6cf8..a762db81fd 100644 --- a/go.mod +++ b/go.mod @@ -143,7 +143,7 @@ require ( github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/go-stack/stack v1.8.1 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect - github.com/go-viper/mapstructure/v2 v2.2.1 // indirect + github.com/go-viper/mapstructure/v2 v2.3.0 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect diff --git a/go.sum b/go.sum index f42c87aee3..2da001bb0e 100644 --- a/go.sum +++ b/go.sum @@ -1044,8 +1044,8 @@ github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= +github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= From 2e2c01aaeac2f6b6df4e7147a08aa48160b37372 Mon Sep 17 00:00:00 2001 From: Thomas Nguy <81727899+thomas-nguy@users.noreply.github.com> Date: Mon, 30 Jun 2025 14:07:51 +0900 Subject: [PATCH 100/210] chore: update codeowners (#641) Signed-off-by: Thomas Nguy <81727899+thomas-nguy@users.noreply.github.com> --- .github/CODEOWNERS | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f03d6586dc..7e0df49db4 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,5 +1 @@ -# CODEOWNERS: https://help.github.com/articles/about-codeowners/ - -# Primary (global) repo maintainers - - * @evmos/core-engineering +* @crypto-org-chain/cronos-dev From 1bac3ed36a8a9211c817fa7f6068a35c61b3acca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Jul 2025 09:33:46 +0900 Subject: [PATCH 101/210] build(deps): bump the npm_and_yarn group across 2 directories with 2 updates (#640) Bumps the npm_and_yarn group with 2 updates in the /tests/integration_tests/hardhat directory: [@openzeppelin/contracts-upgradeable](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable) and [pbkdf2](https://github.com/crypto-browserify/pbkdf2). Bumps the npm_and_yarn group with 1 update in the /tests/solidity directory: [pbkdf2](https://github.com/crypto-browserify/pbkdf2). Updates `@openzeppelin/contracts-upgradeable` from 4.9.5 to 4.9.6 - [Release notes](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/releases) - [Changelog](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/master/CHANGELOG.md) - [Commits](https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/compare/v4.9.5...v4.9.6) Updates `pbkdf2` from 3.1.2 to 3.1.3 - [Changelog](https://github.com/browserify/pbkdf2/blob/master/CHANGELOG.md) - [Commits](https://github.com/crypto-browserify/pbkdf2/compare/v3.1.2...v3.1.3) Updates `pbkdf2` from 3.1.2 to 3.1.3 - [Changelog](https://github.com/browserify/pbkdf2/blob/master/CHANGELOG.md) - [Commits](https://github.com/crypto-browserify/pbkdf2/compare/v3.1.2...v3.1.3) --- updated-dependencies: - dependency-name: "@openzeppelin/contracts-upgradeable" dependency-version: 4.9.6 dependency-type: direct:production dependency-group: npm_and_yarn - dependency-name: pbkdf2 dependency-version: 3.1.3 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: pbkdf2 dependency-version: 3.1.3 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas Nguy <81727899+thomas-nguy@users.noreply.github.com> --- .../hardhat/package-lock.json | 643 +++++++++++++----- tests/solidity/yarn.lock | 177 ++++- 2 files changed, 650 insertions(+), 170 deletions(-) diff --git a/tests/integration_tests/hardhat/package-lock.json b/tests/integration_tests/hardhat/package-lock.json index ef3ee39b37..f70260c710 100644 --- a/tests/integration_tests/hardhat/package-lock.json +++ b/tests/integration_tests/hardhat/package-lock.json @@ -1879,9 +1879,10 @@ "license": "MIT" }, "node_modules/@openzeppelin/contracts-upgradeable": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.5.tgz", - "integrity": "sha512-f7L1//4sLlflAN7fVzJLoRedrf5Na3Oal5PZfIq55NFcVZ90EpV1q5xOvL4lFvg3MNICSDr2hH0JUBxwlxcoPg==" + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.6.tgz", + "integrity": "sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==", + "license": "MIT" }, "node_modules/@openzeppelin/defender-base-client": { "version": "1.54.1", @@ -2873,9 +2874,13 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -3132,13 +3137,47 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3561,16 +3600,20 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-properties": { @@ -3614,6 +3657,20 @@ "node": ">=0.3.1" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -3769,6 +3826,36 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", @@ -4245,11 +4332,18 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/forever-agent": { @@ -4893,19 +4987,42 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -4975,11 +5092,12 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5254,11 +5372,12 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5276,9 +5395,10 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5287,11 +5407,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -5323,9 +5444,10 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -5740,11 +5862,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -6285,6 +6408,15 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "devOptional": true }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mcl-wasm": { "version": "0.7.9", "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", @@ -6971,20 +7103,53 @@ } }, "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.3.tgz", + "integrity": "sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==", + "license": "MIT", "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "create-hash": "~1.1.3", + "create-hmac": "^1.1.7", + "ripemd160": "=2.0.1", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.11", + "to-buffer": "^1.2.0" }, "engines": { "node": ">=0.12" } }, + "node_modules/pbkdf2/node_modules/create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" + } + }, + "node_modules/pbkdf2/node_modules/hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1" + } + }, + "node_modules/pbkdf2/node_modules/ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==", + "license": "MIT", + "dependencies": { + "hash-base": "^2.0.0", + "inherits": "^2.0.1" + } + }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -7032,6 +7197,15 @@ "node": ">=0.10.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", @@ -7528,15 +7702,17 @@ "peer": true }, "node_modules/set-function-length": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", - "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", "dependencies": { - "define-data-property": "^1.1.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -8006,6 +8182,26 @@ "node": ">=0.6.0" } }, + "node_modules/to-buffer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", + "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==", + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-buffer/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -8328,13 +8524,14 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -8613,15 +8810,18 @@ "peer": true }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -10120,9 +10320,9 @@ "integrity": "sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==" }, "@openzeppelin/contracts-upgradeable": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.5.tgz", - "integrity": "sha512-f7L1//4sLlflAN7fVzJLoRedrf5Na3Oal5PZfIq55NFcVZ90EpV1q5xOvL4lFvg3MNICSDr2hH0JUBxwlxcoPg==" + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.6.tgz", + "integrity": "sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==" }, "@openzeppelin/defender-base-client": { "version": "1.54.1", @@ -10930,9 +11130,12 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "requires": { + "possible-typed-array-names": "^1.0.0" + } }, "aws-sign2": { "version": "0.7.0", @@ -11154,13 +11357,32 @@ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, "call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "requires": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + } + }, + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, + "call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" } }, "camelcase": { @@ -11469,13 +11691,13 @@ } }, "define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "requires": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" } }, "define-properties": { @@ -11503,6 +11725,16 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==" }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -11635,6 +11867,24 @@ "which-typed-array": "^1.1.13" } }, + "es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "requires": { + "es-errors": "^1.3.0" + } + }, "es-set-tostringtag": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", @@ -12008,11 +12258,11 @@ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" }, "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "requires": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" } }, "forever-agent": { @@ -12445,14 +12695,29 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "requires": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + } + }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" } }, "get-symbol-description": { @@ -12503,12 +12768,9 @@ } }, "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" }, "graceful-fs": { "version": "4.2.11", @@ -12718,11 +12980,11 @@ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "requires": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" } }, "has-proto": { @@ -12731,16 +12993,16 @@ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" }, "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" }, "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" } }, "hash-base": { @@ -12763,9 +13025,9 @@ } }, "hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "requires": { "function-bind": "^1.1.2" } @@ -13038,11 +13300,11 @@ } }, "is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "requires": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.16" } }, "is-typedarray": { @@ -13458,6 +13720,11 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "devOptional": true }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, "mcl-wasm": { "version": "0.7.9", "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", @@ -13957,15 +14224,46 @@ } }, "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.3.tgz", + "integrity": "sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==", "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "create-hash": "~1.1.3", + "create-hmac": "^1.1.7", + "ripemd160": "=2.0.1", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.11", + "to-buffer": "^1.2.0" + }, + "dependencies": { + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==", + "requires": { + "inherits": "^2.0.1" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==", + "requires": { + "hash-base": "^2.0.0", + "inherits": "^2.0.1" + } + } } }, "performance-now": { @@ -14000,6 +14298,11 @@ "pinkie": "^2.0.0" } }, + "possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==" + }, "prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", @@ -14364,15 +14667,16 @@ "peer": true }, "set-function-length": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", - "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "requires": { - "define-data-property": "^1.1.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "has-property-descriptors": "^1.0.2" } }, "set-function-name": { @@ -14742,6 +15046,23 @@ "os-tmpdir": "~1.0.2" } }, + "to-buffer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", + "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==", + "requires": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -14981,13 +15302,13 @@ } }, "typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" } }, "typed-array-byte-length": { @@ -15214,15 +15535,17 @@ "peer": true }, "which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" } }, "window-size": { diff --git a/tests/solidity/yarn.lock b/tests/solidity/yarn.lock index 81acf018c4..db60a64e27 100644 --- a/tests/solidity/yarn.lock +++ b/tests/solidity/yarn.lock @@ -3927,6 +3927,14 @@ cachedown@1.0.0: abstract-leveldown "^2.4.1" lru-cache "^3.2.0" +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7, call-bind@~1.0.2: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" @@ -3938,6 +3946,24 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7, call-bin get-intrinsic "^1.2.4" set-function-length "^1.2.1" +call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + camel-case@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" @@ -4514,7 +4540,17 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: +create-hash@~1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + integrity sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -5064,6 +5100,15 @@ download@^7.1.0: p-event "^2.1.0" pify "^3.0.0" +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + duplexer3@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" @@ -5323,6 +5368,11 @@ es-define-property@^1.0.0: dependencies: get-intrinsic "^1.2.4" +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" @@ -5335,6 +5385,13 @@ es-object-atoms@^1.0.0: dependencies: es-errors "^1.3.0" +es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + es-set-tostringtag@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" @@ -6378,6 +6435,13 @@ for-each@^0.3.3, for-each@~0.3.3: dependencies: is-callable "^1.1.3" +for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -6679,11 +6743,35 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + get-iterator@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-proxy@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" @@ -6826,6 +6914,11 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + got@12.1.0: version "12.1.0" resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" @@ -6981,6 +7074,11 @@ has-symbols@^1.0.0, has-symbols@^1.0.2, has-symbols@^1.0.3: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + has-to-string-tag-x@^1.2.0: version "1.4.1" resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" @@ -7036,6 +7134,13 @@ has@~1.0.3: resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + integrity sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw== + dependencies: + inherits "^2.0.1" + hash-base@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" @@ -7779,6 +7884,13 @@ is-typed-array@^1.1.13, is-typed-array@^1.1.3: dependencies: which-typed-array "^1.1.14" +is-typed-array@^1.1.14: + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -8780,6 +8892,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -10111,15 +10228,16 @@ pathval@^1.1.1: integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9, pbkdf2@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.3.tgz#8be674d591d65658113424592a95d1517318dd4b" + integrity sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA== dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" + create-hash "~1.1.3" + create-hmac "^1.1.7" + ripemd160 "=2.0.1" + safe-buffer "^5.2.1" + sha.js "^2.4.11" + to-buffer "^1.2.0" peer-id@^0.14.1: version "0.14.8" @@ -11064,6 +11182,14 @@ ripemd160-min@0.0.6: resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== +ripemd160@=2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + integrity sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w== + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -11311,7 +11437,7 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-function-length@^1.2.1: +set-function-length@^1.2.1, set-function-length@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== @@ -12070,6 +12196,15 @@ to-buffer@^1.1.1: resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== +to-buffer@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.1.tgz#2ce650cdb262e9112a18e65dc29dcb513c8155e0" + integrity sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ== + dependencies: + isarray "^2.0.5" + safe-buffer "^5.2.1" + typed-array-buffer "^1.0.3" + to-data-view@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/to-data-view/-/to-data-view-1.1.0.tgz#08d6492b0b8deb9b29bdf1f61c23eadfa8994d00" @@ -12303,6 +12438,15 @@ typed-array-buffer@^1.0.2: es-errors "^1.3.0" is-typed-array "^1.1.13" +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + typed-array-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" @@ -13775,6 +13919,19 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2: gopd "^1.0.1" has-tostringtag "^1.0.2" +which-typed-array@^1.1.16: + version "1.1.19" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" + integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + which@1.3.1, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" From 915c1a40119b4a8b00557055f3721d51b7638505 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Jul 2025 09:43:21 +0900 Subject: [PATCH 102/210] build(deps): bump tiny-secp256k1 (#646) Bumps the npm_and_yarn group with 1 update in the /tests/solidity directory: [tiny-secp256k1](https://github.com/bitcoinjs/tiny-secp256k1). Updates `tiny-secp256k1` from 1.1.6 to 1.1.7 - [Commits](https://github.com/bitcoinjs/tiny-secp256k1/compare/v1.1.6...v1.1.7) --- updated-dependencies: - dependency-name: tiny-secp256k1 dependency-version: 1.1.7 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/solidity/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/solidity/yarn.lock b/tests/solidity/yarn.lock index db60a64e27..59ba66ece8 100644 --- a/tests/solidity/yarn.lock +++ b/tests/solidity/yarn.lock @@ -12154,9 +12154,9 @@ tiny-queue@^0.2.1: integrity sha512-EijGsv7kzd9I9g0ByCl6h42BWNGUZrlCSejfrb3AKeHC33SGbASu1VDf5O3rRiiUOhAC9CHdZxFPbZu0HmR70A== tiny-secp256k1@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" - integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== + version "1.1.7" + resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.7.tgz#0c1b6b9d2d93404f9093dc7e287b0aa834480573" + integrity sha512-eb+F6NabSnjbLwNoC+2o5ItbmP1kg7HliWue71JgLegQt6A5mTN8YbvTLCazdlg6e5SV6A+r8OGvZYskdlmhqQ== dependencies: bindings "^1.3.0" bn.js "^4.11.8" From ca6f65c1c75d1bc9204e89d31644bd40e7328555 Mon Sep 17 00:00:00 2001 From: JayT106 Date: Wed, 2 Jul 2025 19:28:04 -0400 Subject: [PATCH 103/210] bump ibc-go to v10 (#609) Signed-off-by: JayT106 --- app/ante/eip712.go | 2 +- app/ante/handler_options.go | 4 +- app/app.go | 84 ++------ app/simulation_test.go | 6 +- go.mod | 47 ++--- go.sum | 80 +++---- gomod2nix.toml | 383 +++++++++++++++++++--------------- x/evm/statedb/statedb_test.go | 11 - 8 files changed, 295 insertions(+), 322 deletions(-) diff --git a/app/ante/eip712.go b/app/ante/eip712.go index 78a5bedd40..0bf020fc2a 100644 --- a/app/ante/eip712.go +++ b/app/ante/eip712.go @@ -29,7 +29,7 @@ import ( authante "github.com/cosmos/cosmos-sdk/x/auth/ante" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" - ibcante "github.com/cosmos/ibc-go/v9/modules/core/ante" + ibcante "github.com/cosmos/ibc-go/v10/modules/core/ante" ethcrypto "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/signer/core/apitypes" diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index 1032568aa1..71587695f2 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -26,8 +26,8 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ethtypes "github.com/ethereum/go-ethereum/core/types" - ibcante "github.com/cosmos/ibc-go/v9/modules/core/ante" - ibckeeper "github.com/cosmos/ibc-go/v9/modules/core/keeper" + ibcante "github.com/cosmos/ibc-go/v10/modules/core/ante" + ibckeeper "github.com/cosmos/ibc-go/v10/modules/core/keeper" evmtypes "github.com/evmos/ethermint/x/evm/types" ) diff --git a/app/app.go b/app/app.go index 8ceff9e81c..4b6a3be8bb 100644 --- a/app/app.go +++ b/app/app.go @@ -115,20 +115,17 @@ import ( "github.com/cosmos/cosmos-sdk/x/staking" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/cosmos/ibc-go/modules/capability" - capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" - capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - - "github.com/cosmos/ibc-go/v9/modules/apps/transfer" - ibctransferkeeper "github.com/cosmos/ibc-go/v9/modules/apps/transfer/keeper" - ibctransfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" - ibc "github.com/cosmos/ibc-go/v9/modules/core" - ibcclienttypes "github.com/cosmos/ibc-go/v9/modules/core/02-client/types" - ibcconnectiontypes "github.com/cosmos/ibc-go/v9/modules/core/03-connection/types" - porttypes "github.com/cosmos/ibc-go/v9/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported" - ibckeeper "github.com/cosmos/ibc-go/v9/modules/core/keeper" - ibctm "github.com/cosmos/ibc-go/v9/modules/light-clients/07-tendermint" + + "github.com/cosmos/ibc-go/v10/modules/apps/transfer" + ibctransferkeeper "github.com/cosmos/ibc-go/v10/modules/apps/transfer/keeper" + ibctransfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/v10/modules/core" + ibcclienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" + ibcconnectiontypes "github.com/cosmos/ibc-go/v10/modules/core/03-connection/types" + porttypes "github.com/cosmos/ibc-go/v10/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + ibckeeper "github.com/cosmos/ibc-go/v10/modules/core/keeper" + ibctm "github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint" "github.com/evmos/ethermint/client/docs" @@ -212,15 +209,13 @@ type EthermintApp struct { pendingTxListeners []ante.PendingTxListener // keys to access the substores - keys map[string]*storetypes.KVStoreKey - tkeys map[string]*storetypes.TransientStoreKey - memKeys map[string]*storetypes.MemoryStoreKey - okeys map[string]*storetypes.ObjectStoreKey + keys map[string]*storetypes.KVStoreKey + tkeys map[string]*storetypes.TransientStoreKey + okeys map[string]*storetypes.ObjectStoreKey // keepers AccountKeeper authkeeper.AccountKeeper BankKeeper bankkeeper.Keeper - CapabilityKeeper *capabilitykeeper.Keeper StakingKeeper *stakingkeeper.Keeper SlashingKeeper slashingkeeper.Keeper MintKeeper mintkeeper.Keeper @@ -236,10 +231,6 @@ type EthermintApp struct { TransferKeeper ibctransferkeeper.Keeper ConsensusParamsKeeper consensusparamkeeper.Keeper - // make scoped keepers public for test purposes - ScopedIBCKeeper capabilitykeeper.ScopedKeeper - ScopedTransferKeeper capabilitykeeper.ScopedKeeper - // Ethermint keepers EvmKeeper *evmkeeper.Keeper FeeMarketKeeper feemarketkeeper.Keeper @@ -308,7 +299,7 @@ func NewEthermintApp( authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, govtypes.StoreKey, paramstypes.StoreKey, upgradetypes.StoreKey, - evidencetypes.StoreKey, capabilitytypes.StoreKey, consensusparamtypes.StoreKey, + evidencetypes.StoreKey, consensusparamtypes.StoreKey, feegrant.StoreKey, authzkeeper.StoreKey, crisistypes.StoreKey, // ibc keys ibcexported.StoreKey, ibctransfertypes.StoreKey, @@ -318,7 +309,6 @@ func NewEthermintApp( // Add the EVM transient store key tkeys := storetypes.NewTransientStoreKeys(paramstypes.TStoreKey) - memKeys := storetypes.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) okeys := storetypes.NewObjectStoreKeys(banktypes.ObjectStoreKey, evmtypes.ObjectStoreKey) // load state streaming if enabled @@ -336,7 +326,6 @@ func NewEthermintApp( invCheckPeriod: invCheckPeriod, keys: keys, tkeys: tkeys, - memKeys: memKeys, okeys: okeys, } @@ -355,16 +344,6 @@ func NewEthermintApp( ) bApp.SetParamStore(app.ConsensusParamsKeeper.ParamsStore) - // add capability keeper and ScopeToModule for ibc module - app.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey]) - - scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibcexported.ModuleName) - scopedTransferKeeper := app.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName) - - // Applications that wish to enforce statically created ScopedKeepers should call `Seal` after creating - // their scoped modules in `NewApp` with `ScopeToModule` - app.CapabilityKeeper.Seal() - // use custom Ethermint account for contracts app.AccountKeeper = authkeeper.NewAccountKeeper( appCodec, runtime.NewKVStoreService(keys[authtypes.StoreKey]), @@ -482,10 +461,9 @@ func NewEthermintApp( // Create IBC Keeper app.IBCKeeper = ibckeeper.NewKeeper( - appCodec, keys[ibcexported.StoreKey], + appCodec, runtime.NewKVStoreService(keys[ibcexported.StoreKey]), app.GetSubspace(ibcexported.ModuleName), app.UpgradeKeeper, - scopedIBCKeeper, authAddr, ) @@ -538,9 +516,9 @@ func NewEthermintApp( // Create Transfer Keepers app.TransferKeeper = ibctransferkeeper.NewKeeper( - appCodec, keys[ibctransfertypes.StoreKey], app.GetSubspace(ibctransfertypes.ModuleName), - app.IBCKeeper.ChannelKeeper, app.IBCKeeper.ChannelKeeper, app.IBCKeeper.PortKeeper, - app.AccountKeeper, app.BankKeeper, scopedTransferKeeper, authAddr, + appCodec, runtime.NewKVStoreService(keys[ibctransfertypes.StoreKey]), app.GetSubspace(ibctransfertypes.ModuleName), + app.IBCKeeper.ChannelKeeper, app.IBCKeeper.ChannelKeeper, app.MsgServiceRouter(), + app.AccountKeeper, app.BankKeeper, authAddr, ) transferModule := transfer.NewAppModule(app.TransferKeeper) transferIBCModule := transfer.NewIBCModule(app.TransferKeeper) @@ -578,7 +556,6 @@ func NewEthermintApp( auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper, app.GetSubspace(banktypes.ModuleName)), - capability.NewAppModule(appCodec, *app.CapabilityKeeper, false), crisis.NewAppModule(&app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), gov.NewAppModule(appCodec, &app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)), @@ -636,10 +613,8 @@ func NewEthermintApp( // CanWithdrawInvariant invariant. // NOTE: upgrade module must go first to handle software upgrades. // NOTE: staking module is required if HistoricalEntries param > 0 - // NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC) app.ModuleManager.SetOrderBeginBlockers( upgradetypes.ModuleName, - capabilitytypes.ModuleName, feemarkettypes.ModuleName, evmtypes.ModuleName, minttypes.ModuleName, @@ -671,7 +646,6 @@ func NewEthermintApp( evmtypes.ModuleName, feemarkettypes.ModuleName, // no-op modules - capabilitytypes.ModuleName, ibcexported.ModuleName, ibctransfertypes.ModuleName, authtypes.ModuleName, @@ -691,12 +665,10 @@ func NewEthermintApp( // NOTE: The genutils module must occur after staking so that pools are // properly initialized with tokens from genesis accounts. // NOTE: The genutils module must also occur after auth so that it can access the params from auth. - // NOTE: Capability module must occur first so that it can initialize any capabilities // so that other modules that want to create or claim capabilities afterwards in InitChain // can do so safely. genesisModuleOrder := []string{ // SDK modules - capabilitytypes.ModuleName, authtypes.ModuleName, banktypes.ModuleName, distrtypes.ModuleName, @@ -763,7 +735,6 @@ func NewEthermintApp( // initialize stores app.MountKVStores(keys) app.MountTransientStores(tkeys) - app.MountMemoryStores(memKeys) app.MountObjectStores(okeys) // initialize BaseApp @@ -805,9 +776,6 @@ func NewEthermintApp( } } - app.ScopedIBCKeeper = scopedIBCKeeper - app.ScopedTransferKeeper = scopedTransferKeeper - executor := cast.ToString(appOpts.Get(srvflags.EVMBlockExecutor)) switch executor { case srvconfig.BlockExecutorBlockSTM: @@ -1003,13 +971,6 @@ func (app *EthermintApp) GetTKey(storeKey string) *storetypes.TransientStoreKey return app.tkeys[storeKey] } -// GetMemKey returns the MemStoreKey for the provided mem key. -// -// NOTE: This is solely used for testing purposes. -func (app *EthermintApp) GetMemKey(storeKey string) *storetypes.MemoryStoreKey { - return app.memKeys[storeKey] -} - // GetStoreKeys returns all the stored store keys. func (app *EthermintApp) GetStoreKeys() []storetypes.StoreKey { keys := make([]storetypes.StoreKey, 0, len(app.keys)) @@ -1019,9 +980,6 @@ func (app *EthermintApp) GetStoreKeys() []storetypes.StoreKey { for _, key := range app.tkeys { keys = append(keys, key) } - for _, key := range app.memKeys { - keys = append(keys, key) - } for _, key := range app.okeys { keys = append(keys, key) } @@ -1092,10 +1050,6 @@ func (app *EthermintApp) GetStoreKey(name string) storetypes.StoreKey { if ok { return tkey } - mkey, ok := app.memKeys[name] - if ok { - return mkey - } return app.okeys[name] } diff --git a/app/simulation_test.go b/app/simulation_test.go index 415082314d..b07c2cb45c 100644 --- a/app/simulation_test.go +++ b/app/simulation_test.go @@ -36,9 +36,8 @@ import ( "github.com/cosmos/cosmos-sdk/x/simulation" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - ibctransfertypes "github.com/cosmos/ibc-go/v9/modules/apps/transfer/types" - ibcexported "github.com/cosmos/ibc-go/v9/modules/core/exported" + ibctransfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" + ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" "github.com/evmos/ethermint/app" "github.com/evmos/ethermint/app/ante" "github.com/evmos/ethermint/testutil" @@ -243,7 +242,6 @@ func TestAppImportExport(t *testing.T) { {simApp.GetKey(paramtypes.StoreKey), newApp.GetKey(paramtypes.StoreKey), [][]byte{}}, {simApp.GetKey(govtypes.StoreKey), newApp.GetKey(govtypes.StoreKey), [][]byte{}}, {simApp.GetKey(evidencetypes.StoreKey), newApp.GetKey(evidencetypes.StoreKey), [][]byte{}}, - {simApp.GetKey(capabilitytypes.StoreKey), newApp.GetKey(capabilitytypes.StoreKey), [][]byte{}}, {simApp.GetKey(authzkeeper.StoreKey), newApp.GetKey(authzkeeper.StoreKey), [][]byte{authzkeeper.GrantKey, authzkeeper.GrantQueuePrefix}}, {simApp.GetKey(ibcexported.StoreKey), newApp.GetKey(ibcexported.StoreKey), [][]byte{}}, {simApp.GetKey(ibctransfertypes.StoreKey), newApp.GetKey(ibctransfertypes.StoreKey), [][]byte{}}, diff --git a/go.mod b/go.mod index a762db81fd..68b76e7dc9 100644 --- a/go.mod +++ b/go.mod @@ -5,31 +5,30 @@ go 1.23.10 require ( cosmossdk.io/api v0.9.2 cosmossdk.io/client/v2 v2.0.0-beta.5 - cosmossdk.io/collections v1.3.1 - cosmossdk.io/core v0.11.3 - cosmossdk.io/errors v1.0.2 - cosmossdk.io/log v1.6.0 - cosmossdk.io/math v1.5.3 - cosmossdk.io/store v1.1.2 + cosmossdk.io/collections v0.4.0 + cosmossdk.io/core v0.11.1 + cosmossdk.io/errors v1.0.1 + cosmossdk.io/log v1.4.1 + cosmossdk.io/math v1.4.0 + cosmossdk.io/store v1.1.1 cosmossdk.io/tools/confix v0.1.2 cosmossdk.io/x/evidence v0.1.1 cosmossdk.io/x/feegrant v0.1.1 - cosmossdk.io/x/tx v0.14.0 - cosmossdk.io/x/upgrade v0.2.0 + cosmossdk.io/x/tx v0.13.7 + cosmossdk.io/x/upgrade v0.1.4 github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcutil v1.1.6 - github.com/cometbft/cometbft v0.38.17 - github.com/cosmos/cosmos-db v1.1.3 + github.com/cometbft/cometbft v0.38.15 + github.com/cosmos/cosmos-db v1.1.1 github.com/cosmos/cosmos-proto v1.0.0-beta.5 - github.com/cosmos/cosmos-sdk v0.53.0 + github.com/cosmos/cosmos-sdk v0.50.13 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.7.0 - github.com/cosmos/ibc-go/modules/capability v1.0.1 - github.com/cosmos/ibc-go/v9 v9.0.2 + github.com/cosmos/ibc-go/v10 v10.1.1 github.com/cosmos/rosetta v0.50.12 github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc - github.com/ethereum/go-ethereum v1.10.26 + github.com/ethereum/go-ethereum v1.15.5 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 github.com/gorilla/mux v1.8.1 @@ -68,7 +67,6 @@ require ( cloud.google.com/go/monitoring v1.21.2 // indirect cloud.google.com/go/storage v1.49.0 // indirect cosmossdk.io/depinject v1.2.0 // indirect - cosmossdk.io/schema v1.1.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect @@ -87,15 +85,12 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.2.0 // indirect - github.com/bits-and-blooms/bitset v1.8.0 // indirect + github.com/bits-and-blooms/bitset v1.17.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect - github.com/bytedance/sonic v1.13.2 // indirect - github.com/bytedance/sonic/loader v0.2.4 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect - github.com/cloudwego/base64x v0.1.5 // indirect github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/cockroachdb/errors v1.12.0 // indirect @@ -175,8 +170,8 @@ require ( github.com/hashicorp/yamux v0.1.2 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect github.com/holiman/bloomfilter/v2 v2.0.3 // indirect - github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c // indirect - github.com/huandu/skiplist v1.2.1 // indirect + github.com/holiman/uint256 v1.3.2 // indirect + github.com/huandu/skiplist v1.2.0 // indirect github.com/huin/goupnp v1.0.3 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -184,7 +179,6 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.18.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.10 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -213,7 +207,7 @@ require ( github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - github.com/rs/zerolog v1.34.0 // indirect + github.com/rs/zerolog v1.33.0 // indirect github.com/sagikazarmark/locafero v0.7.0 // indirect github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect @@ -230,7 +224,6 @@ require ( github.com/tidwall/pretty v1.2.0 // indirect github.com/tklauser/go-sysconf v0.3.10 // indirect github.com/tklauser/numcpus v0.4.0 // indirect - github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/zeebo/errs v1.4.0 // indirect github.com/zondax/hid v0.9.2 // indirect @@ -251,13 +244,13 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/arch v0.15.0 // indirect golang.org/x/crypto v0.39.0 // indirect - golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect + golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect golang.org/x/oauth2 v0.28.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect - golang.org/x/time v0.10.0 // indirect + golang.org/x/time v0.9.0 // indirect golang.org/x/tools v0.33.0 // indirect - google.golang.org/api v0.222.0 // indirect + google.golang.org/api v0.215.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect diff --git a/go.sum b/go.sum index 2da001bb0e..de0713bd6c 100644 --- a/go.sum +++ b/go.sum @@ -618,28 +618,26 @@ cosmossdk.io/api v0.9.2 h1:9i9ptOBdmoIEVEVWLtYYHjxZonlF/aOVODLFaxpmNtg= cosmossdk.io/api v0.9.2/go.mod h1:CWt31nVohvoPMTlPv+mMNCtC0a7BqRdESjCsstHcTkU= cosmossdk.io/client/v2 v2.0.0-beta.5 h1:0LVv3nEByn//hFDIrYLs2WvsEU3HodOelh4SDHnA/1I= cosmossdk.io/client/v2 v2.0.0-beta.5/go.mod h1:4p0P6o0ro+FizakJUYS9SeM94RNbv0thLmkHRw5o5as= -cosmossdk.io/collections v1.3.1 h1:09e+DUId2brWsNOQ4nrk+bprVmMUaDH9xvtZkeqIjVw= -cosmossdk.io/collections v1.3.1/go.mod h1:ynvkP0r5ruAjbmedE+vQ07MT6OtJ0ZIDKrtJHK7Q/4c= -cosmossdk.io/core v0.11.3 h1:mei+MVDJOwIjIniaKelE3jPDqShCc/F4LkNNHh+4yfo= -cosmossdk.io/core v0.11.3/go.mod h1:9rL4RE1uDt5AJ4Tg55sYyHWXA16VmpHgbe0PbJc6N2Y= +cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= +cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= +cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= +cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= cosmossdk.io/depinject v1.2.0 h1:6NW/FSK1IkWTrX7XxUpBmX1QMBozpEI9SsWkKTBc5zw= cosmossdk.io/depinject v1.2.0/go.mod h1:pvitjtUxZZZTQESKNS9KhGjWVslJZxtO9VooRJYyPjk= -cosmossdk.io/errors v1.0.2 h1:wcYiJz08HThbWxd/L4jObeLaLySopyyuUFB5w4AGpCo= -cosmossdk.io/errors v1.0.2/go.mod h1:0rjgiHkftRYPj//3DrD6y8hcm40HcPv/dR4R/4efr0k= -cosmossdk.io/log v1.6.0 h1:SJIOmJ059wi1piyRgNRXKXhlDXGqnB5eQwhcZKv2tOk= -cosmossdk.io/log v1.6.0/go.mod h1:5cXXBvfBkR2/BcXmosdCSLXllvgSjphrrDVdfVRmBGM= -cosmossdk.io/math v1.5.3 h1:WH6tu6Z3AUCeHbeOSHg2mt9rnoiUWVWaQ2t6Gkll96U= -cosmossdk.io/math v1.5.3/go.mod h1:uqcZv7vexnhMFJF+6zh9EWdm/+Ylyln34IvPnBauPCQ= -cosmossdk.io/schema v1.1.0 h1:mmpuz3dzouCoyjjcMcA/xHBEmMChN+EHh8EHxHRHhzE= -cosmossdk.io/schema v1.1.0/go.mod h1:Gb7pqO+tpR+jLW5qDcNOSv0KtppYs7881kfzakguhhI= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= +cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= +cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= +cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4= cosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo= cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4= cosmossdk.io/x/evidence v0.1.1/go.mod h1:OoDsWlbtuyqS70LY51aX8FBTvguQqvFrt78qL7UzeNc= cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8= cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ= -cosmossdk.io/x/upgrade v0.2.0 h1:ZHy0xny3wBCSLomyhE06+UmQHWO8cYlVYjfFAJxjz5g= -cosmossdk.io/x/upgrade v0.2.0/go.mod h1:DXDtkvi//TrFyHWSOaeCZGBoiGAE6Rs8/0ABt2pcDD0= +cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38= +cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= @@ -727,8 +725,8 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.8.0 h1:FD+XqgOZDUxxZ8hzoBFuV9+cGWY9CslN6d5MS5JVb4c= -github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= +github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= @@ -760,11 +758,6 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtE github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= -github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ= -github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= -github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= -github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -795,9 +788,6 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= -github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= -github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -843,8 +833,8 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-db v1.1.3 h1:7QNT77+vkefostcKkhrzDK9uoIEryzFrU9eoMeaQOPY= -github.com/cosmos/cosmos-db v1.1.3/go.mod h1:kN+wGsnwUJZYn8Sy5Q2O0vCYA99MJllkKASbs6Unb9U= +github.com/cosmos/cosmos-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNCM= +github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= @@ -856,10 +846,8 @@ github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fr github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= github.com/cosmos/iavl v1.2.2 h1:qHhKW3I70w+04g5KdsdVSHRbFLgt3yY3qTMd4Xa4rC8= github.com/cosmos/iavl v1.2.2/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= -github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI= -github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E= -github.com/cosmos/ibc-go/v9 v9.0.2 h1:4481uaqY8Asoqqfb2OZC8Cu9Ud8ZgarF9cS3sntBIsY= -github.com/cosmos/ibc-go/v9 v9.0.2/go.mod h1:FeznzlNFQhhu1O8TrWJT+2L1OyKdUEb1kmmjuWod3VI= +github.com/cosmos/ibc-go/v10 v10.1.1 h1:Mtl0Ydr9dVdOrPqmxCAG49RmX2/VDYeKYdwv3G2y0g8= +github.com/cosmos/ibc-go/v10 v10.1.1/go.mod h1:0pJCkgEYRMygqkvUcwy6Kuf5wPfIsObRoxFU2DJEil4= github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= @@ -1278,13 +1266,13 @@ github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c h1:DZfsyhDK1hnSS5lH8l+JggqzEleHteTYfutAiVlSUM8= -github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= +github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA= +github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= -github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w= -github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= +github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= +github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= @@ -1343,9 +1331,6 @@ github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrD github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= -github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= -github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -1566,9 +1551,9 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= -github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= -github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -1663,8 +1648,6 @@ github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq// github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= -github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= @@ -1793,8 +1776,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= -golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -2132,8 +2115,8 @@ golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= -golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= +golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -2283,8 +2266,8 @@ google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/ google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.222.0 h1:Aiewy7BKLCuq6cUCeOUrsAlzjXPqBkEeQ/iwGHVQa/4= -google.golang.org/api v0.222.0/go.mod h1:efZia3nXpWELrwMlN5vyQrD4GmJN1Vw0x68Et3r+a9c= +google.golang.org/api v0.215.0 h1:jdYF4qnyczlEz2ReWIsosNLDuzXyvFHJtI5gcr0J7t0= +google.golang.org/api v0.215.0/go.mod h1:fta3CVtuJYOEdugLNWm6WodzOS8KdFckABwN4I40hzY= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2588,7 +2571,6 @@ modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0= nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= -nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/gomod2nix.toml b/gomod2nix.toml index 4f6dcbda30..2b7364ad4a 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -1,27 +1,33 @@ schema = 3 [mod] + [mod."cel.dev/expr"] + version = "v0.23.0" + hash = "sha256-s8lgDeGbKpZDfPJHh/+VTJEW8Wt+aMVeCf1YZwc8SY0=" [mod."cloud.google.com/go"] - version = "v0.115.0" - hash = "sha256-FIfzk9JYArEfDnJtdXXHBrI4yTGzZPyefQm1O1ldez8=" + version = "v0.116.0" + hash = "sha256-e62GvNveg3bRi4O+eBARqgQ2sinobx+SVGR9WE7jKgs=" [mod."cloud.google.com/go/auth"] - version = "v0.6.0" - hash = "sha256-gOhYABjjNn62exyu2fzqUMJev9Tva6scdYVdaSHwrqo=" + version = "v0.14.1" + hash = "sha256-nBYUu/RQv3aAUgUaYbXJ3bCNkJfF9W05NThkwrL3sZg=" [mod."cloud.google.com/go/auth/oauth2adapt"] - version = "v0.2.2" - hash = "sha256-rdgb3uWekFSfsMZeY7DqHr7Q8ELOwLIZO4W7t2Cvt40=" + version = "v0.2.7" + hash = "sha256-U+pXaY0kPnSeBzHWxELZ75bZnb74nygwIVZDdXYcP5g=" [mod."cloud.google.com/go/compute/metadata"] - version = "v0.5.0" - hash = "sha256-IyVEEElHNPLTRFUMF8ymV3FfQEJQfEdTSeU5PodfOzA=" + version = "v0.6.0" + hash = "sha256-E8/cwio4xR8buCryR4HwR7+agb4M3zqgXSm7rBglmIY=" [mod."cloud.google.com/go/iam"] - version = "v1.1.9" - hash = "sha256-xC4/ssYSWYXlGz9y5BrVKHizSM7bGV/gi10qvf9dvKA=" + version = "v1.2.2" + hash = "sha256-LcGHudwmL20n0w1V6k1e28ffhGQ/jpwmdn7mVDPKnTI=" + [mod."cloud.google.com/go/monitoring"] + version = "v1.21.2" + hash = "sha256-h641vXJFH28fC5HFiDtAn2/V9lcJkMUTehPejQO5BGM=" [mod."cloud.google.com/go/storage"] - version = "v1.41.0" - hash = "sha256-y2/EHhY+gE/U8FdILHAfiCgZZHey8wn6e7N/smv5Yks=" + version = "v1.49.0" + hash = "sha256-syeF7hgpF9LyOzK/maCOEwff0ORT++0AG+g2eJBaTXE=" [mod."cosmossdk.io/api"] - version = "v0.7.6" - hash = "sha256-ubE78Xrsz+YQcOGyjpp/MwqUHwsGVbkcWXVzMFfFw0I=" + version = "v0.9.2" + hash = "sha256-6uH37ozKw/EVE20w0JFEBH23x1mZLFHOknd5Bh4sJPs=" [mod."cosmossdk.io/client/v2"] version = "v2.0.0-beta.5" hash = "sha256-zivawuJLLbNn0zE9FRWjCtrpks7vlDprQ7DbNKqhwWc=" @@ -32,8 +38,8 @@ schema = 3 version = "v0.11.1" hash = "sha256-A857PYFy22B43qo8raLkstLOao7RRltt6TB+s3ZuuM4=" [mod."cosmossdk.io/depinject"] - version = "v1.0.0" - hash = "sha256-dtsNfj5zUlX6e4YslzyegrebztmlLiBFvqDb2IHV+Zc=" + version = "v1.2.0" + hash = "sha256-VZTSVdX5UCCqSysJhS8DCNOeGYDDD9CCZgc7WbmUJQM=" [mod."cosmossdk.io/errors"] version = "v1.0.1" hash = "sha256-MgTocXkBzri9FKkNtkARJXPmxRrRO/diQJS5ZzvYrJY=" @@ -41,11 +47,11 @@ schema = 3 version = "v1.4.1" hash = "sha256-pgI770MdI/OfZcK6UFmQ9iyPBgapz/ErrUe8WVO3iBg=" [mod."cosmossdk.io/math"] - version = "v1.3.0" - hash = "sha256-EEFK43Cr0g0ndhQhkIKher0FqV3mvkmE9z0sP7uVSHg=" + version = "v1.4.0" + hash = "sha256-qMGiZh9GJg/5b8o7qe0dKoukB/XM+lxDC00MhCfGv28=" [mod."cosmossdk.io/store"] - version = "v0.0.0-20250116033154-05863f6ce4b8" - hash = "sha256-vXJBzc0ZxdjYYn2V5jfzOumbY4VUnMfYtMYfYzzD56M=" + version = "v0.0.0-20241217090828-cfbca9fe8254" + hash = "sha256-0c5h9pwaR3ZlmA3pnme39K8zn9WyrI1C1GRRDVH39Ug=" replaced = "github.com/crypto-org-chain/cosmos-sdk/store" [mod."cosmossdk.io/tools/confix"] version = "v0.1.2" @@ -57,7 +63,7 @@ schema = 3 version = "v0.1.1" hash = "sha256-aps3LfnQau1TYeccGwtqHQvy1Rudc9+O+iVAwXBKyDw=" [mod."cosmossdk.io/x/tx"] - version = "v0.0.0-20250116033154-05863f6ce4b8" + version = "v0.0.0-20241217090828-cfbca9fe8254" hash = "sha256-3A5GTl5NRD4zH3PsSd450C6HvU2zi4I7b4Zqu+L9YAo=" replaced = "github.com/crypto-org-chain/cosmos-sdk/x/tx" [mod."cosmossdk.io/x/upgrade"] @@ -77,11 +83,26 @@ schema = 3 version = "v4.8.3+incompatible" hash = "sha256-9KvlVQdgyJ1ulDa6wkLb0ACdjc+R0U91hdb7nxodrA0=" [mod."github.com/DataDog/zstd"] - version = "v1.5.5" - hash = "sha256-tSw0aq0pPyroZtQYYb9lWOtPVNaQOt8skYQ4TMXGvAQ=" + version = "v1.5.7" + hash = "sha256-GlSZOyix7Ct7tOKmSKpGckDjMhTtiYPBTpoWdwGLx5M=" + [mod."github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp"] + version = "v1.27.0" + hash = "sha256-zdT1oaizbstU0ZlAzsV/EmOkkaOoDfX7tXrMYNRD7gI=" + [mod."github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric"] + version = "v0.48.1" + hash = "sha256-hClW3wbw/4yAIxh+Wb8muAuq5W4EF5lF219ShJX4x40=" + [mod."github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping"] + version = "v0.48.1" + hash = "sha256-r/Aeb+gQXcko/VEtRJ8eMh6PoC+oWAXCN0PtscvzcPw=" [mod."github.com/Microsoft/go-winio"] version = "v0.6.2" hash = "sha256-tVNWDUMILZbJvarcl/E7tpSnkn7urqgSHa2Eaka5vSU=" + [mod."github.com/PuerkitoBio/purell"] + version = "v1.1.1" + hash = "sha256-Hjf8ZNNdwcRd50A9QNrcCj17gu/6f1iKzVTVrrMrojA=" + [mod."github.com/PuerkitoBio/urlesc"] + version = "v0.0.0-20170810143723-de5bf2ad4578" + hash = "sha256-nL0/0QM0Pec83vBlwXvQ8g5SvvZnCQgzD1apxfHNGlg=" [mod."github.com/StackExchange/wmi"] version = "v0.0.0-20180116203802-5d049714c4a6" hash = "sha256-0yUxhZB3v3ZE3QY36zHs2cJ1S4GXptXIhyAi6sI2nOo=" @@ -104,8 +125,8 @@ schema = 3 version = "v0.2.0" hash = "sha256-Tx3sPuhsoVwrCfJdIwf4ipn7pD92OQNYvpCxl1Z9Wt0=" [mod."github.com/bits-and-blooms/bitset"] - version = "v1.8.0" - hash = "sha256-ySle5MJXSGMHJa1HSf/ZMDTYXdow9ct7JXth4k5Po50=" + version = "v1.17.0" + hash = "sha256-CJT78VMr79MjQKsZW51Y3RxvBmN8ntq+O1o82zxJBBc=" [mod."github.com/btcsuite/btcd"] version = "v0.24.2" hash = "sha256-ahlpwEr4KfyrEA899X07QtuSDnC8U+SnwL+z72DiK5E=" @@ -127,24 +148,27 @@ schema = 3 [mod."github.com/chzyer/readline"] version = "v1.5.1" hash = "sha256-6wKd6/JZ9/O7FwSyNKE3KOt8fVPZEunqbTHQUxlOUNc=" + [mod."github.com/cncf/xds/go"] + version = "v0.0.0-20250326154945-ae57f3c0d45f" + hash = "sha256-lNqxhd49Wz+ia6ZQSOWziqlDmtEM67FOtHDNSxm6hgc=" [mod."github.com/cockroachdb/apd/v2"] version = "v2.0.2" hash = "sha256-UrPHkvqVF8V78+kXKmjTHl79XsgDBnqFsje5BMYh0E4=" [mod."github.com/cockroachdb/errors"] - version = "v1.11.3" - hash = "sha256-kDiT0MVVRnnQ0ugZWVHcZmv3UgwnxEW6xzt+mV22dTI=" + version = "v1.12.0" + hash = "sha256-9TBKKUHDzMa/aJ/2+GMQSdp3WpK7CxuRezz2gNtmW2k=" [mod."github.com/cockroachdb/fifo"] version = "v0.0.0-20240616162244-4768e80dfb9a" hash = "sha256-1SXf9xOjxzr9bHpKPUSnRS0Ek+zxMEFAuqpOchyLAbo=" [mod."github.com/cockroachdb/logtags"] - version = "v0.0.0-20230118201751-21c54148d20b" - hash = "sha256-7dQH6j1o99fuxHKkw0RhNC5wJKkvRLMDJpUiVnDx6h8=" + version = "v0.0.0-20241215232642-bb51bb14a506" + hash = "sha256-h69C+/qFjmijuSViiJ3IF5ted/+x7VY7xlkVMya4i24=" [mod."github.com/cockroachdb/pebble"] - version = "v1.1.2" - hash = "sha256-btyS8BkdGK15BtbIaPERmDQ2ayVw9S05ciJw1YhoTLk=" - [mod."github.com/cockroachdb/redact"] version = "v1.1.5" - hash = "sha256-0rtT7LRO0wxf9XovOK8GXRrhmx8OcbdPK/mXOKbJdog=" + hash = "sha256-m2mwRUX5Kp3WluKBpF4tU32QhMZmUDDgS14YfGfHygs=" + [mod."github.com/cockroachdb/redact"] + version = "v1.1.6" + hash = "sha256-gE/NZlAGY6sv3ZkEcvaA63/OddKN6L3Z8wLql20Z0OA=" [mod."github.com/cockroachdb/tokenbucket"] version = "v0.0.0-20230807174530-cc333fc44b06" hash = "sha256-yZdBXkTVzPxRYntI9I2Gu4gkI11m52Nwl8RNNdlXSrA=" @@ -162,14 +186,14 @@ schema = 3 version = "v1.0.5" hash = "sha256-t572Sr5iiHcuMKLMWa2i+LBAt192oa+G1oA371tG/eI=" [mod."github.com/cosmos/cosmos-db"] - version = "v1.0.3-0.20240408151834-e75f6e4b28d8" - hash = "sha256-8g+F6KqJD4UymXZjES5TG4FQ/Pyww2SjpXOOibyztRc=" + version = "v1.1.1" + hash = "sha256-4YHCcKengdmFEFBcJMgHooL4JMD7Mq8Wp4yanLjZtzo=" [mod."github.com/cosmos/cosmos-proto"] version = "v1.0.0-beta.5" hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg=" [mod."github.com/cosmos/cosmos-sdk"] - version = "v0.50.6-0.20250116033154-05863f6ce4b8" - hash = "sha256-FdqMirVPBm0lbUaBrbIxnlIaD9mYmZeW8ooJRUD/oYE=" + version = "v0.50.6-0.20250424063720-28ea58ae20d8" + hash = "sha256-UCynFh2IangiNqQsgux4dKCk8wuF1vgoINQGA8N59QY=" replaced = "github.com/crypto-org-chain/cosmos-sdk" [mod."github.com/cosmos/go-bip39"] version = "v1.0.0" @@ -181,23 +205,20 @@ schema = 3 version = "v1.7.0" hash = "sha256-ZkEUImxBBo8Q/6c7tVR0rybpLbtlplzvgfLl5xvtV00=" [mod."github.com/cosmos/iavl"] - version = "v1.2.0" - hash = "sha256-NYSt6LOGyspP6eZXo9e5+2MFwyrWxD/rp2dRTtlWg2E=" - [mod."github.com/cosmos/ibc-go/modules/capability"] - version = "v1.0.1" - hash = "sha256-iRhj2WTr99DgAl80h25pxtkO6iHYjyHflwpxKKG5b6E=" - [mod."github.com/cosmos/ibc-go/v9"] - version = "v9.0.2" - hash = "sha256-1CJgR4aOrl2E9hCU3j5ReqPnRKKR56OPJ/bILmY/jTM=" + version = "v1.2.2" + hash = "sha256-Cq5iSwFj88udB51nRxodOizrBdxKVmm6ES5cp0HoKds=" + [mod."github.com/cosmos/ibc-go/v10"] + version = "v10.1.1" + hash = "sha256-dYqLbQROlFKn+kXzTVmRyp8VD+mHOLuU1DdEj2+H+4k=" [mod."github.com/cosmos/ics23/go"] version = "v0.11.0" hash = "sha256-mgU/pqp4kASmW/bP0z6PzssfjRp7GU9ioyvNlDdGC+E=" [mod."github.com/cosmos/ledger-cosmos-go"] - version = "v0.13.3" - hash = "sha256-4f73odipfgWku0/gK2UtXbrBXvj8kT9sg4IhnfAP/S0=" + version = "v0.14.0" + hash = "sha256-AKtzonymKOsC63pdsQvb0qn1WO/2X5m66YkmG140Clk=" [mod."github.com/cosmos/rosetta"] - version = "v0.50.3-1" - hash = "sha256-lmB2W6b4cmyGHLh3OpOLnGy2Q75QONLtrWwp/Pvnf6k=" + version = "v0.50.12" + hash = "sha256-JKwclO0/CoUXPfGKNTCqOF87vTOoOrH0OV1I1+cPLtI=" [mod."github.com/cosmos/rosetta-sdk-go"] version = "v0.10.0" hash = "sha256-WmLq9E9mYV+ms6Tdb43lCoAy6cowkDnK4bvX/ApDzLY=" @@ -220,8 +241,8 @@ schema = 3 version = "v2.1.0" hash = "sha256-Co6gfAcVn256IUEJNNPmVlx8LZRI4sT+KmqGs2uIQ90=" [mod."github.com/decred/dcrd/dcrec/secp256k1/v4"] - version = "v4.3.0" - hash = "sha256-ADbhI5Ad+q3OxooIiYeLAq5mMONk1gPIAnTch9zKsIM=" + version = "v4.4.0" + hash = "sha256-qrhEIwhDll3cxoVpMbm1NQ9/HTI42S7ms8Buzlo5HCg=" [mod."github.com/desertbit/timer"] version = "v1.0.1" hash = "sha256-Uk1Ep6lHLGEadcSF/2R9Bk6zwc5OUbTf/WCHrPatWEM=" @@ -249,6 +270,12 @@ schema = 3 [mod."github.com/emicklei/dot"] version = "v1.6.2" hash = "sha256-X7aNKLKZ7pJBG/wdP+TWuQnlNLNdbUDd+kC5kF4uBtU=" + [mod."github.com/envoyproxy/go-control-plane/envoy"] + version = "v1.32.4" + hash = "sha256-Kz2fCmxytCcgcj00J7ilChS/daV4y2pxghgD8YOooMI=" + [mod."github.com/envoyproxy/protoc-gen-validate"] + version = "v1.2.1" + hash = "sha256-1ARLFfk23TFvOUxXhlMJ757SgClmNtWaqj/T7g/2Z70=" [mod."github.com/ethereum/go-ethereum"] version = "v1.10.20-0.20241030073450-b9cc632bc183" hash = "sha256-5nh0HZOZwlZBMmHv08BELlNfDZyq5zwq65ByyMzOetA=" @@ -260,14 +287,17 @@ schema = 3 version = "v1.0.4" hash = "sha256-c1JKoRSndwwOyOxq9ddCe+8qn7mG9uRq2o/822x5O/c=" [mod."github.com/fsnotify/fsnotify"] - version = "v1.7.0" - hash = "sha256-MdT2rQyQHspPJcx6n9ozkLbsktIOJutOqDuKpNAtoZY=" + version = "v1.9.0" + hash = "sha256-WtpE1N6dpHwEvIub7Xp/CrWm0fd6PX7MKA4PV44rp2g=" [mod."github.com/gballet/go-libpcsclite"] version = "v0.0.0-20190607065134-2772fd86a8ff" hash = "sha256-Nr5ocU9s1F2Lhx/Zq6/nIo+KkKEqMjDYOEs3yWRC48g=" [mod."github.com/getsentry/sentry-go"] - version = "v0.28.1" - hash = "sha256-IR3xr8/XLKEnkpXUD470sjQVhI59Fsq74+Q4i/jcMh4=" + version = "v0.33.0" + hash = "sha256-pu9akz2POlvlU7ynCSyOKhafByB+jsQm/8uYKJjrtds=" + [mod."github.com/go-jose/go-jose/v4"] + version = "v4.0.5" + hash = "sha256-xDbwQfxNiH0gdNMCuxa6qKqiAeOhsnWm8MYSM+KISew=" [mod."github.com/go-kit/kit"] version = "v0.13.0" hash = "sha256-EncDzq0JVtY+NLlW5lD+nbVewNYTTrfzlOxI4PuwREw=" @@ -278,8 +308,8 @@ schema = 3 version = "v0.6.0" hash = "sha256-RtIG2qARd5sT10WQ7F3LR8YJhS8exs+KiuUiVf75bWg=" [mod."github.com/go-logr/logr"] - version = "v1.4.1" - hash = "sha256-WM4badoqxXlBmqCRrnmtNce63dLlr/FJav3BJSYHvaY=" + version = "v1.4.2" + hash = "sha256-/W6qGilFlZNTb9Uq48xGZ4IbsVeSwJiAMLw4wiNYHLI=" [mod."github.com/go-logr/stdr"] version = "v1.2.2" hash = "sha256-rRweAP7XIb4egtT1f2gkz4sYOu7LDHmcJ5iNsJUd0sE=" @@ -292,6 +322,12 @@ schema = 3 [mod."github.com/go-stack/stack"] version = "v1.8.1" hash = "sha256-ixcJ2RrK1ZH3YWGQZF9QFBo02NOuLeSp9wJ7gniipgY=" + [mod."github.com/go-task/slim-sprig/v3"] + version = "v3.0.0" + hash = "sha256-vCCw4MXVBm33VNLXcOBccVDD1CSnzDvDdWB6w5FN1cA=" + [mod."github.com/go-viper/mapstructure/v2"] + version = "v2.2.1" + hash = "sha256-3BcbxiZQp3eglk+vaYnRIDGT4dQ9K8aLrTPODbToI/Q=" [mod."github.com/godbus/dbus"] version = "v0.0.0-20190726142602-4481cbc300e2" hash = "sha256-R7Gb9+Zjy80FbQSDGketoVEqfdOQKuOVTfWRjQ5kxZY=" @@ -323,23 +359,26 @@ schema = 3 version = "v24.3.25+incompatible" hash = "sha256-b96yDt5Agzf8/VYrueYjuwvHE7cD8J1H/gVavQH+BRI=" [mod."github.com/google/go-cmp"] - version = "v0.6.0" - hash = "sha256-qgra5jze4iPGP0JSTVeY5qV5AvEnEu39LYAuUCIkMtg=" + version = "v0.7.0" + hash = "sha256-JbxZFBFGCh/Rj5XZ1vG94V2x7c18L8XKB0N9ZD5F2rM=" [mod."github.com/google/orderedcode"] version = "v0.0.1" hash = "sha256-KrExYovtUQrHGI1mPQf57jGw8soz7eWOC2xqEaV0uGk=" + [mod."github.com/google/pprof"] + version = "v0.0.0-20250403155104-27863c87afa6" + hash = "sha256-6dezHRvyMOT/3I5SzKcvXGsbeZ27YIBmjnAKd5+Hijc=" [mod."github.com/google/s2a-go"] - version = "v0.1.7" - hash = "sha256-E+SX/3VmRI5qN7SbnRP4Tt+gQTq93pScpY9U2tTmIU0=" + version = "v0.1.9" + hash = "sha256-0AdSpSTso4bATmM/9qamWzKrVtOLDf7afvDhoiT/UpA=" [mod."github.com/google/uuid"] version = "v1.6.0" hash = "sha256-VWl9sqUzdOuhW0KzQlv0gwwUQClYkmZwSydHG2sALYw=" [mod."github.com/googleapis/enterprise-certificate-proxy"] - version = "v0.3.2" - hash = "sha256-wVuR3QC0mYFl5LNeKdRXdKdod7BGP5sv2h6VVib85v8=" + version = "v0.3.4" + hash = "sha256-RVHWa0I68CTegjlXnM/GlishoZhmmwG4z+9KBucAJ1A=" [mod."github.com/googleapis/gax-go/v2"] - version = "v2.12.5" - hash = "sha256-hqZ8F2tXqrlbMA/iN0mXw+LdDkoYsU7i2L/mt1VMQPY=" + version = "v2.14.1" + hash = "sha256-iRS/KsAVTePrvTlwA7vKcQnwY6Jz329WdgzFw0hF8wk=" [mod."github.com/gorilla/handlers"] version = "v1.5.2" hash = "sha256-2WQeVCe7vQg+8MpNLMhOGsRdbrcWLpbtUhUX8mbiQrs=" @@ -349,6 +388,9 @@ schema = 3 [mod."github.com/gorilla/websocket"] version = "v1.5.3" hash = "sha256-vTIGEFMEi+30ZdO6ffMNJ/kId6pZs5bbyqov8xe9BM0=" + [mod."github.com/goware/urlx"] + version = "v0.3.2" + hash = "sha256-mLUQnnRkp2ekRY4ddBs+MRee7fzuEZiQRM6CInLWCn0=" [mod."github.com/grpc-ecosystem/go-grpc-middleware"] version = "v1.4.0" hash = "sha256-0UymBjkg41C9MPqkBLz/ZY9WbimZrabpJk+8C/X63h8=" @@ -362,8 +404,8 @@ schema = 3 version = "v0.5.2" hash = "sha256-N9GOKYo7tK6XQUFhvhImtL7PZW/mr4C4Manx/yPVvcQ=" [mod."github.com/hashicorp/go-getter"] - version = "v1.7.4" - hash = "sha256-GtJSwcS1WXLn9lFAuTRCseIQBXJOElAywEhTtYrsfbE=" + version = "v1.7.8" + hash = "sha256-3ISgkCNTZSC8Z6HrmBN0FmYrG08awMO4HSAvRtaIlbw=" [mod."github.com/hashicorp/go-hclog"] version = "v1.6.3" hash = "sha256-BK2s+SH1tQyUaXCH4kC0/jgqiSu638UFbwamfKjFOYg=" @@ -371,11 +413,11 @@ schema = 3 version = "v1.3.1" hash = "sha256-65+A2HiVfS/GV9G+6/TkXXjzXhI/V98e6RlJWjxy+mg=" [mod."github.com/hashicorp/go-metrics"] - version = "v0.5.3" - hash = "sha256-5jQftEvEhL88yWeVnu+IZKzV5p9osZcgFmwP1zlrjzY=" + version = "v0.5.4" + hash = "sha256-WQGb38CuijG9YxHfqgKn1U655BmxLYhNXXdSw0MRiGc=" [mod."github.com/hashicorp/go-plugin"] - version = "v1.6.1" - hash = "sha256-HEeJ8TV67PcAuUnGCOHphFpZ/BShvJo5B6Obu3P7t8M=" + version = "v1.6.3" + hash = "sha256-IqQXhKluDoEaig18z/EIZAxQ/NZSwy6yPQ3wDk0oqtk=" [mod."github.com/hashicorp/go-safetemp"] version = "v1.0.0" hash = "sha256-g5i9m7FSRInQzZ4iRpIsoUu685AY7fppUwjhuZCezT8=" @@ -388,12 +430,9 @@ schema = 3 [mod."github.com/hashicorp/golang-lru/v2"] version = "v2.0.7" hash = "sha256-t1bcXLgrQNOYUVyYEZ0knxcXpsTk4IuJZDjKvyJX75g=" - [mod."github.com/hashicorp/hcl"] - version = "v1.0.0" - hash = "sha256-xsRCmYyBfglMxeWUvTZqkaRLSW+V2FvNodEDjTGg1WA=" [mod."github.com/hashicorp/yamux"] - version = "v0.1.1" - hash = "sha256-jr4ZFM3XHSwGoZcRcmmdGTq4IqxBTnimojIPDgK0USU=" + version = "v0.1.2" + hash = "sha256-JvpgwhqKAaS0PSlU/obe4tDJ2LcR1pyWRmJTkmT7hrA=" [mod."github.com/hdevalence/ed25519consensus"] version = "v0.2.0" hash = "sha256-KTbeKMOT/HCJjDHqyciQjJPPgpNk6H0VyQCCbeGgs7Y=" @@ -401,8 +440,8 @@ schema = 3 version = "v2.0.3" hash = "sha256-5VsJMQzJSNd4F7yAl3iF/q6JodWOlE4dUvTQ0UGPe+k=" [mod."github.com/holiman/uint256"] - version = "v1.2.2-0.20230321075855-87b91420868c" - hash = "sha256-Ek4KUYsFaAYfvnXJFLH4zFHQ6FzZGB+OsMIpjQ/kLGw=" + version = "v1.3.2" + hash = "sha256-R5ZNDTQy6ELF5Z6BLK/DeMg1JqEtPkDNfFi9XOKmncY=" [mod."github.com/huandu/skiplist"] version = "v1.2.0" hash = "sha256-/r4QP1SldMlhpkr1ZQFHImSYaeMZEtqBW7R53yN+JtQ=" @@ -428,8 +467,8 @@ schema = 3 version = "v1.0.0" hash = "sha256-xEd0mDBeq3eR/GYeXjoTVb2sPs8sTCosn5ayWkcgENI=" [mod."github.com/klauspost/compress"] - version = "v1.17.9" - hash = "sha256-FxHk4OuwsbiH1OLI+Q0oA4KpcOB786sEfik0G+GNoow=" + version = "v1.18.0" + hash = "sha256-jc5pMU/HCBFOShMcngVwNMhz9wolxjOb579868LtOuk=" [mod."github.com/kr/pretty"] version = "v0.3.1" hash = "sha256-DlER7XM+xiaLjvebcIPiB12oVNjyZHuJHoRGITzzpKU=" @@ -442,15 +481,12 @@ schema = 3 [mod."github.com/linxGnu/grocksdb"] version = "v1.9.3" hash = "sha256-XEyOwHNUxGIvEj8H2YfZgtoREDmjy4gidmAu5u1lb7U=" - [mod."github.com/magiconair/properties"] - version = "v1.8.7" - hash = "sha256-XQ2bnc2s7/IH3WxEO4GishZurMyKwEclZy1DXg+2xXc=" [mod."github.com/manifoldco/promptui"] version = "v0.9.0" hash = "sha256-Fe2OPoyRExZejwtUBivKhfJAJW7o9b1eyYpgDlWQ1No=" [mod."github.com/mattn/go-colorable"] - version = "v0.1.13" - hash = "sha256-qb3Qbo0CELGRIzvw7NVM1g/aayaz4Tguppk9MD2/OI8=" + version = "v0.1.14" + hash = "sha256-JC60PjKj7MvhZmUHTZ9p372FV72I9Mxvli3fivTbxuA=" [mod."github.com/mattn/go-isatty"] version = "v0.0.20" hash = "sha256-qhw9hWtU5wnyFyuMbKx+7RB8ckQaFQ8D+8GKPkN3HHQ=" @@ -485,32 +521,35 @@ schema = 3 version = "v0.0.5" hash = "sha256-/5i70IkH/qSW5KjGzv8aQNKh9tHoz98tqtL0K2DMFn4=" [mod."github.com/onsi/ginkgo/v2"] - version = "v2.7.0" - hash = "sha256-BKqQKCsPA73FaQwYpAY+QsWFHIncrG5jgRhC2IiNmCk=" + version = "v2.23.4" + hash = "sha256-AVq5cBqBhja/BMSMHqeLkXjmYV8+ddTRthiGWt28c38=" [mod."github.com/onsi/gomega"] - version = "v1.26.0" - hash = "sha256-B18jsoJHK/oE+wudT0dOsUb41s5+ZIAu/ZBzQ5djOLE=" + version = "v1.37.0" + hash = "sha256-PfHFYp365MwBo+CUZs+mN5QEk3Kqe9xrBX+twWfIc9o=" [mod."github.com/pelletier/go-toml/v2"] - version = "v2.2.2" - hash = "sha256-ukxk1Cfm6cQW18g/aa19tLcUu5BnF7VmfAvrDHAOl6A=" + version = "v2.2.4" + hash = "sha256-8qQIPldbsS5RO8v/FW/se3ZsAyvLzexiivzJCbGRg2Q=" [mod."github.com/petermattis/goid"] version = "v0.0.0-20240813172612-4fcff4a6cae7" hash = "sha256-tfb/0LbMHJQsmxwaj2RItXiYn2AVd05E92Z/vp+rJhs=" [mod."github.com/pkg/errors"] version = "v0.9.1" hash = "sha256-mNfQtcrQmu3sNg/7IwiieKWOgFQOVVe2yXgKBpe/wZw=" + [mod."github.com/planetscale/vtprotobuf"] + version = "v0.6.1-0.20240319094008-0393e58bdf10" + hash = "sha256-L8dyNm+PCRDNADiIGKZqsPkCgB4xpLrosZjssrN+sUY=" [mod."github.com/pmezard/go-difflib"] version = "v1.0.1-0.20181226105442-5d4384ee4fb2" hash = "sha256-XA4Oj1gdmdV/F/+8kMI+DBxKPthZ768hbKsO3d9Gx90=" [mod."github.com/prometheus/client_golang"] - version = "v1.20.5" - hash = "sha256-RbDZTBH+j2ZNLbHSMFxW0j8UStvkwc4IHTz3My9w4qo=" + version = "v1.22.0" + hash = "sha256-OJ/9rlWG1DIPQJAZUTzjykkX0o+f+4IKLvW8YityaMQ=" [mod."github.com/prometheus/client_model"] version = "v0.6.1" hash = "sha256-rIDyUzNfxRA934PIoySR0EhuBbZVRK/25Jlc/r8WODw=" [mod."github.com/prometheus/common"] - version = "v0.60.1" - hash = "sha256-6ZSm800o6QjFKi5QUs/Zsjqq3i+V8UFvkGqR7lWqJ2M=" + version = "v0.63.0" + hash = "sha256-TbUZNkN4ZA7eC/MlL1v2V5OL28QRnftSuaWQZ944zBE=" [mod."github.com/prometheus/procfs"] version = "v0.15.1" hash = "sha256-H+WXJemFFwdoglmD6p7JRjrJJZmIVAmJwYmLbZ8Q9sw=" @@ -521,8 +560,8 @@ schema = 3 version = "v0.2.0" hash = "sha256-GLj0jiGrT03Ept4V6FXCN1yeZ/b6PpS3MEXK6rYQ8Eg=" [mod."github.com/rogpeppe/go-internal"] - version = "v1.12.0" - hash = "sha256-qvDNCe3l84/LgrA8X4O15e1FeDcazyX91m9LmXGXX6M=" + version = "v1.14.1" + hash = "sha256-6NzhXCCD1Qhj05WHbCDxH5hwfNM6psoAk7uIxm7N55E=" [mod."github.com/rs/cors"] version = "v1.11.1" hash = "sha256-0z4aFR5VjuVYn+XnANbjui0ADcdG7gU56A9Y/NtrzCQ=" @@ -530,11 +569,8 @@ schema = 3 version = "v1.33.0" hash = "sha256-jT/Y/izhZiCdrDbC/ty83FGs8UQavTU+OW03O4vKFkY=" [mod."github.com/sagikazarmark/locafero"] - version = "v0.6.0" - hash = "sha256-uAanQ7NRa13axM4zbOgMOyU+YhLALsQyT85XvqEdx2c=" - [mod."github.com/sagikazarmark/slog-shim"] - version = "v0.1.0" - hash = "sha256-F92BQXXmn3mCwu3mBaGh+joTRItQDSDhsjU6SofkYdA=" + version = "v0.7.0" + hash = "sha256-ZmaGOKHDw18jJqdkwQwSpUT11F9toR6KPs3241TONeY=" [mod."github.com/sasha-s/go-deadlock"] version = "v0.3.5" hash = "sha256-1vyxWqOTVVVeodipm/tpDgRKUMkEdkoLWSgtiVZaZmw=" @@ -545,29 +581,32 @@ schema = 3 version = "v0.3.0" hash = "sha256-mIdMs9MLAOBKf3/0quf1iI3v8uNWydy7ae5MFa+F2Ko=" [mod."github.com/spf13/afero"] - version = "v1.11.0" - hash = "sha256-+rV3cDZr13N8E0rJ7iHmwsKYKH+EhV+IXBut+JbBiIE=" + version = "v1.12.0" + hash = "sha256-TX3DcyAdrXqf+TxmEz4TilWQo2Y4hcBXOeRY6BjDp+s=" [mod."github.com/spf13/cast"] - version = "v1.6.0" - hash = "sha256-hxioqRZfXE0AE5099wmn3YG0AZF8Wda2EB4c7zHF6zI=" + version = "v1.9.2" + hash = "sha256-B+Nw/DDgWR0NV6J6EO2oOahw75qbjLtV8Tm3wrN5NDw=" [mod."github.com/spf13/cobra"] - version = "v1.8.1" - hash = "sha256-yDF6yAHycV1IZOrt3/hofR+QINe+B2yqkcIaVov3Ky8=" + version = "v1.9.1" + hash = "sha256-dzEqquABE3UqZmJuj99244QjvfojS8cFlsPr/MXQGj0=" [mod."github.com/spf13/pflag"] - version = "v1.0.5" - hash = "sha256-w9LLYzxxP74WHT4ouBspH/iQZXjuAh2WQCHsuvyEjAw=" + version = "v1.0.6" + hash = "sha256-NjrK0FZPIfO/p2xtL1J7fOBQNTZAPZOC6Cb4aMMvhxI=" [mod."github.com/spf13/viper"] - version = "v1.19.0" - hash = "sha256-MZ8EAvdgpGbw6kmUz8UOaAAAMdPPGd14TrCBAY+A1T4=" + version = "v1.20.1" + hash = "sha256-gbCM0k7RAlvn7jpSuWB2LX5Nip9vgwsPNGbDXTI7JvM=" + [mod."github.com/spiffe/go-spiffe/v2"] + version = "v2.5.0" + hash = "sha256-FPtPVF4+MF+Ybe9NI58i5mnGILvTKadk8JSZJQ8gD6s=" [mod."github.com/status-im/keycard-go"] - version = "v0.2.0" - hash = "sha256-UUiGmlgaIZDeMUJv3fdZBoQ9hJeSsg2ixRGmm6TgHug=" + version = "v0.3.3" + hash = "sha256-fHPRc6gyWiBhfRxEkKBVPf1LADuuSeSTkIztAJp+ZY8=" [mod."github.com/stretchr/objx"] version = "v0.5.2" hash = "sha256-VKYxrrFb1nkX6Wu3tE5DoP9+fCttwSl9pgLN6567nck=" [mod."github.com/stretchr/testify"] - version = "v1.9.0" - hash = "sha256-uUp/On+1nK+lARkTVtb5RxlW15zxtw2kaAFuIASA+J0=" + version = "v1.10.0" + hash = "sha256-fJ4gnPr0vnrOhjQYQwJ3ARDKPsOtA7d4olQmQWR+wpI=" [mod."github.com/subosito/gotenv"] version = "v1.6.0" hash = "sha256-LspbjTniiq2xAICSXmgqP7carwlNaLqnCTQfw2pa80A=" @@ -583,8 +622,8 @@ schema = 3 hash = "sha256-8eDLGHhw4qXG6MEa7w5Q9KLwOobXr8Vn5qqyQhuipQw=" replaced = "github.com/crypto-org-chain/btree" [mod."github.com/tidwall/gjson"] - version = "v1.14.4" - hash = "sha256-3DS2YNL95wG0qSajgRtIABD32J+oblaKVk8LIw+KSOc=" + version = "v1.18.0" + hash = "sha256-CO6hqDu8Y58Po6A01e5iTpwiUBQ5khUZsw7czaJHw0I=" [mod."github.com/tidwall/match"] version = "v1.1.1" hash = "sha256-M2klhPId3Q3T3VGkSbOkYl/2nLHnsG+yMbXkPkyrRdg=" @@ -606,6 +645,9 @@ schema = 3 [mod."github.com/ulikunitz/xz"] version = "v0.5.11" hash = "sha256-SUyrjc2wyN3cTGKe5JdBEXjtZC1rJySRxJHVUZ59row=" + [mod."github.com/zeebo/errs"] + version = "v1.4.0" + hash = "sha256-vh1b1ns2mFyr5KCECjQd2pf2JKfUfB6oR2O+k/vFda8=" [mod."github.com/zondax/hid"] version = "v0.9.2" hash = "sha256-9h1gEJ/loyaJvu9AsmslztiA8U9ixDTC6TBw9lCU2BE=" @@ -618,72 +660,87 @@ schema = 3 [mod."go.opencensus.io"] version = "v0.24.0" hash = "sha256-4H+mGZgG2c9I1y0m8avF4qmt8LUKxxVsTqR8mKgP4yo=" + [mod."go.opentelemetry.io/auto/sdk"] + version = "v1.1.0" + hash = "sha256-cA9qCCu8P1NSJRxgmpfkfa5rKyn9X+Y/9FSmSd5xjyo=" + [mod."go.opentelemetry.io/contrib/detectors/gcp"] + version = "v1.35.0" + hash = "sha256-GAQl3P4/zjQaVZTPXUbOziYWt18qtEL7Z7xNa1zuMaU=" [mod."go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"] - version = "v0.49.0" - hash = "sha256-cgb4o14zow/ztWOKyXi7XQwVxV7OIsT2Ko8yaqQ7Lb8=" + version = "v0.58.0" + hash = "sha256-OLDNgjHOItKSyzI3cWWZbMiap5QnULp3G4z8HhhJsrA=" [mod."go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"] - version = "v0.49.0" - hash = "sha256-1/7YxtXZM4i75rXXIO6UN4CTY93nE/v2k2htS0uUOVg=" + version = "v0.58.0" + hash = "sha256-iqTPHfR1wXZY/yVTWtRBMjWlZkRxasaBGNhsNWHYxGw=" [mod."go.opentelemetry.io/otel"] - version = "v1.24.0" - hash = "sha256-VGyV7EqJX6mRY0Ecyg+g0IZy+dt1GES4r9txQcaTNUg=" + version = "v1.35.0" + hash = "sha256-LHrBtBnyDtvJGtrXHMPIFe7U53B4bZzpePB4u8Xo4Bg=" [mod."go.opentelemetry.io/otel/metric"] - version = "v1.24.0" - hash = "sha256-KB5UQiaVmbB2VZO3al4WHb5HY79ioWaAQjaGkUKLvP8=" + version = "v1.35.0" + hash = "sha256-K9I0LRZqSLrC09Cuk7tp0VEk3cUVDs8S5MGnu9jw92Q=" + [mod."go.opentelemetry.io/otel/sdk"] + version = "v1.35.0" + hash = "sha256-G1pNX57JVeUVaGD6QQgc6EeNCkAURVDalTnoyhVOK78=" + [mod."go.opentelemetry.io/otel/sdk/metric"] + version = "v1.35.0" + hash = "sha256-Ncy9TLuY/fl2ko5ZVJOgt/1dXDV2nID+wuULXtVGM0Q=" [mod."go.opentelemetry.io/otel/trace"] - version = "v1.24.0" - hash = "sha256-FHP0hg+i7+wxCsM0u/5hQcgvvr3D+lq8o/7E/HkaW4s=" + version = "v1.35.0" + hash = "sha256-HC2+OGDe2rg0+E8WymQbUNoc249NXM1gIBJzK4UhcQE=" + [mod."go.uber.org/automaxprocs"] + version = "v1.6.0" + hash = "sha256-a/Agm+kM9x+VRo0CYyTL3ipUYv9Glrc4NeGSZJdpobA=" [mod."go.uber.org/multierr"] version = "v1.11.0" hash = "sha256-Lb6rHHfR62Ozg2j2JZy3MKOMKdsfzd1IYTR57r3Mhp0=" [mod."golang.org/x/crypto"] - version = "v0.28.0" - hash = "sha256-AYjr0BcWQMwWY1u8c2hzUprtqHUmAH7RNSxHz2hhnZs=" + version = "v0.39.0" + hash = "sha256-FtwjbVoAhZkx7F2hmzi9Y0J87CVVhWcrZzun+zWQLzc=" [mod."golang.org/x/exp"] version = "v0.0.0-20240613232115-7f521ea00fb8" hash = "sha256-QRK52QHPPhj+JIcQbd4/hI5ceEbKu3e9mR57XxocwOE=" [mod."golang.org/x/net"] - version = "v0.30.0" - hash = "sha256-i1f6wJHfFq0nKtbuY7twZ7uPyUbRYHVjd3uy0SS06mU=" + version = "v0.41.0" + hash = "sha256-6/pi8rNmGvBFzkJQXkXkMfL1Bjydhg3BgAMYDyQ/Uvg=" [mod."golang.org/x/oauth2"] - version = "v0.23.0" - hash = "sha256-K1X4ROG88PprttNjZCikDlZw8YYiQIQRdtbZBH3GJgM=" + version = "v0.28.0" + hash = "sha256-/0XLKnHvaMb6e8szNDq9be/DWPRGhaQDFhxyrDUdNUM=" [mod."golang.org/x/sync"] - version = "v0.8.0" - hash = "sha256-usvF0z7gq1vsX58p4orX+8WHlv52pdXgaueXlwj2Wss=" + version = "v0.15.0" + hash = "sha256-Jf4ehm8H8YAWY6mM151RI5CbG7JcOFtmN0AZx4bE3UE=" [mod."golang.org/x/sys"] - version = "v0.26.0" - hash = "sha256-YjklsWNhx4g4TaWRWfFe1TMFKujbqiaNvZ38bfI35fM=" + version = "v0.33.0" + hash = "sha256-wlOzIOUgAiGAtdzhW/KPl/yUVSH/lvFZfs5XOuJ9LOQ=" [mod."golang.org/x/term"] - version = "v0.25.0" - hash = "sha256-vwNqnxEcgeVxQxdKBUnkb7y9jg6LlNDJxfG1GugSeRQ=" + version = "v0.32.0" + hash = "sha256-4cM/vhb8EUrlfHidBRfjYEQlUQehXiydJN77YkQvAic=" [mod."golang.org/x/text"] - version = "v0.19.0" - hash = "sha256-C92pSYLLUQ2NKKcc60wpoSJ5UWAfnWkmd997C13fXdU=" + version = "v0.26.0" + hash = "sha256-N+27nBCyGvje0yCTlUzZoVZ0LRxx4AJ+eBlrFQVRlFQ=" [mod."golang.org/x/time"] - version = "v0.5.0" - hash = "sha256-W6RgwgdYTO3byIPOFxrP2IpAZdgaGowAaVfYby7AULU=" + version = "v0.9.0" + hash = "sha256-ipaWVIk1+DZg0rfCzBSkz/Y6DEnB7xkX2RRYycHkhC0=" + [mod."golang.org/x/tools"] + version = "v0.33.0" + hash = "sha256-OcjT9lh/nxGS2/rElTu5yNE2cXa1fUzRlyl+yZ36b4Q=" [mod."google.golang.org/api"] - version = "v0.186.0" - hash = "sha256-dSr9mxKwuE4/m3OYtjTeVHMxyXw9cCgKsBwDqvBr2HU=" + version = "v0.215.0" + hash = "sha256-2CWtf90fHlSbALjh2ru1azIz/3vrqWdhL97MNPX4zeg=" [mod."google.golang.org/genproto"] - version = "v0.0.0-20240701130421-f6361c86f094" - hash = "sha256-5ZxSUe1BHYoiaiw0K1lLJmuobmBvk0+Y3CNkaLMnEic=" + version = "v0.0.0-20241118233622-e639e219e697" + hash = "sha256-QcnHSM6CWo18f0rqeXHSCFaydwFp+nENjE8x/NErgEI=" [mod."google.golang.org/genproto/googleapis/api"] - version = "v0.0.0-20240814211410-ddb44dafa142" - hash = "sha256-NosKwVYZLpvtvRq7oD4ldoNcodSur62X1bpujarh9t8=" + version = "v0.0.0-20250324211829-b45e905df463" + hash = "sha256-LrX0JgU764DIDkJuL4HnarUYtp5nk5y9ZdjPTX+8qF0=" [mod."google.golang.org/genproto/googleapis/rpc"] - version = "v0.0.0-20240814211410-ddb44dafa142" - hash = "sha256-4T4DTrmFbqT4tD7PSL7Ie7u8ZN2iwGkhK02nWugssxk=" + version = "v0.0.0-20250422160041-2d3770c4ea7f" + hash = "sha256-WK7iDtAhH19NPe3TywTQlGjDawNaDKWnxhFL9PgVUwM=" [mod."google.golang.org/grpc"] - version = "v1.67.1" - hash = "sha256-VqfKp80c2B1MK4m1WtHW4r7ykqdChJbqaMn+gMEYmYc=" + version = "v1.73.0" + hash = "sha256-LfVlwip++q2DX70RU6CxoXglx1+r5l48DwlFD05G11c=" [mod."google.golang.org/protobuf"] - version = "v1.35.1" - hash = "sha256-4NtUQoBvlPGFGjo7c+E1EBS/sb8oy50MGy45KGWPpWo=" - [mod."gopkg.in/ini.v1"] - version = "v1.67.0" - hash = "sha256-V10ahGNGT+NLRdKUyRg1dos5RxLBXBk1xutcnquc/+4=" + version = "v1.36.6" + hash = "sha256-lT5qnefI5FDJnowz9PEkAGylH3+fE+A3DJDkAyy9RMc=" [mod."gopkg.in/natefinch/npipe.v2"] version = "v2.0.0-20160621034901-c1b8fa8bdcce" hash = "sha256-ytqeVZqn4kd2uc65HvEjPlpPA2VnBmPfu5DsFlO0o+g=" @@ -691,14 +748,14 @@ schema = 3 version = "v3.0.1" hash = "sha256-FqL9TKYJ0XkNwJFnq9j0VvJ5ZUU1RvH/52h/f5bkYAU=" [mod."gotest.tools/v3"] - version = "v3.5.1" - hash = "sha256-ps2GEc3P2xvlrU4TCtXz+nLTxyP0RrF7SScz5jUqE5E=" + version = "v3.5.2" + hash = "sha256-eAxnRrF2bQugeFYzGLOr+4sLyCPOpaTWpoZsIKNP1WE=" [mod."nhooyr.io/websocket"] version = "v1.8.11" hash = "sha256-93w5LmnBRdoPwo4gDoPBcAw9J14yzf484YeAyUX7nH0=" [mod."pgregory.net/rapid"] - version = "v1.1.0" - hash = "sha256-sVQY9EQ9Y5blYyVYfaOa+y12e+399OqdHiEY3BaDnqo=" + version = "v1.2.0" + hash = "sha256-GT8thcMb5IH7KSFiK7p2IpThK9daDvZwqOGAP8eELko=" [mod."sigs.k8s.io/yaml"] version = "v1.4.0" hash = "sha256-Hd/M0vIfIVobDd87eb58p1HyVOjYWNlGq2bRXfmtVno=" diff --git a/x/evm/statedb/statedb_test.go b/x/evm/statedb/statedb_test.go index 5060e4abbf..1d2626f7c5 100644 --- a/x/evm/statedb/statedb_test.go +++ b/x/evm/statedb/statedb_test.go @@ -20,7 +20,6 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" - capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" "github.com/ethereum/go-ethereum/common" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" @@ -594,7 +593,6 @@ func (suite *StateDBTestSuite) TestNativeAction() { _, ctx, keeper := setupTestEnv(suite.T()) storeKey := testStoreKeys["testnative"] objStoreKey := testObjKeys[evmtypes.ObjectStoreKey] - memKey := testMemKeys[capabilitytypes.MemStoreKey] eventConverter := func(event sdk.Event) (*ethtypes.Log, error) { converters := map[string]statedb.EventConverter{ @@ -623,9 +621,6 @@ func (suite *StateDBTestSuite) TestNativeAction() { objStore := ctx.ObjectStore(objStoreKey) objStore.Set([]byte("transient"), "value") - mem := ctx.KVStore(memKey) - mem.Set([]byte("mem"), []byte("value")) - return nil }) stateDB.ExecuteNativeAction(contract, eventConverter, func(ctx sdk.Context) error { @@ -636,8 +631,6 @@ func (suite *StateDBTestSuite) TestNativeAction() { objStore := ctx.ObjectStore(objStoreKey) suite.Require().Equal("value", objStore.Get([]byte("transient")).(string)) - mem := ctx.KVStore(memKey) - suite.Require().Equal([]byte("value"), mem.Get([]byte("mem"))) return errors.New("failure") }) @@ -774,7 +767,6 @@ func CollectContractStorage(db vm.StateDB, address common.Address) statedb.Stora var ( testStoreKeys = storetypes.NewKVStoreKeys(authtypes.StoreKey, banktypes.StoreKey, evmtypes.StoreKey, "testnative") testObjKeys = storetypes.NewObjectStoreKeys(banktypes.ObjectStoreKey, evmtypes.ObjectStoreKey) - testMemKeys = storetypes.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) ) func cloneRawState(t *testing.T, cms storetypes.MultiStore) map[string]map[string][]byte { @@ -838,9 +830,6 @@ func setupTestEnv(t *testing.T) (storetypes.MultiStore, sdk.Context, *evmkeeper. for _, key := range testStoreKeys { cms.MountStoreWithDB(key, storetypes.StoreTypeIAVL, nil) } - for _, key := range testMemKeys { - cms.MountStoreWithDB(key, storetypes.StoreTypeMemory, nil) - } for _, key := range testObjKeys { cms.MountStoreWithDB(key, storetypes.StoreTypeObject, nil) } From 8385a1441a6c14a6d7daf38afbe1c720faf63215 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Jul 2025 10:11:02 +0900 Subject: [PATCH 104/210] build(deps): bump github.com/cosmos/cosmos-db from 1.1.1 to 1.1.3 (#650) Bumps [github.com/cosmos/cosmos-db](https://github.com/cosmos/cosmos-db) from 1.1.1 to 1.1.3. - [Changelog](https://github.com/cosmos/cosmos-db/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-db/compare/v1.1.1...v1.1.3) --- updated-dependencies: - dependency-name: github.com/cosmos/cosmos-db dependency-version: 1.1.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 3 +-- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 68b76e7dc9..21c8324f8b 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcutil v1.1.6 github.com/cometbft/cometbft v0.38.15 - github.com/cosmos/cosmos-db v1.1.1 + github.com/cosmos/cosmos-db v1.1.3 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.50.13 github.com/cosmos/go-bip39 v1.0.0 @@ -242,7 +242,6 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/arch v0.15.0 // indirect golang.org/x/crypto v0.39.0 // indirect golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect golang.org/x/oauth2 v0.28.0 // indirect diff --git a/go.sum b/go.sum index de0713bd6c..c01db719c2 100644 --- a/go.sum +++ b/go.sum @@ -833,8 +833,8 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNCM= -github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw= +github.com/cosmos/cosmos-db v1.1.3 h1:7QNT77+vkefostcKkhrzDK9uoIEryzFrU9eoMeaQOPY= +github.com/cosmos/cosmos-db v1.1.3/go.mod h1:kN+wGsnwUJZYn8Sy5Q2O0vCYA99MJllkKASbs6Unb9U= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= @@ -1738,8 +1738,6 @@ go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= -golang.org/x/arch v0.15.0 h1:QtOrQd0bTUnhNVNndMpLHNWrDmYzZ2KDqSrEymqInZw= -golang.org/x/arch v0.15.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= From 4fc136ec66f647167e93b63d731a5c35447f2440 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Jul 2025 10:36:54 +0900 Subject: [PATCH 105/210] build(deps): bump cosmossdk.io/x/upgrade from 0.1.4 to 0.2.0 (#653) Bumps [cosmossdk.io/x/upgrade](https://github.com/cosmos/cosmos-sdk) from 0.1.4 to 0.2.0. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.2.0/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/x/upgrade/v0.1.4...v0.2.0) --- updated-dependencies: - dependency-name: cosmossdk.io/x/upgrade dependency-version: 0.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 37 +++++++++++++++++++-------------- go.sum | 64 +++++++++++++++++++++++++++++++++++++--------------------- 2 files changed, 63 insertions(+), 38 deletions(-) diff --git a/go.mod b/go.mod index 21c8324f8b..651e962cf2 100644 --- a/go.mod +++ b/go.mod @@ -5,23 +5,23 @@ go 1.23.10 require ( cosmossdk.io/api v0.9.2 cosmossdk.io/client/v2 v2.0.0-beta.5 - cosmossdk.io/collections v0.4.0 - cosmossdk.io/core v0.11.1 - cosmossdk.io/errors v1.0.1 - cosmossdk.io/log v1.4.1 - cosmossdk.io/math v1.4.0 - cosmossdk.io/store v1.1.1 + cosmossdk.io/collections v1.2.0 + cosmossdk.io/core v0.11.3 + cosmossdk.io/errors v1.0.2 + cosmossdk.io/log v1.5.1 + cosmossdk.io/math v1.5.3 + cosmossdk.io/store v1.1.2 cosmossdk.io/tools/confix v0.1.2 cosmossdk.io/x/evidence v0.1.1 cosmossdk.io/x/feegrant v0.1.1 - cosmossdk.io/x/tx v0.13.7 - cosmossdk.io/x/upgrade v0.1.4 + cosmossdk.io/x/tx v0.14.0 + cosmossdk.io/x/upgrade v0.2.0 github.com/btcsuite/btcd v0.24.2 github.com/btcsuite/btcd/btcutil v1.1.6 - github.com/cometbft/cometbft v0.38.15 + github.com/cometbft/cometbft v0.38.17 github.com/cosmos/cosmos-db v1.1.3 github.com/cosmos/cosmos-proto v1.0.0-beta.5 - github.com/cosmos/cosmos-sdk v0.50.13 + github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.7.0 github.com/cosmos/ibc-go/v10 v10.1.1 @@ -67,6 +67,7 @@ require ( cloud.google.com/go/monitoring v1.21.2 // indirect cloud.google.com/go/storage v1.49.0 // indirect cosmossdk.io/depinject v1.2.0 // indirect + cosmossdk.io/schema v1.1.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect @@ -88,9 +89,12 @@ require ( github.com/bits-and-blooms/bitset v1.17.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect + github.com/bytedance/sonic v1.13.2 // indirect + github.com/bytedance/sonic/loader v0.2.4 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect + github.com/cloudwego/base64x v0.1.5 // indirect github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/cockroachdb/errors v1.12.0 // indirect @@ -171,7 +175,7 @@ require ( github.com/hdevalence/ed25519consensus v0.2.0 // indirect github.com/holiman/bloomfilter/v2 v2.0.3 // indirect github.com/holiman/uint256 v1.3.2 // indirect - github.com/huandu/skiplist v1.2.0 // indirect + github.com/huandu/skiplist v1.2.1 // indirect github.com/huin/goupnp v1.0.3 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -179,6 +183,7 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.18.0 // indirect + github.com/klauspost/cpuid/v2 v2.2.10 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.9 // indirect @@ -207,7 +212,7 @@ require ( github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - github.com/rs/zerolog v1.33.0 // indirect + github.com/rs/zerolog v1.34.0 // indirect github.com/sagikazarmark/locafero v0.7.0 // indirect github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect @@ -224,6 +229,7 @@ require ( github.com/tidwall/pretty v1.2.0 // indirect github.com/tklauser/go-sysconf v0.3.10 // indirect github.com/tklauser/numcpus v0.4.0 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/zeebo/errs v1.4.0 // indirect github.com/zondax/hid v0.9.2 // indirect @@ -242,14 +248,15 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect + golang.org/x/arch v0.15.0 // indirect golang.org/x/crypto v0.39.0 // indirect - golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect + golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect golang.org/x/oauth2 v0.28.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect - golang.org/x/time v0.9.0 // indirect + golang.org/x/time v0.10.0 // indirect golang.org/x/tools v0.33.0 // indirect - google.golang.org/api v0.215.0 // indirect + google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect diff --git a/go.sum b/go.sum index c01db719c2..150ad449eb 100644 --- a/go.sum +++ b/go.sum @@ -618,26 +618,28 @@ cosmossdk.io/api v0.9.2 h1:9i9ptOBdmoIEVEVWLtYYHjxZonlF/aOVODLFaxpmNtg= cosmossdk.io/api v0.9.2/go.mod h1:CWt31nVohvoPMTlPv+mMNCtC0a7BqRdESjCsstHcTkU= cosmossdk.io/client/v2 v2.0.0-beta.5 h1:0LVv3nEByn//hFDIrYLs2WvsEU3HodOelh4SDHnA/1I= cosmossdk.io/client/v2 v2.0.0-beta.5/go.mod h1:4p0P6o0ro+FizakJUYS9SeM94RNbv0thLmkHRw5o5as= -cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= -cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= -cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= -cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= +cosmossdk.io/collections v1.2.0 h1:IesfVG8G/+FYCMVMP01frS/Cw99Omk5vBh3cHbO01Gg= +cosmossdk.io/collections v1.2.0/go.mod h1:4NkMoYw6qRA8fnSH/yn1D/MOutr8qyQnwsO50Mz9ItU= +cosmossdk.io/core v0.11.3 h1:mei+MVDJOwIjIniaKelE3jPDqShCc/F4LkNNHh+4yfo= +cosmossdk.io/core v0.11.3/go.mod h1:9rL4RE1uDt5AJ4Tg55sYyHWXA16VmpHgbe0PbJc6N2Y= cosmossdk.io/depinject v1.2.0 h1:6NW/FSK1IkWTrX7XxUpBmX1QMBozpEI9SsWkKTBc5zw= cosmossdk.io/depinject v1.2.0/go.mod h1:pvitjtUxZZZTQESKNS9KhGjWVslJZxtO9VooRJYyPjk= -cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= -cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= -cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= -cosmossdk.io/math v1.4.0 h1:XbgExXFnXmF/CccPPEto40gOO7FpWu9yWNAZPN3nkNQ= -cosmossdk.io/math v1.4.0/go.mod h1:O5PkD4apz2jZs4zqFdTr16e1dcaQCc5z6lkEnrrppuk= +cosmossdk.io/errors v1.0.2 h1:wcYiJz08HThbWxd/L4jObeLaLySopyyuUFB5w4AGpCo= +cosmossdk.io/errors v1.0.2/go.mod h1:0rjgiHkftRYPj//3DrD6y8hcm40HcPv/dR4R/4efr0k= +cosmossdk.io/log v1.5.1 h1:wLwiYXmfrort/O+j6EkjF+HvbdrRQd+4cYCPKFSm+zM= +cosmossdk.io/log v1.5.1/go.mod h1:5cXXBvfBkR2/BcXmosdCSLXllvgSjphrrDVdfVRmBGM= +cosmossdk.io/math v1.5.3 h1:WH6tu6Z3AUCeHbeOSHg2mt9rnoiUWVWaQ2t6Gkll96U= +cosmossdk.io/math v1.5.3/go.mod h1:uqcZv7vexnhMFJF+6zh9EWdm/+Ylyln34IvPnBauPCQ= +cosmossdk.io/schema v1.1.0 h1:mmpuz3dzouCoyjjcMcA/xHBEmMChN+EHh8EHxHRHhzE= +cosmossdk.io/schema v1.1.0/go.mod h1:Gb7pqO+tpR+jLW5qDcNOSv0KtppYs7881kfzakguhhI= cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4= cosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo= cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4= cosmossdk.io/x/evidence v0.1.1/go.mod h1:OoDsWlbtuyqS70LY51aX8FBTvguQqvFrt78qL7UzeNc= cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8= cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ= -cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38= -cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo= +cosmossdk.io/x/upgrade v0.2.0 h1:ZHy0xny3wBCSLomyhE06+UmQHWO8cYlVYjfFAJxjz5g= +cosmossdk.io/x/upgrade v0.2.0/go.mod h1:DXDtkvi//TrFyHWSOaeCZGBoiGAE6Rs8/0ABt2pcDD0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= @@ -758,6 +760,11 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtE github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= +github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ= +github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= +github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -788,6 +795,9 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= +github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -1271,8 +1281,8 @@ github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXei github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= -github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= -github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= +github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w= +github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= @@ -1331,6 +1341,9 @@ github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrD github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= +github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -1551,9 +1564,9 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= -github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= +github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= +github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -1648,6 +1661,8 @@ github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq// github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= @@ -1738,6 +1753,8 @@ go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= +golang.org/x/arch v0.15.0 h1:QtOrQd0bTUnhNVNndMpLHNWrDmYzZ2KDqSrEymqInZw= +golang.org/x/arch v0.15.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1774,8 +1791,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= -golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= +golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= +golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -2113,8 +2130,8 @@ golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -2264,8 +2281,8 @@ google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/ google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.215.0 h1:jdYF4qnyczlEz2ReWIsosNLDuzXyvFHJtI5gcr0J7t0= -google.golang.org/api v0.215.0/go.mod h1:fta3CVtuJYOEdugLNWm6WodzOS8KdFckABwN4I40hzY= +google.golang.org/api v0.222.0 h1:Aiewy7BKLCuq6cUCeOUrsAlzjXPqBkEeQ/iwGHVQa/4= +google.golang.org/api v0.222.0/go.mod h1:efZia3nXpWELrwMlN5vyQrD4GmJN1Vw0x68Et3r+a9c= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2569,6 +2586,7 @@ modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0= nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= From d4feda285fe65d6879481054b1bba0b5de9bf2e8 Mon Sep 17 00:00:00 2001 From: Thomas Nguy <81727899+thomas-nguy@users.noreply.github.com> Date: Tue, 8 Jul 2025 09:55:54 +0900 Subject: [PATCH 106/210] fix(grpc): add sanity check to trace_tx and trace_call (#659) * fix(grpc): add sanity check in TraceTx and TraceCall (#657) * fix(grpc): add sanity check in Trace_Tx follow up * update changelog * update changelog --- CHANGELOG.md | 1 + init.sh | 111 ++++++++++++++------------------ x/evm/keeper/grpc_query.go | 8 ++- x/evm/keeper/grpc_query_test.go | 9 +++ x/evm/types/query.go | 12 ++++ 5 files changed, 76 insertions(+), 65 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ce7c19abc..5d38233361 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features +* (rpc) [#657](https://github.com/crypto-org-chain/ethermint/pull/659) Sanity checks for TraceTx and TraceCall. * (rpc) [#638](https://github.com/crypto-org-chain/ethermint/pull/638) Add support for eth_getBlockReceipts. * (evm) [#414](https://github.com/crypto-org-chain/ethermint/pull/414) Integrate go-block-stm for parallel tx execution. * (block-stm) [#498](https://github.com/crypto-org-chain/ethermint/pull/498) Enable incarnation cache for block-stm executor. diff --git a/init.sh b/init.sh index 407a898595..ceeff523e4 100755 --- a/init.sh +++ b/init.sh @@ -1,90 +1,73 @@ #!/bin/bash -KEY="mykey" CHAINID="ethermint_9000-1" MONIKER="localtestnet" -KEYRING="test" -KEYALGO="eth_secp256k1" -LOGLEVEL="info" -# trace evm -TRACE="--trace" -# TRACE="" -# validate dependencies are installed -command -v jq > /dev/null 2>&1 || { echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/"; exit 1; } +# localKey address 0x7cb61d4117ae31a12e393a1cfa3bac666481d02e +VAL_KEY="localkey" +VAL_MNEMONIC="gesture inject test cycle original hollow east ridge hen combine junk child bacon zero hope comfort vacuum milk pitch cage oppose unhappy lunar seat" -# remove existing daemon and client -rm -rf ~/.ethermintd* - -make install +# user1 address 0xc6fe5d33615a1c52c08018c47e8bc53646a0e101 +USER1_KEY="user1" +USER1_MNEMONIC="copper push brief egg scan entry inform record adjust fossil boss egg comic alien upon aspect dry avoid interest fury window hint race symptom" -ethermintd config keyring-backend $KEYRING -ethermintd config chain-id $CHAINID +# user2 address 0x963ebdf2e1f8db8707d05fc75bfeffba1b5bac17 +USER2_KEY="user2" +USER2_MNEMONIC="maximum display century economy unlock van census kite error heart snow filter midnight usage egg venture cash kick motor survey drastic edge muffin visual" -# if $KEY exists it should be deleted -ethermintd keys add $KEY --keyring-backend $KEYRING --algo $KEYALGO - -# Set moniker and chain-id for Ethermint (Moniker can be anything, chain-id must be an integer) -ethermintd init $MONIKER --chain-id $CHAINID +# user3 address 0x40a0cb1C63e026A81B55EE1308586E21eec1eFa9 +USER3_KEY="user3" +USER3_MNEMONIC="will wear settle write dance topic tape sea glory hotel oppose rebel client problem era video gossip glide during yard balance cancel file rose" -# Change parameter token denominations to aphoton -cat $HOME/.ethermintd/config/genesis.json | jq '.app_state["staking"]["params"]["bond_denom"]="aphoton"' > $HOME/.ethermintd/config/tmp_genesis.json && mv $HOME/.ethermintd/config/tmp_genesis.json $HOME/.ethermintd/config/genesis.json -cat $HOME/.ethermintd/config/genesis.json | jq '.app_state["crisis"]["constant_fee"]["denom"]="aphoton"' > $HOME/.ethermintd/config/tmp_genesis.json && mv $HOME/.ethermintd/config/tmp_genesis.json $HOME/.ethermintd/config/genesis.json -cat $HOME/.ethermintd/config/genesis.json | jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["denom"]="aphoton"' > $HOME/.ethermintd/config/tmp_genesis.json && mv $HOME/.ethermintd/config/tmp_genesis.json $HOME/.ethermintd/config/genesis.json -cat $HOME/.ethermintd/config/genesis.json | jq '.app_state["mint"]["params"]["mint_denom"]="aphoton"' > $HOME/.ethermintd/config/tmp_genesis.json && mv $HOME/.ethermintd/config/tmp_genesis.json $HOME/.ethermintd/config/genesis.json +# user4 address 0x498B5AeC5D439b733dC2F58AB489783A23FB26dA +USER4_KEY="user4" +USER4_MNEMONIC="doll midnight silk carpet brush boring pluck office gown inquiry duck chief aim exit gain never tennis crime fragile ship cloud surface exotic patch" -# Set gas limit in genesis -cat $HOME/.ethermintd/config/genesis.json | jq '.consensus_params["block"]["max_gas"]="20000000"' > $HOME/.ethermintd/config/tmp_genesis.json && mv $HOME/.ethermintd/config/tmp_genesis.json $HOME/.ethermintd/config/genesis.json +# remove existing daemon and client +rm -rf ~/.ethermint* -# Allocate genesis accounts (cosmos formatted addresses) -ethermintd genesis add-genesis-account $KEY 100000000000000000000000000aphoton --keyring-backend $KEYRING +# Import keys from mnemonics +echo $VAL_MNEMONIC | ethermintd keys add $VAL_KEY --recover --keyring-backend test --algo "eth_secp256k1" +echo $USER1_MNEMONIC | ethermintd keys add $USER1_KEY --recover --keyring-backend test --algo "eth_secp256k1" +echo $USER2_MNEMONIC | ethermintd keys add $USER2_KEY --recover --keyring-backend test --algo "eth_secp256k1" +echo $USER3_MNEMONIC | ethermintd keys add $USER3_KEY --recover --keyring-backend test --algo "eth_secp256k1" +echo $USER4_MNEMONIC | ethermintd keys add $USER4_KEY --recover --keyring-backend test --algo "eth_secp256k1" -# Sign genesis transaction -ethermintd genesis gentx $KEY 1000000000000000000000aphoton --keyring-backend $KEYRING --chain-id $CHAINID - -# Collect genesis tx -ethermintd genesis collect-gentxs +ethermintd init $MONIKER --chain-id $CHAINID -# Run this to ensure everything worked and that the genesis file is setup correctly -ethermintd genesis validate-genesis +# Set gas limit in genesis +cat $HOME/.ethermintd/config/genesis.json | jq '.consensus["params"]["block"]["max_gas"]="10000000"' > $HOME/.ethermintd/config/tmp_genesis.json && mv $HOME/.ethermintd/config/tmp_genesis.json $HOME/.ethermintd/config/genesis.json -# disable produce empty block and enable prometheus metrics +# modified default configs if [[ "$OSTYPE" == "darwin"* ]]; then sed -i '' 's/create_empty_blocks = true/create_empty_blocks = false/g' $HOME/.ethermintd/config/config.toml - sed -i '' 's/prometheus = false/prometheus = true/' $HOME/.ethermintd/config/config.toml sed -i '' 's/prometheus-retention-time = 0/prometheus-retention-time = 1000000000000/g' $HOME/.ethermintd/config/app.toml sed -i '' 's/enabled = false/enabled = true/g' $HOME/.ethermintd/config/app.toml + sed -i '' 's/prometheus = false/prometheus = true/' $HOME/.ethermintd/config/config.toml + sed -i '' 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $HOME/.ethermintd/config/config.toml else sed -i 's/create_empty_blocks = true/create_empty_blocks = false/g' $HOME/.ethermintd/config/config.toml - sed -i 's/prometheus = false/prometheus = true/' $HOME/.ethermintd/config/config.toml sed -i 's/prometheus-retention-time = "0"/prometheus-retention-time = "1000000000000"/g' $HOME/.ethermintd/config/app.toml sed -i 's/enabled = false/enabled = true/g' $HOME/.ethermintd/config/app.toml + sed -i 's/prometheus = false/prometheus = true/' $HOME/.ethermintd/config/config.toml + sed -i 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $HOME/.ethermintd/config/config.toml fi -if [[ $1 == "pending" ]]; then - echo "pending mode is on, please wait for the first block committed." - if [[ $OSTYPE == "darwin"* ]]; then - sed -i '' 's/create_empty_blocks_interval = "0s"/create_empty_blocks_interval = "30s"/g' $HOME/.ethermintd/config/config.toml - sed -i '' 's/timeout_propose = "3s"/timeout_propose = "30s"/g' $HOME/.ethermintd/config/config.toml - sed -i '' 's/timeout_propose_delta = "500ms"/timeout_propose_delta = "5s"/g' $HOME/.ethermintd/config/config.toml - sed -i '' 's/timeout_prevote = "1s"/timeout_prevote = "10s"/g' $HOME/.ethermintd/config/config.toml - sed -i '' 's/timeout_prevote_delta = "500ms"/timeout_prevote_delta = "5s"/g' $HOME/.ethermintd/config/config.toml - sed -i '' 's/timeout_precommit = "1s"/timeout_precommit = "10s"/g' $HOME/.ethermintd/config/config.toml - sed -i '' 's/timeout_precommit_delta = "500ms"/timeout_precommit_delta = "5s"/g' $HOME/.ethermintd/config/config.toml - sed -i '' 's/timeout_commit = "5s"/timeout_commit = "150s"/g' $HOME/.ethermintd/config/config.toml - sed -i '' 's/timeout_broadcast_tx_commit = "10s"/timeout_broadcast_tx_commit = "150s"/g' $HOME/.ethermintd/config/config.toml - else - sed -i 's/create_empty_blocks_interval = "0s"/create_empty_blocks_interval = "30s"/g' $HOME/.ethermintd/config/config.toml - sed -i 's/timeout_propose = "3s"/timeout_propose = "30s"/g' $HOME/.ethermintd/config/config.toml - sed -i 's/timeout_propose_delta = "500ms"/timeout_propose_delta = "5s"/g' $HOME/.ethermintd/config/config.toml - sed -i 's/timeout_prevote = "1s"/timeout_prevote = "10s"/g' $HOME/.ethermintd/config/config.toml - sed -i 's/timeout_prevote_delta = "500ms"/timeout_prevote_delta = "5s"/g' $HOME/.ethermintd/config/config.toml - sed -i 's/timeout_precommit = "1s"/timeout_precommit = "10s"/g' $HOME/.ethermintd/config/config.toml - sed -i 's/timeout_precommit_delta = "500ms"/timeout_precommit_delta = "5s"/g' $HOME/.ethermintd/config/config.toml - sed -i 's/timeout_commit = "5s"/timeout_commit = "150s"/g' $HOME/.ethermintd/config/config.toml - sed -i 's/timeout_broadcast_tx_commit = "10s"/timeout_broadcast_tx_commit = "150s"/g' $HOME/.ethermintd/config/config.toml - fi -fi +# Allocate genesis accounts (cosmos formatted addresses) +ethermintd genesis add-genesis-account "$(ethermintd keys show $VAL_KEY -a --keyring-backend test)" 1000000000000000000000aphoton,1000000000000000000stake --keyring-backend test +ethermintd genesis add-genesis-account "$(ethermintd keys show $USER1_KEY -a --keyring-backend test)" 1000000000000000000000aphoton,1000000000000000000stake --keyring-backend test +ethermintd genesis add-genesis-account "$(ethermintd keys show $USER2_KEY -a --keyring-backend test)" 1000000000000000000000aphoton,1000000000000000000stake --keyring-backend test +ethermintd genesis add-genesis-account "$(ethermintd keys show $USER3_KEY -a --keyring-backend test)" 1000000000000000000000aphoton,1000000000000000000stake --keyring-backend test +ethermintd genesis add-genesis-account "$(ethermintd keys show $USER4_KEY -a --keyring-backend test)" 1000000000000000000000aphoton,1000000000000000000stake --keyring-backend test + +# Sign genesis transaction +ethermintd genesis gentx $VAL_KEY 1000000000000000000stake --amount=1000000000000000000000aphoton --chain-id $CHAINID --keyring-backend test + +# Collect genesis tx +ethermintd genesis collect-gentxs + +# Run this to ensure everything worked and that the genesis file is setup correctly +ethermintd genesis validate-genesis # Start the node (remove the --pruning=nothing flag if historical queries are not needed) -ethermintd start --metrics --pruning=nothing --evm.tracer=json $TRACE --log_level $LOGLEVEL --minimum-gas-prices=0.0001aphoton --json-rpc.api eth,txpool,personal,net,debug,web3,miner --api.enable +ethermintd start --metrics --pruning=nothing --rpc.unsafe --keyring-backend test --log_level info --json-rpc.api eth,txpool,personal,net,debug,web3 --api.enable diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index 038f90acfb..96b5b50f1b 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -488,7 +488,10 @@ func execTrace[T traceRequest]( // be tracer dependent. func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*types.QueryTraceTxResponse, error) { var baseFee *big.Int - if req != nil && req.BaseFee != nil { + if req == nil || req.Msg == nil { + return nil, status.Error(codes.InvalidArgument, "request and message cannot be empty") + } + if req.BaseFee != nil { baseFee = big.NewInt(req.BaseFee.Int64()) } resultData, err := execTrace( @@ -614,6 +617,9 @@ func (k Keeper) TraceBlock(c context.Context, req *types.QueryTraceBlockRequest) // executes the given call in the provided environment. The return value will // be tracer dependent. func (k Keeper) TraceCall(c context.Context, req *types.QueryTraceCallRequest) (*types.QueryTraceCallResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "request cannot be empty") + } resultData, err := execTrace( c, req, diff --git a/x/evm/keeper/grpc_query_test.go b/x/evm/keeper/grpc_query_test.go index fcf5b06014..9e6cb6cf74 100644 --- a/x/evm/keeper/grpc_query_test.go +++ b/x/evm/keeper/grpc_query_test.go @@ -1043,6 +1043,15 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceTx() { }, expPass: false, }, + { + msg: "nil Msg in QueryTraceTxRequest", + malleate: func() { + traceConfig = nil + predecessors = []*types.MsgEthereumTx{} + txMsg = nil + }, + expPass: false, + }, } for _, tc := range testCases { diff --git a/x/evm/types/query.go b/x/evm/types/query.go index 5e9a937130..899d7826ed 100644 --- a/x/evm/types/query.go +++ b/x/evm/types/query.go @@ -16,12 +16,21 @@ package types import ( + "fmt" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" ) // UnpackInterfaces implements UnpackInterfacesMesssage.UnpackInterfaces func (m QueryTraceTxRequest) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { + if m.Msg == nil { + return fmt.Errorf("msg cannot be nul") + } + for _, msg := range m.Predecessors { + if msg == nil { + continue + } if err := msg.UnpackInterfaces(unpacker); err != nil { return err } @@ -31,6 +40,9 @@ func (m QueryTraceTxRequest) UnpackInterfaces(unpacker codectypes.AnyUnpacker) e func (m QueryTraceBlockRequest) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error { for _, msg := range m.Txs { + if msg == nil { + continue + } if err := msg.UnpackInterfaces(unpacker); err != nil { return err } From e10d5b487d28d67987a7e813a65591de9460511d Mon Sep 17 00:00:00 2001 From: songgaoye Date: Wed, 9 Jul 2025 15:33:56 +0800 Subject: [PATCH 107/210] chore: move app/ante to ante to enhance maintainability (#649) * chore: move app/ante to ante * changelog --- CHANGELOG.md | 1 + {app/ante => ante/cosmos}/authz.go | 2 +- {app/ante => ante/cosmos}/eip712.go | 41 +------------ .../fees.go => ante/cosmos/min_gas_price.go | 7 ++- {app/ante => ante/cosmos}/reject_msgs.go | 2 +- {app/ante => ante}/eth.go | 9 +-- {app/ante => ante/evm}/fee_checker.go | 2 +- {app/ante => ante/evm}/fee_checker_test.go | 2 +- {app/ante => ante/evm}/nativefee.go | 2 +- .../interfaces.go => ante/interfaces/evm.go | 2 +- {app/ante => ante/interfaces}/setup.go | 2 +- {app/ante => ante}/sigverify.go | 0 app/ante/ante.go | 2 +- app/ante/authz_test.go | 5 +- app/ante/eth_test.go | 2 +- app/ante/evm_handler.go | 61 +++++++++++++++++++ app/ante/handler_options.go | 38 ++++++------ .../{fees_test.go => min_gas_price_test.go} | 6 +- app/ante/setup_test.go | 6 +- app/ante/signverify_test.go | 2 +- default.nix | 2 +- 21 files changed, 112 insertions(+), 84 deletions(-) rename {app/ante => ante/cosmos}/authz.go (99%) rename {app/ante => ante/cosmos}/eip712.go (82%) rename app/ante/fees.go => ante/cosmos/min_gas_price.go (96%) rename {app/ante => ante/cosmos}/reject_msgs.go (99%) rename {app/ante => ante}/eth.go (97%) rename {app/ante => ante/evm}/fee_checker.go (99%) rename {app/ante => ante/evm}/fee_checker_test.go (99%) rename {app/ante => ante/evm}/nativefee.go (99%) rename app/ante/interfaces.go => ante/interfaces/evm.go (98%) rename {app/ante => ante/interfaces}/setup.go (99%) rename {app/ante => ante}/sigverify.go (100%) create mode 100644 app/ante/evm_handler.go rename app/ante/{fees_test.go => min_gas_price_test.go} (97%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d38233361..642e9c0795 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features +* (evm) [#649](https://github.com/crypto-org-chain/ethermint/pull/649) chore: move app/ante to ante * (rpc) [#657](https://github.com/crypto-org-chain/ethermint/pull/659) Sanity checks for TraceTx and TraceCall. * (rpc) [#638](https://github.com/crypto-org-chain/ethermint/pull/638) Add support for eth_getBlockReceipts. * (evm) [#414](https://github.com/crypto-org-chain/ethermint/pull/414) Integrate go-block-stm for parallel tx execution. diff --git a/app/ante/authz.go b/ante/cosmos/authz.go similarity index 99% rename from app/ante/authz.go rename to ante/cosmos/authz.go index 5c71dc2cef..ffbb37b234 100644 --- a/app/ante/authz.go +++ b/ante/cosmos/authz.go @@ -13,7 +13,7 @@ // // You should have received a copy of the GNU Lesser General Public License // along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE -package ante +package cosmos import ( "fmt" diff --git a/app/ante/eip712.go b/ante/cosmos/eip712.go similarity index 82% rename from app/ante/eip712.go rename to ante/cosmos/eip712.go index 0bf020fc2a..e97a15305f 100644 --- a/app/ante/eip712.go +++ b/ante/cosmos/eip712.go @@ -13,7 +13,7 @@ // // You should have received a copy of the GNU Lesser General Public License // along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE -package ante +package cosmos import ( "fmt" @@ -29,8 +29,6 @@ import ( authante "github.com/cosmos/cosmos-sdk/x/auth/ante" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" - ibcante "github.com/cosmos/ibc-go/v10/modules/core/ante" - ethcrypto "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/signer/core/apitypes" "github.com/evmos/ethermint/crypto/ethsecp256k1" @@ -48,43 +46,6 @@ func init() { ethermintCodec = codec.NewProtoCodec(registry) } -// Deprecated: NewLegacyCosmosAnteHandlerEip712 creates an AnteHandler to process legacy EIP-712 -// transactions, as defined by the presence of an ExtensionOptionsWeb3Tx extension. -func NewLegacyCosmosAnteHandlerEip712(ctx sdk.Context, options HandlerOptions, extra ...sdk.AnteDecorator) sdk.AnteHandler { - evmParams := options.EvmKeeper.GetParams(ctx) - feemarketParams := options.FeeMarketKeeper.GetParams(ctx) - evmDenom := evmParams.EvmDenom - chainID := options.EvmKeeper.ChainID() - chainCfg := evmParams.GetChainConfig() - ethCfg := chainCfg.EthereumConfig(chainID) - var txFeeChecker authante.TxFeeChecker - if options.DynamicFeeChecker { - txFeeChecker = NewDynamicFeeChecker(ethCfg, &evmParams, &feemarketParams) - } - decorators := []sdk.AnteDecorator{ - RejectMessagesDecorator{}, // reject MsgEthereumTxs - // disable the Msg types that cannot be included on an authz.MsgExec msgs field - NewAuthzLimiterDecorator(options.DisabledAuthzMsgs), - authante.NewSetUpContextDecorator(), - authante.NewValidateBasicDecorator(), - authante.NewTxTimeoutHeightDecorator(), - NewMinGasPriceDecorator(options.FeeMarketKeeper, evmDenom, &feemarketParams), - authante.NewValidateMemoDecorator(options.AccountKeeper), - authante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), - NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, txFeeChecker), - // SetPubKeyDecorator must be called before all signature verification decorators - authante.NewSetPubKeyDecorator(options.AccountKeeper), - authante.NewValidateSigCountDecorator(options.AccountKeeper), - authante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer), - // Note: signature verification uses EIP instead of the cosmos signature validator - NewLegacyEip712SigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), - authante.NewIncrementSequenceDecorator(options.AccountKeeper), - ibcante.NewRedundantRelayDecorator(options.IBCKeeper), - } - decorators = append(decorators, extra...) - return sdk.ChainAnteDecorators(decorators...) -} - // Deprecated: LegacyEip712SigVerificationDecorator Verify all signatures for a tx and return an error if any are invalid. Note, // the LegacyEip712SigVerificationDecorator decorator will not get executed on ReCheck. // NOTE: As of v0.20.0, EIP-712 signature verification is handled by the ethsecp256k1 public key (see ethsecp256k1.go) diff --git a/app/ante/fees.go b/ante/cosmos/min_gas_price.go similarity index 96% rename from app/ante/fees.go rename to ante/cosmos/min_gas_price.go index d5946683df..510f388733 100644 --- a/app/ante/fees.go +++ b/ante/cosmos/min_gas_price.go @@ -13,7 +13,7 @@ // // You should have received a copy of the GNU Lesser General Public License // along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE -package ante +package cosmos import ( "math/big" @@ -23,6 +23,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" errortypes "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/evmos/ethermint/ante/interfaces" evmtypes "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" ) @@ -33,14 +34,14 @@ import ( // If fee is high enough, then call next AnteHandler // CONTRACT: Tx must implement FeeTx to use MinGasPriceDecorator type MinGasPriceDecorator struct { - feesKeeper FeeMarketKeeper + feesKeeper interfaces.FeeMarketKeeper evmDenom string feemarketParams *feemarkettypes.Params } // NewMinGasPriceDecorator creates a new MinGasPriceDecorator instance used only for // Cosmos transactions. -func NewMinGasPriceDecorator(fk FeeMarketKeeper, evmDenom string, feemarketParams *feemarkettypes.Params) MinGasPriceDecorator { +func NewMinGasPriceDecorator(fk interfaces.FeeMarketKeeper, evmDenom string, feemarketParams *feemarkettypes.Params) MinGasPriceDecorator { return MinGasPriceDecorator{feesKeeper: fk, evmDenom: evmDenom, feemarketParams: feemarketParams} } diff --git a/app/ante/reject_msgs.go b/ante/cosmos/reject_msgs.go similarity index 99% rename from app/ante/reject_msgs.go rename to ante/cosmos/reject_msgs.go index 5e8716a98e..d37b89ac3d 100644 --- a/app/ante/reject_msgs.go +++ b/ante/cosmos/reject_msgs.go @@ -13,7 +13,7 @@ // // You should have received a copy of the GNU Lesser General Public License // along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE -package ante +package cosmos import ( errorsmod "cosmossdk.io/errors" diff --git a/app/ante/eth.go b/ante/eth.go similarity index 97% rename from app/ante/eth.go rename to ante/eth.go index ca608777a7..ec0b45ccd5 100644 --- a/app/ante/eth.go +++ b/ante/eth.go @@ -26,6 +26,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" errortypes "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/evmos/ethermint/ante/interfaces" ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm/keeper" "github.com/evmos/ethermint/x/evm/statedb" @@ -66,7 +67,7 @@ func NewCachedAccountGetter(ctx sdk.Context, ak evmtypes.AccountKeeper) AccountG // - account balance is lower than the transaction cost func VerifyEthAccount( ctx sdk.Context, tx sdk.Tx, - evmKeeper EVMKeeper, evmDenom string, + evmKeeper interfaces.EVMKeeper, evmDenom string, accountGetter AccountGetter, ) error { if !ctx.IsCheckTx() { @@ -121,7 +122,7 @@ func VerifyEthAccount( func CheckEthGasConsume( ctx sdk.Context, tx sdk.Tx, rules params.Rules, - evmKeeper EVMKeeper, + evmKeeper interfaces.EVMKeeper, baseFee *big.Int, maxGasWanted uint64, evmDenom string, @@ -215,7 +216,7 @@ func CheckEthCanTransfer( ctx sdk.Context, tx sdk.Tx, baseFee *big.Int, rules params.Rules, - evmKeeper EVMKeeper, + evmKeeper interfaces.EVMKeeper, evmParams *evmtypes.Params, ) error { for _, msg := range tx.GetMsgs() { @@ -261,7 +262,7 @@ func CheckEthCanTransfer( } // canTransfer adapted the core.CanTransfer from go-ethereum -func canTransfer(ctx sdk.Context, evmKeeper EVMKeeper, denom string, from common.Address, amount *big.Int) bool { +func canTransfer(ctx sdk.Context, evmKeeper interfaces.EVMKeeper, denom string, from common.Address, amount *big.Int) bool { balance := evmKeeper.GetBalance(ctx, sdk.AccAddress(from.Bytes()), denom) return balance.Cmp(amount) >= 0 } diff --git a/app/ante/fee_checker.go b/ante/evm/fee_checker.go similarity index 99% rename from app/ante/fee_checker.go rename to ante/evm/fee_checker.go index 53b890311b..8a39ec396b 100644 --- a/app/ante/fee_checker.go +++ b/ante/evm/fee_checker.go @@ -13,7 +13,7 @@ // // You should have received a copy of the GNU Lesser General Public License // along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE -package ante +package evm import ( "fmt" diff --git a/app/ante/fee_checker_test.go b/ante/evm/fee_checker_test.go similarity index 99% rename from app/ante/fee_checker_test.go rename to ante/evm/fee_checker_test.go index ec956c15e8..f5062bff0f 100644 --- a/app/ante/fee_checker_test.go +++ b/ante/evm/fee_checker_test.go @@ -1,4 +1,4 @@ -package ante +package evm import ( "math/big" diff --git a/app/ante/nativefee.go b/ante/evm/nativefee.go similarity index 99% rename from app/ante/nativefee.go rename to ante/evm/nativefee.go index 50d05af04c..4f2c77ebae 100644 --- a/app/ante/nativefee.go +++ b/ante/evm/nativefee.go @@ -1,4 +1,4 @@ -package ante +package evm import ( "bytes" diff --git a/app/ante/interfaces.go b/ante/interfaces/evm.go similarity index 98% rename from app/ante/interfaces.go rename to ante/interfaces/evm.go index c81683daa0..7bbf268f1a 100644 --- a/app/ante/interfaces.go +++ b/ante/interfaces/evm.go @@ -13,7 +13,7 @@ // // You should have received a copy of the GNU Lesser General Public License // along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE -package ante +package interfaces import ( "math/big" diff --git a/app/ante/setup.go b/ante/interfaces/setup.go similarity index 99% rename from app/ante/setup.go rename to ante/interfaces/setup.go index eb61eb96c2..ac50c462ad 100644 --- a/app/ante/setup.go +++ b/ante/interfaces/setup.go @@ -13,7 +13,7 @@ // // You should have received a copy of the GNU Lesser General Public License // along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE -package ante +package interfaces import ( "errors" diff --git a/app/ante/sigverify.go b/ante/sigverify.go similarity index 100% rename from app/ante/sigverify.go rename to ante/sigverify.go diff --git a/app/ante/ante.go b/app/ante/ante.go index 655cb3c331..51badffd83 100644 --- a/app/ante/ante.go +++ b/app/ante/ante.go @@ -79,7 +79,7 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { anteHandler = ethAnteHandler case "/ethermint.types.v1.ExtensionOptionsWeb3Tx": // Deprecated: Handle as normal Cosmos SDK tx, except signature is checked for Legacy EIP712 representation - anteHandler = NewLegacyCosmosAnteHandlerEip712(ctx, options, options.ExtraDecorators...) + anteHandler = newLegacyCosmosAnteHandlerEip712(ctx, options, options.ExtraDecorators...) case "/ethermint.types.v1.ExtensionOptionDynamicFeeTx": // cosmos-sdk tx with dynamic fee extension anteHandler = newCosmosAnteHandler(ctx, options, options.ExtraDecorators...) diff --git a/app/ante/authz_test.go b/app/ante/authz_test.go index 1d8ef92eac..23f7dc4b23 100644 --- a/app/ante/authz_test.go +++ b/app/ante/authz_test.go @@ -15,8 +15,7 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" utiltx "github.com/evmos/ethermint/testutil/tx" - "github.com/evmos/ethermint/app/ante" - + "github.com/evmos/ethermint/ante/cosmos" "github.com/evmos/ethermint/crypto/ethsecp256k1" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" @@ -44,7 +43,7 @@ func (suite *AnteTestSuite) TestAuthzLimiterDecorator() { ) suite.Require().NoError(err) - decorator := ante.NewAuthzLimiterDecorator( + decorator := cosmos.NewAuthzLimiterDecorator( []string{ sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), sdk.MsgTypeURL(&stakingtypes.MsgUndelegate{}), diff --git a/app/ante/eth_test.go b/app/ante/eth_test.go index c44863db27..b45981813f 100644 --- a/app/ante/eth_test.go +++ b/app/ante/eth_test.go @@ -11,7 +11,7 @@ import ( storetypes "cosmossdk.io/store/types" ethtypes "github.com/ethereum/go-ethereum/core/types" - "github.com/evmos/ethermint/app/ante" + "github.com/evmos/ethermint/ante" "github.com/evmos/ethermint/server/config" "github.com/evmos/ethermint/tests" ethermint "github.com/evmos/ethermint/types" diff --git a/app/ante/evm_handler.go b/app/ante/evm_handler.go new file mode 100644 index 0000000000..3442657799 --- /dev/null +++ b/app/ante/evm_handler.go @@ -0,0 +1,61 @@ +// Copyright 2021 Evmos Foundation +// This file is part of Evmos' Ethermint library. +// +// The Ethermint library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The Ethermint library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE +package ante + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + authante "github.com/cosmos/cosmos-sdk/x/auth/ante" + ibcante "github.com/cosmos/ibc-go/v10/modules/core/ante" + "github.com/evmos/ethermint/ante/cosmos" + "github.com/evmos/ethermint/ante/evm" +) + +// Deprecated: newLegacyCosmosAnteHandlerEip712 creates an AnteHandler to process legacy EIP-712 +// transactions, as defined by the presence of an ExtensionOptionsWeb3Tx extension. +func newLegacyCosmosAnteHandlerEip712(ctx sdk.Context, options HandlerOptions, extra ...sdk.AnteDecorator) sdk.AnteHandler { + evmParams := options.EvmKeeper.GetParams(ctx) + feemarketParams := options.FeeMarketKeeper.GetParams(ctx) + evmDenom := evmParams.EvmDenom + chainID := options.EvmKeeper.ChainID() + chainCfg := evmParams.GetChainConfig() + ethCfg := chainCfg.EthereumConfig(chainID) + var txFeeChecker authante.TxFeeChecker + if options.DynamicFeeChecker { + txFeeChecker = evm.NewDynamicFeeChecker(ethCfg, &evmParams, &feemarketParams) + } + decorators := []sdk.AnteDecorator{ + cosmos.RejectMessagesDecorator{}, // reject MsgEthereumTxs + // disable the Msg types that cannot be included on an authz.MsgExec msgs field + cosmos.NewAuthzLimiterDecorator(options.DisabledAuthzMsgs), + authante.NewSetUpContextDecorator(), + authante.NewValidateBasicDecorator(), + authante.NewTxTimeoutHeightDecorator(), + cosmos.NewMinGasPriceDecorator(options.FeeMarketKeeper, evmDenom, &feemarketParams), + authante.NewValidateMemoDecorator(options.AccountKeeper), + authante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), + evm.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, txFeeChecker), + // SetPubKeyDecorator must be called before all signature verification decorators + authante.NewSetPubKeyDecorator(options.AccountKeeper), + authante.NewValidateSigCountDecorator(options.AccountKeeper), + authante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer), + // Note: signature verification uses EIP instead of the cosmos signature validator + cosmos.NewLegacyEip712SigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), + authante.NewIncrementSequenceDecorator(options.AccountKeeper), + ibcante.NewRedundantRelayDecorator(options.IBCKeeper), + } + decorators = append(decorators, extra...) + return sdk.ChainAnteDecorators(decorators...) +} diff --git a/app/ante/handler_options.go b/app/ante/handler_options.go index 71587695f2..46e20952e9 100644 --- a/app/ante/handler_options.go +++ b/app/ante/handler_options.go @@ -25,6 +25,10 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/ante" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ethtypes "github.com/ethereum/go-ethereum/core/types" + evmante "github.com/evmos/ethermint/ante" + "github.com/evmos/ethermint/ante/cosmos" + "github.com/evmos/ethermint/ante/evm" + "github.com/evmos/ethermint/ante/interfaces" ibcante "github.com/cosmos/ibc-go/v10/modules/core/ante" ibckeeper "github.com/cosmos/ibc-go/v10/modules/core/keeper" @@ -40,8 +44,8 @@ type HandlerOptions struct { AccountKeeper evmtypes.AccountKeeper BankKeeper evmtypes.BankKeeper IBCKeeper *ibckeeper.Keeper - FeeMarketKeeper FeeMarketKeeper - EvmKeeper EVMKeeper + FeeMarketKeeper interfaces.FeeMarketKeeper + EvmKeeper interfaces.EVMKeeper FeegrantKeeper ante.FeegrantKeeper SignModeHandler *txsigning.HandlerMap SigGasConsumer func(meter storetypes.GasMeter, sig signing.SignatureV2, params authtypes.Params) error @@ -95,20 +99,20 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { } // We need to setup an empty gas config so that the gas is consistent with Ethereum. - ctx, err = SetupEthContext(ctx) + ctx, err = interfaces.SetupEthContext(ctx) if err != nil { return ctx, err } - if err := CheckEthMempoolFee(ctx, tx, simulate, baseFee, evmDenom); err != nil { + if err := cosmos.CheckEthMempoolFee(ctx, tx, simulate, baseFee, evmDenom); err != nil { return ctx, err } - if err := CheckEthMinGasPrice(tx, feemarketParams.MinGasPrice, baseFee); err != nil { + if err := cosmos.CheckEthMinGasPrice(tx, feemarketParams.MinGasPrice, baseFee); err != nil { return ctx, err } - if err := ValidateEthBasic(ctx, tx, evmParams, baseFee); err != nil { + if err := interfaces.ValidateEthBasic(ctx, tx, evmParams, baseFee); err != nil { return ctx, err } @@ -118,7 +122,7 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { } } else { ethSigner := ethtypes.MakeSigner(blockCfg.ChainConfig, blockCfg.BlockNumber) - err = VerifyEthSig(tx, ethSigner) + err = evmante.VerifyEthSig(tx, ethSigner) ctx.SetIncarnationCache(EthSigVerificationResultCacheKey, err) } if err != nil { @@ -127,17 +131,17 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { // AccountGetter cache the account objects during the ante handler execution, // it's safe because there's no store branching in the ante handlers. - accountGetter := NewCachedAccountGetter(ctx, options.AccountKeeper) + accountGetter := evmante.NewCachedAccountGetter(ctx, options.AccountKeeper) - if err := VerifyEthAccount(ctx, tx, options.EvmKeeper, evmDenom, accountGetter); err != nil { + if err := evmante.VerifyEthAccount(ctx, tx, options.EvmKeeper, evmDenom, accountGetter); err != nil { return ctx, err } - if err := CheckEthCanTransfer(ctx, tx, baseFee, rules, options.EvmKeeper, evmParams); err != nil { + if err := evmante.CheckEthCanTransfer(ctx, tx, baseFee, rules, options.EvmKeeper, evmParams); err != nil { return ctx, err } - ctx, err = CheckEthGasConsume( + ctx, err = evmante.CheckEthGasConsume( ctx, tx, rules, options.EvmKeeper, baseFee, options.MaxTxGasWanted, evmDenom, ) @@ -145,7 +149,7 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { return ctx, err } - if err := CheckAndSetEthSenderNonce(ctx, tx, options.AccountKeeper, options.UnsafeUnorderedTx, accountGetter); err != nil { + if err := evmante.CheckAndSetEthSenderNonce(ctx, tx, options.AccountKeeper, options.UnsafeUnorderedTx, accountGetter); err != nil { return ctx, err } @@ -169,20 +173,20 @@ func newCosmosAnteHandler(ctx sdk.Context, options HandlerOptions, extra ...sdk. ethCfg := chainCfg.EthereumConfig(chainID) var txFeeChecker ante.TxFeeChecker if options.DynamicFeeChecker { - txFeeChecker = NewDynamicFeeChecker(ethCfg, &evmParams, &feemarketParams) + txFeeChecker = evm.NewDynamicFeeChecker(ethCfg, &evmParams, &feemarketParams) } decorators := []sdk.AnteDecorator{ - RejectMessagesDecorator{}, // reject MsgEthereumTxs + cosmos.RejectMessagesDecorator{}, // reject MsgEthereumTxs // disable the Msg types that cannot be included on an authz.MsgExec msgs field - NewAuthzLimiterDecorator(options.DisabledAuthzMsgs), + cosmos.NewAuthzLimiterDecorator(options.DisabledAuthzMsgs), ante.NewSetUpContextDecorator(), ante.NewExtensionOptionsDecorator(options.ExtensionOptionChecker), ante.NewValidateBasicDecorator(), ante.NewTxTimeoutHeightDecorator(), - NewMinGasPriceDecorator(options.FeeMarketKeeper, evmDenom, &feemarketParams), + cosmos.NewMinGasPriceDecorator(options.FeeMarketKeeper, evmDenom, &feemarketParams), ante.NewValidateMemoDecorator(options.AccountKeeper), ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), - NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, txFeeChecker), + evm.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, txFeeChecker), // SetPubKeyDecorator must be called before all signature verification decorators ante.NewSetPubKeyDecorator(options.AccountKeeper), ante.NewValidateSigCountDecorator(options.AccountKeeper), diff --git a/app/ante/fees_test.go b/app/ante/min_gas_price_test.go similarity index 97% rename from app/ante/fees_test.go rename to app/ante/min_gas_price_test.go index a0124cb036..9adf0c4d2d 100644 --- a/app/ante/fees_test.go +++ b/app/ante/min_gas_price_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" ethtypes "github.com/ethereum/go-ethereum/core/types" - "github.com/evmos/ethermint/app/ante" + "github.com/evmos/ethermint/ante/cosmos" "github.com/evmos/ethermint/tests" evmtypes "github.com/evmos/ethermint/x/evm/types" ) @@ -123,7 +123,7 @@ func (s *AnteTestSuite) TestMinGasPriceDecorator() { // s.SetupTest(et.isCheckTx) ctx := s.ctx.WithIsReCheckTx(et.isCheckTx) feemarketParams := s.app.FeeMarketKeeper.GetParams(ctx) - dec := ante.NewMinGasPriceDecorator(s.app.FeeMarketKeeper, evmtypes.DefaultEVMDenom, &feemarketParams) + dec := cosmos.NewMinGasPriceDecorator(s.app.FeeMarketKeeper, evmtypes.DefaultEVMDenom, &feemarketParams) _, err := dec.AnteHandle(ctx, tc.malleate(), et.simulate, NextFn) if tc.expPass || (et.simulate && tc.allowPassOnSimulate) { @@ -342,7 +342,7 @@ func (s *AnteTestSuite) TestEthMinGasPriceDecorator() { baseFee := s.app.EvmKeeper.GetBaseFee(s.ctx, ethCfg) feemarketParams := s.app.FeeMarketKeeper.GetParams(s.ctx) - err := ante.CheckEthMinGasPrice(tx, feemarketParams.MinGasPrice, baseFee) + err := cosmos.CheckEthMinGasPrice(tx, feemarketParams.MinGasPrice, baseFee) if tc.expPass { s.Require().NoError(err, tc.name) diff --git a/app/ante/setup_test.go b/app/ante/setup_test.go index fb7ca9a0df..46ad9bb4ec 100644 --- a/app/ante/setup_test.go +++ b/app/ante/setup_test.go @@ -6,7 +6,7 @@ import ( storetypes "cosmossdk.io/store/types" sdk "github.com/cosmos/cosmos-sdk/types" ethtypes "github.com/ethereum/go-ethereum/core/types" - "github.com/evmos/ethermint/app/ante" + "github.com/evmos/ethermint/ante/interfaces" "github.com/evmos/ethermint/tests" evmtypes "github.com/evmos/ethermint/x/evm/types" ) @@ -28,7 +28,7 @@ func (suite *AnteTestSuite) TestEthSetupContextDecorator() { for _, tc := range testCases { suite.Run(tc.name, func() { - ctx, err := ante.SetupEthContext(suite.ctx) + ctx, err := interfaces.SetupEthContext(suite.ctx) if tc.expPass { suite.Require().NoError(err) @@ -88,7 +88,7 @@ func (suite *AnteTestSuite) TestValidateBasicDecorator() { ethCfg := chainCfg.EthereumConfig(chainID) baseFee := suite.app.EvmKeeper.GetBaseFee(suite.ctx, ethCfg) - err := ante.ValidateEthBasic(suite.ctx.WithIsReCheckTx(tc.reCheckTx), tc.tx, &evmParams, baseFee) + err := interfaces.ValidateEthBasic(suite.ctx.WithIsReCheckTx(tc.reCheckTx), tc.tx, &evmParams, baseFee) if tc.expPass { suite.Require().NoError(err) diff --git a/app/ante/signverify_test.go b/app/ante/signverify_test.go index 1f0e47ffcb..df66278be9 100644 --- a/app/ante/signverify_test.go +++ b/app/ante/signverify_test.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ethtypes "github.com/ethereum/go-ethereum/core/types" - "github.com/evmos/ethermint/app/ante" + "github.com/evmos/ethermint/ante" "github.com/evmos/ethermint/tests" evmtypes "github.com/evmos/ethermint/x/evm/types" ) diff --git a/default.nix b/default.nix index 465aa8c0a1..1798680f85 100644 --- a/default.nix +++ b/default.nix @@ -17,7 +17,7 @@ in buildGoApplication rec { inherit pname version tags ldflags; src = lib.sourceByRegex ./. [ - "^(x|app|cmd|client|server|crypto|rpc|types|encoding|ethereum|indexer|testutil|version|store|go.mod|go.sum|gomod2nix.toml)($|/.*)" + "^(x|ante|app|cmd|client|server|crypto|rpc|types|encoding|ethereum|indexer|testutil|version|store|go.mod|go.sum|gomod2nix.toml)($|/.*)" "^tests(/.*[.]go)?$" ]; modules = ./gomod2nix.toml; From 99a0fa5a593d3e71f3545c55dd9ab0ab03cc4da1 Mon Sep 17 00:00:00 2001 From: JayT106 Date: Wed, 9 Jul 2025 08:21:04 -0400 Subject: [PATCH 108/210] update changelog (#660) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 642e9c0795..4061e39921 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (ante) [#493](https://github.com/crypto-org-chain/ethermint/pull/493) Align gasWanted for process proposal mode, [#500](https://github.com/crypto-org-chain/ethermint/pull/500) Check for overflow before adding gasLimit to gasWanted. * (ante) [#506](https://github.com/crypto-org-chain/ethermint/pull/506) Disable MsgCreatePermanentLockedAccount and MsgCreatePeriodicVestingAccount messages. * (ante) [#513](https://github.com/crypto-org-chain/ethermint/pull/513) Avoid unnecessary GetAccount and MakeSigner in ante handlers. +* (ibc) [#609](https://github.com/crypto-org-chain/ethermint/pull/609) Support ibc-go v10 ### Bug Fixes From 19e836adb5d9b3e78a0c18b1029295271f6c9be4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Jul 2025 22:02:15 +0800 Subject: [PATCH 109/210] build(deps): bump golang.org/x/sync from 0.15.0 to 0.16.0 (#662) Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.15.0 to 0.16.0. - [Commits](https://github.com/golang/sync/compare/v0.15.0...v0.16.0) --- updated-dependencies: - dependency-name: golang.org/x/sync dependency-version: 0.16.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 651e962cf2..51b808f681 100644 --- a/go.mod +++ b/go.mod @@ -49,7 +49,7 @@ require ( github.com/tidwall/sjson v1.2.5 github.com/tyler-smith/go-bip39 v1.1.0 golang.org/x/net v0.41.0 - golang.org/x/sync v0.15.0 + golang.org/x/sync v0.16.0 golang.org/x/text v0.26.0 google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 google.golang.org/grpc v1.73.0 diff --git a/go.sum b/go.sum index 150ad449eb..c8189a6c8e 100644 --- a/go.sum +++ b/go.sum @@ -1967,8 +1967,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= From fa3cc1b9c6a916b1f58235c96efc87e40ff9ba94 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Jul 2025 09:55:36 +0900 Subject: [PATCH 110/210] build(deps): bump golang.org/x/net from 0.41.0 to 0.42.0 (#664) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.41.0 to 0.42.0. - [Commits](https://github.com/golang/net/compare/v0.41.0...v0.42.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-version: 0.42.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 12 ++++++------ go.sum | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index 51b808f681..208ac1e80a 100644 --- a/go.mod +++ b/go.mod @@ -48,9 +48,9 @@ require ( github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 github.com/tyler-smith/go-bip39 v1.1.0 - golang.org/x/net v0.41.0 + golang.org/x/net v0.42.0 golang.org/x/sync v0.16.0 - golang.org/x/text v0.26.0 + golang.org/x/text v0.27.0 google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 @@ -249,13 +249,13 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/arch v0.15.0 // indirect - golang.org/x/crypto v0.39.0 // indirect + golang.org/x/crypto v0.40.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect golang.org/x/oauth2 v0.28.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/term v0.32.0 // indirect + golang.org/x/sys v0.34.0 // indirect + golang.org/x/term v0.33.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.33.0 // indirect + golang.org/x/tools v0.34.0 // indirect google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f // indirect diff --git a/go.sum b/go.sum index c8189a6c8e..08081b0f0e 100644 --- a/go.sum +++ b/go.sum @@ -1773,8 +1773,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1914,8 +1914,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2082,8 +2082,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -2099,8 +2099,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= +golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2121,8 +2121,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2205,8 +2205,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 3b0e16cb0a68117e077a8678d67ac5ded385afe6 Mon Sep 17 00:00:00 2001 From: songgaoye Date: Mon, 14 Jul 2025 10:36:37 +0800 Subject: [PATCH 111/210] chore: rename app to evmd to enhance maintainability (#661) * chore: rename app to evmd to enhance maintainability * changelog * update default.nix * fix test * update Makefile * update broken-ethermintd.path * fix comment --- CHANGELOG.md | 1 + Makefile | 2 +- cmd/ethermintd/cmd_test.go | 4 +- cmd/ethermintd/main.go | 4 +- cmd/ethermintd/root.go | 26 ++++++------ codecov.yml | 4 +- default.nix | 2 +- {app => evmd}/ante/ante.go | 0 {app => evmd}/ante/ante_test.go | 2 +- {app => evmd}/ante/authz_test.go | 0 {app => evmd}/ante/eth_test.go | 0 {app => evmd}/ante/evm_handler.go | 0 {app => evmd}/ante/handler_options.go | 0 {app => evmd}/ante/min_gas_price_test.go | 0 {app => evmd}/ante/setup_test.go | 0 {app => evmd}/ante/signverify_test.go | 0 {app => evmd}/ante/sigs_test.go | 0 {app => evmd}/ante/tx_listener.go | 0 {app => evmd}/ante/utils_test.go | 8 ++-- {app => evmd}/app.go | 4 +- {app => evmd}/app_test.go | 8 ++-- {app => evmd}/benchmark_test.go | 14 +++---- {app => evmd}/executor.go | 2 +- {app => evmd}/export.go | 2 +- {app => evmd}/signer.go | 2 +- {app => evmd}/simulation_test.go | 14 +++---- {app => evmd}/upgrades.go | 2 +- server/json_rpc.go | 2 +- tests/importer/importer_test.go | 4 +- .../configs/broken-ethermintd.patch | 6 +-- testutil/abci.go | 4 +- testutil/app.go | 20 ++++----- testutil/base_test_suite.go | 22 +++++----- testutil/network/network.go | 42 +++++++++---------- testutil/tx/cosmos.go | 6 +-- testutil/tx/eip712.go | 8 ++-- x/evm/handler_test.go | 4 +- x/evm/keeper/grpc_query_test.go | 4 +- x/evm/keeper/integration_test.go | 4 +- x/evm/keeper/keeper_test.go | 4 +- .../keeper/state_transition_benchmark_test.go | 4 +- x/evm/keeper/state_transition_test.go | 4 +- x/evm/keeper/utils_test.go | 4 +- 43 files changed, 122 insertions(+), 121 deletions(-) rename {app => evmd}/ante/ante.go (100%) rename {app => evmd}/ante/ante_test.go (99%) rename {app => evmd}/ante/authz_test.go (100%) rename {app => evmd}/ante/eth_test.go (100%) rename {app => evmd}/ante/evm_handler.go (100%) rename {app => evmd}/ante/handler_options.go (100%) rename {app => evmd}/ante/min_gas_price_test.go (100%) rename {app => evmd}/ante/setup_test.go (100%) rename {app => evmd}/ante/signverify_test.go (100%) rename {app => evmd}/ante/sigs_test.go (100%) rename {app => evmd}/ante/tx_listener.go (100%) rename {app => evmd}/ante/utils_test.go (99%) rename {app => evmd}/app.go (99%) rename {app => evmd}/app_test.go (82%) rename {app => evmd}/benchmark_test.go (77%) rename {app => evmd}/executor.go (99%) rename {app => evmd}/export.go (99%) rename {app => evmd}/signer.go (99%) rename {app => evmd}/simulation_test.go (97%) rename {app => evmd}/upgrades.go (99%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4061e39921..91e8498220 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features +* (evm) [#649](https://github.com/crypto-org-chain/ethermint/pull/661) chore: rename app to evmd * (evm) [#649](https://github.com/crypto-org-chain/ethermint/pull/649) chore: move app/ante to ante * (rpc) [#657](https://github.com/crypto-org-chain/ethermint/pull/659) Sanity checks for TraceTx and TraceCall. * (rpc) [#638](https://github.com/crypto-org-chain/ethermint/pull/638) Add support for eth_getBlockReceipts. diff --git a/Makefile b/Makefile index 262eafe0c2..8e244b1132 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ BINDIR ?= $(GOPATH)/bin ETHERMINT_BINARY = ethermintd ETHERMINT_DIR = ethermint BUILDDIR ?= $(CURDIR)/build -SIMAPP = ./app +SIMAPP = ./evmd HTTPS_GIT := https://github.com/evmos/ethermint.git PROJECT_NAME = $(shell git remote get-url origin | xargs basename -s .git) DOCKER := $(shell which docker) diff --git a/cmd/ethermintd/cmd_test.go b/cmd/ethermintd/cmd_test.go index dcacf45a7b..86b8e3e7d9 100644 --- a/cmd/ethermintd/cmd_test.go +++ b/cmd/ethermintd/cmd_test.go @@ -10,8 +10,8 @@ import ( svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" - "github.com/evmos/ethermint/app" ethermintd "github.com/evmos/ethermint/cmd/ethermintd" + "github.com/evmos/ethermint/evmd" ) func TestInitCmd(t *testing.T) { @@ -23,6 +23,6 @@ func TestInitCmd(t *testing.T) { fmt.Sprintf("--%s=%s", flags.FlagChainID, "ethermint_9000-1"), }) - err := svrcmd.Execute(rootCmd, "", app.DefaultNodeHome) + err := svrcmd.Execute(rootCmd, "", evmd.DefaultNodeHome) require.NoError(t, err) } diff --git a/cmd/ethermintd/main.go b/cmd/ethermintd/main.go index b569386a53..3522f01cc7 100644 --- a/cmd/ethermintd/main.go +++ b/cmd/ethermintd/main.go @@ -22,8 +22,8 @@ import ( svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/evmos/ethermint/app" cmdcfg "github.com/evmos/ethermint/cmd/config" + "github.com/evmos/ethermint/evmd" ) func main() { @@ -32,7 +32,7 @@ func main() { rootCmd, _ := NewRootCmd() - if err := svrcmd.Execute(rootCmd, EnvPrefix, app.DefaultNodeHome); err != nil { + if err := svrcmd.Execute(rootCmd, EnvPrefix, evmd.DefaultNodeHome); err != nil { fmt.Fprintln(rootCmd.OutOrStderr(), err) os.Exit(1) } diff --git a/cmd/ethermintd/root.go b/cmd/ethermintd/root.go index 02501654da..a94b256e9b 100644 --- a/cmd/ethermintd/root.go +++ b/cmd/ethermintd/root.go @@ -52,10 +52,10 @@ import ( "github.com/cosmos/cosmos-sdk/x/crisis" genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" rosettaCmd "github.com/cosmos/rosetta/cmd" - "github.com/evmos/ethermint/app" ethermintclient "github.com/evmos/ethermint/client" "github.com/evmos/ethermint/crypto/hd" "github.com/evmos/ethermint/ethereum/eip712" + "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/server" servercfg "github.com/evmos/ethermint/server/config" srvflags "github.com/evmos/ethermint/server/flags" @@ -70,9 +70,9 @@ const ( // NewRootCmd creates a new root command for simd. It is called once in the // main function. func NewRootCmd() (*cobra.Command, ethermint.EncodingConfig) { - tempApp := app.NewEthermintApp( + tempApp := evmd.NewEthermintApp( cmtlog.NewNopLogger(), dbm.NewMemDB(), nil, true, - simtestutil.NewAppOptionsWithFlagHome(app.DefaultNodeHome), + simtestutil.NewAppOptionsWithFlagHome(evmd.DefaultNodeHome), ) encodingConfig := tempApp.EncodingConfig() initClientCtx := client.Context{}. @@ -83,7 +83,7 @@ func NewRootCmd() (*cobra.Command, ethermint.EncodingConfig) { WithInput(os.Stdin). WithAccountRetriever(types.AccountRetriever{}). WithBroadcastMode(flags.BroadcastSync). - WithHomeDir(app.DefaultNodeHome). + WithHomeDir(evmd.DefaultNodeHome). WithKeyringOptions(hd.EthSecp256k1Option()). WithViper(EnvPrefix) @@ -167,18 +167,18 @@ func initRootCmd( rootCmd.AddCommand( ethermintclient.ValidateChainID( - genutilcli.InitCmd(basicManager, app.DefaultNodeHome), + genutilcli.InitCmd(basicManager, evmd.DefaultNodeHome), ), cmtcli.NewCompletionCmd(rootCmd, true), ethermintclient.NewTestnetCmd(basicManager, banktypes.GenesisBalancesIterator{}), debug.Cmd(), confixcmd.ConfigCommand(), - pruning.Cmd(newApp, app.DefaultNodeHome), + pruning.Cmd(newApp, evmd.DefaultNodeHome), snapshot.Cmd(newApp), // this line is used by starport scaffolding # stargate/root/commands ) - server.AddCommands(rootCmd, server.NewDefaultStartOptions(newApp, app.DefaultNodeHome), appExport, addModuleInitFlags) + server.AddCommands(rootCmd, server.NewDefaultStartOptions(newApp, evmd.DefaultNodeHome), appExport, addModuleInitFlags) // add keybase, auxiliary RPC, query, and tx child commands rootCmd.AddCommand( @@ -186,7 +186,7 @@ func initRootCmd( genesisCommand(encodingConfig.TxConfig, basicManager), queryCommand(), txCommand(), - ethermintclient.KeyCommands(app.DefaultNodeHome), + ethermintclient.KeyCommands(evmd.DefaultNodeHome), ) rootCmd, err := srvflags.AddGlobalFlags(rootCmd) @@ -200,7 +200,7 @@ func initRootCmd( // genesisCommand builds genesis-related `simd genesis` command. Users may provide application specific commands as a parameter func genesisCommand(txConfig client.TxConfig, basicManager module.BasicManager, cmds ...*cobra.Command) *cobra.Command { - cmd := genutilcli.Commands(txConfig, basicManager, app.DefaultNodeHome) + cmd := genutilcli.Commands(txConfig, basicManager, evmd.DefaultNodeHome) for _, subCmd := range cmds { cmd.AddCommand(subCmd) @@ -262,7 +262,7 @@ func txCommand() *cobra.Command { // newApp creates the application func newApp(logger cmtlog.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application { baseappOptions := sdkserver.DefaultBaseappOptions(appOpts) - ethermintApp := app.NewEthermintApp( + ethermintApp := evmd.NewEthermintApp( logger, db, traceStore, true, appOpts, baseappOptions..., @@ -282,20 +282,20 @@ func appExport( appOpts servertypes.AppOptions, modulesToExport []string, ) (servertypes.ExportedApp, error) { - var ethermintApp *app.EthermintApp + var ethermintApp *evmd.EthermintApp homePath, ok := appOpts.Get(flags.FlagHome).(string) if !ok || homePath == "" { return servertypes.ExportedApp{}, errors.New("application home not set") } if height != -1 { - ethermintApp = app.NewEthermintApp(logger, db, traceStore, false, appOpts, baseapp.SetChainID(ChainID)) + ethermintApp = evmd.NewEthermintApp(logger, db, traceStore, false, appOpts, baseapp.SetChainID(ChainID)) if err := ethermintApp.LoadHeight(height); err != nil { return servertypes.ExportedApp{}, err } } else { - ethermintApp = app.NewEthermintApp(logger, db, traceStore, true, appOpts, baseapp.SetChainID(ChainID)) + ethermintApp = evmd.NewEthermintApp(logger, db, traceStore, true, appOpts, baseapp.SetChainID(ChainID)) } return ethermintApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs, modulesToExport) diff --git a/codecov.yml b/codecov.yml index 1b5ac5d3a1..47a3ea7590 100644 --- a/codecov.yml +++ b/codecov.yml @@ -16,7 +16,7 @@ coverage: app: target: 70% flags: - - app + - evmd modules: target: 70% flags: @@ -38,7 +38,7 @@ comment: flags: app: paths: - - "app/" + - "evmd/" modules: paths: - "x/" diff --git a/default.nix b/default.nix index 1798680f85..b6627da98b 100644 --- a/default.nix +++ b/default.nix @@ -17,7 +17,7 @@ in buildGoApplication rec { inherit pname version tags ldflags; src = lib.sourceByRegex ./. [ - "^(x|ante|app|cmd|client|server|crypto|rpc|types|encoding|ethereum|indexer|testutil|version|store|go.mod|go.sum|gomod2nix.toml)($|/.*)" + "^(x|ante|evmd|cmd|client|server|crypto|rpc|types|encoding|ethereum|indexer|testutil|version|store|go.mod|go.sum|gomod2nix.toml)($|/.*)" "^tests(/.*[.]go)?$" ]; modules = ./gomod2nix.toml; diff --git a/app/ante/ante.go b/evmd/ante/ante.go similarity index 100% rename from app/ante/ante.go rename to evmd/ante/ante.go diff --git a/app/ante/ante_test.go b/evmd/ante/ante_test.go similarity index 99% rename from app/ante/ante_test.go rename to evmd/ante/ante_test.go index ee5195324e..45bcad9e93 100644 --- a/app/ante/ante_test.go +++ b/evmd/ante/ante_test.go @@ -27,8 +27,8 @@ import ( "github.com/ethereum/go-ethereum/core/types" ethparams "github.com/ethereum/go-ethereum/params" - "github.com/evmos/ethermint/app/ante" "github.com/evmos/ethermint/crypto/ethsecp256k1" + "github.com/evmos/ethermint/evmd/ante" "github.com/evmos/ethermint/tests" "github.com/evmos/ethermint/testutil" evmtypes "github.com/evmos/ethermint/x/evm/types" diff --git a/app/ante/authz_test.go b/evmd/ante/authz_test.go similarity index 100% rename from app/ante/authz_test.go rename to evmd/ante/authz_test.go diff --git a/app/ante/eth_test.go b/evmd/ante/eth_test.go similarity index 100% rename from app/ante/eth_test.go rename to evmd/ante/eth_test.go diff --git a/app/ante/evm_handler.go b/evmd/ante/evm_handler.go similarity index 100% rename from app/ante/evm_handler.go rename to evmd/ante/evm_handler.go diff --git a/app/ante/handler_options.go b/evmd/ante/handler_options.go similarity index 100% rename from app/ante/handler_options.go rename to evmd/ante/handler_options.go diff --git a/app/ante/min_gas_price_test.go b/evmd/ante/min_gas_price_test.go similarity index 100% rename from app/ante/min_gas_price_test.go rename to evmd/ante/min_gas_price_test.go diff --git a/app/ante/setup_test.go b/evmd/ante/setup_test.go similarity index 100% rename from app/ante/setup_test.go rename to evmd/ante/setup_test.go diff --git a/app/ante/signverify_test.go b/evmd/ante/signverify_test.go similarity index 100% rename from app/ante/signverify_test.go rename to evmd/ante/signverify_test.go diff --git a/app/ante/sigs_test.go b/evmd/ante/sigs_test.go similarity index 100% rename from app/ante/sigs_test.go rename to evmd/ante/sigs_test.go diff --git a/app/ante/tx_listener.go b/evmd/ante/tx_listener.go similarity index 100% rename from app/ante/tx_listener.go rename to evmd/ante/tx_listener.go diff --git a/app/ante/utils_test.go b/evmd/ante/utils_test.go similarity index 99% rename from app/ante/utils_test.go rename to evmd/ante/utils_test.go index 4cfae9ed6c..f4f7f75d82 100644 --- a/app/ante/utils_test.go +++ b/evmd/ante/utils_test.go @@ -15,8 +15,8 @@ import ( signingv1beta1 "cosmossdk.io/api/cosmos/tx/signing/v1beta1" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/evmos/ethermint/app" "github.com/evmos/ethermint/ethereum/eip712" + "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/testutil" "github.com/evmos/ethermint/testutil/config" utiltx "github.com/evmos/ethermint/testutil/tx" @@ -48,7 +48,7 @@ import ( vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - ante "github.com/evmos/ethermint/app/ante" + ante "github.com/evmos/ethermint/evmd/ante" "github.com/evmos/ethermint/tests" "github.com/evmos/ethermint/x/evm/statedb" evmtypes "github.com/evmos/ethermint/x/evm/types" @@ -59,7 +59,7 @@ type AnteTestSuite struct { suite.Suite ctx sdk.Context - app *app.EthermintApp + app *evmd.EthermintApp clientCtx client.Context anteHandler sdk.AnteHandler priv cryptotypes.PrivKey @@ -83,7 +83,7 @@ func (suite *AnteTestSuite) SetupTest() { suite.Require().NoError(err) suite.priv = priv - suite.app = testutil.Setup(checkTx, func(app *app.EthermintApp, genesis app.GenesisState) app.GenesisState { + suite.app = testutil.Setup(checkTx, func(app *evmd.EthermintApp, genesis evmd.GenesisState) evmd.GenesisState { if suite.enableFeemarket { // setup feemarketGenesis params feemarketGenesis := feemarkettypes.DefaultGenesisState() diff --git a/app/app.go b/evmd/app.go similarity index 99% rename from app/app.go rename to evmd/app.go index 4b6a3be8bb..515a37e24d 100644 --- a/app/app.go +++ b/evmd/app.go @@ -13,7 +13,7 @@ // // You should have received a copy of the GNU Lesser General Public License // along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE -package app +package evmd import ( "encoding/json" @@ -129,9 +129,9 @@ import ( "github.com/evmos/ethermint/client/docs" - "github.com/evmos/ethermint/app/ante" "github.com/evmos/ethermint/encoding" "github.com/evmos/ethermint/ethereum/eip712" + "github.com/evmos/ethermint/evmd/ante" srvconfig "github.com/evmos/ethermint/server/config" srvflags "github.com/evmos/ethermint/server/flags" ethermint "github.com/evmos/ethermint/types" diff --git a/app/app_test.go b/evmd/app_test.go similarity index 82% rename from app/app_test.go rename to evmd/app_test.go index 8b98589ba2..c8cd9edd35 100644 --- a/app/app_test.go +++ b/evmd/app_test.go @@ -1,10 +1,10 @@ -package app_test +package evmd_test import ( "os" "testing" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/testutil" "github.com/stretchr/testify/require" @@ -21,12 +21,12 @@ func TestEthermintAppExport(t *testing.T) { ethApp.Commit() // Making a new app object with the db, so that initchain hasn't been called - ethApp2 := app.NewEthermintApp( + ethApp2 := evmd.NewEthermintApp( log.NewLogger(os.Stdout), db, nil, true, - simtestutil.NewAppOptionsWithFlagHome(app.DefaultNodeHome), + simtestutil.NewAppOptionsWithFlagHome(evmd.DefaultNodeHome), baseapp.SetChainID(testutil.ChainID), ) _, err := ethApp2.ExportAppStateAndValidators(false, []string{}, []string{}) diff --git a/app/benchmark_test.go b/evmd/benchmark_test.go similarity index 77% rename from app/benchmark_test.go rename to evmd/benchmark_test.go index 07b6d5bac1..e81db7ab03 100644 --- a/app/benchmark_test.go +++ b/evmd/benchmark_test.go @@ -1,4 +1,4 @@ -package app_test +package evmd_test import ( "encoding/json" @@ -10,18 +10,18 @@ import ( dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/testutil" ) func BenchmarkEthermintApp_ExportAppStateAndValidators(b *testing.B) { db := dbm.NewMemDB() - app1 := app.NewEthermintApp( + app1 := evmd.NewEthermintApp( log.NewLogger(io.Discard), db, nil, true, - simtestutil.NewAppOptionsWithFlagHome(app.DefaultNodeHome), + simtestutil.NewAppOptionsWithFlagHome(evmd.DefaultNodeHome), baseapp.SetChainID(testutil.ChainID), ) @@ -44,13 +44,13 @@ func BenchmarkEthermintApp_ExportAppStateAndValidators(b *testing.B) { b.ResetTimer() b.ReportAllocs() for i := 0; i < b.N; i++ { - // Making a new app object with the db, so that initchain hasn't been called - app2 := app.NewEthermintApp( + // Making a new evmd object with the db, so that initchain hasn't been called + app2 := evmd.NewEthermintApp( log.NewLogger(io.Discard), db, nil, true, - simtestutil.NewAppOptionsWithFlagHome(app.DefaultNodeHome), + simtestutil.NewAppOptionsWithFlagHome(evmd.DefaultNodeHome), baseapp.SetChainID(testutil.ChainID), ) if _, err := app2.ExportAppStateAndValidators(false, []string{}, []string{}); err != nil { diff --git a/app/executor.go b/evmd/executor.go similarity index 99% rename from app/executor.go rename to evmd/executor.go index 0e06cb8387..fea1180932 100644 --- a/app/executor.go +++ b/evmd/executor.go @@ -1,4 +1,4 @@ -package app +package evmd import ( "context" diff --git a/app/export.go b/evmd/export.go similarity index 99% rename from app/export.go rename to evmd/export.go index 08757cc758..c53302b697 100644 --- a/app/export.go +++ b/evmd/export.go @@ -13,7 +13,7 @@ // // You should have received a copy of the GNU Lesser General Public License // along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE -package app +package evmd import ( "encoding/json" diff --git a/app/signer.go b/evmd/signer.go similarity index 99% rename from app/signer.go rename to evmd/signer.go index c55b1a84a3..05902c93b1 100644 --- a/app/signer.go +++ b/evmd/signer.go @@ -1,4 +1,4 @@ -package app +package evmd import ( sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/app/simulation_test.go b/evmd/simulation_test.go similarity index 97% rename from app/simulation_test.go rename to evmd/simulation_test.go index b07c2cb45c..3707f5ce7d 100644 --- a/app/simulation_test.go +++ b/evmd/simulation_test.go @@ -1,4 +1,4 @@ -package app_test +package evmd_test // TODO: COsmos SDK fix for the simulator issue for custom keys import ( @@ -38,8 +38,8 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ibctransfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" - "github.com/evmos/ethermint/app" - "github.com/evmos/ethermint/app/ante" + "github.com/evmos/ethermint/evmd" + "github.com/evmos/ethermint/evmd/ante" "github.com/evmos/ethermint/testutil" ) @@ -66,11 +66,11 @@ func fauxMerkleModeOpt(bapp *baseapp.BaseApp) { } // NewSimApp disable feemarket on native tx, otherwise the cosmos-sdk simulation tests will fail. -func NewSimApp(logger log.Logger, db dbm.DB, baseAppOptions ...func(*baseapp.BaseApp)) (*app.EthermintApp, error) { +func NewSimApp(logger log.Logger, db dbm.DB, baseAppOptions ...func(*baseapp.BaseApp)) (*evmd.EthermintApp, error) { appOptions := make(simtestutil.AppOptionsMap, 0) - appOptions[flags.FlagHome] = app.DefaultNodeHome + appOptions[flags.FlagHome] = evmd.DefaultNodeHome appOptions[server.FlagInvCheckPeriod] = simcli.FlagPeriodValue - app := app.NewEthermintApp(logger, db, nil, false, appOptions, baseAppOptions...) + app := evmd.NewEthermintApp(logger, db, nil, false, appOptions, baseAppOptions...) // disable feemarket on native tx anteHandler, err := ante.NewAnteHandler(ante.HandlerOptions{ AccountKeeper: app.AccountKeeper, @@ -204,7 +204,7 @@ func TestAppImportExport(t *testing.T) { require.Equal(t, appName, newApp.Name()) require.NoError(t, err) - var genesisState app.GenesisState + var genesisState evmd.GenesisState err = json.Unmarshal(exported.AppState, &genesisState) require.NoError(t, err) diff --git a/app/upgrades.go b/evmd/upgrades.go similarity index 99% rename from app/upgrades.go rename to evmd/upgrades.go index bc1f660a43..cdadcb6c5d 100644 --- a/app/upgrades.go +++ b/evmd/upgrades.go @@ -13,7 +13,7 @@ // // You should have received a copy of the GNU Lesser General Public License // along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE -package app +package evmd import ( "context" diff --git a/server/json_rpc.go b/server/json_rpc.go index 326353c049..6efaec44c6 100644 --- a/server/json_rpc.go +++ b/server/json_rpc.go @@ -30,7 +30,7 @@ import ( "github.com/cosmos/cosmos-sdk/server" ethlog "github.com/ethereum/go-ethereum/log" ethrpc "github.com/ethereum/go-ethereum/rpc" - "github.com/evmos/ethermint/app/ante" + "github.com/evmos/ethermint/evmd/ante" "github.com/evmos/ethermint/rpc" "github.com/evmos/ethermint/rpc/stream" rpctypes "github.com/evmos/ethermint/rpc/types" diff --git a/tests/importer/importer_test.go b/tests/importer/importer_test.go index 0d22f641fc..9f04408879 100644 --- a/tests/importer/importer_test.go +++ b/tests/importer/importer_test.go @@ -10,7 +10,7 @@ import ( "time" sdkmath "cosmossdk.io/math" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/testutil" "github.com/stretchr/testify/require" @@ -54,7 +54,7 @@ func init() { type ImporterTestSuite struct { suite.Suite - app *app.EthermintApp + app *evmd.EthermintApp ctx sdk.Context } diff --git a/tests/integration_tests/configs/broken-ethermintd.patch b/tests/integration_tests/configs/broken-ethermintd.patch index 20a9a9c283..d209066e6e 100644 --- a/tests/integration_tests/configs/broken-ethermintd.patch +++ b/tests/integration_tests/configs/broken-ethermintd.patch @@ -1,7 +1,7 @@ -diff --git a/app/app.go b/app/app.go +diff --git a/evmd/app.go b/evmd/app.go index d19a465d..f0e63d30 100644 ---- a/app/app.go -+++ b/app/app.go +--- a/evmd/app.go ++++ b/evmd/app.go @@ -861,6 +861,10 @@ func (app *EthermintApp) BeginBlocker(ctx sdk.Context) (sdk.BeginBlock, error) { // EndBlocker updates every end block diff --git a/testutil/abci.go b/testutil/abci.go index 05ee76170c..72eeb60405 100644 --- a/testutil/abci.go +++ b/testutil/abci.go @@ -7,7 +7,7 @@ import ( cmttypes "github.com/cometbft/cometbft/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" ) // Commit commits a block at a given time. Reminder: At the end of each @@ -16,7 +16,7 @@ import ( // 2. DeliverTx // 3. EndBlock // 4. Commit -func Commit(ctx sdk.Context, app *app.EthermintApp, t time.Duration, vs *cmttypes.ValidatorSet) (sdk.Context, error) { +func Commit(ctx sdk.Context, app *evmd.EthermintApp, t time.Duration, vs *cmttypes.ValidatorSet) (sdk.Context, error) { header := ctx.BlockHeader() req := abci.RequestFinalizeBlock{Height: header.Height} diff --git a/testutil/app.go b/testutil/app.go index f581651a29..61178f09fa 100644 --- a/testutil/app.go +++ b/testutil/app.go @@ -23,8 +23,8 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" - "github.com/evmos/ethermint/app" "github.com/evmos/ethermint/crypto/ethsecp256k1" + "github.com/evmos/ethermint/evmd" ethermint "github.com/evmos/ethermint/types" evmtypes "github.com/evmos/ethermint/x/evm/types" ) @@ -49,37 +49,37 @@ var DefaultConsensusParams = &cmtproto.ConsensusParams{ } // Setup initializes a new EthermintApp. A Nop logger is set in EthermintApp. -func Setup(isCheckTx bool, patch func(*app.EthermintApp, app.GenesisState) app.GenesisState) *app.EthermintApp { +func Setup(isCheckTx bool, patch func(*evmd.EthermintApp, evmd.GenesisState) evmd.GenesisState) *evmd.EthermintApp { return SetupWithDB(isCheckTx, patch, dbm.NewMemDB()) } func SetupWithOpts( isCheckTx bool, - patch func(*app.EthermintApp, app.GenesisState) app.GenesisState, + patch func(*evmd.EthermintApp, evmd.GenesisState) evmd.GenesisState, appOptions simtestutil.AppOptionsMap, -) *app.EthermintApp { +) *evmd.EthermintApp { return SetupWithDBAndOpts(isCheckTx, patch, dbm.NewMemDB(), appOptions) } const ChainID = "ethermint_9000-1" -func SetupWithDB(isCheckTx bool, patch func(*app.EthermintApp, app.GenesisState) app.GenesisState, db dbm.DB) *app.EthermintApp { +func SetupWithDB(isCheckTx bool, patch func(*evmd.EthermintApp, evmd.GenesisState) evmd.GenesisState, db dbm.DB) *evmd.EthermintApp { return SetupWithDBAndOpts(isCheckTx, patch, db, nil) } // SetupWithDBAndOpts initializes a new EthermintApp. A Nop logger is set in EthermintApp. func SetupWithDBAndOpts( isCheckTx bool, - patch func(*app.EthermintApp, app.GenesisState) app.GenesisState, + patch func(*evmd.EthermintApp, evmd.GenesisState) evmd.GenesisState, db dbm.DB, appOptions simtestutil.AppOptionsMap, -) *app.EthermintApp { +) *evmd.EthermintApp { if appOptions == nil { appOptions = make(simtestutil.AppOptionsMap, 0) } appOptions[server.FlagInvCheckPeriod] = 5 - appOptions[flags.FlagHome] = app.DefaultNodeHome - app := app.NewEthermintApp(log.NewNopLogger(), + appOptions[flags.FlagHome] = evmd.DefaultNodeHome + app := evmd.NewEthermintApp(log.NewNopLogger(), db, nil, true, @@ -167,7 +167,7 @@ func RandomAccounts(r *rand.Rand, n int) []simtypes.Account { // StateFn returns the initial application state using a genesis or the simulation parameters. // It is a wrapper of simapp.AppStateFn to replace evm param EvmDenom with staking param BondDenom. -func StateFn(a *app.EthermintApp) simtypes.AppStateFn { +func StateFn(a *evmd.EthermintApp) simtypes.AppStateFn { var bondDenom string return simtestutil.AppStateFnWithExtendedCbs( a.AppCodec(), diff --git a/testutil/base_test_suite.go b/testutil/base_test_suite.go index ab74ece864..a711cc6fdc 100644 --- a/testutil/base_test_suite.go +++ b/testutil/base_test_suite.go @@ -29,8 +29,8 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" - "github.com/evmos/ethermint/app" "github.com/evmos/ethermint/crypto/ethsecp256k1" + "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/server/config" "github.com/evmos/ethermint/tests" ethermint "github.com/evmos/ethermint/types" @@ -45,7 +45,7 @@ type BaseTestSuite struct { suite.Suite Ctx sdk.Context - App *app.EthermintApp + App *evmd.EthermintApp } func (suite *BaseTestSuite) MintFeeCollectorVirtual(coins sdk.Coins) { @@ -78,14 +78,14 @@ func (suite *BaseTestSuite) SetupTest() { func (suite *BaseTestSuite) SetupTestWithCb( t require.TestingT, - patch func(*app.EthermintApp, app.GenesisState) app.GenesisState, + patch func(*evmd.EthermintApp, evmd.GenesisState) evmd.GenesisState, ) { suite.SetupTestWithCbAndOpts(t, patch, nil) } func (suite *BaseTestSuite) SetupTestWithCbAndOpts( _ require.TestingT, - patch func(*app.EthermintApp, app.GenesisState) app.GenesisState, + patch func(*evmd.EthermintApp, evmd.GenesisState) evmd.GenesisState, appOptions simtestutil.AppOptionsMap, ) { checkTx := false @@ -116,14 +116,14 @@ func (suite *BaseTestSuiteWithAccount) SetupTest(t require.TestingT) { func (suite *BaseTestSuiteWithAccount) SetupTestWithCb( t require.TestingT, - patch func(*app.EthermintApp, app.GenesisState) app.GenesisState, + patch func(*evmd.EthermintApp, evmd.GenesisState) evmd.GenesisState, ) { suite.SetupTestWithCbAndOpts(t, patch, nil) } func (suite *BaseTestSuiteWithAccount) SetupTestWithCbAndOpts( t require.TestingT, - patch func(*app.EthermintApp, app.GenesisState) app.GenesisState, + patch func(*evmd.EthermintApp, evmd.GenesisState) evmd.GenesisState, appOptions simtestutil.AppOptionsMap, ) { suite.SetupAccount(t) @@ -299,7 +299,7 @@ func (suite *BaseTestSuiteWithFeeMarketQueryClient) SetupTest() { func (suite *BaseTestSuiteWithFeeMarketQueryClient) SetupTestWithCb( t require.TestingT, - patch func(*app.EthermintApp, app.GenesisState) app.GenesisState, + patch func(*evmd.EthermintApp, evmd.GenesisState) evmd.GenesisState, ) { suite.BaseTestSuite.SetupTestWithCb(t, patch) suite.Setup(&suite.BaseTestSuite) @@ -316,7 +316,7 @@ func (suite *EVMTestSuiteWithAccountAndQueryClient) SetupTest(t require.TestingT func (suite *EVMTestSuiteWithAccountAndQueryClient) SetupTestWithCb( t require.TestingT, - patch func(*app.EthermintApp, app.GenesisState) app.GenesisState, + patch func(*evmd.EthermintApp, evmd.GenesisState) evmd.GenesisState, ) { suite.BaseTestSuiteWithAccount.SetupTestWithCb(t, patch) suite.Setup(&suite.BaseTestSuite) @@ -395,7 +395,7 @@ func (suite *EVMTestSuiteWithAccountAndQueryClient) EvmDenom() string { } // NewTestGenesisState generate genesis state with single validator -func NewTestGenesisState(codec codec.Codec, genesisState map[string]json.RawMessage) app.GenesisState { +func NewTestGenesisState(codec codec.Codec, genesisState map[string]json.RawMessage) evmd.GenesisState { privVal := mock.NewPV() pubKey, err := privVal.GetPubKey() if err != nil { @@ -415,10 +415,10 @@ func NewTestGenesisState(codec codec.Codec, genesisState map[string]json.RawMess return genesisStateWithValSet(codec, genesisState, valSet, []authtypes.GenesisAccount{acc}, balance) } -func genesisStateWithValSet(codec codec.Codec, genesisState app.GenesisState, +func genesisStateWithValSet(codec codec.Codec, genesisState evmd.GenesisState, valSet *tmtypes.ValidatorSet, genAccs []authtypes.GenesisAccount, balances ...banktypes.Balance, -) app.GenesisState { +) evmd.GenesisState { // set genesis accounts authGenesis := authtypes.NewGenesisState(authtypes.DefaultParams(), genAccs) genesisState[authtypes.ModuleName] = codec.MustMarshalJSON(authGenesis) diff --git a/testutil/network/network.go b/testutil/network/network.go index 08652cb6e4..e7cb0372cc 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -70,7 +70,7 @@ import ( evmtypes "github.com/evmos/ethermint/x/evm/types" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" ) // network lock to only allow one test network at a time @@ -86,7 +86,7 @@ type AppConstructor = func(val Validator) servertypes.Application // NewAppConstructor returns a new simapp AppConstructor func NewAppConstructor(chainID string) AppConstructor { return func(val Validator) servertypes.Application { - return app.NewEthermintApp( + return evmd.NewEthermintApp( val.Ctx.Logger, dbm.NewMemDB(), nil, @@ -108,25 +108,25 @@ type Config struct { InterfaceRegistry codectypes.InterfaceRegistry TxConfig client.TxConfig AccountRetriever client.AccountRetriever - AppConstructor AppConstructor // the ABCI application constructor - GenesisState app.GenesisState // custom gensis state to provide - TimeoutCommit time.Duration // the consensus commitment timeout - AccountTokens sdkmath.Int // the amount of unique validator tokens (e.g. 1000node0) - StakingTokens sdkmath.Int // the amount of tokens each validator has available to stake - BondedTokens sdkmath.Int // the amount of tokens each validator stakes - NumValidators int // the total number of validators to create and bond - ChainID string // the network chain-id - BondDenom string // the staking bond denomination - MinGasPrices string // the minimum gas prices each validator will accept - PruningStrategy string // the pruning strategy each validator will have - SigningAlgo string // signing algorithm for keys - RPCAddress string // RPC listen address (including port) - JSONRPCAddress string // JSON-RPC listen address (including port) - APIAddress string // REST API listen address (including port) - GRPCAddress string // GRPC server listen address (including port) - EnableTMLogging bool // enable Tendermint logging to STDOUT - CleanupDir bool // remove base temporary directory during cleanup - PrintMnemonic bool // print the mnemonic of first validator as log output for testing + AppConstructor AppConstructor // the ABCI application constructor + GenesisState evmd.GenesisState // custom gensis state to provide + TimeoutCommit time.Duration // the consensus commitment timeout + AccountTokens sdkmath.Int // the amount of unique validator tokens (e.g. 1000node0) + StakingTokens sdkmath.Int // the amount of tokens each validator has available to stake + BondedTokens sdkmath.Int // the amount of tokens each validator stakes + NumValidators int // the total number of validators to create and bond + ChainID string // the network chain-id + BondDenom string // the staking bond denomination + MinGasPrices string // the minimum gas prices each validator will accept + PruningStrategy string // the pruning strategy each validator will have + SigningAlgo string // signing algorithm for keys + RPCAddress string // RPC listen address (including port) + JSONRPCAddress string // JSON-RPC listen address (including port) + APIAddress string // REST API listen address (including port) + GRPCAddress string // GRPC server listen address (including port) + EnableTMLogging bool // enable Tendermint logging to STDOUT + CleanupDir bool // remove base temporary directory during cleanup + PrintMnemonic bool // print the mnemonic of first validator as log output for testing } // DefaultConfig returns a sane default configuration suitable for nearly all diff --git a/testutil/tx/cosmos.go b/testutil/tx/cosmos.go index 43f9d51191..4536e63e8d 100644 --- a/testutil/tx/cosmos.go +++ b/testutil/tx/cosmos.go @@ -25,7 +25,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/tx/signing" authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" evmtypes "github.com/evmos/ethermint/x/evm/types" ) @@ -58,7 +58,7 @@ type CosmosTxArgs struct { // It returns the signed transaction and an error func PrepareCosmosTx( ctx sdk.Context, - appEthermint *app.EthermintApp, + appEthermint *evmd.EthermintApp, args CosmosTxArgs, ) (authsigning.Tx, error) { txBuilder := args.TxCfg.NewTxBuilder() @@ -92,7 +92,7 @@ func PrepareCosmosTx( // the provided private key func signCosmosTx( ctx sdk.Context, - appEthermint *app.EthermintApp, + appEthermint *evmd.EthermintApp, args CosmosTxArgs, txBuilder client.TxBuilder, ) (authsigning.Tx, error) { diff --git a/testutil/tx/eip712.go b/testutil/tx/eip712.go index ef158dd8b8..26e79dac5c 100644 --- a/testutil/tx/eip712.go +++ b/testutil/tx/eip712.go @@ -37,7 +37,7 @@ import ( "github.com/evmos/ethermint/types" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" ) type EIP712TxArgs struct { @@ -70,7 +70,7 @@ type signatureV2Args struct { // It returns the signed transaction and an error func CreateEIP712CosmosTx( ctx sdk.Context, - appEthermint *app.EthermintApp, + appEthermint *evmd.EthermintApp, args EIP712TxArgs, ) (sdk.Tx, error) { builder, err := PrepareEIP712CosmosTx( @@ -86,7 +86,7 @@ func CreateEIP712CosmosTx( // It returns the tx builder with the signed transaction and an error func PrepareEIP712CosmosTx( ctx sdk.Context, - appEthermint *app.EthermintApp, + appEthermint *evmd.EthermintApp, args EIP712TxArgs, ) (client.TxBuilder, error) { txArgs := args.CosmosTxArgs @@ -179,7 +179,7 @@ func createTypedData(args typedDataArgs, useLegacy bool) (apitypes.TypedData, er // the provided private key and the typed data func signCosmosEIP712Tx( ctx sdk.Context, - appEvmos *app.EthermintApp, + appEvmos *evmd.EthermintApp, args EIP712TxArgs, builder authtx.ExtensionOptionsTxBuilder, chainID uint64, diff --git a/x/evm/handler_test.go b/x/evm/handler_test.go index d361c106e1..e0dc65f7da 100644 --- a/x/evm/handler_test.go +++ b/x/evm/handler_test.go @@ -23,7 +23,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm/types" ) @@ -43,7 +43,7 @@ func (suite *HandlerTestSuite) SetupTest() { coins := sdk.NewCoins(sdk.NewCoin(types.DefaultEVMDenom, sdkmath.NewInt(100000000000000))) t := suite.T() - suite.SetupTestWithCb(t, func(app *app.EthermintApp, genesis app.GenesisState) app.GenesisState { + suite.SetupTestWithCb(t, func(app *evmd.EthermintApp, genesis evmd.GenesisState) evmd.GenesisState { b32address := sdk.MustBech32ifyAddressBytes(sdk.GetConfig().GetBech32AccountAddrPrefix(), suite.ConsPubKey.Address().Bytes()) balances := []banktypes.Balance{ { diff --git a/x/evm/keeper/grpc_query_test.go b/x/evm/keeper/grpc_query_test.go index 9e6cb6cf74..9bd29afc85 100644 --- a/x/evm/keeper/grpc_query_test.go +++ b/x/evm/keeper/grpc_query_test.go @@ -16,7 +16,7 @@ import ( "github.com/ethereum/go-ethereum/crypto" ethlogger "github.com/ethereum/go-ethereum/eth/tracers/logger" ethparams "github.com/ethereum/go-ethereum/params" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/server/config" "github.com/evmos/ethermint/tests" "github.com/evmos/ethermint/testutil" @@ -39,7 +39,7 @@ type GRPCServerTestSuiteSuite struct { } func (suite *GRPCServerTestSuiteSuite) SetupTest() { - suite.EVMTestSuiteWithAccountAndQueryClient.SetupTestWithCb(suite.T(), func(app *app.EthermintApp, genesis app.GenesisState) app.GenesisState { + suite.EVMTestSuiteWithAccountAndQueryClient.SetupTestWithCb(suite.T(), func(app *evmd.EthermintApp, genesis evmd.GenesisState) evmd.GenesisState { feemarketGenesis := feemarkettypes.DefaultGenesisState() if suite.enableFeemarket { feemarketGenesis.Params.EnableHeight = 1 diff --git a/x/evm/keeper/integration_test.go b/x/evm/keeper/integration_test.go index baac6ce588..98c7689b4e 100644 --- a/x/evm/keeper/integration_test.go +++ b/x/evm/keeper/integration_test.go @@ -13,7 +13,7 @@ import ( simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" ethtypes "github.com/ethereum/go-ethereum/core/types" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/tests" "github.com/evmos/ethermint/testutil" @@ -130,7 +130,7 @@ func setupTest(minGasPrice sdkmath.LegacyDec, baseFee *big.Int) { t := s.T() s.SetupTestWithCbAndOpts( t, - func(app *app.EthermintApp, genesis app.GenesisState) app.GenesisState { + func(app *evmd.EthermintApp, genesis evmd.GenesisState) evmd.GenesisState { feemarketGenesis := feemarkettypes.DefaultGenesisState() feemarketGenesis.Params.NoBaseFee = true genesis[feemarkettypes.ModuleName] = app.AppCodec().MustMarshalJSON(feemarketGenesis) diff --git a/x/evm/keeper/keeper_test.go b/x/evm/keeper/keeper_test.go index ff1fbeb958..07180416ca 100644 --- a/x/evm/keeper/keeper_test.go +++ b/x/evm/keeper/keeper_test.go @@ -14,8 +14,8 @@ import ( "github.com/evmos/ethermint/testutil" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" - "github.com/evmos/ethermint/app" "github.com/evmos/ethermint/encoding" + "github.com/evmos/ethermint/evmd" ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm/statedb" "github.com/evmos/ethermint/x/evm/types" @@ -43,7 +43,7 @@ func TestKeeperTestSuite(t *testing.T) { } func (suite *KeeperTestSuite) SetupTest() { - suite.EVMTestSuiteWithAccountAndQueryClient.SetupTestWithCb(suite.T(), func(app *app.EthermintApp, genesis app.GenesisState) app.GenesisState { + suite.EVMTestSuiteWithAccountAndQueryClient.SetupTestWithCb(suite.T(), func(app *evmd.EthermintApp, genesis evmd.GenesisState) evmd.GenesisState { feemarketGenesis := feemarkettypes.DefaultGenesisState() if suite.enableFeemarket { feemarketGenesis.Params.EnableHeight = 1 diff --git a/x/evm/keeper/state_transition_benchmark_test.go b/x/evm/keeper/state_transition_benchmark_test.go index f8e3a4e6d2..ccef2f181d 100644 --- a/x/evm/keeper/state_transition_benchmark_test.go +++ b/x/evm/keeper/state_transition_benchmark_test.go @@ -14,7 +14,7 @@ import ( "github.com/ethereum/go-ethereum/core" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/params" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/testutil" evmtypes "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" @@ -28,7 +28,7 @@ type StateTransitionBenchmarkTestSuite struct { } func (suite *StateTransitionBenchmarkTestSuite) SetupTest(b *testing.B) { - suite.BaseTestSuiteWithAccount.SetupTestWithCb(b, func(app *app.EthermintApp, genesis app.GenesisState) app.GenesisState { + suite.BaseTestSuiteWithAccount.SetupTestWithCb(b, func(app *evmd.EthermintApp, genesis evmd.GenesisState) evmd.GenesisState { feemarketGenesis := feemarkettypes.DefaultGenesisState() if suite.enableFeemarket { feemarketGenesis.Params.EnableHeight = 1 diff --git a/x/evm/keeper/state_transition_test.go b/x/evm/keeper/state_transition_test.go index 01c8278c02..907ee5caee 100644 --- a/x/evm/keeper/state_transition_test.go +++ b/x/evm/keeper/state_transition_test.go @@ -25,7 +25,7 @@ import ( ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/params" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/tests" "github.com/evmos/ethermint/testutil" utiltx "github.com/evmos/ethermint/testutil/tx" @@ -48,7 +48,7 @@ func (suite *StateTransitionTestSuite) SetupTest() { coins := sdk.NewCoins(sdk.NewCoin(types.DefaultEVMDenom, sdkmath.NewInt(int64(params.TxGas)-1))) t := suite.T() - suite.SetupTestWithCb(t, func(a *app.EthermintApp, genesis app.GenesisState) app.GenesisState { + suite.SetupTestWithCb(t, func(a *evmd.EthermintApp, genesis evmd.GenesisState) evmd.GenesisState { feemarketGenesis := feemarkettypes.DefaultGenesisState() feemarketGenesis.Params.NoBaseFee = true genesis[feemarkettypes.ModuleName] = a.AppCodec().MustMarshalJSON(feemarketGenesis) diff --git a/x/evm/keeper/utils_test.go b/x/evm/keeper/utils_test.go index d2199f6bfa..1fd066d961 100644 --- a/x/evm/keeper/utils_test.go +++ b/x/evm/keeper/utils_test.go @@ -9,7 +9,7 @@ import ( "github.com/ethereum/go-ethereum/common" ethtypes "github.com/ethereum/go-ethereum/core/types" ethparams "github.com/ethereum/go-ethereum/params" - "github.com/evmos/ethermint/app" + "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/testutil" "github.com/evmos/ethermint/x/evm/keeper" evmtypes "github.com/evmos/ethermint/x/evm/types" @@ -30,7 +30,7 @@ func TestUtilsTestSuite(t *testing.T) { func (suite *UtilsTestSuite) SetupTest() { t := suite.T() - suite.BaseTestSuiteWithAccount.SetupTestWithCb(t, func(app *app.EthermintApp, genesis app.GenesisState) app.GenesisState { + suite.BaseTestSuiteWithAccount.SetupTestWithCb(t, func(app *evmd.EthermintApp, genesis evmd.GenesisState) evmd.GenesisState { feemarketGenesis := feemarkettypes.DefaultGenesisState() if suite.enableFeemarket { feemarketGenesis.Params.EnableHeight = 1 From 59fc19132d9e40bf559e60d4ed4001d85daf8dc2 Mon Sep 17 00:00:00 2001 From: "Thomas N." <81727899+thomas-nguy@users.noreply.github.com> Date: Mon, 14 Jul 2025 20:54:41 +0900 Subject: [PATCH 112/210] feat: add gas cap for grpc eth_call (#666) * Problem: no max gas cap for grpc eth_call (#586) * add max gas cap in eth_call * move logic * add changelog --- CHANGELOG.md | 5 +++-- x/evm/types/tx_args.go | 11 +++++----- x/evm/types/tx_args_test.go | 43 +++++++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91e8498220..63d2b2f5e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,8 +39,9 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features -* (evm) [#649](https://github.com/crypto-org-chain/ethermint/pull/661) chore: rename app to evmd -* (evm) [#649](https://github.com/crypto-org-chain/ethermint/pull/649) chore: move app/ante to ante +* (evm) [#666](https://github.com/crypto-org-chain/ethermint/pull/666) feat: add gas cap for grpc eth_call. +* (evm) [#649](https://github.com/crypto-org-chain/ethermint/pull/661) chore: rename app to evmd. +* (evm) [#649](https://github.com/crypto-org-chain/ethermint/pull/649) chore: move app/ante to ante. * (rpc) [#657](https://github.com/crypto-org-chain/ethermint/pull/659) Sanity checks for TraceTx and TraceCall. * (rpc) [#638](https://github.com/crypto-org-chain/ethermint/pull/638) Add support for eth_getBlockReceipts. * (evm) [#414](https://github.com/crypto-org-chain/ethermint/pull/414) Integrate go-block-stm for parallel tx execution. diff --git a/x/evm/types/tx_args.go b/x/evm/types/tx_args.go index dd7b6475e4..a97b6f73c3 100644 --- a/x/evm/types/tx_args.go +++ b/x/evm/types/tx_args.go @@ -135,18 +135,17 @@ func (args *TransactionArgs) ToMessage(globalGasCap uint64, baseFee *big.Int) (* // Set sender address or use zero address if none specified. addr := args.GetFrom() - + // Ethereum block size is ~36000000, we limit this value to protect against DOS + MaxGasCap := uint64(100000000) // Set default gas & gas price if none were set - gas := globalGasCap - if gas == 0 { - gas = uint64(math.MaxUint64 / 2) - } - if args.Gas != nil { + gas := MaxGasCap + if args.Gas != nil && uint64(*args.Gas) < MaxGasCap { gas = uint64(*args.Gas) } if globalGasCap != 0 && globalGasCap < gas { gas = globalGasCap } + var ( gasPrice *big.Int gasFeeCap *big.Int diff --git a/x/evm/types/tx_args_test.go b/x/evm/types/tx_args_test.go index 9e8c20aa0b..fc97682b86 100644 --- a/x/evm/types/tx_args_test.go +++ b/x/evm/types/tx_args_test.go @@ -2,6 +2,7 @@ package types import ( "fmt" + "math" "math/big" "github.com/ethereum/go-ethereum/common" @@ -286,3 +287,45 @@ func (suite *TxDataTestSuite) TestGetData() { suite.Require().Equal(retrievedData, tc.expectedOutput) } } + +func (suite *TxDataTestSuite) TestMaxGasCap() { + testCases := []struct { + name string + globalGasCap uint64 + txArgs TransactionArgs + expectedOutput uint64 + }{ + { + "globalGasCap is below limit", + 25000000, + TransactionArgs{ + Gas: nil, + Input: nil, + }, + 25000000, + }, + { + "globalGasCap is above limit", + math.MaxInt64, + TransactionArgs{ + Gas: nil, + Input: nil, + }, + 100000000, + }, + { + "globalGasCap is zero", + 0, + TransactionArgs{ + Gas: nil, + Input: nil, + }, + 100000000, + }, + } + for _, tc := range testCases { + res, err := tc.txArgs.ToMessage(tc.globalGasCap, nil) + suite.Require().Nil(err) + suite.Require().Equal(res.GasLimit, tc.expectedOutput) + } +} From e9f3684cf26796d099f7ac128704c6eebded173a Mon Sep 17 00:00:00 2001 From: "Thomas N." <81727899+thomas-nguy@users.noreply.github.com> Date: Tue, 15 Jul 2025 19:39:11 +0900 Subject: [PATCH 113/210] fix(rpc): bug in header hash (#667) * Fix bugs in RPC utils (#178) * changelog * remove empty space --------- Co-authored-by: Not Jeremy Liu <31809888+NotJeremyLiu@users.noreply.github.com> --- CHANGELOG.md | 1 + rpc/types/utils.go | 2 +- rpc/websockets.go | 5 +---- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63d2b2f5e2..9301c0c808 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features +* (rpc) [#667](https://github.com/crypto-org-chain/ethermint/pull/667) fix: bug in header hash. * (evm) [#666](https://github.com/crypto-org-chain/ethermint/pull/666) feat: add gas cap for grpc eth_call. * (evm) [#649](https://github.com/crypto-org-chain/ethermint/pull/661) chore: rename app to evmd. * (evm) [#649](https://github.com/crypto-org-chain/ethermint/pull/649) chore: move app/ante to ante. diff --git a/rpc/types/utils.go b/rpc/types/utils.go index a8e5f21f14..21cbb6aad8 100644 --- a/rpc/types/utils.go +++ b/rpc/types/utils.go @@ -67,7 +67,7 @@ func RawTxToEthTx(clientCtx client.Context, txBz tmtypes.Tx) ([]*evmtypes.MsgEth // from a tendermint Header. func EthHeaderFromTendermint(header tmtypes.Header, bloom ethtypes.Bloom, baseFee *big.Int, miner sdk.AccAddress) *ethtypes.Header { txHash := ethtypes.EmptyRootHash - if len(header.DataHash) == 0 { + if len(header.DataHash) != 0 { txHash = common.BytesToHash(header.DataHash) } var ( diff --git a/rpc/websockets.go b/rpc/websockets.go index b4d34b2283..0bc2c3eead 100644 --- a/rpc/websockets.go +++ b/rpc/websockets.go @@ -22,7 +22,6 @@ import ( "fmt" "io" "math/big" - "net" "net/http" "strconv" "sync" @@ -90,10 +89,8 @@ func NewWebsocketsServer( ctx context.Context, clientCtx client.Context, logger log.Logger, stream *stream.RPCStream, cfg *config.Config, ) WebsocketsServer { logger = logger.With("api", "websocket-server") - _, port, _ := net.SplitHostPort(cfg.JSONRPC.Address) - return &websocketsServer{ - rpcAddr: "localhost:" + port, // FIXME: this shouldn't be hardcoded to localhost + rpcAddr: cfg.JSONRPC.Address, wsAddr: cfg.JSONRPC.WsAddress, certFile: cfg.TLS.CertificatePath, keyFile: cfg.TLS.KeyPath, From 400a2b088ed41e94c3deab844dfe69c33bddc52f Mon Sep 17 00:00:00 2001 From: songgaoye Date: Wed, 16 Jul 2025 18:04:00 +0800 Subject: [PATCH 114/210] test: fix newEthMsgTx (#669) --- CHANGELOG.md | 1 + x/evm/keeper/state_transition_benchmark_test.go | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9301c0c808..b7fe38baf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features +* (evm) [#669](https://github.com/crypto-org-chain/ethermint/pull/669) test: fix newEthMsgTx. * (rpc) [#667](https://github.com/crypto-org-chain/ethermint/pull/667) fix: bug in header hash. * (evm) [#666](https://github.com/crypto-org-chain/ethermint/pull/666) feat: add gas cap for grpc eth_call. * (evm) [#649](https://github.com/crypto-org-chain/ethermint/pull/661) chore: rename app to evmd. diff --git a/x/evm/keeper/state_transition_benchmark_test.go b/x/evm/keeper/state_transition_benchmark_test.go index ccef2f181d..218554a362 100644 --- a/x/evm/keeper/state_transition_benchmark_test.go +++ b/x/evm/keeper/state_transition_benchmark_test.go @@ -149,11 +149,11 @@ func newEthMsgTx( templateDynamicFeeTx.Nonce = nonce if data != nil { - templateAccessListTx.Data = data + templateDynamicFeeTx.Data = data } else { - templateAccessListTx.Data = []byte{} + templateDynamicFeeTx.Data = []byte{} } - templateAccessListTx.AccessList = accessList + templateDynamicFeeTx.AccessList = accessList ethTx = ethtypes.NewTx(templateDynamicFeeTx) baseFee = big.NewInt(3) default: From 0d4ddaa2d6c0a1de032835bbe91c3a067c320da4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Jul 2025 22:28:13 +0800 Subject: [PATCH 115/210] build(deps): bump alpine from 3.22.0 to 3.22.1 (#670) Bumps alpine from 3.22.0 to 3.22.1. --- updated-dependencies: - dependency-name: alpine dependency-version: 3.22.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b1268f1883..0b28ec67ca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ COPY . . RUN make build # Final image -FROM alpine:3.22.0 +FROM alpine:3.22.1 # Install ca-certificates RUN apk add --update ca-certificates jq From 727fb2375ac4ca4de887d4d576488d9092217552 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Jul 2025 21:46:37 +0800 Subject: [PATCH 116/210] build(deps): bump google.golang.org/grpc from 1.73.0 to 1.74.0 (#671) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.73.0 to 1.74.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.73.0...v1.74.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-version: 1.74.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 28 ++++++++++++++-------------- go.sum | 56 ++++++++++++++++++++++++++++---------------------------- 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/go.mod b/go.mod index 208ac1e80a..e12850f164 100644 --- a/go.mod +++ b/go.mod @@ -51,18 +51,18 @@ require ( golang.org/x/net v0.42.0 golang.org/x/sync v0.16.0 golang.org/x/text v0.27.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 - google.golang.org/grpc v1.73.0 + google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a + google.golang.org/grpc v1.74.0 google.golang.org/protobuf v1.36.6 sigs.k8s.io/yaml v1.5.0 ) require ( - cel.dev/expr v0.23.0 // indirect + cel.dev/expr v0.24.0 // indirect cloud.google.com/go v0.116.0 // indirect cloud.google.com/go/auth v0.14.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect - cloud.google.com/go/compute/metadata v0.6.0 // indirect + cloud.google.com/go/compute/metadata v0.7.0 // indirect cloud.google.com/go/iam v1.2.2 // indirect cloud.google.com/go/monitoring v1.21.2 // indirect cloud.google.com/go/storage v1.49.0 // indirect @@ -95,7 +95,7 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cloudwego/base64x v0.1.5 // indirect - github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect + github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/cockroachdb/errors v1.12.0 // indirect github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect @@ -136,7 +136,7 @@ require ( github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect @@ -237,28 +237,28 @@ require ( go.etcd.io/bbolt v1.4.0-alpha.1 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.35.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.36.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect + go.opentelemetry.io/otel v1.36.0 // indirect + go.opentelemetry.io/otel/metric v1.36.0 // indirect + go.opentelemetry.io/otel/sdk v1.36.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.36.0 // indirect + go.opentelemetry.io/otel/trace v1.36.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/arch v0.15.0 // indirect golang.org/x/crypto v0.40.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect - golang.org/x/oauth2 v0.28.0 // indirect + golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sys v0.34.0 // indirect golang.org/x/term v0.33.0 // indirect golang.org/x/time v0.10.0 // indirect golang.org/x/tools v0.34.0 // indirect google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.2 // indirect diff --git a/go.sum b/go.sum index 08081b0f0e..954498e579 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -cel.dev/expr v0.23.0 h1:wUb94w6OYQS4uXraxo9U+wUAs9jT47Xvl4iPgAwM2ss= -cel.dev/expr v0.23.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= +cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -184,8 +184,8 @@ cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZ cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= -cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= +cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= +cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= @@ -811,8 +811,8 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f h1:C5bqEmzEPLsHm9Mv73lSE9e9bKV23aB1vxOsmZrkl3k= -github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -1022,8 +1022,8 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= @@ -1710,24 +1710,24 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/detectors/gcp v1.35.0 h1:bGvFt68+KTiAKFlacHW6AhA56GF2rS0bdD3aJYEnmzA= -go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= +go.opentelemetry.io/contrib/detectors/gcp v1.36.0 h1:F7q2tNlCaHY9nMKHR6XH9/qkp8FktLnIcy6jJNyOCQw= +go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 h1:PS8wXpbyaDJQ2VDHHncMe9Vct0Zn1fEjpsjrLxGJoSc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0/go.mod h1:HDBUsEjOuRC0EzKZ1bSaRGZWUBAzo+MhAcUUORSr4D0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= +go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -1945,8 +1945,8 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= -golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2430,10 +2430,10 @@ google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= -google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 h1:hE3bRWtU6uceqlh4fhrSnUyjKHMKB9KrTLLG+bc0ddM= -google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463/go.mod h1:U90ffi8eUL9MwPcrJylN5+Mk2v3vuPDptd5yyNUiRR8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f h1:N/PrbTw4kdkqNRzVfWPrBekzLuarFREcbFOiOLkXon4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -2481,8 +2481,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= -google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= +google.golang.org/grpc v1.74.0 h1:sxRSkyLxlceWQiqDofxDot3d4u7DyoHPc7SBXMj8gGY= +google.golang.org/grpc v1.74.0/go.mod h1:NZUaK8dAMUfzhK6uxZ+9511LtOrk73UGWOFoNvz7z+s= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From b1551f3e14d39e5c8fea346130f55e7b01d9be22 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Jul 2025 08:50:20 +0800 Subject: [PATCH 117/210] build(deps): bump form-data (#674) Bumps the npm_and_yarn group with 1 update in the /tests/integration_tests/hardhat directory: [form-data](https://github.com/form-data/form-data). Updates `form-data` from 4.0.0 to 4.0.4 - [Release notes](https://github.com/form-data/form-data/releases) - [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md) - [Commits](https://github.com/form-data/form-data/compare/v4.0.0...v4.0.4) --- updated-dependencies: - dependency-name: form-data dependency-version: 4.0.4 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../hardhat/package-lock.json | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/tests/integration_tests/hardhat/package-lock.json b/tests/integration_tests/hardhat/package-lock.json index f70260c710..a84a023a74 100644 --- a/tests/integration_tests/hardhat/package-lock.json +++ b/tests/integration_tests/hardhat/package-lock.json @@ -3857,13 +3857,14 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -4356,12 +4357,14 @@ } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -11886,13 +11889,14 @@ } }, "es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "requires": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" } }, "es-shim-unscopables": { @@ -12272,12 +12276,14 @@ "peer": true }, "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, From dd2e5e1f8651e9e0c705aa436ee445be83f96f7c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Jul 2025 09:38:17 -0400 Subject: [PATCH 118/210] build(deps): bump google.golang.org/grpc from 1.74.0 to 1.74.2 (#676) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.74.0 to 1.74.2. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.74.0...v1.74.2) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-version: 1.74.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e12850f164..352fcd13c4 100644 --- a/go.mod +++ b/go.mod @@ -52,7 +52,7 @@ require ( golang.org/x/sync v0.16.0 golang.org/x/text v0.27.0 google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a - google.golang.org/grpc v1.74.0 + google.golang.org/grpc v1.74.2 google.golang.org/protobuf v1.36.6 sigs.k8s.io/yaml v1.5.0 ) diff --git a/go.sum b/go.sum index 954498e579..8b209b8762 100644 --- a/go.sum +++ b/go.sum @@ -2481,8 +2481,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.74.0 h1:sxRSkyLxlceWQiqDofxDot3d4u7DyoHPc7SBXMj8gGY= -google.golang.org/grpc v1.74.0/go.mod h1:NZUaK8dAMUfzhK6uxZ+9511LtOrk73UGWOFoNvz7z+s= +google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= +google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From e59b7ae44eb57705092c3c6a5968a8c4ef0c6325 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Jul 2025 13:59:41 +0000 Subject: [PATCH 119/210] build(deps): bump github.com/onsi/gomega from 1.37.0 to 1.38.0 (#675) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.37.0 to 1.38.0. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.37.0...v1.38.0) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-version: 1.38.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 352fcd13c4..87e4d3593c 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/hashicorp/go-metrics v0.5.4 github.com/improbable-eng/grpc-web v0.15.0 github.com/onsi/ginkgo/v2 v2.23.4 - github.com/onsi/gomega v1.37.0 + github.com/onsi/gomega v1.38.0 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 github.com/spf13/cast v1.9.2 diff --git a/go.sum b/go.sum index 8b209b8762..29c040a6c2 100644 --- a/go.sum +++ b/go.sum @@ -1459,8 +1459,8 @@ github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5 github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y= -github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0= +github.com/onsi/gomega v1.38.0 h1:c/WX+w8SLAinvuKKQFh77WEucCnPk4j2OTUr7lt7BeY= +github.com/onsi/gomega v1.38.0/go.mod h1:OcXcwId0b9QsE7Y49u+BTrL4IdKOBOKnD6VQNTJEB6o= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= From 2b2eb9b1f0b0a56f47c7e631d668acee78260962 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Jul 2025 09:34:22 +0800 Subject: [PATCH 120/210] build(deps): bump sigs.k8s.io/yaml from 1.5.0 to 1.6.0 (#679) Bumps [sigs.k8s.io/yaml](https://github.com/kubernetes-sigs/yaml) from 1.5.0 to 1.6.0. - [Release notes](https://github.com/kubernetes-sigs/yaml/releases) - [Changelog](https://github.com/kubernetes-sigs/yaml/blob/master/RELEASE.md) - [Commits](https://github.com/kubernetes-sigs/yaml/compare/v1.5.0...v1.6.0) --- updated-dependencies: - dependency-name: sigs.k8s.io/yaml dependency-version: 1.6.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 87e4d3593c..44881dcc60 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a google.golang.org/grpc v1.74.2 google.golang.org/protobuf v1.36.6 - sigs.k8s.io/yaml v1.5.0 + sigs.k8s.io/yaml v1.6.0 ) require ( diff --git a/go.sum b/go.sum index 29c040a6c2..62db52e2d8 100644 --- a/go.sum +++ b/go.sum @@ -2594,6 +2594,6 @@ rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= -sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= +sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= +sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= From 83ae12e43a5ed4887bec291b4b51768adfaea37f Mon Sep 17 00:00:00 2001 From: "Thomas N." <81727899+thomas-nguy@users.noreply.github.com> Date: Wed, 30 Jul 2025 15:21:34 +0900 Subject: [PATCH 121/210] feat: support query gas limit flag (#678) * add query gas limit * fix comment * cleanup * fix golangci * fix estimate gas * fix comments * fix query * fix nil pointer * lint and fix test * simplify logic * fix sim * fix lint * fix test * fix test * fix estimate gas --- evmd/app.go | 1 + x/evm/keeper/grpc_query.go | 48 ++++++++++++++++++++++++++------- x/evm/keeper/grpc_query_test.go | 2 +- x/evm/keeper/keeper.go | 8 ++++++ x/evm/statedb/statedb_test.go | 1 + x/evm/types/tx_args.go | 9 +++---- x/evm/types/tx_args_test.go | 4 +-- 7 files changed, 56 insertions(+), 17 deletions(-) diff --git a/evmd/app.go b/evmd/app.go index 515a37e24d..553f9b76d1 100644 --- a/evmd/app.go +++ b/evmd/app.go @@ -487,6 +487,7 @@ func NewEthermintApp( tracer, evmSs, nil, + cast.ToUint64(appOpts.Get(server.FlagQueryGasLimit)), ) // register the proposal types diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index 96b5b50f1b..8b3381de90 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -265,7 +265,17 @@ func (k Keeper) EthCall(c context.Context, req *types.EthCallRequest) (*types.Ms nonce := k.GetNonce(ctx, args.GetFrom()) args.Nonce = (*hexutil.Uint64)(&nonce) - msg, err := args.ToMessage(req.GasCap, cfg.BaseFee) + // Enforce the gas limit cap + gasCap := req.GasCap + if k.queryMaxGasLimit != GasNoLimit { + if gasCap == 0 { + gasCap = k.queryMaxGasLimit + } else if k.queryMaxGasLimit < gasCap { + gasCap = k.queryMaxGasLimit + } + } + + msg, err := args.ToMessage(gasCap, cfg.BaseFee) if err != nil { return nil, status.Error(codes.InvalidArgument, err.Error()) } @@ -302,11 +312,20 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type return nil, status.Error(codes.InvalidArgument, err.Error()) } + // Enforce the gas limit cap + gasCap := req.GasCap + if k.queryMaxGasLimit != GasNoLimit { + if gasCap == 0 { + gasCap = k.queryMaxGasLimit + } else if k.queryMaxGasLimit < gasCap { + gasCap = k.queryMaxGasLimit + } + } + // Binary search the gas requirement, as it may be higher than the amount used var ( - lo = ethparams.TxGas - 1 - hi uint64 - gasCap uint64 + lo = ethparams.TxGas - 1 + hi uint64 ) // Determine the highest gas limit can be used during the estimation. @@ -328,10 +347,11 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type // TODO: Recap the highest gas limit with account's available balance. // Recap the highest gas allowance with specified gascap. - if req.GasCap != 0 && hi > req.GasCap { - hi = req.GasCap + if gasCap != 0 && hi > gasCap { + hi = gasCap + } else { + gasCap = hi } - gasCap = hi cfg, err := k.EVMConfig(ctx, chainID, common.Hash{}) if err != nil { return nil, status.Error(codes.Internal, "failed to load evm config") @@ -342,7 +362,7 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type args.Nonce = (*hexutil.Uint64)(&nonce) // convert the tx args to an ethereum message - msg, err := args.ToMessage(req.GasCap, cfg.BaseFee) + msg, err := args.ToMessage(gasCap, cfg.BaseFee) if err != nil { return nil, status.Error(codes.Internal, err.Error()) } @@ -636,7 +656,17 @@ func (k Keeper) TraceCall(c context.Context, req *types.QueryTraceCallRequest) ( nonce := k.GetNonce(ctx, args.GetFrom()) args.Nonce = (*hexutil.Uint64)(&nonce) - msg, err := args.ToMessage(req.GasCap, cfg.BaseFee) + // Enforce the gas limit cap + gasCap := req.GasCap + if k.queryMaxGasLimit != GasNoLimit { + if gasCap == 0 { + gasCap = k.queryMaxGasLimit + } else if k.queryMaxGasLimit < gasCap { + gasCap = k.queryMaxGasLimit + } + } + + msg, err := args.ToMessage(gasCap, cfg.BaseFee) if err != nil { return nil, err } diff --git a/x/evm/keeper/grpc_query_test.go b/x/evm/keeper/grpc_query_test.go index 9bd29afc85..755702635b 100644 --- a/x/evm/keeper/grpc_query_test.go +++ b/x/evm/keeper/grpc_query_test.go @@ -577,7 +577,7 @@ func (suite *GRPCServerTestSuiteSuite) TestQueryValidatorAccount() { } func (suite *GRPCServerTestSuiteSuite) TestEstimateGas() { - gasHelper := hexutil.Uint64(20000) + gasHelper := hexutil.Uint64(22000) higherGas := hexutil.Uint64(25000) hexBigInt := hexutil.Big(*big.NewInt(1)) diff --git a/x/evm/keeper/keeper.go b/x/evm/keeper/keeper.go index 8689485435..dbdc5735ed 100644 --- a/x/evm/keeper/keeper.go +++ b/x/evm/keeper/keeper.go @@ -37,6 +37,9 @@ import ( // CustomContractFn defines a custom precompiled contract generator with ctx, rules and returns a precompiled contract. type CustomContractFn func(sdk.Context, params.Rules) vm.PrecompiledContract +// GasNoLimit is the value for keeper.queryMaxGasLimit in case there is no limit +const GasNoLimit = 0 + // Keeper grants access to the EVM module state and implements the go-ethereum StateDB interface. type Keeper struct { // Protobuf codec @@ -73,6 +76,9 @@ type Keeper struct { // Legacy subspace ss paramstypes.Subspace customContractFns []CustomContractFn + + // queryMaxGasLimit max amount of gas allowed during a single tx execution, 0 means no limit + queryMaxGasLimit uint64 } // NewKeeper generates new evm module keeper @@ -87,6 +93,7 @@ func NewKeeper( tracer string, ss paramstypes.Subspace, customContractFns []CustomContractFn, + queryMaxGasLimit uint64, ) *Keeper { // ensure evm module account is set if addr := ak.GetModuleAddress(types.ModuleName); addr == nil { @@ -111,6 +118,7 @@ func NewKeeper( tracer: tracer, ss: ss, customContractFns: customContractFns, + queryMaxGasLimit: queryMaxGasLimit, } } diff --git a/x/evm/statedb/statedb_test.go b/x/evm/statedb/statedb_test.go index 1d2626f7c5..e60e824b3a 100644 --- a/x/evm/statedb/statedb_test.go +++ b/x/evm/statedb/statedb_test.go @@ -818,6 +818,7 @@ func newTestKeeper(t *testing.T, cms storetypes.MultiStore) (sdk.Context, *evmke "", paramstypes.Subspace{}, nil, + evmkeeper.GasNoLimit, ) ctx := sdk.NewContext(cms, tmproto.Header{}, false, log.NewNopLogger()) diff --git a/x/evm/types/tx_args.go b/x/evm/types/tx_args.go index a97b6f73c3..29bf99fdc9 100644 --- a/x/evm/types/tx_args.go +++ b/x/evm/types/tx_args.go @@ -135,11 +135,10 @@ func (args *TransactionArgs) ToMessage(globalGasCap uint64, baseFee *big.Int) (* // Set sender address or use zero address if none specified. addr := args.GetFrom() - // Ethereum block size is ~36000000, we limit this value to protect against DOS - MaxGasCap := uint64(100000000) - // Set default gas & gas price if none were set - gas := MaxGasCap - if args.Gas != nil && uint64(*args.Gas) < MaxGasCap { + // Ethereum block size is ~36000000, we use this value as default in case neither gas or global cap is specified, to protect against DOS + defaultGas := uint64(100000000) + gas := defaultGas + if args.Gas != nil { gas = uint64(*args.Gas) } if globalGasCap != 0 && globalGasCap < gas { diff --git a/x/evm/types/tx_args_test.go b/x/evm/types/tx_args_test.go index fc97682b86..827944c6aa 100644 --- a/x/evm/types/tx_args_test.go +++ b/x/evm/types/tx_args_test.go @@ -296,7 +296,7 @@ func (suite *TxDataTestSuite) TestMaxGasCap() { expectedOutput uint64 }{ { - "globalGasCap is below limit", + "globalGasCap is below default gas", 25000000, TransactionArgs{ Gas: nil, @@ -305,7 +305,7 @@ func (suite *TxDataTestSuite) TestMaxGasCap() { 25000000, }, { - "globalGasCap is above limit", + "globalGasCap is above default gas", math.MaxInt64, TransactionArgs{ Gas: nil, From d2951a848c6188125b1ab1442b2f471577fd09d4 Mon Sep 17 00:00:00 2001 From: "Thomas N." <81727899+thomas-nguy@users.noreply.github.com> Date: Thu, 31 Jul 2025 17:27:36 +0900 Subject: [PATCH 122/210] fix: estimate gas missing fields for new tx type (#680) * estimate gas missing fields for new tx type * add changelog --- CHANGELOG.md | 1 + x/evm/keeper/grpc_query.go | 14 +------------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7fe38baf6..6daa3ba37b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -90,6 +90,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#567](https://github.com/crypto-org-chain/ethermint/pull/567) Fix nonce management in batch transaction. * (rpc) [#574](https://github.com/crypto-org-chain/ethermint/pull/574) Fix incorrect spendable balance when debug trace tx. * (rpc) [#577](https://github.com/crypto-org-chain/ethermint/pull/577) Fix eth_getLogs miss logs with batch transactions. +* (rpc) [#680](https://github.com/crypto-org-chain/ethermint/pull/680) Fix: estimate gas missing fields for new tx type ### Improvements diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index 8b3381de90..d670e30953 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -373,19 +373,7 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type // Create a helper to check if a gas allowance results in an executable transaction executable := func(gas uint64) (vmError bool, rsp *types.MsgEthereumTxResponse, err error) { // update the message with the new gas value - msg = &core.Message{ - From: msg.From, - To: msg.To, - Nonce: msg.Nonce, - Value: msg.Value, - GasLimit: gas, - GasPrice: msg.GasPrice, - GasFeeCap: msg.GasFeeCap, - GasTipCap: msg.GasTipCap, - Data: msg.Data, - AccessList: msg.AccessList, - SkipAccountChecks: msg.SkipAccountChecks, - } + msg.GasLimit = gas // pass false to not commit StateDB rsp, err = k.ApplyMessageWithConfig(ctx, msg, cfg, false) From 79e177241f877fb77a7b7e36dd93076ff10bb88a Mon Sep 17 00:00:00 2001 From: Xinyu <91446598+XinyuCRO@users.noreply.github.com> Date: Tue, 12 Aug 2025 11:30:36 +0800 Subject: [PATCH 123/210] feat: geth 1.15 (#665) * feat: geth v1.15 * feat: update geth commit * Update tests/importer/importer_test.go Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> Signed-off-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> * Update tests/importer/importer_test.go Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> Signed-off-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> * Update tests/importer/importer_test.go Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> Signed-off-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> * fix: gas refund is not correct for high gasLimit tx * test: add unittest for statedb * Update x/evm/keeper/state_transition.go Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> Signed-off-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> * Update x/evm/keeper/state_transition.go Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> Signed-off-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> * Update x/evm/keeper/state_transition.go Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> Signed-off-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> * fix: remove dirty code * Update x/evm/statedb/statedb.go Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> Signed-off-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> * refac: statedb * revert: add totalDifficulty * fix: remove totalDifficulty * feat: deps, upgrade go * feat: update go version in nix * fix: lint * deps: update geth --------- Signed-off-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> --- CHANGELOG.md | 2 + ante/eth.go | 4 +- evmd/ante/ante_test.go | 7 +- evmd/ante/eth_test.go | 26 +- evmd/ante/handler_options.go | 2 +- evmd/ante/sigs_test.go | 5 +- evmd/ante/utils_test.go | 3 +- go.mod | 44 ++- go.sum | 116 ++++--- gomod2nix.toml | 260 ++++++++------ nix/build_overlay.nix | 4 +- nix/default.nix | 2 +- nix/go-ethereum.nix | 25 +- rpc/backend/backend_suite_test.go | 2 +- rpc/backend/blocks.go | 7 +- rpc/backend/blocks_test.go | 26 +- rpc/backend/chain_info.go | 19 +- rpc/backend/sign_tx.go | 8 +- rpc/backend/tx_info.go | 12 +- rpc/backend/utils.go | 6 +- rpc/namespaces/ethereum/debug/api.go | 15 - rpc/types/types.go | 7 +- rpc/types/utils.go | 8 +- scripts/geth-genesis.json | 8 +- scripts/start-geth.sh | 14 +- server/json_rpc.go | 17 +- server/log_handler.go | 53 +++ tests/importer/chain_ctx.go | 27 +- tests/importer/chain_ctx_test.go | 6 +- tests/importer/importer_test.go | 21 +- tests/integration_tests/expected_constants.py | 6 +- tests/integration_tests/test_filters.py | 7 +- tests/integration_tests/test_tracers.py | 5 +- tests/integration_tests/test_types.py | 81 +++-- types/int.go | 15 + x/evm/genesis_test.go | 5 +- x/evm/handler_test.go | 29 +- x/evm/keeper/config.go | 8 +- x/evm/keeper/gas.go | 10 +- x/evm/keeper/grpc_query.go | 32 +- x/evm/keeper/grpc_query_test.go | 37 +- x/evm/keeper/keeper.go | 12 +- x/evm/keeper/state_transition.go | 100 ++++-- x/evm/keeper/state_transition_test.go | 7 +- x/evm/keeper/statedb.go | 37 +- x/evm/keeper/statedb_benchmark_test.go | 15 +- x/evm/keeper/statedb_test.go | 324 +++++++++++++++--- x/evm/keeper/utils.go | 2 +- x/evm/keeper/utils_test.go | 14 +- x/evm/statedb/interfaces.go | 11 +- x/evm/statedb/journal.go | 42 ++- x/evm/statedb/state_object.go | 19 +- x/evm/statedb/statedb.go | 214 ++++++++---- x/evm/statedb/statedb_hooked.go | 291 ++++++++++++++++ x/evm/statedb/statedb_hooked_test.go | 191 +++++++++++ x/evm/statedb/statedb_test.go | 80 +++-- x/evm/types/msg.go | 27 +- x/evm/types/tracer.go | 107 ++++-- x/evm/types/tracer_test.go | 5 +- x/evm/types/tx_args.go | 27 +- x/evm/types/utils.go | 4 +- x/feemarket/keeper/eip1559.go | 6 +- 62 files changed, 1878 insertions(+), 648 deletions(-) create mode 100644 server/log_handler.go create mode 100644 x/evm/statedb/statedb_hooked.go create mode 100644 x/evm/statedb/statedb_hooked_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 6daa3ba37b..6d00e96592 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased +* (geth) [#665](https://github.com/crypto-org-chain/ethermint/pull/665) Update go-ethereum version to [`v1.15.11`](https://github.com/ethereum/go-ethereum/releases/tag/v1.15.11). + ### Features * (evm) [#669](https://github.com/crypto-org-chain/ethermint/pull/669) test: fix newEthMsgTx. diff --git a/ante/eth.go b/ante/eth.go index ec0b45ccd5..c249014495 100644 --- a/ante/eth.go +++ b/ante/eth.go @@ -97,7 +97,7 @@ func VerifyEthAccount( } balance := evmKeeper.GetBalance(ctx, from, evmDenom) - if err := keeper.CheckSenderBalance(sdkmath.NewIntFromBigIntMut(balance), ethTx); err != nil { + if err := keeper.CheckSenderBalance(sdkmath.NewIntFromBigIntMut(balance.ToBig()), ethTx); err != nil { return errorsmod.Wrap(err, "failed to check sender balance") } } @@ -264,7 +264,7 @@ func CheckEthCanTransfer( // canTransfer adapted the core.CanTransfer from go-ethereum func canTransfer(ctx sdk.Context, evmKeeper interfaces.EVMKeeper, denom string, from common.Address, amount *big.Int) bool { balance := evmKeeper.GetBalance(ctx, sdk.AccAddress(from.Bytes()), denom) - return balance.Cmp(amount) >= 0 + return balance.ToBig().Cmp(amount) >= 0 } // CheckAndSetEthSenderNonce handles incrementing the sequence of the signer (i.e sender). If the transaction is a diff --git a/evmd/ante/ante_test.go b/evmd/ante/ante_test.go index 45bcad9e93..9605627e8c 100644 --- a/evmd/ante/ante_test.go +++ b/evmd/ante/ante_test.go @@ -11,6 +11,7 @@ import ( sdkmath "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" kmultisig "github.com/cosmos/cosmos-sdk/crypto/keys/multisig" + "github.com/holiman/uint256" "github.com/stretchr/testify/suite" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" @@ -71,7 +72,7 @@ func (suite *AnteTestSuite) TestAnteHandler() { suite.Require().NoError(acc.SetSequence(1)) suite.app.AccountKeeper.SetAccount(suite.ctx, acc) - suite.app.EvmKeeper.SetBalance(suite.ctx, addr, big.NewInt(10000000000), evmtypes.DefaultEVMDenom) + suite.app.EvmKeeper.SetBalance(suite.ctx, addr, *uint256.NewInt(10000000000), evmtypes.DefaultEVMDenom) suite.app.FeeMarketKeeper.SetBaseFee(suite.ctx, big.NewInt(100)) } @@ -1209,7 +1210,7 @@ func (suite *AnteTestSuite) TestAnteHandlerWithDynamicTxFee() { suite.app.AccountKeeper.SetAccount(suite.ctx, acc) suite.ctx = suite.ctx.WithIsCheckTx(tc.checkTx).WithIsReCheckTx(tc.reCheckTx).WithConsensusParams(*testutil.DefaultConsensusParams) - suite.app.EvmKeeper.SetBalance(suite.ctx, addr, big.NewInt((ethparams.InitialBaseFee+10)*100000), evmtypes.DefaultEVMDenom) + suite.app.EvmKeeper.SetBalance(suite.ctx, addr, *uint256.NewInt((ethparams.InitialBaseFee + 10) * 100000), evmtypes.DefaultEVMDenom) _, err := suite.anteHandler(suite.ctx, tc.txFn(), false) if tc.expPass { suite.Require().NoError(err) @@ -1338,7 +1339,7 @@ func (suite *AnteTestSuite) TestAnteHandlerWithParams() { suite.app.AccountKeeper.SetAccount(suite.ctx, acc) suite.ctx = suite.ctx.WithIsCheckTx(true).WithConsensusParams(*testutil.DefaultConsensusParams) - suite.app.EvmKeeper.SetBalance(suite.ctx, addr, big.NewInt((ethparams.InitialBaseFee+10)*100000), evmtypes.DefaultEVMDenom) + suite.app.EvmKeeper.SetBalance(suite.ctx, addr, *uint256.NewInt((ethparams.InitialBaseFee + 10) * 100000), evmtypes.DefaultEVMDenom) _, err := suite.anteHandler(suite.ctx, tc.txFn(), false) if tc.expErr == nil { suite.Require().NoError(err) diff --git a/evmd/ante/eth_test.go b/evmd/ante/eth_test.go index b45981813f..471bff6dbe 100644 --- a/evmd/ante/eth_test.go +++ b/evmd/ante/eth_test.go @@ -7,9 +7,11 @@ import ( "math/big" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/holiman/uint256" "google.golang.org/protobuf/proto" storetypes "cosmossdk.io/store/types" + "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/evmos/ethermint/ante" "github.com/evmos/ethermint/server/config" @@ -67,7 +69,7 @@ func (suite *AnteTestSuite) TestNewEthAccountVerificationDecorator() { "success new account", tx, func() { - vmdb.AddBalance(addr, big.NewInt(1000000)) + vmdb.AddBalance(addr, uint256.NewInt(1000000), tracing.BalanceChangeTransfer) }, true, true, @@ -79,7 +81,7 @@ func (suite *AnteTestSuite) TestNewEthAccountVerificationDecorator() { acc := suite.app.AccountKeeper.NewAccountWithAddress(suite.ctx, addr.Bytes()) suite.app.AccountKeeper.SetAccount(suite.ctx, acc) - vmdb.AddBalance(addr, big.NewInt(1000000)) + vmdb.AddBalance(addr, uint256.NewInt(1000000), tracing.BalanceChangeTransfer) }, true, true, @@ -263,7 +265,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { tx2, 0, func() { - vmdb.AddBalance(addr, big.NewInt(1000000)) + vmdb.AddBalance(addr, uint256.NewInt(1000000), tracing.BalanceChangeTransfer) }, false, true, 0, @@ -274,7 +276,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { tx2, 0, func() { - vmdb.AddBalance(addr, big.NewInt(1000000)) + vmdb.AddBalance(addr, uint256.NewInt(1000000), tracing.BalanceChangeTransfer) suite.ctx = suite.ctx.WithBlockGasMeter(storetypes.NewGasMeter(1)) }, false, true, @@ -288,9 +290,11 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { }, math.MaxUint64, func() { - limit := new(big.Int).SetUint64(math.MaxUint64) - balance := new(big.Int).Mul(limit, gasPrice) - vmdb.AddBalance(addr, balance) + limit := uint256.NewInt(math.MaxUint64) + gasPrice := uint256.MustFromBig(gasPrice) + balance := uint256.NewInt(0).Mul(limit, gasPrice) + + vmdb.AddBalance(addr, balance, tracing.BalanceChangeTransfer) }, false, false, 0, @@ -301,7 +305,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { tx2, tx2GasLimit, // it's capped func() { - vmdb.AddBalance(addr, big.NewInt(1001000000000000)) + vmdb.AddBalance(addr, uint256.NewInt(1001000000000000), tracing.BalanceChangeTransfer) suite.ctx = suite.ctx.WithBlockGasMeter(storetypes.NewGasMeter(10000000000000000000)) }, true, false, @@ -313,7 +317,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { dynamicFeeTx, tx2GasLimit, // it's capped func() { - vmdb.AddBalance(addr, big.NewInt(1001000000000000)) + vmdb.AddBalance(addr, uint256.NewInt(1001000000000000), tracing.BalanceChangeTransfer) suite.ctx = suite.ctx.WithBlockGasMeter(storetypes.NewGasMeter(10000000000000000000)) }, true, false, @@ -325,7 +329,7 @@ func (suite *AnteTestSuite) TestEthGasConsumeDecorator() { dynamicFeeTx, tx2GasLimit, // it's capped func() { - vmdb.AddBalance(addr, big.NewInt(1001000000000000)) + vmdb.AddBalance(addr, uint256.NewInt(1001000000000000), tracing.BalanceChangeTransfer) suite.ctx = suite.ctx.WithIsReCheckTx(true) }, true, false, @@ -448,7 +452,7 @@ func (suite *AnteTestSuite) TestCanTransferDecorator() { acc := suite.app.AccountKeeper.NewAccountWithAddress(suite.ctx, addr.Bytes()) suite.app.AccountKeeper.SetAccount(suite.ctx, acc) - vmdb.AddBalance(addr, big.NewInt(1000000)) + vmdb.AddBalance(addr, uint256.NewInt(1000000), tracing.BalanceChangeTransfer) }, true, }, diff --git a/evmd/ante/handler_options.go b/evmd/ante/handler_options.go index 46e20952e9..b6ea4c4b33 100644 --- a/evmd/ante/handler_options.go +++ b/evmd/ante/handler_options.go @@ -121,7 +121,7 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { err = v.(error) } } else { - ethSigner := ethtypes.MakeSigner(blockCfg.ChainConfig, blockCfg.BlockNumber) + ethSigner := ethtypes.MakeSigner(blockCfg.ChainConfig, blockCfg.BlockNumber, blockCfg.BlockTime) err = evmante.VerifyEthSig(tx, ethSigner) ctx.SetIncarnationCache(EthSigVerificationResultCacheKey, err) } diff --git a/evmd/ante/sigs_test.go b/evmd/ante/sigs_test.go index 16506815ac..3a1da1a108 100644 --- a/evmd/ante/sigs_test.go +++ b/evmd/ante/sigs_test.go @@ -6,6 +6,7 @@ import ( "github.com/evmos/ethermint/tests" "github.com/evmos/ethermint/x/evm/statedb" evmtypes "github.com/evmos/ethermint/x/evm/types" + "github.com/holiman/uint256" ) func (suite *AnteTestSuite) TestSignatures() { @@ -17,10 +18,10 @@ func (suite *AnteTestSuite) TestSignatures() { acc := statedb.NewEmptyAccount() acc.Nonce = 1 - balance := big.NewInt(10000000000) + balance := uint256.NewInt(10000000000) suite.app.EvmKeeper.SetAccount(suite.ctx, addr, *acc) - suite.app.EvmKeeper.SetBalance(suite.ctx, addr, balance, evmtypes.DefaultEVMDenom) + suite.app.EvmKeeper.SetBalance(suite.ctx, addr, *balance, evmtypes.DefaultEVMDenom) msgEthereumTx := evmtypes.NewTx(suite.app.EvmKeeper.ChainID(), 1, &to, big.NewInt(10), 100000, big.NewInt(1), nil, nil, nil, nil) msgEthereumTx.From = addr.Bytes() diff --git a/evmd/ante/utils_test.go b/evmd/ante/utils_test.go index f4f7f75d82..532aef33ef 100644 --- a/evmd/ante/utils_test.go +++ b/evmd/ante/utils_test.go @@ -8,6 +8,7 @@ import ( sdkmath "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" + "github.com/holiman/uint256" "github.com/stretchr/testify/suite" protov2 "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" @@ -557,7 +558,7 @@ func (suite *AnteTestSuite) RegisterAccount(pubKey cryptotypes.PubKey, balance * acc := suite.app.AccountKeeper.NewAccountWithAddress(suite.ctx, sdk.AccAddress(pubKey.Address())) suite.app.AccountKeeper.SetAccount(suite.ctx, acc) - suite.app.EvmKeeper.SetBalance(suite.ctx, common.BytesToAddress(pubKey.Address()), balance, evmtypes.DefaultEVMDenom) + suite.app.EvmKeeper.SetBalance(suite.ctx, common.BytesToAddress(pubKey.Address()), *uint256.MustFromBig(balance), evmtypes.DefaultEVMDenom) } // createSignerBytes generates sign doc bytes using the given parameters diff --git a/go.mod b/go.mod index 44881dcc60..0374b450af 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/evmos/ethermint -go 1.23.10 +go 1.23.12 require ( cosmossdk.io/api v0.9.2 @@ -35,6 +35,7 @@ require ( github.com/gorilla/websocket v1.5.3 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/go-metrics v0.5.4 + github.com/holiman/uint256 v1.3.2 github.com/improbable-eng/grpc-web v0.15.0 github.com/onsi/ginkgo/v2 v2.23.4 github.com/onsi/gomega v1.38.0 @@ -79,14 +80,14 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/PuerkitoBio/purell v1.1.1 // indirect github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect - github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 // indirect - github.com/VictoriaMetrics/fastcache v1.6.0 // indirect + github.com/StackExchange/wmi v1.2.1 // indirect + github.com/VictoriaMetrics/fastcache v1.12.2 // indirect github.com/allegro/bigcache v1.2.1 // indirect github.com/aws/aws-sdk-go v1.44.224 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.2.0 // indirect - github.com/bits-and-blooms/bitset v1.17.0 // indirect + github.com/bits-and-blooms/bitset v1.20.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/bytedance/sonic v1.13.2 // indirect @@ -105,32 +106,36 @@ require ( github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect github.com/cometbft/cometbft-db v0.15.0 // indirect + github.com/consensys/bavard v0.1.27 // indirect + github.com/consensys/gnark-crypto v0.16.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/iavl v1.2.2 // indirect github.com/cosmos/ics23/go v0.11.0 // indirect github.com/cosmos/ledger-cosmos-go v0.14.0 // indirect github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect + github.com/crate-crypto/go-eth-kzg v1.3.0 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect github.com/creachadair/atomicfile v0.3.1 // indirect github.com/creachadair/tomledit v0.0.24 // indirect github.com/danieljoos/wincred v1.2.1 // indirect - github.com/deckarep/golang-set/v2 v2.1.0 // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect github.com/desertbit/timer v1.0.1 // indirect github.com/dgraph-io/badger/v4 v4.3.0 // indirect github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91 // indirect github.com/dlclark/regexp2 v1.7.0 // indirect - github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7 // indirect + github.com/dop251/goja v0.0.0-20230605162241-28ee0ee714f3 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.7.0 // indirect - github.com/edsrzf/mmap-go v1.0.0 // indirect github.com/emicklei/dot v1.6.2 // indirect github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect + github.com/ethereum/c-kzg-4844/v2 v2.1.0 // indirect + github.com/ethereum/go-verkle v0.2.2 // indirect github.com/fatih/color v1.17.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect - github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff // indirect github.com/getsentry/sentry-go v0.33.0 // indirect github.com/go-jose/go-jose/v4 v4.0.5 // indirect github.com/go-kit/kit v0.13.0 // indirect @@ -138,9 +143,8 @@ require ( github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect - github.com/go-stack/stack v1.8.1 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/go-viper/mapstructure/v2 v2.3.0 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect @@ -174,9 +178,8 @@ require ( github.com/hashicorp/yamux v0.1.2 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect github.com/holiman/bloomfilter/v2 v2.0.3 // indirect - github.com/holiman/uint256 v1.3.2 // indirect github.com/huandu/skiplist v1.2.1 // indirect - github.com/huin/goupnp v1.0.3 // indirect + github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect @@ -196,6 +199,7 @@ require ( github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect @@ -203,6 +207,11 @@ require ( github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect + github.com/pion/dtls/v2 v2.2.7 // indirect + github.com/pion/logging v0.2.2 // indirect + github.com/pion/stun/v2 v2.0.0 // indirect + github.com/pion/transport/v2 v2.2.1 // indirect + github.com/pion/transport/v3 v3.0.1 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect @@ -222,13 +231,14 @@ require ( github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect + github.com/supranational/blst v0.3.14 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect github.com/tidwall/btree v1.7.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect - github.com/tklauser/go-sysconf v0.3.10 // indirect - github.com/tklauser/numcpus v0.4.0 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/zeebo/errs v1.4.0 // indirect @@ -259,11 +269,11 @@ require ( google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect - gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.2 // indirect nhooyr.io/websocket v1.8.11 // indirect pgregory.net/rapid v1.2.0 // indirect + rsc.io/tmplfunc v0.0.3 // indirect ) replace ( @@ -278,8 +288,8 @@ replace ( github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 // v0.38.x github.com/cometbft/cometbft => github.com/crypto-org-chain/cometbft v0.0.0-20241106091515-ce418f845d9a - // release/v1.11.x - github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183 + // release/v1.15 + github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250812022812-0af6c9899f11 // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0 diff --git a/go.sum b/go.sum index 62db52e2d8..1cc261c15b 100644 --- a/go.sum +++ b/go.sum @@ -677,10 +677,10 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= -github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= +github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= +github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= +github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= +github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I= @@ -727,8 +727,8 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI= -github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= +github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= @@ -783,12 +783,15 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= @@ -835,6 +838,10 @@ github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONN github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= github.com/cometbft/cometbft-db v0.15.0 h1:VLtsRt8udD4jHCyjvrsTBpgz83qne5hnL245AcPJVRk= github.com/cometbft/cometbft-db v0.15.0/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk= +github.com/consensys/bavard v0.1.27 h1:j6hKUrGAy/H+gpNrpLU3I26n1yc+VMGmd6ID5+gAhOs= +github.com/consensys/bavard v0.1.27/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= +github.com/consensys/gnark-crypto v0.16.0 h1:8Dl4eYmUWK9WmlP1Bj6je688gBRJCJbT8Mw4KoTAawo= +github.com/consensys/gnark-crypto v0.16.0/go.mod h1:Ke3j06ndtPTVvo++PhGNgvm+lgpLvzbcE2MqljY7diU= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -871,6 +878,12 @@ github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFg github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/crate-crypto/go-eth-kzg v1.3.0 h1:05GrhASN9kDAidaFJOda6A4BEvgvuXbazXg/0E3OOdI= +github.com/crate-crypto/go-eth-kzg v1.3.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= +github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg= +github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM= +github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= +github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlXuJEC996PL3tTAFks= github.com/creachadair/atomicfile v0.3.1 h1:yQORkHjSYySh/tv5th1dkKcn02NEW5JleB84sjt+W4Q= github.com/creachadair/atomicfile v0.3.1/go.mod h1:mwfrkRxFKwpNAflYZzytbSwxvbK6fdGRRlp0KEQc0qU= github.com/creachadair/tomledit v0.0.24 h1:5Xjr25R2esu1rKCbQEmjZYlrhFkDspoAbAKb6QKQDhQ= @@ -889,8 +902,8 @@ github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254 h github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 h1:6KPEi8dWkDSBddQb4NAvEXmNnTXymF3yVeTaT4Hz1iU= github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= -github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183 h1:JDBTqDkd9X9oBF2C4FKOpn0GVDQDzVkHzeS8eDWNl6A= -github.com/crypto-org-chain/go-ethereum v1.10.20-0.20241030073450-b9cc632bc183/go.mod h1:5DnkptqPQr+Mo3sy/2V3OQu+K94x1PVzFGZJZbDF8mI= +github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250812022812-0af6c9899f11 h1:PxE460wd3qG+nkuy+W90gZO06PumOPaPbXeKOAMxBp8= +github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250812022812-0af6c9899f11/go.mod h1:mf8YiHIb0GR4x4TipcvBUPxJLw1mFdmxzoDi11sDRoI= github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs= github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -898,8 +911,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set/v2 v2.1.0 h1:g47V4Or+DUdzbs8FxCCmgb6VYd+ptPAngjM6dtGktsI= -github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U0x++OzVrdms8= github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= @@ -926,8 +939,8 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7 h1:kgvzE5wLsLa7XKfV85VZl40QXaMCaeFtHpPwJ8fhotY= -github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7/go.mod h1:yRkwfj0CBpOGre+TwBsqPV0IH0Pk73e4PXJOeNDboGs= +github.com/dop251/goja v0.0.0-20230605162241-28ee0ee714f3 h1:+3HCtB74++ClLy8GgjUQYeC8R4ILzVcIe8+5edAJJnE= +github.com/dop251/goja v0.0.0-20230605162241-28ee0ee714f3/go.mod h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4= github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -939,7 +952,6 @@ github.com/dvsekhvalnov/jose2go v1.7.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A= github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= @@ -967,14 +979,16 @@ github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0+ github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/ethereum/c-kzg-4844/v2 v2.1.0 h1:gQropX9YFBhl3g4HYhwE70zq3IHFRgbbNPw0Shwzf5w= +github.com/ethereum/c-kzg-4844/v2 v2.1.0/go.mod h1:TC48kOKjJKPbN7C++qIgt0TJzZ70QznYR7Ob+WXl57E= +github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= +github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= @@ -987,8 +1001,6 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/getsentry/sentry-go v0.33.0 h1:YWyDii0KGVov3xOaamOnF0mjOrqSjBqwv48UEzn7QFg= github.com/getsentry/sentry-go v0.33.0/go.mod h1:C55omcY9ChRQIUcVcGcs+Zdy4ZpQGvNJ7JYHIoSWOtE= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -1026,8 +1038,9 @@ github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= @@ -1038,8 +1051,6 @@ github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyL github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= -github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= @@ -1063,8 +1074,8 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= +github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= @@ -1165,11 +1176,13 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1274,6 +1287,8 @@ github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8 github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU= github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA= @@ -1284,14 +1299,14 @@ github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0Jr github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w= github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= -github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= -github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= +github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -1359,6 +1374,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4= +github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= @@ -1415,6 +1432,9 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -1496,6 +1516,16 @@ github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pion/dtls/v2 v2.2.7 h1:cSUBsETxepsCSFSxC3mc/aDo14qQLMSL+O6IjG28yV8= +github.com/pion/dtls/v2 v2.2.7/go.mod h1:8WiMkebSHFD0T+dIU+UeBaoV7kDhOW5oDCzZ7WZ/F9s= +github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= +github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= +github.com/pion/stun/v2 v2.0.0 h1:A5+wXKLAypxQri59+tmQKVs7+l6mMM+3d+eER9ifRU0= +github.com/pion/stun/v2 v2.0.0/go.mod h1:22qRSh08fSEttYUmJZGlriq9+03jtVmXNODgLccj8GQ= +github.com/pion/transport/v2 v2.2.1 h1:7qYnCBlpgSJNYMbLCKuSY9KbQdBFoETvPNETv0y4N7c= +github.com/pion/transport/v2 v2.2.1/go.mod h1:cXXWavvCnFF6McHTft3DWS9iic2Mftcz1Aq29pGcU5g= +github.com/pion/transport/v3 v3.0.1 h1:gDTlPJwROfSfz6QfSi0ZmeCSkFcnWWiiR9ES0ouANiM= +github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9SzK5f5xE0= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1640,6 +1670,8 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/supranational/blst v0.3.14 h1:xNMoHRJOTwMn63ip6qoWJ2Ymgvj7E2b9jY2FAwY+qRo= +github.com/supranational/blst v0.3.14/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= @@ -1655,10 +1687,10 @@ github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw= -github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk= -github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o= -github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= @@ -1673,11 +1705,11 @@ github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0o github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.17.2-0.20221006022127-8f469abc00aa h1:5SqCsI/2Qya2bCzK15ozrqo2sZxkh0FHynJZOTVoV6Q= -github.com/urfave/cli/v2 v2.17.2-0.20221006022127-8f469abc00aa/go.mod h1:1CNUng3PtjQMtRzJO4FMXBQvkGtuYRxxiR9xMa7jMwI= +github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w= +github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1769,6 +1801,8 @@ golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= @@ -1910,6 +1944,7 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= @@ -2029,7 +2064,6 @@ golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2077,7 +2111,9 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -2095,6 +2131,7 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= @@ -2117,6 +2154,7 @@ golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= @@ -2516,10 +2554,8 @@ gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= @@ -2593,6 +2629,8 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8 rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/gomod2nix.toml b/gomod2nix.toml index 2b7364ad4a..56282de30c 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -2,8 +2,8 @@ schema = 3 [mod] [mod."cel.dev/expr"] - version = "v0.23.0" - hash = "sha256-s8lgDeGbKpZDfPJHh/+VTJEW8Wt+aMVeCf1YZwc8SY0=" + version = "v0.24.0" + hash = "sha256-tg5zUJByc0QtiN3/dVxSH+6K7Bk/tLwzLBd7JjNs3iY=" [mod."cloud.google.com/go"] version = "v0.116.0" hash = "sha256-e62GvNveg3bRi4O+eBARqgQ2sinobx+SVGR9WE7jKgs=" @@ -14,8 +14,8 @@ schema = 3 version = "v0.2.7" hash = "sha256-U+pXaY0kPnSeBzHWxELZ75bZnb74nygwIVZDdXYcP5g=" [mod."cloud.google.com/go/compute/metadata"] - version = "v0.6.0" - hash = "sha256-E8/cwio4xR8buCryR4HwR7+agb4M3zqgXSm7rBglmIY=" + version = "v0.7.0" + hash = "sha256-jJZDW+hibqjMiY8OiJhgJALbGwEq+djLOxfYR7upQyE=" [mod."cloud.google.com/go/iam"] version = "v1.2.2" hash = "sha256-LcGHudwmL20n0w1V6k1e28ffhGQ/jpwmdn7mVDPKnTI=" @@ -32,23 +32,26 @@ schema = 3 version = "v2.0.0-beta.5" hash = "sha256-zivawuJLLbNn0zE9FRWjCtrpks7vlDprQ7DbNKqhwWc=" [mod."cosmossdk.io/collections"] - version = "v0.4.0" - hash = "sha256-minFyzgO/D+Oda4E3B1qvOAN5qd65SjS6nmjca4cp/8=" + version = "v1.2.0" + hash = "sha256-VJxhGs/2pQ/mZSz97am5UfNI5z4YcCrCou4hGC450LQ=" [mod."cosmossdk.io/core"] - version = "v0.11.1" - hash = "sha256-A857PYFy22B43qo8raLkstLOao7RRltt6TB+s3ZuuM4=" + version = "v0.11.3" + hash = "sha256-DLleHDkcmjLh4Enkrd9aM7ZCVjvHW0OVnb3LqXxqk9Y=" [mod."cosmossdk.io/depinject"] version = "v1.2.0" hash = "sha256-VZTSVdX5UCCqSysJhS8DCNOeGYDDD9CCZgc7WbmUJQM=" [mod."cosmossdk.io/errors"] - version = "v1.0.1" - hash = "sha256-MgTocXkBzri9FKkNtkARJXPmxRrRO/diQJS5ZzvYrJY=" + version = "v1.0.2" + hash = "sha256-ZgO21iLMf6JN740JQizNI0v1mogNUTc77CXrUVSvDcg=" [mod."cosmossdk.io/log"] - version = "v1.4.1" - hash = "sha256-pgI770MdI/OfZcK6UFmQ9iyPBgapz/ErrUe8WVO3iBg=" + version = "v1.5.1" + hash = "sha256-0k5Njvo59BHi923/+frZmPZnzc7ebXaMi0+MpNFLu0A=" [mod."cosmossdk.io/math"] - version = "v1.4.0" - hash = "sha256-qMGiZh9GJg/5b8o7qe0dKoukB/XM+lxDC00MhCfGv28=" + version = "v1.5.3" + hash = "sha256-8jBAGa0D9EYBzn9SxiJNZwj3ChFtX03oow8BEP7dIU4=" + [mod."cosmossdk.io/schema"] + version = "v1.1.0" + hash = "sha256-AXXiVWQsEEWe4eRwbFuLsF/dU0dnnK56Zz7e64fLGFA=" [mod."cosmossdk.io/store"] version = "v0.0.0-20241217090828-cfbca9fe8254" hash = "sha256-0c5h9pwaR3ZlmA3pnme39K8zn9WyrI1C1GRRDVH39Ug=" @@ -67,8 +70,8 @@ schema = 3 hash = "sha256-3A5GTl5NRD4zH3PsSd450C6HvU2zi4I7b4Zqu+L9YAo=" replaced = "github.com/crypto-org-chain/cosmos-sdk/x/tx" [mod."cosmossdk.io/x/upgrade"] - version = "v0.1.4" - hash = "sha256-lm0Ccc9zWs1ldWv1cArXuzRxq45zMir1ZNvoPY+9n7o=" + version = "v0.2.0" + hash = "sha256-jLxbW8D1PBG3wJICbiBydwiwLJLn9Ksal5XmJiMM8gk=" [mod."filippo.io/edwards25519"] version = "v1.1.0" hash = "sha256-9ACANrgWZSd5HYPfDZHY8DVbPSC9LOMgy8deq3rDOoc=" @@ -104,11 +107,11 @@ schema = 3 version = "v0.0.0-20170810143723-de5bf2ad4578" hash = "sha256-nL0/0QM0Pec83vBlwXvQ8g5SvvZnCQgzD1apxfHNGlg=" [mod."github.com/StackExchange/wmi"] - version = "v0.0.0-20180116203802-5d049714c4a6" - hash = "sha256-0yUxhZB3v3ZE3QY36zHs2cJ1S4GXptXIhyAi6sI2nOo=" + version = "v1.2.1" + hash = "sha256-1BoEeWAWyebH+1mMuyPhWZut8nWHb6r73MgcqlGuUEY=" [mod."github.com/VictoriaMetrics/fastcache"] - version = "v1.6.0" - hash = "sha256-u1dkRJ2Y5+hnYlkyMPm14HxKkAv999bjN622nZDjaBo=" + version = "v1.12.2" + hash = "sha256-vwLRs852HD8awlX4ksv/XBYmRqRF1844lPrvSO74SB0=" [mod."github.com/allegro/bigcache"] version = "v1.2.1" hash = "sha256-/DwqBxg75m1zzOB8BWbpjQ/jYnhoe/SMXc4310mOlMA=" @@ -125,8 +128,8 @@ schema = 3 version = "v0.2.0" hash = "sha256-Tx3sPuhsoVwrCfJdIwf4ipn7pD92OQNYvpCxl1Z9Wt0=" [mod."github.com/bits-and-blooms/bitset"] - version = "v1.17.0" - hash = "sha256-CJT78VMr79MjQKsZW51Y3RxvBmN8ntq+O1o82zxJBBc=" + version = "v1.20.0" + hash = "sha256-X6F8PBnuJVUetLfYoRDSyKIH84jknNoltDJE41aYOdQ=" [mod."github.com/btcsuite/btcd"] version = "v0.24.2" hash = "sha256-ahlpwEr4KfyrEA899X07QtuSDnC8U+SnwL+z72DiK5E=" @@ -139,6 +142,12 @@ schema = 3 [mod."github.com/btcsuite/btcd/chaincfg/chainhash"] version = "v1.1.0" hash = "sha256-F+EqvufC+KBslZV/vL8ph6MqDoVD5ic5rVaM27reDqo=" + [mod."github.com/bytedance/sonic"] + version = "v1.13.2" + hash = "sha256-IF2qmt4IxTwivMWHUJC8sg6d85/ORb2SWvJ54fvoAMI=" + [mod."github.com/bytedance/sonic/loader"] + version = "v0.2.4" + hash = "sha256-rv9LnePpm4OspSVbfSoVbohXzhu+dxE1BH1gm3mTmTc=" [mod."github.com/cenkalti/backoff/v4"] version = "v4.3.0" hash = "sha256-wfVjNZsGG1WoNC5aL+kdcy6QXPgZo4THAevZ1787md8=" @@ -148,9 +157,12 @@ schema = 3 [mod."github.com/chzyer/readline"] version = "v1.5.1" hash = "sha256-6wKd6/JZ9/O7FwSyNKE3KOt8fVPZEunqbTHQUxlOUNc=" + [mod."github.com/cloudwego/base64x"] + version = "v0.1.5" + hash = "sha256-MyUYTveN48DhnL8mwAgCRuMExLct98uzSPsmYlfaa4I=" [mod."github.com/cncf/xds/go"] - version = "v0.0.0-20250326154945-ae57f3c0d45f" - hash = "sha256-lNqxhd49Wz+ia6ZQSOWziqlDmtEM67FOtHDNSxm6hgc=" + version = "v0.0.0-20250501225837-2ac532fd4443" + hash = "sha256-aKQnsb3cvzaZhw455HE26OMVoG6XkXNaCEc61Z9MzTY=" [mod."github.com/cockroachdb/apd/v2"] version = "v2.0.2" hash = "sha256-UrPHkvqVF8V78+kXKmjTHl79XsgDBnqFsje5BMYh0E4=" @@ -182,12 +194,18 @@ schema = 3 [mod."github.com/cometbft/cometbft-db"] version = "v0.15.0" hash = "sha256-hNtUoPsgrsc9MhU7AONKMOB6k4bEbg757BSXVp7G5EA=" + [mod."github.com/consensys/bavard"] + version = "v0.1.27" + hash = "sha256-qRbdMAIcsg/2RCkmyfUtsFc/R99n50epZtTjX6QaWac=" + [mod."github.com/consensys/gnark-crypto"] + version = "v0.16.0" + hash = "sha256-Yq7cCmfiNdnX5Vl0oW9/wioxi9hOkXBWCB4pvHu4/fw=" [mod."github.com/cosmos/btcutil"] version = "v1.0.5" hash = "sha256-t572Sr5iiHcuMKLMWa2i+LBAt192oa+G1oA371tG/eI=" [mod."github.com/cosmos/cosmos-db"] - version = "v1.1.1" - hash = "sha256-4YHCcKengdmFEFBcJMgHooL4JMD7Mq8Wp4yanLjZtzo=" + version = "v1.1.3" + hash = "sha256-5V/Dvf4WstXzp3S/EX3Bh9x0MHUpMbjxuJICfad/y6Q=" [mod."github.com/cosmos/cosmos-proto"] version = "v1.0.0-beta.5" hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg=" @@ -222,6 +240,12 @@ schema = 3 [mod."github.com/cosmos/rosetta-sdk-go"] version = "v0.10.0" hash = "sha256-WmLq9E9mYV+ms6Tdb43lCoAy6cowkDnK4bvX/ApDzLY=" + [mod."github.com/crate-crypto/go-eth-kzg"] + version = "v1.3.0" + hash = "sha256-gDzeqRv6MxBcCOrcR1pDZgGFr1BwTKY8cutVWquRaK4=" + [mod."github.com/crate-crypto/go-ipa"] + version = "v0.0.0-20240724233137-53bbb0ceb27a" + hash = "sha256-LQqXqcuo3mRwRgdO4O5rLLJqW635KCAD0tcdOImk0rA=" [mod."github.com/creachadair/atomicfile"] version = "v0.3.1" hash = "sha256-GEp1gRxKfBYI6K0XbElcVYcJMPu6eeLufaYxr7Z0MAQ=" @@ -238,8 +262,8 @@ schema = 3 version = "v1.1.2-0.20180830191138-d8f796af33cc" hash = "sha256-fV9oI51xjHdOmEx6+dlq7Ku2Ag+m/bmbzPo6A4Y74qc=" [mod."github.com/deckarep/golang-set/v2"] - version = "v2.1.0" - hash = "sha256-Co6gfAcVn256IUEJNNPmVlx8LZRI4sT+KmqGs2uIQ90=" + version = "v2.6.0" + hash = "sha256-ni1XK75Q8iBBmxgoyZTedP4RmrUPzFC4978xB4HKdfs=" [mod."github.com/decred/dcrd/dcrec/secp256k1/v4"] version = "v4.4.0" hash = "sha256-qrhEIwhDll3cxoVpMbm1NQ9/HTI42S7ms8Buzlo5HCg=" @@ -256,17 +280,14 @@ schema = 3 version = "v1.7.0" hash = "sha256-Z/M62esiZ0fVwvueVQhwz18z0eS22LZ3DJ4O8FKp3AY=" [mod."github.com/dop251/goja"] - version = "v0.0.0-20230122112309-96b1610dd4f7" - hash = "sha256-iKN5Eqr61dDSipTfdf8gd5Va+rSfsKdlDteAkjZXq2g=" + version = "v0.0.0-20230605162241-28ee0ee714f3" + hash = "sha256-dm3HFq1Y+eRt3SGQKTQd5h8BQnPqf4l4/3KD1s95HKY=" [mod."github.com/dustin/go-humanize"] version = "v1.0.1" hash = "sha256-yuvxYYngpfVkUg9yAmG99IUVmADTQA0tMbBXe0Fq0Mc=" [mod."github.com/dvsekhvalnov/jose2go"] version = "v1.7.0" hash = "sha256-kBuUrroBiwDTaO7JGo5bh6nEMNkICSjg2dFZQMGM7Q0=" - [mod."github.com/edsrzf/mmap-go"] - version = "v1.0.0" - hash = "sha256-k1DYvCqO3BKNcGEve/nMW0RxzMkK2tGfXbUbycqcVSo=" [mod."github.com/emicklei/dot"] version = "v1.6.2" hash = "sha256-X7aNKLKZ7pJBG/wdP+TWuQnlNLNdbUDd+kC5kF4uBtU=" @@ -276,10 +297,16 @@ schema = 3 [mod."github.com/envoyproxy/protoc-gen-validate"] version = "v1.2.1" hash = "sha256-1ARLFfk23TFvOUxXhlMJ757SgClmNtWaqj/T7g/2Z70=" + [mod."github.com/ethereum/c-kzg-4844/v2"] + version = "v2.1.0" + hash = "sha256-ZHAbUWu8EfYyFMjFPKfiqFRMnG7VrPNkGFCpYzs2Euo=" [mod."github.com/ethereum/go-ethereum"] - version = "v1.10.20-0.20241030073450-b9cc632bc183" - hash = "sha256-5nh0HZOZwlZBMmHv08BELlNfDZyq5zwq65ByyMzOetA=" + version = "v1.10.20-0.20250812022812-0af6c9899f11" + hash = "sha256-lhWHBFR62qcItksCkDNl+Io0OOvkKS8t91Zm1fU6CMg=" replaced = "github.com/crypto-org-chain/go-ethereum" + [mod."github.com/ethereum/go-verkle"] + version = "v0.2.2" + hash = "sha256-0MLfSJKdeK3Z7tWAXTdzwB4091dmyxIX38S5SKH5QAw=" [mod."github.com/fatih/color"] version = "v1.17.0" hash = "sha256-QsKMy3MsvjbYNcA9jP8w6c3wpmWDZ0079bybAEzmXR0=" @@ -289,9 +316,6 @@ schema = 3 [mod."github.com/fsnotify/fsnotify"] version = "v1.9.0" hash = "sha256-WtpE1N6dpHwEvIub7Xp/CrWm0fd6PX7MKA4PV44rp2g=" - [mod."github.com/gballet/go-libpcsclite"] - version = "v0.0.0-20190607065134-2772fd86a8ff" - hash = "sha256-Nr5ocU9s1F2Lhx/Zq6/nIo+KkKEqMjDYOEs3yWRC48g=" [mod."github.com/getsentry/sentry-go"] version = "v0.33.0" hash = "sha256-pu9akz2POlvlU7ynCSyOKhafByB+jsQm/8uYKJjrtds=" @@ -308,26 +332,23 @@ schema = 3 version = "v0.6.0" hash = "sha256-RtIG2qARd5sT10WQ7F3LR8YJhS8exs+KiuUiVf75bWg=" [mod."github.com/go-logr/logr"] - version = "v1.4.2" - hash = "sha256-/W6qGilFlZNTb9Uq48xGZ4IbsVeSwJiAMLw4wiNYHLI=" + version = "v1.4.3" + hash = "sha256-Nnp/dEVNMxLp3RSPDHZzGbI8BkSNuZMX0I0cjWKXXLA=" [mod."github.com/go-logr/stdr"] version = "v1.2.2" hash = "sha256-rRweAP7XIb4egtT1f2gkz4sYOu7LDHmcJ5iNsJUd0sE=" [mod."github.com/go-ole/go-ole"] - version = "v1.2.6" - hash = "sha256-+oxitLeJxYF19Z6g+6CgmCHJ1Y5D8raMi2Cb3M6nXCs=" + version = "v1.3.0" + hash = "sha256-tF8t3VcV71jQ4jbPL91BwR59AKDpUAFV1waIKzkXJu8=" [mod."github.com/go-sourcemap/sourcemap"] version = "v2.1.3+incompatible" hash = "sha256-eXhXPPLnAy/rmt/zDgeqni2G3o58UtnHjR8vHLXvISI=" - [mod."github.com/go-stack/stack"] - version = "v1.8.1" - hash = "sha256-ixcJ2RrK1ZH3YWGQZF9QFBo02NOuLeSp9wJ7gniipgY=" [mod."github.com/go-task/slim-sprig/v3"] version = "v3.0.0" hash = "sha256-vCCw4MXVBm33VNLXcOBccVDD1CSnzDvDdWB6w5FN1cA=" [mod."github.com/go-viper/mapstructure/v2"] - version = "v2.2.1" - hash = "sha256-3BcbxiZQp3eglk+vaYnRIDGT4dQ9K8aLrTPODbToI/Q=" + version = "v2.3.0" + hash = "sha256-1aAH3Iqp8ntSFoMT1NrgDBaKJ6UOjw/1/dzePIF2nR4=" [mod."github.com/godbus/dbus"] version = "v0.0.0-20190726142602-4481cbc300e2" hash = "sha256-R7Gb9+Zjy80FbQSDGketoVEqfdOQKuOVTfWRjQ5kxZY=" @@ -443,11 +464,11 @@ schema = 3 version = "v1.3.2" hash = "sha256-R5ZNDTQy6ELF5Z6BLK/DeMg1JqEtPkDNfFi9XOKmncY=" [mod."github.com/huandu/skiplist"] - version = "v1.2.0" - hash = "sha256-/r4QP1SldMlhpkr1ZQFHImSYaeMZEtqBW7R53yN+JtQ=" + version = "v1.2.1" + hash = "sha256-7/e0UOuykDWTINMFPV/yMQaFrhZuKyM1c7OQbJ6Fiyw=" [mod."github.com/huin/goupnp"] - version = "v1.0.3" - hash = "sha256-EMGmTdoQhP2bVbCPX37hes5krqXn6NFexfnKr9E5u8I=" + version = "v1.3.0" + hash = "sha256-/VTfjUhHLGuXymYBC1vQJv1N8O1AjYwC/xTGd6h3Uw0=" [mod."github.com/iancoleman/strcase"] version = "v0.3.0" hash = "sha256-lVOk4klrikSCUviR16qcyAr6eoIbniUSfsLFOE1ZLpk=" @@ -469,6 +490,9 @@ schema = 3 [mod."github.com/klauspost/compress"] version = "v1.18.0" hash = "sha256-jc5pMU/HCBFOShMcngVwNMhz9wolxjOb579868LtOuk=" + [mod."github.com/klauspost/cpuid/v2"] + version = "v2.2.10" + hash = "sha256-o21Tk5sD7WhhLUoqSkymnjLbzxl0mDJCTC1ApfZJrC0=" [mod."github.com/kr/pretty"] version = "v0.3.1" hash = "sha256-DlER7XM+xiaLjvebcIPiB12oVNjyZHuJHoRGITzzpKU=" @@ -505,6 +529,9 @@ schema = 3 [mod."github.com/mitchellh/mapstructure"] version = "v1.5.0" hash = "sha256-ztVhGQXs67MF8UadVvG72G3ly0ypQW0IRDdOOkjYwoE=" + [mod."github.com/mmcloughlin/addchain"] + version = "v0.4.0" + hash = "sha256-zSWSSUElCVFH5mydFlF2mzn4Wsm1WHASRxQ5TKa+To8=" [mod."github.com/mtibben/percent"] version = "v0.2.1" hash = "sha256-Zj1lpCP6mKQ0UUTMs2By4LC414ou+iJzKkK+eBHfEcc=" @@ -524,14 +551,29 @@ schema = 3 version = "v2.23.4" hash = "sha256-AVq5cBqBhja/BMSMHqeLkXjmYV8+ddTRthiGWt28c38=" [mod."github.com/onsi/gomega"] - version = "v1.37.0" - hash = "sha256-PfHFYp365MwBo+CUZs+mN5QEk3Kqe9xrBX+twWfIc9o=" + version = "v1.38.0" + hash = "sha256-96uL3QlcQBpnyjMbKDBO2fgq+28ay/5IQjAEQ4jIGjI=" [mod."github.com/pelletier/go-toml/v2"] version = "v2.2.4" hash = "sha256-8qQIPldbsS5RO8v/FW/se3ZsAyvLzexiivzJCbGRg2Q=" [mod."github.com/petermattis/goid"] version = "v0.0.0-20240813172612-4fcff4a6cae7" hash = "sha256-tfb/0LbMHJQsmxwaj2RItXiYn2AVd05E92Z/vp+rJhs=" + [mod."github.com/pion/dtls/v2"] + version = "v2.2.7" + hash = "sha256-57RnGRwM1QMWkN5NJ5qr/ueb1EBNrgM0oQ8xs/5340s=" + [mod."github.com/pion/logging"] + version = "v0.2.2" + hash = "sha256-e/RKIPmZ6w3CehT7YzpAJLI65tcANZv82XfMXgJDXoU=" + [mod."github.com/pion/stun/v2"] + version = "v2.0.0" + hash = "sha256-ptqO5Q2UG6rm4AiAJsJ44gycR1OzFRtgNSns2GrQ/gY=" + [mod."github.com/pion/transport/v2"] + version = "v2.2.1" + hash = "sha256-PFATIBFtx8ze6Mgd/DVaOwRNIvjFU1lran3vpYr3gsg=" + [mod."github.com/pion/transport/v3"] + version = "v3.0.1" + hash = "sha256-oEvVvWna76mIIApHtOP6Uaz78SfiiNZyRwwPsnYNwA8=" [mod."github.com/pkg/errors"] version = "v0.9.1" hash = "sha256-mNfQtcrQmu3sNg/7IwiieKWOgFQOVVe2yXgKBpe/wZw=" @@ -566,8 +608,8 @@ schema = 3 version = "v1.11.1" hash = "sha256-0z4aFR5VjuVYn+XnANbjui0ADcdG7gU56A9Y/NtrzCQ=" [mod."github.com/rs/zerolog"] - version = "v1.33.0" - hash = "sha256-jT/Y/izhZiCdrDbC/ty83FGs8UQavTU+OW03O4vKFkY=" + version = "v1.34.0" + hash = "sha256-M503WwzPvqbOas3f70FQNXoWG17eV/XU6FubtB6P0uo=" [mod."github.com/sagikazarmark/locafero"] version = "v0.7.0" hash = "sha256-ZmaGOKHDw18jJqdkwQwSpUT11F9toR6KPs3241TONeY=" @@ -610,6 +652,9 @@ schema = 3 [mod."github.com/subosito/gotenv"] version = "v1.6.0" hash = "sha256-LspbjTniiq2xAICSXmgqP7carwlNaLqnCTQfw2pa80A=" + [mod."github.com/supranational/blst"] + version = "v0.3.14" + hash = "sha256-F5tJ88ggEQrIiLIzCpilHGQ+S1x3G9tNTI7VXxOum1s=" [mod."github.com/syndtr/goleveldb"] version = "v1.0.1-0.20210819022825-2ae1ddf74ef7" hash = "sha256-36a4hgVQfwtS2zhylKpQuFhrjdc/Y8pF0dxc26jcZIU=" @@ -634,11 +679,14 @@ schema = 3 version = "v1.2.5" hash = "sha256-OYGNolkmL7E1Qs2qrQ3IVpQp5gkcHNU/AB/z2O+Myps=" [mod."github.com/tklauser/go-sysconf"] - version = "v0.3.10" - hash = "sha256-Zf2NsgM9+HeM949vCce4HQtSbfUiFpeiQ716yKcFyx4=" + version = "v0.3.12" + hash = "sha256-91VBZNb3L2TZkEETF1AE4wnraLoGxKeofUbC5ZiWVHk=" [mod."github.com/tklauser/numcpus"] - version = "v0.4.0" - hash = "sha256-ndE82nOb3agubhEV7aRzEqqTlN4DPbKFHEm2+XZLn8k=" + version = "v0.6.1" + hash = "sha256-8eFcw4YI0w6+GPhU5xMMQjiio94q/O5PpNO3QsvXve0=" + [mod."github.com/twitchyliquid64/golang-asm"] + version = "v0.15.1" + hash = "sha256-HLk6oUe7EoITrNvP0y8D6BtIgIcmDZYtb/xl/dufIoY=" [mod."github.com/tyler-smith/go-bip39"] version = "v1.1.0" hash = "sha256-3YhWBtSwRLGwm7vNwqumphZG3uLBW1vwT9QkQ8JuSjU=" @@ -664,8 +712,8 @@ schema = 3 version = "v1.1.0" hash = "sha256-cA9qCCu8P1NSJRxgmpfkfa5rKyn9X+Y/9FSmSd5xjyo=" [mod."go.opentelemetry.io/contrib/detectors/gcp"] - version = "v1.35.0" - hash = "sha256-GAQl3P4/zjQaVZTPXUbOziYWt18qtEL7Z7xNa1zuMaU=" + version = "v1.36.0" + hash = "sha256-VFHLLEzIW9GoA/zhg4DGuJo2pr12sjitlUJ61F9CpN0=" [mod."go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"] version = "v0.58.0" hash = "sha256-OLDNgjHOItKSyzI3cWWZbMiap5QnULp3G4z8HhhJsrA=" @@ -673,77 +721,80 @@ schema = 3 version = "v0.58.0" hash = "sha256-iqTPHfR1wXZY/yVTWtRBMjWlZkRxasaBGNhsNWHYxGw=" [mod."go.opentelemetry.io/otel"] - version = "v1.35.0" - hash = "sha256-LHrBtBnyDtvJGtrXHMPIFe7U53B4bZzpePB4u8Xo4Bg=" + version = "v1.36.0" + hash = "sha256-j8wojdCtKal3LKojanHA8KXXQ0FkbWONpO8tUxpJDko=" [mod."go.opentelemetry.io/otel/metric"] - version = "v1.35.0" - hash = "sha256-K9I0LRZqSLrC09Cuk7tp0VEk3cUVDs8S5MGnu9jw92Q=" + version = "v1.36.0" + hash = "sha256-z6Uqi4HhUljWIYd58svKK5MqcGbpcac+/M8JeTrUtJ8=" [mod."go.opentelemetry.io/otel/sdk"] - version = "v1.35.0" - hash = "sha256-G1pNX57JVeUVaGD6QQgc6EeNCkAURVDalTnoyhVOK78=" + version = "v1.36.0" + hash = "sha256-rg8T1fsoU6WTHcfnbWgB8hOxiufXmOhNqXpxlqbJQK4=" [mod."go.opentelemetry.io/otel/sdk/metric"] - version = "v1.35.0" - hash = "sha256-Ncy9TLuY/fl2ko5ZVJOgt/1dXDV2nID+wuULXtVGM0Q=" + version = "v1.36.0" + hash = "sha256-kCJXX26+jXz/bFBpnNmFi6r+EusDXsy24tk7FgQbVgA=" [mod."go.opentelemetry.io/otel/trace"] - version = "v1.35.0" - hash = "sha256-HC2+OGDe2rg0+E8WymQbUNoc249NXM1gIBJzK4UhcQE=" + version = "v1.36.0" + hash = "sha256-owWD9x1lp8aIJqYt058BXPUsIMHdk3RI0escso0BxwA=" [mod."go.uber.org/automaxprocs"] version = "v1.6.0" hash = "sha256-a/Agm+kM9x+VRo0CYyTL3ipUYv9Glrc4NeGSZJdpobA=" [mod."go.uber.org/multierr"] version = "v1.11.0" hash = "sha256-Lb6rHHfR62Ozg2j2JZy3MKOMKdsfzd1IYTR57r3Mhp0=" + [mod."go.yaml.in/yaml/v2"] + version = "v2.4.2" + hash = "sha256-oC8RWdf1zbMYCtmR0ATy/kCkhIwPR9UqFZSMOKLVF/A=" + [mod."golang.org/x/arch"] + version = "v0.15.0" + hash = "sha256-EsCsTDmn+j3S8yzV4n2WJyDuYBDwIlj29M9OBxWNMGQ=" [mod."golang.org/x/crypto"] - version = "v0.39.0" - hash = "sha256-FtwjbVoAhZkx7F2hmzi9Y0J87CVVhWcrZzun+zWQLzc=" + version = "v0.40.0" + hash = "sha256-I6p2fqvz63P9MwAuoQrljI7IUbfZQvCem0ii4Q2zZng=" [mod."golang.org/x/exp"] - version = "v0.0.0-20240613232115-7f521ea00fb8" - hash = "sha256-QRK52QHPPhj+JIcQbd4/hI5ceEbKu3e9mR57XxocwOE=" + version = "v0.0.0-20250305212735-054e65f0b394" + hash = "sha256-Vgt/CNx/xJYxiKKu0PI7ZSiL/SOfXI4di3Mcyge3aw4=" [mod."golang.org/x/net"] - version = "v0.41.0" - hash = "sha256-6/pi8rNmGvBFzkJQXkXkMfL1Bjydhg3BgAMYDyQ/Uvg=" + version = "v0.42.0" + hash = "sha256-YxileisIIez+kcAI+21kY5yk0iRuEqti2YdmS8jvP2s=" [mod."golang.org/x/oauth2"] - version = "v0.28.0" - hash = "sha256-/0XLKnHvaMb6e8szNDq9be/DWPRGhaQDFhxyrDUdNUM=" + version = "v0.30.0" + hash = "sha256-btD7BUtQpOswusZY5qIU90uDo38buVrQ0tmmQ8qNHDg=" [mod."golang.org/x/sync"] - version = "v0.15.0" - hash = "sha256-Jf4ehm8H8YAWY6mM151RI5CbG7JcOFtmN0AZx4bE3UE=" + version = "v0.16.0" + hash = "sha256-sqKDRESeMzLe0jWGWltLZL/JIgrn0XaIeBWCzVN3Bks=" [mod."golang.org/x/sys"] - version = "v0.33.0" - hash = "sha256-wlOzIOUgAiGAtdzhW/KPl/yUVSH/lvFZfs5XOuJ9LOQ=" + version = "v0.34.0" + hash = "sha256-5rZ7p8IaGli5X1sJbfIKOcOEwY4c0yQhinJPh2EtK50=" [mod."golang.org/x/term"] - version = "v0.32.0" - hash = "sha256-4cM/vhb8EUrlfHidBRfjYEQlUQehXiydJN77YkQvAic=" + version = "v0.33.0" + hash = "sha256-BtYV1YkrvMTV7k3SVac1+0iv5vDUKHgBSJkeEFPmiH8=" [mod."golang.org/x/text"] - version = "v0.26.0" - hash = "sha256-N+27nBCyGvje0yCTlUzZoVZ0LRxx4AJ+eBlrFQVRlFQ=" + version = "v0.27.0" + hash = "sha256-VX0rOh6L3qIvquKSGjfZQFU8URNtGvkNvxE7OZtboW8=" [mod."golang.org/x/time"] - version = "v0.9.0" - hash = "sha256-ipaWVIk1+DZg0rfCzBSkz/Y6DEnB7xkX2RRYycHkhC0=" + version = "v0.10.0" + hash = "sha256-vnlAME3gDR6R4cbCmSYAlR1Rjc0yUpkufTOPNvCdf6Q=" [mod."golang.org/x/tools"] - version = "v0.33.0" - hash = "sha256-OcjT9lh/nxGS2/rElTu5yNE2cXa1fUzRlyl+yZ36b4Q=" + version = "v0.34.0" + hash = "sha256-UwxjYayFcN8il6e9s3UscRkPnZy9wE6NKGE0jS2mhG8=" [mod."google.golang.org/api"] - version = "v0.215.0" - hash = "sha256-2CWtf90fHlSbALjh2ru1azIz/3vrqWdhL97MNPX4zeg=" + version = "v0.222.0" + hash = "sha256-n1qxH8dqwl7Drry1H9bpQx7EeysceA98UrgEDxd1XEM=" [mod."google.golang.org/genproto"] version = "v0.0.0-20241118233622-e639e219e697" hash = "sha256-QcnHSM6CWo18f0rqeXHSCFaydwFp+nENjE8x/NErgEI=" [mod."google.golang.org/genproto/googleapis/api"] - version = "v0.0.0-20250324211829-b45e905df463" - hash = "sha256-LrX0JgU764DIDkJuL4HnarUYtp5nk5y9ZdjPTX+8qF0=" + version = "v0.0.0-20250528174236-200df99c418a" + hash = "sha256-VO7Rko8b/zO2sm6vML7hhxi9laPilt6JEab8xl4qIN8=" [mod."google.golang.org/genproto/googleapis/rpc"] - version = "v0.0.0-20250422160041-2d3770c4ea7f" + version = "v0.0.0-20250528174236-200df99c418a" hash = "sha256-WK7iDtAhH19NPe3TywTQlGjDawNaDKWnxhFL9PgVUwM=" [mod."google.golang.org/grpc"] - version = "v1.73.0" - hash = "sha256-LfVlwip++q2DX70RU6CxoXglx1+r5l48DwlFD05G11c=" + version = "v1.74.2" + hash = "sha256-tvYMdfu/ZQZRPZNmnQI4CZpg46CM8+mD49hw0gFheGs=" [mod."google.golang.org/protobuf"] version = "v1.36.6" hash = "sha256-lT5qnefI5FDJnowz9PEkAGylH3+fE+A3DJDkAyy9RMc=" - [mod."gopkg.in/natefinch/npipe.v2"] - version = "v2.0.0-20160621034901-c1b8fa8bdcce" - hash = "sha256-ytqeVZqn4kd2uc65HvEjPlpPA2VnBmPfu5DsFlO0o+g=" [mod."gopkg.in/yaml.v3"] version = "v3.0.1" hash = "sha256-FqL9TKYJ0XkNwJFnq9j0VvJ5ZUU1RvH/52h/f5bkYAU=" @@ -756,6 +807,9 @@ schema = 3 [mod."pgregory.net/rapid"] version = "v1.2.0" hash = "sha256-GT8thcMb5IH7KSFiK7p2IpThK9daDvZwqOGAP8eELko=" + [mod."rsc.io/tmplfunc"] + version = "v0.0.3" + hash = "sha256-Kii+7DxaSzzn2NphVcEk0W42TXMBFINtm3+B2t7e0cc=" [mod."sigs.k8s.io/yaml"] - version = "v1.4.0" - hash = "sha256-Hd/M0vIfIVobDd87eb58p1HyVOjYWNlGq2bRXfmtVno=" + version = "v1.6.0" + hash = "sha256-49hg7IVPzwxeovp+HTMiWa/10NMMTSTjAdCmIv6p9dw=" diff --git a/nix/build_overlay.nix b/nix/build_overlay.nix index de6a413166..785d5f05ca 100644 --- a/nix/build_overlay.nix +++ b/nix/build_overlay.nix @@ -10,10 +10,10 @@ let in { go_1_23 = super.go_1_23.overrideAttrs (old: rec { - version = "1.23.10"; + version = "1.23.12"; src = final.fetchurl { url = "https://go.dev/dl/go${version}.src.tar.gz"; - hash = "sha256-gAp64b/xeaIntlOi9kRRfIAEQ7i0q/MnOvXhy3ET3lk="; + hash = "sha256-4czpN5ok6JVxSkEsfd0VfSYU2e2+g6hESbbhhAtPEiY="; }; # https://github.com/NixOS/nixpkgs/pull/372367 patches = replaceLast ./go_no_vendor_checks-1.23.patch old.patches; diff --git a/nix/default.nix b/nix/default.nix index ed31212e92..6eb224bfae 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -9,7 +9,7 @@ import sources.nixpkgs { go-ethereum = pkgs.callPackage ./go-ethereum.nix { inherit (pkgs.darwin) libobjc; inherit (pkgs.darwin.apple_sdk.frameworks) IOKit; - buildGoModule = pkgs.buildGo122Module; + buildGoModule = pkgs.buildGo123Module; }; }) # update to a version that supports eip-1559 (import "${sources.poetry2nix}/overlay.nix") diff --git a/nix/go-ethereum.nix b/nix/go-ethereum.nix index d40c65dcd6..061b02008d 100644 --- a/nix/go-ethereum.nix +++ b/nix/go-ethereum.nix @@ -10,16 +10,19 @@ let in buildGoModule rec { pname = "go-ethereum"; - version = "1.11.6"; + # Use the old estimateGas implementation + # https://github.com/crypto-org-chain/go-ethereum/commits/release/1.15-estimateGas/ + version = "1c9b194657000b1593a6162a0d889b801548bf27"; src = fetchFromGitHub { - owner = "ethereum"; + owner = "crypto-org-chain"; repo = pname; - rev = "v${version}"; - sha256 = "sha256-mZ11xan3MGgaUORbiQczKrXSrxzjvQMhZbpHnEal11Y="; + rev = version; + sha256 = "sha256-+uAvVB3uoE7dRfm3hrJOZeuboyeU4RJYD0uUxEYH3X0="; }; - vendorHash = "sha256-rjSGR2ie5sFK2OOo4HUZ6+hrDlQuUDtyTKn0sh8jFBY="; + proxyVendor = true; + vendorHash = "sha256-R9Qg6estiyjMAwN6tvuN9ZuE7+JqjEy+qYOPAg5lIJY="; doCheck = false; @@ -33,15 +36,13 @@ buildGoModule rec { subPackages = [ "cmd/abidump" "cmd/abigen" - "cmd/bootnode" - "cmd/checkpoint-admin" + "cmd/blsync" "cmd/clef" "cmd/devp2p" + "cmd/era" "cmd/ethkey" "cmd/evm" - "cmd/faucet" "cmd/geth" - "cmd/p2psim" "cmd/rlpdump" "cmd/utils" ]; @@ -53,6 +54,12 @@ buildGoModule rec { propagatedBuildInputs = lib.optionals stdenv.isDarwin [ libobjc IOKit ]; + # Add missing dependencies for HID support on Darwin + buildInputs = lib.optionals stdenv.isDarwin [ + libobjc + IOKit + ]; + passthru.tests = { inherit (nixosTests) geth; }; meta = with lib; { diff --git a/rpc/backend/backend_suite_test.go b/rpc/backend/backend_suite_test.go index a7419524ad..153dd17625 100644 --- a/rpc/backend/backend_suite_test.go +++ b/rpc/backend/backend_suite_test.go @@ -136,7 +136,7 @@ func (suite *BackendTestSuite) buildFormattedBlock( root := common.Hash{}.Bytes() receipt := ethtypes.NewReceipt(root, false, gasUsed.Uint64()) - bloom := ethtypes.CreateBloom(ethtypes.Receipts{receipt}) + bloom := ethtypes.CreateBloom(receipt) ethRPCTxs := []interface{}{} if tx != nil { diff --git a/rpc/backend/blocks.go b/rpc/backend/blocks.go index 73dd7d481b..2ef537cd1e 100644 --- a/rpc/backend/blocks.go +++ b/rpc/backend/blocks.go @@ -608,6 +608,11 @@ func (b *Backend) EthBlockFromTendermintBlock( } // TODO: add tx receipts - ethBlock := ethtypes.NewBlock(ethHeader, txs, nil, nil, trie.NewStackTrie(nil)) + ethBlock := ethtypes.NewBlock( + ethHeader, + ðtypes.Body{Transactions: txs, Uncles: nil, Withdrawals: nil}, + nil, + trie.NewStackTrie(nil), + ) return ethBlock, nil } diff --git a/rpc/backend/blocks_test.go b/rpc/backend/blocks_test.go index 9b84939cae..bf186b2221 100644 --- a/rpc/backend/blocks_test.go +++ b/rpc/backend/blocks_test.go @@ -1081,7 +1081,7 @@ func (suite *BackendTestSuite) TestGetEthBlockFromTendermint() { root := common.Hash{}.Bytes() receipt := ethtypes.NewReceipt(root, false, gasUsed.Uint64()) - bloom := ethtypes.CreateBloom(ethtypes.Receipts{receipt}) + bloom := ethtypes.CreateBloom(receipt) ethRPCTxs := []interface{}{} @@ -1480,10 +1480,11 @@ func (suite *BackendTestSuite) TestEthBlockByNumber() { sdkmath.NewInt(1).BigInt(), validator, ), - []*ethtypes.Transaction{}, - nil, - nil, + ðtypes.Body{ + Transactions: []*ethtypes.Transaction{}, + }, nil, + trie.NewStackTrie(nil), ), true, }, @@ -1508,8 +1509,9 @@ func (suite *BackendTestSuite) TestEthBlockByNumber() { sdkmath.NewInt(1).BigInt(), validator, ), - []*ethtypes.Transaction{msgEthereumTx.AsTransaction()}, - nil, + ðtypes.Body{ + Transactions: []*ethtypes.Transaction{msgEthereumTx.AsTransaction()}, + }, nil, trie.NewStackTrie(nil), ), @@ -1581,10 +1583,11 @@ func (suite *BackendTestSuite) TestEthBlockFromTendermintBlock() { sdkmath.NewInt(1).BigInt(), validator, ), - []*ethtypes.Transaction{}, - nil, - nil, + ðtypes.Body{ + Transactions: []*ethtypes.Transaction{}, + }, nil, + trie.NewStackTrie(nil), ), true, }, @@ -1618,8 +1621,9 @@ func (suite *BackendTestSuite) TestEthBlockFromTendermintBlock() { sdkmath.NewInt(1).BigInt(), validator, ), - []*ethtypes.Transaction{msgEthereumTx.AsTransaction()}, - nil, + ðtypes.Body{ + Transactions: []*ethtypes.Transaction{msgEthereumTx.AsTransaction()}, + }, nil, trie.NewStackTrie(nil), ), diff --git a/rpc/backend/chain_info.go b/rpc/backend/chain_info.go index 4f9d4c4d67..96ba5193cb 100644 --- a/rpc/backend/chain_info.go +++ b/rpc/backend/chain_info.go @@ -17,6 +17,7 @@ package backend import ( "fmt" + "math" "math/big" "strconv" "sync" @@ -28,7 +29,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" errortypes "github.com/cosmos/cosmos-sdk/types/errors" "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/common/math" + gethmath "github.com/ethereum/go-ethereum/common/math" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc" @@ -172,7 +173,7 @@ var ( // FeeHistory returns data relevant for fee estimation based on the specified range of blocks. func (b *Backend) FeeHistory( - userBlockCount math.HexOrDecimal64, // number blocks to fetch, maximum is 100 + userBlockCount gethmath.HexOrDecimal64, // number blocks to fetch, maximum is 100 lastBlock rpc.BlockNumber, // the block to start search , to oldest rewardPercentiles []float64, // percentiles to fetch reward ) (*rpctypes.FeeHistoryResult, error) { @@ -193,10 +194,18 @@ func (b *Backend) FeeHistory( return nil, err } blockEnd := int64(lastBlock) - if blockEnd < 0 { + switch lastBlock { + case rpc.EarliestBlockNumber: + blockEnd = 0 + case rpc.LatestBlockNumber, rpc.PendingBlockNumber, rpc.SafeBlockNumber, rpc.FinalizedBlockNumber: blockEnd = blockNumber - } else if blockNumber < blockEnd { - return nil, fmt.Errorf("%w: requested %d, head %d", errRequestBeyondHead, blockEnd, blockNumber) + default: + if blockEnd < 0 { + return nil, fmt.Errorf("invalid block number: %d", blockEnd) + } + if blockNumber < blockEnd { + return nil, fmt.Errorf("%w: requested %d, head %d", errRequestBeyondHead, blockEnd, blockNumber) + } } blocks, err := ethermint.SafeInt64(uint64(userBlockCount)) diff --git a/rpc/backend/sign_tx.go b/rpc/backend/sign_tx.go index 1727120003..e5c518737f 100644 --- a/rpc/backend/sign_tx.go +++ b/rpc/backend/sign_tx.go @@ -64,7 +64,13 @@ func (b *Backend) SendTransaction(args evmtypes.TransactionArgs) (common.Hash, e return common.Hash{}, err } - signer := ethtypes.MakeSigner(b.ChainConfig(), new(big.Int).SetUint64(uint64(bn))) + header, err := b.CurrentHeader() + if err != nil { + b.logger.Debug("failed to fetch latest block header", "error", err.Error()) + return common.Hash{}, err + } + + signer := ethtypes.MakeSigner(b.ChainConfig(), new(big.Int).SetUint64(uint64(bn)), header.Time) // Sign transaction if err := msg.Sign(signer, b.clientCtx.Keyring); err != nil { diff --git a/rpc/backend/tx_info.go b/rpc/backend/tx_info.go index 35d4ea0719..31a30003f8 100644 --- a/rpc/backend/tx_info.go +++ b/rpc/backend/tx_info.go @@ -251,11 +251,21 @@ func (b *Backend) GetTransactionReceipt(hash common.Hash, resBlock *tmrpctypes.R if err != nil { return nil, err } + + // create the logs bloom + var bloom ethtypes.Bloom + for _, log := range logs { + bloom.Add(log.Address.Bytes()) + for _, b := range log.Topics { + bloom.Add(b[:]) + } + } + receipt := map[string]interface{}{ // Consensus fields: These fields are defined by the Yellow Paper "status": status, "cumulativeGasUsed": hexutil.Uint64(cumulativeGasUsed), - "logsBloom": ethtypes.BytesToBloom(ethtypes.LogsBloom(logs)), + "logsBloom": ethtypes.BytesToBloom(bloom.Bytes()), "logs": logs, // Implementation fields: These fields are added by geth when processing a transaction. diff --git a/rpc/backend/utils.go b/rpc/backend/utils.go index db5b3b6f4b..7d0082326c 100644 --- a/rpc/backend/utils.go +++ b/rpc/backend/utils.go @@ -30,7 +30,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/common/math" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/params" @@ -147,8 +146,7 @@ func CalcBaseFee(config *params.ChainConfig, parent *ethtypes.Header, p feemarke num.Mul(num, parent.BaseFee) num.Div(num, denom.SetUint64(parentGasTarget)) num.Div(num, denom.SetUint64(uint64(p.BaseFeeChangeDenominator))) - baseFeeDelta := math.BigMax(num, common.Big1) - + baseFeeDelta := ethermint.BigMax(num, common.Big1) return num.Add(parent.BaseFee, baseFeeDelta), nil } @@ -160,7 +158,7 @@ func CalcBaseFee(config *params.ChainConfig, parent *ethtypes.Header, p feemarke num.Div(num, denom.SetUint64(uint64(p.BaseFeeChangeDenominator))) baseFee := num.Sub(parent.BaseFee, num) minGasPrice := p.MinGasPrice.TruncateInt().BigInt() - return math.BigMax(baseFee, minGasPrice), nil + return ethermint.BigMax(baseFee, minGasPrice), nil } // output: targetOneFeeHistory diff --git a/rpc/namespaces/ethereum/debug/api.go b/rpc/namespaces/ethereum/debug/api.go index 7860f915ee..b5f0e16e45 100644 --- a/rpc/namespaces/ethereum/debug/api.go +++ b/rpc/namespaces/ethereum/debug/api.go @@ -38,7 +38,6 @@ import ( "cosmossdk.io/log" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/rlp" "github.com/evmos/ethermint/rpc/backend" rpctypes "github.com/evmos/ethermint/rpc/types" @@ -376,20 +375,6 @@ func (a *API) PrintBlock(number uint64) (string, error) { return spew.Sdump(block), nil } -// SeedHash retrieves the seed hash of a block. -func (a *API) SeedHash(number uint64) (string, error) { - value, err := ethermint.SafeInt64(number) - if err != nil { - return "", err - } - _, err = a.backend.HeaderByNumber(rpctypes.BlockNumber(value)) - if err != nil { - return "", err - } - - return fmt.Sprintf("0x%x", ethash.SeedHash(number)), nil -} - // IntermediateRoots executes a block, and returns a list // of intermediate roots: the stateroot after each transaction. func (a *API) IntermediateRoots(hash common.Hash, _ *evmtypes.TraceConfig) ([]common.Hash, error) { diff --git a/rpc/types/types.go b/rpc/types/types.go index 5fdf4ce408..8519298064 100644 --- a/rpc/types/types.go +++ b/rpc/types/types.go @@ -22,10 +22,12 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/evmos/ethermint/x/evm/statedb" evmtypes "github.com/evmos/ethermint/x/evm/types" + "github.com/holiman/uint256" ) // Copied the Account and StorageResult types since they are registered under an @@ -83,7 +85,7 @@ func (diff *StateOverride) Apply(db *statedb.StateDB) error { for addr, account := range *diff { // Override account nonce. if account.Nonce != nil { - db.SetNonce(addr, uint64(*account.Nonce)) + db.SetNonce(addr, uint64(*account.Nonce), tracing.NonceChangeUnspecified) } // Override account(contract) code. if account.Code != nil { @@ -91,7 +93,8 @@ func (diff *StateOverride) Apply(db *statedb.StateDB) error { } // Override account balance. if account.Balance != nil { - db.SetBalance(addr, (*big.Int)(*account.Balance)) + balance := (*big.Int)(*account.Balance) + db.SetBalance(addr, *uint256.MustFromBig(balance)) } if account.State != nil && account.StateDiff != nil { return fmt.Errorf("account %s has both 'state' and 'stateDiff'", addr.Hex()) diff --git a/rpc/types/utils.go b/rpc/types/utils.go index 21cbb6aad8..33971a99f7 100644 --- a/rpc/types/utils.go +++ b/rpc/types/utils.go @@ -35,7 +35,6 @@ import ( tmrpcclient "github.com/cometbft/cometbft/rpc/client" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/common/math" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/params" ethermint "github.com/evmos/ethermint/types" @@ -176,9 +175,8 @@ func FormatBlock( "transactionsRoot": transactionsRoot, "receiptsRoot": ethtypes.EmptyRootHash, - "uncles": []common.Hash{}, - "transactions": transactions, - "totalDifficulty": (*hexutil.Big)(big.NewInt(0)), + "uncles": []common.Hash{}, + "transactions": transactions, } if baseFee != nil { @@ -256,7 +254,7 @@ func NewRPCTransaction( // if the transaction has been mined, compute the effective gas price if baseFee != nil && blockHash != (common.Hash{}) { // price = min(tip, gasFeeCap - baseFee) + baseFee - price := math.BigMin(new(big.Int).Add(tx.GasTipCap(), baseFee), tx.GasFeeCap()) + price := ethermint.BigMin(new(big.Int).Add(tx.GasTipCap(), baseFee), tx.GasFeeCap()) result.GasPrice = (*hexutil.Big)(price) } else { result.GasPrice = (*hexutil.Big)(tx.GasFeeCap()) diff --git a/scripts/geth-genesis.json b/scripts/geth-genesis.json index 67c762fc3c..69a591e5ad 100755 --- a/scripts/geth-genesis.json +++ b/scripts/geth-genesis.json @@ -12,9 +12,13 @@ "istanbulBlock": 0, "muirGlacierBlock": 0, "berlinBlock": 0, - "yoloV3Block": 0, "londonBlock": 0, + "arrowGlacierBlock": 0, + "grayGlacierBlock": 0, "shanghaiTime": 0, + "cancunTime": null, + "pragueTime": null, + "terminalTotalDifficulty": 0, "clique": { "period": 2, "epoch": 30000 @@ -24,7 +28,7 @@ "timestamp": "0x60ed6d23", "extraData": "0x000000000000000000000000000000000000000000000000000000000000000057f96e6b86cdefdb3d412547816a82e3e0ebf9d20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "gasLimit": "0x4db9760", - "difficulty": "0x1", + "difficulty": "0x0", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x0000000000000000000000000000000000000000", "alloc": { diff --git a/scripts/start-geth.sh b/scripts/start-geth.sh index 170139341a..3d31a26e34 100755 --- a/scripts/start-geth.sh +++ b/scripts/start-geth.sh @@ -50,9 +50,17 @@ geth --datadir $DATA --password $pwdfile account import $tmpfile rm $tmpfile # start up -geth --networkid 9000 --datadir $DATA --http --http.addr localhost --http.api 'personal,eth,net,web3,txpool,miner' \ --unlock '0x57f96e6b86cdefdb3d412547816a82e3e0ebf9d2' --password $pwdfile \ ---mine --miner.threads 1 --allow-insecure-unlock --ipcdisable \ +geth \ + --dev \ + --dev.period 1 \ + --datadir $DATA \ + --http \ + --http.addr localhost \ + --http.api 'personal,eth,net,web3,txpool,miner,debug' \ + --unlock '0x57f96e6b86cdefdb3d412547816a82e3e0ebf9d2' \ + --password $pwdfile \ + --allow-insecure-unlock \ + --ipcdisable \ $@ rm $pwdfile diff --git a/server/json_rpc.go b/server/json_rpc.go index 6efaec44c6..7b05a81422 100644 --- a/server/json_rpc.go +++ b/server/json_rpc.go @@ -18,6 +18,7 @@ package server import ( "context" "fmt" + "log/slog" "net/http" "time" @@ -28,7 +29,6 @@ import ( rpcclient "github.com/cometbft/cometbft/rpc/client" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/server" - ethlog "github.com/ethereum/go-ethereum/log" ethrpc "github.com/ethereum/go-ethereum/rpc" "github.com/evmos/ethermint/evmd/ante" "github.com/evmos/ethermint/rpc" @@ -55,6 +55,9 @@ func StartJSONRPC( app AppWithPendingTxStream, ) (*http.Server, error) { logger := srvCtx.Logger.With("module", "geth") + // Set Geth's global logger to use this handler + handler := &CustomSlogHandler{logger: logger} + slog.SetDefault(slog.New(handler)) evtClient, ok := clientCtx.Client.(rpcclient.EventsClient) if !ok { @@ -66,18 +69,6 @@ func StartJSONRPC( app.RegisterPendingTxListener(rpcStream.ListenPendingTx) - ethlog.Root().SetHandler(ethlog.FuncHandler(func(r *ethlog.Record) error { - switch r.Lvl { - case ethlog.LvlTrace, ethlog.LvlDebug: - logger.Debug(r.Msg, r.Ctx...) - case ethlog.LvlInfo, ethlog.LvlWarn: - logger.Info(r.Msg, r.Ctx...) - case ethlog.LvlError, ethlog.LvlCrit: - logger.Error(r.Msg, r.Ctx...) - } - return nil - })) - rpcServer := ethrpc.NewServer() allowUnprotectedTxs := config.JSONRPC.AllowUnprotectedTxs diff --git a/server/log_handler.go b/server/log_handler.go new file mode 100644 index 0000000000..b4077282ee --- /dev/null +++ b/server/log_handler.go @@ -0,0 +1,53 @@ +package server + +import ( + "context" + "log/slog" + + "cosmossdk.io/log" +) + +// CustomSlogHandler bridges Geth's slog logs to the existing Cosmos SDK logger. +type CustomSlogHandler struct { + logger log.Logger +} + +// Handle processes slog records and forwards them to your Cosmos SDK logger. +func (h *CustomSlogHandler) Handle(_ context.Context, r slog.Record) error { + attrs := []interface{}{} + r.Attrs(func(attr slog.Attr) bool { + attrs = append(attrs, attr.Key, attr.Value.Any()) + return true + }) + + // Map slog levels to Cosmos SDK logger + switch r.Level { + case slog.LevelDebug: + h.logger.Debug(r.Message, attrs...) + case slog.LevelInfo: + h.logger.Info(r.Message, attrs...) + case slog.LevelWarn: + h.logger.Warn(r.Message, attrs...) + case slog.LevelError: + h.logger.Error(r.Message, attrs...) + default: + h.logger.Info(r.Message, attrs...) + } + + return nil +} + +// Enabled determines if the handler should log a given level. +func (h *CustomSlogHandler) Enabled(_ context.Context, _ slog.Level) bool { + return true +} + +// WithAttrs allows adding additional attributes. +func (h *CustomSlogHandler) WithAttrs(_ []slog.Attr) slog.Handler { + return h +} + +// WithGroup is required to implement slog.Handler (not used). +func (h *CustomSlogHandler) WithGroup(_ string) slog.Handler { + return h +} diff --git a/tests/importer/chain_ctx.go b/tests/importer/chain_ctx.go index e8cb372bd5..ce729de12c 100644 --- a/tests/importer/chain_ctx.go +++ b/tests/importer/chain_ctx.go @@ -20,11 +20,16 @@ import ( "github.com/ethereum/go-ethereum/common" ethcons "github.com/ethereum/go-ethereum/consensus" + ethcore "github.com/ethereum/go-ethereum/core" ethstate "github.com/ethereum/go-ethereum/core/state" ethtypes "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/params" ethrpc "github.com/ethereum/go-ethereum/rpc" ) +var _ ethcore.ChainContext = &ChainContext{} + // ChainContext implements Ethereum's core.ChainContext and consensus.Engine // interfaces. It is needed in order to apply and process Ethereum // transactions. There should only be a single implementation in Ethermint. For @@ -101,8 +106,11 @@ func (cc *ChainContext) CalcDifficulty(_ ethcons.ChainHeaderReader, _ uint64, _ // // TODO: Figure out if this needs to be hooked up to any part of the ABCI? func (cc *ChainContext) Finalize( - _ ethcons.ChainHeaderReader, _ *ethtypes.Header, _ *ethstate.StateDB, - _ []*ethtypes.Transaction, _ []*ethtypes.Header, _ []*ethtypes.Withdrawal) { + _ ethcons.ChainHeaderReader, + _ *ethtypes.Header, + _ vm.StateDB, + _ *ethtypes.Body, +) { } // FinalizeAndAssemble runs any post-transaction state modifications (e.g. block @@ -111,13 +119,12 @@ func (cc *ChainContext) Finalize( // Note: The block header and state database might be updated to reflect any // consensus rules that happen at finalization (e.g. block rewards). // TODO: Figure out if this needs to be hooked up to any part of the ABCI? -func (cc *ChainContext) FinalizeAndAssemble(_ ethcons.ChainHeaderReader, +func (cc *ChainContext) FinalizeAndAssemble( + _ ethcons.ChainHeaderReader, _ *ethtypes.Header, _ *ethstate.StateDB, - _ []*ethtypes.Transaction, - _ []*ethtypes.Header, + _ *ethtypes.Body, _ []*ethtypes.Receipt, - _ []*ethtypes.Withdrawal, ) (*ethtypes.Block, error) { return nil, nil } @@ -149,7 +156,7 @@ func (cc *ChainContext) SealHash(_ *ethtypes.Header) common.Hash { // // TODO: Figure out if this needs to be hooked up to any part of the Cosmos SDK // handlers? -func (cc *ChainContext) VerifyHeader(_ ethcons.ChainHeaderReader, _ *ethtypes.Header, _ bool) error { +func (cc *ChainContext) VerifyHeader(_ ethcons.ChainHeaderReader, _ *ethtypes.Header) error { return nil } @@ -158,7 +165,7 @@ func (cc *ChainContext) VerifyHeader(_ ethcons.ChainHeaderReader, _ *ethtypes.He // // TODO: Figure out if this needs to be hooked up to any part of the Cosmos SDK // handlers? -func (cc *ChainContext) VerifyHeaders(_ ethcons.ChainHeaderReader, _ []*ethtypes.Header, _ []bool) (chan<- struct{}, <-chan error) { +func (cc *ChainContext) VerifyHeaders(_ ethcons.ChainHeaderReader, _ []*ethtypes.Header) (chan<- struct{}, <-chan error) { return nil, nil } @@ -183,3 +190,7 @@ func (cc *ChainContext) VerifyUncles(_ ethcons.ChainReader, _ *ethtypes.Block) e func (cc *ChainContext) Close() error { return nil } + +func (cc *ChainContext) Config() *params.ChainConfig { + return nil +} diff --git a/tests/importer/chain_ctx_test.go b/tests/importer/chain_ctx_test.go index c694f1c68e..bb2e94c109 100644 --- a/tests/importer/chain_ctx_test.go +++ b/tests/importer/chain_ctx_test.go @@ -72,7 +72,7 @@ func TestChainContextCalcDifficulty(t *testing.T) { func TestChainContextFinalize(t *testing.T) { cc := NewChainContext() - cc.Finalize(nil, nil, nil, nil, nil, nil) + cc.Finalize(nil, nil, nil, nil) } func TestChainContextPrepare(t *testing.T) { @@ -92,14 +92,14 @@ func TestChainContextSeal(t *testing.T) { func TestChainContextVerifyHeader(t *testing.T) { cc := NewChainContext() - err := cc.VerifyHeader(nil, nil, false) + err := cc.VerifyHeader(nil, nil) require.Nil(t, err) } func TestChainContextVerifyHeaders(t *testing.T) { cc := NewChainContext() - ch, err := cc.VerifyHeaders(nil, nil, []bool{false}) + ch, err := cc.VerifyHeaders(nil, nil) require.Nil(t, err) require.Nil(t, ch) } diff --git a/tests/importer/importer_test.go b/tests/importer/importer_test.go index 9f04408879..86b922feec 100644 --- a/tests/importer/importer_test.go +++ b/tests/importer/importer_test.go @@ -12,6 +12,7 @@ import ( sdkmath "cosmossdk.io/math" "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/testutil" + "github.com/holiman/uint256" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -24,6 +25,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus/ethash" ethcore "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" ethvm "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" @@ -187,20 +189,20 @@ func accumulateRewards( } // accumulate the rewards for the miner and any included uncles - reward := new(big.Int).Set(blockReward) + reward := blockReward.ToBig() r := new(big.Int) for _, uncle := range uncles { r.Add(uncle.Number, rewardBig8) r.Sub(r, header.Number) - r.Mul(r, blockReward) + r.Mul(r, blockReward.ToBig()) r.Div(r, rewardBig8) - vmdb.AddBalance(uncle.Coinbase, r) - r.Div(blockReward, rewardBig32) + vmdb.AddBalance(uncle.Coinbase, uint256.MustFromBig(r), tracing.BalanceIncreaseRewardMineUncle) + r.Div(blockReward.ToBig(), rewardBig32) reward.Add(reward, r) } - vmdb.AddBalance(header.Coinbase, reward) + vmdb.AddBalance(header.Coinbase, uint256.MustFromBig(reward), tracing.BalanceIncreaseRewardMineBlock) } // ApplyDAOHardFork modifies the state database according to the DAO hard-fork @@ -217,7 +219,7 @@ func applyDAOHardFork(vmdb ethvm.StateDB) { // Move every DAO account and extra-balance account funds into the refund contract for _, addr := range ethparams.DAODrainList() { - vmdb.AddBalance(ethparams.DAORefundContract, vmdb.GetBalance(addr)) + vmdb.AddBalance(ethparams.DAORefundContract, vmdb.GetBalance(addr), tracing.BalanceIncreaseDaoContract) } } @@ -232,18 +234,17 @@ func applyTransaction( gp *ethcore.GasPool, evmKeeper *evmkeeper.Keeper, vmdb *statedb.StateDB, header *ethtypes.Header, tx *ethtypes.Transaction, usedGas *uint64, cfg ethvm.Config, index uint, ) (*ethtypes.Receipt, uint64, error) { - msg, err := ethcore.TransactionToMessage(tx, ethtypes.MakeSigner(config, header.Number), sdkmath.ZeroInt().BigInt()) + msg, err := ethcore.TransactionToMessage(tx, ethtypes.MakeSigner(config, header.Number, header.Time), sdkmath.ZeroInt().BigInt()) if err != nil { return nil, 0, err } // Create a new context to be used in the EVM environment blockCtx := ethcore.NewEVMBlockContext(header, bc, author) - txCtx := ethcore.NewEVMTxContext(msg) // Create a new environment which holds all relevant information // about the transaction and calling mechanisms. - vmenv := ethvm.NewEVM(blockCtx, txCtx, vmdb, config, cfg) + vmenv := ethvm.NewEVM(blockCtx, vmdb, config, cfg) // Apply the transaction to the current state (included in the env) execResult, err := ethcore.ApplyMessage(vmenv, msg, gp) @@ -268,7 +269,7 @@ func applyTransaction( // Set the receipt logs and create a bloom for filtering receipt.Logs = vmdb.Logs() - receipt.Bloom = ethtypes.CreateBloom(ethtypes.Receipts{receipt}) + receipt.Bloom = ethtypes.CreateBloom(receipt) receipt.BlockHash = header.Hash() receipt.BlockNumber = header.Number receipt.TransactionIndex = index diff --git a/tests/integration_tests/expected_constants.py b/tests/integration_tests/expected_constants.py index be2a61cac9..846e92e1e0 100644 --- a/tests/integration_tests/expected_constants.py +++ b/tests/integration_tests/expected_constants.py @@ -145,13 +145,13 @@ EXPECTED_STRUCT_TRACER = { "failed": False, "gas": 21000, - "returnValue": "", + "returnValue": "0x", "structLogs": [], } EXPECTED_CONTRACT_CREATE_TRACER = '{"from": "0xccdfe2eb220b5abea2cc772fa3b48b1ba6101c1a", "gas": "0x966fd", "gasUsed": "0x966fd", "input": "0x608060405234801561001057600080fd5b50604080518082018252600981526805465737445524332360bc1b60208083019182528351808501909452600484526315195cdd60e21b90840152815191929161005c91600391610156565b508051610070906004906020840190610156565b50505061008e336a52b7d2dcc80cd2e400000061009360201b60201c565b610250565b6001600160a01b0382166100ed5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546100ff91906101ef565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b82805461016290610215565b90600052602060002090601f01602090048101928261018457600085556101ca565b82601f1061019d57805160ff19168380011785556101ca565b828001600101855582156101ca579182015b828111156101ca5782518255916020019190600101906101af565b506101d69291506101da565b5090565b5b808211156101d657600081556001016101db565b6000821982111561021057634e487b7160e01b600052601160045260246000fd5b500190565b600181811c9082168061022957607f821691505b6020821081141561024a57634e487b7160e01b600052602260045260246000fd5b50919050565b61085d8061025f6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610801565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b602082108114156107fb57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220c447581f3bf6675286c79608ec0ee20bbfca295bacc424210a44d456f03ab5fd64736f6c634300080a0033", "output": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610801565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b602082108114156107fb57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220c447581f3bf6675286c79608ec0ee20bbfca295bacc424210a44d456f03ab5fd64736f6c634300080a0033", "to": "0x488cd53a91098c6bd1bc3340591d3ed10405fe6b", "type": "CREATE", "value": "0x0"}' # noqa: E501 -EXPECTED_BLOCK_OVERRIDES_TRACERS = '{"failed": false, "gas": 53020, "returnValue": "", "structLogs": [{"depth": 1, "gas": 12517, "gasCost": 2, "op": "NUMBER", "pc": 0, "stack": []}, {"depth": 1, "gas": 12515, "gasCost": 0, "op": "STOP", "pc": 1, "stack": ["0x1337"]}]}' # noqa: E501 +EXPECTED_BLOCK_OVERRIDES_TRACERS = '{"failed": false, "gas": 53020, "returnValue": "0x", "structLogs": [{"depth": 1, "gas": 12517, "gasCost": 2, "op": "NUMBER", "pc": 0, "stack": []}, {"depth": 1, "gas": 12515, "gasCost": 0, "op": "STOP", "pc": 1, "stack": ["0x1337"]}]}' # noqa: E501 EXPECTED_DEFAULT_GASCAP = 25000000 -EXPECTED_JS_TRACERS = ['{"ADD-ADD": 3, "ADD-AND": 2, "ADD-CALLDATACOPY": 1, "ADD-DUP2": 2, "ADD-DUP3": 1, "ADD-DUP5": 1, "ADD-GT": 1, "ADD-MLOAD": 2, "ADD-MSTORE": 2, "ADD-PUSH1": 3, "ADD-PUSH2": 1, "ADD-SLT": 1, "ADD-SWAP1": 1, "ADD-SWAP2": 2, "ADD-SWAP3": 1, "AND-DUP1": 1, "AND-DUP2": 2, "AND-DUP6": 1, "AND-PUSH1": 2, "AND-SWAP2": 1, "CALLDATACOPY-PUSH0": 1, "CALLDATALOAD-DUP2": 1, "CALLDATALOAD-PUSH1": 1, "CALLDATALOAD-PUSH8": 1, "CALLDATASIZE-LT": 1, "CALLDATASIZE-PUSH1": 1, "CALLER-DUP3": 1, "CALLVALUE-DUP1": 1, "DUP1-DUP3": 1, "DUP1-DUP5": 1, "DUP1-ISZERO": 1, "DUP1-PUSH1": 1, "DUP1-PUSH2": 1, "DUP1-PUSH4": 3, "DUP1-SWAP2": 1, "DUP2-ADD": 3, "DUP2-AND": 1, "DUP2-CALLDATALOAD": 2, "DUP2-DUP2": 4, "DUP2-DUP4": 1, "DUP2-DUP5": 1, "DUP2-DUP6": 1, "DUP2-EQ": 1, "DUP2-GT": 2, "DUP2-LT": 2, "DUP2-MLOAD": 2, "DUP2-MSTORE": 2, "DUP2-PUSH1": 1, "DUP2-PUSH2": 1, "DUP2-SHR": 1, "DUP2-SUB": 1, "DUP2-SWAP1": 1, "DUP3-ADD": 3, "DUP3-AND": 2, "DUP3-DUP2": 1, "DUP3-DUP3": 1, "DUP3-DUP5": 1, "DUP3-DUP7": 1, "DUP3-GT": 3, "DUP3-LT": 1, "DUP3-PUSH1": 2, "DUP3-PUSH2": 1, "DUP4-ADD": 6, "DUP4-AND": 1, "DUP4-DUP3": 1, "DUP4-GT": 1, "DUP4-LT": 1, "DUP5-ADD": 1, "DUP5-DUP8": 1, "DUP5-ISZERO": 1, "DUP5-MSTORE": 1, "DUP5-PUSH1": 1, "DUP5-PUSH2": 2, "DUP5-SLOAD": 1, "DUP5-SUB": 1, "DUP6-ADD": 2, "DUP6-DUP4": 1, "DUP6-SSTORE": 1, "DUP6-SWAP1": 1, "DUP7-ADD": 2, "DUP7-DUP4": 1, "DUP7-SWAP1": 1, "DUP8-ADD": 1, "DUP8-PUSH1": 1, "EQ-PUSH2": 4, "GT-DUP2": 1, "GT-ISZERO": 5, "GT-PUSH1": 1, "ISZERO-PUSH2": 11, "JUMP-JUMPDEST": 16, "JUMPDEST-DUP2": 7, "JUMPDEST-DUP3": 1, "JUMPDEST-DUP5": 1, "JUMPDEST-POP": 7, "JUMPDEST-PUSH0": 3, "JUMPDEST-PUSH1": 8, "JUMPDEST-PUSH2": 3, "JUMPDEST-STOP": 1, "JUMPDEST-SWAP5": 1, "JUMPI-DUP1": 2, "JUMPI-JUMPDEST": 12, "JUMPI-POP": 1, "JUMPI-PUSH0": 2, "JUMPI-PUSH1": 2, "LOG1-POP": 1, "LT-DUP2": 1, "LT-ISZERO": 2, "LT-OR": 1, "LT-PUSH2": 1, "MLOAD-DUP1": 2, "MLOAD-DUP7": 1, "MLOAD-JUMPDEST": 1, "MLOAD-PUSH1": 1, "MLOAD-PUSH2": 1, "MLOAD-PUSH8": 1, "MSTORE-ADD": 1, "MSTORE-CALLVALUE": 1, "MSTORE-DUP3": 1, "MSTORE-DUP8": 1, "MSTORE-POP": 1, "MSTORE-PUSH0": 2, "MSTORE-PUSH1": 2, "NOT-AND": 1, "NOT-PUSH1": 2, "NOT-SWAP1": 1, "OR-DUP6": 1, "OR-ISZERO": 1, "POP-DUP5": 1, "POP-DUP6": 1, "POP-JUMP": 7, "POP-JUMPDEST": 2, "POP-POP": 15, "POP-PUSH0": 1, "POP-PUSH1": 1, "POP-PUSH32": 1, "POP-SWAP2": 1, "POP-SWAP3": 1, "POP-SWAP6": 1, "PUSH0-CALLDATALOAD": 1, "PUSH0-DUP2": 1, "PUSH0-DUP5": 1, "PUSH0-JUMPDEST": 1, "PUSH0-NOT": 1, "PUSH0-PUSH1": 2, "PUSH0-SWAP1": 1, "PUSH0-SWAP3": 1, "PUSH1-ADD": 2, "PUSH1-CALLDATASIZE": 1, "PUSH1-DUP1": 1, "PUSH1-DUP2": 3, "PUSH1-DUP3": 7, "PUSH1-DUP4": 4, "PUSH1-DUP5": 1, "PUSH1-DUP6": 1, "PUSH1-DUP7": 2, "PUSH1-MLOAD": 3, "PUSH1-MSTORE": 2, "PUSH1-NOT": 2, "PUSH1-PUSH1": 5, "PUSH1-PUSH2": 2, "PUSH1-SHL": 1, "PUSH1-SHR": 1, "PUSH2-CALLDATASIZE": 1, "PUSH2-DUP2": 1, "PUSH2-DUP3": 1, "PUSH2-DUP5": 1, "PUSH2-JUMP": 9, "PUSH2-JUMPI": 19, "PUSH2-PUSH2": 1, "PUSH2-SWAP1": 1, "PUSH2-SWAP3": 1, "PUSH32-CALLER": 1, "PUSH4-EQ": 3, "PUSH8-DUP1": 1, "PUSH8-DUP2": 1, "SHL-OR": 1, "SHL-SHR": 1, "SHL-SUB": 1, "SHR-DUP1": 1, "SHR-NOT": 1, "SHR-SWAP1": 1, "SLOAD-PUSH2": 1, "SLT-ISZERO": 1, "SLT-PUSH2": 1, "SSTORE-PUSH2": 1, "SUB-DUP4": 1, "SUB-PUSH2": 1, "SUB-SLT": 1, "SUB-SWAP1": 1, "SWAP1-DUP2": 1, "SWAP1-DUP3": 1, "SWAP1-DUP4": 2, "SWAP1-LOG1": 1, "SWAP1-MSTORE": 1, "SWAP1-POP": 1, "SWAP1-PUSH2": 2, "SWAP1-SHL": 2, "SWAP1-SWAP3": 1, "SWAP2-POP": 4, "SWAP2-SUB": 1, "SWAP2-SWAP1": 2, "SWAP3-DUP2": 1, "SWAP3-MSTORE": 1, "SWAP3-SWAP1": 1, "SWAP3-SWAP2": 2, "SWAP4-POP": 1, "SWAP5-POP": 1, "SWAP5-SWAP4": 1, "SWAP6-SWAP5": 1}', '[{"depth": 1, "len": 2, "op": 96, "result": ["80"]}, {"depth": 1, "len": 2, "op": 96, "result": ["40"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "op": 52, "result": ["0"]}, {"depth": 1, "op": 128, "result": ["0", "0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["f"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 15, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["4"]}, {"depth": 1, "op": 54, "result": ["64"]}, {"depth": 1, "op": 16, "result": ["0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["55"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 95, "result": []}, {"depth": 1, "op": 53, "result": ["a413686200000000000000000000000000000000000000000000000000000000"]}, {"depth": 1, "len": 2, "op": 96, "result": ["e0"]}, {"depth": 1, "op": 28, "result": []}, {"depth": 1, "op": 128, "result": ["a4136862", "a4136862"]}, {"depth": 1, "len": 5, "op": 99, "result": ["c4dae88"]}, {"depth": 1, "op": 20, "result": ["0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["59"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 128, "result": ["a4136862", "a4136862"]}, {"depth": 1, "len": 5, "op": 99, "result": ["2e52d606"]}, {"depth": 1, "op": 20, "result": ["0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["6f"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 128, "result": ["a4136862", "a4136862"]}, {"depth": 1, "len": 5, "op": 99, "result": ["a4136862"]}, {"depth": 1, "op": 20, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["77"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 119, "result": []}, {"depth": 1, "len": 3, "op": 97, "result": ["8a"]}, {"depth": 1, "len": 3, "op": 97, "result": ["85"]}, {"depth": 1, "op": 54, "result": ["64"]}, {"depth": 1, "len": 2, "op": 96, "result": ["4"]}, {"depth": 1, "len": 3, "op": 97, "result": ["222"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 546, "result": []}, {"depth": 1, "op": 95, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 130, "result": ["4", "20", "0", "4"]}, {"depth": 1, "op": 132, "result": ["64", "4", "20", "0", "4", "64"]}, {"depth": 1, "op": 3, "result": ["60"]}, {"depth": 1, "op": 18, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["232"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 562, "result": []}, {"depth": 1, "op": 129, "result": ["4", "0", "4"]}, {"depth": 1, "op": 53, "result": ["20"]}, {"depth": 1, "len": 9, "op": 103, "result": ["ffffffffffffffff"]}, {"depth": 1, "op": 128, "result": ["ffffffffffffffff", "ffffffffffffffff"]}, {"depth": 1, "op": 130, "result": ["20", "ffffffffffffffff", "ffffffffffffffff", "20"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["249"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 585, "result": []}, {"depth": 1, "op": 129, "result": ["20", "ffffffffffffffff", "20"]}, {"depth": 1, "op": 132, "result": ["4", "20", "ffffffffffffffff", "20", "0", "4"]}, {"depth": 1, "op": 1, "result": ["24"]}, {"depth": 1, "op": 145, "result": ["20", "ffffffffffffffff", "24"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 132, "result": ["64", "ffffffffffffffff", "24", "0", "4", "64"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 131, "result": ["24", "1f", "64", "ffffffffffffffff", "24"]}, {"depth": 1, "op": 1, "result": ["43"]}, {"depth": 1, "op": 18, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["25c"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 604, "result": []}, {"depth": 1, "op": 129, "result": ["24", "ffffffffffffffff", "24"]}, {"depth": 1, "op": 53, "result": ["5"]}, {"depth": 1, "op": 129, "result": ["ffffffffffffffff", "5", "ffffffffffffffff"]}, {"depth": 1, "op": 129, "result": ["5", "ffffffffffffffff", "5"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["26e"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 622, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["40"]}, {"depth": 1, "op": 81, "result": ["80"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 130, "result": ["5", "1f", "80", "5"]}, {"depth": 1, "op": 1, "result": ["24"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 25, "result": ["ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"]}, {"depth": 1, "op": 144, "result": ["24", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"]}, {"depth": 1, "op": 129, "result": ["ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", "24", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"]}, {"depth": 1, "op": 22, "result": ["20"]}, {"depth": 1, "len": 2, "op": 96, "result": ["3f"]}, {"depth": 1, "op": 1, "result": ["5f"]}, {"depth": 1, "op": 22, "result": ["40"]}, {"depth": 1, "op": 129, "result": ["80", "40", "80"]}, {"depth": 1, "op": 1, "result": ["c0"]}, {"depth": 1, "op": 144, "result": ["80", "c0"]}, {"depth": 1, "op": 131, "result": ["ffffffffffffffff", "80", "c0", "5", "ffffffffffffffff"]}, {"depth": 1, "op": 130, "result": ["c0", "ffffffffffffffff", "80", "c0"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "op": 129, "result": ["80", "0", "80"]}, {"depth": 1, "op": 131, "result": ["c0", "80", "0", "80", "c0"]}, {"depth": 1, "op": 16, "result": ["0"]}, {"depth": 1, "op": 23, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["296"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 662, "result": []}, {"depth": 1, "op": 129, "result": ["c0", "80", "c0"]}, {"depth": 1, "len": 2, "op": 96, "result": ["40"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "op": 130, "result": ["5", "80", "c0", "5"]}, {"depth": 1, "op": 129, "result": ["80", "5", "80"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "op": 135, "result": ["64", "80", "c0", "5", "ffffffffffffffff", "24", "0", "4", "64"]}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 132, "result": ["5", "20", "64", "80", "c0", "5"]}, {"depth": 1, "op": 135, "result": ["24", "5", "20", "64", "80", "c0", "5", "ffffffffffffffff", "24"]}, {"depth": 1, "op": 1, "result": ["29"]}, {"depth": 1, "op": 1, "result": ["49"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["2ae"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 686, "result": []}, {"depth": 1, "op": 130, "result": ["5", "80", "c0", "5"]}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 134, "result": ["24", "20", "5", "80", "c0", "5", "ffffffffffffffff", "24"]}, {"depth": 1, "op": 1, "result": ["44"]}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 131, "result": ["80", "20", "44", "5", "80"]}, {"depth": 1, "op": 1, "result": ["a0"]}, {"depth": 1, "op": 55, "result": []}, {"depth": 1, "op": 95, "result": []}, {"depth": 1, "op": 146, "result": ["5", "80", "c0", "0"]}, {"depth": 1, "op": 129, "result": ["80", "5", "80"]}, {"depth": 1, "op": 1, "result": ["85"]}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 1, "result": ["a5"]}, {"depth": 1, "op": 146, "result": ["0", "80", "c0", "a5"]}, {"depth": 1, "op": 144, "result": ["80", "0"]}, {"depth": 1, "op": 146, "result": ["a5", "0", "c0", "80"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 149, "result": ["85", "ffffffffffffffff", "24", "0", "4", "64", "80"]}, {"depth": 1, "op": 148, "result": ["64", "ffffffffffffffff", "24", "0", "4", "85"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 133, "result": []}, {"depth": 1, "len": 3, "op": 97, "result": ["a9"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 169, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["b5"]}, {"depth": 1, "op": 130, "result": ["80", "b5", "1", "80"]}, {"depth": 1, "op": 130, "result": ["1", "80", "b5", "1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["3af"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 943, "result": []}, {"depth": 1, "op": 129, "result": ["80", "1", "80"]}, {"depth": 1, "op": 81, "result": ["5"]}, {"depth": 1, "len": 9, "op": 103, "result": ["ffffffffffffffff"]}, {"depth": 1, "op": 129, "result": ["5", "ffffffffffffffff", "5"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["3c9"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 969, "result": []}, {"depth": 1, "len": 3, "op": 97, "result": ["3dd"]}, {"depth": 1, "op": 129, "result": ["5", "3dd", "5"]}, {"depth": 1, "len": 3, "op": 97, "result": ["3d7"]}, {"depth": 1, "op": 132, "result": ["1", "3d7", "5", "3dd", "5", "1"]}, {"depth": 1, "op": 84, "result": ["48656c6c6f00000000000000000000000000000000000000000000000000000a"]}, {"depth": 1, "len": 3, "op": 97, "result": ["329"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 809, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["1"]}, {"depth": 1, "op": 129, "result": ["48656c6c6f00000000000000000000000000000000000000000000000000000a", "1", "48656c6c6f00000000000000000000000000000000000000000000000000000a"]}, {"depth": 1, "op": 129, "result": ["1", "48656c6c6f00000000000000000000000000000000000000000000000000000a", "1"]}, {"depth": 1, "op": 28, "result": []}, {"depth": 1, "op": 144, "result": ["1", "2432b63637800000000000000000000000000000000000000000000000000005"]}, {"depth": 1, "op": 130, "result": ["48656c6c6f00000000000000000000000000000000000000000000000000000a", "1", "2432b63637800000000000000000000000000000000000000000000000000005", "48656c6c6f00000000000000000000000000000000000000000000000000000a"]}, {"depth": 1, "op": 22, "result": ["0"]}, {"depth": 1, "op": 128, "result": ["0", "0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["33d"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["7f"]}, {"depth": 1, "op": 130, "result": ["2432b63637800000000000000000000000000000000000000000000000000005", "7f", "0", "2432b63637800000000000000000000000000000000000000000000000000005"]}, {"depth": 1, "op": 22, "result": ["5"]}, {"depth": 1, "op": 145, "result": ["2432b63637800000000000000000000000000000000000000000000000000005", "0", "5"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 91, "pc": 829, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 130, "result": ["5", "20", "0", "5"]}, {"depth": 1, "op": 16, "result": ["1"]}, {"depth": 1, "op": 129, "result": ["0", "1", "0"]}, {"depth": 1, "op": 3, "result": ["ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"]}, {"depth": 1, "len": 3, "op": 97, "result": ["35b"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 859, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 145, "result": ["3d7", "48656c6c6f00000000000000000000000000000000000000000000000000000a", "5"]}, {"depth": 1, "op": 144, "result": ["48656c6c6f00000000000000000000000000000000000000000000000000000a", "3d7"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 983, "result": []}, {"depth": 1, "op": 132, "result": ["1", "5", "5", "3dd", "5", "1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["361"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 865, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 130, "result": ["5", "1f", "1", "5"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["3aa"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 938, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 989, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 128, "result": ["20", "20"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 131, "result": ["5", "1f", "20", "20", "5"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1"]}, {"depth": 1, "op": 129, "result": ["0", "1", "0"]}, {"depth": 1, "op": 20, "result": ["0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["410"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 95, "result": []}, {"depth": 1, "op": 132, "result": ["5", "0", "0", "20", "20", "5"]}, {"depth": 1, "op": 21, "result": ["0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["3f9"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 133, "result": ["80", "0", "20", "20", "5", "1", "80"]}, {"depth": 1, "op": 131, "result": ["20", "80", "0", "20", "20"]}, {"depth": 1, "op": 1, "result": ["a0"]}, {"depth": 1, "op": 81, "result": ["776f726c64000000000000000000000000000000000000000000000000000000"]}, {"depth": 1, "op": 91, "pc": 1017, "result": []}, {"depth": 1, "op": 95, "result": []}, {"depth": 1, "op": 25, "result": ["ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"]}, {"depth": 1, "len": 2, "op": 96, "result": ["3"]}, {"depth": 1, "op": 134, "result": ["5", "3", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "776f726c64000000000000000000000000000000000000000000000000000000", "0", "20", "20", "5"]}, {"depth": 1, "op": 144, "result": ["3", "5"]}, {"depth": 1, "op": 27, "result": []}, {"depth": 1, "op": 28, "result": []}, {"depth": 1, "op": 25, "result": ["ffffffffff000000000000000000000000000000000000000000000000000000"]}, {"depth": 1, "op": 22, "result": ["776f726c64000000000000000000000000000000000000000000000000000000"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1"]}, {"depth": 1, "op": 133, "result": ["5", "1", "776f726c64000000000000000000000000000000000000000000000000000000", "0", "20", "20", "5"]}, {"depth": 1, "op": 144, "result": ["1", "5"]}, {"depth": 1, "op": 27, "result": []}, {"depth": 1, "op": 23, "result": ["776f726c6400000000000000000000000000000000000000000000000000000a"]}, {"depth": 1, "op": 133, "result": ["1", "776f726c6400000000000000000000000000000000000000000000000000000a", "0", "20", "20", "5", "1"]}, {"depth": 1, "op": 85, "result": []}, {"depth": 1, "len": 3, "op": 97, "result": ["3a6"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 934, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 91, "pc": 938, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 181, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "len": 33, "op": 127, "result": ["61ae4cbae83f72235cd9fa781d18fcb08ff5fa4a44fcc1630fde673bb0041151"]}, {"depth": 1, "op": 51, "result": ["b6a2f15a37aac3b6fdd39afa356b64f51ca8314a"]}, {"depth": 1, "op": 130, "result": ["80", "b6a2f15a37aac3b6fdd39afa356b64f51ca8314a", "61ae4cbae83f72235cd9fa781d18fcb08ff5fa4a44fcc1630fde673bb0041151", "80"]}, {"depth": 1, "len": 2, "op": 96, "result": ["40"]}, {"depth": 1, "op": 81, "result": ["c0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["e7"]}, {"depth": 1, "op": 146, "result": ["b6a2f15a37aac3b6fdd39afa356b64f51ca8314a", "c0", "80", "e7"]}, {"depth": 1, "op": 145, "result": ["80", "c0", "b6a2f15a37aac3b6fdd39afa356b64f51ca8314a"]}, {"depth": 1, "op": 144, "result": ["c0", "80"]}, {"depth": 1, "len": 3, "op": 97, "result": ["46b"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 1131, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["1"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1"]}, {"depth": 1, "len": 2, "op": 96, "result": ["a0"]}, {"depth": 1, "op": 27, "result": []}, {"depth": 1, "op": 3, "result": ["ffffffffffffffffffffffffffffffffffffffff"]}, {"depth": 1, "op": 131, "result": ["b6a2f15a37aac3b6fdd39afa356b64f51ca8314a", "ffffffffffffffffffffffffffffffffffffffff", "c0", "80", "b6a2f15a37aac3b6fdd39afa356b64f51ca8314a"]}, {"depth": 1, "op": 22, "result": ["b6a2f15a37aac3b6fdd39afa356b64f51ca8314a"]}, {"depth": 1, "op": 129, "result": ["c0", "b6a2f15a37aac3b6fdd39afa356b64f51ca8314a", "c0"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["40"]}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 130, "result": ["c0", "20", "40", "c0"]}, {"depth": 1, "op": 1, "result": ["e0"]}, {"depth": 1, "op": 129, "result": ["40", "e0", "40"]}, {"depth": 1, "op": 144, "result": ["e0", "40"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "op": 95, "result": []}, {"depth": 1, "op": 144, "result": ["40", "0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["48e"]}, {"depth": 1, "op": 144, "result": ["40", "48e"]}, {"depth": 1, "op": 131, "result": ["c0", "40", "48e", "0", "c0"]}, {"depth": 1, "op": 1, "result": ["100"]}, {"depth": 1, "op": 132, "result": ["80", "100", "48e", "0", "c0", "80"]}, {"depth": 1, "len": 3, "op": 97, "result": ["2cd"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 717, "result": []}, {"depth": 1, "op": 95, "result": []}, {"depth": 1, "op": 129, "result": ["80", "0", "80"]}, {"depth": 1, "op": 81, "result": ["5"]}, {"depth": 1, "op": 128, "result": ["5", "5"]}, {"depth": 1, "op": 132, "result": ["100", "5", "5", "0", "80", "100"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "op": 95, "result": []}, {"depth": 1, "op": 91, "pc": 725, "result": []}, {"depth": 1, "op": 129, "result": ["5", "0", "5"]}, {"depth": 1, "op": 129, "result": ["0", "5", "0"]}, {"depth": 1, "op": 16, "result": ["1"]}, {"depth": 1, "op": 21, "result": ["0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["2f1"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 129, "result": ["0", "20", "0"]}, {"depth": 1, "op": 133, "result": ["80", "0", "20", "0", "5", "0", "80"]}, {"depth": 1, "op": 1, "result": ["80"]}, {"depth": 1, "op": 129, "result": ["20", "80", "20"]}, {"depth": 1, "op": 1, "result": ["a0"]}, {"depth": 1, "op": 81, "result": ["776f726c64000000000000000000000000000000000000000000000000000000"]}, {"depth": 1, "op": 134, "result": ["100", "776f726c64000000000000000000000000000000000000000000000000000000", "20", "0", "5", "0", "80", "100"]}, {"depth": 1, "op": 131, "result": ["0", "100", "776f726c64000000000000000000000000000000000000000000000000000000", "20", "0"]}, {"depth": 1, "op": 1, "result": ["100"]}, {"depth": 1, "op": 130, "result": ["20", "100", "776f726c64000000000000000000000000000000000000000000000000000000", "20"]}, {"depth": 1, "op": 1, "result": ["120"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "op": 1, "result": ["20"]}, {"depth": 1, "len": 3, "op": 97, "result": ["2d5"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 725, "result": []}, {"depth": 1, "op": 129, "result": ["5", "20", "5"]}, {"depth": 1, "op": 129, "result": ["20", "5", "20"]}, {"depth": 1, "op": 16, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["2f1"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 753, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 95, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 130, "result": ["5", "20", "0", "5"]}, {"depth": 1, "op": 134, "result": ["100", "5", "20", "0", "5", "0", "80", "100"]}, {"depth": 1, "op": 1, "result": ["105"]}, {"depth": 1, "op": 1, "result": ["125"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 25, "result": ["ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 131, "result": ["5", "1f", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", "20", "5"]}, {"depth": 1, "op": 1, "result": ["24"]}, {"depth": 1, "op": 22, "result": ["20"]}, {"depth": 1, "op": 133, "result": ["100", "20", "20", "5", "0", "80", "100"]}, {"depth": 1, "op": 1, "result": ["120"]}, {"depth": 1, "op": 1, "result": ["140"]}, {"depth": 1, "op": 145, "result": ["0", "5", "140"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 146, "result": ["48e", "80", "100", "140"]}, {"depth": 1, "op": 145, "result": ["100", "80", "48e"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 1166, "result": []}, {"depth": 1, "op": 148, "result": ["e7", "0", "c0", "80", "b6a2f15a37aac3b6fdd39afa356b64f51ca8314a", "140"]}, {"depth": 1, "op": 147, "result": ["b6a2f15a37aac3b6fdd39afa356b64f51ca8314a", "0", "c0", "80", "e7"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 231, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["40"]}, {"depth": 1, "op": 81, "result": ["c0"]}, {"depth": 1, "op": 128, "result": ["c0", "c0"]}, {"depth": 1, "op": 145, "result": ["140", "c0", "c0"]}, {"depth": 1, "op": 3, "result": ["80"]}, {"depth": 1, "op": 144, "result": ["c0", "80"]}, {"depth": 1, "op": 161, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 138, "result": []}, {"depth": 1, "op": 0, "result": []}]', '401', '{"--PUSH1": 1, "-PUSH1-MSTORE": 1, "ADD-ADD-GT": 1, "ADD-ADD-MSTORE": 1, "ADD-ADD-SWAP2": 1, "ADD-AND-DUP2": 1, "ADD-AND-DUP6": 1, "ADD-CALLDATACOPY-PUSH0": 1, "ADD-DUP2-ADD": 1, "ADD-DUP2-SWAP1": 1, "ADD-DUP3-ADD": 1, "ADD-DUP5-PUSH2": 1, "ADD-GT-ISZERO": 1, "ADD-MLOAD-DUP7": 1, "ADD-MLOAD-JUMPDEST": 1, "ADD-MSTORE-ADD": 1, "ADD-MSTORE-PUSH1": 1, "ADD-PUSH1-ADD": 1, "ADD-PUSH1-DUP4": 1, "ADD-PUSH1-NOT": 1, "ADD-PUSH2-JUMP": 1, "ADD-SLT-PUSH2": 1, "ADD-SWAP1-DUP4": 1, "ADD-SWAP2-POP": 2, "ADD-SWAP3-SWAP1": 1, "AND-DUP1-PUSH2": 1, "AND-DUP2-ADD": 1, "AND-DUP2-MSTORE": 1, "AND-DUP6-ADD": 1, "AND-PUSH1-ADD": 1, "AND-PUSH1-DUP6": 1, "AND-SWAP2-POP": 1, "CALLDATACOPY-PUSH0-SWAP3": 1, "CALLDATALOAD-DUP2-DUP2": 1, "CALLDATALOAD-PUSH1-SHR": 1, "CALLDATALOAD-PUSH8-DUP1": 1, "CALLDATASIZE-LT-PUSH2": 1, "CALLDATASIZE-PUSH1-PUSH2": 1, "CALLER-DUP3-PUSH1": 1, "CALLVALUE-DUP1-ISZERO": 1, "DUP1-DUP3-GT": 1, "DUP1-DUP5-MSTORE": 1, "DUP1-ISZERO-PUSH2": 1, "DUP1-PUSH1-DUP4": 1, "DUP1-PUSH2-JUMPI": 1, "DUP1-PUSH4-EQ": 3, "DUP1-SWAP2-SUB": 1, "DUP2-ADD-MLOAD": 1, "DUP2-ADD-PUSH1": 1, "DUP2-ADD-SWAP1": 1, "DUP2-AND-PUSH1": 1, "DUP2-CALLDATALOAD-DUP2": 1, "DUP2-CALLDATALOAD-PUSH8": 1, "DUP2-DUP2-GT": 1, "DUP2-DUP2-LT": 2, "DUP2-DUP2-SHR": 1, "DUP2-DUP4-LT": 1, "DUP2-DUP5-ADD": 1, "DUP2-DUP6-ADD": 1, "DUP2-EQ-PUSH2": 1, "DUP2-GT-ISZERO": 2, "DUP2-LT-ISZERO": 2, "DUP2-MLOAD-DUP1": 1, "DUP2-MLOAD-PUSH8": 1, "DUP2-MSTORE-DUP8": 1, "DUP2-MSTORE-PUSH1": 1, "DUP2-PUSH1-MSTORE": 1, "DUP2-PUSH2-DUP5": 1, "DUP2-SHR-SWAP1": 1, "DUP2-SUB-PUSH2": 1, "DUP2-SWAP1-MSTORE": 1, "DUP3-ADD-DUP2": 1, "DUP3-ADD-MSTORE": 1, "DUP3-ADD-PUSH1": 1, "DUP3-AND-DUP1": 1, "DUP3-AND-SWAP2": 1, "DUP3-DUP2-MSTORE": 1, "DUP3-DUP3-PUSH2": 1, "DUP3-DUP5-SUB": 1, "DUP3-DUP7-ADD": 1, "DUP3-GT-DUP2": 1, "DUP3-GT-ISZERO": 2, "DUP3-LT-DUP2": 1, "DUP3-PUSH1-DUP7": 1, "DUP3-PUSH1-MLOAD": 1, "DUP3-PUSH2-JUMP": 1, "DUP4-ADD-AND": 1, "DUP4-ADD-CALLDATACOPY": 1, "DUP4-ADD-DUP3": 1, "DUP4-ADD-DUP5": 1, "DUP4-ADD-MLOAD": 1, "DUP4-ADD-SLT": 1, "DUP4-AND-DUP2": 1, "DUP4-DUP3-GT": 1, "DUP4-GT-PUSH1": 1, "DUP4-LT-OR": 1, "DUP5-ADD-SWAP2": 1, "DUP5-DUP8-ADD": 1, "DUP5-ISZERO-PUSH2": 1, "DUP5-MSTORE-PUSH0": 1, "DUP5-PUSH1-DUP4": 1, "DUP5-PUSH2-JUMP": 2, "DUP5-SLOAD-PUSH2": 1, "DUP5-SUB-SLT": 1, "DUP6-ADD-ADD": 1, "DUP6-ADD-DUP2": 1, "DUP6-DUP4-ADD": 1, "DUP6-SSTORE-PUSH2": 1, "DUP6-SWAP1-SHL": 1, "DUP7-ADD-ADD": 1, "DUP7-ADD-PUSH1": 1, "DUP7-DUP4-ADD": 1, "DUP7-SWAP1-SHL": 1, "DUP8-ADD-ADD": 1, "DUP8-PUSH1-DUP5": 1, "EQ-PUSH2-JUMPI": 4, "GT-DUP2-DUP4": 1, "GT-ISZERO-PUSH2": 5, "GT-PUSH1-DUP2": 1, "ISZERO-PUSH2-JUMPI": 11, "JUMP-JUMPDEST-DUP2": 2, "JUMP-JUMPDEST-DUP5": 1, "JUMP-JUMPDEST-POP": 2, "JUMP-JUMPDEST-PUSH0": 2, "JUMP-JUMPDEST-PUSH1": 6, "JUMP-JUMPDEST-PUSH2": 1, "JUMP-JUMPDEST-STOP": 1, "JUMP-JUMPDEST-SWAP5": 1, "JUMPDEST-DUP2-CALLDATALOAD": 2, "JUMPDEST-DUP2-DUP2": 2, "JUMPDEST-DUP2-DUP5": 1, "JUMPDEST-DUP2-MLOAD": 1, "JUMPDEST-DUP2-PUSH1": 1, "JUMPDEST-DUP3-PUSH1": 1, "JUMPDEST-DUP5-PUSH2": 1, "JUMPDEST-POP-POP": 3, "JUMPDEST-POP-PUSH0": 1, "JUMPDEST-POP-PUSH1": 1, "JUMPDEST-POP-PUSH32": 1, "JUMPDEST-POP-SWAP2": 1, "JUMPDEST-PUSH0-DUP2": 1, "JUMPDEST-PUSH0-NOT": 1, "JUMPDEST-PUSH0-PUSH1": 1, "JUMPDEST-PUSH1-DUP1": 1, "JUMPDEST-PUSH1-DUP2": 1, "JUMPDEST-PUSH1-DUP3": 2, "JUMPDEST-PUSH1-MLOAD": 2, "JUMPDEST-PUSH1-PUSH1": 1, "JUMPDEST-PUSH1-PUSH2": 1, "JUMPDEST-PUSH2-DUP2": 1, "JUMPDEST-PUSH2-JUMP": 1, "JUMPDEST-PUSH2-PUSH2": 1, "JUMPDEST-SWAP5-SWAP4": 1, "JUMPI-DUP1-PUSH4": 2, "JUMPI-JUMPDEST-DUP2": 4, "JUMPI-JUMPDEST-DUP3": 1, "JUMPI-JUMPDEST-POP": 4, "JUMPI-JUMPDEST-PUSH1": 1, "JUMPI-JUMPDEST-PUSH2": 2, "JUMPI-POP-DUP6": 1, "JUMPI-PUSH0-CALLDATALOAD": 1, "JUMPI-PUSH0-DUP5": 1, "JUMPI-PUSH1-DUP2": 1, "JUMPI-PUSH1-DUP3": 1, "LOG1-POP-JUMP": 1, "LT-DUP2-SUB": 1, "LT-ISZERO-PUSH2": 2, "LT-OR-ISZERO": 1, "LT-PUSH2-JUMPI": 1, "MLOAD-DUP1-DUP5": 1, "MLOAD-DUP1-SWAP2": 1, "MLOAD-DUP7-DUP4": 1, "MLOAD-JUMPDEST-PUSH0": 1, "MLOAD-PUSH1-DUP3": 1, "MLOAD-PUSH2-SWAP3": 1, "MLOAD-PUSH8-DUP2": 1, "MSTORE-ADD-PUSH2": 1, "MSTORE-CALLVALUE-DUP1": 1, "MSTORE-DUP3-DUP2": 1, "MSTORE-DUP8-PUSH1": 1, "MSTORE-POP-SWAP6": 1, "MSTORE-PUSH0-JUMPDEST": 1, "MSTORE-PUSH0-SWAP1": 1, "MSTORE-PUSH1-PUSH1": 2, "NOT-AND-PUSH1": 1, "NOT-PUSH1-DUP4": 1, "NOT-PUSH1-DUP7": 1, "NOT-SWAP1-DUP2": 1, "OR-DUP6-SSTORE": 1, "OR-ISZERO-PUSH2": 1, "POP-DUP5-PUSH1": 1, "POP-DUP6-DUP4": 1, "POP-JUMP-JUMPDEST": 7, "POP-JUMPDEST-POP": 1, "POP-JUMPDEST-PUSH1": 1, "POP-POP-JUMP": 5, "POP-POP-JUMPDEST": 1, "POP-POP-POP": 8, "POP-POP-SWAP3": 1, "POP-PUSH0-PUSH1": 1, "POP-PUSH1-CALLDATASIZE": 1, "POP-PUSH32-CALLER": 1, "POP-SWAP2-SWAP1": 1, "POP-SWAP3-SWAP2": 1, "POP-SWAP6-SWAP5": 1, "PUSH0-CALLDATALOAD-PUSH1": 1, "PUSH0-DUP2-MLOAD": 1, "PUSH0-DUP5-ISZERO": 1, "PUSH0-JUMPDEST-DUP2": 1, "PUSH0-NOT-PUSH1": 1, "PUSH0-PUSH1-DUP3": 2, "PUSH0-SWAP1-PUSH2": 1, "PUSH0-SWAP3-DUP2": 1, "PUSH1-ADD-AND": 1, "PUSH1-ADD-SWAP3": 1, "PUSH1-CALLDATASIZE-LT": 1, "PUSH1-DUP1-PUSH1": 1, "PUSH1-DUP2-DUP2": 1, "PUSH1-DUP2-DUP6": 1, "PUSH1-DUP2-EQ": 1, "PUSH1-DUP3-ADD": 2, "PUSH1-DUP3-AND": 1, "PUSH1-DUP3-DUP5": 1, "PUSH1-DUP3-DUP7": 1, "PUSH1-DUP3-GT": 1, "PUSH1-DUP3-LT": 1, "PUSH1-DUP4-ADD": 3, "PUSH1-DUP4-GT": 1, "PUSH1-DUP5-DUP8": 1, "PUSH1-DUP6-SWAP1": 1, "PUSH1-DUP7-ADD": 1, "PUSH1-DUP7-SWAP1": 1, "PUSH1-MLOAD-DUP1": 1, "PUSH1-MLOAD-PUSH1": 1, "PUSH1-MLOAD-PUSH2": 1, "PUSH1-MSTORE-CALLVALUE": 1, "PUSH1-MSTORE-DUP3": 1, "PUSH1-NOT-PUSH1": 1, "PUSH1-NOT-SWAP1": 1, "PUSH1-PUSH1-DUP3": 1, "PUSH1-PUSH1-NOT": 1, "PUSH1-PUSH1-PUSH1": 1, "PUSH1-PUSH1-SHL": 1, "PUSH1-PUSH2-DUP3": 1, "PUSH1-PUSH2-JUMP": 1, "PUSH1-SHL-SUB": 1, "PUSH1-SHR-DUP1": 1, "PUSH2-CALLDATASIZE-PUSH1": 1, "PUSH2-DUP2-PUSH2": 1, "PUSH2-DUP3-DUP3": 1, "PUSH2-DUP5-SLOAD": 1, "PUSH2-JUMP-JUMPDEST": 9, "PUSH2-JUMPI-DUP1": 2, "PUSH2-JUMPI-JUMPDEST": 12, "PUSH2-JUMPI-POP": 1, "PUSH2-JUMPI-PUSH0": 2, "PUSH2-JUMPI-PUSH1": 2, "PUSH2-PUSH2-CALLDATASIZE": 1, "PUSH2-SWAP1-DUP4": 1, "PUSH2-SWAP3-SWAP2": 1, "PUSH32-CALLER-DUP3": 1, "PUSH4-EQ-PUSH2": 3, "PUSH8-DUP1-DUP3": 1, "PUSH8-DUP2-GT": 1, "SHL-OR-DUP6": 1, "SHL-SHR-NOT": 1, "SHL-SUB-DUP4": 1, "SHR-DUP1-PUSH4": 1, "SHR-NOT-AND": 1, "SHR-SWAP1-DUP3": 1, "SLOAD-PUSH2-JUMP": 1, "SLT-ISZERO-PUSH2": 1, "SLT-PUSH2-JUMPI": 1, "SSTORE-PUSH2-JUMP": 1, "SUB-DUP4-AND": 1, "SUB-PUSH2-JUMPI": 1, "SUB-SLT-ISZERO": 1, "SUB-SWAP1-LOG1": 1, "SWAP1-DUP2-AND": 1, "SWAP1-DUP3-AND": 1, "SWAP1-DUP4-ADD": 1, "SWAP1-DUP4-DUP3": 1, "SWAP1-LOG1-POP": 1, "SWAP1-MSTORE-PUSH0": 1, "SWAP1-POP-JUMP": 1, "SWAP1-PUSH2-JUMP": 1, "SWAP1-PUSH2-SWAP1": 1, "SWAP1-SHL-OR": 1, "SWAP1-SHL-SHR": 1, "SWAP1-SWAP3-MSTORE": 1, "SWAP2-POP-DUP5": 1, "SWAP2-POP-JUMPDEST": 1, "SWAP2-POP-POP": 2, "SWAP2-SUB-SWAP1": 1, "SWAP2-SWAP1-POP": 1, "SWAP2-SWAP1-PUSH2": 1, "SWAP3-DUP2-ADD": 1, "SWAP3-MSTORE-POP": 1, "SWAP3-SWAP1-SWAP3": 1, "SWAP3-SWAP2-POP": 1, "SWAP3-SWAP2-SWAP1": 1, "SWAP4-POP-POP": 1, "SWAP5-POP-POP": 1, "SWAP5-SWAP4-POP": 1, "SWAP6-SWAP5-POP": 1}', '{"ADD": 24, "AND": 7, "CALLDATACOPY": 1, "CALLDATALOAD": 3, "CALLDATASIZE": 2, "CALLER": 1, "CALLVALUE": 1, "DUP1": 9, "DUP2": 27, "DUP3": 16, "DUP4": 10, "DUP5": 9, "DUP6": 5, "DUP7": 4, "DUP8": 2, "EQ": 4, "GT": 7, "ISZERO": 11, "JUMP": 16, "JUMPDEST": 32, "JUMPI": 19, "LOG1": 1, "LT": 5, "MLOAD": 7, "MSTORE": 9, "NOT": 4, "OR": 2, "POP": 32, "PUSH0": 9, "PUSH1": 38, "PUSH2": 35, "PUSH32": 1, "PUSH4": 3, "PUSH8": 2, "SHL": 3, "SHR": 3, "SLOAD": 1, "SLT": 2, "SSTORE": 1, "STOP": 1, "SUB": 4, "SWAP1": 12, "SWAP2": 7, "SWAP3": 5, "SWAP4": 1, "SWAP5": 2, "SWAP6": 1}', '["0", "32", "192", "100", "18446744073709551615", "36", "0", "4", "16372862481753577294267620541204082621793577260386896888229232294795359027205", "0", "32745724963507154588535241082408165243587154520773793776458464589590718054410", "1", "5", "5", "0", "0", "32", "32", "5", "1", "128", "1", "32", "0", "5", "256", "128", "1042670065772417531265339626254010608318119686474", "0", "192", "128", "128"]', '["0:PUSH1", "2:PUSH1", "4:MSTORE", "5:CALLVALUE", "6:DUP1", "7:ISZERO", "8:PUSH2", "11:JUMPI", "15:JUMPDEST", "16:POP", "17:PUSH1", "19:CALLDATASIZE", "20:LT", "21:PUSH2", "24:JUMPI", "25:PUSH0", "26:CALLDATALOAD", "27:PUSH1", "29:SHR", "30:DUP1", "31:PUSH4", "36:EQ", "37:PUSH2", "40:JUMPI", "41:DUP1", "42:PUSH4", "47:EQ", "48:PUSH2", "51:JUMPI", "52:DUP1", "53:PUSH4", "58:EQ", "59:PUSH2", "62:JUMPI", "119:JUMPDEST", "120:PUSH2", "123:PUSH2", "126:CALLDATASIZE", "127:PUSH1", "129:PUSH2", "132:JUMP", "546:JUMPDEST", "547:PUSH0", "548:PUSH1", "550:DUP3", "551:DUP5", "552:SUB", "553:SLT", "554:ISZERO", "555:PUSH2", "558:JUMPI", "562:JUMPDEST", "563:DUP2", "564:CALLDATALOAD", "565:PUSH8", "574:DUP1", "575:DUP3", "576:GT", "577:ISZERO", "578:PUSH2", "581:JUMPI", "585:JUMPDEST", "586:DUP2", "587:DUP5", "588:ADD", "589:SWAP2", "590:POP", "591:DUP5", "592:PUSH1", "594:DUP4", "595:ADD", "596:SLT", "597:PUSH2", "600:JUMPI", "604:JUMPDEST", "605:DUP2", "606:CALLDATALOAD", "607:DUP2", "608:DUP2", "609:GT", "610:ISZERO", "611:PUSH2", "614:JUMPI", "622:JUMPDEST", "623:PUSH1", "625:MLOAD", "626:PUSH1", "628:DUP3", "629:ADD", "630:PUSH1", "632:NOT", "633:SWAP1", "634:DUP2", "635:AND", "636:PUSH1", "638:ADD", "639:AND", "640:DUP2", "641:ADD", "642:SWAP1", "643:DUP4", "644:DUP3", "645:GT", "646:DUP2", "647:DUP4", "648:LT", "649:OR", "650:ISZERO", "651:PUSH2", "654:JUMPI", "662:JUMPDEST", "663:DUP2", "664:PUSH1", "666:MSTORE", "667:DUP3", "668:DUP2", "669:MSTORE", "670:DUP8", "671:PUSH1", "673:DUP5", "674:DUP8", "675:ADD", "676:ADD", "677:GT", "678:ISZERO", "679:PUSH2", "682:JUMPI", "686:JUMPDEST", "687:DUP3", "688:PUSH1", "690:DUP7", "691:ADD", "692:PUSH1", "694:DUP4", "695:ADD", "696:CALLDATACOPY", "697:PUSH0", "698:SWAP3", "699:DUP2", "700:ADD", "701:PUSH1", "703:ADD", "704:SWAP3", "705:SWAP1", "706:SWAP3", "707:MSTORE", "708:POP", "709:SWAP6", "710:SWAP5", "711:POP", "712:POP", "713:POP", "714:POP", "715:POP", "716:JUMP", "133:JUMPDEST", "134:PUSH2", "137:JUMP", "169:JUMPDEST", "170:PUSH1", "172:PUSH2", "175:DUP3", "176:DUP3", "177:PUSH2", "180:JUMP", "943:JUMPDEST", "944:DUP2", "945:MLOAD", "946:PUSH8", "955:DUP2", "956:GT", "957:ISZERO", "958:PUSH2", "961:JUMPI", "969:JUMPDEST", "970:PUSH2", "973:DUP2", "974:PUSH2", "977:DUP5", "978:SLOAD", "979:PUSH2", "982:JUMP", "809:JUMPDEST", "810:PUSH1", "812:DUP2", "813:DUP2", "814:SHR", "815:SWAP1", "816:DUP3", "817:AND", "818:DUP1", "819:PUSH2", "822:JUMPI", "823:PUSH1", "825:DUP3", "826:AND", "827:SWAP2", "828:POP", "829:JUMPDEST", "830:PUSH1", "832:DUP3", "833:LT", "834:DUP2", "835:SUB", "836:PUSH2", "839:JUMPI", "859:JUMPDEST", "860:POP", "861:SWAP2", "862:SWAP1", "863:POP", "864:JUMP", "983:JUMPDEST", "984:DUP5", "985:PUSH2", "988:JUMP", "865:JUMPDEST", "866:PUSH1", "868:DUP3", "869:GT", "870:ISZERO", "871:PUSH2", "874:JUMPI", "938:JUMPDEST", "939:POP", "940:POP", "941:POP", "942:JUMP", "989:JUMPDEST", "990:PUSH1", "992:DUP1", "993:PUSH1", "995:DUP4", "996:GT", "997:PUSH1", "999:DUP2", "1000:EQ", "1001:PUSH2", "1004:JUMPI", "1005:PUSH0", "1006:DUP5", "1007:ISZERO", "1008:PUSH2", "1011:JUMPI", "1012:POP", "1013:DUP6", "1014:DUP4", "1015:ADD", "1016:MLOAD", "1017:JUMPDEST", "1018:PUSH0", "1019:NOT", "1020:PUSH1", "1022:DUP7", "1023:SWAP1", "1024:SHL", "1025:SHR", "1026:NOT", "1027:AND", "1028:PUSH1", "1030:DUP6", "1031:SWAP1", "1032:SHL", "1033:OR", "1034:DUP6", "1035:SSTORE", "1036:PUSH2", "1039:JUMP", "934:JUMPDEST", "935:POP", "936:POP", "937:POP", "938:JUMPDEST", "939:POP", "940:POP", "941:POP", "942:JUMP", "181:JUMPDEST", "182:POP", "183:PUSH32", "216:CALLER", "217:DUP3", "218:PUSH1", "220:MLOAD", "221:PUSH2", "224:SWAP3", "225:SWAP2", "226:SWAP1", "227:PUSH2", "230:JUMP", "1131:JUMPDEST", "1132:PUSH1", "1134:PUSH1", "1136:PUSH1", "1138:SHL", "1139:SUB", "1140:DUP4", "1141:AND", "1142:DUP2", "1143:MSTORE", "1144:PUSH1", "1146:PUSH1", "1148:DUP3", "1149:ADD", "1150:DUP2", "1151:SWAP1", "1152:MSTORE", "1153:PUSH0", "1154:SWAP1", "1155:PUSH2", "1158:SWAP1", "1159:DUP4", "1160:ADD", "1161:DUP5", "1162:PUSH2", "1165:JUMP", "717:JUMPDEST", "718:PUSH0", "719:DUP2", "720:MLOAD", "721:DUP1", "722:DUP5", "723:MSTORE", "724:PUSH0", "725:JUMPDEST", "726:DUP2", "727:DUP2", "728:LT", "729:ISZERO", "730:PUSH2", "733:JUMPI", "734:PUSH1", "736:DUP2", "737:DUP6", "738:ADD", "739:DUP2", "740:ADD", "741:MLOAD", "742:DUP7", "743:DUP4", "744:ADD", "745:DUP3", "746:ADD", "747:MSTORE", "748:ADD", "749:PUSH2", "752:JUMP", "725:JUMPDEST", "726:DUP2", "727:DUP2", "728:LT", "729:ISZERO", "730:PUSH2", "733:JUMPI", "753:JUMPDEST", "754:POP", "755:PUSH0", "756:PUSH1", "758:DUP3", "759:DUP7", "760:ADD", "761:ADD", "762:MSTORE", "763:PUSH1", "765:PUSH1", "767:NOT", "768:PUSH1", "770:DUP4", "771:ADD", "772:AND", "773:DUP6", "774:ADD", "775:ADD", "776:SWAP2", "777:POP", "778:POP", "779:SWAP3", "780:SWAP2", "781:POP", "782:POP", "783:JUMP", "1166:JUMPDEST", "1167:SWAP5", "1168:SWAP4", "1169:POP", "1170:POP", "1171:POP", "1172:POP", "1173:JUMP", "231:JUMPDEST", "232:PUSH1", "234:MLOAD", "235:DUP1", "236:SWAP2", "237:SUB", "238:SWAP1", "239:LOG1", "240:POP", "241:JUMP", "138:JUMPDEST", "139:STOP"]'] # noqa: E501 +EXPECTED_JS_TRACERS = ['{"ADD-ADD": 3, "ADD-AND": 2, "ADD-CALLDATACOPY": 1, "ADD-DUP2": 2, "ADD-DUP3": 1, "ADD-DUP5": 1, "ADD-GT": 1, "ADD-MLOAD": 2, "ADD-MSTORE": 2, "ADD-PUSH1": 3, "ADD-PUSH2": 1, "ADD-SLT": 1, "ADD-SWAP1": 1, "ADD-SWAP2": 2, "ADD-SWAP3": 1, "AND-DUP1": 1, "AND-DUP2": 2, "AND-DUP6": 1, "AND-PUSH1": 2, "AND-SWAP2": 1, "CALLDATACOPY-PUSH0": 1, "CALLDATALOAD-DUP2": 1, "CALLDATALOAD-PUSH1": 1, "CALLDATALOAD-PUSH8": 1, "CALLDATASIZE-LT": 1, "CALLDATASIZE-PUSH1": 1, "CALLER-DUP3": 1, "CALLVALUE-DUP1": 1, "DUP1-DUP3": 1, "DUP1-DUP5": 1, "DUP1-ISZERO": 1, "DUP1-PUSH1": 1, "DUP1-PUSH2": 1, "DUP1-PUSH4": 3, "DUP1-SWAP2": 1, "DUP2-ADD": 3, "DUP2-AND": 1, "DUP2-CALLDATALOAD": 2, "DUP2-DUP2": 4, "DUP2-DUP4": 1, "DUP2-DUP5": 1, "DUP2-DUP6": 1, "DUP2-EQ": 1, "DUP2-GT": 2, "DUP2-LT": 2, "DUP2-MLOAD": 2, "DUP2-MSTORE": 2, "DUP2-PUSH1": 1, "DUP2-PUSH2": 1, "DUP2-SHR": 1, "DUP2-SUB": 1, "DUP2-SWAP1": 1, "DUP3-ADD": 3, "DUP3-AND": 2, "DUP3-DUP2": 1, "DUP3-DUP3": 1, "DUP3-DUP5": 1, "DUP3-DUP7": 1, "DUP3-GT": 3, "DUP3-LT": 1, "DUP3-PUSH1": 2, "DUP3-PUSH2": 1, "DUP4-ADD": 6, "DUP4-AND": 1, "DUP4-DUP3": 1, "DUP4-GT": 1, "DUP4-LT": 1, "DUP5-ADD": 1, "DUP5-DUP8": 1, "DUP5-ISZERO": 1, "DUP5-MSTORE": 1, "DUP5-PUSH1": 1, "DUP5-PUSH2": 2, "DUP5-SLOAD": 1, "DUP5-SUB": 1, "DUP6-ADD": 2, "DUP6-DUP4": 1, "DUP6-SSTORE": 1, "DUP6-SWAP1": 1, "DUP7-ADD": 2, "DUP7-DUP4": 1, "DUP7-SWAP1": 1, "DUP8-ADD": 1, "DUP8-PUSH1": 1, "EQ-PUSH2": 4, "GT-DUP2": 1, "GT-ISZERO": 5, "GT-PUSH1": 1, "ISZERO-PUSH2": 11, "JUMP-JUMPDEST": 16, "JUMPDEST-DUP2": 7, "JUMPDEST-DUP3": 1, "JUMPDEST-DUP5": 1, "JUMPDEST-POP": 7, "JUMPDEST-PUSH0": 3, "JUMPDEST-PUSH1": 8, "JUMPDEST-PUSH2": 3, "JUMPDEST-STOP": 1, "JUMPDEST-SWAP5": 1, "JUMPI-DUP1": 2, "JUMPI-JUMPDEST": 12, "JUMPI-POP": 1, "JUMPI-PUSH0": 2, "JUMPI-PUSH1": 2, "LOG1-POP": 1, "LT-DUP2": 1, "LT-ISZERO": 2, "LT-OR": 1, "LT-PUSH2": 1, "MLOAD-DUP1": 2, "MLOAD-DUP7": 1, "MLOAD-JUMPDEST": 1, "MLOAD-PUSH1": 1, "MLOAD-PUSH2": 1, "MLOAD-PUSH8": 1, "MSTORE-ADD": 1, "MSTORE-CALLVALUE": 1, "MSTORE-DUP3": 1, "MSTORE-DUP8": 1, "MSTORE-POP": 1, "MSTORE-PUSH0": 2, "MSTORE-PUSH1": 2, "NOT-AND": 1, "NOT-PUSH1": 2, "NOT-SWAP1": 1, "OR-DUP6": 1, "OR-ISZERO": 1, "POP-DUP5": 1, "POP-DUP6": 1, "POP-JUMP": 7, "POP-JUMPDEST": 2, "POP-POP": 15, "POP-PUSH0": 1, "POP-PUSH1": 1, "POP-PUSH32": 1, "POP-SWAP2": 1, "POP-SWAP3": 1, "POP-SWAP6": 1, "PUSH0-CALLDATALOAD": 1, "PUSH0-DUP2": 1, "PUSH0-DUP5": 1, "PUSH0-JUMPDEST": 1, "PUSH0-NOT": 1, "PUSH0-PUSH1": 2, "PUSH0-SWAP1": 1, "PUSH0-SWAP3": 1, "PUSH1-ADD": 2, "PUSH1-CALLDATASIZE": 1, "PUSH1-DUP1": 1, "PUSH1-DUP2": 3, "PUSH1-DUP3": 7, "PUSH1-DUP4": 4, "PUSH1-DUP5": 1, "PUSH1-DUP6": 1, "PUSH1-DUP7": 2, "PUSH1-MLOAD": 3, "PUSH1-MSTORE": 2, "PUSH1-NOT": 2, "PUSH1-PUSH1": 5, "PUSH1-PUSH2": 2, "PUSH1-SHL": 1, "PUSH1-SHR": 1, "PUSH2-CALLDATASIZE": 1, "PUSH2-DUP2": 1, "PUSH2-DUP3": 1, "PUSH2-DUP5": 1, "PUSH2-JUMP": 9, "PUSH2-JUMPI": 19, "PUSH2-PUSH2": 1, "PUSH2-SWAP1": 1, "PUSH2-SWAP3": 1, "PUSH32-CALLER": 1, "PUSH4-EQ": 3, "PUSH8-DUP1": 1, "PUSH8-DUP2": 1, "SHL-OR": 1, "SHL-SHR": 1, "SHL-SUB": 1, "SHR-DUP1": 1, "SHR-NOT": 1, "SHR-SWAP1": 1, "SLOAD-PUSH2": 1, "SLT-ISZERO": 1, "SLT-PUSH2": 1, "SSTORE-PUSH2": 1, "SUB-DUP4": 1, "SUB-PUSH2": 1, "SUB-SLT": 1, "SUB-SWAP1": 1, "SWAP1-DUP2": 1, "SWAP1-DUP3": 1, "SWAP1-DUP4": 2, "SWAP1-LOG1": 1, "SWAP1-MSTORE": 1, "SWAP1-POP": 1, "SWAP1-PUSH2": 2, "SWAP1-SHL": 2, "SWAP1-SWAP3": 1, "SWAP2-POP": 4, "SWAP2-SUB": 1, "SWAP2-SWAP1": 2, "SWAP3-DUP2": 1, "SWAP3-MSTORE": 1, "SWAP3-SWAP1": 1, "SWAP3-SWAP2": 2, "SWAP4-POP": 1, "SWAP5-POP": 1, "SWAP5-SWAP4": 1, "SWAP6-SWAP5": 1}', '[{"depth": 1, "len": 2, "op": 96, "result": ["80"]}, {"depth": 1, "len": 2, "op": 96, "result": ["40"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "op": 52, "result": ["0"]}, {"depth": 1, "op": 128, "result": ["0", "0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["f"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 15, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["4"]}, {"depth": 1, "op": 54, "result": ["64"]}, {"depth": 1, "op": 16, "result": ["0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["55"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "len": 1, "op": 95, "result": []}, {"depth": 1, "op": 53, "result": ["a413686200000000000000000000000000000000000000000000000000000000"]}, {"depth": 1, "len": 2, "op": 96, "result": ["e0"]}, {"depth": 1, "op": 28, "result": []}, {"depth": 1, "op": 128, "result": ["a4136862", "a4136862"]}, {"depth": 1, "len": 5, "op": 99, "result": ["c4dae88"]}, {"depth": 1, "op": 20, "result": ["0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["59"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 128, "result": ["a4136862", "a4136862"]}, {"depth": 1, "len": 5, "op": 99, "result": ["2e52d606"]}, {"depth": 1, "op": 20, "result": ["0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["6f"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 128, "result": ["a4136862", "a4136862"]}, {"depth": 1, "len": 5, "op": 99, "result": ["a4136862"]}, {"depth": 1, "op": 20, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["77"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 119, "result": []}, {"depth": 1, "len": 3, "op": 97, "result": ["8a"]}, {"depth": 1, "len": 3, "op": 97, "result": ["85"]}, {"depth": 1, "op": 54, "result": ["64"]}, {"depth": 1, "len": 2, "op": 96, "result": ["4"]}, {"depth": 1, "len": 3, "op": 97, "result": ["222"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 546, "result": []}, {"depth": 1, "len": 1, "op": 95, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 130, "result": ["4", "20", "0", "4"]}, {"depth": 1, "op": 132, "result": ["64", "4", "20", "0", "4", "64"]}, {"depth": 1, "op": 3, "result": ["60"]}, {"depth": 1, "op": 18, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["232"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 562, "result": []}, {"depth": 1, "op": 129, "result": ["4", "0", "4"]}, {"depth": 1, "op": 53, "result": ["20"]}, {"depth": 1, "len": 9, "op": 103, "result": ["ffffffffffffffff"]}, {"depth": 1, "op": 128, "result": ["ffffffffffffffff", "ffffffffffffffff"]}, {"depth": 1, "op": 130, "result": ["20", "ffffffffffffffff", "ffffffffffffffff", "20"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["249"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 585, "result": []}, {"depth": 1, "op": 129, "result": ["20", "ffffffffffffffff", "20"]}, {"depth": 1, "op": 132, "result": ["4", "20", "ffffffffffffffff", "20", "0", "4"]}, {"depth": 1, "op": 1, "result": ["24"]}, {"depth": 1, "op": 145, "result": ["20", "ffffffffffffffff", "24"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 132, "result": ["64", "ffffffffffffffff", "24", "0", "4", "64"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 131, "result": ["24", "1f", "64", "ffffffffffffffff", "24"]}, {"depth": 1, "op": 1, "result": ["43"]}, {"depth": 1, "op": 18, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["25c"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 604, "result": []}, {"depth": 1, "op": 129, "result": ["24", "ffffffffffffffff", "24"]}, {"depth": 1, "op": 53, "result": ["5"]}, {"depth": 1, "op": 129, "result": ["ffffffffffffffff", "5", "ffffffffffffffff"]}, {"depth": 1, "op": 129, "result": ["5", "ffffffffffffffff", "5"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["26e"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 622, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["40"]}, {"depth": 1, "op": 81, "result": ["80"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 130, "result": ["5", "1f", "80", "5"]}, {"depth": 1, "op": 1, "result": ["24"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 25, "result": ["ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"]}, {"depth": 1, "op": 144, "result": ["24", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"]}, {"depth": 1, "op": 129, "result": ["ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", "24", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"]}, {"depth": 1, "op": 22, "result": ["20"]}, {"depth": 1, "len": 2, "op": 96, "result": ["3f"]}, {"depth": 1, "op": 1, "result": ["5f"]}, {"depth": 1, "op": 22, "result": ["40"]}, {"depth": 1, "op": 129, "result": ["80", "40", "80"]}, {"depth": 1, "op": 1, "result": ["c0"]}, {"depth": 1, "op": 144, "result": ["80", "c0"]}, {"depth": 1, "op": 131, "result": ["ffffffffffffffff", "80", "c0", "5", "ffffffffffffffff"]}, {"depth": 1, "op": 130, "result": ["c0", "ffffffffffffffff", "80", "c0"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "op": 129, "result": ["80", "0", "80"]}, {"depth": 1, "op": 131, "result": ["c0", "80", "0", "80", "c0"]}, {"depth": 1, "op": 16, "result": ["0"]}, {"depth": 1, "op": 23, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["296"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 662, "result": []}, {"depth": 1, "op": 129, "result": ["c0", "80", "c0"]}, {"depth": 1, "len": 2, "op": 96, "result": ["40"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "op": 130, "result": ["5", "80", "c0", "5"]}, {"depth": 1, "op": 129, "result": ["80", "5", "80"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "op": 135, "result": ["64", "80", "c0", "5", "ffffffffffffffff", "24", "0", "4", "64"]}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 132, "result": ["5", "20", "64", "80", "c0", "5"]}, {"depth": 1, "op": 135, "result": ["24", "5", "20", "64", "80", "c0", "5", "ffffffffffffffff", "24"]}, {"depth": 1, "op": 1, "result": ["29"]}, {"depth": 1, "op": 1, "result": ["49"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["2ae"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 686, "result": []}, {"depth": 1, "op": 130, "result": ["5", "80", "c0", "5"]}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 134, "result": ["24", "20", "5", "80", "c0", "5", "ffffffffffffffff", "24"]}, {"depth": 1, "op": 1, "result": ["44"]}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 131, "result": ["80", "20", "44", "5", "80"]}, {"depth": 1, "op": 1, "result": ["a0"]}, {"depth": 1, "op": 55, "result": []}, {"depth": 1, "len": 1, "op": 95, "result": []}, {"depth": 1, "op": 146, "result": ["5", "80", "c0", "0"]}, {"depth": 1, "op": 129, "result": ["80", "5", "80"]}, {"depth": 1, "op": 1, "result": ["85"]}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 1, "result": ["a5"]}, {"depth": 1, "op": 146, "result": ["0", "80", "c0", "a5"]}, {"depth": 1, "op": 144, "result": ["80", "0"]}, {"depth": 1, "op": 146, "result": ["a5", "0", "c0", "80"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 149, "result": ["85", "ffffffffffffffff", "24", "0", "4", "64", "80"]}, {"depth": 1, "op": 148, "result": ["64", "ffffffffffffffff", "24", "0", "4", "85"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 133, "result": []}, {"depth": 1, "len": 3, "op": 97, "result": ["a9"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 169, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["b5"]}, {"depth": 1, "op": 130, "result": ["80", "b5", "1", "80"]}, {"depth": 1, "op": 130, "result": ["1", "80", "b5", "1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["3af"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 943, "result": []}, {"depth": 1, "op": 129, "result": ["80", "1", "80"]}, {"depth": 1, "op": 81, "result": ["5"]}, {"depth": 1, "len": 9, "op": 103, "result": ["ffffffffffffffff"]}, {"depth": 1, "op": 129, "result": ["5", "ffffffffffffffff", "5"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["3c9"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 969, "result": []}, {"depth": 1, "len": 3, "op": 97, "result": ["3dd"]}, {"depth": 1, "op": 129, "result": ["5", "3dd", "5"]}, {"depth": 1, "len": 3, "op": 97, "result": ["3d7"]}, {"depth": 1, "op": 132, "result": ["1", "3d7", "5", "3dd", "5", "1"]}, {"depth": 1, "op": 84, "result": ["48656c6c6f00000000000000000000000000000000000000000000000000000a"]}, {"depth": 1, "len": 3, "op": 97, "result": ["329"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 809, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["1"]}, {"depth": 1, "op": 129, "result": ["48656c6c6f00000000000000000000000000000000000000000000000000000a", "1", "48656c6c6f00000000000000000000000000000000000000000000000000000a"]}, {"depth": 1, "op": 129, "result": ["1", "48656c6c6f00000000000000000000000000000000000000000000000000000a", "1"]}, {"depth": 1, "op": 28, "result": []}, {"depth": 1, "op": 144, "result": ["1", "2432b63637800000000000000000000000000000000000000000000000000005"]}, {"depth": 1, "op": 130, "result": ["48656c6c6f00000000000000000000000000000000000000000000000000000a", "1", "2432b63637800000000000000000000000000000000000000000000000000005", "48656c6c6f00000000000000000000000000000000000000000000000000000a"]}, {"depth": 1, "op": 22, "result": ["0"]}, {"depth": 1, "op": 128, "result": ["0", "0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["33d"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["7f"]}, {"depth": 1, "op": 130, "result": ["2432b63637800000000000000000000000000000000000000000000000000005", "7f", "0", "2432b63637800000000000000000000000000000000000000000000000000005"]}, {"depth": 1, "op": 22, "result": ["5"]}, {"depth": 1, "op": 145, "result": ["2432b63637800000000000000000000000000000000000000000000000000005", "0", "5"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 91, "pc": 829, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 130, "result": ["5", "20", "0", "5"]}, {"depth": 1, "op": 16, "result": ["1"]}, {"depth": 1, "op": 129, "result": ["0", "1", "0"]}, {"depth": 1, "op": 3, "result": ["ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"]}, {"depth": 1, "len": 3, "op": 97, "result": ["35b"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 859, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 145, "result": ["3d7", "48656c6c6f00000000000000000000000000000000000000000000000000000a", "5"]}, {"depth": 1, "op": 144, "result": ["48656c6c6f00000000000000000000000000000000000000000000000000000a", "3d7"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 983, "result": []}, {"depth": 1, "op": 132, "result": ["1", "5", "5", "3dd", "5", "1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["361"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 865, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 130, "result": ["5", "1f", "1", "5"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["3aa"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 938, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 989, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 128, "result": ["20", "20"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 131, "result": ["5", "1f", "20", "20", "5"]}, {"depth": 1, "op": 17, "result": ["0"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1"]}, {"depth": 1, "op": 129, "result": ["0", "1", "0"]}, {"depth": 1, "op": 20, "result": ["0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["410"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "len": 1, "op": 95, "result": []}, {"depth": 1, "op": 132, "result": ["5", "0", "0", "20", "20", "5"]}, {"depth": 1, "op": 21, "result": ["0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["3f9"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 133, "result": ["80", "0", "20", "20", "5", "1", "80"]}, {"depth": 1, "op": 131, "result": ["20", "80", "0", "20", "20"]}, {"depth": 1, "op": 1, "result": ["a0"]}, {"depth": 1, "op": 81, "result": ["776f726c64000000000000000000000000000000000000000000000000000000"]}, {"depth": 1, "op": 91, "pc": 1017, "result": []}, {"depth": 1, "len": 1, "op": 95, "result": []}, {"depth": 1, "op": 25, "result": ["ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"]}, {"depth": 1, "len": 2, "op": 96, "result": ["3"]}, {"depth": 1, "op": 134, "result": ["5", "3", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "776f726c64000000000000000000000000000000000000000000000000000000", "0", "20", "20", "5"]}, {"depth": 1, "op": 144, "result": ["3", "5"]}, {"depth": 1, "op": 27, "result": []}, {"depth": 1, "op": 28, "result": []}, {"depth": 1, "op": 25, "result": ["ffffffffff000000000000000000000000000000000000000000000000000000"]}, {"depth": 1, "op": 22, "result": ["776f726c64000000000000000000000000000000000000000000000000000000"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1"]}, {"depth": 1, "op": 133, "result": ["5", "1", "776f726c64000000000000000000000000000000000000000000000000000000", "0", "20", "20", "5"]}, {"depth": 1, "op": 144, "result": ["1", "5"]}, {"depth": 1, "op": 27, "result": []}, {"depth": 1, "op": 23, "result": ["776f726c6400000000000000000000000000000000000000000000000000000a"]}, {"depth": 1, "op": 133, "result": ["1", "776f726c6400000000000000000000000000000000000000000000000000000a", "0", "20", "20", "5", "1"]}, {"depth": 1, "op": 85, "result": []}, {"depth": 1, "len": 3, "op": 97, "result": ["3a6"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 934, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 91, "pc": 938, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 181, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "len": 33, "op": 127, "result": ["61ae4cbae83f72235cd9fa781d18fcb08ff5fa4a44fcc1630fde673bb0041151"]}, {"depth": 1, "op": 51, "result": ["b6a2f15a37aac3b6fdd39afa356b64f51ca8314a"]}, {"depth": 1, "op": 130, "result": ["80", "b6a2f15a37aac3b6fdd39afa356b64f51ca8314a", "61ae4cbae83f72235cd9fa781d18fcb08ff5fa4a44fcc1630fde673bb0041151", "80"]}, {"depth": 1, "len": 2, "op": 96, "result": ["40"]}, {"depth": 1, "op": 81, "result": ["c0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["e7"]}, {"depth": 1, "op": 146, "result": ["b6a2f15a37aac3b6fdd39afa356b64f51ca8314a", "c0", "80", "e7"]}, {"depth": 1, "op": 145, "result": ["80", "c0", "b6a2f15a37aac3b6fdd39afa356b64f51ca8314a"]}, {"depth": 1, "op": 144, "result": ["c0", "80"]}, {"depth": 1, "len": 3, "op": 97, "result": ["46b"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 1131, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["1"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1"]}, {"depth": 1, "len": 2, "op": 96, "result": ["a0"]}, {"depth": 1, "op": 27, "result": []}, {"depth": 1, "op": 3, "result": ["ffffffffffffffffffffffffffffffffffffffff"]}, {"depth": 1, "op": 131, "result": ["b6a2f15a37aac3b6fdd39afa356b64f51ca8314a", "ffffffffffffffffffffffffffffffffffffffff", "c0", "80", "b6a2f15a37aac3b6fdd39afa356b64f51ca8314a"]}, {"depth": 1, "op": 22, "result": ["b6a2f15a37aac3b6fdd39afa356b64f51ca8314a"]}, {"depth": 1, "op": 129, "result": ["c0", "b6a2f15a37aac3b6fdd39afa356b64f51ca8314a", "c0"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["40"]}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 130, "result": ["c0", "20", "40", "c0"]}, {"depth": 1, "op": 1, "result": ["e0"]}, {"depth": 1, "op": 129, "result": ["40", "e0", "40"]}, {"depth": 1, "op": 144, "result": ["e0", "40"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "len": 1, "op": 95, "result": []}, {"depth": 1, "op": 144, "result": ["40", "0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["48e"]}, {"depth": 1, "op": 144, "result": ["40", "48e"]}, {"depth": 1, "op": 131, "result": ["c0", "40", "48e", "0", "c0"]}, {"depth": 1, "op": 1, "result": ["100"]}, {"depth": 1, "op": 132, "result": ["80", "100", "48e", "0", "c0", "80"]}, {"depth": 1, "len": 3, "op": 97, "result": ["2cd"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 717, "result": []}, {"depth": 1, "len": 1, "op": 95, "result": []}, {"depth": 1, "op": 129, "result": ["80", "0", "80"]}, {"depth": 1, "op": 81, "result": ["5"]}, {"depth": 1, "op": 128, "result": ["5", "5"]}, {"depth": 1, "op": 132, "result": ["100", "5", "5", "0", "80", "100"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "len": 1, "op": 95, "result": []}, {"depth": 1, "op": 91, "pc": 725, "result": []}, {"depth": 1, "op": 129, "result": ["5", "0", "5"]}, {"depth": 1, "op": 129, "result": ["0", "5", "0"]}, {"depth": 1, "op": 16, "result": ["1"]}, {"depth": 1, "op": 21, "result": ["0"]}, {"depth": 1, "len": 3, "op": 97, "result": ["2f1"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 129, "result": ["0", "20", "0"]}, {"depth": 1, "op": 133, "result": ["80", "0", "20", "0", "5", "0", "80"]}, {"depth": 1, "op": 1, "result": ["80"]}, {"depth": 1, "op": 129, "result": ["20", "80", "20"]}, {"depth": 1, "op": 1, "result": ["a0"]}, {"depth": 1, "op": 81, "result": ["776f726c64000000000000000000000000000000000000000000000000000000"]}, {"depth": 1, "op": 134, "result": ["100", "776f726c64000000000000000000000000000000000000000000000000000000", "20", "0", "5", "0", "80", "100"]}, {"depth": 1, "op": 131, "result": ["0", "100", "776f726c64000000000000000000000000000000000000000000000000000000", "20", "0"]}, {"depth": 1, "op": 1, "result": ["100"]}, {"depth": 1, "op": 130, "result": ["20", "100", "776f726c64000000000000000000000000000000000000000000000000000000", "20"]}, {"depth": 1, "op": 1, "result": ["120"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "op": 1, "result": ["20"]}, {"depth": 1, "len": 3, "op": 97, "result": ["2d5"]}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 725, "result": []}, {"depth": 1, "op": 129, "result": ["5", "20", "5"]}, {"depth": 1, "op": 129, "result": ["20", "5", "20"]}, {"depth": 1, "op": 16, "result": ["0"]}, {"depth": 1, "op": 21, "result": ["1"]}, {"depth": 1, "len": 3, "op": 97, "result": ["2f1"]}, {"depth": 1, "op": 87, "result": []}, {"depth": 1, "op": 91, "pc": 753, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "len": 1, "op": 95, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "op": 130, "result": ["5", "20", "0", "5"]}, {"depth": 1, "op": 134, "result": ["100", "5", "20", "0", "5", "0", "80", "100"]}, {"depth": 1, "op": 1, "result": ["105"]}, {"depth": 1, "op": 1, "result": ["125"]}, {"depth": 1, "op": 82, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["20"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 25, "result": ["ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"]}, {"depth": 1, "len": 2, "op": 96, "result": ["1f"]}, {"depth": 1, "op": 131, "result": ["5", "1f", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", "20", "5"]}, {"depth": 1, "op": 1, "result": ["24"]}, {"depth": 1, "op": 22, "result": ["20"]}, {"depth": 1, "op": 133, "result": ["100", "20", "20", "5", "0", "80", "100"]}, {"depth": 1, "op": 1, "result": ["120"]}, {"depth": 1, "op": 1, "result": ["140"]}, {"depth": 1, "op": 145, "result": ["0", "5", "140"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 146, "result": ["48e", "80", "100", "140"]}, {"depth": 1, "op": 145, "result": ["100", "80", "48e"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 1166, "result": []}, {"depth": 1, "op": 148, "result": ["e7", "0", "c0", "80", "b6a2f15a37aac3b6fdd39afa356b64f51ca8314a", "140"]}, {"depth": 1, "op": 147, "result": ["b6a2f15a37aac3b6fdd39afa356b64f51ca8314a", "0", "c0", "80", "e7"]}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 231, "result": []}, {"depth": 1, "len": 2, "op": 96, "result": ["40"]}, {"depth": 1, "op": 81, "result": ["c0"]}, {"depth": 1, "op": 128, "result": ["c0", "c0"]}, {"depth": 1, "op": 145, "result": ["140", "c0", "c0"]}, {"depth": 1, "op": 3, "result": ["80"]}, {"depth": 1, "op": 144, "result": ["c0", "80"]}, {"depth": 1, "op": 161, "result": []}, {"depth": 1, "op": 80, "result": []}, {"depth": 1, "op": 86, "result": []}, {"depth": 1, "op": 91, "pc": 138, "result": []}, {"depth": 1, "op": 0, "result": []}]', '401', '{"--PUSH1": 1, "-PUSH1-MSTORE": 1, "ADD-ADD-GT": 1, "ADD-ADD-MSTORE": 1, "ADD-ADD-SWAP2": 1, "ADD-AND-DUP2": 1, "ADD-AND-DUP6": 1, "ADD-CALLDATACOPY-PUSH0": 1, "ADD-DUP2-ADD": 1, "ADD-DUP2-SWAP1": 1, "ADD-DUP3-ADD": 1, "ADD-DUP5-PUSH2": 1, "ADD-GT-ISZERO": 1, "ADD-MLOAD-DUP7": 1, "ADD-MLOAD-JUMPDEST": 1, "ADD-MSTORE-ADD": 1, "ADD-MSTORE-PUSH1": 1, "ADD-PUSH1-ADD": 1, "ADD-PUSH1-DUP4": 1, "ADD-PUSH1-NOT": 1, "ADD-PUSH2-JUMP": 1, "ADD-SLT-PUSH2": 1, "ADD-SWAP1-DUP4": 1, "ADD-SWAP2-POP": 2, "ADD-SWAP3-SWAP1": 1, "AND-DUP1-PUSH2": 1, "AND-DUP2-ADD": 1, "AND-DUP2-MSTORE": 1, "AND-DUP6-ADD": 1, "AND-PUSH1-ADD": 1, "AND-PUSH1-DUP6": 1, "AND-SWAP2-POP": 1, "CALLDATACOPY-PUSH0-SWAP3": 1, "CALLDATALOAD-DUP2-DUP2": 1, "CALLDATALOAD-PUSH1-SHR": 1, "CALLDATALOAD-PUSH8-DUP1": 1, "CALLDATASIZE-LT-PUSH2": 1, "CALLDATASIZE-PUSH1-PUSH2": 1, "CALLER-DUP3-PUSH1": 1, "CALLVALUE-DUP1-ISZERO": 1, "DUP1-DUP3-GT": 1, "DUP1-DUP5-MSTORE": 1, "DUP1-ISZERO-PUSH2": 1, "DUP1-PUSH1-DUP4": 1, "DUP1-PUSH2-JUMPI": 1, "DUP1-PUSH4-EQ": 3, "DUP1-SWAP2-SUB": 1, "DUP2-ADD-MLOAD": 1, "DUP2-ADD-PUSH1": 1, "DUP2-ADD-SWAP1": 1, "DUP2-AND-PUSH1": 1, "DUP2-CALLDATALOAD-DUP2": 1, "DUP2-CALLDATALOAD-PUSH8": 1, "DUP2-DUP2-GT": 1, "DUP2-DUP2-LT": 2, "DUP2-DUP2-SHR": 1, "DUP2-DUP4-LT": 1, "DUP2-DUP5-ADD": 1, "DUP2-DUP6-ADD": 1, "DUP2-EQ-PUSH2": 1, "DUP2-GT-ISZERO": 2, "DUP2-LT-ISZERO": 2, "DUP2-MLOAD-DUP1": 1, "DUP2-MLOAD-PUSH8": 1, "DUP2-MSTORE-DUP8": 1, "DUP2-MSTORE-PUSH1": 1, "DUP2-PUSH1-MSTORE": 1, "DUP2-PUSH2-DUP5": 1, "DUP2-SHR-SWAP1": 1, "DUP2-SUB-PUSH2": 1, "DUP2-SWAP1-MSTORE": 1, "DUP3-ADD-DUP2": 1, "DUP3-ADD-MSTORE": 1, "DUP3-ADD-PUSH1": 1, "DUP3-AND-DUP1": 1, "DUP3-AND-SWAP2": 1, "DUP3-DUP2-MSTORE": 1, "DUP3-DUP3-PUSH2": 1, "DUP3-DUP5-SUB": 1, "DUP3-DUP7-ADD": 1, "DUP3-GT-DUP2": 1, "DUP3-GT-ISZERO": 2, "DUP3-LT-DUP2": 1, "DUP3-PUSH1-DUP7": 1, "DUP3-PUSH1-MLOAD": 1, "DUP3-PUSH2-JUMP": 1, "DUP4-ADD-AND": 1, "DUP4-ADD-CALLDATACOPY": 1, "DUP4-ADD-DUP3": 1, "DUP4-ADD-DUP5": 1, "DUP4-ADD-MLOAD": 1, "DUP4-ADD-SLT": 1, "DUP4-AND-DUP2": 1, "DUP4-DUP3-GT": 1, "DUP4-GT-PUSH1": 1, "DUP4-LT-OR": 1, "DUP5-ADD-SWAP2": 1, "DUP5-DUP8-ADD": 1, "DUP5-ISZERO-PUSH2": 1, "DUP5-MSTORE-PUSH0": 1, "DUP5-PUSH1-DUP4": 1, "DUP5-PUSH2-JUMP": 2, "DUP5-SLOAD-PUSH2": 1, "DUP5-SUB-SLT": 1, "DUP6-ADD-ADD": 1, "DUP6-ADD-DUP2": 1, "DUP6-DUP4-ADD": 1, "DUP6-SSTORE-PUSH2": 1, "DUP6-SWAP1-SHL": 1, "DUP7-ADD-ADD": 1, "DUP7-ADD-PUSH1": 1, "DUP7-DUP4-ADD": 1, "DUP7-SWAP1-SHL": 1, "DUP8-ADD-ADD": 1, "DUP8-PUSH1-DUP5": 1, "EQ-PUSH2-JUMPI": 4, "GT-DUP2-DUP4": 1, "GT-ISZERO-PUSH2": 5, "GT-PUSH1-DUP2": 1, "ISZERO-PUSH2-JUMPI": 11, "JUMP-JUMPDEST-DUP2": 2, "JUMP-JUMPDEST-DUP5": 1, "JUMP-JUMPDEST-POP": 2, "JUMP-JUMPDEST-PUSH0": 2, "JUMP-JUMPDEST-PUSH1": 6, "JUMP-JUMPDEST-PUSH2": 1, "JUMP-JUMPDEST-STOP": 1, "JUMP-JUMPDEST-SWAP5": 1, "JUMPDEST-DUP2-CALLDATALOAD": 2, "JUMPDEST-DUP2-DUP2": 2, "JUMPDEST-DUP2-DUP5": 1, "JUMPDEST-DUP2-MLOAD": 1, "JUMPDEST-DUP2-PUSH1": 1, "JUMPDEST-DUP3-PUSH1": 1, "JUMPDEST-DUP5-PUSH2": 1, "JUMPDEST-POP-POP": 3, "JUMPDEST-POP-PUSH0": 1, "JUMPDEST-POP-PUSH1": 1, "JUMPDEST-POP-PUSH32": 1, "JUMPDEST-POP-SWAP2": 1, "JUMPDEST-PUSH0-DUP2": 1, "JUMPDEST-PUSH0-NOT": 1, "JUMPDEST-PUSH0-PUSH1": 1, "JUMPDEST-PUSH1-DUP1": 1, "JUMPDEST-PUSH1-DUP2": 1, "JUMPDEST-PUSH1-DUP3": 2, "JUMPDEST-PUSH1-MLOAD": 2, "JUMPDEST-PUSH1-PUSH1": 1, "JUMPDEST-PUSH1-PUSH2": 1, "JUMPDEST-PUSH2-DUP2": 1, "JUMPDEST-PUSH2-JUMP": 1, "JUMPDEST-PUSH2-PUSH2": 1, "JUMPDEST-SWAP5-SWAP4": 1, "JUMPI-DUP1-PUSH4": 2, "JUMPI-JUMPDEST-DUP2": 4, "JUMPI-JUMPDEST-DUP3": 1, "JUMPI-JUMPDEST-POP": 4, "JUMPI-JUMPDEST-PUSH1": 1, "JUMPI-JUMPDEST-PUSH2": 2, "JUMPI-POP-DUP6": 1, "JUMPI-PUSH0-CALLDATALOAD": 1, "JUMPI-PUSH0-DUP5": 1, "JUMPI-PUSH1-DUP2": 1, "JUMPI-PUSH1-DUP3": 1, "LOG1-POP-JUMP": 1, "LT-DUP2-SUB": 1, "LT-ISZERO-PUSH2": 2, "LT-OR-ISZERO": 1, "LT-PUSH2-JUMPI": 1, "MLOAD-DUP1-DUP5": 1, "MLOAD-DUP1-SWAP2": 1, "MLOAD-DUP7-DUP4": 1, "MLOAD-JUMPDEST-PUSH0": 1, "MLOAD-PUSH1-DUP3": 1, "MLOAD-PUSH2-SWAP3": 1, "MLOAD-PUSH8-DUP2": 1, "MSTORE-ADD-PUSH2": 1, "MSTORE-CALLVALUE-DUP1": 1, "MSTORE-DUP3-DUP2": 1, "MSTORE-DUP8-PUSH1": 1, "MSTORE-POP-SWAP6": 1, "MSTORE-PUSH0-JUMPDEST": 1, "MSTORE-PUSH0-SWAP1": 1, "MSTORE-PUSH1-PUSH1": 2, "NOT-AND-PUSH1": 1, "NOT-PUSH1-DUP4": 1, "NOT-PUSH1-DUP7": 1, "NOT-SWAP1-DUP2": 1, "OR-DUP6-SSTORE": 1, "OR-ISZERO-PUSH2": 1, "POP-DUP5-PUSH1": 1, "POP-DUP6-DUP4": 1, "POP-JUMP-JUMPDEST": 7, "POP-JUMPDEST-POP": 1, "POP-JUMPDEST-PUSH1": 1, "POP-POP-JUMP": 5, "POP-POP-JUMPDEST": 1, "POP-POP-POP": 8, "POP-POP-SWAP3": 1, "POP-PUSH0-PUSH1": 1, "POP-PUSH1-CALLDATASIZE": 1, "POP-PUSH32-CALLER": 1, "POP-SWAP2-SWAP1": 1, "POP-SWAP3-SWAP2": 1, "POP-SWAP6-SWAP5": 1, "PUSH0-CALLDATALOAD-PUSH1": 1, "PUSH0-DUP2-MLOAD": 1, "PUSH0-DUP5-ISZERO": 1, "PUSH0-JUMPDEST-DUP2": 1, "PUSH0-NOT-PUSH1": 1, "PUSH0-PUSH1-DUP3": 2, "PUSH0-SWAP1-PUSH2": 1, "PUSH0-SWAP3-DUP2": 1, "PUSH1-ADD-AND": 1, "PUSH1-ADD-SWAP3": 1, "PUSH1-CALLDATASIZE-LT": 1, "PUSH1-DUP1-PUSH1": 1, "PUSH1-DUP2-DUP2": 1, "PUSH1-DUP2-DUP6": 1, "PUSH1-DUP2-EQ": 1, "PUSH1-DUP3-ADD": 2, "PUSH1-DUP3-AND": 1, "PUSH1-DUP3-DUP5": 1, "PUSH1-DUP3-DUP7": 1, "PUSH1-DUP3-GT": 1, "PUSH1-DUP3-LT": 1, "PUSH1-DUP4-ADD": 3, "PUSH1-DUP4-GT": 1, "PUSH1-DUP5-DUP8": 1, "PUSH1-DUP6-SWAP1": 1, "PUSH1-DUP7-ADD": 1, "PUSH1-DUP7-SWAP1": 1, "PUSH1-MLOAD-DUP1": 1, "PUSH1-MLOAD-PUSH1": 1, "PUSH1-MLOAD-PUSH2": 1, "PUSH1-MSTORE-CALLVALUE": 1, "PUSH1-MSTORE-DUP3": 1, "PUSH1-NOT-PUSH1": 1, "PUSH1-NOT-SWAP1": 1, "PUSH1-PUSH1-DUP3": 1, "PUSH1-PUSH1-NOT": 1, "PUSH1-PUSH1-PUSH1": 1, "PUSH1-PUSH1-SHL": 1, "PUSH1-PUSH2-DUP3": 1, "PUSH1-PUSH2-JUMP": 1, "PUSH1-SHL-SUB": 1, "PUSH1-SHR-DUP1": 1, "PUSH2-CALLDATASIZE-PUSH1": 1, "PUSH2-DUP2-PUSH2": 1, "PUSH2-DUP3-DUP3": 1, "PUSH2-DUP5-SLOAD": 1, "PUSH2-JUMP-JUMPDEST": 9, "PUSH2-JUMPI-DUP1": 2, "PUSH2-JUMPI-JUMPDEST": 12, "PUSH2-JUMPI-POP": 1, "PUSH2-JUMPI-PUSH0": 2, "PUSH2-JUMPI-PUSH1": 2, "PUSH2-PUSH2-CALLDATASIZE": 1, "PUSH2-SWAP1-DUP4": 1, "PUSH2-SWAP3-SWAP2": 1, "PUSH32-CALLER-DUP3": 1, "PUSH4-EQ-PUSH2": 3, "PUSH8-DUP1-DUP3": 1, "PUSH8-DUP2-GT": 1, "SHL-OR-DUP6": 1, "SHL-SHR-NOT": 1, "SHL-SUB-DUP4": 1, "SHR-DUP1-PUSH4": 1, "SHR-NOT-AND": 1, "SHR-SWAP1-DUP3": 1, "SLOAD-PUSH2-JUMP": 1, "SLT-ISZERO-PUSH2": 1, "SLT-PUSH2-JUMPI": 1, "SSTORE-PUSH2-JUMP": 1, "SUB-DUP4-AND": 1, "SUB-PUSH2-JUMPI": 1, "SUB-SLT-ISZERO": 1, "SUB-SWAP1-LOG1": 1, "SWAP1-DUP2-AND": 1, "SWAP1-DUP3-AND": 1, "SWAP1-DUP4-ADD": 1, "SWAP1-DUP4-DUP3": 1, "SWAP1-LOG1-POP": 1, "SWAP1-MSTORE-PUSH0": 1, "SWAP1-POP-JUMP": 1, "SWAP1-PUSH2-JUMP": 1, "SWAP1-PUSH2-SWAP1": 1, "SWAP1-SHL-OR": 1, "SWAP1-SHL-SHR": 1, "SWAP1-SWAP3-MSTORE": 1, "SWAP2-POP-DUP5": 1, "SWAP2-POP-JUMPDEST": 1, "SWAP2-POP-POP": 2, "SWAP2-SUB-SWAP1": 1, "SWAP2-SWAP1-POP": 1, "SWAP2-SWAP1-PUSH2": 1, "SWAP3-DUP2-ADD": 1, "SWAP3-MSTORE-POP": 1, "SWAP3-SWAP1-SWAP3": 1, "SWAP3-SWAP2-POP": 1, "SWAP3-SWAP2-SWAP1": 1, "SWAP4-POP-POP": 1, "SWAP5-POP-POP": 1, "SWAP5-SWAP4-POP": 1, "SWAP6-SWAP5-POP": 1}', '{"ADD": 24, "AND": 7, "CALLDATACOPY": 1, "CALLDATALOAD": 3, "CALLDATASIZE": 2, "CALLER": 1, "CALLVALUE": 1, "DUP1": 9, "DUP2": 27, "DUP3": 16, "DUP4": 10, "DUP5": 9, "DUP6": 5, "DUP7": 4, "DUP8": 2, "EQ": 4, "GT": 7, "ISZERO": 11, "JUMP": 16, "JUMPDEST": 32, "JUMPI": 19, "LOG1": 1, "LT": 5, "MLOAD": 7, "MSTORE": 9, "NOT": 4, "OR": 2, "POP": 32, "PUSH0": 9, "PUSH1": 38, "PUSH2": 35, "PUSH32": 1, "PUSH4": 3, "PUSH8": 2, "SHL": 3, "SHR": 3, "SLOAD": 1, "SLT": 2, "SSTORE": 1, "STOP": 1, "SUB": 4, "SWAP1": 12, "SWAP2": 7, "SWAP3": 5, "SWAP4": 1, "SWAP5": 2, "SWAP6": 1}', '["0", "32", "192", "100", "18446744073709551615", "36", "0", "4", "16372862481753577294267620541204082621793577260386896888229232294795359027205", "0", "32745724963507154588535241082408165243587154520773793776458464589590718054410", "1", "5", "5", "0", "0", "32", "32", "5", "1", "128", "1", "32", "0", "5", "256", "128", "1042670065772417531265339626254010608318119686474", "0", "192", "128", "128"]', '["0:PUSH1", "2:PUSH1", "4:MSTORE", "5:CALLVALUE", "6:DUP1", "7:ISZERO", "8:PUSH2", "11:JUMPI", "15:JUMPDEST", "16:POP", "17:PUSH1", "19:CALLDATASIZE", "20:LT", "21:PUSH2", "24:JUMPI", "25:PUSH0", "26:CALLDATALOAD", "27:PUSH1", "29:SHR", "30:DUP1", "31:PUSH4", "36:EQ", "37:PUSH2", "40:JUMPI", "41:DUP1", "42:PUSH4", "47:EQ", "48:PUSH2", "51:JUMPI", "52:DUP1", "53:PUSH4", "58:EQ", "59:PUSH2", "62:JUMPI", "119:JUMPDEST", "120:PUSH2", "123:PUSH2", "126:CALLDATASIZE", "127:PUSH1", "129:PUSH2", "132:JUMP", "546:JUMPDEST", "547:PUSH0", "548:PUSH1", "550:DUP3", "551:DUP5", "552:SUB", "553:SLT", "554:ISZERO", "555:PUSH2", "558:JUMPI", "562:JUMPDEST", "563:DUP2", "564:CALLDATALOAD", "565:PUSH8", "574:DUP1", "575:DUP3", "576:GT", "577:ISZERO", "578:PUSH2", "581:JUMPI", "585:JUMPDEST", "586:DUP2", "587:DUP5", "588:ADD", "589:SWAP2", "590:POP", "591:DUP5", "592:PUSH1", "594:DUP4", "595:ADD", "596:SLT", "597:PUSH2", "600:JUMPI", "604:JUMPDEST", "605:DUP2", "606:CALLDATALOAD", "607:DUP2", "608:DUP2", "609:GT", "610:ISZERO", "611:PUSH2", "614:JUMPI", "622:JUMPDEST", "623:PUSH1", "625:MLOAD", "626:PUSH1", "628:DUP3", "629:ADD", "630:PUSH1", "632:NOT", "633:SWAP1", "634:DUP2", "635:AND", "636:PUSH1", "638:ADD", "639:AND", "640:DUP2", "641:ADD", "642:SWAP1", "643:DUP4", "644:DUP3", "645:GT", "646:DUP2", "647:DUP4", "648:LT", "649:OR", "650:ISZERO", "651:PUSH2", "654:JUMPI", "662:JUMPDEST", "663:DUP2", "664:PUSH1", "666:MSTORE", "667:DUP3", "668:DUP2", "669:MSTORE", "670:DUP8", "671:PUSH1", "673:DUP5", "674:DUP8", "675:ADD", "676:ADD", "677:GT", "678:ISZERO", "679:PUSH2", "682:JUMPI", "686:JUMPDEST", "687:DUP3", "688:PUSH1", "690:DUP7", "691:ADD", "692:PUSH1", "694:DUP4", "695:ADD", "696:CALLDATACOPY", "697:PUSH0", "698:SWAP3", "699:DUP2", "700:ADD", "701:PUSH1", "703:ADD", "704:SWAP3", "705:SWAP1", "706:SWAP3", "707:MSTORE", "708:POP", "709:SWAP6", "710:SWAP5", "711:POP", "712:POP", "713:POP", "714:POP", "715:POP", "716:JUMP", "133:JUMPDEST", "134:PUSH2", "137:JUMP", "169:JUMPDEST", "170:PUSH1", "172:PUSH2", "175:DUP3", "176:DUP3", "177:PUSH2", "180:JUMP", "943:JUMPDEST", "944:DUP2", "945:MLOAD", "946:PUSH8", "955:DUP2", "956:GT", "957:ISZERO", "958:PUSH2", "961:JUMPI", "969:JUMPDEST", "970:PUSH2", "973:DUP2", "974:PUSH2", "977:DUP5", "978:SLOAD", "979:PUSH2", "982:JUMP", "809:JUMPDEST", "810:PUSH1", "812:DUP2", "813:DUP2", "814:SHR", "815:SWAP1", "816:DUP3", "817:AND", "818:DUP1", "819:PUSH2", "822:JUMPI", "823:PUSH1", "825:DUP3", "826:AND", "827:SWAP2", "828:POP", "829:JUMPDEST", "830:PUSH1", "832:DUP3", "833:LT", "834:DUP2", "835:SUB", "836:PUSH2", "839:JUMPI", "859:JUMPDEST", "860:POP", "861:SWAP2", "862:SWAP1", "863:POP", "864:JUMP", "983:JUMPDEST", "984:DUP5", "985:PUSH2", "988:JUMP", "865:JUMPDEST", "866:PUSH1", "868:DUP3", "869:GT", "870:ISZERO", "871:PUSH2", "874:JUMPI", "938:JUMPDEST", "939:POP", "940:POP", "941:POP", "942:JUMP", "989:JUMPDEST", "990:PUSH1", "992:DUP1", "993:PUSH1", "995:DUP4", "996:GT", "997:PUSH1", "999:DUP2", "1000:EQ", "1001:PUSH2", "1004:JUMPI", "1005:PUSH0", "1006:DUP5", "1007:ISZERO", "1008:PUSH2", "1011:JUMPI", "1012:POP", "1013:DUP6", "1014:DUP4", "1015:ADD", "1016:MLOAD", "1017:JUMPDEST", "1018:PUSH0", "1019:NOT", "1020:PUSH1", "1022:DUP7", "1023:SWAP1", "1024:SHL", "1025:SHR", "1026:NOT", "1027:AND", "1028:PUSH1", "1030:DUP6", "1031:SWAP1", "1032:SHL", "1033:OR", "1034:DUP6", "1035:SSTORE", "1036:PUSH2", "1039:JUMP", "934:JUMPDEST", "935:POP", "936:POP", "937:POP", "938:JUMPDEST", "939:POP", "940:POP", "941:POP", "942:JUMP", "181:JUMPDEST", "182:POP", "183:PUSH32", "216:CALLER", "217:DUP3", "218:PUSH1", "220:MLOAD", "221:PUSH2", "224:SWAP3", "225:SWAP2", "226:SWAP1", "227:PUSH2", "230:JUMP", "1131:JUMPDEST", "1132:PUSH1", "1134:PUSH1", "1136:PUSH1", "1138:SHL", "1139:SUB", "1140:DUP4", "1141:AND", "1142:DUP2", "1143:MSTORE", "1144:PUSH1", "1146:PUSH1", "1148:DUP3", "1149:ADD", "1150:DUP2", "1151:SWAP1", "1152:MSTORE", "1153:PUSH0", "1154:SWAP1", "1155:PUSH2", "1158:SWAP1", "1159:DUP4", "1160:ADD", "1161:DUP5", "1162:PUSH2", "1165:JUMP", "717:JUMPDEST", "718:PUSH0", "719:DUP2", "720:MLOAD", "721:DUP1", "722:DUP5", "723:MSTORE", "724:PUSH0", "725:JUMPDEST", "726:DUP2", "727:DUP2", "728:LT", "729:ISZERO", "730:PUSH2", "733:JUMPI", "734:PUSH1", "736:DUP2", "737:DUP6", "738:ADD", "739:DUP2", "740:ADD", "741:MLOAD", "742:DUP7", "743:DUP4", "744:ADD", "745:DUP3", "746:ADD", "747:MSTORE", "748:ADD", "749:PUSH2", "752:JUMP", "725:JUMPDEST", "726:DUP2", "727:DUP2", "728:LT", "729:ISZERO", "730:PUSH2", "733:JUMPI", "753:JUMPDEST", "754:POP", "755:PUSH0", "756:PUSH1", "758:DUP3", "759:DUP7", "760:ADD", "761:ADD", "762:MSTORE", "763:PUSH1", "765:PUSH1", "767:NOT", "768:PUSH1", "770:DUP4", "771:ADD", "772:AND", "773:DUP6", "774:ADD", "775:ADD", "776:SWAP2", "777:POP", "778:POP", "779:SWAP3", "780:SWAP2", "781:POP", "782:POP", "783:JUMP", "1166:JUMPDEST", "1167:SWAP5", "1168:SWAP4", "1169:POP", "1170:POP", "1171:POP", "1172:POP", "1173:JUMP", "231:JUMPDEST", "232:PUSH1", "234:MLOAD", "235:DUP1", "236:SWAP2", "237:SUB", "238:SWAP1", "239:LOG1", "240:POP", "241:JUMP", "138:JUMPDEST", "139:STOP"]'] # noqa: E501 diff --git a/tests/integration_tests/test_filters.py b/tests/integration_tests/test_filters.py index 2f30339b93..f1a737eb47 100644 --- a/tests/integration_tests/test_filters.py +++ b/tests/integration_tests/test_filters.py @@ -98,12 +98,11 @@ def test_get_logs_by_topic(cluster): logs = w3.eth.get_logs({"topics": [topic.hex()]}) assert len(logs) == 0 - # return logs when to block is newer than latest - end = start + 2000 + end = "latest" logs = w3.eth.get_logs( { - "fromBlock": hex(start), - "toBlock": hex(end), + "fromBlock": start, + "toBlock": end, "address": [contract.address], } ) diff --git a/tests/integration_tests/test_tracers.py b/tests/integration_tests/test_tracers.py index f8f4043e6d..10e6703256 100644 --- a/tests/integration_tests/test_tracers.py +++ b/tests/integration_tests/test_tracers.py @@ -103,6 +103,7 @@ def process(w3): [tx_hash, tracer | {"tracerConfig": {"onlyTopCall": True}}], ) assert tx_res["result"] == EXPECTED_CALLTRACERS, "" + call = w3.provider.make_request _, tx = deploy_contract(w3, CONTRACTS["TestERC20A"], key=acc.key) tx_hash = tx["transactionHash"].hex() w3_wait_for_new_blocks(w3, 1) @@ -579,6 +580,8 @@ def test_refund_unused_gas_when_contract_tx_reverted(ethermint): tx_res = tx_res["result"] pre = int(tx_res["pre"][sender]["balance"], 16) post = int(tx_res["post"][sender]["balance"], 16) + print(pre, post) + print(gas, gas_price, min_gas_multiplier) diff = pre - gas * gas_price * min_gas_multiplier - post assert diff == 0, diff @@ -640,7 +643,7 @@ def test_refund_unused_gas_when_contract_tx_reverted_state_overrides(ethermint): def test_debug_tracecall_return_revert_data_when_call_failed(ethermint, geth): - expected = "08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001a46756e6374696f6e20686173206265656e207265766572746564000000000000" # noqa: E501 + expected = "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001a46756e6374696f6e20686173206265656e207265766572746564000000000000" # noqa: E501 def process(w3): test_revert, _ = deploy_contract(w3, CONTRACTS["TestRevert"]) diff --git a/tests/integration_tests/test_types.py b/tests/integration_tests/test_types.py index 237cf3896a..d29b775b92 100644 --- a/tests/integration_tests/test_types.py +++ b/tests/integration_tests/test_types.py @@ -22,11 +22,23 @@ def test_block(ethermint, geth): - get_blocks(ethermint, geth, False) - get_blocks(ethermint, geth, True) - - -def get_blocks(ethermint_rpc_ws, geth, with_transactions): + whitelist_keys = [ + # EIP-4895 + "withdrawals", + "withdrawalsRoot", + # EIP-4788 + "parentBeaconBlockRoot", + # EIP-4844 + "blobGasUsed", + "excessBlobGas", + # EIP-7685 + "requestsHash" + ] + get_blocks(ethermint, geth, False, whitelist_keys) + get_blocks(ethermint, geth, True, whitelist_keys) + + +def get_blocks(ethermint_rpc_ws, geth, with_transactions, whitelist_keys=[]): w3: Web3 = ethermint_rpc_ws.w3 eth_rpc = w3.provider geth_rpc = geth.w3.provider @@ -39,17 +51,26 @@ def wait_blk(): geth_blk = wait_for_fn("wait_blk", wait_blk) make_same_rpc_calls( - eth_rpc, geth_rpc, "eth_getBlockByNumber", ["0x2", with_transactions] + eth_rpc, + geth_rpc, + "eth_getBlockByNumber", + ["0x2", with_transactions], + whitelist_keys ) make_same_rpc_calls( - eth_rpc, geth_rpc, "eth_getBlockByNumber", ["0x2710", with_transactions] + eth_rpc, + geth_rpc, + "eth_getBlockByNumber", + ["0x2710", with_transactions], + whitelist_keys, ) ethermint_blk = w3.eth.get_block(1) # Get existing block, no transactions eth_rsp = eth_rpc.make_request( - "eth_getBlockByHash", [ethermint_blk["hash"].hex(), with_transactions] + "eth_getBlockByHash", + [ethermint_blk["hash"].hex(), with_transactions], ) geth_rsp = geth_rpc.make_request( "eth_getBlockByHash", @@ -58,7 +79,7 @@ def wait_blk(): with_transactions, ], ) - compare_types(eth_rsp, geth_rsp) + compare_types(eth_rsp, geth_rsp, whitelist_keys) # Get not existing block make_same_rpc_calls( @@ -91,13 +112,6 @@ def test_syncing(ethermint_rpc_ws, geth): make_same_rpc_calls(eth_rpc, geth_rpc, "eth_syncing", []) -def test_coinbase(ethermint_rpc_ws, geth): - w3: Web3 = ethermint_rpc_ws.w3 - eth_rpc = w3.provider - geth_rpc = geth.w3.provider - make_same_rpc_calls(eth_rpc, geth_rpc, "eth_coinbase", []) - - def test_max_priority_fee(ethermint_rpc_ws, geth): w3: Web3 = ethermint_rpc_ws.w3 eth_rpc = w3.provider @@ -323,14 +337,27 @@ def test_fee_history(ethermint_rpc_ws, geth): w3: Web3 = ethermint_rpc_ws.w3 eth_rpc = w3.provider geth_rpc = geth.w3.provider - make_same_rpc_calls(eth_rpc, geth_rpc, "eth_feeHistory", [4, "latest", [10, 90]]) + whitelist_keys = ["baseFeePerBlobGas", "blobGasUsedRatio"] + make_same_rpc_calls( + eth_rpc, + geth_rpc, + "eth_feeHistory", + [4, "latest", [10, 90]], + whitelist_keys, + ) - make_same_rpc_calls(eth_rpc, geth_rpc, "eth_feeHistory", [4, "0x5000", [10, 90]]) + make_same_rpc_calls( + eth_rpc, + geth_rpc, + "eth_feeHistory", + [4, "0x5000", [10, 90]], + whitelist_keys, + ) _ = send_and_get_hash(w3) fee_history = eth_rpc.make_request("eth_feeHistory", [4, "latest", [100]]) - compare_types(fee_history, EXPECTED_FEE_HISTORY) + compare_types(fee_history, EXPECTED_FEE_HISTORY, whitelist_keys) def test_estimate_gas(ethermint_rpc_ws, geth): @@ -350,8 +377,8 @@ def wait_blk(): make_same_rpc_calls(eth_rpc, geth_rpc, "eth_estimateGas", [{}]) -def compare_types(actual, expected): - res, err = same_types(actual, expected) +def compare_types(actual, expected, whitelist_keys=[]): + res, err = same_types(actual, expected, whitelist_keys) if not res: print(err) print(actual) @@ -359,10 +386,10 @@ def compare_types(actual, expected): assert res, err -def make_same_rpc_calls(rpc1, rpc2, method, params): +def make_same_rpc_calls(rpc1, rpc2, method, params, whitelist_keys=[]): res1 = rpc1.make_request(method, params) res2 = rpc2.make_request(method, params) - compare_types(res1, res2) + compare_types(res1, res2, whitelist_keys) def test_incomplete_send_transaction(ethermint_rpc_ws, geth): @@ -375,15 +402,17 @@ def test_incomplete_send_transaction(ethermint_rpc_ws, geth): make_same_rpc_calls(eth_rpc, geth_rpc, "eth_sendTransaction", [tx]) -def same_types(given, expected): +def same_types(given, expected, whitelist_keys=[]): if isinstance(given, dict): if not isinstance(expected, dict): return False, "A is dict, B is not" keys = list(set(list(given.keys()) + list(expected.keys()))) for key in keys: + if key in whitelist_keys: + continue if key not in expected or key not in given: return False, key + " key not on both json" - res, err = same_types(given[key], expected[key]) + res, err = same_types(given[key], expected[key], whitelist_keys) if not res: return res, key + " key failed. Error: " + err return True, "" @@ -393,7 +422,7 @@ def same_types(given, expected): if len(given) == 0 and len(expected) == 0: return True, "" if len(given) > 0 and len(expected) > 0: - return same_types(given[0], expected[0]) + return same_types(given[0], expected[0], whitelist_keys) else: return True, "" elif given is None and expected is None: diff --git a/types/int.go b/types/int.go index de02539067..5e1c8db442 100644 --- a/types/int.go +++ b/types/int.go @@ -36,6 +36,21 @@ func init() { MaxInt256 = tmp.Lsh(big.NewInt(1), sdkmath.MaxBitLen).Sub(&tmp, big.NewInt(1)) } +// BigMax returns the larger of x or y. +func BigMax(x, y *big.Int) *big.Int { + if x.Cmp(y) >= 0 { + return x + } + return y +} + +func BigMin(x, y *big.Int) *big.Int { + if x.Cmp(y) <= 0 { + return x + } + return y +} + // SafeInt64 checks for overflows while casting a uint64 to int64 value. func SafeInt64(value uint64) (int64, error) { if value > uint64(math.MaxInt64) { diff --git a/x/evm/genesis_test.go b/x/evm/genesis_test.go index 5a85c9591f..8b5e558ed3 100644 --- a/x/evm/genesis_test.go +++ b/x/evm/genesis_test.go @@ -1,10 +1,11 @@ package evm_test import ( - "math/big" "testing" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/tracing" + "github.com/holiman/uint256" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/evmos/ethermint/crypto/ethsecp256k1" @@ -47,7 +48,7 @@ func (suite *GenesisTestSuite) TestInitGenesis() { { "valid account", func() { - vmdb.AddBalance(address, big.NewInt(1)) + vmdb.AddBalance(address, uint256.NewInt(1), tracing.BalanceChangeTransfer) }, &types.GenesisState{ Params: types.DefaultParams(), diff --git a/x/evm/handler_test.go b/x/evm/handler_test.go index e0dc65f7da..92c230cfab 100644 --- a/x/evm/handler_test.go +++ b/x/evm/handler_test.go @@ -7,6 +7,7 @@ import ( "github.com/evmos/ethermint/testutil" "github.com/evmos/ethermint/x/evm/keeper" + "github.com/holiman/uint256" sdkmath "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" @@ -16,6 +17,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/stretchr/testify/require" @@ -392,17 +394,18 @@ func (suite *HandlerTestSuite) deployERC20Contract() common.Address { ctorArgs, err := types.ERC20Contract.ABI.Pack("", suite.Address, big.NewInt(10000000000)) suite.Require().NoError(err) msg := &core.Message{ - From: suite.Address, - To: nil, - Nonce: nonce, - Value: big.NewInt(0), - GasLimit: 2000000, - GasPrice: big.NewInt(1), - GasFeeCap: nil, - GasTipCap: nil, - Data: append(types.ERC20Contract.Bin, ctorArgs...), - AccessList: nil, - SkipAccountChecks: true, + From: suite.Address, + To: nil, + Nonce: nonce, + Value: big.NewInt(0), + GasLimit: 2000000, + GasPrice: big.NewInt(1), + GasFeeCap: nil, + GasTipCap: nil, + Data: append(types.ERC20Contract.Bin, ctorArgs...), + AccessList: nil, + SkipNonceChecks: true, + SkipFromEOACheck: true, } rsp, err := k.ApplyMessage(suite.Ctx, msg, nil, true) suite.Require().NoError(err) @@ -449,7 +452,7 @@ func (suite *HandlerTestSuite) TestERC20TransferReverted() { k.SetHooks(tc.hooks) // add some fund to pay gas fee - k.SetBalance(suite.Ctx, suite.Address, big.NewInt(1000000000000000), types.DefaultEVMDenom) + k.SetBalance(suite.Ctx, suite.Address, *uint256.NewInt(1000000000000000), types.DefaultEVMDenom) contract := suite.deployERC20Contract() @@ -553,7 +556,7 @@ func (suite *HandlerTestSuite) TestContractDeploymentRevert() { // simulate nonce increment in ante handler db := suite.StateDB() - db.SetNonce(suite.Address, nonce+1) + db.SetNonce(suite.Address, nonce+1, tracing.NonceChangeUnspecified) suite.Require().NoError(db.Commit()) rsp, err := k.EthereumTx(suite.Ctx, tx) diff --git a/x/evm/keeper/config.go b/x/evm/keeper/config.go index fb9f1fc6d3..54e960b6dc 100644 --- a/x/evm/keeper/config.go +++ b/x/evm/keeper/config.go @@ -21,6 +21,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/tracing" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/params" rpctypes "github.com/evmos/ethermint/rpc/types" @@ -53,7 +54,7 @@ type EVMBlockConfig struct { type EVMConfig struct { *EVMBlockConfig TxConfig statedb.TxConfig - Tracer vm.EVMLogger + Tracer *tracing.Hooks DebugTrace bool Overrides *rpctypes.StateOverride BlockOverrides *rpctypes.BlockOverrides @@ -118,10 +119,7 @@ func (k *Keeper) RemoveParamsCache(ctx sdk.Context) { ctx.ObjectStore(k.objectKey).Delete(types.KeyPrefixObjectParams) } -func (cfg EVMConfig) GetTracer() vm.EVMLogger { - if _, ok := cfg.Tracer.(*types.NoOpTracer); ok { - return nil - } +func (cfg EVMConfig) GetTracer() *tracing.Hooks { return cfg.Tracer } diff --git a/x/evm/keeper/gas.go b/x/evm/keeper/gas.go index b184702937..5a3afdab7b 100644 --- a/x/evm/keeper/gas.go +++ b/x/evm/keeper/gas.go @@ -32,7 +32,15 @@ import ( // GetEthIntrinsicGas returns the intrinsic gas cost for the transaction func (k *Keeper) GetEthIntrinsicGas(msg *core.Message, rules params.Rules, isContractCreation bool) (uint64, error) { - return core.IntrinsicGas(msg.Data, msg.AccessList, isContractCreation, rules.IsHomestead, rules.IsIstanbul, rules.IsShanghai) + return core.IntrinsicGas( + msg.Data, + msg.AccessList, + msg.SetCodeAuthorizations, + isContractCreation, + rules.IsHomestead, + rules.IsIstanbul, + rules.IsShanghai, + ) } // RefundGas transfers the leftover gas to the sender of the message, caped to half of the total gas diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index d670e30953..1d9fb38696 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -508,12 +508,12 @@ func (k Keeper) TraceTx(c context.Context, req *types.QueryTraceTxRequest) (*typ k, baseFee, func(ctx sdk.Context, cfg *EVMConfig, traceConfig *types.TraceConfig) (*core.Message, error) { - signer := ethtypes.MakeSigner(cfg.ChainConfig, big.NewInt(ctx.BlockHeight())) - tracer, err := newTacer(&logger.Config{}, cfg.TxConfig, traceConfig) + signer := ethtypes.MakeSigner(cfg.ChainConfig, big.NewInt(ctx.BlockHeight()), uint64(ctx.BlockTime().Unix())) //#nosec G115 + tracer, err := newTacer(&logger.Config{}, cfg.ChainConfig, cfg.TxConfig, traceConfig) if err != nil { return nil, status.Error(codes.Internal, err.Error()) } - cfg.Tracer = tracer + cfg.Tracer = tracer.Hooks cfg.DebugTrace = true for i, tx := range req.Predecessors { ethTx := tx.AsTransaction() @@ -584,7 +584,7 @@ func (k Keeper) TraceBlock(c context.Context, req *types.QueryTraceBlockRequest) if err != nil { return nil, status.Error(codes.Internal, "failed to load evm config") } - signer := ethtypes.MakeSigner(cfg.ChainConfig, big.NewInt(ctx.BlockHeight())) + signer := ethtypes.MakeSigner(cfg.ChainConfig, big.NewInt(ctx.BlockHeight()), uint64(ctx.BlockTime().Unix())) //#nosec G115 txsLength := len(req.Txs) results := make([]*types.TxTraceResult, 0, txsLength) @@ -670,8 +670,19 @@ func (k Keeper) TraceCall(c context.Context, req *types.QueryTraceCallRequest) ( }, nil } -func newTacer(logConfig *logger.Config, txConfig statedb.TxConfig, traceConfig *types.TraceConfig) (tracers.Tracer, error) { - tracer := logger.NewStructLogger(logConfig) +func newTacer( + logConfig *logger.Config, + chainConfig *ethparams.ChainConfig, + txConfig statedb.TxConfig, + traceConfig *types.TraceConfig, +) (*tracers.Tracer, error) { + sLogger := logger.NewStructLogger(logConfig) + tracer := &tracers.Tracer{ + Hooks: sLogger.Hooks(), + GetResult: sLogger.GetResult, + Stop: sLogger.Stop, + } + if traceConfig != nil && traceConfig.Tracer != "" { txIndex, err := ethermint.SafeInt(txConfig.TxIndex) if err != nil { @@ -686,7 +697,7 @@ func newTacer(logConfig *logger.Config, txConfig statedb.TxConfig, traceConfig * if traceConfig.TracerJsonConfig != "" { cfg = json.RawMessage(traceConfig.TracerJsonConfig) } - tracer, err := tracers.DefaultDirectory.New(traceConfig.Tracer, tCtx, cfg) + tracer, err := tracers.DefaultDirectory.New(traceConfig.Tracer, tCtx, cfg, chainConfig) if err != nil { return nil, err } @@ -706,7 +717,7 @@ func (k *Keeper) prepareTrace( txConfig := cfg.TxConfig // Assemble the structured logger or the JavaScript tracer var ( - tracer tracers.Tracer + tracer *tracers.Tracer overrides *ethparams.ChainConfig err error timeout = defaultTraceTimeout @@ -725,12 +736,11 @@ func (k *Keeper) prepareTrace( DisableStorage: traceConfig.DisableStorage, DisableStack: traceConfig.DisableStack, EnableReturnData: traceConfig.EnableReturnData, - Debug: traceConfig.Debug, Limit: int(traceConfig.Limit), Overrides: overrides, } - tracer, err = newTacer(&logConfig, txConfig, traceConfig) + tracer, err = newTacer(&logConfig, cfg.ChainConfig, txConfig, traceConfig) if err != nil { return nil, 0, status.Error(codes.Internal, err.Error()) } @@ -771,7 +781,7 @@ func (k *Keeper) prepareTrace( cfg.BlockOverrides = &blockOverrides } - cfg.Tracer = tracer + cfg.Tracer = tracer.Hooks cfg.DebugTrace = true res, err := k.ApplyMessageWithConfig(ctx, msg, cfg, commitMessage) if err != nil { diff --git a/x/evm/keeper/grpc_query_test.go b/x/evm/keeper/grpc_query_test.go index 755702635b..d9621739f9 100644 --- a/x/evm/keeper/grpc_query_test.go +++ b/x/evm/keeper/grpc_query_test.go @@ -11,6 +11,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" @@ -25,6 +26,7 @@ import ( "github.com/evmos/ethermint/x/evm/types" evmtypes "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" + "github.com/holiman/uint256" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" ) @@ -126,10 +128,13 @@ func (suite *GRPCServerTestSuiteSuite) transferERC20Token(t require.TestingT, co ercTransferTx.From = suite.Address.Bytes() err = ercTransferTx.Sign(ethtypes.LatestSignerForChainID(chainID), suite.Signer) + require.NoError(t, err) rsp, err := suite.App.EvmKeeper.EthereumTx(suite.Ctx, ercTransferTx) + require.NoError(t, err) require.Empty(t, rsp.VmError) + return ercTransferTx } @@ -862,7 +867,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceTx() { predecessors = []*types.MsgEthereumTx{} }, expPass: true, - traceResponse: "{\"gas\":34828,\"failed\":false,\"returnValue\":\"0000000000000000000000000000000000000000000000000000000000000001\",\"structLogs\":[{\"pc\":0,\"op\":\"PUSH1\",\"gas\":", + traceResponse: `{"gas":34828,"failed":false,"returnValue":"0x0000000000000000000000000000000000000000000000000000000000000001","structLogs":[{"pc":0,"op":"PUSH1","gas`, }, { msg: "default trace with filtered response", @@ -875,7 +880,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceTx() { predecessors = []*types.MsgEthereumTx{} }, expPass: true, - traceResponse: "{\"gas\":34828,\"failed\":false,\"returnValue\":\"0000000000000000000000000000000000000000000000000000000000000001\",\"structLogs\":[{\"pc\":0,\"op\":\"PUSH1\",\"gas\":", + traceResponse: `{"gas":34828,"failed":false,"returnValue":"0x0000000000000000000000000000000000000000000000000000000000000001","structLogs":[{"pc":0,"op":"PUSH1","gas`, enableFeemarket: false, }, { @@ -905,7 +910,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceTx() { { msg: "default trace with enableFeemarket and sufficient balance", malleate: func() { - suite.App.EvmKeeper.SetBalance(suite.Ctx, suite.Address, big.NewInt(1000000000000000000), types.DefaultEVMDenom) + suite.App.EvmKeeper.SetBalance(suite.Ctx, suite.Address, *uint256.NewInt(1000000000000000000), types.DefaultEVMDenom) traceConfig = &types.TraceConfig{ DisableStack: true, DisableStorage: true, @@ -914,7 +919,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceTx() { predecessors = []*types.MsgEthereumTx{} }, expPass: true, - traceResponse: "{\"gas\":34828,\"failed\":false,\"returnValue\":\"0000000000000000000000000000000000000000000000000000000000000001\",\"structLogs\":[{\"pc\":0,\"op\":\"PUSH1\",\"gas\":", + traceResponse: `{"gas":34828,"failed":false,"returnValue":"0x0000000000000000000000000000000000000000000000000000000000000001","structLogs":[{"pc":0,"op":"PUSH1","gas`, enableFeemarket: true, }, { @@ -931,7 +936,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceTx() { { msg: "javascript tracer with enableFeemarket and sufficient balance", malleate: func() { - suite.App.EvmKeeper.SetBalance(suite.Ctx, suite.Address, big.NewInt(1000000000000000000), types.DefaultEVMDenom) + suite.App.EvmKeeper.SetBalance(suite.Ctx, suite.Address, *uint256.NewInt(1000000000000000000), types.DefaultEVMDenom) traceConfig = &types.TraceConfig{ Tracer: "{data: [], fault: function(log) {}, step: function(log) { if(log.op.toString() == \"CALL\") this.data.push(log.stack.peek(0)); }, result: function() { return this.data; }}", } @@ -948,7 +953,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceTx() { // increase nonce to avoid address collision vmdb := suite.StateDB() - vmdb.SetNonce(suite.Address, vmdb.GetNonce(suite.Address)+1) + vmdb.SetNonce(suite.Address, vmdb.GetNonce(suite.Address)+1, tracing.NonceChangeUnspecified) suite.Require().NoError(vmdb.Commit()) contractAddr := suite.deployTestContract(suite.Address) suite.Commit(suite.T()) @@ -960,7 +965,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceTx() { predecessors = append(predecessors, firstTx) }, expPass: true, - traceResponse: "{\"gas\":34828,\"failed\":false,\"returnValue\":\"0000000000000000000000000000000000000000000000000000000000000001\",\"structLogs\":[{\"pc\":0,\"op\":\"PUSH1\",\"gas\":", + traceResponse: "{\"gas\":34828,\"failed\":false,\"returnValue\":\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"structLogs\":[{\"pc\":0,\"op\":\"PUSH1\",\"gas", enableFeemarket: false, }, { @@ -1006,7 +1011,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceTx() { // increase nonce to avoid address collision vmdb := suite.StateDB() - vmdb.SetNonce(suite.Address, vmdb.GetNonce(suite.Address)+1) + vmdb.SetNonce(suite.Address, vmdb.GetNonce(suite.Address)+1, tracing.NonceChangeUnspecified) suite.Require().NoError(vmdb.Commit()) chainID := suite.App.EvmKeeper.ChainID() @@ -1031,7 +1036,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceTx() { suite.App.EvmKeeper.SetParams(suite.Ctx, params) }, expPass: true, - traceResponse: "{\"gas\":34828,\"failed\":false,\"returnValue\":\"0000000000000000000000000000000000000000000000000000000000000001\",\"structLogs\":[{\"pc\":0,\"op\":\"PUSH1\",\"gas\":", + traceResponse: "{\"gas\":34828,\"failed\":false,\"returnValue\":\"0x0000000000000000000000000000000000000000000000000000000000000001\",\"structLogs\":[{\"pc\":0,\"op\":\"PUSH1\",\"gas", }, { msg: "invalid chain id", @@ -1120,7 +1125,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceBlock() { traceConfig = nil }, expPass: true, - traceResponse: "[{\"result\":{\"gas\":34828,\"failed\":false,\"returnValue\":\"0000000000000000000000000000000000000000000000000000000000000001\",\"structLogs\":[{\"pc\":0,\"op\":\"PU", + traceResponse: `[{"result":{"gas":34828,"failed":false,"returnValue":"0x0000000000000000000000000000000000000000000000000000000000000001","structLogs":[{"pc":0,"op":"`, }, { msg: "filtered trace", @@ -1132,7 +1137,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceBlock() { } }, expPass: true, - traceResponse: "[{\"result\":{\"gas\":34828,\"failed\":false,\"returnValue\":\"0000000000000000000000000000000000000000000000000000000000000001\",\"structLogs\":[{\"pc\":0,\"op\":\"PU", + traceResponse: `[{"result":{"gas":34828,"failed":false,"returnValue":"0x0000000000000000000000000000000000000000000000000000000000000001","structLogs":[{"pc":0,"op":"`, }, { msg: "javascript tracer", @@ -1154,7 +1159,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceBlock() { } }, expPass: true, - traceResponse: "[{\"result\":{\"gas\":34828,\"failed\":false,\"returnValue\":\"0000000000000000000000000000000000000000000000000000000000000001\",\"structLogs\":[{\"pc\":0,\"op\":\"PU", + traceResponse: `[{"result":{"gas":34828,"failed":false,"returnValue":"0x0000000000000000000000000000000000000000000000000000000000000001","structLogs":[{"pc":0,"op":"`, enableFeemarket: true, }, { @@ -1165,7 +1170,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceBlock() { } }, expPass: true, - traceResponse: "[{\"result\":[]}]", + traceResponse: `[{"result":[]}]`, enableFeemarket: true, }, { @@ -1175,7 +1180,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceBlock() { // increase nonce to avoid address collision vmdb := suite.StateDB() - vmdb.SetNonce(suite.Address, vmdb.GetNonce(suite.Address)+1) + vmdb.SetNonce(suite.Address, vmdb.GetNonce(suite.Address)+1, tracing.NonceChangeUnspecified) suite.Require().NoError(vmdb.Commit()) contractAddr := suite.deployTestContract(suite.Address) suite.Commit(suite.T()) @@ -1187,7 +1192,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceBlock() { txs = append([]*types.MsgEthereumTx{}, firstTx, secondTx) }, expPass: true, - traceResponse: "[{\"result\":{\"gas\":34828,\"failed\":false,\"returnValue\":\"0000000000000000000000000000000000000000000000000000000000000001\",\"structLogs\":[{\"pc\":0,\"op\":\"PU", + traceResponse: `[{"result":{"gas":34828,"failed":false,"returnValue":"0x0000000000000000000000000000000000000000000000000000000000000001","structLogs":[{"pc":0,"op":"`, enableFeemarket: false, }, { @@ -1235,7 +1240,7 @@ func (suite *GRPCServerTestSuiteSuite) TestTraceBlock() { // Deploy contract contractAddr := suite.deployTestContract(suite.Address) // set some balance to handle fees - suite.App.EvmKeeper.SetBalance(suite.Ctx, suite.Address, big.NewInt(1000000000000000000), types.DefaultEVMDenom) + suite.App.EvmKeeper.SetBalance(suite.Ctx, suite.Address, *uint256.NewInt(1000000000000000000), types.DefaultEVMDenom) suite.Commit(suite.T()) // Generate token transfer transaction txMsg := suite.transferERC20Token(suite.T(), contractAddr, suite.Address, common.HexToAddress("0x378c50D9264C63F3F92B806d4ee56E9D86FfB3Ec"), sdkmath.NewIntWithDecimal(1, 18).BigInt()) diff --git a/x/evm/keeper/keeper.go b/x/evm/keeper/keeper.go index dbdc5735ed..2c89eaf6a2 100644 --- a/x/evm/keeper/keeper.go +++ b/x/evm/keeper/keeper.go @@ -26,12 +26,14 @@ import ( paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/params" ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm/statedb" "github.com/evmos/ethermint/x/evm/types" + "github.com/holiman/uint256" ) // CustomContractFn defines a custom precompiled contract generator with ctx, rules and returns a precompiled contract. @@ -212,7 +214,7 @@ func (k *Keeper) PostTxProcessing(ctx sdk.Context, msg *core.Message, receipt *e } // Tracer return a default vm.Tracer based on current keeper state -func (k Keeper) Tracer(msg *core.Message, rules params.Rules) vm.EVMLogger { +func (k Keeper) Tracer(msg *core.Message, rules params.Rules) *tracing.Hooks { return types.NewTracer(k.tracer, msg, rules) } @@ -260,12 +262,14 @@ func (k *Keeper) GetEVMDenomBalance(ctx sdk.Context, addr common.Address) *big.I if evmDenom == "" { return big.NewInt(-1) } - return k.GetBalance(ctx, cosmosAddr, evmDenom) + balance := k.GetBalance(ctx, cosmosAddr, evmDenom) + return balance.ToBig() } // GetBalance load account's balance of specified denom -func (k *Keeper) GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) *big.Int { - return k.bankKeeper.GetBalance(ctx, addr, denom).Amount.BigInt() +func (k *Keeper) GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) uint256.Int { + balance := k.bankKeeper.GetBalance(ctx, addr, denom).Amount.BigInt() + return *uint256.MustFromBig(balance) } // GetBaseFee returns current base fee, return values: diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index ffddc3b5b5..278dc24824 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -27,10 +27,12 @@ import ( ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm/statedb" "github.com/evmos/ethermint/x/evm/types" + "github.com/holiman/uint256" cmttypes "github.com/cometbft/cometbft/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" @@ -66,7 +68,6 @@ func (k *Keeper) NewEVM( if cfg.BlockOverrides != nil { cfg.BlockOverrides.Apply(&blockCtx) } - txCtx := core.NewEVMTxContext(msg) if cfg.Tracer == nil { cfg.Tracer = k.Tracer(msg, cfg.Rules) } @@ -86,7 +87,7 @@ func (k *Keeper) NewEVM( sort.SliceStable(active, func(i, j int) bool { return bytes.Compare(active[i].Bytes(), active[j].Bytes()) < 0 }) - evm := vm.NewEVM(blockCtx, txCtx, stateDB, cfg.ChainConfig, vmConfig) + evm := vm.NewEVM(blockCtx, stateDB, cfg.ChainConfig, vmConfig) evm.WithPrecompiles(contracts, active) return evm } @@ -186,7 +187,14 @@ func (k *Keeper) ApplyTransaction(ctx sdk.Context, msgEth *types.MsgEthereumTx) // Compute block bloom filter if len(logs) > 0 { - k.SetTxBloom(tmpCtx, new(big.Int).SetBytes(ethtypes.LogsBloom(logs))) + bloom := ethtypes.Bloom{} + for _, log := range logs { + bloom.Add(log.Address.Bytes()) + for _, topic := range log.Topics { + bloom.Add(topic[:]) + } + } + k.SetTxBloom(tmpCtx, bloom.Big()) } var contractAddr common.Address @@ -223,11 +231,19 @@ func (k *Keeper) ApplyTransaction(ctx sdk.Context, msgEth *types.MsgEthereumTx) } } + // Get the tracer and add OnGasChange hook for gas refund + leftoverGas := msg.GasLimit - res.GasUsed + // refund gas in order to match the Ethereum gas consumption instead of the default SDK one. - if err = k.RefundGas(ctx, msg, msg.GasLimit-res.GasUsed, cfg.Params.EvmDenom); err != nil { + if err = k.RefundGas(ctx, msg, leftoverGas, cfg.Params.EvmDenom); err != nil { return nil, errorsmod.Wrapf(err, "failed to refund leftover gas to sender %s", msg.From) } + tracer := cfg.GetTracer() + if tracer != nil && tracer.OnGasChange != nil { + tracer.OnGasChange(leftoverGas, 0, tracing.GasChangeTxLeftOverReturned) + } + totalGasUsed, err := k.AddTransientGasUsed(ctx, res.GasUsed) if err != nil { return nil, errorsmod.Wrap(err, "failed to add transient gas used") @@ -239,14 +255,18 @@ func (k *Keeper) ApplyTransaction(ctx sdk.Context, msgEth *types.MsgEthereumTx) } // ApplyMessage calls ApplyMessageWithConfig with an empty TxConfig. -func (k *Keeper) ApplyMessage(ctx sdk.Context, msg *core.Message, tracer vm.EVMLogger, commit bool) (*types.MsgEthereumTxResponse, error) { +func (k *Keeper) ApplyMessage(ctx sdk.Context, msg *core.Message, tracer *tracing.Hooks, commit bool) (*types.MsgEthereumTxResponse, error) { cfg, err := k.EVMConfig(ctx, k.eip155ChainID, common.Hash{}) if err != nil { return nil, errorsmod.Wrap(err, "failed to load evm config") } cfg.Tracer = tracer - return k.ApplyMessageWithConfig(ctx, msg, cfg, commit) + result, err := k.ApplyMessageWithConfig(ctx, msg, cfg, commit) + if err != nil { + return nil, err + } + return result, nil } // ApplyMessageWithConfig computes the new state by applying the given message against the existing state. @@ -301,10 +321,11 @@ func (k *Keeper) ApplyMessageWithConfig( msg *core.Message, cfg *EVMConfig, commit bool, -) (*types.MsgEthereumTxResponse, error) { +) (result *types.MsgEthereumTxResponse, err error) { var ( - ret []byte // return bytes from evm execution - vmErr error // vm errors do not effect consensus and are therefore not assigned to err + ret []byte // return bytes from evm execution + vmErr error // vm errors do not effect consensus and are therefore not assigned to err + gasUsed uint64 // for tracing ) // return error if contract creation or call are disabled through governance @@ -321,30 +342,49 @@ func (k *Keeper) ApplyMessageWithConfig( return nil, errorsmod.Wrap(err, "failed to apply state override") } } - evm = k.NewEVM(ctx, msg, cfg, stateDB) + tracingStateDB := vm.StateDB(stateDB) + if hooks := cfg.Tracer; hooks != nil { + tracingStateDB = statedb.NewHookedState(stateDB, hooks) + } + evm = k.NewEVM(ctx, msg, cfg, tracingStateDB) // Allow the tracer captures the tx level events, mainly the gas consumption. leftoverGas := msg.GasLimit - sender := vm.AccountRef(msg.From) + sender := msg.From tracer := cfg.GetTracer() debugFn := func() { if tracer != nil && cfg.DebugTrace { - stateDB.AddBalance(sender.Address(), new(big.Int).Mul(msg.GasPrice, new(big.Int).SetUint64(leftoverGas))) + stateDB.AddBalance(sender, uint256.NewInt(1).Mul(uint256.MustFromBig(msg.GasPrice), uint256.NewInt(leftoverGas)), tracing.BalanceIncreaseGasReturn) } } if tracer != nil { + if tracer.OnGasChange != nil { + tracer.OnGasChange(0, msg.GasLimit, tracing.GasChangeTxInitialBalance) + } + + tracer.OnTxStart( + evm.GetVMContext(), + ethtypes.NewTx(ðtypes.LegacyTx{ + To: msg.To, + Data: msg.Data, + Value: msg.Value, + Gas: msg.GasLimit, + }), + msg.From, + ) + + defer func() { + debugFn() + tracer.OnTxEnd(ðtypes.Receipt{GasUsed: gasUsed}, err) + }() + if cfg.DebugTrace { amount := new(big.Int).Mul(msg.GasPrice, new(big.Int).SetUint64(msg.GasLimit)) - stateDB.SubBalance(sender.Address(), amount) + stateDB.SubBalance(sender, uint256.MustFromBig(amount), tracing.BalanceDecreaseGasBuy) if err := stateDB.Error(); err != nil { return nil, err } - stateDB.SetNonce(sender.Address(), stateDB.GetNonce(sender.Address())+1) + tracingStateDB.SetNonce(sender, stateDB.GetNonce(sender)+1, tracing.NonceChangeEoACall) } - tracer.CaptureTxStart(leftoverGas) - defer func() { - debugFn() - tracer.CaptureTxEnd(leftoverGas) - }() } rules := cfg.Rules @@ -361,6 +401,9 @@ func (k *Keeper) ApplyMessageWithConfig( return nil, errorsmod.Wrap(core.ErrIntrinsicGas, "apply message") } leftoverGas -= intrinsicGas + if tracer != nil && tracer.OnGasChange != nil { + tracer.OnGasChange(msg.GasLimit, leftoverGas, tracing.GasChangeTxIntrinsicGas) + } // access list preparation is moved from ante handler to here, because it's needed when `ApplyMessage` is called // under contexts where ante handlers are not run, for example `eth_call` and `eth_estimateGas`. @@ -378,12 +421,12 @@ func (k *Keeper) ApplyMessageWithConfig( // take over the nonce management from evm: // - reset sender's nonce to msg.Nonce() to generate correct contract address. // - set the nonce back to the original value after contract creation. - oldNonce := stateDB.GetNonce(sender.Address()) - stateDB.SetNonce(sender.Address(), msg.Nonce) - ret, _, leftoverGas, vmErr = evm.Create(sender, msg.Data, leftoverGas, msg.Value) - stateDB.SetNonce(sender.Address(), oldNonce) + oldNonce := stateDB.GetNonce(sender) + stateDB.SetNonce(sender, msg.Nonce, tracing.NonceChangeUnspecified) + ret, _, leftoverGas, vmErr = evm.Create(sender, msg.Data, leftoverGas, uint256.MustFromBig(msg.Value)) + stateDB.SetNonce(sender, oldNonce, tracing.NonceChangeUnspecified) } else { - ret, leftoverGas, vmErr = evm.Call(sender, *msg.To, msg.Data, leftoverGas, msg.Value) + ret, leftoverGas, vmErr = evm.Call(sender, *msg.To, msg.Data, leftoverGas, uint256.MustFromBig(msg.Value)) } refundQuotient := params.RefundQuotient @@ -399,7 +442,12 @@ func (k *Keeper) ApplyMessageWithConfig( } // refund gas temporaryGasUsed := msg.GasLimit - leftoverGas - leftoverGas += GasToRefund(stateDB.GetRefund(), temporaryGasUsed, refundQuotient) + refund := GasToRefund(stateDB.GetRefund(), temporaryGasUsed, refundQuotient) + leftoverGas += refund + + if tracer != nil && tracer.OnGasChange != nil { + tracer.OnGasChange(leftoverGas-refund, leftoverGas, tracing.GasChangeTxRefunds) + } // EVM execution error needs to be available for the JSON-RPC client var vmError string @@ -430,7 +478,7 @@ func (k *Keeper) ApplyMessageWithConfig( return nil, err } - gasUsed := sdkmath.LegacyMaxDec(minimumGasUsed, sdkmath.LegacyNewDec(tempGasUsed)).TruncateInt().Uint64() + gasUsed = sdkmath.LegacyMaxDec(minimumGasUsed, sdkmath.LegacyNewDec(tempGasUsed)).TruncateInt().Uint64() // reset leftoverGas, to be used by the tracer leftoverGas = msg.GasLimit - gasUsed diff --git a/x/evm/keeper/state_transition_test.go b/x/evm/keeper/state_transition_test.go index 907ee5caee..c9e591b38e 100644 --- a/x/evm/keeper/state_transition_test.go +++ b/x/evm/keeper/state_transition_test.go @@ -741,16 +741,15 @@ func (suite *StateTransitionTestSuite) TestApplyMessageWithConfig() { config.TxConfig = suite.App.EvmKeeper.TxConfig(suite.Ctx, common.Hash{}) tc.malleate() - res, err := suite.App.EvmKeeper.ApplyMessageWithConfig(suite.Ctx, msg, config, true) - + result, err := suite.App.EvmKeeper.ApplyMessageWithConfig(suite.Ctx, msg, config, true) if tc.expErr { suite.Require().Error(err) return } suite.Require().NoError(err) - suite.Require().False(res.Failed()) - suite.Require().Equal(expectedGasUsed, res.GasUsed) + suite.Require().False(result.Failed()) + suite.Require().Equal(expectedGasUsed, result.GasUsed) }) } } diff --git a/x/evm/keeper/statedb.go b/x/evm/keeper/statedb.go index e718de0148..c69f36f428 100644 --- a/x/evm/keeper/statedb.go +++ b/x/evm/keeper/statedb.go @@ -27,6 +27,7 @@ import ( ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm/statedb" "github.com/evmos/ethermint/x/evm/types" + "github.com/holiman/uint256" ) var _ statedb.Keeper = &Keeper{} @@ -76,32 +77,44 @@ func (k *Keeper) Transfer(ctx sdk.Context, sender, recipient sdk.AccAddress, coi return k.bankKeeper.SendCoins(ctx, sender, recipient, coins) } -func (k *Keeper) AddBalance(ctx sdk.Context, addr sdk.AccAddress, coins sdk.Coins) error { +func (k *Keeper) AddBalance(ctx sdk.Context, addr sdk.AccAddress, coin sdk.Coin) (uint256.Int, error) { + coins := sdk.NewCoins(coin) + prevBalance := k.GetBalance(ctx, addr, coin.Denom) if err := k.bankKeeper.MintCoins(ctx, types.ModuleName, coins); err != nil { - return err + return uint256.Int{}, err + } + if err := k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, addr, coins); err != nil { + return uint256.Int{}, err } - return k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, addr, coins) + return prevBalance, nil } -func (k *Keeper) SubBalance(ctx sdk.Context, addr sdk.AccAddress, coins sdk.Coins) error { +func (k *Keeper) SubBalance(ctx sdk.Context, addr sdk.AccAddress, coin sdk.Coin) (uint256.Int, error) { + coins := sdk.NewCoins(coin) + prevBalance := k.GetBalance(ctx, addr, coin.Denom) if err := k.bankKeeper.SendCoinsFromAccountToModule(ctx, addr, types.ModuleName, coins); err != nil { - return err + return uint256.Int{}, err } - return k.bankKeeper.BurnCoins(ctx, types.ModuleName, coins) + if err := k.bankKeeper.BurnCoins(ctx, types.ModuleName, coins); err != nil { + return uint256.Int{}, err + } + return prevBalance, nil } // SetBalance reset the account's balance, mainly used by unit tests -func (k *Keeper) SetBalance(ctx sdk.Context, addr common.Address, amount *big.Int, evmDenom string) error { +func (k *Keeper) SetBalance(ctx sdk.Context, addr common.Address, amount uint256.Int, evmDenom string) error { cosmosAddr := sdk.AccAddress(addr.Bytes()) balance := k.GetBalance(ctx, cosmosAddr, evmDenom) - delta := new(big.Int).Sub(amount, balance) + delta := new(big.Int).Sub(amount.ToBig(), balance.ToBig()) switch delta.Sign() { case 1: - coins := sdk.NewCoins(sdk.NewCoin(evmDenom, sdkmath.NewIntFromBigInt(delta))) - return k.AddBalance(ctx, cosmosAddr, coins) + coin := sdk.NewCoin(evmDenom, sdkmath.NewIntFromBigInt(delta)) + _, err := k.AddBalance(ctx, cosmosAddr, coin) + return err case -1: - coins := sdk.NewCoins(sdk.NewCoin(evmDenom, sdkmath.NewIntFromBigInt(new(big.Int).Abs(delta)))) - return k.SubBalance(ctx, cosmosAddr, coins) + coin := sdk.NewCoin(evmDenom, sdkmath.NewIntFromBigInt(new(big.Int).Abs(delta))) + _, err := k.SubBalance(ctx, cosmosAddr, coin) + return err default: return nil } diff --git a/x/evm/keeper/statedb_benchmark_test.go b/x/evm/keeper/statedb_benchmark_test.go index 3213271b89..f506a65190 100644 --- a/x/evm/keeper/statedb_benchmark_test.go +++ b/x/evm/keeper/statedb_benchmark_test.go @@ -1,12 +1,13 @@ package keeper_test import ( - "math/big" "testing" + "github.com/holiman/uint256" "github.com/stretchr/testify/require" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" @@ -52,13 +53,13 @@ func BenchmarkAddBalance(b *testing.B) { suite.SetupTest(b) vmdb := suite.StateDB() - amt := big.NewInt(10) + amt := uint256.NewInt(10) b.ResetTimer() b.ReportAllocs() for i := 0; i < b.N; i++ { - vmdb.AddBalance(suite.Address, amt) + vmdb.AddBalance(suite.Address, amt, tracing.BalanceChangeTransfer) } } @@ -144,13 +145,13 @@ func BenchmarkSubBalance(b *testing.B) { suite.SetupTest(b) vmdb := suite.StateDB() - amt := big.NewInt(10) + amt := uint256.NewInt(10) b.ResetTimer() b.ReportAllocs() for i := 0; i < b.N; i++ { - vmdb.SubBalance(suite.Address, amt) + vmdb.SubBalance(suite.Address, amt, tracing.BalanceChangeTransfer) } } @@ -163,7 +164,7 @@ func BenchmarkSetNonce(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { - vmdb.SetNonce(suite.Address, 1) + vmdb.SetNonce(suite.Address, 1, tracing.NonceChangeUnspecified) } } @@ -193,6 +194,6 @@ func BenchmarkSuicide(b *testing.B) { vmdb.CreateAccount(addr) b.StartTimer() - vmdb.Suicide(addr) + vmdb.SelfDestruct(addr) } } diff --git a/x/evm/keeper/statedb_test.go b/x/evm/keeper/statedb_test.go index d50feacf34..71b5adf5e3 100644 --- a/x/evm/keeper/statedb_test.go +++ b/x/evm/keeper/statedb_test.go @@ -5,6 +5,7 @@ import ( "math/big" "testing" + sdkmath "cosmossdk.io/math" "cosmossdk.io/store/prefix" "github.com/cosmos/cosmos-sdk/client" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -13,9 +14,11 @@ import ( authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/holiman/uint256" "github.com/stretchr/testify/suite" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" @@ -56,11 +59,11 @@ func (suite *StateDBTestSuite) TestCreateAccount() { "reset account (keep balance)", suite.Address, func(vmdb vm.StateDB, addr common.Address) { - vmdb.AddBalance(addr, big.NewInt(100)) - suite.Require().NotZero(vmdb.GetBalance(addr).Int64()) + vmdb.AddBalance(addr, uint256.NewInt(100), tracing.BalanceChangeTransfer) + suite.Require().NotZero(vmdb.GetBalance(addr).Uint64()) }, func(vmdb vm.StateDB, addr common.Address) { - suite.Require().Equal(vmdb.GetBalance(addr).Int64(), int64(100)) + suite.Require().Equal(vmdb.GetBalance(addr).Uint64(), uint64(100)) }, }, { @@ -85,20 +88,170 @@ func (suite *StateDBTestSuite) TestCreateAccount() { } } +func (suite *StateDBTestSuite) TestCreateContract() { + testCases := []struct { + name string + addr common.Address + malleate func(vm.StateDB, common.Address) + callback func(vm.StateDB, common.Address) + }{ + { + "create contract on new address", + tests.GenerateAddress(), + func(vmdb vm.StateDB, addr common.Address) { + if !vmdb.Exist(addr) { + vmdb.CreateAccount(addr) + } + contractHash := vmdb.GetCodeHash(addr) + emptyCode := contractHash == (common.Hash{}) || contractHash == ethtypes.EmptyCodeHash + storageRoot := vmdb.GetStorageRoot(addr) + emptyStorage := storageRoot == (common.Hash{}) || storageRoot == ethtypes.EmptyRootHash + if vmdb.GetNonce(addr) == 0 && emptyCode && emptyStorage { + vmdb.CreateContract(addr) + // We also set some code here, to prevent the + // CreateContract action from being performed twice in a row, + // which would cause a difference in state when unrolling + // the journal. (CreateContact assumes created was false prior to + // invocation, and the journal rollback sets it to false). + vmdb.SetCode(addr, []byte{1}) + } + }, + func(vmdb vm.StateDB, addr common.Address) { + suite.Require().True(vmdb.Exist(addr)) + }, + }, + { + "create contract on existing account", + suite.Address, + func(vmdb vm.StateDB, addr common.Address) { + // Add balance to existing account + vmdb.AddBalance(addr, uint256.NewInt(100), tracing.BalanceChangeTransfer) + suite.Require().True(vmdb.Exist(addr)) + suite.Require().Equal(uint64(100), vmdb.GetBalance(addr).Uint64()) + vmdb.CreateContract(addr) + }, + func(vmdb vm.StateDB, addr common.Address) { + // Account should still exist with balance + suite.Require().True(vmdb.Exist(addr)) + suite.Require().Equal(uint64(100), vmdb.GetBalance(addr).Uint64()) + // Should be marked as new contract + balance, destroyed := vmdb.SelfDestruct6780(addr) + suite.Require().True(destroyed, "existing account marked as new contract should be destructible") + suite.Require().Equal(uint64(100), balance.Uint64()) + }, + }, + { + "create contract then set code", + tests.GenerateAddress(), + func(vmdb vm.StateDB, addr common.Address) { + vmdb.CreateAccount(addr) + vmdb.CreateContract(addr) + }, + func(vmdb vm.StateDB, addr common.Address) { + // Then set code + code := []byte("contract bytecode") + vmdb.SetCode(addr, code) + + // Verify both contract marking and code + suite.Require().Equal(code, vmdb.GetCode(addr)) + suite.Require().Equal(len(code), vmdb.GetCodeSize(addr)) + + // Should still be marked as new contract + _, destroyed := vmdb.SelfDestruct6780(addr) + suite.Require().True(destroyed, "contract with code should still be destructible") + }, + }, + } + + for _, tc := range testCases { + suite.Run(tc.name, func() { + vmdb := suite.StateDB() + tc.malleate(vmdb, tc.addr) + tc.callback(vmdb, tc.addr) + }) + } +} + +func (suite *StateDBTestSuite) TestTransfer() { + testCases := []struct { + name string + from common.Address + to common.Address + amount *uint256.Int + setup func(vm.StateDB, common.Address) + expected *uint256.Int + }{ + { + name: "positive amount, different accounts", + from: suite.Address, + to: tests.GenerateAddress(), + amount: uint256.NewInt(100), + setup: func(vmdb vm.StateDB, from common.Address) { + vmdb.AddBalance(from, uint256.NewInt(1000), tracing.BalanceChangeTransfer) + }, + expected: uint256.NewInt(900), + }, + { + name: "positive amount, same account", + from: suite.Address, + to: suite.Address, + amount: uint256.NewInt(100), + setup: func(vmdb vm.StateDB, from common.Address) { + vmdb.AddBalance(from, uint256.NewInt(1000), tracing.BalanceChangeTransfer) + }, + expected: uint256.NewInt(1000), + }, + { + name: "zero amount", + from: suite.Address, + to: tests.GenerateAddress(), + amount: uint256.NewInt(0), + setup: func(vmdb vm.StateDB, from common.Address) { + vmdb.AddBalance(from, uint256.NewInt(1000), tracing.BalanceChangeTransfer) + }, + expected: uint256.NewInt(1000), + }, + } + + for _, tc := range testCases { + suite.Run(tc.name, func() { + vmdb := suite.StateDB() + tc.setup(vmdb, tc.from) + prevFrom := vmdb.GetBalance(tc.from) + prevTo := vmdb.GetBalance(tc.to) + + vmdb.Transfer(tc.from, tc.to, tc.amount) + + if tc.from == tc.to { + // No net change if from == to + suite.Require().Equal(prevFrom.Uint64(), vmdb.GetBalance(tc.from).Uint64()) + } else if tc.amount.Sign() == 0 { + // No-op for zero amount + suite.Require().Equal(prevFrom.Uint64(), vmdb.GetBalance(tc.from).Uint64()) + suite.Require().Equal(prevTo.Uint64(), vmdb.GetBalance(tc.to).Uint64()) + } else { + // from should decrease, to should increase + suite.Require().Equal(tc.expected.Uint64(), vmdb.GetBalance(tc.from).Uint64()) + suite.Require().Equal(new(uint256.Int).Add(prevTo, tc.amount).Uint64(), vmdb.GetBalance(tc.to).Uint64()) + } + }) + } +} + func (suite *StateDBTestSuite) TestAddBalance() { testCases := []struct { name string - amount *big.Int + amount *uint256.Int isNoOp bool }{ { "positive amount", - big.NewInt(100), + uint256.NewInt(100), false, }, { "zero amount", - big.NewInt(0), + uint256.NewInt(0), true, }, } @@ -107,13 +260,13 @@ func (suite *StateDBTestSuite) TestAddBalance() { suite.Run(tc.name, func() { vmdb := suite.StateDB() prev := vmdb.GetBalance(suite.Address) - vmdb.AddBalance(suite.Address, tc.amount) + vmdb.AddBalance(suite.Address, tc.amount, tracing.BalanceChangeTransfer) post := vmdb.GetBalance(suite.Address) if tc.isNoOp { - suite.Require().Equal(prev.Int64(), post.Int64()) + suite.Require().Equal(prev.Uint64(), post.Uint64()) } else { - suite.Require().Equal(new(big.Int).Add(prev, tc.amount).Int64(), post.Int64()) + suite.Require().Equal(new(uint256.Int).Add(prev, tc.amount).Uint64(), post.Uint64()) } }) } @@ -122,27 +275,27 @@ func (suite *StateDBTestSuite) TestAddBalance() { func (suite *StateDBTestSuite) TestSubBalance() { testCases := []struct { name string - amount *big.Int + amount *uint256.Int malleate func(vm.StateDB) isNoOp bool }{ { "positive amount, below zero", - big.NewInt(100), + uint256.NewInt(100), func(vm.StateDB) {}, true, }, { "positive amount, above zero", - big.NewInt(50), + uint256.NewInt(50), func(vmdb vm.StateDB) { - vmdb.AddBalance(suite.Address, big.NewInt(100)) + vmdb.AddBalance(suite.Address, uint256.NewInt(100), tracing.BalanceChangeTransfer) }, false, }, { "zero amount", - big.NewInt(0), + uint256.NewInt(0), func(vm.StateDB) {}, true, }, @@ -154,13 +307,13 @@ func (suite *StateDBTestSuite) TestSubBalance() { tc.malleate(vmdb) prev := vmdb.GetBalance(suite.Address) - vmdb.SubBalance(suite.Address, tc.amount) + vmdb.SubBalance(suite.Address, tc.amount, tracing.BalanceChangeTransfer) post := vmdb.GetBalance(suite.Address) if tc.isNoOp { - suite.Require().Equal(prev.Int64(), post.Int64()) + suite.Require().Equal(prev.Uint64(), post.Uint64()) } else { - suite.Require().Equal(new(big.Int).Sub(prev, tc.amount).Int64(), post.Int64()) + suite.Require().Equal(new(uint256.Int).Sub(prev, tc.amount).Uint64(), post.Uint64()) } }) } @@ -184,7 +337,7 @@ func (suite *StateDBTestSuite) TestGetNonce() { suite.Address, 1, func(vmdb vm.StateDB) { - vmdb.SetNonce(suite.Address, 1) + vmdb.SetNonce(suite.Address, 1, tracing.NonceChangeUnspecified) }, }, } @@ -224,7 +377,7 @@ func (suite *StateDBTestSuite) TestSetNonce() { for _, tc := range testCases { suite.Run(tc.name, func() { vmdb := suite.StateDB() - vmdb.SetNonce(tc.address, tc.nonce) + vmdb.SetNonce(tc.address, tc.nonce, tracing.NonceChangeUnspecified) nonce := vmdb.GetNonce(tc.address) suite.Require().Equal(tc.nonce, nonce) }) @@ -482,11 +635,11 @@ func (suite *StateDBTestSuite) TestSuicide() { db.SetState(addr2, common.BytesToHash([]byte(fmt.Sprintf("key%d", i))), common.BytesToHash([]byte(fmt.Sprintf("value%d", i)))) } - // Call Suicide - suite.Require().Equal(true, db.Suicide(suite.Address)) + // Call SelfDestruct + db.SelfDestruct(suite.Address) - // Check suicided is marked - suite.Require().Equal(true, db.HasSuicided(suite.Address)) + // Check self destructed is marked + suite.Require().Equal(true, db.HasSelfDestructed(suite.Address)) // Commit state suite.Require().NoError(db.Commit()) @@ -507,7 +660,7 @@ func (suite *StateDBTestSuite) TestSuicide() { // Check code is still present in addr2 and suicided is false suite.Require().NotNil(db.GetCode(addr2)) - suite.Require().Equal(false, db.HasSuicided(addr2)) + suite.Require().Equal(false, db.HasSelfDestructed(addr2)) } func (suite *StateDBTestSuite) TestExist() { @@ -518,8 +671,8 @@ func (suite *StateDBTestSuite) TestExist() { exists bool }{ {"success, account exists", suite.Address, func(vm.StateDB) {}, true}, - {"success, has suicided", suite.Address, func(vmdb vm.StateDB) { - vmdb.Suicide(suite.Address) + {"success, has self destructed", suite.Address, func(vmdb vm.StateDB) { + vmdb.SelfDestruct(suite.Address) }, true}, {"success, account doesn't exist", tests.GenerateAddress(), func(vm.StateDB) {}, false}, } @@ -545,7 +698,9 @@ func (suite *StateDBTestSuite) TestEmpty() { { "not empty, positive balance", suite.Address, - func(vmdb vm.StateDB) { vmdb.AddBalance(suite.Address, big.NewInt(100)) }, + func(vmdb vm.StateDB) { + vmdb.AddBalance(suite.Address, uint256.NewInt(100), tracing.BalanceChangeTransfer) + }, false, }, {"empty, account doesn't exist", tests.GenerateAddress(), func(vm.StateDB) {}, true}, @@ -808,44 +963,75 @@ func (suite *StateDBTestSuite) _TestForEachStorage() { } } -func (suite *StateDBTestSuite) TestSetBalance() { - amount := big.NewInt(-10) + +func (suite *StateDBTestSuite) TestKeeperAddBalance() { + amount := uint256.NewInt(10) + coin := sdk.NewCoin(types.DefaultEVMDenom, sdkmath.NewIntFromBigInt(amount.ToBig())) testCases := []struct { name string addr common.Address malleate func() - expErr bool }{ { - "address without funds - invalid amount", - suite.Address, - func() {}, - true, - }, - { - "mint to address", + "add balance", suite.Address, func() { - amount = big.NewInt(100) + amount = uint256.NewInt(100) + coin = sdk.NewCoin(types.DefaultEVMDenom, sdkmath.NewIntFromBigInt(amount.ToBig())) }, - false, }, + } + + for _, tc := range testCases { + suite.Run(tc.name, func() { + suite.SetupTest() + tc.malleate() + prevBalanceExpected := suite.App.EvmKeeper.GetBalance(suite.Ctx, sdk.AccAddress(tc.addr.Bytes()), coin.Denom) + prevResult, err := suite.App.EvmKeeper.AddBalance(suite.Ctx, sdk.AccAddress(tc.addr.Bytes()), coin) + suite.Require().NoError(err) + + suite.Require().Equal(prevBalanceExpected.ToBig(), prevResult.ToBig()) + + balanceResult := suite.App.EvmKeeper.GetBalance(suite.Ctx, sdk.AccAddress(tc.addr.Bytes()), coin.Denom) + newBalanceExpected := new(uint256.Int).Add(&prevBalanceExpected, amount) + suite.Require().Equal(newBalanceExpected.Uint64(), balanceResult.Uint64()) + }) + } +} + + +func (suite *StateDBTestSuite) TestKeeperSubBalance() { + amount := uint256.NewInt(10) + coin := sdk.NewCoin(types.DefaultEVMDenom, sdkmath.NewIntFromBigInt(amount.ToBig())) + + testCases := []struct { + name string + addr common.Address + expErr bool + malleate func() + }{ { - "burn from address", + "sub balance", suite.Address, + false, func() { - amount = big.NewInt(60) + amount = uint256.NewInt(100) + coin = sdk.NewCoin(types.DefaultEVMDenom, sdkmath.NewIntFromBigInt(amount.ToBig())) + + // fund account by minting coins + suite.App.BankKeeper.MintCoins(suite.Ctx, types.ModuleName, sdk.NewCoins(coin)) + suite.App.BankKeeper.SendCoinsFromModuleToAccount(suite.Ctx, types.ModuleName, sdk.AccAddress(suite.Address.Bytes()), sdk.NewCoins(coin)) }, - false, }, { - "address with funds - invalid amount", + "sub balance, insufficient balance", suite.Address, + true, func() { - amount = big.NewInt(-10) + amount = uint256.NewInt(100) + coin = sdk.NewCoin(types.DefaultEVMDenom, sdkmath.NewIntFromBigInt(amount.ToBig())) }, - true, }, } @@ -853,18 +1039,58 @@ func (suite *StateDBTestSuite) TestSetBalance() { suite.Run(tc.name, func() { suite.SetupTest() tc.malleate() - err := suite.App.EvmKeeper.SetBalance(suite.Ctx, tc.addr, amount, types.DefaultEVMDenom) + prevBalanceExpected := suite.App.EvmKeeper.GetBalance(suite.Ctx, sdk.AccAddress(tc.addr.Bytes()), coin.Denom) + prevResult, err := suite.App.EvmKeeper.SubBalance(suite.Ctx, sdk.AccAddress(tc.addr.Bytes()), coin) if tc.expErr { suite.Require().Error(err) } else { - balance := suite.App.EvmKeeper.GetEVMDenomBalance(suite.Ctx, tc.addr) suite.Require().NoError(err) - suite.Require().Equal(amount, balance) + suite.Require().Equal(prevBalanceExpected.ToBig(), prevResult.ToBig()) + + balanceResult := suite.App.EvmKeeper.GetBalance(suite.Ctx, sdk.AccAddress(tc.addr.Bytes()), coin.Denom) + newBalanceExpected := new(uint256.Int).Sub(&prevBalanceExpected, amount) + suite.Require().Equal(newBalanceExpected.Uint64(), balanceResult.Uint64()) } }) } } +func (suite *StateDBTestSuite) TestSetBalance() { + amount := uint256.NewInt(10) + + testCases := []struct { + name string + addr common.Address + malleate func() + }{ + { + "mint to address", + suite.Address, + func() { + amount = uint256.NewInt(100) + }, + }, + { + "burn from address", + suite.Address, + func() { + amount = uint256.NewInt(60) + }, + }, + } + + for _, tc := range testCases { + suite.Run(tc.name, func() { + suite.SetupTest() + tc.malleate() + err := suite.App.EvmKeeper.SetBalance(suite.Ctx, tc.addr, *amount, types.DefaultEVMDenom) + suite.Require().NoError(err) + balance := suite.App.EvmKeeper.GetEVMDenomBalance(suite.Ctx, tc.addr) + suite.Require().Equal(amount.Uint64(), balance.Uint64()) + }) + } +} + func (suite *StateDBTestSuite) TestDeleteAccount() { supply := big.NewInt(100) testCases := []struct { @@ -909,7 +1135,7 @@ func (suite *StateDBTestSuite) TestDeleteAccount() { } else { suite.Require().NoError(err) balance := suite.App.EvmKeeper.GetEVMDenomBalance(suite.Ctx, tc.addr()) - suite.Require().Equal(new(big.Int), balance) + suite.Require().Equal(uint64(0), balance.Uint64()) } }) } diff --git a/x/evm/keeper/utils.go b/x/evm/keeper/utils.go index 1da011225c..ca71a2340f 100644 --- a/x/evm/keeper/utils.go +++ b/x/evm/keeper/utils.go @@ -105,7 +105,7 @@ func VerifyFee( gasLimit := tx.Gas() accessList := tx.AccessList() - intrinsicGas, err := core.IntrinsicGas(tx.Data(), accessList, isContractCreation, homestead, istanbul, shanghai) + intrinsicGas, err := core.IntrinsicGas(tx.Data(), accessList, tx.SetCodeAuthorizations(), isContractCreation, homestead, istanbul, shanghai) if err != nil { return nil, errorsmod.Wrapf( err, diff --git a/x/evm/keeper/utils_test.go b/x/evm/keeper/utils_test.go index 1fd066d961..f180feb560 100644 --- a/x/evm/keeper/utils_test.go +++ b/x/evm/keeper/utils_test.go @@ -7,6 +7,7 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" ethparams "github.com/ethereum/go-ethereum/params" "github.com/evmos/ethermint/evmd" @@ -14,6 +15,7 @@ import ( "github.com/evmos/ethermint/x/evm/keeper" evmtypes "github.com/evmos/ethermint/x/evm/types" feemarkettypes "github.com/evmos/ethermint/x/feemarket/types" + "github.com/holiman/uint256" "github.com/stretchr/testify/suite" ) @@ -238,8 +240,8 @@ func (suite *UtilsTestSuite) TestCheckSenderBalance() { suite.Run(tc.name, func() { suite.SetupTest() vmdb := suite.StateDB() - vmdb.AddBalance(suite.Address, hundredInt.BigInt()) - suite.Require().Equal(vmdb.GetBalance(suite.Address), hundredInt.BigInt()) + vmdb.AddBalance(suite.Address, uint256.MustFromBig(hundredInt.BigInt()), tracing.BalanceChangeTransfer) + suite.Require().Equal(vmdb.GetBalance(suite.Address).Uint64(), hundredInt.BigInt().Uint64()) err := vmdb.Commit() suite.Require().NoError(err, "Unexpected error while committing to vmdb: %d", err) to := common.HexToAddress(tc.from) @@ -478,17 +480,17 @@ func (suite *UtilsTestSuite) TestVerifyFeeAndDeductTxCostsFromUserBalance() { } else { gasTipCap = tc.gasTipCap } - vmdb.AddBalance(suite.Address, initBalance.BigInt()) + vmdb.AddBalance(suite.Address, uint256.MustFromBig(initBalance.BigInt()), tracing.BalanceChangeTransfer) balance := vmdb.GetBalance(suite.Address) - suite.Require().Equal(balance, initBalance.BigInt()) + suite.Require().Equal(balance.Uint64(), initBalance.BigInt().Uint64()) } else { if tc.gasPrice != nil { gasPrice = tc.gasPrice.BigInt() } - vmdb.AddBalance(suite.Address, hundredInt.BigInt()) + vmdb.AddBalance(suite.Address, uint256.MustFromBig(hundredInt.BigInt()), tracing.BalanceChangeTransfer) balance := vmdb.GetBalance(suite.Address) - suite.Require().Equal(balance, hundredInt.BigInt()) + suite.Require().Equal(balance.Uint64(), hundredInt.BigInt().Uint64()) } err := vmdb.Commit() suite.Require().NoError(err, "Unexpected error while committing to vmdb: %d", err) diff --git a/x/evm/statedb/interfaces.go b/x/evm/statedb/interfaces.go index ff64d083a0..b9bd61c682 100644 --- a/x/evm/statedb/interfaces.go +++ b/x/evm/statedb/interfaces.go @@ -16,11 +16,10 @@ package statedb import ( - "math/big" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" evmtypes "github.com/evmos/ethermint/x/evm/types" + "github.com/holiman/uint256" ) // Keeper provide underlying storage of StateDB @@ -28,10 +27,10 @@ type Keeper interface { GetParams(sdk.Context) evmtypes.Params Transfer(ctx sdk.Context, sender, recipient sdk.AccAddress, coins sdk.Coins) error - AddBalance(ctx sdk.Context, addr sdk.AccAddress, coins sdk.Coins) error - SubBalance(ctx sdk.Context, addr sdk.AccAddress, coins sdk.Coins) error - SetBalance(ctx sdk.Context, addr common.Address, amount *big.Int, denom string) error - GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) *big.Int + AddBalance(ctx sdk.Context, addr sdk.AccAddress, coin sdk.Coin) (uint256.Int, error) + SubBalance(ctx sdk.Context, addr sdk.AccAddress, coin sdk.Coin) (uint256.Int, error) + SetBalance(ctx sdk.Context, addr common.Address, amount uint256.Int, denom string) error + GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) uint256.Int // Read methods GetAccount(ctx sdk.Context, addr common.Address) *Account diff --git a/x/evm/statedb/journal.go b/x/evm/statedb/journal.go index 91f1a93763..b93675f921 100644 --- a/x/evm/statedb/journal.go +++ b/x/evm/statedb/journal.go @@ -21,6 +21,7 @@ import ( "sort" "github.com/ethereum/go-ethereum/common" + "github.com/holiman/uint256" ) // JournalEntry is a modification entry in the state change journal that can be @@ -97,12 +98,19 @@ type ( createObjectChange struct { account *common.Address } + // createContractChange represents an account becoming a contract-account. + // This event happens prior to executing initcode. The journal-event simply + // manages the created-flag, in order to allow same-tx destruction. + createContractChange struct { + account *common.Address + } resetObjectChange struct { prev *stateObject } - suicideChange struct { - account *common.Address - prev bool // whether account had already suicided + selfDestructChange struct { + account *common.Address + prev bool // whether account had already self-destructed + prevbalance *uint256.Int } nonceChange struct { @@ -139,6 +147,28 @@ type ( } ) +var ( + _ JournalEntry = createObjectChange{} + _ JournalEntry = resetObjectChange{} + _ JournalEntry = selfDestructChange{} + _ JournalEntry = nonceChange{} + _ JournalEntry = storageChange{} + _ JournalEntry = transientStorageChange{} + _ JournalEntry = codeChange{} + _ JournalEntry = refundChange{} + _ JournalEntry = addLogChange{} + _ JournalEntry = accessListAddAccountChange{} + _ JournalEntry = accessListAddSlotChange{} +) + +func (ch createContractChange) Revert(s *StateDB) { + s.getStateObject(*ch.account).newContract = false +} + +func (ch createContractChange) Dirtied() *common.Address { + return nil +} + func (ch createObjectChange) Revert(s *StateDB) { delete(s.stateObjects, *ch.account) } @@ -155,14 +185,14 @@ func (ch resetObjectChange) Dirtied() *common.Address { return nil } -func (ch suicideChange) Revert(s *StateDB) { +func (ch selfDestructChange) Revert(s *StateDB) { obj := s.getStateObject(*ch.account) if obj != nil { - obj.suicided = ch.prev + obj.selfDestructed = ch.prev } } -func (ch suicideChange) Dirtied() *common.Address { +func (ch selfDestructChange) Dirtied() *common.Address { return ch.account } diff --git a/x/evm/statedb/state_object.go b/x/evm/statedb/state_object.go index 30b60b6554..0fa09bf25b 100644 --- a/x/evm/statedb/state_object.go +++ b/x/evm/statedb/state_object.go @@ -23,6 +23,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" ethermint "github.com/evmos/ethermint/types" + "github.com/holiman/uint256" ) var emptyCodeHash = crypto.Keccak256(nil) @@ -95,7 +96,8 @@ type stateObject struct { address common.Address // flags - suicided bool + selfDestructed bool + newContract bool } // newObject creates a state object, origAccount is nil if it's newly created. @@ -131,8 +133,8 @@ func (s *stateObject) empty() bool { return s.account.Nonce == 0 && bytes.Equal(s.account.CodeHash, emptyCodeHash) } -func (s *stateObject) markSuicided() { - s.suicided = true +func (s *stateObject) markSelfDestructed() { + s.selfDestructed = true } // @@ -197,6 +199,11 @@ func (s *stateObject) CodeHash() []byte { return s.account.CodeHash } +// Balance returns the balance of account +func (s *stateObject) Balance() *uint256.Int { + return s.db.GetBalance(s.address) +} + // Nonce returns the nonce of account func (s *stateObject) Nonce() uint64 { return s.account.Nonce @@ -229,11 +236,12 @@ func (s *stateObject) GetState(key common.Hash) common.Hash { } // SetState sets the contract state -func (s *stateObject) SetState(key common.Hash, value common.Hash) { +// It returns the previous value +func (s *stateObject) SetState(key common.Hash, value common.Hash) common.Hash { // If the new value is the same as old, don't set prev := s.GetState(key) if prev == value { - return + return prev } // New value is different, update and journal the change s.db.journal.append(storageChange{ @@ -242,6 +250,7 @@ func (s *stateObject) SetState(key common.Hash, value common.Hash) { prevalue: prev, }) s.setState(key, value) + return prev } func (s *stateObject) SetStorage(storage Storage) { diff --git a/x/evm/statedb/statedb.go b/x/evm/statedb/statedb.go index ab4f7ac414..b1853c595e 100644 --- a/x/evm/statedb/statedb.go +++ b/x/evm/statedb/statedb.go @@ -17,7 +17,7 @@ package statedb import ( "fmt" - "math/big" + "slices" "sort" errorsmod "cosmossdk.io/errors" @@ -25,10 +25,16 @@ import ( "cosmossdk.io/store/cachemulti" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/stateless" + "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/trie" + "github.com/ethereum/go-ethereum/trie/utils" + "github.com/holiman/uint256" ) const StateDBContextKey = "statedb" @@ -43,8 +49,15 @@ type revision struct { journalIndex int } -func Transfer(db vm.StateDB, sender, recipient common.Address, amount *big.Int) { - db.(*StateDB).Transfer(sender, recipient, amount) +func Transfer(db vm.StateDB, sender, recipient common.Address, amount *uint256.Int) { + switch stateDB := db.(type) { + case *StateDB: + stateDB.Transfer(sender, recipient, amount) + case *HookedStateDB: + stateDB.Transfer(sender, recipient, amount) + default: + panic(fmt.Sprintf("unsupported StateDB type: %T", db)) + } } var _ vm.StateDB = &StateDB{} @@ -120,13 +133,14 @@ func NewWithParams(ctx sdk.Context, keeper Keeper, txConfig TxConfig, evmDenom s commitMS = cacheMS.Write } db := &StateDB{ - origCtx: ctx, - keeper: keeper, - cacheMS: cacheMS, - commitMS: commitMS, - stateObjects: make(map[common.Address]*stateObject), - journal: newJournal(), - accessList: newAccessList(), + origCtx: ctx, + keeper: keeper, + cacheMS: cacheMS, + commitMS: commitMS, + stateObjects: make(map[common.Address]*stateObject), + journal: newJournal(), + accessList: newAccessList(), + transientStorage: newTransientStorage(), txConfig: txConfig, @@ -193,8 +207,9 @@ func (s *StateDB) Empty(addr common.Address) bool { } // GetBalance retrieves the balance from the given address or 0 if object not found -func (s *StateDB) GetBalance(addr common.Address) *big.Int { - return s.keeper.GetBalance(s.ctx, sdk.AccAddress(addr.Bytes()), s.evmDenom) +func (s *StateDB) GetBalance(addr common.Address) *uint256.Int { + balance := s.keeper.GetBalance(s.ctx, sdk.AccAddress(addr.Bytes()), s.evmDenom) + return &balance } // GetNonce returns the nonce of account, 0 if not exists. @@ -257,15 +272,6 @@ func (s *StateDB) GetRefund() uint64 { return s.refund } -// HasSuicided returns if the contract is suicided in current transaction. -func (s *StateDB) HasSuicided(addr common.Address) bool { - stateObject := s.getStateObject(addr) - if stateObject != nil { - return stateObject.suicided - } - return false -} - // AddPreimage records a SHA3 preimage seen by the VM. // AddPreimage performs a no-op since the EnablePreimageRecording flag is disabled // on the vm.Config during state transitions. No store trie preimages are written @@ -314,20 +320,22 @@ func (s *StateDB) createObject(addr common.Address) *stateObject { return newobj } -// CreateAccount explicitly creates a state object. If a state object with the address -// already exists the balance is carried over to the new account. -// -// CreateAccount is called during the EVM CREATE operation. The situation might arise that -// a contract does the following: -// -// 1. sends funds to sha(account ++ (nonce + 1)) -// 2. tx_create(sha(account ++ nonce)) (note that this gets the address of 1) -// -// Carrying over the balance ensures that Ether doesn't disappear. +// CreateAccount explicitly creates a new state object, assuming that the +// account did not previously exist in the state. If the account already +// exists, this function will silently overwrite it which might lead to a +// consensus bug eventually. func (s *StateDB) CreateAccount(addr common.Address) { s.createObject(addr) } +func (s *StateDB) CreateContract(address common.Address) { + obj := s.getStateObject(address) + if !obj.newContract { + obj.newContract = true + s.journal.append(createContractChange{account: &address}) + } +} + // ForEachStorage iterate the contract storage, the iteration order is not defined. func (s *StateDB) ForEachStorage(addr common.Address, cb func(key, value common.Hash) bool) error { so := s.getStateObject(addr) @@ -387,7 +395,7 @@ func (s *StateDB) Context() sdk.Context { */ // Transfer from one account to another -func (s *StateDB) Transfer(sender, recipient common.Address, amount *big.Int) { +func (s *StateDB) Transfer(sender, recipient common.Address, amount *uint256.Int) { if amount.Sign() == 0 { return } @@ -395,7 +403,7 @@ func (s *StateDB) Transfer(sender, recipient common.Address, amount *big.Int) { panic("negative amount") } - coins := sdk.NewCoins(sdk.NewCoin(s.evmDenom, sdkmath.NewIntFromBigIntMut(amount))) + coins := sdk.NewCoins(sdk.NewCoin(s.evmDenom, sdkmath.NewIntFromBigIntMut(amount.ToBig()))) senderAddr := sdk.AccAddress(sender.Bytes()) recipientAddr := sdk.AccAddress(recipient.Bytes()) if err := s.ExecuteNativeAction(common.Address{}, nil, func(ctx sdk.Context) error { @@ -406,48 +414,59 @@ func (s *StateDB) Transfer(sender, recipient common.Address, amount *big.Int) { } // AddBalance adds amount to the account associated with addr. -func (s *StateDB) AddBalance(addr common.Address, amount *big.Int) { +func (s *StateDB) AddBalance(addr common.Address, amount *uint256.Int, _ tracing.BalanceChangeReason) uint256.Int { if amount.Sign() == 0 { - return + return uint256.Int{} } if amount.Sign() < 0 { panic("negative amount") } - coins := sdk.Coins{sdk.NewCoin(s.evmDenom, sdkmath.NewIntFromBigInt(amount))} + coin := sdk.NewCoin(s.evmDenom, sdkmath.NewIntFromBigInt(amount.ToBig())) + var balance uint256.Int if err := s.ExecuteNativeAction(common.Address{}, nil, func(ctx sdk.Context) error { - return s.keeper.AddBalance(ctx, sdk.AccAddress(addr.Bytes()), coins) + var addErr error + balance, addErr = s.keeper.AddBalance(ctx, sdk.AccAddress(addr.Bytes()), coin) + return addErr }); err != nil { s.err = err } + + return balance } // SubBalance subtracts amount from the account associated with addr. -func (s *StateDB) SubBalance(addr common.Address, amount *big.Int) { +func (s *StateDB) SubBalance(addr common.Address, amount *uint256.Int, _ tracing.BalanceChangeReason) uint256.Int { if amount.Sign() == 0 { - return + return uint256.Int{} } if amount.Sign() < 0 { panic("negative amount") } - coins := sdk.Coins{sdk.NewCoin(s.evmDenom, sdkmath.NewIntFromBigInt(amount))} + coin := sdk.NewCoin(s.evmDenom, sdkmath.NewIntFromBigInt(amount.ToBig())) + var balance uint256.Int if err := s.ExecuteNativeAction(common.Address{}, nil, func(ctx sdk.Context) error { - return s.keeper.SubBalance(ctx, sdk.AccAddress(addr.Bytes()), coins) + var subErr error + balance, subErr = s.keeper.SubBalance(ctx, sdk.AccAddress(addr.Bytes()), coin) + return subErr }); err != nil { s.err = err } + + return balance } // SetBalance is called by state override -func (s *StateDB) SetBalance(addr common.Address, amount *big.Int) { +func (s *StateDB) SetBalance(addr common.Address, amount uint256.Int) { if err := s.ExecuteNativeAction(common.Address{}, nil, func(ctx sdk.Context) error { - return s.keeper.SetBalance(ctx, addr, amount, s.evmDenom) + err := s.keeper.SetBalance(ctx, addr, amount, s.evmDenom) + return err }); err != nil { s.err = err } } // SetNonce sets the nonce of account. -func (s *StateDB) SetNonce(addr common.Address, nonce uint64) { +func (s *StateDB) SetNonce(addr common.Address, nonce uint64, _ tracing.NonceChangeReason) { stateObject := s.getOrNewStateObject(addr) if stateObject != nil { stateObject.SetNonce(nonce) @@ -455,17 +474,35 @@ func (s *StateDB) SetNonce(addr common.Address, nonce uint64) { } // SetCode sets the code of account. -func (s *StateDB) SetCode(addr common.Address, code []byte) { +func (s *StateDB) SetCode(addr common.Address, code []byte) []byte { stateObject := s.getOrNewStateObject(addr) + var prev []byte if stateObject != nil { + prev = slices.Clone(stateObject.Code()) stateObject.SetCode(crypto.Keccak256Hash(code), code) } + return prev } // SetState sets the contract state. -func (s *StateDB) SetState(addr common.Address, key, value common.Hash) { - stateObject := s.getOrNewStateObject(addr) - stateObject.SetState(key, value) +func (s *StateDB) SetState(addr common.Address, key, value common.Hash) common.Hash { + if stateObject := s.getOrNewStateObject(addr); stateObject != nil { + return stateObject.SetState(key, value) + } + return common.Hash{} +} + +// GetStorageRoot calculates the hash of the trie root by iterating through all storage objects for a given account +func (s *StateDB) GetStorageRoot(addr common.Address) common.Hash { + sr := trie.NewStackTrie(nil) + s.keeper.ForEachStorage(s.ctx, addr, func(key, value common.Hash) bool { + if err := sr.Update(key.Bytes(), value.Bytes()); err != nil { + s.ctx.Logger().Error("failed adding state during storage root hash", "err", err.Error()) + return false + } + return true + }) + return sr.Hash() } // SetStorage replaces the entire storage for the specified account with given @@ -476,29 +513,51 @@ func (s *StateDB) SetStorage(addr common.Address, storage Storage) { stateObject.SetStorage(storage) } -// Suicide marks the given account as suicided. +// SelfDestruct marks the given account as self-destructed. // This clears the account balance. // // The account's state object is still available until the state is committed, -// getStateObject will return a non-nil account after Suicide. -func (s *StateDB) Suicide(addr common.Address) bool { +// getStateObject will return a non-nil account after SelfDestruct. +func (s *StateDB) SelfDestruct(addr common.Address) uint256.Int { stateObject := s.getStateObject(addr) + var prevBalance uint256.Int if stateObject == nil { - return false + return prevBalance } - s.journal.append(suicideChange{ - account: &addr, - prev: stateObject.suicided, + prevBalance = *(stateObject.Balance()) + s.journal.append(selfDestructChange{ + account: &addr, + prev: stateObject.selfDestructed, + prevbalance: new(uint256.Int).Set(&prevBalance), }) - stateObject.markSuicided() - + stateObject.markSelfDestructed() // clear balance balance := s.GetBalance(addr) if balance.Sign() > 0 { - s.SubBalance(addr, balance) + s.SubBalance(addr, balance, tracing.BalanceDecreaseSelfdestructBurn) + } + return prevBalance +} + +func (s *StateDB) SelfDestruct6780(addr common.Address) (uint256.Int, bool) { + stateObject := s.getStateObject(addr) + if stateObject == nil { + return uint256.Int{}, false } - return true + if stateObject.newContract { + return s.SelfDestruct(addr), true + } + return *(stateObject.Balance()), false +} + +// HasSelfDestructed returns if the contract is self-destructed in current transaction. +func (s *StateDB) HasSelfDestructed(addr common.Address) bool { + stateObject := s.getStateObject(addr) + if stateObject != nil { + return stateObject.selfDestructed + } + return false } // SetTransientState sets transient storage for a given account. It @@ -658,8 +717,11 @@ func (s *StateDB) Commit() error { } for _, addr := range s.journal.sortedDirties() { - obj := s.stateObjects[addr] - if obj.suicided { + obj, exist := s.stateObjects[addr] + if !exist { + continue + } + if obj.selfDestructed { if err := s.keeper.DeleteAccount(s.origCtx, obj.Address()); err != nil { return errorsmod.Wrap(err, "failed to delete account") } @@ -709,3 +771,33 @@ func (s *StateDB) emitNativeEvents(contract common.Address, converter EventConve s.AddLog(log) } } + +/* +PointCache, Witness, and AccessEvents are all utilized for verkle trees. +For now, we just return nil and verkle trees are not supported. +*/ +func (s *StateDB) PointCache() *utils.PointCache { + return nil +} + +func (s *StateDB) Witness() *stateless.Witness { + // TODO support verkle tries? + return nil +} + +func (s *StateDB) AccessEvents() *state.AccessEvents { + return nil +} + +//nolint:misspell +func (s *StateDB) Finalise(deleteEmptyObjects bool) { + for addr := range s.journal.dirties { + obj, exist := s.stateObjects[addr] + if !exist { + continue + } + if obj.selfDestructed || (deleteEmptyObjects && obj.empty()) { + delete(s.stateObjects, obj.address) + } + } +} diff --git a/x/evm/statedb/statedb_hooked.go b/x/evm/statedb/statedb_hooked.go new file mode 100644 index 0000000000..5383e56d55 --- /dev/null +++ b/x/evm/statedb/statedb_hooked.go @@ -0,0 +1,291 @@ +package statedb + +import ( + "math/big" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/ethereum/go-ethereum/common" + ethstate "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/stateless" + "github.com/ethereum/go-ethereum/core/tracing" + ethtypes "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/trie/utils" + "github.com/holiman/uint256" +) + +// hookedStateDB represents a statedb which emits calls to tracing-hooks +// on state operations. +type HookedStateDB struct { + inner *StateDB + hooks *tracing.Hooks +} + +// NewHookedState wraps the given stateDb with the given hooks +func NewHookedState(stateDB *StateDB, hooks *tracing.Hooks) *HookedStateDB { + s := &HookedStateDB{stateDB, hooks} + if s.hooks == nil { + s.hooks = new(tracing.Hooks) + } + return s +} + +func (s *HookedStateDB) CreateAccount(addr common.Address) { + s.inner.CreateAccount(addr) +} + +func (s *HookedStateDB) CreateContract(addr common.Address) { + s.inner.CreateContract(addr) +} + +func (s *HookedStateDB) GetBalance(addr common.Address) *uint256.Int { + return s.inner.GetBalance(addr) +} + +func (s *HookedStateDB) GetNonce(addr common.Address) uint64 { + return s.inner.GetNonce(addr) +} + +func (s *HookedStateDB) GetCodeHash(addr common.Address) common.Hash { + return s.inner.GetCodeHash(addr) +} + +func (s *HookedStateDB) GetCode(addr common.Address) []byte { + return s.inner.GetCode(addr) +} + +func (s *HookedStateDB) GetCodeSize(addr common.Address) int { + return s.inner.GetCodeSize(addr) +} + +func (s *HookedStateDB) AddRefund(u uint64) { + s.inner.AddRefund(u) +} + +func (s *HookedStateDB) SubRefund(u uint64) { + s.inner.SubRefund(u) +} + +func (s *HookedStateDB) GetRefund() uint64 { + return s.inner.GetRefund() +} + +func (s *HookedStateDB) GetCommittedState(addr common.Address, hash common.Hash) common.Hash { + return s.inner.GetCommittedState(addr, hash) +} + +func (s *HookedStateDB) GetState(addr common.Address, hash common.Hash) common.Hash { + return s.inner.GetState(addr, hash) +} + +func (s *HookedStateDB) GetStorageRoot(addr common.Address) common.Hash { + return s.inner.GetStorageRoot(addr) +} + +func (s *HookedStateDB) GetTransientState(addr common.Address, key common.Hash) common.Hash { + return s.inner.GetTransientState(addr, key) +} + +func (s *HookedStateDB) SetTransientState(addr common.Address, key, value common.Hash) { + s.inner.SetTransientState(addr, key, value) +} + +func (s *HookedStateDB) HasSelfDestructed(addr common.Address) bool { + return s.inner.HasSelfDestructed(addr) +} + +func (s *HookedStateDB) Exist(addr common.Address) bool { + return s.inner.Exist(addr) +} + +func (s *HookedStateDB) Empty(addr common.Address) bool { + return s.inner.Empty(addr) +} + +func (s *HookedStateDB) AddressInAccessList(addr common.Address) bool { + return s.inner.AddressInAccessList(addr) +} + +func (s *HookedStateDB) SlotInAccessList(addr common.Address, slot common.Hash) (addressOk bool, slotOk bool) { + return s.inner.SlotInAccessList(addr, slot) +} + +func (s *HookedStateDB) AddAddressToAccessList(addr common.Address) { + s.inner.AddAddressToAccessList(addr) +} + +func (s *HookedStateDB) AddSlotToAccessList(addr common.Address, slot common.Hash) { + s.inner.AddSlotToAccessList(addr, slot) +} + +func (s *HookedStateDB) PointCache() *utils.PointCache { + return s.inner.PointCache() +} + +func (s *HookedStateDB) Prepare(rules params.Rules, sender, coinbase common.Address, dest *common.Address, + precompiles []common.Address, txAccesses ethtypes.AccessList, +) { + s.inner.Prepare(rules, sender, coinbase, dest, precompiles, txAccesses) +} + +func (s *HookedStateDB) RevertToSnapshot(i int) { + s.inner.RevertToSnapshot(i) +} + +func (s *HookedStateDB) Snapshot() int { + return s.inner.Snapshot() +} + +func (s *HookedStateDB) AddPreimage(hash common.Hash, bytes []byte) { + s.inner.AddPreimage(hash, bytes) +} + +func (s *HookedStateDB) Witness() *stateless.Witness { + return s.inner.Witness() +} + +func (s *HookedStateDB) AccessEvents() *ethstate.AccessEvents { + return s.inner.AccessEvents() +} + +func (s *HookedStateDB) SubBalance(addr common.Address, amount *uint256.Int, reason tracing.BalanceChangeReason) uint256.Int { + prev := s.inner.SubBalance(addr, amount, reason) + if s.hooks.OnBalanceChange != nil && !amount.IsZero() { + newBalance := new(uint256.Int).Sub(&prev, amount) + s.hooks.OnBalanceChange(addr, prev.ToBig(), newBalance.ToBig(), reason) + } + return prev +} + +func (s *HookedStateDB) AddBalance(addr common.Address, amount *uint256.Int, reason tracing.BalanceChangeReason) uint256.Int { + prev := s.inner.AddBalance(addr, amount, reason) + if s.hooks.OnBalanceChange != nil && !amount.IsZero() { + newBalance := new(uint256.Int).Add(&prev, amount) + s.hooks.OnBalanceChange(addr, prev.ToBig(), newBalance.ToBig(), reason) + } + return prev +} + +func (s *HookedStateDB) SetNonce(address common.Address, nonce uint64, reason tracing.NonceChangeReason) { + prev := s.inner.GetNonce(address) + s.inner.SetNonce(address, nonce, reason) + if s.hooks.OnNonceChangeV2 != nil { + s.hooks.OnNonceChangeV2(address, prev, nonce, reason) + } else if s.hooks.OnNonceChange != nil { + s.hooks.OnNonceChange(address, prev, nonce) + } +} + +func (s *HookedStateDB) SetCode(address common.Address, code []byte) []byte { + prev := s.inner.SetCode(address, code) + if s.hooks.OnCodeChange != nil { + prevHash := ethtypes.EmptyCodeHash + if len(prev) != 0 { + prevHash = crypto.Keccak256Hash(prev) + } + s.hooks.OnCodeChange(address, prevHash, prev, crypto.Keccak256Hash(code), code) + } + return prev +} + +func (s *HookedStateDB) SetState(address common.Address, key common.Hash, value common.Hash) common.Hash { + prev := s.inner.SetState(address, key, value) + if s.hooks.OnStorageChange != nil && prev != value { + s.hooks.OnStorageChange(address, key, prev, value) + } + return prev +} + +func (s *HookedStateDB) SelfDestruct(address common.Address) uint256.Int { + var prevCode []byte + var prevCodeHash common.Hash + + if s.hooks.OnCodeChange != nil { + prevCode = s.inner.GetCode(address) + prevCodeHash = s.inner.GetCodeHash(address) + } + + prev := s.inner.SelfDestruct(address) + + if s.hooks.OnBalanceChange != nil && !prev.IsZero() { + s.hooks.OnBalanceChange(address, prev.ToBig(), new(big.Int), tracing.BalanceDecreaseSelfdestruct) + } + + if s.hooks.OnCodeChange != nil && len(prevCode) > 0 { + s.hooks.OnCodeChange(address, prevCodeHash, prevCode, ethtypes.EmptyCodeHash, nil) + } + + return prev +} + +func (s *HookedStateDB) SelfDestruct6780(address common.Address) (uint256.Int, bool) { + var prevCode []byte + var prevCodeHash common.Hash + + if s.hooks.OnCodeChange != nil { + prevCodeHash = s.inner.GetCodeHash(address) + prevCode = s.inner.GetCode(address) + } + + prev, changed := s.inner.SelfDestruct6780(address) + + if s.hooks.OnBalanceChange != nil && changed && !prev.IsZero() { + s.hooks.OnBalanceChange(address, prev.ToBig(), new(big.Int), tracing.BalanceDecreaseSelfdestruct) + } + + if s.hooks.OnCodeChange != nil && changed && len(prevCode) > 0 { + s.hooks.OnCodeChange(address, prevCodeHash, prevCode, ethtypes.EmptyCodeHash, nil) + } + + return prev, changed +} + +func (s *HookedStateDB) AddLog(log *ethtypes.Log) { + // The inner will modify the log (add fields), so invoke that first + s.inner.AddLog(log) + if s.hooks.OnLog != nil { + s.hooks.OnLog(log) + } +} + +//nolint:misspell +func (s *HookedStateDB) Finalise(deleteEmptyObjects bool) { + //nolint:misspell + defer s.inner.Finalise(deleteEmptyObjects) + if s.hooks.OnBalanceChange == nil { + return + } + for addr := range s.inner.journal.dirties { + obj := s.inner.stateObjects[addr] + if obj != nil && obj.selfDestructed { + // If ether was sent to account post-selfdestruct it is burnt. + if bal := obj.Balance(); bal.Sign() != 0 { + s.hooks.OnBalanceChange(addr, bal.ToBig(), new(big.Int), tracing.BalanceDecreaseSelfdestructBurn) + } + } + } +} + +func (s *HookedStateDB) Error() error { + return s.inner.Error() +} + +// Impl ExtStateDB interface + +// ExecuteNativeAction executes native action in isolate, +// the writes will be revert when either the native action itself fail +// or the wrapping message call reverted. +func (s *HookedStateDB) ExecuteNativeAction(contract common.Address, converter EventConverter, action func(ctx sdk.Context) error) error { + return s.inner.ExecuteNativeAction(contract, converter, action) +} + +// Context returns the current context for query native state in precompiles. +func (s *HookedStateDB) Context() sdk.Context { + return s.inner.Context() +} + +// Transfer transfers amount from sender to recipient. +func (s *HookedStateDB) Transfer(sender, recipient common.Address, amount *uint256.Int) { + s.inner.Transfer(sender, recipient, amount) +} diff --git a/x/evm/statedb/statedb_hooked_test.go b/x/evm/statedb/statedb_hooked_test.go new file mode 100644 index 0000000000..b4b85cd483 --- /dev/null +++ b/x/evm/statedb/statedb_hooked_test.go @@ -0,0 +1,191 @@ +// Copyright 2024 The go-ethereum Authors +// This file is part of the go-ethereum library. +// +// The go-ethereum library is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// The go-ethereum library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with the go-ethereum library. If not, see . + +package statedb_test + +import ( + "fmt" + "math/big" + "testing" + "time" + + "github.com/cometbft/cometbft/crypto/tmhash" + tmproto "github.com/cometbft/cometbft/proto/tendermint/types" + "github.com/cometbft/cometbft/version" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/tracing" + "github.com/ethereum/go-ethereum/core/types" + "github.com/holiman/uint256" + + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" + + tmversion "github.com/cometbft/cometbft/proto/tendermint/version" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/evmos/ethermint/crypto/ethsecp256k1" + "github.com/evmos/ethermint/evmd" + "github.com/evmos/ethermint/testutil" + "github.com/evmos/ethermint/x/evm/statedb" +) + +type HookedStateDBTestSuite struct { + suite.Suite + + app *evmd.EthermintApp + ctx sdk.Context +} + +func (suite *HookedStateDBTestSuite) SetupTest() { + suite.DoSetupTest(suite.T()) +} + +func TestHookedStateDBTestSuite(t *testing.T) { + suite.Run(t, new(HookedStateDBTestSuite)) +} + +func (suite *HookedStateDBTestSuite) DoSetupTest(t require.TestingT) { + checkTx := false + suite.app = testutil.Setup(checkTx, nil) + // consensus key + priv, err := ethsecp256k1.GenerateKey() + require.NoError(t, err) + consAddress := sdk.ConsAddress(priv.PubKey().Address()) + suite.ctx = suite.app.BaseApp.NewUncachedContext(checkTx, tmproto.Header{ + Height: 1, + ChainID: "ethermint_9000-1", + Time: time.Now().UTC(), + ProposerAddress: consAddress.Bytes(), + Version: tmversion.Consensus{ + Block: version.BlockProtocol, + }, + LastBlockId: tmproto.BlockID{ + Hash: tmhash.Sum([]byte("block_id")), + PartSetHeader: tmproto.PartSetHeader{ + Total: 11, + Hash: tmhash.Sum([]byte("partset_header")), + }, + }, + AppHash: tmhash.Sum([]byte("app")), + DataHash: tmhash.Sum([]byte("data")), + EvidenceHash: tmhash.Sum([]byte("evidence")), + ValidatorsHash: tmhash.Sum([]byte("validators")), + NextValidatorsHash: tmhash.Sum([]byte("next_validators")), + ConsensusHash: tmhash.Sum([]byte("consensus")), + LastResultsHash: tmhash.Sum([]byte("last_result")), + }).WithConsensusParams(*testutil.DefaultConsensusParams) +} + +// This method tests that the 'burn' from sending-to-selfdestructed accounts +// is accounted for. +// (There is also a higher-level test in eth/tracers: TestSupplySelfDestruct ) +func (suite *HookedStateDBTestSuite) TestBurn() { + // Note: burn can happen even after EIP-6780, if within one single transaction, + // the following occur: + // 1. contract B creates contract A + // 2. contract A is destructed + // 3. contract B sends ether to A + + var burned = new(uint256.Int) + s := statedb.New(suite.ctx, suite.app.EvmKeeper, statedb.NewEmptyTxConfig(common.BytesToHash(suite.ctx.HeaderHash()))) + hooked := statedb.NewHookedState(s, &tracing.Hooks{ + OnBalanceChange: func(addr common.Address, prev, new *big.Int, reason tracing.BalanceChangeReason) { + if reason == tracing.BalanceDecreaseSelfdestructBurn { + burned.Add(burned, uint256.MustFromBig(prev)) + } + }, + }) + createAndDestroy := func(addr common.Address) { + hooked.AddBalance(addr, uint256.NewInt(100), tracing.BalanceChangeUnspecified) + hooked.CreateContract(addr) + hooked.SelfDestruct(addr) + // sanity-check that balance is now 0 + if have, want := hooked.GetBalance(addr), new(uint256.Int); !have.Eq(want) { + suite.T().Fatalf("post-destruct balance wrong: have %v want %v", have, want) + } + } + addA := common.Address{0xaa} + addB := common.Address{0xbb} + addC := common.Address{0xcc} + + // Tx 1: create and destroy address A and B in one tx + createAndDestroy(addA) + createAndDestroy(addB) + hooked.AddBalance(addA, uint256.NewInt(200), tracing.BalanceChangeUnspecified) + hooked.AddBalance(addB, uint256.NewInt(200), tracing.BalanceChangeUnspecified) + hooked.Finalise(true) + + // Tx 2: create and destroy address C, then commit + createAndDestroy(addC) + hooked.AddBalance(addC, uint256.NewInt(200), tracing.BalanceChangeUnspecified) + hooked.Finalise(true) + + s.Commit() + if have, want := burned, uint256.NewInt(600); !have.Eq(want) { + suite.T().Fatalf("burn-count wrong, have %v want %v", have, want) + } +} + +// TestHooks is a basic sanity-check of all hooks +func (suite *HookedStateDBTestSuite) TestHooks() { + txConfig := statedb.NewTxConfig(common.BytesToHash(suite.ctx.HeaderHash()), common.Hash{0x11}, 100, 0) + inner := statedb.New(suite.ctx, suite.app.EvmKeeper, txConfig) + var result []string + var wants = []string{ + "0xaa00000000000000000000000000000000000000.balance: 0->100 (Unspecified)", + "0xaa00000000000000000000000000000000000000.balance: 100->50 (Transfer)", + "0xaa00000000000000000000000000000000000000.nonce: 0->1337", + "0xaa00000000000000000000000000000000000000.code: (0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470) ->0x1325 (0xa12ae05590de0c93a00bc7ac773c2fdb621e44f814985e72194f921c0050f728)", + "0xaa00000000000000000000000000000000000000.storage slot 0x0000000000000000000000000000000000000000000000000000000000000001: 0x0000000000000000000000000000000000000000000000000000000000000000 ->0x0000000000000000000000000000000000000000000000000000000000000011", + "0xaa00000000000000000000000000000000000000.storage slot 0x0000000000000000000000000000000000000000000000000000000000000001: 0x0000000000000000000000000000000000000000000000000000000000000011 ->0x0000000000000000000000000000000000000000000000000000000000000022", + "log 100", + } + emitF := func(format string, a ...any) { + result = append(result, fmt.Sprintf(format, a...)) + } + sdb := statedb.NewHookedState(inner, &tracing.Hooks{ + OnBalanceChange: func(addr common.Address, prev, new *big.Int, reason tracing.BalanceChangeReason) { + emitF("%v.balance: %v->%v (%v)", addr, prev, new, reason) + }, + OnNonceChange: func(addr common.Address, prev, new uint64) { + emitF("%v.nonce: %v->%v", addr, prev, new) + }, + OnCodeChange: func(addr common.Address, prevCodeHash common.Hash, prevCode []byte, codeHash common.Hash, code []byte) { + emitF("%v.code: %#x (%v) ->%#x (%v)", addr, prevCode, prevCodeHash, code, codeHash) + }, + OnStorageChange: func(addr common.Address, slot common.Hash, prev, new common.Hash) { + emitF("%v.storage slot %v: %v ->%v", addr, slot, prev, new) + }, + OnLog: func(log *types.Log) { + emitF("log %v", log.TxIndex) + }, + }) + sdb.AddBalance(common.Address{0xaa}, uint256.NewInt(100), tracing.BalanceChangeUnspecified) + sdb.SubBalance(common.Address{0xaa}, uint256.NewInt(50), tracing.BalanceChangeTransfer) + sdb.SetNonce(common.Address{0xaa}, 1337, tracing.NonceChangeGenesis) + sdb.SetCode(common.Address{0xaa}, []byte{0x13, 37}) + sdb.SetState(common.Address{0xaa}, common.HexToHash("0x01"), common.HexToHash("0x11")) + sdb.SetState(common.Address{0xaa}, common.HexToHash("0x01"), common.HexToHash("0x22")) + sdb.SetTransientState(common.Address{0xaa}, common.HexToHash("0x02"), common.HexToHash("0x01")) + sdb.SetTransientState(common.Address{0xaa}, common.HexToHash("0x02"), common.HexToHash("0x02")) + sdb.AddLog(&types.Log{ + Address: common.Address{0xbb}, + }) + for i, want := range wants { + if have := result[i]; have != want { + suite.T().Fatalf("error event %d, have\n%v\nwant%v\n", i, have, want) + } + } +} diff --git a/x/evm/statedb/statedb_test.go b/x/evm/statedb/statedb_test.go index e60e824b3a..5219e5f45c 100644 --- a/x/evm/statedb/statedb_test.go +++ b/x/evm/statedb/statedb_test.go @@ -21,6 +21,7 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" @@ -29,6 +30,7 @@ import ( evmkeeper "github.com/evmos/ethermint/x/evm/keeper" "github.com/evmos/ethermint/x/evm/statedb" evmtypes "github.com/evmos/ethermint/x/evm/types" + "github.com/holiman/uint256" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" ) @@ -59,7 +61,7 @@ func (suite *StateDBTestSuite) TestAccount() { {"non-exist account", func(db *statedb.StateDB, cms storetypes.MultiStore) { suite.Require().Equal(false, db.Exist(address)) suite.Require().Equal(true, db.Empty(address)) - suite.Require().Equal(big.NewInt(0), db.GetBalance(address)) + suite.Require().Equal(uint256.NewInt(0), db.GetBalance(address)) suite.Require().Equal([]byte(nil), db.GetCode(address)) suite.Require().Equal(common.Hash{}, db.GetCodeHash(address)) suite.Require().Equal(uint64(0), db.GetNonce(address)) @@ -76,20 +78,20 @@ func (suite *StateDBTestSuite) TestAccount() { db = statedb.New(ctx, keeper, txConfig) suite.Require().Equal(true, db.Exist(address)) suite.Require().Equal(true, db.Empty(address)) - suite.Require().Equal(big.NewInt(0), db.GetBalance(address)) + suite.Require().Equal(uint256.NewInt(0), db.GetBalance(address)) suite.Require().Equal([]byte(nil), db.GetCode(address)) suite.Require().Equal(common.BytesToHash(emptyCodeHash), db.GetCodeHash(address)) suite.Require().Equal(uint64(0), db.GetNonce(address)) }}, {"suicide", func(db *statedb.StateDB, cms storetypes.MultiStore) { // non-exist account. - suite.Require().False(db.Suicide(address)) - suite.Require().False(db.HasSuicided(address)) + db.SelfDestruct(address) + suite.Require().False(db.HasSelfDestructed(address)) // create a contract account db.CreateAccount(address) db.SetCode(address, []byte("hello world")) - db.AddBalance(address, big.NewInt(100)) + db.AddBalance(address, uint256.NewInt(100), tracing.BalanceChangeTransfer) db.SetState(address, key1, value1) db.SetState(address, key2, value2) codeHash := db.GetCodeHash(address) @@ -99,15 +101,16 @@ func (suite *StateDBTestSuite) TestAccount() { suite.Require().NotEmpty(keeper.GetCode(ctx, codeHash)) - // suicide + // self destruct db = statedb.New(ctx, keeper, txConfig) - suite.Require().False(db.HasSuicided(address)) - suite.Require().True(db.Suicide(address)) + suite.Require().False(db.HasSelfDestructed(address)) + db.SelfDestruct(address) + suite.Require().True(db.HasSelfDestructed(address)) // check dirty state - suite.Require().True(db.HasSuicided(address)) + suite.Require().True(db.HasSelfDestructed(address)) // balance is cleared - suite.Require().Equal(big.NewInt(0), db.GetBalance(address)) + suite.Require().Equal(uint256.NewInt(0), db.GetBalance(address)) // but code and state are still accessible in dirty state suite.Require().Equal(value1, db.GetState(address, key1)) suite.Require().Equal([]byte("hello world"), db.GetCode(address)) @@ -139,11 +142,11 @@ func (suite *StateDBTestSuite) TestAccountOverride() { _, ctx, keeper := setupTestEnv(suite.T()) db := statedb.New(ctx, keeper, emptyTxConfig) // test balance carry over when overwritten - amount := big.NewInt(1) + amount := uint256.NewInt(1) // init an EOA account, account overriden only happens on EOA account. - db.AddBalance(address, amount) - db.SetNonce(address, 1) + db.AddBalance(address, amount, tracing.BalanceChangeTransfer) + db.SetNonce(address, 1, tracing.NonceChangeUnspecified) // override db.CreateAccount(address) @@ -160,7 +163,7 @@ func (suite *StateDBTestSuite) TestDBError() { malleate func(vm.StateDB) }{ {"negative balance", func(db vm.StateDB) { - db.SubBalance(address, big.NewInt(10)) + db.SubBalance(address, uint256.NewInt(10), tracing.BalanceChangeTransfer) }}, } for _, tc := range testCases { @@ -176,28 +179,28 @@ func (suite *StateDBTestSuite) TestBalance() { testCases := []struct { name string malleate func(*statedb.StateDB) - expBalance *big.Int + expBalance *uint256.Int }{ {"add balance", func(db *statedb.StateDB) { - db.AddBalance(address, big.NewInt(10)) - }, big.NewInt(10)}, + db.AddBalance(address, uint256.NewInt(10), tracing.BalanceChangeTransfer) + }, uint256.NewInt(10)}, {"sub balance", func(db *statedb.StateDB) { - db.AddBalance(address, big.NewInt(10)) + db.AddBalance(address, uint256.NewInt(10), tracing.BalanceChangeTransfer) // get dirty balance - suite.Require().Equal(big.NewInt(10), db.GetBalance(address)) - db.SubBalance(address, big.NewInt(2)) - }, big.NewInt(8)}, + suite.Require().Equal(uint256.NewInt(10), db.GetBalance(address)) + db.SubBalance(address, uint256.NewInt(2), tracing.BalanceChangeTransfer) + }, uint256.NewInt(8)}, {"add zero balance", func(db *statedb.StateDB) { - db.AddBalance(address, big.NewInt(0)) - }, big.NewInt(0)}, + db.AddBalance(address, uint256.NewInt(0), tracing.BalanceChangeTransfer) + }, uint256.NewInt(0)}, {"sub zero balance", func(db *statedb.StateDB) { - db.SubBalance(address, big.NewInt(0)) - }, big.NewInt(0)}, + db.SubBalance(address, uint256.NewInt(0), tracing.BalanceChangeTransfer) + }, uint256.NewInt(0)}, {"transfer", func(db *statedb.StateDB) { - db.AddBalance(address, big.NewInt(10)) - db.Transfer(address, address2, big.NewInt(10)) - suite.Require().Equal(big.NewInt(10), db.GetBalance(address2)) - }, big.NewInt(0)}, + db.AddBalance(address, uint256.NewInt(10), tracing.BalanceChangeTransfer) + db.Transfer(address, address2, uint256.NewInt(10)) + suite.Require().Equal(uint256.NewInt(10), db.GetBalance(address2)) + }, uint256.NewInt(0)}, } for _, tc := range testCases { @@ -212,7 +215,7 @@ func (suite *StateDBTestSuite) TestBalance() { ctx, keeper = newTestKeeper(suite.T(), raw) // check committed balance too - suite.Require().Equal(tc.expBalance, keeper.GetEVMDenomBalance(ctx, address)) + suite.Require().Equal(tc.expBalance.Uint64(), keeper.GetEVMDenomBalance(ctx, address).Uint64()) }) } } @@ -333,11 +336,11 @@ func (suite *StateDBTestSuite) TestRevertSnapshot() { db.SetState(address, v1, v3) }}, {"set nonce", func(db vm.StateDB) { - db.SetNonce(address, 10) + db.SetNonce(address, 10, tracing.NonceChangeUnspecified) }}, {"change balance", func(db vm.StateDB) { - db.AddBalance(address, big.NewInt(10)) - db.SubBalance(address, big.NewInt(5)) + db.AddBalance(address, uint256.NewInt(10), tracing.BalanceChangeTransfer) + db.SubBalance(address, uint256.NewInt(5), tracing.BalanceChangeTransfer) }}, {"override account", func(db vm.StateDB) { db.CreateAccount(address) @@ -345,10 +348,11 @@ func (suite *StateDBTestSuite) TestRevertSnapshot() { {"set code", func(db vm.StateDB) { db.SetCode(address, []byte("hello world")) }}, - {"suicide", func(db vm.StateDB) { + {"self destruct", func(db vm.StateDB) { db.SetState(address, v1, v2) db.SetCode(address, []byte("hello world")) - suite.Require().True(db.Suicide(address)) + db.SelfDestruct(address) + suite.Require().True(db.HasSelfDestructed(address)) }}, {"add log", func(db vm.StateDB) { db.AddLog(ðtypes.Log{ @@ -372,11 +376,11 @@ func (suite *StateDBTestSuite) TestRevertSnapshot() { { // do some arbitrary changes to the storage db := statedb.New(ctx, keeper, emptyTxConfig) - db.SetNonce(address, 1) - db.AddBalance(address, big.NewInt(100)) + db.SetNonce(address, 1, tracing.NonceChangeUnspecified) + db.AddBalance(address, uint256.NewInt(100), tracing.BalanceChangeTransfer) db.SetCode(address, []byte("hello world")) db.SetState(address, v1, v2) - db.SetNonce(address2, 1) + db.SetNonce(address2, 1, tracing.NonceChangeUnspecified) suite.Require().NoError(db.Commit()) } diff --git a/x/evm/types/msg.go b/x/evm/types/msg.go index 7d11751ee6..d21da53da3 100644 --- a/x/evm/types/msg.go +++ b/x/evm/types/msg.go @@ -34,9 +34,9 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/ante" authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" + ethermint "github.com/evmos/ethermint/types" "github.com/ethereum/go-ethereum/common" - cmath "github.com/ethereum/go-ethereum/common/math" "github.com/ethereum/go-ethereum/core" ethtypes "github.com/ethereum/go-ethereum/core/types" ) @@ -281,7 +281,7 @@ func (msg MsgEthereumTx) GetEffectiveGasPrice(baseFee *big.Int) *big.Int { return tx.GasPrice() } // for legacy tx, both gasTipCap and gasFeeCap are gasPrice, the result is equavalent. - return cmath.BigMin(new(big.Int).Add(tx.GasTipCap(), baseFee), tx.GasFeeCap()) + return ethermint.BigMin(new(big.Int).Add(tx.GasTipCap(), baseFee), tx.GasFeeCap()) } // GetFrom loads the ethereum sender address from the sigcache and returns an @@ -310,22 +310,23 @@ func (msg *MsgEthereumTx) AsTransaction() *ethtypes.Transaction { func (msg *MsgEthereumTx) AsMessage(baseFee *big.Int) *core.Message { tx := msg.AsTransaction() ethMsg := &core.Message{ - Nonce: tx.Nonce(), - GasLimit: tx.Gas(), - GasPrice: new(big.Int).Set(tx.GasPrice()), - GasFeeCap: new(big.Int).Set(tx.GasFeeCap()), - GasTipCap: new(big.Int).Set(tx.GasTipCap()), - To: tx.To(), - Value: tx.Value(), - Data: tx.Data(), - AccessList: tx.AccessList(), - SkipAccountChecks: false, + Nonce: tx.Nonce(), + GasLimit: tx.Gas(), + GasPrice: new(big.Int).Set(tx.GasPrice()), + GasFeeCap: new(big.Int).Set(tx.GasFeeCap()), + GasTipCap: new(big.Int).Set(tx.GasTipCap()), + To: tx.To(), + Value: tx.Value(), + Data: tx.Data(), + AccessList: tx.AccessList(), + SkipNonceChecks: false, + SkipFromEOACheck: false, From: common.BytesToAddress(msg.From), } // If baseFee provided, set gasPrice to effectiveGasPrice. if baseFee != nil { - ethMsg.GasPrice = cmath.BigMin(ethMsg.GasPrice.Add(ethMsg.GasTipCap, baseFee), ethMsg.GasFeeCap) + ethMsg.GasPrice = ethermint.BigMin(ethMsg.GasPrice.Add(ethMsg.GasTipCap, baseFee), ethMsg.GasFeeCap) } return ethMsg } diff --git a/x/evm/types/tracer.go b/x/evm/types/tracer.go index ea4de00f3a..c484eb3d1b 100644 --- a/x/evm/types/tracer.go +++ b/x/evm/types/tracer.go @@ -23,6 +23,8 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/tracing" + "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/params" ) @@ -36,22 +38,26 @@ const ( // NewTracer creates a new Logger tracer to collect execution traces from an // EVM transaction. -func NewTracer(tracer string, msg *core.Message, rules params.Rules) vm.EVMLogger { +func NewTracer(tracer string, msg *core.Message, rules params.Rules) *tracing.Hooks { // TODO: enable additional log configuration - logCfg := &logger.Config{ - Debug: true, - } + logCfg := &logger.Config{} switch tracer { case TracerAccessList: - preCompiles := vm.DefaultActivePrecompiles(rules) - return logger.NewAccessListTracer(msg.AccessList, msg.From, *msg.To, preCompiles) + blockAddrs := map[common.Address]struct{}{ + *msg.To: {}, msg.From: {}, + } + precompiles := vm.DefaultActivePrecompiles(rules) + for _, addr := range precompiles { + blockAddrs[addr] = struct{}{} + } + return logger.NewAccessListTracer(msg.AccessList, blockAddrs).Hooks() case TracerJSON: return logger.NewJSONLogger(logCfg, os.Stderr) case TracerMarkdown: - return logger.NewMarkdownLogger(logCfg, os.Stdout) // TODO: Stderr ? + return logger.NewMarkdownLogger(logCfg, os.Stdout).Hooks() // TODO: Stderr ? case TracerStruct: - return logger.NewStructLogger(logCfg) + return logger.NewStructLogger(logCfg).Hooks() default: return NewNoOpTracer() } @@ -63,46 +69,81 @@ type TxTraceResult struct { Error string `json:"error,omitempty"` // Trace failure produced by the tracer } -var _ vm.EVMLogger = &NoOpTracer{} - // NoOpTracer is an empty implementation of vm.Tracer interface type NoOpTracer struct{} // NewNoOpTracer creates a no-op vm.Tracer -func NewNoOpTracer() *NoOpTracer { - return &NoOpTracer{} +func NewNoOpTracer() *tracing.Hooks { + t := NoOpTracer{} + return &tracing.Hooks{ + OnTxStart: t.OnTxStart, + OnTxEnd: t.OnTxEnd, + OnEnter: t.OnEnter, + OnExit: t.OnExit, + OnOpcode: t.OnOpcode, + OnFault: t.OnFault, + OnGasChange: t.OnGasChange, + OnBlockchainInit: t.OnBlockchainInit, + OnBlockStart: t.OnBlockStart, + OnBlockEnd: t.OnBlockEnd, + OnSkippedBlock: t.OnSkippedBlock, + OnGenesisBlock: t.OnGenesisBlock, + OnBalanceChange: t.OnBalanceChange, + OnNonceChange: t.OnNonceChange, + OnCodeChange: t.OnCodeChange, + OnStorageChange: t.OnStorageChange, + OnLog: t.OnLog, + } +} + +func (dt *NoOpTracer) OnOpcode(_ uint64, _ byte, _, _ uint64, _ tracing.OpContext, _ []byte, _ int, _ error) { +} + +func (dt *NoOpTracer) OnFault(_ uint64, _ byte, _, _ uint64, _ tracing.OpContext, _ int, _ error) { } -// CaptureStart implements vm.Tracer interface -func (dt NoOpTracer) CaptureStart(_ *vm.EVM, - _ common.Address, - _ common.Address, - _ bool, - _ []byte, - _ uint64, +func (dt *NoOpTracer) OnEnter(_ int, _ byte, _ common.Address, _ common.Address, _ []byte, _ uint64, _ *big.Int) { } -// CaptureState implements vm.Tracer interface -func (dt NoOpTracer) CaptureState(_ uint64, _ vm.OpCode, _, _ uint64, _ *vm.ScopeContext, _ []byte, _ int, _ error) { +func (dt *NoOpTracer) OnExit(_ int, _ []byte, _ uint64, _ error, _ bool) { +} + +func (dt *NoOpTracer) OnTxStart(_ *tracing.VMContext, _ *types.Transaction, _ common.Address) { +} + +func (dt *NoOpTracer) OnTxEnd(_ *types.Receipt, _ error) { +} + +func (dt *NoOpTracer) OnBlockStart(_ tracing.BlockEvent) { +} + +func (dt *NoOpTracer) OnBlockEnd(_ error) { +} + +func (dt *NoOpTracer) OnSkippedBlock(_ tracing.BlockEvent) {} + +func (dt *NoOpTracer) OnBlockchainInit(_ *params.ChainConfig) { +} + +func (dt *NoOpTracer) OnGenesisBlock(_ *types.Block, _ types.GenesisAlloc) { } -// CaptureFault implements vm.Tracer interface -func (dt NoOpTracer) CaptureFault(_ uint64, _ vm.OpCode, _, _ uint64, _ *vm.ScopeContext, _ int, _ error) { +func (dt *NoOpTracer) OnBalanceChange(_ common.Address, _, _ *big.Int, _ tracing.BalanceChangeReason) { } -// CaptureEnd implements vm.Tracer interface -func (dt NoOpTracer) CaptureEnd(_ []byte, _ uint64, _ error) {} +func (dt *NoOpTracer) OnNonceChange(_ common.Address, _, _ uint64) { +} -// CaptureEnter implements vm.Tracer interface -func (dt NoOpTracer) CaptureEnter(_ vm.OpCode, _ common.Address, _ common.Address, _ []byte, _ uint64, _ *big.Int) { +func (dt *NoOpTracer) OnCodeChange(_ common.Address, _ common.Hash, _ []byte, _ common.Hash, + _ []byte) { } -// CaptureExit implements vm.Tracer interface -func (dt NoOpTracer) CaptureExit(_ []byte, _ uint64, _ error) {} +func (dt *NoOpTracer) OnStorageChange(_ common.Address, _, _, _ common.Hash) { +} -// CaptureTxStart implements vm.Tracer interface -func (dt NoOpTracer) CaptureTxStart(_ uint64) {} +func (dt *NoOpTracer) OnLog(_ *types.Log) { +} -// CaptureTxEnd implements vm.Tracer interface -func (dt NoOpTracer) CaptureTxEnd(_ uint64) {} +func (dt *NoOpTracer) OnGasChange(_, _ uint64, _ tracing.GasChangeReason) { +} diff --git a/x/evm/types/tracer_test.go b/x/evm/types/tracer_test.go index 6e21f93a63..f18757c2a1 100644 --- a/x/evm/types/tracer_test.go +++ b/x/evm/types/tracer_test.go @@ -3,9 +3,12 @@ package types import ( "testing" + "github.com/ethereum/go-ethereum/core/tracing" "github.com/stretchr/testify/require" ) func TestNewNoOpTracer(t *testing.T) { - require.Equal(t, &NoOpTracer{}, NewNoOpTracer()) + tracer := NewNoOpTracer() + require.IsType(t, &tracing.Hooks{}, tracer) + require.NotNil(t, tracer) } diff --git a/x/evm/types/tx_args.go b/x/evm/types/tx_args.go index 29bf99fdc9..a1357ddd8f 100644 --- a/x/evm/types/tx_args.go +++ b/x/evm/types/tx_args.go @@ -22,9 +22,9 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/common/math" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" + ethermint "github.com/evmos/ethermint/types" ) // TransactionArgs represents the arguments to construct a new transaction @@ -176,7 +176,7 @@ func (args *TransactionArgs) ToMessage(globalGasCap uint64, baseFee *big.Int) (* // Backfill the legacy gasPrice for EVM execution, unless we're all zeroes gasPrice = new(big.Int) if gasFeeCap.BitLen() > 0 || gasTipCap.BitLen() > 0 { - gasPrice = math.BigMin(new(big.Int).Add(gasTipCap, baseFee), gasFeeCap) + gasPrice = ethermint.BigMin(new(big.Int).Add(gasTipCap, baseFee), gasFeeCap) } } } @@ -196,17 +196,18 @@ func (args *TransactionArgs) ToMessage(globalGasCap uint64, baseFee *big.Int) (* } msg := &core.Message{ - From: addr, - To: args.To, - Nonce: nonce, - Value: value, - GasLimit: gas, - GasPrice: gasPrice, - GasFeeCap: gasFeeCap, - GasTipCap: gasTipCap, - Data: data, - AccessList: accessList, - SkipAccountChecks: true, + From: addr, + To: args.To, + Nonce: nonce, + Value: value, + GasLimit: gas, + GasPrice: gasPrice, + GasFeeCap: gasFeeCap, + GasTipCap: gasTipCap, + Data: data, + AccessList: accessList, + SkipNonceChecks: true, + SkipFromEOACheck: true, } return msg, nil } diff --git a/x/evm/types/utils.go b/x/evm/types/utils.go index 9f553aa6af..da075df587 100644 --- a/x/evm/types/utils.go +++ b/x/evm/types/utils.go @@ -29,10 +29,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/math" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/params" + ethermint "github.com/evmos/ethermint/types" ) // DefaultPriorityReduction is the default amount of price values required for 1 unit of priority. @@ -229,7 +229,7 @@ func BinSearch(lo, hi uint64, executable func(uint64) (bool, *MsgEthereumTxRespo // EffectiveGasPrice compute the effective gas price based on eip-1159 rules // `effectiveGasPrice = min(baseFee + tipCap, feeCap)` func EffectiveGasPrice(baseFee *big.Int, feeCap *big.Int, tipCap *big.Int) *big.Int { - return math.BigMin(new(big.Int).Add(tipCap, baseFee), feeCap) + return ethermint.BigMin(new(big.Int).Add(tipCap, baseFee), feeCap) } // HexAddress encode ethereum address without checksum, faster to run for state machine diff --git a/x/feemarket/keeper/eip1559.go b/x/feemarket/keeper/eip1559.go index 0a6d53fc99..0d30b5a85f 100644 --- a/x/feemarket/keeper/eip1559.go +++ b/x/feemarket/keeper/eip1559.go @@ -22,7 +22,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/math" + ethermint "github.com/evmos/ethermint/types" ) // CalculateBaseFee calculates the base fee for the current block. This is only calculated once per @@ -83,7 +83,7 @@ func (k Keeper) CalculateBaseFee(ctx sdk.Context) *big.Int { gasUsedDelta := new(big.Int).SetUint64(parentGasUsed - parentGasTarget) x := new(big.Int).Mul(parentBaseFee, gasUsedDelta) y := x.Div(x, parentGasTargetBig) - baseFeeDelta := math.BigMax( + baseFeeDelta := ethermint.BigMax( x.Div(y, baseFeeChangeDenominator), common.Big1, ) @@ -101,5 +101,5 @@ func (k Keeper) CalculateBaseFee(ctx sdk.Context) *big.Int { // Set global min gas price as lower bound of the base fee, transactions below // the min gas price don't even reach the mempool. minGasPrice := params.MinGasPrice.TruncateInt().BigInt() - return math.BigMax(x.Sub(parentBaseFee, baseFeeDelta), minGasPrice) + return ethermint.BigMax(x.Sub(parentBaseFee, baseFeeDelta), minGasPrice) } From 67a47478d691e3c37dcd16ae6d06100a3cd6af97 Mon Sep 17 00:00:00 2001 From: "Thomas N." <81727899+thomas-nguy@users.noreply.github.com> Date: Tue, 12 Aug 2025 15:14:56 +0900 Subject: [PATCH 124/210] feat(ante): tx replacement support (#681) --- CHANGELOG.md | 1 + ante/cache/antecache.go | 74 ++++++++++++++++++++++++++++++++++++ ante/cache/antecache_test.go | 65 +++++++++++++++++++++++++++++++ ante/eth.go | 35 +++++++++++++---- evmd/ante/eth_test.go | 7 ++-- evmd/ante/handler_options.go | 9 ++++- evmd/ante/utils_test.go | 2 + evmd/app.go | 7 +++- evmd/simulation_test.go | 2 + 9 files changed, 188 insertions(+), 14 deletions(-) create mode 100644 ante/cache/antecache.go create mode 100644 ante/cache/antecache_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d00e96592..aa5508ad1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,6 +50,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#638](https://github.com/crypto-org-chain/ethermint/pull/638) Add support for eth_getBlockReceipts. * (evm) [#414](https://github.com/crypto-org-chain/ethermint/pull/414) Integrate go-block-stm for parallel tx execution. * (block-stm) [#498](https://github.com/crypto-org-chain/ethermint/pull/498) Enable incarnation cache for block-stm executor. +* (ante) [#681](https://github.com/crypto-org-chain/ethermint/pull/681) Tx replacement support. ### State Machine Breaking diff --git a/ante/cache/antecache.go b/ante/cache/antecache.go new file mode 100644 index 0000000000..005058223c --- /dev/null +++ b/ante/cache/antecache.go @@ -0,0 +1,74 @@ +package cache + +import ( + "sync" +) + +// TxNonce structure for a pair sender and nonce +type TxNonce struct { + Address string + Nonce uint64 +} + +// AnteCache is a cache used to check that a specific TxNonce exists in a mempool +// Currently it is not possible to read the mempool to check if a transaction-nonce exists already +// We use a cache to track the "potential transaction" in the mempool +// TODO to be removed once we have a better solution implemented in cosmos sdk +type AnteCache struct { + mu sync.RWMutex + cache map[TxNonce]bool + // - if maxTx == 0, there is no cap on the number of transactions in the cache + // - if maxTx > 0, the cache will cap the number of transactions it stores, + // - if maxTx < 0, the cache is a no-op cache. + maxTx int +} + +func NewAnteCache(mempoolMaxTxs int) *AnteCache { + return &AnteCache{ + cache: make(map[TxNonce]bool), + maxTx: mempoolMaxTxs, + } +} + +// Set the TxNonce +func (c *AnteCache) Set(address string, nonce uint64) { + if c.maxTx < 0 { + return + } + c.mu.Lock() + defer c.mu.Unlock() + if c.maxTx > 0 && len(c.cache) >= c.maxTx { + return + } + key := TxNonce{address, nonce} + c.cache[key] = true +} + +// Delete the TxNonce +func (c *AnteCache) Delete(address string, nonce uint64) { + if c.maxTx < 0 { + return + } + c.mu.Lock() + defer c.mu.Unlock() + key := TxNonce{address, nonce} + delete(c.cache, key) +} + +// Exists check if the TxNonce exists +func (c *AnteCache) Exists(address string, nonce uint64) bool { + if c.maxTx < 0 { + return false + } + c.mu.RLock() + defer c.mu.RUnlock() + key := TxNonce{address, nonce} + _, ok := c.cache[key] + return ok +} + +func (c *AnteCache) Size() int { + c.mu.RLock() + defer c.mu.RUnlock() + return len(c.cache) +} diff --git a/ante/cache/antecache_test.go b/ante/cache/antecache_test.go new file mode 100644 index 0000000000..2a192bf1ca --- /dev/null +++ b/ante/cache/antecache_test.go @@ -0,0 +1,65 @@ +package cache_test + +import ( + "github.com/evmos/ethermint/ante/cache" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestAnteCache_SetAndExists(t *testing.T) { + antecache := cache.NewAnteCache(0) + address := "cosmos1huydeevpz37sd9shv2gqf9p8unc0j89x59cn3c" + + nonce := uint64(42) + antecache.Set(address, nonce) + + exists := antecache.Exists(address, nonce) + require.True(t, exists, "expected TxNonce to exist after Set") +} + +func TestAnteCache_Delete(t *testing.T) { + antecache := cache.NewAnteCache(0) + address := "cosmos1huydeevpz37sd9shv2gqf9p8unc0j89x59cn3c" + nonce := uint64(42) + antecache.Set(address, nonce) + antecache.Delete(address, nonce) + + exists := antecache.Exists(address, nonce) + require.False(t, exists, "expected TxNonce to not exist after Delete") +} + +func TestAnteCache_ExistsForNonExistentNonce(t *testing.T) { + antecache := cache.NewAnteCache(0) + address := "cosmos1huydeevpz37sd9shv2gqf9p8unc0j89x59cn3c" + + exists := antecache.Exists(address, 99) + require.False(t, exists, "expected TxNonce to not exist when not set") +} + +func TestAnteCache_ConcurrentAccess(t *testing.T) { + antecache := cache.NewAnteCache(0) + address := "cosmos1huydeevpz37sd9shv2gqf9p8unc0j89x59cn3c" + + nonce := uint64(100) + done := make(chan bool) + + // Writer + go func() { + for i := 0; i < 1000; i++ { + antecache.Set(address, nonce+uint64(i)) + } + done <- true + }() + + // Reader + go func() { + for i := 0; i < 1000; i++ { + antecache.Exists(address, nonce+uint64(i)) + } + done <- true + }() + + <-done + <-done +} diff --git a/ante/eth.go b/ante/eth.go index c249014495..dee8a3b7f7 100644 --- a/ante/eth.go +++ b/ante/eth.go @@ -20,6 +20,8 @@ import ( "math" "math/big" + "github.com/evmos/ethermint/ante/cache" + errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" @@ -271,7 +273,7 @@ func canTransfer(ctx sdk.Context, evmKeeper interfaces.EVMKeeper, denom string, // contract creation, the nonce will be incremented during the transaction execution and not within // this AnteHandler decorator. func CheckAndSetEthSenderNonce( - ctx sdk.Context, tx sdk.Tx, ak evmtypes.AccountKeeper, unsafeUnOrderedTx bool, accountGetter AccountGetter, + ctx sdk.Context, tx sdk.Tx, ak evmtypes.AccountKeeper, unsafeUnOrderedTx bool, accountGetter AccountGetter, cache *cache.AnteCache, ) error { for _, msg := range tx.GetMsgs() { msgEthTx, ok := msg.(*evmtypes.MsgEthereumTx) @@ -281,7 +283,6 @@ func CheckAndSetEthSenderNonce( tx := msgEthTx.AsTransaction() - // increase sequence of sender from := msgEthTx.GetFrom() acc := accountGetter(from) if acc == nil { @@ -290,20 +291,38 @@ func CheckAndSetEthSenderNonce( "account %s is nil", common.BytesToAddress(from.Bytes()), ) } - nonce := acc.GetSequence() + expectedNonce := acc.GetSequence() + txNonce := tx.Nonce() + fromStr := from.String() + // if flag is set, we bypass nonce all check verification if !unsafeUnOrderedTx { - // we merged the nonce verification to nonce increment, so when tx includes multiple messages - // with same sender, they'll be accepted. - if tx.Nonce() != nonce { + ex := cache.Exists(fromStr, txNonce) + // to support tx replacement, we check if the transaction nonce exists in the cache and if yes we skip + // nonce verification, and we don't set the sequence + // We allow skip verification only during CheckTx to keep sequence safe during the execution. + if ctx.IsCheckTx() && !ctx.IsReCheckTx() && ex { + continue + } + + // nonce verification, the sequence needs to be in order + if txNonce != expectedNonce { return errorsmod.Wrapf( errortypes.ErrInvalidSequence, - "invalid nonce; got %d, expected %d", tx.Nonce(), nonce, + "invalid nonce; got %d, expected %d", txNonce, expectedNonce, ) } + + if ctx.IsCheckTx() { + cache.Set(fromStr, txNonce) + } else if ex { + // delete in case of deliver tx + cache.Delete(fromStr, txNonce) + } } - if err := acc.SetSequence(nonce + 1); err != nil { + // increase sequence of sender + if err := acc.SetSequence(expectedNonce + 1); err != nil { return errorsmod.Wrapf(err, "failed to set sequence to %d", acc.GetSequence()+1) } diff --git a/evmd/ante/eth_test.go b/evmd/ante/eth_test.go index 471bff6dbe..837f167847 100644 --- a/evmd/ante/eth_test.go +++ b/evmd/ante/eth_test.go @@ -3,6 +3,7 @@ package ante_test import ( "errors" "fmt" + "github.com/evmos/ethermint/ante/cache" "math" "math/big" @@ -151,7 +152,7 @@ func (suite *AnteTestSuite) TestEthNonceVerificationDecorator() { suite.Run(tc.name, func() { tc.malleate() accountGetter := ante.NewCachedAccountGetter(suite.ctx, suite.app.AccountKeeper) - err := ante.CheckAndSetEthSenderNonce(suite.ctx.WithIsReCheckTx(tc.reCheckTx), tc.tx, suite.app.AccountKeeper, false, accountGetter) + err := ante.CheckAndSetEthSenderNonce(suite.ctx.WithIsReCheckTx(tc.reCheckTx), tc.tx, suite.app.AccountKeeper, false, accountGetter, cache.NewAnteCache(0)) if tc.expPass { suite.Require().NoError(err) @@ -546,12 +547,12 @@ func (suite *AnteTestSuite) TestEthIncrementSenderSequenceDecorator() { if tc.expPanic { suite.Require().Panics(func() { - _ = ante.CheckAndSetEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false, accountGetter) + _ = ante.CheckAndSetEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false, accountGetter, cache.NewAnteCache(0)) }) return } - err := ante.CheckAndSetEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false, accountGetter) + err := ante.CheckAndSetEthSenderNonce(suite.ctx, tc.tx, suite.app.AccountKeeper, false, accountGetter, cache.NewAnteCache(0)) if tc.expPass { suite.Require().NoError(err) diff --git a/evmd/ante/handler_options.go b/evmd/ante/handler_options.go index b6ea4c4b33..5fb2ae4a2f 100644 --- a/evmd/ante/handler_options.go +++ b/evmd/ante/handler_options.go @@ -26,6 +26,7 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ethtypes "github.com/ethereum/go-ethereum/core/types" evmante "github.com/evmos/ethermint/ante" + "github.com/evmos/ethermint/ante/cache" "github.com/evmos/ethermint/ante/cosmos" "github.com/evmos/ethermint/ante/evm" "github.com/evmos/ethermint/ante/interfaces" @@ -59,6 +60,8 @@ type HandlerOptions struct { // see #494, just for benchmark, don't turn on on production UnsafeUnorderedTx bool + + AnteCache *cache.AnteCache } func (options HandlerOptions) validate() error { @@ -77,6 +80,9 @@ func (options HandlerOptions) validate() error { if options.EvmKeeper == nil { return errorsmod.Wrap(errortypes.ErrLogic, "evm keeper is required for AnteHandler") } + if options.AnteCache == nil { + return errorsmod.Wrap(errortypes.ErrLogic, "ante cache is required for AnteHandler") + } return nil } @@ -149,7 +155,8 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { return ctx, err } - if err := evmante.CheckAndSetEthSenderNonce(ctx, tx, options.AccountKeeper, options.UnsafeUnorderedTx, accountGetter); err != nil { + if err := evmante.CheckAndSetEthSenderNonce( + ctx, tx, options.AccountKeeper, options.UnsafeUnorderedTx, accountGetter, options.AnteCache); err != nil { return ctx, err } diff --git a/evmd/ante/utils_test.go b/evmd/ante/utils_test.go index 532aef33ef..9f7b2f16bd 100644 --- a/evmd/ante/utils_test.go +++ b/evmd/ante/utils_test.go @@ -2,6 +2,7 @@ package ante_test import ( "context" + "github.com/evmos/ethermint/ante/cache" "math" "math/big" "time" @@ -145,6 +146,7 @@ func (suite *AnteTestSuite) SetupTest() { sdk.MsgTypeURL(&evmtypes.MsgEthereumTx{}), sdk.MsgTypeURL(&vestingtypes.MsgCreateVestingAccount{}), }, + AnteCache: cache.NewAnteCache(0), }) suite.Require().NoError(err) diff --git a/evmd/app.go b/evmd/app.go index 553f9b76d1..db8adbcec1 100644 --- a/evmd/app.go +++ b/evmd/app.go @@ -26,6 +26,8 @@ import ( "slices" "sort" + "github.com/evmos/ethermint/ante/cache" + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" "cosmossdk.io/client/v2/autocli" @@ -743,7 +745,7 @@ func NewEthermintApp( app.SetPreBlocker(app.PreBlocker) app.SetBeginBlocker(app.BeginBlocker) app.SetEndBlocker(app.EndBlocker) - app.setAnteHandler(txConfig, cast.ToUint64(appOpts.Get(srvflags.EVMMaxTxGasWanted))) + app.setAnteHandler(txConfig, cast.ToUint64(appOpts.Get(srvflags.EVMMaxTxGasWanted)), cast.ToInt(appOpts.Get(server.FlagMempoolMaxTxs))) // In v0.46, the SDK introduces _postHandlers_. PostHandlers are like // antehandlers, but are run _after_ the `runMsgs` execution. They are also // defined as a chain, and have the same signature as antehandlers. @@ -794,7 +796,7 @@ func NewEthermintApp( } // use Ethermint's custom AnteHandler -func (app *EthermintApp) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64) { +func (app *EthermintApp) setAnteHandler(txConfig client.TxConfig, maxGasWanted uint64, mempoolMaxTxs int) { anteHandler, err := ante.NewAnteHandler(ante.HandlerOptions{ AccountKeeper: app.AccountKeeper, BankKeeper: app.BankKeeper, @@ -814,6 +816,7 @@ func (app *EthermintApp) setAnteHandler(txConfig client.TxConfig, maxGasWanted u sdk.MsgTypeURL(&vestingtypes.MsgCreatePeriodicVestingAccount{}), }, PendingTxListener: app.onPendingTx, + AnteCache: cache.NewAnteCache(mempoolMaxTxs), }) if err != nil { panic(err) diff --git a/evmd/simulation_test.go b/evmd/simulation_test.go index 3707f5ce7d..6099f4ccba 100644 --- a/evmd/simulation_test.go +++ b/evmd/simulation_test.go @@ -4,6 +4,7 @@ package evmd_test import ( "encoding/json" "fmt" + "github.com/evmos/ethermint/ante/cache" "math/rand" "os" "runtime/debug" @@ -82,6 +83,7 @@ func NewSimApp(logger log.Logger, db dbm.DB, baseAppOptions ...func(*baseapp.Bas EvmKeeper: app.EvmKeeper, FeeMarketKeeper: app.FeeMarketKeeper, MaxTxGasWanted: 0, + AnteCache: cache.NewAnteCache(0), }) if err != nil { return nil, err From 9f0b3263ac955047a7b47047e85e03486012f8b3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Aug 2025 10:15:06 +0800 Subject: [PATCH 125/210] build(deps): bump actions/checkout from 4 to 5 (#688) Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/dependencies.yml | 2 +- .github/workflows/deploy-contract.yml | 2 +- .github/workflows/goreleaser.yml | 2 +- .github/workflows/lint.yml | 8 ++++---- .github/workflows/markdown-links.yml | 2 +- .github/workflows/proto.yml | 4 ++-- .github/workflows/security.yml | 2 +- .github/workflows/semgrep.yml | 4 ++-- .github/workflows/test.yml | 18 +++++++++--------- 11 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index da1de6e6e4..c47eb31f1c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-go@v5 with: go-version: 1.21 diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ae967f8b81..8934039f80 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -43,7 +43,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index 0c15924cc8..f4969a3659 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -13,7 +13,7 @@ jobs: go-version: 1.21 check-latest: true - name: "Checkout Repository" - uses: actions/checkout@v4 + uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | diff --git a/.github/workflows/deploy-contract.yml b/.github/workflows/deploy-contract.yml index e1c9d57b7f..71d495113b 100644 --- a/.github/workflows/deploy-contract.yml +++ b/.github/workflows/deploy-contract.yml @@ -20,7 +20,7 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Use Node.js uses: actions/setup-node@v4 with: diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 5a847d7685..4b41204f40 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest environment: release steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: submodules: true - name: Set up Go diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 354a2d05f5..05e5309766 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -23,7 +23,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -43,7 +43,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -61,7 +61,7 @@ jobs: name: Run flake8 on python integration tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 @@ -81,7 +81,7 @@ jobs: name: Check gomod2nix.toml file is up to date runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 diff --git a/.github/workflows/markdown-links.yml b/.github/workflows/markdown-links.yml index 4b0cf347a5..75a63208b5 100644 --- a/.github/workflows/markdown-links.yml +++ b/.github/workflows/markdown-links.yml @@ -17,7 +17,7 @@ jobs: markdown-link-check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: diff --git a/.github/workflows/proto.yml b/.github/workflows/proto.yml index 0e6f52309a..0682fe9dae 100644 --- a/.github/workflows/proto.yml +++ b/.github/workflows/proto.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 5 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: bufbuild/buf-setup-action@v1.50.0 - uses: bufbuild/buf-lint-action@v1 with: @@ -24,7 +24,7 @@ jobs: break-check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: bufbuild/buf-setup-action@v1.50.0 - uses: bufbuild/buf-breaking-action@v1 with: diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index 2a8d17f8d9..081b4633ec 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -19,7 +19,7 @@ jobs: GO111MODULE: on steps: - name: Checkout Source - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Get Diff uses: technote-space/get-diff-action@v6.1.2 with: diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml index 6e8e4942ce..d73c688439 100644 --- a/.github/workflows/semgrep.yml +++ b/.github/workflows/semgrep.yml @@ -25,7 +25,7 @@ jobs: steps: - name: Permission issue fix run: git config --global --add safe.directory /__w/ethermint/ethermint - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Get Diff uses: technote-space/get-diff-action@v6.1.2 with: @@ -36,7 +36,7 @@ jobs: **/*.sol go.mod go.sum - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: semgrep scan --sarif --output=semgrep.sarif --config auto env: # Upload findings to GitHub Advanced Security Dashboard [step 1/2] diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2d1015b52b..f6478d970d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,7 +26,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -53,7 +53,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: @@ -74,7 +74,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -96,7 +96,7 @@ jobs: env: TESTS_TO_RUN: ${{ matrix.tests }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 @@ -135,7 +135,7 @@ jobs: os: [macos-latest] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 @@ -156,7 +156,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -176,7 +176,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -196,7 +196,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -216,7 +216,7 @@ jobs: with: go-version: 1.21 check-latest: true - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | From 0b453282992d54d32aea43f6dd54bdb55004c38b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Aug 2025 14:57:17 +0800 Subject: [PATCH 126/210] build(deps): bump golang.org/x/net from 0.42.0 to 0.43.0 (#686) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.42.0 to 0.43.0. - [Commits](https://github.com/golang/net/compare/v0.42.0...v0.43.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-version: 0.43.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> --- go.mod | 12 ++++++------ go.sum | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index 0374b450af..bdd33aceb2 100644 --- a/go.mod +++ b/go.mod @@ -49,9 +49,9 @@ require ( github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 github.com/tyler-smith/go-bip39 v1.1.0 - golang.org/x/net v0.42.0 + golang.org/x/net v0.43.0 golang.org/x/sync v0.16.0 - golang.org/x/text v0.27.0 + golang.org/x/text v0.28.0 google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a google.golang.org/grpc v1.74.2 google.golang.org/protobuf v1.36.6 @@ -259,13 +259,13 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/arch v0.15.0 // indirect - golang.org/x/crypto v0.40.0 // indirect + golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/term v0.33.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/term v0.34.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.34.0 // indirect + golang.org/x/tools v0.35.0 // indirect google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect diff --git a/go.sum b/go.sum index 1cc261c15b..5f9638aa6a 100644 --- a/go.sum +++ b/go.sum @@ -1807,8 +1807,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1949,8 +1949,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2118,8 +2118,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -2136,8 +2136,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= -golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= -golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2159,8 +2159,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2243,8 +2243,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= -golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 3b317c4773b4fd5fc5c9ec09f329fbbbdc700bce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Aug 2025 07:07:32 +0000 Subject: [PATCH 127/210] build(deps): bump golang.org/x/text from 0.27.0 to 0.28.0 (#685) Bumps [golang.org/x/text](https://github.com/golang/text) from 0.27.0 to 0.28.0. - [Release notes](https://github.com/golang/text/releases) - [Commits](https://github.com/golang/text/compare/v0.27.0...v0.28.0) --- updated-dependencies: - dependency-name: golang.org/x/text dependency-version: 0.28.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> From ba198e3b09ba83dadfc309c1e5358853c519e7dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:29:36 +0800 Subject: [PATCH 128/210] build(deps): bump google.golang.org/protobuf from 1.36.6 to 1.36.7 (#684) Bumps google.golang.org/protobuf from 1.36.6 to 1.36.7. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-version: 1.36.7 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> Co-authored-by: randy-cro --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index bdd33aceb2..a07044c102 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,7 @@ require ( golang.org/x/text v0.28.0 google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a google.golang.org/grpc v1.74.2 - google.golang.org/protobuf v1.36.6 + google.golang.org/protobuf v1.36.7 sigs.k8s.io/yaml v1.6.0 ) diff --git a/go.sum b/go.sum index 5f9638aa6a..28f71d62bf 100644 --- a/go.sum +++ b/go.sum @@ -2540,8 +2540,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= -google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= +google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 3a866ebe80f8d67ab2fa5523a0d1765a1d1a6181 Mon Sep 17 00:00:00 2001 From: Xinyu <91446598+XinyuCRO@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:18:57 +0800 Subject: [PATCH 129/210] feat: add store migration for v7 (#689) * feat: update chain config * doc: update changelog --- CHANGELOG.md | 1 + x/evm/keeper/migrations.go | 6 +++ x/evm/migrations/v7/migrate.go | 32 +++++++++++++ x/evm/migrations/v7/migrate_test.go | 73 +++++++++++++++++++++++++++++ x/evm/module.go | 7 ++- x/evm/types/chain_config.go | 1 + 6 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 x/evm/migrations/v7/migrate.go create mode 100644 x/evm/migrations/v7/migrate_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index aa5508ad1c..80a9990dd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased * (geth) [#665](https://github.com/crypto-org-chain/ethermint/pull/665) Update go-ethereum version to [`v1.15.11`](https://github.com/ethereum/go-ethereum/releases/tag/v1.15.11). +* (evm) [#689](https://github.com/crypto-org-chain/ethermint/pull/689) Enable CancunTime and PragueTime in chain config migration. ### Features diff --git a/x/evm/keeper/migrations.go b/x/evm/keeper/migrations.go index 3cebbc1465..caa891d6b4 100644 --- a/x/evm/keeper/migrations.go +++ b/x/evm/keeper/migrations.go @@ -20,6 +20,7 @@ import ( v4 "github.com/evmos/ethermint/x/evm/migrations/v4" v5 "github.com/evmos/ethermint/x/evm/migrations/v5" v6 "github.com/evmos/ethermint/x/evm/migrations/v6" + v7 "github.com/evmos/ethermint/x/evm/migrations/v7" "github.com/evmos/ethermint/x/evm/types" ) @@ -51,3 +52,8 @@ func (m Migrator) Migrate4to5(ctx sdk.Context) error { func (m Migrator) Migrate5to6(ctx sdk.Context) error { return v6.MigrateStore(ctx, m.keeper.storeKey, m.keeper.cdc) } + +// Migrate6to7 migrates the store from consensus version 6 to 7 +func (m Migrator) Migrate6to7(ctx sdk.Context) error { + return v7.MigrateStore(ctx, m.keeper.storeKey, m.keeper.cdc) +} diff --git a/x/evm/migrations/v7/migrate.go b/x/evm/migrations/v7/migrate.go new file mode 100644 index 0000000000..8aa8c5af33 --- /dev/null +++ b/x/evm/migrations/v7/migrate.go @@ -0,0 +1,32 @@ +package v7 + +import ( + sdkmath "cosmossdk.io/math" + storetypes "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/evmos/ethermint/x/evm/types" +) + +// MigrateStore migrates the x/evm module state from the consensus version 6 to +// version 7. Specifically, it adds CancunTime and PragueTime to the existing +// ChainConfig while preserving the ShanghaiTime from v6 migration. +func MigrateStore( + ctx sdk.Context, + storeKey storetypes.StoreKey, + cdc codec.BinaryCodec, +) error { + var params types.Params + store := ctx.KVStore(storeKey) + bz := store.Get(types.KeyPrefixParams) + cdc.MustUnmarshal(bz, ¶ms) + zeroInt := sdkmath.ZeroInt() + params.ChainConfig.CancunTime = &zeroInt + params.ChainConfig.PragueTime = &zeroInt + if err := params.Validate(); err != nil { + return err + } + bz = cdc.MustMarshal(¶ms) + store.Set(types.KeyPrefixParams, bz) + return nil +} diff --git a/x/evm/migrations/v7/migrate_test.go b/x/evm/migrations/v7/migrate_test.go new file mode 100644 index 0000000000..76c27787a2 --- /dev/null +++ b/x/evm/migrations/v7/migrate_test.go @@ -0,0 +1,73 @@ +package v7_test + +import ( + "testing" + + sdkmath "cosmossdk.io/math" + storetypes "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/testutil" + "github.com/evmos/ethermint/encoding" + v7 "github.com/evmos/ethermint/x/evm/migrations/v7" + "github.com/evmos/ethermint/x/evm/types" + "github.com/stretchr/testify/require" +) + +func TestMigrateStore(t *testing.T) { + encCfg := encoding.MakeConfig() + cdc := encCfg.Codec + + storeKey := storetypes.NewKVStoreKey(types.ModuleName) + tKey := storetypes.NewTransientStoreKey("transient_test") + ctx := testutil.DefaultContext(storeKey, tKey) + kvStore := ctx.KVStore(storeKey) + + shanghaiTime := sdkmath.ZeroInt() + v6Params := types.DefaultParams() + v6Params.ChainConfig.ShanghaiTime = &shanghaiTime + v6Params.ChainConfig.CancunTime = nil + v6Params.ChainConfig.PragueTime = nil + + v6ParamsBz := cdc.MustMarshal(&v6Params) + kvStore.Set(types.KeyPrefixParams, v6ParamsBz) + + require.NoError(t, v7.MigrateStore(ctx, storeKey, cdc)) + + migratedParamsBz := kvStore.Get(types.KeyPrefixParams) + require.NotNil(t, migratedParamsBz) + + var migratedParams types.Params + cdc.MustUnmarshal(migratedParamsBz, &migratedParams) + + require.NotNil(t, migratedParams.ChainConfig.ShanghaiTime) + require.Equal(t, shanghaiTime, *migratedParams.ChainConfig.ShanghaiTime) + + require.NotNil(t, migratedParams.ChainConfig.CancunTime) + require.Equal(t, sdkmath.ZeroInt(), *migratedParams.ChainConfig.CancunTime) + + require.NotNil(t, migratedParams.ChainConfig.PragueTime) + require.Equal(t, sdkmath.ZeroInt(), *migratedParams.ChainConfig.PragueTime) + + require.Equal(t, v6Params.EvmDenom, migratedParams.EvmDenom) + require.Equal(t, v6Params.EnableCreate, migratedParams.EnableCreate) + require.Equal(t, v6Params.EnableCall, migratedParams.EnableCall) + require.Equal(t, v6Params.AllowUnprotectedTxs, migratedParams.AllowUnprotectedTxs) + require.Equal(t, v6Params.ExtraEIPs, migratedParams.ExtraEIPs) + + require.Equal(t, v6Params.ChainConfig.HomesteadBlock, migratedParams.ChainConfig.HomesteadBlock) + require.Equal(t, v6Params.ChainConfig.BerlinBlock, migratedParams.ChainConfig.BerlinBlock) + require.Equal(t, v6Params.ChainConfig.LondonBlock, migratedParams.ChainConfig.LondonBlock) + + require.NoError(t, migratedParams.Validate()) +} + +func TestMigrateStoreEmptyStore(t *testing.T) { + encCfg := encoding.MakeConfig() + cdc := encCfg.Codec + + storeKey := storetypes.NewKVStoreKey(types.ModuleName) + tKey := storetypes.NewTransientStoreKey("transient_test") + ctx := testutil.DefaultContext(storeKey, tKey) + + err := v7.MigrateStore(ctx, storeKey, cdc) + require.Error(t, err) +} \ No newline at end of file diff --git a/x/evm/module.go b/x/evm/module.go index d9fb76f98f..5946589666 100644 --- a/x/evm/module.go +++ b/x/evm/module.go @@ -63,7 +63,7 @@ func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { // ConsensusVersion returns the consensus state-breaking version for the module. func (AppModuleBasic) ConsensusVersion() uint64 { - return 6 + return 7 } // DefaultGenesis returns default genesis state as raw bytes for the evm @@ -154,9 +154,14 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { if err := cfg.RegisterMigration(types.ModuleName, 4, m.Migrate4to5); err != nil { panic(err) } + if err := cfg.RegisterMigration(types.ModuleName, 5, m.Migrate5to6); err != nil { panic(err) } + + if err := cfg.RegisterMigration(types.ModuleName, 6, m.Migrate6to7); err != nil { + panic(err) + } } // BeginBlock returns the begin block for the evm module. diff --git a/x/evm/types/chain_config.go b/x/evm/types/chain_config.go index 8d55bcfe5b..f092760206 100644 --- a/x/evm/types/chain_config.go +++ b/x/evm/types/chain_config.go @@ -52,6 +52,7 @@ func (cc ChainConfig) EthereumConfig(chainID *big.Int) *params.ChainConfig { ShanghaiTime: getTimeValue(cc.ShanghaiTime), CancunTime: getTimeValue(cc.CancunTime), PragueTime: getTimeValue(cc.PragueTime), + BlobScheduleConfig: params.DefaultBlobSchedule, } return cfg } From b94064f5893890335d4339e2b2d5888a51b278fe Mon Sep 17 00:00:00 2001 From: randy-cro Date: Fri, 15 Aug 2025 16:06:42 +0800 Subject: [PATCH 130/210] chore: remove active precompiles from vm context (#691) --- CHANGELOG.md | 1 + flake.nix | 3 +-- go.mod | 2 +- go.sum | 4 ++-- gomod2nix.toml | 32 +++++++++++++-------------- x/evm/keeper/keeper.go | 4 ++-- x/evm/keeper/state_transition.go | 6 ++--- x/evm/keeper/state_transition_test.go | 3 +-- x/evm/types/tracer.go | 4 ++-- 9 files changed, 29 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80a9990dd1..1c5c597670 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (geth) [#665](https://github.com/crypto-org-chain/ethermint/pull/665) Update go-ethereum version to [`v1.15.11`](https://github.com/ethereum/go-ethereum/releases/tag/v1.15.11). * (evm) [#689](https://github.com/crypto-org-chain/ethermint/pull/689) Enable CancunTime and PragueTime in chain config migration. +* (evm) [#691](https://github.com/crypto-org-chain/ethermint/pull/691) Remove active precompiles from VMContext ### Features diff --git a/flake.nix b/flake.nix index ba2a389f07..e4d1e22569 100644 --- a/flake.nix +++ b/flake.nix @@ -30,8 +30,7 @@ overlays = [ gomod2nix.overlays.default poetry2nix.overlays.default - self.overlay - ]; + ] ++ self.overlays.default; config = { }; }; in diff --git a/go.mod b/go.mod index a07044c102..27ff1bb5b7 100644 --- a/go.mod +++ b/go.mod @@ -289,7 +289,7 @@ replace ( // v0.38.x github.com/cometbft/cometbft => github.com/crypto-org-chain/cometbft v0.0.0-20241106091515-ce418f845d9a // release/v1.15 - github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250812022812-0af6c9899f11 + github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250815065500-a4fbafcae0dd // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0 diff --git a/go.sum b/go.sum index 28f71d62bf..05d0bbe56f 100644 --- a/go.sum +++ b/go.sum @@ -902,8 +902,8 @@ github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254 h github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 h1:6KPEi8dWkDSBddQb4NAvEXmNnTXymF3yVeTaT4Hz1iU= github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= -github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250812022812-0af6c9899f11 h1:PxE460wd3qG+nkuy+W90gZO06PumOPaPbXeKOAMxBp8= -github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250812022812-0af6c9899f11/go.mod h1:mf8YiHIb0GR4x4TipcvBUPxJLw1mFdmxzoDi11sDRoI= +github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250815065500-a4fbafcae0dd h1:ebSnzvM9yKVGFjvoGly7LFQQCS2HuOWMCvQyByJ52Gs= +github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250815065500-a4fbafcae0dd/go.mod h1:mf8YiHIb0GR4x4TipcvBUPxJLw1mFdmxzoDi11sDRoI= github.com/danieljoos/wincred v1.2.1 h1:dl9cBrupW8+r5250DYkYxocLeZ1Y4vB1kxgtjxw8GQs= github.com/danieljoos/wincred v1.2.1/go.mod h1:uGaFL9fDn3OLTvzCGulzE+SzjEe5NGlh5FdCcyfPwps= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/gomod2nix.toml b/gomod2nix.toml index 56282de30c..a72740ed07 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -301,8 +301,8 @@ schema = 3 version = "v2.1.0" hash = "sha256-ZHAbUWu8EfYyFMjFPKfiqFRMnG7VrPNkGFCpYzs2Euo=" [mod."github.com/ethereum/go-ethereum"] - version = "v1.10.20-0.20250812022812-0af6c9899f11" - hash = "sha256-lhWHBFR62qcItksCkDNl+Io0OOvkKS8t91Zm1fU6CMg=" + version = "v1.10.20-0.20250815065500-a4fbafcae0dd" + hash = "sha256-0CCzoKMaH3jywAUtzkVdq9WDWLjUbulbOphpL14r8tI=" replaced = "github.com/crypto-org-chain/go-ethereum" [mod."github.com/ethereum/go-verkle"] version = "v0.2.2" @@ -748,14 +748,14 @@ schema = 3 version = "v0.15.0" hash = "sha256-EsCsTDmn+j3S8yzV4n2WJyDuYBDwIlj29M9OBxWNMGQ=" [mod."golang.org/x/crypto"] - version = "v0.40.0" - hash = "sha256-I6p2fqvz63P9MwAuoQrljI7IUbfZQvCem0ii4Q2zZng=" + version = "v0.41.0" + hash = "sha256-o5Di0lsFmYnXl7a5MBTqmN9vXMCRpE9ay71C1Ar8jEY=" [mod."golang.org/x/exp"] version = "v0.0.0-20250305212735-054e65f0b394" hash = "sha256-Vgt/CNx/xJYxiKKu0PI7ZSiL/SOfXI4di3Mcyge3aw4=" [mod."golang.org/x/net"] - version = "v0.42.0" - hash = "sha256-YxileisIIez+kcAI+21kY5yk0iRuEqti2YdmS8jvP2s=" + version = "v0.43.0" + hash = "sha256-bf3iQFrsC8BoarVaS0uSspEFAcr1zHp1uziTtBpwV34=" [mod."golang.org/x/oauth2"] version = "v0.30.0" hash = "sha256-btD7BUtQpOswusZY5qIU90uDo38buVrQ0tmmQ8qNHDg=" @@ -763,20 +763,20 @@ schema = 3 version = "v0.16.0" hash = "sha256-sqKDRESeMzLe0jWGWltLZL/JIgrn0XaIeBWCzVN3Bks=" [mod."golang.org/x/sys"] - version = "v0.34.0" - hash = "sha256-5rZ7p8IaGli5X1sJbfIKOcOEwY4c0yQhinJPh2EtK50=" + version = "v0.35.0" + hash = "sha256-ZKM8pesQE6NAFZeKQ84oPn5JMhGr8g4TSwLYAsHMGSI=" [mod."golang.org/x/term"] - version = "v0.33.0" - hash = "sha256-BtYV1YkrvMTV7k3SVac1+0iv5vDUKHgBSJkeEFPmiH8=" + version = "v0.34.0" + hash = "sha256-faLolF6EUSSaC0ZwRiKH5JF/TmtcMQ+m+RWWl6Pk1PU=" [mod."golang.org/x/text"] - version = "v0.27.0" - hash = "sha256-VX0rOh6L3qIvquKSGjfZQFU8URNtGvkNvxE7OZtboW8=" + version = "v0.28.0" + hash = "sha256-8UlJniGK+km4Hmrw6XMxELnExgrih7+z8tU26Cntmto=" [mod."golang.org/x/time"] version = "v0.10.0" hash = "sha256-vnlAME3gDR6R4cbCmSYAlR1Rjc0yUpkufTOPNvCdf6Q=" [mod."golang.org/x/tools"] - version = "v0.34.0" - hash = "sha256-UwxjYayFcN8il6e9s3UscRkPnZy9wE6NKGE0jS2mhG8=" + version = "v0.35.0" + hash = "sha256-5aTV8oS9e0frUNUE2Pw+yTnPLghmZHryDa01COSyrCM=" [mod."google.golang.org/api"] version = "v0.222.0" hash = "sha256-n1qxH8dqwl7Drry1H9bpQx7EeysceA98UrgEDxd1XEM=" @@ -793,8 +793,8 @@ schema = 3 version = "v1.74.2" hash = "sha256-tvYMdfu/ZQZRPZNmnQI4CZpg46CM8+mD49hw0gFheGs=" [mod."google.golang.org/protobuf"] - version = "v1.36.6" - hash = "sha256-lT5qnefI5FDJnowz9PEkAGylH3+fE+A3DJDkAyy9RMc=" + version = "v1.36.7" + hash = "sha256-6xCU+t2AVPcscMKenVs4etGqutYGPDXCQ3DCD3PpTq4=" [mod."gopkg.in/yaml.v3"] version = "v3.0.1" hash = "sha256-FqL9TKYJ0XkNwJFnq9j0VvJ5ZUU1RvH/52h/f5bkYAU=" diff --git a/x/evm/keeper/keeper.go b/x/evm/keeper/keeper.go index 2c89eaf6a2..fd223435e0 100644 --- a/x/evm/keeper/keeper.go +++ b/x/evm/keeper/keeper.go @@ -214,8 +214,8 @@ func (k *Keeper) PostTxProcessing(ctx sdk.Context, msg *core.Message, receipt *e } // Tracer return a default vm.Tracer based on current keeper state -func (k Keeper) Tracer(msg *core.Message, rules params.Rules) *tracing.Hooks { - return types.NewTracer(k.tracer, msg, rules) +func (k Keeper) Tracer(ctx sdk.Context, msg core.Message, ethCfg *params.ChainConfig) *tracing.Hooks { + return types.NewTracer(k.tracer, msg, ethCfg, ctx.BlockHeight(), uint64(ctx.BlockTime().Unix())) //#nosec G115 -- int overflow is not a concern here } // GetAccount load nonce and codehash without balance, diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index 278dc24824..61545f0196 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -69,7 +69,7 @@ func (k *Keeper) NewEVM( cfg.BlockOverrides.Apply(&blockCtx) } if cfg.Tracer == nil { - cfg.Tracer = k.Tracer(msg, cfg.Rules) + cfg.Tracer = k.Tracer(ctx, *msg, cfg.ChainConfig) } vmConfig := k.VMConfig(ctx, cfg) contracts := make(map[common.Address]vm.PrecompiledContract) @@ -88,7 +88,7 @@ func (k *Keeper) NewEVM( return bytes.Compare(active[i].Bytes(), active[j].Bytes()) < 0 }) evm := vm.NewEVM(blockCtx, stateDB, cfg.ChainConfig, vmConfig) - evm.WithPrecompiles(contracts, active) + evm.SetPrecompiles(contracts) return evm } @@ -415,7 +415,7 @@ func (k *Keeper) ApplyMessageWithConfig( // Execute the preparatory steps for state transition which includes: // - prepare accessList(post-berlin) // - reset transient storage(eip 1153) - stateDB.Prepare(rules, msg.From, cfg.CoinBase, msg.To, vm.DefaultActivePrecompiles(rules), msg.AccessList) + stateDB.Prepare(rules, msg.From, cfg.CoinBase, msg.To, vm.ActivePrecompiles(rules), msg.AccessList) if contractCreation { // take over the nonce management from evm: diff --git a/x/evm/keeper/state_transition_test.go b/x/evm/keeper/state_transition_test.go index c9e591b38e..2a525158b7 100644 --- a/x/evm/keeper/state_transition_test.go +++ b/x/evm/keeper/state_transition_test.go @@ -636,9 +636,7 @@ func (suite *StateTransitionTestSuite) TestApplyMessage() { keeperParams := suite.App.EvmKeeper.GetParams(suite.Ctx) chainCfg := keeperParams.ChainConfig.EthereumConfig(suite.App.EvmKeeper.ChainID()) - rules := chainCfg.Rules(big.NewInt(suite.Ctx.BlockHeight()), chainCfg.MergeNetsplitBlock != nil, uint64(suite.Ctx.BlockHeader().Time.Unix())) signer := ethtypes.LatestSignerForChainID(suite.App.EvmKeeper.ChainID()) - tracer := suite.App.EvmKeeper.Tracer(msg, rules) vmdb := suite.StateDB() msg, err = newNativeMessage( @@ -654,6 +652,7 @@ func (suite *StateTransitionTestSuite) TestApplyMessage() { ) suite.Require().NoError(err) + tracer := suite.App.EvmKeeper.Tracer(suite.Ctx, *msg, chainCfg) res, err := suite.App.EvmKeeper.ApplyMessage(suite.Ctx, msg, tracer, true) suite.Require().NoError(err) diff --git a/x/evm/types/tracer.go b/x/evm/types/tracer.go index c484eb3d1b..da777130b4 100644 --- a/x/evm/types/tracer.go +++ b/x/evm/types/tracer.go @@ -38,7 +38,7 @@ const ( // NewTracer creates a new Logger tracer to collect execution traces from an // EVM transaction. -func NewTracer(tracer string, msg *core.Message, rules params.Rules) *tracing.Hooks { +func NewTracer(tracer string, msg core.Message, cfg *params.ChainConfig, height int64, timestamp uint64) *tracing.Hooks { // TODO: enable additional log configuration logCfg := &logger.Config{} @@ -47,7 +47,7 @@ func NewTracer(tracer string, msg *core.Message, rules params.Rules) *tracing.Ho blockAddrs := map[common.Address]struct{}{ *msg.To: {}, msg.From: {}, } - precompiles := vm.DefaultActivePrecompiles(rules) + precompiles := vm.ActivePrecompiles(cfg.Rules(big.NewInt(height), cfg.MergeNetsplitBlock != nil, timestamp)) for _, addr := range precompiles { blockAddrs[addr] = struct{}{} } From ebb76192da7fe24f87ad9532ac981804436091d2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Aug 2025 09:41:22 +0900 Subject: [PATCH 131/210] build(deps): bump cosmossdk.io/log from 1.5.1 to 1.6.1 (#693) Bumps [cosmossdk.io/log](https://github.com/cosmos/cosmos-sdk) from 1.5.1 to 1.6.1. - [Release notes](https://github.com/cosmos/cosmos-sdk/releases) - [Changelog](https://github.com/cosmos/cosmos-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/cosmos-sdk/compare/log/v1.5.1...log/v1.6.1) --- updated-dependencies: - dependency-name: cosmossdk.io/log dependency-version: 1.6.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 27ff1bb5b7..537a4fdbe9 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( cosmossdk.io/collections v1.2.0 cosmossdk.io/core v0.11.3 cosmossdk.io/errors v1.0.2 - cosmossdk.io/log v1.5.1 + cosmossdk.io/log v1.6.1 cosmossdk.io/math v1.5.3 cosmossdk.io/store v1.1.2 cosmossdk.io/tools/confix v0.1.2 @@ -90,8 +90,8 @@ require ( github.com/bits-and-blooms/bitset v1.20.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect - github.com/bytedance/sonic v1.13.2 // indirect - github.com/bytedance/sonic/loader v0.2.4 // indirect + github.com/bytedance/sonic v1.14.0 // indirect + github.com/bytedance/sonic/loader v0.3.0 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect @@ -258,7 +258,7 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/arch v0.15.0 // indirect + golang.org/x/arch v0.17.0 // indirect golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect golang.org/x/oauth2 v0.30.0 // indirect diff --git a/go.sum b/go.sum index 05d0bbe56f..b7cbdb8835 100644 --- a/go.sum +++ b/go.sum @@ -626,8 +626,8 @@ cosmossdk.io/depinject v1.2.0 h1:6NW/FSK1IkWTrX7XxUpBmX1QMBozpEI9SsWkKTBc5zw= cosmossdk.io/depinject v1.2.0/go.mod h1:pvitjtUxZZZTQESKNS9KhGjWVslJZxtO9VooRJYyPjk= cosmossdk.io/errors v1.0.2 h1:wcYiJz08HThbWxd/L4jObeLaLySopyyuUFB5w4AGpCo= cosmossdk.io/errors v1.0.2/go.mod h1:0rjgiHkftRYPj//3DrD6y8hcm40HcPv/dR4R/4efr0k= -cosmossdk.io/log v1.5.1 h1:wLwiYXmfrort/O+j6EkjF+HvbdrRQd+4cYCPKFSm+zM= -cosmossdk.io/log v1.5.1/go.mod h1:5cXXBvfBkR2/BcXmosdCSLXllvgSjphrrDVdfVRmBGM= +cosmossdk.io/log v1.6.1 h1:YXNwAgbDwMEKwDlCdH8vPcoggma48MgZrTQXCfmMBeI= +cosmossdk.io/log v1.6.1/go.mod h1:gMwsWyyDBjpdG9u2avCFdysXqxq28WJapJvu+vF1y+E= cosmossdk.io/math v1.5.3 h1:WH6tu6Z3AUCeHbeOSHg2mt9rnoiUWVWaQ2t6Gkll96U= cosmossdk.io/math v1.5.3/go.mod h1:uqcZv7vexnhMFJF+6zh9EWdm/+Ylyln34IvPnBauPCQ= cosmossdk.io/schema v1.1.0 h1:mmpuz3dzouCoyjjcMcA/xHBEmMChN+EHh8EHxHRHhzE= @@ -760,11 +760,11 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtE github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= -github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ= -github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= +github.com/bytedance/sonic v1.14.0 h1:/OfKt8HFw0kh2rj8N0F6C/qPGRESq0BbaNZgcNXXzQQ= +github.com/bytedance/sonic v1.14.0/go.mod h1:WoEbx8WTcFJfzCe0hbmyTGrfjt8PzNEBdxlNUO24NhA= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= -github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= -github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= +github.com/bytedance/sonic/loader v0.3.0 h1:dskwH8edlzNMctoruo8FPTJDF3vLtDT0sXZwvZJyqeA= +github.com/bytedance/sonic/loader v0.3.0/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -1785,8 +1785,8 @@ go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= -golang.org/x/arch v0.15.0 h1:QtOrQd0bTUnhNVNndMpLHNWrDmYzZ2KDqSrEymqInZw= -golang.org/x/arch v0.15.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE= +golang.org/x/arch v0.17.0 h1:4O3dfLzd+lQewptAHqjewQZQDyEdejz3VwgeYwkZneU= +golang.org/x/arch v0.17.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= From acd760ee34be65a61312fb9d4770d677bbc72846 Mon Sep 17 00:00:00 2001 From: randy-cro Date: Mon, 18 Aug 2025 15:36:52 +0800 Subject: [PATCH 132/210] chore: add AppWithPendingTxListener interface (#692) --- CHANGELOG.md | 1 + cmd/ethermintd/root.go | 16 +++++---- evmd/app.go | 5 +-- server/json_rpc.go | 4 +-- server/start.go | 17 +++++++-- server/start_test.go | 44 +++++++++++++++++++++++ testutil/network/util.go | 2 +- x/evm/keeper/statedb_test.go | 2 -- x/evm/migrations/v4/types/params_v4.pb.go | 2 +- x/evm/migrations/v7/migrate_test.go | 2 +- 10 files changed, 77 insertions(+), 18 deletions(-) create mode 100644 server/start_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c5c597670..8986d9c76f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (geth) [#665](https://github.com/crypto-org-chain/ethermint/pull/665) Update go-ethereum version to [`v1.15.11`](https://github.com/ethereum/go-ethereum/releases/tag/v1.15.11). * (evm) [#689](https://github.com/crypto-org-chain/ethermint/pull/689) Enable CancunTime and PragueTime in chain config migration. * (evm) [#691](https://github.com/crypto-org-chain/ethermint/pull/691) Remove active precompiles from VMContext +* (app) [#692](https://github.com/crypto-org-chain/ethermint/pull/692) Enforce app creator returning application implement AppWithPendingTxStream in build time. ### Features diff --git a/cmd/ethermintd/root.go b/cmd/ethermintd/root.go index a94b256e9b..164dbda224 100644 --- a/cmd/ethermintd/root.go +++ b/cmd/ethermintd/root.go @@ -23,7 +23,7 @@ import ( "github.com/spf13/cobra" - cmtlog "cosmossdk.io/log" + "cosmossdk.io/log" confixcmd "cosmossdk.io/tools/confix/cmd" cmtcfg "github.com/cometbft/cometbft/config" cmtcli "github.com/cometbft/cometbft/libs/cli" @@ -71,7 +71,7 @@ const ( // main function. func NewRootCmd() (*cobra.Command, ethermint.EncodingConfig) { tempApp := evmd.NewEthermintApp( - cmtlog.NewNopLogger(), dbm.NewMemDB(), nil, true, + log.NewNopLogger(), dbm.NewMemDB(), nil, true, simtestutil.NewAppOptionsWithFlagHome(evmd.DefaultNodeHome), ) encodingConfig := tempApp.EncodingConfig() @@ -165,6 +165,10 @@ func initRootCmd( cfg := sdk.GetConfig() cfg.Seal() + sdkAppCreator := func(l log.Logger, d dbm.DB, w io.Writer, ao servertypes.AppOptions) servertypes.Application { + return newApp(l, d, w, ao) + } + rootCmd.AddCommand( ethermintclient.ValidateChainID( genutilcli.InitCmd(basicManager, evmd.DefaultNodeHome), @@ -173,8 +177,8 @@ func initRootCmd( ethermintclient.NewTestnetCmd(basicManager, banktypes.GenesisBalancesIterator{}), debug.Cmd(), confixcmd.ConfigCommand(), - pruning.Cmd(newApp, evmd.DefaultNodeHome), - snapshot.Cmd(newApp), + pruning.Cmd(sdkAppCreator, evmd.DefaultNodeHome), + snapshot.Cmd(sdkAppCreator), // this line is used by starport scaffolding # stargate/root/commands ) @@ -260,7 +264,7 @@ func txCommand() *cobra.Command { } // newApp creates the application -func newApp(logger cmtlog.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application { +func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) server.AppWithPendingTxListener { baseappOptions := sdkserver.DefaultBaseappOptions(appOpts) ethermintApp := evmd.NewEthermintApp( logger, db, traceStore, true, @@ -273,7 +277,7 @@ func newApp(logger cmtlog.Logger, db dbm.DB, traceStore io.Writer, appOpts serve // appExport creates a new app (optionally at a given height) // and exports state. func appExport( - logger cmtlog.Logger, + logger log.Logger, db dbm.DB, traceStore io.Writer, height int64, diff --git a/evmd/app.go b/evmd/app.go index db8adbcec1..e1b9e26a88 100644 --- a/evmd/app.go +++ b/evmd/app.go @@ -57,6 +57,7 @@ import ( "github.com/cosmos/cosmos-sdk/server/api" "github.com/cosmos/cosmos-sdk/server/config" servertypes "github.com/cosmos/cosmos-sdk/server/types" + evmserver "github.com/evmos/ethermint/server" storetypes "cosmossdk.io/store/types" "cosmossdk.io/x/evidence" @@ -186,8 +187,8 @@ var ( ) var ( - _ runtime.AppI = (*EthermintApp)(nil) - _ servertypes.Application = (*EthermintApp)(nil) + _ runtime.AppI = (*EthermintApp)(nil) + _ evmserver.AppWithPendingTxListener = (*EthermintApp)(nil) ) type GenesisState map[string]json.RawMessage diff --git a/server/json_rpc.go b/server/json_rpc.go index 7b05a81422..319c0415b4 100644 --- a/server/json_rpc.go +++ b/server/json_rpc.go @@ -40,7 +40,7 @@ import ( const ServerStartTime = 5 * time.Second -type AppWithPendingTxStream interface { +type PendingTxListener interface { RegisterPendingTxListener(listener ante.PendingTxListener) } @@ -52,7 +52,7 @@ func StartJSONRPC( g *errgroup.Group, config *config.Config, indexer ethermint.EVMTxIndexer, - app AppWithPendingTxStream, + app PendingTxListener, ) (*http.Server, error) { logger := srvCtx.Logger.With("module", "geth") // Set Geth's global logger to use this handler diff --git a/server/start.go b/server/start.go index 87a36c4193..84fd5b3218 100644 --- a/server/start.go +++ b/server/start.go @@ -50,6 +50,7 @@ import ( ethmetricsexp "github.com/ethereum/go-ethereum/metrics/exp" errorsmod "cosmossdk.io/errors" + "cosmossdk.io/log" pruningtypes "cosmossdk.io/store/pruning/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" @@ -74,6 +75,14 @@ const FlagAsyncCheckTx = "async-check-tx" // DBOpener is a function to open `application.db`, potentially with customized options. type DBOpener func(opts types.AppOptions, rootDir string, backend dbm.BackendType) (dbm.DB, error) +type AppWithPendingTxListener interface { + types.Application + PendingTxListener +} + +// AppCreator is a function that allows us to lazily initialize an application implementing with AppWithPendingTxStream. +type AppCreator func(log.Logger, dbm.DB, io.Writer, types.AppOptions) AppWithPendingTxListener + // StartOptions defines options that can be customized in `StartCmd` type StartOptions struct { AppCreator types.AppCreator @@ -82,9 +91,11 @@ type StartOptions struct { } // NewDefaultStartOptions use the default db opener provided in tm-db. -func NewDefaultStartOptions(appCreator types.AppCreator, defaultNodeHome string) StartOptions { +func NewDefaultStartOptions(appCreator AppCreator, defaultNodeHome string) StartOptions { return StartOptions{ - AppCreator: appCreator, + AppCreator: func(l log.Logger, d dbm.DB, w io.Writer, ao types.AppOptions) types.Application { + return appCreator(l, d, w, ao) + }, DefaultNodeHome: defaultNodeHome, DBOpener: openDB, } @@ -646,7 +657,7 @@ func startJSONRPCServer( return } - txApp, ok := app.(AppWithPendingTxStream) + txApp, ok := app.(PendingTxListener) if !ok { return ctx, fmt.Errorf("json-rpc server requires AppWithPendingTxStream") } diff --git a/server/start_test.go b/server/start_test.go new file mode 100644 index 0000000000..240fc119f9 --- /dev/null +++ b/server/start_test.go @@ -0,0 +1,44 @@ +package server + +import ( + "io" + "testing" + + "cosmossdk.io/log" + dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/server/types" + "github.com/evmos/ethermint/evmd/ante" + "github.com/stretchr/testify/require" +) + +type mockApplication struct { + types.Application + pendingTxListeners []ante.PendingTxListener +} + +func (m *mockApplication) RegisterPendingTxListener(listener ante.PendingTxListener) { + m.pendingTxListeners = append(m.pendingTxListeners, listener) +} + +func mockAppCreator(logger log.Logger, db dbm.DB, writer io.Writer, opts types.AppOptions) AppWithPendingTxListener { + return &mockApplication{} +} + +func TestNewDefaultStartOptions(t *testing.T) { + defaultHome := "/tmp/test" + + opts := NewDefaultStartOptions(mockAppCreator, defaultHome) + + require.NotNil(t, opts.AppCreator) + require.Equal(t, defaultHome, opts.DefaultNodeHome) + require.NotNil(t, opts.DBOpener) + + logger := log.NewNopLogger() + db := dbm.NewMemDB() + var writer io.Writer + var appOpts types.AppOptions + + app := opts.AppCreator(logger, db, writer, appOpts) + require.NotNil(t, app) + +} diff --git a/testutil/network/util.go b/testutil/network/util.go index 9b8721fe19..af0e63bc90 100644 --- a/testutil/network/util.go +++ b/testutil/network/util.go @@ -145,7 +145,7 @@ func startInProcess(cfg Config, val *Validator) error { val.jsonrpc, err = server.StartJSONRPC( ctx, val.Ctx, val.ClientCtx, val.errGroup, val.AppConfig, - nil, app.(server.AppWithPendingTxStream), + nil, app.(server.PendingTxListener), ) if err != nil { return err diff --git a/x/evm/keeper/statedb_test.go b/x/evm/keeper/statedb_test.go index 71b5adf5e3..bb9b856076 100644 --- a/x/evm/keeper/statedb_test.go +++ b/x/evm/keeper/statedb_test.go @@ -963,7 +963,6 @@ func (suite *StateDBTestSuite) _TestForEachStorage() { } } - func (suite *StateDBTestSuite) TestKeeperAddBalance() { amount := uint256.NewInt(10) coin := sdk.NewCoin(types.DefaultEVMDenom, sdkmath.NewIntFromBigInt(amount.ToBig())) @@ -1000,7 +999,6 @@ func (suite *StateDBTestSuite) TestKeeperAddBalance() { } } - func (suite *StateDBTestSuite) TestKeeperSubBalance() { amount := uint256.NewInt(10) coin := sdk.NewCoin(types.DefaultEVMDenom, sdkmath.NewIntFromBigInt(amount.ToBig())) diff --git a/x/evm/migrations/v4/types/params_v4.pb.go b/x/evm/migrations/v4/types/params_v4.pb.go index 3b7e32580b..3a93df5dd6 100644 --- a/x/evm/migrations/v4/types/params_v4.pb.go +++ b/x/evm/migrations/v4/types/params_v4.pb.go @@ -7,10 +7,10 @@ import ( fmt "fmt" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" + v0types "github.com/evmos/ethermint/x/evm/migrations/v0/types" io "io" math "math" math_bits "math/bits" - v0types "github.com/evmos/ethermint/x/evm/migrations/v0/types" ) // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/evm/migrations/v7/migrate_test.go b/x/evm/migrations/v7/migrate_test.go index 76c27787a2..9b9636cdf9 100644 --- a/x/evm/migrations/v7/migrate_test.go +++ b/x/evm/migrations/v7/migrate_test.go @@ -70,4 +70,4 @@ func TestMigrateStoreEmptyStore(t *testing.T) { err := v7.MigrateStore(ctx, storeKey, cdc) require.Error(t, err) -} \ No newline at end of file +} From d550ec0b36b5a13a3a272e5eb10a0d944d213527 Mon Sep 17 00:00:00 2001 From: randy-cro Date: Mon, 18 Aug 2025 16:24:56 +0800 Subject: [PATCH 133/210] chore: remove eth_hashrate and eth_mining json rpc methods (#694) --- CHANGELOG.md | 1 + rpc/apis.go | 18 ------------------ rpc/namespaces/ethereum/eth/api.go | 20 -------------------- 3 files changed, 1 insertion(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8986d9c76f..fe9913da89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#689](https://github.com/crypto-org-chain/ethermint/pull/689) Enable CancunTime and PragueTime in chain config migration. * (evm) [#691](https://github.com/crypto-org-chain/ethermint/pull/691) Remove active precompiles from VMContext * (app) [#692](https://github.com/crypto-org-chain/ethermint/pull/692) Enforce app creator returning application implement AppWithPendingTxStream in build time. +* (evm) [#694](https://github.com/crypto-org-chain/ethermint/pull/694) Remove miner(eth_hashrate and eth_mining) json rpc methods ### Features diff --git a/rpc/apis.go b/rpc/apis.go index 01cee8c09c..f2079b2b97 100644 --- a/rpc/apis.go +++ b/rpc/apis.go @@ -27,7 +27,6 @@ import ( "github.com/evmos/ethermint/rpc/namespaces/ethereum/debug" "github.com/evmos/ethermint/rpc/namespaces/ethereum/eth" "github.com/evmos/ethermint/rpc/namespaces/ethereum/eth/filters" - "github.com/evmos/ethermint/rpc/namespaces/ethereum/miner" "github.com/evmos/ethermint/rpc/namespaces/ethereum/net" "github.com/evmos/ethermint/rpc/namespaces/ethereum/personal" "github.com/evmos/ethermint/rpc/namespaces/ethereum/txpool" @@ -50,7 +49,6 @@ const ( NetNamespace = "net" TxPoolNamespace = "txpool" DebugNamespace = "debug" - MinerNamespace = "miner" apiVersion = "1.0" ) @@ -153,22 +151,6 @@ func init() { }, } }, - MinerNamespace: func(ctx *server.Context, - clientCtx client.Context, - _ *stream.RPCStream, - allowUnprotectedTxs bool, - indexer ethermint.EVMTxIndexer, - ) []rpc.API { - evmBackend := backend.NewBackend(ctx, ctx.Logger, clientCtx, allowUnprotectedTxs, indexer) - return []rpc.API{ - { - Namespace: MinerNamespace, - Version: apiVersion, - Service: miner.NewPrivateAPI(ctx, evmBackend), - Public: false, - }, - } - }, } } diff --git a/rpc/namespaces/ethereum/eth/api.go b/rpc/namespaces/ethereum/eth/api.go index b07841512e..926e129273 100644 --- a/rpc/namespaces/ethereum/eth/api.go +++ b/rpc/namespaces/ethereum/eth/api.go @@ -106,10 +106,6 @@ type EthereumAPI interface { GetUncleCountByBlockHash(hash common.Hash) hexutil.Uint GetUncleCountByBlockNumber(blockNum rpctypes.BlockNumber) hexutil.Uint - // Proof of Work - Hashrate() hexutil.Uint64 - Mining() bool - // Other Syncing() (interface{}, error) Coinbase() (string, error) @@ -383,22 +379,6 @@ func (e *PublicAPI) GetUncleCountByBlockNumber(_ rpctypes.BlockNumber) hexutil.U return 0 } -/////////////////////////////////////////////////////////////////////////////// -/// Proof of Work /// -/////////////////////////////////////////////////////////////////////////////// - -// Hashrate returns the current node's hashrate. Always 0. -func (e *PublicAPI) Hashrate() hexutil.Uint64 { - e.logger.Debug("eth_hashrate") - return 0 -} - -// Mining returns whether or not this node is currently mining. Always false. -func (e *PublicAPI) Mining() bool { - e.logger.Debug("eth_mining") - return false -} - /////////////////////////////////////////////////////////////////////////////// /// Other /// /////////////////////////////////////////////////////////////////////////////// From 991f14f190f1656daa4bba86296384163ca6ebf5 Mon Sep 17 00:00:00 2001 From: randy-cro Date: Mon, 18 Aug 2025 17:08:52 +0800 Subject: [PATCH 134/210] chore:remove miner namespace unused methods (#695) --- CHANGELOG.md | 1 + rpc/namespaces/ethereum/miner/api.go | 58 ----------------- rpc/namespaces/ethereum/miner/unsupported.go | 66 -------------------- 3 files changed, 1 insertion(+), 124 deletions(-) delete mode 100644 rpc/namespaces/ethereum/miner/api.go delete mode 100644 rpc/namespaces/ethereum/miner/unsupported.go diff --git a/CHANGELOG.md b/CHANGELOG.md index fe9913da89..95562f05e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#691](https://github.com/crypto-org-chain/ethermint/pull/691) Remove active precompiles from VMContext * (app) [#692](https://github.com/crypto-org-chain/ethermint/pull/692) Enforce app creator returning application implement AppWithPendingTxStream in build time. * (evm) [#694](https://github.com/crypto-org-chain/ethermint/pull/694) Remove miner(eth_hashrate and eth_mining) json rpc methods +* (evm) [#695](https://github.com/crypto-org-chain/ethermint/pull/695) Remove more miner unused methods ### Features diff --git a/rpc/namespaces/ethereum/miner/api.go b/rpc/namespaces/ethereum/miner/api.go deleted file mode 100644 index 09f7f692cb..0000000000 --- a/rpc/namespaces/ethereum/miner/api.go +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2021 Evmos Foundation -// This file is part of Evmos' Ethermint library. -// -// The Ethermint library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The Ethermint library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE -package miner - -import ( - "github.com/cosmos/cosmos-sdk/server" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - - "cosmossdk.io/log" - - "github.com/evmos/ethermint/rpc/backend" -) - -// API is the private miner prefixed set of APIs in the Miner JSON-RPC spec. -type API struct { - ctx *server.Context - logger log.Logger - backend backend.EVMBackend -} - -// NewPrivateAPI creates an instance of the Miner API. -func NewPrivateAPI( - ctx *server.Context, - backend backend.EVMBackend, -) *API { - return &API{ - ctx: ctx, - logger: ctx.Logger.With("api", "miner"), - backend: backend, - } -} - -// SetEtherbase sets the etherbase of the miner -func (api *API) SetEtherbase(etherbase common.Address) bool { - api.logger.Debug("miner_setEtherbase") - return api.backend.SetEtherbase(etherbase) -} - -// SetGasPrice sets the minimum accepted gas price for the miner. -func (api *API) SetGasPrice(gasPrice hexutil.Big) bool { - api.logger.Info(api.ctx.Viper.ConfigFileUsed()) - return api.backend.SetGasPrice(gasPrice) -} diff --git a/rpc/namespaces/ethereum/miner/unsupported.go b/rpc/namespaces/ethereum/miner/unsupported.go deleted file mode 100644 index d07ac006ac..0000000000 --- a/rpc/namespaces/ethereum/miner/unsupported.go +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2021 Evmos Foundation -// This file is part of Evmos' Ethermint library. -// -// The Ethermint library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The Ethermint library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the Ethermint library. If not, see https://github.com/evmos/ethermint/blob/main/LICENSE -package miner - -import ( - "errors" - - "github.com/ethereum/go-ethereum/common/hexutil" -) - -// GetHashrate returns the current hashrate for local CPU miner and remote miner. -// Unsupported in Ethermint -func (api *API) GetHashrate() uint64 { - api.logger.Debug("miner_getHashrate") - api.logger.Debug("Unsupported rpc function: miner_getHashrate") - return 0 -} - -// SetExtra sets the extra data string that is included when this miner mines a block. -// Unsupported in Ethermint -func (api *API) SetExtra(_ string) (bool, error) { - api.logger.Debug("miner_setExtra") - api.logger.Debug("Unsupported rpc function: miner_setExtra") - return false, errors.New("unsupported rpc function: miner_setExtra") -} - -// SetGasLimit sets the gaslimit to target towards during mining. -// Unsupported in Ethermint -func (api *API) SetGasLimit(_ hexutil.Uint64) bool { - api.logger.Debug("miner_setGasLimit") - api.logger.Debug("Unsupported rpc function: miner_setGasLimit") - return false -} - -// Start starts the miner with the given number of threads. If threads is nil, -// the number of workers started is equal to the number of logical CPUs that are -// usable by this process. If mining is already running, this method adjust the -// number of threads allowed to use and updates the minimum price required by the -// transaction pool. -// Unsupported in Ethermint -func (api *API) Start(_ *int) error { - api.logger.Debug("miner_start") - api.logger.Debug("Unsupported rpc function: miner_start") - return errors.New("unsupported rpc function: miner_start") -} - -// Stop terminates the miner, both at the consensus engine level as well as at -// the block creation level. -// Unsupported in Ethermint -func (api *API) Stop() { - api.logger.Debug("miner_stop") - api.logger.Debug("Unsupported rpc function: miner_stop") -} From 9a03795ec96b63d072e2cf13ea5a977fd5874ef1 Mon Sep 17 00:00:00 2001 From: randy-cro Date: Tue, 19 Aug 2025 16:11:01 +0800 Subject: [PATCH 135/210] ci: upgrade linter (#696) --- .github/issue_labeler.yml | 56 +++++ .github/pr_labeler.yml | 28 +++ .github/workflows/changelog-reminder.yml | 25 +++ .github/workflows/dependabot-update-all.yml | 47 ++++ .github/workflows/dependencies-review.yml | 44 ++++ .github/workflows/issue_labeler.yml | 15 ++ .github/workflows/lint-pr.yml | 47 ++++ .github/workflows/lint.yml | 18 +- .github/workflows/pr_labeler.yml | 16 ++ .golangci.yml | 107 ++++----- CHANGELOG.md | 1 + Makefile | 17 +- default.nix | 14 +- evmd/app.go | 4 +- evmd/app_test.go | 40 ++++ evmd/export.go | 7 +- flake.nix | 74 ++++--- nix/default.nix | 18 +- nix/go-ethereum.nix | 33 ++- nix/golangci-lint.nix | 51 +++++ nix/scripts.nix | 15 +- nix/sources.nix | 203 +++++++++++------- nix/testenv.nix | 21 +- rpc/backend/filters.go | 2 +- rpc/backend/sign_tx.go | 2 +- rpc/namespaces/ethereum/debug/api.go | 2 +- rpc/stream/rpc.go | 4 +- scripts/go-mod-tidy-all.sh | 9 + scripts/go-update-dep-all.sh | 31 +++ .../configs/broken-ethermintd.nix | 7 +- .../configs/upgrade-test-package.nix | 29 ++- tests/integration_tests/shell.nix | 5 +- 32 files changed, 772 insertions(+), 220 deletions(-) create mode 100644 .github/issue_labeler.yml create mode 100644 .github/pr_labeler.yml create mode 100644 .github/workflows/changelog-reminder.yml create mode 100644 .github/workflows/dependabot-update-all.yml create mode 100644 .github/workflows/dependencies-review.yml create mode 100644 .github/workflows/issue_labeler.yml create mode 100644 .github/workflows/lint-pr.yml create mode 100644 .github/workflows/pr_labeler.yml create mode 100644 nix/golangci-lint.nix create mode 100644 scripts/go-mod-tidy-all.sh create mode 100644 scripts/go-update-dep-all.sh diff --git a/.github/issue_labeler.yml b/.github/issue_labeler.yml new file mode 100644 index 0000000000..b613aed105 --- /dev/null +++ b/.github/issue_labeler.yml @@ -0,0 +1,56 @@ +bug: + - 'bug' + - 'error' + - 'issue' + - 'crash' + - 'panic' + - 'fail' + - 'broken' + - 'not work' + - 'exception' + +enhancement: + - 'feature' + - 'enhancement' + - 'improve' + - 'add' + - 'support' + - 'request' + - 'proposal' + - 'rfc' + +documentation: + - 'docs' + - 'documentation' + - 'readme' + - 'guide' + - 'tutorial' + - 'example' + - 'spec' + - 'specification' + +cli: + - 'cli' + - 'command' + - 'flag' + - 'argument' + - 'terminal' + +dependencies: + - 'dependency' + - 'dependencies' + - 'go.mod' + - 'cosmos-sdk' + - 'tendermint' + - 'cometbft' + +build: + - 'build' + - 'compile' + - 'makefile' + - 'docker' + +ci: + - 'ci' + - 'github actions' + - 'workflow' diff --git a/.github/pr_labeler.yml b/.github/pr_labeler.yml new file mode 100644 index 0000000000..d3feba7ab2 --- /dev/null +++ b/.github/pr_labeler.yml @@ -0,0 +1,28 @@ +cli: + - x/*/client/**/* +nix: + - nix/** + - default.nix + - docker.nix + - flake.nix + - sources.nix + - testenv.nix + - goethereum.nix + - golangci-lint.nix +adr: + - docs/architecture/**/* +build: + - Makefile + - Dockerfile + - docker-compose.yml + - scripts/* +ci: + - .github/** + - buf.work.yaml + - .golangci.yml + +# modules +evm: + - x/evm/**/* +feemarket: + - x/feemarket/**/* diff --git a/.github/workflows/changelog-reminder.yml b/.github/workflows/changelog-reminder.yml new file mode 100644 index 0000000000..aa23048509 --- /dev/null +++ b/.github/workflows/changelog-reminder.yml @@ -0,0 +1,25 @@ +# Checks if a changelog is missing in the PR diff +name: Changelog Reminder +on: + pull_request_target: + types: + - opened + - edited + - synchronize + - reopened + - ready_for_review + paths: [ "**/*.go" ] +permissions: + contents: read + pull-requests: write +jobs: + remind: + name: Changelog Reminder + runs-on: ubuntu-latest + # Skip draft PRs and PRs starting with: revert, test, chore, ci, docs, style, build, refactor + if: "!github.event.pull_request.draft && !contains(github.event.pull_request.title, 'revert') && !contains(github.event.pull_request.title, 'test') && !contains(github.event.pull_request.title, 'chore') && !contains(github.event.pull_request.title, 'ci') && !contains(github.event.pull_request.title, 'docs') && !contains(github.event.pull_request.title, 'style') && !contains(github.event.pull_request.title, 'build') && !contains(github.event.pull_request.title, 'refactor')" + steps: + - uses: actions/checkout@v4 + - uses: mskelton/changelog-reminder-action@v3 + with: + message: "@${{ github.actor }} your pull request is missing a changelog!" \ No newline at end of file diff --git a/.github/workflows/dependabot-update-all.yml b/.github/workflows/dependabot-update-all.yml new file mode 100644 index 0000000000..ba126ac23b --- /dev/null +++ b/.github/workflows/dependabot-update-all.yml @@ -0,0 +1,47 @@ +name: Dependabot Update All Go Modules +on: pull_request + +permissions: + contents: write + pull-requests: write + +env: + PR_TITLE: ${{ github.event.pull_request.title }} + +jobs: + update-all: + runs-on: ubuntu-latest + if: ${{ github.actor == 'dependabot[bot]' }} + steps: + - name: Generate Token + uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v1 + id: app-token + with: + app-id: "${{ secrets.APP_ID }}" + private-key: "${{ secrets.APP_PRIVATE_KEY }}" + - uses: actions/checkout@v4 + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.ref }} + token: "${{ steps.app-token.outputs.token }}" + - uses: actions/setup-go@v5 + with: + go-version: "1.24" + check-latest: true + - name: Extract updated dependency + id: deps + run: | + # Extract the dependency name from the PR title + # Example: "build(deps): Bump github.com/cosmos/cosmos-sdk from 0.46.0 to 0.47.0" + # Extracts "github.com/cosmos/cosmos-sdk" and "0.47.0" + echo "name=$(echo "$PR_TITLE" | cut -d ' ' -f 3)" >> $GITHUB_OUTPUT + echo "version=$(echo "$PR_TITLE" | cut -d ' ' -f 7)" >> $GITHUB_OUTPUT + - name: Update all Go modules + run: | + ./scripts/go-update-dep-all.sh ${{ format('{0}@v{1}', steps.deps.outputs.name, steps.deps.outputs.version) }} + ./scripts/go-mod-tidy-all.sh + - name: Commit changes + uses: EndBug/add-and-commit@v9 + with: + default_author: user_info + message: "${{ github.event.pull_request.title }} for all modules" \ No newline at end of file diff --git a/.github/workflows/dependencies-review.yml b/.github/workflows/dependencies-review.yml new file mode 100644 index 0000000000..b6f22a580f --- /dev/null +++ b/.github/workflows/dependencies-review.yml @@ -0,0 +1,44 @@ +name: "Dependency Review" +on: + pull_request: + merge_group: + +permissions: + contents: read + +jobs: + dependency-review: + runs-on: ubuntu-latest + steps: + - name: "Checkout Repository" + uses: actions/checkout@v4 + - name: "Setup Go" + uses: actions/setup-go@v5 + with: + go-version: "1.24" + check-latest: true + - name: "Dependency Review" + uses: actions/dependency-review-action@v4 + with: + base-ref: ${{ github.event.pull_request.base.sha || 'master' }} + head-ref: ${{ github.event.pull_request.head.sha || github.ref }} + fail-on-severity: high + - name: "Go vulnerability check" + id: govuln + run: | + # Run the vulnerability check and capture its output (ignoring non-zero exit codes) + make vulncheck 2>&1 | tee govulncheck-output.txt || true + + # Extract vulnerability identifiers from the output (e.g., GO-2025-3443) + vulnerabilities=$(grep -o 'GO-[0-9]\{4\}-[0-9]\+' govulncheck-output.txt | sort | uniq) + echo "Detected vulnerabilities: $vulnerabilities" + + # Check if any vulnerability other than GO-2025-3443 exists + for vuln in $vulnerabilities; do + if [ "$vuln" != "GO-2025-3443" ]; then + echo "Found vulnerability $vuln, failing..." + exit 1 + fi + done + + echo "Only known vulnerability (GO-2025-3443) present. Continuing." \ No newline at end of file diff --git a/.github/workflows/issue_labeler.yml b/.github/workflows/issue_labeler.yml new file mode 100644 index 0000000000..5d2df28929 --- /dev/null +++ b/.github/workflows/issue_labeler.yml @@ -0,0 +1,15 @@ +name: "Issue Labeler" +on: + issues: + types: [opened] + +jobs: + triage: + runs-on: ubuntu-latest + steps: + - uses: github/issue-labeler@v3.4 + if: join(github.event.issue.labels) == '' + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" + configuration-path: .github/issue_labeler.yml + enable-versioned-regex: 0 \ No newline at end of file diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml new file mode 100644 index 0000000000..9eb9e2e8ee --- /dev/null +++ b/.github/workflows/lint-pr.yml @@ -0,0 +1,47 @@ +name: "Lint PR" + +on: + pull_request_target: + types: + - opened + - edited + - synchronize + +permissions: + contents: read + +jobs: + main: + permissions: + pull-requests: read # for amannn/action-semantic-pull-request to analyze PRs + statuses: write # for amannn/action-semantic-pull-request to mark status of analyzed PR + runs-on: ubuntu-latest + steps: + - uses: amannn/action-semantic-pull-request@v5.5.3 + id: lint_pr_title + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - uses: marocchino/sticky-pull-request-comment@v2 + # When the previous steps fails, the workflow would stop. By adding this + # condition you can continue the execution with the populated error message. + if: always() && (steps.lint_pr_title.outputs.error_message != null) + with: + header: pr-title-lint-error + message: | + Hey there and thank you for opening this pull request! 👋🏼 + + We require pull request titles to follow the [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/) and it looks like your proposed title needs to be adjusted. + + Details: + + ``` + ${{ steps.lint_pr_title.outputs.error_message }} + ``` + + # Delete a previous comment when the issue has been resolved + - if: ${{ steps.lint_pr_title.outputs.error_message == null }} + uses: marocchino/sticky-pull-request-comment@v2 + with: + header: pr-title-lint-error + delete: true \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 05e5309766..e5f9a77f8a 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -30,12 +30,20 @@ jobs: **/**.go go.mod go.sum - - uses: golangci/golangci-lint-action@v3.4.0 + - uses: cachix/install-nix-action@v31 + with: + nix_path: nixpkgs=channel:nixos-22.11 + extra_nix_config: | + access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} + if: env.GIT_DIFF + - uses: cachix/cachix-action@v16 with: - # Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version. - version: latest - args: --timeout 10m - github-token: ${{ secrets.github_token }} + name: crypto-ethermint + if: env.GIT_DIFF + - name: Install and run golangci-lint + run: | + nix profile add -f ./nix golangci-lint + golangci-lint run # Check only if there are differences in the source code if: env.GIT_DIFF markdown-lint: diff --git a/.github/workflows/pr_labeler.yml b/.github/workflows/pr_labeler.yml new file mode 100644 index 0000000000..eea82d8430 --- /dev/null +++ b/.github/workflows/pr_labeler.yml @@ -0,0 +1,16 @@ +name: "Pull Request Labeler" +on: + - pull_request_target + +jobs: + labeler: + permissions: + contents: read # for actions/labeler to determine modified files + pull-requests: write # for actions/labeler to add labels to PRs + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/labeler@v4 # v5 is broken, ref https://github.com/actions/labeler/issues/712. Do not bump. + with: + configuration-path: .github/pr_labeler.yml + repo-token: "${{ secrets.GITHUB_TOKEN }}" \ No newline at end of file diff --git a/.golangci.yml b/.golangci.yml index b0bdbd481c..3902e83569 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,72 +1,75 @@ +version: "2" run: tests: false - # timeout for analysis, e.g. 30s, 5m, default is 1m - # timeout: 5m - linters: enable: + - asciicheck - bodyclose - dogsled - dupl - - errcheck - goconst - gocritic - - gofumpt - - revive + - gomodguard - gosec - - gosimple - - govet - - ineffassign - lll - misspell - nakedret + - nolintlint - prealloc + - revive - staticcheck - - stylecheck - - typecheck - unconvert - unparam - - unused - - nolintlint - - asciicheck - - gofumpt - - gomodguard - whitespace - + settings: + dogsled: + max-blank-identifiers: 3 + gomodguard: + blocked: + versions: + - https://github.com/etcd-io/etcd: + version: '>= 3.4.10 || ~3.3.23' + reason: CVE-2020-15114; CVE-2020-15136; CVE-2020-15115 + - https://github.com/dgrijalva/jwt-go: + version: '>= 4.0.0-preview1' + reason: CVE-2020-26160 + lll: + line-length: 150 + misspell: + locale: US + nolintlint: + require-explanation: false + require-specific: false + allow-unused: false + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling + rules: + - linters: + - gosec + path: _test\.go + - linters: + - lll + source: https:// + - linters: + - revive + path: (types|interfaces)/ + paths: + - third_party$ + - builtin$ + - examples$ issues: - exclude-rules: - - path: _test\.go - linters: - - gosec - - linters: - - lll - source: "https://" max-same-issues: 50 - -linters-settings: - lll: - line-length: 150 - dogsled: - max-blank-identifiers: 3 - golint: - min-confidence: 0 - maligned: - suggest-new: true - misspell: - locale: US - nolintlint: - allow-unused: false - allow-leading-space: true - require-explanation: false - require-specific: false - gofumpt: - lang-version: "1.19" - gomodguard: - blocked: - versions: # List of blocked module version constraints - - https://github.com/etcd-io/etcd: # Blocked module with version constraint - version: ">= 3.4.10 || ~3.3.23" # Version constraint, see https://github.com/Masterminds/semver#basic-comparisons - reason: "CVE-2020-15114; CVE-2020-15136; CVE-2020-15115" # Reason why the version constraint exists. (Optional) - - https://github.com/dgrijalva/jwt-go: # Blocked module with version constraint - version: ">= 4.0.0-preview1" # Version constraint, see https://github.com/Masterminds/semver#basic-comparisons - reason: "CVE-2020-26160" # Reason why the version constraint exists. (Optional) +formatters: + enable: + - gofumpt + exclusions: + generated: lax + paths: + - third_party$ + - builtin$ + - examples$ diff --git a/CHANGELOG.md b/CHANGELOG.md index 95562f05e3..b6f8a650fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (app) [#692](https://github.com/crypto-org-chain/ethermint/pull/692) Enforce app creator returning application implement AppWithPendingTxStream in build time. * (evm) [#694](https://github.com/crypto-org-chain/ethermint/pull/694) Remove miner(eth_hashrate and eth_mining) json rpc methods * (evm) [#695](https://github.com/crypto-org-chain/ethermint/pull/695) Remove more miner unused methods +* (evm) [#696](https://github.com/crypto-org-chain/ethermint/pull/696) Upgrade golangci-lint to v2 and enhance github workflows ### Features diff --git a/Makefile b/Makefile index 8e244b1132..4ffb2fb951 100644 --- a/Makefile +++ b/Makefile @@ -419,9 +419,15 @@ benchmark: ### Linting ### ############################################################################### +lint-install: + @echo "--> Installing golangci-lint $(golangci_version)" + @nix profile add -f ./nix golangci-lint + lint: - @@test -n "$$golangci-lint version | awk '$4 >= 1.42')" - golangci-lint run --out-format=tab -n + @go mod verify + @golangci-lint run --output.text.path stdout --path-prefix=./ + @flake8 --show-source --count --statistics + @find . -name "*.nix" -type f | xargs nixfmt -c lint-py: flake8 --show-source --count --statistics \ @@ -431,12 +437,17 @@ format: find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/docs/statik/statik.go" -not -name '*.pb.go' -not -name '*.pb.gw.go' | xargs gofumpt -d -e -extra lint-fix: - golangci-lint run --fix --out-format=tab --issues-exit-code=0 + @go mod verify + @golangci-lint run --fix --issues-exit-code=0 --path-prefix=./ + @flake8 --show-source --count --statistics + @find . -name "*.nix" -type f | xargs nixfmt + .PHONY: lint lint-fix lint-py format-fix: find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/docs/statik/statik.go" -not -name '*.pb.go' -not -name '*.pb.gw.go' | xargs gofumpt -w -s find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/docs/statik/statik.go" -not -name '*.pb.go' -not -name '*.pb.gw.go' | xargs misspell -w + find . -name "*.nix" -type f | xargs nixfmt .PHONY: format ############################################################################### diff --git a/default.nix b/default.nix index b6627da98b..a48c8f0fe0 100644 --- a/default.nix +++ b/default.nix @@ -1,6 +1,7 @@ -{ lib -, buildGoApplication -, rev ? "dirty" +{ + lib, + buildGoApplication, + rev ? "dirty", }: let version = "v0.20.0-rc2"; @@ -15,7 +16,12 @@ let ]); in buildGoApplication rec { - inherit pname version tags ldflags; + inherit + pname + version + tags + ldflags + ; src = lib.sourceByRegex ./. [ "^(x|ante|evmd|cmd|client|server|crypto|rpc|types|encoding|ethereum|indexer|testutil|version|store|go.mod|go.sum|gomod2nix.toml)($|/.*)" "^tests(/.*[.]go)?$" diff --git a/evmd/app.go b/evmd/app.go index e1b9e26a88..88a5499366 100644 --- a/evmd/app.go +++ b/evmd/app.go @@ -1028,14 +1028,14 @@ func (app *EthermintApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config. // RegisterTxService implements the Application.RegisterTxService method. func (app *EthermintApp) RegisterTxService(clientCtx client.Context) { - authtx.RegisterTxService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.BaseApp.Simulate, app.interfaceRegistry) + authtx.RegisterTxService(app.GRPCQueryRouter(), clientCtx, app.Simulate, app.interfaceRegistry) } // RegisterTendermintService implements the Application.RegisterTendermintService method. func (app *EthermintApp) RegisterTendermintService(clientCtx client.Context) { cmtservice.RegisterTendermintService( clientCtx, - app.BaseApp.GRPCQueryRouter(), + app.GRPCQueryRouter(), app.interfaceRegistry, app.Query, ) diff --git a/evmd/app_test.go b/evmd/app_test.go index c8cd9edd35..6ad6340e02 100644 --- a/evmd/app_test.go +++ b/evmd/app_test.go @@ -4,6 +4,8 @@ import ( "os" "testing" + "github.com/cosmos/cosmos-sdk/client" + "github.com/evmos/ethermint/encoding" "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/testutil" "github.com/stretchr/testify/require" @@ -31,4 +33,42 @@ func TestEthermintAppExport(t *testing.T) { ) _, err := ethApp2.ExportAppStateAndValidators(false, []string{}, []string{}) require.NoError(t, err, "ExportAppStateAndValidators should not have an error") + + ethApp3 := evmd.NewEthermintApp( + log.NewLogger(os.Stdout), + db, + nil, + true, + simtestutil.NewAppOptionsWithFlagHome(evmd.DefaultNodeHome), + baseapp.SetChainID(testutil.ChainID), + ) + + // Test for zero height + if _, err := ethApp3.ExportAppStateAndValidators(true, []string{}, []string{}); err != nil { + t.Fatal(err) + } +} + +func TestRegisterTxService(t *testing.T) { + db := dbm.NewMemDB() + ethApp := testutil.SetupWithDB(false, nil, db) + + encodingConfig := encoding.MakeConfig() + clientCtx := client.Context{}.WithTxConfig(encodingConfig.TxConfig) + + ethApp.RegisterTxService(clientCtx) + + ethApp.RegisterTendermintService(clientCtx) + +} + +func TestRegisterTendermintService(t *testing.T) { + db := dbm.NewMemDB() + ethApp := testutil.SetupWithDB(false, nil, db) + + encodingConfig := encoding.MakeConfig() + clientCtx := client.Context{}.WithTxConfig(encodingConfig.TxConfig) + + ethApp.RegisterTendermintService(clientCtx) + } diff --git a/evmd/export.go b/evmd/export.go index c53302b697..15719fc68b 100644 --- a/evmd/export.go +++ b/evmd/export.go @@ -66,7 +66,7 @@ func (app *EthermintApp) ExportAppStateAndValidators( AppState: appState, Validators: validators, Height: height, - ConsensusParams: app.BaseApp.GetConsensusParams(ctx), + ConsensusParams: app.GetConsensusParams(ctx), }, nil } @@ -74,12 +74,9 @@ func (app *EthermintApp) ExportAppStateAndValidators( // NOTE zero height genesis is a temporary feature which will be deprecated // in favor of export at a block height func (app *EthermintApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) error { - applyAllowedAddrs := false + applyAllowedAddrs := len(jailAllowedAddrs) > 0 // check if there is a allowed address list - if len(jailAllowedAddrs) > 0 { - applyAllowedAddrs = true - } allowedAddrsMap := make(map[string]bool) diff --git a/flake.nix b/flake.nix index e4d1e22569..d70b1c3a56 100644 --- a/flake.nix +++ b/flake.nix @@ -14,7 +14,14 @@ }; }; - outputs = { self, nixpkgs, gomod2nix, flake-utils, poetry2nix }: + outputs = + { + self, + nixpkgs, + gomod2nix, + flake-utils, + poetry2nix, + }: let rev = self.shortRev or "dirty"; mkApp = drv: { @@ -22,40 +29,41 @@ program = "${drv}/bin/${drv.meta.mainProgram}"; }; in - (flake-utils.lib.eachDefaultSystem - (system: - let - pkgs = import nixpkgs { - inherit system; - overlays = [ - gomod2nix.overlays.default - poetry2nix.overlays.default - ] ++ self.overlays.default; - config = { }; + (flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ + gomod2nix.overlays.default + poetry2nix.overlays.default + ] + ++ self.overlays.default; + config = { }; + }; + in + rec { + packages.default = pkgs.callPackage ./. { inherit rev; }; + apps.default = mkApp packages.default; + devShells = { + default = pkgs.mkShell { + buildInputs = [ + packages.default.go + pkgs.gomod2nix + ]; }; - in - rec { - packages.default = pkgs.callPackage ./. { inherit rev; }; - apps.default = mkApp packages.default; - devShells = { - default = pkgs.mkShell { - buildInputs = [ - packages.default.go - pkgs.gomod2nix - ]; - }; - full = pkgs.mkShell { - buildInputs = [ - packages.default.go - pkgs.gomod2nix - pkgs.test-env - ]; - }; + full = pkgs.mkShell { + buildInputs = [ + packages.default.go + pkgs.gomod2nix + pkgs.test-env + ]; }; - legacyPackages = pkgs; - } - ) - ) // { + }; + legacyPackages = pkgs; + } + )) + // { overlays.default = [ (import ./nix/build_overlay.nix) (final: super: { diff --git a/nix/default.nix b/nix/default.nix index 6eb224bfae..cc7d3e5b15 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -1,4 +1,8 @@ -{ sources ? import ./sources.nix, system ? builtins.currentSystem, ... }: +{ + sources ? import ./sources.nix, + system ? builtins.currentSystem, + ... +}: import sources.nixpkgs { overlays = [ @@ -11,18 +15,24 @@ import sources.nixpkgs { inherit (pkgs.darwin.apple_sdk.frameworks) IOKit; buildGoModule = pkgs.buildGo123Module; }; + golangci-lint = pkgs.callPackage ./golangci-lint.nix { }; }) # update to a version that supports eip-1559 (import "${sources.poetry2nix}/overlay.nix") (import "${sources.gomod2nix}/overlay.nix") - (pkgs: _: + ( + pkgs: _: import ./scripts.nix { inherit pkgs; config = { ethermint-config = ../scripts/ethermint-devnet.yaml; geth-genesis = ../scripts/geth-genesis.json; - dotenv = builtins.path { name = "dotenv"; path = ../scripts/env; }; + dotenv = builtins.path { + name = "dotenv"; + path = ../scripts/env; + }; }; - }) + } + ) (_: pkgs: { test-env = pkgs.callPackage ./testenv.nix { }; }) (_: pkgs: { cosmovisor = pkgs.buildGo122Module rec { diff --git a/nix/go-ethereum.nix b/nix/go-ethereum.nix index 061b02008d..639e7edc75 100644 --- a/nix/go-ethereum.nix +++ b/nix/go-ethereum.nix @@ -1,4 +1,12 @@ -{ lib, stdenv, buildGoModule, fetchFromGitHub, libobjc, IOKit, nixosTests }: +{ + lib, + stdenv, + buildGoModule, + fetchFromGitHub, + libobjc, + IOKit, + nixosTests, +}: let # A list of binaries to put into separate outputs @@ -30,7 +38,10 @@ buildGoModule rec { # Move binaries to separate outputs and symlink them back to $out postInstall = lib.concatStringsSep "\n" ( - builtins.map (bin: "mkdir -p \$${bin}/bin && mv $out/bin/${bin} \$${bin}/bin/ && ln -s \$${bin}/bin/${bin} $out/bin/") bins + builtins.map ( + bin: + "mkdir -p \$${bin}/bin && mv $out/bin/${bin} \$${bin}/bin/ && ln -s \$${bin}/bin/${bin} $out/bin/" + ) bins ); subPackages = [ @@ -51,12 +62,14 @@ buildGoModule rec { tags = [ "urfave_cli_no_docs" ]; # Fix for usb-related segmentation faults on darwin - propagatedBuildInputs = - lib.optionals stdenv.isDarwin [ libobjc IOKit ]; + propagatedBuildInputs = lib.optionals stdenv.isDarwin [ + libobjc + IOKit + ]; # Add missing dependencies for HID support on Darwin buildInputs = lib.optionals stdenv.isDarwin [ - libobjc + libobjc IOKit ]; @@ -65,7 +78,13 @@ buildGoModule rec { meta = with lib; { homepage = "https://geth.ethereum.org/"; description = "Official golang implementation of the Ethereum protocol"; - license = with licenses; [ lgpl3Plus gpl3Plus ]; - maintainers = with maintainers; [ adisbladis RaghavSood ]; + license = with licenses; [ + lgpl3Plus + gpl3Plus + ]; + maintainers = with maintainers; [ + adisbladis + RaghavSood + ]; }; } diff --git a/nix/golangci-lint.nix b/nix/golangci-lint.nix new file mode 100644 index 0000000000..4c09053e00 --- /dev/null +++ b/nix/golangci-lint.nix @@ -0,0 +1,51 @@ +{ + buildGo123Module, + fetchFromGitHub, + lib, + installShellFiles, +}: + +buildGo123Module rec { + pname = "golangci-lint"; + version = "2.1.6"; + + src = fetchFromGitHub { + owner = "golangci"; + repo = "golangci-lint"; + rev = "v${version}"; + hash = "sha256-L0TsVOUSU+nfxXyWsFLe+eU4ZxWbW3bHByQVatsTpXA="; + }; + + vendorHash = "sha256-tYoAUumnHgA8Al3jKjS8P/ZkUlfbmmmBcJYUR7+5u9w="; + + subPackages = [ "cmd/golangci-lint" ]; + + nativeBuildInputs = [ installShellFiles ]; + + ldflags = [ + "-s" + "-w" + "-X main.version=${version}" + "-X main.commit=v${version}" + "-X main.date=19700101-00:00:00" + ]; + + postInstall = '' + for shell in bash zsh fish; do + HOME=$TMPDIR $out/bin/golangci-lint completion $shell > golangci-lint.$shell + installShellCompletion golangci-lint.$shell + done + ''; + + meta = with lib; { + description = "Fast linters Runner for Go"; + homepage = "https://golangci-lint.run/"; + changelog = "https://github.com/golangci/golangci-lint/blob/v${version}/CHANGELOG.md"; + mainProgram = "golangci-lint"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ + SuperSandro2000 + mic92 + ]; + }; +} diff --git a/nix/scripts.nix b/nix/scripts.nix index 131f8d3122..8568aea435 100644 --- a/nix/scripts.nix +++ b/nix/scripts.nix @@ -1,7 +1,9 @@ -{ pkgs -, config -, ethermint ? (import ../. { inherit pkgs; }) -}: rec { +{ + pkgs, + config, + ethermint ? (import ../. { inherit pkgs; }), +}: +rec { start-ethermint = pkgs.writeShellScriptBin "start-ethermint" '' # rely on environment to provide ethermintd export PATH=${pkgs.test-env}/bin:$PATH @@ -14,6 +16,9 @@ ''; start-scripts = pkgs.symlinkJoin { name = "start-scripts"; - paths = [ start-ethermint start-geth ]; + paths = [ + start-ethermint + start-geth + ]; }; } diff --git a/nix/sources.nix b/nix/sources.nix index 3f841046a8..c420541d76 100644 --- a/nix/sources.nix +++ b/nix/sources.nix @@ -6,113 +6,159 @@ let # The fetchers. fetch_ fetches specs of type . # - fetch_file = pkgs: name: spec: + fetch_file = + pkgs: name: spec: let name' = sanitizeName name + "-src"; in if spec.builtin or true then - builtins_fetchurl { inherit (spec) url sha256; name = name'; } + builtins_fetchurl { + inherit (spec) url sha256; + name = name'; + } else - pkgs.fetchurl { inherit (spec) url sha256; name = name'; }; + pkgs.fetchurl { + inherit (spec) url sha256; + name = name'; + }; - fetch_tarball = pkgs: name: spec: + fetch_tarball = + pkgs: name: spec: let name' = sanitizeName name + "-src"; in if spec.builtin or true then - builtins_fetchTarball { name = name'; inherit (spec) url sha256; } + builtins_fetchTarball { + name = name'; + inherit (spec) url sha256; + } else - pkgs.fetchzip { name = name'; inherit (spec) url sha256; }; + pkgs.fetchzip { + name = name'; + inherit (spec) url sha256; + }; - fetch_git = name: spec: + fetch_git = + name: spec: let ref = - if spec ? ref then spec.ref else - if spec ? branch then "refs/heads/${spec.branch}" else - if spec ? tag then "refs/tags/${spec.tag}" else - abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!"; + if spec ? ref then + spec.ref + else if spec ? branch then + "refs/heads/${spec.branch}" + else if spec ? tag then + "refs/tags/${spec.tag}" + else + abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!"; in - builtins.fetchGit { url = spec.repo; inherit (spec) rev; inherit ref; }; + builtins.fetchGit { + url = spec.repo; + inherit (spec) rev; + inherit ref; + }; fetch_local = spec: spec.path; - fetch_builtin-tarball = name: throw - ''[${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`. - $ niv modify ${name} -a type=tarball -a builtin=true''; + fetch_builtin-tarball = + name: + throw '' + [${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`. + $ niv modify ${name} -a type=tarball -a builtin=true''; - fetch_builtin-url = name: throw - ''[${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`. - $ niv modify ${name} -a type=file -a builtin=true''; + fetch_builtin-url = + name: + throw '' + [${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`. + $ niv modify ${name} -a type=file -a builtin=true''; # # Various helpers # # https://github.com/NixOS/nixpkgs/pull/83241/files#diff-c6f540a4f3bfa4b0e8b6bafd4cd54e8bR695 - sanitizeName = name: - ( - concatMapStrings (s: if builtins.isList s then "-" else s) - ( - builtins.split "[^[:alnum:]+._?=-]+" - ((x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0) name) - ) - ); + sanitizeName = + name: + (concatMapStrings (s: if builtins.isList s then "-" else s) ( + builtins.split "[^[:alnum:]+._?=-]+" ((x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0) name) + )); # The set of packages used when specs are fetched using non-builtins. - mkPkgs = sources: system: + mkPkgs = + sources: system: let - sourcesNixpkgs = - import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) { inherit system; }; + sourcesNixpkgs = import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) { + inherit system; + }; hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath; hasThisAsNixpkgsPath = == ./.; in - if builtins.hasAttr "nixpkgs" sources - then sourcesNixpkgs - else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then + if builtins.hasAttr "nixpkgs" sources then + sourcesNixpkgs + else if hasNixpkgsPath && !hasThisAsNixpkgsPath then import { } else - abort - '' - Please specify either (through -I or NIX_PATH=nixpkgs=...) or - add a package called "nixpkgs" to your sources.json. - ''; + abort '' + Please specify either (through -I or NIX_PATH=nixpkgs=...) or + add a package called "nixpkgs" to your sources.json. + ''; # The actual fetching function. - fetch = pkgs: name: spec: + fetch = + pkgs: name: spec: - if ! builtins.hasAttr "type" spec then + if !builtins.hasAttr "type" spec then abort "ERROR: niv spec ${name} does not have a 'type' attribute" - else if spec.type == "file" then fetch_file pkgs name spec - else if spec.type == "tarball" then fetch_tarball pkgs name spec - else if spec.type == "git" then fetch_git name spec - else if spec.type == "local" then fetch_local spec - else if spec.type == "builtin-tarball" then fetch_builtin-tarball name - else if spec.type == "builtin-url" then fetch_builtin-url name + else if spec.type == "file" then + fetch_file pkgs name spec + else if spec.type == "tarball" then + fetch_tarball pkgs name spec + else if spec.type == "git" then + fetch_git name spec + else if spec.type == "local" then + fetch_local spec + else if spec.type == "builtin-tarball" then + fetch_builtin-tarball name + else if spec.type == "builtin-url" then + fetch_builtin-url name else abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}"; # If the environment variable NIV_OVERRIDE_${name} is set, then use # the path directly as opposed to the fetched source. - replace = name: drv: + replace = + name: drv: let saneName = stringAsChars (c: if isNull (builtins.match "[a-zA-Z0-9]" c) then "_" else c) name; ersatz = builtins.getEnv "NIV_OVERRIDE_${saneName}"; in - if ersatz == "" then drv else - # this turns the string into an actual Nix path (for both absolute and - # relative paths) - if builtins.substring 0 1 ersatz == "/" then /. + ersatz else /. + builtins.getEnv "PWD" + "/${ersatz}"; + if ersatz == "" then + drv + else + # this turns the string into an actual Nix path (for both absolute and + # relative paths) + if builtins.substring 0 1 ersatz == "/" then + /. + ersatz + else + /. + builtins.getEnv "PWD" + "/${ersatz}"; # Ports of functions for older nix versions # a Nix version of mapAttrs if the built-in doesn't exist - mapAttrs = builtins.mapAttrs or ( - f: set: with builtins; - listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set)) - ); + mapAttrs = + builtins.mapAttrs or ( + f: set: + with builtins; + listToAttrs ( + map (attr: { + name = attr; + value = f attr set.${attr}; + }) (attrNames set) + ) + ); # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295 - range = first: last: if first > last then [ ] else builtins.genList (n: first + n) (last - first + 1); + range = + first: last: if first > last then [ ] else builtins.genList (n: first + n) (last - first + 1); # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257 stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1)); @@ -126,7 +172,12 @@ let optionalAttrs = cond: as: if cond then as else { }; # fetchTarball version that is compatible between all the versions of Nix - builtins_fetchTarball = { url, name ? null, sha256 }@attrs: + builtins_fetchTarball = + { + url, + name ? null, + sha256, + }@attrs: let inherit (builtins) lessThan nixVersion fetchTarball; in @@ -136,7 +187,12 @@ let fetchTarball attrs; # fetchurl version that is compatible between all the versions of Nix - builtins_fetchurl = { url, name ? null, sha256 }@attrs: + builtins_fetchurl = + { + url, + name ? null, + sha256, + }@attrs: let inherit (builtins) lessThan nixVersion fetchurl; in @@ -146,26 +202,25 @@ let fetchurl attrs; # Create the final "sources" from the config - mkSources = config: - mapAttrs - ( - name: spec: - if builtins.hasAttr "outPath" spec - then - abort - "The values in sources.json should not have an 'outPath' attribute" - else - spec // { outPath = replace name (fetch config.pkgs name spec); } - ) - config.sources; + mkSources = + config: + mapAttrs ( + name: spec: + if builtins.hasAttr "outPath" spec then + abort "The values in sources.json should not have an 'outPath' attribute" + else + spec // { outPath = replace name (fetch config.pkgs name spec); } + ) config.sources; # The "config" used by the fetchers mkConfig = - { sourcesFile ? if builtins.pathExists ./sources.json then ./sources.json else null - , sources ? if isNull sourcesFile then { } else builtins.fromJSON (builtins.readFile sourcesFile) - , system ? builtins.currentSystem - , pkgs ? mkPkgs sources system - }: rec { + { + sourcesFile ? if builtins.pathExists ./sources.json then ./sources.json else null, + sources ? if isNull sourcesFile then { } else builtins.fromJSON (builtins.readFile sourcesFile), + system ? builtins.currentSystem, + pkgs ? mkPkgs sources system, + }: + rec { # The sources, i.e. the attribute set of spec name to spec inherit sources; diff --git a/nix/testenv.nix b/nix/testenv.nix index 2c03e4bb4a..d02782f618 100644 --- a/nix/testenv.nix +++ b/nix/testenv.nix @@ -1,8 +1,13 @@ -{ poetry2nix, lib, python311 }: +{ + poetry2nix, + lib, + python311, +}: poetry2nix.mkPoetryEnv { projectDir = ../tests/integration_tests; python = python311; - overrides = poetry2nix.overrides.withDefaults (self: super: + overrides = poetry2nix.overrides.withDefaults ( + self: super: let buildSystems = { pystarport = [ "poetry-core" ]; @@ -16,11 +21,11 @@ poetry2nix.mkPoetryEnv { eth-bloom = [ "setuptools" ]; }; in - lib.mapAttrs - (attr: systems: super.${attr}.overridePythonAttrs - (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ map (a: self.${a}) systems; - })) - buildSystems + lib.mapAttrs ( + attr: systems: + super.${attr}.overridePythonAttrs (old: { + nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ map (a: self.${a}) systems; + }) + ) buildSystems ); } diff --git a/rpc/backend/filters.go b/rpc/backend/filters.go index b989d8099b..a685ddb744 100644 --- a/rpc/backend/filters.go +++ b/rpc/backend/filters.go @@ -30,7 +30,7 @@ func (b *Backend) GetLogs(hash common.Hash) ([][]*ethtypes.Log, error) { if resBlock == nil { return nil, errors.Errorf("block not found for hash %s", hash) } - return b.GetLogsByHeight(&resBlock.Block.Header.Height) + return b.GetLogsByHeight(&resBlock.Block.Height) } // GetLogsByHeight returns all the logs from all the ethereum transactions in a block. diff --git a/rpc/backend/sign_tx.go b/rpc/backend/sign_tx.go index e5c518737f..cbfcac055c 100644 --- a/rpc/backend/sign_tx.go +++ b/rpc/backend/sign_tx.go @@ -79,7 +79,7 @@ func (b *Backend) SendTransaction(args evmtypes.TransactionArgs) (common.Hash, e } // Query params to use the EVM denomination - res, err := b.queryClient.QueryClient.Params(b.ctx, &evmtypes.QueryParamsRequest{}) + res, err := b.queryClient.Params(b.ctx, &evmtypes.QueryParamsRequest{}) if err != nil { b.logger.Error("failed to query evm params", "error", err.Error()) return common.Hash{}, err diff --git a/rpc/namespaces/ethereum/debug/api.go b/rpc/namespaces/ethereum/debug/api.go index b5f0e16e45..576f7ec7a2 100644 --- a/rpc/namespaces/ethereum/debug/api.go +++ b/rpc/namespaces/ethereum/debug/api.go @@ -152,7 +152,7 @@ func (a *API) BlockProfile(file string, nsec uint) error { // CpuProfile turns on CPU profiling for nsec seconds and writes // profile data to file. -func (a *API) CpuProfile(file string, nsec uint) error { //nolint: golint, stylecheck, revive +func (a *API) CpuProfile(file string, nsec uint) error { //nolint: revive d, err := parseDuration(nsec) if err != nil { return err diff --git a/rpc/stream/rpc.go b/rpc/stream/rpc.go index 5e4d1bb78c..7dc0442e54 100644 --- a/rpc/stream/rpc.go +++ b/rpc/stream/rpc.go @@ -206,11 +206,11 @@ func (s *RPCStream) start( s.logger.Error("event data type mismatch", "type", fmt.Sprintf("%T", ev.Data)) continue } - height, err := ethermint.SafeUint64(dataTx.TxResult.Height) + height, err := ethermint.SafeUint64(dataTx.Height) if err != nil { continue } - txLogs, err := evmtypes.DecodeTxLogsFromEvents(dataTx.TxResult.Result.Data, dataTx.TxResult.Result.Events, height) + txLogs, err := evmtypes.DecodeTxLogsFromEvents(dataTx.Result.Data, dataTx.Result.Events, height) if err != nil { s.logger.Error("fail to decode evm tx response", "error", err.Error()) continue diff --git a/scripts/go-mod-tidy-all.sh b/scripts/go-mod-tidy-all.sh new file mode 100644 index 0000000000..72b2b9d0e2 --- /dev/null +++ b/scripts/go-mod-tidy-all.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -euo pipefail + +for modfile in $(find . -name go.mod); do + echo "Updating $modfile" + DIR=$(dirname $modfile) + (cd $DIR; go mod tidy) +done \ No newline at end of file diff --git a/scripts/go-update-dep-all.sh b/scripts/go-update-dep-all.sh new file mode 100644 index 0000000000..f06bb9c6a4 --- /dev/null +++ b/scripts/go-update-dep-all.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -euo pipefail + +if [ -z ${1+x} ]; then + echo "USAGE: + ./scripts/go-update-dep-all.sh + This command updates a dependency in all of the go.mod files which import it. + It should be called with a single argument which is the go module path of the dependency, + with an optional version specified by @." + exit +fi + +dependency=$1 +# in case the user explicitly specified a dependency version with @, we separate +# the dependency module name into dependency_mod +IFS='@' read -ra dependency_mod <<< "$dependency" +dependency_mod=${dependency_mod[0]} + +for modfile in $(find . -name go.mod); do + if grep $dependency_mod $modfile &> /dev/null; then + echo "Updating $modfile" + DIR=$(dirname $modfile) + # we want to skip the go.mod of the package we're updating + if [[ "$dependency_mod" == *"$(basename $DIR)" ]]; then + echo "Skipping $DIR" + continue + fi + (cd $DIR; go get -u $dependency) + fi +done \ No newline at end of file diff --git a/tests/integration_tests/configs/broken-ethermintd.nix b/tests/integration_tests/configs/broken-ethermintd.nix index f789646ae8..eec8863086 100644 --- a/tests/integration_tests/configs/broken-ethermintd.nix +++ b/tests/integration_tests/configs/broken-ethermintd.nix @@ -1,5 +1,8 @@ -{ pkgs ? import ../../../nix { } }: -let ethermintd = (pkgs.callPackage ../../../. { }); +{ + pkgs ? import ../../../nix { }, +}: +let + ethermintd = (pkgs.callPackage ../../../. { }); in ethermintd.overrideAttrs (oldAttrs: { patches = oldAttrs.patches or [ ] ++ [ diff --git a/tests/integration_tests/configs/upgrade-test-package.nix b/tests/integration_tests/configs/upgrade-test-package.nix index e356e7a12d..6c21eddd43 100644 --- a/tests/integration_tests/configs/upgrade-test-package.nix +++ b/tests/integration_tests/configs/upgrade-test-package.nix @@ -1,16 +1,25 @@ let pkgs = import ../../../nix { }; - fetchFlake = repo: rev: (pkgs.flake-compat { - src = { - outPath = builtins.fetchTarball "https://github.com/${repo}/archive/${rev}.tar.gz"; - inherit rev; - shortRev = builtins.substring 0 7 rev; - }; - }).defaultNix; - released = (fetchFlake "crypto-org-chain/ethermint" "b216a320ac6a60b019c1cbe5a6b730856482f071").default; + fetchFlake = + repo: rev: + (pkgs.flake-compat { + src = { + outPath = builtins.fetchTarball "https://github.com/${repo}/archive/${rev}.tar.gz"; + inherit rev; + shortRev = builtins.substring 0 7 rev; + }; + }).defaultNix; + released = + (fetchFlake "crypto-org-chain/ethermint" "b216a320ac6a60b019c1cbe5a6b730856482f071").default; current = pkgs.callPackage ../../../. { }; in pkgs.linkFarm "upgrade-test-package" [ - { name = "genesis"; path = released; } - { name = "sdk50"; path = current; } + { + name = "genesis"; + path = released; + } + { + name = "sdk50"; + path = current; + } ] diff --git a/tests/integration_tests/shell.nix b/tests/integration_tests/shell.nix index 6cfe1604b5..9e95cd5173 100644 --- a/tests/integration_tests/shell.nix +++ b/tests/integration_tests/shell.nix @@ -1,4 +1,7 @@ -{ system ? builtins.currentSystem, pkgs ? import ../../nix { inherit system; } }: +{ + system ? builtins.currentSystem, + pkgs ? import ../../nix { inherit system; }, +}: pkgs.mkShell { buildInputs = [ pkgs.jq From d940a537fb81944916641124a5e8fac7bf92bc9b Mon Sep 17 00:00:00 2001 From: Calvin Lau <38898718+calvinaco@users.noreply.github.com> Date: Wed, 20 Aug 2025 19:00:50 +0800 Subject: [PATCH 136/210] fix: add Cancun and Prague fork default value (#702) * Problem: Missing Cancun and Prague fork default value Solution: Default to be zero * Add CHANGELOG * fix: tests --------- Co-authored-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- CHANGELOG.md | 1 + evmd/ante/utils_test.go | 2 ++ x/evm/keeper/grpc_query_test.go | 2 ++ x/evm/keeper/keeper_test.go | 2 ++ x/evm/keeper/state_transition_benchmark_test.go | 2 ++ x/evm/types/chain_config.go | 4 ++++ 6 files changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6f8a650fb..52800ae1bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#694](https://github.com/crypto-org-chain/ethermint/pull/694) Remove miner(eth_hashrate and eth_mining) json rpc methods * (evm) [#695](https://github.com/crypto-org-chain/ethermint/pull/695) Remove more miner unused methods * (evm) [#696](https://github.com/crypto-org-chain/ethermint/pull/696) Upgrade golangci-lint to v2 and enhance github workflows +* (evm) [#702](https://github.com/crypto-org-chain/ethermint/pull/702) Add default value of CancunTime and PragueTime in chain config ### Features diff --git a/evmd/ante/utils_test.go b/evmd/ante/utils_test.go index 9f7b2f16bd..d892a7ab23 100644 --- a/evmd/ante/utils_test.go +++ b/evmd/ante/utils_test.go @@ -105,6 +105,8 @@ func (suite *AnteTestSuite) SetupTest() { evmGenesis.Params.ChainConfig.GrayGlacierBlock = &maxInt evmGenesis.Params.ChainConfig.MergeNetsplitBlock = &maxInt evmGenesis.Params.ChainConfig.ShanghaiTime = &maxInt + evmGenesis.Params.ChainConfig.CancunTime = &maxInt + evmGenesis.Params.ChainConfig.PragueTime = &maxInt } if suite.evmParamsOption != nil { suite.evmParamsOption(&evmGenesis.Params) diff --git a/x/evm/keeper/grpc_query_test.go b/x/evm/keeper/grpc_query_test.go index d9621739f9..68a6b93dca 100644 --- a/x/evm/keeper/grpc_query_test.go +++ b/x/evm/keeper/grpc_query_test.go @@ -58,6 +58,8 @@ func (suite *GRPCServerTestSuiteSuite) SetupTest() { evmGenesis.Params.ChainConfig.GrayGlacierBlock = &maxInt evmGenesis.Params.ChainConfig.MergeNetsplitBlock = &maxInt evmGenesis.Params.ChainConfig.ShanghaiTime = &maxInt + evmGenesis.Params.ChainConfig.CancunTime = &maxInt + evmGenesis.Params.ChainConfig.PragueTime = &maxInt genesis[types.ModuleName] = app.AppCodec().MustMarshalJSON(evmGenesis) } return genesis diff --git a/x/evm/keeper/keeper_test.go b/x/evm/keeper/keeper_test.go index 07180416ca..e8f4f2c90c 100644 --- a/x/evm/keeper/keeper_test.go +++ b/x/evm/keeper/keeper_test.go @@ -60,6 +60,8 @@ func (suite *KeeperTestSuite) SetupTest() { evmGenesis.Params.ChainConfig.GrayGlacierBlock = &maxInt evmGenesis.Params.ChainConfig.MergeNetsplitBlock = &maxInt evmGenesis.Params.ChainConfig.ShanghaiTime = &maxInt + evmGenesis.Params.ChainConfig.CancunTime = &maxInt + evmGenesis.Params.ChainConfig.PragueTime = &maxInt genesis[types.ModuleName] = app.AppCodec().MustMarshalJSON(evmGenesis) } return genesis diff --git a/x/evm/keeper/state_transition_benchmark_test.go b/x/evm/keeper/state_transition_benchmark_test.go index 218554a362..a869c2cf51 100644 --- a/x/evm/keeper/state_transition_benchmark_test.go +++ b/x/evm/keeper/state_transition_benchmark_test.go @@ -45,6 +45,8 @@ func (suite *StateTransitionBenchmarkTestSuite) SetupTest(b *testing.B) { evmGenesis.Params.ChainConfig.GrayGlacierBlock = &maxInt evmGenesis.Params.ChainConfig.MergeNetsplitBlock = &maxInt evmGenesis.Params.ChainConfig.ShanghaiTime = &maxInt + evmGenesis.Params.ChainConfig.CancunTime = &maxInt + evmGenesis.Params.ChainConfig.PragueTime = &maxInt genesis[evmtypes.ModuleName] = app.AppCodec().MustMarshalJSON(evmGenesis) } return genesis diff --git a/x/evm/types/chain_config.go b/x/evm/types/chain_config.go index f092760206..f1f8fef837 100644 --- a/x/evm/types/chain_config.go +++ b/x/evm/types/chain_config.go @@ -75,6 +75,8 @@ func DefaultChainConfig() ChainConfig { grayGlacierBlock := sdkmath.ZeroInt() mergeNetsplitBlock := sdkmath.ZeroInt() shanghaiTime := sdkmath.ZeroInt() + cancunTime := sdkmath.ZeroInt() + pragueTime := sdkmath.ZeroInt() return ChainConfig{ HomesteadBlock: &homesteadBlock, @@ -95,6 +97,8 @@ func DefaultChainConfig() ChainConfig { GrayGlacierBlock: &grayGlacierBlock, MergeNetsplitBlock: &mergeNetsplitBlock, ShanghaiTime: &shanghaiTime, + CancunTime: &cancunTime, + PragueTime: &pragueTime, } } From 4d1d0a7384f0a9698291f88a1cf8a50b360885b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 04:01:36 +0000 Subject: [PATCH 137/210] build(deps): bump actions/create-github-app-token from 2.0.6 to 2.1.1 (#697) * build(deps): bump actions/create-github-app-token from 2.0.6 to 2.1.1 Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2.0.6 to 2.1.1. - [Release notes](https://github.com/actions/create-github-app-token/releases) - [Commits](https://github.com/actions/create-github-app-token/compare/df432ceedc7162793a195dd1713ff69aefc7379e...a8d616148505b5069dccd32f177bb87d7f39123b) --- updated-dependencies: - dependency-name: actions/create-github-app-token dependency-version: 2.1.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Update dependabot-update-all.yml Signed-off-by: randy-cro --------- Signed-off-by: dependabot[bot] Signed-off-by: randy-cro Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: randy-cro --- .github/workflows/dependabot-update-all.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dependabot-update-all.yml b/.github/workflows/dependabot-update-all.yml index ba126ac23b..b8f0afaa6e 100644 --- a/.github/workflows/dependabot-update-all.yml +++ b/.github/workflows/dependabot-update-all.yml @@ -14,7 +14,7 @@ jobs: if: ${{ github.actor == 'dependabot[bot]' }} steps: - name: Generate Token - uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v1 + uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1 id: app-token with: app-id: "${{ secrets.APP_ID }}" @@ -44,4 +44,4 @@ jobs: uses: EndBug/add-and-commit@v9 with: default_author: user_info - message: "${{ github.event.pull_request.title }} for all modules" \ No newline at end of file + message: "${{ github.event.pull_request.title }} for all modules" From 5e5ee0d9cd1b5af3a25aa748e0a093884861897b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 12:40:46 +0800 Subject: [PATCH 138/210] build(deps): bump actions/checkout from 4 to 5 (#699) Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/changelog-reminder.yml | 2 +- .github/workflows/dependabot-update-all.yml | 2 +- .github/workflows/dependencies-review.yml | 2 +- .github/workflows/pr_labeler.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/changelog-reminder.yml b/.github/workflows/changelog-reminder.yml index aa23048509..47913990c0 100644 --- a/.github/workflows/changelog-reminder.yml +++ b/.github/workflows/changelog-reminder.yml @@ -19,7 +19,7 @@ jobs: # Skip draft PRs and PRs starting with: revert, test, chore, ci, docs, style, build, refactor if: "!github.event.pull_request.draft && !contains(github.event.pull_request.title, 'revert') && !contains(github.event.pull_request.title, 'test') && !contains(github.event.pull_request.title, 'chore') && !contains(github.event.pull_request.title, 'ci') && !contains(github.event.pull_request.title, 'docs') && !contains(github.event.pull_request.title, 'style') && !contains(github.event.pull_request.title, 'build') && !contains(github.event.pull_request.title, 'refactor')" steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: mskelton/changelog-reminder-action@v3 with: message: "@${{ github.actor }} your pull request is missing a changelog!" \ No newline at end of file diff --git a/.github/workflows/dependabot-update-all.yml b/.github/workflows/dependabot-update-all.yml index b8f0afaa6e..da8756ade5 100644 --- a/.github/workflows/dependabot-update-all.yml +++ b/.github/workflows/dependabot-update-all.yml @@ -19,7 +19,7 @@ jobs: with: app-id: "${{ secrets.APP_ID }}" private-key: "${{ secrets.APP_PRIVATE_KEY }}" - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.event.pull_request.head.ref }} diff --git a/.github/workflows/dependencies-review.yml b/.github/workflows/dependencies-review.yml index b6f22a580f..421cdc91e5 100644 --- a/.github/workflows/dependencies-review.yml +++ b/.github/workflows/dependencies-review.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Checkout Repository" - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: "Setup Go" uses: actions/setup-go@v5 with: diff --git a/.github/workflows/pr_labeler.yml b/.github/workflows/pr_labeler.yml index eea82d8430..e7bc9ba664 100644 --- a/.github/workflows/pr_labeler.yml +++ b/.github/workflows/pr_labeler.yml @@ -9,7 +9,7 @@ jobs: pull-requests: write # for actions/labeler to add labels to PRs runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/labeler@v4 # v5 is broken, ref https://github.com/actions/labeler/issues/712. Do not bump. with: configuration-path: .github/pr_labeler.yml From a6c53d04f5b7b9cc4fb604b5be3dee6995fb0fb5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 13:01:33 +0800 Subject: [PATCH 139/210] build(deps): bump amannn/action-semantic-pull-request (#701) Bumps [amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) from 5.5.3 to 6.1.0. - [Release notes](https://github.com/amannn/action-semantic-pull-request/releases) - [Changelog](https://github.com/amannn/action-semantic-pull-request/blob/main/CHANGELOG.md) - [Commits](https://github.com/amannn/action-semantic-pull-request/compare/v5.5.3...v6.1.0) --- updated-dependencies: - dependency-name: amannn/action-semantic-pull-request dependency-version: 6.1.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/lint-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index 9eb9e2e8ee..1a93fbbae3 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -17,7 +17,7 @@ jobs: statuses: write # for amannn/action-semantic-pull-request to mark status of analyzed PR runs-on: ubuntu-latest steps: - - uses: amannn/action-semantic-pull-request@v5.5.3 + - uses: amannn/action-semantic-pull-request@v6.1.0 id: lint_pr_title env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 7fc3ff9b0591d7eadcdef433ab7dbf0237a14582 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 05:15:58 +0000 Subject: [PATCH 140/210] build(deps): bump the npm_and_yarn group across 2 directories with 2 updates (#708) Bumps the npm_and_yarn group with 2 updates in the /tests/integration_tests/hardhat directory: [cipher-base](https://github.com/crypto-browserify/cipher-base) and [sha.js](https://github.com/crypto-browserify/sha.js). Bumps the npm_and_yarn group with 2 updates in the /tests/solidity directory: [cipher-base](https://github.com/crypto-browserify/cipher-base) and [sha.js](https://github.com/crypto-browserify/sha.js). Updates `cipher-base` from 1.0.4 to 1.0.6 - [Changelog](https://github.com/browserify/cipher-base/blob/master/CHANGELOG.md) - [Commits](https://github.com/crypto-browserify/cipher-base/compare/v1.0.4...v1.0.6) Updates `sha.js` from 2.4.11 to 2.4.12 - [Changelog](https://github.com/browserify/sha.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/crypto-browserify/sha.js/compare/v2.4.11...v2.4.12) Updates `cipher-base` from 1.0.4 to 1.0.6 - [Changelog](https://github.com/browserify/cipher-base/blob/master/CHANGELOG.md) - [Commits](https://github.com/crypto-browserify/cipher-base/compare/v1.0.4...v1.0.6) Updates `sha.js` from 2.4.11 to 2.4.12 - [Changelog](https://github.com/browserify/sha.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/crypto-browserify/sha.js/compare/v2.4.11...v2.4.12) --- updated-dependencies: - dependency-name: cipher-base dependency-version: 1.0.6 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: sha.js dependency-version: 2.4.12 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: cipher-base dependency-version: 1.0.6 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: sha.js dependency-version: 2.4.12 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: randy-cro --- .../hardhat/package-lock.json | 51 +++++++++++-------- tests/solidity/yarn.lock | 21 ++++---- 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/tests/integration_tests/hardhat/package-lock.json b/tests/integration_tests/hardhat/package-lock.json index a84a023a74..9355e0318b 100644 --- a/tests/integration_tests/hardhat/package-lock.json +++ b/tests/integration_tests/hardhat/package-lock.json @@ -3273,12 +3273,15 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" }, "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/classic-level": { @@ -7745,15 +7748,22 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" }, "bin": { "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/side-channel": { @@ -11449,12 +11459,12 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" }, "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" } }, "classic-level": { @@ -14706,12 +14716,13 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" } }, "side-channel": { diff --git a/tests/solidity/yarn.lock b/tests/solidity/yarn.lock index 59ba66ece8..8145f5f267 100644 --- a/tests/solidity/yarn.lock +++ b/tests/solidity/yarn.lock @@ -4206,12 +4206,12 @@ cids@^1.0.0, cids@^1.1.4, cids@^1.1.5: uint8arrays "^3.0.0" cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + version "1.0.6" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.6.tgz#8fe672437d01cd6c4561af5334e0cc50ff1955f7" + integrity sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + safe-buffer "^5.2.1" class-is@^1.1.0: version "1.1.0" @@ -11490,12 +11490,13 @@ setprototypeof@1.2.0: integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + version "2.4.12" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.12.tgz#eb8b568bf383dfd1867a32c3f2b74eb52bdbf23f" + integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + safe-buffer "^5.2.1" + to-buffer "^1.2.0" sha3@^2.1.1: version "2.1.4" From 5ca8ec8bd23d20f732303956a4d85f3d28ee3f6b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 06:36:17 +0000 Subject: [PATCH 141/210] build(deps): bump google.golang.org/grpc from 1.74.2 to 1.75.0 (#704) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.74.2 to 1.75.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.74.2...v1.75.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-version: 1.75.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: randy-cro --- go.mod | 20 ++++++++++---------- go.sum | 42 ++++++++++++++++++++++-------------------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/go.mod b/go.mod index 537a4fdbe9..611f2d2d94 100644 --- a/go.mod +++ b/go.mod @@ -52,8 +52,8 @@ require ( golang.org/x/net v0.43.0 golang.org/x/sync v0.16.0 golang.org/x/text v0.28.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a - google.golang.org/grpc v1.74.2 + google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 + google.golang.org/grpc v1.75.0 google.golang.org/protobuf v1.36.7 sigs.k8s.io/yaml v1.6.0 ) @@ -74,7 +74,7 @@ require ( github.com/99designs/keyring v1.2.2 // indirect github.com/DataDog/datadog-go v4.8.3+incompatible // indirect github.com/DataDog/zstd v1.5.7 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect @@ -137,7 +137,7 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/getsentry/sentry-go v0.33.0 // indirect - github.com/go-jose/go-jose/v4 v4.0.5 // indirect + github.com/go-jose/go-jose/v4 v4.1.1 // indirect github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect @@ -250,11 +250,11 @@ require ( go.opentelemetry.io/contrib/detectors/gcp v1.36.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect - go.opentelemetry.io/otel v1.36.0 // indirect - go.opentelemetry.io/otel/metric v1.36.0 // indirect - go.opentelemetry.io/otel/sdk v1.36.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.36.0 // indirect - go.opentelemetry.io/otel/trace v1.36.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/sdk v1.37.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect @@ -268,7 +268,7 @@ require ( golang.org/x/tools v0.35.0 // indirect google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.2 // indirect nhooyr.io/websocket v1.8.11 // indirect diff --git a/go.sum b/go.sum index b7cbdb8835..d12d8a7008 100644 --- a/go.sum +++ b/go.sum @@ -656,8 +656,8 @@ github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bp github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 h1:ErKg/3iS1AKcTkf3yixlZ54f9U1rljCkQyEXWUnIUxc= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo= @@ -1016,8 +1016,8 @@ github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmn github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= -github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= +github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI= +github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= @@ -1748,18 +1748,18 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.5 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0/go.mod h1:HDBUsEjOuRC0EzKZ1bSaRGZWUBAzo+MhAcUUORSr4D0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= -go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= -go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= -go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= -go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= -go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= -go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -2257,6 +2257,8 @@ gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJ gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= @@ -2468,10 +2470,10 @@ google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= -google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= +google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -2519,8 +2521,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4= -google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 6eca95bfc5f4151a5e7ab7aa445b039c43353a80 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 06:58:48 +0000 Subject: [PATCH 142/210] build(deps): bump github.com/hashicorp/go-getter in the go_modules group (#705) Bumps the go_modules group with 1 update: [github.com/hashicorp/go-getter](https://github.com/hashicorp/go-getter). Updates `github.com/hashicorp/go-getter` from 1.7.8 to 1.7.9 - [Release notes](https://github.com/hashicorp/go-getter/releases) - [Changelog](https://github.com/hashicorp/go-getter/blob/main/.goreleaser.yml) - [Commits](https://github.com/hashicorp/go-getter/compare/v1.7.8...v1.7.9) --- updated-dependencies: - dependency-name: github.com/hashicorp/go-getter dependency-version: 1.7.9 dependency-type: indirect dependency-group: go_modules ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: randy-cro --- go.mod | 3 +-- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 611f2d2d94..f990d6ba95 100644 --- a/go.mod +++ b/go.mod @@ -167,7 +167,7 @@ require ( github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.8 // indirect + github.com/hashicorp/go-getter v1.7.9 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-plugin v1.6.3 // indirect @@ -197,7 +197,6 @@ require ( github.com/mattn/go-runewidth v0.0.15 // indirect github.com/minio/highwayhash v1.0.3 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/mtibben/percent v0.2.1 // indirect diff --git a/go.sum b/go.sum index d12d8a7008..9ed55fc10a 100644 --- a/go.sum +++ b/go.sum @@ -1246,8 +1246,8 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.8 h1:mshVHx1Fto0/MydBekWan5zUipGq7jO0novchgMmSiY= -github.com/hashicorp/go-getter v1.7.8/go.mod h1:2c6CboOEb9jG6YvmC9xdD+tyAFsrUaJPedwXDGr0TM4= +github.com/hashicorp/go-getter v1.7.9 h1:G9gcjrDixz7glqJ+ll5IWvggSBR+R0B54DSRt4qfdC4= +github.com/hashicorp/go-getter v1.7.9/go.mod h1:dyFCmT1AQkDfOIt9NH8pw9XBDqNrIKJT5ylbpi7zPNE= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -1422,8 +1422,6 @@ github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= From 5bb0d6b16b57565a43cbc70005d35c310e6c7c2c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 07:32:24 +0000 Subject: [PATCH 143/210] build(deps): bump github.com/onsi/ginkgo/v2 from 2.23.4 to 2.25.0 (#706) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.23.4 to 2.25.0. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.23.4...v2.25.0) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-version: 2.25.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: randy-cro --- go.mod | 5 +++-- go.sum | 10 ++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index f990d6ba95..b1ae798905 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/hashicorp/go-metrics v0.5.4 github.com/holiman/uint256 v1.3.2 github.com/improbable-eng/grpc-web v0.15.0 - github.com/onsi/ginkgo/v2 v2.23.4 + github.com/onsi/ginkgo/v2 v2.25.0 github.com/onsi/gomega v1.38.0 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 @@ -77,6 +77,7 @@ require ( github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect + github.com/Masterminds/semver/v3 v3.3.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/PuerkitoBio/purell v1.1.1 // indirect github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect @@ -264,7 +265,7 @@ require ( golang.org/x/sys v0.35.0 // indirect golang.org/x/term v0.34.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.35.0 // indirect + golang.org/x/tools v0.36.0 // indirect google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect diff --git a/go.sum b/go.sum index 9ed55fc10a..d223007c39 100644 --- a/go.sum +++ b/go.sum @@ -666,6 +666,8 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapp github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= +github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= @@ -1471,8 +1473,8 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= -github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= +github.com/onsi/ginkgo/v2 v2.25.0 h1:LJu94oDZUdgnw+GD0Sk/iwG9c5Fnr1vLgMb4FUUwWxE= +github.com/onsi/ginkgo/v2 v2.25.0/go.mod h1:ppTWQ1dh9KM/F1XgpeRqelR+zHVwV81DGRSDnFxK7Sk= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= @@ -2241,8 +2243,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= -golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 00b221a9aed7bcadac65219d4f5d42dd0041c3a1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 07:53:34 +0000 Subject: [PATCH 144/210] build(deps): bump google.golang.org/protobuf from 1.36.7 to 1.36.8 (#707) Bumps google.golang.org/protobuf from 1.36.7 to 1.36.8. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-version: 1.36.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index b1ae798905..e047e72342 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,7 @@ require ( golang.org/x/text v0.28.0 google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.7 + google.golang.org/protobuf v1.36.8 sigs.k8s.io/yaml v1.6.0 ) diff --git a/go.sum b/go.sum index d223007c39..41258dd505 100644 --- a/go.sum +++ b/go.sum @@ -2542,8 +2542,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 90b601edcf35052c0ddcaf4645f809b3643bdb9f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 08:58:21 +0000 Subject: [PATCH 145/210] build(deps): bump the npm_and_yarn group across 2 directories with 1 update (#709) Bumps the npm_and_yarn group with 1 update in the /tests/integration_tests/hardhat directory: [cipher-base](https://github.com/crypto-browserify/cipher-base). Bumps the npm_and_yarn group with 1 update in the /tests/solidity directory: [cipher-base](https://github.com/crypto-browserify/cipher-base). Updates `cipher-base` from 1.0.4 to 1.0.6 - [Changelog](https://github.com/browserify/cipher-base/blob/master/CHANGELOG.md) - [Commits](https://github.com/crypto-browserify/cipher-base/compare/v1.0.4...v1.0.6) Updates `cipher-base` from 1.0.4 to 1.0.6 - [Changelog](https://github.com/browserify/cipher-base/blob/master/CHANGELOG.md) - [Commits](https://github.com/crypto-browserify/cipher-base/compare/v1.0.4...v1.0.6) --- updated-dependencies: - dependency-name: cipher-base dependency-version: 1.0.6 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: cipher-base dependency-version: 1.0.6 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: randy-cro From 5fd5b49776fa46d70a1b53d65efe468eaea53e7e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 19:12:41 +0800 Subject: [PATCH 146/210] build(deps): bump github.com/onsi/ginkgo/v2 from 2.25.0 to 2.25.1 (#710) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.25.0 to 2.25.1. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.25.0...v2.25.1) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-version: 2.25.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e047e72342..664297db1a 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/hashicorp/go-metrics v0.5.4 github.com/holiman/uint256 v1.3.2 github.com/improbable-eng/grpc-web v0.15.0 - github.com/onsi/ginkgo/v2 v2.25.0 + github.com/onsi/ginkgo/v2 v2.25.1 github.com/onsi/gomega v1.38.0 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 diff --git a/go.sum b/go.sum index 41258dd505..0c497c2fdc 100644 --- a/go.sum +++ b/go.sum @@ -1473,8 +1473,8 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.25.0 h1:LJu94oDZUdgnw+GD0Sk/iwG9c5Fnr1vLgMb4FUUwWxE= -github.com/onsi/ginkgo/v2 v2.25.0/go.mod h1:ppTWQ1dh9KM/F1XgpeRqelR+zHVwV81DGRSDnFxK7Sk= +github.com/onsi/ginkgo/v2 v2.25.1 h1:Fwp6crTREKM+oA6Cz4MsO8RhKQzs2/gOIVOUscMAfZY= +github.com/onsi/ginkgo/v2 v2.25.1/go.mod h1:ppTWQ1dh9KM/F1XgpeRqelR+zHVwV81DGRSDnFxK7Sk= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= From e4feb931575d548eaf8e487fd3e15f8f59f6d64a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Aug 2025 19:41:04 +0800 Subject: [PATCH 147/210] build(deps): bump amannn/action-semantic-pull-request (#711) Bumps [amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) from 6.1.0 to 6.1.1. - [Release notes](https://github.com/amannn/action-semantic-pull-request/releases) - [Changelog](https://github.com/amannn/action-semantic-pull-request/blob/main/CHANGELOG.md) - [Commits](https://github.com/amannn/action-semantic-pull-request/compare/v6.1.0...v6.1.1) --- updated-dependencies: - dependency-name: amannn/action-semantic-pull-request dependency-version: 6.1.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: randy-cro --- .github/workflows/lint-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index 1a93fbbae3..3c8f7da1d2 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -17,7 +17,7 @@ jobs: statuses: write # for amannn/action-semantic-pull-request to mark status of analyzed PR runs-on: ubuntu-latest steps: - - uses: amannn/action-semantic-pull-request@v6.1.0 + - uses: amannn/action-semantic-pull-request@v6.1.1 id: lint_pr_title env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 0fc6b9e7e7d62bd4ba06f6ba1c92a9b25db4ea53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Aug 2025 16:11:19 +0800 Subject: [PATCH 148/210] build(deps): bump github.com/onsi/gomega from 1.38.0 to 1.38.2 (#714) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.38.0 to 1.38.2. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.38.0...v1.38.2) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-version: 1.38.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 5 +++-- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 664297db1a..f9ddbc9b36 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/holiman/uint256 v1.3.2 github.com/improbable-eng/grpc-web v0.15.0 github.com/onsi/ginkgo/v2 v2.25.1 - github.com/onsi/gomega v1.38.0 + github.com/onsi/gomega v1.38.2 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 github.com/spf13/cast v1.9.2 @@ -77,7 +77,7 @@ require ( github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect - github.com/Masterminds/semver/v3 v3.3.1 // indirect + github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/PuerkitoBio/purell v1.1.1 // indirect github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect @@ -258,6 +258,7 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.17.0 // indirect golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect diff --git a/go.sum b/go.sum index 0c497c2fdc..2146dc86ca 100644 --- a/go.sum +++ b/go.sum @@ -666,8 +666,8 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapp github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= -github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= @@ -1479,8 +1479,8 @@ github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5 github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.38.0 h1:c/WX+w8SLAinvuKKQFh77WEucCnPk4j2OTUr7lt7BeY= -github.com/onsi/gomega v1.38.0/go.mod h1:OcXcwId0b9QsE7Y49u+BTrL4IdKOBOKnD6VQNTJEB6o= +github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A= +github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= @@ -1783,8 +1783,8 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= -go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= -go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/arch v0.17.0 h1:4O3dfLzd+lQewptAHqjewQZQDyEdejz3VwgeYwkZneU= golang.org/x/arch v0.17.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= From 91ade4621b78fe6b52e803618965131dcc08f7d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Aug 2025 08:29:45 +0000 Subject: [PATCH 149/210] build(deps): bump github.com/stretchr/testify from 1.10.0 to 1.11.1 (#715) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.10.0 to 1.11.1. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.10.0...v1.11.1) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-version: 1.11.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f9ddbc9b36..d376695250 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ require ( github.com/spf13/cobra v1.9.1 github.com/spf13/viper v1.20.1 github.com/status-im/keycard-go v0.3.3 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.11.1 github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 github.com/tyler-smith/go-bip39 v1.1.0 diff --git a/go.sum b/go.sum index 2146dc86ca..70ad2b68b8 100644 --- a/go.sum +++ b/go.sum @@ -1666,8 +1666,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/supranational/blst v0.3.14 h1:xNMoHRJOTwMn63ip6qoWJ2Ymgvj7E2b9jY2FAwY+qRo= From ee752ec0fda98724cb7d0e9676eefc93a3c84c5d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:50:25 +0800 Subject: [PATCH 150/210] build(deps): bump the go_modules group with 2 updates (#716) Bumps the go_modules group with 2 updates: [github.com/go-viper/mapstructure/v2](https://github.com/go-viper/mapstructure) and [github.com/ulikunitz/xz](https://github.com/ulikunitz/xz). Updates `github.com/go-viper/mapstructure/v2` from 2.3.0 to 2.4.0 - [Release notes](https://github.com/go-viper/mapstructure/releases) - [Changelog](https://github.com/go-viper/mapstructure/blob/main/CHANGELOG.md) - [Commits](https://github.com/go-viper/mapstructure/compare/v2.3.0...v2.4.0) Updates `github.com/ulikunitz/xz` from 0.5.11 to 0.5.14 - [Commits](https://github.com/ulikunitz/xz/compare/v0.5.11...v0.5.14) --- updated-dependencies: - dependency-name: github.com/go-viper/mapstructure/v2 dependency-version: 2.4.0 dependency-type: indirect dependency-group: go_modules - dependency-name: github.com/ulikunitz/xz dependency-version: 0.5.14 dependency-type: indirect dependency-group: go_modules ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index d376695250..aca43714a1 100644 --- a/go.mod +++ b/go.mod @@ -147,7 +147,7 @@ require ( github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect - github.com/go-viper/mapstructure/v2 v2.3.0 // indirect + github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect @@ -240,7 +240,7 @@ require ( github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect - github.com/ulikunitz/xz v0.5.11 // indirect + github.com/ulikunitz/xz v0.5.14 // indirect github.com/zeebo/errs v1.4.0 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect diff --git a/go.sum b/go.sum index 70ad2b68b8..19a8aab780 100644 --- a/go.sum +++ b/go.sum @@ -1055,8 +1055,8 @@ github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= -github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= +github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= @@ -1700,8 +1700,8 @@ github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3C github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= -github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.14 h1:uv/0Bq533iFdnMHZdRBTOlaNMdb1+ZxXIlHDZHIHcvg= +github.com/ulikunitz/xz v0.5.14/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= From 99c354d769c177a4b2ff258a3554436606b8e525 Mon Sep 17 00:00:00 2001 From: Xinyu <91446598+XinyuCRO@users.noreply.github.com> Date: Wed, 3 Sep 2025 18:18:49 +0800 Subject: [PATCH 151/210] feat: support EIP-7702 transaction type (#690) --- CHANGELOG.md | 1 + ante/eth.go | 14 +- ante/interfaces/setup.go | 10 + evmd/ante/eth_test.go | 9 +- evmd/ante/handler_options.go | 2 +- gomod2nix.toml | 95 +- nix/testenv.nix | 24 +- proto/ethermint/evm/v1/chain_config.proto | 84 +- proto/ethermint/evm/v1/chain_config_v0.proto | 78 +- .../evm/v1/set_code_authorization.proto | 22 + proto/ethermint/evm/v1/tx.proto | 50 +- proto/ethermint/feemarket/v1/feemarket.proto | 6 +- proto/ethermint/types/v1/dynamic_fee.proto | 3 +- rpc/backend/call_tx.go | 3 - scripts/geth-genesis.json | 16 +- tests/integration_tests/bytecode_deployer.py | 74 ++ .../hardhat/contracts/BytecodeDeployer.sol | 74 ++ tests/integration_tests/network.py | 6 +- tests/integration_tests/poetry.lock | 607 ++++++++---- tests/integration_tests/pyproject.toml | 4 +- tests/integration_tests/test_account.py | 4 +- tests/integration_tests/test_batch.py | 4 +- tests/integration_tests/test_block.py | 6 +- tests/integration_tests/test_call.py | 23 +- .../test_debug_traceblock.py | 2 +- tests/integration_tests/test_estimate_gas.py | 5 +- tests/integration_tests/test_filters.py | 70 +- tests/integration_tests/test_gas.py | 33 +- tests/integration_tests/test_grpc_only.py | 2 +- tests/integration_tests/test_priority.py | 5 +- tests/integration_tests/test_pruned_node.py | 5 +- tests/integration_tests/test_set_code_tx.py | 621 ++++++++++++ tests/integration_tests/test_tracers.py | 35 +- tests/integration_tests/test_types.py | 4 +- tests/integration_tests/test_upgrade.py | 4 +- tests/integration_tests/test_websockets.py | 5 +- tests/integration_tests/utils.py | 20 +- x/evm/handler_test.go | 8 +- x/evm/keeper/set_code_authorizations.go | 70 ++ x/evm/keeper/state_transition.go | 7 + x/evm/keeper/utils.go | 26 +- x/evm/keeper/utils_test.go | 8 +- x/evm/types/auth_list.go | 54 ++ x/evm/types/codec.go | 1 + x/evm/types/dynamic_fee_tx_test.go | 2 +- x/evm/types/msg.go | 23 +- x/evm/types/msg_test.go | 32 + x/evm/types/set_code_authorization.pb.go | 540 +++++++++++ x/evm/types/set_code_tx.go | 305 ++++++ x/evm/types/set_code_tx_test.go | 648 +++++++++++++ x/evm/types/tx.pb.go | 889 ++++++++++++++++-- x/evm/types/tx_args.go | 47 +- x/evm/types/tx_data.go | 3 + 53 files changed, 4158 insertions(+), 535 deletions(-) create mode 100644 proto/ethermint/evm/v1/set_code_authorization.proto create mode 100644 tests/integration_tests/bytecode_deployer.py create mode 100644 tests/integration_tests/hardhat/contracts/BytecodeDeployer.sol create mode 100644 tests/integration_tests/test_set_code_tx.py create mode 100644 x/evm/keeper/set_code_authorizations.go create mode 100644 x/evm/types/auth_list.go create mode 100644 x/evm/types/set_code_authorization.pb.go create mode 100644 x/evm/types/set_code_tx.go create mode 100644 x/evm/types/set_code_tx_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 52800ae1bf..1daa78671d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#695](https://github.com/crypto-org-chain/ethermint/pull/695) Remove more miner unused methods * (evm) [#696](https://github.com/crypto-org-chain/ethermint/pull/696) Upgrade golangci-lint to v2 and enhance github workflows * (evm) [#702](https://github.com/crypto-org-chain/ethermint/pull/702) Add default value of CancunTime and PragueTime in chain config +* (evm) [#690](https://github.com/crypto-org-chain/ethermint/pull/690) Support EIP-7702 transaction type ### Features diff --git a/ante/eth.go b/ante/eth.go index dee8a3b7f7..9b363a1018 100644 --- a/ante/eth.go +++ b/ante/eth.go @@ -71,6 +71,7 @@ func VerifyEthAccount( ctx sdk.Context, tx sdk.Tx, evmKeeper interfaces.EVMKeeper, evmDenom string, accountGetter AccountGetter, + rules params.Rules, ) error { if !ctx.IsCheckTx() { return nil @@ -92,10 +93,13 @@ func VerifyEthAccount( // check whether the sender address is EOA acct := statedb.NewAccountFromSdkAccount(accountGetter(from)) - if acct.IsContract() { - fromAddr := common.BytesToAddress(from) - return errorsmod.Wrapf(errortypes.ErrInvalidType, - "the sender is not EOA: address %s, codeHash <%s>", fromAddr, acct.CodeHash) + + if !rules.IsPrague { + if acct.IsContract() { + fromAddr := common.BytesToAddress(from) + return errorsmod.Wrapf(errortypes.ErrInvalidType, + "the sender is not EOA: address %s, codeHash <%s>", fromAddr, acct.CodeHash) + } } balance := evmKeeper.GetBalance(ctx, from, evmDenom) @@ -162,7 +166,7 @@ func CheckEthGasConsume( continue } - fees, err := keeper.VerifyFee(msgEthTx, evmDenom, baseFee, rules.IsHomestead, rules.IsIstanbul, rules.IsShanghai, ctx.IsCheckTx()) + fees, err := keeper.VerifyFee(msgEthTx, evmDenom, baseFee, rules, ctx.IsCheckTx()) if err != nil { return ctx, errorsmod.Wrapf(err, "failed to verify the fees") } diff --git a/ante/interfaces/setup.go b/ante/interfaces/setup.go index ac50c462ad..378d5ea186 100644 --- a/ante/interfaces/setup.go +++ b/ante/interfaces/setup.go @@ -125,6 +125,16 @@ func ValidateEthBasic(ctx sdk.Context, tx sdk.Tx, evmParams *evmtypes.Params, ba "rejected unprotected Ethereum transaction. Please EIP155 sign your transaction to protect it against replay-attacks") } + // Check that EIP-7702 authorization list signatures are well formed. + if tx.SetCodeAuthorizations() != nil { + if tx.To() == nil { + return errorsmod.Wrapf(errortypes.ErrInvalidRequest, "EIP-7702 set code transaction cannot be contract creation (sender %v)", msgEthTx.From) + } + if len(tx.SetCodeAuthorizations()) == 0 { + return errorsmod.Wrapf(errortypes.ErrInvalidRequest, "EIP-7702 authorization list cannot be empty (sender %v)", msgEthTx.From) + } + } + txFee = txFee.Add(sdk.Coin{Denom: evmDenom, Amount: sdkmath.NewIntFromBigInt(msgEthTx.GetFee())}) } diff --git a/evmd/ante/eth_test.go b/evmd/ante/eth_test.go index 837f167847..39d4a75951 100644 --- a/evmd/ante/eth_test.go +++ b/evmd/ante/eth_test.go @@ -3,10 +3,11 @@ package ante_test import ( "errors" "fmt" - "github.com/evmos/ethermint/ante/cache" "math" "math/big" + "github.com/evmos/ethermint/ante/cache" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/holiman/uint256" "google.golang.org/protobuf/proto" @@ -14,6 +15,7 @@ import ( storetypes "cosmossdk.io/store/types" "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/params" "github.com/evmos/ethermint/ante" "github.com/evmos/ethermint/server/config" "github.com/evmos/ethermint/tests" @@ -96,7 +98,10 @@ func (suite *AnteTestSuite) TestNewEthAccountVerificationDecorator() { suite.Require().NoError(vmdb.Commit()) accountGetter := ante.NewCachedAccountGetter(suite.ctx, suite.app.AccountKeeper) - err := ante.VerifyEthAccount(suite.ctx.WithIsCheckTx(tc.checkTx), tc.tx, suite.app.EvmKeeper, evmtypes.DefaultEVMDenom, accountGetter) + rules := params.Rules{ + IsPrague: false, + } + err := ante.VerifyEthAccount(suite.ctx.WithIsCheckTx(tc.checkTx), tc.tx, suite.app.EvmKeeper, evmtypes.DefaultEVMDenom, accountGetter, rules) if tc.expPass { suite.Require().NoError(err) diff --git a/evmd/ante/handler_options.go b/evmd/ante/handler_options.go index 5fb2ae4a2f..9924cfd546 100644 --- a/evmd/ante/handler_options.go +++ b/evmd/ante/handler_options.go @@ -139,7 +139,7 @@ func newEthAnteHandler(options HandlerOptions) sdk.AnteHandler { // it's safe because there's no store branching in the ante handlers. accountGetter := evmante.NewCachedAccountGetter(ctx, options.AccountKeeper) - if err := evmante.VerifyEthAccount(ctx, tx, options.EvmKeeper, evmDenom, accountGetter); err != nil { + if err := evmante.VerifyEthAccount(ctx, tx, options.EvmKeeper, evmDenom, accountGetter, rules); err != nil { return ctx, err } diff --git a/gomod2nix.toml b/gomod2nix.toml index a72740ed07..af77f1a543 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -44,8 +44,8 @@ schema = 3 version = "v1.0.2" hash = "sha256-ZgO21iLMf6JN740JQizNI0v1mogNUTc77CXrUVSvDcg=" [mod."cosmossdk.io/log"] - version = "v1.5.1" - hash = "sha256-0k5Njvo59BHi923/+frZmPZnzc7ebXaMi0+MpNFLu0A=" + version = "v1.6.1" + hash = "sha256-wz5TjyHP+24VL57msJLVepTqNChSE2WMW9Dt33AyPWo=" [mod."cosmossdk.io/math"] version = "v1.5.3" hash = "sha256-8jBAGa0D9EYBzn9SxiJNZwj3ChFtX03oow8BEP7dIU4=" @@ -89,14 +89,17 @@ schema = 3 version = "v1.5.7" hash = "sha256-GlSZOyix7Ct7tOKmSKpGckDjMhTtiYPBTpoWdwGLx5M=" [mod."github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp"] - version = "v1.27.0" - hash = "sha256-zdT1oaizbstU0ZlAzsV/EmOkkaOoDfX7tXrMYNRD7gI=" + version = "v1.29.0" + hash = "sha256-RjFWSVTnRl6VVyvHo0xSdP2N8r/M1uDrMY13QuzuoK8=" [mod."github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric"] version = "v0.48.1" hash = "sha256-hClW3wbw/4yAIxh+Wb8muAuq5W4EF5lF219ShJX4x40=" [mod."github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping"] version = "v0.48.1" hash = "sha256-r/Aeb+gQXcko/VEtRJ8eMh6PoC+oWAXCN0PtscvzcPw=" + [mod."github.com/Masterminds/semver/v3"] + version = "v3.4.0" + hash = "sha256-75kRraVwYVjYLWZvuSlts4Iu28Eh3SpiF0GHc7vCYHI=" [mod."github.com/Microsoft/go-winio"] version = "v0.6.2" hash = "sha256-tVNWDUMILZbJvarcl/E7tpSnkn7urqgSHa2Eaka5vSU=" @@ -143,11 +146,11 @@ schema = 3 version = "v1.1.0" hash = "sha256-F+EqvufC+KBslZV/vL8ph6MqDoVD5ic5rVaM27reDqo=" [mod."github.com/bytedance/sonic"] - version = "v1.13.2" - hash = "sha256-IF2qmt4IxTwivMWHUJC8sg6d85/ORb2SWvJ54fvoAMI=" + version = "v1.14.0" + hash = "sha256-caxXESTGRVGIOMyhgZTVxjVTyoT7LkGdPjQh17H7S7Y=" [mod."github.com/bytedance/sonic/loader"] - version = "v0.2.4" - hash = "sha256-rv9LnePpm4OspSVbfSoVbohXzhu+dxE1BH1gm3mTmTc=" + version = "v0.3.0" + hash = "sha256-nYgehtTjd3INGcLqwKKzXEmjIbKYlpeDnYwewH/pskQ=" [mod."github.com/cenkalti/backoff/v4"] version = "v4.3.0" hash = "sha256-wfVjNZsGG1WoNC5aL+kdcy6QXPgZo4THAevZ1787md8=" @@ -320,8 +323,8 @@ schema = 3 version = "v0.33.0" hash = "sha256-pu9akz2POlvlU7ynCSyOKhafByB+jsQm/8uYKJjrtds=" [mod."github.com/go-jose/go-jose/v4"] - version = "v4.0.5" - hash = "sha256-xDbwQfxNiH0gdNMCuxa6qKqiAeOhsnWm8MYSM+KISew=" + version = "v4.1.1" + hash = "sha256-G8QU1HforBE7kMVMvVCOaQZ49UA0iTW2mldsBUjw+DY=" [mod."github.com/go-kit/kit"] version = "v0.13.0" hash = "sha256-EncDzq0JVtY+NLlW5lD+nbVewNYTTrfzlOxI4PuwREw=" @@ -347,8 +350,8 @@ schema = 3 version = "v3.0.0" hash = "sha256-vCCw4MXVBm33VNLXcOBccVDD1CSnzDvDdWB6w5FN1cA=" [mod."github.com/go-viper/mapstructure/v2"] - version = "v2.3.0" - hash = "sha256-1aAH3Iqp8ntSFoMT1NrgDBaKJ6UOjw/1/dzePIF2nR4=" + version = "v2.4.0" + hash = "sha256-lLfcV9z4n94hDhgyXJlde4bFB0hfzlbh+polqcJCwGE=" [mod."github.com/godbus/dbus"] version = "v0.0.0-20190726142602-4481cbc300e2" hash = "sha256-R7Gb9+Zjy80FbQSDGketoVEqfdOQKuOVTfWRjQ5kxZY=" @@ -425,8 +428,8 @@ schema = 3 version = "v0.5.2" hash = "sha256-N9GOKYo7tK6XQUFhvhImtL7PZW/mr4C4Manx/yPVvcQ=" [mod."github.com/hashicorp/go-getter"] - version = "v1.7.8" - hash = "sha256-3ISgkCNTZSC8Z6HrmBN0FmYrG08awMO4HSAvRtaIlbw=" + version = "v1.7.9" + hash = "sha256-wWMsgh5pxMdSDqUy2A0z6CT+kxmJwypieL0SLnPtBw8=" [mod."github.com/hashicorp/go-hclog"] version = "v1.6.3" hash = "sha256-BK2s+SH1tQyUaXCH4kC0/jgqiSu638UFbwamfKjFOYg=" @@ -523,9 +526,6 @@ schema = 3 [mod."github.com/mitchellh/go-homedir"] version = "v1.1.0" hash = "sha256-oduBKXHAQG8X6aqLEpqZHs5DOKe84u6WkBwi4W6cv3k=" - [mod."github.com/mitchellh/go-testing-interface"] - version = "v1.14.1" - hash = "sha256-TMGi38D13BEVN5cpeKDzKRIgLclm4ErOG+JEyqJrN/c=" [mod."github.com/mitchellh/mapstructure"] version = "v1.5.0" hash = "sha256-ztVhGQXs67MF8UadVvG72G3ly0ypQW0IRDdOOkjYwoE=" @@ -548,11 +548,11 @@ schema = 3 version = "v0.0.5" hash = "sha256-/5i70IkH/qSW5KjGzv8aQNKh9tHoz98tqtL0K2DMFn4=" [mod."github.com/onsi/ginkgo/v2"] - version = "v2.23.4" - hash = "sha256-AVq5cBqBhja/BMSMHqeLkXjmYV8+ddTRthiGWt28c38=" + version = "v2.25.1" + hash = "sha256-nBIe6GhEBn2g7/BzkzNHynfUf+Dm+b3rkN/yW7WB8vQ=" [mod."github.com/onsi/gomega"] - version = "v1.38.0" - hash = "sha256-96uL3QlcQBpnyjMbKDBO2fgq+28ay/5IQjAEQ4jIGjI=" + version = "v1.38.2" + hash = "sha256-chit6Aia8qLfUfn/2stQmXG/nqM13fDN7edfixXBFsM=" [mod."github.com/pelletier/go-toml/v2"] version = "v2.2.4" hash = "sha256-8qQIPldbsS5RO8v/FW/se3ZsAyvLzexiivzJCbGRg2Q=" @@ -647,8 +647,8 @@ schema = 3 version = "v0.5.2" hash = "sha256-VKYxrrFb1nkX6Wu3tE5DoP9+fCttwSl9pgLN6567nck=" [mod."github.com/stretchr/testify"] - version = "v1.10.0" - hash = "sha256-fJ4gnPr0vnrOhjQYQwJ3ARDKPsOtA7d4olQmQWR+wpI=" + version = "v1.11.1" + hash = "sha256-sWfjkuKJyDllDEtnM8sb/pdLzPQmUYWYtmeWz/5suUc=" [mod."github.com/subosito/gotenv"] version = "v1.6.0" hash = "sha256-LspbjTniiq2xAICSXmgqP7carwlNaLqnCTQfw2pa80A=" @@ -691,8 +691,8 @@ schema = 3 version = "v1.1.0" hash = "sha256-3YhWBtSwRLGwm7vNwqumphZG3uLBW1vwT9QkQ8JuSjU=" [mod."github.com/ulikunitz/xz"] - version = "v0.5.11" - hash = "sha256-SUyrjc2wyN3cTGKe5JdBEXjtZC1rJySRxJHVUZ59row=" + version = "v0.5.14" + hash = "sha256-21oXcIVmFyw+ukGQtflly0wpqaqh1jE0C9hLDSFYR7E=" [mod."github.com/zeebo/errs"] version = "v1.4.0" hash = "sha256-vh1b1ns2mFyr5KCECjQd2pf2JKfUfB6oR2O+k/vFda8=" @@ -721,20 +721,20 @@ schema = 3 version = "v0.58.0" hash = "sha256-iqTPHfR1wXZY/yVTWtRBMjWlZkRxasaBGNhsNWHYxGw=" [mod."go.opentelemetry.io/otel"] - version = "v1.36.0" - hash = "sha256-j8wojdCtKal3LKojanHA8KXXQ0FkbWONpO8tUxpJDko=" + version = "v1.37.0" + hash = "sha256-zWpyp9K8/Te86uhNjamchZctTdAnmHhoVw9m4ACfSoo=" [mod."go.opentelemetry.io/otel/metric"] - version = "v1.36.0" - hash = "sha256-z6Uqi4HhUljWIYd58svKK5MqcGbpcac+/M8JeTrUtJ8=" + version = "v1.37.0" + hash = "sha256-BWnkdldA3xzGhnaConzMAuQzOnugytIvrP6GjkZVAYg=" [mod."go.opentelemetry.io/otel/sdk"] - version = "v1.36.0" - hash = "sha256-rg8T1fsoU6WTHcfnbWgB8hOxiufXmOhNqXpxlqbJQK4=" + version = "v1.37.0" + hash = "sha256-uNFhKuSRhf+SXwVu8mg/qqsVio7KstVN/WyCTxgWHT0=" [mod."go.opentelemetry.io/otel/sdk/metric"] - version = "v1.36.0" - hash = "sha256-kCJXX26+jXz/bFBpnNmFi6r+EusDXsy24tk7FgQbVgA=" + version = "v1.37.0" + hash = "sha256-dm6Aa5UDFgQCVexayiWu85A1ir1lpNn5rIN9tj9KVDs=" [mod."go.opentelemetry.io/otel/trace"] - version = "v1.36.0" - hash = "sha256-owWD9x1lp8aIJqYt058BXPUsIMHdk3RI0escso0BxwA=" + version = "v1.37.0" + hash = "sha256-FBeLOb5qmIiE9VmbgCf1l/xpndBqHkRiaPt1PvoKrVY=" [mod."go.uber.org/automaxprocs"] version = "v1.6.0" hash = "sha256-a/Agm+kM9x+VRo0CYyTL3ipUYv9Glrc4NeGSZJdpobA=" @@ -744,9 +744,12 @@ schema = 3 [mod."go.yaml.in/yaml/v2"] version = "v2.4.2" hash = "sha256-oC8RWdf1zbMYCtmR0ATy/kCkhIwPR9UqFZSMOKLVF/A=" + [mod."go.yaml.in/yaml/v3"] + version = "v3.0.4" + hash = "sha256-NkGFiDPoCxbr3LFsI6OCygjjkY0rdmg5ggvVVwpyDQ4=" [mod."golang.org/x/arch"] - version = "v0.15.0" - hash = "sha256-EsCsTDmn+j3S8yzV4n2WJyDuYBDwIlj29M9OBxWNMGQ=" + version = "v0.17.0" + hash = "sha256-avV63nZlJxuo3/LLBKQ2a96Nn1wflNtc1Dr7GSPbHAs=" [mod."golang.org/x/crypto"] version = "v0.41.0" hash = "sha256-o5Di0lsFmYnXl7a5MBTqmN9vXMCRpE9ay71C1Ar8jEY=" @@ -775,8 +778,8 @@ schema = 3 version = "v0.10.0" hash = "sha256-vnlAME3gDR6R4cbCmSYAlR1Rjc0yUpkufTOPNvCdf6Q=" [mod."golang.org/x/tools"] - version = "v0.35.0" - hash = "sha256-5aTV8oS9e0frUNUE2Pw+yTnPLghmZHryDa01COSyrCM=" + version = "v0.36.0" + hash = "sha256-p91Ig5XR7JL0rxIQdCRZBJvK4M8apyoeV/sOLyjOndk=" [mod."google.golang.org/api"] version = "v0.222.0" hash = "sha256-n1qxH8dqwl7Drry1H9bpQx7EeysceA98UrgEDxd1XEM=" @@ -784,17 +787,17 @@ schema = 3 version = "v0.0.0-20241118233622-e639e219e697" hash = "sha256-QcnHSM6CWo18f0rqeXHSCFaydwFp+nENjE8x/NErgEI=" [mod."google.golang.org/genproto/googleapis/api"] - version = "v0.0.0-20250528174236-200df99c418a" - hash = "sha256-VO7Rko8b/zO2sm6vML7hhxi9laPilt6JEab8xl4qIN8=" + version = "v0.0.0-20250707201910-8d1bb00bc6a7" + hash = "sha256-xtTBmzlyynWQa0KtuQpNZ4fzSTB/5ozXclE3SuP3naI=" [mod."google.golang.org/genproto/googleapis/rpc"] - version = "v0.0.0-20250528174236-200df99c418a" + version = "v0.0.0-20250707201910-8d1bb00bc6a7" hash = "sha256-WK7iDtAhH19NPe3TywTQlGjDawNaDKWnxhFL9PgVUwM=" [mod."google.golang.org/grpc"] - version = "v1.74.2" - hash = "sha256-tvYMdfu/ZQZRPZNmnQI4CZpg46CM8+mD49hw0gFheGs=" + version = "v1.75.0" + hash = "sha256-bMJEB2luUeYWwsQWqzuq4Wro2tTKBWGJPuTtzioJcfM=" [mod."google.golang.org/protobuf"] - version = "v1.36.7" - hash = "sha256-6xCU+t2AVPcscMKenVs4etGqutYGPDXCQ3DCD3PpTq4=" + version = "v1.36.8" + hash = "sha256-yZN8ZON0b5HjUNUSubHst7zbvnMsOzd81tDPYQRtPgM=" [mod."gopkg.in/yaml.v3"] version = "v3.0.1" hash = "sha256-FqL9TKYJ0XkNwJFnq9j0VvJ5ZUU1RvH/52h/f5bkYAU=" diff --git a/nix/testenv.nix b/nix/testenv.nix index d02782f618..76d808c30e 100644 --- a/nix/testenv.nix +++ b/nix/testenv.nix @@ -21,11 +21,25 @@ poetry2nix.mkPoetryEnv { eth-bloom = [ "setuptools" ]; }; in - lib.mapAttrs ( - attr: systems: + ( + lib.mapAttrs ( + attr: systems: super.${attr}.overridePythonAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ map (a: self.${a}) systems; - }) - ) buildSystems + nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ map (a: self.${a}) systems; + }) + ) buildSystems) // { + # Fix malformed license field in types-requests package + types-requests = super.types-requests.overridePythonAttrs (old: { + postPatch = (old.postPatch or "") + '' + # Fix malformed license field in pyproject.toml + if [ -f pyproject.toml ]; then + # Fix license field format + sed -i 's/license = "Apache-2.0"/license = {text = "Apache-2.0"}/' pyproject.toml + # Remove invalid license-files property from [project] section + sed -i '/^license-files = /d' pyproject.toml + fi + ''; + }); + } ); } diff --git a/proto/ethermint/evm/v1/chain_config.proto b/proto/ethermint/evm/v1/chain_config.proto index 64b956a3c8..274f664179 100644 --- a/proto/ethermint/evm/v1/chain_config.proto +++ b/proto/ethermint/evm/v1/chain_config.proto @@ -9,10 +9,8 @@ option go_package = "github.com/evmos/ethermint/x/evm/types"; // instead of *big.Int. message ChainConfig { // homestead_block switch (nil no fork, 0 = already homestead) - string homestead_block = 1 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"homestead_block\"" - ]; + string homestead_block = 1 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"homestead_block\""]; // dao_fork_block corresponds to TheDAO hard-fork switch block (nil no fork) string dao_fork_block = 2 [ (gogoproto.customname) = "DAOForkBlock", @@ -44,74 +42,48 @@ message ChainConfig { (gogoproto.moretags) = "yaml:\"eip158_block\"" ]; // byzantium_block: Byzantium switch block (nil no fork, 0 = already on byzantium) - string byzantium_block = 8 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"byzantium_block\"" - ]; + string byzantium_block = 8 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"byzantium_block\""]; // constantinople_block: Constantinople switch block (nil no fork, 0 = already activated) - string constantinople_block = 9 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"constantinople_block\"" - ]; + string constantinople_block = 9 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"constantinople_block\""]; // petersburg_block: Petersburg switch block (nil same as Constantinople) - string petersburg_block = 10 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"petersburg_block\"" - ]; + string petersburg_block = 10 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"petersburg_block\""]; // istanbul_block: Istanbul switch block (nil no fork, 0 = already on istanbul) - string istanbul_block = 11 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"istanbul_block\"" - ]; + string istanbul_block = 11 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"istanbul_block\""]; // muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no fork, 0 = already activated) - string muir_glacier_block = 12 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"muir_glacier_block\"" - ]; + string muir_glacier_block = 12 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"muir_glacier_block\""]; // berlin_block: Berlin switch block (nil = no fork, 0 = already on berlin) - string berlin_block = 13 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"berlin_block\"" - ]; + string berlin_block = 13 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"berlin_block\""]; // DEPRECATED: EWASM, YOLOV3 and Catalyst block have been deprecated reserved 14, 15, 16; reserved "yolo_v3_block", "ewasm_block", "catalyst_block"; // london_block: London switch block (nil = no fork, 0 = already on london) - string london_block = 17 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"london_block\"" - ]; + string london_block = 17 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"london_block\""]; // arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already activated) - string arrow_glacier_block = 18 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"arrow_glacier_block\"" - ]; + string arrow_glacier_block = 18 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"arrow_glacier_block\""]; // DEPRECATED: merge fork block was deprecated: https://github.com/ethereum/go-ethereum/pull/24904 reserved 19; reserved "merge_fork_block"; // gray_glacier_block: EIP-5133 (bomb delay) switch block (nil = no fork, 0 = already activated) - string gray_glacier_block = 20 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"gray_glacier_block\"" - ]; + string gray_glacier_block = 20 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"gray_glacier_block\""]; // merge_netsplit_block: Virtual fork after The Merge to use as a network splitter - string merge_netsplit_block = 21 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"merge_netsplit_block\"" - ]; + string merge_netsplit_block = 21 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"merge_netsplit_block\""]; // shanghai switch time (nil = no fork, 0 = already on shanghai) - string shanghai_time = 22 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"shanghai_time\"" - ]; + string shanghai_time = 22 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"shanghai_time\""]; // cancun switch time (nil = no fork, 0 = already on cancun) - string cancun_time = 23 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"cancun_time\"" - ]; + string cancun_time = 23 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"cancun_time\""]; // prague switch time (nil = no fork, 0 = already on prague) - string prague_time = 24 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"prague_time\"" - ]; + string prague_time = 24 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"prague_time\""]; } \ No newline at end of file diff --git a/proto/ethermint/evm/v1/chain_config_v0.proto b/proto/ethermint/evm/v1/chain_config_v0.proto index fe2ee499e7..c8fce02856 100644 --- a/proto/ethermint/evm/v1/chain_config_v0.proto +++ b/proto/ethermint/evm/v1/chain_config_v0.proto @@ -9,10 +9,8 @@ option go_package = "github.com/evmos/ethermint/x/evm/types"; // instead of *big.Int. message V0ChainConfig { // homestead_block switch (nil no fork, 0 = already homestead) - string homestead_block = 1 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"homestead_block\"" - ]; + string homestead_block = 1 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"homestead_block\""]; // dao_fork_block corresponds to TheDAO hard-fork switch block (nil no fork) string dao_fork_block = 2 [ (gogoproto.customname) = "DAOForkBlock", @@ -44,69 +42,45 @@ message V0ChainConfig { (gogoproto.moretags) = "yaml:\"eip158_block\"" ]; // byzantium_block: Byzantium switch block (nil no fork, 0 = already on byzantium) - string byzantium_block = 8 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"byzantium_block\"" - ]; + string byzantium_block = 8 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"byzantium_block\""]; // constantinople_block: Constantinople switch block (nil no fork, 0 = already activated) - string constantinople_block = 9 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"constantinople_block\"" - ]; + string constantinople_block = 9 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"constantinople_block\""]; // petersburg_block: Petersburg switch block (nil same as Constantinople) - string petersburg_block = 10 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"petersburg_block\"" - ]; + string petersburg_block = 10 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"petersburg_block\""]; // istanbul_block: Istanbul switch block (nil no fork, 0 = already on istanbul) - string istanbul_block = 11 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"istanbul_block\"" - ]; + string istanbul_block = 11 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"istanbul_block\""]; // muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no fork, 0 = already activated) - string muir_glacier_block = 12 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"muir_glacier_block\"" - ]; + string muir_glacier_block = 12 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"muir_glacier_block\""]; // berlin_block: Berlin switch block (nil = no fork, 0 = already on berlin) - string berlin_block = 13 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"berlin_block\"" - ]; + string berlin_block = 13 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"berlin_block\""]; // DEPRECATED: EWASM, YOLOV3 and Catalyst block have been deprecated reserved 14, 15, 16; reserved "yolo_v3_block", "ewasm_block", "catalyst_block"; // london_block: London switch block (nil = no fork, 0 = already on london) - string london_block = 17 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"london_block\"" - ]; + string london_block = 17 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"london_block\""]; // arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no fork, 0 = already activated) - string arrow_glacier_block = 18 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"arrow_glacier_block\"" - ]; + string arrow_glacier_block = 18 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"arrow_glacier_block\""]; // DEPRECATED: merge fork block was deprecated: https://github.com/ethereum/go-ethereum/pull/24904 reserved 19; reserved "merge_fork_block"; // gray_glacier_block: EIP-5133 (bomb delay) switch block (nil = no fork, 0 = already activated) - string gray_glacier_block = 20 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"gray_glacier_block\"" - ]; + string gray_glacier_block = 20 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"gray_glacier_block\""]; // merge_netsplit_block: Virtual fork after The Merge to use as a network splitter - string merge_netsplit_block = 21 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"merge_netsplit_block\"" - ]; + string merge_netsplit_block = 21 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"merge_netsplit_block\""]; // shanghai_block switch block (nil = no fork, 0 = already on shanghai) - string shanghai_block = 22 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"shanghai_block\"" - ]; + string shanghai_block = 22 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"shanghai_block\""]; // cancun_block switch block (nil = no fork, 0 = already on cancun) - string cancun_block = 23 [ - (gogoproto.customtype) = "cosmossdk.io/math.Int", - (gogoproto.moretags) = "yaml:\"cancun_block\"" - ]; + string cancun_block = 23 + [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.moretags) = "yaml:\"cancun_block\""]; } diff --git a/proto/ethermint/evm/v1/set_code_authorization.proto b/proto/ethermint/evm/v1/set_code_authorization.proto new file mode 100644 index 0000000000..fb2e29cc9f --- /dev/null +++ b/proto/ethermint/evm/v1/set_code_authorization.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; +package ethermint.evm.v1; + +import "gogoproto/gogo.proto"; + +option go_package = "github.com/evmos/ethermint/x/evm/types"; + +// SetCodeAuthorization is an authorization from an account to deploy code at its address. +message SetCodeAuthorization { + option (gogoproto.goproto_getters) = false; + + string chain_id = 1 [ + (gogoproto.customtype) = "cosmossdk.io/math.Int", + (gogoproto.customname) = "ChainID", + (gogoproto.jsontag) = "chainID" + ]; + string address = 2; + uint64 nonce = 3; + bytes v = 4; + bytes r = 5; + bytes s = 6; +} diff --git a/proto/ethermint/evm/v1/tx.proto b/proto/ethermint/evm/v1/tx.proto index cea3279399..694ed9591f 100644 --- a/proto/ethermint/evm/v1/tx.proto +++ b/proto/ethermint/evm/v1/tx.proto @@ -9,6 +9,7 @@ import "google/protobuf/any.proto"; import "ethermint/evm/v1/access_tuple.proto"; import "ethermint/evm/v1/log.proto"; import "ethermint/evm/v1/params.proto"; +import "ethermint/evm/v1/set_code_authorization.proto"; option go_package = "github.com/evmos/ethermint/x/evm/types"; @@ -61,8 +62,7 @@ message LegacyTx { // to is the hex formatted address of the recipient string to = 4; // value defines the unsigned integer value of the transaction amount. - string value = 5 - [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.customname) = "Amount"]; + string value = 5 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.customname) = "Amount"]; // data is the data payload bytes of the transaction. bytes data = 6; // v defines the signature value @@ -93,8 +93,7 @@ message AccessListTx { // to is the recipient address in hex format string to = 5; // value defines the unsigned integer value of the transaction amount. - string value = 6 - [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.customname) = "Amount"]; + string value = 6 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.customname) = "Amount"]; // data is the data payload bytes of the transaction. bytes data = 7; // accesses is an array of access tuples @@ -130,8 +129,7 @@ message DynamicFeeTx { // to is the hex formatted address of the recipient string to = 6; // value defines the the transaction amount. - string value = 7 - [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.customname) = "Amount"]; + string value = 7 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.customname) = "Amount"]; // data is the data payload bytes of the transaction. bytes data = 8; // accesses is an array of access tuples @@ -145,6 +143,46 @@ message DynamicFeeTx { bytes s = 12; } +// SetCodeTx implements the EIP-7702 transaction type. +message SetCodeTx { + option (gogoproto.goproto_getters) = false; + option (cosmos_proto.implements_interface) = "TxData"; + + // chain_id of the destination EVM chain + string chain_id = 1 [ + (gogoproto.customtype) = "cosmossdk.io/math.Int", + (gogoproto.customname) = "ChainID", + (gogoproto.jsontag) = "chainID" + ]; + // nonce corresponds to the account nonce (transaction sequence). + uint64 nonce = 2; + // gas_tip_cap defines the max value for the gas tip + string gas_tip_cap = 3 [(gogoproto.customtype) = "cosmossdk.io/math.Int"]; + // gas_fee_cap defines the max value for the gas fee + string gas_fee_cap = 4 [(gogoproto.customtype) = "cosmossdk.io/math.Int"]; + // gas defines the gas limit defined for the transaction. + uint64 gas = 5 [(gogoproto.customname) = "GasLimit"]; + // to is the hex formatted address of the recipient + string to = 6; + // value defines the the transaction amount. + string value = 7 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.customname) = "Amount"]; + // data is the data payload bytes of the transaction. + bytes data = 8; + // accesses is an array of access tuples + repeated AccessTuple accesses = 9 + [(gogoproto.castrepeated) = "AccessList", (gogoproto.jsontag) = "accessList", (gogoproto.nullable) = false]; + // auth_list is a list of tuples that indicate what code the signer of each tuple desires to execute in the context of + // their EOA + repeated SetCodeAuthorization auth_list = 10 + [(gogoproto.castrepeated) = "AuthList", (gogoproto.jsontag) = "authList", (gogoproto.nullable) = false]; + // v defines the signature value + bytes v = 11; + // r defines the signature value + bytes r = 12; + // s define the signature value + bytes s = 13; +} + // ExtensionOptionsEthereumTx is an extension option for ethereum transactions message ExtensionOptionsEthereumTx { option (gogoproto.goproto_getters) = false; diff --git a/proto/ethermint/feemarket/v1/feemarket.proto b/proto/ethermint/feemarket/v1/feemarket.proto index 55c8c4bc3e..210f5d7822 100644 --- a/proto/ethermint/feemarket/v1/feemarket.proto +++ b/proto/ethermint/feemarket/v1/feemarket.proto @@ -23,10 +23,8 @@ message Params { // base_fee for EIP-1559 blocks. string base_fee = 6 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; // min_gas_price defines the minimum gas price value for cosmos and eth transactions - string min_gas_price = 7 - [(gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false]; + string min_gas_price = 7 [(gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false]; // min_gas_multiplier bounds the minimum gas used to be charged // to senders based on gas limit - string min_gas_multiplier = 8 - [(gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false]; + string min_gas_multiplier = 8 [(gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", (gogoproto.nullable) = false]; } diff --git a/proto/ethermint/types/v1/dynamic_fee.proto b/proto/ethermint/types/v1/dynamic_fee.proto index 1b38f07326..bde4191ce2 100644 --- a/proto/ethermint/types/v1/dynamic_fee.proto +++ b/proto/ethermint/types/v1/dynamic_fee.proto @@ -8,6 +8,5 @@ option go_package = "github.com/evmos/ethermint/types"; // ExtensionOptionDynamicFeeTx is an extension option that specifies the maxPrioPrice for cosmos tx message ExtensionOptionDynamicFeeTx { // max_priority_price is the same as `max_priority_fee_per_gas` in eip-1559 spec - string max_priority_price = 1 - [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; + string max_priority_price = 1 [(gogoproto.customtype) = "cosmossdk.io/math.Int", (gogoproto.nullable) = false]; } diff --git a/rpc/backend/call_tx.go b/rpc/backend/call_tx.go index c42a33fda1..171f4037fa 100644 --- a/rpc/backend/call_tx.go +++ b/rpc/backend/call_tx.go @@ -313,9 +313,6 @@ func (b *Backend) handleRevertError(vmError string, ret []byte) error { if vmError != vm.ErrExecutionReverted.Error() { return status.Error(codes.Internal, vmError) } - if len(ret) == 0 { - return errors.New(vmError) - } return evmtypes.NewExecErrorWithReason(ret) } return nil diff --git a/scripts/geth-genesis.json b/scripts/geth-genesis.json index 69a591e5ad..dd57def1a1 100755 --- a/scripts/geth-genesis.json +++ b/scripts/geth-genesis.json @@ -16,8 +16,20 @@ "arrowGlacierBlock": 0, "grayGlacierBlock": 0, "shanghaiTime": 0, - "cancunTime": null, - "pragueTime": null, + "cancunTime": 0, + "pragueTime": 0, + "blobSchedule": { + "cancun": { + "target": 3, + "max": 6, + "baseFeeUpdateFraction": 3338477 + }, + "prague": { + "target": 3, + "max": 6, + "baseFeeUpdateFraction": 3338477 + } + }, "terminalTotalDifficulty": 0, "clique": { "period": 2, diff --git a/tests/integration_tests/bytecode_deployer.py b/tests/integration_tests/bytecode_deployer.py new file mode 100644 index 0000000000..5c53cbefcb --- /dev/null +++ b/tests/integration_tests/bytecode_deployer.py @@ -0,0 +1,74 @@ +from hexbytes import HexBytes +from web3 import Web3 + +from .utils import CONTRACTS, deploy_contract, send_transaction, w3_wait_for_new_blocks + + +# Given a runtime bytecode X, +# construct initialization (constructor) bytecode that, +# when deployed, results in a contract whose runtime bytecode is exactly X. +# No storage initialization is required. +class BytecodeDeployerHelper: + def __init__(self, w3: Web3, deployer_account=None): + self.w3 = w3 + key = deployer_account.key if deployer_account else None + self.deployer_contract, self.deployer_receipt = deploy_contract( + w3, CONTRACTS["BytecodeDeployer"], key=key + ) + + def deploy_bytecode(self, bytecode: str, sender_account=None) -> str: + tx = self.deployer_contract.functions.deployBytecode( + HexBytes(bytecode) + ).build_transaction() + + key = sender_account.key if sender_account else None + receipt = send_transaction(self.w3, tx, key) + receipt = self.w3.eth.wait_for_transaction_receipt( + receipt.transactionHash, timeout=30 + ) + deployed_event = ( + self.deployer_contract.events.ContractDeployed().process_receipt(receipt)[0] + ) + return deployed_event["args"]["deployedAddress"] + + +# https://ethereum.stackexchange.com/a/167820 +def create_constructor_bytecode(runtime_bytecode: str) -> str: + if not runtime_bytecode.startswith("0x"): + runtime_bytecode = "0x" + runtime_bytecode + + prefix = bytes.fromhex("600b380380600b5f395ff3") + suffix = bytes.fromhex(runtime_bytecode[2:]) + + constructor_bytecode = prefix + suffix + + return constructor_bytecode + + +def deploy_runtime_bytecode( + w3: Web3, runtime_bytecode: str, sender_account=None, deployer_account=None +) -> str: + bytecode_deployer = BytecodeDeployerHelper(w3, deployer_account) + + constructor_bytecode = create_constructor_bytecode(runtime_bytecode) + + deployed_address = bytecode_deployer.deploy_bytecode( + constructor_bytecode, sender_account + ) + + w3_wait_for_new_blocks(w3, 1) + + deployed_code = w3.eth.get_code(deployed_address, "latest") + expected_code = ( + runtime_bytecode + if runtime_bytecode.startswith("0x") + else "0x" + runtime_bytecode + ) + + if deployed_code != HexBytes(expected_code): + raise RuntimeError( + f"Deployment failed: deployed code {Web3.to_hex(deployed_code)} " + f"doesn't match expected {expected_code}" + ) + + return deployed_address diff --git a/tests/integration_tests/hardhat/contracts/BytecodeDeployer.sol b/tests/integration_tests/hardhat/contracts/BytecodeDeployer.sol new file mode 100644 index 0000000000..77d74405d4 --- /dev/null +++ b/tests/integration_tests/hardhat/contracts/BytecodeDeployer.sol @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +/** + * @title BytecodeDeployer + * @dev A factory contract that can deploy arbitrary bytecode to create contracts + * Used for EIP-7702 SetCode transaction testing where specific contracts need to be deployed + * at predetermined addresses (like 0xaaaa and 0xbbbb) + */ +contract BytecodeDeployer { + event ContractDeployed(address indexed deployedAddress, address indexed deployer); + + /** + * @dev Deploy bytecode using CREATE opcode + * @param bytecode The contract bytecode to deploy + * @return deployedAddress The address of the deployed contract + */ + function deployBytecode(bytes memory bytecode) public returns (address deployedAddress) { + assembly { + deployedAddress := create(0, add(bytecode, 0x20), mload(bytecode)) + } + require(deployedAddress != address(0), "Deployment failed"); + emit ContractDeployed(deployedAddress, msg.sender); + } + + /** + * @dev Deploy bytecode using CREATE2 opcode with a salt + * @param bytecode The contract bytecode to deploy + * @param salt The salt value for CREATE2 + * @return deployedAddress The address of the deployed contract + */ + function deployBytecodeWithSalt(bytes memory bytecode, bytes32 salt) public returns (address deployedAddress) { + assembly { + deployedAddress := create2(0, add(bytecode, 0x20), mload(bytecode), salt) + } + require(deployedAddress != address(0), "Deployment failed"); + emit ContractDeployed(deployedAddress, msg.sender); + } + + /** + * @dev Predict the address for CREATE2 deployment + * @param bytecode The contract bytecode to deploy + * @param salt The salt value for CREATE2 + * @return predictedAddress The predicted address of the contract + */ + function predictCreate2Address(bytes memory bytecode, bytes32 salt) public view returns (address predictedAddress) { + bytes32 hash = keccak256( + abi.encodePacked( + bytes1(0xff), + address(this), + salt, + keccak256(bytecode) + ) + ); + predictedAddress = address(uint160(uint256(hash))); + } + + /** + * @dev Deploy bytecode and call a function on the deployed contract + * @param bytecode The contract bytecode to deploy + * @param callData The function call data to execute on the deployed contract + * @return deployedAddress The address of the deployed contract + * @return result The result of the function call + */ + function deployAndCall(bytes memory bytecode, bytes memory callData) public returns (address deployedAddress, bytes memory result) { + deployedAddress = deployBytecode(bytecode); + + if (callData.length > 0) { + (bool success, bytes memory returnData) = deployedAddress.call(callData); + require(success, "Call to deployed contract failed"); + result = returnData; + } + } +} \ No newline at end of file diff --git a/tests/integration_tests/network.py b/tests/integration_tests/network.py index 1552faa7d1..3995dd61d6 100644 --- a/tests/integration_tests/network.py +++ b/tests/integration_tests/network.py @@ -6,7 +6,7 @@ import web3 from pystarport import ports -from web3.middleware import geth_poa_middleware +from web3.middleware import ExtraDataToPOAMiddleware from .cosmoscli import CosmosCLI from .utils import supervisorctl, w3_wait_for_block, wait_for_port @@ -41,7 +41,7 @@ def w3(self, i=0): if self._w3 is None: if self._use_websockets: self._w3 = web3.Web3( - web3.providers.WebsocketProvider(self.w3_ws_endpoint) + web3.providers.LegacyWebSocketProvider(self.w3_ws_endpoint) ) else: self._w3 = web3.Web3(web3.providers.HTTPProvider(self.w3_http_endpoint)) @@ -104,7 +104,7 @@ def setup_geth(path, base_port): try: wait_for_port(base_port) w3 = web3.Web3(web3.providers.HTTPProvider(f"http://127.0.0.1:{base_port}")) - w3.middleware_onion.inject(geth_poa_middleware, layer=0) + w3.middleware_onion.inject(ExtraDataToPOAMiddleware, layer=0) yield Geth(w3) finally: os.killpg(os.getpgid(proc.pid), signal.SIGTERM) diff --git a/tests/integration_tests/poetry.lock b/tests/integration_tests/poetry.lock index 274ce7075b..6dd94af442 100644 --- a/tests/integration_tests/poetry.lock +++ b/tests/integration_tests/poetry.lock @@ -110,6 +110,17 @@ files = [ [package.dependencies] frozenlist = ">=1.1.0" +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + [[package]] name = "async-timeout" version = "4.0.3" @@ -463,6 +474,115 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +[[package]] +name = "ckzg" +version = "2.1.1" +description = "Python bindings for C-KZG-4844" +optional = false +python-versions = "*" +files = [ + {file = "ckzg-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b9825a1458219e8b4b023012b8ef027ef1f47e903f9541cbca4615f80132730"}, + {file = "ckzg-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e2a40a3ba65cca4b52825d26829e6f7eb464aa27a9e9efb6b8b2ce183442c741"}, + {file = "ckzg-2.1.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1d753fbe85be7c21602eddc2d40e0915e25fce10329f4f801a0002a4f886cc7"}, + {file = "ckzg-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d76b50527f1d12430bf118aff6fa4051e9860eada43f29177258b8d399448ea"}, + {file = "ckzg-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44c8603e43c021d100f355f50189183135d1df3cbbddb8881552d57fbf421dde"}, + {file = "ckzg-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:38707a638c9d715b3c30b29352b969f78d8fc10faed7db5faf517f04359895c0"}, + {file = "ckzg-2.1.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:52c4d257bdcbe822d20c5cd24c8154ec5aac33c49a8f5a19e716d9107a1c8785"}, + {file = "ckzg-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1507f7bfb9bcf51d816db5d8d0f0ed53c8289605137820d437b69daea8333e16"}, + {file = "ckzg-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d02eaaf4f841910133552b3a051dea53bcfe60cd98199fc4cf80b27609d8baa2"}, + {file = "ckzg-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:465e2b71cf9dc383f66f1979269420a0da9274a3a9e98b1a4455e84927dfe491"}, + {file = "ckzg-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ee2f26f17a64ad0aab833d637b276f28486b82a29e34f32cf54b237b8f8ab72d"}, + {file = "ckzg-2.1.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99cc2c4e9fb8c62e3e0862c7f4df9142f07ba640da17fded5f6e0fd09f75909f"}, + {file = "ckzg-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773dd016693d74aca1f5d7982db2bad7dde2e147563aeb16a783f7e5f69c01fe"}, + {file = "ckzg-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af2b2144f87ba218d8db01382a961b3ecbdde5ede4fa0d9428d35f8c8a595ba"}, + {file = "ckzg-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8f55e63d3f7c934a2cb53728ed1d815479e177aca8c84efe991c2920977cff6"}, + {file = "ckzg-2.1.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ecb42aaa0ffa427ff14a9dde9356ba69e5ae6014650b397af55b31bdae7a9b6e"}, + {file = "ckzg-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5a01514239f12fb1a7ad9009c20062a4496e13b09541c1a65f97e295da648c70"}, + {file = "ckzg-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:6516b9684aae262c85cf7fddd8b585b8139ad20e08ec03994e219663abbb0916"}, + {file = "ckzg-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c60e8903344ce98ce036f0fabacce952abb714cad4607198b2f0961c28b8aa72"}, + {file = "ckzg-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4299149dd72448e5a8d2d1cc6cc7472c92fc9d9f00b1377f5b017c089d9cd92"}, + {file = "ckzg-2.1.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:025dd31ffdcc799f3ff842570a2a6683b6c5b01567da0109c0c05d11768729c4"}, + {file = "ckzg-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b42ab8385c273f40a693657c09d2bba40cb4f4666141e263906ba2e519e80bd"}, + {file = "ckzg-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1be3890fc1543f4fcfc0063e4baf5c036eb14bcf736dabdc6171ab017e0f1671"}, + {file = "ckzg-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b754210ded172968b201e2d7252573af6bf52d6ad127ddd13d0b9a45a51dae7b"}, + {file = "ckzg-2.1.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2f8fda87865897a269c4e951e3826c2e814427a6cdfed6731cccfe548f12b36"}, + {file = "ckzg-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:98e70b5923d77c7359432490145e9d1ab0bf873eb5de56ec53f4a551d7eaec79"}, + {file = "ckzg-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:42af7bde4ca45469cd93a96c3d15d69d51d40e7f0d30e3a20711ebd639465fcb"}, + {file = "ckzg-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7e4edfdaf87825ff43b9885fabfdea408737a714f4ce5467100d9d1d0a03b673"}, + {file = "ckzg-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:815fd2a87d6d6c57d669fda30c150bc9bf387d47e67d84535aa42b909fdc28ea"}, + {file = "ckzg-2.1.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c32466e809b1ab3ff01d3b0bb0b9912f61dcf72957885615595f75e3f7cc10e5"}, + {file = "ckzg-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f11b73ccf37b12993f39a7dbace159c6d580aacacde6ee17282848476550ddbc"}, + {file = "ckzg-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de3b9433a1f2604bd9ac1646d3c83ad84a850d454d3ac589fe8e70c94b38a6b0"}, + {file = "ckzg-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b7d7e1b5ea06234558cd95c483666fd785a629b720a7f1622b3cbffebdc62033"}, + {file = "ckzg-2.1.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9f5556e6675866040cc4335907be6c537051e7f668da289fa660fdd8a30c9ddb"}, + {file = "ckzg-2.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55b2ba30c5c9daac0c55f1aac851f1b7bf1f7aa0028c2db4440e963dd5b866d6"}, + {file = "ckzg-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:10d201601fc8f28c0e8cec3406676797024dd374c367bbeec5a7a9eac9147237"}, + {file = "ckzg-2.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:5f46c8fd5914db62b446baf62c8599da07e6f91335779a9709c554ef300a7b60"}, + {file = "ckzg-2.1.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:60f14612c2be84f405755d734b0ad4e445db8af357378b95b72339b59e1f4fcf"}, + {file = "ckzg-2.1.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:929e6e793039f42325988004a90d16b0ef4fc7e1330142e180f0298f2ed4527c"}, + {file = "ckzg-2.1.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2beac2af53ea181118179570ecc81d8a8fc52c529553d7fd8786fd100a2aa39b"}, + {file = "ckzg-2.1.1-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:2432d48aec296baee79556bfde3bddd2799bcc7753cd1f0d0c9a3b0333935637"}, + {file = "ckzg-2.1.1-cp36-cp36m-musllinux_1_2_i686.whl", hash = "sha256:4c2e8180b54261ccae2bf8acd003ccee7394d88d073271af19c5f2ac4a54c607"}, + {file = "ckzg-2.1.1-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:c44e36bd53d9dd0ab29bd6ed2d67ea43c48eecd57f8197854a75742213938bf5"}, + {file = "ckzg-2.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:10befd86e643d38ac468151cdfb71e79b2d46aa6397b81db4224f4f6995262eb"}, + {file = "ckzg-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:138a9324ad8e8a9ade464043dc3a84afe12996516788f2ed841bdbe5d123af81"}, + {file = "ckzg-2.1.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:635af0a33a10c9ac275f3efc142880a6b46ac63f4495f600aae05266af4fadff"}, + {file = "ckzg-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:360e263677ee5aedb279b42cf54b51c905ddcac9181c65d89ec0b298d3f31ec0"}, + {file = "ckzg-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f81395f77bfd069831cbb1de9d473c7044abe9ce6cd562ef6ccd76d23abcef43"}, + {file = "ckzg-2.1.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:db1ff122f8dc10c9500a00a4d680c3c38f4e19b01d95f38e0f5bc55a77c8ab98"}, + {file = "ckzg-2.1.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:1f82f539949ff3c6a5accfdd211919a3e374d354b3665d062395ebdbf8befaeb"}, + {file = "ckzg-2.1.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:5bc8ae85df97467e84abb491b516e25dbca36079e766eafce94d1bc45e4aaa35"}, + {file = "ckzg-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:e749ce9fcb26e37101f2af8ba9c6376b66eb598880d35e457890044ba77c1cf7"}, + {file = "ckzg-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5b00201979a64fd7e6029f64d791af42374febb42452537933e881b49d4e8c77"}, + {file = "ckzg-2.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c61c437ba714ab7c802b51fb30125e8f8550e1320fe9050d20777420c153a2b3"}, + {file = "ckzg-2.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8bd54394376598a7c081df009cfde3cc447beb640b6c6b7534582a31e6290ac7"}, + {file = "ckzg-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67d8c6680a7b370718af59cc17a983752706407cfbcace013ee707646d1f7b00"}, + {file = "ckzg-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55f6c57b24bc4fe16b1b50324ef8548f2a5053ad76bf90c618e2f88c040120d7"}, + {file = "ckzg-2.1.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f55fc10fb1b217c66bfe14e05535e5e61cfbb2a95dbb9b93a80984fa2ab4a7c0"}, + {file = "ckzg-2.1.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:2e23e3198f8933f0140ef8b2aeba717d8de03ec7b8fb1ee946f8d39986ce0811"}, + {file = "ckzg-2.1.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2f9caf88bf216756bb1361b92616c750a933c9afb67972ad05c212649a9be520"}, + {file = "ckzg-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:30e0c2d258bbc0c099c2d1854c6ffa2fd9abf6138b9c81f855e1936f6cb259aa"}, + {file = "ckzg-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a6239d3d2e30cb894ca4e7765b1097eb6a70c0ecbe5f8e0b023fbf059472d4ac"}, + {file = "ckzg-2.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:909ebabc253a98d9dc1d51f93dc75990134bfe296c947e1ecf3b7142aba5108e"}, + {file = "ckzg-2.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0700dace6559b288b42ca8622be89c2a43509881ed6f4f0bfb6312bcceed0cb9"}, + {file = "ckzg-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a36aeabd243e906314694b4a107de99b0c4473ff1825fcb06acd147ffb1951a"}, + {file = "ckzg-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d884e8f9c7d7839f1a95561f4479096dce21d45b0c5dd013dc0842550cea1cad"}, + {file = "ckzg-2.1.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:338fdf4a0b463973fc7b7e4dc289739db929e61d7cb9ba984ebbe9c49d3aa6f9"}, + {file = "ckzg-2.1.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c594036d3408eebdcd8ab2c7aab7308239ed4df3d94f3211b7cf253f228fb0b7"}, + {file = "ckzg-2.1.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b0912ebb328ced510250a2325b095917db19c1a014792a0bf4c389f0493e39de"}, + {file = "ckzg-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:5046aceb03482ddf7200f2f5c643787b100e6fb96919852faf1c79f8870c80a1"}, + {file = "ckzg-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:375918e25eafb9bafe5215ab91698504cba3fe51b4fe92f5896af6c5663f50c6"}, + {file = "ckzg-2.1.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:38b3b7802c76d4ad015db2b7a79a49c193babae50ee5f77e9ac2865c9e9ddb09"}, + {file = "ckzg-2.1.1-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:438a5009fd254ace0bc1ad974d524547f1a41e6aa5e778c5cd41f4ee3106bcd6"}, + {file = "ckzg-2.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ce11cc163a2e0dab3af7455aca7053f9d5bb8d157f231acc7665fd230565d48"}, + {file = "ckzg-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b53964c07f6a076e97eaa1ef35045e935d7040aff14f80bae7e9105717702d05"}, + {file = "ckzg-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cf085f15ae52ab2599c9b5a3d5842794bcf5613b7f58661fbfb0c5d9eac988b9"}, + {file = "ckzg-2.1.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4b0c850bd6cad22ac79b2a2ab884e0e7cd2b54a67d643cd616c145ebdb535a11"}, + {file = "ckzg-2.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:26951f36bb60c9150bbd38110f5e1625596f9779dad54d1d492d8ec38bc84e3a"}, + {file = "ckzg-2.1.1-pp311-pypy311_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbe12445e49c4bee67746b7b958e90a973b0de116d0390749b0df351d94e9a8c"}, + {file = "ckzg-2.1.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71c5d4f66f09de4a99271acac74d2acb3559a77de77a366b34a91e99e8822667"}, + {file = "ckzg-2.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42673c1d007372a4e8b48f6ef8f0ce31a9688a463317a98539757d1e2fb1ecc7"}, + {file = "ckzg-2.1.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:57a7dc41ec6b69c1d9117eb61cf001295e6b4f67a736020442e71fb4367fb1a5"}, + {file = "ckzg-2.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:22e4606857660b2ffca2f7b96c01d0b18b427776d8a93320caf2b1c7342881fe"}, + {file = "ckzg-2.1.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b55475126a9efc82d61718b2d2323502e33d9733b7368c407954592ccac87faf"}, + {file = "ckzg-2.1.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5939ae021557c64935a7649b13f4a58f1bd35c39998fd70d0cefb5cbaf77d1be"}, + {file = "ckzg-2.1.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad1ec5f9726a9946508a4a2aace298172aa778de9ebbe97e21c873c3688cc87"}, + {file = "ckzg-2.1.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93d7edea3bb1602b18b394ebeec231d89dfd8d48fdd06571cb7656107aa62226"}, + {file = "ckzg-2.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c450d77af61011ced3777f97431d5f1bc148ca5362c67caf516aa2f6ef7e4817"}, + {file = "ckzg-2.1.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:8fc8df4e17e08974961d6c14f6c57ccfd3ad5aede74598292ec6e5d6fc2dbcac"}, + {file = "ckzg-2.1.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93338da8011790ef53a68475678bc951fa7b337db027d8edbf1889e59691161c"}, + {file = "ckzg-2.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4889f24b4ff614f39e3584709de1a3b0f1556675b33e360dbcb28cda827296d4"}, + {file = "ckzg-2.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7b58fbb1a9be4ae959feede8f103e12d80ef8453bdc6483bfdaf164879a2b80"}, + {file = "ckzg-2.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6136c5b5377c7f7033323b25bc2c7b43c025d44ed73e338c02f9f59df9460e5b"}, + {file = "ckzg-2.1.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fa419b92a0e8766deb7157fb28b6542c1c3f8dde35d2a69d1f91ec8e41047d35"}, + {file = "ckzg-2.1.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:95cd6c8eb3ab5148cd97ab5bf44b84fd7f01adf4b36ffd070340ad2d9309b3f9"}, + {file = "ckzg-2.1.1-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:848191201052b48bdde18680ebb77bf8da99989270e5aea8b0290051f5ac9468"}, + {file = "ckzg-2.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4716c0564131b0d609fb8856966e83892b9809cf6719c7edd6495b960451f8b"}, + {file = "ckzg-2.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c399168ba199827dee3104b00cdc7418d4dbdf47a5fcbe7cf938fc928037534"}, + {file = "ckzg-2.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:724f29f9f110d9ef42a6a1a1a7439548c61070604055ef96b2ab7a884cad4192"}, + {file = "ckzg-2.1.1.tar.gz", hash = "sha256:d6b306b7ec93a24e4346aa53d07f7f75053bc0afc7398e35fa649e5f9d48fcc4"}, +] + [[package]] name = "click" version = "8.1.7" @@ -661,51 +781,53 @@ files = [ [[package]] name = "eth-abi" -version = "5.0.0" +version = "5.2.0" description = "eth_abi: Python utilities for working with Ethereum ABI definitions, especially encoding and decoding" optional = false -python-versions = ">=3.8, <4" +python-versions = "<4,>=3.8" files = [ - {file = "eth_abi-5.0.0-py3-none-any.whl", hash = "sha256:936a715d7366ac13cac665cbdaf01cc4aabbe8c2d810d716287a9634f9665e01"}, - {file = "eth_abi-5.0.0.tar.gz", hash = "sha256:89c4454d794d9ed92ad5cb2794698c5cee6b7b3ca6009187d0e282adc7f9b6dc"}, + {file = "eth_abi-5.2.0-py3-none-any.whl", hash = "sha256:17abe47560ad753f18054f5b3089fcb588f3e3a092136a416b6c1502cb7e8877"}, + {file = "eth_abi-5.2.0.tar.gz", hash = "sha256:178703fa98c07d8eecd5ae569e7e8d159e493ebb6eeb534a8fe973fbc4e40ef0"}, ] [package.dependencies] eth-typing = ">=3.0.0" eth-utils = ">=2.0.0" -parsimonious = ">=0.9.0,<0.10.0" +parsimonious = ">=0.10.0,<0.11.0" [package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "eth-hash[pycryptodome]", "hypothesis (>=4.18.2,<5.0.0)", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-pythonpath (>=0.7.1)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -test = ["eth-hash[pycryptodome]", "hypothesis (>=4.18.2,<5.0.0)", "pytest (>=7.0.0)", "pytest-pythonpath (>=0.7.1)", "pytest-xdist (>=2.4.0)"] -tools = ["hypothesis (>=4.18.2,<5.0.0)"] +dev = ["build (>=0.9.0)", "bump_my_version (>=0.19.0)", "eth-hash[pycryptodome]", "hypothesis (>=6.22.0,<6.108.7)", "ipython", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-pythonpath (>=0.7.1)", "pytest-timeout (>=2.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)"] +test = ["eth-hash[pycryptodome]", "hypothesis (>=6.22.0,<6.108.7)", "pytest (>=7.0.0)", "pytest-pythonpath (>=0.7.1)", "pytest-timeout (>=2.0.0)", "pytest-xdist (>=2.4.0)"] +tools = ["hypothesis (>=6.22.0,<6.108.7)"] [[package]] name = "eth-account" -version = "0.11.0" +version = "0.13.7" description = "eth-account: Sign Ethereum transactions and messages with local private keys" optional = false -python-versions = ">=3.8, <4" +python-versions = "<4,>=3.8" files = [ - {file = "eth-account-0.11.0.tar.gz", hash = "sha256:2ffc7a0c7538053a06a7d11495c16c7ad9897dd42be0f64ca7551e9f6e0738c3"}, - {file = "eth_account-0.11.0-py3-none-any.whl", hash = "sha256:76dd261ea096ee09e51455b0a4c99f22185516fdc062f63df0817c28f605e430"}, + {file = "eth_account-0.13.7-py3-none-any.whl", hash = "sha256:39727de8c94d004ff61d10da7587509c04d2dc7eac71e04830135300bdfc6d24"}, + {file = "eth_account-0.13.7.tar.gz", hash = "sha256:5853ecbcbb22e65411176f121f5f24b8afeeaf13492359d254b16d8b18c77a46"}, ] [package.dependencies] bitarray = ">=2.4.0" +ckzg = ">=2.0.0" eth-abi = ">=4.0.0-b.2" -eth-keyfile = ">=0.6.0" +eth-keyfile = ">=0.7.0,<0.9.0" eth-keys = ">=0.4.0" -eth-rlp = ">=0.3.0" +eth-rlp = ">=2.1.0" eth-utils = ">=2.0.0" -hexbytes = ">=0.1.0,<0.4.0" +hexbytes = ">=1.2.0" +pydantic = ">=2.0.0" rlp = ">=1.0.0" [package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "coverage", "hypothesis (>=4.18.0,<5)", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -test = ["coverage", "hypothesis (>=4.18.0,<5)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] +dev = ["build (>=0.9.0)", "bump_my_version (>=0.19.0)", "coverage", "hypothesis (>=6.22.0,<6.108.7)", "ipython", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)"] +test = ["coverage", "hypothesis (>=6.22.0,<6.108.7)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "eth-bloom" @@ -791,63 +913,67 @@ test = ["asn1tools (>=0.146.2)", "eth-hash[pysha3]", "factory-boy (>=3.0.1)", "h [[package]] name = "eth-rlp" -version = "1.0.1" +version = "2.2.0" description = "eth-rlp: RLP definitions for common Ethereum objects in Python" optional = false -python-versions = ">=3.8, <4" +python-versions = "<4,>=3.8" files = [ - {file = "eth-rlp-1.0.1.tar.gz", hash = "sha256:d61dbda892ee1220f28fb3663c08f6383c305db9f1f5624dc585c9cd05115027"}, - {file = "eth_rlp-1.0.1-py3-none-any.whl", hash = "sha256:dd76515d71654277377d48876b88e839d61553aaf56952e580bb7cebef2b1517"}, + {file = "eth_rlp-2.2.0-py3-none-any.whl", hash = "sha256:5692d595a741fbaef1203db6a2fedffbd2506d31455a6ad378c8449ee5985c47"}, + {file = "eth_rlp-2.2.0.tar.gz", hash = "sha256:5e4b2eb1b8213e303d6a232dfe35ab8c29e2d3051b86e8d359def80cd21db83d"}, ] [package.dependencies] eth-utils = ">=2.0.0" -hexbytes = ">=0.1.0,<1" +hexbytes = ">=1.2.0" rlp = ">=0.6.0" -typing-extensions = {version = ">=4.0.1", markers = "python_version <= \"3.11\""} +typing_extensions = {version = ">=4.0.1", markers = "python_version <= \"3.10\""} [package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "eth-hash[pycryptodome]", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] +dev = ["build (>=0.9.0)", "bump_my_version (>=0.19.0)", "eth-hash[pycryptodome]", "ipython", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)"] test = ["eth-hash[pycryptodome]", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "eth-typing" -version = "4.0.0" +version = "5.2.1" description = "eth-typing: Common type annotations for ethereum python packages" optional = false -python-versions = ">=3.8, <4" +python-versions = "<4,>=3.8" files = [ - {file = "eth-typing-4.0.0.tar.gz", hash = "sha256:9af0b6beafbc5c2e18daf19da5f5a68315023172c4e79d149e12ad10a3d3f731"}, - {file = "eth_typing-4.0.0-py3-none-any.whl", hash = "sha256:7e556bea322b6e8c0a231547b736c258e10ce9eed5ddc254f51031b12af66a16"}, + {file = "eth_typing-5.2.1-py3-none-any.whl", hash = "sha256:b0c2812ff978267563b80e9d701f487dd926f1d376d674f3b535cfe28b665d3d"}, + {file = "eth_typing-5.2.1.tar.gz", hash = "sha256:7557300dbf02a93c70fa44af352b5c4a58f94e997a0fd6797fb7d1c29d9538ee"}, ] +[package.dependencies] +typing_extensions = ">=4.5.0" + [package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "ipython", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] +dev = ["build (>=0.9.0)", "bump_my_version (>=0.19.0)", "ipython", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)"] test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "eth-utils" -version = "3.0.0" +version = "5.3.0" description = "eth-utils: Common utility functions for python code that interacts with Ethereum" optional = false -python-versions = ">=3.8, <4" +python-versions = "<4,>=3.8" files = [ - {file = "eth-utils-3.0.0.tar.gz", hash = "sha256:8721869568448349bceae63c277b75758d11e0dc190e7ef31e161b89619458f1"}, - {file = "eth_utils-3.0.0-py3-none-any.whl", hash = "sha256:9a284106acf6f6ce91ddf792489cf8bd4c681fd5ae7653d2f3d5d100be5c3905"}, + {file = "eth_utils-5.3.0-py3-none-any.whl", hash = "sha256:ac184883ab299d923428bbe25dae5e356979a3993e0ef695a864db0a20bc262d"}, + {file = "eth_utils-5.3.0.tar.gz", hash = "sha256:1f096867ac6be895f456fa3acb26e9573ae66e753abad9208f316d24d6178156"}, ] [package.dependencies] cytoolz = {version = ">=0.10.1", markers = "implementation_name == \"cpython\""} eth-hash = ">=0.3.1" -eth-typing = ">=3.0.0" +eth-typing = ">=5.0.0" +pydantic = ">=2.0.0,<3" toolz = {version = ">0.8.2", markers = "implementation_name == \"pypy\""} [package.extras] -dev = ["build (>=0.9.0)", "bumpversion (>=0.5.3)", "eth-hash[pycryptodome]", "hypothesis (>=4.43.0)", "ipython", "mypy (==1.5.1)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -docs = ["sphinx (>=6.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -test = ["hypothesis (>=4.43.0)", "mypy (==1.5.1)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] +dev = ["build (>=0.9.0)", "bump_my_version (>=0.19.0)", "eth-hash[pycryptodome]", "hypothesis (>=4.43.0)", "ipython", "mypy (==1.10.0)", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)"] +test = ["hypothesis (>=4.43.0)", "mypy (==1.10.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "exceptiongroup" @@ -1029,20 +1155,19 @@ files = [ [[package]] name = "hexbytes" -version = "0.3.1" +version = "1.3.1" description = "hexbytes: Python `bytes` subclass that decodes hex, with a readable console output" optional = false -python-versions = ">=3.7, <4" +python-versions = "<4,>=3.8" files = [ - {file = "hexbytes-0.3.1-py3-none-any.whl", hash = "sha256:383595ad75026cf00abd570f44b368c6cdac0c6becfae5c39ff88829877f8a59"}, - {file = "hexbytes-0.3.1.tar.gz", hash = "sha256:a3fe35c6831ee8fafd048c4c086b986075fc14fd46258fa24ecb8d65745f9a9d"}, + {file = "hexbytes-1.3.1-py3-none-any.whl", hash = "sha256:da01ff24a1a9a2b1881c4b85f0e9f9b0f51b526b379ffa23832ae7899d29c2c7"}, + {file = "hexbytes-1.3.1.tar.gz", hash = "sha256:a657eebebdfe27254336f98d8af6e2236f3f83aed164b87466b6cf6c5f5a4765"}, ] [package.extras] -dev = ["black (>=22)", "bumpversion (>=0.5.3)", "eth-utils (>=1.0.1,<3)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "hypothesis (>=3.44.24,<=6.31.6)", "ipython", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=5.0.0)", "pytest (>=7.0.0)", "pytest-watch (>=4.1.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=4.0.0)", "twine", "wheel"] -doc = ["sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -lint = ["black (>=22)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=5.0.0)"] -test = ["eth-utils (>=1.0.1,<3)", "hypothesis (>=3.44.24,<=6.31.6)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] +dev = ["build (>=0.9.0)", "bump_my_version (>=0.19.0)", "eth_utils (>=2.0.0)", "hypothesis (>=3.44.24)", "ipython", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)", "sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)", "tox (>=4.0.0)", "twine", "wheel"] +docs = ["sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)"] +test = ["eth_utils (>=2.0.0)", "hypothesis (>=3.44.24)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "idna" @@ -1177,100 +1302,6 @@ files = [ [package.dependencies] referencing = ">=0.31.0" -[[package]] -name = "lru-dict" -version = "1.2.0" -description = "An Dict like LRU container." -optional = false -python-versions = "*" -files = [ - {file = "lru-dict-1.2.0.tar.gz", hash = "sha256:13c56782f19d68ddf4d8db0170041192859616514c706b126d0df2ec72a11bd7"}, - {file = "lru_dict-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:de906e5486b5c053d15b7731583c25e3c9147c288ac8152a6d1f9bccdec72641"}, - {file = "lru_dict-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604d07c7604b20b3130405d137cae61579578b0e8377daae4125098feebcb970"}, - {file = "lru_dict-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:203b3e78d03d88f491fa134f85a42919020686b6e6f2d09759b2f5517260c651"}, - {file = "lru_dict-1.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:020b93870f8c7195774cbd94f033b96c14f51c57537969965c3af300331724fe"}, - {file = "lru_dict-1.2.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1184d91cfebd5d1e659d47f17a60185bbf621635ca56dcdc46c6a1745d25df5c"}, - {file = "lru_dict-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fc42882b554a86e564e0b662da47b8a4b32fa966920bd165e27bb8079a323bc1"}, - {file = "lru_dict-1.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:18ee88ada65bd2ffd483023be0fa1c0a6a051ef666d1cd89e921dcce134149f2"}, - {file = "lru_dict-1.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:756230c22257597b7557eaef7f90484c489e9ba78e5bb6ab5a5bcfb6b03cb075"}, - {file = "lru_dict-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c4da599af36618881748b5db457d937955bb2b4800db891647d46767d636c408"}, - {file = "lru_dict-1.2.0-cp310-cp310-win32.whl", hash = "sha256:35a142a7d1a4fd5d5799cc4f8ab2fff50a598d8cee1d1c611f50722b3e27874f"}, - {file = "lru_dict-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:6da5b8099766c4da3bf1ed6e7d7f5eff1681aff6b5987d1258a13bd2ed54f0c9"}, - {file = "lru_dict-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b20b7c9beb481e92e07368ebfaa363ed7ef61e65ffe6e0edbdbaceb33e134124"}, - {file = "lru_dict-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22147367b296be31cc858bf167c448af02435cac44806b228c9be8117f1bfce4"}, - {file = "lru_dict-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34a3091abeb95e707f381a8b5b7dc8e4ee016316c659c49b726857b0d6d1bd7a"}, - {file = "lru_dict-1.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:877801a20f05c467126b55338a4e9fa30e2a141eb7b0b740794571b7d619ee11"}, - {file = "lru_dict-1.2.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d3336e901acec897bcd318c42c2b93d5f1d038e67688f497045fc6bad2c0be7"}, - {file = "lru_dict-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8dafc481d2defb381f19b22cc51837e8a42631e98e34b9e0892245cc96593deb"}, - {file = "lru_dict-1.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:87bbad3f5c3de8897b8c1263a9af73bbb6469fb90e7b57225dad89b8ef62cd8d"}, - {file = "lru_dict-1.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:25f9e0bc2fe8f41c2711ccefd2871f8a5f50a39e6293b68c3dec576112937aad"}, - {file = "lru_dict-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ae301c282a499dc1968dd633cfef8771dd84228ae9d40002a3ea990e4ff0c469"}, - {file = "lru_dict-1.2.0-cp311-cp311-win32.whl", hash = "sha256:c9617583173a29048e11397f165501edc5ae223504a404b2532a212a71ecc9ed"}, - {file = "lru_dict-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6b7a031e47421d4b7aa626b8c91c180a9f037f89e5d0a71c4bb7afcf4036c774"}, - {file = "lru_dict-1.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ea2ac3f7a7a2f32f194c84d82a034e66780057fd908b421becd2f173504d040e"}, - {file = "lru_dict-1.2.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd46c94966f631a81ffe33eee928db58e9fbee15baba5923d284aeadc0e0fa76"}, - {file = "lru_dict-1.2.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:086ce993414f0b28530ded7e004c77dc57c5748fa6da488602aa6e7f79e6210e"}, - {file = "lru_dict-1.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df25a426446197488a6702954dcc1de511deee20c9db730499a2aa83fddf0df1"}, - {file = "lru_dict-1.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c53b12b89bd7a6c79f0536ff0d0a84fdf4ab5f6252d94b24b9b753bd9ada2ddf"}, - {file = "lru_dict-1.2.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f9484016e6765bd295708cccc9def49f708ce07ac003808f69efa386633affb9"}, - {file = "lru_dict-1.2.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d0f7ec902a0097ac39f1922c89be9eaccf00eb87751e28915320b4f72912d057"}, - {file = "lru_dict-1.2.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:981ef3edc82da38d39eb60eae225b88a538d47b90cce2e5808846fd2cf64384b"}, - {file = "lru_dict-1.2.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e25b2e90a032dc248213af7f3f3e975e1934b204f3b16aeeaeaff27a3b65e128"}, - {file = "lru_dict-1.2.0-cp36-cp36m-win32.whl", hash = "sha256:59f3df78e94e07959f17764e7fa7ca6b54e9296953d2626a112eab08e1beb2db"}, - {file = "lru_dict-1.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:de24b47159e07833aeab517d9cb1c3c5c2d6445cc378b1c2f1d8d15fb4841d63"}, - {file = "lru_dict-1.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d0dd4cd58220351233002f910e35cc01d30337696b55c6578f71318b137770f9"}, - {file = "lru_dict-1.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a87bdc291718bbdf9ea4be12ae7af26cbf0706fa62c2ac332748e3116c5510a7"}, - {file = "lru_dict-1.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05fb8744f91f58479cbe07ed80ada6696ec7df21ea1740891d4107a8dd99a970"}, - {file = "lru_dict-1.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00f6e8a3fc91481b40395316a14c94daa0f0a5de62e7e01a7d589f8d29224052"}, - {file = "lru_dict-1.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b172fce0a0ffc0fa6d282c14256d5a68b5db1e64719c2915e69084c4b6bf555"}, - {file = "lru_dict-1.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e707d93bae8f0a14e6df1ae8b0f076532b35f00e691995f33132d806a88e5c18"}, - {file = "lru_dict-1.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b9ec7a4a0d6b8297102aa56758434fb1fca276a82ed7362e37817407185c3abb"}, - {file = "lru_dict-1.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:f404dcc8172da1f28da9b1f0087009578e608a4899b96d244925c4f463201f2a"}, - {file = "lru_dict-1.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1171ad3bff32aa8086778be4a3bdff595cc2692e78685bcce9cb06b96b22dcc2"}, - {file = "lru_dict-1.2.0-cp37-cp37m-win32.whl", hash = "sha256:0c316dfa3897fabaa1fe08aae89352a3b109e5f88b25529bc01e98ac029bf878"}, - {file = "lru_dict-1.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:5919dd04446bc1ee8d6ecda2187deeebfff5903538ae71083e069bc678599446"}, - {file = "lru_dict-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fbf36c5a220a85187cacc1fcb7dd87070e04b5fc28df7a43f6842f7c8224a388"}, - {file = "lru_dict-1.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:712e71b64da181e1c0a2eaa76cd860265980cd15cb0e0498602b8aa35d5db9f8"}, - {file = "lru_dict-1.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f54908bf91280a9b8fa6a8c8f3c2f65850ce6acae2852bbe292391628ebca42f"}, - {file = "lru_dict-1.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3838e33710935da2ade1dd404a8b936d571e29268a70ff4ca5ba758abb3850df"}, - {file = "lru_dict-1.2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5d5a5f976b39af73324f2b793862859902ccb9542621856d51a5993064f25e4"}, - {file = "lru_dict-1.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8bda3a9afd241ee0181661decaae25e5336ce513ac268ab57da737eacaa7871f"}, - {file = "lru_dict-1.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:bd2cd1b998ea4c8c1dad829fc4fa88aeed4dee555b5e03c132fc618e6123f168"}, - {file = "lru_dict-1.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b55753ee23028ba8644fd22e50de7b8f85fa60b562a0fafaad788701d6131ff8"}, - {file = "lru_dict-1.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e51fa6a203fa91d415f3b2900e5748ec8e06ad75777c98cc3aeb3983ca416d7"}, - {file = "lru_dict-1.2.0-cp38-cp38-win32.whl", hash = "sha256:cd6806313606559e6c7adfa0dbeb30fc5ab625f00958c3d93f84831e7a32b71e"}, - {file = "lru_dict-1.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d90a70c53b0566084447c3ef9374cc5a9be886e867b36f89495f211baabd322"}, - {file = "lru_dict-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a3ea7571b6bf2090a85ff037e6593bbafe1a8598d5c3b4560eb56187bcccb4dc"}, - {file = "lru_dict-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:287c2115a59c1c9ed0d5d8ae7671e594b1206c36ea9df2fca6b17b86c468ff99"}, - {file = "lru_dict-1.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5ccfd2291c93746a286c87c3f895165b697399969d24c54804ec3ec559d4e43"}, - {file = "lru_dict-1.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b710f0f4d7ec4f9fa89dfde7002f80bcd77de8024017e70706b0911ea086e2ef"}, - {file = "lru_dict-1.2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5345bf50e127bd2767e9fd42393635bbc0146eac01f6baf6ef12c332d1a6a329"}, - {file = "lru_dict-1.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:291d13f85224551913a78fe695cde04cbca9dcb1d84c540167c443eb913603c9"}, - {file = "lru_dict-1.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d5bb41bc74b321789803d45b124fc2145c1b3353b4ad43296d9d1d242574969b"}, - {file = "lru_dict-1.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0facf49b053bf4926d92d8d5a46fe07eecd2af0441add0182c7432d53d6da667"}, - {file = "lru_dict-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:987b73a06bcf5a95d7dc296241c6b1f9bc6cda42586948c9dabf386dc2bef1cd"}, - {file = "lru_dict-1.2.0-cp39-cp39-win32.whl", hash = "sha256:231d7608f029dda42f9610e5723614a35b1fff035a8060cf7d2be19f1711ace8"}, - {file = "lru_dict-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:71da89e134747e20ed5b8ad5b4ee93fc5b31022c2b71e8176e73c5a44699061b"}, - {file = "lru_dict-1.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:21b3090928c7b6cec509e755cc3ab742154b33660a9b433923bd12c37c448e3e"}, - {file = "lru_dict-1.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaecd7085212d0aa4cd855f38b9d61803d6509731138bf798a9594745953245b"}, - {file = "lru_dict-1.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ead83ac59a29d6439ddff46e205ce32f8b7f71a6bd8062347f77e232825e3d0a"}, - {file = "lru_dict-1.2.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:312b6b2a30188586fe71358f0f33e4bac882d33f5e5019b26f084363f42f986f"}, - {file = "lru_dict-1.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b30122e098c80e36d0117810d46459a46313421ce3298709170b687dc1240b02"}, - {file = "lru_dict-1.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f010cfad3ab10676e44dc72a813c968cd586f37b466d27cde73d1f7f1ba158c2"}, - {file = "lru_dict-1.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20f5f411f7751ad9a2c02e80287cedf69ae032edd321fe696e310d32dd30a1f8"}, - {file = "lru_dict-1.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:afdadd73304c9befaed02eb42f5f09fdc16288de0a08b32b8080f0f0f6350aa6"}, - {file = "lru_dict-1.2.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7ab0c10c4fa99dc9e26b04e6b62ac32d2bcaea3aad9b81ec8ce9a7aa32b7b1b"}, - {file = "lru_dict-1.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:edad398d5d402c43d2adada390dd83c74e46e020945ff4df801166047013617e"}, - {file = "lru_dict-1.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:91d577a11b84387013815b1ad0bb6e604558d646003b44c92b3ddf886ad0f879"}, - {file = "lru_dict-1.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb12f19cdf9c4f2d9aa259562e19b188ff34afab28dd9509ff32a3f1c2c29326"}, - {file = "lru_dict-1.2.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e4c85aa8844bdca3c8abac3b7f78da1531c74e9f8b3e4890c6e6d86a5a3f6c0"}, - {file = "lru_dict-1.2.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6acbd097b15bead4de8e83e8a1030bb4d8257723669097eac643a301a952f0"}, - {file = "lru_dict-1.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b6613daa851745dd22b860651de930275be9d3e9373283a2164992abacb75b62"}, -] - -[package.extras] -test = ["pytest"] - [[package]] name = "lsprotocol" version = "2023.0.1" @@ -1433,12 +1464,13 @@ files = [ [[package]] name = "parsimonious" -version = "0.9.0" +version = "0.10.0" description = "(Soon to be) the fastest pure-Python PEG parser I could muster" optional = false python-versions = "*" files = [ - {file = "parsimonious-0.9.0.tar.gz", hash = "sha256:b2ad1ae63a2f65bd78f5e0a8ac510a98f3607a43f1db2a8d46636a5d9e4a30c1"}, + {file = "parsimonious-0.10.0-py3-none-any.whl", hash = "sha256:982ab435fabe86519b57f6b35610aa4e4e977e9f02a14353edf4bbc75369fc0f"}, + {file = "parsimonious-0.10.0.tar.gz", hash = "sha256:8281600da180ec8ae35427a4ab4f7b82bfec1e3d1e52f80cb60ea82b9512501c"}, ] [package.dependencies] @@ -1586,6 +1618,237 @@ files = [ {file = "pycryptodome-3.20.0.tar.gz", hash = "sha256:09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7"}, ] +[[package]] +name = "pydantic" +version = "2.7.4" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic-2.7.4-py3-none-any.whl", hash = "sha256:ee8538d41ccb9c0a9ad3e0e5f07bf15ed8015b481ced539a1759d8cc89ae90d0"}, + {file = "pydantic-2.7.4.tar.gz", hash = "sha256:0c84efd9548d545f63ac0060c1e4d39bb9b14db8b3c0652338aecc07b5adec52"}, +] + +[package.dependencies] +annotated-types = ">=0.4.0" +pydantic-core = "2.18.4" +typing-extensions = ">=4.6.1" + +[package.extras] +email = ["email-validator (>=2.0.0)"] + +[[package]] +name = "pydantic" +version = "2.9.2" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.23.4" +typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.18.4" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.18.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:f76d0ad001edd426b92233d45c746fd08f467d56100fd8f30e9ace4b005266e4"}, + {file = "pydantic_core-2.18.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:59ff3e89f4eaf14050c8022011862df275b552caef8082e37b542b066ce1ff26"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a55b5b16c839df1070bc113c1f7f94a0af4433fcfa1b41799ce7606e5c79ce0a"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4d0dcc59664fcb8974b356fe0a18a672d6d7cf9f54746c05f43275fc48636851"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8951eee36c57cd128f779e641e21eb40bc5073eb28b2d23f33eb0ef14ffb3f5d"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4701b19f7e3a06ea655513f7938de6f108123bf7c86bbebb1196eb9bd35cf724"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e00a3f196329e08e43d99b79b286d60ce46bed10f2280d25a1718399457e06be"}, + {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:97736815b9cc893b2b7f663628e63f436018b75f44854c8027040e05230eeddb"}, + {file = "pydantic_core-2.18.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6891a2ae0e8692679c07728819b6e2b822fb30ca7445f67bbf6509b25a96332c"}, + {file = "pydantic_core-2.18.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bc4ff9805858bd54d1a20efff925ccd89c9d2e7cf4986144b30802bf78091c3e"}, + {file = "pydantic_core-2.18.4-cp310-none-win32.whl", hash = "sha256:1b4de2e51bbcb61fdebd0ab86ef28062704f62c82bbf4addc4e37fa4b00b7cbc"}, + {file = "pydantic_core-2.18.4-cp310-none-win_amd64.whl", hash = "sha256:6a750aec7bf431517a9fd78cb93c97b9b0c496090fee84a47a0d23668976b4b0"}, + {file = "pydantic_core-2.18.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:942ba11e7dfb66dc70f9ae66b33452f51ac7bb90676da39a7345e99ffb55402d"}, + {file = "pydantic_core-2.18.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2ebef0e0b4454320274f5e83a41844c63438fdc874ea40a8b5b4ecb7693f1c4"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a642295cd0c8df1b86fc3dced1d067874c353a188dc8e0f744626d49e9aa51c4"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f09baa656c904807e832cf9cce799c6460c450c4ad80803517032da0cd062e2"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98906207f29bc2c459ff64fa007afd10a8c8ac080f7e4d5beff4c97086a3dabd"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19894b95aacfa98e7cb093cd7881a0c76f55731efad31073db4521e2b6ff5b7d"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fbbdc827fe5e42e4d196c746b890b3d72876bdbf160b0eafe9f0334525119c8"}, + {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f85d05aa0918283cf29a30b547b4df2fbb56b45b135f9e35b6807cb28bc47951"}, + {file = "pydantic_core-2.18.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e85637bc8fe81ddb73fda9e56bab24560bdddfa98aa64f87aaa4e4b6730c23d2"}, + {file = "pydantic_core-2.18.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2f5966897e5461f818e136b8451d0551a2e77259eb0f73a837027b47dc95dab9"}, + {file = "pydantic_core-2.18.4-cp311-none-win32.whl", hash = "sha256:44c7486a4228413c317952e9d89598bcdfb06399735e49e0f8df643e1ccd0558"}, + {file = "pydantic_core-2.18.4-cp311-none-win_amd64.whl", hash = "sha256:8a7164fe2005d03c64fd3b85649891cd4953a8de53107940bf272500ba8a788b"}, + {file = "pydantic_core-2.18.4-cp311-none-win_arm64.whl", hash = "sha256:4e99bc050fe65c450344421017f98298a97cefc18c53bb2f7b3531eb39bc7805"}, + {file = "pydantic_core-2.18.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6f5c4d41b2771c730ea1c34e458e781b18cc668d194958e0112455fff4e402b2"}, + {file = "pydantic_core-2.18.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2fdf2156aa3d017fddf8aea5adfba9f777db1d6022d392b682d2a8329e087cef"}, + {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4748321b5078216070b151d5271ef3e7cc905ab170bbfd27d5c83ee3ec436695"}, + {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:847a35c4d58721c5dc3dba599878ebbdfd96784f3fb8bb2c356e123bdcd73f34"}, + {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c40d4eaad41f78e3bbda31b89edc46a3f3dc6e171bf0ecf097ff7a0ffff7cb1"}, + {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:21a5e440dbe315ab9825fcd459b8814bb92b27c974cbc23c3e8baa2b76890077"}, + {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01dd777215e2aa86dfd664daed5957704b769e726626393438f9c87690ce78c3"}, + {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4b06beb3b3f1479d32befd1f3079cc47b34fa2da62457cdf6c963393340b56e9"}, + {file = "pydantic_core-2.18.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:564d7922e4b13a16b98772441879fcdcbe82ff50daa622d681dd682175ea918c"}, + {file = "pydantic_core-2.18.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0eb2a4f660fcd8e2b1c90ad566db2b98d7f3f4717c64fe0a83e0adb39766d5b8"}, + {file = "pydantic_core-2.18.4-cp312-none-win32.whl", hash = "sha256:8b8bab4c97248095ae0c4455b5a1cd1cdd96e4e4769306ab19dda135ea4cdb07"}, + {file = "pydantic_core-2.18.4-cp312-none-win_amd64.whl", hash = "sha256:14601cdb733d741b8958224030e2bfe21a4a881fb3dd6fbb21f071cabd48fa0a"}, + {file = "pydantic_core-2.18.4-cp312-none-win_arm64.whl", hash = "sha256:c1322d7dd74713dcc157a2b7898a564ab091ca6c58302d5c7b4c07296e3fd00f"}, + {file = "pydantic_core-2.18.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:823be1deb01793da05ecb0484d6c9e20baebb39bd42b5d72636ae9cf8350dbd2"}, + {file = "pydantic_core-2.18.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ebef0dd9bf9b812bf75bda96743f2a6c5734a02092ae7f721c048d156d5fabae"}, + {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae1d6df168efb88d7d522664693607b80b4080be6750c913eefb77e34c12c71a"}, + {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f9899c94762343f2cc2fc64c13e7cae4c3cc65cdfc87dd810a31654c9b7358cc"}, + {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99457f184ad90235cfe8461c4d70ab7dd2680e28821c29eca00252ba90308c78"}, + {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18f469a3d2a2fdafe99296a87e8a4c37748b5080a26b806a707f25a902c040a8"}, + {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7cdf28938ac6b8b49ae5e92f2735056a7ba99c9b110a474473fd71185c1af5d"}, + {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:938cb21650855054dc54dfd9120a851c974f95450f00683399006aa6e8abb057"}, + {file = "pydantic_core-2.18.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:44cd83ab6a51da80fb5adbd9560e26018e2ac7826f9626bc06ca3dc074cd198b"}, + {file = "pydantic_core-2.18.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:972658f4a72d02b8abfa2581d92d59f59897d2e9f7e708fdabe922f9087773af"}, + {file = "pydantic_core-2.18.4-cp38-none-win32.whl", hash = "sha256:1d886dc848e60cb7666f771e406acae54ab279b9f1e4143babc9c2258213daa2"}, + {file = "pydantic_core-2.18.4-cp38-none-win_amd64.whl", hash = "sha256:bb4462bd43c2460774914b8525f79b00f8f407c945d50881568f294c1d9b4443"}, + {file = "pydantic_core-2.18.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:44a688331d4a4e2129140a8118479443bd6f1905231138971372fcde37e43528"}, + {file = "pydantic_core-2.18.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a2fdd81edd64342c85ac7cf2753ccae0b79bf2dfa063785503cb85a7d3593223"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86110d7e1907ab36691f80b33eb2da87d780f4739ae773e5fc83fb272f88825f"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46387e38bd641b3ee5ce247563b60c5ca098da9c56c75c157a05eaa0933ed154"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:123c3cec203e3f5ac7b000bd82235f1a3eced8665b63d18be751f115588fea30"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dc1803ac5c32ec324c5261c7209e8f8ce88e83254c4e1aebdc8b0a39f9ddb443"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53db086f9f6ab2b4061958d9c276d1dbe3690e8dd727d6abf2321d6cce37fa94"}, + {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:abc267fa9837245cc28ea6929f19fa335f3dc330a35d2e45509b6566dc18be23"}, + {file = "pydantic_core-2.18.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a0d829524aaefdebccb869eed855e2d04c21d2d7479b6cada7ace5448416597b"}, + {file = "pydantic_core-2.18.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:509daade3b8649f80d4e5ff21aa5673e4ebe58590b25fe42fac5f0f52c6f034a"}, + {file = "pydantic_core-2.18.4-cp39-none-win32.whl", hash = "sha256:ca26a1e73c48cfc54c4a76ff78df3727b9d9f4ccc8dbee4ae3f73306a591676d"}, + {file = "pydantic_core-2.18.4-cp39-none-win_amd64.whl", hash = "sha256:c67598100338d5d985db1b3d21f3619ef392e185e71b8d52bceacc4a7771ea7e"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:574d92eac874f7f4db0ca653514d823a0d22e2354359d0759e3f6a406db5d55d"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1f4d26ceb5eb9eed4af91bebeae4b06c3fb28966ca3a8fb765208cf6b51102ab"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77450e6d20016ec41f43ca4a6c63e9fdde03f0ae3fe90e7c27bdbeaece8b1ed4"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d323a01da91851a4f17bf592faf46149c9169d68430b3146dcba2bb5e5719abc"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43d447dd2ae072a0065389092a231283f62d960030ecd27565672bd40746c507"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:578e24f761f3b425834f297b9935e1ce2e30f51400964ce4801002435a1b41ef"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:81b5efb2f126454586d0f40c4d834010979cb80785173d1586df845a632e4e6d"}, + {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ab86ce7c8f9bea87b9d12c7f0af71102acbf5ecbc66c17796cff45dae54ef9a5"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:90afc12421df2b1b4dcc975f814e21bc1754640d502a2fbcc6d41e77af5ec312"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:51991a89639a912c17bef4b45c87bd83593aee0437d8102556af4885811d59f5"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:293afe532740370aba8c060882f7d26cfd00c94cae32fd2e212a3a6e3b7bc15e"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48ece5bde2e768197a2d0f6e925f9d7e3e826f0ad2271120f8144a9db18d5c8"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eae237477a873ab46e8dd748e515c72c0c804fb380fbe6c85533c7de51f23a8f"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:834b5230b5dfc0c1ec37b2fda433b271cbbc0e507560b5d1588e2cc1148cf1ce"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e858ac0a25074ba4bce653f9b5d0a85b7456eaddadc0ce82d3878c22489fa4ee"}, + {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2fd41f6eff4c20778d717af1cc50eca52f5afe7805ee530a4fbd0bae284f16e9"}, + {file = "pydantic_core-2.18.4.tar.gz", hash = "sha256:ec3beeada09ff865c344ff3bc2f427f5e6c26401cc6113d77e372c3fdac73864"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pydantic-core" +version = "2.23.4" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + [[package]] name = "pyflakes" version = "3.2.0" @@ -2203,6 +2466,20 @@ files = [ {file = "toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d"}, ] +[[package]] +name = "types-requests" +version = "2.32.4.20250611" +description = "Typing stubs for requests" +optional = false +python-versions = ">=3.9" +files = [ + {file = "types_requests-2.32.4.20250611-py3-none-any.whl", hash = "sha256:ad2fe5d3b0cb3c2c902c8815a70e7fb2302c4b8c1f77bdcd738192cdb3878072"}, + {file = "types_requests-2.32.4.20250611.tar.gz", hash = "sha256:741c8777ed6425830bf51e54d6abe245f79b4dcb9019f1622b773463946bf826"}, +] + +[package.dependencies] +urllib3 = ">=2" + [[package]] name = "typing-extensions" version = "4.9.0" @@ -2233,38 +2510,36 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "web3" -version = "6.15.1" -description = "web3.py" +version = "7.13.0" +description = "web3: A Python library for interacting with Ethereum" optional = false -python-versions = ">=3.7.2" +python-versions = "<4,>=3.8" files = [ - {file = "web3-6.15.1-py3-none-any.whl", hash = "sha256:4e4a8313aa4556ecde61c852a62405b853b667498b07da6ff05c29fe8c79096b"}, - {file = "web3-6.15.1.tar.gz", hash = "sha256:f9e7eefc1b3c3d194868a4ef9583b625c18ea3f31a48ebe143183db74898f381"}, + {file = "web3-7.13.0-py3-none-any.whl", hash = "sha256:4da7e953300577b7dadbaf430e5fd4479b127b1ad4910234b230fdcb8a49f735"}, + {file = "web3-7.13.0.tar.gz", hash = "sha256:281795e0f5d404c1374e1771f6710bb43e0c975f3141366eb1680763edfb4806"}, ] [package.dependencies] aiohttp = ">=3.7.4.post0" -eth-abi = ">=4.0.0" -eth-account = ">=0.8.0" +eth-abi = ">=5.0.1" +eth-account = ">=0.13.6" eth-hash = {version = ">=0.5.1", extras = ["pycryptodome"]} -eth-typing = ">=3.0.0" -eth-utils = ">=2.1.0" -hexbytes = ">=0.1.0,<0.4.0" -jsonschema = ">=4.0.0" -lru-dict = ">=1.1.6,<1.3.0" -protobuf = ">=4.21.6" +eth-typing = ">=5.0.0" +eth-utils = ">=5.0.0" +hexbytes = ">=1.2.0" +pydantic = ">=2.4.0" pyunormalize = ">=15.0.0" pywin32 = {version = ">=223", markers = "platform_system == \"Windows\""} -requests = ">=2.16.0" +requests = ">=2.23.0" +types-requests = ">=2.0.0" typing-extensions = ">=4.0.1" -websockets = ">=10.0.0" +websockets = ">=10.0.0,<16.0.0" [package.extras] -dev = ["black (>=22.1.0)", "build (>=0.9.0)", "bumpversion", "eth-tester[py-evm] (==v0.9.1-b.2)", "flake8 (==3.8.3)", "flaky (>=3.7.0)", "hypothesis (>=3.31.2)", "importlib-metadata (<5.0)", "ipfshttpclient (==0.8.0a2)", "isort (>=5.11.0)", "mypy (==1.4.1)", "py-geth (>=3.14.0)", "pytest (>=7.0.0)", "pytest-asyncio (>=0.18.1,<0.23)", "pytest-mock (>=1.10)", "pytest-watch (>=4.2)", "pytest-xdist (>=1.29)", "setuptools (>=38.6.0)", "sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)", "tox (>=3.18.0)", "tqdm (>4.32)", "twine (>=1.13)", "types-protobuf (==3.19.13)", "types-requests (>=2.26.1)", "types-setuptools (>=57.4.4)", "when-changed (>=0.3.0)"] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] -ipfs = ["ipfshttpclient (==0.8.0a2)"] -linter = ["black (>=22.1.0)", "flake8 (==3.8.3)", "isort (>=5.11.0)", "mypy (==1.4.1)", "types-protobuf (==3.19.13)", "types-requests (>=2.26.1)", "types-setuptools (>=57.4.4)"] -tester = ["eth-tester[py-evm] (==v0.9.1-b.2)", "py-geth (>=3.14.0)"] +dev = ["build (>=0.9.0)", "bump_my_version (>=0.19.0)", "eth-tester[py-evm] (>=0.13.0b1,<0.14.0b1)", "flaky (>=3.7.0)", "hypothesis (>=3.31.2)", "ipython", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "py-geth (>=5.1.0)", "pytest (>=7.0.0)", "pytest-asyncio (>=0.18.1,<0.23)", "pytest-mock (>=1.10)", "pytest-xdist (>=2.4.0)", "setuptools (>=38.6.0)", "sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)", "tox (>=4.0.0)", "tqdm (>4.32)", "twine (>=1.13)", "wheel"] +docs = ["sphinx (>=6.0.0)", "sphinx-autobuild (>=2021.3.14)", "sphinx_rtd_theme (>=1.0.0)", "towncrier (>=24,<25)"] +test = ["eth-tester[py-evm] (>=0.13.0b1,<0.14.0b1)", "flaky (>=3.7.0)", "hypothesis (>=3.31.2)", "mypy (==1.10.0)", "pre-commit (>=3.4.0)", "py-geth (>=5.1.0)", "pytest (>=7.0.0)", "pytest-asyncio (>=0.18.1,<0.23)", "pytest-mock (>=1.10)", "pytest-xdist (>=2.4.0)", "tox (>=4.0.0)"] +tester = ["eth-tester[py-evm] (>=0.13.0b1,<0.14.0b1)", "py-geth (>=5.1.0)"] [[package]] name = "websockets" @@ -2453,4 +2728,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "250de604d40c8546d723cca7b74a237ac10d99d4c525f91be84783430f2f2267" +content-hash = "ac4ae99b43ee6ef2b3bbdf61ca8606b6853d73b69336a6785085eccec88e3c03" diff --git a/tests/integration_tests/pyproject.toml b/tests/integration_tests/pyproject.toml index eff0e248ea..eeb29173dd 100644 --- a/tests/integration_tests/pyproject.toml +++ b/tests/integration_tests/pyproject.toml @@ -15,13 +15,13 @@ flake8-isort = "^6.1" pep8-naming = "^0.13" protobuf = "^4.25" python-dateutil = "^2.8" -web3 = "^6.15" +web3 = "^7.13.0" python-dotenv = "^1.0" pystarport = { git = "https://github.com/crypto-com/pystarport.git", branch = "main" } websockets = "^12.0" toml = "^0" jsonnet = "^0" -eth-account = "^0.11" +eth-account = "^0.13" cprotobuf = "^0.1.11" flaky = "^3.7" eth-bloom = "^3.0" diff --git a/tests/integration_tests/test_account.py b/tests/integration_tests/test_account.py index b18028f7a7..3dc58b19f4 100644 --- a/tests/integration_tests/test_account.py +++ b/tests/integration_tests/test_account.py @@ -1,5 +1,5 @@ import pytest -from web3 import Web3 +from web3 import Web3, exceptions from .network import setup_ethermint from .utils import ADDRS, derive_new_account, w3_wait_for_new_blocks @@ -51,7 +51,7 @@ def test_query_future_blk(cluster): acc = derive_new_account(2).address current = w3.eth.block_number future = current + 1000 - with pytest.raises(ValueError) as exc: + with pytest.raises(exceptions.Web3RPCError) as exc: w3.eth.get_transaction_count(acc, hex(future)) print(acc, str(exc)) assert "-32000" in str(exc) diff --git a/tests/integration_tests/test_batch.py b/tests/integration_tests/test_batch.py index 75a50fa79a..010e1a6bb2 100644 --- a/tests/integration_tests/test_batch.py +++ b/tests/integration_tests/test_batch.py @@ -1,5 +1,7 @@ import json +from web3 import Web3 + from .utils import ADDRS, CONTRACTS, build_batch_tx, contract_address @@ -56,7 +58,7 @@ def test_batch_tx(ethermint): # check traceTransaction rsps = [ - w3.provider.make_request("debug_traceTransaction", [h.hex()])["result"] + w3.provider.make_request("debug_traceTransaction", [Web3.to_hex(h)])["result"] for h in tx_hashes ] diff --git a/tests/integration_tests/test_block.py b/tests/integration_tests/test_block.py index b8c1facc32..99367d4231 100644 --- a/tests/integration_tests/test_block.py +++ b/tests/integration_tests/test_block.py @@ -1,3 +1,5 @@ +from web3 import Web3 + from .utils import CONTRACTS, deploy_contract, w3_wait_for_new_blocks @@ -6,6 +8,6 @@ def test_call(ethermint): contract, res = deploy_contract(w3, CONTRACTS["TestBlockTxProperties"]) height = w3.eth.get_block_number() w3_wait_for_new_blocks(w3, 1) - res = contract.caller.getBlockHash(height).hex() + res = Web3.to_hex(contract.caller.getBlockHash(height)) blk = w3.eth.get_block(height) - assert f"0x{res}" == blk.hash.hex(), res + assert res == Web3.to_hex(blk.hash), res diff --git a/tests/integration_tests/test_call.py b/tests/integration_tests/test_call.py index cb49d253a9..7280ecf6eb 100644 --- a/tests/integration_tests/test_call.py +++ b/tests/integration_tests/test_call.py @@ -1,6 +1,5 @@ import json -from hexbytes import HexBytes from web3 import Web3 from web3._utils.contracts import encode_transaction_data @@ -11,16 +10,16 @@ def test_temporary_contract_code(ethermint): state = 100 w3: Web3 = ethermint.w3 info = json.loads(CONTRACTS["Greeter"].read_text()) - data = encode_transaction_data(w3, "intValue", info["abi"]) + data = encode_transaction_data( + w3, "intValue", contract_abi=info["abi"], args=[], kwargs={} + ) # call an arbitrary address address = w3.to_checksum_address("0x0000000000000000000000000000ffffffffffff") overrides = { address: { "code": info["deployedBytecode"], "state": { - ("0x" + "0" * 64): HexBytes( - w3.codec.encode(("uint256",), (state,)) - ).hex(), + ("0x" + "0" * 64): Web3.to_hex(w3.codec.encode(("uint256",), (state,))), }, }, } @@ -45,12 +44,14 @@ def test_override_state(ethermint): info = json.loads(CONTRACTS["Greeter"].read_text()) int_value = 100 state = { - ("0x" + "0" * 64): HexBytes(w3.codec.encode(("uint256",), (int_value,))).hex(), + ("0x" + "0" * 64): Web3.to_hex(w3.codec.encode(("uint256",), (int_value,))), } result = w3.eth.call( { "to": contract.address, - "data": encode_transaction_data(w3, "intValue", info["abi"]), + "data": encode_transaction_data( + w3, "intValue", contract_abi=info["abi"], args=[], kwargs={} + ), }, "latest", { @@ -66,7 +67,9 @@ def test_override_state(ethermint): result = w3.eth.call( { "to": contract.address, - "data": encode_transaction_data(w3, "greet", info["abi"]), + "data": encode_transaction_data( + w3, "greet", contract_abi=info["abi"], args=[], kwargs={} + ), }, "latest", { @@ -82,7 +85,9 @@ def test_override_state(ethermint): result = w3.eth.call( { "to": contract.address, - "data": encode_transaction_data(w3, "greet", info["abi"]), + "data": encode_transaction_data( + w3, "greet", contract_abi=info["abi"], args=[], kwargs={} + ), }, "latest", { diff --git a/tests/integration_tests/test_debug_traceblock.py b/tests/integration_tests/test_debug_traceblock.py index 906d14c078..57bec4dfcb 100644 --- a/tests/integration_tests/test_debug_traceblock.py +++ b/tests/integration_tests/test_debug_traceblock.py @@ -34,7 +34,7 @@ def test_traceblock(ethermint): "nonce": nonce + n, } signed = sign_transaction(w3, tx, acc.key) - txhash = w3.eth.send_raw_transaction(signed.rawTransaction) + txhash = w3.eth.send_raw_transaction(signed.raw_transaction) txhashes.append(txhash) for txhash in txhashes[0 : total - 1]: res = w3.eth.wait_for_transaction_receipt(txhash) diff --git a/tests/integration_tests/test_estimate_gas.py b/tests/integration_tests/test_estimate_gas.py index 9db5876d40..e931ff1040 100644 --- a/tests/integration_tests/test_estimate_gas.py +++ b/tests/integration_tests/test_estimate_gas.py @@ -39,8 +39,9 @@ def process(w3): def test_out_of_gas_error(ethermint, geth): - iterations = 1 - gas = 21204 + # increase gas to pass EIP-7623: Floor Data Gas + iterations = 10 + gas = 21510 def process(w3): contract, _ = deploy_contract(w3, CONTRACTS["TestMessageCall"]) diff --git a/tests/integration_tests/test_filters.py b/tests/integration_tests/test_filters.py index f1a737eb47..32cb059cef 100644 --- a/tests/integration_tests/test_filters.py +++ b/tests/integration_tests/test_filters.py @@ -85,17 +85,17 @@ def test_get_logs_by_topic(cluster): # The getLogs method under the hood works as a filter # with the specified topics and a block range. # If the block range is not specified, it defaults - # to fromBlock: "latest", toBlock: "latest". + # to from_block: "latest", toBlock: "latest". # Then, if we make a getLogs call within the same block that the tx # happened, we will get a log in the result. However, if we make the call # one or more blocks later, the result will be an empty array. - logs = w3.eth.get_logs({"topics": [topic.hex()]}) + logs = w3.eth.get_logs({"topics": [Web3.to_hex(topic)]}) assert len(logs) == 1 assert logs[0]["address"] == contract.address w3_wait_for_new_blocks(w3, 2) - logs = w3.eth.get_logs({"topics": [topic.hex()]}) + logs = w3.eth.get_logs({"topics": [Web3.to_hex(topic)]}) assert len(logs) == 0 end = "latest" @@ -158,7 +158,7 @@ def test_event_log_filter_by_contract(cluster): # Create new filter from contract current_height = hex(w3.eth.get_block_number()) - flt = contract.events.ChangeGreeting.create_filter(fromBlock=current_height) + flt = contract.events.ChangeGreeting.create_filter(from_block=current_height) # without tx assert flt.get_new_entries() == [] # GetFilterChanges @@ -223,11 +223,11 @@ def test_event_log_filter_by_topic(cluster): { "name": "one contract emiting one topic", "filters": [ - {"topics": [CHANGE_GREETING_TOPIC.hex()]}, + {"topics": [Web3.to_hex(CHANGE_GREETING_TOPIC)]}, { "fromBlock": 1, "toBlock": "latest", - "topics": [CHANGE_GREETING_TOPIC.hex()], + "topics": [Web3.to_hex(CHANGE_GREETING_TOPIC)], }, ], "exp_len": 1, @@ -238,12 +238,12 @@ def test_event_log_filter_by_topic(cluster): "name": "multiple contracts emitting same topic", "filters": [ { - "topics": [CHANGE_GREETING_TOPIC.hex()], + "topics": [Web3.to_hex(CHANGE_GREETING_TOPIC)], }, { "fromBlock": 1, "toBlock": "latest", - "topics": [CHANGE_GREETING_TOPIC.hex()], + "topics": [Web3.to_hex(CHANGE_GREETING_TOPIC)], }, ], "exp_len": 5, @@ -254,12 +254,22 @@ def test_event_log_filter_by_topic(cluster): "name": "multiple contracts emitting different topics", "filters": [ { - "topics": [[CHANGE_GREETING_TOPIC.hex(), TRANSFER_TOPIC.hex()]], + "topics": [ + [ + Web3.to_hex(CHANGE_GREETING_TOPIC), + Web3.to_hex(TRANSFER_TOPIC), + ] + ], }, { "fromBlock": 1, "toBlock": "latest", - "topics": [[CHANGE_GREETING_TOPIC.hex(), TRANSFER_TOPIC.hex()]], + "topics": [ + [ + Web3.to_hex(CHANGE_GREETING_TOPIC), + Web3.to_hex(TRANSFER_TOPIC), + ] + ], }, ], "exp_len": 3, # 2 transfer events, mint&transfer on deploy (2)tx in test @@ -353,14 +363,14 @@ def test_multiple_filters(cluster): "exp_len": 1, }, { - "params": {"topics": [topic.hex()]}, + "params": {"topics": [Web3.to_hex(topic)]}, "exp_len": 1, }, { "params": { "topics": [ - topic.hex(), - another_topic.hex(), + Web3.to_hex(topic), + Web3.to_hex(another_topic), ], # 'with all topics' condition }, "exp_len": 0, @@ -368,7 +378,7 @@ def test_multiple_filters(cluster): { "params": { "topics": [ - [topic.hex(), another_topic.hex()] + [Web3.to_hex(topic), Web3.to_hex(another_topic)] ], # 'with any topic' condition }, "exp_len": 1, @@ -376,7 +386,7 @@ def test_multiple_filters(cluster): { "params": { "address": contract.address, - "topics": [[topic.hex(), another_topic.hex()]], + "topics": [[Web3.to_hex(topic), Web3.to_hex(another_topic)]], }, "exp_len": 1, }, @@ -385,7 +395,7 @@ def test_multiple_filters(cluster): "fromBlock": 1, "toBlock": 2, "address": contract.address, - "topics": [[topic.hex(), another_topic.hex()]], + "topics": [[Web3.to_hex(topic), Web3.to_hex(another_topic)]], }, "exp_len": 0, }, @@ -394,7 +404,7 @@ def test_multiple_filters(cluster): "fromBlock": 1, "toBlock": "latest", "address": contract.address, - "topics": [[topic.hex(), another_topic.hex()]], + "topics": [[Web3.to_hex(topic), Web3.to_hex(another_topic)]], }, "exp_len": 1, }, @@ -402,7 +412,7 @@ def test_multiple_filters(cluster): "params": { "fromBlock": 1, "toBlock": "latest", - "topics": [[topic.hex(), another_topic.hex()]], + "topics": [[Web3.to_hex(topic), Web3.to_hex(another_topic)]], }, "exp_len": 1, }, @@ -512,14 +522,14 @@ def test_register_filters_before_contract_deploy(cluster): filters = [ { - "params": {"topics": [topic.hex()]}, + "params": {"topics": [Web3.to_hex(topic)]}, "exp_len": 1, }, { "params": { "topics": [ - topic.hex(), - another_topic.hex(), + Web3.to_hex(topic), + Web3.to_hex(another_topic), ], # 'with all topics' condition }, "exp_len": 0, @@ -527,7 +537,7 @@ def test_register_filters_before_contract_deploy(cluster): { "params": { "topics": [ - [topic.hex(), another_topic.hex()] + [Web3.to_hex(topic), Web3.to_hex(another_topic)] ], # 'with any topic' condition }, "exp_len": 1, @@ -536,7 +546,7 @@ def test_register_filters_before_contract_deploy(cluster): "params": { "fromBlock": 1, "toBlock": "latest", - "topics": [[topic.hex(), another_topic.hex()]], + "topics": [[Web3.to_hex(topic), Web3.to_hex(another_topic)]], }, "exp_len": 1, }, @@ -632,13 +642,13 @@ def test_get_logs(cluster): }, { "name": "get logs by topic", - "logs": w3.eth.get_logs({"topics": [topic.hex()]}), + "logs": w3.eth.get_logs({"topics": [Web3.to_hex(topic)]}), "exp_log": True, "exp_len": 1, }, { "name": "get logs by incorrect topic - should not have logs", - "logs": w3.eth.get_logs({"topics": [another_topic.hex()]}), + "logs": w3.eth.get_logs({"topics": [Web3.to_hex(another_topic)]}), "exp_log": False, "exp_len": 0, }, @@ -647,8 +657,8 @@ def test_get_logs(cluster): "logs": w3.eth.get_logs( { "topics": [ - topic.hex(), - another_topic.hex(), + Web3.to_hex(topic), + Web3.to_hex(another_topic), ] } ), @@ -657,7 +667,9 @@ def test_get_logs(cluster): }, { "name": "get logs by multiple topics ('match any' condition)", - "logs": w3.eth.get_logs({"topics": [[topic.hex(), another_topic.hex()]]}), + "logs": w3.eth.get_logs( + {"topics": [[Web3.to_hex(topic), Web3.to_hex(another_topic)]]} + ), "exp_log": True, "exp_len": 1, }, @@ -667,7 +679,7 @@ def test_get_logs(cluster): { "fromBlock": tx_block_num, "toBlock": "latest", - "topics": [topic.hex()], + "topics": [Web3.to_hex(topic)], } ), "exp_log": True, diff --git a/tests/integration_tests/test_gas.py b/tests/integration_tests/test_gas.py index 99f88eea2f..7bbe845599 100644 --- a/tests/integration_tests/test_gas.py +++ b/tests/integration_tests/test_gas.py @@ -1,6 +1,7 @@ from pathlib import Path import pytest +from web3 import exceptions from .network import setup_custom_ethermint from .utils import ( @@ -8,6 +9,8 @@ CONTRACTS, KEYS, deploy_contract, + derive_random_account, + fund_acc, send_transaction, w3_wait_for_new_blocks, ) @@ -108,6 +111,34 @@ def test_block_gas_limit(ethermint): return +# EIP-7623: Floor Data Gas +def test_floor_data_gas_error(ethermint, geth): + iterations = 1 + acc = derive_random_account() + gas = 21204 + + def process(w3): + fund_acc(w3, acc) + contract, _ = deploy_contract(w3, CONTRACTS["TestMessageCall"], key=acc.key) + tx = contract.functions.test(iterations).build_transaction({"gas": gas}) + res = send_transaction(w3, tx) + return res + + providers = [ethermint.w3, geth.w3] + exceptions = [] + for w3 in providers: + try: + process(w3) + except Exception as e: + exceptions.append(e) + + assert len(exceptions) == len(providers) + expected_substring = "insufficient gas for floor data gas cost" + for exception in exceptions: + assert exception is not None, "Expected an exception but none was raised" + assert expected_substring in str(exception), exception + + @pytest.fixture(scope="module") def discard(request, tmp_path_factory): path = tmp_path_factory.mktemp("discard") @@ -117,6 +148,6 @@ def discard(request, tmp_path_factory): def test_discard_abci_responses(discard): - with pytest.raises(ValueError) as exc: + with pytest.raises(exceptions.Web3RPCError) as exc: discard.w3.eth.gas_price assert "header result not found for height" in str(exc) diff --git a/tests/integration_tests/test_grpc_only.py b/tests/integration_tests/test_grpc_only.py index ecb207a57f..166b979a12 100644 --- a/tests/integration_tests/test_grpc_only.py +++ b/tests/integration_tests/test_grpc_only.py @@ -73,7 +73,7 @@ def test_grpc_mode(custom_ethermint): msg = { "to": contract.address, - "data": contract.encodeABI(fn_name="currentChainID"), + "data": contract.encode_abi(abi_element_identifier="currentChainID"), } api_port = ports.api_port(custom_ethermint.base_port(1)) diff --git a/tests/integration_tests/test_priority.py b/tests/integration_tests/test_priority.py index e1191e138b..ed8fc006c5 100644 --- a/tests/integration_tests/test_priority.py +++ b/tests/integration_tests/test_priority.py @@ -1,6 +1,7 @@ import sys import pytest +from web3 import exceptions from .network import setup_ethermint from .utils import ( @@ -113,7 +114,7 @@ def test_priority(ethermint): signed = [sign_transaction(w3, tx, key=KEYS[sender]) for sender, tx in test_cases] # send the txs from low priority to high, # but the later sent txs should be included earlier. - txhashes = [w3.eth.send_raw_transaction(tx.rawTransaction) for tx in signed] + txhashes = [w3.eth.send_raw_transaction(tx.raw_transaction) for tx in signed] receipts = [w3.eth.wait_for_transaction_receipt(txhash) for txhash in txhashes] print(receipts) @@ -221,6 +222,6 @@ def test_validate(ethermint): "maxFeePerGas": gas, "maxPriorityFeePerGas": gas + 1, } - with pytest.raises(ValueError) as exc: + with pytest.raises(exceptions.Web3RPCError) as exc: send_transaction(w3, tx) assert "max priority fee per gas higher than max fee per gas" in str(exc) diff --git a/tests/integration_tests/test_pruned_node.py b/tests/integration_tests/test_pruned_node.py index 02311f88bb..3a9e5f913f 100644 --- a/tests/integration_tests/test_pruned_node.py +++ b/tests/integration_tests/test_pruned_node.py @@ -4,6 +4,7 @@ from eth_bloom import BloomFilter from eth_utils import abi, big_endian_to_int from hexbytes import HexBytes +from web3 import Web3 from web3.datastructures import AttributeDict from .network import setup_custom_ethermint @@ -43,11 +44,11 @@ def test_pruned_node(pruned): {"from": ADDRS["validator"]} ) signed = sign_transaction(w3, tx, KEYS["validator"]) - txhash = w3.eth.send_raw_transaction(signed.rawTransaction) + txhash = w3.eth.send_raw_transaction(signed.raw_transaction) print("wait for prunning happens") w3_wait_for_new_blocks(w3, 15) - tx_receipt = w3.eth.get_transaction_receipt(txhash.hex()) + tx_receipt = w3.eth.get_transaction_receipt(Web3.to_hex(txhash)) assert len(tx_receipt.logs) == 1 data = "0x000000000000000000000000000000000000000000000000000000000000000a" data = HexBytes(data) diff --git a/tests/integration_tests/test_set_code_tx.py b/tests/integration_tests/test_set_code_tx.py new file mode 100644 index 0000000000..acb11ed748 --- /dev/null +++ b/tests/integration_tests/test_set_code_tx.py @@ -0,0 +1,621 @@ +from concurrent.futures import ThreadPoolExecutor, as_completed +from pathlib import Path + +import pytest +from hexbytes import HexBytes +from web3 import Web3, exceptions + +from .bytecode_deployer import deploy_runtime_bytecode +from .network import setup_custom_ethermint +from .utils import derive_new_account, fund_acc, send_transaction + +DELEGATION_PREFIX = "0xef0100" + + +@pytest.fixture(scope="module") +def custom_ethermint(tmp_path_factory): + path = tmp_path_factory.mktemp("setcodetx") + yield from setup_custom_ethermint( + path, 26500, Path(__file__).parent / "configs/default.jsonnet" + ) + + +@pytest.fixture(scope="module", params=["ethermint", "geth"]) +def cluster(request, custom_ethermint, geth): + """ + run on both ethermint and geth + """ + provider = request.param + if provider == "ethermint": + yield custom_ethermint + elif provider == "geth": + yield geth + else: + raise NotImplementedError + + +def address_to_delegation(address: str): + return DELEGATION_PREFIX + address[2:] + + +def test_set_code_tx_basic(custom_ethermint): + w3: Web3 = custom_ethermint.w3 + + account_code = "0x4Cd241E8d1510e30b2076397afc7508Ae59C66c9" + + # use an new account for the test + # genisis accounts are default BaseAccount, with no code hash storage + acc = derive_new_account(n=2) + fund_acc(w3, acc) + + chain_id = w3.eth.chain_id + nonce = w3.eth.get_transaction_count(acc.address) + + auth = { + "chainId": chain_id, + "address": account_code, + "nonce": nonce + 1, + } + + signed_auth = acc.sign_authorization(auth) + + setcode_tx = { + "chainId": chain_id, + "type": 4, + "to": acc.address, + "value": 0, + "gas": 100000, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": nonce, + "authorizationList": [signed_auth], + } + + signed_tx = acc.sign_transaction(setcode_tx) + tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction) + w3.eth.wait_for_transaction_receipt(tx_hash, timeout=30) + + code = w3.eth.get_code(acc.address, "latest") + expected_code = address_to_delegation(account_code) + expected_code_hex = HexBytes(expected_code) + assert code == expected_code_hex, f"Expected code {expected_code_hex}, got {code}" + # Verify the nonce was incremented correctly + new_nonce = w3.eth.get_transaction_count(acc.address) + assert new_nonce == nonce + 2, f"Expected nonce {nonce + 2}, got {new_nonce}" + + +# replicate the test +# https://github.com/ethereum/go-ethereum/blob/0af6c9899f11949e452a1baf90f2281c0d4fe46a/core/blockchain_test.go#L4067 +# ethermint and geth will both succeed +def test_eip7702_delegation_with_storage(cluster): + """ + TestEIP7702 equivalent: deploys two delegation designations and calls them. + It writes one value to storage which is verified after. + + The test creates: + 1. addr1 delegated to 0xaaaa (which calls addr2) + 2. addr2 delegated to 0xbbbb (which stores 42 in slot 42) + + The transaction flow becomes: + 1. tx -> addr1 which is delegated to 0xaaaa + 2. addr1:0xaaaa calls into addr2:0xbbbb + 3. addr2:0xbbbb writes to storage + """ + w3: Web3 = cluster.w3 + chain_id = w3.eth.chain_id + + deployer = derive_new_account(n=9) + addr1 = derive_new_account(n=10) + addr2 = derive_new_account(n=11) + addr1_nonce = w3.eth.get_transaction_count(addr1.address) + addr2_nonce = w3.eth.get_transaction_count(addr2.address) + + fund_acc(w3, deployer) + fund_acc(w3, addr1) + fund_acc(w3, addr2) + + addr2_hex = addr2.address[2:].lower() + # getCode from the original geth test + aa_bytecode = "0x6000600060006000600173" + addr2_hex + "5af1" + aa = deploy_runtime_bytecode(w3, aa_bytecode, deployer, deployer) + + # Sstore(0x42, 0x42) - stores value 42 in slot 42 + bb_bytecode = "0x6042604255" + bb = deploy_runtime_bytecode(w3, bb_bytecode, deployer, deployer) + + aa_deployed_code = w3.eth.get_code(aa, "latest") + bb_deployed_code = w3.eth.get_code(bb, "latest") + + assert aa_deployed_code == HexBytes(aa_bytecode), ( + f"aa deployed code incorrect: got {Web3.to_hex(aa_deployed_code)}, " + f"want {aa_bytecode}" + ) + assert bb_deployed_code == HexBytes(bb_bytecode), ( + f"bb deployed code incorrect: got {Web3.to_hex(bb_deployed_code)}, " + f"want {bb_bytecode}" + ) + + auth1 = { + "chainId": chain_id, + "address": aa, + "nonce": addr1_nonce + 1, # Next nonce after the SetCode transaction + } + + # auth2: addr2 delegates to bb contract + auth2 = {"chainId": chain_id, "address": bb, "nonce": addr2_nonce} + + signed_auth1 = addr1.sign_authorization(auth1) + signed_auth2 = addr2.sign_authorization(auth2) + + setcode_tx = { + "chainId": chain_id, + "type": 4, + "to": addr1.address, + "value": 0, + "gas": 500000, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": addr1_nonce, + "authorizationList": [signed_auth1, signed_auth2], + } + + signed_tx = addr1.sign_transaction(setcode_tx) + tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction) + receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=30) + + assert receipt.status == 1, f"Transaction failed: {receipt}" + + addr1_code = w3.eth.get_code(addr1.address, "latest") + delegation1 = address_to_delegation(auth1["address"]) + assert addr1_code == HexBytes( + delegation1 + ), f"addr1 code incorrect: got {Web3.to_hex(addr1_code)}, want {delegation1}" + + addr2_code = w3.eth.get_code(addr2.address, "latest") + delegation2 = address_to_delegation(auth2["address"]) + assert addr2_code == HexBytes( + delegation2 + ), f"addr2 code incorrect: got {Web3.to_hex(addr2_code)}, want {delegation2}" + + # Verify delegation executed the correct code and stored value 42 in slot 42 + # Check storage at addr2, slot 0x42 + storage_value = w3.eth.get_storage_at(addr2.address, 0x42, "latest") + expected_value = HexBytes( + "0x0000000000000000000000000000000000000000000000000000000000000042" + ) + + assert storage_value == expected_value, ( + f"addr2 storage wrong: expected {Web3.to_hex(expected_value)}, " + f"got {Web3.to_hex(storage_value)}" + ) + + +def test_set_code_tx_auth_list_empty(ethermint, geth): + # TODO: web3.py has inner validation for auth list, can't send empty auth list + return + + def process(w3): + # use an new account for the test + # genisis accounts are default BaseAccount, with no code hash storage + acc = derive_new_account(n=2) + fund_acc(w3, acc) + + chain_id = w3.eth.chain_id + nonce = w3.eth.get_transaction_count(acc.address) + setcode_tx = { + "chainId": chain_id, + "type": 4, + "to": acc.address, + "value": 0, + "gas": 100000, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": nonce, + } + + res = send_transaction(w3, setcode_tx, acc.key) + return res + + providers = [ethermint.w3, geth.w3] + with ThreadPoolExecutor(len(providers)) as exec: + tasks = [exec.submit(process, w3) for w3 in providers] + res = [future.result() for future in as_completed(tasks)] + assert len(res) == len(providers) + assert res[0] == res[-1], res + + +def test_set_code_tx_to_empty(ethermint, geth): + def process(w3): + # use an new account for the test + # genisis accounts are default BaseAccount, with no code hash storage + acc = derive_new_account(n=2) + fund_acc(w3, acc) + + chain_id = w3.eth.chain_id + nonce = w3.eth.get_transaction_count(acc.address) + auth = { + "chainId": chain_id, + "address": derive_new_account(n=1).address, + "nonce": nonce + 1, + } + signed_auth = acc.sign_authorization(auth) + setcode_tx = { + "chainId": chain_id, + "type": 4, + "value": 0, + "gas": 100000, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": nonce, + "authorizationList": [signed_auth], + } + + res = send_transaction(w3, setcode_tx, acc.key) + return res + + providers = [ethermint.w3, geth.w3] + with ThreadPoolExecutor(len(providers)) as exec: + tasks = [exec.submit(process, w3) for w3 in providers] + res = [future.exception() for future in as_completed(tasks)] + assert len(res) == len(providers) + assert all(isinstance(e, exceptions.Web3RPCError) for e in res) + assert str(res[0]) == str(res[-1]) + + +def test_set_code_tx_get_receipt(ethermint, geth): + def process(w3): + acc = derive_new_account(n=3) + target_acc = derive_new_account(n=4) + fund_acc(w3, acc) + + chain_id = w3.eth.chain_id + nonce = w3.eth.get_transaction_count(acc.address) + + auth_addr = target_acc.address + auth = { + "chainId": chain_id, + "address": auth_addr, + "nonce": nonce + 1, + } + signed_auth = acc.sign_authorization(auth) + + setcode_tx = { + "chainId": chain_id, + "type": 4, + "to": acc.address, + "value": 0, + "gas": 100000, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": nonce, + "authorizationList": [signed_auth], + } + + signed_tx = acc.sign_transaction(setcode_tx) + tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction) + receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=30) + + assert receipt.status == 1, f"transaction failed: {receipt}" + + code = w3.eth.get_code(acc.address, "latest") + expected_code = HexBytes(address_to_delegation(auth_addr)) + assert ( + code == expected_code + ), f"code incorrect: got {Web3.to_hex(code)}, want {expected_code}" + + receipt = w3.eth.get_transaction_receipt(tx_hash) + + return receipt + + providers = [ethermint.w3, geth.w3] + with ThreadPoolExecutor(len(providers)) as exec: + tasks = [exec.submit(process, w3) for w3 in providers] + res = [future.result() for future in as_completed(tasks)] + assert len(res) == len(providers) + assert res[0]["from"] == res[-1]["from"], res + assert res[0]["to"] == res[-1]["to"], res + assert res[0]["status"] == res[-1]["status"] == 1, res + assert res[0]["type"] == res[-1]["type"] == 4, res + + +def test_set_code_tx_signature_invalid(ethermint, geth): + def process(w3): + acc = derive_new_account(n=3) + target_acc = derive_new_account(n=4) + fund_acc(w3, acc) + acc_code = w3.eth.get_code(acc.address, "latest") + + chain_id = w3.eth.chain_id + nonce = w3.eth.get_transaction_count(acc.address) + + auth1_addr = target_acc.address + auth1 = { + "chainId": chain_id, + "address": auth1_addr, + "nonce": nonce + 1, + } + + acc_2 = derive_new_account(n=5) + # use a different account to sign the auth + signed_auth1 = acc_2.sign_authorization(auth1) + + setcode_tx1 = { + "chainId": chain_id, + "type": 4, + "to": acc.address, + "value": 0, + "gas": 100000, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": nonce, + "authorizationList": [signed_auth1], + } + + signed_tx = acc.sign_transaction(setcode_tx1) + tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction) + receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=30) + + if receipt.status != 1: + raise Exception(f"transaction failed: {receipt}") + + code = w3.eth.get_code(acc.address, "latest") + # the code will remain unchanged + assert ( + code == acc_code + ), f"code incorrect: got {Web3.to_hex(code)}, want {acc_code}" + + return receipt + + providers = [ethermint.w3, geth.w3] + with ThreadPoolExecutor(len(providers)) as exec: + tasks = [exec.submit(process, w3) for w3 in providers] + res = [future.result() for future in as_completed(tasks)] + assert len(res) == len(providers) + + +def test_set_code_tx_auth_invalid_nonce(ethermint, geth): + def process(w3): + acc = derive_new_account(n=3) + target_acc = derive_new_account(n=4) + fund_acc(w3, acc) + + chain_id = w3.eth.chain_id + nonce = w3.eth.get_transaction_count(acc.address) + + auth1_addr = target_acc.address + auth1 = { + "chainId": chain_id, + "address": auth1_addr, + "nonce": nonce + 1, + } + signed_auth1 = acc.sign_authorization(auth1) + + setcode_tx1 = { + "chainId": chain_id, + "type": 4, + "to": acc.address, + "value": 0, + "gas": 100000, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": nonce, + "authorizationList": [signed_auth1], + } + + signed_tx1 = acc.sign_transaction(setcode_tx1) + tx_hash1 = w3.eth.send_raw_transaction(signed_tx1.raw_transaction) + receipt1 = w3.eth.wait_for_transaction_receipt(tx_hash1, timeout=30) + + if receipt1.status != 1: + raise Exception(f"First transaction failed: {receipt1}") + + code = w3.eth.get_code(acc.address, "latest") + expected_code = HexBytes(address_to_delegation(auth1_addr)) + assert ( + code == expected_code + ), f"code incorrect: got {Web3.to_hex(code)}, want {expected_code}" + + # second tx will error, nonce is lower than current nonce + auth_addr2 = derive_new_account(n=5).address + auth2 = { + "chainId": chain_id, + "address": auth_addr2, + "nonce": nonce + 1, + } + signed_auth2 = acc.sign_authorization(auth2) + nonce2 = w3.eth.get_transaction_count(acc.address) + setcode_tx2 = { + "chainId": chain_id, + "type": 4, + "to": acc.address, + "value": 0, + "gas": 100000, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": nonce2, + "authorizationList": [signed_auth2], + } + + res = send_transaction(w3, setcode_tx2, acc.key) + + # second tx with success, but the code won't be set (errors ignored in auth tx) + code = w3.eth.get_code(acc.address, "latest") + expected_code = HexBytes(address_to_delegation(auth1["address"])) + assert ( + code == expected_code + ), f"code incorrect: got {Web3.to_hex(code)}, want {expected_code}" + + return res + + providers = [ethermint.w3, geth.w3] + with ThreadPoolExecutor(len(providers)) as exec: + tasks = [exec.submit(process, w3) for w3 in providers] + res = [future.result() for future in as_completed(tasks)] + assert len(res) == len(providers) + + +def test_set_code_tx_estimate_gas(ethermint, geth): + def process(w3): + acc = derive_new_account(n=3) + target_acc = derive_new_account(n=4) + fund_acc(w3, acc) + + chain_id = w3.eth.chain_id + nonce = w3.eth.get_transaction_count(acc.address) + + auth_addr = target_acc.address + auth = { + "chainId": chain_id, + "address": auth_addr, + "nonce": nonce + 1, + } + signed_auth = acc.sign_authorization(auth) + + setcode_tx = { + "chainId": chain_id, + "type": 4, + "from": acc.address, + "to": acc.address, + "value": 0, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": nonce, + "authorizationList": [signed_auth], + } + + gas = w3.eth.estimate_gas(setcode_tx) + return gas + + providers = [ethermint.w3, geth.w3] + with ThreadPoolExecutor(len(providers)) as exec: + tasks = [exec.submit(process, w3) for w3 in providers] + res = [future.result() for future in as_completed(tasks)] + assert len(res) == len(providers) + assert res[0] == res[-1], res + + +def test_set_code_tx_delegate_auth_call_using_different_account(cluster): + """ + Test that a delegate auth call using a different account than + the one used to sign the auth works. + """ + w3: Web3 = cluster.w3 + + auth_account = derive_new_account(n=30) + sender_account = derive_new_account(n=31) + delegate_account = derive_new_account(n=32) + + fund_acc(w3, auth_account) + fund_acc(w3, sender_account) + + chain_id = w3.eth.chain_id + auth_nonce = w3.eth.get_transaction_count(auth_account.address) + sender_nonce = w3.eth.get_transaction_count(sender_account.address) + + auth = { + "chainId": chain_id, + "address": delegate_account.address, + "nonce": auth_nonce, + } + signed_auth = auth_account.sign_authorization(auth) + + setcode_tx = { + "chainId": chain_id, + "type": 4, + "from": sender_account.address, + "to": auth_account.address, + "value": 0, + "gas": 100000, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": sender_nonce, + "authorizationList": [signed_auth], + } + + signed_tx = sender_account.sign_transaction(setcode_tx) + tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction) + receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=30) + + assert receipt.status == 1, f"Transaction failed: {receipt}" + + code = w3.eth.get_code(auth_account.address, "latest") + expected_code = address_to_delegation(delegate_account.address) + expected_code_hex = HexBytes(expected_code) + assert code == expected_code_hex, f"Expected code {expected_code_hex}, got {code}" + + new_auth_nonce = w3.eth.get_transaction_count(auth_account.address) + assert new_auth_nonce == auth_nonce + 1, ( + f"Expected auth_account nonce {auth_nonce + 1}, got {new_auth_nonce}" + ) + + new_sender_nonce = w3.eth.get_transaction_count(sender_account.address) + assert new_sender_nonce == sender_nonce + 1, ( + f"Expected sender_account nonce {sender_nonce + 1}, got {new_sender_nonce}" + ) + + +def generate_signed_auth(w3, acc, delegate_addr, nonce): + chain_id = w3.eth.chain_id + auth = { + "chainId": chain_id, + "address": delegate_addr, + "nonce": nonce, + } + return acc.sign_authorization(auth) + + +def send_setcode_tx(w3, sender_acc, to, signed_auth): + setcode_tx = { + "chainId": w3.eth.chain_id, + "type": 4, + "to": to, + "value": 0, + "gas": 100000, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": w3.eth.get_transaction_count(sender_acc.address), + "authorizationList": [signed_auth], + } + + signed_tx = sender_acc.sign_transaction(setcode_tx) + tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction) + receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=30) + return receipt + + +def test_set_code_tx_revoke_delegation(cluster): + """ + send a setcode tx, and then send an empty setcode tx to revoke the auth + expect the code to be set to 0x + """ + w3: Web3 = cluster.w3 + acc = derive_new_account(n=30) + delegate_addr = derive_new_account(n=31).address + + fund_acc(w3, acc) + nonce = w3.eth.get_transaction_count(acc.address) + + signed_auth = generate_signed_auth(w3, acc, delegate_addr, nonce=nonce + 1) + receipt = send_setcode_tx(w3, acc, acc.address, signed_auth) + + assert receipt.status == 1, f"Transaction failed: {receipt}" + + code = w3.eth.get_code(acc.address, "latest") + expected_code = address_to_delegation(delegate_addr) + expected_code_hex = HexBytes(expected_code) + assert code == expected_code_hex, f"Expected code {expected_code_hex}, got {code}" + + nonce = w3.eth.get_transaction_count(acc.address) + # send new auth to clear the code + signed_auth = generate_signed_auth( + w3, acc, "0x0000000000000000000000000000000000000000", nonce=nonce + 1 + ) + receipt = send_setcode_tx(w3, acc, acc.address, signed_auth) + + assert receipt.status == 1, f"Transaction failed: {receipt}" + + code = w3.eth.get_code(acc.address, "latest") + expected_code = "0x" + assert Web3.to_hex(code) == expected_code, ( + f"Expected code {expected_code}, got {Web3.to_hex(code)}" + ) diff --git a/tests/integration_tests/test_tracers.py b/tests/integration_tests/test_tracers.py index 10e6703256..a3cb592047 100644 --- a/tests/integration_tests/test_tracers.py +++ b/tests/integration_tests/test_tracers.py @@ -3,7 +3,7 @@ from concurrent.futures import ThreadPoolExecutor, as_completed import pytest -from web3 import Web3 +from web3 import Web3, exceptions from .expected_constants import ( EXPECTED_BLOCK_OVERRIDES_TRACERS, @@ -32,15 +32,16 @@ def test_out_of_gas_error(ethermint, geth): method = "debug_traceTransaction" tracer = {"tracer": "callTracer"} - iterations = 1 + iterations = 10 acc = derive_random_account() def process(w3): # fund new sender to deploy contract with same address fund_acc(w3, acc) contract, _ = deploy_contract(w3, CONTRACTS["TestMessageCall"], key=acc.key) - tx = contract.functions.test(iterations).build_transaction({"gas": 21204}) - tx_hash = send_transaction(w3, tx)["transactionHash"].hex() + # increase gas to pass EIP-7623: Floor Data Gas + tx = contract.functions.test(iterations).build_transaction({"gas": 21510}) + tx_hash = Web3.to_hex(send_transaction(w3, tx)["transactionHash"]) res = [] call = w3.provider.make_request resp = call(method, [tx_hash, tracer]) @@ -66,7 +67,7 @@ def process(w3): fund_acc(w3, acc) tx = create_contract_transaction(w3, CONTRACTS["TestMessageCall"], key=acc.key) tx["gas"] = 210000 - tx_hash = send_transaction(w3, tx, key=acc.key)["transactionHash"].hex() + tx_hash = Web3.to_hex(send_transaction(w3, tx, key=acc.key)["transactionHash"]) res = [] call = w3.provider.make_request resp = call(method, [tx_hash, tracer]) @@ -93,7 +94,7 @@ def process(w3): fund_acc(w3, acc) call = w3.provider.make_request tx = {"to": ADDRS["community"], "value": 100, "gasPrice": price} - tx_hash = send_transaction(w3, tx)["transactionHash"].hex() + tx_hash = Web3.to_hex(send_transaction(w3, tx)["transactionHash"]) tx_res = call(method, [tx_hash]) assert tx_res["result"] == EXPECTED_STRUCT_TRACER, "" tx_res = call(method, [tx_hash, tracer]) @@ -105,7 +106,7 @@ def process(w3): assert tx_res["result"] == EXPECTED_CALLTRACERS, "" call = w3.provider.make_request _, tx = deploy_contract(w3, CONTRACTS["TestERC20A"], key=acc.key) - tx_hash = tx["transactionHash"].hex() + tx_hash = Web3.to_hex(tx["transactionHash"]) w3_wait_for_new_blocks(w3, 1) tx_res = call(method, [tx_hash, tracer]) return json.dumps(tx_res["result"], sort_keys=True) @@ -144,7 +145,7 @@ def process(w3): fund_acc(w3, acc) contract, _ = deploy_contract(w3, CONTRACTS["TestMessageCall"], key=acc.key) tx = contract.functions.test(iterations).build_transaction() - tx_hash = send_transaction(w3, tx)["transactionHash"].hex() + tx_hash = Web3.to_hex(send_transaction(w3, tx)["transactionHash"]) res = [] call = w3.provider.make_request with ThreadPoolExecutor(len(tracers)) as exec: @@ -180,13 +181,13 @@ def test_trace_tx_reverse_transfer(ethermint): "nonce": nonce, } ) - raw_transactions.append(sign_transaction(w3, tx, acc.key).rawTransaction) + raw_transactions.append(sign_transaction(w3, tx, acc.key).raw_transaction) tx = tx | {"nonce": nonce + 1} - raw_transactions.append(sign_transaction(w3, tx, acc.key).rawTransaction) + raw_transactions.append(sign_transaction(w3, tx, acc.key).raw_transaction) w3_wait_for_new_blocks(w3, 1) sended_hash_set = send_raw_transactions(w3, raw_transactions) for h in sended_hash_set: - tx_hash = h.hex() + tx_hash = Web3.to_hex(h) tx_res = w3.provider.make_request( method, [tx_hash, tracer], @@ -226,7 +227,7 @@ def test_destruct(ethermint): } ) ) - raw_transactions.append(sign_transaction(w3, tx, acc.key).rawTransaction) + raw_transactions.append(sign_transaction(w3, tx, acc.key).raw_transaction) nonce += 1 sended_hash_set = send_raw_transactions(w3, raw_transactions) @@ -235,7 +236,7 @@ def wait_balance(): wait_for_fn("wait_balance", wait_balance) for h in sended_hash_set: - tx_hash = h.hex() + tx_hash = Web3.to_hex(h) res = w3.provider.make_request( method, [tx_hash, tracer], @@ -740,7 +741,7 @@ def process(w3): res = [] call = w3.provider.make_request with ThreadPoolExecutor(len(sended_hash_set)) as exec: - params = [[tx_hash.hex(), tracer] for tx_hash in sended_hash_set] + params = [[Web3.to_hex(tx_hash), tracer] for tx_hash in sended_hash_set] exec_map = exec.map(call, itertools.repeat(method), params) res = [json.dumps(resp["result"], sort_keys=True) for resp in exec_map] return res @@ -748,6 +749,8 @@ def process(w3): providers = [ethermint.w3, geth.w3] with ThreadPoolExecutor(len(providers)) as exec: tasks = [exec.submit(process, w3) for w3 in providers] - res = [future.result() for future in as_completed(tasks)] + res = [future.exception() for future in as_completed(tasks)] assert len(res) == len(providers) - assert res[0] == res[-1], res + assert isinstance(res[0], exceptions.ContractLogicError) + assert isinstance(res[-1], exceptions.ContractLogicError) + assert str(res[0]) == str(res[-1]) == "('execution reverted', '0x')" diff --git a/tests/integration_tests/test_types.py b/tests/integration_tests/test_types.py index d29b775b92..7dcc9de2b5 100644 --- a/tests/integration_tests/test_types.py +++ b/tests/integration_tests/test_types.py @@ -70,7 +70,7 @@ def wait_blk(): # Get existing block, no transactions eth_rsp = eth_rpc.make_request( "eth_getBlockByHash", - [ethermint_blk["hash"].hex(), with_transactions], + [Web3.to_hex(ethermint_blk["hash"]), with_transactions], ) geth_rsp = geth_rpc.make_request( "eth_getBlockByHash", @@ -212,7 +212,7 @@ def send_tnx(w3, tx_value=10): def send_and_get_hash(w3, tx_value=10): - return send_tnx(w3, tx_value)["transactionHash"].hex() + return Web3.to_hex(send_tnx(w3, tx_value)["transactionHash"]) def test_get_proof(ethermint_rpc_ws, geth): diff --git a/tests/integration_tests/test_upgrade.py b/tests/integration_tests/test_upgrade.py index c230a16ef7..9819da9140 100644 --- a/tests/integration_tests/test_upgrade.py +++ b/tests/integration_tests/test_upgrade.py @@ -193,7 +193,7 @@ def test_cosmovisor_upgrade(custom_ethermint: Ethermint, tmp_path): for h in [target_height - 1, target_height, target_height + 1]: res = contract.caller.getBlockHash(h).hex() blk = w3.eth.get_block(h) - assert f"0x{res}" == blk.hash.hex(), res + assert res == blk.hash.hex(), res height = w3.eth.block_number for h in [ @@ -201,4 +201,4 @@ def test_cosmovisor_upgrade(custom_ethermint: Ethermint, tmp_path): height + 100, # num64 >= upper ]: res = contract.caller.getBlockHash(h).hex() - assert f"0x{res}" == "0x" + "0" * 64, res + assert res == "0" * 64, res diff --git a/tests/integration_tests/test_websockets.py b/tests/integration_tests/test_websockets.py index 5c127c4b40..884a8b7383 100644 --- a/tests/integration_tests/test_websockets.py +++ b/tests/integration_tests/test_websockets.py @@ -6,6 +6,7 @@ from eth_utils import abi from hexbytes import HexBytes from pystarport import ports +from web3 import Web3 from .network import Ethermint from .utils import ( @@ -139,8 +140,8 @@ async def logs_test(c: Client, w3, contract): in msg["topics"] == [ topic, - HexBytes(b"\x00" * 12 + HexBytes(sender)).hex(), - HexBytes(b"\x00" * 12 + HexBytes(recipient)).hex(), + Web3.to_hex(HexBytes(b"\x00" * 12 + HexBytes(sender))), + Web3.to_hex(HexBytes(b"\x00" * 12 + HexBytes(recipient))), ] ) await assert_unsubscribe(c, sub_id) diff --git a/tests/integration_tests/utils.py b/tests/integration_tests/utils.py index 9e2f8f55c5..6a22e18089 100644 --- a/tests/integration_tests/utils.py +++ b/tests/integration_tests/utils.py @@ -16,6 +16,7 @@ from dotenv import load_dotenv from eth_account import Account from hexbytes import HexBytes +from web3 import Web3 from web3._utils.transactions import fill_nonce, fill_transaction_defaults from web3.exceptions import TimeExhausted @@ -46,6 +47,7 @@ "TestBlockTxProperties": "TestBlockTxProperties.sol", "FeeCollector": "FeeCollector.sol", "SelfDestruct": "SelfDestruct.sol", + "BytecodeDeployer": "BytecodeDeployer.sol", } @@ -200,7 +202,7 @@ def send_transaction(w3, tx, key=KEYS["validator"], i=0): if i > 3: raise TimeExhausted signed = sign_transaction(w3, tx, key) - txhash = w3.eth.send_raw_transaction(signed.rawTransaction) + txhash = w3.eth.send_raw_transaction(signed.raw_transaction) try: return w3.eth.wait_for_transaction_receipt(txhash, timeout=20) except TimeExhausted: @@ -212,7 +214,7 @@ def send_txs(w3, txs): raw_transactions = [] for key in txs: signed = sign_transaction(w3, txs[key], key) - raw_transactions.append(signed.rawTransaction) + raw_transactions.append(signed.raw_transaction) # wait block update w3_wait_for_new_blocks(w3, 1, sleep=0.1) # send transactions @@ -224,7 +226,7 @@ def send_successful_transaction(w3, i=0): if i > 3: raise TimeExhausted signed = sign_transaction(w3, {"to": ADDRS["community"], "value": 1000}) - txhash = w3.eth.send_raw_transaction(signed.rawTransaction) + txhash = w3.eth.send_raw_transaction(signed.raw_transaction) try: receipt = w3.eth.wait_for_transaction_receipt(txhash, timeout=20) assert receipt.status == 1 @@ -292,7 +294,9 @@ def modify_command_in_supervisor_config(ini: Path, fn, **kwargs): def build_batch_tx(w3, cli, txs, key=KEYS["validator"]): "return cosmos batch tx and eth tx hashes" signed_txs = [sign_transaction(w3, tx, key) for tx in txs] - tmp_txs = [cli.build_evm_tx(signed.rawTransaction.hex()) for signed in signed_txs] + tmp_txs = [ + cli.build_evm_tx(Web3.to_hex(signed.raw_transaction)) for signed in signed_txs + ] msgs = [tx["body"]["messages"][0] for tx in tmp_txs] fee = sum(int(tx["auth_info"]["fee"]["amount"][0]["amount"]) for tx in tmp_txs) @@ -389,3 +393,11 @@ def contract_address(addr, nonce): )[12:] ) ) + + +def fund_acc(w3, acc, fund=3000000000000000000): + addr = acc.address + if w3.eth.get_balance(addr, "latest") == 0: + tx = {"to": addr, "value": fund, "gasPrice": w3.eth.gas_price} + send_transaction(w3, tx) + assert w3.eth.get_balance(addr, "latest") == fund diff --git a/x/evm/handler_test.go b/x/evm/handler_test.go index 92c230cfab..dab4f7e3fe 100644 --- a/x/evm/handler_test.go +++ b/x/evm/handler_test.go @@ -20,6 +20,7 @@ import ( "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/params" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -481,7 +482,12 @@ func (suite *HandlerTestSuite) TestERC20TransferReverted() { ethCfg := evmParams.GetChainConfig().EthereumConfig(nil) baseFee := suite.App.EvmKeeper.GetBaseFee(suite.Ctx, ethCfg) - fees, err := keeper.VerifyFee(tx, "aphoton", baseFee, true, true, true, suite.Ctx.IsCheckTx()) + rules := params.Rules{ + IsHomestead: true, + IsIstanbul: true, + IsShanghai: true, + } + fees, err := keeper.VerifyFee(tx, "aphoton", baseFee, rules, suite.Ctx.IsCheckTx()) suite.Require().NoError(err) err = k.DeductTxCostsFromUserBalance(suite.Ctx, fees, tx.GetSender()) suite.Require().NoError(err) diff --git a/x/evm/keeper/set_code_authorizations.go b/x/evm/keeper/set_code_authorizations.go new file mode 100644 index 0000000000..301352bb7e --- /dev/null +++ b/x/evm/keeper/set_code_authorizations.go @@ -0,0 +1,70 @@ +package keeper + +import ( + "fmt" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/tracing" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/params" +) + +// validateAuthorization validates an EIP-7702 authorization against the state. +func (k *Keeper) validateAuthorization(auth *types.SetCodeAuthorization, stateDB vm.StateDB) (authority common.Address, err error) { + // Verify chain ID is null or equal to current chain ID. + if !auth.ChainID.IsZero() && auth.ChainID.CmpBig(k.eip155ChainID) != 0 { + return authority, core.ErrAuthorizationWrongChainID + } + // Limit nonce to 2^64-1 per EIP-2681. + if auth.Nonce+1 < auth.Nonce { + return authority, core.ErrAuthorizationNonceOverflow + } + // Validate signature values and recover authority. + authority, err = auth.Authority() + if err != nil { + return authority, fmt.Errorf("%w: %v", core.ErrAuthorizationInvalidSignature, err) + } + // Check the authority account + // 1) doesn't have code or has exisiting delegation + // 2) matches the auth's nonce + // + // Note it is added to the access list even if the authorization is invalid. + stateDB.AddAddressToAccessList(authority) + code := stateDB.GetCode(authority) + if _, ok := types.ParseDelegation(code); len(code) != 0 && !ok { + return authority, core.ErrAuthorizationDestinationHasCode + } + if have := stateDB.GetNonce(authority); have != auth.Nonce { + return authority, core.ErrAuthorizationNonceMismatch + } + return authority, nil +} + +// applyAuthorization applies an EIP-7702 code delegation to the state. +func (k *Keeper) applyAuthorization(auth *types.SetCodeAuthorization, stateDB vm.StateDB) error { + authority, err := k.validateAuthorization(auth, stateDB) + if err != nil { + return err + } + + // If the account already exists in state, refund the new account cost + // charged in the intrinsic calculation. + if stateDB.Exist(authority) { + stateDB.AddRefund(params.CallNewAccountGas - params.TxAuthTupleGas) + } + + // Update nonce and account code. + stateDB.SetNonce(authority, auth.Nonce+1, tracing.NonceChangeAuthorization) + if auth.Address == (common.Address{}) { + // Delegation to zero address means clear. + stateDB.SetCode(authority, nil) + return nil + } + + // Otherwise install delegation to auth.Address. + stateDB.SetCode(authority, types.AddressToDelegation(auth.Address)) + + return nil +} diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index 61545f0196..a081906b0d 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -426,6 +426,13 @@ func (k *Keeper) ApplyMessageWithConfig( ret, _, leftoverGas, vmErr = evm.Create(sender, msg.Data, leftoverGas, uint256.MustFromBig(msg.Value)) stateDB.SetNonce(sender, oldNonce, tracing.NonceChangeUnspecified) } else { + if msg.SetCodeAuthorizations != nil { + for _, auth := range msg.SetCodeAuthorizations { + // Note errors are ignored, we simply skip invalid authorizations here. + k.applyAuthorization(&auth, stateDB) //nolint:errcheck + } + } + ret, leftoverGas, vmErr = evm.Call(sender, *msg.To, msg.Data, leftoverGas, uint256.MustFromBig(msg.Value)) } diff --git a/x/evm/keeper/utils.go b/x/evm/keeper/utils.go index ca71a2340f..ca31fce590 100644 --- a/x/evm/keeper/utils.go +++ b/x/evm/keeper/utils.go @@ -21,6 +21,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" ethtypes "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/params" errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" @@ -97,7 +98,7 @@ func VerifyFee( msg *types.MsgEthereumTx, denom string, baseFee *big.Int, - homestead, istanbul, shanghai, isCheckTx bool, + rules params.Rules, isCheckTx bool, ) (sdk.Coins, error) { tx := msg.AsTransaction() isContractCreation := tx.To() == nil @@ -105,12 +106,20 @@ func VerifyFee( gasLimit := tx.Gas() accessList := tx.AccessList() - intrinsicGas, err := core.IntrinsicGas(tx.Data(), accessList, tx.SetCodeAuthorizations(), isContractCreation, homestead, istanbul, shanghai) + intrinsicGas, err := core.IntrinsicGas( + tx.Data(), + accessList, + tx.SetCodeAuthorizations(), + isContractCreation, + rules.IsHomestead, + rules.IsIstanbul, + rules.IsShanghai, + ) if err != nil { return nil, errorsmod.Wrapf( err, "failed to retrieve intrinsic gas, contract creation = %t; homestead = %t, istanbul = %t, shanghai = %t", - isContractCreation, homestead, istanbul, shanghai, + isContractCreation, rules.IsHomestead, rules.IsIstanbul, rules.IsShanghai, ) } @@ -122,6 +131,17 @@ func VerifyFee( ) } + // Gas limit suffices for the floor data cost (EIP-7623) + if isCheckTx && rules.IsPrague { + floorDataGas, err := core.FloorDataGas(tx.Data()) + if err != nil { + return nil, err + } + if gasLimit < floorDataGas { + return nil, errorsmod.Wrapf(core.ErrFloorDataGas, "gas %v, minimum needed %v", tx.Gas(), floorDataGas) + } + } + if baseFee != nil && tx.GasFeeCap().Cmp(baseFee) < 0 { return nil, errorsmod.Wrapf(errortypes.ErrInsufficientFee, "the tx gasfeecap is lower than the tx baseFee: %s (gasfeecap), %s (basefee) ", diff --git a/x/evm/keeper/utils_test.go b/x/evm/keeper/utils_test.go index f180feb560..ab51b5feba 100644 --- a/x/evm/keeper/utils_test.go +++ b/x/evm/keeper/utils_test.go @@ -9,6 +9,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/params" ethparams "github.com/ethereum/go-ethereum/params" "github.com/evmos/ethermint/evmd" "github.com/evmos/ethermint/testutil" @@ -503,7 +504,12 @@ func (suite *UtilsTestSuite) TestVerifyFeeAndDeductTxCostsFromUserBalance() { baseFee := suite.App.EvmKeeper.GetBaseFee(suite.Ctx, ethCfg) priority := evmtypes.GetTxPriority(tx, baseFee) - fees, err := keeper.VerifyFee(tx, evmtypes.DefaultEVMDenom, baseFee, false, false, false, suite.Ctx.IsCheckTx()) + rules := params.Rules{ + IsHomestead: false, + IsIstanbul: false, + IsShanghai: false, + } + fees, err := keeper.VerifyFee(tx, evmtypes.DefaultEVMDenom, baseFee, rules, suite.Ctx.IsCheckTx()) if tc.expectPassVerify { suite.Require().NoError(err, "valid test %d failed - '%s'", i, tc.name) if tc.enableFeemarket { diff --git a/x/evm/types/auth_list.go b/x/evm/types/auth_list.go new file mode 100644 index 0000000000..7afae49969 --- /dev/null +++ b/x/evm/types/auth_list.go @@ -0,0 +1,54 @@ +package types + +import ( + sdkmath "cosmossdk.io/math" + "github.com/ethereum/go-ethereum/common" + ethtypes "github.com/ethereum/go-ethereum/core/types" + "github.com/holiman/uint256" +) + +type AuthList []SetCodeAuthorization + +func NewAuthList(ethAuthList *[]ethtypes.SetCodeAuthorization) AuthList { + if ethAuthList == nil { + return nil + } + + al := make([]SetCodeAuthorization, len(*ethAuthList)) + for i, auth := range *ethAuthList { + chainID := sdkmath.NewIntFromBigInt(auth.ChainID.ToBig()) + + al[i] = SetCodeAuthorization{ + ChainID: &chainID, + Address: auth.Address.String(), + Nonce: auth.Nonce, + V: []byte{auth.V}, + R: auth.R.Bytes(), + S: auth.S.Bytes(), + } + } + return al +} + +func (al AuthList) ToEthAuthList() *[]ethtypes.SetCodeAuthorization { + ethAuthList := make([]ethtypes.SetCodeAuthorization, len(al)) + + for i, auth := range al { + chainID := new(uint256.Int) + chainID.SetFromBig(auth.ChainID.BigInt()) + + r := uint256.NewInt(0).SetBytes(auth.R) + s := uint256.NewInt(0).SetBytes(auth.S) + + ethAuthList[i] = ethtypes.SetCodeAuthorization{ + ChainID: *chainID, + Address: common.HexToAddress(auth.Address), + Nonce: auth.Nonce, + V: auth.V[0], + R: *r, + S: *s, + } + } + + return ðAuthList +} diff --git a/x/evm/types/codec.go b/x/evm/types/codec.go index babecead77..acef01c2a0 100644 --- a/x/evm/types/codec.go +++ b/x/evm/types/codec.go @@ -68,6 +68,7 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { &DynamicFeeTx{}, &AccessListTx{}, &LegacyTx{}, + &SetCodeTx{}, ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) diff --git a/x/evm/types/dynamic_fee_tx_test.go b/x/evm/types/dynamic_fee_tx_test.go index 891d033d79..997c22cc1d 100644 --- a/x/evm/types/dynamic_fee_tx_test.go +++ b/x/evm/types/dynamic_fee_tx_test.go @@ -554,7 +554,7 @@ func (suite *TxDataTestSuite) TestDynamicFeeTxValidate() { true, }, { - "chain ID not present on AccessList txs", + "chain ID not present on DynamicFee txs", DynamicFeeTx{ GasTipCap: &suite.sdkInt, GasFeeCap: &suite.sdkInt, diff --git a/x/evm/types/msg.go b/x/evm/types/msg.go index d21da53da3..9e147483a1 100644 --- a/x/evm/types/msg.go +++ b/x/evm/types/msg.go @@ -310,17 +310,18 @@ func (msg *MsgEthereumTx) AsTransaction() *ethtypes.Transaction { func (msg *MsgEthereumTx) AsMessage(baseFee *big.Int) *core.Message { tx := msg.AsTransaction() ethMsg := &core.Message{ - Nonce: tx.Nonce(), - GasLimit: tx.Gas(), - GasPrice: new(big.Int).Set(tx.GasPrice()), - GasFeeCap: new(big.Int).Set(tx.GasFeeCap()), - GasTipCap: new(big.Int).Set(tx.GasTipCap()), - To: tx.To(), - Value: tx.Value(), - Data: tx.Data(), - AccessList: tx.AccessList(), - SkipNonceChecks: false, - SkipFromEOACheck: false, + Nonce: tx.Nonce(), + GasLimit: tx.Gas(), + GasPrice: new(big.Int).Set(tx.GasPrice()), + GasFeeCap: new(big.Int).Set(tx.GasFeeCap()), + GasTipCap: new(big.Int).Set(tx.GasTipCap()), + To: tx.To(), + Value: tx.Value(), + Data: tx.Data(), + AccessList: tx.AccessList(), + SetCodeAuthorizations: tx.SetCodeAuthorizations(), + SkipNonceChecks: false, + SkipFromEOACheck: false, From: common.BytesToAddress(msg.From), } diff --git a/x/evm/types/msg_test.go b/x/evm/types/msg_test.go index f2ff8992f2..028f38ccb7 100644 --- a/x/evm/types/msg_test.go +++ b/x/evm/types/msg_test.go @@ -8,6 +8,7 @@ import ( "testing" sdkmath "cosmossdk.io/math" + "github.com/holiman/uint256" "github.com/stretchr/testify/suite" "github.com/cosmos/cosmos-sdk/client" @@ -653,6 +654,37 @@ func (suite *MsgsTestSuite) TestFromEthereumTx() { suite.Require().NoError(err) return tx }}, + {"success, setCodeTx", true, func() *ethtypes.Transaction { + + key1, _ := crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") + key2, _ := crypto.HexToECDSA("8a1f9a8f95be41cd7ccb6168179afb4504aefe388d1e14474d32c45c72ce7b7a") + + aa := common.HexToAddress("0x000000000000000000000000000000000000aaaa") + bb := common.HexToAddress("0x000000000000000000000000000000000000bbbb") + + auth1, _ := ethtypes.SignSetCode(key1, ethtypes.SetCodeAuthorization{ + ChainID: *uint256.MustFromBig(suite.chainID), + Address: aa, + Nonce: 1, + }) + auth2, _ := ethtypes.SignSetCode(key2, ethtypes.SetCodeAuthorization{ + Address: bb, + Nonce: 0, + }) + + tx := ethtypes.NewTx(ðtypes.SetCodeTx{ + Nonce: 0, + Data: nil, + To: suite.to, + Value: uint256.NewInt(0), + Gas: 500000, + AuthList: []ethtypes.SetCodeAuthorization{auth1, auth2}, + + }) + tx, err := ethtypes.SignTx(tx, ethtypes.NewPragueSigner(suite.chainID), ethPriv) + suite.Require().NoError(err) + return tx + }}, } for _, tc := range testCases { diff --git a/x/evm/types/set_code_authorization.pb.go b/x/evm/types/set_code_authorization.pb.go new file mode 100644 index 0000000000..780a437dc2 --- /dev/null +++ b/x/evm/types/set_code_authorization.pb.go @@ -0,0 +1,540 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: ethermint/evm/v1/set_code_authorization.proto + +package types + +import ( + cosmossdk_io_math "cosmossdk.io/math" + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// SetCodeAuthorization is an authorization from an account to deploy code at its address. +type SetCodeAuthorization struct { + ChainID *cosmossdk_io_math.Int `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3,customtype=cosmossdk.io/math.Int" json:"chainID"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + Nonce uint64 `protobuf:"varint,3,opt,name=nonce,proto3" json:"nonce,omitempty"` + V []byte `protobuf:"bytes,4,opt,name=v,proto3" json:"v,omitempty"` + R []byte `protobuf:"bytes,5,opt,name=r,proto3" json:"r,omitempty"` + S []byte `protobuf:"bytes,6,opt,name=s,proto3" json:"s,omitempty"` +} + +func (m *SetCodeAuthorization) Reset() { *m = SetCodeAuthorization{} } +func (m *SetCodeAuthorization) String() string { return proto.CompactTextString(m) } +func (*SetCodeAuthorization) ProtoMessage() {} +func (*SetCodeAuthorization) Descriptor() ([]byte, []int) { + return fileDescriptor_364f7d29ca8c0183, []int{0} +} +func (m *SetCodeAuthorization) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SetCodeAuthorization) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_SetCodeAuthorization.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *SetCodeAuthorization) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetCodeAuthorization.Merge(m, src) +} +func (m *SetCodeAuthorization) XXX_Size() int { + return m.Size() +} +func (m *SetCodeAuthorization) XXX_DiscardUnknown() { + xxx_messageInfo_SetCodeAuthorization.DiscardUnknown(m) +} + +var xxx_messageInfo_SetCodeAuthorization proto.InternalMessageInfo + +func init() { + proto.RegisterType((*SetCodeAuthorization)(nil), "ethermint.evm.v1.SetCodeAuthorization") +} + +func init() { + proto.RegisterFile("ethermint/evm/v1/set_code_authorization.proto", fileDescriptor_364f7d29ca8c0183) +} + +var fileDescriptor_364f7d29ca8c0183 = []byte{ + // 301 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x90, 0xbd, 0x4e, 0xfb, 0x30, + 0x14, 0x47, 0xe3, 0xff, 0xbf, 0x1f, 0x10, 0x75, 0x40, 0x51, 0x91, 0x2c, 0x86, 0xa4, 0x62, 0x40, + 0x5d, 0xb0, 0x55, 0xb1, 0x31, 0x41, 0xcb, 0x52, 0xc6, 0xb0, 0xb1, 0x54, 0xa9, 0x6d, 0x35, 0x16, + 0xb2, 0x6f, 0x65, 0xbb, 0x16, 0xf0, 0x04, 0x8c, 0x3c, 0x02, 0xcf, 0xc2, 0xc4, 0xd8, 0x11, 0x31, + 0x54, 0x28, 0xdd, 0x78, 0x0a, 0xe4, 0x84, 0xaf, 0xed, 0x77, 0x74, 0x8f, 0xee, 0x70, 0xe2, 0x63, + 0xe1, 0x4a, 0x61, 0x94, 0xd4, 0x8e, 0x0a, 0xaf, 0xa8, 0x1f, 0x51, 0x2b, 0xdc, 0x8c, 0x01, 0x17, + 0xb3, 0x62, 0xe5, 0x4a, 0x30, 0xf2, 0xbe, 0x70, 0x12, 0x34, 0x59, 0x1a, 0x70, 0x90, 0xec, 0xfd, + 0xe8, 0x44, 0x78, 0x45, 0xfc, 0xe8, 0xa0, 0xbf, 0x80, 0x05, 0xd4, 0x47, 0x1a, 0x56, 0xe3, 0x1d, + 0x3e, 0xa3, 0xb8, 0x7f, 0x25, 0xdc, 0x04, 0xb8, 0x38, 0xff, 0xfb, 0x26, 0xb9, 0x8c, 0x77, 0x58, + 0x59, 0x48, 0x3d, 0x93, 0x1c, 0xa3, 0x01, 0x1a, 0xee, 0x8e, 0xe9, 0xdb, 0x26, 0xdb, 0x67, 0x60, + 0x15, 0x58, 0xcb, 0x6f, 0x88, 0x04, 0xaa, 0x0a, 0x57, 0x92, 0xa9, 0x76, 0xd5, 0x26, 0xeb, 0x4e, + 0x82, 0x3c, 0xbd, 0xf8, 0xd8, 0x64, 0x5d, 0xd6, 0xcc, 0xfc, 0x6b, 0xf0, 0x04, 0xc7, 0xdd, 0x82, + 0x73, 0x23, 0xac, 0xc5, 0xff, 0xc2, 0xab, 0xfc, 0x1b, 0x93, 0x7e, 0xdc, 0xd6, 0xa0, 0x99, 0xc0, + 0xff, 0x07, 0x68, 0xd8, 0xca, 0x1b, 0x48, 0x7a, 0x31, 0xf2, 0xb8, 0x35, 0x40, 0xc3, 0x5e, 0x8e, + 0x7c, 0x20, 0x83, 0xdb, 0x0d, 0x99, 0x40, 0x16, 0x77, 0x1a, 0xb2, 0xa7, 0xad, 0x87, 0xa7, 0x2c, + 0x1a, 0x9f, 0xbd, 0x54, 0x29, 0x5a, 0x57, 0x29, 0x7a, 0xaf, 0x52, 0xf4, 0xb8, 0x4d, 0xa3, 0xf5, + 0x36, 0x8d, 0x5e, 0xb7, 0x69, 0x74, 0x7d, 0xb4, 0x90, 0xae, 0x5c, 0xcd, 0x09, 0x03, 0x15, 0xb2, + 0x81, 0xa5, 0xbf, 0x19, 0x6f, 0xeb, 0x90, 0xee, 0x6e, 0x29, 0xec, 0xbc, 0x53, 0xd7, 0x38, 0xf9, + 0x0c, 0x00, 0x00, 0xff, 0xff, 0x21, 0xd2, 0x59, 0x4b, 0x66, 0x01, 0x00, 0x00, +} + +func (m *SetCodeAuthorization) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SetCodeAuthorization) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SetCodeAuthorization) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.S) > 0 { + i -= len(m.S) + copy(dAtA[i:], m.S) + i = encodeVarintSetCodeAuthorization(dAtA, i, uint64(len(m.S))) + i-- + dAtA[i] = 0x32 + } + if len(m.R) > 0 { + i -= len(m.R) + copy(dAtA[i:], m.R) + i = encodeVarintSetCodeAuthorization(dAtA, i, uint64(len(m.R))) + i-- + dAtA[i] = 0x2a + } + if len(m.V) > 0 { + i -= len(m.V) + copy(dAtA[i:], m.V) + i = encodeVarintSetCodeAuthorization(dAtA, i, uint64(len(m.V))) + i-- + dAtA[i] = 0x22 + } + if m.Nonce != 0 { + i = encodeVarintSetCodeAuthorization(dAtA, i, uint64(m.Nonce)) + i-- + dAtA[i] = 0x18 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintSetCodeAuthorization(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x12 + } + if m.ChainID != nil { + { + size := m.ChainID.Size() + i -= size + if _, err := m.ChainID.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintSetCodeAuthorization(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintSetCodeAuthorization(dAtA []byte, offset int, v uint64) int { + offset -= sovSetCodeAuthorization(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *SetCodeAuthorization) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ChainID != nil { + l = m.ChainID.Size() + n += 1 + l + sovSetCodeAuthorization(uint64(l)) + } + l = len(m.Address) + if l > 0 { + n += 1 + l + sovSetCodeAuthorization(uint64(l)) + } + if m.Nonce != 0 { + n += 1 + sovSetCodeAuthorization(uint64(m.Nonce)) + } + l = len(m.V) + if l > 0 { + n += 1 + l + sovSetCodeAuthorization(uint64(l)) + } + l = len(m.R) + if l > 0 { + n += 1 + l + sovSetCodeAuthorization(uint64(l)) + } + l = len(m.S) + if l > 0 { + n += 1 + l + sovSetCodeAuthorization(uint64(l)) + } + return n +} + +func sovSetCodeAuthorization(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozSetCodeAuthorization(x uint64) (n int) { + return sovSetCodeAuthorization(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *SetCodeAuthorization) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSetCodeAuthorization + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SetCodeAuthorization: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SetCodeAuthorization: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSetCodeAuthorization + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSetCodeAuthorization + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSetCodeAuthorization + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var v cosmossdk_io_math.Int + m.ChainID = &v + if err := m.ChainID.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSetCodeAuthorization + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSetCodeAuthorization + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSetCodeAuthorization + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Nonce", wireType) + } + m.Nonce = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSetCodeAuthorization + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Nonce |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field V", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSetCodeAuthorization + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthSetCodeAuthorization + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthSetCodeAuthorization + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.V = append(m.V[:0], dAtA[iNdEx:postIndex]...) + if m.V == nil { + m.V = []byte{} + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field R", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSetCodeAuthorization + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthSetCodeAuthorization + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthSetCodeAuthorization + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.R = append(m.R[:0], dAtA[iNdEx:postIndex]...) + if m.R == nil { + m.R = []byte{} + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field S", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSetCodeAuthorization + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthSetCodeAuthorization + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthSetCodeAuthorization + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.S = append(m.S[:0], dAtA[iNdEx:postIndex]...) + if m.S == nil { + m.S = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipSetCodeAuthorization(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthSetCodeAuthorization + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipSetCodeAuthorization(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowSetCodeAuthorization + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowSetCodeAuthorization + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowSetCodeAuthorization + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthSetCodeAuthorization + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupSetCodeAuthorization + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthSetCodeAuthorization + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthSetCodeAuthorization = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowSetCodeAuthorization = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupSetCodeAuthorization = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/evm/types/set_code_tx.go b/x/evm/types/set_code_tx.go new file mode 100644 index 0000000000..396ec55ae6 --- /dev/null +++ b/x/evm/types/set_code_tx.go @@ -0,0 +1,305 @@ +package types + +import ( + "math/big" + + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" + errortypes "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/holiman/uint256" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core" + ethtypes "github.com/ethereum/go-ethereum/core/types" + + "github.com/evmos/ethermint/types" +) + +func newSetCodeTx(tx *ethtypes.Transaction) (*SetCodeTx, error) { + txData := &SetCodeTx{ + Nonce: tx.Nonce(), + Data: tx.Data(), + GasLimit: tx.Gas(), + } + + v, r, s := tx.RawSignatureValues() + if to := tx.To(); to != nil { + txData.To = to.Hex() + } + + if tx.Value() != nil { + amountInt, err := types.SafeNewIntFromBigInt(tx.Value()) + if err != nil { + return nil, err + } + txData.Amount = &amountInt + } + + if tx.GasFeeCap() != nil { + gasFeeCapInt, err := types.SafeNewIntFromBigInt(tx.GasFeeCap()) + if err != nil { + return nil, err + } + txData.GasFeeCap = &gasFeeCapInt + } + + if tx.GasTipCap() != nil { + gasTipCapInt, err := types.SafeNewIntFromBigInt(tx.GasTipCap()) + if err != nil { + return nil, err + } + txData.GasTipCap = &gasTipCapInt + } + + if tx.AccessList() != nil { + al := tx.AccessList() + txData.Accesses = NewAccessList(&al) + } + + if tx.SetCodeAuthorizations() != nil { + al := tx.SetCodeAuthorizations() + txData.AuthList = NewAuthList(&al) + } + + txData.SetSignatureValues(tx.ChainId(), v, r, s) + return txData, nil +} + +// TxType returns the tx type +func (tx *SetCodeTx) TxType() uint8 { + return ethtypes.SetCodeTxType +} + +// Copy returns an instance with the same field values +func (tx *SetCodeTx) Copy() TxData { + return &SetCodeTx{ + ChainID: tx.ChainID, + Nonce: tx.Nonce, + GasTipCap: tx.GasTipCap, + GasFeeCap: tx.GasFeeCap, + GasLimit: tx.GasLimit, + To: tx.To, + Amount: tx.Amount, + Data: common.CopyBytes(tx.Data), + Accesses: tx.Accesses, + V: common.CopyBytes(tx.V), + R: common.CopyBytes(tx.R), + S: common.CopyBytes(tx.S), + } +} + +// GetChainID returns the chain id field from the SetCodeTx +func (tx *SetCodeTx) GetChainID() *big.Int { + if tx.ChainID == nil { + return nil + } + + return tx.ChainID.BigInt() +} + +// GetAccessList returns the AccessList field. +func (tx *SetCodeTx) GetAccessList() ethtypes.AccessList { + if tx.Accesses == nil { + return nil + } + return *tx.Accesses.ToEthAccessList() +} + +// GetAuthList returns the AuthList field. +func (tx *SetCodeTx) GetAuthList() *[]ethtypes.SetCodeAuthorization { + if tx.AuthList == nil { + return nil + } + return tx.AuthList.ToEthAuthList() +} + +// GetData returns the a copy of the input data bytes. +func (tx *SetCodeTx) GetData() []byte { + return common.CopyBytes(tx.Data) +} + +// GetGas returns the gas limit. +func (tx *SetCodeTx) GetGas() uint64 { + return tx.GasLimit +} + +// GetGasPrice returns the gas fee cap field. +func (tx *SetCodeTx) GetGasPrice() *big.Int { + return tx.GetGasFeeCap() +} + +// GetGasTipCap returns the gas tip cap field. +func (tx *SetCodeTx) GetGasTipCap() *big.Int { + if tx.GasTipCap == nil { + return nil + } + return tx.GasTipCap.BigInt() +} + +// GetGasFeeCap returns the gas fee cap field. +func (tx *SetCodeTx) GetGasFeeCap() *big.Int { + if tx.GasFeeCap == nil { + return nil + } + return tx.GasFeeCap.BigInt() +} + +// GetValue returns the tx amount. +func (tx *SetCodeTx) GetValue() *big.Int { + if tx.Amount == nil { + return nil + } + + return tx.Amount.BigInt() +} + +// GetNonce returns the account sequence for the transaction. +func (tx *SetCodeTx) GetNonce() uint64 { return tx.Nonce } + +// GetTo returns the pointer to the recipient address. +func (tx *SetCodeTx) GetTo() *common.Address { + if tx.To == "" { + return nil + } + to := common.HexToAddress(tx.To) + return &to +} + +// AsEthereumData returns an SetCodeTx transaction tx from the proto-formatted +// TxData defined on the Cosmos EVM. +func (tx *SetCodeTx) AsEthereumData() ethtypes.TxData { + v, r, s := tx.GetRawSignatureValues() + return ðtypes.SetCodeTx{ + ChainID: uint256.MustFromBig(tx.GetChainID()), + Nonce: tx.GetNonce(), + GasTipCap: uint256.MustFromBig(tx.GetGasTipCap()), + GasFeeCap: uint256.MustFromBig(tx.GetGasFeeCap()), + Gas: tx.GetGas(), + To: *tx.GetTo(), + Value: uint256.MustFromBig(tx.GetValue()), + Data: tx.GetData(), + AuthList: *tx.GetAuthList(), + AccessList: tx.GetAccessList(), + V: uint256.MustFromBig(v), + R: uint256.MustFromBig(r), + S: uint256.MustFromBig(s), + } +} + +// GetRawSignatureValues returns the V, R, S signature values of the transaction. +// The return values should not be modified by the caller. +func (tx *SetCodeTx) GetRawSignatureValues() (v, r, s *big.Int) { + return rawSignatureValues(tx.V, tx.R, tx.S) +} + +// SetSignatureValues sets the signature values to the transaction. +func (tx *SetCodeTx) SetSignatureValues(chainID, v, r, s *big.Int) { + if v != nil { + tx.V = v.Bytes() + } + if r != nil { + tx.R = r.Bytes() + } + if s != nil { + tx.S = s.Bytes() + } + if chainID != nil { + chainIDInt := sdkmath.NewIntFromBigInt(chainID) + tx.ChainID = &chainIDInt + } +} + +// Validate performs a stateless validation of the tx fields. +func (tx SetCodeTx) Validate() error { + if len(tx.To) == 0 { + return errorsmod.Wrap(core.ErrSetCodeTxCreate, "to address cannot be empty") + } + + if len(tx.AuthList) == 0 { + return errorsmod.Wrap(core.ErrEmptyAuthList, "auth list cannot be empty") + } + + if tx.GasTipCap == nil { + return errorsmod.Wrap(ErrInvalidGasCap, "gas tip cap cannot nil") + } + + if tx.GasFeeCap == nil { + return errorsmod.Wrap(ErrInvalidGasCap, "gas fee cap cannot nil") + } + + if tx.GasTipCap.IsNegative() { + return errorsmod.Wrapf(ErrInvalidGasCap, "gas tip cap cannot be negative %s", tx.GasTipCap) + } + + if tx.GasFeeCap.IsNegative() { + return errorsmod.Wrapf(ErrInvalidGasCap, "gas fee cap cannot be negative %s", tx.GasFeeCap) + } + + if !types.IsValidInt256(tx.GetGasTipCap()) { + return errorsmod.Wrap(ErrInvalidGasCap, "out of bound") + } + + if !types.IsValidInt256(tx.GetGasFeeCap()) { + return errorsmod.Wrap(ErrInvalidGasCap, "out of bound") + } + + if tx.GasFeeCap.LT(*tx.GasTipCap) { + return errorsmod.Wrapf( + ErrInvalidGasCap, "max priority fee per gas higher than max fee per gas (%s > %s)", + tx.GasTipCap, tx.GasFeeCap, + ) + } + + if !types.IsValidInt256(tx.Fee()) { + return errorsmod.Wrap(ErrInvalidGasFee, "out of bound") + } + + amount := tx.GetValue() + // Amount can be 0 + if amount != nil && amount.Sign() == -1 { + return errorsmod.Wrapf(ErrInvalidAmount, "amount cannot be negative %s", amount) + } + if !types.IsValidInt256(amount) { + return errorsmod.Wrap(ErrInvalidAmount, "out of bound") + } + + if tx.To != "" { + if err := types.ValidateAddress(tx.To); err != nil { + return errorsmod.Wrap(err, "invalid to address") + } + } + + if tx.GetChainID() == nil { + return errorsmod.Wrap( + errortypes.ErrInvalidChainID, + "chain ID must be present on AccessList txs", + ) + } + + return nil +} + +// Fee returns gasprice * gaslimit. +func (tx SetCodeTx) Fee() *big.Int { + return fee(tx.GetGasFeeCap(), tx.GasLimit) +} + +// Cost returns amount + gasprice * gaslimit. +func (tx SetCodeTx) Cost() *big.Int { + return cost(tx.Fee(), tx.GetValue()) +} + +// EffectiveGasPrice returns the effective gas price +func (tx *SetCodeTx) EffectiveGasPrice(baseFee *big.Int) *big.Int { + return EffectiveGasPrice(baseFee, tx.GasFeeCap.BigInt(), tx.GasTipCap.BigInt()) +} + +// EffectiveFee returns effective_gasprice * gaslimit. +func (tx SetCodeTx) EffectiveFee(baseFee *big.Int) *big.Int { + return fee(tx.EffectiveGasPrice(baseFee), tx.GasLimit) +} + +// EffectiveCost returns amount + effective_gasprice * gaslimit. +func (tx SetCodeTx) EffectiveCost(baseFee *big.Int) *big.Int { + return cost(tx.EffectiveFee(baseFee), tx.GetValue()) +} diff --git a/x/evm/types/set_code_tx_test.go b/x/evm/types/set_code_tx_test.go new file mode 100644 index 0000000000..057aa212de --- /dev/null +++ b/x/evm/types/set_code_tx_test.go @@ -0,0 +1,648 @@ +package types + +import ( + "math/big" + "testing" + + sdkmath "cosmossdk.io/math" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + ethtypes "github.com/ethereum/go-ethereum/core/types" + "github.com/evmos/ethermint/tests" + "github.com/holiman/uint256" + "github.com/stretchr/testify/suite" +) + +type SetCodeTxTestSuite struct { + suite.Suite + + sdkInt sdkmath.Int + uint64 uint64 + hexUint64 hexutil.Uint64 + uint256Int *uint256.Int + sdkZeroInt sdkmath.Int + sdkMinusOneInt sdkmath.Int + invalidAddr string + addr common.Address + hexAddr string + hexDataBytes hexutil.Bytes + hexInputBytes hexutil.Bytes +} + +func (suite *SetCodeTxTestSuite) SetupTest() { + suite.sdkInt = sdkmath.NewInt(100) + suite.uint64 = suite.sdkInt.Uint64() + suite.hexUint64 = hexutil.Uint64(100) + suite.uint256Int = uint256.NewInt(1) + suite.sdkZeroInt = sdkmath.ZeroInt() + suite.sdkMinusOneInt = sdkmath.NewInt(-1) + suite.invalidAddr = "123456" + suite.addr = tests.GenerateAddress() + suite.hexAddr = suite.addr.Hex() + suite.hexDataBytes = hexutil.Bytes([]byte("data")) + suite.hexInputBytes = hexutil.Bytes([]byte("input")) +} + +func TestSetCodeTxTestSuite(t *testing.T) { + suite.Run(t, new(SetCodeTxTestSuite)) +} + +func (suite *SetCodeTxTestSuite) TestNewSetCodeTx() { + testCases := []struct { + name string + tx *ethtypes.Transaction + }{ + { + "non-empty tx", + ethtypes.NewTx(ðtypes.SetCodeTx{ + Nonce: 1, + Data: []byte("data"), + Gas: 100, + Value: uint256.NewInt(1), + AccessList: ethtypes.AccessList{}, + AuthList: []ethtypes.SetCodeAuthorization{}, + To: suite.addr, + V: suite.uint256Int, + R: suite.uint256Int, + S: suite.uint256Int, + }), + }, + } + for _, tc := range testCases { + tx, err := newSetCodeTx(tc.tx) + suite.Require().NoError(err) + suite.Require().NotEmpty(tx) + suite.Require().Equal(uint8(4), tx.TxType()) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxAsEthereumData() { + feeConfig := ðtypes.SetCodeTx{ + Nonce: 1, + Data: []byte("data"), + Gas: 100, + Value: uint256.NewInt(1), + AccessList: ethtypes.AccessList{}, + To: suite.addr, + V: suite.uint256Int, + R: suite.uint256Int, + S: suite.uint256Int, + } + + tx := ethtypes.NewTx(feeConfig) + + SetCodeTx, err := newSetCodeTx(tx) + suite.Require().NoError(err) + + res := SetCodeTx.AsEthereumData() + resTx := ethtypes.NewTx(res) + + suite.Require().Equal(feeConfig.Nonce, resTx.Nonce()) + suite.Require().Equal(feeConfig.Data, resTx.Data()) + suite.Require().Equal(feeConfig.Gas, resTx.Gas()) + suite.Require().Equal(feeConfig.Value.ToBig(), resTx.Value()) + suite.Require().Equal(feeConfig.AccessList, resTx.AccessList()) + suite.Require().Equal(feeConfig.To, *resTx.To()) +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxCopy() { + tx := &SetCodeTx{} + txCopy := tx.Copy() + + suite.Require().Equal(&SetCodeTx{}, txCopy) +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxGetChainID() { + testCases := []struct { + name string + tx SetCodeTx + exp *big.Int + }{ + { + "empty chainID", + SetCodeTx{ + ChainID: nil, + }, + nil, + }, + { + "non-empty chainID", + SetCodeTx{ + ChainID: &suite.sdkInt, + }, + (&suite.sdkInt).BigInt(), + }, + } + + for _, tc := range testCases { + actual := tc.tx.GetChainID() + + suite.Require().Equal(tc.exp, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxGetAccessList() { + testCases := []struct { + name string + tx SetCodeTx + exp ethtypes.AccessList + }{ + { + "empty accesses", + SetCodeTx{ + Accesses: nil, + }, + nil, + }, + { + "nil", + SetCodeTx{ + Accesses: NewAccessList(nil), + }, + nil, + }, + { + "non-empty accesses", + SetCodeTx{ + Accesses: AccessList{ + { + Address: suite.hexAddr, + StorageKeys: []string{}, + }, + }, + }, + ethtypes.AccessList{ + { + Address: suite.addr, + StorageKeys: []common.Hash{}, + }, + }, + }, + } + + for _, tc := range testCases { + actual := tc.tx.GetAccessList() + + suite.Require().Equal(tc.exp, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxGetData() { + testCases := []struct { + name string + tx SetCodeTx + }{ + { + "non-empty transaction", + SetCodeTx{ + Data: nil, + }, + }, + } + + for _, tc := range testCases { + actual := tc.tx.GetData() + + suite.Require().Equal(tc.tx.Data, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxGetGas() { + testCases := []struct { + name string + tx SetCodeTx + exp uint64 + }{ + { + "non-empty gas", + SetCodeTx{ + GasLimit: suite.uint64, + }, + suite.uint64, + }, + } + + for _, tc := range testCases { + actual := tc.tx.GetGas() + + suite.Require().Equal(tc.exp, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxGetGasPrice() { + testCases := []struct { + name string + tx SetCodeTx + exp *big.Int + }{ + { + "non-empty gasFeeCap", + SetCodeTx{ + GasFeeCap: &suite.sdkInt, + }, + (&suite.sdkInt).BigInt(), + }, + } + + for _, tc := range testCases { + actual := tc.tx.GetGasPrice() + + suite.Require().Equal(tc.exp, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxGetGasTipCap() { + testCases := []struct { + name string + tx SetCodeTx + exp *big.Int + }{ + { + "empty gasTipCap", + SetCodeTx{ + GasTipCap: nil, + }, + nil, + }, + { + "non-empty gasTipCap", + SetCodeTx{ + GasTipCap: &suite.sdkInt, + }, + (&suite.sdkInt).BigInt(), + }, + } + + for _, tc := range testCases { + actual := tc.tx.GetGasTipCap() + + suite.Require().Equal(tc.exp, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxGetGasFeeCap() { + testCases := []struct { + name string + tx SetCodeTx + exp *big.Int + }{ + { + "empty gasFeeCap", + SetCodeTx{ + GasFeeCap: nil, + }, + nil, + }, + { + "non-empty gasFeeCap", + SetCodeTx{ + GasFeeCap: &suite.sdkInt, + }, + (&suite.sdkInt).BigInt(), + }, + } + + for _, tc := range testCases { + actual := tc.tx.GetGasFeeCap() + + suite.Require().Equal(tc.exp, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxGetValue() { + testCases := []struct { + name string + tx SetCodeTx + exp *big.Int + }{ + { + "empty amount", + SetCodeTx{ + Amount: nil, + }, + nil, + }, + { + "non-empty amount", + SetCodeTx{ + Amount: &suite.sdkInt, + }, + (&suite.sdkInt).BigInt(), + }, + } + + for _, tc := range testCases { + actual := tc.tx.GetValue() + + suite.Require().Equal(tc.exp, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxGetNonce() { + testCases := []struct { + name string + tx SetCodeTx + exp uint64 + }{ + { + "non-empty nonce", + SetCodeTx{ + Nonce: suite.uint64, + }, + suite.uint64, + }, + } + + for _, tc := range testCases { + actual := tc.tx.GetNonce() + + suite.Require().Equal(tc.exp, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxGetTo() { + testCases := []struct { + name string + tx SetCodeTx + exp *common.Address + }{ + { + "empty suite.address", + SetCodeTx{ + To: "", + }, + nil, + }, + { + "non-empty suite.address", + SetCodeTx{ + To: suite.hexAddr, + }, + &suite.addr, + }, + } + + for _, tc := range testCases { + actual := tc.tx.GetTo() + + suite.Require().Equal(tc.exp, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxSetSignatureValues() { + testCases := []struct { + name string + chainID *big.Int + r *big.Int + v *big.Int + s *big.Int + }{ + { + "empty values", + nil, + nil, + nil, + nil, + }, + { + "non-empty values", + big.NewInt(1), + big.NewInt(2), + big.NewInt(3), + big.NewInt(4), + }, + } + + for _, tc := range testCases { + tx := &SetCodeTx{} + tx.SetSignatureValues(tc.chainID, tc.v, tc.r, tc.s) + + v, r, s := tx.GetRawSignatureValues() + chainID := tx.GetChainID() + + suite.Require().Equal(tc.v, v, tc.name) + suite.Require().Equal(tc.r, r, tc.name) + suite.Require().Equal(tc.s, s, tc.name) + suite.Require().Equal(tc.chainID, chainID, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxValidate() { + testCases := []struct { + name string + tx SetCodeTx + expError bool + }{ + { + "empty", + SetCodeTx{}, + true, + }, + { + "gas tip cap is nil", + SetCodeTx{ + GasTipCap: nil, + }, + true, + }, + { + "gas fee cap is nil", + SetCodeTx{ + GasTipCap: &suite.sdkZeroInt, + }, + true, + }, + { + "gas tip cap is negative", + SetCodeTx{ + GasTipCap: &suite.sdkMinusOneInt, + GasFeeCap: &suite.sdkZeroInt, + }, + true, + }, + { + "gas tip cap is negative", + SetCodeTx{ + GasTipCap: &suite.sdkZeroInt, + GasFeeCap: &suite.sdkMinusOneInt, + }, + true, + }, + { + "gas fee cap < gas tip cap", + SetCodeTx{ + GasTipCap: &suite.sdkInt, + GasFeeCap: &suite.sdkZeroInt, + }, + true, + }, + { + "amount is negative", + SetCodeTx{ + GasTipCap: &suite.sdkInt, + GasFeeCap: &suite.sdkInt, + Amount: &suite.sdkMinusOneInt, + }, + true, + }, + { + "to suite.address is invalid", + SetCodeTx{ + GasTipCap: &suite.sdkInt, + GasFeeCap: &suite.sdkInt, + Amount: &suite.sdkInt, + To: suite.invalidAddr, + }, + true, + }, + { + "chain ID not present on SetCode txs", + SetCodeTx{ + GasTipCap: &suite.sdkInt, + GasFeeCap: &suite.sdkInt, + Amount: &suite.sdkInt, + To: suite.hexAddr, + ChainID: nil, + }, + true, + }, + { + "to address is empty", + SetCodeTx{ + GasTipCap: &suite.sdkInt, + GasFeeCap: &suite.sdkInt, + Amount: &suite.sdkInt, + To: "", + }, + true, + }, + { + "auth list is empty", + SetCodeTx{ + GasTipCap: &suite.sdkInt, + GasFeeCap: &suite.sdkInt, + Amount: &suite.sdkInt, + To: suite.hexAddr, + ChainID: &suite.sdkInt, + }, + true, + }, + { + "no errors", + SetCodeTx{ + GasTipCap: &suite.sdkInt, + GasFeeCap: &suite.sdkInt, + Amount: &suite.sdkInt, + To: suite.hexAddr, + ChainID: &suite.sdkInt, + AuthList: []SetCodeAuthorization{ + { + ChainID: &suite.sdkInt, + Address: suite.addr.Hex(), + Nonce: suite.uint64, + V: []byte{1}, + R: []byte{2}, + S: []byte{3}, + }, + }, + }, + false, + }, + } + + for _, tc := range testCases { + err := tc.tx.Validate() + + if tc.expError { + suite.Require().Error(err, tc.name) + continue + } + + suite.Require().NoError(err, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxEffectiveGasPrice() { + testCases := []struct { + name string + tx SetCodeTx + baseFee *big.Int + exp *big.Int + }{ + { + "non-empty dynamic fee tx", + SetCodeTx{ + GasTipCap: &suite.sdkInt, + GasFeeCap: &suite.sdkInt, + }, + (&suite.sdkInt).BigInt(), + (&suite.sdkInt).BigInt(), + }, + } + + for _, tc := range testCases { + actual := tc.tx.EffectiveGasPrice(tc.baseFee) + + suite.Require().Equal(tc.exp, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxEffectiveFee() { + testCases := []struct { + name string + tx SetCodeTx + baseFee *big.Int + exp *big.Int + }{ + { + "non-empty dynamic fee tx", + SetCodeTx{ + GasTipCap: &suite.sdkInt, + GasFeeCap: &suite.sdkInt, + GasLimit: uint64(1), + }, + (&suite.sdkInt).BigInt(), + (&suite.sdkInt).BigInt(), + }, + } + + for _, tc := range testCases { + actual := tc.tx.EffectiveFee(tc.baseFee) + + suite.Require().Equal(tc.exp, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxEffectiveCost() { + testCases := []struct { + name string + tx SetCodeTx + baseFee *big.Int + exp *big.Int + }{ + { + "non-empty dynamic fee tx", + SetCodeTx{ + GasTipCap: &suite.sdkInt, + GasFeeCap: &suite.sdkInt, + GasLimit: uint64(1), + Amount: &suite.sdkZeroInt, + }, + (&suite.sdkInt).BigInt(), + (&suite.sdkInt).BigInt(), + }, + } + + for _, tc := range testCases { + actual := tc.tx.EffectiveCost(tc.baseFee) + + suite.Require().Equal(tc.exp, actual, tc.name) + } +} + +func (suite *SetCodeTxTestSuite) TestSetCodeTxFeeCost() { + tx := &SetCodeTx{} + suite.Require().Panics(func() { tx.Fee() }, "should panic") + suite.Require().Panics(func() { tx.Cost() }, "should panic") +} diff --git a/x/evm/types/tx.pb.go b/x/evm/types/tx.pb.go index e889b73d00..ba9a97f612 100644 --- a/x/evm/types/tx.pb.go +++ b/x/evm/types/tx.pb.go @@ -261,6 +261,70 @@ func (m *DynamicFeeTx) XXX_DiscardUnknown() { var xxx_messageInfo_DynamicFeeTx proto.InternalMessageInfo +// SetCodeTx implements the EIP-7702 transaction type. +type SetCodeTx struct { + // chain_id of the destination EVM chain + ChainID *cosmossdk_io_math.Int `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3,customtype=cosmossdk.io/math.Int" json:"chainID"` + // nonce corresponds to the account nonce (transaction sequence). + Nonce uint64 `protobuf:"varint,2,opt,name=nonce,proto3" json:"nonce,omitempty"` + // gas_tip_cap defines the max value for the gas tip + GasTipCap *cosmossdk_io_math.Int `protobuf:"bytes,3,opt,name=gas_tip_cap,json=gasTipCap,proto3,customtype=cosmossdk.io/math.Int" json:"gas_tip_cap,omitempty"` + // gas_fee_cap defines the max value for the gas fee + GasFeeCap *cosmossdk_io_math.Int `protobuf:"bytes,4,opt,name=gas_fee_cap,json=gasFeeCap,proto3,customtype=cosmossdk.io/math.Int" json:"gas_fee_cap,omitempty"` + // gas defines the gas limit defined for the transaction. + GasLimit uint64 `protobuf:"varint,5,opt,name=gas,proto3" json:"gas,omitempty"` + // to is the hex formatted address of the recipient + To string `protobuf:"bytes,6,opt,name=to,proto3" json:"to,omitempty"` + // value defines the the transaction amount. + Amount *cosmossdk_io_math.Int `protobuf:"bytes,7,opt,name=value,proto3,customtype=cosmossdk.io/math.Int" json:"value,omitempty"` + // data is the data payload bytes of the transaction. + Data []byte `protobuf:"bytes,8,opt,name=data,proto3" json:"data,omitempty"` + // accesses is an array of access tuples + Accesses AccessList `protobuf:"bytes,9,rep,name=accesses,proto3,castrepeated=AccessList" json:"accessList"` + // auth_list is a list of tuples that indicate what code the signer of each tuple desires to execute in the context of + // their EOA + AuthList AuthList `protobuf:"bytes,10,rep,name=auth_list,json=authList,proto3,castrepeated=AuthList" json:"authList"` + // v defines the signature value + V []byte `protobuf:"bytes,11,opt,name=v,proto3" json:"v,omitempty"` + // r defines the signature value + R []byte `protobuf:"bytes,12,opt,name=r,proto3" json:"r,omitempty"` + // s define the signature value + S []byte `protobuf:"bytes,13,opt,name=s,proto3" json:"s,omitempty"` +} + +func (m *SetCodeTx) Reset() { *m = SetCodeTx{} } +func (m *SetCodeTx) String() string { return proto.CompactTextString(m) } +func (*SetCodeTx) ProtoMessage() {} +func (*SetCodeTx) Descriptor() ([]byte, []int) { + return fileDescriptor_f75ac0a12d075f21, []int{4} +} +func (m *SetCodeTx) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SetCodeTx) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_SetCodeTx.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *SetCodeTx) XXX_Merge(src proto.Message) { + xxx_messageInfo_SetCodeTx.Merge(m, src) +} +func (m *SetCodeTx) XXX_Size() int { + return m.Size() +} +func (m *SetCodeTx) XXX_DiscardUnknown() { + xxx_messageInfo_SetCodeTx.DiscardUnknown(m) +} + +var xxx_messageInfo_SetCodeTx proto.InternalMessageInfo + // ExtensionOptionsEthereumTx is an extension option for ethereum transactions type ExtensionOptionsEthereumTx struct { } @@ -269,7 +333,7 @@ func (m *ExtensionOptionsEthereumTx) Reset() { *m = ExtensionOptionsEthe func (m *ExtensionOptionsEthereumTx) String() string { return proto.CompactTextString(m) } func (*ExtensionOptionsEthereumTx) ProtoMessage() {} func (*ExtensionOptionsEthereumTx) Descriptor() ([]byte, []int) { - return fileDescriptor_f75ac0a12d075f21, []int{4} + return fileDescriptor_f75ac0a12d075f21, []int{5} } func (m *ExtensionOptionsEthereumTx) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -322,7 +386,7 @@ func (m *MsgEthereumTxResponse) Reset() { *m = MsgEthereumTxResponse{} } func (m *MsgEthereumTxResponse) String() string { return proto.CompactTextString(m) } func (*MsgEthereumTxResponse) ProtoMessage() {} func (*MsgEthereumTxResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f75ac0a12d075f21, []int{5} + return fileDescriptor_f75ac0a12d075f21, []int{6} } func (m *MsgEthereumTxResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -364,7 +428,7 @@ func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} } func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) } func (*MsgUpdateParams) ProtoMessage() {} func (*MsgUpdateParams) Descriptor() ([]byte, []int) { - return fileDescriptor_f75ac0a12d075f21, []int{6} + return fileDescriptor_f75ac0a12d075f21, []int{7} } func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -416,7 +480,7 @@ func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateParamsResponse) ProtoMessage() {} func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f75ac0a12d075f21, []int{7} + return fileDescriptor_f75ac0a12d075f21, []int{8} } func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -450,6 +514,7 @@ func init() { proto.RegisterType((*LegacyTx)(nil), "ethermint.evm.v1.LegacyTx") proto.RegisterType((*AccessListTx)(nil), "ethermint.evm.v1.AccessListTx") proto.RegisterType((*DynamicFeeTx)(nil), "ethermint.evm.v1.DynamicFeeTx") + proto.RegisterType((*SetCodeTx)(nil), "ethermint.evm.v1.SetCodeTx") proto.RegisterType((*ExtensionOptionsEthereumTx)(nil), "ethermint.evm.v1.ExtensionOptionsEthereumTx") proto.RegisterType((*MsgEthereumTxResponse)(nil), "ethermint.evm.v1.MsgEthereumTxResponse") proto.RegisterType((*MsgUpdateParams)(nil), "ethermint.evm.v1.MsgUpdateParams") @@ -459,74 +524,79 @@ func init() { func init() { proto.RegisterFile("ethermint/evm/v1/tx.proto", fileDescriptor_f75ac0a12d075f21) } var fileDescriptor_f75ac0a12d075f21 = []byte{ - // 1064 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0xda, 0xeb, 0x5f, 0x63, 0x37, 0xad, 0x46, 0x89, 0xba, 0xb6, 0x88, 0xd7, 0x6c, 0xf9, - 0xe1, 0x16, 0x65, 0x57, 0x0d, 0xa8, 0x52, 0x73, 0x22, 0xdb, 0x24, 0x50, 0x94, 0x88, 0x6a, 0x71, - 0x2f, 0x80, 0x64, 0x4d, 0x76, 0x27, 0xeb, 0x55, 0xbd, 0x3b, 0xab, 0x9d, 0xb1, 0xb1, 0x91, 0x90, - 0xaa, 0x9e, 0x38, 0x52, 0xf1, 0x0f, 0x70, 0xe6, 0xd4, 0x43, 0xcf, 0x5c, 0xb8, 0x54, 0x9c, 0x2a, - 0xb8, 0xa0, 0x1e, 0x0c, 0x4a, 0x90, 0x2a, 0x72, 0xe4, 0xcc, 0x01, 0xcd, 0xcc, 0x3a, 0xb6, 0x6b, - 0x9c, 0x40, 0x25, 0xb8, 0xcd, 0x9b, 0xf7, 0xbd, 0x99, 0xf7, 0xbe, 0x6f, 0xf6, 0xbd, 0x05, 0x55, - 0xcc, 0x3a, 0x38, 0x09, 0x83, 0x88, 0x59, 0xb8, 0x1f, 0x5a, 0xfd, 0xeb, 0x16, 0x1b, 0x98, 0x71, - 0x42, 0x18, 0x81, 0x97, 0x4e, 0x5d, 0x26, 0xee, 0x87, 0x66, 0xff, 0x7a, 0xed, 0xb2, 0x4b, 0x68, - 0x48, 0xa8, 0x15, 0x52, 0x9f, 0x23, 0x43, 0xea, 0x4b, 0x68, 0xad, 0x2a, 0x1d, 0x6d, 0x61, 0x59, - 0xd2, 0x48, 0x5d, 0x2b, 0x3e, 0xf1, 0x89, 0xdc, 0xe7, 0xab, 0x74, 0xf7, 0x15, 0x9f, 0x10, 0xbf, - 0x8b, 0x2d, 0x14, 0x07, 0x16, 0x8a, 0x22, 0xc2, 0x10, 0x0b, 0x48, 0x34, 0x8e, 0xa9, 0xa6, 0x5e, - 0x61, 0x1d, 0xf4, 0x0e, 0x2d, 0x14, 0x0d, 0x53, 0xd7, 0x95, 0xb9, 0x7c, 0x91, 0xeb, 0x62, 0x4a, - 0xdb, 0xac, 0x17, 0x77, 0x71, 0x0a, 0xaa, 0xcd, 0x81, 0xba, 0x64, 0x9c, 0xea, 0xda, 0x9c, 0x2f, - 0x46, 0x09, 0x0a, 0xd3, 0xab, 0x8d, 0xfb, 0x19, 0x70, 0x61, 0x9f, 0xfa, 0x3b, 0x1c, 0x84, 0x7b, - 0x61, 0x6b, 0x00, 0x9b, 0x40, 0xf5, 0x10, 0x43, 0x9a, 0xd2, 0x50, 0x9a, 0xe5, 0x8d, 0x15, 0x53, - 0xe6, 0x66, 0x8e, 0x73, 0x33, 0xb7, 0xa2, 0xa1, 0x23, 0x10, 0xb0, 0x0a, 0x54, 0x1a, 0x7c, 0x8e, - 0xb5, 0x4c, 0x43, 0x69, 0x2a, 0x76, 0xee, 0x64, 0xa4, 0x2b, 0xeb, 0x8e, 0xd8, 0x82, 0xef, 0x80, - 0x8b, 0x1e, 0x8e, 0x13, 0xec, 0x22, 0x86, 0xbd, 0x76, 0x07, 0xd1, 0x8e, 0x96, 0x6d, 0x28, 0xcd, - 0x92, 0x5d, 0xfe, 0x63, 0xa4, 0x17, 0x92, 0x6e, 0xbc, 0x69, 0xac, 0x1b, 0xce, 0xf2, 0x04, 0xf3, - 0x3e, 0xa2, 0x1d, 0xf8, 0xd6, 0x4c, 0xd4, 0x61, 0x42, 0x42, 0x4d, 0x15, 0x51, 0x19, 0x4d, 0x99, - 0x06, 0xef, 0x26, 0x24, 0x84, 0x10, 0xa8, 0x02, 0x91, 0x6b, 0x28, 0xcd, 0x8a, 0x23, 0xd6, 0xf0, - 0x35, 0x90, 0x4d, 0xd0, 0x67, 0x5a, 0x9e, 0x6f, 0xd9, 0xf0, 0xc9, 0x48, 0x5f, 0x7a, 0x36, 0xd2, - 0xc1, 0xa4, 0x38, 0x87, 0xbb, 0x37, 0x2f, 0x7c, 0xf9, 0x8d, 0xbe, 0xf4, 0xe0, 0xf9, 0xa3, 0x6b, - 0x22, 0xc8, 0x78, 0x98, 0x01, 0xc5, 0x3d, 0xec, 0x23, 0x77, 0xd8, 0x1a, 0xc0, 0x15, 0x90, 0x8b, - 0x48, 0xe4, 0x62, 0x51, 0xbe, 0xea, 0x48, 0x03, 0xde, 0x00, 0x25, 0x1f, 0x71, 0xb9, 0x03, 0x57, - 0x96, 0x5b, 0xb2, 0xab, 0xcf, 0x46, 0xfa, 0xaa, 0x54, 0x9e, 0x7a, 0xf7, 0xcc, 0x80, 0x58, 0x21, - 0x62, 0x1d, 0xf3, 0x76, 0xc4, 0x9c, 0xa2, 0x8f, 0xe8, 0x1d, 0x0e, 0x85, 0x75, 0x90, 0xf5, 0x11, - 0x15, 0xa5, 0xab, 0x76, 0xe5, 0x68, 0xa4, 0x17, 0xdf, 0x43, 0x74, 0x2f, 0x08, 0x03, 0xe6, 0x70, - 0x07, 0x5c, 0x06, 0x19, 0x46, 0x64, 0x8d, 0x4e, 0x86, 0x11, 0x78, 0x13, 0xe4, 0xfa, 0xa8, 0xdb, - 0xc3, 0xa2, 0xa8, 0x92, 0x7d, 0x65, 0xe1, 0x1d, 0x47, 0x23, 0x3d, 0xbf, 0x15, 0x92, 0x5e, 0xc4, - 0x1c, 0x19, 0xc1, 0xe9, 0x10, 0xb2, 0xe5, 0x25, 0x1d, 0x42, 0xa0, 0x0a, 0x50, 0xfa, 0x5a, 0x41, - 0x6c, 0x28, 0x7d, 0x6e, 0x25, 0x5a, 0x51, 0x5a, 0x09, 0xb7, 0xa8, 0x56, 0x92, 0x16, 0xdd, 0x5c, - 0xe6, 0x94, 0xfc, 0xf0, 0x78, 0x3d, 0xdf, 0x1a, 0x6c, 0x23, 0x86, 0x8c, 0xef, 0xb2, 0xa0, 0xb2, - 0x25, 0x1e, 0xda, 0x5e, 0x40, 0x59, 0x6b, 0x00, 0x3f, 0x00, 0x45, 0xb7, 0x83, 0x82, 0xa8, 0x1d, - 0x78, 0x82, 0x9a, 0x92, 0x6d, 0x9d, 0x95, 0x5c, 0xe1, 0x16, 0x07, 0xdf, 0xde, 0x3e, 0x19, 0xe9, - 0x05, 0x57, 0x2e, 0x9d, 0x74, 0xe1, 0x4d, 0x38, 0xce, 0x2c, 0xe4, 0x38, 0xfb, 0xaf, 0x39, 0x56, - 0xcf, 0xe6, 0x38, 0x37, 0xcf, 0x71, 0xfe, 0xa5, 0x39, 0x2e, 0x4c, 0x71, 0xfc, 0x09, 0x28, 0xca, - 0x2f, 0x12, 0x53, 0xad, 0xd8, 0xc8, 0x36, 0xcb, 0x1b, 0x6b, 0xe6, 0x8b, 0x8d, 0xc4, 0x94, 0x54, - 0xb6, 0xf8, 0x27, 0x6b, 0x37, 0xf8, 0xb3, 0x3c, 0x19, 0xe9, 0x00, 0x9d, 0xf2, 0xfb, 0xed, 0x2f, - 0x3a, 0x98, 0xb0, 0xed, 0x9c, 0x1e, 0x28, 0x05, 0x2c, 0xcd, 0x08, 0x08, 0x66, 0x04, 0x2c, 0x2f, - 0x12, 0xf0, 0xcf, 0x2c, 0xa8, 0x6c, 0x0f, 0x23, 0x14, 0x06, 0xee, 0x2e, 0xc6, 0xff, 0x8b, 0x80, - 0x37, 0x41, 0x99, 0x0b, 0xc8, 0x82, 0xb8, 0xed, 0xa2, 0xf8, 0x7c, 0x09, 0xb9, 0xdc, 0xad, 0x20, - 0xbe, 0x85, 0xe2, 0x71, 0xe8, 0x21, 0xc6, 0x22, 0x54, 0xfd, 0x27, 0xa1, 0xbb, 0x18, 0xf3, 0xd0, - 0x54, 0xfe, 0xdc, 0xd9, 0xf2, 0xe7, 0xe7, 0xe5, 0x2f, 0xbc, 0xb4, 0xfc, 0xc5, 0x05, 0xf2, 0x97, - 0xfe, 0x13, 0xf9, 0xc1, 0x8c, 0xfc, 0xe5, 0x19, 0xf9, 0x2b, 0x8b, 0xe4, 0x37, 0x40, 0x6d, 0x67, - 0xc0, 0x70, 0x44, 0x03, 0x12, 0x7d, 0x18, 0x8b, 0x59, 0x33, 0xe9, 0x82, 0x9b, 0x2a, 0x47, 0x1b, - 0xdf, 0x2b, 0x60, 0x75, 0xa6, 0xf5, 0x3b, 0x98, 0xc6, 0x24, 0xa2, 0xa2, 0x50, 0xd1, 0xb2, 0xc5, - 0x3b, 0x71, 0xc4, 0x1a, 0x5e, 0x05, 0x6a, 0x97, 0xf8, 0x54, 0xcb, 0x88, 0x22, 0x57, 0xe7, 0x8b, - 0xdc, 0x23, 0xbe, 0x23, 0x20, 0xf0, 0x12, 0xc8, 0x26, 0x98, 0x89, 0x07, 0x50, 0x71, 0xf8, 0x12, - 0x56, 0x41, 0xb1, 0x1f, 0xb6, 0x71, 0x92, 0x90, 0x24, 0xed, 0x76, 0x85, 0x7e, 0xb8, 0xc3, 0x4d, - 0xee, 0xe2, 0xd2, 0xf7, 0x28, 0xf6, 0xa4, 0x88, 0x4e, 0xc1, 0x47, 0xf4, 0x2e, 0xc5, 0x1e, 0x5c, - 0x03, 0xe0, 0xa0, 0x4b, 0xdc, 0x7b, 0x72, 0x7e, 0xc8, 0xc6, 0x56, 0x12, 0x3b, 0x7c, 0x5a, 0xa4, - 0x55, 0x3c, 0x54, 0xc0, 0xc5, 0x7d, 0xea, 0xdf, 0x8d, 0x3d, 0xc4, 0xf0, 0x1d, 0x31, 0xda, 0x78, - 0x2b, 0x41, 0x3d, 0xd6, 0x21, 0x49, 0xc0, 0x86, 0xe9, 0x63, 0xd7, 0x7e, 0x7c, 0xbc, 0xbe, 0x92, - 0x0e, 0xea, 0x2d, 0xcf, 0x4b, 0x30, 0xa5, 0x1f, 0xb1, 0x24, 0x88, 0x7c, 0x67, 0x02, 0x85, 0x37, - 0x40, 0x5e, 0x0e, 0x47, 0xf1, 0xb0, 0xcb, 0x1b, 0xda, 0x7c, 0x95, 0xf2, 0x06, 0x5b, 0xe5, 0x2a, - 0x3a, 0x29, 0x7a, 0x73, 0x99, 0x0f, 0x93, 0xc9, 0x39, 0x46, 0x15, 0x5c, 0x7e, 0x21, 0xa5, 0x31, - 0xb5, 0x1b, 0xbf, 0x2b, 0x20, 0xbb, 0x4f, 0x7d, 0xf8, 0x05, 0x98, 0x1a, 0x4b, 0x50, 0x9f, 0xbf, - 0x68, 0x46, 0x99, 0xda, 0x9b, 0xe7, 0x00, 0xc6, 0xe7, 0x1b, 0xaf, 0x3f, 0xf8, 0xe9, 0xb7, 0xaf, - 0x33, 0xba, 0xb1, 0x66, 0xcd, 0xcd, 0x7d, 0x9c, 0xa2, 0xdb, 0x6c, 0x00, 0x3f, 0x05, 0x95, 0x19, - 0xc6, 0x5e, 0xfd, 0xdb, 0xf3, 0xa7, 0x21, 0xb5, 0xab, 0xe7, 0x42, 0xc6, 0x49, 0xd4, 0x72, 0xf7, - 0x9f, 0x3f, 0xba, 0xa6, 0xd8, 0xef, 0x3e, 0x39, 0xaa, 0x2b, 0x4f, 0x8f, 0xea, 0xca, 0xaf, 0x47, - 0x75, 0xe5, 0xab, 0xe3, 0xfa, 0xd2, 0xd3, 0xe3, 0xfa, 0xd2, 0xcf, 0xc7, 0xf5, 0xa5, 0x8f, 0xdf, - 0xf0, 0x03, 0xd6, 0xe9, 0x1d, 0x98, 0x2e, 0x09, 0x79, 0x76, 0x84, 0x4e, 0x65, 0x3b, 0x10, 0xf9, - 0xb2, 0x61, 0x8c, 0xe9, 0x41, 0x5e, 0xfc, 0x75, 0xbc, 0xfd, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xb5, 0x29, 0xc9, 0x6e, 0xb6, 0x09, 0x00, 0x00, + // 1147 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xce, 0xda, 0xeb, 0x5f, 0x63, 0x27, 0xad, 0x46, 0x89, 0xba, 0xb6, 0x1a, 0xaf, 0x71, 0xa1, + 0xb8, 0x45, 0xb1, 0xd5, 0x80, 0x2a, 0x35, 0x27, 0xbc, 0xf9, 0x01, 0x45, 0x89, 0xa8, 0xb6, 0xee, + 0x05, 0x90, 0xac, 0xc9, 0xee, 0x64, 0xbd, 0xaa, 0x77, 0x67, 0xb5, 0x33, 0x36, 0x76, 0x25, 0xa4, + 0xaa, 0x27, 0x8e, 0x54, 0xfc, 0x03, 0x9c, 0x39, 0xf5, 0xd0, 0x33, 0x17, 0x2e, 0x15, 0xa7, 0x0a, + 0x2e, 0xa8, 0x42, 0x06, 0x25, 0x48, 0x15, 0x39, 0x72, 0xe6, 0x80, 0x66, 0x66, 0x1d, 0xdb, 0x5d, + 0x9c, 0x40, 0x25, 0x90, 0x90, 0x7a, 0x9b, 0x37, 0xef, 0x7b, 0x33, 0xef, 0x7d, 0xdf, 0xdb, 0x9d, + 0x07, 0x8a, 0x98, 0x75, 0x70, 0xe8, 0xb9, 0x3e, 0x6b, 0xe0, 0xbe, 0xd7, 0xe8, 0x5f, 0x6b, 0xb0, + 0x41, 0x3d, 0x08, 0x09, 0x23, 0xf0, 0xfc, 0x89, 0xab, 0x8e, 0xfb, 0x5e, 0xbd, 0x7f, 0xad, 0x74, + 0xc1, 0x22, 0xd4, 0x23, 0xb4, 0xe1, 0x51, 0x87, 0x23, 0x3d, 0xea, 0x48, 0x68, 0xa9, 0x28, 0x1d, + 0x6d, 0x61, 0x35, 0xa4, 0x11, 0xb9, 0x96, 0x1d, 0xe2, 0x10, 0xb9, 0xcf, 0x57, 0xd1, 0xee, 0x45, + 0x87, 0x10, 0xa7, 0x8b, 0x1b, 0x28, 0x70, 0x1b, 0xc8, 0xf7, 0x09, 0x43, 0xcc, 0x25, 0xfe, 0x38, + 0xa6, 0x18, 0x79, 0x85, 0xb5, 0xdf, 0x3b, 0x68, 0x20, 0x7f, 0x18, 0xb9, 0x2e, 0xc5, 0xf2, 0x45, + 0x96, 0x85, 0x29, 0x6d, 0xb3, 0x5e, 0xd0, 0xc5, 0x11, 0xa8, 0x14, 0x03, 0x75, 0xc9, 0x38, 0xd5, + 0xd5, 0x98, 0x2f, 0x40, 0x21, 0xf2, 0xc6, 0x57, 0xaf, 0xc5, 0xdc, 0x14, 0xb3, 0xb6, 0x45, 0x6c, + 0xdc, 0x46, 0x3d, 0xd6, 0x21, 0xa1, 0x7b, 0x4f, 0xa4, 0x2a, 0xe1, 0xd5, 0xfb, 0x09, 0xb0, 0xb8, + 0x47, 0x9d, 0x6d, 0x1e, 0x84, 0x7b, 0x5e, 0x6b, 0x00, 0x6b, 0x40, 0xb5, 0x11, 0x43, 0x9a, 0x52, + 0x51, 0x6a, 0xf9, 0xf5, 0xe5, 0xba, 0x2c, 0xa5, 0x3e, 0x2e, 0xa5, 0xde, 0xf4, 0x87, 0xa6, 0x40, + 0xc0, 0x22, 0x50, 0xa9, 0x7b, 0x0f, 0x6b, 0x89, 0x8a, 0x52, 0x53, 0x8c, 0xd4, 0xf1, 0x48, 0x57, + 0xd6, 0x4c, 0xb1, 0x05, 0xdf, 0x01, 0xe7, 0x6c, 0x1c, 0x84, 0xd8, 0x42, 0x0c, 0xdb, 0xed, 0x0e, + 0xa2, 0x1d, 0x2d, 0x59, 0x51, 0x6a, 0x39, 0x23, 0xff, 0xfb, 0x48, 0xcf, 0x84, 0xdd, 0x60, 0xa3, + 0xba, 0x56, 0x35, 0x97, 0x26, 0x98, 0xf7, 0x11, 0xed, 0xc0, 0xb7, 0x66, 0xa2, 0x0e, 0x42, 0xe2, + 0x69, 0xaa, 0x88, 0x4a, 0x68, 0xca, 0x34, 0x78, 0x27, 0x24, 0x1e, 0x84, 0x40, 0x15, 0x88, 0x54, + 0x45, 0xa9, 0x15, 0x4c, 0xb1, 0x86, 0xaf, 0x83, 0x64, 0x88, 0x3e, 0xd5, 0xd2, 0x7c, 0xcb, 0x80, + 0x4f, 0x46, 0xfa, 0xc2, 0xb3, 0x91, 0x0e, 0x26, 0xc5, 0x99, 0xdc, 0xbd, 0xb1, 0xf8, 0xf9, 0x57, + 0xfa, 0xc2, 0x83, 0xe7, 0x8f, 0xae, 0x8a, 0xa0, 0xea, 0xc3, 0x04, 0xc8, 0xee, 0x62, 0x07, 0x59, + 0xc3, 0xd6, 0x00, 0x2e, 0x83, 0x94, 0x4f, 0x7c, 0x0b, 0x8b, 0xf2, 0x55, 0x53, 0x1a, 0xf0, 0x3a, + 0xc8, 0x39, 0x88, 0x77, 0x87, 0x6b, 0xc9, 0x72, 0x73, 0x46, 0xf1, 0xd9, 0x48, 0x5f, 0x91, 0x8d, + 0x42, 0xed, 0xbb, 0x75, 0x97, 0x34, 0x3c, 0xc4, 0x3a, 0xf5, 0x9b, 0x3e, 0x33, 0xb3, 0x0e, 0xa2, + 0xb7, 0x38, 0x14, 0x96, 0x41, 0xd2, 0x41, 0x54, 0x94, 0xae, 0x1a, 0x85, 0xc3, 0x91, 0x9e, 0x7d, + 0x0f, 0xd1, 0x5d, 0xd7, 0x73, 0x99, 0xc9, 0x1d, 0x70, 0x09, 0x24, 0x18, 0x91, 0x35, 0x9a, 0x09, + 0x46, 0xe0, 0x0d, 0x90, 0xea, 0xa3, 0x6e, 0x0f, 0x8b, 0xa2, 0x72, 0xc6, 0xa5, 0xb9, 0x77, 0x1c, + 0x8e, 0xf4, 0x74, 0xd3, 0x23, 0x3d, 0x9f, 0x99, 0x32, 0x82, 0xd3, 0x21, 0x64, 0x4b, 0x4b, 0x3a, + 0x84, 0x40, 0x05, 0xa0, 0xf4, 0xb5, 0x8c, 0xd8, 0x50, 0xfa, 0xdc, 0x0a, 0xb5, 0xac, 0xb4, 0x42, + 0x6e, 0x51, 0x2d, 0x27, 0x2d, 0xba, 0xb1, 0xc4, 0x29, 0xf9, 0xee, 0xf1, 0x5a, 0xba, 0x35, 0xd8, + 0x42, 0x0c, 0x55, 0xbf, 0x49, 0x82, 0x42, 0x53, 0xf4, 0xe5, 0xae, 0x4b, 0x59, 0x6b, 0x00, 0x3f, + 0x00, 0x59, 0xab, 0x83, 0x5c, 0xbf, 0xed, 0xda, 0x82, 0x9a, 0x9c, 0xd1, 0x38, 0x2d, 0xb9, 0xcc, + 0x26, 0x07, 0xdf, 0xdc, 0x3a, 0x1e, 0xe9, 0x19, 0x4b, 0x2e, 0xcd, 0x68, 0x61, 0x4f, 0x38, 0x4e, + 0xcc, 0xe5, 0x38, 0xf9, 0x8f, 0x39, 0x56, 0x4f, 0xe7, 0x38, 0x15, 0xe7, 0x38, 0xfd, 0xd2, 0x1c, + 0x67, 0xa6, 0x38, 0xfe, 0x18, 0x64, 0xe5, 0x07, 0x8c, 0xa9, 0x96, 0xad, 0x24, 0x6b, 0xf9, 0xf5, + 0xd5, 0xfa, 0x8b, 0xff, 0x9d, 0xba, 0xa4, 0xb2, 0xc5, 0xbf, 0x70, 0xa3, 0xc2, 0xdb, 0xf2, 0x78, + 0xa4, 0x03, 0x74, 0xc2, 0xef, 0xd7, 0x3f, 0xeb, 0x60, 0xc2, 0xb6, 0x79, 0x72, 0xa0, 0x14, 0x30, + 0x37, 0x23, 0x20, 0x98, 0x11, 0x30, 0x3f, 0x4f, 0xc0, 0x3f, 0x92, 0xa0, 0xb0, 0x35, 0xf4, 0x91, + 0xe7, 0x5a, 0x3b, 0x18, 0xff, 0x27, 0x02, 0xde, 0x00, 0x79, 0x2e, 0x20, 0x73, 0x83, 0xb6, 0x85, + 0x82, 0xb3, 0x25, 0xe4, 0x72, 0xb7, 0xdc, 0x60, 0x13, 0x05, 0xe3, 0xd0, 0x03, 0x8c, 0x45, 0xa8, + 0xfa, 0x77, 0x42, 0x77, 0x30, 0xe6, 0xa1, 0x91, 0xfc, 0xa9, 0xd3, 0xe5, 0x4f, 0xc7, 0xe5, 0xcf, + 0xbc, 0xb4, 0xfc, 0xd9, 0x39, 0xf2, 0xe7, 0xfe, 0x15, 0xf9, 0xc1, 0x8c, 0xfc, 0xf9, 0x19, 0xf9, + 0x0b, 0xf3, 0xe4, 0xff, 0x49, 0x05, 0xb9, 0xdb, 0x98, 0x6d, 0x12, 0xfb, 0x95, 0xf6, 0xff, 0x4f, + 0xed, 0x11, 0xc8, 0xf1, 0xf7, 0xba, 0xdd, 0x75, 0x29, 0xd3, 0x80, 0x38, 0xfd, 0x72, 0xfc, 0xf4, + 0x48, 0xe3, 0xe6, 0xf4, 0xcb, 0x6e, 0x5c, 0x8c, 0xae, 0xc9, 0xf2, 0x03, 0xa2, 0x4b, 0xb2, 0xcd, + 0x68, 0x6d, 0x9e, 0xec, 0xca, 0xf6, 0xca, 0xcf, 0xb4, 0x57, 0x61, 0xa6, 0xbd, 0x16, 0xe7, 0xb5, + 0x57, 0x15, 0x94, 0xb6, 0x07, 0x0c, 0xfb, 0xd4, 0x25, 0xfe, 0x87, 0x81, 0x98, 0x7c, 0x26, 0x8f, + 0xec, 0x86, 0xca, 0xd1, 0xd5, 0x6f, 0x15, 0xb0, 0x32, 0x33, 0x59, 0x98, 0x98, 0x06, 0xc4, 0xa7, + 0x82, 0x4b, 0x31, 0x11, 0x88, 0x56, 0x34, 0xc5, 0x1a, 0x5e, 0x01, 0x6a, 0x97, 0x38, 0x54, 0x4b, + 0x88, 0x4a, 0x57, 0xe2, 0x95, 0xee, 0x12, 0xc7, 0x14, 0x10, 0x78, 0x1e, 0x24, 0x43, 0xcc, 0x44, + 0x8f, 0x15, 0x4c, 0xbe, 0x84, 0x45, 0x90, 0xed, 0x7b, 0x6d, 0x1c, 0x86, 0x24, 0x8c, 0x1e, 0xd3, + 0x4c, 0xdf, 0xdb, 0xe6, 0x26, 0x77, 0xf1, 0xee, 0xea, 0x51, 0x6c, 0xcb, 0x3e, 0x31, 0x33, 0x0e, + 0xa2, 0x77, 0x28, 0xb6, 0xe1, 0x2a, 0x00, 0xfb, 0x5d, 0x62, 0xdd, 0x95, 0xe3, 0x89, 0x7c, 0x37, + 0x73, 0x62, 0x87, 0x0f, 0x23, 0x51, 0x15, 0x0f, 0x15, 0x70, 0x6e, 0x8f, 0x3a, 0x77, 0x02, 0x1b, + 0x31, 0x7c, 0x4b, 0x0c, 0x5a, 0xfc, 0xa5, 0x8a, 0x46, 0x29, 0x36, 0x8c, 0xbe, 0x27, 0xed, 0xfb, + 0xc7, 0x6b, 0xcb, 0xd1, 0xd8, 0xd8, 0xb4, 0xed, 0x10, 0x53, 0x7a, 0x9b, 0x85, 0xae, 0xef, 0x98, + 0x13, 0x28, 0xbc, 0x0e, 0xd2, 0x72, 0x54, 0x13, 0xdf, 0x4e, 0x7e, 0x5d, 0x8b, 0x57, 0x29, 0x6f, + 0x30, 0x54, 0xae, 0xa0, 0x19, 0xa1, 0x37, 0x96, 0xf8, 0xac, 0x32, 0x39, 0xa7, 0x5a, 0x04, 0x17, + 0x5e, 0x48, 0x69, 0x4c, 0xed, 0xfa, 0x6f, 0x0a, 0x48, 0xee, 0x51, 0x07, 0x7e, 0x06, 0xa6, 0xa6, + 0x1e, 0xa8, 0xc7, 0x2f, 0x9a, 0x51, 0xa6, 0xf4, 0xe6, 0x19, 0x80, 0xf1, 0xf9, 0xd5, 0x37, 0x1e, + 0xfc, 0xf0, 0xeb, 0x97, 0x09, 0xbd, 0xba, 0xda, 0x88, 0x8d, 0x99, 0x38, 0x42, 0xb7, 0xd9, 0x00, + 0x7e, 0x02, 0x0a, 0x33, 0x8c, 0xbd, 0xf6, 0x97, 0xe7, 0x4f, 0x43, 0x4a, 0x57, 0xce, 0x84, 0x8c, + 0x93, 0x28, 0xa5, 0xee, 0x3f, 0x7f, 0x74, 0x55, 0x31, 0xde, 0x7d, 0x72, 0x58, 0x56, 0x9e, 0x1e, + 0x96, 0x95, 0x5f, 0x0e, 0xcb, 0xca, 0x17, 0x47, 0xe5, 0x85, 0xa7, 0x47, 0xe5, 0x85, 0x1f, 0x8f, + 0xca, 0x0b, 0x1f, 0x5d, 0x76, 0x5c, 0xd6, 0xe9, 0xed, 0xd7, 0x2d, 0xe2, 0xf1, 0xec, 0x08, 0x9d, + 0xca, 0x76, 0x20, 0xf2, 0x65, 0xc3, 0x00, 0xd3, 0xfd, 0xb4, 0x18, 0x6a, 0xdf, 0xfe, 0x33, 0x00, + 0x00, 0xff, 0xff, 0xe8, 0x95, 0x8e, 0xe7, 0x44, 0x0c, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1063,6 +1133,150 @@ func (m *DynamicFeeTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *SetCodeTx) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SetCodeTx) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SetCodeTx) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.S) > 0 { + i -= len(m.S) + copy(dAtA[i:], m.S) + i = encodeVarintTx(dAtA, i, uint64(len(m.S))) + i-- + dAtA[i] = 0x6a + } + if len(m.R) > 0 { + i -= len(m.R) + copy(dAtA[i:], m.R) + i = encodeVarintTx(dAtA, i, uint64(len(m.R))) + i-- + dAtA[i] = 0x62 + } + if len(m.V) > 0 { + i -= len(m.V) + copy(dAtA[i:], m.V) + i = encodeVarintTx(dAtA, i, uint64(len(m.V))) + i-- + dAtA[i] = 0x5a + } + if len(m.AuthList) > 0 { + for iNdEx := len(m.AuthList) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AuthList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + } + if len(m.Accesses) > 0 { + for iNdEx := len(m.Accesses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Accesses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + } + if len(m.Data) > 0 { + i -= len(m.Data) + copy(dAtA[i:], m.Data) + i = encodeVarintTx(dAtA, i, uint64(len(m.Data))) + i-- + dAtA[i] = 0x42 + } + if m.Amount != nil { + { + size := m.Amount.Size() + i -= size + if _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + if len(m.To) > 0 { + i -= len(m.To) + copy(dAtA[i:], m.To) + i = encodeVarintTx(dAtA, i, uint64(len(m.To))) + i-- + dAtA[i] = 0x32 + } + if m.GasLimit != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.GasLimit)) + i-- + dAtA[i] = 0x28 + } + if m.GasFeeCap != nil { + { + size := m.GasFeeCap.Size() + i -= size + if _, err := m.GasFeeCap.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.GasTipCap != nil { + { + size := m.GasTipCap.Size() + i -= size + if _, err := m.GasTipCap.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.Nonce != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.Nonce)) + i-- + dAtA[i] = 0x10 + } + if m.ChainID != nil { + { + size := m.ChainID.Size() + i -= size + if _, err := m.ChainID.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *ExtensionOptionsEthereumTx) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1413,6 +1627,69 @@ func (m *DynamicFeeTx) Size() (n int) { return n } +func (m *SetCodeTx) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ChainID != nil { + l = m.ChainID.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.Nonce != 0 { + n += 1 + sovTx(uint64(m.Nonce)) + } + if m.GasTipCap != nil { + l = m.GasTipCap.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.GasFeeCap != nil { + l = m.GasFeeCap.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.GasLimit != 0 { + n += 1 + sovTx(uint64(m.GasLimit)) + } + l = len(m.To) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Amount != nil { + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Data) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Accesses) > 0 { + for _, e := range m.Accesses { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.AuthList) > 0 { + for _, e := range m.AuthList { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + l = len(m.V) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.R) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.S) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + func (m *ExtensionOptionsEthereumTx) Size() (n int) { if m == nil { return 0 @@ -2874,6 +3151,474 @@ func (m *DynamicFeeTx) Unmarshal(dAtA []byte) error { } return nil } +func (m *SetCodeTx) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: SetCodeTx: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SetCodeTx: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var v cosmossdk_io_math.Int + m.ChainID = &v + if err := m.ChainID.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Nonce", wireType) + } + m.Nonce = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Nonce |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GasTipCap", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var v cosmossdk_io_math.Int + m.GasTipCap = &v + if err := m.GasTipCap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GasFeeCap", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var v cosmossdk_io_math.Int + m.GasFeeCap = &v + if err := m.GasFeeCap.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GasLimit", wireType) + } + m.GasLimit = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.GasLimit |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field To", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.To = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var v cosmossdk_io_math.Int + m.Amount = &v + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Accesses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Accesses = append(m.Accesses, AccessTuple{}) + if err := m.Accesses[len(m.Accesses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuthList", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AuthList = append(m.AuthList, SetCodeAuthorization{}) + if err := m.AuthList[len(m.AuthList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field V", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.V = append(m.V[:0], dAtA[iNdEx:postIndex]...) + if m.V == nil { + m.V = []byte{} + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field R", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.R = append(m.R[:0], dAtA[iNdEx:postIndex]...) + if m.R == nil { + m.R = []byte{} + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field S", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.S = append(m.S[:0], dAtA[iNdEx:postIndex]...) + if m.S == nil { + m.S = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ExtensionOptionsEthereumTx) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/evm/types/tx_args.go b/x/evm/types/tx_args.go index a1357ddd8f..13b1fe1a5d 100644 --- a/x/evm/types/tx_args.go +++ b/x/evm/types/tx_args.go @@ -25,6 +25,7 @@ import ( "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" ethermint "github.com/evmos/ethermint/types" + "github.com/holiman/uint256" ) // TransactionArgs represents the arguments to construct a new transaction @@ -49,7 +50,9 @@ type TransactionArgs struct { // Introduced by AccessListTxType transaction. AccessList *types.AccessList `json:"accessList,omitempty"` - ChainID *hexutil.Big `json:"chainId,omitempty"` + // For SetCodeTxType + AuthorizationList []types.SetCodeAuthorization `json:"authorizationList"` + ChainID *hexutil.Big `json:"chainId,omitempty"` } // String return the struct in a string format @@ -80,6 +83,23 @@ func (args *TransactionArgs) ToTransaction() *MsgEthereumTx { var data types.TxData switch { + case args.AuthorizationList != nil: + al := types.AccessList{} + if args.AccessList != nil { + al = *args.AccessList + } + data = &types.SetCodeTx{ + To: *args.To, + ChainID: uint256.MustFromBig(args.ChainID.ToInt()), + Nonce: uint64(*args.Nonce), + Gas: uint64(*args.Gas), + GasFeeCap: uint256.MustFromBig((*big.Int)(args.MaxFeePerGas)), + GasTipCap: uint256.MustFromBig((*big.Int)(args.MaxPriorityFeePerGas)), + Value: uint256.MustFromBig((*big.Int)(args.Value)), + Data: args.GetData(), + AccessList: al, + AuthList: args.AuthorizationList, + } case args.MaxFeePerGas != nil: al := types.AccessList{} if args.AccessList != nil { @@ -196,18 +216,19 @@ func (args *TransactionArgs) ToMessage(globalGasCap uint64, baseFee *big.Int) (* } msg := &core.Message{ - From: addr, - To: args.To, - Nonce: nonce, - Value: value, - GasLimit: gas, - GasPrice: gasPrice, - GasFeeCap: gasFeeCap, - GasTipCap: gasTipCap, - Data: data, - AccessList: accessList, - SkipNonceChecks: true, - SkipFromEOACheck: true, + From: addr, + To: args.To, + Nonce: nonce, + Value: value, + GasLimit: gas, + GasPrice: gasPrice, + GasFeeCap: gasFeeCap, + GasTipCap: gasTipCap, + Data: data, + AccessList: accessList, + SetCodeAuthorizations: args.AuthorizationList, + SkipNonceChecks: true, + SkipFromEOACheck: true, } return msg, nil } diff --git a/x/evm/types/tx_data.go b/x/evm/types/tx_data.go index 99243d5e09..4e5dcb6992 100644 --- a/x/evm/types/tx_data.go +++ b/x/evm/types/tx_data.go @@ -26,6 +26,7 @@ var ( _ TxData = &LegacyTx{} _ TxData = &AccessListTx{} _ TxData = &DynamicFeeTx{} + _ TxData = &SetCodeTx{} ) // TxData implements the Ethereum transaction tx structure. It is used @@ -72,6 +73,8 @@ func NewTxDataFromTx(tx *ethtypes.Transaction) (TxData, error) { txData, err = newDynamicFeeTx(tx) case ethtypes.AccessListTxType: txData, err = newAccessListTx(tx) + case ethtypes.SetCodeTxType: + txData, err = newSetCodeTx(tx) default: txData, err = newLegacyTx(tx) } From 0c3bf4424d74ace9aad07cb2c534a1fad3d97336 Mon Sep 17 00:00:00 2001 From: "Thomas N." <81727899+thomas-nguy@users.noreply.github.com> Date: Fri, 5 Sep 2025 13:10:15 +0800 Subject: [PATCH 152/210] release: v0.22 (#687) --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1daa78671d..d2182d2dec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,7 +35,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ # Changelog -## Unreleased +## [v0.22.0] - 2025-08-12 * (geth) [#665](https://github.com/crypto-org-chain/ethermint/pull/665) Update go-ethereum version to [`v1.15.11`](https://github.com/ethereum/go-ethereum/releases/tag/v1.15.11). * (evm) [#689](https://github.com/crypto-org-chain/ethermint/pull/689) Enable CancunTime and PragueTime in chain config migration. From 034803df81c7aae4d097a346b2c3c5ca704f45ea Mon Sep 17 00:00:00 2001 From: Xinyu <91446598+XinyuCRO@users.noreply.github.com> Date: Tue, 9 Sep 2025 18:23:34 +0800 Subject: [PATCH 153/210] feat(RPC): add authorizationList from `eth_getTransactionByHash` response for EIP-7702 transactions (#725) * feat(RPC): add authorizationList from eth_getTransactionByHash result * test: unit * fix: tests * fix: coverage * doc: changelog * fix: review --- CHANGELOG.md | 4 + rpc/backend/tx_info_test.go | 113 ++++++++ rpc/types/types.go | 40 +-- rpc/types/utils.go | 19 +- rpc/types/utils_test.go | 289 ++++++++++++++++++++ tests/integration_tests/test_set_code_tx.py | 103 ++++++- 6 files changed, 539 insertions(+), 29 deletions(-) create mode 100644 rpc/types/utils_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index d2182d2dec..58a32e4ec7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ # Changelog +## Unreleased + +* (evm) [#725](https://github.com/crypto-org-chain/ethermint/pull/725) feat(RPC): add authorizationList from eth_getTransactionByHash response for EIP-7702 transactions + ## [v0.22.0] - 2025-08-12 * (geth) [#665](https://github.com/crypto-org-chain/ethermint/pull/665) Update go-ethereum version to [`v1.15.11`](https://github.com/ethereum/go-ethereum/releases/tag/v1.15.11). diff --git a/rpc/backend/tx_info_test.go b/rpc/backend/tx_info_test.go index afb8aa36c5..4b429dfdae 100644 --- a/rpc/backend/tx_info_test.go +++ b/rpc/backend/tx_info_test.go @@ -12,11 +12,13 @@ import ( dbm "github.com/cosmos/cosmos-db" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" + ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/evmos/ethermint/indexer" "github.com/evmos/ethermint/rpc/backend/mocks" rpctypes "github.com/evmos/ethermint/rpc/types" ethermint "github.com/evmos/ethermint/types" evmtypes "github.com/evmos/ethermint/x/evm/types" + "github.com/holiman/uint256" "google.golang.org/grpc/metadata" ) @@ -648,3 +650,114 @@ func (suite *BackendTestSuite) TestGetGasUsed() { }) } } + +func (suite *BackendTestSuite) TestGetTransactionByHash_SetCodeTxType() { + msgSetCodeTx := suite.buildSetCodeTx() + txBz := suite.signAndEncodeEthTx(msgSetCodeTx) + txHash := msgSetCodeTx.Hash() + block := &types.Block{Header: types.Header{Height: 1, ChainID: "test"}, Data: types.Data{Txs: []types.Tx{txBz}}} + responseDeliver := []*abci.ExecTxResult{ + { + Code: 0, + Events: []abci.Event{ + {Type: evmtypes.EventTypeEthereumTx, Attributes: []abci.EventAttribute{ + {Key: "ethereumTxHash", Value: txHash.Hex()}, + {Key: "txIndex", Value: "0"}, + {Key: "amount", Value: "0"}, + {Key: "txGasUsed", Value: "100000"}, + {Key: "txHash", Value: ""}, + {Key: "recipient", Value: "0x742d35cc6561c9d8f6b1b8e6e2c8b9f8f4a1e2d3"}, + }}, + }, + }, + } + + expectedRPCTx, _ := rpctypes.NewRPCTransaction(msgSetCodeTx, common.Hash{}, 0, 0, big.NewInt(1), suite.backend.chainID) + + testCases := []struct { + name string + registerMock func() + expPass bool + }{ + { + "pass - SetCodeTx transaction found and returned", + func() { + client := suite.backend.clientCtx.Client.(*mocks.Client) + queryClient := suite.backend.queryClient.QueryClient.(*mocks.EVMQueryClient) + RegisterBlock(client, 1, txBz) + RegisterBlockResults(client, 1) + RegisterBaseFee(queryClient, sdkmath.NewInt(1)) + }, + true, + }, + } + + for _, tc := range testCases { + suite.Run(tc.name, func() { + suite.SetupTest() + tc.registerMock() + + db := dbm.NewMemDB() + suite.backend.indexer = indexer.NewKVIndexer(db, tmlog.NewNopLogger(), suite.backend.clientCtx) + err := suite.backend.indexer.IndexBlock(block, responseDeliver) + suite.Require().NoError(err) + + rpcTx, err := suite.backend.GetTransactionByHash(txHash) + + if tc.expPass { + suite.Require().NoError(err) + suite.Require().NotNil(rpcTx) + + suite.Require().Equal(hexutil.Uint64(ethtypes.SetCodeTxType), rpcTx.Type) + + suite.Require().NotNil(rpcTx.GasFeeCap, "GasFeeCap should be set") + suite.Require().NotNil(rpcTx.GasTipCap, "GasTipCap should be set") + suite.Require().NotNil(rpcTx.ChainID, "ChainID should be set") + suite.Require().NotNil(rpcTx.Accesses, "AccessList should be set") + suite.Require().NotNil(rpcTx.AuthorizationList, "AuthorizationList should be set") + + suite.Require().Equal(expectedRPCTx.Type, rpcTx.Type) + suite.Require().Equal(expectedRPCTx.From, rpcTx.From) + suite.Require().Equal(expectedRPCTx.Hash, rpcTx.Hash) + } else { + suite.Require().Error(err) + } + }) + } +} + +func (suite *BackendTestSuite) buildSetCodeTx() *evmtypes.MsgEthereumTx { + auth := ethtypes.SetCodeAuthorization{ + ChainID: *uint256.MustFromBig(suite.backend.chainID), + Address: common.HexToAddress("0x4Cd241E8d1510e30b2076397afc7508Ae59C66c9"), + Nonce: 1, + V: uint8(27), + R: *uint256.NewInt(1), + S: *uint256.NewInt(1), + } + + setCodeTx := ðtypes.SetCodeTx{ + ChainID: uint256.MustFromBig(suite.backend.chainID), + Nonce: 0, + GasTipCap: uint256.NewInt(10000), + GasFeeCap: uint256.NewInt(1000000000000), + Gas: 100000, + To: common.HexToAddress("0x742d35cc6561c9d8f6b1b8e6e2c8b9f8f4a1e2d3"), + Value: uint256.NewInt(0), + Data: []byte{}, + AccessList: ethtypes.AccessList{}, + AuthList: []ethtypes.SetCodeAuthorization{auth}, + V: uint256.NewInt(1), + R: uint256.NewInt(1), + S: uint256.NewInt(1), + } + + ethTx := ethtypes.NewTx(setCodeTx) + msgEthereumTx := &evmtypes.MsgEthereumTx{} + err := msgEthereumTx.FromSignedEthereumTx(ethTx, ethtypes.LatestSignerForChainID(suite.backend.chainID)) + suite.Require().NoError(err) + + msgEthereumTx.From = suite.signerAddress + + return msgEthereumTx +} diff --git a/rpc/types/types.go b/rpc/types/types.go index 8519298064..f7c5dae0f5 100644 --- a/rpc/types/types.go +++ b/rpc/types/types.go @@ -53,25 +53,27 @@ type StorageResult struct { // RPCTransaction represents a transaction that will serialize to the RPC representation of a transaction type RPCTransaction struct { - BlockHash *common.Hash `json:"blockHash"` - BlockNumber *hexutil.Big `json:"blockNumber"` - From common.Address `json:"from"` - Gas hexutil.Uint64 `json:"gas"` - GasPrice *hexutil.Big `json:"gasPrice"` - GasFeeCap *hexutil.Big `json:"maxFeePerGas,omitempty"` - GasTipCap *hexutil.Big `json:"maxPriorityFeePerGas,omitempty"` - Hash common.Hash `json:"hash"` - Input hexutil.Bytes `json:"input"` - Nonce hexutil.Uint64 `json:"nonce"` - To *common.Address `json:"to"` - TransactionIndex *hexutil.Uint64 `json:"transactionIndex"` - Value *hexutil.Big `json:"value"` - Type hexutil.Uint64 `json:"type"` - Accesses *ethtypes.AccessList `json:"accessList,omitempty"` - ChainID *hexutil.Big `json:"chainId,omitempty"` - V *hexutil.Big `json:"v"` - R *hexutil.Big `json:"r"` - S *hexutil.Big `json:"s"` + BlockHash *common.Hash `json:"blockHash"` + BlockNumber *hexutil.Big `json:"blockNumber"` + From common.Address `json:"from"` + Gas hexutil.Uint64 `json:"gas"` + GasPrice *hexutil.Big `json:"gasPrice"` + GasFeeCap *hexutil.Big `json:"maxFeePerGas,omitempty"` + GasTipCap *hexutil.Big `json:"maxPriorityFeePerGas,omitempty"` + Hash common.Hash `json:"hash"` + Input hexutil.Bytes `json:"input"` + Nonce hexutil.Uint64 `json:"nonce"` + To *common.Address `json:"to"` + TransactionIndex *hexutil.Uint64 `json:"transactionIndex"` + Value *hexutil.Big `json:"value"` + Type hexutil.Uint64 `json:"type"` + Accesses *ethtypes.AccessList `json:"accessList,omitempty"` + ChainID *hexutil.Big `json:"chainId,omitempty"` + AuthorizationList []ethtypes.SetCodeAuthorization `json:"authorizationList,omitempty"` + V *hexutil.Big `json:"v"` + R *hexutil.Big `json:"r"` + S *hexutil.Big `json:"s"` + YParity *hexutil.Uint64 `json:"yParity,omitempty"` } // StateOverride is the collection of overridden accounts. diff --git a/rpc/types/utils.go b/rpc/types/utils.go index 33971a99f7..6e7ffddd38 100644 --- a/rpc/types/utils.go +++ b/rpc/types/utils.go @@ -240,25 +240,42 @@ func NewRPCTransaction( result.BlockNumber = (*hexutil.Big)(new(big.Int).SetUint64(blockNumber)) result.TransactionIndex = (*hexutil.Uint64)(&index) } + yparity := hexutil.Uint64(v.Sign()) //#nosec G115 switch tx.Type() { case ethtypes.AccessListTxType: al := tx.AccessList() result.Accesses = &al result.ChainID = (*hexutil.Big)(tx.ChainId()) + result.YParity = &yparity case ethtypes.DynamicFeeTxType: al := tx.AccessList() result.Accesses = &al result.ChainID = (*hexutil.Big)(tx.ChainId()) + result.YParity = &yparity result.GasFeeCap = (*hexutil.Big)(tx.GasFeeCap()) result.GasTipCap = (*hexutil.Big)(tx.GasTipCap()) // if the transaction has been mined, compute the effective gas price if baseFee != nil && blockHash != (common.Hash{}) { - // price = min(tip, gasFeeCap - baseFee) + baseFee + // price = min(tip + baseFee, gasFeeCap) price := ethermint.BigMin(new(big.Int).Add(tx.GasTipCap(), baseFee), tx.GasFeeCap()) result.GasPrice = (*hexutil.Big)(price) } else { result.GasPrice = (*hexutil.Big)(tx.GasFeeCap()) } + case ethtypes.SetCodeTxType: + al := tx.AccessList() + result.Accesses = &al + result.ChainID = (*hexutil.Big)(tx.ChainId()) + result.YParity = &yparity + result.GasFeeCap = (*hexutil.Big)(tx.GasFeeCap()) + result.GasTipCap = (*hexutil.Big)(tx.GasTipCap()) + if baseFee != nil && blockHash != (common.Hash{}) { + price := ethermint.BigMin(new(big.Int).Add(tx.GasTipCap(), baseFee), tx.GasFeeCap()) + result.GasPrice = (*hexutil.Big)(price) + } else { + result.GasPrice = (*hexutil.Big)(tx.GasFeeCap()) + } + result.AuthorizationList = tx.SetCodeAuthorizations() } return result, nil } diff --git a/rpc/types/utils_test.go b/rpc/types/utils_test.go new file mode 100644 index 0000000000..648fe14028 --- /dev/null +++ b/rpc/types/utils_test.go @@ -0,0 +1,289 @@ +package types + +import ( + "math/big" + "testing" + + "github.com/cosmos/cosmos-sdk/crypto/keyring" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + ethtypes "github.com/ethereum/go-ethereum/core/types" + "github.com/evmos/ethermint/crypto/ethsecp256k1" + "github.com/evmos/ethermint/tests" + evmtypes "github.com/evmos/ethermint/x/evm/types" + "github.com/holiman/uint256" + "github.com/stretchr/testify/require" +) + +var ( + testChainID = big.NewInt(9000) + testAddress = common.HexToAddress("0x1234567890123456789012345678901234567890") + testBlockHash = common.HexToHash("0xa9d32b77fbfe2f9310b9eb8a29138b95ca3da6b04a4432e1d14c360644a9b8c7") + testSigner keyring.Signer + testFromAddr common.Address +) + +func init() { + privKey, _ := ethsecp256k1.GenerateKey() + testSigner = tests.NewSigner(privKey) + testFromAddr = common.BytesToAddress(privKey.PubKey().Address().Bytes()) +} + +func buildLegacyTx(t *testing.T) *evmtypes.MsgEthereumTx { + tx := evmtypes.NewTx( + testChainID, + 0, + &testAddress, + big.NewInt(1000), + 100000, + big.NewInt(1000000000), + nil, + nil, + nil, + nil, + ) + tx.From = testFromAddr.Bytes() + + err := tx.Sign(ethtypes.LatestSignerForChainID(testChainID), testSigner) + require.NoError(t, err) + + return tx +} + +func buildDynamicFeeTx(t *testing.T) *evmtypes.MsgEthereumTx { + tx := evmtypes.NewTx( + testChainID, + 1, + &testAddress, + big.NewInt(2000), + 120000, + nil, + big.NewInt(2000000000), + big.NewInt(1000000000), + []byte("test data"), + ðtypes.AccessList{}, + ) + tx.From = testFromAddr.Bytes() + + err := tx.Sign(ethtypes.LatestSignerForChainID(testChainID), testSigner) + require.NoError(t, err) + + return tx +} + +func buildSetCodeTx(t *testing.T) *evmtypes.MsgEthereumTx { + auth := ethtypes.SetCodeAuthorization{ + ChainID: *uint256.MustFromBig(testChainID), + Address: testAddress, + Nonce: 1, + V: uint8(27), + R: *uint256.NewInt(1), + S: *uint256.NewInt(1), + } + + setCodeTx := ðtypes.SetCodeTx{ + ChainID: uint256.MustFromBig(testChainID), + Nonce: 2, + GasTipCap: uint256.NewInt(1000000000), + GasFeeCap: uint256.NewInt(2000000000), + Gas: 100000, + To: testAddress, + Value: uint256.NewInt(3000), + Data: []byte("setcode data"), + AccessList: ethtypes.AccessList{}, + AuthList: []ethtypes.SetCodeAuthorization{auth}, + V: uint256.NewInt(1), + R: uint256.NewInt(1), + S: uint256.NewInt(1), + } + + ethTx := ethtypes.NewTx(setCodeTx) + msgEthereumTx := &evmtypes.MsgEthereumTx{} + err := msgEthereumTx.FromSignedEthereumTx(ethTx, ethtypes.LatestSignerForChainID(testChainID)) + require.NoError(t, err) + + msgEthereumTx.From = testFromAddr.Bytes() + return msgEthereumTx +} + +func TestNewRPCTransaction(t *testing.T) { + testCases := []struct { + name string + setupTx func() *evmtypes.MsgEthereumTx + blockHash common.Hash + blockNumber uint64 + index uint64 + baseFee *big.Int + chainID *big.Int + expectError bool + validateResult func(t *testing.T, result *RPCTransaction) + }{ + { + name: "Legacy transaction - pending", + setupTx: func() *evmtypes.MsgEthereumTx { return buildLegacyTx(t) }, + blockHash: common.Hash{}, + blockNumber: 0, + index: 0, + baseFee: nil, + chainID: testChainID, + expectError: false, + validateResult: func(t *testing.T, result *RPCTransaction) { + require.Equal(t, hexutil.Uint64(ethtypes.LegacyTxType), result.Type) + require.Equal(t, testFromAddr, result.From) + require.Equal(t, &testAddress, result.To) + require.Equal(t, (*hexutil.Big)(big.NewInt(1000)), result.Value) + require.Equal(t, hexutil.Uint64(100000), result.Gas) + require.Equal(t, (*hexutil.Big)(big.NewInt(1000000000)), result.GasPrice) + require.Nil(t, result.BlockHash) + require.Nil(t, result.BlockNumber) + require.Nil(t, result.TransactionIndex) + require.Nil(t, result.Accesses) + require.Nil(t, result.GasFeeCap) + require.Nil(t, result.GasTipCap) + }, + }, + { + name: "Legacy transaction - mined", + setupTx: func() *evmtypes.MsgEthereumTx { return buildLegacyTx(t) }, + blockHash: testBlockHash, + blockNumber: 100, + index: 5, + baseFee: big.NewInt(500000000), + chainID: testChainID, + expectError: false, + validateResult: func(t *testing.T, result *RPCTransaction) { + require.Equal(t, hexutil.Uint64(ethtypes.LegacyTxType), result.Type) + require.Equal(t, &testBlockHash, result.BlockHash) + require.Equal(t, (*hexutil.Big)(big.NewInt(100)), result.BlockNumber) + idx := hexutil.Uint64(5) + require.Equal(t, &idx, result.TransactionIndex) + }, + }, + { + name: "Dynamic fee transaction - pending", + setupTx: func() *evmtypes.MsgEthereumTx { return buildDynamicFeeTx(t) }, + blockHash: common.Hash{}, + blockNumber: 0, + index: 0, + baseFee: nil, + chainID: testChainID, + expectError: false, + validateResult: func(t *testing.T, result *RPCTransaction) { + require.Equal(t, hexutil.Uint64(ethtypes.DynamicFeeTxType), result.Type) + require.Equal(t, testFromAddr, result.From) + require.Equal(t, &testAddress, result.To) + require.Equal(t, (*hexutil.Big)(big.NewInt(2000)), result.Value) + require.Equal(t, hexutil.Uint64(120000), result.Gas) + require.Equal(t, (*hexutil.Big)(big.NewInt(2000000000)), result.GasFeeCap) + require.Equal(t, (*hexutil.Big)(big.NewInt(1000000000)), result.GasTipCap) + require.NotNil(t, result.Accesses) + require.NotNil(t, result.YParity) + require.Equal(t, hexutil.Bytes([]byte("test data")), result.Input) + }, + }, + { + name: "Dynamic fee transaction - mined with baseFee", + setupTx: func() *evmtypes.MsgEthereumTx { return buildDynamicFeeTx(t) }, + blockHash: testBlockHash, + blockNumber: 200, + index: 3, + baseFee: big.NewInt(500000000), + chainID: testChainID, + expectError: false, + validateResult: func(t *testing.T, result *RPCTransaction) { + require.Equal(t, hexutil.Uint64(ethtypes.DynamicFeeTxType), result.Type) + expectedPrice := big.NewInt(1500000000) + require.Equal(t, (*hexutil.Big)(expectedPrice), result.GasPrice) + require.Equal(t, &testBlockHash, result.BlockHash) + }, + }, + { + name: "SetCode transaction - pending", + setupTx: func() *evmtypes.MsgEthereumTx { return buildSetCodeTx(t) }, + blockHash: common.Hash{}, + blockNumber: 0, + index: 0, + baseFee: nil, + chainID: testChainID, + expectError: false, + validateResult: func(t *testing.T, result *RPCTransaction) { + require.Equal(t, hexutil.Uint64(ethtypes.SetCodeTxType), result.Type) + require.Equal(t, testFromAddr, result.From) + require.Equal(t, &testAddress, result.To) + require.Equal(t, (*hexutil.Big)(big.NewInt(3000)), result.Value) + require.Equal(t, hexutil.Uint64(100000), result.Gas) + require.Equal(t, (*hexutil.Big)(big.NewInt(2000000000)), result.GasFeeCap) + require.Equal(t, (*hexutil.Big)(big.NewInt(1000000000)), result.GasTipCap) + require.NotNil(t, result.Accesses) + require.NotNil(t, result.YParity) + require.NotNil(t, result.AuthorizationList) + require.Len(t, result.AuthorizationList, 1) + auth := result.AuthorizationList[0] + require.Equal(t, testAddress, auth.Address) + require.Equal(t, *uint256.MustFromBig(testChainID), auth.ChainID) + require.Equal(t, uint64(1), auth.Nonce) + require.Equal(t, uint8(27), auth.V) + require.Equal(t, *uint256.NewInt(1), auth.R) + require.Equal(t, *uint256.NewInt(1), auth.S) + require.Equal(t, hexutil.Bytes([]byte("setcode data")), result.Input) + }, + }, + { + name: "SetCode transaction - mined with baseFee", + setupTx: func() *evmtypes.MsgEthereumTx { return buildSetCodeTx(t) }, + blockHash: testBlockHash, + blockNumber: 300, + index: 7, + baseFee: big.NewInt(800000000), + chainID: testChainID, + expectError: false, + validateResult: func(t *testing.T, result *RPCTransaction) { + require.Equal(t, hexutil.Uint64(ethtypes.SetCodeTxType), result.Type) + expectedPrice := big.NewInt(1800000000) + require.Equal(t, (*hexutil.Big)(expectedPrice), result.GasPrice) + require.Equal(t, &testBlockHash, result.BlockHash) + require.NotNil(t, result.AuthorizationList) + require.Len(t, result.AuthorizationList, 1) + auth := result.AuthorizationList[0] + require.Equal(t, testAddress, auth.Address) + require.Equal(t, *uint256.MustFromBig(testChainID), auth.ChainID) + require.Equal(t, uint64(1), auth.Nonce) + require.Equal(t, uint8(27), auth.V) + require.Equal(t, *uint256.NewInt(1), auth.R) + require.Equal(t, *uint256.NewInt(1), auth.S) + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + msg := tc.setupTx() + + result, err := NewRPCTransaction( + msg, + tc.blockHash, + tc.blockNumber, + tc.index, + tc.baseFee, + tc.chainID, + ) + + if tc.expectError { + require.Error(t, err) + require.Nil(t, result) + } else { + require.NoError(t, err) + require.NotNil(t, result) + + require.NotEmpty(t, result.Hash) + require.NotNil(t, result.V) + require.NotNil(t, result.R) + require.NotNil(t, result.S) + + if tc.validateResult != nil { + tc.validateResult(t, result) + } + } + }) + } +} diff --git a/tests/integration_tests/test_set_code_tx.py b/tests/integration_tests/test_set_code_tx.py index acb11ed748..da5c527eb4 100644 --- a/tests/integration_tests/test_set_code_tx.py +++ b/tests/integration_tests/test_set_code_tx.py @@ -2,6 +2,9 @@ from pathlib import Path import pytest +from eth_account import Account +from eth_account.typed_transactions.set_code_transaction import Authorization +from eth_utils import to_canonical_address from hexbytes import HexBytes from web3 import Web3, exceptions @@ -318,6 +321,88 @@ def process(w3): assert res[0]["type"] == res[-1]["type"] == 4, res +def recover_auth(auth_item): + + chain_id = auth_item["chainId"] + code_address = to_canonical_address(auth_item["address"]) + nonce = auth_item["nonce"] + + unsigned_authorization = Authorization(chain_id, code_address, nonce) + authorization_hash = unsigned_authorization.hash() + + v = auth_item["yParity"] + r = auth_item["r"] + s = auth_item["s"] + + return Account._recover_hash(authorization_hash, vrs=(v, r, s)) + + +def test_set_code_tx_get_transaction_by_hash(ethermint, geth): + acc = derive_new_account(n=3) + + def process(w3): + target_acc = derive_new_account(n=4) + fund_acc(w3, acc) + + chain_id = w3.eth.chain_id + nonce = w3.eth.get_transaction_count(acc.address) + + auth_addr = target_acc.address + auth = { + "chainId": chain_id, + "address": auth_addr, + "nonce": nonce + 1, + } + signed_auth = acc.sign_authorization(auth) + + setcode_tx = { + "chainId": chain_id, + "type": 4, + "to": acc.address, + "value": 0, + "gas": 100000, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": nonce, + "authorizationList": [signed_auth], + } + + signed_tx = acc.sign_transaction(setcode_tx) + tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction) + receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=30) + + assert receipt.status == 1, f"transaction failed: {receipt}" + + code = w3.eth.get_code(acc.address, "latest") + expected_code = HexBytes(address_to_delegation(auth_addr)) + assert ( + code == expected_code + ), f"code incorrect: got {Web3.to_hex(code)}, want {expected_code}" + + tx = w3.eth.get_transaction(tx_hash) + + return tx + + providers = [ethermint.w3, geth.w3] + with ThreadPoolExecutor(len(providers)) as exec: + tasks = [exec.submit(process, w3) for w3 in providers] + res = [future.result() for future in as_completed(tasks)] + assert len(res) == len(providers) + auth_list0 = res[0]["authorizationList"][0] + auth_list1 = res[1]["authorizationList"][0] + assert len(auth_list0) == len(auth_list1) + assert auth_list0["chainId"] == auth_list1["chainId"] + assert auth_list0["address"] == auth_list1["address"] + auth_0_addr = recover_auth(auth_list0) + auth_1_addr = recover_auth(auth_list1) + + assert auth_0_addr == auth_1_addr == acc.address, ( + f"auth_0_addr: {auth_0_addr}, " + f"auth_1_addr: {auth_1_addr}, " + f"acc.address: {acc.address}" + ) + + def test_set_code_tx_signature_invalid(ethermint, geth): def process(w3): acc = derive_new_account(n=3) @@ -544,14 +629,14 @@ def test_set_code_tx_delegate_auth_call_using_different_account(cluster): assert code == expected_code_hex, f"Expected code {expected_code_hex}, got {code}" new_auth_nonce = w3.eth.get_transaction_count(auth_account.address) - assert new_auth_nonce == auth_nonce + 1, ( - f"Expected auth_account nonce {auth_nonce + 1}, got {new_auth_nonce}" - ) + assert ( + new_auth_nonce == auth_nonce + 1 + ), f"Expected auth_account nonce {auth_nonce + 1}, got {new_auth_nonce}" new_sender_nonce = w3.eth.get_transaction_count(sender_account.address) - assert new_sender_nonce == sender_nonce + 1, ( - f"Expected sender_account nonce {sender_nonce + 1}, got {new_sender_nonce}" - ) + assert ( + new_sender_nonce == sender_nonce + 1 + ), f"Expected sender_account nonce {sender_nonce + 1}, got {new_sender_nonce}" def generate_signed_auth(w3, acc, delegate_addr, nonce): @@ -616,6 +701,6 @@ def test_set_code_tx_revoke_delegation(cluster): code = w3.eth.get_code(acc.address, "latest") expected_code = "0x" - assert Web3.to_hex(code) == expected_code, ( - f"Expected code {expected_code}, got {Web3.to_hex(code)}" - ) + assert ( + Web3.to_hex(code) == expected_code + ), f"Expected code {expected_code}, got {Web3.to_hex(code)}" From 83eda58c88ad7ff79ddf4558261759072e1d0249 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 04:32:02 +0000 Subject: [PATCH 154/210] build(deps): bump github.com/spf13/viper from 1.20.1 to 1.21.0 (#730) * build(deps): bump github.com/spf13/viper from 1.20.1 to 1.21.0 Bumps [github.com/spf13/viper](https://github.com/spf13/viper) from 1.20.1 to 1.21.0. - [Release notes](https://github.com/spf13/viper/releases) - [Commits](https://github.com/spf13/viper/compare/v1.20.1...v1.21.0) --- updated-dependencies: - dependency-name: github.com/spf13/viper dependency-version: 1.21.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * update gomod2nix --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas Nguy --- go.mod | 13 ++++++------- go.sum | 25 ++++++++++++------------- gomod2nix.toml | 27 ++++++++++++--------------- 3 files changed, 30 insertions(+), 35 deletions(-) diff --git a/go.mod b/go.mod index aca43714a1..9cc3c5c8c9 100644 --- a/go.mod +++ b/go.mod @@ -41,9 +41,9 @@ require ( github.com/onsi/gomega v1.38.2 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 - github.com/spf13/cast v1.9.2 + github.com/spf13/cast v1.10.0 github.com/spf13/cobra v1.9.1 - github.com/spf13/viper v1.20.1 + github.com/spf13/viper v1.21.0 github.com/status-im/keycard-go v0.3.3 github.com/stretchr/testify v1.11.1 github.com/tidwall/gjson v1.18.0 @@ -222,12 +222,12 @@ require ( github.com/rivo/uniseg v0.2.0 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/zerolog v1.34.0 // indirect - github.com/sagikazarmark/locafero v0.7.0 // indirect + github.com/sagikazarmark/locafero v0.11.0 // indirect github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect - github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.12.0 // indirect - github.com/spf13/pflag v1.0.6 // indirect + github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect + github.com/spf13/afero v1.15.0 // indirect + github.com/spf13/pflag v1.0.10 // indirect github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect @@ -256,7 +256,6 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect - go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.17.0 // indirect diff --git a/go.sum b/go.sum index 19a8aab780..f0be934afa 100644 --- a/go.sum +++ b/go.sum @@ -1603,8 +1603,8 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= -github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= +github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= +github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= @@ -1622,25 +1622,26 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= -github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= -github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= -github.com/spf13/cast v1.9.2 h1:SsGfm7M8QOFtEzumm7UZrZdLLquNdzFYfIbEXntcFbE= -github.com/spf13/cast v1.9.2/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= +github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= +github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= -github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= +github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/status-im/keycard-go v0.3.3 h1:qk/JHSkT9sMka+lVXrTOIVSgHIY7lDm46wrUqTsNa4s= @@ -1775,8 +1776,6 @@ go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= diff --git a/gomod2nix.toml b/gomod2nix.toml index af77f1a543..fcac1666eb 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -611,8 +611,8 @@ schema = 3 version = "v1.34.0" hash = "sha256-M503WwzPvqbOas3f70FQNXoWG17eV/XU6FubtB6P0uo=" [mod."github.com/sagikazarmark/locafero"] - version = "v0.7.0" - hash = "sha256-ZmaGOKHDw18jJqdkwQwSpUT11F9toR6KPs3241TONeY=" + version = "v0.11.0" + hash = "sha256-PUX8dzJtkD8YDZFNqpHnl4qgb0tE1W/DLnL7V+/d1z4=" [mod."github.com/sasha-s/go-deadlock"] version = "v0.3.5" hash = "sha256-1vyxWqOTVVVeodipm/tpDgRKUMkEdkoLWSgtiVZaZmw=" @@ -620,23 +620,23 @@ schema = 3 version = "v3.21.4-0.20210419000835-c7a38de76ee5+incompatible" hash = "sha256-oqIqyFquWabIE6DID6uTEc8oFEmM1rVu2ATn3toiCEg=" [mod."github.com/sourcegraph/conc"] - version = "v0.3.0" - hash = "sha256-mIdMs9MLAOBKf3/0quf1iI3v8uNWydy7ae5MFa+F2Ko=" + version = "v0.3.1-0.20240121214520-5f936abd7ae8" + hash = "sha256-AUNFlY6K7s1aoW/vb4pjK84ROdnVZY1i6cOmdeG+wN8=" [mod."github.com/spf13/afero"] - version = "v1.12.0" - hash = "sha256-TX3DcyAdrXqf+TxmEz4TilWQo2Y4hcBXOeRY6BjDp+s=" + version = "v1.15.0" + hash = "sha256-LhcezbOqfuBzacytbqck0hNUxi6NbWNhifUc5/9uHQ8=" [mod."github.com/spf13/cast"] - version = "v1.9.2" - hash = "sha256-B+Nw/DDgWR0NV6J6EO2oOahw75qbjLtV8Tm3wrN5NDw=" + version = "v1.10.0" + hash = "sha256-dQ6Qqf26IZsa6XsGKP7GDuCj+WmSsBmkBwGTDfue/rk=" [mod."github.com/spf13/cobra"] version = "v1.9.1" hash = "sha256-dzEqquABE3UqZmJuj99244QjvfojS8cFlsPr/MXQGj0=" [mod."github.com/spf13/pflag"] - version = "v1.0.6" - hash = "sha256-NjrK0FZPIfO/p2xtL1J7fOBQNTZAPZOC6Cb4aMMvhxI=" + version = "v1.0.10" + hash = "sha256-uDPnWjHpSrzXr17KEYEA1yAbizfcsfo5AyztY2tS6ZU=" [mod."github.com/spf13/viper"] - version = "v1.20.1" - hash = "sha256-gbCM0k7RAlvn7jpSuWB2LX5Nip9vgwsPNGbDXTI7JvM=" + version = "v1.21.0" + hash = "sha256-A9A8i7HH/ge4j3hw7G++HNj8BjhhpZKvxHhfY+QAxkI=" [mod."github.com/spiffe/go-spiffe/v2"] version = "v2.5.0" hash = "sha256-FPtPVF4+MF+Ybe9NI58i5mnGILvTKadk8JSZJQ8gD6s=" @@ -738,9 +738,6 @@ schema = 3 [mod."go.uber.org/automaxprocs"] version = "v1.6.0" hash = "sha256-a/Agm+kM9x+VRo0CYyTL3ipUYv9Glrc4NeGSZJdpobA=" - [mod."go.uber.org/multierr"] - version = "v1.11.0" - hash = "sha256-Lb6rHHfR62Ozg2j2JZy3MKOMKdsfzd1IYTR57r3Mhp0=" [mod."go.yaml.in/yaml/v2"] version = "v2.4.2" hash = "sha256-oC8RWdf1zbMYCtmR0ATy/kCkhIwPR9UqFZSMOKLVF/A=" From dede5d2db223f36ee78491e7fcd482c9def4e5fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Sep 2025 13:14:27 +0800 Subject: [PATCH 155/210] build(deps): bump actions/stale from 9 to 10 (#720) Bumps [actions/stale](https://github.com/actions/stale) from 9 to 10. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/v9...v10) --- updated-dependencies: - dependency-name: actions/stale dependency-version: '10' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: songgaoye --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 2f24723d67..33542032d8 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -7,7 +7,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-pr-message: "This pull request has been automatically marked as stale because it has not had From 04061da480186adf7595993c779631c55d1ab471 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 02:20:23 +0000 Subject: [PATCH 156/210] build(deps): bump google.golang.org/protobuf from 1.36.8 to 1.36.9 (#732) * build(deps): bump google.golang.org/protobuf from 1.36.8 to 1.36.9 Bumps google.golang.org/protobuf from 1.36.8 to 1.36.9. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-version: 1.36.9 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * update gomod2nix --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas Nguy --- go.mod | 2 +- go.sum | 4 ++-- gomod2nix.toml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 9cc3c5c8c9..0bc48f5500 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,7 @@ require ( golang.org/x/text v0.28.0 google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.8 + google.golang.org/protobuf v1.36.9 sigs.k8s.io/yaml v1.6.0 ) diff --git a/go.sum b/go.sum index f0be934afa..c755c842d2 100644 --- a/go.sum +++ b/go.sum @@ -2541,8 +2541,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/gomod2nix.toml b/gomod2nix.toml index fcac1666eb..91fd7f3c60 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -793,8 +793,8 @@ schema = 3 version = "v1.75.0" hash = "sha256-bMJEB2luUeYWwsQWqzuq4Wro2tTKBWGJPuTtzioJcfM=" [mod."google.golang.org/protobuf"] - version = "v1.36.8" - hash = "sha256-yZN8ZON0b5HjUNUSubHst7zbvnMsOzd81tDPYQRtPgM=" + version = "v1.36.9" + hash = "sha256-i4zQhGFR6KprA5elLw33bA1VdMLAnL+Du3gBmrea+3Y=" [mod."gopkg.in/yaml.v3"] version = "v3.0.1" hash = "sha256-FqL9TKYJ0XkNwJFnq9j0VvJ5ZUU1RvH/52h/f5bkYAU=" From 219e0f22035efbc2747639c5f2364563eef9c94f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 04:19:59 +0000 Subject: [PATCH 157/210] build(deps): bump github.com/onsi/ginkgo/v2 from 2.25.1 to 2.25.3 (#724) * build(deps): bump github.com/onsi/ginkgo/v2 from 2.25.1 to 2.25.3 Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.25.1 to 2.25.3. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.25.1...v2.25.3) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-version: 2.25.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * update gomod2nix --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas Nguy --- go.mod | 2 +- go.sum | 4 ++-- gomod2nix.toml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 0bc48f5500..150d96fca4 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/hashicorp/go-metrics v0.5.4 github.com/holiman/uint256 v1.3.2 github.com/improbable-eng/grpc-web v0.15.0 - github.com/onsi/ginkgo/v2 v2.25.1 + github.com/onsi/ginkgo/v2 v2.25.3 github.com/onsi/gomega v1.38.2 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 diff --git a/go.sum b/go.sum index c755c842d2..803fa2cd34 100644 --- a/go.sum +++ b/go.sum @@ -1473,8 +1473,8 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.25.1 h1:Fwp6crTREKM+oA6Cz4MsO8RhKQzs2/gOIVOUscMAfZY= -github.com/onsi/ginkgo/v2 v2.25.1/go.mod h1:ppTWQ1dh9KM/F1XgpeRqelR+zHVwV81DGRSDnFxK7Sk= +github.com/onsi/ginkgo/v2 v2.25.3 h1:Ty8+Yi/ayDAGtk4XxmmfUy4GabvM+MegeB4cDLRi6nw= +github.com/onsi/ginkgo/v2 v2.25.3/go.mod h1:43uiyQC4Ed2tkOzLsEYm7hnrb7UJTWHYNsuy3bG/snE= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= diff --git a/gomod2nix.toml b/gomod2nix.toml index 91fd7f3c60..2f34a44009 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -548,8 +548,8 @@ schema = 3 version = "v0.0.5" hash = "sha256-/5i70IkH/qSW5KjGzv8aQNKh9tHoz98tqtL0K2DMFn4=" [mod."github.com/onsi/ginkgo/v2"] - version = "v2.25.1" - hash = "sha256-nBIe6GhEBn2g7/BzkzNHynfUf+Dm+b3rkN/yW7WB8vQ=" + version = "v2.25.3" + hash = "sha256-JHDyNg2KVJorSO2LPXNKZSNRnd3qpP0OsfX2FuW6qsY=" [mod."github.com/onsi/gomega"] version = "v1.38.2" hash = "sha256-chit6Aia8qLfUfn/2stQmXG/nqM13fDN7edfixXBFsM=" From 702081739774e65449efb47d6c100266c2dd0a85 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 05:03:07 +0000 Subject: [PATCH 158/210] build(deps): bump google.golang.org/grpc from 1.75.0 to 1.75.1 (#734) * build(deps): bump google.golang.org/grpc from 1.75.0 to 1.75.1 Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.75.0 to 1.75.1. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.75.0...v1.75.1) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-version: 1.75.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * update gonod2nix --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas Nguy --- go.mod | 2 +- go.sum | 4 ++-- gomod2nix.toml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 150d96fca4..b542b09e1c 100644 --- a/go.mod +++ b/go.mod @@ -53,7 +53,7 @@ require ( golang.org/x/sync v0.16.0 golang.org/x/text v0.28.0 google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 - google.golang.org/grpc v1.75.0 + google.golang.org/grpc v1.75.1 google.golang.org/protobuf v1.36.9 sigs.k8s.io/yaml v1.6.0 ) diff --git a/go.sum b/go.sum index 803fa2cd34..9d04b6d738 100644 --- a/go.sum +++ b/go.sum @@ -2520,8 +2520,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= diff --git a/gomod2nix.toml b/gomod2nix.toml index 2f34a44009..265a82cf65 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -790,8 +790,8 @@ schema = 3 version = "v0.0.0-20250707201910-8d1bb00bc6a7" hash = "sha256-WK7iDtAhH19NPe3TywTQlGjDawNaDKWnxhFL9PgVUwM=" [mod."google.golang.org/grpc"] - version = "v1.75.0" - hash = "sha256-bMJEB2luUeYWwsQWqzuq4Wro2tTKBWGJPuTtzioJcfM=" + version = "v1.75.1" + hash = "sha256-t5w9BLW8P3SuxHRSAqsVBn8kddzCDKVijh4oxatLIps=" [mod."google.golang.org/protobuf"] version = "v1.36.9" hash = "sha256-i4zQhGFR6KprA5elLw33bA1VdMLAnL+Du3gBmrea+3Y=" From 5f503547d2a0bcf12df0c054e3b5ca1e41d14cf5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 14:29:44 +0800 Subject: [PATCH 159/210] build(deps): bump github.com/spf13/cobra from 1.9.1 to 1.10.1 (#718) Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.9.1 to 1.10.1. - [Release notes](https://github.com/spf13/cobra/releases) - [Commits](https://github.com/spf13/cobra/compare/v1.9.1...v1.10.1) --- updated-dependencies: - dependency-name: github.com/spf13/cobra dependency-version: 1.10.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index b542b09e1c..2c64ff34de 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 github.com/spf13/cast v1.10.0 - github.com/spf13/cobra v1.9.1 + github.com/spf13/cobra v1.10.1 github.com/spf13/viper v1.21.0 github.com/status-im/keycard-go v0.3.3 github.com/stretchr/testify v1.11.1 diff --git a/go.sum b/go.sum index 9d04b6d738..127adb41d5 100644 --- a/go.sum +++ b/go.sum @@ -1633,11 +1633,11 @@ github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8 github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= From 642772292e67b3aaae2477ee3c5d3aae0f12019a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 16:44:13 +0800 Subject: [PATCH 160/210] build(deps): bump actions/setup-go from 5 to 6 (#721) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5 to 6. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: songgaoye --- .github/workflows/build.yml | 2 +- .github/workflows/dependabot-update-all.yml | 2 +- .github/workflows/dependencies-review.yml | 2 +- .github/workflows/dependencies.yml | 2 +- .github/workflows/goreleaser.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/test.yml | 14 +++++++------- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c47eb31f1c..89aadc4cdc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version: 1.21 check-latest: true diff --git a/.github/workflows/dependabot-update-all.yml b/.github/workflows/dependabot-update-all.yml index da8756ade5..9c03bebbb6 100644 --- a/.github/workflows/dependabot-update-all.yml +++ b/.github/workflows/dependabot-update-all.yml @@ -24,7 +24,7 @@ jobs: repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.event.pull_request.head.ref }} token: "${{ steps.app-token.outputs.token }}" - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version: "1.24" check-latest: true diff --git a/.github/workflows/dependencies-review.yml b/.github/workflows/dependencies-review.yml index 421cdc91e5..33a1be8569 100644 --- a/.github/workflows/dependencies-review.yml +++ b/.github/workflows/dependencies-review.yml @@ -13,7 +13,7 @@ jobs: - name: "Checkout Repository" uses: actions/checkout@v5 - name: "Setup Go" - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version: "1.24" check-latest: true diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index f4969a3659..1f7b02e00f 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -8,7 +8,7 @@ jobs: dependency-review: runs-on: ubuntu-latest steps: - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version: 1.21 check-latest: true diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 4b41204f40..caaf0ae685 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -13,7 +13,7 @@ jobs: with: submodules: true - name: Set up Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version: 1.21 check-latest: true diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e5f9a77f8a..8a8219aace 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -19,7 +19,7 @@ jobs: timeout-minutes: 10 steps: # Required: setup-go, for all versions v3.0.0+ of golangci-lint - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version: 1.21 check-latest: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f6478d970d..a502afa862 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,7 +22,7 @@ jobs: test-unit-cover: runs-on: ubuntu-latest steps: - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version: 1.21 check-latest: true @@ -49,7 +49,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version: 1.21 check-latest: true @@ -70,7 +70,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 steps: - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version: 1.21 check-latest: true @@ -152,7 +152,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 120 steps: - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version: 1.21 check-latest: true @@ -172,7 +172,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 120 steps: - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version: 1.21 check-latest: true @@ -192,7 +192,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 120 steps: - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version: 1.21 check-latest: true @@ -212,7 +212,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 120 steps: - - uses: actions/setup-go@v5 + - uses: actions/setup-go@v6 with: go-version: 1.21 check-latest: true From 967c95d295adbeee0ed83361e1e9da60a32fdd71 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Sep 2025 16:49:29 +0800 Subject: [PATCH 161/210] build(deps): bump actions/setup-node from 4 to 5 (#719) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: songgaoye --- .github/workflows/deploy-contract.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-contract.yml b/.github/workflows/deploy-contract.yml index 71d495113b..bc2869d232 100644 --- a/.github/workflows/deploy-contract.yml +++ b/.github/workflows/deploy-contract.yml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/checkout@v5 - name: Use Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: '12.x' - name: Install dependencies From c8ab73500ff6619e5a66ee0a78177ec89b93cab9 Mon Sep 17 00:00:00 2001 From: "Thomas N." <81727899+thomas-nguy@users.noreply.github.com> Date: Mon, 15 Sep 2025 19:30:26 +0900 Subject: [PATCH 162/210] fix: downgrade github.com/spf13/cobra from 1.10.1 to 1.9.1 (#737) * Revert "build(deps): bump github.com/spf13/cobra from 1.9.1 to 1.10.1 (#718)" This reverts commit 5f503547d2a0bcf12df0c054e3b5ca1e41d14cf5. * fix workflow --- .github/workflows/build.yml | 2 +- .github/workflows/dependencies.yml | 2 +- .github/workflows/goreleaser.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/test.yml | 14 +++++++------- go.mod | 2 +- go.sum | 6 +++--- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 89aadc4cdc..aff34be05d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v5 - uses: actions/setup-go@v6 with: - go-version: 1.21 + go-version: 1.23 check-latest: true - uses: technote-space/get-diff-action@v6.1.2 id: git_diff diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index 1f7b02e00f..6647aa1104 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -10,7 +10,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.21 + go-version: 1.23 check-latest: true - name: "Checkout Repository" uses: actions/checkout@v5 diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index caaf0ae685..9490b26987 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -15,7 +15,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v6 with: - go-version: 1.21 + go-version: 1.23 check-latest: true - name: release dry run run: make release-dry-run diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 8a8219aace..9d6556d78f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -21,7 +21,7 @@ jobs: # Required: setup-go, for all versions v3.0.0+ of golangci-lint - uses: actions/setup-go@v6 with: - go-version: 1.21 + go-version: 1.23 check-latest: true - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a502afa862..b403ce5b0f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.21 + go-version: 1.23 check-latest: true - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 @@ -51,7 +51,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.21 + go-version: 1.23 check-latest: true - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 @@ -72,7 +72,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.21 + go-version: 1.23 check-latest: true - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 @@ -154,7 +154,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.21 + go-version: 1.23 check-latest: true - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 @@ -174,7 +174,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.21 + go-version: 1.23 check-latest: true - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 @@ -194,7 +194,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.21 + go-version: 1.23 check-latest: true - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 @@ -214,7 +214,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.21 + go-version: 1.23 check-latest: true - uses: actions/checkout@v5 - uses: technote-space/get-diff-action@v6.1.2 diff --git a/go.mod b/go.mod index 2c64ff34de..b542b09e1c 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 github.com/spf13/cast v1.10.0 - github.com/spf13/cobra v1.10.1 + github.com/spf13/cobra v1.9.1 github.com/spf13/viper v1.21.0 github.com/status-im/keycard-go v0.3.3 github.com/stretchr/testify v1.11.1 diff --git a/go.sum b/go.sum index 127adb41d5..9d04b6d738 100644 --- a/go.sum +++ b/go.sum @@ -1633,11 +1633,11 @@ github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8 github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= From 5e3ddde1d434e4c4324b7c3383a6f95d3663da14 Mon Sep 17 00:00:00 2001 From: "Thomas N." <81727899+thomas-nguy@users.noreply.github.com> Date: Tue, 16 Sep 2025 18:14:04 +0900 Subject: [PATCH 163/210] fix: missing tx context during vm initialisation (#740) * fix: missing tx context during vm initialisation (#739) * missing context in vm * add changelog * fix changelog * test * Revert "test" This reverts commit a22363efbf2e13bea24717a33b1546ff2007fe93. * update changelog --- CHANGELOG.md | 1 + x/evm/keeper/state_transition.go | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 58a32e4ec7..af85d6a5f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased * (evm) [#725](https://github.com/crypto-org-chain/ethermint/pull/725) feat(RPC): add authorizationList from eth_getTransactionByHash response for EIP-7702 transactions +* (evm) [#740](https://github.com/crypto-org-chain/ethermint/pull/740) fix: missing tx context during vm initialisation ## [v0.22.0] - 2025-08-12 diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index a081906b0d..0ccabaedcd 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -88,6 +88,7 @@ func (k *Keeper) NewEVM( return bytes.Compare(active[i].Bytes(), active[j].Bytes()) < 0 }) evm := vm.NewEVM(blockCtx, stateDB, cfg.ChainConfig, vmConfig) + evm.SetTxContext(core.NewEVMTxContext(msg)) evm.SetPrecompiles(contracts) return evm } From dce2fb3ae6935a63de870ea285a00791dc20534d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Sep 2025 12:10:00 +0800 Subject: [PATCH 164/210] build(deps): bump actions/create-github-app-token from 2.1.1 to 2.1.4 (#738) Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2.1.1 to 2.1.4. - [Release notes](https://github.com/actions/create-github-app-token/releases) - [Commits](https://github.com/actions/create-github-app-token/compare/a8d616148505b5069dccd32f177bb87d7f39123b...67018539274d69449ef7c02e8e71183d1719ab42) --- updated-dependencies: - dependency-name: actions/create-github-app-token dependency-version: 2.1.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: randy-cro --- .github/workflows/dependabot-update-all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dependabot-update-all.yml b/.github/workflows/dependabot-update-all.yml index 9c03bebbb6..db0cdf0af7 100644 --- a/.github/workflows/dependabot-update-all.yml +++ b/.github/workflows/dependabot-update-all.yml @@ -14,7 +14,7 @@ jobs: if: ${{ github.actor == 'dependabot[bot]' }} steps: - name: Generate Token - uses: actions/create-github-app-token@a8d616148505b5069dccd32f177bb87d7f39123b # v2.1.1 + uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4 id: app-token with: app-id: "${{ secrets.APP_ID }}" From f674c513792fc06de0f877e75193701eb6d38b6e Mon Sep 17 00:00:00 2001 From: Xinyu <91446598+XinyuCRO@users.noreply.github.com> Date: Thu, 18 Sep 2025 08:44:00 +0800 Subject: [PATCH 165/210] fix: support 4byteTracer for tracer (#742) * fix: support 4byteTracer for tracer (#736) * fix: tests * fix: changelog * fix: lint * fix: test * fix: use new addr # Conflicts: # CHANGELOG.md * fix: changelog --------- Co-authored-by: randy-cro --- CHANGELOG.md | 1 + .../contracts/TestBlockTxProperties.sol | 14 +++ tests/integration_tests/test_block.py | 25 ++++- tests/integration_tests/test_tracers.py | 98 +++++++++++++++++++ x/evm/keeper/state_transition.go | 26 ++--- 5 files changed, 152 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index af85d6a5f2..d68bf5767c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#725](https://github.com/crypto-org-chain/ethermint/pull/725) feat(RPC): add authorizationList from eth_getTransactionByHash response for EIP-7702 transactions * (evm) [#740](https://github.com/crypto-org-chain/ethermint/pull/740) fix: missing tx context during vm initialisation +* (evm) [#742](https://github.com/crypto-org-chain/ethermint/pull/742) fix: prevent nil pointer dereference in tracer hooks ## [v0.22.0] - 2025-08-12 diff --git a/tests/integration_tests/hardhat/contracts/TestBlockTxProperties.sol b/tests/integration_tests/hardhat/contracts/TestBlockTxProperties.sol index 07d5b0d20d..5ea6f3397b 100644 --- a/tests/integration_tests/hardhat/contracts/TestBlockTxProperties.sol +++ b/tests/integration_tests/hardhat/contracts/TestBlockTxProperties.sol @@ -2,6 +2,20 @@ pragma solidity ^0.8.0; contract TestBlockTxProperties { + event TxDetailsEvent( + address indexed origin, + address indexed sender, + uint value, + bytes data, + uint gas, + uint gasprice, + bytes4 sig + ); + + function emitTxDetails() public payable { + emit TxDetailsEvent(tx.origin, msg.sender, msg.value, msg.data, gasleft(), tx.gasprice, msg.sig); + } + function getBlockHash(uint256 blockNumber) public view returns (bytes32) { return blockhash(blockNumber); } diff --git a/tests/integration_tests/test_block.py b/tests/integration_tests/test_block.py index 99367d4231..68c97ac3cb 100644 --- a/tests/integration_tests/test_block.py +++ b/tests/integration_tests/test_block.py @@ -1,6 +1,7 @@ +from eth_utils.crypto import keccak from web3 import Web3 -from .utils import CONTRACTS, deploy_contract, w3_wait_for_new_blocks +from .utils import ADDRS, CONTRACTS, deploy_contract, w3_wait_for_new_blocks def test_call(ethermint): @@ -11,3 +12,25 @@ def test_call(ethermint): res = Web3.to_hex(contract.caller.getBlockHash(height)) blk = w3.eth.get_block(height) assert res == Web3.to_hex(blk.hash), res + + +def test_block_tx_properties(ethermint): + w3 = ethermint.w3 + contract, _ = deploy_contract(w3, CONTRACTS["TestBlockTxProperties"]) + acc = ADDRS["community"] + gas_price = w3.eth.gas_price + tx_hash = contract.functions.emitTxDetails().transact( + {"from": acc, "gas": 200000, "gasPrice": gas_price} + ) + tx_hash = Web3.to_hex(tx_hash) + tx_receipt = w3.eth.wait_for_transaction_receipt(tx_hash) + tx_details_event = contract.events.TxDetailsEvent().process_receipt(tx_receipt) + assert tx_details_event is not None + data = tx_details_event[0]["args"] + print("event_data: ", data) + assert data["origin"].lower() == acc.lower() + assert data["sender"].lower() == acc.lower() + assert data["value"] == 0 + expected_sig = keccak(b"emitTxDetails()")[:4] + assert data["sig"] == data["data"] == expected_sig + assert data["gasprice"] == gas_price diff --git a/tests/integration_tests/test_tracers.py b/tests/integration_tests/test_tracers.py index a3cb592047..005c4082e6 100644 --- a/tests/integration_tests/test_tracers.py +++ b/tests/integration_tests/test_tracers.py @@ -14,6 +14,7 @@ EXPECTED_STRUCT_TRACER, ) from .utils import ( + ACCOUNTS, ADDRS, CONTRACTS, create_contract_transaction, @@ -754,3 +755,100 @@ def process(w3): assert isinstance(res[0], exceptions.ContractLogicError) assert isinstance(res[-1], exceptions.ContractLogicError) assert str(res[0]) == str(res[-1]) == "('execution reverted', '0x')" + + +def test_4byte_tracer_intrinsic_gas_too_low(ethermint, geth): + method = "debug_traceCall" + tracer = {"tracer": "4byteTracer"} + acc = derive_new_account(6) + + tx = { + "from": ACCOUNTS["community"].address, + "to": acc.address, + "gas": "0x4e29", + } + + def process(w3): + tx_res = w3.provider.make_request(method, [tx, "latest", tracer]) + return json.dumps(tx_res["error"], sort_keys=True) + + providers = [ethermint.w3, geth.w3] + with ThreadPoolExecutor(len(providers)) as exec: + tasks = [exec.submit(process, w3) for w3 in providers] + res = [future.result() for future in as_completed(tasks)] + assert len(res) == len(providers) + res = [json.loads(r) for r in res] + assert res[0]["code"] == res[-1]["code"] == -32000 + assert "intrinsic gas too low" in res[0]["message"] + assert "intrinsic gas too low" in res[-1]["message"] + + +def test_4byte_tracer_success(ethermint, geth): + method = "debug_traceCall" + tracer = {"tracer": "4byteTracer"} + acc = derive_new_account(6) + + tx = { + "from": ACCOUNTS["community"].address, + "to": acc.address, + "gas": hex(21000), + } + + def process(w3): + tx_res = w3.provider.make_request(method, [tx, "latest", tracer]) + return json.dumps(tx_res["result"], sort_keys=True) + + providers = [ethermint.w3, geth.w3] + with ThreadPoolExecutor(len(providers)) as exec: + tasks = [exec.submit(process, w3) for w3 in providers] + res = [future.result() for future in as_completed(tasks)] + assert len(res) == len(providers) + assert res[0] == res[-1] + + +def test_prestate_tracer_block_miner_address(ethermint, geth): + """ + prestateTracer on a tx will include the block miner address + """ + acc = ACCOUNTS["community"] + receiver = derive_new_account(12) + + def process(w3): + assert ( + w3.eth.get_balance(receiver.address) == 0 + ), "receiver balance need to be 0" + tx = { + "from": acc.address, + "to": receiver.address, + "value": 1, + } + receipt = send_transaction(w3, tx, key=acc.key) + tx_hash = Web3.to_hex(receipt["transactionHash"]) + tracer = {"tracer": "prestateTracer"} + tx_res = w3.provider.make_request("debug_traceTransaction", [tx_hash, tracer]) + latest_block = w3.eth.get_block(receipt.blockNumber) + block_miner = latest_block.miner + return [json.dumps(tx_res["result"], sort_keys=True), block_miner] + + providers = [ethermint.w3, geth.w3] + with ThreadPoolExecutor(len(providers)) as exec: + tasks = [exec.submit(process, w3) for w3 in providers] + res = [future.result() for future in as_completed(tasks)] + miner_lhs = res[0][1].lower() + miner_rhs = res[1][1].lower() + assert len(res) == len(providers) + + from_addr = acc.address.lower() + to_addr = receiver.address.lower() + + lhs = json.loads(res[0][0]) + rhs = json.loads(res[1][0]) + + assert len(lhs) == len(rhs) == 3, (lhs, rhs) + + assert lhs[from_addr] is not None + assert lhs[to_addr] is not None + assert rhs[from_addr] is not None + assert rhs[to_addr] is not None + assert lhs[miner_lhs] is not None + assert rhs[miner_rhs] is not None diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index 0ccabaedcd..938efebabb 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -362,20 +362,24 @@ func (k *Keeper) ApplyMessageWithConfig( tracer.OnGasChange(0, msg.GasLimit, tracing.GasChangeTxInitialBalance) } - tracer.OnTxStart( - evm.GetVMContext(), - ethtypes.NewTx(ðtypes.LegacyTx{ - To: msg.To, - Data: msg.Data, - Value: msg.Value, - Gas: msg.GasLimit, - }), - msg.From, - ) + if tracer.OnTxStart != nil { + tracer.OnTxStart( + evm.GetVMContext(), + ethtypes.NewTx(ðtypes.LegacyTx{ + To: msg.To, + Data: msg.Data, + Value: msg.Value, + Gas: msg.GasLimit, + }), + msg.From, + ) + } defer func() { debugFn() - tracer.OnTxEnd(ðtypes.Receipt{GasUsed: gasUsed}, err) + if tracer.OnTxEnd != nil { + tracer.OnTxEnd(ðtypes.Receipt{GasUsed: gasUsed}, err) + } }() if cfg.DebugTrace { From 63f3de0a10b220279fffd456cfc42cf9fe34b4a8 Mon Sep 17 00:00:00 2001 From: "Thomas N." <81727899+thomas-nguy@users.noreply.github.com> Date: Thu, 2 Oct 2025 13:56:26 +0900 Subject: [PATCH 166/210] feat: support preinstalls (#728) * support preinstall * fix proto * fix build * fix lint * fix test * change from error to log * remove unecessary name * register msg * register msg * add dummy log * add dummy log * add log * debug * cleanup * some fixes * somecleanup * move set account * add test * fix logic * add Changelog * update deps * remove dead code * fix comments * add check precompile * add validate basic for MsgRegisterPreinstalls * add more info in error --- .golangci.yml | 3 +- CHANGELOG.md | 1 + evmd/app.go | 8 +- evmd/genesis.go | 27 ++ go.mod | 2 +- go.sum | 4 +- proto/ethermint/evm/v1/genesis.proto | 5 + proto/ethermint/evm/v1/preinstall.proto | 15 + proto/ethermint/evm/v1/tx.proto | 22 + x/evm/genesis.go | 4 + x/evm/keeper/grpc_query.go | 1 - x/evm/keeper/keeper.go | 67 +++ x/evm/keeper/keeper_test.go | 29 +- x/evm/keeper/msg_server.go | 19 + x/evm/migrations/v4/types/params_v4.pb.go | 3 +- x/evm/simulation/genesis.go | 2 +- x/evm/types/codec.go | 5 +- x/evm/types/errors.go | 4 + x/evm/types/genesis.go | 31 +- x/evm/types/genesis.pb.go | 109 ++++- x/evm/types/genesis_test.go | 2 +- x/evm/types/msg.go | 16 + x/evm/types/preinstall.go | 72 +++ x/evm/types/preinstall.pb.go | 423 +++++++++++++++++ x/evm/types/preinstall_test.go | 155 ++++++ x/evm/types/tx.pb.go | 549 +++++++++++++++++++--- x/evm/types/utils.go | 6 + 27 files changed, 1464 insertions(+), 120 deletions(-) create mode 100644 evmd/genesis.go create mode 100644 proto/ethermint/evm/v1/preinstall.proto create mode 100644 x/evm/types/preinstall.go create mode 100644 x/evm/types/preinstall.pb.go create mode 100644 x/evm/types/preinstall_test.go diff --git a/.golangci.yml b/.golangci.yml index 3902e83569..8bddfc6a7a 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -62,6 +62,7 @@ linters: - third_party$ - builtin$ - examples$ + - x/evm/types/preinstall.go issues: max-same-issues: 50 formatters: @@ -72,4 +73,4 @@ formatters: paths: - third_party$ - builtin$ - - examples$ + - examples$ \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index d68bf5767c..a831e32b58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#725](https://github.com/crypto-org-chain/ethermint/pull/725) feat(RPC): add authorizationList from eth_getTransactionByHash response for EIP-7702 transactions * (evm) [#740](https://github.com/crypto-org-chain/ethermint/pull/740) fix: missing tx context during vm initialisation * (evm) [#742](https://github.com/crypto-org-chain/ethermint/pull/742) fix: prevent nil pointer dereference in tracer hooks +* (evm) [#728](https://github.com/crypto-org-chain/ethermint/pull/728) feat: support preinstalls ## [v0.22.0] - 2025-08-12 diff --git a/evmd/app.go b/evmd/app.go index 88a5499366..947be5230e 100644 --- a/evmd/app.go +++ b/evmd/app.go @@ -191,8 +191,6 @@ var ( _ evmserver.AppWithPendingTxListener = (*EthermintApp)(nil) ) -type GenesisState map[string]json.RawMessage - // var _ server.Application (*EthermintApp)(nil) // EthermintApp implements an extended ABCI application. It is an application @@ -926,7 +924,11 @@ func (app *EthermintApp) InterfaceRegistry() types.InterfaceRegistry { // DefaultGenesis returns a default genesis from the registered AppModuleBasic's. func (app *EthermintApp) DefaultGenesis() map[string]json.RawMessage { - return app.BasicModuleManager.DefaultGenesis(app.appCodec) + genesis := app.BasicModuleManager.DefaultGenesis(app.appCodec) + evmGenState := NewEVMGenesisState() + genesis[evmtypes.ModuleName] = app.appCodec.MustMarshalJSON(evmGenState) + + return genesis } func (app *EthermintApp) TxConfig() client.TxConfig { diff --git a/evmd/genesis.go b/evmd/genesis.go new file mode 100644 index 0000000000..edf405fc88 --- /dev/null +++ b/evmd/genesis.go @@ -0,0 +1,27 @@ +package evmd + +import ( + "encoding/json" + + evmtypes "github.com/evmos/ethermint/x/evm/types" +) + +// GenesisState of the blockchain is represented here as a map of raw json +// messages key'd by an identifier string. +// The identifier is used to determine which module genesis information belongs +// to so it may be appropriately routed during init chain. +// Within this application default genesis information is retrieved from +// the ModuleBasicManager which populates json from each BasicModule +// object provided to it during init. +type GenesisState map[string]json.RawMessage + +// NewEVMGenesisState returns the default genesis state for the EVM module. +// +// NOTE: for the example chain implementation we need to set the default EVM denomination, +// enable ALL precompiles, and include default preinstalls. +func NewEVMGenesisState() *evmtypes.GenesisState { + evmGenState := evmtypes.DefaultGenesisState() + evmGenState.Preinstalls = evmtypes.DefaultPreinstalls + + return evmGenState +} diff --git a/go.mod b/go.mod index b542b09e1c..85a2c8e717 100644 --- a/go.mod +++ b/go.mod @@ -240,7 +240,7 @@ require ( github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect - github.com/ulikunitz/xz v0.5.14 // indirect + github.com/ulikunitz/xz v0.5.15 // indirect github.com/zeebo/errs v1.4.0 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect diff --git a/go.sum b/go.sum index 9d04b6d738..e4b5f515b2 100644 --- a/go.sum +++ b/go.sum @@ -1701,8 +1701,8 @@ github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3C github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ulikunitz/xz v0.5.14 h1:uv/0Bq533iFdnMHZdRBTOlaNMdb1+ZxXIlHDZHIHcvg= -github.com/ulikunitz/xz v0.5.14/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY= +github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= diff --git a/proto/ethermint/evm/v1/genesis.proto b/proto/ethermint/evm/v1/genesis.proto index 67092d42d9..ad620b211a 100644 --- a/proto/ethermint/evm/v1/genesis.proto +++ b/proto/ethermint/evm/v1/genesis.proto @@ -1,7 +1,9 @@ syntax = "proto3"; package ethermint.evm.v1; +import "amino/amino.proto"; import "ethermint/evm/v1/params.proto"; +import "ethermint/evm/v1/preinstall.proto"; import "ethermint/evm/v1/state.proto"; import "gogoproto/gogo.proto"; @@ -13,6 +15,9 @@ message GenesisState { repeated GenesisAccount accounts = 1 [(gogoproto.nullable) = false]; // params defines all the parameters of the module. Params params = 2 [(gogoproto.nullable) = false]; + // preinstalls defines a set of predefined contracts + repeated Preinstall preinstalls = 3 + [ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ]; } // GenesisAccount defines an account to be initialized in the genesis state. diff --git a/proto/ethermint/evm/v1/preinstall.proto b/proto/ethermint/evm/v1/preinstall.proto new file mode 100644 index 0000000000..546ed32558 --- /dev/null +++ b/proto/ethermint/evm/v1/preinstall.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; +package ethermint.evm.v1; + +option go_package = "github.com/evmos/ethermint/x/evm/types"; + +// Preinstall defines a contract that is preinstalled on-chain with a specific +// contract address and bytecode +message Preinstall { + // name of the preinstall contract + string name = 1; + // address in hex format of the preinstall contract + string address = 2; + // code in hex format for the preinstall contract + string code = 3; +} \ No newline at end of file diff --git a/proto/ethermint/evm/v1/tx.proto b/proto/ethermint/evm/v1/tx.proto index 694ed9591f..45b9582d31 100644 --- a/proto/ethermint/evm/v1/tx.proto +++ b/proto/ethermint/evm/v1/tx.proto @@ -1,6 +1,7 @@ syntax = "proto3"; package ethermint.evm.v1; +import "amino/amino.proto"; import "cosmos/msg/v1/msg.proto"; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; @@ -9,6 +10,7 @@ import "google/protobuf/any.proto"; import "ethermint/evm/v1/access_tuple.proto"; import "ethermint/evm/v1/log.proto"; import "ethermint/evm/v1/params.proto"; +import "ethermint/evm/v1/preinstall.proto"; import "ethermint/evm/v1/set_code_authorization.proto"; option go_package = "github.com/evmos/ethermint/x/evm/types"; @@ -23,6 +25,10 @@ service Msg { // UpdateParams defined a governance operation for updating the x/evm module parameters. // The authority is hard-coded to the Cosmos SDK x/gov module account rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); + + // UpdateParams defined a governance operation for updating the x/evm module parameters. + // The authority is hard-coded to the Cosmos SDK x/gov module account + rpc RegisterPreinstalls(MsgRegisterPreinstalls) returns (MsgRegisterPreinstallsResponse); } // MsgEthereumTx encapsulates an Ethereum transaction as an SDK message. @@ -225,3 +231,19 @@ message MsgUpdateParams { // MsgUpdateParamsResponse defines the response structure for executing a // MsgUpdateParams message. message MsgUpdateParamsResponse {} + +// MsgRegisterPreinstalls defines a Msg for creating preinstalls in evm state. +message MsgRegisterPreinstalls { + option (cosmos.msg.v1.signer) = "authority"; + + // authority is the address of the governance account. + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + + // preinstalls defines the preinstalls to create. + repeated Preinstall preinstalls = 2 + [ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ]; +} + +// MsgRegisterPreinstallsResponse defines the response structure for executing a +// MsgRegisterPreinstalls message. +message MsgRegisterPreinstallsResponse {} \ No newline at end of file diff --git a/x/evm/genesis.go b/x/evm/genesis.go index db3799d35b..2a62c68b1f 100644 --- a/x/evm/genesis.go +++ b/x/evm/genesis.go @@ -82,6 +82,10 @@ func InitGenesis( } } + if err := k.AddPreinstalls(ctx, data.Preinstalls); err != nil { + panic(fmt.Errorf("error adding preinstalls: %s", err)) + } + return []abci.ValidatorUpdate{} } diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index 1d9fb38696..33d5732564 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -208,7 +208,6 @@ func (k Keeper) Code(c context.Context, req *types.QueryCodeRequest) (*types.Que address := common.HexToAddress(req.Address) acct := k.GetAccount(ctx, address) - var code []byte if acct != nil && acct.IsContract() { code = k.GetCode(ctx, common.BytesToHash(acct.CodeHash)) diff --git a/x/evm/keeper/keeper.go b/x/evm/keeper/keeper.go index fd223435e0..d41f613a5b 100644 --- a/x/evm/keeper/keeper.go +++ b/x/evm/keeper/keeper.go @@ -18,6 +18,8 @@ package keeper import ( "math/big" + "github.com/ethereum/go-ethereum/crypto" + errorsmod "cosmossdk.io/errors" "cosmossdk.io/log" storetypes "cosmossdk.io/store/types" @@ -339,3 +341,68 @@ func (k Keeper) DeleteHeaderHash(ctx sdk.Context, height uint64) { store := ctx.KVStore(k.storeKey) store.Delete(types.GetHeaderHashKey(height)) } + +func (k *Keeper) AddPreinstalls(ctx sdk.Context, preinstalls []types.Preinstall) error { + for _, preinstall := range preinstalls { + address := common.HexToAddress(preinstall.Address) + accAddress := sdk.AccAddress(address.Bytes()) + + if len(preinstall.Code) == 0 { + return errorsmod.Wrapf(types.ErrInvalidPreinstall, + "preinstall %s, address %s has no code", preinstall.Name, preinstall.Address) + } + + // check that the address does not conflict with the precompiles + cfg, err := k.EVMBlockConfig(ctx, k.ChainID()) + if err != nil { + return err + } + for _, fn := range k.customContractFns { + c := fn(ctx, cfg.Rules) + if address == c.Address() { + return errorsmod.Wrapf(types.ErrInvalidPreinstall, + "preinstall %s, address %s already exists as a precompile", preinstall.Name, preinstall.Address) + } + } + + codeHash := crypto.Keccak256Hash(common.FromHex(preinstall.Code)) + codeHashBytes := codeHash.Bytes() + if types.IsEmptyCodeHash(codeHashBytes) { + k.Logger(ctx).Error("preinstall has empty code hash", + "preinstall address", preinstall.Address) + return errorsmod.Wrapf(types.ErrInvalidPreinstall, + "preinstall %s, address %s has empty code hash", preinstall.Name, preinstall.Address) + } + + acct := k.accountKeeper.GetAccount(ctx, accAddress) + // check that the account is not already set + if acct != nil { + return errorsmod.Wrapf(types.ErrInvalidPreinstall, + "preinstall %s, address %s already has an account in account keeper", preinstall.Name, preinstall.Address) + } + // create account with the account keeper and set code hash + acct = k.accountKeeper.NewAccountWithAddress(ctx, accAddress) + if ethAcct, ok := acct.(ethermint.EthAccountI); ok { + if err := ethAcct.SetCodeHash(codeHash); err != nil { + return err + } + } + k.accountKeeper.SetAccount(ctx, acct) + k.SetCode(ctx, codeHashBytes, common.FromHex(preinstall.Code)) + + // We are not setting any storage for preinstalls, so we skip that step. + } + return nil +} + +// GetCodeHash loads the code hash from the database for the given contract address. +func (k *Keeper) GetCodeHash(acct sdk.AccountI) common.Hash { + if ethAcct, ok := acct.(ethermint.EthAccountI); ok { + hash := ethAcct.GetCodeHash() + if len(hash.Bytes()) == 0 { + return common.BytesToHash(types.EmptyCodeHash) + } + return hash + } + return common.BytesToHash(types.EmptyCodeHash) +} diff --git a/x/evm/keeper/keeper_test.go b/x/evm/keeper/keeper_test.go index e8f4f2c90c..bde3244214 100644 --- a/x/evm/keeper/keeper_test.go +++ b/x/evm/keeper/keeper_test.go @@ -104,28 +104,29 @@ func (suite *KeeperTestSuite) TestBaseFee() { func (suite *KeeperTestSuite) TestGetAccountStorage() { testCases := []struct { name string - malleate func() - expRes []int + malleate func() common.Address }{ { "Only one account that's not a contract (no storage)", - func() {}, - []int{0}, + nil, }, { "Two accounts - one contract (with storage), one wallet", - func() { + func() common.Address { supply := big.NewInt(100) - suite.DeployTestContract(suite.T(), suite.Address, supply, suite.enableFeemarket) + contractAddr := suite.DeployTestContract(suite.T(), suite.Address, supply, suite.enableFeemarket) + return contractAddr }, - []int{2, 0}, }, } for _, tc := range testCases { suite.Run(tc.name, func() { suite.SetupTest() - tc.malleate() + var contractAddr common.Address + if tc.malleate != nil { + contractAddr = tc.malleate() + } i := 0 suite.App.AccountKeeper.IterateAccounts(suite.Ctx, func(account sdk.AccountI) bool { ethAccount, ok := account.(ethermint.EthAccountI) @@ -137,7 +138,17 @@ func (suite *KeeperTestSuite) TestGetAccountStorage() { addr := ethAccount.EthAddress() storage := suite.App.EvmKeeper.GetAccountStorage(suite.Ctx, addr) - suite.Require().Equal(tc.expRes[i], len(storage)) + if addr == contractAddr { + s.Require().NotEqual(0, len(storage), + "expected account %d to have non-zero amount of storage slots, got %d", + i, len(storage), + ) + } else { + s.Require().Len(storage, 0, + "expected account %d to have %d storage slots, got %d", + i, 0, len(storage), + ) + } i++ return false }) diff --git a/x/evm/keeper/msg_server.go b/x/evm/keeper/msg_server.go index ed799c6ea7..54ac4a7633 100644 --- a/x/evm/keeper/msg_server.go +++ b/x/evm/keeper/msg_server.go @@ -150,3 +150,22 @@ func (k *Keeper) UpdateParams(goCtx context.Context, req *types.MsgUpdateParams) return &types.MsgUpdateParamsResponse{}, nil } + +// RegisterPreinstalls implements the gRPC MsgServer interface. When a RegisterPreinstalls +// proposal passes, it creates the preinstalls. The registration can only be +// performed if the requested authority is the Cosmos SDK governance module +// account. +func (k *Keeper) RegisterPreinstalls(goCtx context.Context, req *types.MsgRegisterPreinstalls) (*types. + MsgRegisterPreinstallsResponse, error, +) { + if k.authority.String() != req.Authority { + return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority, expected %s, got %s", k.authority.String(), req.Authority) + } + + ctx := sdk.UnwrapSDKContext(goCtx) + if err := k.AddPreinstalls(ctx, req.Preinstalls); err != nil { + return nil, err + } + + return &types.MsgRegisterPreinstallsResponse{}, nil +} diff --git a/x/evm/migrations/v4/types/params_v4.pb.go b/x/evm/migrations/v4/types/params_v4.pb.go index 3a93df5dd6..2d74ed4b13 100644 --- a/x/evm/migrations/v4/types/params_v4.pb.go +++ b/x/evm/migrations/v4/types/params_v4.pb.go @@ -6,11 +6,12 @@ package types import ( fmt "fmt" _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/cosmos/gogoproto/proto" v0types "github.com/evmos/ethermint/x/evm/migrations/v0/types" + proto "github.com/cosmos/gogoproto/proto" io "io" math "math" math_bits "math/bits" + ) // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/evm/simulation/genesis.go b/x/evm/simulation/genesis.go index 21b79c6eb5..d8b68e2823 100644 --- a/x/evm/simulation/genesis.go +++ b/x/evm/simulation/genesis.go @@ -49,7 +49,7 @@ func RandomizedGenState(simState *module.SimulationState) { ) params := types.NewParams(types.DefaultEVMDenom, false, true, true, types.DefaultChainConfig(), extraEIPs) - evmGenesis := types.NewGenesisState(params, []types.GenesisAccount{}) + evmGenesis := types.NewGenesisState(params, []types.GenesisAccount{}, []types.Preinstall{}) bz, err := json.MarshalIndent(evmGenesis, "", " ") if err != nil { diff --git a/x/evm/types/codec.go b/x/evm/types/codec.go index acef01c2a0..e49147f800 100644 --- a/x/evm/types/codec.go +++ b/x/evm/types/codec.go @@ -38,7 +38,8 @@ var ( const ( // Amino names - updateParamsName = "ethermint/MsgUpdateParams" + updateParamsName = "ethermint/MsgUpdateParams" + registerPreinstallsName = "ethermint/MsgRegisterPreinstalls" ) // NOTE: This is required for the GetSignBytes function @@ -61,6 +62,7 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { (*sdk.Msg)(nil), &MsgEthereumTx{}, &MsgUpdateParams{}, + &MsgRegisterPreinstalls{}, ) registry.RegisterInterface( "ethermint.evm.v1.TxData", @@ -109,4 +111,5 @@ func UnpackTxData(codecAny *codectypes.Any) (TxData, error) { // RegisterLegacyAminoCodec required for EIP-712 func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgUpdateParams{}, updateParamsName, nil) + cdc.RegisterConcrete(&MsgRegisterPreinstalls{}, registerPreinstallsName, nil) } diff --git a/x/evm/types/errors.go b/x/evm/types/errors.go index 87179c50f6..faf8663eb8 100644 --- a/x/evm/types/errors.go +++ b/x/evm/types/errors.go @@ -49,6 +49,7 @@ const ( codeErrGasOverflow codeErrInvalidAccount codeErrInvalidGasLimit + codeErrInvalidPreinstall ) var ErrPostTxProcessing = errors.New("failed to execute post processing") @@ -116,6 +117,9 @@ var ( // ErrInvalidGasLimit returns an error if gas limit value is invalid ErrInvalidGasLimit = errorsmod.Register(ModuleName, codeErrInvalidGasLimit, "invalid gas limit") + + // ErrInvalidPreinstall returns an error if a preinstall is invalid + ErrInvalidPreinstall = errorsmod.Register(ModuleName, codeErrInvalidPreinstall, "invalid preinstall") ) // NewExecErrorWithReason unpacks the revert return bytes and returns a wrapped error diff --git a/x/evm/types/genesis.go b/x/evm/types/genesis.go index 3784237a38..762d30d183 100644 --- a/x/evm/types/genesis.go +++ b/x/evm/types/genesis.go @@ -33,16 +33,18 @@ func (ga GenesisAccount) Validate() error { // chain config values. func DefaultGenesisState() *GenesisState { return &GenesisState{ - Accounts: []GenesisAccount{}, - Params: DefaultParams(), + Accounts: []GenesisAccount{}, + Params: DefaultParams(), + Preinstalls: []Preinstall{}, } } // NewGenesisState creates a new genesis state. -func NewGenesisState(params Params, accounts []GenesisAccount) *GenesisState { +func NewGenesisState(params Params, accounts []GenesisAccount, preinstalls []Preinstall) *GenesisState { return &GenesisState{ - Accounts: accounts, - Params: params, + Accounts: accounts, + Params: params, + Preinstalls: preinstalls, } } @@ -60,5 +62,24 @@ func (gs GenesisState) Validate() error { seenAccounts[acc.Address] = true } + // Validate preinstalls + seenPreinstalls := make(map[string]bool) + for _, preinstall := range gs.Preinstalls { + if seenPreinstalls[preinstall.Address] { + return fmt.Errorf("duplicated preinstall address %s", preinstall.Address) + } + if err := preinstall.Validate(); err != nil { + return fmt.Errorf("invalid preinstall %s: %w", preinstall.Address, err) + } + + // Check that preinstall address doesn't conflict with any genesis account + // Both genesis accounts and preinstalls use Ethereum hex addresses + if seenAccounts[preinstall.Address] { + return fmt.Errorf("preinstall address %s conflicts with genesis account %s", preinstall.Address, preinstall.Address) + } + + seenPreinstalls[preinstall.Address] = true + } + return gs.Params.Validate() } diff --git a/x/evm/types/genesis.pb.go b/x/evm/types/genesis.pb.go index 8b9d6f33e6..a924f6c0e3 100644 --- a/x/evm/types/genesis.pb.go +++ b/x/evm/types/genesis.pb.go @@ -5,6 +5,7 @@ package types import ( fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" io "io" @@ -29,6 +30,8 @@ type GenesisState struct { Accounts []GenesisAccount `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts"` // params defines all the parameters of the module. Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` + // preinstalls defines a set of predefined contracts + Preinstalls []Preinstall `protobuf:"bytes,3,rep,name=preinstalls,proto3" json:"preinstalls"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -78,6 +81,13 @@ func (m *GenesisState) GetParams() Params { return Params{} } +func (m *GenesisState) GetPreinstalls() []Preinstall { + if m != nil { + return m.Preinstalls + } + return nil +} + // GenesisAccount defines an account to be initialized in the genesis state. // Its main difference between with Geth's GenesisAccount is that it uses a // custom storage type and that it doesn't contain the private key field. @@ -152,27 +162,30 @@ func init() { func init() { proto.RegisterFile("ethermint/evm/v1/genesis.proto", fileDescriptor_9bcdec50cc9d156d) } var fileDescriptor_9bcdec50cc9d156d = []byte{ - // 305 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x50, 0x31, 0x4f, 0x83, 0x40, - 0x18, 0xe5, 0x6c, 0x53, 0xec, 0xd5, 0xa8, 0xb9, 0x98, 0x48, 0x1a, 0xbd, 0x92, 0x0e, 0x86, 0xe9, - 0x48, 0x6b, 0xe2, 0xac, 0x2c, 0xae, 0x86, 0x6e, 0x6e, 0x57, 0xf8, 0x42, 0x19, 0xe0, 0x08, 0x77, - 0x25, 0xba, 0x3a, 0x3a, 0xf9, 0x3b, 0xfc, 0x25, 0x1d, 0x3b, 0x3a, 0xa9, 0x81, 0x3f, 0x62, 0x38, - 0x68, 0x8d, 0xb2, 0x3d, 0x78, 0xef, 0x7d, 0xef, 0xdd, 0xc3, 0x14, 0xd4, 0x0a, 0xf2, 0x24, 0x4e, - 0x95, 0x0b, 0x45, 0xe2, 0x16, 0x33, 0x37, 0x82, 0x14, 0x64, 0x2c, 0x59, 0x96, 0x0b, 0x25, 0xc8, - 0xe9, 0x9e, 0x67, 0x50, 0x24, 0xac, 0x98, 0x8d, 0x2f, 0x3b, 0x8e, 0x8c, 0xe7, 0x3c, 0x69, 0x0d, - 0xe3, 0x8b, 0x0e, 0x2d, 0x15, 0x57, 0xd0, 0xb2, 0x67, 0x91, 0x88, 0x84, 0x86, 0x6e, 0x8d, 0x9a, - 0xbf, 0xd3, 0x57, 0x84, 0x8f, 0xee, 0x9b, 0xd8, 0x45, 0x2d, 0x26, 0x1e, 0x3e, 0xe4, 0x41, 0x20, - 0xd6, 0xa9, 0x92, 0x16, 0xb2, 0x7b, 0xce, 0x68, 0x6e, 0xb3, 0xff, 0x45, 0x58, 0xeb, 0xb8, 0x6b, - 0x84, 0x5e, 0x7f, 0xf3, 0x39, 0x31, 0xfc, 0xbd, 0x8f, 0xdc, 0xe0, 0x41, 0x53, 0xcc, 0x3a, 0xb0, - 0x91, 0x33, 0x9a, 0x5b, 0xdd, 0x0b, 0x0f, 0x9a, 0x6f, 0x9d, 0xad, 0x7a, 0xfa, 0x82, 0xf0, 0xf1, - 0xdf, 0xd3, 0xc4, 0xc2, 0x26, 0x0f, 0xc3, 0x1c, 0x64, 0xdd, 0x06, 0x39, 0x43, 0x7f, 0xf7, 0x49, - 0x08, 0xee, 0x07, 0x22, 0x04, 0x1d, 0x31, 0xf4, 0x35, 0x26, 0x1e, 0x36, 0xa5, 0x12, 0x39, 0x8f, - 0xc0, 0xea, 0xe9, 0xee, 0xe7, 0xdd, 0x64, 0xfd, 0x4c, 0xef, 0xa4, 0x0e, 0x7e, 0xff, 0x9a, 0x98, - 0x8b, 0x46, 0xef, 0xef, 0x8c, 0xde, 0xed, 0xa6, 0xa4, 0x68, 0x5b, 0x52, 0xf4, 0x5d, 0x52, 0xf4, - 0x56, 0x51, 0x63, 0x5b, 0x51, 0xe3, 0xa3, 0xa2, 0xc6, 0xe3, 0x55, 0x14, 0xab, 0xd5, 0x7a, 0xc9, - 0x02, 0x91, 0xd4, 0x03, 0x0b, 0xe9, 0xfe, 0x0e, 0xfe, 0xa4, 0x27, 0x57, 0xcf, 0x19, 0xc8, 0xe5, - 0x40, 0x4f, 0x7b, 0xfd, 0x13, 0x00, 0x00, 0xff, 0xff, 0xf4, 0x26, 0xbe, 0x33, 0xe1, 0x01, 0x00, - 0x00, + // 361 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xcf, 0x4e, 0xea, 0x40, + 0x14, 0x87, 0x3b, 0x17, 0x02, 0x97, 0xc1, 0xf8, 0x67, 0x62, 0x62, 0x43, 0x70, 0x40, 0x16, 0x86, + 0xb8, 0x68, 0x03, 0x26, 0xae, 0xb5, 0x1b, 0xe3, 0xce, 0x94, 0x9d, 0xbb, 0xa1, 0x9c, 0x94, 0x26, + 0xb4, 0x43, 0x3a, 0x43, 0xa3, 0x5b, 0x9f, 0xc0, 0xc7, 0x30, 0xae, 0x7c, 0x0c, 0x96, 0x6c, 0x4c, + 0x5c, 0xa9, 0x81, 0x85, 0xaf, 0x61, 0x3a, 0x1d, 0x8a, 0x5a, 0x37, 0xcd, 0x69, 0xcf, 0xf7, 0x3b, + 0xfd, 0x66, 0x0e, 0xa6, 0x20, 0xc7, 0x10, 0x87, 0x41, 0x24, 0x6d, 0x48, 0x42, 0x3b, 0xe9, 0xd9, + 0x3e, 0x44, 0x20, 0x02, 0x61, 0x4d, 0x63, 0x2e, 0x39, 0xd9, 0xcd, 0xfb, 0x16, 0x24, 0xa1, 0x95, + 0xf4, 0x1a, 0x7b, 0x2c, 0x0c, 0x22, 0x6e, 0xab, 0x67, 0x06, 0x35, 0x0e, 0x0b, 0x43, 0xa6, 0x2c, + 0x66, 0xa1, 0x9e, 0xd1, 0x38, 0x2a, 0xb6, 0x63, 0x08, 0x22, 0x21, 0xd9, 0x64, 0xa2, 0x91, 0x66, + 0x01, 0x11, 0x92, 0x49, 0xd0, 0xdd, 0x7d, 0x9f, 0xfb, 0x5c, 0x95, 0x76, 0x5a, 0x65, 0x5f, 0x3b, + 0x2f, 0x08, 0x6f, 0x5d, 0x66, 0xb2, 0x83, 0x14, 0x26, 0x0e, 0xfe, 0xcf, 0x3c, 0x8f, 0xcf, 0x22, + 0x29, 0x4c, 0xd4, 0x2e, 0x75, 0xeb, 0xfd, 0xb6, 0xf5, 0x5b, 0xdf, 0xd2, 0x89, 0x8b, 0x0c, 0x74, + 0xca, 0xf3, 0xb7, 0x96, 0xe1, 0xe6, 0x39, 0x72, 0x86, 0x2b, 0x99, 0xbb, 0xf9, 0xaf, 0x8d, 0xba, + 0xf5, 0xbe, 0x59, 0x9c, 0x70, 0xad, 0xfa, 0x3a, 0xa9, 0x69, 0x72, 0x85, 0xeb, 0x9b, 0x43, 0x09, + 0xb3, 0xa4, 0x7e, 0xdf, 0xfc, 0x23, 0x9c, 0x43, 0x4e, 0x2d, 0x1d, 0xf0, 0xf8, 0xf9, 0x7c, 0x82, + 0xdc, 0xef, 0xd9, 0xce, 0x3d, 0xc2, 0xdb, 0x3f, 0x2d, 0x89, 0x89, 0xab, 0x6c, 0x34, 0x8a, 0x41, + 0xa4, 0x07, 0x43, 0xdd, 0x9a, 0xbb, 0x7e, 0x25, 0x04, 0x97, 0x3d, 0x3e, 0x02, 0x65, 0x5b, 0x73, + 0x55, 0x4d, 0x1c, 0x5c, 0x15, 0x92, 0xc7, 0xcc, 0x07, 0xed, 0x71, 0x50, 0xf4, 0x50, 0x37, 0xe6, + 0xec, 0xa4, 0x0a, 0x4f, 0xef, 0xad, 0xea, 0x20, 0xe3, 0xdd, 0x75, 0xd0, 0x39, 0x9f, 0x2f, 0x29, + 0x5a, 0x2c, 0x29, 0xfa, 0x58, 0x52, 0xf4, 0xb0, 0xa2, 0xc6, 0x62, 0x45, 0x8d, 0xd7, 0x15, 0x35, + 0x6e, 0x8e, 0xfd, 0x40, 0x8e, 0x67, 0x43, 0xcb, 0xe3, 0x61, 0xba, 0x2b, 0x2e, 0xec, 0xcd, 0xee, + 0x6e, 0xd5, 0xf6, 0xe4, 0xdd, 0x14, 0xc4, 0xb0, 0xa2, 0xb6, 0x74, 0xfa, 0x15, 0x00, 0x00, 0xff, + 0xff, 0x89, 0xb0, 0x3a, 0x1c, 0x62, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -195,6 +208,20 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Preinstalls) > 0 { + for iNdEx := len(m.Preinstalls) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Preinstalls[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } { size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -298,6 +325,12 @@ func (m *GenesisState) Size() (n int) { } l = m.Params.Size() n += 1 + l + sovGenesis(uint64(l)) + if len(m.Preinstalls) > 0 { + for _, e := range m.Preinstalls { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } return n } @@ -426,6 +459,40 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Preinstalls", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Preinstalls = append(m.Preinstalls, Preinstall{}) + if err := m.Preinstalls[len(m.Preinstalls)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) diff --git a/x/evm/types/genesis_test.go b/x/evm/types/genesis_test.go index ad3e3a155e..ce6d2e385a 100644 --- a/x/evm/types/genesis_test.go +++ b/x/evm/types/genesis_test.go @@ -117,7 +117,7 @@ func (suite *GenesisTestSuite) TestValidateGenesis() { }, { name: "copied genesis", - genState: NewGenesisState(DefaultGenesisState().Params, DefaultGenesisState().Accounts), + genState: NewGenesisState(DefaultGenesisState().Params, DefaultGenesisState().Accounts, DefaultPreinstalls), expPass: true, }, { diff --git a/x/evm/types/msg.go b/x/evm/types/msg.go index 9e147483a1..38f416fac6 100644 --- a/x/evm/types/msg.go +++ b/x/evm/types/msg.go @@ -46,6 +46,7 @@ var ( _ sdk.Tx = &MsgEthereumTx{} _ ante.GasTx = &MsgEthereumTx{} _ sdk.Msg = &MsgUpdateParams{} + _ sdk.Msg = &MsgRegisterPreinstalls{} _ codectypes.UnpackInterfacesMessage = MsgEthereumTx{} ) @@ -403,3 +404,18 @@ func (m *MsgUpdateParams) ValidateBasic() error { return m.Params.Validate() } + +// ValidateBasic does a sanity check for MsgRegisterPreinstalls +func (m *MsgRegisterPreinstalls) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(m.Authority); err != nil { + return errorsmod.Wrap(err, "invalid authority address") + } + + for _, p := range m.Preinstalls { + err := p.Validate() + if err != nil { + return err + } + } + return nil +} diff --git a/x/evm/types/preinstall.go b/x/evm/types/preinstall.go new file mode 100644 index 0000000000..76dd298a0c --- /dev/null +++ b/x/evm/types/preinstall.go @@ -0,0 +1,72 @@ +package types + +import ( + "encoding/hex" + "fmt" + "strings" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/params" +) + +var DefaultPreinstalls = []Preinstall{ + { + Name: "Create2", + Address: "0x4e59b44847b379578588920ca78fbf26c0b4956c", + Code: "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3", + }, + { + Name: "Multicall3", + Address: "0xcA11bde05977b3631167028862bE2a173976CA11", + Code: "0x6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033", + }, + { + Name: "Permit2", + Address: "0x000000000022D473030F116dDEE9F6B43aC78BA3", + Code: "0x6040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000103611b69577f866a5aba21966af95d6c7ab78eb2b2fc913915c28be3b9aa07cc04ff903e3f2890565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000a", + }, + { + Name: "Safe singleton factory", + Address: "0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7", + Code: "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3", + }, + { + Name: "EIP-2935 - Serve historical block hashes from state", + Address: params.HistoryStorageAddress.String(), + Code: common.Bytes2Hex(params.HistoryStorageCode), + }, +} + +// Validate performs basic validation checks on the Preinstall +func (p Preinstall) Validate() error { + if p.Address == "" { + return fmt.Errorf("preinstall address cannot be empty") + } + + // Check if Address is a valid hex string that can be converted to common.Address + if !common.IsHexAddress(p.Address) { + return fmt.Errorf("preinstall address %q is not a valid hex address", p.Address) + } + + if p.Code == "" { + return fmt.Errorf("preinstall code cannot be empty") + } + + // Check if Code is a valid hex string that can be converted to bytes + codeStr := p.Code + if strings.HasPrefix(codeStr, "0x") || strings.HasPrefix(codeStr, "0X") { + codeStr = codeStr[2:] + } + if _, err := hex.DecodeString(codeStr); err != nil { + return fmt.Errorf("preinstall code %q is not a valid hex string", p.Code) + } + + // Check if Code has Empty Code Hash + codeHash := crypto.Keccak256Hash(common.FromHex(p.Code)).Bytes() + if IsEmptyCodeHash(codeHash) { + return fmt.Errorf("preinstall code %q has empty code hash", p.Code) + } + + return nil +} diff --git a/x/evm/types/preinstall.pb.go b/x/evm/types/preinstall.pb.go new file mode 100644 index 0000000000..335308edfe --- /dev/null +++ b/x/evm/types/preinstall.pb.go @@ -0,0 +1,423 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: ethermint/evm/v1/preinstall.proto + +package types + +import ( + fmt "fmt" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Preinstall defines a contract that is preinstalled on-chain with a specific +// contract address and bytecode +type Preinstall struct { + // name of the preinstall contract + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // address in hex format of the preinstall contract + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + // code in hex format for the preinstall contract + Code string `protobuf:"bytes,3,opt,name=code,proto3" json:"code,omitempty"` +} + +func (m *Preinstall) Reset() { *m = Preinstall{} } +func (m *Preinstall) String() string { return proto.CompactTextString(m) } +func (*Preinstall) ProtoMessage() {} +func (*Preinstall) Descriptor() ([]byte, []int) { + return fileDescriptor_ebf0ed25989afc58, []int{0} +} +func (m *Preinstall) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Preinstall) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Preinstall.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Preinstall) XXX_Merge(src proto.Message) { + xxx_messageInfo_Preinstall.Merge(m, src) +} +func (m *Preinstall) XXX_Size() int { + return m.Size() +} +func (m *Preinstall) XXX_DiscardUnknown() { + xxx_messageInfo_Preinstall.DiscardUnknown(m) +} + +var xxx_messageInfo_Preinstall proto.InternalMessageInfo + +func (m *Preinstall) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Preinstall) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *Preinstall) GetCode() string { + if m != nil { + return m.Code + } + return "" +} + +func init() { + proto.RegisterType((*Preinstall)(nil), "ethermint.evm.v1.Preinstall") +} + +func init() { proto.RegisterFile("ethermint/evm/v1/preinstall.proto", fileDescriptor_ebf0ed25989afc58) } + +var fileDescriptor_ebf0ed25989afc58 = []byte{ + // 183 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4c, 0x2d, 0xc9, 0x48, + 0x2d, 0xca, 0xcd, 0xcc, 0x2b, 0xd1, 0x4f, 0x2d, 0xcb, 0xd5, 0x2f, 0x33, 0xd4, 0x2f, 0x28, 0x4a, + 0xcd, 0xcc, 0x2b, 0x2e, 0x49, 0xcc, 0xc9, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, + 0x2b, 0xd1, 0x4b, 0x2d, 0xcb, 0xd5, 0x2b, 0x33, 0x54, 0xf2, 0xe3, 0xe2, 0x0a, 0x80, 0xab, 0x12, + 0x12, 0xe2, 0x62, 0xc9, 0x4b, 0xcc, 0x4d, 0x95, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x02, 0xb3, + 0x85, 0x24, 0xb8, 0xd8, 0x13, 0x53, 0x52, 0x8a, 0x52, 0x8b, 0x8b, 0x25, 0x98, 0xc0, 0xc2, 0x30, + 0x2e, 0x48, 0x75, 0x72, 0x7e, 0x4a, 0xaa, 0x04, 0x33, 0x44, 0x35, 0x88, 0xed, 0xe4, 0x70, 0xe2, + 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, + 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x6a, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, + 0x7a, 0xc9, 0xf9, 0xb9, 0x20, 0xf7, 0xe5, 0x17, 0xeb, 0x23, 0xdc, 0x5b, 0x01, 0x76, 0x71, 0x49, + 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0xa9, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9d, + 0x60, 0xb7, 0xb0, 0xcf, 0x00, 0x00, 0x00, +} + +func (m *Preinstall) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Preinstall) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Preinstall) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Code) > 0 { + i -= len(m.Code) + copy(dAtA[i:], m.Code) + i = encodeVarintPreinstall(dAtA, i, uint64(len(m.Code))) + i-- + dAtA[i] = 0x1a + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintPreinstall(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x12 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintPreinstall(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintPreinstall(dAtA []byte, offset int, v uint64) int { + offset -= sovPreinstall(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Preinstall) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovPreinstall(uint64(l)) + } + l = len(m.Address) + if l > 0 { + n += 1 + l + sovPreinstall(uint64(l)) + } + l = len(m.Code) + if l > 0 { + n += 1 + l + sovPreinstall(uint64(l)) + } + return n +} + +func sovPreinstall(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozPreinstall(x uint64) (n int) { + return sovPreinstall(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Preinstall) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPreinstall + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Preinstall: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Preinstall: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPreinstall + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPreinstall + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPreinstall + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPreinstall + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPreinstall + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPreinstall + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPreinstall + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthPreinstall + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPreinstall + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Code = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPreinstall(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPreinstall + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipPreinstall(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowPreinstall + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowPreinstall + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowPreinstall + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthPreinstall + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupPreinstall + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthPreinstall + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthPreinstall = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowPreinstall = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupPreinstall = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/evm/types/preinstall_test.go b/x/evm/types/preinstall_test.go new file mode 100644 index 0000000000..98fbc97b43 --- /dev/null +++ b/x/evm/types/preinstall_test.go @@ -0,0 +1,155 @@ +package types + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestPreinstall_Validate(t *testing.T) { + tests := []struct { + name string + preinstall Preinstall + errorMsg string + }{ + { + name: "valid preinstall with 0x prefix", + preinstall: Preinstall{ + Name: "Test Contract", + Address: "0x1234567890123456789012345678901234567890", + Code: "0x608060405234801561001057600080fd5b50", + }, + errorMsg: "", + }, + { + name: "valid preinstall without 0x prefix", + preinstall: Preinstall{ + Name: "Test Contract", + Address: "1234567890123456789012345678901234567890", + Code: "608060405234801561001057600080fd5b50", + }, + errorMsg: "", + }, + { + name: "valid preinstall with uppercase hex", + preinstall: Preinstall{ + Name: "Test Contract", + Address: "0xABCDEF1234567890123456789012345678901234", + Code: "0x608060405234801561001057600080FD5B50", + }, + errorMsg: "", + }, + { + name: "valid preinstall with mixed case hex", + preinstall: Preinstall{ + Name: "Test Contract", + Address: "0xaBcDeF1234567890123456789012345678901234", + Code: "0x608060405234801561001057600080Fd5b50", + }, + errorMsg: "", + }, + { + name: "empty address", + preinstall: Preinstall{ + Name: "Test Contract", + Address: "", + Code: "0x608060405234801561001057600080fd5b50", + }, + errorMsg: "preinstall address cannot be empty", + }, + { + name: "empty code", + preinstall: Preinstall{ + Name: "Test Contract", + Address: "0x1234567890123456789012345678901234567890", + Code: "", + }, + errorMsg: "preinstall code cannot be empty", + }, + { + name: "invalid address - not hex", + preinstall: Preinstall{ + Name: "Test Contract", + Address: "0xGHIJ567890123456789012345678901234567890", + Code: "0x608060405234801561001057600080fd5b50", + }, + errorMsg: "preinstall address \"0xGHIJ567890123456789012345678901234567890\" is not a valid hex address", + }, + { + name: "invalid address - too short", + preinstall: Preinstall{ + Name: "Test Contract", + Address: "0x1234", + Code: "0x608060405234801561001057600080fd5b50", + }, + errorMsg: "preinstall address \"0x1234\" is not a valid hex address", + }, + { + name: "invalid address - too long", + preinstall: Preinstall{ + Name: "Test Contract", + Address: "0x123456789012345678901234567890123456789012", + Code: "0x608060405234801561001057600080fd5b50", + }, + errorMsg: "preinstall address \"0x123456789012345678901234567890123456789012\" is not a valid hex address", + }, + { + name: "invalid code - not hex", + preinstall: Preinstall{ + Name: "Test Contract", + Address: "0x1234567890123456789012345678901234567890", + Code: "0xGHIJ60405234801561001057600080fd5b50", + }, + errorMsg: "preinstall code \"0xGHIJ60405234801561001057600080fd5b50\" is not a valid hex string", + }, + { + name: "invalid code - odd length without 0x", + preinstall: Preinstall{ + Name: "Test Contract", + Address: "0x1234567890123456789012345678901234567890", + Code: "60806040523480156100057600080fd5b50", + }, + errorMsg: "preinstall code \"60806040523480156100057600080fd5b50\" is not a valid hex string", + }, + { + name: "invalid code - empty code hash", + preinstall: Preinstall{ + Name: "Test Contract", + Address: "0x1234567890123456789012345678901234567890", + Code: "0x", + }, + errorMsg: "preinstall code \"0x\" has empty code hash", + }, + { + name: "valid preinstall with empty name (name not validated)", + preinstall: Preinstall{ + Name: "", + Address: "0x1234567890123456789012345678901234567890", + Code: "0x608060405234801561001057600080fd5b50", + }, + errorMsg: "", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.preinstall.Validate() + if tt.errorMsg == "" { + require.NoError(t, err) + } else { + require.Error(t, err) + require.Contains(t, err.Error(), tt.errorMsg) + } + }) + } +} + +func TestDefaultPreinstalls_Validate(t *testing.T) { + // Test that all default preinstalls are valid + for i, preinstall := range DefaultPreinstalls { + t.Run(preinstall.Name, func(t *testing.T) { + err := preinstall.Validate() + require.NoError(t, err, "DefaultPreinstalls[%d] (%s) should be valid", i, preinstall.Name) + }) + } +} diff --git a/x/evm/types/tx.pb.go b/x/evm/types/tx.pb.go index ba9a97f612..d12dd99aa3 100644 --- a/x/evm/types/tx.pb.go +++ b/x/evm/types/tx.pb.go @@ -11,6 +11,7 @@ import ( _ "github.com/cosmos/cosmos-proto" types "github.com/cosmos/cosmos-sdk/codec/types" _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -509,6 +510,99 @@ func (m *MsgUpdateParamsResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateParamsResponse proto.InternalMessageInfo +// MsgRegisterPreinstalls defines a Msg for creating preinstalls in evm state. +type MsgRegisterPreinstalls struct { + // authority is the address of the governance account. + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // preinstalls defines the preinstalls to create. + Preinstalls []Preinstall `protobuf:"bytes,2,rep,name=preinstalls,proto3" json:"preinstalls"` +} + +func (m *MsgRegisterPreinstalls) Reset() { *m = MsgRegisterPreinstalls{} } +func (m *MsgRegisterPreinstalls) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterPreinstalls) ProtoMessage() {} +func (*MsgRegisterPreinstalls) Descriptor() ([]byte, []int) { + return fileDescriptor_f75ac0a12d075f21, []int{9} +} +func (m *MsgRegisterPreinstalls) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRegisterPreinstalls) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRegisterPreinstalls.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRegisterPreinstalls) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterPreinstalls.Merge(m, src) +} +func (m *MsgRegisterPreinstalls) XXX_Size() int { + return m.Size() +} +func (m *MsgRegisterPreinstalls) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterPreinstalls.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRegisterPreinstalls proto.InternalMessageInfo + +func (m *MsgRegisterPreinstalls) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgRegisterPreinstalls) GetPreinstalls() []Preinstall { + if m != nil { + return m.Preinstalls + } + return nil +} + +// MsgRegisterPreinstallsResponse defines the response structure for executing a +// MsgRegisterPreinstalls message. +type MsgRegisterPreinstallsResponse struct { +} + +func (m *MsgRegisterPreinstallsResponse) Reset() { *m = MsgRegisterPreinstallsResponse{} } +func (m *MsgRegisterPreinstallsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRegisterPreinstallsResponse) ProtoMessage() {} +func (*MsgRegisterPreinstallsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f75ac0a12d075f21, []int{10} +} +func (m *MsgRegisterPreinstallsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRegisterPreinstallsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRegisterPreinstallsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRegisterPreinstallsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRegisterPreinstallsResponse.Merge(m, src) +} +func (m *MsgRegisterPreinstallsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgRegisterPreinstallsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRegisterPreinstallsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRegisterPreinstallsResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgEthereumTx)(nil), "ethermint.evm.v1.MsgEthereumTx") proto.RegisterType((*LegacyTx)(nil), "ethermint.evm.v1.LegacyTx") @@ -519,84 +613,92 @@ func init() { proto.RegisterType((*MsgEthereumTxResponse)(nil), "ethermint.evm.v1.MsgEthereumTxResponse") proto.RegisterType((*MsgUpdateParams)(nil), "ethermint.evm.v1.MsgUpdateParams") proto.RegisterType((*MsgUpdateParamsResponse)(nil), "ethermint.evm.v1.MsgUpdateParamsResponse") + proto.RegisterType((*MsgRegisterPreinstalls)(nil), "ethermint.evm.v1.MsgRegisterPreinstalls") + proto.RegisterType((*MsgRegisterPreinstallsResponse)(nil), "ethermint.evm.v1.MsgRegisterPreinstallsResponse") } func init() { proto.RegisterFile("ethermint/evm/v1/tx.proto", fileDescriptor_f75ac0a12d075f21) } var fileDescriptor_f75ac0a12d075f21 = []byte{ - // 1147 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0xda, 0xeb, 0x5f, 0x63, 0x27, 0xad, 0x46, 0x89, 0xba, 0xb6, 0x1a, 0xaf, 0x71, 0xa1, - 0xb8, 0x45, 0xb1, 0xd5, 0x80, 0x2a, 0x35, 0x27, 0xbc, 0xf9, 0x01, 0x45, 0x89, 0xa8, 0xb6, 0xee, - 0x05, 0x90, 0xac, 0xc9, 0xee, 0x64, 0xbd, 0xaa, 0x77, 0x67, 0xb5, 0x33, 0x36, 0x76, 0x25, 0xa4, - 0xaa, 0x27, 0x8e, 0x54, 0xfc, 0x03, 0x9c, 0x39, 0xf5, 0xd0, 0x33, 0x17, 0x2e, 0x15, 0xa7, 0x0a, - 0x2e, 0xa8, 0x42, 0x06, 0x25, 0x48, 0x15, 0x39, 0x72, 0xe6, 0x80, 0x66, 0x66, 0x1d, 0xdb, 0x5d, - 0x9c, 0x40, 0x25, 0x90, 0x90, 0x7a, 0x9b, 0x37, 0xef, 0x7b, 0x33, 0xef, 0x7d, 0xdf, 0xdb, 0x9d, - 0x07, 0x8a, 0x98, 0x75, 0x70, 0xe8, 0xb9, 0x3e, 0x6b, 0xe0, 0xbe, 0xd7, 0xe8, 0x5f, 0x6b, 0xb0, - 0x41, 0x3d, 0x08, 0x09, 0x23, 0xf0, 0xfc, 0x89, 0xab, 0x8e, 0xfb, 0x5e, 0xbd, 0x7f, 0xad, 0x74, - 0xc1, 0x22, 0xd4, 0x23, 0xb4, 0xe1, 0x51, 0x87, 0x23, 0x3d, 0xea, 0x48, 0x68, 0xa9, 0x28, 0x1d, - 0x6d, 0x61, 0x35, 0xa4, 0x11, 0xb9, 0x96, 0x1d, 0xe2, 0x10, 0xb9, 0xcf, 0x57, 0xd1, 0xee, 0x45, - 0x87, 0x10, 0xa7, 0x8b, 0x1b, 0x28, 0x70, 0x1b, 0xc8, 0xf7, 0x09, 0x43, 0xcc, 0x25, 0xfe, 0x38, - 0xa6, 0x18, 0x79, 0x85, 0xb5, 0xdf, 0x3b, 0x68, 0x20, 0x7f, 0x18, 0xb9, 0x2e, 0xc5, 0xf2, 0x45, - 0x96, 0x85, 0x29, 0x6d, 0xb3, 0x5e, 0xd0, 0xc5, 0x11, 0xa8, 0x14, 0x03, 0x75, 0xc9, 0x38, 0xd5, - 0xd5, 0x98, 0x2f, 0x40, 0x21, 0xf2, 0xc6, 0x57, 0xaf, 0xc5, 0xdc, 0x14, 0xb3, 0xb6, 0x45, 0x6c, - 0xdc, 0x46, 0x3d, 0xd6, 0x21, 0xa1, 0x7b, 0x4f, 0xa4, 0x2a, 0xe1, 0xd5, 0xfb, 0x09, 0xb0, 0xb8, - 0x47, 0x9d, 0x6d, 0x1e, 0x84, 0x7b, 0x5e, 0x6b, 0x00, 0x6b, 0x40, 0xb5, 0x11, 0x43, 0x9a, 0x52, - 0x51, 0x6a, 0xf9, 0xf5, 0xe5, 0xba, 0x2c, 0xa5, 0x3e, 0x2e, 0xa5, 0xde, 0xf4, 0x87, 0xa6, 0x40, - 0xc0, 0x22, 0x50, 0xa9, 0x7b, 0x0f, 0x6b, 0x89, 0x8a, 0x52, 0x53, 0x8c, 0xd4, 0xf1, 0x48, 0x57, - 0xd6, 0x4c, 0xb1, 0x05, 0xdf, 0x01, 0xe7, 0x6c, 0x1c, 0x84, 0xd8, 0x42, 0x0c, 0xdb, 0xed, 0x0e, - 0xa2, 0x1d, 0x2d, 0x59, 0x51, 0x6a, 0x39, 0x23, 0xff, 0xfb, 0x48, 0xcf, 0x84, 0xdd, 0x60, 0xa3, - 0xba, 0x56, 0x35, 0x97, 0x26, 0x98, 0xf7, 0x11, 0xed, 0xc0, 0xb7, 0x66, 0xa2, 0x0e, 0x42, 0xe2, - 0x69, 0xaa, 0x88, 0x4a, 0x68, 0xca, 0x34, 0x78, 0x27, 0x24, 0x1e, 0x84, 0x40, 0x15, 0x88, 0x54, - 0x45, 0xa9, 0x15, 0x4c, 0xb1, 0x86, 0xaf, 0x83, 0x64, 0x88, 0x3e, 0xd5, 0xd2, 0x7c, 0xcb, 0x80, - 0x4f, 0x46, 0xfa, 0xc2, 0xb3, 0x91, 0x0e, 0x26, 0xc5, 0x99, 0xdc, 0xbd, 0xb1, 0xf8, 0xf9, 0x57, - 0xfa, 0xc2, 0x83, 0xe7, 0x8f, 0xae, 0x8a, 0xa0, 0xea, 0xc3, 0x04, 0xc8, 0xee, 0x62, 0x07, 0x59, - 0xc3, 0xd6, 0x00, 0x2e, 0x83, 0x94, 0x4f, 0x7c, 0x0b, 0x8b, 0xf2, 0x55, 0x53, 0x1a, 0xf0, 0x3a, - 0xc8, 0x39, 0x88, 0x77, 0x87, 0x6b, 0xc9, 0x72, 0x73, 0x46, 0xf1, 0xd9, 0x48, 0x5f, 0x91, 0x8d, - 0x42, 0xed, 0xbb, 0x75, 0x97, 0x34, 0x3c, 0xc4, 0x3a, 0xf5, 0x9b, 0x3e, 0x33, 0xb3, 0x0e, 0xa2, - 0xb7, 0x38, 0x14, 0x96, 0x41, 0xd2, 0x41, 0x54, 0x94, 0xae, 0x1a, 0x85, 0xc3, 0x91, 0x9e, 0x7d, - 0x0f, 0xd1, 0x5d, 0xd7, 0x73, 0x99, 0xc9, 0x1d, 0x70, 0x09, 0x24, 0x18, 0x91, 0x35, 0x9a, 0x09, - 0x46, 0xe0, 0x0d, 0x90, 0xea, 0xa3, 0x6e, 0x0f, 0x8b, 0xa2, 0x72, 0xc6, 0xa5, 0xb9, 0x77, 0x1c, - 0x8e, 0xf4, 0x74, 0xd3, 0x23, 0x3d, 0x9f, 0x99, 0x32, 0x82, 0xd3, 0x21, 0x64, 0x4b, 0x4b, 0x3a, - 0x84, 0x40, 0x05, 0xa0, 0xf4, 0xb5, 0x8c, 0xd8, 0x50, 0xfa, 0xdc, 0x0a, 0xb5, 0xac, 0xb4, 0x42, - 0x6e, 0x51, 0x2d, 0x27, 0x2d, 0xba, 0xb1, 0xc4, 0x29, 0xf9, 0xee, 0xf1, 0x5a, 0xba, 0x35, 0xd8, - 0x42, 0x0c, 0x55, 0xbf, 0x49, 0x82, 0x42, 0x53, 0xf4, 0xe5, 0xae, 0x4b, 0x59, 0x6b, 0x00, 0x3f, - 0x00, 0x59, 0xab, 0x83, 0x5c, 0xbf, 0xed, 0xda, 0x82, 0x9a, 0x9c, 0xd1, 0x38, 0x2d, 0xb9, 0xcc, - 0x26, 0x07, 0xdf, 0xdc, 0x3a, 0x1e, 0xe9, 0x19, 0x4b, 0x2e, 0xcd, 0x68, 0x61, 0x4f, 0x38, 0x4e, - 0xcc, 0xe5, 0x38, 0xf9, 0x8f, 0x39, 0x56, 0x4f, 0xe7, 0x38, 0x15, 0xe7, 0x38, 0xfd, 0xd2, 0x1c, - 0x67, 0xa6, 0x38, 0xfe, 0x18, 0x64, 0xe5, 0x07, 0x8c, 0xa9, 0x96, 0xad, 0x24, 0x6b, 0xf9, 0xf5, - 0xd5, 0xfa, 0x8b, 0xff, 0x9d, 0xba, 0xa4, 0xb2, 0xc5, 0xbf, 0x70, 0xa3, 0xc2, 0xdb, 0xf2, 0x78, - 0xa4, 0x03, 0x74, 0xc2, 0xef, 0xd7, 0x3f, 0xeb, 0x60, 0xc2, 0xb6, 0x79, 0x72, 0xa0, 0x14, 0x30, - 0x37, 0x23, 0x20, 0x98, 0x11, 0x30, 0x3f, 0x4f, 0xc0, 0x3f, 0x92, 0xa0, 0xb0, 0x35, 0xf4, 0x91, - 0xe7, 0x5a, 0x3b, 0x18, 0xff, 0x27, 0x02, 0xde, 0x00, 0x79, 0x2e, 0x20, 0x73, 0x83, 0xb6, 0x85, - 0x82, 0xb3, 0x25, 0xe4, 0x72, 0xb7, 0xdc, 0x60, 0x13, 0x05, 0xe3, 0xd0, 0x03, 0x8c, 0x45, 0xa8, - 0xfa, 0x77, 0x42, 0x77, 0x30, 0xe6, 0xa1, 0x91, 0xfc, 0xa9, 0xd3, 0xe5, 0x4f, 0xc7, 0xe5, 0xcf, - 0xbc, 0xb4, 0xfc, 0xd9, 0x39, 0xf2, 0xe7, 0xfe, 0x15, 0xf9, 0xc1, 0x8c, 0xfc, 0xf9, 0x19, 0xf9, - 0x0b, 0xf3, 0xe4, 0xff, 0x49, 0x05, 0xb9, 0xdb, 0x98, 0x6d, 0x12, 0xfb, 0x95, 0xf6, 0xff, 0x4f, - 0xed, 0x11, 0xc8, 0xf1, 0xf7, 0xba, 0xdd, 0x75, 0x29, 0xd3, 0x80, 0x38, 0xfd, 0x72, 0xfc, 0xf4, - 0x48, 0xe3, 0xe6, 0xf4, 0xcb, 0x6e, 0x5c, 0x8c, 0xae, 0xc9, 0xf2, 0x03, 0xa2, 0x4b, 0xb2, 0xcd, - 0x68, 0x6d, 0x9e, 0xec, 0xca, 0xf6, 0xca, 0xcf, 0xb4, 0x57, 0x61, 0xa6, 0xbd, 0x16, 0xe7, 0xb5, - 0x57, 0x15, 0x94, 0xb6, 0x07, 0x0c, 0xfb, 0xd4, 0x25, 0xfe, 0x87, 0x81, 0x98, 0x7c, 0x26, 0x8f, - 0xec, 0x86, 0xca, 0xd1, 0xd5, 0x6f, 0x15, 0xb0, 0x32, 0x33, 0x59, 0x98, 0x98, 0x06, 0xc4, 0xa7, - 0x82, 0x4b, 0x31, 0x11, 0x88, 0x56, 0x34, 0xc5, 0x1a, 0x5e, 0x01, 0x6a, 0x97, 0x38, 0x54, 0x4b, - 0x88, 0x4a, 0x57, 0xe2, 0x95, 0xee, 0x12, 0xc7, 0x14, 0x10, 0x78, 0x1e, 0x24, 0x43, 0xcc, 0x44, - 0x8f, 0x15, 0x4c, 0xbe, 0x84, 0x45, 0x90, 0xed, 0x7b, 0x6d, 0x1c, 0x86, 0x24, 0x8c, 0x1e, 0xd3, - 0x4c, 0xdf, 0xdb, 0xe6, 0x26, 0x77, 0xf1, 0xee, 0xea, 0x51, 0x6c, 0xcb, 0x3e, 0x31, 0x33, 0x0e, - 0xa2, 0x77, 0x28, 0xb6, 0xe1, 0x2a, 0x00, 0xfb, 0x5d, 0x62, 0xdd, 0x95, 0xe3, 0x89, 0x7c, 0x37, - 0x73, 0x62, 0x87, 0x0f, 0x23, 0x51, 0x15, 0x0f, 0x15, 0x70, 0x6e, 0x8f, 0x3a, 0x77, 0x02, 0x1b, - 0x31, 0x7c, 0x4b, 0x0c, 0x5a, 0xfc, 0xa5, 0x8a, 0x46, 0x29, 0x36, 0x8c, 0xbe, 0x27, 0xed, 0xfb, - 0xc7, 0x6b, 0xcb, 0xd1, 0xd8, 0xd8, 0xb4, 0xed, 0x10, 0x53, 0x7a, 0x9b, 0x85, 0xae, 0xef, 0x98, - 0x13, 0x28, 0xbc, 0x0e, 0xd2, 0x72, 0x54, 0x13, 0xdf, 0x4e, 0x7e, 0x5d, 0x8b, 0x57, 0x29, 0x6f, - 0x30, 0x54, 0xae, 0xa0, 0x19, 0xa1, 0x37, 0x96, 0xf8, 0xac, 0x32, 0x39, 0xa7, 0x5a, 0x04, 0x17, - 0x5e, 0x48, 0x69, 0x4c, 0xed, 0xfa, 0x6f, 0x0a, 0x48, 0xee, 0x51, 0x07, 0x7e, 0x06, 0xa6, 0xa6, - 0x1e, 0xa8, 0xc7, 0x2f, 0x9a, 0x51, 0xa6, 0xf4, 0xe6, 0x19, 0x80, 0xf1, 0xf9, 0xd5, 0x37, 0x1e, - 0xfc, 0xf0, 0xeb, 0x97, 0x09, 0xbd, 0xba, 0xda, 0x88, 0x8d, 0x99, 0x38, 0x42, 0xb7, 0xd9, 0x00, - 0x7e, 0x02, 0x0a, 0x33, 0x8c, 0xbd, 0xf6, 0x97, 0xe7, 0x4f, 0x43, 0x4a, 0x57, 0xce, 0x84, 0x8c, - 0x93, 0x28, 0xa5, 0xee, 0x3f, 0x7f, 0x74, 0x55, 0x31, 0xde, 0x7d, 0x72, 0x58, 0x56, 0x9e, 0x1e, - 0x96, 0x95, 0x5f, 0x0e, 0xcb, 0xca, 0x17, 0x47, 0xe5, 0x85, 0xa7, 0x47, 0xe5, 0x85, 0x1f, 0x8f, - 0xca, 0x0b, 0x1f, 0x5d, 0x76, 0x5c, 0xd6, 0xe9, 0xed, 0xd7, 0x2d, 0xe2, 0xf1, 0xec, 0x08, 0x9d, - 0xca, 0x76, 0x20, 0xf2, 0x65, 0xc3, 0x00, 0xd3, 0xfd, 0xb4, 0x18, 0x6a, 0xdf, 0xfe, 0x33, 0x00, - 0x00, 0xff, 0xff, 0xe8, 0x95, 0x8e, 0xe7, 0x44, 0x0c, 0x00, 0x00, + // 1241 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0xcf, 0x8f, 0xdb, 0xc4, + 0x17, 0x5f, 0x27, 0xce, 0x0f, 0x4f, 0xd2, 0x6d, 0xbf, 0xfe, 0x6e, 0xa9, 0x13, 0x75, 0xe3, 0x34, + 0x85, 0x92, 0x16, 0x6d, 0x4c, 0x17, 0x54, 0xa9, 0x7b, 0x22, 0xee, 0x0f, 0x28, 0xda, 0x15, 0x95, + 0x9b, 0x5e, 0x00, 0x29, 0x9a, 0xb5, 0xa7, 0x8e, 0xd5, 0xd8, 0x63, 0x3c, 0x93, 0x90, 0x54, 0x42, + 0xaa, 0x7a, 0xe2, 0x48, 0xc5, 0x3f, 0xc0, 0x11, 0xc1, 0xa5, 0x87, 0x9e, 0xb9, 0x70, 0xa9, 0x38, + 0x55, 0x70, 0x41, 0x55, 0x15, 0xd0, 0x16, 0xa9, 0x52, 0x8f, 0x9c, 0x39, 0xa0, 0x99, 0x71, 0x7e, + 0xd5, 0x49, 0xb7, 0xac, 0x04, 0x12, 0x12, 0x97, 0x68, 0xde, 0xbc, 0xcf, 0x9b, 0x99, 0xf7, 0xf9, + 0xbc, 0xf1, 0xbc, 0x80, 0x12, 0xa2, 0x1d, 0x14, 0xf9, 0x5e, 0x40, 0x0d, 0xd4, 0xf7, 0x8d, 0xfe, + 0x59, 0x83, 0x0e, 0x1a, 0x61, 0x84, 0x29, 0x56, 0x8f, 0x4c, 0x5c, 0x0d, 0xd4, 0xf7, 0x1b, 0xfd, + 0xb3, 0xe5, 0xff, 0x41, 0xdf, 0x0b, 0xb0, 0xc1, 0x7f, 0x05, 0xa8, 0x7c, 0xcc, 0xc6, 0xc4, 0xc7, + 0xc4, 0xf0, 0x89, 0xcb, 0x82, 0x7d, 0xe2, 0xc6, 0x8e, 0x92, 0x70, 0xb4, 0xb9, 0x65, 0x08, 0x23, + 0x76, 0xad, 0xb9, 0xd8, 0xc5, 0x62, 0x9e, 0x8d, 0xe2, 0xd9, 0xe3, 0x2e, 0xc6, 0x6e, 0x17, 0x19, + 0x30, 0xf4, 0x0c, 0x18, 0x04, 0x98, 0x42, 0xea, 0xe1, 0x60, 0x1c, 0x53, 0x8a, 0xbd, 0xdc, 0xda, + 0xed, 0xdd, 0x30, 0x60, 0x30, 0x8c, 0x5d, 0x27, 0x13, 0x29, 0x40, 0xdb, 0x46, 0x84, 0xb4, 0x69, + 0x2f, 0xec, 0xa2, 0x18, 0x54, 0x4e, 0x80, 0xba, 0x78, 0x7c, 0xd4, 0xf5, 0x84, 0x2f, 0x84, 0x11, + 0xf4, 0xc7, 0x5b, 0x9f, 0x48, 0xba, 0x23, 0xe4, 0x05, 0x84, 0xc2, 0x6e, 0x37, 0x86, 0x6c, 0x24, + 0x20, 0x04, 0xd1, 0xb6, 0x8d, 0x1d, 0xd4, 0x86, 0x3d, 0xda, 0xc1, 0x91, 0x77, 0x8b, 0x67, 0x23, + 0xe0, 0xb5, 0xdb, 0x29, 0x70, 0x68, 0x87, 0xb8, 0x97, 0x58, 0x10, 0xea, 0xf9, 0xad, 0x81, 0x5a, + 0x07, 0xb2, 0x03, 0x29, 0xd4, 0xa4, 0xaa, 0x54, 0x2f, 0x6c, 0xae, 0x35, 0x44, 0xb6, 0x8d, 0x71, + 0xb6, 0x8d, 0x66, 0x30, 0xb4, 0x38, 0x42, 0x2d, 0x01, 0x99, 0x78, 0xb7, 0x90, 0x96, 0xaa, 0x4a, + 0x75, 0xc9, 0xcc, 0x3c, 0x1b, 0xe9, 0xd2, 0x86, 0xc5, 0xa7, 0xd4, 0xb7, 0xc1, 0x61, 0x07, 0x85, + 0x11, 0xb2, 0x21, 0x45, 0x4e, 0xbb, 0x03, 0x49, 0x47, 0x4b, 0x57, 0xa5, 0xba, 0x62, 0x16, 0x7e, + 0x1f, 0xe9, 0xb9, 0xa8, 0x1b, 0x6e, 0xd5, 0x36, 0x6a, 0xd6, 0xea, 0x14, 0xf3, 0x1e, 0x24, 0x1d, + 0xf5, 0x8d, 0xb9, 0xa8, 0x1b, 0x11, 0xf6, 0x35, 0x99, 0x47, 0xa5, 0x34, 0x69, 0x16, 0x7c, 0x39, + 0xc2, 0xbe, 0xaa, 0x02, 0x99, 0x23, 0x32, 0x55, 0xa9, 0x5e, 0xb4, 0xf8, 0x58, 0x7d, 0x15, 0xa4, + 0x23, 0xf8, 0xa9, 0x96, 0x65, 0x53, 0xa6, 0xfa, 0x60, 0xa4, 0xaf, 0x3c, 0x1a, 0xe9, 0x60, 0x9a, + 0x9c, 0xc5, 0xdc, 0x5b, 0x87, 0x3e, 0xff, 0x4a, 0x5f, 0xb9, 0xf3, 0xf4, 0xde, 0x19, 0x1e, 0x54, + 0xbb, 0x9b, 0x02, 0xf9, 0x6d, 0xe4, 0x42, 0x7b, 0xd8, 0x1a, 0xa8, 0x6b, 0x20, 0x13, 0xe0, 0xc0, + 0x46, 0x3c, 0x7d, 0xd9, 0x12, 0x86, 0x7a, 0x0e, 0x28, 0x2e, 0x64, 0x05, 0xe4, 0xd9, 0x22, 0x5d, + 0xc5, 0x2c, 0x3d, 0x1a, 0xe9, 0x47, 0x45, 0x2d, 0x11, 0xe7, 0x66, 0xc3, 0xc3, 0x86, 0x0f, 0x69, + 0xa7, 0x71, 0x25, 0xa0, 0x56, 0xde, 0x85, 0xe4, 0x2a, 0x83, 0xaa, 0x15, 0x90, 0x76, 0x21, 0xe1, + 0xa9, 0xcb, 0x66, 0x71, 0x6f, 0xa4, 0xe7, 0xdf, 0x85, 0x64, 0xdb, 0xf3, 0x3d, 0x6a, 0x31, 0x87, + 0xba, 0x0a, 0x52, 0x14, 0x8b, 0x1c, 0xad, 0x14, 0xc5, 0xea, 0x79, 0x90, 0xe9, 0xc3, 0x6e, 0x0f, + 0xf1, 0xa4, 0x14, 0xf3, 0xe4, 0xd2, 0x3d, 0xf6, 0x46, 0x7a, 0xb6, 0xe9, 0xe3, 0x5e, 0x40, 0x2d, + 0x11, 0xc1, 0xe8, 0xe0, 0xb2, 0x65, 0x05, 0x1d, 0x5c, 0xa0, 0x22, 0x90, 0xfa, 0x5a, 0x8e, 0x4f, + 0x48, 0x7d, 0x66, 0x45, 0x5a, 0x5e, 0x58, 0x11, 0xb3, 0x88, 0xa6, 0x08, 0x8b, 0x6c, 0xad, 0x32, + 0x4a, 0x7e, 0xb8, 0xbf, 0x91, 0x6d, 0x0d, 0x2e, 0x42, 0x0a, 0x6b, 0xdf, 0xa5, 0x41, 0xb1, 0xc9, + 0x4b, 0x77, 0xdb, 0x23, 0xb4, 0x35, 0x50, 0xdf, 0x07, 0x79, 0xbb, 0x03, 0xbd, 0xa0, 0xed, 0x39, + 0x9c, 0x1a, 0xc5, 0x34, 0x5e, 0x74, 0xb8, 0xdc, 0x05, 0x06, 0xbe, 0x72, 0xf1, 0xd9, 0x48, 0xcf, + 0xd9, 0x62, 0x68, 0xc5, 0x03, 0x67, 0xca, 0x71, 0x6a, 0x29, 0xc7, 0xe9, 0xbf, 0xcc, 0xb1, 0xfc, + 0x62, 0x8e, 0x33, 0x49, 0x8e, 0xb3, 0x07, 0xe6, 0x38, 0x37, 0xc3, 0xf1, 0x47, 0x20, 0x2f, 0xee, + 0x38, 0x22, 0x5a, 0xbe, 0x9a, 0xae, 0x17, 0x36, 0xd7, 0x1b, 0xcf, 0x7f, 0xad, 0x1a, 0x82, 0xca, + 0x16, 0xfb, 0x08, 0x98, 0x55, 0x56, 0x96, 0xcf, 0x46, 0x3a, 0x80, 0x13, 0x7e, 0xbf, 0xf9, 0x45, + 0x07, 0x53, 0xb6, 0xad, 0xc9, 0x82, 0x42, 0x40, 0x65, 0x4e, 0x40, 0x30, 0x27, 0x60, 0x61, 0x99, + 0x80, 0x7f, 0xa4, 0x41, 0xf1, 0xe2, 0x30, 0x80, 0xbe, 0x67, 0x5f, 0x46, 0xe8, 0x1f, 0x11, 0xf0, + 0x3c, 0x28, 0x30, 0x01, 0xa9, 0x17, 0xb6, 0x6d, 0x18, 0xee, 0x2f, 0x21, 0x93, 0xbb, 0xe5, 0x85, + 0x17, 0x60, 0x38, 0x0e, 0xbd, 0x81, 0x10, 0x0f, 0x95, 0x5f, 0x26, 0xf4, 0x32, 0x42, 0x2c, 0x34, + 0x96, 0x3f, 0xf3, 0x62, 0xf9, 0xb3, 0x49, 0xf9, 0x73, 0x07, 0x96, 0x3f, 0xbf, 0x44, 0x7e, 0xe5, + 0x6f, 0x91, 0x1f, 0xcc, 0xc9, 0x5f, 0x98, 0x93, 0xbf, 0xb8, 0x4c, 0xfe, 0xc7, 0x32, 0x50, 0xae, + 0x21, 0x7a, 0x01, 0x3b, 0xff, 0x69, 0xff, 0xef, 0xd4, 0x1e, 0x02, 0x85, 0xbd, 0xd7, 0xed, 0xae, + 0x47, 0xa8, 0x06, 0xf8, 0xea, 0xa7, 0x92, 0xab, 0xc7, 0x1a, 0x37, 0x67, 0x5f, 0x76, 0xf3, 0x78, + 0xbc, 0x4d, 0x9e, 0x2d, 0x10, 0x6f, 0x92, 0x6f, 0xc6, 0x63, 0x6b, 0x32, 0x2b, 0xca, 0xab, 0x30, + 0x57, 0x5e, 0xc5, 0xb9, 0xf2, 0x3a, 0xb4, 0xac, 0xbc, 0x6a, 0xa0, 0x7c, 0x69, 0x40, 0x51, 0x40, + 0x3c, 0x1c, 0x7c, 0x10, 0xf2, 0xe6, 0x68, 0xfa, 0xc8, 0x6e, 0xc9, 0x0c, 0x5d, 0xfb, 0x5e, 0x02, + 0x47, 0xe7, 0x3a, 0x0b, 0x0b, 0x91, 0x10, 0x07, 0x84, 0x73, 0xc9, 0x3b, 0x02, 0x5e, 0x8a, 0x16, + 0x1f, 0xab, 0xa7, 0x81, 0xdc, 0xc5, 0x2e, 0xd1, 0x52, 0x3c, 0xd3, 0xa3, 0xc9, 0x4c, 0xb7, 0xb1, + 0x6b, 0x71, 0x88, 0x7a, 0x04, 0xa4, 0x23, 0x44, 0x79, 0x8d, 0x15, 0x2d, 0x36, 0x54, 0x4b, 0x20, + 0xdf, 0xf7, 0xdb, 0x28, 0x8a, 0x70, 0x14, 0x3f, 0xa6, 0xb9, 0xbe, 0x7f, 0x89, 0x99, 0xcc, 0xc5, + 0xaa, 0xab, 0x47, 0x90, 0x23, 0xea, 0xc4, 0xca, 0xb9, 0x90, 0x5c, 0x27, 0xc8, 0x51, 0xd7, 0x01, + 0xd8, 0xed, 0x62, 0xfb, 0xa6, 0x68, 0x4f, 0xc4, 0xbb, 0xa9, 0xf0, 0x19, 0xd6, 0x8c, 0xc4, 0x59, + 0xdc, 0x95, 0xc0, 0xe1, 0x1d, 0xe2, 0x5e, 0x0f, 0x1d, 0x48, 0xd1, 0x55, 0xde, 0x8b, 0xb1, 0x97, + 0x2a, 0x6e, 0xa5, 0xe8, 0x30, 0xbe, 0x4f, 0xda, 0x8f, 0xf7, 0x37, 0xd6, 0xe2, 0xce, 0xb2, 0xe9, + 0x38, 0x11, 0x22, 0xe4, 0x1a, 0x8d, 0xbc, 0xc0, 0xb5, 0xa6, 0x50, 0xf5, 0x1c, 0xc8, 0x8a, 0x6e, + 0x8e, 0xdf, 0x9d, 0xc2, 0xa6, 0x96, 0xcc, 0x52, 0xec, 0x60, 0xca, 0x4c, 0x41, 0x2b, 0x46, 0x6f, + 0xad, 0xb2, 0x5e, 0x65, 0xba, 0x4e, 0xad, 0x04, 0x8e, 0x3d, 0x77, 0xa4, 0x31, 0xb5, 0xb5, 0x6f, + 0x25, 0xf0, 0xca, 0x0e, 0x71, 0x2d, 0xe4, 0x7a, 0x84, 0xa2, 0xe8, 0xea, 0xa4, 0x3b, 0x3c, 0xf8, + 0xa9, 0xaf, 0x80, 0xc2, 0xb4, 0xc9, 0x1c, 0x0b, 0x74, 0x7c, 0xc1, 0xd1, 0x27, 0x20, 0x53, 0x61, + 0xc7, 0xff, 0xfa, 0xe9, 0xbd, 0x33, 0x92, 0x35, 0x1b, 0x9b, 0x48, 0xa4, 0x0a, 0x2a, 0x8b, 0x0f, + 0x3b, 0xce, 0x67, 0xf3, 0x71, 0x0a, 0xa4, 0x77, 0x88, 0xab, 0x7e, 0x06, 0x66, 0xba, 0x38, 0x55, + 0x4f, 0xee, 0x3e, 0x57, 0x69, 0xe5, 0xd7, 0xf7, 0x01, 0x4c, 0xf8, 0x7a, 0xed, 0xce, 0x4f, 0xbf, + 0x7d, 0x99, 0xd2, 0x6b, 0xeb, 0x46, 0xa2, 0x6d, 0x46, 0x31, 0xba, 0x4d, 0x07, 0xea, 0xc7, 0xa0, + 0x38, 0x57, 0x01, 0x27, 0x16, 0xae, 0x3f, 0x0b, 0x29, 0x9f, 0xde, 0x17, 0x32, 0xb9, 0x0f, 0x9f, + 0x80, 0xff, 0x2f, 0x12, 0xac, 0xbe, 0x70, 0x85, 0x05, 0xc8, 0xf2, 0x9b, 0x2f, 0x8b, 0x1c, 0x6f, + 0x59, 0xce, 0xdc, 0x66, 0xea, 0x98, 0xef, 0x3c, 0xd8, 0xab, 0x48, 0x0f, 0xf7, 0x2a, 0xd2, 0xaf, + 0x7b, 0x15, 0xe9, 0x8b, 0x27, 0x95, 0x95, 0x87, 0x4f, 0x2a, 0x2b, 0x3f, 0x3f, 0xa9, 0xac, 0x7c, + 0x78, 0xca, 0xf5, 0x68, 0xa7, 0xb7, 0xdb, 0xb0, 0xb1, 0xcf, 0x08, 0xc1, 0x64, 0x86, 0xa0, 0x01, + 0xa7, 0x88, 0x0e, 0x43, 0x44, 0x76, 0xb3, 0xfc, 0x7f, 0xc1, 0x5b, 0x7f, 0x06, 0x00, 0x00, 0xff, + 0xff, 0x8a, 0x83, 0x91, 0x5e, 0xbd, 0x0d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -616,6 +718,9 @@ type MsgClient interface { // UpdateParams defined a governance operation for updating the x/evm module parameters. // The authority is hard-coded to the Cosmos SDK x/gov module account UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + // UpdateParams defined a governance operation for updating the x/evm module parameters. + // The authority is hard-coded to the Cosmos SDK x/gov module account + RegisterPreinstalls(ctx context.Context, in *MsgRegisterPreinstalls, opts ...grpc.CallOption) (*MsgRegisterPreinstallsResponse, error) } type msgClient struct { @@ -644,6 +749,15 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts return out, nil } +func (c *msgClient) RegisterPreinstalls(ctx context.Context, in *MsgRegisterPreinstalls, opts ...grpc.CallOption) (*MsgRegisterPreinstallsResponse, error) { + out := new(MsgRegisterPreinstallsResponse) + err := c.cc.Invoke(ctx, "/ethermint.evm.v1.Msg/RegisterPreinstalls", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { // EthereumTx defines a method submitting Ethereum transactions. @@ -651,6 +765,9 @@ type MsgServer interface { // UpdateParams defined a governance operation for updating the x/evm module parameters. // The authority is hard-coded to the Cosmos SDK x/gov module account UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + // UpdateParams defined a governance operation for updating the x/evm module parameters. + // The authority is hard-coded to the Cosmos SDK x/gov module account + RegisterPreinstalls(context.Context, *MsgRegisterPreinstalls) (*MsgRegisterPreinstallsResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -663,6 +780,9 @@ func (*UnimplementedMsgServer) EthereumTx(ctx context.Context, req *MsgEthereumT func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") } +func (*UnimplementedMsgServer) RegisterPreinstalls(ctx context.Context, req *MsgRegisterPreinstalls) (*MsgRegisterPreinstallsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RegisterPreinstalls not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -704,6 +824,24 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } +func _Msg_RegisterPreinstalls_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRegisterPreinstalls) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RegisterPreinstalls(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ethermint.evm.v1.Msg/RegisterPreinstalls", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RegisterPreinstalls(ctx, req.(*MsgRegisterPreinstalls)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "ethermint.evm.v1.Msg", HandlerType: (*MsgServer)(nil), @@ -716,6 +854,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "UpdateParams", Handler: _Msg_UpdateParams_Handler, }, + { + MethodName: "RegisterPreinstalls", + Handler: _Msg_RegisterPreinstalls_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "ethermint/evm/v1/tx.proto", @@ -1433,6 +1575,73 @@ func (m *MsgUpdateParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *MsgRegisterPreinstalls) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRegisterPreinstalls) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRegisterPreinstalls) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Preinstalls) > 0 { + for iNdEx := len(m.Preinstalls) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Preinstalls[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgRegisterPreinstallsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRegisterPreinstallsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRegisterPreinstallsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func encodeVarintTx(dAtA []byte, offset int, v uint64) int { offset -= sovTx(v) base := offset @@ -1757,6 +1966,34 @@ func (m *MsgUpdateParamsResponse) Size() (n int) { return n } +func (m *MsgRegisterPreinstalls) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Preinstalls) > 0 { + for _, e := range m.Preinstalls { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgRegisterPreinstallsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func sovTx(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -4069,6 +4306,172 @@ func (m *MsgUpdateParamsResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgRegisterPreinstalls) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRegisterPreinstalls: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRegisterPreinstalls: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Preinstalls", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Preinstalls = append(m.Preinstalls, Preinstall{}) + if err := m.Preinstalls[len(m.Preinstalls)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRegisterPreinstallsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRegisterPreinstallsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRegisterPreinstallsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipTx(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/evm/types/utils.go b/x/evm/types/utils.go index da075df587..8929caf1ee 100644 --- a/x/evm/types/utils.go +++ b/x/evm/types/utils.go @@ -16,6 +16,7 @@ package types import ( + "bytes" "encoding/hex" "encoding/json" "fmt" @@ -251,3 +252,8 @@ func GetBaseFee(height int64, ethCfg *params.ChainConfig, feemarketParams *feema } return baseFee } + +// IsEmptyCodeHash checks if the given byte slice represents an empty code hash. +func IsEmptyCodeHash(bz []byte) bool { + return bytes.Equal(bz, EmptyCodeHash) +} From 06f5a7b36e761c85e32cd863bbf44519913289f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 04:32:48 +0000 Subject: [PATCH 167/210] build(deps): bump google.golang.org/protobuf from 1.36.9 to 1.36.10 (#744) * build(deps): bump google.golang.org/protobuf from 1.36.9 to 1.36.10 Bumps google.golang.org/protobuf from 1.36.9 to 1.36.10. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-version: 1.36.10 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * update gomod2nix --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas Nguy --- go.mod | 2 +- go.sum | 4 ++-- gomod2nix.toml | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 85a2c8e717..8f82fc299f 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,7 @@ require ( golang.org/x/text v0.28.0 google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.9 + google.golang.org/protobuf v1.36.10 sigs.k8s.io/yaml v1.6.0 ) diff --git a/go.sum b/go.sum index e4b5f515b2..6fbe5c6d60 100644 --- a/go.sum +++ b/go.sum @@ -2541,8 +2541,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= -google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/gomod2nix.toml b/gomod2nix.toml index 265a82cf65..6b2433f951 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -691,8 +691,8 @@ schema = 3 version = "v1.1.0" hash = "sha256-3YhWBtSwRLGwm7vNwqumphZG3uLBW1vwT9QkQ8JuSjU=" [mod."github.com/ulikunitz/xz"] - version = "v0.5.14" - hash = "sha256-21oXcIVmFyw+ukGQtflly0wpqaqh1jE0C9hLDSFYR7E=" + version = "v0.5.15" + hash = "sha256-L5KYLue5U14bxUuNyhZ6lIjbda6eCQsx1V6gToqfRdk=" [mod."github.com/zeebo/errs"] version = "v1.4.0" hash = "sha256-vh1b1ns2mFyr5KCECjQd2pf2JKfUfB6oR2O+k/vFda8=" @@ -793,8 +793,8 @@ schema = 3 version = "v1.75.1" hash = "sha256-t5w9BLW8P3SuxHRSAqsVBn8kddzCDKVijh4oxatLIps=" [mod."google.golang.org/protobuf"] - version = "v1.36.9" - hash = "sha256-i4zQhGFR6KprA5elLw33bA1VdMLAnL+Du3gBmrea+3Y=" + version = "v1.36.10" + hash = "sha256-gUrj1qSpjcpRKCBnrYlKMm+P0OSh7B/8EBREstwhD1w=" [mod."gopkg.in/yaml.v3"] version = "v3.0.1" hash = "sha256-FqL9TKYJ0XkNwJFnq9j0VvJ5ZUU1RvH/52h/f5bkYAU=" From 5e0e7ba1ef3016c5389ee604f994c728e0f9cd72 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 05:08:46 +0000 Subject: [PATCH 168/210] build(deps): bump github.com/onsi/ginkgo/v2 from 2.25.3 to 2.26.0 (#745) * build(deps): bump github.com/onsi/ginkgo/v2 from 2.25.3 to 2.26.0 Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.25.3 to 2.26.0. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.25.3...v2.26.0) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-version: 2.26.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * update gomod2nix.toml --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas Nguy Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> --- go.mod | 5 +++-- go.sum | 23 ++++++++++++++++++++--- gomod2nix.toml | 11 +++++++---- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 8f82fc299f..890f9f787e 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/hashicorp/go-metrics v0.5.4 github.com/holiman/uint256 v1.3.2 github.com/improbable-eng/grpc-web v0.15.0 - github.com/onsi/ginkgo/v2 v2.25.3 + github.com/onsi/ginkgo/v2 v2.26.0 github.com/onsi/gomega v1.38.2 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 @@ -236,7 +236,7 @@ require ( github.com/tendermint/go-amino v0.16.0 // indirect github.com/tidwall/btree v1.7.0 // indirect github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect @@ -261,6 +261,7 @@ require ( golang.org/x/arch v0.17.0 // indirect golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect + golang.org/x/mod v0.27.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sys v0.35.0 // indirect golang.org/x/term v0.34.0 // indirect diff --git a/go.sum b/go.sum index 6fbe5c6d60..d7b9994f3c 100644 --- a/go.sum +++ b/go.sum @@ -1008,6 +1008,12 @@ github.com/getsentry/sentry-go v0.33.0/go.mod h1:C55omcY9ChRQIUcVcGcs+Zdy4ZpQGvN github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= +github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= +github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= +github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= +github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= +github.com/gkampitakis/go-snaps v0.5.14 h1:3fAqdB6BCPKHDMHAKRwtPUwYexKtGrNuw8HX/T/4neo= +github.com/gkampitakis/go-snaps v0.5.14/go.mod h1:HNpx/9GoKisdhw9AFOBT1N7DBs9DiHo/hGheFGBZ+mc= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= @@ -1061,6 +1067,8 @@ github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22 github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= +github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -1329,6 +1337,8 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfC github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/joshdk/go-junit v1.0.0 h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE= +github.com/joshdk/go-junit v1.0.0/go.mod h1:TiiV0PqkaNfFXjEiyjWM3XXrhVyCa1K4Zfga6W52ung= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -1393,6 +1403,8 @@ github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0V github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= +github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= @@ -1414,6 +1426,8 @@ github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZ github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mfridman/tparse v0.18.0 h1:wh6dzOKaIwkUGyKgOntDW4liXSo37qg5AXbIhkMV3vE= +github.com/mfridman/tparse v0.18.0/go.mod h1:gEvqZTuCgEhPbYk/2lS3Kcxg1GmTxxU7kTC8DvP0i/A= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= @@ -1473,8 +1487,8 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.25.3 h1:Ty8+Yi/ayDAGtk4XxmmfUy4GabvM+MegeB4cDLRi6nw= -github.com/onsi/ginkgo/v2 v2.25.3/go.mod h1:43uiyQC4Ed2tkOzLsEYm7hnrb7UJTWHYNsuy3bG/snE= +github.com/onsi/ginkgo/v2 v2.26.0 h1:1J4Wut1IlYZNEAWIV3ALrT9NfiaGW2cDCJQSFQMs/gE= +github.com/onsi/ginkgo/v2 v2.26.0/go.mod h1:qhEywmzWTBUY88kfO0BRvX4py7scov9yR+Az2oavUzw= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= @@ -1684,8 +1698,9 @@ github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= @@ -1871,6 +1886,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= diff --git a/gomod2nix.toml b/gomod2nix.toml index 6b2433f951..c610a18b08 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -548,8 +548,8 @@ schema = 3 version = "v0.0.5" hash = "sha256-/5i70IkH/qSW5KjGzv8aQNKh9tHoz98tqtL0K2DMFn4=" [mod."github.com/onsi/ginkgo/v2"] - version = "v2.25.3" - hash = "sha256-JHDyNg2KVJorSO2LPXNKZSNRnd3qpP0OsfX2FuW6qsY=" + version = "v2.26.0" + hash = "sha256-LRifEh9AWOTQ6FGWAinv89+9r6eYgtC4y5QYWvnxeTY=" [mod."github.com/onsi/gomega"] version = "v1.38.2" hash = "sha256-chit6Aia8qLfUfn/2stQmXG/nqM13fDN7edfixXBFsM=" @@ -673,8 +673,8 @@ schema = 3 version = "v1.1.1" hash = "sha256-M2klhPId3Q3T3VGkSbOkYl/2nLHnsG+yMbXkPkyrRdg=" [mod."github.com/tidwall/pretty"] - version = "v1.2.0" - hash = "sha256-esRQGsn2Ee/CiySlwyuOICSLdqUkH4P7u8qXszos8Yc=" + version = "v1.2.1" + hash = "sha256-S0uTDDGD8qr415Ut7QinyXljCp0TkL4zOIrlJ+9OMl8=" [mod."github.com/tidwall/sjson"] version = "v1.2.5" hash = "sha256-OYGNolkmL7E1Qs2qrQ3IVpQp5gkcHNU/AB/z2O+Myps=" @@ -753,6 +753,9 @@ schema = 3 [mod."golang.org/x/exp"] version = "v0.0.0-20250305212735-054e65f0b394" hash = "sha256-Vgt/CNx/xJYxiKKu0PI7ZSiL/SOfXI4di3Mcyge3aw4=" + [mod."golang.org/x/mod"] + version = "v0.27.0" + hash = "sha256-9BDHc706SSfIYg8Sdvph4+wXOPtyLxIIO2MJ5y6/Mv8=" [mod."golang.org/x/net"] version = "v0.43.0" hash = "sha256-bf3iQFrsC8BoarVaS0uSspEFAcr1zHp1uziTtBpwV34=" From 164da0caf703373ea42420c9ee6ec5781b1b90cf Mon Sep 17 00:00:00 2001 From: "Thomas N." <81727899+thomas-nguy@users.noreply.github.com> Date: Tue, 7 Oct 2025 10:17:37 +0900 Subject: [PATCH 169/210] feat: eip-2935 support (#722) * eip-2935 support # Conflicts: # x/evm/migrations/v4/types/params_v4.pb.go * revert proto * add more comments * fix conversion * add changelog * fix test * add fallback old behavior * add more comments * fix proto * add logs * fix GetHashFn * remove log * fix historical data * fix lint * small optimize * fix tests * fix changelog --- CHANGELOG.md | 1 + proto/ethermint/evm/v1/params.proto | 3 + x/evm/keeper/keeper.go | 64 ++++++++++++--- x/evm/keeper/keeper_test.go | 45 ++++++++--- x/evm/keeper/state_transition.go | 48 +++++++----- x/evm/keeper/state_transition_test.go | 6 -- x/evm/migrations/v4/types/params_v4.pb.go | 3 +- x/evm/types/params.go | 3 + x/evm/types/params.pb.go | 94 ++++++++++++++++------- 9 files changed, 187 insertions(+), 80 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a831e32b58..ba97e44ae6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#740](https://github.com/crypto-org-chain/ethermint/pull/740) fix: missing tx context during vm initialisation * (evm) [#742](https://github.com/crypto-org-chain/ethermint/pull/742) fix: prevent nil pointer dereference in tracer hooks * (evm) [#728](https://github.com/crypto-org-chain/ethermint/pull/728) feat: support preinstalls +* (evm) [#722](https://github.com/crypto-org-chain/ethermint/pull/722) feat: support EIP-2935 ## [v0.22.0] - 2025-08-12 diff --git a/proto/ethermint/evm/v1/params.proto b/proto/ethermint/evm/v1/params.proto index 48c0c944ce..f4e8482f7a 100644 --- a/proto/ethermint/evm/v1/params.proto +++ b/proto/ethermint/evm/v1/params.proto @@ -24,4 +24,7 @@ message Params { bool allow_unprotected_txs = 6; // header_hash_num is the number of header hash to persist. uint64 header_hash_num = 7; + // historyServeWindow for EIP 2935 + uint64 history_serve_window = 8; + } \ No newline at end of file diff --git a/x/evm/keeper/keeper.go b/x/evm/keeper/keeper.go index d41f613a5b..603f0b9edf 100644 --- a/x/evm/keeper/keeper.go +++ b/x/evm/keeper/keeper.go @@ -16,6 +16,7 @@ package keeper import ( + "encoding/binary" "math/big" "github.com/ethereum/go-ethereum/crypto" @@ -31,7 +32,7 @@ import ( "github.com/ethereum/go-ethereum/core/tracing" ethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/params" + ethparams "github.com/ethereum/go-ethereum/params" ethermint "github.com/evmos/ethermint/types" "github.com/evmos/ethermint/x/evm/statedb" "github.com/evmos/ethermint/x/evm/types" @@ -39,7 +40,7 @@ import ( ) // CustomContractFn defines a custom precompiled contract generator with ctx, rules and returns a precompiled contract. -type CustomContractFn func(sdk.Context, params.Rules) vm.PrecompiledContract +type CustomContractFn func(sdk.Context, ethparams.Rules) vm.PrecompiledContract // GasNoLimit is the value for keeper.queryMaxGasLimit in case there is no limit const GasNoLimit = 0 @@ -216,7 +217,7 @@ func (k *Keeper) PostTxProcessing(ctx sdk.Context, msg *core.Message, receipt *e } // Tracer return a default vm.Tracer based on current keeper state -func (k Keeper) Tracer(ctx sdk.Context, msg core.Message, ethCfg *params.ChainConfig) *tracing.Hooks { +func (k Keeper) Tracer(ctx sdk.Context, msg core.Message, ethCfg *ethparams.ChainConfig) *tracing.Hooks { return types.NewTracer(k.tracer, msg, ethCfg, ctx.BlockHeight(), uint64(ctx.BlockTime().Unix())) //#nosec G115 -- int overflow is not a concern here } @@ -278,7 +279,7 @@ func (k *Keeper) GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) // - `nil`: london hardfork not enabled. // - `0`: london hardfork enabled but feemarket is not enabled. // - `n`: both london hardfork and feemarket are enabled. -func (k Keeper) GetBaseFee(ctx sdk.Context, ethCfg *params.ChainConfig) *big.Int { +func (k Keeper) GetBaseFee(ctx sdk.Context, ethCfg *ethparams.ChainConfig) *big.Int { return k.getBaseFee(ctx, types.IsLondon(ethCfg, ctx.BlockHeight())) } @@ -322,18 +323,57 @@ func (k Keeper) AddTransientGasUsed(ctx sdk.Context, gasUsed uint64) (uint64, er // SetHeaderHash stores the hash of the current block header in the store. func (k Keeper) SetHeaderHash(ctx sdk.Context) { - store := ctx.KVStore(k.storeKey) - height, err := ethermint.SafeUint64(ctx.BlockHeight()) - if err != nil { - panic(err) + acct := k.GetAccount(ctx, ethparams.HistoryStorageAddress) + if acct != nil && acct.IsContract() { + window := types.DefaultHistoryServeWindow + params := k.GetParams(ctx) + if params.HistoryServeWindow > 0 { + window = params.HistoryServeWindow + } + // set current block hash in the contract storage, compatible with EIP-2935 + ringIndex := uint64(ctx.BlockHeight()) % window //nolint:gosec // G115 // won't exceed uint64 + var key common.Hash + binary.BigEndian.PutUint64(key[24:], ringIndex) + k.SetState(ctx, ethparams.HistoryStorageAddress, key, ctx.HeaderHash()) + } else { + // fallback old implementation + store := ctx.KVStore(k.storeKey) + height, err := ethermint.SafeUint64(ctx.BlockHeight()) + if err != nil { + panic(err) + } + store.Set(types.GetHeaderHashKey(height), ctx.HeaderHash()) } - store.Set(types.GetHeaderHashKey(height), ctx.HeaderHash()) } -// GetHeaderHash retrieves the hash of a block header from the store by height. -func (k Keeper) GetHeaderHash(ctx sdk.Context, height uint64) []byte { +// GetHeaderHash sets block hash into EIP-2935 compatible storage contract. +func (k Keeper) GetHeaderHash(ctx sdk.Context, height uint64) common.Hash { + // check if history contract has been deployed + acct := k.GetAccount(ctx, ethparams.HistoryStorageAddress) + if acct != nil && acct.IsContract() { + window := types.DefaultHistoryServeWindow + params := k.GetParams(ctx) + if params.HistoryServeWindow > 0 { + window = params.HistoryServeWindow + } + + ringIndex := height % window + var key common.Hash + binary.BigEndian.PutUint64(key[24:], ringIndex) + hash := k.GetState(ctx, ethparams.HistoryStorageAddress, key) + + if hash.Cmp(common.Hash{}) != 0 { + return hash + } + } + // fall back to old behavior for retro compatibility + // TODO can be removed along with DeleteHeaderHash once HistoryStorage has been filled up in next protocol upgrade store := ctx.KVStore(k.storeKey) - return store.Get(types.GetHeaderHashKey(height)) + hashByte := store.Get(types.GetHeaderHashKey(height)) + if len(hashByte) > 0 { + return common.BytesToHash(hashByte) + } + return common.Hash{} } // DeleteHeaderHash removes the hash of a block header from the store by height diff --git a/x/evm/keeper/keeper_test.go b/x/evm/keeper/keeper_test.go index bde3244214..67f820c128 100644 --- a/x/evm/keeper/keeper_test.go +++ b/x/evm/keeper/keeper_test.go @@ -4,6 +4,7 @@ import ( _ "embed" "math" "math/big" + "strings" "testing" sdkmath "cosmossdk.io/math" @@ -127,7 +128,11 @@ func (suite *KeeperTestSuite) TestGetAccountStorage() { if tc.malleate != nil { contractAddr = tc.malleate() } - i := 0 + + var results []struct { + addr common.Address + storage types.Storage + } suite.App.AccountKeeper.IterateAccounts(suite.Ctx, func(account sdk.AccountI) bool { ethAccount, ok := account.(ethermint.EthAccountI) if !ok { @@ -137,21 +142,39 @@ func (suite *KeeperTestSuite) TestGetAccountStorage() { addr := ethAccount.EthAddress() storage := suite.App.EvmKeeper.GetAccountStorage(suite.Ctx, addr) + results = append(results, struct { + addr common.Address + storage types.Storage + }{addr, storage}) + return false + }) + + isPreinstall := func(addr common.Address) bool { + for _, p := range types.DefaultPreinstalls { + if strings.EqualFold(addr.Hex(), p.Address) { + return true + } + } + return false + } - if addr == contractAddr { - s.Require().NotEqual(0, len(storage), - "expected account %d to have non-zero amount of storage slots, got %d", - i, len(storage), + for _, r := range results { + if isPreinstall(r.addr) { + // skip preinstall + continue + } + if r.addr == contractAddr { + suite.Require().NotEqual(0, len(r.storage), + "expected account address %s to have non-zero amount of storage slots, got %d", + r.addr.Hex(), len(r.storage), ) } else { - s.Require().Len(storage, 0, - "expected account %d to have %d storage slots, got %d", - i, 0, len(storage), + suite.Require().Len(r.storage, 0, + "expected account address %s to have %d storage slots, got %d", + r.addr.Hex(), 0, len(r.storage), ) } - i++ - return false - }) + } }) } } diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index 938efebabb..22835f08f5 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -21,6 +21,8 @@ import ( "math/big" "sort" + cmttypes "github.com/cometbft/cometbft/types" + errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" @@ -29,7 +31,6 @@ import ( "github.com/evmos/ethermint/x/evm/types" "github.com/holiman/uint256" - cmttypes "github.com/cometbft/cometbft/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/tracing" @@ -95,8 +96,8 @@ func (k *Keeper) NewEVM( // GetHashFn implements vm.GetHashFunc for Ethermint. It returns hash for 3 cases: // 1. The requested height matches current block height from the context. -// 2. The requested height is within the valid range, retrieve the hash from GetHeaderHash for heights after sdk50. -// 3. The requested height is within the valid range, retrieve the hash from GetHistoricalInfo for heights before sdk50. +// 2. The requested height is below current block height, follow EIP-2935. +// 3. The requested height is above current block height, return empty func (k Keeper) GetHashFn(ctx sdk.Context) vm.GetHashFunc { return func(num64 uint64) common.Hash { h, err := ethermint.SafeInt64(num64) @@ -114,31 +115,36 @@ func (k Keeper) GetHashFn(ctx sdk.Context) vm.GetHashFunc { } } // Align check with https://github.com/ethereum/go-ethereum/blob/release/1.11/core/vm/instructions.go#L433 - headerNum := k.GetParams(ctx).HeaderHashNum var lower uint64 + headerNum := k.GetParams(ctx).HeaderHashNum if upper <= headerNum { lower = 0 } else { lower = upper - headerNum } - if num64 < lower || num64 >= upper { - return common.Hash{} - } - hash := k.GetHeaderHash(ctx, num64) - if len(hash) > 0 { - return common.BytesToHash(hash) - } - histInfo, err := k.stakingKeeper.GetHistoricalInfo(ctx, h) - if err != nil { - k.Logger(ctx).Debug("historical info not found", "height", h, "err", err.Error()) - return common.Hash{} - } - header, err := cmttypes.HeaderFromProto(&histInfo.Header) - if err != nil { - k.Logger(ctx).Error("failed to cast tendermint header from proto", "error", err) - return common.Hash{} + + if upper > num64 { + // The requested height is historical, query EIP-2935 contract storage + headerHash := k.GetHeaderHash(ctx, num64) + if headerHash.Cmp(common.Hash{}) != 0 { + return headerHash + } else if num64 >= lower { + // Pre upgrade case + // In case EIP-2935 is not supported and data cannot be found, we fetch historical info + histInfo, err := k.stakingKeeper.GetHistoricalInfo(ctx, h) + if err != nil { + k.Logger(ctx).Debug("historical info not found", "height", h, "err", err.Error()) + return common.Hash{} + } + header, err := cmttypes.HeaderFromProto(&histInfo.Header) + if err != nil { + k.Logger(ctx).Error("failed to cast tendermint header from proto", "error", err) + return common.Hash{} + } + return common.BytesToHash(header.Hash()) + } } - return common.BytesToHash(header.Hash()) + return common.Hash{} } } diff --git a/x/evm/keeper/state_transition_test.go b/x/evm/keeper/state_transition_test.go index 2a525158b7..5bcc3c6f7b 100644 --- a/x/evm/keeper/state_transition_test.go +++ b/x/evm/keeper/state_transition_test.go @@ -169,12 +169,6 @@ func (suite *StateTransitionTestSuite) TestGetHashFn() { func(_ int64) {}, common.Hash{}, }, - { - "height less than header hash num range", - height - evmtypes.DefaultHeaderHashNum - 1, - func(_ int64) {}, - common.Hash{}, - }, { "header not found in stores", height - 1, diff --git a/x/evm/migrations/v4/types/params_v4.pb.go b/x/evm/migrations/v4/types/params_v4.pb.go index 2d74ed4b13..3a93df5dd6 100644 --- a/x/evm/migrations/v4/types/params_v4.pb.go +++ b/x/evm/migrations/v4/types/params_v4.pb.go @@ -6,12 +6,11 @@ package types import ( fmt "fmt" _ "github.com/cosmos/gogoproto/gogoproto" - v0types "github.com/evmos/ethermint/x/evm/migrations/v0/types" proto "github.com/cosmos/gogoproto/proto" + v0types "github.com/evmos/ethermint/x/evm/migrations/v0/types" io "io" math "math" math_bits "math/bits" - ) // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/evm/types/params.go b/x/evm/types/params.go index 2dd5563988..29c0f30ae6 100644 --- a/x/evm/types/params.go +++ b/x/evm/types/params.go @@ -36,6 +36,8 @@ var ( DefaultEnableCall = true // DefaultHeaderHashNum defines the default number of header hash to persist. DefaultHeaderHashNum = uint64(256) + // DefaultHistoryServeWindow DefaultHeaderHashNum defines the default number of hystorical value to serve for EIP2935. + DefaultHistoryServeWindow = uint64(8192) // same as EIP-2935 ) // NewParams creates a new Params instance @@ -61,6 +63,7 @@ func DefaultParams() Params { ChainConfig: config, AllowUnprotectedTxs: DefaultAllowUnprotectedTxs, HeaderHashNum: DefaultHeaderHashNum, + HistoryServeWindow: DefaultHistoryServeWindow, } } diff --git a/x/evm/types/params.pb.go b/x/evm/types/params.pb.go index 165d458898..3329c1cac6 100644 --- a/x/evm/types/params.pb.go +++ b/x/evm/types/params.pb.go @@ -41,6 +41,8 @@ type Params struct { AllowUnprotectedTxs bool `protobuf:"varint,6,opt,name=allow_unprotected_txs,json=allowUnprotectedTxs,proto3" json:"allow_unprotected_txs,omitempty"` // header_hash_num is the number of header hash to persist. HeaderHashNum uint64 `protobuf:"varint,7,opt,name=header_hash_num,json=headerHashNum,proto3" json:"header_hash_num,omitempty"` + // historyServeWindow for EIP 2935 + HistoryServeWindow uint64 `protobuf:"varint,8,opt,name=history_serve_window,json=historyServeWindow,proto3" json:"history_serve_window,omitempty"` } func (m *Params) Reset() { *m = Params{} } @@ -125,6 +127,13 @@ func (m *Params) GetHeaderHashNum() uint64 { return 0 } +func (m *Params) GetHistoryServeWindow() uint64 { + if m != nil { + return m.HistoryServeWindow + } + return 0 +} + func init() { proto.RegisterType((*Params)(nil), "ethermint.evm.v1.Params") } @@ -132,34 +141,36 @@ func init() { func init() { proto.RegisterFile("ethermint/evm/v1/params.proto", fileDescriptor_e7d3c06c1322f20f) } var fileDescriptor_e7d3c06c1322f20f = []byte{ - // 423 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0x41, 0x8b, 0xd3, 0x40, - 0x18, 0x86, 0x1b, 0x5b, 0xeb, 0x76, 0xba, 0x8b, 0xeb, 0x58, 0x65, 0x58, 0xd8, 0x24, 0x44, 0x58, - 0x72, 0x4a, 0xe8, 0x7a, 0x10, 0x04, 0x41, 0x53, 0x2b, 0x7a, 0x91, 0x25, 0xe8, 0xc5, 0xcb, 0x30, - 0x4d, 0x3f, 0x9b, 0xc0, 0x4c, 0x26, 0x64, 0xa6, 0xb1, 0xfb, 0x2f, 0x3c, 0xfb, 0x8b, 0xf6, 0xb8, - 0x47, 0x4f, 0x41, 0xda, 0x7f, 0xd0, 0x5f, 0x20, 0x99, 0xd4, 0x76, 0xd5, 0xdb, 0x7c, 0xdf, 0xf3, - 0xbe, 0x1f, 0xcc, 0xfb, 0xa2, 0x73, 0xd0, 0x29, 0x94, 0x22, 0xcb, 0x75, 0x08, 0x95, 0x08, 0xab, - 0x71, 0x58, 0xb0, 0x92, 0x09, 0x15, 0x14, 0xa5, 0xd4, 0x12, 0x9f, 0xee, 0x71, 0x00, 0x95, 0x08, - 0xaa, 0xf1, 0xd9, 0x68, 0x21, 0x17, 0xd2, 0xc0, 0xb0, 0x79, 0xb5, 0xba, 0xb3, 0x67, 0xff, 0x9d, - 0x49, 0x52, 0x96, 0xe5, 0x34, 0x91, 0xf9, 0xd7, 0x6c, 0xd1, 0x8a, 0xbc, 0x1f, 0x5d, 0xd4, 0xbf, - 0x32, 0xd7, 0xf1, 0x18, 0x0d, 0xa0, 0x12, 0x74, 0x0e, 0xb9, 0x14, 0xc4, 0x72, 0x2d, 0x7f, 0x10, - 0x8d, 0xb6, 0xb5, 0x73, 0x7a, 0xcd, 0x04, 0x7f, 0xe9, 0xed, 0x91, 0x17, 0x1f, 0x41, 0x25, 0xde, - 0x36, 0x4f, 0xfc, 0x0a, 0x9d, 0x40, 0xce, 0x66, 0x1c, 0x68, 0x52, 0x02, 0xd3, 0x40, 0xee, 0xb9, - 0x96, 0x7f, 0x14, 0x91, 0x6d, 0xed, 0x8c, 0x76, 0xb6, 0xbb, 0xd8, 0x8b, 0x8f, 0xdb, 0x79, 0x62, - 0x46, 0xfc, 0x02, 0x0d, 0xff, 0x70, 0xc6, 0x39, 0xe9, 0x1a, 0xf3, 0xd3, 0x6d, 0xed, 0xe0, 0xbf, - 0xcd, 0x8c, 0x73, 0x2f, 0x46, 0x3b, 0x2b, 0xe3, 0x1c, 0xbf, 0x41, 0x08, 0x56, 0xba, 0x64, 0x14, - 0xb2, 0x42, 0x91, 0x9e, 0xdb, 0xf5, 0xbb, 0x91, 0xb7, 0xae, 0x9d, 0xc1, 0xb4, 0xd9, 0x4e, 0x3f, - 0x5c, 0xa9, 0x6d, 0xed, 0x3c, 0xda, 0x1d, 0xd9, 0x0b, 0xbd, 0x78, 0x60, 0x86, 0x69, 0x56, 0x28, - 0xfc, 0x0e, 0x1d, 0xdf, 0x8d, 0x83, 0xdc, 0x77, 0x2d, 0x7f, 0x78, 0x79, 0x1e, 0xfc, 0x1b, 0x6e, - 0x30, 0x69, 0x54, 0x13, 0x23, 0x8a, 0x7a, 0x37, 0xb5, 0xd3, 0x89, 0x87, 0xc9, 0x61, 0x85, 0x2f, - 0xd1, 0x13, 0xc6, 0xb9, 0xfc, 0x46, 0x97, 0x79, 0x93, 0x28, 0x24, 0x1a, 0xe6, 0x54, 0xaf, 0x14, - 0xe9, 0x37, 0xbf, 0x89, 0x1f, 0x1b, 0xf8, 0xf9, 0xc0, 0x3e, 0xad, 0x14, 0xbe, 0x40, 0x0f, 0x53, - 0x60, 0x73, 0x28, 0x69, 0xca, 0x54, 0x4a, 0xf3, 0xa5, 0x20, 0x0f, 0x5c, 0xcb, 0xef, 0xc5, 0x27, - 0xed, 0xfa, 0x3d, 0x53, 0xe9, 0xc7, 0xa5, 0x88, 0x5e, 0xdf, 0xac, 0x6d, 0xeb, 0x76, 0x6d, 0x5b, - 0xbf, 0xd6, 0xb6, 0xf5, 0x7d, 0x63, 0x77, 0x6e, 0x37, 0x76, 0xe7, 0xe7, 0xc6, 0xee, 0x7c, 0xb9, - 0x58, 0x64, 0x3a, 0x5d, 0xce, 0x82, 0x44, 0x8a, 0xa6, 0x5c, 0xa9, 0xc2, 0x43, 0xd9, 0x2b, 0x53, - 0xb7, 0xbe, 0x2e, 0x40, 0xcd, 0xfa, 0xa6, 0xe5, 0xe7, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x01, - 0xa5, 0x92, 0x40, 0x53, 0x02, 0x00, 0x00, + // 451 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x92, 0x41, 0x8b, 0xd3, 0x40, + 0x18, 0x86, 0x1b, 0x5b, 0x6b, 0x3b, 0xdd, 0xc5, 0x75, 0xac, 0x12, 0x16, 0x36, 0x09, 0x11, 0x96, + 0x9c, 0x12, 0xbb, 0x1e, 0x04, 0x41, 0xd0, 0xd4, 0x8a, 0x5e, 0x64, 0x89, 0x8a, 0xe0, 0x65, 0x98, + 0xa6, 0x9f, 0x4d, 0x60, 0x26, 0x13, 0x32, 0xd3, 0xb4, 0xfd, 0x17, 0xfe, 0xac, 0x3d, 0x78, 0xd8, + 0xa3, 0xa7, 0x20, 0xed, 0x3f, 0xe8, 0x2f, 0x90, 0x4c, 0x6b, 0x5b, 0xf5, 0x36, 0xdf, 0xf7, 0xbc, + 0xef, 0x07, 0xf3, 0xf2, 0xa2, 0x0b, 0x50, 0x09, 0x14, 0x3c, 0xcd, 0x54, 0x00, 0x25, 0x0f, 0xca, + 0x41, 0x90, 0xd3, 0x82, 0x72, 0xe9, 0xe7, 0x85, 0x50, 0x02, 0x9f, 0xed, 0xb1, 0x0f, 0x25, 0xf7, + 0xcb, 0xc1, 0x79, 0x7f, 0x2a, 0xa6, 0x42, 0xc3, 0xa0, 0x7e, 0x6d, 0x75, 0xe7, 0x4f, 0xfe, 0x3b, + 0x13, 0x27, 0x34, 0xcd, 0x48, 0x2c, 0xb2, 0x6f, 0xe9, 0x74, 0x2b, 0x72, 0x7f, 0x34, 0x51, 0xfb, + 0x5a, 0x5f, 0xc7, 0x03, 0xd4, 0x85, 0x92, 0x93, 0x09, 0x64, 0x82, 0x9b, 0x86, 0x63, 0x78, 0xdd, + 0xb0, 0xbf, 0xa9, 0xec, 0xb3, 0x25, 0xe5, 0xec, 0x85, 0xbb, 0x47, 0x6e, 0xd4, 0x81, 0x92, 0xbf, + 0xa9, 0x9f, 0xf8, 0x25, 0x3a, 0x85, 0x8c, 0x8e, 0x19, 0x90, 0xb8, 0x00, 0xaa, 0xc0, 0xbc, 0xe3, + 0x18, 0x5e, 0x27, 0x34, 0x37, 0x95, 0xdd, 0xdf, 0xd9, 0x8e, 0xb1, 0x1b, 0x9d, 0x6c, 0xe7, 0xa1, + 0x1e, 0xf1, 0x73, 0xd4, 0xfb, 0xc3, 0x29, 0x63, 0x66, 0x53, 0x9b, 0x1f, 0x6f, 0x2a, 0x1b, 0xff, + 0x6d, 0xa6, 0x8c, 0xb9, 0x11, 0xda, 0x59, 0x29, 0x63, 0xf8, 0x35, 0x42, 0xb0, 0x50, 0x05, 0x25, + 0x90, 0xe6, 0xd2, 0x6c, 0x39, 0x4d, 0xaf, 0x19, 0xba, 0xab, 0xca, 0xee, 0x8e, 0xea, 0xed, 0xe8, + 0xfd, 0xb5, 0xdc, 0x54, 0xf6, 0x83, 0xdd, 0x91, 0xbd, 0xd0, 0x8d, 0xba, 0x7a, 0x18, 0xa5, 0xb9, + 0xc4, 0x6f, 0xd1, 0xc9, 0x71, 0x1c, 0xe6, 0x5d, 0xc7, 0xf0, 0x7a, 0x57, 0x17, 0xfe, 0xbf, 0xe1, + 0xfa, 0xc3, 0x5a, 0x35, 0xd4, 0xa2, 0xb0, 0x75, 0x53, 0xd9, 0x8d, 0xa8, 0x17, 0x1f, 0x56, 0xf8, + 0x0a, 0x3d, 0xa2, 0x8c, 0x89, 0x39, 0x99, 0x65, 0x75, 0xa2, 0x10, 0x2b, 0x98, 0x10, 0xb5, 0x90, + 0x66, 0xbb, 0xfe, 0x4d, 0xf4, 0x50, 0xc3, 0xcf, 0x07, 0xf6, 0x69, 0x21, 0xf1, 0x25, 0xba, 0x9f, + 0x00, 0x9d, 0x40, 0x41, 0x12, 0x2a, 0x13, 0x92, 0xcd, 0xb8, 0x79, 0xcf, 0x31, 0xbc, 0x56, 0x74, + 0xba, 0x5d, 0xbf, 0xa3, 0x32, 0xf9, 0x30, 0xe3, 0xf8, 0x29, 0xea, 0x27, 0xa9, 0x54, 0xa2, 0x58, + 0x12, 0x09, 0x45, 0x09, 0x64, 0x9e, 0x66, 0x13, 0x31, 0x37, 0x3b, 0x5a, 0x8c, 0x77, 0xec, 0x63, + 0x8d, 0xbe, 0x68, 0x12, 0xbe, 0xba, 0x59, 0x59, 0xc6, 0xed, 0xca, 0x32, 0x7e, 0xad, 0x2c, 0xe3, + 0xfb, 0xda, 0x6a, 0xdc, 0xae, 0xad, 0xc6, 0xcf, 0xb5, 0xd5, 0xf8, 0x7a, 0x39, 0x4d, 0x55, 0x32, + 0x1b, 0xfb, 0xb1, 0xe0, 0x75, 0x1d, 0x84, 0x0c, 0x0e, 0xf5, 0x58, 0xe8, 0x82, 0xa8, 0x65, 0x0e, + 0x72, 0xdc, 0xd6, 0xbd, 0x78, 0xf6, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x94, 0xe9, 0x25, 0xb7, 0x85, + 0x02, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { @@ -182,6 +193,11 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.HistoryServeWindow != 0 { + i = encodeVarintParams(dAtA, i, uint64(m.HistoryServeWindow)) + i-- + dAtA[i] = 0x40 + } if m.HeaderHashNum != 0 { i = encodeVarintParams(dAtA, i, uint64(m.HeaderHashNum)) i-- @@ -298,6 +314,9 @@ func (m *Params) Size() (n int) { if m.HeaderHashNum != 0 { n += 1 + sovParams(uint64(m.HeaderHashNum)) } + if m.HistoryServeWindow != 0 { + n += 1 + sovParams(uint64(m.HistoryServeWindow)) + } return n } @@ -556,6 +575,25 @@ func (m *Params) Unmarshal(dAtA []byte) error { break } } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HistoryServeWindow", wireType) + } + m.HistoryServeWindow = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.HistoryServeWindow |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipParams(dAtA[iNdEx:]) From 6529b7b43d89862c3ec9bf6a7ef7bf871c83f02e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 14:17:03 +0900 Subject: [PATCH 170/210] build(deps): bump github/codeql-action from 3 to 4 (#747) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v3...v4) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/security.yml | 2 +- .github/workflows/semgrep.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 8934039f80..891e6ca02b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -56,7 +56,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -69,7 +69,7 @@ jobs: # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@v4 if: env.GIT_DIFF # ℹ️ Command-line programs to run using the OS shell. @@ -84,5 +84,5 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 if: env.GIT_DIFF diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index 081b4633ec..188cd27510 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -34,7 +34,7 @@ jobs: args: "-no-fail -fmt sarif -out results.sarif ./..." if: "env.GIT_DIFF_FILTERED != ''" - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@v3 + uses: github/codeql-action/upload-sarif@v4 with: # Path to SARIF file relative to the root of the repository sarif_file: results.sarif diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml index d73c688439..0a0b696e57 100644 --- a/.github/workflows/semgrep.yml +++ b/.github/workflows/semgrep.yml @@ -44,7 +44,7 @@ jobs: if: "env.GIT_DIFF_FILTERED != ''" # Upload findings to GitHub Advanced Security Dashboard [step 2/2] - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@v3 + uses: github/codeql-action/upload-sarif@v4 with: sarif_file: semgrep.sarif if: "env.GIT_DIFF_FILTERED != ''" From 529d84036fab588ffcd298a1f60030523ce7dfd7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 14:24:30 +0900 Subject: [PATCH 171/210] build(deps): bump alpine from 3.22.1 to 3.22.2 (#751) Bumps alpine from 3.22.1 to 3.22.2. --- updated-dependencies: - dependency-name: alpine dependency-version: 3.22.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas N. <81727899+thomas-nguy@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 0b28ec67ca..702bbdfea8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ COPY . . RUN make build # Final image -FROM alpine:3.22.1 +FROM alpine:3.22.2 # Install ca-certificates RUN apk add --update ca-certificates jq From 8aca0e8499ce87a5ad37d02f6ed630dacf6e59b2 Mon Sep 17 00:00:00 2001 From: randy-cro Date: Wed, 15 Oct 2025 14:59:27 +0800 Subject: [PATCH 172/210] add gomod2nix update when dependabot updates (#755) --- .github/workflows/dependabot-gomod2nix.yml | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 .github/workflows/dependabot-gomod2nix.yml diff --git a/.github/workflows/dependabot-gomod2nix.yml b/.github/workflows/dependabot-gomod2nix.yml new file mode 100644 index 0000000000..2374b93420 --- /dev/null +++ b/.github/workflows/dependabot-gomod2nix.yml @@ -0,0 +1,64 @@ +name: Update gomod2nix on Dependabot PRs + +on: + pull_request: + paths: + - 'go.mod' + - 'go.sum' + +permissions: + contents: write + pull-requests: write + +jobs: + update-gomod2nix: + if: ${{ github.actor == 'dependabot[bot]' }} + runs-on: ubuntu-latest + + steps: + - name: Checkout PR + uses: actions/checkout@v5 + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.ref }} + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Install Nix + uses: cachix/install-nix-action@v31 + with: + nix_path: nixpkgs=channel:nixos-22.11 + extra_nix_config: | + access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} + + - name: Run gomod2nix + run: nix develop -c gomod2nix + + - name: Check for changes + id: changes + run: | + if git diff --quiet gomod2nix.toml; then + echo "changed=false" >> $GITHUB_OUTPUT + else + echo "changed=true" >> $GITHUB_OUTPUT + fi + + - name: Commit and push gomod2nix.toml + if: steps.changes.outputs.changed == 'true' + uses: EndBug/add-and-commit@v9 + with: + default_author: user_info + message: "chore: update gomod2nix.toml" + add: 'gomod2nix.toml' + + - name: Comment on PR + if: steps.changes.outputs.changed == 'true' + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: '✅ Updated `gomod2nix.toml` automatically via `nix develop -c gomod2nix`' + }) From 30c44b3f1dd043ad41758b04c5f3af4b7a05c419 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Oct 2025 07:07:02 +0000 Subject: [PATCH 173/210] build(deps): bump actions/setup-node from 5 to 6 (#753) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: randy-cro --- .github/workflows/deploy-contract.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-contract.yml b/.github/workflows/deploy-contract.yml index bc2869d232..6f65e4d65c 100644 --- a/.github/workflows/deploy-contract.yml +++ b/.github/workflows/deploy-contract.yml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/checkout@v5 - name: Use Node.js - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: '12.x' - name: Install dependencies From 70d462cbd7abbbaae7860dcac24eabc64ad9b085 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:20:23 +0800 Subject: [PATCH 174/210] build(deps): bump actions/github-script from 7 to 8 (#757) Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/v7...v8) --- updated-dependencies: - dependency-name: actions/github-script dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/dependabot-gomod2nix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dependabot-gomod2nix.yml b/.github/workflows/dependabot-gomod2nix.yml index 2374b93420..88558695ce 100644 --- a/.github/workflows/dependabot-gomod2nix.yml +++ b/.github/workflows/dependabot-gomod2nix.yml @@ -52,7 +52,7 @@ jobs: - name: Comment on PR if: steps.changes.outputs.changed == 'true' - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | From b1a1304127b585018c1c1fb2a59b65a74cd1836a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Oct 2025 04:09:21 +0000 Subject: [PATCH 175/210] build(deps): bump github.com/onsi/ginkgo/v2 from 2.26.0 to 2.27.1 (#762) * build(deps): bump github.com/onsi/ginkgo/v2 from 2.26.0 to 2.27.1 Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.26.0 to 2.27.1. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.26.0...v2.27.1) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-version: 2.27.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: update gomod2nix.toml * chore: verified commit for merge --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] Co-authored-by: Randy Ang --- go.mod | 2 +- go.sum | 8 ++++---- gomod2nix.toml | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 890f9f787e..9cae217ca4 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/hashicorp/go-metrics v0.5.4 github.com/holiman/uint256 v1.3.2 github.com/improbable-eng/grpc-web v0.15.0 - github.com/onsi/ginkgo/v2 v2.26.0 + github.com/onsi/ginkgo/v2 v2.27.1 github.com/onsi/gomega v1.38.2 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 diff --git a/go.sum b/go.sum index d7b9994f3c..fdb2040a76 100644 --- a/go.sum +++ b/go.sum @@ -1012,8 +1012,8 @@ github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BN github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M= github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk= -github.com/gkampitakis/go-snaps v0.5.14 h1:3fAqdB6BCPKHDMHAKRwtPUwYexKtGrNuw8HX/T/4neo= -github.com/gkampitakis/go-snaps v0.5.14/go.mod h1:HNpx/9GoKisdhw9AFOBT1N7DBs9DiHo/hGheFGBZ+mc= +github.com/gkampitakis/go-snaps v0.5.15 h1:amyJrvM1D33cPHwVrjo9jQxX8g/7E2wYdZ+01KS3zGE= +github.com/gkampitakis/go-snaps v0.5.15/go.mod h1:HNpx/9GoKisdhw9AFOBT1N7DBs9DiHo/hGheFGBZ+mc= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= @@ -1487,8 +1487,8 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.26.0 h1:1J4Wut1IlYZNEAWIV3ALrT9NfiaGW2cDCJQSFQMs/gE= -github.com/onsi/ginkgo/v2 v2.26.0/go.mod h1:qhEywmzWTBUY88kfO0BRvX4py7scov9yR+Az2oavUzw= +github.com/onsi/ginkgo/v2 v2.27.1 h1:0LJC8MpUSQnfnp4n/3W3GdlmJP3ENGF0ZPzjQGLPP7s= +github.com/onsi/ginkgo/v2 v2.27.1/go.mod h1:wmy3vCqiBjirARfVhAqFpYt8uvX0yaFe+GudAqqcCqA= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= diff --git a/gomod2nix.toml b/gomod2nix.toml index c610a18b08..fe1f71e673 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -548,8 +548,8 @@ schema = 3 version = "v0.0.5" hash = "sha256-/5i70IkH/qSW5KjGzv8aQNKh9tHoz98tqtL0K2DMFn4=" [mod."github.com/onsi/ginkgo/v2"] - version = "v2.26.0" - hash = "sha256-LRifEh9AWOTQ6FGWAinv89+9r6eYgtC4y5QYWvnxeTY=" + version = "v2.27.1" + hash = "sha256-yxpnhdypOGdPBehPiewAwW+mUy5MGY3WVs7CNk1PLWw=" [mod."github.com/onsi/gomega"] version = "v1.38.2" hash = "sha256-chit6Aia8qLfUfn/2stQmXG/nqM13fDN7edfixXBFsM=" From 6856b4fec2e77d2f3a8b7ae7d634d4eef270272b Mon Sep 17 00:00:00 2001 From: randy-cro Date: Fri, 24 Oct 2025 12:20:03 +0800 Subject: [PATCH 176/210] fix dependabot gomod2nix commit to be verified (#763) --- .github/workflows/dependabot-gomod2nix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dependabot-gomod2nix.yml b/.github/workflows/dependabot-gomod2nix.yml index 88558695ce..1259a84941 100644 --- a/.github/workflows/dependabot-gomod2nix.yml +++ b/.github/workflows/dependabot-gomod2nix.yml @@ -46,7 +46,7 @@ jobs: if: steps.changes.outputs.changed == 'true' uses: EndBug/add-and-commit@v9 with: - default_author: user_info + default_author: github_actions message: "chore: update gomod2nix.toml" add: 'gomod2nix.toml' From c1f1a40326051fce0d031bd46eb6facf437b8a6c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Oct 2025 14:28:31 +0900 Subject: [PATCH 177/210] build(deps): bump actions/upload-artifact from 4 to 5 (#765) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b403ce5b0f..e51139ca2f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -120,7 +120,7 @@ jobs: - name: 'Tar debug files' if: failure() run: tar cfz debug_files.tar.gz -C /tmp/pytest-of-runner . - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 if: failure() with: name: debug-files From 74898ed0b1aaf3b069f441b90b703ec5d8a5213a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 04:57:22 +0000 Subject: [PATCH 178/210] build(deps): bump github.com/onsi/ginkgo/v2 from 2.27.1 to 2.27.2 (#766) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.27.1 to 2.27.2. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.27.1...v2.27.2) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-version: 2.27.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 3 +-- go.sum | 8 ++------ gomod2nix.toml | 7 ++----- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index 9cae217ca4..20b66e16e9 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/hashicorp/go-metrics v0.5.4 github.com/holiman/uint256 v1.3.2 github.com/improbable-eng/grpc-web v0.15.0 - github.com/onsi/ginkgo/v2 v2.27.1 + github.com/onsi/ginkgo/v2 v2.27.2 github.com/onsi/gomega v1.38.2 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 @@ -255,7 +255,6 @@ require ( go.opentelemetry.io/otel/sdk v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect - go.uber.org/automaxprocs v1.6.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.17.0 // indirect diff --git a/go.sum b/go.sum index fdb2040a76..aa01ef9dbf 100644 --- a/go.sum +++ b/go.sum @@ -1487,8 +1487,8 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.27.1 h1:0LJC8MpUSQnfnp4n/3W3GdlmJP3ENGF0ZPzjQGLPP7s= -github.com/onsi/ginkgo/v2 v2.27.1/go.mod h1:wmy3vCqiBjirARfVhAqFpYt8uvX0yaFe+GudAqqcCqA= +github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns= +github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= @@ -1554,8 +1554,6 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= -github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= @@ -1783,8 +1781,6 @@ go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= -go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= diff --git a/gomod2nix.toml b/gomod2nix.toml index fe1f71e673..5fdaedd8c2 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -548,8 +548,8 @@ schema = 3 version = "v0.0.5" hash = "sha256-/5i70IkH/qSW5KjGzv8aQNKh9tHoz98tqtL0K2DMFn4=" [mod."github.com/onsi/ginkgo/v2"] - version = "v2.27.1" - hash = "sha256-yxpnhdypOGdPBehPiewAwW+mUy5MGY3WVs7CNk1PLWw=" + version = "v2.27.2" + hash = "sha256-qC1xMMGvCe14xhOQtHJSz5NFNde+/6AxGb81cNKPTB4=" [mod."github.com/onsi/gomega"] version = "v1.38.2" hash = "sha256-chit6Aia8qLfUfn/2stQmXG/nqM13fDN7edfixXBFsM=" @@ -735,9 +735,6 @@ schema = 3 [mod."go.opentelemetry.io/otel/trace"] version = "v1.37.0" hash = "sha256-FBeLOb5qmIiE9VmbgCf1l/xpndBqHkRiaPt1PvoKrVY=" - [mod."go.uber.org/automaxprocs"] - version = "v1.6.0" - hash = "sha256-a/Agm+kM9x+VRo0CYyTL3ipUYv9Glrc4NeGSZJdpobA=" [mod."go.yaml.in/yaml/v2"] version = "v2.4.2" hash = "sha256-oC8RWdf1zbMYCtmR0ATy/kCkhIwPR9UqFZSMOKLVF/A=" From cb441f853cc5544f4db43f6adcffe94312edcb7b Mon Sep 17 00:00:00 2001 From: randy-cro Date: Wed, 29 Oct 2025 13:11:58 +0800 Subject: [PATCH 179/210] fix: dependabot verified commits for gomod2nix update (#767) --- .github/workflows/dependabot-gomod2nix.yml | 28 +++++++++++++++------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/.github/workflows/dependabot-gomod2nix.yml b/.github/workflows/dependabot-gomod2nix.yml index 1259a84941..615fafd2cb 100644 --- a/.github/workflows/dependabot-gomod2nix.yml +++ b/.github/workflows/dependabot-gomod2nix.yml @@ -9,6 +9,7 @@ on: permissions: contents: write pull-requests: write + id-token: write jobs: update-gomod2nix: @@ -22,7 +23,14 @@ jobs: repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.event.pull_request.head.ref }} token: ${{ secrets.GITHUB_TOKEN }} - + persist-credentials: false + + - name: Configure Git for GitHub Verified Commit + run: | + git config user.name "dependabot[bot]" + git config user.email "49699333+dependabot[bot]@users.noreply.github.com" + git remote set-url origin "https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git" + - name: Install Nix uses: cachix/install-nix-action@v31 with: @@ -42,22 +50,26 @@ jobs: echo "changed=true" >> $GITHUB_OUTPUT fi + - name: Commit and push gomod2nix.toml if: steps.changes.outputs.changed == 'true' - uses: EndBug/add-and-commit@v9 - with: - default_author: github_actions - message: "chore: update gomod2nix.toml" - add: 'gomod2nix.toml' - + env: + PR_BRANCH: ${{ github.event.pull_request.head.ref }} + run: | + git add gomod2nix.toml + git commit -m "chore: update gomod2nix.toml" -s + git push origin HEAD:"$PR_BRANCH" + - name: Comment on PR if: steps.changes.outputs.changed == 'true' + env: + PR_NUMBER: ${{ github.event.pull_request.number }} uses: actions/github-script@v8 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | github.rest.issues.createComment({ - issue_number: context.issue.number, + issue_number: Number("$PR_NUMBER"), owner: context.repo.owner, repo: context.repo.repo, body: '✅ Updated `gomod2nix.toml` automatically via `nix develop -c gomod2nix`' From 68d9d3c90de39e3315d60f9a20709bf85f4583ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 03:31:10 +0000 Subject: [PATCH 180/210] build(deps): bump github.com/consensys/gnark-crypto from 0.16.0 to 0.18.1 in the go_modules group across 1 directory (#769) * build(deps): bump github.com/consensys/gnark-crypto Bumps the go_modules group with 1 update in the / directory: [github.com/consensys/gnark-crypto](https://github.com/consensys/gnark-crypto). Updates `github.com/consensys/gnark-crypto` from 0.16.0 to 0.18.1 - [Release notes](https://github.com/consensys/gnark-crypto/releases) - [Changelog](https://github.com/Consensys/gnark-crypto/blob/v0.18.1/CHANGELOG.md) - [Commits](https://github.com/consensys/gnark-crypto/compare/v0.16.0...v0.18.1) --- updated-dependencies: - dependency-name: github.com/consensys/gnark-crypto dependency-version: 0.18.1 dependency-type: indirect dependency-group: go_modules ... Signed-off-by: dependabot[bot] * chore: update gomod2nix.toml --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Randy Ang --- go.mod | 5 +---- go.sum | 12 ++---------- gomod2nix.toml | 13 ++----------- 3 files changed, 5 insertions(+), 25 deletions(-) diff --git a/go.mod b/go.mod index 20b66e16e9..8c8a6da31b 100644 --- a/go.mod +++ b/go.mod @@ -107,8 +107,7 @@ require ( github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect github.com/cometbft/cometbft-db v0.15.0 // indirect - github.com/consensys/bavard v0.1.27 // indirect - github.com/consensys/gnark-crypto v0.16.0 // indirect + github.com/consensys/gnark-crypto v0.18.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/iavl v1.2.2 // indirect @@ -199,7 +198,6 @@ require ( github.com/minio/highwayhash v1.0.3 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect @@ -273,7 +271,6 @@ require ( gotest.tools/v3 v3.5.2 // indirect nhooyr.io/websocket v1.8.11 // indirect pgregory.net/rapid v1.2.0 // indirect - rsc.io/tmplfunc v0.0.3 // indirect ) replace ( diff --git a/go.sum b/go.sum index aa01ef9dbf..54e7312787 100644 --- a/go.sum +++ b/go.sum @@ -840,10 +840,8 @@ github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONN github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= github.com/cometbft/cometbft-db v0.15.0 h1:VLtsRt8udD4jHCyjvrsTBpgz83qne5hnL245AcPJVRk= github.com/cometbft/cometbft-db v0.15.0/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk= -github.com/consensys/bavard v0.1.27 h1:j6hKUrGAy/H+gpNrpLU3I26n1yc+VMGmd6ID5+gAhOs= -github.com/consensys/bavard v0.1.27/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= -github.com/consensys/gnark-crypto v0.16.0 h1:8Dl4eYmUWK9WmlP1Bj6je688gBRJCJbT8Mw4KoTAawo= -github.com/consensys/gnark-crypto v0.16.0/go.mod h1:Ke3j06ndtPTVvo++PhGNgvm+lgpLvzbcE2MqljY7diU= +github.com/consensys/gnark-crypto v0.18.1 h1:RyLV6UhPRoYYzaFnPQA4qK3DyuDgkTgskDdoGqFt3fI= +github.com/consensys/gnark-crypto v0.18.1/go.mod h1:L3mXGFTe1ZN+RSJ+CLjUt9x7PNdx8ubaYfDROyp2Z8c= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -1192,7 +1190,6 @@ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1446,9 +1443,6 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= -github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= -github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= -github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -2643,8 +2637,6 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8 rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/gomod2nix.toml b/gomod2nix.toml index 5fdaedd8c2..d727ac6c92 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -197,12 +197,9 @@ schema = 3 [mod."github.com/cometbft/cometbft-db"] version = "v0.15.0" hash = "sha256-hNtUoPsgrsc9MhU7AONKMOB6k4bEbg757BSXVp7G5EA=" - [mod."github.com/consensys/bavard"] - version = "v0.1.27" - hash = "sha256-qRbdMAIcsg/2RCkmyfUtsFc/R99n50epZtTjX6QaWac=" [mod."github.com/consensys/gnark-crypto"] - version = "v0.16.0" - hash = "sha256-Yq7cCmfiNdnX5Vl0oW9/wioxi9hOkXBWCB4pvHu4/fw=" + version = "v0.18.1" + hash = "sha256-8NFI8oeqRkMBnKdGUpGZfwt3gr4nmzmE3yoasQ3zZkg=" [mod."github.com/cosmos/btcutil"] version = "v1.0.5" hash = "sha256-t572Sr5iiHcuMKLMWa2i+LBAt192oa+G1oA371tG/eI=" @@ -529,9 +526,6 @@ schema = 3 [mod."github.com/mitchellh/mapstructure"] version = "v1.5.0" hash = "sha256-ztVhGQXs67MF8UadVvG72G3ly0ypQW0IRDdOOkjYwoE=" - [mod."github.com/mmcloughlin/addchain"] - version = "v0.4.0" - hash = "sha256-zSWSSUElCVFH5mydFlF2mzn4Wsm1WHASRxQ5TKa+To8=" [mod."github.com/mtibben/percent"] version = "v0.2.1" hash = "sha256-Zj1lpCP6mKQ0UUTMs2By4LC414ou+iJzKkK+eBHfEcc=" @@ -807,9 +801,6 @@ schema = 3 [mod."pgregory.net/rapid"] version = "v1.2.0" hash = "sha256-GT8thcMb5IH7KSFiK7p2IpThK9daDvZwqOGAP8eELko=" - [mod."rsc.io/tmplfunc"] - version = "v0.0.3" - hash = "sha256-Kii+7DxaSzzn2NphVcEk0W42TXMBFINtm3+B2t7e0cc=" [mod."sigs.k8s.io/yaml"] version = "v1.6.0" hash = "sha256-49hg7IVPzwxeovp+HTMiWa/10NMMTSTjAdCmIv6p9dw=" From bd820ee1e663eaf3d6b6c2622ae119d13656b64b Mon Sep 17 00:00:00 2001 From: Thomas <81727899+thomas-nguy@users.noreply.github.com> Date: Fri, 31 Oct 2025 15:25:50 +0900 Subject: [PATCH 181/210] chore: apply state overrides to eth_estimateGas (#764) * apply state override to eth call * fix changelog * fix lint --- CHANGELOG.md | 1 + rpc/backend/backend.go | 2 +- rpc/backend/call_tx.go | 17 ++++++++++++++--- rpc/namespaces/ethereum/eth/api.go | 10 +++++++--- x/evm/keeper/grpc_query.go | 9 +++++++++ 5 files changed, 32 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba97e44ae6..02d6adae65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#742](https://github.com/crypto-org-chain/ethermint/pull/742) fix: prevent nil pointer dereference in tracer hooks * (evm) [#728](https://github.com/crypto-org-chain/ethermint/pull/728) feat: support preinstalls * (evm) [#722](https://github.com/crypto-org-chain/ethermint/pull/722) feat: support EIP-2935 +* (rpc) [#764](https://github.com/crypto-org-chain/ethermint/pull/764) rpc: apply state overrides to eth_estimateGas ## [v0.22.0] - 2025-08-12 diff --git a/rpc/backend/backend.go b/rpc/backend/backend.go index 9e29ef391e..ade0c4adcd 100644 --- a/rpc/backend/backend.go +++ b/rpc/backend/backend.go @@ -130,7 +130,7 @@ type EVMBackend interface { Resend(args evmtypes.TransactionArgs, gasPrice *hexutil.Big, gasLimit *hexutil.Uint64) (common.Hash, error) SendRawTransaction(data hexutil.Bytes) (common.Hash, error) SetTxDefaults(args evmtypes.TransactionArgs) (evmtypes.TransactionArgs, error) - EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *rpctypes.BlockNumber) (hexutil.Uint64, error) + EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *rpctypes.BlockNumber, overrides *json.RawMessage) (hexutil.Uint64, error) DoCall(args evmtypes.TransactionArgs, blockNr rpctypes.BlockNumber, overrides *json.RawMessage) (*evmtypes.MsgEthereumTxResponse, error) GasPrice() (*hexutil.Big, error) diff --git a/rpc/backend/call_tx.go b/rpc/backend/call_tx.go index 171f4037fa..8a7177d7f8 100644 --- a/rpc/backend/call_tx.go +++ b/rpc/backend/call_tx.go @@ -292,7 +292,7 @@ func (b *Backend) SetTxDefaults(args evmtypes.TransactionArgs) (evmtypes.Transac } blockNr := rpctypes.NewBlockNumber(big.NewInt(0)) - estimated, err := b.EstimateGas(callArgs, &blockNr) + estimated, err := b.EstimateGas(callArgs, &blockNr, nil) if err != nil { return args, err } @@ -319,7 +319,11 @@ func (b *Backend) handleRevertError(vmError string, ret []byte) error { } // EstimateGas returns an estimate of gas usage for the given smart contract call. -func (b *Backend) EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *rpctypes.BlockNumber) (hexutil.Uint64, error) { +func (b *Backend) EstimateGas( + args evmtypes.TransactionArgs, + blockNrOptional *rpctypes.BlockNumber, + overrides *json.RawMessage, +) (hexutil.Uint64, error) { blockNr := rpctypes.EthPendingBlockNumber if blockNrOptional != nil { blockNr = *blockNrOptional @@ -336,11 +340,17 @@ func (b *Backend) EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *rp return 0, errors.New("header not found") } + var bzOverrides []byte + if overrides != nil { + bzOverrides = *overrides + } + req := evmtypes.EthCallRequest{ Args: bz, GasCap: b.RPCGasCap(), ProposerAddress: sdk.ConsAddress(header.Header.ProposerAddress), ChainId: b.chainID.Int64(), + Overrides: bzOverrides, } // From ContextWithHeight: if the provided height is 0, @@ -359,7 +369,8 @@ func (b *Backend) EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *rp // DoCall performs a simulated call operation through the evmtypes. It returns the // estimated gas used on the operation or an error if fails. func (b *Backend) DoCall( - args evmtypes.TransactionArgs, blockNr rpctypes.BlockNumber, + args evmtypes.TransactionArgs, + blockNr rpctypes.BlockNumber, overrides *json.RawMessage, ) (*evmtypes.MsgEthereumTxResponse, error) { bz, err := json.Marshal(&args) diff --git a/rpc/namespaces/ethereum/eth/api.go b/rpc/namespaces/ethereum/eth/api.go index 926e129273..569cda0719 100644 --- a/rpc/namespaces/ethereum/eth/api.go +++ b/rpc/namespaces/ethereum/eth/api.go @@ -93,7 +93,7 @@ type EthereumAPI interface { // Returns information on the Ethereum network and internal settings. ProtocolVersion() hexutil.Uint GasPrice() (*hexutil.Big, error) - EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *rpctypes.BlockNumber) (hexutil.Uint64, error) + EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *rpctypes.BlockNumber, overrides *json.RawMessage) (hexutil.Uint64, error) FeeHistory(blockCount math.HexOrDecimal64, lastBlock rpc.BlockNumber, rewardPercentiles []float64) (*rpctypes.FeeHistoryResult, error) MaxPriorityFeePerGas() (*hexutil.Big, error) ChainId() (*hexutil.Big, error) @@ -322,9 +322,13 @@ func (e *PublicAPI) GasPrice() (*hexutil.Big, error) { } // EstimateGas returns an estimate of gas usage for the given smart contract call. -func (e *PublicAPI) EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *rpctypes.BlockNumber) (hexutil.Uint64, error) { +func (e *PublicAPI) EstimateGas( + args evmtypes.TransactionArgs, + blockNrOptional *rpctypes.BlockNumber, + overrides *json.RawMessage, +) (hexutil.Uint64, error) { e.logger.Debug("eth_estimateGas") - return e.backend.EstimateGas(args, blockNrOptional) + return e.backend.EstimateGas(args, blockNrOptional, overrides) } func (e *PublicAPI) FeeHistory(blockCount math.HexOrDecimal64, diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index 33d5732564..fcd5fd2510 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -356,6 +356,15 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type return nil, status.Error(codes.Internal, "failed to load evm config") } + var overrides rpctypes.StateOverride + if len(req.Overrides) > 0 { + if err := json.Unmarshal(req.Overrides, &overrides); err != nil { + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + + cfg.Overrides = &overrides + } + // ApplyMessageWithConfig expect correct nonce set in msg nonce := k.GetNonce(ctx, args.GetFrom()) args.Nonce = (*hexutil.Uint64)(&nonce) From d8a1c9e5f5774e4fd5c40cd3ddcf31570bea3ca8 Mon Sep 17 00:00:00 2001 From: Thomas <81727899+thomas-nguy@users.noreply.github.com> Date: Wed, 12 Nov 2025 15:27:28 +0900 Subject: [PATCH 182/210] fix: race condition in antecache (#775) --- CHANGELOG.md | 1 + ante/eth.go | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02d6adae65..ebfc9446fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#728](https://github.com/crypto-org-chain/ethermint/pull/728) feat: support preinstalls * (evm) [#722](https://github.com/crypto-org-chain/ethermint/pull/722) feat: support EIP-2935 * (rpc) [#764](https://github.com/crypto-org-chain/ethermint/pull/764) rpc: apply state overrides to eth_estimateGas +* (ante) [#775](https://github.com/crypto-org-chain/ethermint/pull/775) fix: race condition in antecache ## [v0.22.0] - 2025-08-12 diff --git a/ante/eth.go b/ante/eth.go index 9b363a1018..22b9055a42 100644 --- a/ante/eth.go +++ b/ante/eth.go @@ -311,6 +311,10 @@ func CheckAndSetEthSenderNonce( // nonce verification, the sequence needs to be in order if txNonce != expectedNonce { + // delete in case of recheck tx + if ex { + cache.Delete(fromStr, txNonce) + } return errorsmod.Wrapf( errortypes.ErrInvalidSequence, "invalid nonce; got %d, expected %d", txNonce, expectedNonce, From 56340194d8de3e18ca25d11f2118d14eca0da25a Mon Sep 17 00:00:00 2001 From: randy-cro Date: Fri, 14 Nov 2025 14:57:59 +0800 Subject: [PATCH 183/210] remove gomod2nix github action as commits are not verified (#780) --- .github/workflows/dependabot-gomod2nix.yml | 76 ---------------------- 1 file changed, 76 deletions(-) delete mode 100644 .github/workflows/dependabot-gomod2nix.yml diff --git a/.github/workflows/dependabot-gomod2nix.yml b/.github/workflows/dependabot-gomod2nix.yml deleted file mode 100644 index 615fafd2cb..0000000000 --- a/.github/workflows/dependabot-gomod2nix.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: Update gomod2nix on Dependabot PRs - -on: - pull_request: - paths: - - 'go.mod' - - 'go.sum' - -permissions: - contents: write - pull-requests: write - id-token: write - -jobs: - update-gomod2nix: - if: ${{ github.actor == 'dependabot[bot]' }} - runs-on: ubuntu-latest - - steps: - - name: Checkout PR - uses: actions/checkout@v5 - with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: ${{ github.event.pull_request.head.ref }} - token: ${{ secrets.GITHUB_TOKEN }} - persist-credentials: false - - - name: Configure Git for GitHub Verified Commit - run: | - git config user.name "dependabot[bot]" - git config user.email "49699333+dependabot[bot]@users.noreply.github.com" - git remote set-url origin "https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git" - - - name: Install Nix - uses: cachix/install-nix-action@v31 - with: - nix_path: nixpkgs=channel:nixos-22.11 - extra_nix_config: | - access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - - name: Run gomod2nix - run: nix develop -c gomod2nix - - - name: Check for changes - id: changes - run: | - if git diff --quiet gomod2nix.toml; then - echo "changed=false" >> $GITHUB_OUTPUT - else - echo "changed=true" >> $GITHUB_OUTPUT - fi - - - - name: Commit and push gomod2nix.toml - if: steps.changes.outputs.changed == 'true' - env: - PR_BRANCH: ${{ github.event.pull_request.head.ref }} - run: | - git add gomod2nix.toml - git commit -m "chore: update gomod2nix.toml" -s - git push origin HEAD:"$PR_BRANCH" - - - name: Comment on PR - if: steps.changes.outputs.changed == 'true' - env: - PR_NUMBER: ${{ github.event.pull_request.number }} - uses: actions/github-script@v8 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - github.rest.issues.createComment({ - issue_number: Number("$PR_NUMBER"), - owner: context.repo.owner, - repo: context.repo.repo, - body: '✅ Updated `gomod2nix.toml` automatically via `nix develop -c gomod2nix`' - }) From a5b0d8925d5919bfc2314de9052e77ed08988a69 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Nov 2025 07:16:54 +0000 Subject: [PATCH 184/210] build(deps): bump github.com/cosmos/gogoproto from 1.7.0 to 1.7.2 (#770) Bumps [github.com/cosmos/gogoproto](https://github.com/cosmos/gogoproto) from 1.7.0 to 1.7.2. - [Release notes](https://github.com/cosmos/gogoproto/releases) - [Changelog](https://github.com/cosmos/gogoproto/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/gogoproto/compare/v1.7.0...v1.7.2) --- updated-dependencies: - dependency-name: github.com/cosmos/gogoproto dependency-version: 1.7.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Randy Ang --- go.mod | 4 ++-- go.sum | 8 ++++---- gomod2nix.toml | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 8c8a6da31b..39c5a8b983 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.53.0 github.com/cosmos/go-bip39 v1.0.0 - github.com/cosmos/gogoproto v1.7.0 + github.com/cosmos/gogoproto v1.7.2 github.com/cosmos/ibc-go/v10 v10.1.1 github.com/cosmos/rosetta v0.50.12 github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 @@ -266,7 +266,7 @@ require ( golang.org/x/tools v0.36.0 // indirect google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.2 // indirect nhooyr.io/websocket v1.8.11 // indirect diff --git a/go.sum b/go.sum index 54e7312787..34fdbf717c 100644 --- a/go.sum +++ b/go.sum @@ -859,8 +859,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= -github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= +github.com/cosmos/gogoproto v1.7.2 h1:5G25McIraOC0mRFv9TVO139Uh3OklV2hczr13KKVHCA= +github.com/cosmos/gogoproto v1.7.2/go.mod h1:8S7w53P1Y1cHwND64o0BnArT6RmdgIvsBuco6uTllsk= github.com/cosmos/iavl v1.2.2 h1:qHhKW3I70w+04g5KdsdVSHRbFLgt3yY3qTMd4Xa4rC8= github.com/cosmos/iavl v1.2.2/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= github.com/cosmos/ibc-go/v10 v10.1.1 h1:Mtl0Ydr9dVdOrPqmxCAG49RmX2/VDYeKYdwv3G2y0g8= @@ -2478,8 +2478,8 @@ google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b h1:zPKJod4w6F1+nRGDI9ubnXYhU9NSWoFAijkHkUXeTK8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= diff --git a/gomod2nix.toml b/gomod2nix.toml index d727ac6c92..c2b25a721e 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -220,8 +220,8 @@ schema = 3 version = "v1.2.0" hash = "sha256-Hd19V0RCiMoCL67NsqvWIsvWF8KM3LnuJTbYjWtQkEo=" [mod."github.com/cosmos/gogoproto"] - version = "v1.7.0" - hash = "sha256-ZkEUImxBBo8Q/6c7tVR0rybpLbtlplzvgfLl5xvtV00=" + version = "v1.7.2" + hash = "sha256-L9sJZoQGWaix43AJ7rsm1DUng8uoD8HJ6Mb92Ynq8+s=" [mod."github.com/cosmos/iavl"] version = "v1.2.2" hash = "sha256-Cq5iSwFj88udB51nRxodOizrBdxKVmm6ES5cp0HoKds=" @@ -781,7 +781,7 @@ schema = 3 version = "v0.0.0-20250707201910-8d1bb00bc6a7" hash = "sha256-xtTBmzlyynWQa0KtuQpNZ4fzSTB/5ozXclE3SuP3naI=" [mod."google.golang.org/genproto/googleapis/rpc"] - version = "v0.0.0-20250707201910-8d1bb00bc6a7" + version = "v0.0.0-20250804133106-a7a43d27e69b" hash = "sha256-WK7iDtAhH19NPe3TywTQlGjDawNaDKWnxhFL9PgVUwM=" [mod."google.golang.org/grpc"] version = "v1.75.1" From e7ff934aacdba105a1aad6a37f8f2dd40c45ed94 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Nov 2025 07:38:54 +0000 Subject: [PATCH 185/210] build(deps): bump github.com/btcsuite/btcd from 0.24.2 to 0.25.0 (#771) Bumps [github.com/btcsuite/btcd](https://github.com/btcsuite/btcd) from 0.24.2 to 0.25.0. - [Release notes](https://github.com/btcsuite/btcd/releases) - [Changelog](https://github.com/btcsuite/btcd/blob/master/CHANGES) - [Commits](https://github.com/btcsuite/btcd/compare/v0.24.2...v0.25.0) --- updated-dependencies: - dependency-name: github.com/btcsuite/btcd dependency-version: 0.25.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Randy Ang --- go.mod | 4 ++-- go.sum | 7 ++++--- gomod2nix.toml | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 39c5a8b983..035fed7522 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( cosmossdk.io/x/feegrant v0.1.1 cosmossdk.io/x/tx v0.14.0 cosmossdk.io/x/upgrade v0.2.0 - github.com/btcsuite/btcd v0.24.2 + github.com/btcsuite/btcd v0.25.0 github.com/btcsuite/btcd/btcutil v1.1.6 github.com/cometbft/cometbft v0.38.17 github.com/cosmos/cosmos-db v1.1.3 @@ -89,7 +89,7 @@ require ( github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.2.0 // indirect github.com/bits-and-blooms/bitset v1.20.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.5 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/bytedance/sonic v1.14.0 // indirect github.com/bytedance/sonic/loader v0.3.0 // indirect diff --git a/go.sum b/go.sum index 34fdbf717c..3f9d838cf4 100644 --- a/go.sum +++ b/go.sum @@ -736,12 +736,13 @@ github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A= -github.com/btcsuite/btcd v0.24.2 h1:aLmxPguqxza+4ag8R1I2nnJjSu2iFn/kqtHTIImswcY= github.com/btcsuite/btcd v0.24.2/go.mod h1:5C8ChTkl5ejr3WHj8tkQSCmydiMEPB0ZhQhehpq7Dgg= +github.com/btcsuite/btcd v0.25.0 h1:JPbjwvHGpSywBRuorFFqTjaVP4y6Qw69XJ1nQ6MyWJM= +github.com/btcsuite/btcd v0.25.0/go.mod h1:qbPE+pEiR9643E1s1xu57awsRhlCIm1ZIi6FfeRA4KE= github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= -github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcec/v2 v2.3.5 h1:dpAlnAwmT1yIBm3exhT1/8iUSD98RDJM5vqJVQDQLiU= +github.com/btcsuite/btcd/btcec/v2 v2.3.5/go.mod h1:m22FrOAiuxl/tht9wIqAoGHcbnCCaPWyauO8y2LGGtQ= github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= github.com/btcsuite/btcd/btcutil v1.1.5/go.mod h1:PSZZ4UitpLBWzxGd5VGOrLnmOjtPP/a6HaFo12zMs00= diff --git a/gomod2nix.toml b/gomod2nix.toml index c2b25a721e..efd01c9d59 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -134,11 +134,11 @@ schema = 3 version = "v1.20.0" hash = "sha256-X6F8PBnuJVUetLfYoRDSyKIH84jknNoltDJE41aYOdQ=" [mod."github.com/btcsuite/btcd"] - version = "v0.24.2" - hash = "sha256-ahlpwEr4KfyrEA899X07QtuSDnC8U+SnwL+z72DiK5E=" + version = "v0.25.0" + hash = "sha256-Yh3UJ8HmzY+5WXZHhcl3oFcXl2PkBTd4O4s8FYyNbos=" [mod."github.com/btcsuite/btcd/btcec/v2"] - version = "v2.3.4" - hash = "sha256-9fV41jYeTUrpoyu19LPuGBG/N9wFv6D6wVBE8R5WzRI=" + version = "v2.3.5" + hash = "sha256-stpoaGQ1PNPqtLYIQc96YH24s8owcV+PoSo6xREi9LI=" [mod."github.com/btcsuite/btcd/btcutil"] version = "v1.1.6" hash = "sha256-TYbwJLNX/+63nm+b3RqPH3ZIvTBnsm9peqJP05v9Z90=" From f7e9ed1952e97f87c856dd88479391824a69a0fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Nov 2025 11:19:33 +0800 Subject: [PATCH 186/210] build(deps): bump js-yaml (#781) Bumps the npm_and_yarn group with 1 update in the /tests/integration_tests/hardhat directory: [js-yaml](https://github.com/nodeca/js-yaml). Updates `js-yaml` from 4.1.0 to 4.1.1 - [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md) - [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1) --- updated-dependencies: - dependency-name: js-yaml dependency-version: 4.1.1 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tests/integration_tests/hardhat/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/integration_tests/hardhat/package-lock.json b/tests/integration_tests/hardhat/package-lock.json index 9355e0318b..503bfb70ee 100644 --- a/tests/integration_tests/hardhat/package-lock.json +++ b/tests/integration_tests/hardhat/package-lock.json @@ -5962,9 +5962,9 @@ "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dependencies": { "argparse": "^2.0.1" }, @@ -13390,9 +13390,9 @@ "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "requires": { "argparse": "^2.0.1" } From 0160aff31098cbd1e60008c4827f341ee5a4c44a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 10:00:24 +0900 Subject: [PATCH 187/210] build(deps): bump actions/create-github-app-token from 2.1.4 to 2.2.0 (#785) Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2.1.4 to 2.2.0. - [Release notes](https://github.com/actions/create-github-app-token/releases) - [Commits](https://github.com/actions/create-github-app-token/compare/67018539274d69449ef7c02e8e71183d1719ab42...7e473efe3cb98aa54f8d4bac15400b15fad77d94) --- updated-dependencies: - dependency-name: actions/create-github-app-token dependency-version: 2.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/dependabot-update-all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dependabot-update-all.yml b/.github/workflows/dependabot-update-all.yml index db0cdf0af7..96f24c7907 100644 --- a/.github/workflows/dependabot-update-all.yml +++ b/.github/workflows/dependabot-update-all.yml @@ -14,7 +14,7 @@ jobs: if: ${{ github.actor == 'dependabot[bot]' }} steps: - name: Generate Token - uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4 + uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0 id: app-token with: app-id: "${{ secrets.APP_ID }}" From d50b17656111306fb470b5422b2572a59e511af0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 10:04:00 +0900 Subject: [PATCH 188/210] build(deps): bump actions/checkout from 5 to 6 (#784) Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas <81727899+thomas-nguy@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/changelog-reminder.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/dependabot-update-all.yml | 2 +- .github/workflows/dependencies-review.yml | 2 +- .github/workflows/dependencies.yml | 2 +- .github/workflows/deploy-contract.yml | 2 +- .github/workflows/goreleaser.yml | 2 +- .github/workflows/lint.yml | 8 ++++---- .github/workflows/markdown-links.yml | 2 +- .github/workflows/pr_labeler.yml | 2 +- .github/workflows/proto.yml | 4 ++-- .github/workflows/security.yml | 2 +- .github/workflows/semgrep.yml | 4 ++-- .github/workflows/test.yml | 18 +++++++++--------- 15 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index aff34be05d..af5ce357df 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: go-version: 1.23 diff --git a/.github/workflows/changelog-reminder.yml b/.github/workflows/changelog-reminder.yml index 47913990c0..6de3ca6c84 100644 --- a/.github/workflows/changelog-reminder.yml +++ b/.github/workflows/changelog-reminder.yml @@ -19,7 +19,7 @@ jobs: # Skip draft PRs and PRs starting with: revert, test, chore, ci, docs, style, build, refactor if: "!github.event.pull_request.draft && !contains(github.event.pull_request.title, 'revert') && !contains(github.event.pull_request.title, 'test') && !contains(github.event.pull_request.title, 'chore') && !contains(github.event.pull_request.title, 'ci') && !contains(github.event.pull_request.title, 'docs') && !contains(github.event.pull_request.title, 'style') && !contains(github.event.pull_request.title, 'build') && !contains(github.event.pull_request.title, 'refactor')" steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: mskelton/changelog-reminder-action@v3 with: message: "@${{ github.actor }} your pull request is missing a changelog!" \ No newline at end of file diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 891e6ca02b..0d5e9febc5 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -43,7 +43,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | diff --git a/.github/workflows/dependabot-update-all.yml b/.github/workflows/dependabot-update-all.yml index 96f24c7907..a6766c7f08 100644 --- a/.github/workflows/dependabot-update-all.yml +++ b/.github/workflows/dependabot-update-all.yml @@ -19,7 +19,7 @@ jobs: with: app-id: "${{ secrets.APP_ID }}" private-key: "${{ secrets.APP_PRIVATE_KEY }}" - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.event.pull_request.head.ref }} diff --git a/.github/workflows/dependencies-review.yml b/.github/workflows/dependencies-review.yml index 33a1be8569..d36de72eed 100644 --- a/.github/workflows/dependencies-review.yml +++ b/.github/workflows/dependencies-review.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Checkout Repository" - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: "Setup Go" uses: actions/setup-go@v6 with: diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index 6647aa1104..19e496e4d5 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -13,7 +13,7 @@ jobs: go-version: 1.23 check-latest: true - name: "Checkout Repository" - uses: actions/checkout@v5 + uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | diff --git a/.github/workflows/deploy-contract.yml b/.github/workflows/deploy-contract.yml index 6f65e4d65c..01df0249c6 100644 --- a/.github/workflows/deploy-contract.yml +++ b/.github/workflows/deploy-contract.yml @@ -20,7 +20,7 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Use Node.js uses: actions/setup-node@v6 with: diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 9490b26987..12df2ccb1b 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest environment: release steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: submodules: true - name: Set up Go diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9d6556d78f..c33013da0f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -23,7 +23,7 @@ jobs: with: go-version: 1.23 check-latest: true - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -51,7 +51,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -69,7 +69,7 @@ jobs: name: Run flake8 on python integration tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 @@ -89,7 +89,7 @@ jobs: name: Check gomod2nix.toml file is up to date runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 diff --git a/.github/workflows/markdown-links.yml b/.github/workflows/markdown-links.yml index 75a63208b5..39f6369e1f 100644 --- a/.github/workflows/markdown-links.yml +++ b/.github/workflows/markdown-links.yml @@ -17,7 +17,7 @@ jobs: markdown-link-check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: diff --git a/.github/workflows/pr_labeler.yml b/.github/workflows/pr_labeler.yml index e7bc9ba664..5a300e43f5 100644 --- a/.github/workflows/pr_labeler.yml +++ b/.github/workflows/pr_labeler.yml @@ -9,7 +9,7 @@ jobs: pull-requests: write # for actions/labeler to add labels to PRs runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions/labeler@v4 # v5 is broken, ref https://github.com/actions/labeler/issues/712. Do not bump. with: configuration-path: .github/pr_labeler.yml diff --git a/.github/workflows/proto.yml b/.github/workflows/proto.yml index 0682fe9dae..9040a2d08b 100644 --- a/.github/workflows/proto.yml +++ b/.github/workflows/proto.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 5 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: bufbuild/buf-setup-action@v1.50.0 - uses: bufbuild/buf-lint-action@v1 with: @@ -24,7 +24,7 @@ jobs: break-check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: bufbuild/buf-setup-action@v1.50.0 - uses: bufbuild/buf-breaking-action@v1 with: diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index 188cd27510..2b82377d2c 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -19,7 +19,7 @@ jobs: GO111MODULE: on steps: - name: Checkout Source - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Get Diff uses: technote-space/get-diff-action@v6.1.2 with: diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml index 0a0b696e57..e4a35ddcbd 100644 --- a/.github/workflows/semgrep.yml +++ b/.github/workflows/semgrep.yml @@ -25,7 +25,7 @@ jobs: steps: - name: Permission issue fix run: git config --global --add safe.directory /__w/ethermint/ethermint - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Get Diff uses: technote-space/get-diff-action@v6.1.2 with: @@ -36,7 +36,7 @@ jobs: **/*.sol go.mod go.sum - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - run: semgrep scan --sarif --output=semgrep.sarif --config auto env: # Upload findings to GitHub Advanced Security Dashboard [step 1/2] diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e51139ca2f..e02612bb0a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,7 +26,7 @@ jobs: with: go-version: 1.23 check-latest: true - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -53,7 +53,7 @@ jobs: with: go-version: 1.23 check-latest: true - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 id: git_diff with: @@ -74,7 +74,7 @@ jobs: with: go-version: 1.23 check-latest: true - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -96,7 +96,7 @@ jobs: env: TESTS_TO_RUN: ${{ matrix.tests }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 @@ -135,7 +135,7 @@ jobs: os: [macos-latest] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-22.11 @@ -156,7 +156,7 @@ jobs: with: go-version: 1.23 check-latest: true - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -176,7 +176,7 @@ jobs: with: go-version: 1.23 check-latest: true - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -196,7 +196,7 @@ jobs: with: go-version: 1.23 check-latest: true - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | @@ -216,7 +216,7 @@ jobs: with: go-version: 1.23 check-latest: true - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 with: PATTERNS: | From 1c76001a9fd086e1365f1d87465ce02404e3ee37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 01:35:19 +0000 Subject: [PATCH 189/210] build(deps): bump github.com/cosmos/ibc-go/v10 from 10.1.1 to 10.4.0 (#752) * build(deps): bump github.com/cosmos/ibc-go/v10 from 10.1.1 to 10.4.0 Bumps [github.com/cosmos/ibc-go/v10](https://github.com/cosmos/ibc-go) from 10.1.1 to 10.4.0. - [Release notes](https://github.com/cosmos/ibc-go/releases) - [Changelog](https://github.com/cosmos/ibc-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/cosmos/ibc-go/compare/v10.1.1...v10.4.0) --- updated-dependencies: - dependency-name: github.com/cosmos/ibc-go/v10 dependency-version: 10.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: update gomod2nix.toml --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- go.mod | 20 +++++++++---------- go.sum | 52 ++++++++++++++++++++++++-------------------------- gomod2nix.toml | 32 +++++++++++++++---------------- 3 files changed, 51 insertions(+), 53 deletions(-) diff --git a/go.mod b/go.mod index 035fed7522..5960bf93fc 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.23.12 require ( cosmossdk.io/api v0.9.2 cosmossdk.io/client/v2 v2.0.0-beta.5 - cosmossdk.io/collections v1.2.0 + cosmossdk.io/collections v1.2.1 cosmossdk.io/core v0.11.3 cosmossdk.io/errors v1.0.2 cosmossdk.io/log v1.6.1 @@ -21,14 +21,14 @@ require ( github.com/cometbft/cometbft v0.38.17 github.com/cosmos/cosmos-db v1.1.3 github.com/cosmos/cosmos-proto v1.0.0-beta.5 - github.com/cosmos/cosmos-sdk v0.53.0 + github.com/cosmos/cosmos-sdk v0.53.4 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.7.2 - github.com/cosmos/ibc-go/v10 v10.1.1 + github.com/cosmos/ibc-go/v10 v10.4.0 github.com/cosmos/rosetta v0.50.12 github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc - github.com/ethereum/go-ethereum v1.15.5 + github.com/ethereum/go-ethereum v1.15.11 github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.4 github.com/gorilla/mux v1.8.1 @@ -42,7 +42,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 github.com/spf13/cast v1.10.0 - github.com/spf13/cobra v1.9.1 + github.com/spf13/cobra v1.10.1 github.com/spf13/viper v1.21.0 github.com/status-im/keycard-go v0.3.3 github.com/stretchr/testify v1.11.1 @@ -67,7 +67,7 @@ require ( cloud.google.com/go/iam v1.2.2 // indirect cloud.google.com/go/monitoring v1.21.2 // indirect cloud.google.com/go/storage v1.49.0 // indirect - cosmossdk.io/depinject v1.2.0 // indirect + cosmossdk.io/depinject v1.2.1 // indirect cosmossdk.io/schema v1.1.0 // indirect filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect @@ -84,11 +84,11 @@ require ( github.com/StackExchange/wmi v1.2.1 // indirect github.com/VictoriaMetrics/fastcache v1.12.2 // indirect github.com/allegro/bigcache v1.2.1 // indirect - github.com/aws/aws-sdk-go v1.44.224 // indirect + github.com/aws/aws-sdk-go v1.49.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.2.0 // indirect - github.com/bits-and-blooms/bitset v1.20.0 // indirect + github.com/bits-and-blooms/bitset v1.22.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.5 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/bytedance/sonic v1.14.0 // indirect @@ -152,7 +152,7 @@ require ( github.com/gogo/googleapis v1.4.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect - github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/golang/snappy v0.0.5-0.20231225225746-43d5d4cd4e0e // indirect github.com/google/btree v1.1.3 // indirect github.com/google/flatbuffers v24.3.25+incompatible // indirect github.com/google/go-cmp v0.7.0 // indirect @@ -247,7 +247,7 @@ require ( go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/detectors/gcp v1.36.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect go.opentelemetry.io/otel/sdk v1.37.0 // indirect diff --git a/go.sum b/go.sum index 3f9d838cf4..e0ebcdb829 100644 --- a/go.sum +++ b/go.sum @@ -618,12 +618,12 @@ cosmossdk.io/api v0.9.2 h1:9i9ptOBdmoIEVEVWLtYYHjxZonlF/aOVODLFaxpmNtg= cosmossdk.io/api v0.9.2/go.mod h1:CWt31nVohvoPMTlPv+mMNCtC0a7BqRdESjCsstHcTkU= cosmossdk.io/client/v2 v2.0.0-beta.5 h1:0LVv3nEByn//hFDIrYLs2WvsEU3HodOelh4SDHnA/1I= cosmossdk.io/client/v2 v2.0.0-beta.5/go.mod h1:4p0P6o0ro+FizakJUYS9SeM94RNbv0thLmkHRw5o5as= -cosmossdk.io/collections v1.2.0 h1:IesfVG8G/+FYCMVMP01frS/Cw99Omk5vBh3cHbO01Gg= -cosmossdk.io/collections v1.2.0/go.mod h1:4NkMoYw6qRA8fnSH/yn1D/MOutr8qyQnwsO50Mz9ItU= +cosmossdk.io/collections v1.2.1 h1:mAlNMs5vJwkda4TA+k5q/43p24RVAQ/qyDrjANu3BXE= +cosmossdk.io/collections v1.2.1/go.mod h1:PSsEJ/fqny0VPsHLFT6gXDj/2C1tBOTS9eByK0+PBFU= cosmossdk.io/core v0.11.3 h1:mei+MVDJOwIjIniaKelE3jPDqShCc/F4LkNNHh+4yfo= cosmossdk.io/core v0.11.3/go.mod h1:9rL4RE1uDt5AJ4Tg55sYyHWXA16VmpHgbe0PbJc6N2Y= -cosmossdk.io/depinject v1.2.0 h1:6NW/FSK1IkWTrX7XxUpBmX1QMBozpEI9SsWkKTBc5zw= -cosmossdk.io/depinject v1.2.0/go.mod h1:pvitjtUxZZZTQESKNS9KhGjWVslJZxtO9VooRJYyPjk= +cosmossdk.io/depinject v1.2.1 h1:eD6FxkIjlVaNZT+dXTQuwQTKZrFZ4UrfCq1RKgzyhMw= +cosmossdk.io/depinject v1.2.1/go.mod h1:lqQEycz0H2JXqvOgVwTsjEdMI0plswI7p6KX+MVqFOM= cosmossdk.io/errors v1.0.2 h1:wcYiJz08HThbWxd/L4jObeLaLySopyyuUFB5w4AGpCo= cosmossdk.io/errors v1.0.2/go.mod h1:0rjgiHkftRYPj//3DrD6y8hcm40HcPv/dR4R/4efr0k= cosmossdk.io/log v1.6.1 h1:YXNwAgbDwMEKwDlCdH8vPcoggma48MgZrTQXCfmMBeI= @@ -716,8 +716,8 @@ github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6l github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= -github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.49.0 h1:g9BkW1fo9GqKfwg2+zCD+TW/D36Ux+vtfJ8guF4AYmY= +github.com/aws/aws-sdk-go v1.49.0/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -729,8 +729,8 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.20.0 h1:2F+rfL86jE2d/bmw7OhqUg2Sj/1rURkBn3MdfoPyRVU= -github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.22.0 h1:Tquv9S8+SGaS3EhyA+up3FXzmkhxPGjQQCkcs2uw7w4= +github.com/bits-and-blooms/bitset v1.22.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= @@ -864,8 +864,8 @@ github.com/cosmos/gogoproto v1.7.2 h1:5G25McIraOC0mRFv9TVO139Uh3OklV2hczr13KKVHC github.com/cosmos/gogoproto v1.7.2/go.mod h1:8S7w53P1Y1cHwND64o0BnArT6RmdgIvsBuco6uTllsk= github.com/cosmos/iavl v1.2.2 h1:qHhKW3I70w+04g5KdsdVSHRbFLgt3yY3qTMd4Xa4rC8= github.com/cosmos/iavl v1.2.2/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= -github.com/cosmos/ibc-go/v10 v10.1.1 h1:Mtl0Ydr9dVdOrPqmxCAG49RmX2/VDYeKYdwv3G2y0g8= -github.com/cosmos/ibc-go/v10 v10.1.1/go.mod h1:0pJCkgEYRMygqkvUcwy6Kuf5wPfIsObRoxFU2DJEil4= +github.com/cosmos/ibc-go/v10 v10.4.0 h1:dPMtBw1vb/CdXQuiue+JfGwS/BYbbEFJaeSVFx86nMw= +github.com/cosmos/ibc-go/v10 v10.4.0/go.mod h1:a74pAPUSJ7NewvmvELU74hUClJhwnmm5MGbEaiTw/kE= github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= @@ -934,8 +934,8 @@ github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUn github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= +github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= @@ -1129,8 +1129,8 @@ github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.5-0.20231225225746-43d5d4cd4e0e h1:4bw4WeyTYPp0smaXiJZCNnLrvVBqirQVreixayXezGc= +github.com/golang/snappy v0.0.5-0.20231225225746-43d5d4cd4e0e/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= @@ -1275,8 +1275,8 @@ github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerX github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= -github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -1480,8 +1480,8 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns= github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= @@ -1493,8 +1493,8 @@ github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6u github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= -github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= +github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= @@ -1640,11 +1640,11 @@ github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8 github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= @@ -1755,8 +1755,8 @@ go.opentelemetry.io/contrib/detectors/gcp v1.36.0 h1:F7q2tNlCaHY9nMKHR6XH9/qkp8F go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 h1:PS8wXpbyaDJQ2VDHHncMe9Vct0Zn1fEjpsjrLxGJoSc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0/go.mod h1:HDBUsEjOuRC0EzKZ1bSaRGZWUBAzo+MhAcUUORSr4D0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0/go.mod h1:FRmFuRJfag1IZ2dPkHnEoSFVgTVPUd2qf5Vi69hLb8I= go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= @@ -1942,7 +1942,6 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= @@ -2130,7 +2129,6 @@ golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= diff --git a/gomod2nix.toml b/gomod2nix.toml index efd01c9d59..3146d14ecf 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -32,14 +32,14 @@ schema = 3 version = "v2.0.0-beta.5" hash = "sha256-zivawuJLLbNn0zE9FRWjCtrpks7vlDprQ7DbNKqhwWc=" [mod."cosmossdk.io/collections"] - version = "v1.2.0" - hash = "sha256-VJxhGs/2pQ/mZSz97am5UfNI5z4YcCrCou4hGC450LQ=" + version = "v1.2.1" + hash = "sha256-p3udhpqvzlGBjV4JHK14jv1mq+Jl8YPapAAFKBkZSH8=" [mod."cosmossdk.io/core"] version = "v0.11.3" hash = "sha256-DLleHDkcmjLh4Enkrd9aM7ZCVjvHW0OVnb3LqXxqk9Y=" [mod."cosmossdk.io/depinject"] - version = "v1.2.0" - hash = "sha256-VZTSVdX5UCCqSysJhS8DCNOeGYDDD9CCZgc7WbmUJQM=" + version = "v1.2.1" + hash = "sha256-GGTflCIZs9oWn9lsR2yi2K5HVjOpeIN2xm2sQ065pYo=" [mod."cosmossdk.io/errors"] version = "v1.0.2" hash = "sha256-ZgO21iLMf6JN740JQizNI0v1mogNUTc77CXrUVSvDcg=" @@ -119,8 +119,8 @@ schema = 3 version = "v1.2.1" hash = "sha256-/DwqBxg75m1zzOB8BWbpjQ/jYnhoe/SMXc4310mOlMA=" [mod."github.com/aws/aws-sdk-go"] - version = "v1.44.224" - hash = "sha256-zkewIYLOT+CvBDsxXnY2ZaFyoDdt/JCFQ2sCIdBmTFo=" + version = "v1.49.0" + hash = "sha256-hbg+kWydUF+yUX9eNtee/pNZKnRGc8fuOcsSdQlAaGs=" [mod."github.com/beorn7/perks"] version = "v1.0.1" hash = "sha256-h75GUqfwJKngCJQVE5Ao5wnO3cfKD9lSIteoLp/3xJ4=" @@ -131,8 +131,8 @@ schema = 3 version = "v0.2.0" hash = "sha256-Tx3sPuhsoVwrCfJdIwf4ipn7pD92OQNYvpCxl1Z9Wt0=" [mod."github.com/bits-and-blooms/bitset"] - version = "v1.20.0" - hash = "sha256-X6F8PBnuJVUetLfYoRDSyKIH84jknNoltDJE41aYOdQ=" + version = "v1.22.0" + hash = "sha256-lY1K29h4vlAmJVvwKgbTG8BTACYGjFaginCszN+ST6w=" [mod."github.com/btcsuite/btcd"] version = "v0.25.0" hash = "sha256-Yh3UJ8HmzY+5WXZHhcl3oFcXl2PkBTd4O4s8FYyNbos=" @@ -226,8 +226,8 @@ schema = 3 version = "v1.2.2" hash = "sha256-Cq5iSwFj88udB51nRxodOizrBdxKVmm6ES5cp0HoKds=" [mod."github.com/cosmos/ibc-go/v10"] - version = "v10.1.1" - hash = "sha256-dYqLbQROlFKn+kXzTVmRyp8VD+mHOLuU1DdEj2+H+4k=" + version = "v10.4.0" + hash = "sha256-3qETOTsDgjP5PGW+SWJdZxya9Qp9ivKUGqFgXbvVRA8=" [mod."github.com/cosmos/ics23/go"] version = "v0.11.0" hash = "sha256-mgU/pqp4kASmW/bP0z6PzssfjRp7GU9ioyvNlDdGC+E=" @@ -371,8 +371,8 @@ schema = 3 version = "v1.5.4" hash = "sha256-N3+Lv9lEZjrdOWdQhFj6Y3Iap4rVLEQeI8/eFFyAMZ0=" [mod."github.com/golang/snappy"] - version = "v0.0.5-0.20220116011046-fa5810519dcb" - hash = "sha256-4GVLPBwJIXYFJU+Uvoa/sb5VHea7yJhwE7feABa7ucs=" + version = "v0.0.5-0.20231225225746-43d5d4cd4e0e" + hash = "sha256-o/S91mX4ysjuG/oRHLs8qSyfb1Risf/YzMuW5u7d3U4=" [mod."github.com/google/btree"] version = "v1.1.3" hash = "sha256-/6Us2eNRFi2IIp7p5uPUXLridilAdk4SmZhcTYR0csw=" @@ -623,8 +623,8 @@ schema = 3 version = "v1.10.0" hash = "sha256-dQ6Qqf26IZsa6XsGKP7GDuCj+WmSsBmkBwGTDfue/rk=" [mod."github.com/spf13/cobra"] - version = "v1.9.1" - hash = "sha256-dzEqquABE3UqZmJuj99244QjvfojS8cFlsPr/MXQGj0=" + version = "v1.10.1" + hash = "sha256-OP6wdqk4dvBD8U5aicTkySHZ2s0LWnBo2TST2SmgcpM=" [mod."github.com/spf13/pflag"] version = "v1.0.10" hash = "sha256-uDPnWjHpSrzXr17KEYEA1yAbizfcsfo5AyztY2tS6ZU=" @@ -712,8 +712,8 @@ schema = 3 version = "v0.58.0" hash = "sha256-OLDNgjHOItKSyzI3cWWZbMiap5QnULp3G4z8HhhJsrA=" [mod."go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"] - version = "v0.58.0" - hash = "sha256-iqTPHfR1wXZY/yVTWtRBMjWlZkRxasaBGNhsNWHYxGw=" + version = "v0.59.0" + hash = "sha256-zeC30S2MV7W2xxS5rVfPGhZO4jcdPpxxfy3QvBkt/pQ=" [mod."go.opentelemetry.io/otel"] version = "v1.37.0" hash = "sha256-zWpyp9K8/Te86uhNjamchZctTdAnmHhoVw9m4ACfSoo=" From 3b6b4cb5889e8c79731354a619446af4eb660b21 Mon Sep 17 00:00:00 2001 From: Thomas <81727899+thomas-nguy@users.noreply.github.com> Date: Wed, 3 Dec 2025 23:14:02 +0900 Subject: [PATCH 190/210] fix: add check on evm transaction tip (#789) * add check on evm tx tip * add changelog * fix nil check --- CHANGELOG.md | 1 + ante/interfaces/setup.go | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ebfc9446fe..3861405b6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#722](https://github.com/crypto-org-chain/ethermint/pull/722) feat: support EIP-2935 * (rpc) [#764](https://github.com/crypto-org-chain/ethermint/pull/764) rpc: apply state overrides to eth_estimateGas * (ante) [#775](https://github.com/crypto-org-chain/ethermint/pull/775) fix: race condition in antecache +* (ante) [#789](https://github.com/crypto-org-chain/ethermint/pull/789) fix: add check on evm transaction tip ## [v0.22.0] - 2025-08-12 diff --git a/ante/interfaces/setup.go b/ante/interfaces/setup.go index 378d5ea186..74a6c85b56 100644 --- a/ante/interfaces/setup.go +++ b/ante/interfaces/setup.go @@ -86,6 +86,10 @@ func ValidateEthBasic(ctx sdk.Context, tx sdk.Tx, evmParams *evmtypes.Params, ba return errorsmod.Wrap(errortypes.ErrInvalidRequest, "for eth tx AuthInfo Fee payer and granter should be empty") } + if authInfo.Tip != nil && authInfo.Tip.Tipper != "" { + return errorsmod.Wrap(errortypes.ErrInvalidRequest, "for eth tx AuthInfo Tip tipper should be empty") + } + sigs := protoTx.Signatures if len(sigs) > 0 { return errorsmod.Wrap(errortypes.ErrInvalidRequest, "for eth tx Signatures should be empty") From 3b1542d755b63244e4b11bea2599db4ee86686c3 Mon Sep 17 00:00:00 2001 From: Thomas <81727899+thomas-nguy@users.noreply.github.com> Date: Thu, 4 Dec 2025 12:46:14 +0900 Subject: [PATCH 191/210] fix: add check on evm transaction tip (2) (#790) --- ante/interfaces/setup.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ante/interfaces/setup.go b/ante/interfaces/setup.go index 74a6c85b56..6c667c3d0b 100644 --- a/ante/interfaces/setup.go +++ b/ante/interfaces/setup.go @@ -86,8 +86,8 @@ func ValidateEthBasic(ctx sdk.Context, tx sdk.Tx, evmParams *evmtypes.Params, ba return errorsmod.Wrap(errortypes.ErrInvalidRequest, "for eth tx AuthInfo Fee payer and granter should be empty") } - if authInfo.Tip != nil && authInfo.Tip.Tipper != "" { - return errorsmod.Wrap(errortypes.ErrInvalidRequest, "for eth tx AuthInfo Tip tipper should be empty") + if authInfo.Tip != nil { + return errorsmod.Wrap(errortypes.ErrInvalidRequest, "for eth tx AuthInfo Tip should be nil") } sigs := protoTx.Signatures From 7c0fa42c2123a13a2e632b03f641223728098148 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 11:08:29 +0900 Subject: [PATCH 192/210] build(deps): bump alpine from 3.22.2 to 3.23.0 (#792) Bumps alpine from 3.22.2 to 3.23.0. --- updated-dependencies: - dependency-name: alpine dependency-version: 3.23.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 702bbdfea8..91e99a9868 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ COPY . . RUN make build # Final image -FROM alpine:3.22.2 +FROM alpine:3.23.0 # Install ca-certificates RUN apk add --update ca-certificates jq From 311b24d551e835da5b35fadc63efa6f9729e95e2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 13:07:09 +0900 Subject: [PATCH 193/210] build(deps): bump github.com/spf13/cobra from 1.10.1 to 1.10.2 (#793) Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.10.1 to 1.10.2. - [Release notes](https://github.com/spf13/cobra/releases) - [Commits](https://github.com/spf13/cobra/compare/v1.10.1...v1.10.2) --- updated-dependencies: - dependency-name: github.com/spf13/cobra dependency-version: 1.10.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas <81727899+thomas-nguy@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5960bf93fc..15bd4e6556 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/rs/cors v1.11.1 github.com/spf13/cast v1.10.0 - github.com/spf13/cobra v1.10.1 + github.com/spf13/cobra v1.10.2 github.com/spf13/viper v1.21.0 github.com/status-im/keycard-go v0.3.3 github.com/stretchr/testify v1.11.1 diff --git a/go.sum b/go.sum index e0ebcdb829..ae54aa8a1d 100644 --- a/go.sum +++ b/go.sum @@ -1640,8 +1640,8 @@ github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8 github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= -github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= +github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= From 9f5d1db3246d78a2bd6a7ae7162c76291370d76d Mon Sep 17 00:00:00 2001 From: randy-cro Date: Mon, 8 Dec 2025 13:18:17 +0800 Subject: [PATCH 194/210] chore: add max int 64 validation for HeaderHashNum and HistoryServeWindow (#795) --- CHANGELOG.md | 1 + x/evm/types/params.go | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3861405b6b..100d52979d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#764](https://github.com/crypto-org-chain/ethermint/pull/764) rpc: apply state overrides to eth_estimateGas * (ante) [#775](https://github.com/crypto-org-chain/ethermint/pull/775) fix: race condition in antecache * (ante) [#789](https://github.com/crypto-org-chain/ethermint/pull/789) fix: add check on evm transaction tip +* (evm) [#789](https://github.com/crypto-org-chain/ethermint/pull/795) chore: add validation for HeaderHashNum and HistoryServeWindow in params ## [v0.22.0] - 2025-08-12 diff --git a/x/evm/types/params.go b/x/evm/types/params.go index 29c0f30ae6..039b161b79 100644 --- a/x/evm/types/params.go +++ b/x/evm/types/params.go @@ -17,6 +17,7 @@ package types import ( "fmt" + "math" "math/big" sdk "github.com/cosmos/cosmos-sdk/types" @@ -89,6 +90,14 @@ func (p Params) Validate() error { return err } + if err := ValidateInt64Overflow(p.HeaderHashNum); err != nil { + return err + } + + if err := ValidateInt64Overflow(p.HistoryServeWindow); err != nil { + return err + } + return ValidateChainConfig(p.ChainConfig) } @@ -140,6 +149,17 @@ func ValidateChainConfig(i interface{}) error { return cfg.Validate() } +func ValidateInt64Overflow(i interface{}) error { + num, ok := i.(uint64) + if !ok { + return fmt.Errorf("invalid parameter type: %T", i) + } + if num > math.MaxInt64 { + return fmt.Errorf("value too large: %d, maximum value is: %d", num, uint64(math.MaxInt64)) + } + return nil +} + // IsLondon returns if london hardfork is enabled. func IsLondon(ethConfig *params.ChainConfig, height int64) bool { return ethConfig.IsLondon(big.NewInt(height)) From 9a1a449c16dbfc74b0dc37ab8a2cff8b0a87df24 Mon Sep 17 00:00:00 2001 From: songgaoye Date: Wed, 10 Dec 2025 16:09:35 +0800 Subject: [PATCH 195/210] feat: use golang 1.25.0 (#787) * feat: use golang 1.25.0 * update go 1.25.0 * update golangci-lint * fix apple_sdk_11_0 errors * update nix build * fix rpc test * fix ci: * add changelog * single source of truth for gomod2nix --- .github/workflows/build.yml | 2 +- .github/workflows/dependabot-update-all.yml | 2 +- .github/workflows/dependencies-review.yml | 4 +- .github/workflows/dependencies.yml | 2 +- .github/workflows/goreleaser.yml | 4 +- .github/workflows/lint.yml | 2 +- .github/workflows/test.yml | 14 +++--- CHANGELOG.md | 2 +- Dockerfile | 2 +- Makefile | 2 +- README.md | 2 +- SECURITY.md | 6 ++- default.nix | 3 ++ flake.lock | 32 ++---------- flake.nix | 29 +++++++---- go.mod | 2 +- networks/local/ethermintnode/Dockerfile | 6 +-- nix/build_overlay.nix | 19 +------ nix/default.nix | 56 +++++++++++++++++---- nix/go-ethereum.nix | 4 +- nix/golangci-lint.nix | 4 +- nix/sources.json | 38 +++++++------- tests/rpc/rpc_test.go | 2 +- 23 files changed, 127 insertions(+), 112 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index af5ce357df..4f7194b3e9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: - go-version: 1.23 + go-version: "1.25.0" check-latest: true - uses: technote-space/get-diff-action@v6.1.2 id: git_diff diff --git a/.github/workflows/dependabot-update-all.yml b/.github/workflows/dependabot-update-all.yml index a6766c7f08..388e07bd8f 100644 --- a/.github/workflows/dependabot-update-all.yml +++ b/.github/workflows/dependabot-update-all.yml @@ -26,7 +26,7 @@ jobs: token: "${{ steps.app-token.outputs.token }}" - uses: actions/setup-go@v6 with: - go-version: "1.24" + go-version: "1.25.0" check-latest: true - name: Extract updated dependency id: deps diff --git a/.github/workflows/dependencies-review.yml b/.github/workflows/dependencies-review.yml index d36de72eed..f4bdf27d2d 100644 --- a/.github/workflows/dependencies-review.yml +++ b/.github/workflows/dependencies-review.yml @@ -15,7 +15,7 @@ jobs: - name: "Setup Go" uses: actions/setup-go@v6 with: - go-version: "1.24" + go-version: "1.25.0" check-latest: true - name: "Dependency Review" uses: actions/dependency-review-action@v4 @@ -41,4 +41,4 @@ jobs: fi done - echo "Only known vulnerability (GO-2025-3443) present. Continuing." \ No newline at end of file + echo "Only known vulnerability (GO-2025-3443) present. Continuing." diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index 19e496e4d5..b5bf9746c9 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -10,7 +10,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.23 + go-version: "1.25.0" check-latest: true - name: "Checkout Repository" uses: actions/checkout@v6 diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 12df2ccb1b..22ed1c445e 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -15,7 +15,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v6 with: - go-version: 1.23 + go-version: "1.25.0" check-latest: true - name: release dry run run: make release-dry-run @@ -25,4 +25,4 @@ jobs: run: |- echo 'GITHUB_TOKEN=${{secrets.GITHUB_TOKEN}}' > .release-env - name: release publish - run: make release \ No newline at end of file + run: make release diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index c33013da0f..f35b626b1b 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -21,7 +21,7 @@ jobs: # Required: setup-go, for all versions v3.0.0+ of golangci-lint - uses: actions/setup-go@v6 with: - go-version: 1.23 + go-version: "1.25.0" check-latest: true - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e02612bb0a..46f685a50b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.23 + go-version: "1.25.0" check-latest: true - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 @@ -51,7 +51,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.23 + go-version: "1.25.0" check-latest: true - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 @@ -72,7 +72,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.23 + go-version: "1.25.0" check-latest: true - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 @@ -154,7 +154,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.23 + go-version: "1.25.0" check-latest: true - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 @@ -174,7 +174,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.23 + go-version: "1.25.0" check-latest: true - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 @@ -194,7 +194,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.23 + go-version: "1.25.0" check-latest: true - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 @@ -214,7 +214,7 @@ jobs: steps: - uses: actions/setup-go@v6 with: - go-version: 1.23 + go-version: "1.25.0" check-latest: true - uses: actions/checkout@v6 - uses: technote-space/get-diff-action@v6.1.2 diff --git a/CHANGELOG.md b/CHANGELOG.md index 100d52979d..54f9b3fc31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,7 +36,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ # Changelog ## Unreleased - +* (go) [#787](https://github.com/crypto-org-chain/ethermint/pull/787) feat: use golang 1.25.0. * (evm) [#725](https://github.com/crypto-org-chain/ethermint/pull/725) feat(RPC): add authorizationList from eth_getTransactionByHash response for EIP-7702 transactions * (evm) [#740](https://github.com/crypto-org-chain/ethermint/pull/740) fix: missing tx context during vm initialisation * (evm) [#742](https://github.com/crypto-org-chain/ethermint/pull/742) fix: prevent nil pointer dereference in tracer hooks diff --git a/Dockerfile b/Dockerfile index 91e99a9868..a014b3f418 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:alpine AS build-env +FROM golang:1.25.0-alpine AS build-env # Set up dependencies ENV PACKAGES git build-base diff --git a/Makefile b/Makefile index 4ffb2fb951..6f662a9f86 100644 --- a/Makefile +++ b/Makefile @@ -176,7 +176,7 @@ build-all: tools build lint test vulncheck ############################################################################### PACKAGE_NAME:=github.com/evmos/ethermint -GOLANG_CROSS_VERSION = v1.19 +GOLANG_CROSS_VERSION = v1.25.0 GOPATH ?= '$(HOME)/go' release-dry-run: docker run \ diff --git a/README.md b/README.md index 25157adae1..bfb9ee738b 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ parent: Ethermint is a scalable and interoperable Ethereum library, built on Proof-of-Stake with fast-finality using the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk/) which runs on top of [Tendermint Core](https://github.com/tendermint/tendermint) consensus engine. -**Note**: Requires [Go 1.19+](https://golang.org/dl/) +**Note**: Requires [Go 1.25.0+](https://golang.org/dl/) ## Installation diff --git a/SECURITY.md b/SECURITY.md index d471281e18..7c75583849 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -20,8 +20,9 @@ If you follow these guidelines when reporting an issue to us, we commit to: Evmos uses the following disclosure process: -1. Once a security report is received via the Immunefi Bug Bounty program, the team works to verify the issue and confirm its severity level using [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) or [Immunefi’s Vulnerability Severity Classification System v2.2](https://immunefi.com/immunefi-vulnerability-severity-classification-system-v2-2/). - 1. Two people from the affected project will review, replicate and acknowledge the report within 48-96 hours of the alert according to the table below: + 1. Once a security report is received via the Immunefi Bug Bounty program, the team works to verify the issue and confirm its severity level using [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) or [Immunefi’s Vulnerability Severity Classification System v2.2](https://immunefi.com/immunefi-vulnerability-severity-classification-system-v2-2/). + 1. Two people from the affected project will review, replicate and acknowledge the report within 48-96 hours of the alert according to the table below: + | Security Level | Hours to First Response (ACK) from Escalation | | -------------------- | --------------------------------------------- | | Critical | 48 | @@ -30,6 +31,7 @@ Evmos uses the following disclosure process: | Low or Informational | 96 | | None | 96 | + 2. If the report is not applicable or reproducible, the Security Lead (or Security Secondary) will revert to the reporter to request more info or close the report. 3. The report is confirmed by the Security Lead to the reporter. 2. The team determines the vulnerability’s potential impact on Evmos. diff --git a/default.nix b/default.nix index a48c8f0fe0..d8f5b7aee1 100644 --- a/default.nix +++ b/default.nix @@ -1,6 +1,7 @@ { lib, buildGoApplication, + buildPackages, rev ? "dirty", }: let @@ -22,10 +23,12 @@ buildGoApplication rec { tags ldflags ; + go = buildPackages.go_1_25; src = lib.sourceByRegex ./. [ "^(x|ante|evmd|cmd|client|server|crypto|rpc|types|encoding|ethereum|indexer|testutil|version|store|go.mod|go.sum|gomod2nix.toml)($|/.*)" "^tests(/.*[.]go)?$" ]; + modRoot = "."; modules = ./gomod2nix.toml; doCheck = false; pwd = src; # needed to support replace diff --git a/flake.lock b/flake.lock index 65aa2dc19d..9b1a2593e7 100644 --- a/flake.lock +++ b/flake.lock @@ -18,29 +18,6 @@ "type": "github" } }, - "gomod2nix": { - "inputs": { - "flake-utils": [ - "flake-utils" - ], - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733668782, - "narHash": "sha256-tPsqU00FhgdFr0JiQUiBMgPVbl1jbPCY5gbFiJycL3I=", - "owner": "nix-community", - "repo": "gomod2nix", - "rev": "514283ec89c39ad0079ff2f3b1437404e4cba608", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "gomod2nix", - "type": "github" - } - }, "nix-github-actions": { "inputs": { "nixpkgs": [ @@ -64,16 +41,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1735651292, - "narHash": "sha256-YLbzcBtYo1/FEzFsB3AnM16qFc6fWPMIoOuSoDwvg9g=", + "lastModified": 1764859891, + "narHash": "sha256-4KLGk/zzppcsCZBWJbx/Tu2APO8Oj0NKjjuMXnjZTEY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0da3c44a9460a26d2025ec3ed2ec60a895eb1114", + "rev": "9cf79b5735b34d25bb8ee55c90356e72696e7cb3", "type": "github" }, "original": { "owner": "NixOS", - "ref": "release-24.05", + "ref": "release-25.11", "repo": "nixpkgs", "type": "github" } @@ -107,7 +84,6 @@ "root": { "inputs": { "flake-utils": "flake-utils", - "gomod2nix": "gomod2nix", "nixpkgs": "nixpkgs", "poetry2nix": "poetry2nix" } diff --git a/flake.nix b/flake.nix index d70b1c3a56..9c3afb13c3 100644 --- a/flake.nix +++ b/flake.nix @@ -1,12 +1,7 @@ { inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/release-24.05"; + nixpkgs.url = "github:NixOS/nixpkgs/release-25.11"; flake-utils.url = "github:numtide/flake-utils"; - gomod2nix = { - url = "github:nix-community/gomod2nix"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.flake-utils.follows = "flake-utils"; - }; poetry2nix = { url = "github:nix-community/poetry2nix"; inputs.nixpkgs.follows = "nixpkgs"; @@ -18,7 +13,6 @@ { self, nixpkgs, - gomod2nix, flake-utils, poetry2nix, }: @@ -32,14 +26,31 @@ (flake-utils.lib.eachDefaultSystem ( system: let + # Import niv sources to maintain single source of truth for dependencies + sources = import ./nix/sources.nix; + + # Custom gomod2nix overlay that avoids darwin.apple_sdk_11_0 reference + # Uses the same gomod2nix version as niv to prevent drift between flake and niv builds + gomodOverlay = final: prev: + let + gomodSrc = sources.gomod2nix; + callPackage = final.callPackage; + gomodBuilder = callPackage "${gomodSrc}/builder" { }; + in + { + inherit (gomodBuilder) buildGoApplication mkGoEnv mkVendorEnv; + gomod2nix = (callPackage "${gomodSrc}/default.nix" { }).overrideAttrs (_: { + modRoot = "."; + }); + }; + pkgs = import nixpkgs { inherit system; overlays = [ - gomod2nix.overlays.default + gomodOverlay poetry2nix.overlays.default ] ++ self.overlays.default; - config = { }; }; in rec { diff --git a/go.mod b/go.mod index 15bd4e6556..461a9df941 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/evmos/ethermint -go 1.23.12 +go 1.25.0 require ( cosmossdk.io/api v0.9.2 diff --git a/networks/local/ethermintnode/Dockerfile b/networks/local/ethermintnode/Dockerfile index 15e72bebaa..dec3e3f855 100644 --- a/networks/local/ethermintnode/Dockerfile +++ b/networks/local/ethermintnode/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:stretch as build-env +FROM golang:1.25.0 as build-env # Install minimum necessary dependencies ENV PACKAGES curl make git libc-dev bash gcc @@ -15,7 +15,7 @@ COPY . . RUN make build-linux # Final image -FROM golang:1.19 as final +FROM golang:1.25.0 as final WORKDIR / @@ -28,4 +28,4 @@ COPY --from=build-env /go/src/github.com/evmos/ethermint/scripts/start-docker.sh EXPOSE 26656 26657 1317 8545 8546 # Run ethermintd by default, omit entrypoint to ease using container with ethermintd -ENTRYPOINT ["/bin/bash", "-c"] \ No newline at end of file +ENTRYPOINT ["/bin/bash", "-c"] diff --git a/nix/build_overlay.nix b/nix/build_overlay.nix index 785d5f05ca..a487818b4a 100644 --- a/nix/build_overlay.nix +++ b/nix/build_overlay.nix @@ -1,21 +1,6 @@ # some basic overlays necessary for the build final: super: -let - replaceLast = - newVal: l: - let - len = builtins.length l; - in - if len == 0 then [ ] else final.lib.lists.take (len - 1) l ++ [ newVal ]; -in { - go_1_23 = super.go_1_23.overrideAttrs (old: rec { - version = "1.23.12"; - src = final.fetchurl { - url = "https://go.dev/dl/go${version}.src.tar.gz"; - hash = "sha256-4czpN5ok6JVxSkEsfd0VfSYU2e2+g6hESbbhhAtPEiY="; - }; - # https://github.com/NixOS/nixpkgs/pull/372367 - patches = replaceLast ./go_no_vendor_checks-1.23.patch old.patches; - }); + # nixpkgs 25.11 has go_1_25 + go = super.go_1_25; } diff --git a/nix/default.nix b/nix/default.nix index cc7d3e5b15..0ce5b1ba54 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -7,18 +7,56 @@ import sources.nixpkgs { overlays = [ (import ./build_overlay.nix) - (_: pkgs: { + (final: super: rec { flake-compat = import sources.flake-compat; - go = pkgs.go_1_23; - go-ethereum = pkgs.callPackage ./go-ethereum.nix { - inherit (pkgs.darwin) libobjc; - inherit (pkgs.darwin.apple_sdk.frameworks) IOKit; - buildGoModule = pkgs.buildGo123Module; + # Create a Go 1.25 specific builder without overriding buildGoModule + buildGo125 = super.go_1_25; + buildGo125Module = super.callPackage "${super.path}/pkgs/build-support/go/module.nix" { + go = buildGo125; + }; + go-ethereum = final.callPackage ./go-ethereum.nix { + # Skip darwin-specific dependencies to avoid apple_sdk_11_0 errors in nixpkgs 25.11 + libobjc = null; + IOKit = null; + buildGoModule = buildGo125Module; + }; + golangci-lint = final.callPackage ./golangci-lint.nix { + buildGo125Module = buildGo125Module; }; - golangci-lint = pkgs.callPackage ./golangci-lint.nix { }; }) # update to a version that supports eip-1559 (import "${sources.poetry2nix}/overlay.nix") - (import "${sources.gomod2nix}/overlay.nix") + # Fix poetry2nix compatibility with nixpkgs 25.11 - override fetchCargoTarball usage + (final: prev: { + poetry2nix = prev.poetry2nix.overrideScope (p2nFinal: p2nPrev: { + defaultPoetryOverrides = p2nPrev.defaultPoetryOverrides.extend (pyFinal: pyPrev: { + # Override rpds-py to use fetchCargoVendor instead of fetchCargoTarball + rpds-py = pyPrev.rpds-py.overridePythonAttrs (old: + if old.src.isWheel or false then {} else { + cargoDeps = final.rustPlatform.fetchCargoVendor { + inherit (old) src; + name = "${old.pname}-${old.version}-cargo-vendor.tar.gz"; + hash = "sha256-npvJz6PMHWzPkI0LVNeiMsZVxmwR6uzjlhBPMCCrFfw="; + }; + } + ); + }); + }); + }) + # Custom gomod2nix overlay that avoids darwin.apple_sdk_11_0 reference + ( + final: prev: + let + gomodSrc = sources.gomod2nix; + callPackage = final.callPackage; + gomodBuilder = callPackage "${gomodSrc}/builder" { }; + in + { + inherit (gomodBuilder) buildGoApplication mkGoEnv mkVendorEnv; + gomod2nix = (callPackage "${gomodSrc}/default.nix" { }).overrideAttrs (_: { + modRoot = "."; + }); + } + ) ( pkgs: _: import ./scripts.nix { @@ -35,7 +73,7 @@ import sources.nixpkgs { ) (_: pkgs: { test-env = pkgs.callPackage ./testenv.nix { }; }) (_: pkgs: { - cosmovisor = pkgs.buildGo122Module rec { + cosmovisor = (pkgs.buildGo125Module or (pkgs.buildGoModule.override { go = pkgs.go_1_25; })) rec { name = "cosmovisor"; src = sources.cosmos-sdk + "/cosmovisor"; subPackages = [ "./cmd/cosmovisor" ]; diff --git a/nix/go-ethereum.nix b/nix/go-ethereum.nix index 639e7edc75..975012f656 100644 --- a/nix/go-ethereum.nix +++ b/nix/go-ethereum.nix @@ -62,13 +62,13 @@ buildGoModule rec { tags = [ "urfave_cli_no_docs" ]; # Fix for usb-related segmentation faults on darwin - propagatedBuildInputs = lib.optionals stdenv.isDarwin [ + propagatedBuildInputs = lib.optionals (stdenv.isDarwin && libobjc != null && IOKit != null) [ libobjc IOKit ]; # Add missing dependencies for HID support on Darwin - buildInputs = lib.optionals stdenv.isDarwin [ + buildInputs = lib.optionals (stdenv.isDarwin && libobjc != null && IOKit != null) [ libobjc IOKit ]; diff --git a/nix/golangci-lint.nix b/nix/golangci-lint.nix index 4c09053e00..a3f160ce15 100644 --- a/nix/golangci-lint.nix +++ b/nix/golangci-lint.nix @@ -1,11 +1,11 @@ { - buildGo123Module, + buildGo125Module, fetchFromGitHub, lib, installShellFiles, }: -buildGo123Module rec { +buildGo125Module rec { pname = "golangci-lint"; version = "2.1.6"; diff --git a/nix/sources.json b/nix/sources.json index 973697b7a8..404aa7c39e 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -11,6 +11,18 @@ "url": "https://github.com/cosmos/cosmos-sdk/archive/b6c77e6c819f8a51166649eaef125d1bfb276f04.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, + "flake-compat": { + "branch": "master", + "description": null, + "homepage": null, + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "sha256": "1qc703yg0babixi6wshn5wm2kgl5y1drcswgszh4xxzbrwkk9sv7", + "type": "tarball", + "url": "https://github.com/edolstra/flake-compat/archive/b4a34015c698c7793d592d66adbab377907a2be8.tar.gz", + "url_template": "https://github.com///archive/.tar.gz" + }, "gomod2nix": { "branch": "master", "description": "Convert applications using Go modules to Nix expressions", @@ -36,15 +48,15 @@ "url_template": "https://github.com///archive/.tar.gz" }, "nixpkgs": { - "branch": "release-24.05", + "branch": "release-25.11", "description": "Nix Packages collection", "homepage": "", "owner": "NixOS", "repo": "nixpkgs", - "rev": "50286248f2d7283682bdd47ba14af33a9233b88b", - "sha256": "19sqfs6pamknhlg3mqpqs3wj0wj1ynj5icfmhqmjjvq08byfc2hl", + "rev": "9cf79b5735b34d25bb8ee55c90356e72696e7cb3", + "sha256": "0ijcv5w5x31vir5473qfxwy81vafgyy2amlh14n9g9pkzj9wd8p0", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/50286248f2d7283682bdd47ba14af33a9233b88b.tar.gz", + "url": "https://github.com/NixOS/nixpkgs/archive/9cf79b5735b34d25bb8ee55c90356e72696e7cb3.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "poetry2nix": { @@ -53,22 +65,10 @@ "homepage": "", "owner": "nix-community", "repo": "poetry2nix", - "rev": "29b2641c1c6e67d836f9a9fda8a6de85be9644ac", - "sha256": "164qi61dxw3y345bkdpiwxrk7cql7pf6kay2xi9y751ypssrji4m", + "rev": "75d0515332b7ca269f6d7abfd2c44c47a7cbca7b", + "sha256": "16azjpzhlyfddn9jbx56nbzzh2fgd0b6czsfc9i8813lm6cal83s", "type": "tarball", - "url": "https://github.com/nix-community/poetry2nix/archive/29b2641c1c6e67d836f9a9fda8a6de85be9644ac.tar.gz", - "url_template": "https://github.com///archive/.tar.gz" - }, - "flake-compat": { - "branch": "master", - "description": null, - "homepage": null, - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "sha256": "1qc703yg0babixi6wshn5wm2kgl5y1drcswgszh4xxzbrwkk9sv7", - "type": "tarball", - "url": "https://github.com/edolstra/flake-compat/archive/b4a34015c698c7793d592d66adbab377907a2be8.tar.gz", + "url": "https://github.com/nix-community/poetry2nix/archive/75d0515332b7ca269f6d7abfd2c44c47a7cbca7b.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } } diff --git a/tests/rpc/rpc_test.go b/tests/rpc/rpc_test.go index e376d2efd0..9722d4e90f 100644 --- a/tests/rpc/rpc_test.go +++ b/tests/rpc/rpc_test.go @@ -129,7 +129,7 @@ func callWithError(method string, params interface{}) (*Response, error) { } if rpcRes.Error != nil { - return nil, fmt.Errorf(rpcRes.Error.Message) + return nil, fmt.Errorf("%s", rpcRes.Error.Message) } return rpcRes, nil From 7da2d575eebe931d83aa83d5ef0f214efef6bbfc Mon Sep 17 00:00:00 2001 From: Thomas <81727899+thomas-nguy@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:12:09 +0900 Subject: [PATCH 196/210] feat: support create_access_list (#768) * support create_access_list * add changelog # Conflicts: # CHANGELOG.md * fix lint * make gas limit consistant * fix conflict * rework * cleaning * fix pointer * add log * add log * fix response * fix logic * remove debug * fix comments * minor improvement --- CHANGELOG.md | 4 + proto/ethermint/evm/v1/query.proto | 11 + rpc/backend/backend.go | 5 + rpc/backend/call_tx.go | 66 ++++ rpc/backend/mocks/evm_query_client.go | 191 ++++++++++-- rpc/backend/tx_info.go | 25 ++ rpc/namespaces/ethereum/eth/api.go | 19 ++ rpc/types/types.go | 6 + x/evm/keeper/grpc_query.go | 130 ++++++++ x/evm/types/access_list.go | 5 + x/evm/types/query.pb.go | 415 +++++++++++++++++++------- x/evm/types/query.pb.gw.go | 83 ++++++ x/evm/types/tracer.go | 6 +- 13 files changed, 832 insertions(+), 134 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54f9b3fc31..ae466b1836 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,9 @@ Ref: https://keepachangelog.com/en/1.0.0/ # Changelog ## Unreleased + +### Features + * (go) [#787](https://github.com/crypto-org-chain/ethermint/pull/787) feat: use golang 1.25.0. * (evm) [#725](https://github.com/crypto-org-chain/ethermint/pull/725) feat(RPC): add authorizationList from eth_getTransactionByHash response for EIP-7702 transactions * (evm) [#740](https://github.com/crypto-org-chain/ethermint/pull/740) fix: missing tx context during vm initialisation @@ -46,6 +49,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (ante) [#775](https://github.com/crypto-org-chain/ethermint/pull/775) fix: race condition in antecache * (ante) [#789](https://github.com/crypto-org-chain/ethermint/pull/789) fix: add check on evm transaction tip * (evm) [#789](https://github.com/crypto-org-chain/ethermint/pull/795) chore: add validation for HeaderHashNum and HistoryServeWindow in params +* (api) [#768](https://github.com/crypto-org-chain/ethermint/pull/768) feat: support create access list ## [v0.22.0] - 2025-08-12 diff --git a/proto/ethermint/evm/v1/query.proto b/proto/ethermint/evm/v1/query.proto index e96a7af804..3fec21617a 100644 --- a/proto/ethermint/evm/v1/query.proto +++ b/proto/ethermint/evm/v1/query.proto @@ -81,6 +81,11 @@ service Query { rpc BaseFee(QueryBaseFeeRequest) returns (QueryBaseFeeResponse) { option (google.api.http).get = "/ethermint/evm/v1/base_fee"; } + + // CreateAccessList implement `eth_createAccessList` rpc call + rpc CreateAccessList(EthCallRequest) returns (CreateAccessListResponse) { + option (google.api.http).get = "/ethermint/evm/v1/create_access_list"; + } } // QueryAccountRequest is the request type for the Query/Account RPC method. @@ -338,3 +343,9 @@ message QueryBaseFeeResponse { // base_fee is the EIP1559 base fee string base_fee = 1 [(gogoproto.customtype) = "cosmossdk.io/math.Int"]; } + +// CreateAccessListResponse defines CreateAccessList response +message CreateAccessListResponse { + // data is the response serialized in bytes + bytes data = 1; +} \ No newline at end of file diff --git a/rpc/backend/backend.go b/rpc/backend/backend.go index ade0c4adcd..afed1150b0 100644 --- a/rpc/backend/backend.go +++ b/rpc/backend/backend.go @@ -125,6 +125,11 @@ type EVMBackend interface { GetTransactionReceipt(hash common.Hash, resBlock *tmrpctypes.ResultBlock) (map[string]interface{}, error) GetTransactionByBlockHashAndIndex(hash common.Hash, idx hexutil.Uint) (*rpctypes.RPCTransaction, error) GetTransactionByBlockNumberAndIndex(blockNum rpctypes.BlockNumber, idx hexutil.Uint) (*rpctypes.RPCTransaction, error) + CreateAccessList( + args evmtypes.TransactionArgs, + blockNrOrHash rpctypes.BlockNumberOrHash, + overrides *json.RawMessage, + ) (*rpctypes.AccessListResult, error) // Send Transaction Resend(args evmtypes.TransactionArgs, gasPrice *hexutil.Big, gasLimit *hexutil.Uint64) (common.Hash, error) diff --git a/rpc/backend/call_tx.go b/rpc/backend/call_tx.go index 8a7177d7f8..907c458a82 100644 --- a/rpc/backend/call_tx.go +++ b/rpc/backend/call_tx.go @@ -245,6 +245,9 @@ func (b *Backend) SetTxDefaults(args evmtypes.TransactionArgs) (evmtypes.Transac args.Value = new(hexutil.Big) } if args.Nonce == nil { + if args.From == nil { + return args, errors.New("missing from in argument") + } // get the nonce from the account retriever // ignore error in case tge account doesn't exist yet nonce, _ := b.getAccountNonce(*args.From, true, 0, b.logger) @@ -461,3 +464,66 @@ func (b *Backend) GasPrice() (*hexutil.Big, error) { return (*hexutil.Big)(result), nil } + +// CreateAccessListCall performs a simulated call operation through the evmtypes. It returns a +// list of accessed slot and an estimated gas used on the operation or an error if fails. +func (b *Backend) CreateAccessListCall( + args evmtypes.TransactionArgs, + blockNr rpctypes.BlockNumber, + overrides *json.RawMessage, +) (*evmtypes.AccessListResult, error) { + bz, err := json.Marshal(&args) + if err != nil { + return nil, err + } + header, err := b.TendermintHeaderByNumber(blockNr) + if err != nil { + // the error message imitates geth behavior + return nil, errors.New("header not found") + } + var bzOverrides []byte + if overrides != nil { + bzOverrides = *overrides + } + + req := evmtypes.EthCallRequest{ + Args: bz, + GasCap: b.RPCGasCap(), + ProposerAddress: sdk.ConsAddress(header.Header.ProposerAddress), + ChainId: b.chainID.Int64(), + Overrides: bzOverrides, + } + + // From ContextWithHeight: if the provided height is 0, + // it will return an empty context and the gRPC query will use + // the latest block height for querying. + ctx := rpctypes.ContextWithHeight(blockNr.Int64()) + timeout := b.RPCEVMTimeout() + + // Setup context so it may be canceled the call has completed + // or, in case of unmetered gas, setup a context with a timeout. + var cancel context.CancelFunc + if timeout > 0 { + ctx, cancel = context.WithTimeout(ctx, timeout) + } else { + ctx, cancel = context.WithCancel(ctx) + } + + // Make sure the context is canceled when the call has completed + // this makes sure resources are cleaned up. + defer cancel() + + res, err := b.queryClient.CreateAccessList(ctx, &req) + if err != nil { + b.logger.Error("error access list call", "err", err) + return nil, err + } + if res == nil { + return nil, errors.New("result is nil") + } + var accessListResult evmtypes.AccessListResult + if err := json.Unmarshal(res.GetData(), &accessListResult); err != nil { + return nil, err + } + return &accessListResult, nil +} diff --git a/rpc/backend/mocks/evm_query_client.go b/rpc/backend/mocks/evm_query_client.go index 845dae72d9..dd9e137ec1 100644 --- a/rpc/backend/mocks/evm_query_client.go +++ b/rpc/backend/mocks/evm_query_client.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.14.0. DO NOT EDIT. +// Code generated by mockery v2.53.5. DO NOT EDIT. package mocks @@ -12,7 +12,7 @@ import ( types "github.com/evmos/ethermint/x/evm/types" ) -// EVMQueryClient is an autogenerated mock type for the EVMQueryClient type +// EVMQueryClient is an autogenerated mock type for the QueryClient type type EVMQueryClient struct { mock.Mock } @@ -28,7 +28,15 @@ func (_m *EVMQueryClient) Account(ctx context.Context, in *types.QueryAccountReq _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for Account") + } + var r0 *types.QueryAccountResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryAccountRequest, ...grpc.CallOption) (*types.QueryAccountResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *types.QueryAccountRequest, ...grpc.CallOption) *types.QueryAccountResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -37,7 +45,6 @@ func (_m *EVMQueryClient) Account(ctx context.Context, in *types.QueryAccountReq } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *types.QueryAccountRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -58,7 +65,15 @@ func (_m *EVMQueryClient) Balance(ctx context.Context, in *types.QueryBalanceReq _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for Balance") + } + var r0 *types.QueryBalanceResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryBalanceRequest, ...grpc.CallOption) (*types.QueryBalanceResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *types.QueryBalanceRequest, ...grpc.CallOption) *types.QueryBalanceResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -67,7 +82,6 @@ func (_m *EVMQueryClient) Balance(ctx context.Context, in *types.QueryBalanceReq } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *types.QueryBalanceRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -88,7 +102,15 @@ func (_m *EVMQueryClient) BaseFee(ctx context.Context, in *types.QueryBaseFeeReq _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for BaseFee") + } + var r0 *types.QueryBaseFeeResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryBaseFeeRequest, ...grpc.CallOption) (*types.QueryBaseFeeResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *types.QueryBaseFeeRequest, ...grpc.CallOption) *types.QueryBaseFeeResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -97,7 +119,6 @@ func (_m *EVMQueryClient) BaseFee(ctx context.Context, in *types.QueryBaseFeeReq } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *types.QueryBaseFeeRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -118,7 +139,15 @@ func (_m *EVMQueryClient) Code(ctx context.Context, in *types.QueryCodeRequest, _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for Code") + } + var r0 *types.QueryCodeResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryCodeRequest, ...grpc.CallOption) (*types.QueryCodeResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *types.QueryCodeRequest, ...grpc.CallOption) *types.QueryCodeResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -127,7 +156,6 @@ func (_m *EVMQueryClient) Code(ctx context.Context, in *types.QueryCodeRequest, } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *types.QueryCodeRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -148,7 +176,15 @@ func (_m *EVMQueryClient) CosmosAccount(ctx context.Context, in *types.QueryCosm _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for CosmosAccount") + } + var r0 *types.QueryCosmosAccountResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryCosmosAccountRequest, ...grpc.CallOption) (*types.QueryCosmosAccountResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *types.QueryCosmosAccountRequest, ...grpc.CallOption) *types.QueryCosmosAccountResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -157,7 +193,6 @@ func (_m *EVMQueryClient) CosmosAccount(ctx context.Context, in *types.QueryCosm } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *types.QueryCosmosAccountRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -167,6 +202,43 @@ func (_m *EVMQueryClient) CosmosAccount(ctx context.Context, in *types.QueryCosm return r0, r1 } +// CreateAccessList provides a mock function with given fields: ctx, in, opts +func (_m *EVMQueryClient) CreateAccessList(ctx context.Context, in *types.EthCallRequest, opts ...grpc.CallOption) (*types.CreateAccessListResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + if len(ret) == 0 { + panic("no return value specified for CreateAccessList") + } + + var r0 *types.CreateAccessListResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) (*types.CreateAccessListResponse, error)); ok { + return rf(ctx, in, opts...) + } + if rf, ok := ret.Get(0).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) *types.CreateAccessListResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*types.CreateAccessListResponse) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // EstimateGas provides a mock function with given fields: ctx, in, opts func (_m *EVMQueryClient) EstimateGas(ctx context.Context, in *types.EthCallRequest, opts ...grpc.CallOption) (*types.EstimateGasResponse, error) { _va := make([]interface{}, len(opts)) @@ -178,7 +250,15 @@ func (_m *EVMQueryClient) EstimateGas(ctx context.Context, in *types.EthCallRequ _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for EstimateGas") + } + var r0 *types.EstimateGasResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) (*types.EstimateGasResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) *types.EstimateGasResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -187,7 +267,6 @@ func (_m *EVMQueryClient) EstimateGas(ctx context.Context, in *types.EthCallRequ } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -208,7 +287,15 @@ func (_m *EVMQueryClient) EthCall(ctx context.Context, in *types.EthCallRequest, _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for EthCall") + } + var r0 *types.MsgEthereumTxResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) (*types.MsgEthereumTxResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) *types.MsgEthereumTxResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -217,7 +304,6 @@ func (_m *EVMQueryClient) EthCall(ctx context.Context, in *types.EthCallRequest, } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -238,7 +324,15 @@ func (_m *EVMQueryClient) Params(ctx context.Context, in *types.QueryParamsReque _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for Params") + } + var r0 *types.QueryParamsResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryParamsRequest, ...grpc.CallOption) (*types.QueryParamsResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *types.QueryParamsRequest, ...grpc.CallOption) *types.QueryParamsResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -247,7 +341,6 @@ func (_m *EVMQueryClient) Params(ctx context.Context, in *types.QueryParamsReque } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *types.QueryParamsRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -268,7 +361,15 @@ func (_m *EVMQueryClient) Storage(ctx context.Context, in *types.QueryStorageReq _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for Storage") + } + var r0 *types.QueryStorageResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryStorageRequest, ...grpc.CallOption) (*types.QueryStorageResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *types.QueryStorageRequest, ...grpc.CallOption) *types.QueryStorageResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -277,7 +378,6 @@ func (_m *EVMQueryClient) Storage(ctx context.Context, in *types.QueryStorageReq } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *types.QueryStorageRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -298,7 +398,15 @@ func (_m *EVMQueryClient) TraceBlock(ctx context.Context, in *types.QueryTraceBl _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for TraceBlock") + } + var r0 *types.QueryTraceBlockResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryTraceBlockRequest, ...grpc.CallOption) (*types.QueryTraceBlockResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *types.QueryTraceBlockRequest, ...grpc.CallOption) *types.QueryTraceBlockResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -307,7 +415,6 @@ func (_m *EVMQueryClient) TraceBlock(ctx context.Context, in *types.QueryTraceBl } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *types.QueryTraceBlockRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -317,8 +424,8 @@ func (_m *EVMQueryClient) TraceBlock(ctx context.Context, in *types.QueryTraceBl return r0, r1 } -// TraceTx provides a mock function with given fields: ctx, in, opts -func (_m *EVMQueryClient) TraceTx(ctx context.Context, in *types.QueryTraceTxRequest, opts ...grpc.CallOption) (*types.QueryTraceTxResponse, error) { +// TraceCall provides a mock function with given fields: ctx, in, opts +func (_m *EVMQueryClient) TraceCall(ctx context.Context, in *types.QueryTraceCallRequest, opts ...grpc.CallOption) (*types.QueryTraceCallResponse, error) { _va := make([]interface{}, len(opts)) for _i := range opts { _va[_i] = opts[_i] @@ -328,17 +435,24 @@ func (_m *EVMQueryClient) TraceTx(ctx context.Context, in *types.QueryTraceTxReq _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *types.QueryTraceTxResponse - if rf, ok := ret.Get(0).(func(context.Context, *types.QueryTraceTxRequest, ...grpc.CallOption) *types.QueryTraceTxResponse); ok { + if len(ret) == 0 { + panic("no return value specified for TraceCall") + } + + var r0 *types.QueryTraceCallResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryTraceCallRequest, ...grpc.CallOption) (*types.QueryTraceCallResponse, error)); ok { + return rf(ctx, in, opts...) + } + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryTraceCallRequest, ...grpc.CallOption) *types.QueryTraceCallResponse); ok { r0 = rf(ctx, in, opts...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*types.QueryTraceTxResponse) + r0 = ret.Get(0).(*types.QueryTraceCallResponse) } } - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *types.QueryTraceTxRequest, ...grpc.CallOption) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, *types.QueryTraceCallRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { r1 = ret.Error(1) @@ -347,8 +461,8 @@ func (_m *EVMQueryClient) TraceTx(ctx context.Context, in *types.QueryTraceTxReq return r0, r1 } -// TraceCall provides a mock function with given fields: ctx, in, opts -func (_m *EVMQueryClient) TraceCall(ctx context.Context, in *types.QueryTraceCallRequest, opts ...grpc.CallOption) (*types.QueryTraceCallResponse, error) { +// TraceTx provides a mock function with given fields: ctx, in, opts +func (_m *EVMQueryClient) TraceTx(ctx context.Context, in *types.QueryTraceTxRequest, opts ...grpc.CallOption) (*types.QueryTraceTxResponse, error) { _va := make([]interface{}, len(opts)) for _i := range opts { _va[_i] = opts[_i] @@ -358,17 +472,24 @@ func (_m *EVMQueryClient) TraceCall(ctx context.Context, in *types.QueryTraceCal _ca = append(_ca, _va...) ret := _m.Called(_ca...) - var r0 *types.QueryTraceCallResponse - if rf, ok := ret.Get(0).(func(context.Context, *types.QueryTraceCallRequest, ...grpc.CallOption) *types.QueryTraceCallResponse); ok { + if len(ret) == 0 { + panic("no return value specified for TraceTx") + } + + var r0 *types.QueryTraceTxResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryTraceTxRequest, ...grpc.CallOption) (*types.QueryTraceTxResponse, error)); ok { + return rf(ctx, in, opts...) + } + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryTraceTxRequest, ...grpc.CallOption) *types.QueryTraceTxResponse); ok { r0 = rf(ctx, in, opts...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*types.QueryTraceCallResponse) + r0 = ret.Get(0).(*types.QueryTraceTxResponse) } } - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, *types.QueryTraceCallRequest, ...grpc.CallOption) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, *types.QueryTraceTxRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { r1 = ret.Error(1) @@ -388,7 +509,15 @@ func (_m *EVMQueryClient) ValidatorAccount(ctx context.Context, in *types.QueryV _ca = append(_ca, _va...) ret := _m.Called(_ca...) + if len(ret) == 0 { + panic("no return value specified for ValidatorAccount") + } + var r0 *types.QueryValidatorAccountResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *types.QueryValidatorAccountRequest, ...grpc.CallOption) (*types.QueryValidatorAccountResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *types.QueryValidatorAccountRequest, ...grpc.CallOption) *types.QueryValidatorAccountResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -397,7 +526,6 @@ func (_m *EVMQueryClient) ValidatorAccount(ctx context.Context, in *types.QueryV } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *types.QueryValidatorAccountRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -407,13 +535,12 @@ func (_m *EVMQueryClient) ValidatorAccount(ctx context.Context, in *types.QueryV return r0, r1 } -type mockConstructorTestingTNewEVMQueryClient interface { +// NewEVMQueryClient creates a new instance of EVMQueryClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewEVMQueryClient(t interface { mock.TestingT Cleanup(func()) -} - -// NewEVMQueryClient creates a new instance of EVMQueryClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -func NewEVMQueryClient(t mockConstructorTestingTNewEVMQueryClient) *EVMQueryClient { +}) *EVMQueryClient { mock := &EVMQueryClient{} mock.Mock.Test(t) diff --git a/rpc/backend/tx_info.go b/rpc/backend/tx_info.go index 31a30003f8..0967500009 100644 --- a/rpc/backend/tx_info.go +++ b/rpc/backend/tx_info.go @@ -16,6 +16,7 @@ package backend import ( + "encoding/json" "fmt" errorsmod "cosmossdk.io/errors" @@ -480,3 +481,27 @@ func (b *Backend) GetTransactionByBlockAndIndex(block *tmrpctypes.ResultBlock, i b.chainID, ) } + +// CreateAccessList returns the list of addresses and storage keys used by the transaction (except for the +// sender account and precompiles), plus the estimated gas if the access list were added to the transaction. +func (b *Backend) CreateAccessList( + args evmtypes.TransactionArgs, + blockNrOrHash rpctypes.BlockNumberOrHash, + overrides *json.RawMessage, +) (*rpctypes.AccessListResult, error) { + blockNb, err := b.BlockNumberFromTendermint(blockNrOrHash) + if err != nil { + return nil, err + } + res, err := b.CreateAccessListCall(args, blockNb, overrides) + if err != nil { + b.logger.Error("failed to call access list", "error", err) + return nil, err + } + gasUsed := hexutil.Uint64(res.GasUsed) + result := rpctypes.AccessListResult{ + AccessList: &res.Accesslist, + GasUsed: &gasUsed, + } + return &result, nil +} diff --git a/rpc/namespaces/ethereum/eth/api.go b/rpc/namespaces/ethereum/eth/api.go index 569cda0719..592624491f 100644 --- a/rpc/namespaces/ethereum/eth/api.go +++ b/rpc/namespaces/ethereum/eth/api.go @@ -115,6 +115,11 @@ type EthereumAPI interface { FillTransaction(args evmtypes.TransactionArgs) (*rpctypes.SignTransactionResult, error) Resend(ctx context.Context, args evmtypes.TransactionArgs, gasPrice *hexutil.Big, gasLimit *hexutil.Uint64) (common.Hash, error) GetPendingTransactions() ([]*rpctypes.RPCTransaction, error) + CreateAccessList( + args evmtypes.TransactionArgs, + blockNrOrHash rpctypes.BlockNumberOrHash, + overrides *json.RawMessage, + ) (*rpctypes.AccessListResult, error) // eth_signTransaction (on Ethereum.org) // eth_getCompilers (on Ethereum.org) // eth_compileSolidity (on Ethereum.org) @@ -535,3 +540,17 @@ func (e *PublicAPI) GetPendingTransactions() ([]*rpctypes.RPCTransaction, error) return result, nil } + +// CreateAccessList returns the list of addresses and storage keys used by the transaction (except for the +// sender account and precompiles), plus the estimated gas if the access list were added to the transaction. +func (e *PublicAPI) CreateAccessList( + args evmtypes.TransactionArgs, + blockNrOrHash rpctypes.BlockNumberOrHash, + overrides *json.RawMessage, +) (*rpctypes.AccessListResult, error) { + res, err := e.backend.CreateAccessList(args, blockNrOrHash, overrides) + if err != nil { + return nil, err + } + return res, nil +} diff --git a/rpc/types/types.go b/rpc/types/types.go index f7c5dae0f5..cdeda7e621 100644 --- a/rpc/types/types.go +++ b/rpc/types/types.go @@ -187,6 +187,12 @@ type OneFeeHistory struct { GasUsedRatio float64 // the ratio of gas used to the gas limit for each block } +// AccessListResult represents the access list and gas used for a transaction +type AccessListResult struct { + AccessList *ethtypes.AccessList `json:"accessList"` + GasUsed *hexutil.Uint64 `json:"gasUsed"` +} + type TraceConfig struct { evmtypes.TraceConfig TracerConfig json.RawMessage `json:"tracerConfig"` diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index fcd5fd2510..f7897558fe 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -829,3 +829,133 @@ func getChainID(ctx sdk.Context, chainID int64) (*big.Int, error) { } return big.NewInt(chainID), nil } + +func (k Keeper) CreateAccessList(c context.Context, request *types.EthCallRequest) (*types.CreateAccessListResponse, error) { + if request == nil { + return nil, status.Error(codes.InvalidArgument, "empty request") + } + + ctx := sdk.UnwrapSDKContext(c) + ctx = ctx.WithProposer(GetProposerAddress(ctx, request.ProposerAddress)) + + var args types.TransactionArgs + err := json.Unmarshal(request.Args, &args) + if err != nil { + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + chainID, err := getChainID(ctx, request.ChainId) + if err != nil { + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + cfg, err := k.EVMConfig(ctx, chainID, common.Hash{}) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + var overrides rpctypes.StateOverride + if len(request.Overrides) > 0 { + if err := json.Unmarshal(request.Overrides, &overrides); err != nil { + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + + cfg.Overrides = &overrides + } + // ApplyMessageWithConfig expect correct nonce set in msg + if args.Nonce == nil { + nonce := hexutil.Uint64(k.GetNonce(ctx, args.GetFrom())) + args.Nonce = &nonce + } + // Enforce the gas limit cap + gasCap := request.GasCap + if k.queryMaxGasLimit != GasNoLimit { + if gasCap == 0 { + gasCap = k.queryMaxGasLimit + } else if k.queryMaxGasLimit < gasCap { + gasCap = k.queryMaxGasLimit + } + } + + addressesToExclude, err := k.getAccessListExcludes(ctx, args, cfg) + if err != nil { + k.Logger(ctx).Error("failed to get access list excludes", "error", err) + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + // Create an initial tracer + prevTracer := logger.NewAccessListTracer(nil, addressesToExclude) + if args.AccessList != nil { + prevTracer = logger.NewAccessListTracer(*args.AccessList, addressesToExclude) + } + // iteratively expand the access list (max allowed interation 10 for safety) + for i := 0; i < 10; i++ { + // Retrieve the current access list to expand + accessList := prevTracer.AccessList() + args.AccessList = &accessList + msg, err := args.ToMessage(gasCap, cfg.BaseFee) + if err != nil { + return nil, status.Error(codes.InvalidArgument, err.Error()) + } + + // Apply the transaction with the access list tracer + newTracer := logger.NewAccessListTracer(accessList, addressesToExclude) + cfg.Tracer = newTracer.Hooks() + res, err := k.ApplyMessageWithConfig(ctx, msg, cfg, false) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + // Check if access list has converged (no new addresses/slots accessed) + if newTracer.Equal(prevTracer) { + k.Logger(ctx).Info("access list converged", "accessList", accessList) + result := types.AccessListResult{Accesslist: accessList, GasUsed: res.GasUsed} + bz, err := json.Marshal(&result) + return &types.CreateAccessListResponse{ + Data: bz, + }, err + } + prevTracer = newTracer + } + return nil, status.Error(codes.Internal, "access list did not converge") +} + +// getAccessListExcludes returns the addresses to exclude from the access list. +// This includes the sender account, the target account (if provided), precompiles, +// and any addresses in the authorization list. +func (k Keeper) getAccessListExcludes(ctx sdk.Context, args types.TransactionArgs, cfg *EVMConfig) (map[common.Address]struct{}, error) { + // exclude sender and precompiles + addressesToExclude := make(map[common.Address]struct{}) + addressesToExclude[args.GetFrom()] = struct{}{} + if args.To != nil { + addressesToExclude[*args.To] = struct{}{} + } + + rules := cfg.Rules + precompiles := vm.ActivePrecompiles(rules) + for _, addr := range precompiles { + addressesToExclude[addr] = struct{}{} + } + + // check if enough gas was provided to cover all authorization lists + if args.Gas == nil { + return nil, errors.New("gas must be set when using authorization list") + } + maxAuthorizations := uint64(*args.Gas) / ethparams.CallNewAccountGas + if uint64(len(args.AuthorizationList)) > maxAuthorizations { + k.Logger(ctx).Error("insufficient gas to process all authorizations", "maxAuthorizations", maxAuthorizations) + return nil, errors.New("insufficient gas to process all authorizations") + } + + for _, auth := range args.AuthorizationList { + // validate authorization (duplicating stateTransition.validateAuthorization() logic from geth: https://github.com/ethereum/go-ethereum/blob/bf8f63dcd27e178bd373bfe41ea718efee2851dd/core/state_transition.go#L575) + nonceOverflow := auth.Nonce+1 < auth.Nonce + invalidChainID := !auth.ChainID.IsZero() && auth.ChainID.CmpBig(cfg.ChainConfig.ChainID) != 0 + if nonceOverflow || invalidChainID { + k.Logger(ctx).Error("invalid authorization", "auth", auth) + continue + } + if authority, err := auth.Authority(); err == nil { + addressesToExclude[authority] = struct{}{} + } + } + + k.Logger(ctx).Debug("access list excludes created", "addressesToExclude", addressesToExclude) + return addressesToExclude, nil +} diff --git a/x/evm/types/access_list.go b/x/evm/types/access_list.go index 4e0b18cd13..95679e0a0b 100644 --- a/x/evm/types/access_list.go +++ b/x/evm/types/access_list.go @@ -68,3 +68,8 @@ func (al AccessList) ToEthAccessList() *ethtypes.AccessList { return ðAccessList } + +type AccessListResult struct { + Accesslist ethtypes.AccessList `json:"accessList"` + GasUsed uint64 `json:"gasUsed"` +} diff --git a/x/evm/types/query.pb.go b/x/evm/types/query.pb.go index dfbdc84575..7d7638a00b 100644 --- a/x/evm/types/query.pb.go +++ b/x/evm/types/query.pb.go @@ -1470,6 +1470,52 @@ func (m *QueryBaseFeeResponse) XXX_DiscardUnknown() { var xxx_messageInfo_QueryBaseFeeResponse proto.InternalMessageInfo +// CreateAccessListResponse defines CreateAccessList response +type CreateAccessListResponse struct { + // data is the response serialized in bytes + Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` +} + +func (m *CreateAccessListResponse) Reset() { *m = CreateAccessListResponse{} } +func (m *CreateAccessListResponse) String() string { return proto.CompactTextString(m) } +func (*CreateAccessListResponse) ProtoMessage() {} +func (*CreateAccessListResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e15a877459347994, []int{26} +} +func (m *CreateAccessListResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CreateAccessListResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CreateAccessListResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CreateAccessListResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateAccessListResponse.Merge(m, src) +} +func (m *CreateAccessListResponse) XXX_Size() int { + return m.Size() +} +func (m *CreateAccessListResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CreateAccessListResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateAccessListResponse proto.InternalMessageInfo + +func (m *CreateAccessListResponse) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + func init() { proto.RegisterType((*QueryAccountRequest)(nil), "ethermint.evm.v1.QueryAccountRequest") proto.RegisterType((*QueryAccountResponse)(nil), "ethermint.evm.v1.QueryAccountResponse") @@ -1497,111 +1543,115 @@ func init() { proto.RegisterType((*QueryTraceBlockResponse)(nil), "ethermint.evm.v1.QueryTraceBlockResponse") proto.RegisterType((*QueryBaseFeeRequest)(nil), "ethermint.evm.v1.QueryBaseFeeRequest") proto.RegisterType((*QueryBaseFeeResponse)(nil), "ethermint.evm.v1.QueryBaseFeeResponse") + proto.RegisterType((*CreateAccessListResponse)(nil), "ethermint.evm.v1.CreateAccessListResponse") } func init() { proto.RegisterFile("ethermint/evm/v1/query.proto", fileDescriptor_e15a877459347994) } var fileDescriptor_e15a877459347994 = []byte{ - // 1576 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0xcf, 0x6f, 0x1b, 0xc5, - 0x17, 0xcf, 0xc6, 0x4e, 0xec, 0x8c, 0x93, 0x36, 0xdf, 0x69, 0xf2, 0xad, 0xb3, 0x24, 0x76, 0xba, - 0x69, 0x7e, 0xb5, 0xe9, 0x2e, 0x31, 0x55, 0x25, 0x7a, 0xa1, 0x8d, 0x95, 0x96, 0xd2, 0x16, 0x95, - 0x25, 0xe2, 0x80, 0x84, 0xac, 0xf1, 0x7a, 0xba, 0xb6, 0xe2, 0xdd, 0x71, 0x77, 0xc6, 0xc6, 0xe9, - 0x0f, 0x0e, 0x08, 0x4a, 0x51, 0x25, 0x54, 0x09, 0x89, 0x23, 0xea, 0x7f, 0xc0, 0xbf, 0xd1, 0x63, - 0x25, 0x84, 0x84, 0x38, 0x14, 0xd4, 0x72, 0xe0, 0x2f, 0xe0, 0xc0, 0x09, 0xcd, 0xec, 0xac, 0xbd, - 0xf6, 0x7a, 0xed, 0x14, 0x15, 0xa9, 0x12, 0x27, 0xef, 0xbc, 0x79, 0xf3, 0xde, 0xe7, 0xcd, 0xfb, - 0x39, 0x06, 0x8b, 0x98, 0x55, 0xb1, 0xe7, 0xd4, 0x5c, 0x66, 0xe0, 0x96, 0x63, 0xb4, 0xb6, 0x8d, - 0x5b, 0x4d, 0xec, 0x1d, 0xe8, 0x0d, 0x8f, 0x30, 0x02, 0x67, 0x3b, 0xbb, 0x3a, 0x6e, 0x39, 0x7a, - 0x6b, 0x5b, 0x3d, 0x65, 0x11, 0xea, 0x10, 0x6a, 0x94, 0x11, 0xc5, 0x3e, 0xab, 0xd1, 0xda, 0x2e, - 0x63, 0x86, 0xb6, 0x8d, 0x06, 0xb2, 0x6b, 0x2e, 0x62, 0x35, 0xe2, 0xfa, 0xa7, 0xd5, 0x85, 0x88, - 0x6c, 0xd6, 0x96, 0x5b, 0x6a, 0x64, 0xab, 0x4e, 0x6c, 0xb9, 0xb7, 0x14, 0xd9, 0x6b, 0x20, 0x0f, - 0x39, 0x54, 0x6e, 0xaf, 0x44, 0xa5, 0x7a, 0xc8, 0xc2, 0x25, 0x8b, 0xb8, 0x37, 0x6b, 0x81, 0x8c, - 0x39, 0x9b, 0xd8, 0x44, 0x7c, 0x1a, 0xfc, 0x4b, 0x52, 0x17, 0x6d, 0x42, 0xec, 0x3a, 0x36, 0x50, - 0xa3, 0x66, 0x20, 0xd7, 0x25, 0x4c, 0xa0, 0x0d, 0x04, 0xe7, 0xe5, 0xae, 0x58, 0x95, 0x9b, 0x37, - 0x0d, 0x56, 0x73, 0x30, 0x65, 0xc8, 0x69, 0xf8, 0x0c, 0xda, 0xdb, 0xe0, 0xd8, 0x07, 0xdc, 0xe2, - 0x8b, 0x96, 0x45, 0x9a, 0x2e, 0x33, 0xf1, 0xad, 0x26, 0xa6, 0x0c, 0x66, 0x41, 0x0a, 0x55, 0x2a, - 0x1e, 0xa6, 0x34, 0xab, 0x2c, 0x2b, 0x1b, 0x53, 0x66, 0xb0, 0x3c, 0x9f, 0x7e, 0xf0, 0x38, 0x3f, - 0xf6, 0xc7, 0xe3, 0xfc, 0x98, 0x66, 0x81, 0xb9, 0xde, 0xa3, 0xb4, 0x41, 0x5c, 0x8a, 0xf9, 0xd9, - 0x32, 0xaa, 0x23, 0xd7, 0xc2, 0xc1, 0x59, 0xb9, 0x84, 0x6f, 0x80, 0x29, 0x8b, 0x54, 0x70, 0xa9, - 0x8a, 0x68, 0x35, 0x3b, 0x2e, 0xf6, 0xd2, 0x9c, 0xf0, 0x2e, 0xa2, 0x55, 0x38, 0x07, 0x26, 0x5c, - 0xc2, 0x0f, 0x25, 0x96, 0x95, 0x8d, 0xa4, 0xe9, 0x2f, 0xb4, 0x77, 0xc0, 0x82, 0x50, 0x52, 0x14, - 0x2e, 0xfa, 0x07, 0x28, 0xef, 0x2b, 0x40, 0x1d, 0x24, 0x41, 0x82, 0x5d, 0x05, 0x47, 0x7c, 0xef, - 0x97, 0x7a, 0x25, 0xcd, 0xf8, 0xd4, 0x8b, 0x3e, 0x11, 0xaa, 0x20, 0x4d, 0xb9, 0x52, 0x8e, 0x6f, - 0x5c, 0xe0, 0xeb, 0xac, 0xb9, 0x08, 0xe4, 0x4b, 0x2d, 0xb9, 0x4d, 0xa7, 0x8c, 0x3d, 0x69, 0xc1, - 0x8c, 0xa4, 0xbe, 0x2f, 0x88, 0xda, 0x55, 0xb0, 0x28, 0x70, 0x7c, 0x84, 0xea, 0xb5, 0x0a, 0x62, - 0xc4, 0xeb, 0x33, 0xe6, 0x04, 0x98, 0xb6, 0x88, 0xdb, 0x8f, 0x23, 0xc3, 0x69, 0x17, 0x23, 0x56, - 0x3d, 0x54, 0xc0, 0x52, 0x8c, 0x34, 0x69, 0xd8, 0x3a, 0x38, 0x1a, 0xa0, 0xea, 0x95, 0x18, 0x80, - 0x7d, 0x85, 0xa6, 0x05, 0x41, 0xb4, 0xe3, 0xfb, 0xf9, 0x65, 0xdc, 0xf3, 0xa6, 0x0c, 0xa2, 0xce, - 0xd1, 0x51, 0x41, 0xa4, 0x5d, 0x95, 0xca, 0x3e, 0x64, 0xc4, 0x43, 0xf6, 0x68, 0x65, 0x70, 0x16, - 0x24, 0xf6, 0xf1, 0x81, 0x8c, 0x37, 0xfe, 0x19, 0x52, 0xbf, 0x25, 0xd5, 0x77, 0x84, 0x49, 0xf5, - 0x73, 0x60, 0xa2, 0x85, 0xea, 0xcd, 0x40, 0xb9, 0xbf, 0xd0, 0xce, 0x81, 0x59, 0x19, 0x4a, 0x95, - 0x97, 0x32, 0x72, 0x1d, 0xfc, 0x2f, 0x74, 0x4e, 0xaa, 0x80, 0x20, 0xc9, 0x63, 0x5f, 0x9c, 0x9a, - 0x36, 0xc5, 0xb7, 0x76, 0x1b, 0x40, 0xc1, 0xb8, 0xd7, 0xbe, 0x46, 0x6c, 0x1a, 0xa8, 0x80, 0x20, - 0x29, 0x32, 0xc6, 0x97, 0x2f, 0xbe, 0xe1, 0x25, 0x00, 0xba, 0xb5, 0x49, 0xd8, 0x96, 0x29, 0xac, - 0xe9, 0x7e, 0xd0, 0xea, 0xbc, 0x90, 0xe9, 0x7e, 0xcd, 0x93, 0x85, 0x4c, 0xbf, 0xd1, 0xbd, 0x2a, - 0x33, 0x74, 0x32, 0x04, 0xf2, 0x6b, 0x45, 0x5e, 0x6c, 0xa0, 0x5c, 0xe2, 0xdc, 0x04, 0xc9, 0x3a, - 0xb1, 0xb9, 0x75, 0x89, 0x8d, 0x4c, 0x61, 0x5e, 0xef, 0x2f, 0x9f, 0xfa, 0x35, 0x62, 0x9b, 0x82, - 0x05, 0x5e, 0x1e, 0x00, 0x6a, 0x7d, 0x24, 0x28, 0x5f, 0x4f, 0x18, 0x95, 0x36, 0x27, 0xef, 0xe1, - 0x86, 0x28, 0x92, 0x12, 0xb7, 0x76, 0x5d, 0x02, 0x0c, 0xa8, 0x12, 0xe0, 0x39, 0x30, 0xe9, 0x17, - 0x53, 0x71, 0x41, 0x99, 0x42, 0x36, 0x0a, 0xd1, 0x3f, 0xb1, 0x93, 0x7c, 0xf2, 0x2c, 0x3f, 0x66, - 0x4a, 0x6e, 0xed, 0x27, 0x05, 0x1c, 0xd9, 0x65, 0xd5, 0x22, 0xaa, 0xd7, 0x43, 0x37, 0x8d, 0x3c, - 0x9b, 0x06, 0x3e, 0xe1, 0xdf, 0xf0, 0x38, 0x48, 0xd9, 0x88, 0x96, 0x2c, 0xd4, 0x90, 0xe9, 0x31, - 0x69, 0x23, 0x5a, 0x44, 0x0d, 0xf8, 0x09, 0x98, 0x6d, 0x78, 0xa4, 0x41, 0x28, 0xf6, 0x3a, 0x29, - 0xc6, 0xd3, 0x63, 0x7a, 0xa7, 0xf0, 0xd7, 0xb3, 0xbc, 0x6e, 0xd7, 0x58, 0xb5, 0x59, 0xd6, 0x2d, - 0xe2, 0x18, 0xb2, 0xbf, 0xf8, 0x3f, 0x67, 0x68, 0x65, 0xdf, 0x60, 0x07, 0x0d, 0x4c, 0xf5, 0x62, - 0x37, 0xb7, 0xcd, 0xa3, 0x81, 0xac, 0x20, 0x2f, 0x17, 0x40, 0xda, 0xaa, 0xa2, 0x9a, 0x5b, 0xaa, - 0x55, 0xb2, 0xc9, 0x65, 0x65, 0x23, 0x61, 0xa6, 0xc4, 0xfa, 0x4a, 0x05, 0x2e, 0x82, 0x29, 0xd2, - 0xc2, 0x9e, 0x57, 0xab, 0x60, 0x9a, 0x9d, 0x10, 0x58, 0xbb, 0x04, 0x6d, 0x0f, 0x1c, 0xdb, 0xa5, - 0xac, 0xe6, 0x20, 0x86, 0x2f, 0xa3, 0xee, 0x35, 0xcd, 0x82, 0x84, 0x8d, 0x7c, 0xd3, 0x92, 0x26, - 0xff, 0xe4, 0x14, 0x0f, 0x33, 0x61, 0xd5, 0xb4, 0xc9, 0x3f, 0xb9, 0xce, 0x96, 0x53, 0xc2, 0x9e, - 0x47, 0xfc, 0x4c, 0x9f, 0x32, 0x53, 0x2d, 0x67, 0x97, 0x2f, 0xb5, 0xef, 0x92, 0x41, 0x78, 0xf0, - 0xce, 0xb4, 0xd7, 0x0e, 0xae, 0x6c, 0x1b, 0x24, 0x1c, 0x6a, 0xcb, 0xab, 0xcf, 0x47, 0xaf, 0xfe, - 0x3a, 0xb5, 0x77, 0x39, 0x0d, 0x37, 0x9d, 0xbd, 0xb6, 0xc9, 0x79, 0xe1, 0x05, 0x30, 0x1d, 0x6e, - 0x6f, 0x42, 0x53, 0xa6, 0xb0, 0x14, 0x3d, 0x2b, 0x54, 0x15, 0x05, 0x93, 0x99, 0x61, 0xdd, 0x05, - 0x2c, 0x82, 0xe9, 0x86, 0x87, 0x2b, 0xd8, 0xc2, 0x94, 0x12, 0x8f, 0x66, 0x93, 0x22, 0x36, 0x47, - 0x6a, 0xef, 0x39, 0xc4, 0x0b, 0x6e, 0xb9, 0x4e, 0xac, 0xfd, 0xa0, 0xb4, 0x4d, 0x88, 0x4b, 0xce, - 0x08, 0x9a, 0x5f, 0xd8, 0xe0, 0x12, 0x00, 0x3e, 0x8b, 0xc8, 0xbf, 0x49, 0x71, 0x23, 0x53, 0x82, - 0x22, 0x5a, 0x56, 0x31, 0xd8, 0xe6, 0x5d, 0x35, 0x9b, 0x12, 0x66, 0xa8, 0xba, 0xdf, 0x72, 0xf5, - 0xa0, 0xe5, 0xea, 0x7b, 0x41, 0xcb, 0xdd, 0x49, 0xf3, 0xf8, 0x7b, 0xf4, 0x6b, 0x5e, 0x91, 0x42, - 0xf8, 0xce, 0xc0, 0x30, 0x4a, 0xff, 0x3b, 0x61, 0x34, 0xd5, 0x1b, 0x46, 0x67, 0x41, 0x9a, 0x27, - 0x65, 0xe9, 0x26, 0xc6, 0x59, 0xc0, 0x6d, 0xdb, 0x59, 0xf8, 0xe5, 0x59, 0x7e, 0xde, 0x97, 0x4f, - 0x2b, 0xfb, 0x7a, 0x8d, 0x18, 0x0e, 0x62, 0x55, 0xfd, 0x8a, 0xcb, 0x78, 0xfd, 0xa5, 0xf8, 0x12, - 0xc6, 0xef, 0x25, 0xd3, 0xe3, 0xb3, 0x09, 0x33, 0xcd, 0xda, 0xa5, 0x9a, 0x5b, 0xc1, 0x6d, 0xed, - 0x94, 0x2c, 0xa1, 0x9d, 0xb8, 0xe8, 0xd6, 0xb7, 0x0a, 0x62, 0x28, 0xc8, 0x25, 0xfe, 0xad, 0x7d, - 0x95, 0x00, 0xf3, 0x5d, 0xe6, 0xd7, 0x35, 0xf3, 0xfa, 0xe3, 0x33, 0xf9, 0xd2, 0xf1, 0xf9, 0x9a, - 0x84, 0x56, 0xd8, 0xf7, 0xe9, 0x1e, 0xdf, 0x6b, 0x5b, 0xe0, 0xff, 0xfd, 0x8e, 0x18, 0xe2, 0xb7, - 0x6f, 0x12, 0x61, 0xf6, 0x1d, 0xae, 0x20, 0x94, 0xff, 0xac, 0x1d, 0x74, 0x87, 0xd1, 0xf9, 0xcf, - 0xda, 0xf4, 0x15, 0xe4, 0xff, 0x7f, 0x3d, 0x75, 0xb5, 0x33, 0xe0, 0x78, 0xc4, 0x1f, 0x43, 0xfc, - 0x37, 0xdf, 0x19, 0xd0, 0x44, 0x0e, 0x07, 0x0d, 0xf5, 0x5a, 0x67, 0xf8, 0x92, 0x64, 0x29, 0x22, - 0x5c, 0x18, 0x94, 0xc3, 0x16, 0x86, 0xc2, 0x9f, 0x33, 0x60, 0x42, 0x88, 0x83, 0x5f, 0x2a, 0x20, - 0x25, 0xe7, 0x51, 0xb8, 0x1a, 0x75, 0xeb, 0x80, 0x07, 0x87, 0xba, 0x36, 0x8a, 0xcd, 0x87, 0xa6, - 0x9d, 0xfe, 0xfc, 0xc7, 0xdf, 0xbf, 0x1d, 0x5f, 0x85, 0x2b, 0x46, 0xe4, 0xc9, 0x24, 0x67, 0x52, - 0xe3, 0x8e, 0x74, 0xc5, 0x3d, 0xf8, 0xbd, 0x02, 0x66, 0x7a, 0xc6, 0x7e, 0x78, 0x3a, 0x46, 0xcd, - 0xa0, 0xe7, 0x85, 0xba, 0x75, 0x38, 0x66, 0x89, 0xac, 0x20, 0x90, 0x6d, 0xc1, 0x53, 0x51, 0x64, - 0xc1, 0x0b, 0x23, 0x02, 0xf0, 0x07, 0x05, 0xcc, 0xf6, 0x4f, 0xf0, 0x50, 0x8f, 0x51, 0x1b, 0xf3, - 0x70, 0x50, 0x8d, 0x43, 0xf3, 0x4b, 0xa4, 0xe7, 0x05, 0xd2, 0xb3, 0xb0, 0x10, 0x45, 0xda, 0x0a, - 0xce, 0x74, 0xc1, 0x86, 0x1f, 0x25, 0xf7, 0xe0, 0x7d, 0x05, 0xa4, 0xe4, 0xac, 0x1e, 0xeb, 0xda, - 0xde, 0x67, 0x40, 0xac, 0x6b, 0xfb, 0x46, 0x7e, 0x6d, 0x4b, 0xc0, 0x5a, 0x83, 0x27, 0xa3, 0xb0, - 0xe4, 0xec, 0x4f, 0x43, 0x57, 0xf7, 0x50, 0x01, 0x29, 0x39, 0xb5, 0xc7, 0x02, 0xe9, 0x7d, 0x22, - 0xc4, 0x02, 0xe9, 0x1b, 0xfe, 0xb5, 0x6d, 0x01, 0xe4, 0x34, 0xdc, 0x8c, 0x02, 0xa1, 0x3e, 0x6b, - 0x17, 0x87, 0x71, 0x67, 0x1f, 0x1f, 0xdc, 0x83, 0xb7, 0x41, 0x92, 0x0f, 0xf7, 0x50, 0x8b, 0x0d, - 0x99, 0xce, 0x8b, 0x41, 0x5d, 0x19, 0xca, 0x23, 0x31, 0x6c, 0x0a, 0x0c, 0x2b, 0xf0, 0xc4, 0xa0, - 0x68, 0xaa, 0xf4, 0xdc, 0xc4, 0xa7, 0x60, 0xd2, 0x9f, 0x6f, 0xe1, 0xc9, 0x18, 0xc9, 0x3d, 0x63, - 0xb4, 0xba, 0x3a, 0x82, 0x4b, 0x22, 0x58, 0x16, 0x08, 0x54, 0x98, 0x35, 0x62, 0xfe, 0xbb, 0x80, - 0x6d, 0x90, 0x92, 0xf3, 0x33, 0x5c, 0x8e, 0xca, 0xec, 0x1d, 0xad, 0xd5, 0xf5, 0x51, 0xad, 0x21, - 0xd0, 0xab, 0x09, 0xbd, 0x8b, 0x50, 0x8d, 0xea, 0xc5, 0xac, 0x5a, 0xb2, 0xb8, 0xba, 0xcf, 0x40, - 0x26, 0x34, 0xe2, 0x1e, 0x42, 0xfb, 0x00, 0x9b, 0x07, 0xcc, 0xc8, 0xda, 0x9a, 0xd0, 0xbd, 0x0c, - 0x73, 0x03, 0x74, 0x4b, 0xf6, 0x12, 0x9f, 0x9c, 0xef, 0x82, 0x94, 0x1c, 0x77, 0x62, 0x63, 0xaf, - 0x77, 0x4c, 0x8e, 0x8d, 0xbd, 0xbe, 0xa9, 0x69, 0x98, 0xf5, 0x7e, 0xcf, 0x64, 0x6d, 0xf8, 0x40, - 0x01, 0xa0, 0x5b, 0xf8, 0xe1, 0xc6, 0x30, 0xd1, 0xe1, 0x5e, 0xad, 0x6e, 0x1e, 0x82, 0x53, 0xe2, - 0x58, 0x15, 0x38, 0xf2, 0x70, 0x29, 0x0e, 0x87, 0xe8, 0x82, 0xf0, 0x0b, 0x05, 0x4c, 0x75, 0x46, - 0x08, 0xb8, 0x3e, 0x4c, 0x7e, 0xd8, 0x1d, 0x1b, 0xa3, 0x19, 0x25, 0x8e, 0x93, 0x02, 0x47, 0x0e, - 0x2e, 0xc6, 0xe1, 0x10, 0xf1, 0x70, 0x97, 0x17, 0x25, 0xd1, 0x85, 0x86, 0x14, 0xa5, 0x70, 0xeb, - 0x1b, 0x52, 0x94, 0x7a, 0x5a, 0xe1, 0x30, 0x7f, 0x04, 0x2d, 0x72, 0xe7, 0xc2, 0x93, 0xe7, 0x39, - 0xe5, 0xe9, 0xf3, 0x9c, 0xf2, 0xdb, 0xf3, 0x9c, 0xf2, 0xe8, 0x45, 0x6e, 0xec, 0xe9, 0x8b, 0xdc, - 0xd8, 0xcf, 0x2f, 0x72, 0x63, 0x1f, 0xaf, 0x85, 0x46, 0x00, 0xdc, 0xe2, 0x13, 0x40, 0x57, 0x4a, - 0x5b, 0xc8, 0x11, 0x63, 0x40, 0x79, 0x52, 0x4c, 0x1c, 0x6f, 0xfd, 0x1d, 0x00, 0x00, 0xff, 0xff, - 0xf0, 0x03, 0x0d, 0x87, 0xba, 0x14, 0x00, 0x00, + // 1621 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4f, 0x6f, 0x13, 0x47, + 0x1b, 0xcf, 0xc6, 0x4e, 0xec, 0x8c, 0x03, 0xf8, 0x1d, 0x92, 0x17, 0xc7, 0x6f, 0x62, 0x87, 0x0d, + 0xf9, 0x4b, 0xd8, 0x7d, 0xe3, 0x22, 0xa4, 0x72, 0x29, 0x89, 0x15, 0x28, 0x25, 0x54, 0xd4, 0x8d, + 0x7a, 0xa8, 0x54, 0x59, 0xe3, 0xf5, 0xb0, 0x5e, 0xc5, 0xbb, 0x63, 0x76, 0xc6, 0xae, 0xc3, 0x9f, + 0x1e, 0xaa, 0x16, 0xa8, 0x90, 0x10, 0x52, 0xa5, 0x1e, 0x2b, 0xbe, 0x41, 0xbf, 0x06, 0x47, 0xa4, + 0xaa, 0x52, 0xd5, 0x03, 0xad, 0xa0, 0x87, 0x7e, 0x86, 0x9e, 0xaa, 0x99, 0x9d, 0xb5, 0xd7, 0x5e, + 0xaf, 0x1d, 0x2a, 0x2a, 0x21, 0xf5, 0xe4, 0x9d, 0x99, 0x67, 0x9e, 0xe7, 0xf7, 0xcc, 0xf3, 0xdf, + 0x60, 0x1e, 0xb3, 0x1a, 0x76, 0x6d, 0xcb, 0x61, 0x3a, 0x6e, 0xd9, 0x7a, 0x6b, 0x4b, 0xbf, 0xd5, + 0xc4, 0xee, 0xa1, 0xd6, 0x70, 0x09, 0x23, 0x30, 0xdd, 0x39, 0xd5, 0x70, 0xcb, 0xd6, 0x5a, 0x5b, + 0xd9, 0x0d, 0x83, 0x50, 0x9b, 0x50, 0xbd, 0x82, 0x28, 0xf6, 0x48, 0xf5, 0xd6, 0x56, 0x05, 0x33, + 0xb4, 0xa5, 0x37, 0x90, 0x69, 0x39, 0x88, 0x59, 0xc4, 0xf1, 0x6e, 0x67, 0xe7, 0x42, 0xbc, 0x59, + 0x5b, 0x1e, 0x65, 0x43, 0x47, 0x75, 0x62, 0xca, 0xb3, 0x85, 0xd0, 0x59, 0x03, 0xb9, 0xc8, 0xa6, + 0xf2, 0x78, 0x29, 0xcc, 0xd5, 0x45, 0x06, 0x2e, 0x1b, 0xc4, 0xb9, 0x69, 0xf9, 0x3c, 0x66, 0x4c, + 0x62, 0x12, 0xf1, 0xa9, 0xf3, 0x2f, 0xb9, 0x3b, 0x6f, 0x12, 0x62, 0xd6, 0xb1, 0x8e, 0x1a, 0x96, + 0x8e, 0x1c, 0x87, 0x30, 0x81, 0xd6, 0x67, 0x9c, 0x97, 0xa7, 0x62, 0x55, 0x69, 0xde, 0xd4, 0x99, + 0x65, 0x63, 0xca, 0x90, 0xdd, 0xf0, 0x08, 0xd4, 0x77, 0xc1, 0xc9, 0x8f, 0xb8, 0xc6, 0xdb, 0x86, + 0x41, 0x9a, 0x0e, 0x2b, 0xe1, 0x5b, 0x4d, 0x4c, 0x19, 0xcc, 0x80, 0x04, 0xaa, 0x56, 0x5d, 0x4c, + 0x69, 0x46, 0x59, 0x54, 0xd6, 0xa6, 0x4a, 0xfe, 0xf2, 0x62, 0xf2, 0xe1, 0xd3, 0xfc, 0xd8, 0x1f, + 0x4f, 0xf3, 0x63, 0xaa, 0x01, 0x66, 0x7a, 0xaf, 0xd2, 0x06, 0x71, 0x28, 0xe6, 0x77, 0x2b, 0xa8, + 0x8e, 0x1c, 0x03, 0xfb, 0x77, 0xe5, 0x12, 0xfe, 0x0f, 0x4c, 0x19, 0xa4, 0x8a, 0xcb, 0x35, 0x44, + 0x6b, 0x99, 0x71, 0x71, 0x96, 0xe4, 0x1b, 0xef, 0x23, 0x5a, 0x83, 0x33, 0x60, 0xc2, 0x21, 0xfc, + 0x52, 0x6c, 0x51, 0x59, 0x8b, 0x97, 0xbc, 0x85, 0xfa, 0x1e, 0x98, 0x13, 0x42, 0x8a, 0xc2, 0x44, + 0x7f, 0x03, 0xe5, 0x7d, 0x05, 0x64, 0x07, 0x71, 0x90, 0x60, 0x97, 0xc1, 0x71, 0xcf, 0xfa, 0xe5, + 0x5e, 0x4e, 0xc7, 0xbc, 0xdd, 0x6d, 0x6f, 0x13, 0x66, 0x41, 0x92, 0x72, 0xa1, 0x1c, 0xdf, 0xb8, + 0xc0, 0xd7, 0x59, 0x73, 0x16, 0xc8, 0xe3, 0x5a, 0x76, 0x9a, 0x76, 0x05, 0xbb, 0x52, 0x83, 0x63, + 0x72, 0xf7, 0x43, 0xb1, 0xa9, 0x5e, 0x03, 0xf3, 0x02, 0xc7, 0x27, 0xa8, 0x6e, 0x55, 0x11, 0x23, + 0x6e, 0x9f, 0x32, 0xa7, 0xc1, 0xb4, 0x41, 0x9c, 0x7e, 0x1c, 0x29, 0xbe, 0xb7, 0x1d, 0xd2, 0xea, + 0x91, 0x02, 0x16, 0x22, 0xb8, 0x49, 0xc5, 0x56, 0xc1, 0x09, 0x1f, 0x55, 0x2f, 0x47, 0x1f, 0xec, + 0x1b, 0x54, 0xcd, 0x77, 0xa2, 0x1d, 0xcf, 0xce, 0xaf, 0x63, 0x9e, 0xff, 0x4b, 0x27, 0xea, 0x5c, + 0x1d, 0xe5, 0x44, 0xea, 0x35, 0x29, 0xec, 0x63, 0x46, 0x5c, 0x64, 0x8e, 0x16, 0x06, 0xd3, 0x20, + 0x76, 0x80, 0x0f, 0xa5, 0xbf, 0xf1, 0xcf, 0x80, 0xf8, 0x4d, 0x29, 0xbe, 0xc3, 0x4c, 0x8a, 0x9f, + 0x01, 0x13, 0x2d, 0x54, 0x6f, 0xfa, 0xc2, 0xbd, 0x85, 0x7a, 0x01, 0xa4, 0xa5, 0x2b, 0x55, 0x5f, + 0x4b, 0xc9, 0x55, 0xf0, 0x9f, 0xc0, 0x3d, 0x29, 0x02, 0x82, 0x38, 0xf7, 0x7d, 0x71, 0x6b, 0xba, + 0x24, 0xbe, 0xd5, 0xdb, 0x00, 0x0a, 0xc2, 0xfd, 0xf6, 0x1e, 0x31, 0xa9, 0x2f, 0x02, 0x82, 0xb8, + 0x88, 0x18, 0x8f, 0xbf, 0xf8, 0x86, 0x97, 0x01, 0xe8, 0xe6, 0x26, 0xa1, 0x5b, 0xaa, 0xb0, 0xa2, + 0x79, 0x4e, 0xab, 0xf1, 0x44, 0xa6, 0x79, 0x39, 0x4f, 0x26, 0x32, 0xed, 0x46, 0xf7, 0xa9, 0x4a, + 0x81, 0x9b, 0x01, 0x90, 0xdf, 0x28, 0xf2, 0x61, 0x7d, 0xe1, 0x12, 0xe7, 0x3a, 0x88, 0xd7, 0x89, + 0xc9, 0xb5, 0x8b, 0xad, 0xa5, 0x0a, 0xb3, 0x5a, 0x7f, 0xfa, 0xd4, 0xf6, 0x88, 0x59, 0x12, 0x24, + 0xf0, 0xca, 0x00, 0x50, 0xab, 0x23, 0x41, 0x79, 0x72, 0x82, 0xa8, 0xd4, 0x19, 0xf9, 0x0e, 0x37, + 0x44, 0x92, 0x94, 0xb8, 0xd5, 0xeb, 0x12, 0xa0, 0xbf, 0x2b, 0x01, 0x5e, 0x00, 0x93, 0x5e, 0x32, + 0x15, 0x0f, 0x94, 0x2a, 0x64, 0xc2, 0x10, 0xbd, 0x1b, 0x3b, 0xf1, 0x67, 0x2f, 0xf2, 0x63, 0x25, + 0x49, 0xad, 0xfe, 0xa4, 0x80, 0xe3, 0xbb, 0xac, 0x56, 0x44, 0xf5, 0x7a, 0xe0, 0xa5, 0x91, 0x6b, + 0x52, 0xdf, 0x26, 0xfc, 0x1b, 0x9e, 0x02, 0x09, 0x13, 0xd1, 0xb2, 0x81, 0x1a, 0x32, 0x3c, 0x26, + 0x4d, 0x44, 0x8b, 0xa8, 0x01, 0x3f, 0x03, 0xe9, 0x86, 0x4b, 0x1a, 0x84, 0x62, 0xb7, 0x13, 0x62, + 0x3c, 0x3c, 0xa6, 0x77, 0x0a, 0x7f, 0xbe, 0xc8, 0x6b, 0xa6, 0xc5, 0x6a, 0xcd, 0x8a, 0x66, 0x10, + 0x5b, 0x97, 0xf5, 0xc5, 0xfb, 0x39, 0x47, 0xab, 0x07, 0x3a, 0x3b, 0x6c, 0x60, 0xaa, 0x15, 0xbb, + 0xb1, 0x5d, 0x3a, 0xe1, 0xf3, 0xf2, 0xe3, 0x72, 0x0e, 0x24, 0x8d, 0x1a, 0xb2, 0x9c, 0xb2, 0x55, + 0xcd, 0xc4, 0x17, 0x95, 0xb5, 0x58, 0x29, 0x21, 0xd6, 0x57, 0xab, 0x70, 0x1e, 0x4c, 0x91, 0x16, + 0x76, 0x5d, 0xab, 0x8a, 0x69, 0x66, 0x42, 0x60, 0xed, 0x6e, 0xa8, 0xfb, 0xe0, 0xe4, 0x2e, 0x65, + 0x96, 0x8d, 0x18, 0xbe, 0x82, 0xba, 0xcf, 0x94, 0x06, 0x31, 0x13, 0x79, 0xaa, 0xc5, 0x4b, 0xfc, + 0x93, 0xef, 0xb8, 0x98, 0x09, 0xad, 0xa6, 0x4b, 0xfc, 0x93, 0xcb, 0x6c, 0xd9, 0x65, 0xec, 0xba, + 0xc4, 0x8b, 0xf4, 0xa9, 0x52, 0xa2, 0x65, 0xef, 0xf2, 0xa5, 0xfa, 0x5d, 0xdc, 0x77, 0x0f, 0x5e, + 0x99, 0xf6, 0xdb, 0xfe, 0x93, 0x6d, 0x81, 0x98, 0x4d, 0x4d, 0xf9, 0xf4, 0xf9, 0xf0, 0xd3, 0x5f, + 0xa7, 0xe6, 0x2e, 0xdf, 0xc3, 0x4d, 0x7b, 0xbf, 0x5d, 0xe2, 0xb4, 0xf0, 0x12, 0x98, 0x0e, 0x96, + 0x37, 0x21, 0x29, 0x55, 0x58, 0x08, 0xdf, 0x15, 0xa2, 0x8a, 0x82, 0xa8, 0x94, 0x62, 0xdd, 0x05, + 0x2c, 0x82, 0xe9, 0x86, 0x8b, 0xab, 0xd8, 0xc0, 0x94, 0x12, 0x97, 0x66, 0xe2, 0xc2, 0x37, 0x47, + 0x4a, 0xef, 0xb9, 0xc4, 0x13, 0x6e, 0xa5, 0x4e, 0x8c, 0x03, 0x3f, 0xb5, 0x4d, 0x88, 0x47, 0x4e, + 0x89, 0x3d, 0x2f, 0xb1, 0xc1, 0x05, 0x00, 0x3c, 0x12, 0x11, 0x7f, 0x93, 0xe2, 0x45, 0xa6, 0xc4, + 0x8e, 0x28, 0x59, 0x45, 0xff, 0x98, 0x57, 0xd5, 0x4c, 0x42, 0xa8, 0x91, 0xd5, 0xbc, 0x92, 0xab, + 0xf9, 0x25, 0x57, 0xdb, 0xf7, 0x4b, 0xee, 0x4e, 0x92, 0xfb, 0xdf, 0x93, 0x5f, 0xf3, 0x8a, 0x64, + 0xc2, 0x4f, 0x06, 0xba, 0x51, 0xf2, 0x9f, 0x71, 0xa3, 0xa9, 0x5e, 0x37, 0x3a, 0x0f, 0x92, 0x3c, + 0x28, 0xcb, 0x37, 0x31, 0xce, 0x00, 0xae, 0xdb, 0xce, 0xdc, 0x2f, 0x2f, 0xf2, 0xb3, 0x1e, 0x7f, + 0x5a, 0x3d, 0xd0, 0x2c, 0xa2, 0xdb, 0x88, 0xd5, 0xb4, 0xab, 0x0e, 0xe3, 0xf9, 0x97, 0xe2, 0xcb, + 0x18, 0x7f, 0x10, 0x4f, 0x8e, 0xa7, 0x63, 0xa5, 0x24, 0x6b, 0x97, 0x2d, 0xa7, 0x8a, 0xdb, 0xea, + 0x86, 0x4c, 0xa1, 0x1d, 0xbf, 0xe8, 0xe6, 0xb7, 0x2a, 0x62, 0xc8, 0x8f, 0x25, 0xfe, 0xad, 0x3e, + 0x88, 0x81, 0xd9, 0x2e, 0xf1, 0xdb, 0x1a, 0x79, 0xfd, 0xfe, 0x19, 0x7f, 0x6d, 0xff, 0x7c, 0x4b, + 0x5c, 0x2b, 0x68, 0xfb, 0x64, 0x8f, 0xed, 0xd5, 0x4d, 0xf0, 0xdf, 0x7e, 0x43, 0x0c, 0xb1, 0xdb, + 0xe3, 0x58, 0x90, 0x7c, 0x87, 0x0b, 0x08, 0xc4, 0x3f, 0x6b, 0xfb, 0xd5, 0x61, 0x74, 0xfc, 0xb3, + 0x36, 0x7d, 0x03, 0xf1, 0xff, 0x6f, 0x0f, 0x5d, 0xf5, 0x1c, 0x38, 0x15, 0xb2, 0xc7, 0x10, 0xfb, + 0xcd, 0x76, 0x1a, 0x34, 0x11, 0xc3, 0x7e, 0x41, 0xdd, 0xeb, 0x34, 0x5f, 0x72, 0x5b, 0xb2, 0x08, + 0x26, 0x06, 0xe5, 0xa8, 0x89, 0x41, 0xd5, 0x40, 0xa6, 0xe8, 0x62, 0xc4, 0xf0, 0xb6, 0xc1, 0x53, + 0xec, 0x9e, 0x45, 0xd9, 0x30, 0x50, 0x85, 0x07, 0x27, 0xc0, 0x84, 0x10, 0x0f, 0xbf, 0x56, 0x40, + 0x42, 0xf6, 0xaf, 0x70, 0x39, 0xec, 0x06, 0x03, 0x06, 0x94, 0xec, 0xca, 0x28, 0x32, 0x4f, 0xb0, + 0x7a, 0xf6, 0xcb, 0x1f, 0x7f, 0xff, 0x76, 0x7c, 0x19, 0x2e, 0xe9, 0xa1, 0x11, 0x4b, 0xf6, 0xb0, + 0xfa, 0x1d, 0x69, 0xba, 0x7b, 0xf0, 0x7b, 0x05, 0x1c, 0xeb, 0x19, 0x13, 0xe0, 0xd9, 0x08, 0x31, + 0x83, 0xc6, 0x91, 0xec, 0xe6, 0xd1, 0x88, 0x25, 0xb2, 0x82, 0x40, 0xb6, 0x09, 0x37, 0xc2, 0xc8, + 0xfc, 0x89, 0x24, 0x04, 0xf0, 0x07, 0x05, 0xa4, 0xfb, 0x3b, 0x7e, 0xa8, 0x45, 0x88, 0x8d, 0x18, + 0x34, 0xb2, 0xfa, 0x91, 0xe9, 0x25, 0xd2, 0x8b, 0x02, 0xe9, 0x79, 0x58, 0x08, 0x23, 0x6d, 0xf9, + 0x77, 0xba, 0x60, 0x83, 0x43, 0xcc, 0x3d, 0x78, 0x5f, 0x01, 0x09, 0xd9, 0xdb, 0x47, 0x9a, 0xb6, + 0x77, 0x6c, 0x88, 0x34, 0x6d, 0xdf, 0x88, 0xa0, 0x6e, 0x0a, 0x58, 0x2b, 0xf0, 0x4c, 0x18, 0x96, + 0x9c, 0x15, 0x68, 0xe0, 0xe9, 0x1e, 0x29, 0x20, 0x21, 0xbb, 0xfc, 0x48, 0x20, 0xbd, 0x23, 0x45, + 0x24, 0x90, 0xbe, 0x61, 0x41, 0xdd, 0x12, 0x40, 0xce, 0xc2, 0xf5, 0x30, 0x10, 0xea, 0x91, 0x76, + 0x71, 0xe8, 0x77, 0x0e, 0xf0, 0xe1, 0x3d, 0x78, 0x1b, 0xc4, 0xf9, 0x30, 0x00, 0xd5, 0x48, 0x97, + 0xe9, 0x4c, 0x18, 0xd9, 0xa5, 0xa1, 0x34, 0x12, 0xc3, 0xba, 0xc0, 0xb0, 0x04, 0x4f, 0x0f, 0xf2, + 0xa6, 0x6a, 0xcf, 0x4b, 0x7c, 0x0e, 0x26, 0xbd, 0x7e, 0x18, 0x9e, 0x89, 0xe0, 0xdc, 0xd3, 0x76, + 0x67, 0x97, 0x47, 0x50, 0x49, 0x04, 0x8b, 0x02, 0x41, 0x16, 0x66, 0xf4, 0x88, 0xff, 0x3a, 0x60, + 0x1b, 0x24, 0x64, 0xbf, 0x0d, 0x17, 0xc3, 0x3c, 0x7b, 0x5b, 0xf1, 0xec, 0xea, 0xa8, 0x52, 0xe2, + 0xcb, 0x55, 0x85, 0xdc, 0x79, 0x98, 0x0d, 0xcb, 0xc5, 0xac, 0x56, 0x36, 0xb8, 0xb8, 0x2f, 0x40, + 0x2a, 0xd0, 0x12, 0x1f, 0x41, 0xfa, 0x00, 0x9d, 0x07, 0xf4, 0xd4, 0xea, 0x8a, 0x90, 0xbd, 0x08, + 0x73, 0x03, 0x64, 0x4b, 0xf2, 0x32, 0xef, 0xb4, 0xef, 0x82, 0x84, 0x6c, 0x8f, 0x22, 0x7d, 0xaf, + 0xb7, 0xad, 0x8e, 0xf4, 0xbd, 0xbe, 0x2e, 0x6b, 0x98, 0xf6, 0x5e, 0x8d, 0x65, 0x6d, 0xf8, 0x50, + 0x01, 0xa0, 0x5b, 0x28, 0xe0, 0xda, 0x30, 0xd6, 0xc1, 0xda, 0x9e, 0x5d, 0x3f, 0x02, 0xa5, 0xc4, + 0xb1, 0x2c, 0x70, 0xe4, 0xe1, 0x42, 0x14, 0x0e, 0x51, 0x35, 0xe1, 0x57, 0x0a, 0x98, 0xea, 0xb4, + 0x1c, 0x70, 0x75, 0x18, 0xff, 0xa0, 0x39, 0xd6, 0x46, 0x13, 0x4a, 0x1c, 0x67, 0x04, 0x8e, 0x1c, + 0x9c, 0x8f, 0xc2, 0x21, 0xfc, 0xe1, 0x2e, 0x4f, 0x4a, 0xa2, 0x6a, 0x0d, 0x49, 0x4a, 0xc1, 0x52, + 0x39, 0x24, 0x29, 0xf5, 0x94, 0xce, 0x61, 0xf6, 0xf0, 0x4b, 0x2a, 0x7c, 0xac, 0x80, 0x74, 0x7f, + 0xa5, 0x3c, 0x82, 0x4f, 0x6e, 0x84, 0x29, 0xa2, 0xea, 0xed, 0xb0, 0xdc, 0x68, 0x88, 0x3b, 0x3c, + 0x5f, 0x63, 0x4a, 0xcb, 0x75, 0x8b, 0xb2, 0x9d, 0x4b, 0xcf, 0x5e, 0xe6, 0x94, 0xe7, 0x2f, 0x73, + 0xca, 0x6f, 0x2f, 0x73, 0xca, 0x93, 0x57, 0xb9, 0xb1, 0xe7, 0xaf, 0x72, 0x63, 0x3f, 0xbf, 0xca, + 0x8d, 0x7d, 0xba, 0x12, 0xe8, 0x61, 0x70, 0x8b, 0xb7, 0x30, 0x5d, 0x7e, 0x6d, 0xc1, 0x51, 0xf4, + 0x31, 0x95, 0x49, 0xd1, 0x32, 0xbd, 0xf3, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd9, 0x63, 0xd2, + 0xcd, 0x7b, 0x15, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1645,6 +1695,8 @@ type QueryClient interface { // BaseFee queries the base fee of the parent block of the current block, // it's similar to feemarket module's method, but also checks london hardfork status. BaseFee(ctx context.Context, in *QueryBaseFeeRequest, opts ...grpc.CallOption) (*QueryBaseFeeResponse, error) + // CreateAccessList implement `eth_createAccessList` rpc call + CreateAccessList(ctx context.Context, in *EthCallRequest, opts ...grpc.CallOption) (*CreateAccessListResponse, error) } type queryClient struct { @@ -1772,6 +1824,15 @@ func (c *queryClient) BaseFee(ctx context.Context, in *QueryBaseFeeRequest, opts return out, nil } +func (c *queryClient) CreateAccessList(ctx context.Context, in *EthCallRequest, opts ...grpc.CallOption) (*CreateAccessListResponse, error) { + out := new(CreateAccessListResponse) + err := c.cc.Invoke(ctx, "/ethermint.evm.v1.Query/CreateAccessList", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { // Account queries an Ethereum account. @@ -1803,6 +1864,8 @@ type QueryServer interface { // BaseFee queries the base fee of the parent block of the current block, // it's similar to feemarket module's method, but also checks london hardfork status. BaseFee(context.Context, *QueryBaseFeeRequest) (*QueryBaseFeeResponse, error) + // CreateAccessList implement `eth_createAccessList` rpc call + CreateAccessList(context.Context, *EthCallRequest) (*CreateAccessListResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -1848,6 +1911,9 @@ func (*UnimplementedQueryServer) TraceCall(ctx context.Context, req *QueryTraceC func (*UnimplementedQueryServer) BaseFee(ctx context.Context, req *QueryBaseFeeRequest) (*QueryBaseFeeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method BaseFee not implemented") } +func (*UnimplementedQueryServer) CreateAccessList(ctx context.Context, req *EthCallRequest) (*CreateAccessListResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAccessList not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -2087,6 +2153,24 @@ func _Query_BaseFee_Handler(srv interface{}, ctx context.Context, dec func(inter return interceptor(ctx, in, info, handler) } +func _Query_CreateAccessList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EthCallRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).CreateAccessList(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/ethermint.evm.v1.Query/CreateAccessList", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).CreateAccessList(ctx, req.(*EthCallRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "ethermint.evm.v1.Query", HandlerType: (*QueryServer)(nil), @@ -2143,6 +2227,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "BaseFee", Handler: _Query_BaseFee_Handler, }, + { + MethodName: "CreateAccessList", + Handler: _Query_CreateAccessList_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "ethermint/evm/v1/query.proto", @@ -3203,6 +3291,36 @@ func (m *QueryBaseFeeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *CreateAccessListResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CreateAccessListResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CreateAccessListResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Data) > 0 { + i -= len(m.Data) + copy(dAtA[i:], m.Data) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Data))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -3671,6 +3789,19 @@ func (m *QueryBaseFeeResponse) Size() (n int) { return n } +func (m *CreateAccessListResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Data) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -6768,6 +6899,90 @@ func (m *QueryBaseFeeResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *CreateAccessListResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CreateAccessListResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CreateAccessListResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/evm/types/query.pb.gw.go b/x/evm/types/query.pb.gw.go index c52b6b2cc6..3480e4ea64 100644 --- a/x/evm/types/query.pb.gw.go +++ b/x/evm/types/query.pb.gw.go @@ -595,6 +595,42 @@ func local_request_Query_BaseFee_0(ctx context.Context, marshaler runtime.Marsha } +var ( + filter_Query_CreateAccessList_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_CreateAccessList_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq EthCallRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_CreateAccessList_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.CreateAccessList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_CreateAccessList_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq EthCallRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_CreateAccessList_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.CreateAccessList(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -900,6 +936,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_CreateAccessList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_CreateAccessList_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_CreateAccessList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1201,6 +1260,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_CreateAccessList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_CreateAccessList_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_CreateAccessList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -1230,6 +1309,8 @@ var ( pattern_Query_TraceCall_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ethermint", "evm", "v1", "trace_call"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_BaseFee_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ethermint", "evm", "v1", "base_fee"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_CreateAccessList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"ethermint", "evm", "v1", "create_access_list"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( @@ -1258,4 +1339,6 @@ var ( forward_Query_TraceCall_0 = runtime.ForwardResponseMessage forward_Query_BaseFee_0 = runtime.ForwardResponseMessage + + forward_Query_CreateAccessList_0 = runtime.ForwardResponseMessage ) diff --git a/x/evm/types/tracer.go b/x/evm/types/tracer.go index da777130b4..237052360b 100644 --- a/x/evm/types/tracer.go +++ b/x/evm/types/tracer.go @@ -44,8 +44,10 @@ func NewTracer(tracer string, msg core.Message, cfg *params.ChainConfig, height switch tracer { case TracerAccessList: - blockAddrs := map[common.Address]struct{}{ - *msg.To: {}, msg.From: {}, + blockAddrs := make(map[common.Address]struct{}) + blockAddrs[msg.From] = struct{}{} + if msg.To != nil { + blockAddrs[*msg.To] = struct{}{} } precompiles := vm.ActivePrecompiles(cfg.Rules(big.NewInt(height), cfg.MergeNetsplitBlock != nil, timestamp)) for _, addr := range precompiles { From 2a810952cdc421b7659cedccab907cdb2b445e8b Mon Sep 17 00:00:00 2001 From: Xinyu <91446598+XinyuCRO@users.noreply.github.com> Date: Sun, 14 Dec 2025 18:31:57 -0800 Subject: [PATCH 197/210] fix: add AllowUnprotectedTxs configuration option to JSON-RPC settings (#804) * fix: add AllowUnprotectedTxs configuration option to JSON-RPC settings * doc: changelog * test: --------- Signed-off-by: Xinyu <91446598+XinyuCRO@users.noreply.github.com> --- CHANGELOG.md | 1 + server/config/config.go | 1 + server/config/config_test.go | 40 ++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae466b1836..0c3eb287a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,6 +50,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (ante) [#789](https://github.com/crypto-org-chain/ethermint/pull/789) fix: add check on evm transaction tip * (evm) [#789](https://github.com/crypto-org-chain/ethermint/pull/795) chore: add validation for HeaderHashNum and HistoryServeWindow in params * (api) [#768](https://github.com/crypto-org-chain/ethermint/pull/768) feat: support create access list +* (rpc) [#804](https://github.com/crypto-org-chain/ethermint/pull/804) fix: add allow-unprotected-txs config ## [v0.22.0] - 2025-08-12 diff --git a/server/config/config.go b/server/config/config.go index 1b5e65c1b0..7a39268f3b 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -440,6 +440,7 @@ func GetConfig(v *viper.Viper) (Config, error) { FixRevertGasRefundHeight: v.GetInt64("json-rpc.fix-revert-gas-refund-height"), ReturnDataLimit: v.GetInt64("json-rpc.return-data-limit"), RestrictUserInput: v.GetBool("json-rpc.restrict-user-input"), + AllowUnprotectedTxs: v.GetBool("json-rpc.allow-unprotected-txs"), }, TLS: TLSConfig{ CertificatePath: v.GetString("tls.certificate-path"), diff --git a/server/config/config_test.go b/server/config/config_test.go index 9a19e3e997..4ff5419e5e 100644 --- a/server/config/config_test.go +++ b/server/config/config_test.go @@ -3,6 +3,7 @@ package config import ( "testing" + "github.com/spf13/viper" "github.com/stretchr/testify/require" ) @@ -11,4 +12,43 @@ func TestDefaultConfig(t *testing.T) { require.True(t, cfg.JSONRPC.Enable) require.Equal(t, cfg.JSONRPC.Address, DefaultJSONRPCAddress) require.Equal(t, cfg.JSONRPC.WsAddress, DefaultJSONRPCWsAddress) + require.Equal(t, cfg.JSONRPC.AllowUnprotectedTxs, DefaultAllowUnprotectedTxs) +} + +func TestGetConfig_AllowUnprotectedTxs(t *testing.T) { + tests := []struct { + name string + viperVal interface{} + expected bool + }{ + { + name: "allow unprotected txs enabled", + viperVal: true, + expected: true, + }, + { + name: "allow unprotected txs disabled", + viperVal: false, + expected: false, + }, + { + name: "allow unprotected txs not set (default)", + viperVal: nil, + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + v := viper.New() + // Set the test value + if tt.viperVal != nil { + v.Set("json-rpc.allow-unprotected-txs", tt.viperVal) + } + + cfg, err := GetConfig(v) + require.NoError(t, err) + require.Equal(t, tt.expected, cfg.JSONRPC.AllowUnprotectedTxs) + }) + } } From 88cf3e1245793e43f1b9ec99fda6ceef7afb75b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 04:20:26 +0000 Subject: [PATCH 198/210] build(deps): bump google.golang.org/protobuf from 1.36.10 to 1.36.11 (#805) Bumps google.golang.org/protobuf from 1.36.10 to 1.36.11. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-version: 1.36.11 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: randy-cro --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 461a9df941..535c4049f2 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,7 @@ require ( golang.org/x/text v0.28.0 google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.10 + google.golang.org/protobuf v1.36.11 sigs.k8s.io/yaml v1.6.0 ) diff --git a/go.sum b/go.sum index ae54aa8a1d..da787c029b 100644 --- a/go.sum +++ b/go.sum @@ -2547,8 +2547,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 7304a54a14ff6e0ced8b4ae49e8854299546b463 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 14:39:30 +0900 Subject: [PATCH 199/210] build(deps): bump actions/upload-artifact from 5 to 6 (#808) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 46f685a50b..07feefbd23 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -120,7 +120,7 @@ jobs: - name: 'Tar debug files' if: failure() run: tar cfz debug_files.tar.gz -C /tmp/pytest-of-runner . - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v6 if: failure() with: name: debug-files From 5caed43665cc2b1b7ae86aef67ba9a46740cbeed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 05:40:19 +0000 Subject: [PATCH 200/210] build(deps): bump golang from 1.25.0-alpine to 1.25.5-alpine (#803) Bumps golang from 1.25.0-alpine to 1.25.5-alpine. --- updated-dependencies: - dependency-name: golang dependency-version: 1.25.5-alpine dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas <81727899+thomas-nguy@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a014b3f418..a6aa6759ed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.25.0-alpine AS build-env +FROM golang:1.25.5-alpine AS build-env # Set up dependencies ENV PACKAGES git build-base From 66dfca3195eaa549941447786ebee7d4fc7a1287 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 15:17:32 +0900 Subject: [PATCH 201/210] build(deps): bump golang.org/x/text from 0.28.0 to 0.32.0 (#802) Bumps [golang.org/x/text](https://github.com/golang/text) from 0.28.0 to 0.32.0. - [Release notes](https://github.com/golang/text/releases) - [Commits](https://github.com/golang/text/compare/v0.28.0...v0.32.0) --- updated-dependencies: - dependency-name: golang.org/x/text dependency-version: 0.32.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas <81727899+thomas-nguy@users.noreply.github.com> --- go.mod | 16 ++++++++-------- go.sum | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index 535c4049f2..52cdfceb7f 100644 --- a/go.mod +++ b/go.mod @@ -49,9 +49,9 @@ require ( github.com/tidwall/gjson v1.18.0 github.com/tidwall/sjson v1.2.5 github.com/tyler-smith/go-bip39 v1.1.0 - golang.org/x/net v0.43.0 - golang.org/x/sync v0.16.0 - golang.org/x/text v0.28.0 + golang.org/x/net v0.47.0 + golang.org/x/sync v0.19.0 + golang.org/x/text v0.32.0 google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 google.golang.org/grpc v1.75.1 google.golang.org/protobuf v1.36.11 @@ -256,14 +256,14 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.17.0 // indirect - golang.org/x/crypto v0.41.0 // indirect + golang.org/x/crypto v0.44.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect - golang.org/x/mod v0.27.0 // indirect + golang.org/x/mod v0.30.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/term v0.34.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect golang.org/x/time v0.10.0 // indirect - golang.org/x/tools v0.36.0 // indirect + golang.org/x/tools v0.39.0 // indirect google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b // indirect diff --git a/go.sum b/go.sum index da787c029b..051107057d 100644 --- a/go.sum +++ b/go.sum @@ -1812,8 +1812,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1877,8 +1877,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1955,8 +1955,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2008,8 +2008,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2124,8 +2124,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -2141,8 +2141,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= -golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= -golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2164,8 +2164,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2248,8 +2248,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= -golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From bb1287594c5664a7a240446981e1e404f8cea7b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 07:12:08 +0000 Subject: [PATCH 202/210] build(deps): bump actions/create-github-app-token from 2.2.0 to 2.2.1 (#796) Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2.2.0 to 2.2.1. - [Release notes](https://github.com/actions/create-github-app-token/releases) - [Commits](https://github.com/actions/create-github-app-token/compare/7e473efe3cb98aa54f8d4bac15400b15fad77d94...29824e69f54612133e76f7eaac726eef6c875baf) --- updated-dependencies: - dependency-name: actions/create-github-app-token dependency-version: 2.2.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas <81727899+thomas-nguy@users.noreply.github.com> --- .github/workflows/dependabot-update-all.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dependabot-update-all.yml b/.github/workflows/dependabot-update-all.yml index 388e07bd8f..24974b3943 100644 --- a/.github/workflows/dependabot-update-all.yml +++ b/.github/workflows/dependabot-update-all.yml @@ -14,7 +14,7 @@ jobs: if: ${{ github.actor == 'dependabot[bot]' }} steps: - name: Generate Token - uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0 + uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 id: app-token with: app-id: "${{ secrets.APP_ID }}" From 187c7d428ced637286f5d47f98b63cb733b453a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Jan 2026 08:13:49 +0000 Subject: [PATCH 203/210] build(deps): bump github.com/cosmos/ibc-go/v10 from 10.4.0 to 10.5.0 (#812) * build(deps): bump github.com/cosmos/ibc-go/v10 from 10.4.0 to 10.5.0 Bumps [github.com/cosmos/ibc-go/v10](https://github.com/cosmos/ibc-go) from 10.4.0 to 10.5.0. - [Release notes](https://github.com/cosmos/ibc-go/releases) - [Changelog](https://github.com/cosmos/ibc-go/blob/v10.5.0/CHANGELOG.md) - [Commits](https://github.com/cosmos/ibc-go/compare/v10.4.0...v10.5.0) --- updated-dependencies: - dependency-name: github.com/cosmos/ibc-go/v10 dependency-version: 10.5.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * update gomod2ni --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas Nguy --- go.mod | 2 +- go.sum | 4 ++-- gomod2nix.toml | 44 ++++++++++++++++++++++---------------------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/go.mod b/go.mod index 52cdfceb7f..507c9258ba 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/cosmos/cosmos-sdk v0.53.4 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/gogoproto v1.7.2 - github.com/cosmos/ibc-go/v10 v10.4.0 + github.com/cosmos/ibc-go/v10 v10.5.0 github.com/cosmos/rosetta v0.50.12 github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc diff --git a/go.sum b/go.sum index 051107057d..7b8c7a3a34 100644 --- a/go.sum +++ b/go.sum @@ -864,8 +864,8 @@ github.com/cosmos/gogoproto v1.7.2 h1:5G25McIraOC0mRFv9TVO139Uh3OklV2hczr13KKVHC github.com/cosmos/gogoproto v1.7.2/go.mod h1:8S7w53P1Y1cHwND64o0BnArT6RmdgIvsBuco6uTllsk= github.com/cosmos/iavl v1.2.2 h1:qHhKW3I70w+04g5KdsdVSHRbFLgt3yY3qTMd4Xa4rC8= github.com/cosmos/iavl v1.2.2/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= -github.com/cosmos/ibc-go/v10 v10.4.0 h1:dPMtBw1vb/CdXQuiue+JfGwS/BYbbEFJaeSVFx86nMw= -github.com/cosmos/ibc-go/v10 v10.4.0/go.mod h1:a74pAPUSJ7NewvmvELU74hUClJhwnmm5MGbEaiTw/kE= +github.com/cosmos/ibc-go/v10 v10.5.0 h1:NI+cX04fXdu9JfP0V0GYeRi1ENa7PPdq0BYtVYo8Zrs= +github.com/cosmos/ibc-go/v10 v10.5.0/go.mod h1:a74pAPUSJ7NewvmvELU74hUClJhwnmm5MGbEaiTw/kE= github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= diff --git a/gomod2nix.toml b/gomod2nix.toml index 3146d14ecf..096f001741 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -226,8 +226,8 @@ schema = 3 version = "v1.2.2" hash = "sha256-Cq5iSwFj88udB51nRxodOizrBdxKVmm6ES5cp0HoKds=" [mod."github.com/cosmos/ibc-go/v10"] - version = "v10.4.0" - hash = "sha256-3qETOTsDgjP5PGW+SWJdZxya9Qp9ivKUGqFgXbvVRA8=" + version = "v10.5.0" + hash = "sha256-QuonpvZ5slHNVxtk/ohIt6/yRx3Kmth0jXhSluJRbKE=" [mod."github.com/cosmos/ics23/go"] version = "v0.11.0" hash = "sha256-mgU/pqp4kASmW/bP0z6PzssfjRp7GU9ioyvNlDdGC+E=" @@ -623,8 +623,8 @@ schema = 3 version = "v1.10.0" hash = "sha256-dQ6Qqf26IZsa6XsGKP7GDuCj+WmSsBmkBwGTDfue/rk=" [mod."github.com/spf13/cobra"] - version = "v1.10.1" - hash = "sha256-OP6wdqk4dvBD8U5aicTkySHZ2s0LWnBo2TST2SmgcpM=" + version = "v1.10.2" + hash = "sha256-nbRCTFiDCC2jKK7AHi79n7urYCMP5yDZnWtNVJrDi+k=" [mod."github.com/spf13/pflag"] version = "v1.0.10" hash = "sha256-uDPnWjHpSrzXr17KEYEA1yAbizfcsfo5AyztY2tS6ZU=" @@ -739,38 +739,38 @@ schema = 3 version = "v0.17.0" hash = "sha256-avV63nZlJxuo3/LLBKQ2a96Nn1wflNtc1Dr7GSPbHAs=" [mod."golang.org/x/crypto"] - version = "v0.41.0" - hash = "sha256-o5Di0lsFmYnXl7a5MBTqmN9vXMCRpE9ay71C1Ar8jEY=" + version = "v0.44.0" + hash = "sha256-KPy3NK37fdQBBppMeJmxYjjE75Pw83FOmLwnGT1go4c=" [mod."golang.org/x/exp"] version = "v0.0.0-20250305212735-054e65f0b394" hash = "sha256-Vgt/CNx/xJYxiKKu0PI7ZSiL/SOfXI4di3Mcyge3aw4=" [mod."golang.org/x/mod"] - version = "v0.27.0" - hash = "sha256-9BDHc706SSfIYg8Sdvph4+wXOPtyLxIIO2MJ5y6/Mv8=" + version = "v0.30.0" + hash = "sha256-tZJikWbjGgN5rCgB/dqj3dpn9BfAZUVyXmd3KavAgLE=" [mod."golang.org/x/net"] - version = "v0.43.0" - hash = "sha256-bf3iQFrsC8BoarVaS0uSspEFAcr1zHp1uziTtBpwV34=" + version = "v0.47.0" + hash = "sha256-2qFgCd0YfNCGkLrf+xvnhQtKjSe8CymMdLlN3svUYTg=" [mod."golang.org/x/oauth2"] version = "v0.30.0" hash = "sha256-btD7BUtQpOswusZY5qIU90uDo38buVrQ0tmmQ8qNHDg=" [mod."golang.org/x/sync"] - version = "v0.16.0" - hash = "sha256-sqKDRESeMzLe0jWGWltLZL/JIgrn0XaIeBWCzVN3Bks=" + version = "v0.19.0" + hash = "sha256-RbRZ+sKZUurOczGhhzOoY/sojTlta3H9XjL4PXX/cno=" [mod."golang.org/x/sys"] - version = "v0.35.0" - hash = "sha256-ZKM8pesQE6NAFZeKQ84oPn5JMhGr8g4TSwLYAsHMGSI=" + version = "v0.38.0" + hash = "sha256-1+i5EaG3JwH3KMtefzJLG5R6jbOeJM4GK3/LHBVnSy0=" [mod."golang.org/x/term"] - version = "v0.34.0" - hash = "sha256-faLolF6EUSSaC0ZwRiKH5JF/TmtcMQ+m+RWWl6Pk1PU=" + version = "v0.37.0" + hash = "sha256-w7OZlNTd5sAhnDxrl9lKpKc1U/s2+MyZnmQPllJopMQ=" [mod."golang.org/x/text"] - version = "v0.28.0" - hash = "sha256-8UlJniGK+km4Hmrw6XMxELnExgrih7+z8tU26Cntmto=" + version = "v0.32.0" + hash = "sha256-9PXtWBKKY9rG4AgjSP4N+I1DhepXhy8SF/vWSIDIoWs=" [mod."golang.org/x/time"] version = "v0.10.0" hash = "sha256-vnlAME3gDR6R4cbCmSYAlR1Rjc0yUpkufTOPNvCdf6Q=" [mod."golang.org/x/tools"] - version = "v0.36.0" - hash = "sha256-p91Ig5XR7JL0rxIQdCRZBJvK4M8apyoeV/sOLyjOndk=" + version = "v0.39.0" + hash = "sha256-cCJLi3A7mhx7N7+fn0MbyDStf1dG2OPqu68bRMHpmw4=" [mod."google.golang.org/api"] version = "v0.222.0" hash = "sha256-n1qxH8dqwl7Drry1H9bpQx7EeysceA98UrgEDxd1XEM=" @@ -787,8 +787,8 @@ schema = 3 version = "v1.75.1" hash = "sha256-t5w9BLW8P3SuxHRSAqsVBn8kddzCDKVijh4oxatLIps=" [mod."google.golang.org/protobuf"] - version = "v1.36.10" - hash = "sha256-gUrj1qSpjcpRKCBnrYlKMm+P0OSh7B/8EBREstwhD1w=" + version = "v1.36.11" + hash = "sha256-7W+6jntfI/awWL3JP6yQedxqP5S9o3XvPgJ2XxxsIeE=" [mod."gopkg.in/yaml.v3"] version = "v3.0.1" hash = "sha256-FqL9TKYJ0XkNwJFnq9j0VvJ5ZUU1RvH/52h/f5bkYAU=" From 0499c9ade24e2a9411723271a2458d11da74abd2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jan 2026 10:48:13 +0900 Subject: [PATCH 204/210] build(deps): bump alpine from 3.23.0 to 3.23.2 (#811) Bumps alpine from 3.23.0 to 3.23.2. --- updated-dependencies: - dependency-name: alpine dependency-version: 3.23.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas <81727899+thomas-nguy@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a6aa6759ed..b7b613816e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ COPY . . RUN make build # Final image -FROM alpine:3.23.0 +FROM alpine:3.23.2 # Install ca-certificates RUN apk add --update ca-certificates jq From 03c0fac5ef1c2e1e19004237c72050cf18b39d53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jan 2026 10:41:12 +0800 Subject: [PATCH 205/210] build(deps): bump google.golang.org/grpc from 1.75.1 to 1.78.0 (#813) * build(deps): bump google.golang.org/grpc from 1.75.1 to 1.78.0 Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.75.1 to 1.78.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.75.1...v1.78.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-version: 1.78.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * update gomod2nix.toml --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas <81727899+thomas-nguy@users.noreply.github.com> Co-authored-by: Thomas Nguy --- go.mod | 37 ++++++++++++------------ go.sum | 78 ++++++++++++++++++++++++-------------------------- gomod2nix.toml | 75 +++++++++++++++++++++++------------------------- 3 files changed, 92 insertions(+), 98 deletions(-) diff --git a/go.mod b/go.mod index 507c9258ba..924df06075 100644 --- a/go.mod +++ b/go.mod @@ -52,8 +52,8 @@ require ( golang.org/x/net v0.47.0 golang.org/x/sync v0.19.0 golang.org/x/text v0.32.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 - google.golang.org/grpc v1.75.1 + google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda + google.golang.org/grpc v1.78.0 google.golang.org/protobuf v1.36.11 sigs.k8s.io/yaml v1.6.0 ) @@ -63,7 +63,7 @@ require ( cloud.google.com/go v0.116.0 // indirect cloud.google.com/go/auth v0.14.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect - cloud.google.com/go/compute/metadata v0.7.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect cloud.google.com/go/iam v1.2.2 // indirect cloud.google.com/go/monitoring v1.21.2 // indirect cloud.google.com/go/storage v1.49.0 // indirect @@ -74,7 +74,7 @@ require ( github.com/99designs/keyring v1.2.2 // indirect github.com/DataDog/datadog-go v4.8.3+incompatible // indirect github.com/DataDog/zstd v1.5.7 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect github.com/Masterminds/semver/v3 v3.4.0 // indirect @@ -97,7 +97,7 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cloudwego/base64x v0.1.5 // indirect - github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 // indirect + github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/cockroachdb/errors v1.12.0 // indirect github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect @@ -129,7 +129,7 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.7.0 // indirect github.com/emicklei/dot v1.6.2 // indirect - github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.35.0 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/ethereum/c-kzg-4844/v2 v2.1.0 // indirect github.com/ethereum/go-verkle v0.2.2 // indirect @@ -137,7 +137,7 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/getsentry/sentry-go v0.33.0 // indirect - github.com/go-jose/go-jose/v4 v4.1.1 // indirect + github.com/go-jose/go-jose/v4 v4.1.3 // indirect github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect @@ -213,7 +213,7 @@ require ( github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.22.0 // indirect - github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.63.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect @@ -226,7 +226,7 @@ require ( github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect github.com/spf13/afero v1.15.0 // indirect github.com/spf13/pflag v1.0.10 // indirect - github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect + github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/supranational/blst v0.3.14 // indirect @@ -239,34 +239,33 @@ require ( github.com/tklauser/numcpus v0.6.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ulikunitz/xz v0.5.15 // indirect - github.com/zeebo/errs v1.4.0 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect go.etcd.io/bbolt v1.4.0-alpha.1 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.36.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.38.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect - go.opentelemetry.io/otel v1.37.0 // indirect - go.opentelemetry.io/otel/metric v1.37.0 // indirect - go.opentelemetry.io/otel/sdk v1.37.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect - go.opentelemetry.io/otel/trace v1.37.0 // indirect + go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/sdk v1.38.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.17.0 // indirect golang.org/x/crypto v0.44.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect golang.org/x/mod v0.30.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/term v0.37.0 // indirect golang.org/x/time v0.10.0 // indirect golang.org/x/tools v0.39.0 // indirect google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.2 // indirect nhooyr.io/websocket v1.8.11 // indirect diff --git a/go.sum b/go.sum index 7b8c7a3a34..8f0f899b3d 100644 --- a/go.sum +++ b/go.sum @@ -184,8 +184,8 @@ cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZ cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= @@ -656,8 +656,8 @@ github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bp github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo= @@ -817,8 +817,8 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= -github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= @@ -968,10 +968,10 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= -github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= -github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= -github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= -github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329 h1:K+fnvUM0VZ7ZFJf0n4L/BRlnsb9pL/GuDG6FqaH+PwM= +github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329/go.mod h1:Alz8LEClvR7xKsrq3qzoc4N0guvVNSS8KmSChGYr9hs= +github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= @@ -1023,8 +1023,8 @@ github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmn github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI= -github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= +github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs= +github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= @@ -1565,8 +1565,8 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= @@ -1649,8 +1649,8 @@ github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= -github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= -github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= +github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo= +github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs= github.com/status-im/keycard-go v0.3.3 h1:qk/JHSkT9sMka+lVXrTOIVSgHIY7lDm46wrUqTsNa4s= github.com/status-im/keycard-go v0.3.3/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1727,8 +1727,6 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= -github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= -github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= @@ -1749,26 +1747,26 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/detectors/gcp v1.36.0 h1:F7q2tNlCaHY9nMKHR6XH9/qkp8FktLnIcy6jJNyOCQw= -go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/contrib/detectors/gcp v1.38.0 h1:ZoYbqX7OaA/TAikspPl3ozPI6iY6LiIY9I8cUfm+pJs= +go.opentelemetry.io/contrib/detectors/gcp v1.38.0/go.mod h1:SU+iU7nu5ud4oCb3LQOhIZ3nRLj6FNVrKgtflbaf2ts= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 h1:PS8wXpbyaDJQ2VDHHncMe9Vct0Zn1fEjpsjrLxGJoSc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0/go.mod h1:HDBUsEjOuRC0EzKZ1bSaRGZWUBAzo+MhAcUUORSr4D0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0/go.mod h1:FRmFuRJfag1IZ2dPkHnEoSFVgTVPUd2qf5Vi69hLb8I= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -1986,8 +1984,8 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2475,10 +2473,10 @@ google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b h1:zPKJod4w6F1+nRGDI9ubnXYhU9NSWoFAijkHkUXeTK8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda h1:+2XxjfsAu6vqFxwGBRcHiMaDCuZiqXGDUDVWVtrFAnE= +google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda h1:i/Q+bfisr7gq6feoJnS/DlpdwEL4ihp41fvRiM3Ork0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -2526,8 +2524,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= diff --git a/gomod2nix.toml b/gomod2nix.toml index 096f001741..093f689594 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -14,8 +14,8 @@ schema = 3 version = "v0.2.7" hash = "sha256-U+pXaY0kPnSeBzHWxELZ75bZnb74nygwIVZDdXYcP5g=" [mod."cloud.google.com/go/compute/metadata"] - version = "v0.7.0" - hash = "sha256-jJZDW+hibqjMiY8OiJhgJALbGwEq+djLOxfYR7upQyE=" + version = "v0.9.0" + hash = "sha256-VFqQwLJKyH1zReR/XtygEHP5UkI01T9BHEL0hvXtauo=" [mod."cloud.google.com/go/iam"] version = "v1.2.2" hash = "sha256-LcGHudwmL20n0w1V6k1e28ffhGQ/jpwmdn7mVDPKnTI=" @@ -89,8 +89,8 @@ schema = 3 version = "v1.5.7" hash = "sha256-GlSZOyix7Ct7tOKmSKpGckDjMhTtiYPBTpoWdwGLx5M=" [mod."github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp"] - version = "v1.29.0" - hash = "sha256-RjFWSVTnRl6VVyvHo0xSdP2N8r/M1uDrMY13QuzuoK8=" + version = "v1.30.0" + hash = "sha256-KeDm6O9FKL78kuZQhqoOfY00m0rYkxB1gtoKZzx+nGs=" [mod."github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric"] version = "v0.48.1" hash = "sha256-hClW3wbw/4yAIxh+Wb8muAuq5W4EF5lF219ShJX4x40=" @@ -164,8 +164,8 @@ schema = 3 version = "v0.1.5" hash = "sha256-MyUYTveN48DhnL8mwAgCRuMExLct98uzSPsmYlfaa4I=" [mod."github.com/cncf/xds/go"] - version = "v0.0.0-20250501225837-2ac532fd4443" - hash = "sha256-aKQnsb3cvzaZhw455HE26OMVoG6XkXNaCEc61Z9MzTY=" + version = "v0.0.0-20251022180443-0feb69152e9f" + hash = "sha256-AQkkkXO3EoaSWu6cAg7b6zAJ+zD0uOpgN08l0MEsAaI=" [mod."github.com/cockroachdb/apd/v2"] version = "v2.0.2" hash = "sha256-UrPHkvqVF8V78+kXKmjTHl79XsgDBnqFsje5BMYh0E4=" @@ -292,8 +292,8 @@ schema = 3 version = "v1.6.2" hash = "sha256-X7aNKLKZ7pJBG/wdP+TWuQnlNLNdbUDd+kC5kF4uBtU=" [mod."github.com/envoyproxy/go-control-plane/envoy"] - version = "v1.32.4" - hash = "sha256-Kz2fCmxytCcgcj00J7ilChS/daV4y2pxghgD8YOooMI=" + version = "v1.35.0" + hash = "sha256-7GoOFGX1IRDA54AFRHRf9WXB8MOV7GTfEaVjcuNyEr8=" [mod."github.com/envoyproxy/protoc-gen-validate"] version = "v1.2.1" hash = "sha256-1ARLFfk23TFvOUxXhlMJ757SgClmNtWaqj/T7g/2Z70=" @@ -320,8 +320,8 @@ schema = 3 version = "v0.33.0" hash = "sha256-pu9akz2POlvlU7ynCSyOKhafByB+jsQm/8uYKJjrtds=" [mod."github.com/go-jose/go-jose/v4"] - version = "v4.1.1" - hash = "sha256-G8QU1HforBE7kMVMvVCOaQZ49UA0iTW2mldsBUjw+DY=" + version = "v4.1.3" + hash = "sha256-WfogdTIRu4yDtCVX5fzz/+kKVPwX/hXBl+nY31XFHNc=" [mod."github.com/go-kit/kit"] version = "v0.13.0" hash = "sha256-EncDzq0JVtY+NLlW5lD+nbVewNYTTrfzlOxI4PuwREw=" @@ -581,8 +581,8 @@ schema = 3 version = "v1.22.0" hash = "sha256-OJ/9rlWG1DIPQJAZUTzjykkX0o+f+4IKLvW8YityaMQ=" [mod."github.com/prometheus/client_model"] - version = "v0.6.1" - hash = "sha256-rIDyUzNfxRA934PIoySR0EhuBbZVRK/25Jlc/r8WODw=" + version = "v0.6.2" + hash = "sha256-q6Fh6v8iNJN9ypD47LjWmx66YITa3FyRjZMRsuRTFeQ=" [mod."github.com/prometheus/common"] version = "v0.63.0" hash = "sha256-TbUZNkN4ZA7eC/MlL1v2V5OL28QRnftSuaWQZ944zBE=" @@ -632,8 +632,8 @@ schema = 3 version = "v1.21.0" hash = "sha256-A9A8i7HH/ge4j3hw7G++HNj8BjhhpZKvxHhfY+QAxkI=" [mod."github.com/spiffe/go-spiffe/v2"] - version = "v2.5.0" - hash = "sha256-FPtPVF4+MF+Ybe9NI58i5mnGILvTKadk8JSZJQ8gD6s=" + version = "v2.6.0" + hash = "sha256-8fvyGwDgSAFebzE1TA/cMTsFjH2CgxvHP5WoPfhw4Fk=" [mod."github.com/status-im/keycard-go"] version = "v0.3.3" hash = "sha256-fHPRc6gyWiBhfRxEkKBVPf1LADuuSeSTkIztAJp+ZY8=" @@ -687,9 +687,6 @@ schema = 3 [mod."github.com/ulikunitz/xz"] version = "v0.5.15" hash = "sha256-L5KYLue5U14bxUuNyhZ6lIjbda6eCQsx1V6gToqfRdk=" - [mod."github.com/zeebo/errs"] - version = "v1.4.0" - hash = "sha256-vh1b1ns2mFyr5KCECjQd2pf2JKfUfB6oR2O+k/vFda8=" [mod."github.com/zondax/hid"] version = "v0.9.2" hash = "sha256-9h1gEJ/loyaJvu9AsmslztiA8U9ixDTC6TBw9lCU2BE=" @@ -703,11 +700,11 @@ schema = 3 version = "v0.24.0" hash = "sha256-4H+mGZgG2c9I1y0m8avF4qmt8LUKxxVsTqR8mKgP4yo=" [mod."go.opentelemetry.io/auto/sdk"] - version = "v1.1.0" - hash = "sha256-cA9qCCu8P1NSJRxgmpfkfa5rKyn9X+Y/9FSmSd5xjyo=" + version = "v1.2.1" + hash = "sha256-73bFYhnxNf4SfeQ52ebnwOWywdQbqc9lWawCcSgofvE=" [mod."go.opentelemetry.io/contrib/detectors/gcp"] - version = "v1.36.0" - hash = "sha256-VFHLLEzIW9GoA/zhg4DGuJo2pr12sjitlUJ61F9CpN0=" + version = "v1.38.0" + hash = "sha256-SQr2o38yrJ673n5TM7LtZlW3+1U9pG2tUhZK9XcNCxc=" [mod."go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"] version = "v0.58.0" hash = "sha256-OLDNgjHOItKSyzI3cWWZbMiap5QnULp3G4z8HhhJsrA=" @@ -715,20 +712,20 @@ schema = 3 version = "v0.59.0" hash = "sha256-zeC30S2MV7W2xxS5rVfPGhZO4jcdPpxxfy3QvBkt/pQ=" [mod."go.opentelemetry.io/otel"] - version = "v1.37.0" - hash = "sha256-zWpyp9K8/Te86uhNjamchZctTdAnmHhoVw9m4ACfSoo=" + version = "v1.38.0" + hash = "sha256-OU4EVEGwbopbYZLDBfAelR/4yjzfV+UVp4UFt3UvkOE=" [mod."go.opentelemetry.io/otel/metric"] - version = "v1.37.0" - hash = "sha256-BWnkdldA3xzGhnaConzMAuQzOnugytIvrP6GjkZVAYg=" + version = "v1.38.0" + hash = "sha256-5W6Yd9nl/eyvL29e9hSfosISpxfSQcBAwkqI4htHWCg=" [mod."go.opentelemetry.io/otel/sdk"] - version = "v1.37.0" - hash = "sha256-uNFhKuSRhf+SXwVu8mg/qqsVio7KstVN/WyCTxgWHT0=" + version = "v1.38.0" + hash = "sha256-Qxqf7LEbS8Znp8qeQPbgm0jeFVhZNwV2d5zuKysIKIQ=" [mod."go.opentelemetry.io/otel/sdk/metric"] - version = "v1.37.0" - hash = "sha256-dm6Aa5UDFgQCVexayiWu85A1ir1lpNn5rIN9tj9KVDs=" + version = "v1.38.0" + hash = "sha256-Nahjgwhfx9NOJaM87fVpNFgzMOtJYPMehXKCswV59vI=" [mod."go.opentelemetry.io/otel/trace"] - version = "v1.37.0" - hash = "sha256-FBeLOb5qmIiE9VmbgCf1l/xpndBqHkRiaPt1PvoKrVY=" + version = "v1.38.0" + hash = "sha256-gNXUPmsPAw6JVH3YT/xwmRpn5QoDxyzc9kLe/5ldo0o=" [mod."go.yaml.in/yaml/v2"] version = "v2.4.2" hash = "sha256-oC8RWdf1zbMYCtmR0ATy/kCkhIwPR9UqFZSMOKLVF/A=" @@ -751,8 +748,8 @@ schema = 3 version = "v0.47.0" hash = "sha256-2qFgCd0YfNCGkLrf+xvnhQtKjSe8CymMdLlN3svUYTg=" [mod."golang.org/x/oauth2"] - version = "v0.30.0" - hash = "sha256-btD7BUtQpOswusZY5qIU90uDo38buVrQ0tmmQ8qNHDg=" + version = "v0.32.0" + hash = "sha256-eTVnWxQSapzqjaTxEiHYE6OSsVWEBi3ZWBzTYnAMnUE=" [mod."golang.org/x/sync"] version = "v0.19.0" hash = "sha256-RbRZ+sKZUurOczGhhzOoY/sojTlta3H9XjL4PXX/cno=" @@ -778,14 +775,14 @@ schema = 3 version = "v0.0.0-20241118233622-e639e219e697" hash = "sha256-QcnHSM6CWo18f0rqeXHSCFaydwFp+nENjE8x/NErgEI=" [mod."google.golang.org/genproto/googleapis/api"] - version = "v0.0.0-20250707201910-8d1bb00bc6a7" - hash = "sha256-xtTBmzlyynWQa0KtuQpNZ4fzSTB/5ozXclE3SuP3naI=" + version = "v0.0.0-20251029180050-ab9386a59fda" + hash = "sha256-HsnIgmC/vyAMUOh20DbgIEInHYJYzs5Fxpf0ngRziws=" [mod."google.golang.org/genproto/googleapis/rpc"] - version = "v0.0.0-20250804133106-a7a43d27e69b" - hash = "sha256-WK7iDtAhH19NPe3TywTQlGjDawNaDKWnxhFL9PgVUwM=" + version = "v0.0.0-20251029180050-ab9386a59fda" + hash = "sha256-I3ZNpNjKKvTq4DVNw3wLKrCuORabZ0oYj0KKhOMI/MA=" [mod."google.golang.org/grpc"] - version = "v1.75.1" - hash = "sha256-t5w9BLW8P3SuxHRSAqsVBn8kddzCDKVijh4oxatLIps=" + version = "v1.78.0" + hash = "sha256-oKsu3+Eae5tpFOZ9K2ZzYh1FgdYdEnEIB1C+UIxSD+E=" [mod."google.golang.org/protobuf"] version = "v1.36.11" hash = "sha256-7W+6jntfI/awWL3JP6yQedxqP5S9o3XvPgJ2XxxsIeE=" From e5b2b4df9e8d255b17d56d7015b558bc363df9a0 Mon Sep 17 00:00:00 2001 From: Thomas <81727899+thomas-nguy@users.noreply.github.com> Date: Mon, 5 Jan 2026 13:25:15 +0900 Subject: [PATCH 206/210] fix: relax preinstall rules (#809) * relax preinstall rules * add changelog * fix logic * fix logic * move comment * fix logic * cleanup --- CHANGELOG.md | 1 + x/evm/keeper/keeper.go | 28 ++++++++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c3eb287a8..42831e4940 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#789](https://github.com/crypto-org-chain/ethermint/pull/795) chore: add validation for HeaderHashNum and HistoryServeWindow in params * (api) [#768](https://github.com/crypto-org-chain/ethermint/pull/768) feat: support create access list * (rpc) [#804](https://github.com/crypto-org-chain/ethermint/pull/804) fix: add allow-unprotected-txs config +* (evm) [#809](https://github.com/crypto-org-chain/ethermint/pull/809) fix: relax preinstall rules ## [v0.22.0] - 2025-08-12 diff --git a/x/evm/keeper/keeper.go b/x/evm/keeper/keeper.go index 603f0b9edf..7a0e427ca5 100644 --- a/x/evm/keeper/keeper.go +++ b/x/evm/keeper/keeper.go @@ -415,20 +415,32 @@ func (k *Keeper) AddPreinstalls(ctx sdk.Context, preinstalls []types.Preinstall) } acct := k.accountKeeper.GetAccount(ctx, accAddress) - // check that the account is not already set - if acct != nil { - return errorsmod.Wrapf(types.ErrInvalidPreinstall, - "preinstall %s, address %s already has an account in account keeper", preinstall.Name, preinstall.Address) + if acct == nil { + // create account with the account keeper + acct = k.accountKeeper.NewAccountWithAddress(ctx, accAddress) } - // create account with the account keeper and set code hash - acct = k.accountKeeper.NewAccountWithAddress(ctx, accAddress) + if ethAcct, ok := acct.(ethermint.EthAccountI); ok { + // check that code hash and nonce is empty + if !types.IsEmptyCodeHash(ethAcct.GetCodeHash().Bytes()) { + return errorsmod.Wrapf(types.ErrInvalidPreinstall, + "preinstall %s, address %s already has a codehash", preinstall.Name, preinstall.Address) + } + if ethAcct.GetSequence() != 0 { + return errorsmod.Wrapf(types.ErrInvalidPreinstall, + "preinstall %s, address %s already has a sequence", preinstall.Name, preinstall.Address) + } + + // set code hash if err := ethAcct.SetCodeHash(codeHash); err != nil { return err } + k.accountKeeper.SetAccount(ctx, acct) + k.SetCode(ctx, codeHashBytes, common.FromHex(preinstall.Code)) + } else { + return errorsmod.Wrapf(types.ErrInvalidAccount, + "account %s is not an EthAccount", accAddress.String()) } - k.accountKeeper.SetAccount(ctx, acct) - k.SetCode(ctx, codeHashBytes, common.FromHex(preinstall.Code)) // We are not setting any storage for preinstalls, so we skip that step. } From 46538c97abf29e61a5e92c212509380539052dd8 Mon Sep 17 00:00:00 2001 From: Xinyu <91446598+XinyuCRO@users.noreply.github.com> Date: Wed, 7 Jan 2026 13:43:25 +0800 Subject: [PATCH 207/210] fix: enhance gas estimation with execution_gas_used field (#810) (#814) * fix: enhance gas estimation with execution_gas_used field * fix: overflow * fix: test * fix: vulnerability # Conflicts: # CHANGELOG.md # go.mod # gomod2nix.toml # x/evm/types/tx.pb.go --- CHANGELOG.md | 1 + proto/ethermint/evm/v1/tx.proto | 3 + .../hardhat/contracts/GasConsumerTryCatch.sol | 68 +++++++ tests/integration_tests/test_trycatch_gas.py | 51 +++++ tests/integration_tests/utils.py | 1 + x/evm/keeper/grpc_query.go | 59 +++--- x/evm/keeper/state_transition.go | 13 +- x/evm/types/tx.pb.go | 187 ++++++++++-------- 8 files changed, 277 insertions(+), 106 deletions(-) create mode 100644 tests/integration_tests/hardhat/contracts/GasConsumerTryCatch.sol create mode 100644 tests/integration_tests/test_trycatch_gas.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 42831e4940..6ac5d0ba26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (api) [#768](https://github.com/crypto-org-chain/ethermint/pull/768) feat: support create access list * (rpc) [#804](https://github.com/crypto-org-chain/ethermint/pull/804) fix: add allow-unprotected-txs config * (evm) [#809](https://github.com/crypto-org-chain/ethermint/pull/809) fix: relax preinstall rules +* (rpc) [#814](https://github.com/crypto-org-chain/ethermint/pull/814) fix: estimate gas not accurate ## [v0.22.0] - 2025-08-12 diff --git a/proto/ethermint/evm/v1/tx.proto b/proto/ethermint/evm/v1/tx.proto index 45b9582d31..57d1f72190 100644 --- a/proto/ethermint/evm/v1/tx.proto +++ b/proto/ethermint/evm/v1/tx.proto @@ -214,6 +214,9 @@ message MsgEthereumTxResponse { uint64 gas_used = 5; // include the block hash for json-rpc to use bytes block_hash = 6; + // execution_gas_used specifies the actual gas consumed during EVM execution, + // before the minGasMultiplier adjustment. This is used for gas estimation. + uint64 execution_gas_used = 7; } // MsgUpdateParams defines a Msg for updating the x/evm module parameters. diff --git a/tests/integration_tests/hardhat/contracts/GasConsumerTryCatch.sol b/tests/integration_tests/hardhat/contracts/GasConsumerTryCatch.sol new file mode 100644 index 0000000000..8aad97a283 --- /dev/null +++ b/tests/integration_tests/hardhat/contracts/GasConsumerTryCatch.sol @@ -0,0 +1,68 @@ +pragma solidity ^0.8.10; + +/** + * @title GasConsumerTryCatch + * @notice A contract to test try-catch behavior with high gas consumption using a single contract + */ +contract GasConsumerTryCatch { + mapping(uint256 => uint256) public data; + uint256 public totalWrites; + uint256 public lastResult; + uint256 public callCount; + + event TrySuccess(uint256 result, uint256 gasUsed); + event TryCatchFailed(string reason, uint256 gasUsed); + event TryCatchFailedBytes(bytes reason, uint256 gasUsed); + + error GasConsumerReverted(uint256 iterationsCompleted); + + /** + * @notice Consumes gas by writing to storage. + * Must be external to be called via this.consumeGas() in try-catch. + * @param iterations Number of storage writes (~20,000 gas each) + * @param shouldRevert If true, reverts after consuming gas + * @return The total number of writes performed + */ + function consumeGas(uint256 iterations, bool shouldRevert) external returns (uint256) { + uint256 startValue = totalWrites; + + // Each SSTORE costs ~20,000 gas for a new slot (cold access) + // To consume ~400,000 gas, we need about 20 iterations + for (uint256 i = 0; i < iterations; i++) { + data[startValue + i] = block.timestamp + i; + totalWrites++; + } + + if (shouldRevert) { + revert GasConsumerReverted(iterations); + } + + return totalWrites; + } + + /** + * @notice Calls the gas-consuming function with try-catch + * @param iterations Number of storage write iterations + * @param shouldRevert If true, the try block will revert after consuming gas + */ + function callWithTryCatch(uint256 iterations, bool shouldRevert) external returns (bool success) { + uint256 gasBefore = gasleft(); + callCount++; + + // using "this" to make an external call, enabling try-catch + try this.consumeGas(iterations, shouldRevert) returns (uint256 result) { + uint256 gasUsed = gasBefore - gasleft(); + lastResult = result; + emit TrySuccess(result, gasUsed); + return true; + } catch Error(string memory reason) { + uint256 gasUsed = gasBefore - gasleft(); + emit TryCatchFailed(reason, gasUsed); + return false; + } catch (bytes memory reason) { + uint256 gasUsed = gasBefore - gasleft(); + emit TryCatchFailedBytes(reason, gasUsed); + return false; + } + } +} \ No newline at end of file diff --git a/tests/integration_tests/test_trycatch_gas.py b/tests/integration_tests/test_trycatch_gas.py new file mode 100644 index 0000000000..104a3e7044 --- /dev/null +++ b/tests/integration_tests/test_trycatch_gas.py @@ -0,0 +1,51 @@ +from concurrent.futures import ThreadPoolExecutor + +import pytest + +from .utils import ADDRS, CONTRACTS, deploy_contract, send_transaction + +pytestmark = pytest.mark.filter + + +def test_trycatch_gas_estimation_underestimate(ethermint, geth): + def process(w3, name): + contract, _ = deploy_contract(w3, CONTRACTS["GasConsumerTryCatch"]) + tx = contract.functions.callWithTryCatch(20, False).build_transaction( + { + "from": ADDRS["community"], + } + ) + + estimated_gas = w3.eth.estimate_gas(tx) + tx["gas"] = 1000000 + receipt = send_transaction(w3, tx) + actual_gas = receipt["gasUsed"] + + # Calculate the difference + gas_diff = actual_gas - estimated_gas + + return { + "name": name, + "estimated_gas": estimated_gas, + "actual_gas": actual_gas, + "gas_diff": gas_diff, + } + + with ThreadPoolExecutor(max_workers=2) as executor: + ethermint_future = executor.submit(process, ethermint.w3, "ethermint") + geth_future = executor.submit(process, geth.w3, "geth") + ethermint_result = ethermint_future.result() + geth_result = geth_future.result() + + # Compare results from ethermint and geth + for result in (ethermint_result, geth_result): + assert result["gas_diff"] == 0, ( + f"Testing on {result['name']} " + f"Gas estimation is not accurate: " + f"{result['estimated_gas']} estimated vs " + f"{result['actual_gas']} actual " + f"({result['gas_diff']} difference)" + ) + + assert ethermint_result["estimated_gas"] == geth_result["estimated_gas"] + assert ethermint_result["actual_gas"] == geth_result["actual_gas"] diff --git a/tests/integration_tests/utils.py b/tests/integration_tests/utils.py index 6a22e18089..de35fd1649 100644 --- a/tests/integration_tests/utils.py +++ b/tests/integration_tests/utils.py @@ -48,6 +48,7 @@ "FeeCollector": "FeeCollector.sol", "SelfDestruct": "SelfDestruct.sol", "BytecodeDeployer": "BytecodeDeployer.sol", + "GasConsumerTryCatch": "GasConsumerTryCatch.sol", } diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index f7897558fe..afd205b4f0 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -20,6 +20,7 @@ import ( "encoding/json" "errors" "fmt" + "math" "math/big" "time" @@ -351,6 +352,12 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type } else { gasCap = hi } + + // Cap hi to MaxInt64 since gas calculations use int64 internally + if hi > math.MaxInt64 { + hi = math.MaxInt64 + } + cfg, err := k.EVMConfig(ctx, chainID, common.Hash{}) if err != nil { return nil, status.Error(codes.Internal, "failed to load evm config") @@ -391,35 +398,43 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type } return true, nil, err // Bail out } - return len(rsp.VmError) > 0, rsp, nil + return rsp.Failed(), rsp, nil } - // Execute the binary search and hone in on an executable gas limit - hi, err = types.BinSearch(lo, hi, executable) + // We first execute the transaction at the highest allowable gas limit, since if this fails we + // can return error immediately. + failed, result, err := executable(hi) if err != nil { return nil, err } - - // Reject the transaction as invalid if it still fails at the highest allowance - if hi == gasCap { - failed, result, err := executable(hi) - if err != nil { - return nil, err - } - - if failed { - if result != nil && result.VmError != vm.ErrOutOfGas.Error() { - if result.VmError == vm.ErrExecutionReverted.Error() { - return &types.EstimateGasResponse{ - Ret: result.Ret, - VmError: result.VmError, - }, nil - } - return nil, errors.New(result.VmError) + if failed { + if result != nil && result.VmError != vm.ErrOutOfGas.Error() { + if result.VmError == vm.ErrExecutionReverted.Error() { + return &types.EstimateGasResponse{ + Ret: result.Ret, + VmError: result.VmError, + }, nil } - // Otherwise, the specified gas cap is too low - return nil, fmt.Errorf("gas required exceeds allowance (%d)", gasCap) + return nil, errors.New(result.VmError) } + // Otherwise, the specified gas cap is too low + return nil, fmt.Errorf("gas required exceeds allowance (%d)", hi) + } + + // For almost any transaction, the gas consumed by the unconstrained execution + // above lower-bounds the gas limit required for it to succeed. One exception + // is those that explicitly check gas remaining in order to execute within a + // given limit, but we probably don't want to return the lowest possible gas + // limit for these cases anyway. + // Use ExecutionGasUsed (actual gas before minGasMultiplier adjustment) for accurate estimation. + if result.ExecutionGasUsed > 0 { + lo = result.ExecutionGasUsed - 1 + } + + // Execute the binary search and hone in on an executable gas limit + hi, err = types.BinSearch(lo, hi, executable) + if err != nil { + return nil, err } return &types.EstimateGasResponse{Gas: hi}, nil } diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index 22835f08f5..2b459e0d5e 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -511,11 +511,12 @@ func (k *Keeper) ApplyMessageWithConfig( } return &types.MsgEthereumTxResponse{ - GasUsed: gasUsed, - VmError: vmError, - Ret: ret, - Logs: types.NewLogsFromEth(stateDB.Logs()), - Hash: cfg.TxConfig.TxHash.Hex(), - BlockHash: ctx.HeaderHash(), + GasUsed: gasUsed, + VmError: vmError, + Ret: ret, + Logs: types.NewLogsFromEth(stateDB.Logs()), + Hash: cfg.TxConfig.TxHash.Hex(), + BlockHash: ctx.HeaderHash(), + ExecutionGasUsed: temporaryGasUsed, }, nil } diff --git a/x/evm/types/tx.pb.go b/x/evm/types/tx.pb.go index d12dd99aa3..944dd2d5cf 100644 --- a/x/evm/types/tx.pb.go +++ b/x/evm/types/tx.pb.go @@ -381,6 +381,9 @@ type MsgEthereumTxResponse struct { GasUsed uint64 `protobuf:"varint,5,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"` // include the block hash for json-rpc to use BlockHash []byte `protobuf:"bytes,6,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` + // execution_gas_used specifies the actual gas consumed during EVM execution, + // before the minGasMultiplier adjustment. This is used for gas estimation. + ExecutionGasUsed uint64 `protobuf:"varint,7,opt,name=execution_gas_used,json=executionGasUsed,proto3" json:"execution_gas_used,omitempty"` } func (m *MsgEthereumTxResponse) Reset() { *m = MsgEthereumTxResponse{} } @@ -620,85 +623,86 @@ func init() { func init() { proto.RegisterFile("ethermint/evm/v1/tx.proto", fileDescriptor_f75ac0a12d075f21) } var fileDescriptor_f75ac0a12d075f21 = []byte{ - // 1241 bytes of a gzipped FileDescriptorProto + // 1260 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0xcf, 0x8f, 0xdb, 0xc4, - 0x17, 0x5f, 0x27, 0xce, 0x0f, 0x4f, 0xd2, 0x6d, 0xbf, 0xfe, 0x6e, 0xa9, 0x13, 0x75, 0xe3, 0x34, - 0x85, 0x92, 0x16, 0x6d, 0x4c, 0x17, 0x54, 0xa9, 0x7b, 0x22, 0xee, 0x0f, 0x28, 0xda, 0x15, 0x95, - 0x9b, 0x5e, 0x00, 0x29, 0x9a, 0xb5, 0xa7, 0x8e, 0xd5, 0xd8, 0x63, 0x3c, 0x93, 0x90, 0x54, 0x42, - 0xaa, 0x7a, 0xe2, 0x48, 0xc5, 0x3f, 0xc0, 0x11, 0xc1, 0xa5, 0x87, 0x9e, 0xb9, 0x70, 0xa9, 0x38, - 0x55, 0x70, 0x41, 0x55, 0x15, 0xd0, 0x16, 0xa9, 0x52, 0x8f, 0x9c, 0x39, 0xa0, 0x99, 0x71, 0x7e, - 0xd5, 0x49, 0xb7, 0xac, 0x04, 0x12, 0x12, 0x97, 0x68, 0xde, 0xbc, 0xcf, 0x9b, 0x99, 0xf7, 0xf9, - 0xbc, 0xf1, 0xbc, 0x80, 0x12, 0xa2, 0x1d, 0x14, 0xf9, 0x5e, 0x40, 0x0d, 0xd4, 0xf7, 0x8d, 0xfe, - 0x59, 0x83, 0x0e, 0x1a, 0x61, 0x84, 0x29, 0x56, 0x8f, 0x4c, 0x5c, 0x0d, 0xd4, 0xf7, 0x1b, 0xfd, - 0xb3, 0xe5, 0xff, 0x41, 0xdf, 0x0b, 0xb0, 0xc1, 0x7f, 0x05, 0xa8, 0x7c, 0xcc, 0xc6, 0xc4, 0xc7, - 0xc4, 0xf0, 0x89, 0xcb, 0x82, 0x7d, 0xe2, 0xc6, 0x8e, 0x92, 0x70, 0xb4, 0xb9, 0x65, 0x08, 0x23, - 0x76, 0xad, 0xb9, 0xd8, 0xc5, 0x62, 0x9e, 0x8d, 0xe2, 0xd9, 0xe3, 0x2e, 0xc6, 0x6e, 0x17, 0x19, - 0x30, 0xf4, 0x0c, 0x18, 0x04, 0x98, 0x42, 0xea, 0xe1, 0x60, 0x1c, 0x53, 0x8a, 0xbd, 0xdc, 0xda, - 0xed, 0xdd, 0x30, 0x60, 0x30, 0x8c, 0x5d, 0x27, 0x13, 0x29, 0x40, 0xdb, 0x46, 0x84, 0xb4, 0x69, - 0x2f, 0xec, 0xa2, 0x18, 0x54, 0x4e, 0x80, 0xba, 0x78, 0x7c, 0xd4, 0xf5, 0x84, 0x2f, 0x84, 0x11, - 0xf4, 0xc7, 0x5b, 0x9f, 0x48, 0xba, 0x23, 0xe4, 0x05, 0x84, 0xc2, 0x6e, 0x37, 0x86, 0x6c, 0x24, - 0x20, 0x04, 0xd1, 0xb6, 0x8d, 0x1d, 0xd4, 0x86, 0x3d, 0xda, 0xc1, 0x91, 0x77, 0x8b, 0x67, 0x23, - 0xe0, 0xb5, 0xdb, 0x29, 0x70, 0x68, 0x87, 0xb8, 0x97, 0x58, 0x10, 0xea, 0xf9, 0xad, 0x81, 0x5a, - 0x07, 0xb2, 0x03, 0x29, 0xd4, 0xa4, 0xaa, 0x54, 0x2f, 0x6c, 0xae, 0x35, 0x44, 0xb6, 0x8d, 0x71, - 0xb6, 0x8d, 0x66, 0x30, 0xb4, 0x38, 0x42, 0x2d, 0x01, 0x99, 0x78, 0xb7, 0x90, 0x96, 0xaa, 0x4a, - 0x75, 0xc9, 0xcc, 0x3c, 0x1b, 0xe9, 0xd2, 0x86, 0xc5, 0xa7, 0xd4, 0xb7, 0xc1, 0x61, 0x07, 0x85, - 0x11, 0xb2, 0x21, 0x45, 0x4e, 0xbb, 0x03, 0x49, 0x47, 0x4b, 0x57, 0xa5, 0xba, 0x62, 0x16, 0x7e, - 0x1f, 0xe9, 0xb9, 0xa8, 0x1b, 0x6e, 0xd5, 0x36, 0x6a, 0xd6, 0xea, 0x14, 0xf3, 0x1e, 0x24, 0x1d, - 0xf5, 0x8d, 0xb9, 0xa8, 0x1b, 0x11, 0xf6, 0x35, 0x99, 0x47, 0xa5, 0x34, 0x69, 0x16, 0x7c, 0x39, - 0xc2, 0xbe, 0xaa, 0x02, 0x99, 0x23, 0x32, 0x55, 0xa9, 0x5e, 0xb4, 0xf8, 0x58, 0x7d, 0x15, 0xa4, - 0x23, 0xf8, 0xa9, 0x96, 0x65, 0x53, 0xa6, 0xfa, 0x60, 0xa4, 0xaf, 0x3c, 0x1a, 0xe9, 0x60, 0x9a, - 0x9c, 0xc5, 0xdc, 0x5b, 0x87, 0x3e, 0xff, 0x4a, 0x5f, 0xb9, 0xf3, 0xf4, 0xde, 0x19, 0x1e, 0x54, - 0xbb, 0x9b, 0x02, 0xf9, 0x6d, 0xe4, 0x42, 0x7b, 0xd8, 0x1a, 0xa8, 0x6b, 0x20, 0x13, 0xe0, 0xc0, - 0x46, 0x3c, 0x7d, 0xd9, 0x12, 0x86, 0x7a, 0x0e, 0x28, 0x2e, 0x64, 0x05, 0xe4, 0xd9, 0x22, 0x5d, - 0xc5, 0x2c, 0x3d, 0x1a, 0xe9, 0x47, 0x45, 0x2d, 0x11, 0xe7, 0x66, 0xc3, 0xc3, 0x86, 0x0f, 0x69, - 0xa7, 0x71, 0x25, 0xa0, 0x56, 0xde, 0x85, 0xe4, 0x2a, 0x83, 0xaa, 0x15, 0x90, 0x76, 0x21, 0xe1, - 0xa9, 0xcb, 0x66, 0x71, 0x6f, 0xa4, 0xe7, 0xdf, 0x85, 0x64, 0xdb, 0xf3, 0x3d, 0x6a, 0x31, 0x87, - 0xba, 0x0a, 0x52, 0x14, 0x8b, 0x1c, 0xad, 0x14, 0xc5, 0xea, 0x79, 0x90, 0xe9, 0xc3, 0x6e, 0x0f, - 0xf1, 0xa4, 0x14, 0xf3, 0xe4, 0xd2, 0x3d, 0xf6, 0x46, 0x7a, 0xb6, 0xe9, 0xe3, 0x5e, 0x40, 0x2d, - 0x11, 0xc1, 0xe8, 0xe0, 0xb2, 0x65, 0x05, 0x1d, 0x5c, 0xa0, 0x22, 0x90, 0xfa, 0x5a, 0x8e, 0x4f, - 0x48, 0x7d, 0x66, 0x45, 0x5a, 0x5e, 0x58, 0x11, 0xb3, 0x88, 0xa6, 0x08, 0x8b, 0x6c, 0xad, 0x32, - 0x4a, 0x7e, 0xb8, 0xbf, 0x91, 0x6d, 0x0d, 0x2e, 0x42, 0x0a, 0x6b, 0xdf, 0xa5, 0x41, 0xb1, 0xc9, - 0x4b, 0x77, 0xdb, 0x23, 0xb4, 0x35, 0x50, 0xdf, 0x07, 0x79, 0xbb, 0x03, 0xbd, 0xa0, 0xed, 0x39, - 0x9c, 0x1a, 0xc5, 0x34, 0x5e, 0x74, 0xb8, 0xdc, 0x05, 0x06, 0xbe, 0x72, 0xf1, 0xd9, 0x48, 0xcf, - 0xd9, 0x62, 0x68, 0xc5, 0x03, 0x67, 0xca, 0x71, 0x6a, 0x29, 0xc7, 0xe9, 0xbf, 0xcc, 0xb1, 0xfc, - 0x62, 0x8e, 0x33, 0x49, 0x8e, 0xb3, 0x07, 0xe6, 0x38, 0x37, 0xc3, 0xf1, 0x47, 0x20, 0x2f, 0xee, - 0x38, 0x22, 0x5a, 0xbe, 0x9a, 0xae, 0x17, 0x36, 0xd7, 0x1b, 0xcf, 0x7f, 0xad, 0x1a, 0x82, 0xca, - 0x16, 0xfb, 0x08, 0x98, 0x55, 0x56, 0x96, 0xcf, 0x46, 0x3a, 0x80, 0x13, 0x7e, 0xbf, 0xf9, 0x45, - 0x07, 0x53, 0xb6, 0xad, 0xc9, 0x82, 0x42, 0x40, 0x65, 0x4e, 0x40, 0x30, 0x27, 0x60, 0x61, 0x99, - 0x80, 0x7f, 0xa4, 0x41, 0xf1, 0xe2, 0x30, 0x80, 0xbe, 0x67, 0x5f, 0x46, 0xe8, 0x1f, 0x11, 0xf0, - 0x3c, 0x28, 0x30, 0x01, 0xa9, 0x17, 0xb6, 0x6d, 0x18, 0xee, 0x2f, 0x21, 0x93, 0xbb, 0xe5, 0x85, - 0x17, 0x60, 0x38, 0x0e, 0xbd, 0x81, 0x10, 0x0f, 0x95, 0x5f, 0x26, 0xf4, 0x32, 0x42, 0x2c, 0x34, - 0x96, 0x3f, 0xf3, 0x62, 0xf9, 0xb3, 0x49, 0xf9, 0x73, 0x07, 0x96, 0x3f, 0xbf, 0x44, 0x7e, 0xe5, - 0x6f, 0x91, 0x1f, 0xcc, 0xc9, 0x5f, 0x98, 0x93, 0xbf, 0xb8, 0x4c, 0xfe, 0xc7, 0x32, 0x50, 0xae, - 0x21, 0x7a, 0x01, 0x3b, 0xff, 0x69, 0xff, 0xef, 0xd4, 0x1e, 0x02, 0x85, 0xbd, 0xd7, 0xed, 0xae, - 0x47, 0xa8, 0x06, 0xf8, 0xea, 0xa7, 0x92, 0xab, 0xc7, 0x1a, 0x37, 0x67, 0x5f, 0x76, 0xf3, 0x78, - 0xbc, 0x4d, 0x9e, 0x2d, 0x10, 0x6f, 0x92, 0x6f, 0xc6, 0x63, 0x6b, 0x32, 0x2b, 0xca, 0xab, 0x30, - 0x57, 0x5e, 0xc5, 0xb9, 0xf2, 0x3a, 0xb4, 0xac, 0xbc, 0x6a, 0xa0, 0x7c, 0x69, 0x40, 0x51, 0x40, - 0x3c, 0x1c, 0x7c, 0x10, 0xf2, 0xe6, 0x68, 0xfa, 0xc8, 0x6e, 0xc9, 0x0c, 0x5d, 0xfb, 0x5e, 0x02, - 0x47, 0xe7, 0x3a, 0x0b, 0x0b, 0x91, 0x10, 0x07, 0x84, 0x73, 0xc9, 0x3b, 0x02, 0x5e, 0x8a, 0x16, - 0x1f, 0xab, 0xa7, 0x81, 0xdc, 0xc5, 0x2e, 0xd1, 0x52, 0x3c, 0xd3, 0xa3, 0xc9, 0x4c, 0xb7, 0xb1, - 0x6b, 0x71, 0x88, 0x7a, 0x04, 0xa4, 0x23, 0x44, 0x79, 0x8d, 0x15, 0x2d, 0x36, 0x54, 0x4b, 0x20, - 0xdf, 0xf7, 0xdb, 0x28, 0x8a, 0x70, 0x14, 0x3f, 0xa6, 0xb9, 0xbe, 0x7f, 0x89, 0x99, 0xcc, 0xc5, - 0xaa, 0xab, 0x47, 0x90, 0x23, 0xea, 0xc4, 0xca, 0xb9, 0x90, 0x5c, 0x27, 0xc8, 0x51, 0xd7, 0x01, - 0xd8, 0xed, 0x62, 0xfb, 0xa6, 0x68, 0x4f, 0xc4, 0xbb, 0xa9, 0xf0, 0x19, 0xd6, 0x8c, 0xc4, 0x59, - 0xdc, 0x95, 0xc0, 0xe1, 0x1d, 0xe2, 0x5e, 0x0f, 0x1d, 0x48, 0xd1, 0x55, 0xde, 0x8b, 0xb1, 0x97, - 0x2a, 0x6e, 0xa5, 0xe8, 0x30, 0xbe, 0x4f, 0xda, 0x8f, 0xf7, 0x37, 0xd6, 0xe2, 0xce, 0xb2, 0xe9, - 0x38, 0x11, 0x22, 0xe4, 0x1a, 0x8d, 0xbc, 0xc0, 0xb5, 0xa6, 0x50, 0xf5, 0x1c, 0xc8, 0x8a, 0x6e, - 0x8e, 0xdf, 0x9d, 0xc2, 0xa6, 0x96, 0xcc, 0x52, 0xec, 0x60, 0xca, 0x4c, 0x41, 0x2b, 0x46, 0x6f, - 0xad, 0xb2, 0x5e, 0x65, 0xba, 0x4e, 0xad, 0x04, 0x8e, 0x3d, 0x77, 0xa4, 0x31, 0xb5, 0xb5, 0x6f, - 0x25, 0xf0, 0xca, 0x0e, 0x71, 0x2d, 0xe4, 0x7a, 0x84, 0xa2, 0xe8, 0xea, 0xa4, 0x3b, 0x3c, 0xf8, - 0xa9, 0xaf, 0x80, 0xc2, 0xb4, 0xc9, 0x1c, 0x0b, 0x74, 0x7c, 0xc1, 0xd1, 0x27, 0x20, 0x53, 0x61, - 0xc7, 0xff, 0xfa, 0xe9, 0xbd, 0x33, 0x92, 0x35, 0x1b, 0x9b, 0x48, 0xa4, 0x0a, 0x2a, 0x8b, 0x0f, - 0x3b, 0xce, 0x67, 0xf3, 0x71, 0x0a, 0xa4, 0x77, 0x88, 0xab, 0x7e, 0x06, 0x66, 0xba, 0x38, 0x55, - 0x4f, 0xee, 0x3e, 0x57, 0x69, 0xe5, 0xd7, 0xf7, 0x01, 0x4c, 0xf8, 0x7a, 0xed, 0xce, 0x4f, 0xbf, - 0x7d, 0x99, 0xd2, 0x6b, 0xeb, 0x46, 0xa2, 0x6d, 0x46, 0x31, 0xba, 0x4d, 0x07, 0xea, 0xc7, 0xa0, - 0x38, 0x57, 0x01, 0x27, 0x16, 0xae, 0x3f, 0x0b, 0x29, 0x9f, 0xde, 0x17, 0x32, 0xb9, 0x0f, 0x9f, - 0x80, 0xff, 0x2f, 0x12, 0xac, 0xbe, 0x70, 0x85, 0x05, 0xc8, 0xf2, 0x9b, 0x2f, 0x8b, 0x1c, 0x6f, - 0x59, 0xce, 0xdc, 0x66, 0xea, 0x98, 0xef, 0x3c, 0xd8, 0xab, 0x48, 0x0f, 0xf7, 0x2a, 0xd2, 0xaf, - 0x7b, 0x15, 0xe9, 0x8b, 0x27, 0x95, 0x95, 0x87, 0x4f, 0x2a, 0x2b, 0x3f, 0x3f, 0xa9, 0xac, 0x7c, - 0x78, 0xca, 0xf5, 0x68, 0xa7, 0xb7, 0xdb, 0xb0, 0xb1, 0xcf, 0x08, 0xc1, 0x64, 0x86, 0xa0, 0x01, - 0xa7, 0x88, 0x0e, 0x43, 0x44, 0x76, 0xb3, 0xfc, 0x7f, 0xc1, 0x5b, 0x7f, 0x06, 0x00, 0x00, 0xff, - 0xff, 0x8a, 0x83, 0x91, 0x5e, 0xbd, 0x0d, 0x00, 0x00, + 0x17, 0x5f, 0x27, 0xce, 0x0f, 0x4f, 0xd2, 0x6d, 0xbf, 0xf3, 0xdd, 0x52, 0x27, 0xea, 0xc6, 0x69, + 0x0a, 0x25, 0x2d, 0x6c, 0x4c, 0x17, 0x54, 0xa9, 0x7b, 0x62, 0xdd, 0x5f, 0x14, 0xed, 0x8a, 0xca, + 0xdd, 0x5e, 0x00, 0x29, 0x9a, 0xb5, 0xa7, 0x8e, 0xd5, 0xd8, 0x63, 0x3c, 0x93, 0x90, 0xad, 0x84, + 0x54, 0xf5, 0xc4, 0x91, 0x8a, 0x7f, 0x80, 0x23, 0x82, 0x4b, 0x0f, 0x3d, 0x73, 0xae, 0x38, 0x55, + 0x70, 0x41, 0x55, 0x15, 0xd0, 0x16, 0xa9, 0x52, 0x6f, 0x70, 0xe6, 0x80, 0x66, 0xc6, 0xf9, 0x55, + 0x6f, 0xda, 0xb2, 0x12, 0x48, 0x48, 0x5c, 0x56, 0xf3, 0xe6, 0x7d, 0xde, 0x9b, 0x79, 0x9f, 0xcf, + 0x73, 0xe6, 0x2d, 0xa8, 0x60, 0xd6, 0xc1, 0x71, 0xe0, 0x87, 0xcc, 0xc4, 0xfd, 0xc0, 0xec, 0x9f, + 0x36, 0xd9, 0xa0, 0x15, 0xc5, 0x84, 0x11, 0x78, 0x68, 0xec, 0x6a, 0xe1, 0x7e, 0xd0, 0xea, 0x9f, + 0xae, 0xfe, 0x0f, 0x05, 0x7e, 0x48, 0x4c, 0xf1, 0x57, 0x82, 0xaa, 0x47, 0x1c, 0x42, 0x03, 0x42, + 0xcd, 0x80, 0x7a, 0x3c, 0x38, 0xa0, 0x5e, 0xe2, 0xa8, 0x48, 0x47, 0x5b, 0x58, 0xa6, 0x34, 0x12, + 0xd7, 0x92, 0x47, 0x3c, 0x22, 0xf7, 0xf9, 0x2a, 0xd9, 0x3d, 0xea, 0x11, 0xe2, 0x75, 0xb1, 0x89, + 0x22, 0xdf, 0x44, 0x61, 0x48, 0x18, 0x62, 0x3e, 0x09, 0x47, 0x31, 0x95, 0xc4, 0x2b, 0xac, 0xed, + 0xde, 0x75, 0x13, 0x85, 0x3b, 0x89, 0xeb, 0x78, 0xaa, 0x04, 0xe4, 0x38, 0x98, 0xd2, 0x36, 0xeb, + 0x45, 0x5d, 0x9c, 0x80, 0xaa, 0x29, 0x50, 0x97, 0x8c, 0xae, 0xba, 0x9c, 0xf2, 0x45, 0x28, 0x46, + 0xc1, 0xe8, 0xe8, 0x63, 0x69, 0x77, 0x8c, 0xfd, 0x90, 0x32, 0xd4, 0xed, 0x26, 0x90, 0x95, 0x14, + 0x84, 0x62, 0xd6, 0x76, 0x88, 0x8b, 0xdb, 0xa8, 0xc7, 0x3a, 0x24, 0xf6, 0x6f, 0x8a, 0x6a, 0x24, + 0xbc, 0x71, 0x2b, 0x03, 0x0e, 0x6c, 0x52, 0xef, 0x02, 0x0f, 0xc2, 0xbd, 0x60, 0x6b, 0x00, 0x9b, + 0x40, 0x75, 0x11, 0x43, 0xba, 0x52, 0x57, 0x9a, 0xa5, 0xd5, 0xa5, 0x96, 0xac, 0xb6, 0x35, 0xaa, + 0xb6, 0xb5, 0x1e, 0xee, 0xd8, 0x02, 0x01, 0x2b, 0x40, 0xa5, 0xfe, 0x4d, 0xac, 0x67, 0xea, 0x4a, + 0x53, 0xb1, 0x72, 0x4f, 0x87, 0x86, 0xb2, 0x62, 0x8b, 0x2d, 0xf8, 0x0e, 0x38, 0xe8, 0xe2, 0x28, + 0xc6, 0x0e, 0x62, 0xd8, 0x6d, 0x77, 0x10, 0xed, 0xe8, 0xd9, 0xba, 0xd2, 0xd4, 0xac, 0xd2, 0xef, + 0x43, 0xa3, 0x10, 0x77, 0xa3, 0xb5, 0xc6, 0x4a, 0xc3, 0x5e, 0x9c, 0x60, 0xde, 0x43, 0xb4, 0x03, + 0xdf, 0x98, 0x89, 0xba, 0x1e, 0x93, 0x40, 0x57, 0x45, 0x54, 0x46, 0x57, 0xa6, 0xc1, 0x17, 0x63, + 0x12, 0x40, 0x08, 0x54, 0x81, 0xc8, 0xd5, 0x95, 0x66, 0xd9, 0x16, 0x6b, 0xf8, 0x2a, 0xc8, 0xc6, + 0xe8, 0x53, 0x3d, 0xcf, 0xb7, 0x2c, 0x78, 0x7f, 0x68, 0x2c, 0x3c, 0x1c, 0x1a, 0x60, 0x52, 0x9c, + 0xcd, 0xdd, 0x6b, 0x07, 0x3e, 0xff, 0xca, 0x58, 0xb8, 0xfd, 0xe4, 0xee, 0x29, 0x11, 0xd4, 0xb8, + 0x93, 0x01, 0xc5, 0x0d, 0xec, 0x21, 0x67, 0x67, 0x6b, 0x00, 0x97, 0x40, 0x2e, 0x24, 0xa1, 0x83, + 0x45, 0xf9, 0xaa, 0x2d, 0x0d, 0x78, 0x06, 0x68, 0x1e, 0xe2, 0x0d, 0xe4, 0x3b, 0xb2, 0x5c, 0xcd, + 0xaa, 0x3c, 0x1c, 0x1a, 0x87, 0x65, 0x2f, 0x51, 0xf7, 0x46, 0xcb, 0x27, 0x66, 0x80, 0x58, 0xa7, + 0x75, 0x39, 0x64, 0x76, 0xd1, 0x43, 0xf4, 0x0a, 0x87, 0xc2, 0x1a, 0xc8, 0x7a, 0x88, 0x8a, 0xd2, + 0x55, 0xab, 0xbc, 0x3b, 0x34, 0x8a, 0x97, 0x10, 0xdd, 0xf0, 0x03, 0x9f, 0xd9, 0xdc, 0x01, 0x17, + 0x41, 0x86, 0x11, 0x59, 0xa3, 0x9d, 0x61, 0x04, 0x9e, 0x05, 0xb9, 0x3e, 0xea, 0xf6, 0xb0, 0x28, + 0x4a, 0xb3, 0x8e, 0xcf, 0x3d, 0x63, 0x77, 0x68, 0xe4, 0xd7, 0x03, 0xd2, 0x0b, 0x99, 0x2d, 0x23, + 0x38, 0x1d, 0x42, 0xb6, 0xbc, 0xa4, 0x43, 0x08, 0x54, 0x06, 0x4a, 0x5f, 0x2f, 0x88, 0x0d, 0xa5, + 0xcf, 0xad, 0x58, 0x2f, 0x4a, 0x2b, 0xe6, 0x16, 0xd5, 0x35, 0x69, 0xd1, 0xb5, 0x45, 0x4e, 0xc9, + 0xf7, 0xf7, 0x56, 0xf2, 0x5b, 0x83, 0xf3, 0x88, 0xa1, 0xc6, 0x77, 0x59, 0x50, 0x5e, 0x17, 0xad, + 0xbb, 0xe1, 0x53, 0xb6, 0x35, 0x80, 0xef, 0x83, 0xa2, 0xd3, 0x41, 0x7e, 0xd8, 0xf6, 0x5d, 0x41, + 0x8d, 0x66, 0x99, 0xcf, 0xbb, 0x5c, 0xe1, 0x1c, 0x07, 0x5f, 0x3e, 0xff, 0x74, 0x68, 0x14, 0x1c, + 0xb9, 0xb4, 0x93, 0x85, 0x3b, 0xe1, 0x38, 0x33, 0x97, 0xe3, 0xec, 0x5f, 0xe6, 0x58, 0x7d, 0x3e, + 0xc7, 0xb9, 0x34, 0xc7, 0xf9, 0x7d, 0x73, 0x5c, 0x98, 0xe2, 0xf8, 0x23, 0x50, 0x94, 0xdf, 0x38, + 0xa6, 0x7a, 0xb1, 0x9e, 0x6d, 0x96, 0x56, 0x97, 0x5b, 0xcf, 0xfe, 0x5a, 0xb5, 0x24, 0x95, 0x5b, + 0xfc, 0x47, 0xc0, 0xaa, 0xf3, 0xb6, 0x7c, 0x3a, 0x34, 0x00, 0x1a, 0xf3, 0xfb, 0xcd, 0xcf, 0x06, + 0x98, 0xb0, 0x6d, 0x8f, 0x13, 0x4a, 0x01, 0xb5, 0x19, 0x01, 0xc1, 0x8c, 0x80, 0xa5, 0x79, 0x02, + 0xfe, 0x91, 0x05, 0xe5, 0xf3, 0x3b, 0x21, 0x0a, 0x7c, 0xe7, 0x22, 0xc6, 0xff, 0x88, 0x80, 0x67, + 0x41, 0x89, 0x0b, 0xc8, 0xfc, 0xa8, 0xed, 0xa0, 0xe8, 0xc5, 0x12, 0x72, 0xb9, 0xb7, 0xfc, 0xe8, + 0x1c, 0x8a, 0x46, 0xa1, 0xd7, 0x31, 0x16, 0xa1, 0xea, 0xcb, 0x84, 0x5e, 0xc4, 0x98, 0x87, 0x26, + 0xf2, 0xe7, 0x9e, 0x2f, 0x7f, 0x3e, 0x2d, 0x7f, 0x61, 0xdf, 0xf2, 0x17, 0xe7, 0xc8, 0xaf, 0xfd, + 0x2d, 0xf2, 0x83, 0x19, 0xf9, 0x4b, 0x33, 0xf2, 0x97, 0xe7, 0xc9, 0xff, 0x48, 0x05, 0xda, 0x55, + 0xcc, 0xce, 0x11, 0xf7, 0x3f, 0xed, 0xff, 0x9d, 0xda, 0x23, 0xa0, 0xf1, 0xf7, 0xba, 0xdd, 0xf5, + 0x29, 0xd3, 0x81, 0xc8, 0x7e, 0x22, 0x9d, 0x3d, 0xd1, 0x78, 0x7d, 0xfa, 0x65, 0xb7, 0x8e, 0x26, + 0xc7, 0x14, 0x79, 0x82, 0xe4, 0x90, 0xe2, 0x7a, 0xb2, 0xb6, 0xc7, 0xbb, 0xb2, 0xbd, 0x4a, 0x33, + 0xed, 0x55, 0x9e, 0x69, 0xaf, 0x03, 0xf3, 0xda, 0xab, 0x01, 0xaa, 0x17, 0x06, 0x0c, 0x87, 0xd4, + 0x27, 0xe1, 0x07, 0x91, 0x18, 0x8e, 0x26, 0x8f, 0xec, 0x9a, 0xca, 0xd1, 0x8d, 0xdf, 0x14, 0x70, + 0x78, 0x66, 0xb2, 0xb0, 0x31, 0x8d, 0x48, 0x48, 0x05, 0x97, 0x62, 0x22, 0x10, 0xad, 0x68, 0x8b, + 0x35, 0x3c, 0x09, 0xd4, 0x2e, 0xf1, 0xa8, 0x9e, 0x11, 0x95, 0x1e, 0x4e, 0x57, 0xba, 0x41, 0x3c, + 0x5b, 0x40, 0xe0, 0x21, 0x90, 0x8d, 0x31, 0x13, 0x3d, 0x56, 0xb6, 0xf9, 0x12, 0x56, 0x40, 0xb1, + 0x1f, 0xb4, 0x71, 0x1c, 0x93, 0x38, 0x79, 0x4c, 0x0b, 0xfd, 0xe0, 0x02, 0x37, 0xb9, 0x8b, 0x77, + 0x57, 0x8f, 0x62, 0x57, 0xf6, 0x89, 0x5d, 0xf0, 0x10, 0xbd, 0x46, 0xb1, 0x0b, 0x97, 0x01, 0xd8, + 0xee, 0x12, 0xe7, 0x86, 0x1c, 0x4f, 0xe4, 0xbb, 0xa9, 0x89, 0x1d, 0x31, 0x8c, 0xbc, 0x09, 0x20, + 0x1e, 0x60, 0xa7, 0xc7, 0xab, 0x6b, 0x8f, 0x73, 0x14, 0x44, 0x8e, 0x43, 0x63, 0xcf, 0x25, 0x99, + 0x2c, 0xa9, 0xf9, 0x8e, 0x02, 0x0e, 0x6e, 0x52, 0xef, 0x5a, 0xe4, 0x22, 0x86, 0xaf, 0x88, 0xc9, + 0x8d, 0xbf, 0x6b, 0xc9, 0xe0, 0xc5, 0x76, 0x92, 0xaf, 0x4f, 0xff, 0xe1, 0xde, 0xca, 0x52, 0x32, + 0x87, 0xae, 0xbb, 0x6e, 0x8c, 0x29, 0xbd, 0xca, 0x62, 0x3f, 0xf4, 0xec, 0x09, 0x14, 0x9e, 0x01, + 0x79, 0x39, 0xfb, 0x89, 0x2f, 0xad, 0xb4, 0xaa, 0xa7, 0x39, 0x91, 0x27, 0x58, 0x2a, 0xd7, 0xdb, + 0x4e, 0xd0, 0x6b, 0x8b, 0x7c, 0xb2, 0x99, 0xe4, 0x69, 0x54, 0xc0, 0x91, 0x67, 0xae, 0x34, 0x12, + 0xa2, 0xf1, 0xad, 0x02, 0x5e, 0xd9, 0xa4, 0x9e, 0x8d, 0x3d, 0x9f, 0x32, 0x1c, 0x5f, 0x19, 0xcf, + 0x92, 0xfb, 0xbf, 0xf5, 0x65, 0x50, 0x9a, 0x8c, 0xa4, 0x23, 0x39, 0x8f, 0xee, 0x71, 0xf5, 0x31, + 0xc8, 0xd2, 0xf8, 0xf5, 0xbf, 0x7e, 0x72, 0xf7, 0x94, 0x62, 0x4f, 0xc7, 0xa6, 0x0a, 0xa9, 0x83, + 0xda, 0xde, 0x97, 0x1d, 0xd5, 0xb3, 0xfa, 0x28, 0x03, 0xb2, 0x9b, 0xd4, 0x83, 0x9f, 0x81, 0xa9, + 0x99, 0x0f, 0x1a, 0xe9, 0xd3, 0x67, 0xfa, 0xb2, 0xfa, 0xfa, 0x0b, 0x00, 0x63, 0xbe, 0x5e, 0xbb, + 0xfd, 0xe3, 0xaf, 0x5f, 0x66, 0x8c, 0xc6, 0xb2, 0x99, 0x1a, 0xb2, 0x71, 0x82, 0x6e, 0xb3, 0x01, + 0xfc, 0x18, 0x94, 0x67, 0x3a, 0xe0, 0xd8, 0x9e, 0xf9, 0xa7, 0x21, 0xd5, 0x93, 0x2f, 0x84, 0x8c, + 0xbf, 0x9e, 0x4f, 0xc0, 0xff, 0xf7, 0x12, 0xac, 0xb9, 0x67, 0x86, 0x3d, 0x90, 0xd5, 0xb7, 0x5e, + 0x16, 0x39, 0x3a, 0xb2, 0x9a, 0xbb, 0xc5, 0xd5, 0xb1, 0xde, 0xbd, 0xbf, 0x5b, 0x53, 0x1e, 0xec, + 0xd6, 0x94, 0x5f, 0x76, 0x6b, 0xca, 0x17, 0x8f, 0x6b, 0x0b, 0x0f, 0x1e, 0xd7, 0x16, 0x7e, 0x7a, + 0x5c, 0x5b, 0xf8, 0xf0, 0x84, 0xe7, 0xb3, 0x4e, 0x6f, 0xbb, 0xe5, 0x90, 0x80, 0x13, 0x42, 0xe8, + 0x14, 0x41, 0x03, 0x41, 0x11, 0xdb, 0x89, 0x30, 0xdd, 0xce, 0x8b, 0xff, 0x22, 0xde, 0xfe, 0x33, + 0x00, 0x00, 0xff, 0xff, 0x24, 0x23, 0x5f, 0xd4, 0xeb, 0x0d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1462,6 +1466,11 @@ func (m *MsgEthereumTxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.ExecutionGasUsed != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.ExecutionGasUsed)) + i-- + dAtA[i] = 0x38 + } if len(m.BlockHash) > 0 { i -= len(m.BlockHash) copy(dAtA[i:], m.BlockHash) @@ -1939,6 +1948,9 @@ func (m *MsgEthereumTxResponse) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } + if m.ExecutionGasUsed != 0 { + n += 1 + sovTx(uint64(m.ExecutionGasUsed)) + } return n } @@ -4120,6 +4132,25 @@ func (m *MsgEthereumTxResponse) Unmarshal(dAtA []byte) error { m.BlockHash = []byte{} } iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExecutionGasUsed", wireType) + } + m.ExecutionGasUsed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ExecutionGasUsed |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) From f6f9951cbb201580d3d6dbef954bba98af35efac Mon Sep 17 00:00:00 2001 From: Thomas <81727899+thomas-nguy@users.noreply.github.com> Date: Tue, 13 Jan 2026 12:02:00 +0900 Subject: [PATCH 208/210] v0.23.0 release (#819) --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ac5d0ba26..4f7013b849 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,8 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## Unreleased +## [v0.23.0] - 2026-01-13 + ### Features * (go) [#787](https://github.com/crypto-org-chain/ethermint/pull/787) feat: use golang 1.25.0. From 969d46e528aac199a465f94d0f9753e032bead2c Mon Sep 17 00:00:00 2001 From: Xinyu <91446598+XinyuCRO@users.noreply.github.com> Date: Wed, 14 Jan 2026 16:00:47 +0800 Subject: [PATCH 209/210] fix: nonce increments on EIP-7702 contract creation (#815) * fix: nonce increments on EIP-7702 contract creation - fix python packages couldn't be reference inside nix-shell, added PYTHONHOME export to fix the poetry2nix Python wrapper issue in nixpkgs 25.11 - reduce nix shell entering time by removing the ${super.path} reference that was causing the entire nixpkgs source to be copied * fix: add nonce diffs in ante handler --- CHANGELOG.md | 1 + nix/default.nix | 16 +- nix/golangci-lint.nix | 4 +- .../hardhat/contracts/DelegationTarget.sol | 151 ++++++++++++++++++ .../hardhat/contracts/MaliciousDeployer.sol | 77 +++++++++ tests/integration_tests/shell.nix | 4 + tests/integration_tests/test_set_code_tx.py | 101 +++++++++++- tests/integration_tests/utils.py | 2 + x/evm/keeper/state_transition.go | 18 ++- 9 files changed, 356 insertions(+), 18 deletions(-) create mode 100644 tests/integration_tests/hardhat/contracts/DelegationTarget.sol create mode 100644 tests/integration_tests/hardhat/contracts/MaliciousDeployer.sol diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f7013b849..444103dd22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,6 +55,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#804](https://github.com/crypto-org-chain/ethermint/pull/804) fix: add allow-unprotected-txs config * (evm) [#809](https://github.com/crypto-org-chain/ethermint/pull/809) fix: relax preinstall rules * (rpc) [#814](https://github.com/crypto-org-chain/ethermint/pull/814) fix: estimate gas not accurate +* (evm) [#815](https://github.com/crypto-org-chain/ethermint/pull/815) fix: nonce increments on EIP-7702 contract creation ## [v0.22.0] - 2025-08-12 diff --git a/nix/default.nix b/nix/default.nix index 0ce5b1ba54..5a766bf59b 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -7,22 +7,16 @@ import sources.nixpkgs { overlays = [ (import ./build_overlay.nix) - (final: super: rec { + (final: super: { flake-compat = import sources.flake-compat; - # Create a Go 1.25 specific builder without overriding buildGoModule - buildGo125 = super.go_1_25; - buildGo125Module = super.callPackage "${super.path}/pkgs/build-support/go/module.nix" { - go = buildGo125; - }; + # In nixpkgs 25.11 with go = go_1_25 (set in build_overlay.nix), + # buildGoModule already uses Go 1.25, so we just use it directly go-ethereum = final.callPackage ./go-ethereum.nix { # Skip darwin-specific dependencies to avoid apple_sdk_11_0 errors in nixpkgs 25.11 libobjc = null; IOKit = null; - buildGoModule = buildGo125Module; - }; - golangci-lint = final.callPackage ./golangci-lint.nix { - buildGo125Module = buildGo125Module; }; + golangci-lint = final.callPackage ./golangci-lint.nix { }; }) # update to a version that supports eip-1559 (import "${sources.poetry2nix}/overlay.nix") # Fix poetry2nix compatibility with nixpkgs 25.11 - override fetchCargoTarball usage @@ -73,7 +67,7 @@ import sources.nixpkgs { ) (_: pkgs: { test-env = pkgs.callPackage ./testenv.nix { }; }) (_: pkgs: { - cosmovisor = (pkgs.buildGo125Module or (pkgs.buildGoModule.override { go = pkgs.go_1_25; })) rec { + cosmovisor = pkgs.buildGoModule rec { name = "cosmovisor"; src = sources.cosmos-sdk + "/cosmovisor"; subPackages = [ "./cmd/cosmovisor" ]; diff --git a/nix/golangci-lint.nix b/nix/golangci-lint.nix index a3f160ce15..0c1e89ce63 100644 --- a/nix/golangci-lint.nix +++ b/nix/golangci-lint.nix @@ -1,11 +1,11 @@ { - buildGo125Module, + buildGoModule, fetchFromGitHub, lib, installShellFiles, }: -buildGo125Module rec { +buildGoModule rec { pname = "golangci-lint"; version = "2.1.6"; diff --git a/tests/integration_tests/hardhat/contracts/DelegationTarget.sol b/tests/integration_tests/hardhat/contracts/DelegationTarget.sol new file mode 100644 index 0000000000..b236d1cb28 --- /dev/null +++ b/tests/integration_tests/hardhat/contracts/DelegationTarget.sol @@ -0,0 +1,151 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +/** + * @title DelegationTarget + * @notice Minimal contract for EIP-7702 delegation that allows deploying other contracts + * @dev This contract can be set as a delegation target for an EOA via EIP-7702 + */ +contract DelegationTarget { + // Storage slot where the counter (last offset) is stored + uint256 constant COUNTER_SLOT = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff; + + event ContractDeployed(address indexed deployed, bytes32 salt); + event ContractDestroyed(address indexed destroyed, uint256 index, bool success); + event CodeHash(address indexed deployed, bytes32 codeHash); + + /** + * @notice Deploy a contract using CREATE + * @param bytecode The bytecode of the contract to deploy + * @return deployed The address of the deployed contract + * @dev Stores deployed addresses at slots 0, 1, 2, ... and counter at COUNTER_SLOT + */ + function deploy(bytes memory bytecode) external returns (address deployed) { + assembly { + deployed := create(0, add(bytecode, 0x20), mload(bytecode)) + // Load current counter from COUNTER_SLOT + let currentSlot := sload(COUNTER_SLOT) + // Store deployed address at slot currentSlot (0, 1, 2, ...) + sstore(currentSlot, deployed) + // Increment counter and store back + sstore(COUNTER_SLOT, add(currentSlot, 1)) + } + require(deployed != address(0), "Deployment failed"); + emit ContractDeployed(deployed, bytes32(0)); + } + + /** + * @notice Get the deployed address at a given index + * @param index The index (slot) to read from + * @return addr The deployed address + */ + function getDeployedAt(uint256 index) external view returns (address addr) { + assembly { + addr := sload(index) + } + } + + /** + * @notice Get the current counter (number of deployments) + * @return count The number of deployed contracts + */ + function getDeploymentCount() external view returns (uint256 count) { + assembly { + count := sload(COUNTER_SLOT) + } + } + + /** + * @notice Selfdestruct all deployed contracts + * @dev Calls destroy() on each deployed contract. Contracts must implement destroy() with selfdestruct + */ + function selfdestructAll() external { + uint256 count; + assembly { + count := sload(COUNTER_SLOT) + } + + for (uint256 i = 0; i < count; i++) { + address target; + assembly { + target := sload(i) + } + // Call destroy() selector: 0x83197ef0 + (bool success,) = target.call(abi.encodeWithSelector(MinimalContract.selfDestruct.selector)); + emit ContractDestroyed(target, i, success); + } + } + + function emitAllCodeHashes() external { + uint256 count; + assembly { + count := sload(COUNTER_SLOT) + } + + for (uint256 i = 0; i < count; i++) { + address target; + assembly { + target := sload(i) + } + bytes32 codeHash; + assembly { + codeHash := extcodehash(target) + } + emit CodeHash(target, codeHash); + } + } + + /** + * @notice Execute arbitrary call (useful for delegated EOA) + * @param target The target address + * @param data The calldata + * @return success Whether the call succeeded + * @return result The return data + */ + function execute(address target, bytes calldata data) external payable returns (bool success, bytes memory result) { + (success, result) = target.call{value: msg.value}(data); + } + + receive() external payable {} +} + + + + +/** + * @title MinimalContract + * @notice A minimal contract that gets deployed by MaliciousDeployer + */ +contract MinimalContract { + address public immutable creator; + uint256 public value; + + constructor() { + creator = msg.sender; + } + + function setValue(uint256 _value) external { + value = _value; + } + + function selfDestruct() external { + selfdestruct(payable(creator)); + } +} + +/** + * @title FinalContract + * @notice The final contract that gets deployed by MaliciousDeployer + */ +contract FinalContract { + address public immutable creator; + uint256 public value; + + constructor() { + creator = msg.sender; + } + + function singletonFunction() external pure returns (string memory) { + return "I am the final contract!"; + } +} \ No newline at end of file diff --git a/tests/integration_tests/hardhat/contracts/MaliciousDeployer.sol b/tests/integration_tests/hardhat/contracts/MaliciousDeployer.sol new file mode 100644 index 0000000000..6664fc4c73 --- /dev/null +++ b/tests/integration_tests/hardhat/contracts/MaliciousDeployer.sol @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./DelegationTarget.sol"; + +/** + * @title MaliciousDeployer + * @notice Contract that during deployment calls back the deployer (with EIP-7702 delegation) + * and deploys contracts through the delegated EOA + * @dev The constructor performs the callback attack during deployment + */ +contract MaliciousDeployer { + address public immutable deployer; + address[] public deployedContracts; + + event CallbackExecuted(address indexed delegatedEOA, bool success); + event ContractDeployedViaCallback(address indexed deployed); + + /** + * @notice Constructor that calls back the deployer and deploys contracts + * @param delegatedEOA The EOA with EIP-7702 delegation (should be tx.origin or specified) + * @param numContracts Number of contracts to deploy via callback + */ + constructor(address delegatedEOA, uint256 numContracts, uint256 step) { + deployer = msg.sender; + + // Attempt to call back the delegated EOA and deploy contracts through it + for (uint256 i = 0; i < numContracts; i++) { + // Get bytecode for MinimalContract + bytes memory bytecode; + if (step == 1) { + bytecode = type(MinimalContract).creationCode; + } else { + bytecode = type(FinalContract).creationCode; + } + + // Call the deploy function on the delegated EOA (which has DelegationTarget code) + (bool success, bytes memory result) = delegatedEOA.call( + abi.encodeWithSelector(DelegationTarget.deploy.selector, bytecode) + ); + + emit CallbackExecuted(delegatedEOA, success); + address deployed; + if (success && result.length >= 32) { + deployed = abi.decode(result, (address)); + deployedContracts.push(deployed); + } + } + + delegatedEOA.call(abi.encodeWithSelector(DelegationTarget.emitAllCodeHashes.selector)); + + + // @audit at this point, the attacker can make external calls + + + // Call the deploy function on the delegated EOA (which has DelegationTarget code) + if (step == 1) { + delegatedEOA.call( + abi.encodeWithSelector(DelegationTarget.selfdestructAll.selector) + ); + } + } + + /** + * @notice Get the number of contracts deployed via callback + */ + function getDeployedCount() external view returns (uint256) { + return deployedContracts.length; + } + + /** + * @notice Get all deployed contract addresses + */ + function getDeployedContracts() external view returns (address[] memory) { + return deployedContracts; + } +} \ No newline at end of file diff --git a/tests/integration_tests/shell.nix b/tests/integration_tests/shell.nix index 9e95cd5173..eec9957dc2 100644 --- a/tests/integration_tests/shell.nix +++ b/tests/integration_tests/shell.nix @@ -15,5 +15,9 @@ pkgs.mkShell { ]; shellHook = '' . ${../../scripts/env} + # Fix poetry2nix Python environment in nixpkgs 25.11 + # The wrapper binary doesn't set PYTHONHOME, causing sys.prefix to point + # to the base python instead of the poetry environment + export PYTHONHOME="${pkgs.test-env}" ''; } diff --git a/tests/integration_tests/test_set_code_tx.py b/tests/integration_tests/test_set_code_tx.py index da5c527eb4..2f1ebbc598 100644 --- a/tests/integration_tests/test_set_code_tx.py +++ b/tests/integration_tests/test_set_code_tx.py @@ -10,7 +10,14 @@ from .bytecode_deployer import deploy_runtime_bytecode from .network import setup_custom_ethermint -from .utils import derive_new_account, fund_acc, send_transaction +from .utils import ( + CONTRACTS, + deploy_contract, + derive_new_account, + fund_acc, + send_transaction, + w3_wait_for_new_blocks, +) DELEGATION_PREFIX = "0xef0100" @@ -704,3 +711,95 @@ def test_set_code_tx_revoke_delegation(cluster): assert ( Web3.to_hex(code) == expected_code ), f"Expected code {expected_code}, got {Web3.to_hex(code)}" + + +def test_eip7702_nonce_increment(cluster): + """ + TestEIP7702NonceIncrement equivalent: Tests that when a user with EIP-7702 + delegation deploys a contract whose constructor calls back to the user + (via the delegation) and deploys more contracts, the user's nonce is + correctly incremented. + + This test reproduces a bug where the nonce was unconditionally reset to msg.Nonce+1 + after evm.Create(), ignoring any nonce increments that occurred during execution. + + Bug scenario: + 1. User (with EIP-7702 delegation) sends contract creation tx with nonce N + 2. evm.Create() increments User's nonce to N+1 + 3. Constructor calls back to User via delegation, deploying more contracts + 4. Each nested CREATE increments User's nonce (N+2, N+3, ...) + 5. BUG: After evm.Create() returns, nonce is reset to N+1, losing all increments + """ + w3 = cluster.w3 + chain_id = w3.eth.chain_id + + user = derive_new_account(n=100) + helper = derive_new_account(n=101) + + fund_acc(w3, user) + fund_acc(w3, helper) + + delegation_target_contract, _ = deploy_contract( + w3, CONTRACTS["DelegationTarget"], key=helper.key + ) + delegation_target_addr = delegation_target_contract.address + + w3_wait_for_new_blocks(w3, 1) + + user_nonce = w3.eth.get_transaction_count(user.address) + + auth = { + "chainId": chain_id, + "address": delegation_target_addr, + "nonce": user_nonce + 1, + } + signed_auth = user.sign_authorization(auth) + + setcode_tx = { + "chainId": chain_id, + "type": 4, + "to": user.address, + "value": 0, + "gas": 100000, + "maxFeePerGas": 1000000000000, + "maxPriorityFeePerGas": 10000, + "nonce": user_nonce, + "authorizationList": [signed_auth], + } + + signed_tx = user.sign_transaction(setcode_tx) + tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction) + receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=30) + assert receipt.status == 1, f"SetCode transaction failed: {receipt}" + + w3_wait_for_new_blocks(w3, 1) + + code = w3.eth.get_code(user.address, "latest") + expected_delegation = address_to_delegation(delegation_target_addr) + assert code == HexBytes(expected_delegation), ( + f"Delegation not set correctly: got {Web3.to_hex(code)}, " + f"want {expected_delegation}" + ) + + initial_nonce = w3.eth.get_transaction_count(user.address) + + num_contracts = 30 + step = 1 + + deploy_contract( + w3, + CONTRACTS["MaliciousDeployer"], + args=(user.address, num_contracts, step), + key=user.key, + ) + + w3_wait_for_new_blocks(w3, 1) + + final_nonce = w3.eth.get_transaction_count(user.address) + + expected_nonce = initial_nonce + 1 + num_contracts + assert final_nonce == expected_nonce, ( + f"user nonce should be {expected_nonce} " + f"(initial {initial_nonce} + 1 for deployment + " + f"{num_contracts} nested creates), but got {final_nonce}" + ) diff --git a/tests/integration_tests/utils.py b/tests/integration_tests/utils.py index de35fd1649..492667062a 100644 --- a/tests/integration_tests/utils.py +++ b/tests/integration_tests/utils.py @@ -49,6 +49,8 @@ "SelfDestruct": "SelfDestruct.sol", "BytecodeDeployer": "BytecodeDeployer.sol", "GasConsumerTryCatch": "GasConsumerTryCatch.sol", + "DelegationTarget": "DelegationTarget.sol", + "MaliciousDeployer": "MaliciousDeployer.sol", } diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index 2b459e0d5e..e10ce8f447 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -429,13 +429,23 @@ func (k *Keeper) ApplyMessageWithConfig( stateDB.Prepare(rules, msg.From, cfg.CoinBase, msg.To, vm.ActivePrecompiles(rules), msg.AccessList) if contractCreation { - // take over the nonce management from evm: - // - reset sender's nonce to msg.Nonce() to generate correct contract address. - // - set the nonce back to the original value after contract creation. + // Take over nonce management from evm: + // - Reset sender's nonce to msg.Nonce so evm.Create() computes correct contract address + // - After evm.Create(), calculate the final nonce accounting for: + // 1. The ante handler's nonce increment (already in oldNonce) + // 2. Any additional nonce increments from nested CREATEs (e.g., via EIP-7702 callbacks) + // + // This is important for batch transactions where ante handler pre-increments + // nonces for all messages, and for EIP-7702 where constructor callbacks can + // trigger additional contract deployments. oldNonce := stateDB.GetNonce(sender) stateDB.SetNonce(sender, msg.Nonce, tracing.NonceChangeUnspecified) ret, _, leftoverGas, vmErr = evm.Create(sender, msg.Data, leftoverGas, uint256.MustFromBig(msg.Value)) - stateDB.SetNonce(sender, oldNonce, tracing.NonceChangeUnspecified) + // evm.Create() increments nonce from msg.Nonce to (msg.Nonce + 1 + nestedCreates) + // We need: oldNonce + nestedCreates + afterCreateNonce := stateDB.GetNonce(sender) + nestedCreates := afterCreateNonce - msg.Nonce - 1 + stateDB.SetNonce(sender, oldNonce+nestedCreates, tracing.NonceChangeUnspecified) } else { if msg.SetCodeAuthorizations != nil { for _, auth := range msg.SetCodeAuthorizations { From 8f0688ac65f536ec80dd543eba3966a6fb9c0747 Mon Sep 17 00:00:00 2001 From: Xinyu <91446598+XinyuCRO@users.noreply.github.com> Date: Mon, 19 Jan 2026 16:29:31 +0800 Subject: [PATCH 210/210] refactor: replace MsgEthereumTxResponse with EthCallResponse (#822) (#825) * refactor: replace MsgEthereumTxResponse with EthCallResponse in EVM calls - Updated the EthCall RPC to return EthCallResponse instead of MsgEthereumTxResponse. - Introduced EthCallResponse message to encapsulate the response structure for eth_call. - Adjusted related interfaces, tests, and mock implementations to reflect the new response type. - Removed execution_gas_used field from MsgEthereumTxResponse to streamline the response structure. * doc: * test: coverage * fix: review comments # Conflicts: # CHANGELOG.md # rpc/backend/backend.go # rpc/backend/mocks/evm_query_client.go # x/evm/types/query.pb.go # x/evm/types/tx.pb.go --- CHANGELOG.md | 1 + proto/ethermint/evm/v1/query.proto | 19 +- proto/ethermint/evm/v1/tx.proto | 3 - rpc/backend/backend.go | 2 +- rpc/backend/call_tx.go | 4 +- rpc/backend/call_tx_test.go | 6 +- rpc/backend/evm_query_client_test.go | 2 +- rpc/backend/mocks/evm_query_client.go | 10 +- x/evm/keeper/grpc_query.go | 6 +- x/evm/keeper/msg_server.go | 20 +- x/evm/keeper/state_transition.go | 10 +- x/evm/types/evm_result.go | 71 +++ x/evm/types/evm_result_test.go | 142 ++++++ x/evm/types/query.pb.go | 671 +++++++++++++++++++++----- x/evm/types/tx.pb.go | 187 +++---- x/evm/types/utils.go | 2 +- x/evm/types/utils_test.go | 4 +- 17 files changed, 898 insertions(+), 262 deletions(-) create mode 100644 x/evm/types/evm_result.go create mode 100644 x/evm/types/evm_result_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 444103dd22..82d329840e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (evm) [#809](https://github.com/crypto-org-chain/ethermint/pull/809) fix: relax preinstall rules * (rpc) [#814](https://github.com/crypto-org-chain/ethermint/pull/814) fix: estimate gas not accurate * (evm) [#815](https://github.com/crypto-org-chain/ethermint/pull/815) fix: nonce increments on EIP-7702 contract creation +* (evm) [#822](https://github.com/crypto-org-chain/ethermint/pull/822) refactor:replace MsgEthereumTxResponse with EthCallResponse in EVM calls ## [v0.22.0] - 2025-08-12 diff --git a/proto/ethermint/evm/v1/query.proto b/proto/ethermint/evm/v1/query.proto index 3fec21617a..5580b585bc 100644 --- a/proto/ethermint/evm/v1/query.proto +++ b/proto/ethermint/evm/v1/query.proto @@ -52,7 +52,7 @@ service Query { } // EthCall implements the `eth_call` rpc api - rpc EthCall(EthCallRequest) returns (MsgEthereumTxResponse) { + rpc EthCall(EthCallRequest) returns (EthCallResponse) { option (google.api.http).get = "/ethermint/evm/v1/eth_call"; } @@ -241,6 +241,23 @@ message EthCallRequest { bytes overrides = 5; } +// EthCallResponse defines EthCall response +message EthCallResponse { + // hash of the ethereum transaction in hex format. + // This hash differs from the Tendermint sha256 hash of the transaction bytes. + string hash = 1; + // logs contains the transaction hash and the proto-compatible ethereum logs. + repeated Log logs = 2; + // ret is the returned data from evm function (result or data supplied with revert opcode) + bytes ret = 3; + // vm_error is the error returned by vm execution + string vm_error = 4; + // gas_used specifies how much gas was consumed by the transaction + uint64 gas_used = 5; + // include the block hash for json-rpc to use + bytes block_hash = 6; +} + // EstimateGasResponse defines EstimateGas response message EstimateGasResponse { // gas returns the estimated gas diff --git a/proto/ethermint/evm/v1/tx.proto b/proto/ethermint/evm/v1/tx.proto index 57d1f72190..45b9582d31 100644 --- a/proto/ethermint/evm/v1/tx.proto +++ b/proto/ethermint/evm/v1/tx.proto @@ -214,9 +214,6 @@ message MsgEthereumTxResponse { uint64 gas_used = 5; // include the block hash for json-rpc to use bytes block_hash = 6; - // execution_gas_used specifies the actual gas consumed during EVM execution, - // before the minGasMultiplier adjustment. This is used for gas estimation. - uint64 execution_gas_used = 7; } // MsgUpdateParams defines a Msg for updating the x/evm module parameters. diff --git a/rpc/backend/backend.go b/rpc/backend/backend.go index afed1150b0..72da9fc101 100644 --- a/rpc/backend/backend.go +++ b/rpc/backend/backend.go @@ -136,7 +136,7 @@ type EVMBackend interface { SendRawTransaction(data hexutil.Bytes) (common.Hash, error) SetTxDefaults(args evmtypes.TransactionArgs) (evmtypes.TransactionArgs, error) EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *rpctypes.BlockNumber, overrides *json.RawMessage) (hexutil.Uint64, error) - DoCall(args evmtypes.TransactionArgs, blockNr rpctypes.BlockNumber, overrides *json.RawMessage) (*evmtypes.MsgEthereumTxResponse, error) + DoCall(args evmtypes.TransactionArgs, blockNr rpctypes.BlockNumber, overrides *json.RawMessage) (*evmtypes.EthCallResponse, error) GasPrice() (*hexutil.Big, error) // Filter API diff --git a/rpc/backend/call_tx.go b/rpc/backend/call_tx.go index 907c458a82..aa322c685c 100644 --- a/rpc/backend/call_tx.go +++ b/rpc/backend/call_tx.go @@ -370,12 +370,12 @@ func (b *Backend) EstimateGas( } // DoCall performs a simulated call operation through the evmtypes. It returns the -// estimated gas used on the operation or an error if fails. +// EthCallResponse containing the result of the call or an error if fails. func (b *Backend) DoCall( args evmtypes.TransactionArgs, blockNr rpctypes.BlockNumber, overrides *json.RawMessage, -) (*evmtypes.MsgEthereumTxResponse, error) { +) (*evmtypes.EthCallResponse, error) { bz, err := json.Marshal(&args) if err != nil { return nil, err diff --git a/rpc/backend/call_tx_test.go b/rpc/backend/call_tx_test.go index dd1a377913..ab84b22f9e 100644 --- a/rpc/backend/call_tx_test.go +++ b/rpc/backend/call_tx_test.go @@ -398,7 +398,7 @@ func (suite *BackendTestSuite) TestDoCall() { registerMock func() blockNum rpctypes.BlockNumber callArgs evmtypes.TransactionArgs - expEthTx *evmtypes.MsgEthereumTxResponse + expEthTx *evmtypes.EthCallResponse expPass bool }{ { @@ -412,7 +412,7 @@ func (suite *BackendTestSuite) TestDoCall() { }, rpctypes.BlockNumber(1), callArgs, - &evmtypes.MsgEthereumTxResponse{}, + &evmtypes.EthCallResponse{}, false, }, { @@ -426,7 +426,7 @@ func (suite *BackendTestSuite) TestDoCall() { }, rpctypes.BlockNumber(1), callArgs, - &evmtypes.MsgEthereumTxResponse{}, + &evmtypes.EthCallResponse{}, true, }, } diff --git a/rpc/backend/evm_query_client_test.go b/rpc/backend/evm_query_client_test.go index 0b73443436..e466b2017e 100644 --- a/rpc/backend/evm_query_client_test.go +++ b/rpc/backend/evm_query_client_test.go @@ -190,7 +190,7 @@ func TestRegisterParamsError(t *testing.T) { func RegisterEthCall(queryClient *mocks.EVMQueryClient, request *evmtypes.EthCallRequest) { ctx, _ := context.WithCancel(rpc.ContextWithHeight(1)) queryClient.On("EthCall", ctx, request). - Return(&evmtypes.MsgEthereumTxResponse{}, nil) + Return(&evmtypes.EthCallResponse{}, nil) } func RegisterEthCallError(queryClient *mocks.EVMQueryClient, request *evmtypes.EthCallRequest) { diff --git a/rpc/backend/mocks/evm_query_client.go b/rpc/backend/mocks/evm_query_client.go index dd9e137ec1..34b21e5156 100644 --- a/rpc/backend/mocks/evm_query_client.go +++ b/rpc/backend/mocks/evm_query_client.go @@ -277,7 +277,7 @@ func (_m *EVMQueryClient) EstimateGas(ctx context.Context, in *types.EthCallRequ } // EthCall provides a mock function with given fields: ctx, in, opts -func (_m *EVMQueryClient) EthCall(ctx context.Context, in *types.EthCallRequest, opts ...grpc.CallOption) (*types.MsgEthereumTxResponse, error) { +func (_m *EVMQueryClient) EthCall(ctx context.Context, in *types.EthCallRequest, opts ...grpc.CallOption) (*types.EthCallResponse, error) { _va := make([]interface{}, len(opts)) for _i := range opts { _va[_i] = opts[_i] @@ -291,16 +291,16 @@ func (_m *EVMQueryClient) EthCall(ctx context.Context, in *types.EthCallRequest, panic("no return value specified for EthCall") } - var r0 *types.MsgEthereumTxResponse + var r0 *types.EthCallResponse var r1 error - if rf, ok := ret.Get(0).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) (*types.MsgEthereumTxResponse, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) (*types.EthCallResponse, error)); ok { return rf(ctx, in, opts...) } - if rf, ok := ret.Get(0).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) *types.MsgEthereumTxResponse); ok { + if rf, ok := ret.Get(0).(func(context.Context, *types.EthCallRequest, ...grpc.CallOption) *types.EthCallResponse); ok { r0 = rf(ctx, in, opts...) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*types.MsgEthereumTxResponse) + r0 = ret.Get(0).(*types.EthCallResponse) } } diff --git a/x/evm/keeper/grpc_query.go b/x/evm/keeper/grpc_query.go index afd205b4f0..7d76704450 100644 --- a/x/evm/keeper/grpc_query.go +++ b/x/evm/keeper/grpc_query.go @@ -230,7 +230,7 @@ func (k Keeper) Params(c context.Context, _ *types.QueryParamsRequest) (*types.Q } // EthCall implements eth_call rpc api. -func (k Keeper) EthCall(c context.Context, req *types.EthCallRequest) (*types.MsgEthereumTxResponse, error) { +func (k Keeper) EthCall(c context.Context, req *types.EthCallRequest) (*types.EthCallResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "empty request") } @@ -286,7 +286,7 @@ func (k Keeper) EthCall(c context.Context, req *types.EthCallRequest) (*types.Ms return nil, status.Error(codes.Internal, err.Error()) } - return res, nil + return res.ToEthCallResponse(), nil } // EstimateGas implements eth_estimateGas rpc api. @@ -386,7 +386,7 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type // so we don't wrap them with the gRPC status code // Create a helper to check if a gas allowance results in an executable transaction - executable := func(gas uint64) (vmError bool, rsp *types.MsgEthereumTxResponse, err error) { + executable := func(gas uint64) (vmError bool, rsp *types.EVMResult, err error) { // update the message with the new gas value msg.GasLimit = gas diff --git a/x/evm/keeper/msg_server.go b/x/evm/keeper/msg_server.go index 54ac4a7633..61ca6243b3 100644 --- a/x/evm/keeper/msg_server.go +++ b/x/evm/keeper/msg_server.go @@ -55,7 +55,7 @@ func (k *Keeper) EthereumTx(goCtx context.Context, msg *types.MsgEthereumTx) (*t labels = append(labels, telemetry.NewLabel("execution", "call")) } - response, err := k.ApplyTransaction(ctx, msg) + evmResult, err := k.ApplyTransaction(ctx, msg) if err != nil { return nil, errorsmod.Wrap(err, "failed to apply transaction") } @@ -67,10 +67,10 @@ func (k *Keeper) EthereumTx(goCtx context.Context, msg *types.MsgEthereumTx) (*t labels, ) - if response.GasUsed != 0 { + if evmResult.GasUsed != 0 { telemetry.IncrCounterWithLabels( []string{"tx", "msg", "ethereum_tx", "gas_used", "total"}, - float32(response.GasUsed), + float32(evmResult.GasUsed), labels, ) @@ -80,7 +80,7 @@ func (k *Keeper) EthereumTx(goCtx context.Context, msg *types.MsgEthereumTx) (*t if err != nil { k.Logger(ctx).Error("failed to cast gas to int64", "error", err) } - gasUsed, err := ethermint.SafeInt64(response.GasUsed) + gasUsed, err := ethermint.SafeInt64(evmResult.GasUsed) if err != nil { k.Logger(ctx).Error("failed to cast gasUsed to int64", "error", err) } @@ -98,9 +98,9 @@ func (k *Keeper) EthereumTx(goCtx context.Context, msg *types.MsgEthereumTx) (*t attrs := []sdk.Attribute{ sdk.NewAttribute(sdk.AttributeKeyAmount, tx.Value().String()), // add event for ethereum transaction hash format - sdk.NewAttribute(types.AttributeKeyEthereumTxHash, response.Hash), + sdk.NewAttribute(types.AttributeKeyEthereumTxHash, evmResult.Hash), // add event for eth tx gas used, we can't get it from cosmos tx result when it contains multiple eth tx msgs. - sdk.NewAttribute(types.AttributeKeyTxGasUsed, strconv.FormatUint(response.GasUsed, 10)), + sdk.NewAttribute(types.AttributeKeyTxGasUsed, strconv.FormatUint(evmResult.GasUsed, 10)), } if len(ctx.TxBytes()) > 0 { @@ -113,8 +113,8 @@ func (k *Keeper) EthereumTx(goCtx context.Context, msg *types.MsgEthereumTx) (*t attrs = append(attrs, sdk.NewAttribute(types.AttributeKeyRecipient, types.HexAddress(to.Bytes()))) } - if response.Failed() { - attrs = append(attrs, sdk.NewAttribute(types.AttributeKeyEthereumTxFailed, response.VmError)) + if evmResult.Failed() { + attrs = append(attrs, sdk.NewAttribute(types.AttributeKeyEthereumTxFailed, evmResult.VmError)) } // emit events @@ -131,7 +131,9 @@ func (k *Keeper) EthereumTx(goCtx context.Context, msg *types.MsgEthereumTx) (*t ), }) - return response, nil + msgResponse := evmResult.ToMsgResponse() + + return msgResponse, nil } // UpdateParams implements the gRPC MsgServer interface. When an UpdateParams diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index e10ce8f447..142bf5d0b6 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -165,7 +165,7 @@ func (k Keeper) GetHashFn(ctx sdk.Context) vm.GetHashFunc { // returning. // // For relevant discussion see: https://github.com/cosmos/cosmos-sdk/discussions/9072 -func (k *Keeper) ApplyTransaction(ctx sdk.Context, msgEth *types.MsgEthereumTx) (*types.MsgEthereumTxResponse, error) { +func (k *Keeper) ApplyTransaction(ctx sdk.Context, msgEth *types.MsgEthereumTx) (*types.EVMResult, error) { ethTx := msgEth.AsTransaction() cfg, err := k.EVMConfig(ctx, k.eip155ChainID, ethTx.Hash()) if err != nil { @@ -258,11 +258,12 @@ func (k *Keeper) ApplyTransaction(ctx sdk.Context, msgEth *types.MsgEthereumTx) // reset the gas meter for current cosmos transaction k.ResetGasMeterAndConsumeGas(ctx, totalGasUsed) + return res, nil } // ApplyMessage calls ApplyMessageWithConfig with an empty TxConfig. -func (k *Keeper) ApplyMessage(ctx sdk.Context, msg *core.Message, tracer *tracing.Hooks, commit bool) (*types.MsgEthereumTxResponse, error) { +func (k *Keeper) ApplyMessage(ctx sdk.Context, msg *core.Message, tracer *tracing.Hooks, commit bool) (*types.EVMResult, error) { cfg, err := k.EVMConfig(ctx, k.eip155ChainID, common.Hash{}) if err != nil { return nil, errorsmod.Wrap(err, "failed to load evm config") @@ -273,6 +274,7 @@ func (k *Keeper) ApplyMessage(ctx sdk.Context, msg *core.Message, tracer *tracin if err != nil { return nil, err } + return result, nil } @@ -328,7 +330,7 @@ func (k *Keeper) ApplyMessageWithConfig( msg *core.Message, cfg *EVMConfig, commit bool, -) (result *types.MsgEthereumTxResponse, err error) { +) (result *types.EVMResult, err error) { var ( ret []byte // return bytes from evm execution vmErr error // vm errors do not effect consensus and are therefore not assigned to err @@ -520,7 +522,7 @@ func (k *Keeper) ApplyMessageWithConfig( } } - return &types.MsgEthereumTxResponse{ + return &types.EVMResult{ GasUsed: gasUsed, VmError: vmError, Ret: ret, diff --git a/x/evm/types/evm_result.go b/x/evm/types/evm_result.go new file mode 100644 index 0000000000..b9fde709e8 --- /dev/null +++ b/x/evm/types/evm_result.go @@ -0,0 +1,71 @@ +package types + +// EVMResult is the internal result of an EVM execution. +// It contains all the data from MsgEthereumTxResponse plus additional +// query-only fields that should NOT be included in consensus. +// +// IMPORTANT: This struct is used internally for queries (eth_call, eth_estimateGas). +// For transaction execution that affects consensus, use ToMsgResponse() to get +// the consensus-safe MsgEthereumTxResponse. +type EVMResult struct { + // Consensus fields - these are included in MsgEthereumTxResponse + // and affect the app hash through ExecTxResult.Data + + // Hash is the ethereum transaction hash in hex format + Hash string + // Logs contains the transaction hash and the proto-compatible ethereum logs + Logs []*Log + // Ret is the returned data from evm function (result or data supplied with revert opcode) + Ret []byte + // VmError is the error returned by vm execution + VmError string + // GasUsed specifies how much gas was consumed by the transaction (after minGasMultiplier adjustment) + GasUsed uint64 + // BlockHash is the block hash for json-rpc to use + BlockHash []byte + + // Query-only fields - these are NOT included in MsgEthereumTxResponse + // and do NOT affect consensus. They are only used for queries. + + // ExecutionGasUsed is the actual gas consumed during EVM execution, + // before the minGasMultiplier adjustment. This is used for gas estimation + // in eth_estimateGas queries only. + ExecutionGasUsed uint64 +} + +// ToMsgResponse converts EVMResult to MsgEthereumTxResponse for consensus. +// This method strips out query-only fields (like ExecutionGasUsed) that should +// not be included in the transaction result that gets hashed into LastResultsHash. +// +// IMPORTANT: Always use this method when returning results from transaction execution +// (ApplyTransaction). Never include query-only fields in the response that goes +// through the message service router. +func (r *EVMResult) ToMsgResponse() *MsgEthereumTxResponse { + return &MsgEthereumTxResponse{ + Hash: r.Hash, + Logs: r.Logs, + Ret: r.Ret, + VmError: r.VmError, + GasUsed: r.GasUsed, + BlockHash: r.BlockHash, + } +} + +// ToEthCallResponse converts EVMResult to EthCallResponse for query responses. +// This is used for eth_call queries and is separate from MsgEthereumTxResponse +// which is used for transaction execution and affects consensus. +func (r *EVMResult) ToEthCallResponse() *EthCallResponse { + return &EthCallResponse{ + Hash: r.Hash, + Logs: r.Logs, + Ret: r.Ret, + VmError: r.VmError, + GasUsed: r.GasUsed, + BlockHash: r.BlockHash, + } +} + +// Failed returns true if the EVM execution failed +func (r *EVMResult) Failed() bool { + return len(r.VmError) > 0 +} diff --git a/x/evm/types/evm_result_test.go b/x/evm/types/evm_result_test.go new file mode 100644 index 0000000000..1ebcc2e788 --- /dev/null +++ b/x/evm/types/evm_result_test.go @@ -0,0 +1,142 @@ +package types + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestEVMResult_ToMsgResponse(t *testing.T) { + logs := []*Log{ + { + Address: "0x1234567890abcdef1234567890abcdef12345678", + Topics: []string{"0xabcd"}, + Data: []byte("test data"), + }, + } + blockHash := []byte("block_hash_bytes") + + result := &EVMResult{ + Hash: "0xabc123", + Logs: logs, + Ret: []byte("return data"), + VmError: "", + GasUsed: 21000, + BlockHash: blockHash, + ExecutionGasUsed: 20000, + } + + msgResponse := result.ToMsgResponse() + + require.Equal(t, result.Hash, msgResponse.Hash) + require.Equal(t, result.Logs, msgResponse.Logs) + require.Equal(t, result.Ret, msgResponse.Ret) + require.Equal(t, result.VmError, msgResponse.VmError) + require.Equal(t, result.GasUsed, msgResponse.GasUsed) + require.Equal(t, result.BlockHash, msgResponse.BlockHash) +} + +func TestEVMResult_ToEthCallResponse(t *testing.T) { + logs := []*Log{ + { + Address: "0x1234567890abcdef1234567890abcdef12345678", + Topics: []string{"0xabcd"}, + Data: []byte("test data"), + }, + } + blockHash := []byte("block_hash_bytes") + + result := &EVMResult{ + Hash: "0xabc123", + Logs: logs, + Ret: []byte("return data"), + VmError: "execution reverted", + GasUsed: 21000, + BlockHash: blockHash, + ExecutionGasUsed: 20000, + } + + ethCallResponse := result.ToEthCallResponse() + + require.Equal(t, result.Hash, ethCallResponse.Hash) + require.Equal(t, result.Logs, ethCallResponse.Logs) + require.Equal(t, result.Ret, ethCallResponse.Ret) + require.Equal(t, result.VmError, ethCallResponse.VmError) + require.Equal(t, result.GasUsed, ethCallResponse.GasUsed) + require.Equal(t, result.BlockHash, ethCallResponse.BlockHash) +} + +func TestEVMResult_Failed(t *testing.T) { + testCases := []struct { + name string + vmError string + expected bool + }{ + { + name: "no error - success", + vmError: "", + expected: false, + }, + { + name: "with error - failed", + vmError: "execution reverted", + expected: true, + }, + { + name: "out of gas error", + vmError: "out of gas", + expected: true, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + result := &EVMResult{ + VmError: tc.vmError, + } + require.Equal(t, tc.expected, result.Failed()) + }) + } +} + +func TestEVMResult_ToMsgResponse_NilLogs(t *testing.T) { + result := &EVMResult{ + Hash: "0xabc123", + Logs: nil, + Ret: nil, + VmError: "", + GasUsed: 21000, + BlockHash: nil, + ExecutionGasUsed: 20000, + } + + msgResponse := result.ToMsgResponse() + + require.Equal(t, result.Hash, msgResponse.Hash) + require.Nil(t, msgResponse.Logs) + require.Nil(t, msgResponse.Ret) + require.Equal(t, result.VmError, msgResponse.VmError) + require.Equal(t, result.GasUsed, msgResponse.GasUsed) + require.Nil(t, msgResponse.BlockHash) +} + +func TestEVMResult_ToEthCallResponse_NilLogs(t *testing.T) { + result := &EVMResult{ + Hash: "0xabc123", + Logs: nil, + Ret: nil, + VmError: "", + GasUsed: 21000, + BlockHash: nil, + ExecutionGasUsed: 20000, + } + + ethCallResponse := result.ToEthCallResponse() + + require.Equal(t, result.Hash, ethCallResponse.Hash) + require.Nil(t, ethCallResponse.Logs) + require.Nil(t, ethCallResponse.Ret) + require.Equal(t, result.VmError, ethCallResponse.VmError) + require.Equal(t, result.GasUsed, ethCallResponse.GasUsed) + require.Nil(t, ethCallResponse.BlockHash) +} diff --git a/x/evm/types/query.pb.go b/x/evm/types/query.pb.go index 7d7638a00b..073d41ae98 100644 --- a/x/evm/types/query.pb.go +++ b/x/evm/types/query.pb.go @@ -869,6 +869,98 @@ func (m *EthCallRequest) GetOverrides() []byte { return nil } +// EthCallResponse defines EthCall response +type EthCallResponse struct { + // hash of the ethereum transaction in hex format. + // This hash differs from the Tendermint sha256 hash of the transaction bytes. + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + // logs contains the transaction hash and the proto-compatible ethereum logs. + Logs []*Log `protobuf:"bytes,2,rep,name=logs,proto3" json:"logs,omitempty"` + // ret is the returned data from evm function (result or data supplied with revert opcode) + Ret []byte `protobuf:"bytes,3,opt,name=ret,proto3" json:"ret,omitempty"` + // vm_error is the error returned by vm execution + VmError string `protobuf:"bytes,4,opt,name=vm_error,json=vmError,proto3" json:"vm_error,omitempty"` + // gas_used specifies how much gas was consumed by the transaction + GasUsed uint64 `protobuf:"varint,5,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"` + // include the block hash for json-rpc to use + BlockHash []byte `protobuf:"bytes,6,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` +} + +func (m *EthCallResponse) Reset() { *m = EthCallResponse{} } +func (m *EthCallResponse) String() string { return proto.CompactTextString(m) } +func (*EthCallResponse) ProtoMessage() {} +func (*EthCallResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e15a877459347994, []int{17} +} +func (m *EthCallResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EthCallResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EthCallResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EthCallResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_EthCallResponse.Merge(m, src) +} +func (m *EthCallResponse) XXX_Size() int { + return m.Size() +} +func (m *EthCallResponse) XXX_DiscardUnknown() { + xxx_messageInfo_EthCallResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_EthCallResponse proto.InternalMessageInfo + +func (m *EthCallResponse) GetHash() string { + if m != nil { + return m.Hash + } + return "" +} + +func (m *EthCallResponse) GetLogs() []*Log { + if m != nil { + return m.Logs + } + return nil +} + +func (m *EthCallResponse) GetRet() []byte { + if m != nil { + return m.Ret + } + return nil +} + +func (m *EthCallResponse) GetVmError() string { + if m != nil { + return m.VmError + } + return "" +} + +func (m *EthCallResponse) GetGasUsed() uint64 { + if m != nil { + return m.GasUsed + } + return 0 +} + +func (m *EthCallResponse) GetBlockHash() []byte { + if m != nil { + return m.BlockHash + } + return nil +} + // EstimateGasResponse defines EstimateGas response type EstimateGasResponse struct { // gas returns the estimated gas @@ -884,7 +976,7 @@ func (m *EstimateGasResponse) Reset() { *m = EstimateGasResponse{} } func (m *EstimateGasResponse) String() string { return proto.CompactTextString(m) } func (*EstimateGasResponse) ProtoMessage() {} func (*EstimateGasResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e15a877459347994, []int{17} + return fileDescriptor_e15a877459347994, []int{18} } func (m *EstimateGasResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -961,7 +1053,7 @@ func (m *QueryTraceTxRequest) Reset() { *m = QueryTraceTxRequest{} } func (m *QueryTraceTxRequest) String() string { return proto.CompactTextString(m) } func (*QueryTraceTxRequest) ProtoMessage() {} func (*QueryTraceTxRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e15a877459347994, []int{18} + return fileDescriptor_e15a877459347994, []int{19} } func (m *QueryTraceTxRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1056,7 +1148,7 @@ func (m *QueryTraceTxResponse) Reset() { *m = QueryTraceTxResponse{} } func (m *QueryTraceTxResponse) String() string { return proto.CompactTextString(m) } func (*QueryTraceTxResponse) ProtoMessage() {} func (*QueryTraceTxResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e15a877459347994, []int{19} + return fileDescriptor_e15a877459347994, []int{20} } func (m *QueryTraceTxResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1116,7 +1208,7 @@ func (m *QueryTraceCallRequest) Reset() { *m = QueryTraceCallRequest{} } func (m *QueryTraceCallRequest) String() string { return proto.CompactTextString(m) } func (*QueryTraceCallRequest) ProtoMessage() {} func (*QueryTraceCallRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e15a877459347994, []int{20} + return fileDescriptor_e15a877459347994, []int{21} } func (m *QueryTraceCallRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1211,7 +1303,7 @@ func (m *QueryTraceCallResponse) Reset() { *m = QueryTraceCallResponse{} func (m *QueryTraceCallResponse) String() string { return proto.CompactTextString(m) } func (*QueryTraceCallResponse) ProtoMessage() {} func (*QueryTraceCallResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e15a877459347994, []int{21} + return fileDescriptor_e15a877459347994, []int{22} } func (m *QueryTraceCallResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1269,7 +1361,7 @@ func (m *QueryTraceBlockRequest) Reset() { *m = QueryTraceBlockRequest{} func (m *QueryTraceBlockRequest) String() string { return proto.CompactTextString(m) } func (*QueryTraceBlockRequest) ProtoMessage() {} func (*QueryTraceBlockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e15a877459347994, []int{22} + return fileDescriptor_e15a877459347994, []int{23} } func (m *QueryTraceBlockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1357,7 +1449,7 @@ func (m *QueryTraceBlockResponse) Reset() { *m = QueryTraceBlockResponse func (m *QueryTraceBlockResponse) String() string { return proto.CompactTextString(m) } func (*QueryTraceBlockResponse) ProtoMessage() {} func (*QueryTraceBlockResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e15a877459347994, []int{23} + return fileDescriptor_e15a877459347994, []int{24} } func (m *QueryTraceBlockResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1402,7 +1494,7 @@ func (m *QueryBaseFeeRequest) Reset() { *m = QueryBaseFeeRequest{} } func (m *QueryBaseFeeRequest) String() string { return proto.CompactTextString(m) } func (*QueryBaseFeeRequest) ProtoMessage() {} func (*QueryBaseFeeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e15a877459347994, []int{24} + return fileDescriptor_e15a877459347994, []int{25} } func (m *QueryBaseFeeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1441,7 +1533,7 @@ func (m *QueryBaseFeeResponse) Reset() { *m = QueryBaseFeeResponse{} } func (m *QueryBaseFeeResponse) String() string { return proto.CompactTextString(m) } func (*QueryBaseFeeResponse) ProtoMessage() {} func (*QueryBaseFeeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e15a877459347994, []int{25} + return fileDescriptor_e15a877459347994, []int{26} } func (m *QueryBaseFeeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1480,7 +1572,7 @@ func (m *CreateAccessListResponse) Reset() { *m = CreateAccessListRespon func (m *CreateAccessListResponse) String() string { return proto.CompactTextString(m) } func (*CreateAccessListResponse) ProtoMessage() {} func (*CreateAccessListResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e15a877459347994, []int{26} + return fileDescriptor_e15a877459347994, []int{27} } func (m *CreateAccessListResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1534,6 +1626,7 @@ func init() { proto.RegisterType((*QueryParamsRequest)(nil), "ethermint.evm.v1.QueryParamsRequest") proto.RegisterType((*QueryParamsResponse)(nil), "ethermint.evm.v1.QueryParamsResponse") proto.RegisterType((*EthCallRequest)(nil), "ethermint.evm.v1.EthCallRequest") + proto.RegisterType((*EthCallResponse)(nil), "ethermint.evm.v1.EthCallResponse") proto.RegisterType((*EstimateGasResponse)(nil), "ethermint.evm.v1.EstimateGasResponse") proto.RegisterType((*QueryTraceTxRequest)(nil), "ethermint.evm.v1.QueryTraceTxRequest") proto.RegisterType((*QueryTraceTxResponse)(nil), "ethermint.evm.v1.QueryTraceTxResponse") @@ -1549,109 +1642,112 @@ func init() { func init() { proto.RegisterFile("ethermint/evm/v1/query.proto", fileDescriptor_e15a877459347994) } var fileDescriptor_e15a877459347994 = []byte{ - // 1621 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4f, 0x6f, 0x13, 0x47, - 0x1b, 0xcf, 0xc6, 0x4e, 0xec, 0x8c, 0x03, 0xf8, 0x1d, 0x92, 0x17, 0xc7, 0x6f, 0x62, 0x87, 0x0d, - 0xf9, 0x4b, 0xd8, 0x7d, 0xe3, 0x22, 0xa4, 0x72, 0x29, 0x89, 0x15, 0x28, 0x25, 0x54, 0xd4, 0x8d, - 0x7a, 0xa8, 0x54, 0x59, 0xe3, 0xf5, 0xb0, 0x5e, 0xc5, 0xbb, 0x63, 0x76, 0xc6, 0xae, 0xc3, 0x9f, - 0x1e, 0xaa, 0x16, 0xa8, 0x90, 0x10, 0x52, 0xa5, 0x1e, 0x2b, 0xbe, 0x41, 0xbf, 0x06, 0x47, 0xa4, - 0xaa, 0x52, 0xd5, 0x03, 0xad, 0xa0, 0x87, 0x7e, 0x86, 0x9e, 0xaa, 0x99, 0x9d, 0xb5, 0xd7, 0x5e, - 0xaf, 0x1d, 0x2a, 0x2a, 0x21, 0xf5, 0xe4, 0x9d, 0x99, 0x67, 0x9e, 0xe7, 0xf7, 0xcc, 0xf3, 0xdf, - 0x60, 0x1e, 0xb3, 0x1a, 0x76, 0x6d, 0xcb, 0x61, 0x3a, 0x6e, 0xd9, 0x7a, 0x6b, 0x4b, 0xbf, 0xd5, - 0xc4, 0xee, 0xa1, 0xd6, 0x70, 0x09, 0x23, 0x30, 0xdd, 0x39, 0xd5, 0x70, 0xcb, 0xd6, 0x5a, 0x5b, - 0xd9, 0x0d, 0x83, 0x50, 0x9b, 0x50, 0xbd, 0x82, 0x28, 0xf6, 0x48, 0xf5, 0xd6, 0x56, 0x05, 0x33, - 0xb4, 0xa5, 0x37, 0x90, 0x69, 0x39, 0x88, 0x59, 0xc4, 0xf1, 0x6e, 0x67, 0xe7, 0x42, 0xbc, 0x59, - 0x5b, 0x1e, 0x65, 0x43, 0x47, 0x75, 0x62, 0xca, 0xb3, 0x85, 0xd0, 0x59, 0x03, 0xb9, 0xc8, 0xa6, - 0xf2, 0x78, 0x29, 0xcc, 0xd5, 0x45, 0x06, 0x2e, 0x1b, 0xc4, 0xb9, 0x69, 0xf9, 0x3c, 0x66, 0x4c, - 0x62, 0x12, 0xf1, 0xa9, 0xf3, 0x2f, 0xb9, 0x3b, 0x6f, 0x12, 0x62, 0xd6, 0xb1, 0x8e, 0x1a, 0x96, - 0x8e, 0x1c, 0x87, 0x30, 0x81, 0xd6, 0x67, 0x9c, 0x97, 0xa7, 0x62, 0x55, 0x69, 0xde, 0xd4, 0x99, - 0x65, 0x63, 0xca, 0x90, 0xdd, 0xf0, 0x08, 0xd4, 0x77, 0xc1, 0xc9, 0x8f, 0xb8, 0xc6, 0xdb, 0x86, - 0x41, 0x9a, 0x0e, 0x2b, 0xe1, 0x5b, 0x4d, 0x4c, 0x19, 0xcc, 0x80, 0x04, 0xaa, 0x56, 0x5d, 0x4c, - 0x69, 0x46, 0x59, 0x54, 0xd6, 0xa6, 0x4a, 0xfe, 0xf2, 0x62, 0xf2, 0xe1, 0xd3, 0xfc, 0xd8, 0x1f, - 0x4f, 0xf3, 0x63, 0xaa, 0x01, 0x66, 0x7a, 0xaf, 0xd2, 0x06, 0x71, 0x28, 0xe6, 0x77, 0x2b, 0xa8, - 0x8e, 0x1c, 0x03, 0xfb, 0x77, 0xe5, 0x12, 0xfe, 0x0f, 0x4c, 0x19, 0xa4, 0x8a, 0xcb, 0x35, 0x44, - 0x6b, 0x99, 0x71, 0x71, 0x96, 0xe4, 0x1b, 0xef, 0x23, 0x5a, 0x83, 0x33, 0x60, 0xc2, 0x21, 0xfc, - 0x52, 0x6c, 0x51, 0x59, 0x8b, 0x97, 0xbc, 0x85, 0xfa, 0x1e, 0x98, 0x13, 0x42, 0x8a, 0xc2, 0x44, - 0x7f, 0x03, 0xe5, 0x7d, 0x05, 0x64, 0x07, 0x71, 0x90, 0x60, 0x97, 0xc1, 0x71, 0xcf, 0xfa, 0xe5, - 0x5e, 0x4e, 0xc7, 0xbc, 0xdd, 0x6d, 0x6f, 0x13, 0x66, 0x41, 0x92, 0x72, 0xa1, 0x1c, 0xdf, 0xb8, - 0xc0, 0xd7, 0x59, 0x73, 0x16, 0xc8, 0xe3, 0x5a, 0x76, 0x9a, 0x76, 0x05, 0xbb, 0x52, 0x83, 0x63, - 0x72, 0xf7, 0x43, 0xb1, 0xa9, 0x5e, 0x03, 0xf3, 0x02, 0xc7, 0x27, 0xa8, 0x6e, 0x55, 0x11, 0x23, - 0x6e, 0x9f, 0x32, 0xa7, 0xc1, 0xb4, 0x41, 0x9c, 0x7e, 0x1c, 0x29, 0xbe, 0xb7, 0x1d, 0xd2, 0xea, - 0x91, 0x02, 0x16, 0x22, 0xb8, 0x49, 0xc5, 0x56, 0xc1, 0x09, 0x1f, 0x55, 0x2f, 0x47, 0x1f, 0xec, - 0x1b, 0x54, 0xcd, 0x77, 0xa2, 0x1d, 0xcf, 0xce, 0xaf, 0x63, 0x9e, 0xff, 0x4b, 0x27, 0xea, 0x5c, - 0x1d, 0xe5, 0x44, 0xea, 0x35, 0x29, 0xec, 0x63, 0x46, 0x5c, 0x64, 0x8e, 0x16, 0x06, 0xd3, 0x20, - 0x76, 0x80, 0x0f, 0xa5, 0xbf, 0xf1, 0xcf, 0x80, 0xf8, 0x4d, 0x29, 0xbe, 0xc3, 0x4c, 0x8a, 0x9f, - 0x01, 0x13, 0x2d, 0x54, 0x6f, 0xfa, 0xc2, 0xbd, 0x85, 0x7a, 0x01, 0xa4, 0xa5, 0x2b, 0x55, 0x5f, - 0x4b, 0xc9, 0x55, 0xf0, 0x9f, 0xc0, 0x3d, 0x29, 0x02, 0x82, 0x38, 0xf7, 0x7d, 0x71, 0x6b, 0xba, - 0x24, 0xbe, 0xd5, 0xdb, 0x00, 0x0a, 0xc2, 0xfd, 0xf6, 0x1e, 0x31, 0xa9, 0x2f, 0x02, 0x82, 0xb8, - 0x88, 0x18, 0x8f, 0xbf, 0xf8, 0x86, 0x97, 0x01, 0xe8, 0xe6, 0x26, 0xa1, 0x5b, 0xaa, 0xb0, 0xa2, - 0x79, 0x4e, 0xab, 0xf1, 0x44, 0xa6, 0x79, 0x39, 0x4f, 0x26, 0x32, 0xed, 0x46, 0xf7, 0xa9, 0x4a, - 0x81, 0x9b, 0x01, 0x90, 0xdf, 0x28, 0xf2, 0x61, 0x7d, 0xe1, 0x12, 0xe7, 0x3a, 0x88, 0xd7, 0x89, - 0xc9, 0xb5, 0x8b, 0xad, 0xa5, 0x0a, 0xb3, 0x5a, 0x7f, 0xfa, 0xd4, 0xf6, 0x88, 0x59, 0x12, 0x24, - 0xf0, 0xca, 0x00, 0x50, 0xab, 0x23, 0x41, 0x79, 0x72, 0x82, 0xa8, 0xd4, 0x19, 0xf9, 0x0e, 0x37, - 0x44, 0x92, 0x94, 0xb8, 0xd5, 0xeb, 0x12, 0xa0, 0xbf, 0x2b, 0x01, 0x5e, 0x00, 0x93, 0x5e, 0x32, - 0x15, 0x0f, 0x94, 0x2a, 0x64, 0xc2, 0x10, 0xbd, 0x1b, 0x3b, 0xf1, 0x67, 0x2f, 0xf2, 0x63, 0x25, - 0x49, 0xad, 0xfe, 0xa4, 0x80, 0xe3, 0xbb, 0xac, 0x56, 0x44, 0xf5, 0x7a, 0xe0, 0xa5, 0x91, 0x6b, - 0x52, 0xdf, 0x26, 0xfc, 0x1b, 0x9e, 0x02, 0x09, 0x13, 0xd1, 0xb2, 0x81, 0x1a, 0x32, 0x3c, 0x26, - 0x4d, 0x44, 0x8b, 0xa8, 0x01, 0x3f, 0x03, 0xe9, 0x86, 0x4b, 0x1a, 0x84, 0x62, 0xb7, 0x13, 0x62, - 0x3c, 0x3c, 0xa6, 0x77, 0x0a, 0x7f, 0xbe, 0xc8, 0x6b, 0xa6, 0xc5, 0x6a, 0xcd, 0x8a, 0x66, 0x10, - 0x5b, 0x97, 0xf5, 0xc5, 0xfb, 0x39, 0x47, 0xab, 0x07, 0x3a, 0x3b, 0x6c, 0x60, 0xaa, 0x15, 0xbb, - 0xb1, 0x5d, 0x3a, 0xe1, 0xf3, 0xf2, 0xe3, 0x72, 0x0e, 0x24, 0x8d, 0x1a, 0xb2, 0x9c, 0xb2, 0x55, - 0xcd, 0xc4, 0x17, 0x95, 0xb5, 0x58, 0x29, 0x21, 0xd6, 0x57, 0xab, 0x70, 0x1e, 0x4c, 0x91, 0x16, - 0x76, 0x5d, 0xab, 0x8a, 0x69, 0x66, 0x42, 0x60, 0xed, 0x6e, 0xa8, 0xfb, 0xe0, 0xe4, 0x2e, 0x65, - 0x96, 0x8d, 0x18, 0xbe, 0x82, 0xba, 0xcf, 0x94, 0x06, 0x31, 0x13, 0x79, 0xaa, 0xc5, 0x4b, 0xfc, - 0x93, 0xef, 0xb8, 0x98, 0x09, 0xad, 0xa6, 0x4b, 0xfc, 0x93, 0xcb, 0x6c, 0xd9, 0x65, 0xec, 0xba, - 0xc4, 0x8b, 0xf4, 0xa9, 0x52, 0xa2, 0x65, 0xef, 0xf2, 0xa5, 0xfa, 0x5d, 0xdc, 0x77, 0x0f, 0x5e, - 0x99, 0xf6, 0xdb, 0xfe, 0x93, 0x6d, 0x81, 0x98, 0x4d, 0x4d, 0xf9, 0xf4, 0xf9, 0xf0, 0xd3, 0x5f, - 0xa7, 0xe6, 0x2e, 0xdf, 0xc3, 0x4d, 0x7b, 0xbf, 0x5d, 0xe2, 0xb4, 0xf0, 0x12, 0x98, 0x0e, 0x96, - 0x37, 0x21, 0x29, 0x55, 0x58, 0x08, 0xdf, 0x15, 0xa2, 0x8a, 0x82, 0xa8, 0x94, 0x62, 0xdd, 0x05, - 0x2c, 0x82, 0xe9, 0x86, 0x8b, 0xab, 0xd8, 0xc0, 0x94, 0x12, 0x97, 0x66, 0xe2, 0xc2, 0x37, 0x47, - 0x4a, 0xef, 0xb9, 0xc4, 0x13, 0x6e, 0xa5, 0x4e, 0x8c, 0x03, 0x3f, 0xb5, 0x4d, 0x88, 0x47, 0x4e, - 0x89, 0x3d, 0x2f, 0xb1, 0xc1, 0x05, 0x00, 0x3c, 0x12, 0x11, 0x7f, 0x93, 0xe2, 0x45, 0xa6, 0xc4, - 0x8e, 0x28, 0x59, 0x45, 0xff, 0x98, 0x57, 0xd5, 0x4c, 0x42, 0xa8, 0x91, 0xd5, 0xbc, 0x92, 0xab, - 0xf9, 0x25, 0x57, 0xdb, 0xf7, 0x4b, 0xee, 0x4e, 0x92, 0xfb, 0xdf, 0x93, 0x5f, 0xf3, 0x8a, 0x64, - 0xc2, 0x4f, 0x06, 0xba, 0x51, 0xf2, 0x9f, 0x71, 0xa3, 0xa9, 0x5e, 0x37, 0x3a, 0x0f, 0x92, 0x3c, - 0x28, 0xcb, 0x37, 0x31, 0xce, 0x00, 0xae, 0xdb, 0xce, 0xdc, 0x2f, 0x2f, 0xf2, 0xb3, 0x1e, 0x7f, - 0x5a, 0x3d, 0xd0, 0x2c, 0xa2, 0xdb, 0x88, 0xd5, 0xb4, 0xab, 0x0e, 0xe3, 0xf9, 0x97, 0xe2, 0xcb, - 0x18, 0x7f, 0x10, 0x4f, 0x8e, 0xa7, 0x63, 0xa5, 0x24, 0x6b, 0x97, 0x2d, 0xa7, 0x8a, 0xdb, 0xea, - 0x86, 0x4c, 0xa1, 0x1d, 0xbf, 0xe8, 0xe6, 0xb7, 0x2a, 0x62, 0xc8, 0x8f, 0x25, 0xfe, 0xad, 0x3e, - 0x88, 0x81, 0xd9, 0x2e, 0xf1, 0xdb, 0x1a, 0x79, 0xfd, 0xfe, 0x19, 0x7f, 0x6d, 0xff, 0x7c, 0x4b, - 0x5c, 0x2b, 0x68, 0xfb, 0x64, 0x8f, 0xed, 0xd5, 0x4d, 0xf0, 0xdf, 0x7e, 0x43, 0x0c, 0xb1, 0xdb, - 0xe3, 0x58, 0x90, 0x7c, 0x87, 0x0b, 0x08, 0xc4, 0x3f, 0x6b, 0xfb, 0xd5, 0x61, 0x74, 0xfc, 0xb3, - 0x36, 0x7d, 0x03, 0xf1, 0xff, 0x6f, 0x0f, 0x5d, 0xf5, 0x1c, 0x38, 0x15, 0xb2, 0xc7, 0x10, 0xfb, - 0xcd, 0x76, 0x1a, 0x34, 0x11, 0xc3, 0x7e, 0x41, 0xdd, 0xeb, 0x34, 0x5f, 0x72, 0x5b, 0xb2, 0x08, - 0x26, 0x06, 0xe5, 0xa8, 0x89, 0x41, 0xd5, 0x40, 0xa6, 0xe8, 0x62, 0xc4, 0xf0, 0xb6, 0xc1, 0x53, - 0xec, 0x9e, 0x45, 0xd9, 0x30, 0x50, 0x85, 0x07, 0x27, 0xc0, 0x84, 0x10, 0x0f, 0xbf, 0x56, 0x40, - 0x42, 0xf6, 0xaf, 0x70, 0x39, 0xec, 0x06, 0x03, 0x06, 0x94, 0xec, 0xca, 0x28, 0x32, 0x4f, 0xb0, - 0x7a, 0xf6, 0xcb, 0x1f, 0x7f, 0xff, 0x76, 0x7c, 0x19, 0x2e, 0xe9, 0xa1, 0x11, 0x4b, 0xf6, 0xb0, - 0xfa, 0x1d, 0x69, 0xba, 0x7b, 0xf0, 0x7b, 0x05, 0x1c, 0xeb, 0x19, 0x13, 0xe0, 0xd9, 0x08, 0x31, - 0x83, 0xc6, 0x91, 0xec, 0xe6, 0xd1, 0x88, 0x25, 0xb2, 0x82, 0x40, 0xb6, 0x09, 0x37, 0xc2, 0xc8, - 0xfc, 0x89, 0x24, 0x04, 0xf0, 0x07, 0x05, 0xa4, 0xfb, 0x3b, 0x7e, 0xa8, 0x45, 0x88, 0x8d, 0x18, - 0x34, 0xb2, 0xfa, 0x91, 0xe9, 0x25, 0xd2, 0x8b, 0x02, 0xe9, 0x79, 0x58, 0x08, 0x23, 0x6d, 0xf9, - 0x77, 0xba, 0x60, 0x83, 0x43, 0xcc, 0x3d, 0x78, 0x5f, 0x01, 0x09, 0xd9, 0xdb, 0x47, 0x9a, 0xb6, - 0x77, 0x6c, 0x88, 0x34, 0x6d, 0xdf, 0x88, 0xa0, 0x6e, 0x0a, 0x58, 0x2b, 0xf0, 0x4c, 0x18, 0x96, - 0x9c, 0x15, 0x68, 0xe0, 0xe9, 0x1e, 0x29, 0x20, 0x21, 0xbb, 0xfc, 0x48, 0x20, 0xbd, 0x23, 0x45, - 0x24, 0x90, 0xbe, 0x61, 0x41, 0xdd, 0x12, 0x40, 0xce, 0xc2, 0xf5, 0x30, 0x10, 0xea, 0x91, 0x76, - 0x71, 0xe8, 0x77, 0x0e, 0xf0, 0xe1, 0x3d, 0x78, 0x1b, 0xc4, 0xf9, 0x30, 0x00, 0xd5, 0x48, 0x97, - 0xe9, 0x4c, 0x18, 0xd9, 0xa5, 0xa1, 0x34, 0x12, 0xc3, 0xba, 0xc0, 0xb0, 0x04, 0x4f, 0x0f, 0xf2, - 0xa6, 0x6a, 0xcf, 0x4b, 0x7c, 0x0e, 0x26, 0xbd, 0x7e, 0x18, 0x9e, 0x89, 0xe0, 0xdc, 0xd3, 0x76, - 0x67, 0x97, 0x47, 0x50, 0x49, 0x04, 0x8b, 0x02, 0x41, 0x16, 0x66, 0xf4, 0x88, 0xff, 0x3a, 0x60, - 0x1b, 0x24, 0x64, 0xbf, 0x0d, 0x17, 0xc3, 0x3c, 0x7b, 0x5b, 0xf1, 0xec, 0xea, 0xa8, 0x52, 0xe2, - 0xcb, 0x55, 0x85, 0xdc, 0x79, 0x98, 0x0d, 0xcb, 0xc5, 0xac, 0x56, 0x36, 0xb8, 0xb8, 0x2f, 0x40, - 0x2a, 0xd0, 0x12, 0x1f, 0x41, 0xfa, 0x00, 0x9d, 0x07, 0xf4, 0xd4, 0xea, 0x8a, 0x90, 0xbd, 0x08, - 0x73, 0x03, 0x64, 0x4b, 0xf2, 0x32, 0xef, 0xb4, 0xef, 0x82, 0x84, 0x6c, 0x8f, 0x22, 0x7d, 0xaf, - 0xb7, 0xad, 0x8e, 0xf4, 0xbd, 0xbe, 0x2e, 0x6b, 0x98, 0xf6, 0x5e, 0x8d, 0x65, 0x6d, 0xf8, 0x50, - 0x01, 0xa0, 0x5b, 0x28, 0xe0, 0xda, 0x30, 0xd6, 0xc1, 0xda, 0x9e, 0x5d, 0x3f, 0x02, 0xa5, 0xc4, - 0xb1, 0x2c, 0x70, 0xe4, 0xe1, 0x42, 0x14, 0x0e, 0x51, 0x35, 0xe1, 0x57, 0x0a, 0x98, 0xea, 0xb4, - 0x1c, 0x70, 0x75, 0x18, 0xff, 0xa0, 0x39, 0xd6, 0x46, 0x13, 0x4a, 0x1c, 0x67, 0x04, 0x8e, 0x1c, - 0x9c, 0x8f, 0xc2, 0x21, 0xfc, 0xe1, 0x2e, 0x4f, 0x4a, 0xa2, 0x6a, 0x0d, 0x49, 0x4a, 0xc1, 0x52, - 0x39, 0x24, 0x29, 0xf5, 0x94, 0xce, 0x61, 0xf6, 0xf0, 0x4b, 0x2a, 0x7c, 0xac, 0x80, 0x74, 0x7f, - 0xa5, 0x3c, 0x82, 0x4f, 0x6e, 0x84, 0x29, 0xa2, 0xea, 0xed, 0xb0, 0xdc, 0x68, 0x88, 0x3b, 0x3c, - 0x5f, 0x63, 0x4a, 0xcb, 0x75, 0x8b, 0xb2, 0x9d, 0x4b, 0xcf, 0x5e, 0xe6, 0x94, 0xe7, 0x2f, 0x73, - 0xca, 0x6f, 0x2f, 0x73, 0xca, 0x93, 0x57, 0xb9, 0xb1, 0xe7, 0xaf, 0x72, 0x63, 0x3f, 0xbf, 0xca, - 0x8d, 0x7d, 0xba, 0x12, 0xe8, 0x61, 0x70, 0x8b, 0xb7, 0x30, 0x5d, 0x7e, 0x6d, 0xc1, 0x51, 0xf4, - 0x31, 0x95, 0x49, 0xd1, 0x32, 0xbd, 0xf3, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd9, 0x63, 0xd2, - 0xcd, 0x7b, 0x15, 0x00, 0x00, + // 1671 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4f, 0x6f, 0xdb, 0x46, + 0x16, 0x37, 0x2d, 0xd9, 0x92, 0x47, 0x4e, 0xac, 0x9d, 0xd8, 0x1b, 0x59, 0x6b, 0x4b, 0x0e, 0x1d, + 0xff, 0x8d, 0x43, 0xae, 0xb5, 0x41, 0x80, 0xcd, 0x65, 0x63, 0x0b, 0x4e, 0x36, 0x1b, 0x67, 0x91, + 0xe5, 0xba, 0x3d, 0x14, 0x28, 0x84, 0x11, 0x39, 0xa1, 0x08, 0x4b, 0x1a, 0x85, 0x33, 0x52, 0xe5, + 0xfc, 0x29, 0xd0, 0xa2, 0x4d, 0x53, 0x04, 0x08, 0x02, 0x14, 0xe8, 0xb1, 0xc8, 0x37, 0xe8, 0xb1, + 0x5f, 0x21, 0xc7, 0x00, 0x45, 0x81, 0xa2, 0x87, 0xb4, 0x48, 0x7a, 0xe8, 0x67, 0xe8, 0xa9, 0x98, + 0xe1, 0x50, 0xa2, 0x44, 0x51, 0x72, 0x8a, 0x14, 0x08, 0xd0, 0x93, 0x38, 0x33, 0x6f, 0xde, 0xfb, + 0xbd, 0x79, 0xff, 0x05, 0x16, 0x30, 0xab, 0x60, 0xb7, 0xe6, 0xd4, 0x99, 0x8e, 0x5b, 0x35, 0xbd, + 0xb5, 0xad, 0xdf, 0x6e, 0x62, 0xf7, 0x48, 0x6b, 0xb8, 0x84, 0x11, 0x98, 0xee, 0x9c, 0x6a, 0xb8, + 0x55, 0xd3, 0x5a, 0xdb, 0xd9, 0x4d, 0x93, 0xd0, 0x1a, 0xa1, 0x7a, 0x19, 0x51, 0xec, 0x91, 0xea, + 0xad, 0xed, 0x32, 0x66, 0x68, 0x5b, 0x6f, 0x20, 0xdb, 0xa9, 0x23, 0xe6, 0x90, 0xba, 0x77, 0x3b, + 0x3b, 0x1f, 0xe2, 0xcd, 0xda, 0xf2, 0x28, 0x1b, 0x3a, 0xaa, 0x12, 0x5b, 0x9e, 0x2d, 0x86, 0xce, + 0x1a, 0xc8, 0x45, 0x35, 0x2a, 0x8f, 0x97, 0xc3, 0x5c, 0x5d, 0x64, 0xe2, 0x92, 0x49, 0xea, 0xb7, + 0x1c, 0x9f, 0xc7, 0xac, 0x4d, 0x6c, 0x22, 0x3e, 0x75, 0xfe, 0x25, 0x77, 0x17, 0x6c, 0x42, 0xec, + 0x2a, 0xd6, 0x51, 0xc3, 0xd1, 0x51, 0xbd, 0x4e, 0x98, 0x40, 0xeb, 0x33, 0xce, 0xcb, 0x53, 0xb1, + 0x2a, 0x37, 0x6f, 0xe9, 0xcc, 0xa9, 0x61, 0xca, 0x50, 0xad, 0xe1, 0x11, 0xa8, 0xff, 0x04, 0xa7, + 0xfe, 0xc7, 0x35, 0xde, 0x31, 0x4d, 0xd2, 0xac, 0x33, 0x03, 0xdf, 0x6e, 0x62, 0xca, 0x60, 0x06, + 0x24, 0x90, 0x65, 0xb9, 0x98, 0xd2, 0x8c, 0xb2, 0xa4, 0xac, 0x4f, 0x19, 0xfe, 0xf2, 0x52, 0xf2, + 0xe1, 0xd3, 0xfc, 0xd8, 0x2f, 0x4f, 0xf3, 0x63, 0xaa, 0x09, 0x66, 0x7b, 0xaf, 0xd2, 0x06, 0xa9, + 0x53, 0xcc, 0xef, 0x96, 0x51, 0x15, 0xd5, 0x4d, 0xec, 0xdf, 0x95, 0x4b, 0xf8, 0x37, 0x30, 0x65, + 0x12, 0x0b, 0x97, 0x2a, 0x88, 0x56, 0x32, 0xe3, 0xe2, 0x2c, 0xc9, 0x37, 0xfe, 0x8d, 0x68, 0x05, + 0xce, 0x82, 0x89, 0x3a, 0xe1, 0x97, 0x62, 0x4b, 0xca, 0x7a, 0xdc, 0xf0, 0x16, 0xea, 0xbf, 0xc0, + 0xbc, 0x10, 0x52, 0x14, 0x26, 0xfa, 0x1d, 0x28, 0x1f, 0x28, 0x20, 0x3b, 0x88, 0x83, 0x04, 0xbb, + 0x02, 0x4e, 0x7a, 0xd6, 0x2f, 0xf5, 0x72, 0x3a, 0xe1, 0xed, 0xee, 0x78, 0x9b, 0x30, 0x0b, 0x92, + 0x94, 0x0b, 0xe5, 0xf8, 0xc6, 0x05, 0xbe, 0xce, 0x9a, 0xb3, 0x40, 0x1e, 0xd7, 0x52, 0xbd, 0x59, + 0x2b, 0x63, 0x57, 0x6a, 0x70, 0x42, 0xee, 0xfe, 0x57, 0x6c, 0xaa, 0xd7, 0xc1, 0x82, 0xc0, 0xf1, + 0x2e, 0xaa, 0x3a, 0x16, 0x62, 0xc4, 0xed, 0x53, 0xe6, 0x0c, 0x98, 0x36, 0x49, 0xbd, 0x1f, 0x47, + 0x8a, 0xef, 0xed, 0x84, 0xb4, 0x7a, 0xa4, 0x80, 0xc5, 0x08, 0x6e, 0x52, 0xb1, 0x35, 0x30, 0xe3, + 0xa3, 0xea, 0xe5, 0xe8, 0x83, 0x7d, 0x83, 0xaa, 0xf9, 0x4e, 0xb4, 0xeb, 0xd9, 0xf9, 0x75, 0xcc, + 0xf3, 0x77, 0xe9, 0x44, 0x9d, 0xab, 0xa3, 0x9c, 0x48, 0xbd, 0x2e, 0x85, 0xfd, 0x9f, 0x11, 0x17, + 0xd9, 0xa3, 0x85, 0xc1, 0x34, 0x88, 0x1d, 0xe2, 0x23, 0xe9, 0x6f, 0xfc, 0x33, 0x20, 0x7e, 0x4b, + 0x8a, 0xef, 0x30, 0x93, 0xe2, 0x67, 0xc1, 0x44, 0x0b, 0x55, 0x9b, 0xbe, 0x70, 0x6f, 0xa1, 0x5e, + 0x04, 0x69, 0xe9, 0x4a, 0xd6, 0x6b, 0x29, 0xb9, 0x06, 0xfe, 0x12, 0xb8, 0x27, 0x45, 0x40, 0x10, + 0xe7, 0xbe, 0x2f, 0x6e, 0x4d, 0x1b, 0xe2, 0x5b, 0xbd, 0x03, 0xa0, 0x20, 0x3c, 0x68, 0xef, 0x13, + 0x9b, 0xfa, 0x22, 0x20, 0x88, 0x8b, 0x88, 0xf1, 0xf8, 0x8b, 0x6f, 0x78, 0x05, 0x80, 0x6e, 0x6e, + 0x12, 0xba, 0xa5, 0x0a, 0xab, 0x9a, 0xe7, 0xb4, 0x1a, 0x4f, 0x64, 0x9a, 0x97, 0xf3, 0x64, 0x22, + 0xd3, 0x6e, 0x76, 0x9f, 0xca, 0x08, 0xdc, 0x0c, 0x80, 0xfc, 0x5c, 0x91, 0x0f, 0xeb, 0x0b, 0x97, + 0x38, 0x37, 0x40, 0xbc, 0x4a, 0x6c, 0xae, 0x5d, 0x6c, 0x3d, 0x55, 0x98, 0xd3, 0xfa, 0xd3, 0xa7, + 0xb6, 0x4f, 0x6c, 0x43, 0x90, 0xc0, 0xab, 0x03, 0x40, 0xad, 0x8d, 0x04, 0xe5, 0xc9, 0x09, 0xa2, + 0x52, 0x67, 0xe5, 0x3b, 0xdc, 0x14, 0x49, 0x52, 0xe2, 0x56, 0x6f, 0x48, 0x80, 0xfe, 0xae, 0x04, + 0x78, 0x11, 0x4c, 0x7a, 0xc9, 0x54, 0x3c, 0x50, 0xaa, 0x90, 0x09, 0x43, 0xf4, 0x6e, 0xec, 0xc6, + 0x9f, 0xbd, 0xc8, 0x8f, 0x19, 0x92, 0x5a, 0xfd, 0x4e, 0x01, 0x27, 0xf7, 0x58, 0xa5, 0x88, 0xaa, + 0xd5, 0xc0, 0x4b, 0x23, 0xd7, 0xa6, 0xbe, 0x4d, 0xf8, 0x37, 0x3c, 0x0d, 0x12, 0x36, 0xa2, 0x25, + 0x13, 0x35, 0x64, 0x78, 0x4c, 0xda, 0x88, 0x16, 0x51, 0x03, 0xbe, 0x0f, 0xd2, 0x0d, 0x97, 0x34, + 0x08, 0xc5, 0x6e, 0x27, 0xc4, 0x78, 0x78, 0x4c, 0xef, 0x16, 0x7e, 0x7d, 0x91, 0xd7, 0x6c, 0x87, + 0x55, 0x9a, 0x65, 0xcd, 0x24, 0x35, 0x5d, 0xd6, 0x17, 0xef, 0xe7, 0x3c, 0xb5, 0x0e, 0x75, 0x76, + 0xd4, 0xc0, 0x54, 0x2b, 0x76, 0x63, 0xdb, 0x98, 0xf1, 0x79, 0xf9, 0x71, 0x39, 0x0f, 0x92, 0x66, + 0x05, 0x39, 0xf5, 0x92, 0x63, 0x65, 0xe2, 0x4b, 0xca, 0x7a, 0xcc, 0x48, 0x88, 0xf5, 0x35, 0x0b, + 0x2e, 0x80, 0x29, 0xd2, 0xc2, 0xae, 0xeb, 0x58, 0x98, 0x66, 0x26, 0x04, 0xd6, 0xee, 0x86, 0xfa, + 0x8d, 0x02, 0x66, 0x3a, 0x7a, 0x75, 0x9d, 0x2d, 0xe4, 0x42, 0xbe, 0x61, 0xc7, 0x47, 0x1b, 0x36, + 0x0d, 0x62, 0x2e, 0x66, 0x9e, 0x76, 0x06, 0xff, 0xe4, 0xe8, 0x5a, 0xb5, 0x12, 0x76, 0x5d, 0xe2, + 0x0a, 0x74, 0x53, 0x46, 0xa2, 0x55, 0xdb, 0xe3, 0x4b, 0x7e, 0xc4, 0x1f, 0xac, 0x49, 0xb1, 0x25, + 0xc0, 0xc5, 0x0d, 0xfe, 0x80, 0xef, 0x50, 0x6c, 0xc1, 0x45, 0x00, 0xca, 0x55, 0x62, 0x1e, 0x7a, + 0x15, 0x60, 0xd2, 0x43, 0x2e, 0x76, 0x78, 0x09, 0x50, 0x0f, 0xc0, 0xa9, 0x3d, 0xca, 0x9c, 0x1a, + 0x62, 0xf8, 0x2a, 0xea, 0x1a, 0x38, 0x0d, 0x62, 0x36, 0xf2, 0x8c, 0x12, 0x37, 0xf8, 0xa7, 0x8f, + 0x67, 0x7c, 0x30, 0x9e, 0x58, 0x0f, 0x1e, 0xf5, 0xcb, 0xb8, 0xef, 0xd8, 0xbc, 0xa6, 0x1e, 0xb4, + 0x7d, 0x63, 0x6f, 0x83, 0x58, 0x8d, 0xda, 0xd2, 0x69, 0xf2, 0x61, 0xf5, 0x6f, 0x50, 0x7b, 0x8f, + 0xef, 0xe1, 0x66, 0xed, 0xa0, 0x6d, 0x70, 0x5a, 0x78, 0x19, 0x4c, 0x07, 0x0b, 0xb3, 0x90, 0x94, + 0x2a, 0x2c, 0x86, 0xef, 0x0a, 0x51, 0x45, 0x41, 0x64, 0xa4, 0x58, 0x77, 0x01, 0x8b, 0x60, 0xba, + 0xe1, 0x62, 0x0b, 0x9b, 0x98, 0x52, 0xe2, 0xd2, 0x4c, 0x5c, 0x3c, 0xfe, 0x48, 0xe9, 0x3d, 0x97, + 0x78, 0xa9, 0xf0, 0x9e, 0x51, 0x26, 0xe5, 0x09, 0xe1, 0x1e, 0x29, 0xb1, 0xe7, 0xa5, 0xe4, 0x01, + 0x2f, 0x3d, 0x15, 0x78, 0x69, 0x58, 0xf4, 0x8f, 0x79, 0x3f, 0x90, 0x49, 0x08, 0x35, 0xb2, 0x9a, + 0xd7, 0x2c, 0x68, 0x7e, 0xb3, 0xa0, 0x1d, 0xf8, 0xcd, 0xc2, 0x6e, 0x92, 0x47, 0xce, 0x93, 0x1f, + 0xf3, 0x8a, 0x64, 0xc2, 0x4f, 0x06, 0x06, 0x40, 0xf2, 0x8f, 0x09, 0x80, 0xa9, 0xde, 0x00, 0xb8, + 0x00, 0x92, 0x3c, 0x9d, 0x94, 0x6e, 0x61, 0x9c, 0x01, 0x5c, 0xb7, 0xdd, 0xf9, 0x1f, 0x5e, 0xe4, + 0xe7, 0x3c, 0xfe, 0xd4, 0x3a, 0xd4, 0x1c, 0xa2, 0xd7, 0x10, 0xab, 0x68, 0xd7, 0xea, 0x8c, 0x57, + 0x0e, 0x8a, 0xaf, 0x60, 0xfc, 0x9f, 0x78, 0x72, 0x3c, 0x1d, 0x33, 0x92, 0xac, 0x5d, 0x72, 0xea, + 0x16, 0x6e, 0xab, 0x9b, 0x32, 0xf9, 0x77, 0xfc, 0xa2, 0x1b, 0x2c, 0x16, 0x62, 0xc8, 0xcf, 0x02, + 0xfc, 0x5b, 0xfd, 0x2c, 0x06, 0xe6, 0xba, 0xc4, 0x6f, 0x6b, 0xce, 0xe8, 0xf7, 0xcf, 0xf8, 0x6b, + 0xfb, 0xe7, 0x5b, 0xe2, 0x5a, 0x41, 0xdb, 0x27, 0x7b, 0x6c, 0xaf, 0x6e, 0x81, 0xbf, 0xf6, 0x1b, + 0x62, 0x88, 0xdd, 0x1e, 0xc7, 0x82, 0xe4, 0xbb, 0x5c, 0x40, 0x20, 0xfe, 0x59, 0xdb, 0xaf, 0x6b, + 0xa3, 0xe3, 0x9f, 0xb5, 0xe9, 0x1b, 0x88, 0xff, 0x3f, 0x7b, 0xe8, 0xaa, 0xe7, 0xc1, 0xe9, 0x90, + 0x3d, 0x86, 0xd8, 0x6f, 0xae, 0xd3, 0x5a, 0x8a, 0x18, 0xf6, 0x5b, 0x81, 0xfd, 0x4e, 0xdb, 0x28, + 0xb7, 0x25, 0x8b, 0x60, 0x62, 0x50, 0x8e, 0x9b, 0x18, 0x54, 0x0d, 0x64, 0x8a, 0x2e, 0x46, 0x0c, + 0xef, 0x98, 0x3c, 0xc5, 0xee, 0x3b, 0x94, 0x0d, 0x03, 0x55, 0xf8, 0x68, 0x06, 0x4c, 0x08, 0xf1, + 0xf0, 0x53, 0x05, 0x24, 0x64, 0xe7, 0x0d, 0x57, 0xc2, 0x6e, 0x30, 0x60, 0xb4, 0xca, 0xae, 0x8e, + 0x22, 0xf3, 0x04, 0xab, 0xe7, 0x3e, 0xfe, 0xf6, 0xe7, 0x2f, 0xc6, 0x57, 0xe0, 0xb2, 0x1e, 0x1a, + 0x0e, 0x65, 0xf7, 0xad, 0xdf, 0x95, 0xa6, 0xbb, 0x0f, 0xbf, 0x52, 0xc0, 0x89, 0x9e, 0x01, 0x07, + 0x9e, 0x8b, 0x10, 0x33, 0x68, 0x90, 0xca, 0x6e, 0x1d, 0x8f, 0x58, 0x22, 0x2b, 0x08, 0x64, 0x5b, + 0x70, 0x33, 0x8c, 0xcc, 0x9f, 0xa5, 0x42, 0x00, 0xbf, 0x56, 0x40, 0xba, 0x7f, 0x56, 0x81, 0x5a, + 0x84, 0xd8, 0x88, 0x11, 0x29, 0xab, 0x1f, 0x9b, 0x5e, 0x22, 0xbd, 0x24, 0x90, 0x5e, 0x80, 0x85, + 0x30, 0xd2, 0x96, 0x7f, 0xa7, 0x0b, 0x36, 0x38, 0x7e, 0xdd, 0x87, 0x0f, 0x14, 0x90, 0x90, 0x53, + 0x49, 0xa4, 0x69, 0x7b, 0x07, 0x9e, 0x48, 0xd3, 0xf6, 0x0d, 0x37, 0xea, 0x96, 0x80, 0xb5, 0x0a, + 0xcf, 0x86, 0x61, 0xc9, 0x29, 0x87, 0x06, 0x9e, 0xee, 0x91, 0x02, 0x12, 0x72, 0x3e, 0x89, 0x04, + 0xd2, 0x3b, 0x0c, 0x45, 0x02, 0xe9, 0x1b, 0x73, 0xd4, 0x6d, 0x01, 0xe4, 0x1c, 0xdc, 0x08, 0x03, + 0xa1, 0x1e, 0x69, 0x17, 0x87, 0x7e, 0xf7, 0x10, 0x1f, 0xdd, 0x87, 0x77, 0x40, 0x9c, 0x8f, 0x31, + 0x50, 0x8d, 0x74, 0x99, 0xce, 0x6c, 0x94, 0x5d, 0x1e, 0x4a, 0x23, 0x31, 0x6c, 0x08, 0x0c, 0xcb, + 0xf0, 0xcc, 0x20, 0x6f, 0xb2, 0x7a, 0x5e, 0xe2, 0x03, 0x30, 0xe9, 0x75, 0xf2, 0xf0, 0x6c, 0x04, + 0xe7, 0x9e, 0x81, 0x21, 0xbb, 0x32, 0x82, 0x4a, 0x22, 0x58, 0x12, 0x08, 0xb2, 0x30, 0xa3, 0x47, + 0xfc, 0x4b, 0x03, 0x5d, 0x90, 0x90, 0x1d, 0x35, 0x5c, 0x0a, 0xf3, 0xec, 0x1d, 0x22, 0xb2, 0x67, + 0x86, 0x50, 0x48, 0x89, 0xaa, 0x90, 0xb8, 0x00, 0xb3, 0x61, 0x89, 0x98, 0x55, 0x4a, 0x26, 0x17, + 0xf4, 0x21, 0x48, 0x05, 0x9a, 0xe1, 0x63, 0xc8, 0x1d, 0xa0, 0xed, 0x80, 0x6e, 0x5a, 0x5d, 0x15, + 0xb2, 0x97, 0x60, 0x6e, 0x80, 0x6c, 0x49, 0x5e, 0xe2, 0x3d, 0xf6, 0x3d, 0x90, 0x90, 0x8d, 0x51, + 0xa4, 0xd7, 0xf5, 0x36, 0xd4, 0x91, 0x5e, 0xd7, 0xd7, 0x5f, 0x0d, 0xd3, 0xde, 0xab, 0xae, 0xac, + 0x0d, 0x1f, 0x2a, 0x00, 0x74, 0x4b, 0x04, 0x5c, 0x1f, 0xc6, 0x3a, 0x58, 0xd5, 0xb3, 0x1b, 0xc7, + 0xa0, 0x94, 0x38, 0x56, 0x04, 0x8e, 0x3c, 0x5c, 0x8c, 0xc2, 0x21, 0xea, 0x25, 0xfc, 0x44, 0x01, + 0x53, 0x9d, 0x66, 0x03, 0xae, 0x0d, 0xe3, 0x1f, 0x34, 0xc7, 0xfa, 0x68, 0x42, 0x89, 0xe3, 0xac, + 0xc0, 0x91, 0x83, 0x0b, 0x51, 0x38, 0x84, 0x3f, 0xdc, 0xe3, 0xe9, 0x48, 0xd4, 0xab, 0x21, 0xe9, + 0x28, 0x58, 0x24, 0x87, 0xa4, 0xa3, 0x9e, 0xa2, 0x39, 0xcc, 0x1e, 0x7e, 0x31, 0x85, 0x8f, 0x15, + 0x90, 0xee, 0xaf, 0x91, 0xc7, 0xf0, 0xc9, 0xcd, 0x30, 0x45, 0x54, 0xa5, 0x1d, 0x96, 0x15, 0x4d, + 0x71, 0x87, 0x67, 0x6a, 0x4c, 0x69, 0xa9, 0xea, 0x50, 0xb6, 0x7b, 0xf9, 0xd9, 0xcb, 0x9c, 0xf2, + 0xfc, 0x65, 0x4e, 0xf9, 0xe9, 0x65, 0x4e, 0x79, 0xf2, 0x2a, 0x37, 0xf6, 0xfc, 0x55, 0x6e, 0xec, + 0xfb, 0x57, 0xb9, 0xb1, 0xf7, 0x56, 0x03, 0xdd, 0x0b, 0x6e, 0xf1, 0xe6, 0xa5, 0xcb, 0xaf, 0x2d, + 0x38, 0x8a, 0x0e, 0xa6, 0x3c, 0x29, 0x9a, 0xa5, 0x7f, 0xfc, 0x16, 0x00, 0x00, 0xff, 0xff, 0x56, + 0x27, 0x74, 0x2f, 0x2f, 0x16, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1683,7 +1779,7 @@ type QueryClient interface { // Params queries the parameters of x/evm module. Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) // EthCall implements the `eth_call` rpc api - EthCall(ctx context.Context, in *EthCallRequest, opts ...grpc.CallOption) (*MsgEthereumTxResponse, error) + EthCall(ctx context.Context, in *EthCallRequest, opts ...grpc.CallOption) (*EthCallResponse, error) // EstimateGas implements the `eth_estimateGas` rpc api EstimateGas(ctx context.Context, in *EthCallRequest, opts ...grpc.CallOption) (*EstimateGasResponse, error) // TraceTx implements the `debug_traceTransaction` rpc api @@ -1770,8 +1866,8 @@ func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts . return out, nil } -func (c *queryClient) EthCall(ctx context.Context, in *EthCallRequest, opts ...grpc.CallOption) (*MsgEthereumTxResponse, error) { - out := new(MsgEthereumTxResponse) +func (c *queryClient) EthCall(ctx context.Context, in *EthCallRequest, opts ...grpc.CallOption) (*EthCallResponse, error) { + out := new(EthCallResponse) err := c.cc.Invoke(ctx, "/ethermint.evm.v1.Query/EthCall", in, out, opts...) if err != nil { return nil, err @@ -1852,7 +1948,7 @@ type QueryServer interface { // Params queries the parameters of x/evm module. Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) // EthCall implements the `eth_call` rpc api - EthCall(context.Context, *EthCallRequest) (*MsgEthereumTxResponse, error) + EthCall(context.Context, *EthCallRequest) (*EthCallResponse, error) // EstimateGas implements the `eth_estimateGas` rpc api EstimateGas(context.Context, *EthCallRequest) (*EstimateGasResponse, error) // TraceTx implements the `debug_traceTransaction` rpc api @@ -1893,7 +1989,7 @@ func (*UnimplementedQueryServer) Code(ctx context.Context, req *QueryCodeRequest func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") } -func (*UnimplementedQueryServer) EthCall(ctx context.Context, req *EthCallRequest) (*MsgEthereumTxResponse, error) { +func (*UnimplementedQueryServer) EthCall(ctx context.Context, req *EthCallRequest) (*EthCallResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method EthCall not implemented") } func (*UnimplementedQueryServer) EstimateGas(ctx context.Context, req *EthCallRequest) (*EstimateGasResponse, error) { @@ -2836,6 +2932,76 @@ func (m *EthCallRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *EthCallResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EthCallResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EthCallResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.BlockHash) > 0 { + i -= len(m.BlockHash) + copy(dAtA[i:], m.BlockHash) + i = encodeVarintQuery(dAtA, i, uint64(len(m.BlockHash))) + i-- + dAtA[i] = 0x32 + } + if m.GasUsed != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.GasUsed)) + i-- + dAtA[i] = 0x28 + } + if len(m.VmError) > 0 { + i -= len(m.VmError) + copy(dAtA[i:], m.VmError) + i = encodeVarintQuery(dAtA, i, uint64(len(m.VmError))) + i-- + dAtA[i] = 0x22 + } + if len(m.Ret) > 0 { + i -= len(m.Ret) + copy(dAtA[i:], m.Ret) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Ret))) + i-- + dAtA[i] = 0x1a + } + if len(m.Logs) > 0 { + for iNdEx := len(m.Logs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Logs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Hash) > 0 { + i -= len(m.Hash) + copy(dAtA[i:], m.Hash) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Hash))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *EstimateGasResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -3594,6 +3760,40 @@ func (m *EthCallRequest) Size() (n int) { return n } +func (m *EthCallResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Hash) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if len(m.Logs) > 0 { + for _, e := range m.Logs { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + l = len(m.Ret) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.VmError) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + if m.GasUsed != 0 { + n += 1 + sovQuery(uint64(m.GasUsed)) + } + l = len(m.BlockHash) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + func (m *EstimateGasResponse) Size() (n int) { if m == nil { return 0 @@ -5514,6 +5714,241 @@ func (m *EthCallRequest) Unmarshal(dAtA []byte) error { } return nil } +func (m *EthCallResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EthCallResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EthCallResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hash", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Logs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Logs = append(m.Logs, &Log{}) + if err := m.Logs[len(m.Logs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ret", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ret = append(m.Ret[:0], dAtA[iNdEx:postIndex]...) + if m.Ret == nil { + m.Ret = []byte{} + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VmError", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VmError = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GasUsed", wireType) + } + m.GasUsed = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.GasUsed |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BlockHash", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BlockHash = append(m.BlockHash[:0], dAtA[iNdEx:postIndex]...) + if m.BlockHash == nil { + m.BlockHash = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *EstimateGasResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/evm/types/tx.pb.go b/x/evm/types/tx.pb.go index 944dd2d5cf..d12dd99aa3 100644 --- a/x/evm/types/tx.pb.go +++ b/x/evm/types/tx.pb.go @@ -381,9 +381,6 @@ type MsgEthereumTxResponse struct { GasUsed uint64 `protobuf:"varint,5,opt,name=gas_used,json=gasUsed,proto3" json:"gas_used,omitempty"` // include the block hash for json-rpc to use BlockHash []byte `protobuf:"bytes,6,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - // execution_gas_used specifies the actual gas consumed during EVM execution, - // before the minGasMultiplier adjustment. This is used for gas estimation. - ExecutionGasUsed uint64 `protobuf:"varint,7,opt,name=execution_gas_used,json=executionGasUsed,proto3" json:"execution_gas_used,omitempty"` } func (m *MsgEthereumTxResponse) Reset() { *m = MsgEthereumTxResponse{} } @@ -623,86 +620,85 @@ func init() { func init() { proto.RegisterFile("ethermint/evm/v1/tx.proto", fileDescriptor_f75ac0a12d075f21) } var fileDescriptor_f75ac0a12d075f21 = []byte{ - // 1260 bytes of a gzipped FileDescriptorProto + // 1241 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0xcf, 0x8f, 0xdb, 0xc4, - 0x17, 0x5f, 0x27, 0xce, 0x0f, 0x4f, 0xd2, 0x6d, 0xbf, 0xf3, 0xdd, 0x52, 0x27, 0xea, 0xc6, 0x69, - 0x0a, 0x25, 0x2d, 0x6c, 0x4c, 0x17, 0x54, 0xa9, 0x7b, 0x62, 0xdd, 0x5f, 0x14, 0xed, 0x8a, 0xca, - 0xdd, 0x5e, 0x00, 0x29, 0x9a, 0xb5, 0xa7, 0x8e, 0xd5, 0xd8, 0x63, 0x3c, 0x93, 0x90, 0xad, 0x84, - 0x54, 0xf5, 0xc4, 0x91, 0x8a, 0x7f, 0x80, 0x23, 0x82, 0x4b, 0x0f, 0x3d, 0x73, 0xae, 0x38, 0x55, - 0x70, 0x41, 0x55, 0x15, 0xd0, 0x16, 0xa9, 0x52, 0x6f, 0x70, 0xe6, 0x80, 0x66, 0xc6, 0xf9, 0x55, - 0x6f, 0xda, 0xb2, 0x12, 0x48, 0x48, 0x5c, 0x56, 0xf3, 0xe6, 0x7d, 0xde, 0x9b, 0x79, 0x9f, 0xcf, - 0x73, 0xe6, 0x2d, 0xa8, 0x60, 0xd6, 0xc1, 0x71, 0xe0, 0x87, 0xcc, 0xc4, 0xfd, 0xc0, 0xec, 0x9f, - 0x36, 0xd9, 0xa0, 0x15, 0xc5, 0x84, 0x11, 0x78, 0x68, 0xec, 0x6a, 0xe1, 0x7e, 0xd0, 0xea, 0x9f, - 0xae, 0xfe, 0x0f, 0x05, 0x7e, 0x48, 0x4c, 0xf1, 0x57, 0x82, 0xaa, 0x47, 0x1c, 0x42, 0x03, 0x42, - 0xcd, 0x80, 0x7a, 0x3c, 0x38, 0xa0, 0x5e, 0xe2, 0xa8, 0x48, 0x47, 0x5b, 0x58, 0xa6, 0x34, 0x12, - 0xd7, 0x92, 0x47, 0x3c, 0x22, 0xf7, 0xf9, 0x2a, 0xd9, 0x3d, 0xea, 0x11, 0xe2, 0x75, 0xb1, 0x89, - 0x22, 0xdf, 0x44, 0x61, 0x48, 0x18, 0x62, 0x3e, 0x09, 0x47, 0x31, 0x95, 0xc4, 0x2b, 0xac, 0xed, - 0xde, 0x75, 0x13, 0x85, 0x3b, 0x89, 0xeb, 0x78, 0xaa, 0x04, 0xe4, 0x38, 0x98, 0xd2, 0x36, 0xeb, - 0x45, 0x5d, 0x9c, 0x80, 0xaa, 0x29, 0x50, 0x97, 0x8c, 0xae, 0xba, 0x9c, 0xf2, 0x45, 0x28, 0x46, - 0xc1, 0xe8, 0xe8, 0x63, 0x69, 0x77, 0x8c, 0xfd, 0x90, 0x32, 0xd4, 0xed, 0x26, 0x90, 0x95, 0x14, - 0x84, 0x62, 0xd6, 0x76, 0x88, 0x8b, 0xdb, 0xa8, 0xc7, 0x3a, 0x24, 0xf6, 0x6f, 0x8a, 0x6a, 0x24, - 0xbc, 0x71, 0x2b, 0x03, 0x0e, 0x6c, 0x52, 0xef, 0x02, 0x0f, 0xc2, 0xbd, 0x60, 0x6b, 0x00, 0x9b, - 0x40, 0x75, 0x11, 0x43, 0xba, 0x52, 0x57, 0x9a, 0xa5, 0xd5, 0xa5, 0x96, 0xac, 0xb6, 0x35, 0xaa, - 0xb6, 0xb5, 0x1e, 0xee, 0xd8, 0x02, 0x01, 0x2b, 0x40, 0xa5, 0xfe, 0x4d, 0xac, 0x67, 0xea, 0x4a, - 0x53, 0xb1, 0x72, 0x4f, 0x87, 0x86, 0xb2, 0x62, 0x8b, 0x2d, 0xf8, 0x0e, 0x38, 0xe8, 0xe2, 0x28, - 0xc6, 0x0e, 0x62, 0xd8, 0x6d, 0x77, 0x10, 0xed, 0xe8, 0xd9, 0xba, 0xd2, 0xd4, 0xac, 0xd2, 0xef, - 0x43, 0xa3, 0x10, 0x77, 0xa3, 0xb5, 0xc6, 0x4a, 0xc3, 0x5e, 0x9c, 0x60, 0xde, 0x43, 0xb4, 0x03, - 0xdf, 0x98, 0x89, 0xba, 0x1e, 0x93, 0x40, 0x57, 0x45, 0x54, 0x46, 0x57, 0xa6, 0xc1, 0x17, 0x63, - 0x12, 0x40, 0x08, 0x54, 0x81, 0xc8, 0xd5, 0x95, 0x66, 0xd9, 0x16, 0x6b, 0xf8, 0x2a, 0xc8, 0xc6, - 0xe8, 0x53, 0x3d, 0xcf, 0xb7, 0x2c, 0x78, 0x7f, 0x68, 0x2c, 0x3c, 0x1c, 0x1a, 0x60, 0x52, 0x9c, - 0xcd, 0xdd, 0x6b, 0x07, 0x3e, 0xff, 0xca, 0x58, 0xb8, 0xfd, 0xe4, 0xee, 0x29, 0x11, 0xd4, 0xb8, - 0x93, 0x01, 0xc5, 0x0d, 0xec, 0x21, 0x67, 0x67, 0x6b, 0x00, 0x97, 0x40, 0x2e, 0x24, 0xa1, 0x83, - 0x45, 0xf9, 0xaa, 0x2d, 0x0d, 0x78, 0x06, 0x68, 0x1e, 0xe2, 0x0d, 0xe4, 0x3b, 0xb2, 0x5c, 0xcd, - 0xaa, 0x3c, 0x1c, 0x1a, 0x87, 0x65, 0x2f, 0x51, 0xf7, 0x46, 0xcb, 0x27, 0x66, 0x80, 0x58, 0xa7, - 0x75, 0x39, 0x64, 0x76, 0xd1, 0x43, 0xf4, 0x0a, 0x87, 0xc2, 0x1a, 0xc8, 0x7a, 0x88, 0x8a, 0xd2, - 0x55, 0xab, 0xbc, 0x3b, 0x34, 0x8a, 0x97, 0x10, 0xdd, 0xf0, 0x03, 0x9f, 0xd9, 0xdc, 0x01, 0x17, - 0x41, 0x86, 0x11, 0x59, 0xa3, 0x9d, 0x61, 0x04, 0x9e, 0x05, 0xb9, 0x3e, 0xea, 0xf6, 0xb0, 0x28, - 0x4a, 0xb3, 0x8e, 0xcf, 0x3d, 0x63, 0x77, 0x68, 0xe4, 0xd7, 0x03, 0xd2, 0x0b, 0x99, 0x2d, 0x23, - 0x38, 0x1d, 0x42, 0xb6, 0xbc, 0xa4, 0x43, 0x08, 0x54, 0x06, 0x4a, 0x5f, 0x2f, 0x88, 0x0d, 0xa5, - 0xcf, 0xad, 0x58, 0x2f, 0x4a, 0x2b, 0xe6, 0x16, 0xd5, 0x35, 0x69, 0xd1, 0xb5, 0x45, 0x4e, 0xc9, - 0xf7, 0xf7, 0x56, 0xf2, 0x5b, 0x83, 0xf3, 0x88, 0xa1, 0xc6, 0x77, 0x59, 0x50, 0x5e, 0x17, 0xad, - 0xbb, 0xe1, 0x53, 0xb6, 0x35, 0x80, 0xef, 0x83, 0xa2, 0xd3, 0x41, 0x7e, 0xd8, 0xf6, 0x5d, 0x41, - 0x8d, 0x66, 0x99, 0xcf, 0xbb, 0x5c, 0xe1, 0x1c, 0x07, 0x5f, 0x3e, 0xff, 0x74, 0x68, 0x14, 0x1c, - 0xb9, 0xb4, 0x93, 0x85, 0x3b, 0xe1, 0x38, 0x33, 0x97, 0xe3, 0xec, 0x5f, 0xe6, 0x58, 0x7d, 0x3e, - 0xc7, 0xb9, 0x34, 0xc7, 0xf9, 0x7d, 0x73, 0x5c, 0x98, 0xe2, 0xf8, 0x23, 0x50, 0x94, 0xdf, 0x38, - 0xa6, 0x7a, 0xb1, 0x9e, 0x6d, 0x96, 0x56, 0x97, 0x5b, 0xcf, 0xfe, 0x5a, 0xb5, 0x24, 0x95, 0x5b, - 0xfc, 0x47, 0xc0, 0xaa, 0xf3, 0xb6, 0x7c, 0x3a, 0x34, 0x00, 0x1a, 0xf3, 0xfb, 0xcd, 0xcf, 0x06, - 0x98, 0xb0, 0x6d, 0x8f, 0x13, 0x4a, 0x01, 0xb5, 0x19, 0x01, 0xc1, 0x8c, 0x80, 0xa5, 0x79, 0x02, - 0xfe, 0x91, 0x05, 0xe5, 0xf3, 0x3b, 0x21, 0x0a, 0x7c, 0xe7, 0x22, 0xc6, 0xff, 0x88, 0x80, 0x67, - 0x41, 0x89, 0x0b, 0xc8, 0xfc, 0xa8, 0xed, 0xa0, 0xe8, 0xc5, 0x12, 0x72, 0xb9, 0xb7, 0xfc, 0xe8, - 0x1c, 0x8a, 0x46, 0xa1, 0xd7, 0x31, 0x16, 0xa1, 0xea, 0xcb, 0x84, 0x5e, 0xc4, 0x98, 0x87, 0x26, - 0xf2, 0xe7, 0x9e, 0x2f, 0x7f, 0x3e, 0x2d, 0x7f, 0x61, 0xdf, 0xf2, 0x17, 0xe7, 0xc8, 0xaf, 0xfd, - 0x2d, 0xf2, 0x83, 0x19, 0xf9, 0x4b, 0x33, 0xf2, 0x97, 0xe7, 0xc9, 0xff, 0x48, 0x05, 0xda, 0x55, - 0xcc, 0xce, 0x11, 0xf7, 0x3f, 0xed, 0xff, 0x9d, 0xda, 0x23, 0xa0, 0xf1, 0xf7, 0xba, 0xdd, 0xf5, - 0x29, 0xd3, 0x81, 0xc8, 0x7e, 0x22, 0x9d, 0x3d, 0xd1, 0x78, 0x7d, 0xfa, 0x65, 0xb7, 0x8e, 0x26, - 0xc7, 0x14, 0x79, 0x82, 0xe4, 0x90, 0xe2, 0x7a, 0xb2, 0xb6, 0xc7, 0xbb, 0xb2, 0xbd, 0x4a, 0x33, - 0xed, 0x55, 0x9e, 0x69, 0xaf, 0x03, 0xf3, 0xda, 0xab, 0x01, 0xaa, 0x17, 0x06, 0x0c, 0x87, 0xd4, - 0x27, 0xe1, 0x07, 0x91, 0x18, 0x8e, 0x26, 0x8f, 0xec, 0x9a, 0xca, 0xd1, 0x8d, 0xdf, 0x14, 0x70, - 0x78, 0x66, 0xb2, 0xb0, 0x31, 0x8d, 0x48, 0x48, 0x05, 0x97, 0x62, 0x22, 0x10, 0xad, 0x68, 0x8b, - 0x35, 0x3c, 0x09, 0xd4, 0x2e, 0xf1, 0xa8, 0x9e, 0x11, 0x95, 0x1e, 0x4e, 0x57, 0xba, 0x41, 0x3c, - 0x5b, 0x40, 0xe0, 0x21, 0x90, 0x8d, 0x31, 0x13, 0x3d, 0x56, 0xb6, 0xf9, 0x12, 0x56, 0x40, 0xb1, - 0x1f, 0xb4, 0x71, 0x1c, 0x93, 0x38, 0x79, 0x4c, 0x0b, 0xfd, 0xe0, 0x02, 0x37, 0xb9, 0x8b, 0x77, - 0x57, 0x8f, 0x62, 0x57, 0xf6, 0x89, 0x5d, 0xf0, 0x10, 0xbd, 0x46, 0xb1, 0x0b, 0x97, 0x01, 0xd8, - 0xee, 0x12, 0xe7, 0x86, 0x1c, 0x4f, 0xe4, 0xbb, 0xa9, 0x89, 0x1d, 0x31, 0x8c, 0xbc, 0x09, 0x20, - 0x1e, 0x60, 0xa7, 0xc7, 0xab, 0x6b, 0x8f, 0x73, 0x14, 0x44, 0x8e, 0x43, 0x63, 0xcf, 0x25, 0x99, - 0x2c, 0xa9, 0xf9, 0x8e, 0x02, 0x0e, 0x6e, 0x52, 0xef, 0x5a, 0xe4, 0x22, 0x86, 0xaf, 0x88, 0xc9, - 0x8d, 0xbf, 0x6b, 0xc9, 0xe0, 0xc5, 0x76, 0x92, 0xaf, 0x4f, 0xff, 0xe1, 0xde, 0xca, 0x52, 0x32, - 0x87, 0xae, 0xbb, 0x6e, 0x8c, 0x29, 0xbd, 0xca, 0x62, 0x3f, 0xf4, 0xec, 0x09, 0x14, 0x9e, 0x01, - 0x79, 0x39, 0xfb, 0x89, 0x2f, 0xad, 0xb4, 0xaa, 0xa7, 0x39, 0x91, 0x27, 0x58, 0x2a, 0xd7, 0xdb, - 0x4e, 0xd0, 0x6b, 0x8b, 0x7c, 0xb2, 0x99, 0xe4, 0x69, 0x54, 0xc0, 0x91, 0x67, 0xae, 0x34, 0x12, - 0xa2, 0xf1, 0xad, 0x02, 0x5e, 0xd9, 0xa4, 0x9e, 0x8d, 0x3d, 0x9f, 0x32, 0x1c, 0x5f, 0x19, 0xcf, - 0x92, 0xfb, 0xbf, 0xf5, 0x65, 0x50, 0x9a, 0x8c, 0xa4, 0x23, 0x39, 0x8f, 0xee, 0x71, 0xf5, 0x31, - 0xc8, 0xd2, 0xf8, 0xf5, 0xbf, 0x7e, 0x72, 0xf7, 0x94, 0x62, 0x4f, 0xc7, 0xa6, 0x0a, 0xa9, 0x83, - 0xda, 0xde, 0x97, 0x1d, 0xd5, 0xb3, 0xfa, 0x28, 0x03, 0xb2, 0x9b, 0xd4, 0x83, 0x9f, 0x81, 0xa9, - 0x99, 0x0f, 0x1a, 0xe9, 0xd3, 0x67, 0xfa, 0xb2, 0xfa, 0xfa, 0x0b, 0x00, 0x63, 0xbe, 0x5e, 0xbb, - 0xfd, 0xe3, 0xaf, 0x5f, 0x66, 0x8c, 0xc6, 0xb2, 0x99, 0x1a, 0xb2, 0x71, 0x82, 0x6e, 0xb3, 0x01, - 0xfc, 0x18, 0x94, 0x67, 0x3a, 0xe0, 0xd8, 0x9e, 0xf9, 0xa7, 0x21, 0xd5, 0x93, 0x2f, 0x84, 0x8c, - 0xbf, 0x9e, 0x4f, 0xc0, 0xff, 0xf7, 0x12, 0xac, 0xb9, 0x67, 0x86, 0x3d, 0x90, 0xd5, 0xb7, 0x5e, - 0x16, 0x39, 0x3a, 0xb2, 0x9a, 0xbb, 0xc5, 0xd5, 0xb1, 0xde, 0xbd, 0xbf, 0x5b, 0x53, 0x1e, 0xec, - 0xd6, 0x94, 0x5f, 0x76, 0x6b, 0xca, 0x17, 0x8f, 0x6b, 0x0b, 0x0f, 0x1e, 0xd7, 0x16, 0x7e, 0x7a, - 0x5c, 0x5b, 0xf8, 0xf0, 0x84, 0xe7, 0xb3, 0x4e, 0x6f, 0xbb, 0xe5, 0x90, 0x80, 0x13, 0x42, 0xe8, - 0x14, 0x41, 0x03, 0x41, 0x11, 0xdb, 0x89, 0x30, 0xdd, 0xce, 0x8b, 0xff, 0x22, 0xde, 0xfe, 0x33, - 0x00, 0x00, 0xff, 0xff, 0x24, 0x23, 0x5f, 0xd4, 0xeb, 0x0d, 0x00, 0x00, + 0x17, 0x5f, 0x27, 0xce, 0x0f, 0x4f, 0xd2, 0x6d, 0xbf, 0xfe, 0x6e, 0xa9, 0x13, 0x75, 0xe3, 0x34, + 0x85, 0x92, 0x16, 0x6d, 0x4c, 0x17, 0x54, 0xa9, 0x7b, 0x22, 0xee, 0x0f, 0x28, 0xda, 0x15, 0x95, + 0x9b, 0x5e, 0x00, 0x29, 0x9a, 0xb5, 0xa7, 0x8e, 0xd5, 0xd8, 0x63, 0x3c, 0x93, 0x90, 0x54, 0x42, + 0xaa, 0x7a, 0xe2, 0x48, 0xc5, 0x3f, 0xc0, 0x11, 0xc1, 0xa5, 0x87, 0x9e, 0xb9, 0x70, 0xa9, 0x38, + 0x55, 0x70, 0x41, 0x55, 0x15, 0xd0, 0x16, 0xa9, 0x52, 0x8f, 0x9c, 0x39, 0xa0, 0x99, 0x71, 0x7e, + 0xd5, 0x49, 0xb7, 0xac, 0x04, 0x12, 0x12, 0x97, 0x68, 0xde, 0xbc, 0xcf, 0x9b, 0x99, 0xf7, 0xf9, + 0xbc, 0xf1, 0xbc, 0x80, 0x12, 0xa2, 0x1d, 0x14, 0xf9, 0x5e, 0x40, 0x0d, 0xd4, 0xf7, 0x8d, 0xfe, + 0x59, 0x83, 0x0e, 0x1a, 0x61, 0x84, 0x29, 0x56, 0x8f, 0x4c, 0x5c, 0x0d, 0xd4, 0xf7, 0x1b, 0xfd, + 0xb3, 0xe5, 0xff, 0x41, 0xdf, 0x0b, 0xb0, 0xc1, 0x7f, 0x05, 0xa8, 0x7c, 0xcc, 0xc6, 0xc4, 0xc7, + 0xc4, 0xf0, 0x89, 0xcb, 0x82, 0x7d, 0xe2, 0xc6, 0x8e, 0x92, 0x70, 0xb4, 0xb9, 0x65, 0x08, 0x23, + 0x76, 0xad, 0xb9, 0xd8, 0xc5, 0x62, 0x9e, 0x8d, 0xe2, 0xd9, 0xe3, 0x2e, 0xc6, 0x6e, 0x17, 0x19, + 0x30, 0xf4, 0x0c, 0x18, 0x04, 0x98, 0x42, 0xea, 0xe1, 0x60, 0x1c, 0x53, 0x8a, 0xbd, 0xdc, 0xda, + 0xed, 0xdd, 0x30, 0x60, 0x30, 0x8c, 0x5d, 0x27, 0x13, 0x29, 0x40, 0xdb, 0x46, 0x84, 0xb4, 0x69, + 0x2f, 0xec, 0xa2, 0x18, 0x54, 0x4e, 0x80, 0xba, 0x78, 0x7c, 0xd4, 0xf5, 0x84, 0x2f, 0x84, 0x11, + 0xf4, 0xc7, 0x5b, 0x9f, 0x48, 0xba, 0x23, 0xe4, 0x05, 0x84, 0xc2, 0x6e, 0x37, 0x86, 0x6c, 0x24, + 0x20, 0x04, 0xd1, 0xb6, 0x8d, 0x1d, 0xd4, 0x86, 0x3d, 0xda, 0xc1, 0x91, 0x77, 0x8b, 0x67, 0x23, + 0xe0, 0xb5, 0xdb, 0x29, 0x70, 0x68, 0x87, 0xb8, 0x97, 0x58, 0x10, 0xea, 0xf9, 0xad, 0x81, 0x5a, + 0x07, 0xb2, 0x03, 0x29, 0xd4, 0xa4, 0xaa, 0x54, 0x2f, 0x6c, 0xae, 0x35, 0x44, 0xb6, 0x8d, 0x71, + 0xb6, 0x8d, 0x66, 0x30, 0xb4, 0x38, 0x42, 0x2d, 0x01, 0x99, 0x78, 0xb7, 0x90, 0x96, 0xaa, 0x4a, + 0x75, 0xc9, 0xcc, 0x3c, 0x1b, 0xe9, 0xd2, 0x86, 0xc5, 0xa7, 0xd4, 0xb7, 0xc1, 0x61, 0x07, 0x85, + 0x11, 0xb2, 0x21, 0x45, 0x4e, 0xbb, 0x03, 0x49, 0x47, 0x4b, 0x57, 0xa5, 0xba, 0x62, 0x16, 0x7e, + 0x1f, 0xe9, 0xb9, 0xa8, 0x1b, 0x6e, 0xd5, 0x36, 0x6a, 0xd6, 0xea, 0x14, 0xf3, 0x1e, 0x24, 0x1d, + 0xf5, 0x8d, 0xb9, 0xa8, 0x1b, 0x11, 0xf6, 0x35, 0x99, 0x47, 0xa5, 0x34, 0x69, 0x16, 0x7c, 0x39, + 0xc2, 0xbe, 0xaa, 0x02, 0x99, 0x23, 0x32, 0x55, 0xa9, 0x5e, 0xb4, 0xf8, 0x58, 0x7d, 0x15, 0xa4, + 0x23, 0xf8, 0xa9, 0x96, 0x65, 0x53, 0xa6, 0xfa, 0x60, 0xa4, 0xaf, 0x3c, 0x1a, 0xe9, 0x60, 0x9a, + 0x9c, 0xc5, 0xdc, 0x5b, 0x87, 0x3e, 0xff, 0x4a, 0x5f, 0xb9, 0xf3, 0xf4, 0xde, 0x19, 0x1e, 0x54, + 0xbb, 0x9b, 0x02, 0xf9, 0x6d, 0xe4, 0x42, 0x7b, 0xd8, 0x1a, 0xa8, 0x6b, 0x20, 0x13, 0xe0, 0xc0, + 0x46, 0x3c, 0x7d, 0xd9, 0x12, 0x86, 0x7a, 0x0e, 0x28, 0x2e, 0x64, 0x05, 0xe4, 0xd9, 0x22, 0x5d, + 0xc5, 0x2c, 0x3d, 0x1a, 0xe9, 0x47, 0x45, 0x2d, 0x11, 0xe7, 0x66, 0xc3, 0xc3, 0x86, 0x0f, 0x69, + 0xa7, 0x71, 0x25, 0xa0, 0x56, 0xde, 0x85, 0xe4, 0x2a, 0x83, 0xaa, 0x15, 0x90, 0x76, 0x21, 0xe1, + 0xa9, 0xcb, 0x66, 0x71, 0x6f, 0xa4, 0xe7, 0xdf, 0x85, 0x64, 0xdb, 0xf3, 0x3d, 0x6a, 0x31, 0x87, + 0xba, 0x0a, 0x52, 0x14, 0x8b, 0x1c, 0xad, 0x14, 0xc5, 0xea, 0x79, 0x90, 0xe9, 0xc3, 0x6e, 0x0f, + 0xf1, 0xa4, 0x14, 0xf3, 0xe4, 0xd2, 0x3d, 0xf6, 0x46, 0x7a, 0xb6, 0xe9, 0xe3, 0x5e, 0x40, 0x2d, + 0x11, 0xc1, 0xe8, 0xe0, 0xb2, 0x65, 0x05, 0x1d, 0x5c, 0xa0, 0x22, 0x90, 0xfa, 0x5a, 0x8e, 0x4f, + 0x48, 0x7d, 0x66, 0x45, 0x5a, 0x5e, 0x58, 0x11, 0xb3, 0x88, 0xa6, 0x08, 0x8b, 0x6c, 0xad, 0x32, + 0x4a, 0x7e, 0xb8, 0xbf, 0x91, 0x6d, 0x0d, 0x2e, 0x42, 0x0a, 0x6b, 0xdf, 0xa5, 0x41, 0xb1, 0xc9, + 0x4b, 0x77, 0xdb, 0x23, 0xb4, 0x35, 0x50, 0xdf, 0x07, 0x79, 0xbb, 0x03, 0xbd, 0xa0, 0xed, 0x39, + 0x9c, 0x1a, 0xc5, 0x34, 0x5e, 0x74, 0xb8, 0xdc, 0x05, 0x06, 0xbe, 0x72, 0xf1, 0xd9, 0x48, 0xcf, + 0xd9, 0x62, 0x68, 0xc5, 0x03, 0x67, 0xca, 0x71, 0x6a, 0x29, 0xc7, 0xe9, 0xbf, 0xcc, 0xb1, 0xfc, + 0x62, 0x8e, 0x33, 0x49, 0x8e, 0xb3, 0x07, 0xe6, 0x38, 0x37, 0xc3, 0xf1, 0x47, 0x20, 0x2f, 0xee, + 0x38, 0x22, 0x5a, 0xbe, 0x9a, 0xae, 0x17, 0x36, 0xd7, 0x1b, 0xcf, 0x7f, 0xad, 0x1a, 0x82, 0xca, + 0x16, 0xfb, 0x08, 0x98, 0x55, 0x56, 0x96, 0xcf, 0x46, 0x3a, 0x80, 0x13, 0x7e, 0xbf, 0xf9, 0x45, + 0x07, 0x53, 0xb6, 0xad, 0xc9, 0x82, 0x42, 0x40, 0x65, 0x4e, 0x40, 0x30, 0x27, 0x60, 0x61, 0x99, + 0x80, 0x7f, 0xa4, 0x41, 0xf1, 0xe2, 0x30, 0x80, 0xbe, 0x67, 0x5f, 0x46, 0xe8, 0x1f, 0x11, 0xf0, + 0x3c, 0x28, 0x30, 0x01, 0xa9, 0x17, 0xb6, 0x6d, 0x18, 0xee, 0x2f, 0x21, 0x93, 0xbb, 0xe5, 0x85, + 0x17, 0x60, 0x38, 0x0e, 0xbd, 0x81, 0x10, 0x0f, 0x95, 0x5f, 0x26, 0xf4, 0x32, 0x42, 0x2c, 0x34, + 0x96, 0x3f, 0xf3, 0x62, 0xf9, 0xb3, 0x49, 0xf9, 0x73, 0x07, 0x96, 0x3f, 0xbf, 0x44, 0x7e, 0xe5, + 0x6f, 0x91, 0x1f, 0xcc, 0xc9, 0x5f, 0x98, 0x93, 0xbf, 0xb8, 0x4c, 0xfe, 0xc7, 0x32, 0x50, 0xae, + 0x21, 0x7a, 0x01, 0x3b, 0xff, 0x69, 0xff, 0xef, 0xd4, 0x1e, 0x02, 0x85, 0xbd, 0xd7, 0xed, 0xae, + 0x47, 0xa8, 0x06, 0xf8, 0xea, 0xa7, 0x92, 0xab, 0xc7, 0x1a, 0x37, 0x67, 0x5f, 0x76, 0xf3, 0x78, + 0xbc, 0x4d, 0x9e, 0x2d, 0x10, 0x6f, 0x92, 0x6f, 0xc6, 0x63, 0x6b, 0x32, 0x2b, 0xca, 0xab, 0x30, + 0x57, 0x5e, 0xc5, 0xb9, 0xf2, 0x3a, 0xb4, 0xac, 0xbc, 0x6a, 0xa0, 0x7c, 0x69, 0x40, 0x51, 0x40, + 0x3c, 0x1c, 0x7c, 0x10, 0xf2, 0xe6, 0x68, 0xfa, 0xc8, 0x6e, 0xc9, 0x0c, 0x5d, 0xfb, 0x5e, 0x02, + 0x47, 0xe7, 0x3a, 0x0b, 0x0b, 0x91, 0x10, 0x07, 0x84, 0x73, 0xc9, 0x3b, 0x02, 0x5e, 0x8a, 0x16, + 0x1f, 0xab, 0xa7, 0x81, 0xdc, 0xc5, 0x2e, 0xd1, 0x52, 0x3c, 0xd3, 0xa3, 0xc9, 0x4c, 0xb7, 0xb1, + 0x6b, 0x71, 0x88, 0x7a, 0x04, 0xa4, 0x23, 0x44, 0x79, 0x8d, 0x15, 0x2d, 0x36, 0x54, 0x4b, 0x20, + 0xdf, 0xf7, 0xdb, 0x28, 0x8a, 0x70, 0x14, 0x3f, 0xa6, 0xb9, 0xbe, 0x7f, 0x89, 0x99, 0xcc, 0xc5, + 0xaa, 0xab, 0x47, 0x90, 0x23, 0xea, 0xc4, 0xca, 0xb9, 0x90, 0x5c, 0x27, 0xc8, 0x51, 0xd7, 0x01, + 0xd8, 0xed, 0x62, 0xfb, 0xa6, 0x68, 0x4f, 0xc4, 0xbb, 0xa9, 0xf0, 0x19, 0xd6, 0x8c, 0xc4, 0x59, + 0xdc, 0x95, 0xc0, 0xe1, 0x1d, 0xe2, 0x5e, 0x0f, 0x1d, 0x48, 0xd1, 0x55, 0xde, 0x8b, 0xb1, 0x97, + 0x2a, 0x6e, 0xa5, 0xe8, 0x30, 0xbe, 0x4f, 0xda, 0x8f, 0xf7, 0x37, 0xd6, 0xe2, 0xce, 0xb2, 0xe9, + 0x38, 0x11, 0x22, 0xe4, 0x1a, 0x8d, 0xbc, 0xc0, 0xb5, 0xa6, 0x50, 0xf5, 0x1c, 0xc8, 0x8a, 0x6e, + 0x8e, 0xdf, 0x9d, 0xc2, 0xa6, 0x96, 0xcc, 0x52, 0xec, 0x60, 0xca, 0x4c, 0x41, 0x2b, 0x46, 0x6f, + 0xad, 0xb2, 0x5e, 0x65, 0xba, 0x4e, 0xad, 0x04, 0x8e, 0x3d, 0x77, 0xa4, 0x31, 0xb5, 0xb5, 0x6f, + 0x25, 0xf0, 0xca, 0x0e, 0x71, 0x2d, 0xe4, 0x7a, 0x84, 0xa2, 0xe8, 0xea, 0xa4, 0x3b, 0x3c, 0xf8, + 0xa9, 0xaf, 0x80, 0xc2, 0xb4, 0xc9, 0x1c, 0x0b, 0x74, 0x7c, 0xc1, 0xd1, 0x27, 0x20, 0x53, 0x61, + 0xc7, 0xff, 0xfa, 0xe9, 0xbd, 0x33, 0x92, 0x35, 0x1b, 0x9b, 0x48, 0xa4, 0x0a, 0x2a, 0x8b, 0x0f, + 0x3b, 0xce, 0x67, 0xf3, 0x71, 0x0a, 0xa4, 0x77, 0x88, 0xab, 0x7e, 0x06, 0x66, 0xba, 0x38, 0x55, + 0x4f, 0xee, 0x3e, 0x57, 0x69, 0xe5, 0xd7, 0xf7, 0x01, 0x4c, 0xf8, 0x7a, 0xed, 0xce, 0x4f, 0xbf, + 0x7d, 0x99, 0xd2, 0x6b, 0xeb, 0x46, 0xa2, 0x6d, 0x46, 0x31, 0xba, 0x4d, 0x07, 0xea, 0xc7, 0xa0, + 0x38, 0x57, 0x01, 0x27, 0x16, 0xae, 0x3f, 0x0b, 0x29, 0x9f, 0xde, 0x17, 0x32, 0xb9, 0x0f, 0x9f, + 0x80, 0xff, 0x2f, 0x12, 0xac, 0xbe, 0x70, 0x85, 0x05, 0xc8, 0xf2, 0x9b, 0x2f, 0x8b, 0x1c, 0x6f, + 0x59, 0xce, 0xdc, 0x66, 0xea, 0x98, 0xef, 0x3c, 0xd8, 0xab, 0x48, 0x0f, 0xf7, 0x2a, 0xd2, 0xaf, + 0x7b, 0x15, 0xe9, 0x8b, 0x27, 0x95, 0x95, 0x87, 0x4f, 0x2a, 0x2b, 0x3f, 0x3f, 0xa9, 0xac, 0x7c, + 0x78, 0xca, 0xf5, 0x68, 0xa7, 0xb7, 0xdb, 0xb0, 0xb1, 0xcf, 0x08, 0xc1, 0x64, 0x86, 0xa0, 0x01, + 0xa7, 0x88, 0x0e, 0x43, 0x44, 0x76, 0xb3, 0xfc, 0x7f, 0xc1, 0x5b, 0x7f, 0x06, 0x00, 0x00, 0xff, + 0xff, 0x8a, 0x83, 0x91, 0x5e, 0xbd, 0x0d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1466,11 +1462,6 @@ func (m *MsgEthereumTxResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.ExecutionGasUsed != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.ExecutionGasUsed)) - i-- - dAtA[i] = 0x38 - } if len(m.BlockHash) > 0 { i -= len(m.BlockHash) copy(dAtA[i:], m.BlockHash) @@ -1948,9 +1939,6 @@ func (m *MsgEthereumTxResponse) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - if m.ExecutionGasUsed != 0 { - n += 1 + sovTx(uint64(m.ExecutionGasUsed)) - } return n } @@ -4132,25 +4120,6 @@ func (m *MsgEthereumTxResponse) Unmarshal(dAtA []byte) error { m.BlockHash = []byte{} } iNdEx = postIndex - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ExecutionGasUsed", wireType) - } - m.ExecutionGasUsed = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ExecutionGasUsed |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/x/evm/types/utils.go b/x/evm/types/utils.go index 8929caf1ee..6f139e1d01 100644 --- a/x/evm/types/utils.go +++ b/x/evm/types/utils.go @@ -208,7 +208,7 @@ func UnwrapEthereumMsg(tx *sdk.Tx, ethHash common.Hash) (*MsgEthereumTx, error) } // BinSearch execute the binary search and hone in on an executable gas limit -func BinSearch(lo, hi uint64, executable func(uint64) (bool, *MsgEthereumTxResponse, error)) (uint64, error) { +func BinSearch(lo, hi uint64, executable func(uint64) (bool, *EVMResult, error)) (uint64, error) { for lo+1 < hi { mid := (hi + lo) / 2 failed, _, err := executable(mid) diff --git a/x/evm/types/utils_test.go b/x/evm/types/utils_test.go index b9f3ccf98e..801c97b811 100644 --- a/x/evm/types/utils_test.go +++ b/x/evm/types/utils_test.go @@ -70,11 +70,11 @@ func TestUnwrapEthererumMsg(t *testing.T) { } func TestBinSearch(t *testing.T) { - success_executable := func(gas uint64) (bool, *evmtypes.MsgEthereumTxResponse, error) { + success_executable := func(gas uint64) (bool, *evmtypes.EVMResult, error) { target := uint64(21000) return gas < target, nil, nil } - failed_executable := func(gas uint64) (bool, *evmtypes.MsgEthereumTxResponse, error) { + failed_executable := func(gas uint64) (bool, *evmtypes.EVMResult, error) { return true, nil, errors.New("contract failed") }