9
9
"net/http"
10
10
"os"
11
11
"path/filepath"
12
- "slices"
13
12
"sort"
14
13
15
14
"github.com/CosmWasm/wasmd/x/wasm"
@@ -20,8 +19,6 @@ import (
20
19
"github.com/ignite/cli/ignite/pkg/openapiconsole"
21
20
"github.com/prometheus/client_golang/prometheus"
22
21
"github.com/spf13/cast"
23
- "google.golang.org/protobuf/reflect/protodesc"
24
- "google.golang.org/protobuf/types/descriptorpb"
25
22
26
23
abci "github.com/cometbft/cometbft/abci/types"
27
24
tmos "github.com/cometbft/cometbft/libs/os"
@@ -111,6 +108,7 @@ import (
111
108
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
112
109
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
113
110
111
+ ibccallbacks "github.com/cosmos/ibc-go/modules/apps/callbacks"
114
112
"github.com/cosmos/ibc-go/modules/capability"
115
113
capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper"
116
114
capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types"
@@ -493,6 +491,7 @@ func New(
493
491
// register the governance hooks
494
492
),
495
493
)
494
+
496
495
// Create IBC Keeper
497
496
app .IBCKeeper = ibckeeper .NewKeeper (
498
497
appCodec ,
@@ -504,6 +503,16 @@ func New(
504
503
authtypes .NewModuleAddress (govtypes .ModuleName ).String (),
505
504
)
506
505
506
+ // IBC Fee Module keeper
507
+ app .IBCFeeKeeper = ibcfeekeeper .NewKeeper (
508
+ appCodec , keys [ibcfeetypes .StoreKey ],
509
+ app .IBCKeeper .ChannelKeeper , // may be replaced with IBC middleware
510
+ app .IBCKeeper .ChannelKeeper ,
511
+ app .IBCKeeper .PortKeeper ,
512
+ app .AccountKeeper ,
513
+ app .BankKeeper ,
514
+ )
515
+
507
516
// Create Transfer Keepers
508
517
app .TransferKeeper = ibctransferkeeper .NewKeeper (
509
518
appCodec ,
@@ -518,16 +527,6 @@ func New(
518
527
authtypes .NewModuleAddress (govtypes .ModuleName ).String (),
519
528
)
520
529
521
- // IBC Fee Module keeper
522
- app .IBCFeeKeeper = ibcfeekeeper .NewKeeper (
523
- appCodec , keys [ibcfeetypes .StoreKey ],
524
- app .IBCKeeper .ChannelKeeper , // may be replaced with IBC middleware
525
- app .IBCKeeper .ChannelKeeper ,
526
- app .IBCKeeper .PortKeeper ,
527
- app .AccountKeeper ,
528
- app .BankKeeper ,
529
- )
530
-
531
530
app .ICAHostKeeper = icahostkeeper .NewKeeper (
532
531
appCodec ,
533
532
keys [icahosttypes .StoreKey ],
@@ -540,6 +539,8 @@ func New(
540
539
app .MsgServiceRouter (),
541
540
authtypes .NewModuleAddress (govtypes .ModuleName ).String (),
542
541
)
542
+ // set grpc router for ica host
543
+ app .ICAHostKeeper .WithQueryRouter (app .GRPCQueryRouter ())
543
544
544
545
app .ICAControllerKeeper = icacontrollerkeeper .NewKeeper (
545
546
appCodec ,
@@ -606,36 +607,53 @@ func New(
606
607
app .GRPCQueryRouter (),
607
608
wasmDir ,
608
609
wasmConfig ,
609
- axonewasm . AllCapabilities (),
610
+ wasmkeeper . BuiltInCapabilities (),
610
611
authtypes .NewModuleAddress (govtypes .ModuleName ).String (),
611
612
wasmOpts ... ,
612
613
)
613
614
614
- // Create Transfer Stack
615
- var transferStack ibcporttypes.IBCModule
616
- transferStack = transfer .NewIBCModule (app .TransferKeeper )
617
- transferStack = ibcfee .NewIBCMiddleware (transferStack , app .IBCFeeKeeper )
615
+ // Create fee enabled wasm ibc Stack
616
+ var wasmStack ibcporttypes.IBCModule
617
+ wasmStackIBCHandler := wasm .NewIBCHandler (app .WasmKeeper , app .IBCKeeper .ChannelKeeper , app .IBCFeeKeeper )
618
+ wasmStack = ibcfee .NewIBCMiddleware (wasmStackIBCHandler , app .IBCFeeKeeper )
619
+
618
620
// Create Interchain Accounts Stack
619
621
// SendPacket, since it is originating from the application to core IBC:
620
622
// icaAuthModuleKeeper.SendTx -> icaController.SendPacket -> fee.SendPacket -> channel.SendPacket
621
623
var icaControllerStack ibcporttypes.IBCModule
624
+
622
625
// integration point for custom authentication modules
623
626
//nolint:lll
624
627
// see https://medium.com/the-interchain-foundation/ibc-go-v6-changes-to-interchain-accounts-and-how-it-impacts-your-chain-806c185300d7
625
628
var noAuthzModule ibcporttypes.IBCModule
626
629
icaControllerStack = icacontroller .NewIBCMiddleware (noAuthzModule , app .ICAControllerKeeper )
630
+ icaControllerStack = icacontroller .NewIBCMiddleware (icaControllerStack , app .ICAControllerKeeper )
631
+ icaControllerStack = ibccallbacks .NewIBCMiddleware (
632
+ icaControllerStack ,
633
+ app .IBCFeeKeeper ,
634
+ wasmStackIBCHandler ,
635
+ wasm .DefaultMaxIBCCallbackGas ,
636
+ )
637
+ icaICS4Wrapper := icaControllerStack .(ibcporttypes.ICS4Wrapper )
627
638
icaControllerStack = ibcfee .NewIBCMiddleware (icaControllerStack , app .IBCFeeKeeper )
628
639
640
+ // Since the callbacks middleware itself is an ics4wrapper, it needs to be passed to the ica controller keeper
641
+ app .ICAControllerKeeper .WithICS4Wrapper (icaICS4Wrapper )
642
+
629
643
// RecvPacket, message that originates from core IBC and goes down to app, the flow is:
630
644
// channel.RecvPacket -> fee.OnRecvPacket -> icaHost.OnRecvPacket
631
645
var icaHostStack ibcporttypes.IBCModule
632
646
icaHostStack = icahost .NewIBCModule (app .ICAHostKeeper )
633
647
icaHostStack = ibcfee .NewIBCMiddleware (icaHostStack , app .IBCFeeKeeper )
634
648
635
- // Create fee enabled wasm ibc Stack
636
- var wasmStack ibcporttypes.IBCModule
637
- wasmStack = wasm .NewIBCHandler (app .WasmKeeper , app .IBCKeeper .ChannelKeeper , app .IBCFeeKeeper )
638
- wasmStack = ibcfee .NewIBCMiddleware (wasmStack , app .IBCFeeKeeper )
649
+ // Create Transfer Stack
650
+ var transferStack ibcporttypes.IBCModule
651
+ transferStack = transfer .NewIBCModule (app .TransferKeeper )
652
+ transferStack = ibccallbacks .NewIBCMiddleware (transferStack , app .IBCFeeKeeper , wasmStackIBCHandler , wasm .DefaultMaxIBCCallbackGas )
653
+ transferICS4Wrapper := transferStack .(ibcporttypes.ICS4Wrapper )
654
+ transferStack = ibcfee .NewIBCMiddleware (transferStack , app .IBCFeeKeeper )
655
+ // Since the callbacks middleware itself is an ics4wrapper, it needs to be passed to the ica controller keeper
656
+ app .TransferKeeper .WithICS4Wrapper (transferICS4Wrapper )
639
657
640
658
// Create static IBC router, add transfer route, then set and seal it
641
659
ibcRouter := ibcporttypes .NewRouter ()
@@ -860,17 +878,8 @@ func New(
860
878
app .setPostHandler ()
861
879
862
880
// At startup, after all modules have been registered, check that all proto
863
- // annotations are correct, ignoring `google.crypto.tink`.
864
- fds , err := proto .MergedGlobalFileDescriptors ()
865
- if err != nil {
866
- panic (err )
867
- }
868
- fds = & descriptorpb.FileDescriptorSet {
869
- File : slices .DeleteFunc (fds .File , func (e * descriptorpb.FileDescriptorProto ) bool {
870
- return e .GetPackage () == "google.crypto.tink"
871
- }),
872
- }
873
- protoFiles , err := protodesc .NewFiles (fds )
881
+ // annotations are correct.
882
+ protoFiles , err := proto .MergedRegistry ()
874
883
if err != nil {
875
884
panic (err )
876
885
}
0 commit comments