Skip to content

Commit

Permalink
feat(callback): cherrypick callback module (#109)
Browse files Browse the repository at this point in the history
Co-authored-by: Rockstar Rhino <[email protected]>
Co-authored-by: rockstarRhino <“[email protected]”>
Co-authored-by: ducnt131 <[email protected]>
  • Loading branch information
4 people authored Aug 13, 2024
1 parent 7f72f1a commit a07e899
Show file tree
Hide file tree
Showing 149 changed files with 21,876 additions and 22 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ jobs:
path: /tmp/e2e.tar
e2e-tests:
needs: build-image
uses: dymensionxyz/e2e-tests/.github/workflows/e2e-test-wasm-workflow-call.yaml@main
uses: dymensionxyz/e2e-tests/.github/workflows/e2e-test-wasm-workflow-call.yaml@f94f612e570deef0c9ccf11ef271ad25f6703740
with:
rollapp_wasm_ci: "e2e"
dymension_ci : "3.1.0"
56 changes: 53 additions & 3 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,14 @@ import (

distr "github.com/dymensionxyz/dymension-rdk/x/dist"
distrkeeper "github.com/dymensionxyz/dymension-rdk/x/dist/keeper"

"github.com/dymensionxyz/rollapp-wasm/x/callback"
callbackKeeper "github.com/dymensionxyz/rollapp-wasm/x/callback/keeper"
callbackTypes "github.com/dymensionxyz/rollapp-wasm/x/callback/types"

"github.com/dymensionxyz/rollapp-wasm/x/cwerrors"
cwerrorsKeeper "github.com/dymensionxyz/rollapp-wasm/x/cwerrors/keeper"
cwerrorsTypes "github.com/dymensionxyz/rollapp-wasm/x/cwerrors/types"
)

const (
Expand All @@ -148,7 +156,8 @@ var (
ibctransfertypes.StoreKey, capabilitytypes.StoreKey,
wasmtypes.StoreKey, gaslesstypes.StoreKey,
denommetadatamoduletypes.StoreKey,
hubgentypes.StoreKey,
callbackTypes.StoreKey,
cwerrorsTypes.StoreKey,
}
)

Expand Down Expand Up @@ -195,6 +204,8 @@ var (
hubgenesis.AppModuleBasic{},
wasm.AppModuleBasic{},
denommetadata.AppModuleBasic{},
callback.AppModuleBasic{},
cwerrors.AppModuleBasic{},
)

// module account permissions
Expand All @@ -211,10 +222,11 @@ var (
hubgentypes.ModuleName: {authtypes.Minter},
denommetadatamoduletypes.ModuleName: nil,
gaslesstypes.ModuleName: nil,
callbackTypes.ModuleName: nil,
}

// module accounts that are allowed to receive tokens
maccCanReceiveTokens = []string{
maccCanReceiveTokens = []string{ //nolint
distrtypes.ModuleName,
hubgentypes.ModuleName,
}
Expand Down Expand Up @@ -270,6 +282,8 @@ type App struct {
WasmKeeper wasmkeeper.Keeper
FeeGrantKeeper feegrantkeeper.Keeper
GaslessKeeper gaslesskeeper.Keeper
CallbackKeeper callbackKeeper.Keeper
CWErrorsKeeper cwerrorsKeeper.Keeper

// make scoped keepers public for test purposes
ScopedIBCKeeper capabilitykeeper.ScopedKeeper
Expand Down Expand Up @@ -322,7 +336,7 @@ func NewRollapp(
keys := sdk.NewKVStoreKeys(
kvstorekeys...,
)
tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey)
tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey, cwerrorsTypes.TStoreKey)
memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey)

// load state streaming if enabled
Expand Down Expand Up @@ -506,6 +520,21 @@ func NewRollapp(
app.AccountKeeper,
)

app.CallbackKeeper = callbackKeeper.NewKeeper(
appCodec,
keys[callbackTypes.StoreKey],
&app.WasmKeeper,
app.BankKeeper,
)

app.CWErrorsKeeper = cwerrorsKeeper.NewKeeper(
appCodec,
keys[cwerrorsTypes.StoreKey],
tkeys[cwerrorsTypes.TStoreKey],
&app.WasmKeeper,
app.BankKeeper,
)

wasmDir := filepath.Join(homePath, "wasm")
wasmConfig, err := wasm.ReadWasmConfig(appOpts)
if err != nil {
Expand All @@ -517,6 +546,11 @@ func NewRollapp(
govRouter.AddRoute(wasm.RouterKey, wasm.NewWasmProposalHandler(app.WasmKeeper, enabledProposals))
}

// Include the x/cwerrors query to stargate queries
wasmOpts = append(wasmOpts, wasmkeeper.WithQueryPlugins(&wasmkeeper.QueryPlugins{
Stargate: wasmkeeper.AcceptListStargateQuerier(getAcceptedStargateQueries(), app.GRPCQueryRouter(), appCodec),
}))

// The last arguments can contain custom message handlers, and custom query handlers,
// if we want to allow any custom callbacks
availableCapabilities := strings.Join(AllCapabilities(), ",")
Expand Down Expand Up @@ -587,6 +621,8 @@ func NewRollapp(
upgrade.NewAppModule(app.UpgradeKeeper),
hubgenesis.NewAppModule(appCodec, app.HubGenesisKeeper, app.AccountKeeper),
denommetadata.NewAppModule(app.DenomMetadataKeeper, app.BankKeeper),
callback.NewAppModule(app.appCodec, app.CallbackKeeper, app.WasmKeeper, app.CWErrorsKeeper),
cwerrors.NewAppModule(app.appCodec, app.CWErrorsKeeper, app.WasmKeeper),
}

app.mm = module.NewManager(modules...)
Expand Down Expand Up @@ -618,6 +654,8 @@ func NewRollapp(
hubgentypes.ModuleName,
denommetadatamoduletypes.ModuleName,
wasm.ModuleName,
callbackTypes.ModuleName,
cwerrorsTypes.ModuleName, // does not have begin blocker
}
app.mm.SetOrderBeginBlockers(beginBlockersList...)

Expand All @@ -643,6 +681,8 @@ func NewRollapp(
hubgentypes.ModuleName,
denommetadatamoduletypes.ModuleName,
wasm.ModuleName,
callbackTypes.ModuleName,
cwerrorsTypes.ModuleName,
}
app.mm.SetOrderEndBlockers(endBlockersList...)

Expand Down Expand Up @@ -674,6 +714,8 @@ func NewRollapp(
hubgentypes.ModuleName,
denommetadatamoduletypes.ModuleName,
wasm.ModuleName,
callbackTypes.ModuleName,
cwerrorsTypes.ModuleName,
}
app.mm.SetOrderInitGenesis(initGenesisList...)

Expand Down Expand Up @@ -1008,5 +1050,13 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
paramsKeeper.Subspace(gaslesstypes.ModuleName)

paramsKeeper.Subspace(wasmtypes.ModuleName)
paramsKeeper.Subspace(callbackTypes.ModuleName)
paramsKeeper.Subspace(cwerrorsTypes.ModuleName)
return paramsKeeper
}

func getAcceptedStargateQueries() wasmkeeper.AcceptedStargateQueries {
return wasmkeeper.AcceptedStargateQueries{
"/rollapp.cwerrors.v1.Query/Errors": &cwerrorsTypes.QueryErrorsRequest{},
}
}
36 changes: 36 additions & 0 deletions app/test_app.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package app

import (
abci "github.com/tendermint/tendermint/abci/types"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
tmtypes "github.com/tendermint/tendermint/types"
"time"

// unnamed import of statik for swagger UI support
_ "github.com/cosmos/cosmos-sdk/client/docs/statik"
)

var DefaultConsensusParams = &abci.ConsensusParams{
Block: &abci.BlockParams{
MaxBytes: 200000,
MaxGas: -1,
},
Evidence: &tmproto.EvidenceParams{
MaxAgeNumBlocks: 302400,
MaxAgeDuration: 504 * time.Hour, // 3 weeks is the max duration
MaxBytes: 10000,
},
Validator: &tmproto.ValidatorParams{
PubKeyTypes: []string{
tmtypes.ABCIPubKeyTypeEd25519,
},
},
}

// EmptyAppOptions is a stub implementing AppOptions
type EmptyAppOptions struct{}

// Get implements AppOptions
func (ao EmptyAppOptions) Get(o string) interface{} {
return nil
}
1 change: 1 addition & 0 deletions app/wasm.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,6 @@ func AllCapabilities() []string {
"stargate",
"cosmwasm_1_1",
"cosmwasm_1_2",
"cosmwasm_1_3",
}
}
11 changes: 11 additions & 0 deletions contracts/callback-test/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
root = true

[*]
indent_style = space
indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.rs]
indent_size = 4
16 changes: 16 additions & 0 deletions contracts/callback-test/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Build results
/target
/schema

# Cargo+Git helper file (https://github.com/rust-lang/cargo/blob/0.44.1/src/cargo/sources/git/utils.rs#L320-L327)
.cargo-ok

# Text file backups
**/*.rs.bk

# macOS
.DS_Store

# IDEs
*.iml
.idea
Loading

0 comments on commit a07e899

Please sign in to comment.