diff --git a/demo/app/app.go b/demo/app/app.go index 156b232..6ba845d 100644 --- a/demo/app/app.go +++ b/demo/app/app.go @@ -12,6 +12,7 @@ import ( wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" appparams "github.com/babylonlabs-io/babylon-sdk/demo/app/params" + appwasm "github.com/babylonlabs-io/babylon-sdk/demo/app/wasm" abci "github.com/cometbft/cometbft/abci/types" tmos "github.com/cometbft/cometbft/libs/os" cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" @@ -492,6 +493,9 @@ func NewConsumerApp( // add support for the custom queries wasmkeeper.WithQueryHandlerDecorator(bbnkeeper.NewQueryDecorator(app.BabylonKeeper)), ) + // Add grpc query support for the whitelisted grpc queries + wasmOpts = append(wasmOpts, appwasm.RegisterGrpcQueries(bApp, appCodec)...) + // The last arguments can contain custom message handlers, and custom query handlers, // if we want to allow any custom callbacks availableCapabilities := AllCapabilities() diff --git a/demo/app/test_helpers.go b/demo/app/test_helpers.go index 7449e0f..6e4e084 100644 --- a/demo/app/test_helpers.go +++ b/demo/app/test_helpers.go @@ -66,6 +66,7 @@ func setup(t testing.TB, chainID string, withGenesis bool, invCheckPeriod uint, appOptions := make(simsutils.AppOptionsMap, 0) appOptions[flags.FlagHome] = nodeHome // ensure unique folder + appOptions[server.FlagTrace] = true appOptions[server.FlagInvCheckPeriod] = invCheckPeriod app := NewConsumerApp(log.NewNopLogger(), db, nil, true, appOptions, opts, bam.SetChainID(chainID), bam.SetSnapshot(snapshotStore, snapshottypes.SnapshotOptions{KeepRecent: 2})) if withGenesis { diff --git a/demo/app/wasm/grpc_whitelist.go b/demo/app/wasm/grpc_whitelist.go new file mode 100644 index 0000000..9b4b342 --- /dev/null +++ b/demo/app/wasm/grpc_whitelist.go @@ -0,0 +1,29 @@ +package wasm + +import ( + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" +) + +func RegisterGrpcQueries(bApp *baseapp.BaseApp, appCodec codec.Codec) []wasmkeeper.Option { + queryRouter := bApp.GRPCQueryRouter() + queryPluginOpt := wasmkeeper.WithQueryPlugins( + &wasmkeeper.QueryPlugins{ + Stargate: wasmkeeper.AcceptListStargateQuerier(WhitelistedGrpcQuery(), queryRouter, appCodec), + Grpc: wasmkeeper.AcceptListGrpcQuerier(WhitelistedGrpcQuery(), queryRouter, appCodec), + }) + + return []wasmkeeper.Option{ + queryPluginOpt, + } +} + +// WhitelistedGrpcQuery returns the whitelisted Grpc queries +func WhitelistedGrpcQuery() wasmkeeper.AcceptedQueries { + return wasmkeeper.AcceptedQueries{ + // mint + "/cosmos.mint.v1beta1.Query/Params": &minttypes.QueryParamsResponse{}, + } +} diff --git a/tests/scripts/copy_local_wasm.sh b/tests/scripts/copy_local_wasm.sh index 4288b17..8782b20 100755 --- a/tests/scripts/copy_local_wasm.sh +++ b/tests/scripts/copy_local_wasm.sh @@ -2,7 +2,7 @@ set -o errexit -o nounset -o pipefail command -v shellcheck >/dev/null && shellcheck "$0" -CONTRACTS="babylon_contract btc_staking" +CONTRACTS="babylon_contract btc_staking btc_finality" OUTPUT_FOLDER="$(dirname "$0")/../testdata" echo "DEV-only: copy from local built instead of downloading" diff --git a/tests/testdata/babylon_contract.wasm b/tests/testdata/babylon_contract.wasm index 8ee3508..e208b4d 100644 Binary files a/tests/testdata/babylon_contract.wasm and b/tests/testdata/babylon_contract.wasm differ diff --git a/tests/testdata/btc_finality.wasm b/tests/testdata/btc_finality.wasm index 6e7f9ab..a7e12e7 100644 Binary files a/tests/testdata/btc_finality.wasm and b/tests/testdata/btc_finality.wasm differ diff --git a/tests/testdata/btc_staking.wasm b/tests/testdata/btc_staking.wasm index 7b79011..49b64fe 100644 Binary files a/tests/testdata/btc_staking.wasm and b/tests/testdata/btc_staking.wasm differ diff --git a/tests/testdata/version.txt b/tests/testdata/version.txt index b08bef2..f1a8606 100644 --- a/tests/testdata/version.txt +++ b/tests/testdata/version.txt @@ -1 +1 @@ -v0.10.0-rc.0 +v0.11.0-rc.1 diff --git a/x/babylon/keeper/wasm.go b/x/babylon/keeper/wasm.go index 20561ad..60bad02 100644 --- a/x/babylon/keeper/wasm.go +++ b/x/babylon/keeper/wasm.go @@ -4,6 +4,7 @@ import ( "context" "encoding/hex" "encoding/json" + "fmt" errorsmod "cosmossdk.io/errors" "github.com/babylonlabs-io/babylon-sdk/x/babylon/contract" @@ -113,6 +114,6 @@ func (k Keeper) doSudoCall(ctx sdk.Context, contractAddr sdk.AccAddress, msg con return errorsmod.Wrap(err, "marshal sudo msg") } resp, err := k.wasm.Sudo(ctx, contractAddr, bz) - k.Logger(ctx).Debug("response of sudo call %v to contract %s: %v", bz, contractAddr.String(), resp) + k.Logger(ctx).Debug(fmt.Sprintf("response of sudo call %v to contract %s: %v", bz, contractAddr.String(), resp)) return err }