@@ -2,10 +2,7 @@ package v23
2
2
3
3
import (
4
4
"context"
5
- "encoding/hex"
6
- "fmt"
7
5
8
- ibcwasmkeeper "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/v10/keeper"
9
6
ibcwasmtypes "github.com/cosmos/ibc-go/modules/light-clients/08-wasm/v10/types"
10
7
ibctmtypes "github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint"
11
8
@@ -14,10 +11,34 @@ import (
14
11
15
12
sdk "github.com/cosmos/cosmos-sdk/types"
16
13
"github.com/cosmos/cosmos-sdk/types/module"
14
+ "github.com/cosmos/cosmos-sdk/x/authz"
15
+ authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper"
16
+ govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
17
17
18
18
"github.com/cosmos/gaia/v23/app/keepers"
19
19
)
20
20
21
+ // CreateRCUpgradeHandler returns an upgrade handler for Gaia v23.0.0-rc3.
22
+ // This should only be executed on networks which have already run a previous v23 upgrade handler.
23
+ func CreateRCUpgradeHandler (
24
+ mm * module.Manager ,
25
+ configurator module.Configurator ,
26
+ keepers * keepers.AppKeepers ,
27
+ ) upgradetypes.UpgradeHandler {
28
+ return func (c context.Context , plan upgradetypes.Plan , vm module.VersionMap ) (module.VersionMap , error ) {
29
+ ctx := sdk .UnwrapSDKContext (c )
30
+ ctx .Logger ().Info ("Starting custom migration..." )
31
+
32
+ if err := AuthzGrantWasmLightClient (c , keepers .AuthzKeeper , * keepers .GovKeeper ); err != nil {
33
+ ctx .Logger ().Error ("Error running authz grant for ibc wasm client" , "message" , err .Error ())
34
+ return vm , err
35
+ }
36
+
37
+ ctx .Logger ().Info ("Upgrade v23.0.0-rc3 complete" )
38
+ return vm , nil
39
+ }
40
+ }
41
+
21
42
// CreateUpgradeHandler returns an upgrade handler for Gaia v23.
22
43
func CreateUpgradeHandler (
23
44
mm * module.Manager ,
@@ -39,10 +60,9 @@ func CreateUpgradeHandler(
39
60
params .AllowedClients = []string {ibctmtypes .ModuleName , ibcwasmtypes .ModuleName }
40
61
keepers .IBCKeeper .ClientKeeper .SetParams (ctx , params )
41
62
42
- // Add Eth Light Wasm Light Client
43
- ctx .Logger ().Info ("Adding Eth Light Wasm Light Client" )
44
- if err := AddEthLightWasmLightClient (ctx , keepers .WasmClientKeeper ); err != nil {
45
- ctx .Logger ().Error ("Error adding Eth Light Wasm Light Client" , "message" , err .Error ())
63
+ ctx .Logger ().Info ("Running authz ibc wasm client grant" )
64
+ if err := AuthzGrantWasmLightClient (ctx , keepers .AuthzKeeper , * keepers .GovKeeper ); err != nil {
65
+ ctx .Logger ().Error ("Error running authz grant for ibc wasm client" , "message" , err .Error ())
46
66
return nil , err
47
67
}
48
68
@@ -51,20 +71,27 @@ func CreateUpgradeHandler(
51
71
}
52
72
}
53
73
54
- func AddEthLightWasmLightClient (ctx context.Context , wasmKeeper ibcwasmkeeper.Keeper ) error {
55
- resp , err := wasmKeeper .StoreCode (ctx , & ibcwasmtypes.MsgStoreCode {
56
- Signer : wasmKeeper .GetAuthority (),
57
- WasmByteCode : ethWasmLightClient ,
74
+ func AuthzGrantWasmLightClient (ctx context.Context , authzKeeper authzkeeper.Keeper , govKeeper govkeeper.Keeper ) error {
75
+ sdkCtx := sdk .UnwrapSDKContext (ctx )
76
+ grant , err := authz .NewGrant (
77
+ sdkCtx .BlockTime (),
78
+ authz .NewGenericAuthorization (IBCWasmStoreCodeTypeURL ),
79
+ nil ,
80
+ )
81
+ if err != nil {
82
+ return err
83
+ }
84
+ sdkCtx .Logger ().Info ("Granting IBC Wasm Store Code" , "granter" , govKeeper .GetAuthority (), "grantee" , ClientUploaderAddress )
85
+ resp , err := authzKeeper .Grant (ctx , & authz.MsgGrant {
86
+ Granter : govKeeper .GetAuthority (),
87
+ Grantee : ClientUploaderAddress ,
88
+ Grant : grant ,
58
89
})
59
90
if err != nil {
60
- return errorsmod . Wrap ( err , "failed to store eth wasm light client during upgrade" )
91
+ return err
61
92
}
62
-
63
- actualChecksum := hex .EncodeToString (resp .Checksum )
64
-
65
- if hex .EncodeToString (resp .Checksum ) != ExpectedEthLightClientChecksum {
66
- return fmt .Errorf ("checksum mismatch: expected %s, got %s" , ExpectedEthLightClientChecksum , actualChecksum )
93
+ if resp != nil {
94
+ sdkCtx .Logger ().Info ("Authz Keeper Grant" , "response" , resp .String ())
67
95
}
68
-
69
96
return nil
70
97
}
0 commit comments