Skip to content

Commit

Permalink
chore: fix 08-wasm light client documentation (#5439)
Browse files Browse the repository at this point in the history
Co-authored-by: Damian Nolan <[email protected]>
Co-authored-by: Carlos Rodriguez <[email protected]>
  • Loading branch information
3 people authored Dec 19, 2023
1 parent e432abf commit 4c7621c
Showing 1 changed file with 37 additions and 15 deletions.
52 changes: 37 additions & 15 deletions docs/docs/03-light-clients/04-wasm/03-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ The sample code below shows the relevant integration points in `app.go` required
import (
...
"github.com/cosmos/cosmos-sdk/runtime"

cmtos "github.com/cometbft/cometbft/libs/os"

wasm "github.com/cosmos/ibc-go/modules/light-clients/08-wasm"
Expand Down Expand Up @@ -55,7 +55,7 @@ func NewSimApp(
keys := sdk.NewKVStoreKeys(
...
wasmtypes.StoreKey,
)
)

// Instantiate 08-wasm's keeper
// This sample code uses a constructor function that
Expand All @@ -70,22 +70,22 @@ func NewSimApp(
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
wasmVM,
app.GRPCQueryRouter(),
)
)
app.ModuleManager = module.NewManager(
// SDK app modules
...
wasm.NewAppModule(app.WasmClientKeeper),
)
)
app.ModuleManager.SetOrderBeginBlockers(
...
wasmtypes.ModuleName,
...
)
)
app.ModuleManager.SetOrderEndBlockers(
...
wasmtypes.ModuleName,
...
)
)
genesisModuleOrder := []string{
...
wasmtypes.ModuleName,
Expand All @@ -95,7 +95,7 @@ func NewSimApp(
app.ModuleManager.SetOrderExportGenesis(genesisModuleOrder...)
...

// initialize BaseApp
// initialize BaseApp
app.SetInitChainer(app.InitChainer)
...

Expand Down Expand Up @@ -145,7 +145,7 @@ The code to set this up would look something like this:
import (
...
"github.com/cosmos/cosmos-sdk/runtime"

wasmvm "github.com/CosmWasm/wasmvm"
wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
...
Expand All @@ -155,10 +155,10 @@ import (

// instantiate the Wasm VM with the chosen parameters
wasmer, err := wasmvm.NewVM(
dataDir,
availableCapabilities,
contractMemoryLimit,
contractDebugMode,
dataDir,
availableCapabilities,
contractMemoryLimit, // default of 32
contractDebugMode,
memoryCacheSize,
)
if err != nil {
Expand Down Expand Up @@ -238,7 +238,7 @@ wasmConfig := wasmtypes.WasmConfig{
app.WasmClientKeeper = wasmkeeper.NewKeeperWithConfig(
appCodec,
runtime.NewKVStoreService(keys[wasmtypes.StoreKey]),
app.IBCKeeper.ClientKeeper,
app.IBCKeeper.ClientKeeper,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
wasmConfig,
app.GRPCQueryRouter(),
Expand Down Expand Up @@ -276,7 +276,7 @@ You may leave any of the fields in the `QueryPlugins` object as `nil` if you do
Then, we pass the `QueryPlugins` object to the `WithQueryPlugins` option:

```go
querierOption := ibcwasmtypes.WithQueryPlugins(queryPlugins)
querierOption := ibcwasmkeeper.WithQueryPlugins(&queryPlugins)
```

Finally, we pass the option to the `NewKeeperWithConfig` or `NewKeeperWithVM` constructor function during [Keeper instantiation](#keeper-instantiation):
Expand All @@ -285,7 +285,7 @@ Finally, we pass the option to the `NewKeeperWithConfig` or `NewKeeperWithVM` co
app.WasmClientKeeper = wasmkeeper.NewKeeperWithConfig(
appCodec,
runtime.NewKVStoreService(keys[wasmtypes.StoreKey]),
app.IBCKeeper.ClientKeeper,
app.IBCKeeper.ClientKeeper,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
wasmConfig,
app.GRPCQueryRouter(),
Expand Down Expand Up @@ -337,6 +337,28 @@ func CreateWasmUpgradeHandler(

Or alternatively the parameter can be updated via a governance proposal (see at the bottom of section [`Creating clients`](../01-developer-guide/09-setup.md#creating-clients) for an example of how to do this).

## Adding the module to the store

As part of the upgrade migration you must also add the module to the upgrades store.

```go
func (app SimApp) RegisterUpgradeHandlers() {

...

if upgradeInfo.Name == UpgradeName && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
storeUpgrades := storetypes.StoreUpgrades{
Added: []string{
ibcwasmtypes.ModuleName,
},
}

// configure store loader that checks if version == upgradeHeight and applies store upgrades
app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades))
}
}
```

## Adding snapshot support

In order to use the `08-wasm` module chains are required to register the `WasmSnapshotter` extension in the snapshot manager. This snapshotter takes care of persisting the external state, in the form of contract code, of the Wasm VM instance to disk when the chain is snapshotted. [This code](https://github.com/cosmos/ibc-go/blob/2bd29c08fd1fe50b461fc33a25735aa792dc896e/modules/light-clients/08-wasm/testing/simapp/app.go#L768-L776) should be placed in `NewSimApp` function in `app.go`.
Expand Down

0 comments on commit 4c7621c

Please sign in to comment.