From 2847d3220ec057e20c730814043a3253b5c2a4c7 Mon Sep 17 00:00:00 2001 From: viveksharmapoudel Date: Fri, 28 Jul 2023 16:31:50 +0545 Subject: [PATCH 1/3] fix: sdk prefix change handle for neutron and archway --- relayer/chains/icon/icon_chain_processor.go | 3 +++ relayer/chains/wasm/provider.go | 2 -- relayer/chains/wasm/query.go | 3 ++- relayer/chains/wasm/tx.go | 3 ++- relayer/chains/wasm/wasm_prefix.go | 4 ++-- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/relayer/chains/icon/icon_chain_processor.go b/relayer/chains/icon/icon_chain_processor.go index 66c98eb07..b039a8e1e 100644 --- a/relayer/chains/icon/icon_chain_processor.go +++ b/relayer/chains/icon/icon_chain_processor.go @@ -336,6 +336,9 @@ loop: break } + icp.log.Debug("Verified block ", + zap.Int64("height", int64(processedheight))) + icp.latestBlock = provider.LatestBlock{ Height: uint64(processedheight), } diff --git a/relayer/chains/wasm/provider.go b/relayer/chains/wasm/provider.go index fcb77454d..c3ad74207 100644 --- a/relayer/chains/wasm/provider.go +++ b/relayer/chains/wasm/provider.go @@ -346,8 +346,6 @@ func (ap *WasmProvider) Init(ctx context.Context) error { } ap.LightProvider = lightprovider - ap.SetSDKContext() - clientCtx := client.Context{}. WithClient(rpcClient). WithFromName(ap.PCfg.Key). diff --git a/relayer/chains/wasm/query.go b/relayer/chains/wasm/query.go index 460d07064..7d161ced7 100644 --- a/relayer/chains/wasm/query.go +++ b/relayer/chains/wasm/query.go @@ -333,7 +333,8 @@ func (ap *WasmProvider) QueryClientConsensusState(ctx context.Context, chainHeig } func (ap *WasmProvider) QueryIBCHandlerContract(ctx context.Context, param wasmtypes.RawContractMessage) (*wasmtypes.QuerySmartContractStateResponse, error) { - + done := ap.SetSDKContext() + defer done() return ap.QueryClient.SmartContractState(ctx, &wasmtypes.QuerySmartContractStateRequest{ Address: ap.PCfg.IbcHandlerAddress, QueryData: param, diff --git a/relayer/chains/wasm/tx.go b/relayer/chains/wasm/tx.go index 6d4227ee9..397f3b279 100644 --- a/relayer/chains/wasm/tx.go +++ b/relayer/chains/wasm/tx.go @@ -277,7 +277,6 @@ func (ap *WasmProvider) NextSeqRecv(ctx context.Context, msgTransfer provider.Pa func (ap *WasmProvider) MsgTransfer(dstAddr string, amount sdk.Coin, info provider.PacketInfo) (provider.RelayerMessage, error) { panic(fmt.Sprintf("%s%s", ap.ChainName(), NOT_IMPLEMENTED)) - return nil, fmt.Errorf("Not implemented for Wasm") } func (ap *WasmProvider) MsgRecvPacket(msgTransfer provider.PacketInfo, proof provider.PacketProof) (provider.RelayerMessage, error) { @@ -953,10 +952,12 @@ func (ap *WasmProvider) buildMessages(clientCtx client.Context, txf tx.Factory, } } + done := ap.SetSDKContext() err = tx.Sign(txf, clientCtx.GetFromName(), txn, true) if err != nil { return nil, 0, err } + done() res, err := clientCtx.TxConfig.TxEncoder()(txn.GetTx()) return res, sequence, nil diff --git a/relayer/chains/wasm/wasm_prefix.go b/relayer/chains/wasm/wasm_prefix.go index ed04aa8e6..a8a59419b 100644 --- a/relayer/chains/wasm/wasm_prefix.go +++ b/relayer/chains/wasm/wasm_prefix.go @@ -16,12 +16,12 @@ var sdkConfigMutex sync.Mutex // SetSDKContext sets the SDK config to the proper bech32 prefixes for wasm. // Don't use this unless you know what you're doing. // TODO: :dagger: :knife: :chainsaw: remove this function -func (ap *WasmProvider) SetSDKContext() { +func (ap *WasmProvider) SetSDKContext() func() { sdkConfigMutex.Lock() cfg := sdk.GetConfig() cfg.SetBech32PrefixForAccount(ap.PCfg.AccountPrefix, app.Bech32PrefixAccPub) cfg.SetBech32PrefixForValidator(ap.PCfg.AccountPrefix, app.Bech32PrefixValPub) cfg.SetBech32PrefixForConsensusNode(app.Bech32PrefixConsAddr, app.Bech32PrefixConsPub) cfg.SetAddressVerifier(wasmtypes.VerifyAddressLen()) - sdkConfigMutex.Unlock() + return sdkConfigMutex.Unlock } From 505071bd367144de08022c56fd8c1cdc62bb9bfb Mon Sep 17 00:00:00 2001 From: viveksharmapoudel Date: Mon, 7 Aug 2023 18:12:44 +0545 Subject: [PATCH 2/3] fix: wasm prefix change optimize --- relayer/chains/wasm/wasm_prefix.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/relayer/chains/wasm/wasm_prefix.go b/relayer/chains/wasm/wasm_prefix.go index a8a59419b..fb6a7d2c9 100644 --- a/relayer/chains/wasm/wasm_prefix.go +++ b/relayer/chains/wasm/wasm_prefix.go @@ -1,6 +1,7 @@ package wasm import ( + "strings" "sync" "github.com/CosmWasm/wasmd/app" @@ -17,11 +18,16 @@ var sdkConfigMutex sync.Mutex // Don't use this unless you know what you're doing. // TODO: :dagger: :knife: :chainsaw: remove this function func (ap *WasmProvider) SetSDKContext() func() { - sdkConfigMutex.Lock() + cfg := sdk.GetConfig() - cfg.SetBech32PrefixForAccount(ap.PCfg.AccountPrefix, app.Bech32PrefixAccPub) - cfg.SetBech32PrefixForValidator(ap.PCfg.AccountPrefix, app.Bech32PrefixValPub) - cfg.SetBech32PrefixForConsensusNode(app.Bech32PrefixConsAddr, app.Bech32PrefixConsPub) - cfg.SetAddressVerifier(wasmtypes.VerifyAddressLen()) + if strings.Contains(cfg.GetBech32AccountAddrPrefix(), ap.PCfg.AccountPrefix) { + return func() {} + } + sdkConfigMutex.Lock() + cfg_update := sdk.GetConfig() + cfg_update.SetBech32PrefixForAccount(ap.PCfg.AccountPrefix, app.Bech32PrefixAccPub) + cfg_update.SetBech32PrefixForValidator(ap.PCfg.AccountPrefix, app.Bech32PrefixValPub) + cfg_update.SetBech32PrefixForConsensusNode(app.Bech32PrefixConsAddr, app.Bech32PrefixConsPub) + cfg_update.SetAddressVerifier(wasmtypes.VerifyAddressLen()) return sdkConfigMutex.Unlock } From 2d0b59a5ec9cee1df3177ba745ac0cd06a24f965 Mon Sep 17 00:00:00 2001 From: viveksharmapoudel Date: Mon, 14 Aug 2023 11:29:36 +0545 Subject: [PATCH 3/3] fix: add config during successlogtx as well due to feepayer address --- relayer/chains/wasm/tx.go | 7 +++++-- relayer/chains/wasm/wasm_prefix.go | 5 ----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/relayer/chains/wasm/tx.go b/relayer/chains/wasm/tx.go index 91709b662..00692f19b 100644 --- a/relayer/chains/wasm/tx.go +++ b/relayer/chains/wasm/tx.go @@ -807,6 +807,8 @@ func (ap *WasmProvider) LogFailedTx(res *provider.RelayerTxResponse, err error, func (ap *WasmProvider) LogSuccessTx(res *sdk.TxResponse, msgs []provider.RelayerMessage) { // Include the chain_id fields := []zapcore.Field{zap.String("chain_id", ap.ChainId())} + done := ap.SetSDKContext() + defer done() // Include the gas used fields = append(fields, zap.Int64("gas_used", res.GasUsed)) @@ -879,6 +881,9 @@ func (ap *WasmProvider) sdkError(codespace string, code uint32) error { } func (ap *WasmProvider) buildMessages(clientCtx client.Context, txf tx.Factory, msgs ...sdk.Msg) ([]byte, uint64, error) { + done := ap.SetSDKContext() + defer done() + for _, msg := range msgs { if err := msg.ValidateBasic(); err != nil { return nil, 0, err @@ -954,12 +959,10 @@ func (ap *WasmProvider) buildMessages(clientCtx client.Context, txf tx.Factory, } } - done := ap.SetSDKContext() err = tx.Sign(txf, clientCtx.GetFromName(), txn, true) if err != nil { return nil, 0, err } - done() res, err := clientCtx.TxConfig.TxEncoder()(txn.GetTx()) return res, sequence, nil diff --git a/relayer/chains/wasm/wasm_prefix.go b/relayer/chains/wasm/wasm_prefix.go index fb6a7d2c9..1a77d255f 100644 --- a/relayer/chains/wasm/wasm_prefix.go +++ b/relayer/chains/wasm/wasm_prefix.go @@ -1,7 +1,6 @@ package wasm import ( - "strings" "sync" "github.com/CosmWasm/wasmd/app" @@ -19,10 +18,6 @@ var sdkConfigMutex sync.Mutex // TODO: :dagger: :knife: :chainsaw: remove this function func (ap *WasmProvider) SetSDKContext() func() { - cfg := sdk.GetConfig() - if strings.Contains(cfg.GetBech32AccountAddrPrefix(), ap.PCfg.AccountPrefix) { - return func() {} - } sdkConfigMutex.Lock() cfg_update := sdk.GetConfig() cfg_update.SetBech32PrefixForAccount(ap.PCfg.AccountPrefix, app.Bech32PrefixAccPub)