/
wasm.go
37 lines (30 loc) · 1.07 KB
/
wasm.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package keeper
import (
"encoding/json"
errorsmod "cosmossdk.io/errors"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/osmosis-labs/mesh-security-sdk/x/meshsecurity/contract"
)
// SendHandleEpoch send epoch handling message to virtual staking contract via sudo
func (k Keeper) SendHandleEpoch(ctx sdk.Context, contractAddr sdk.AccAddress) error {
msg := contract.SudoMsg{
HandleEpoch: &struct{}{},
}
return k.doSudoCall(ctx, contractAddr, msg)
}
// SendValsetUpdate submit the valset update report to the virtual staking contract via sudo
func (k Keeper) SendValsetUpdate(ctx sdk.Context, contractAddr sdk.AccAddress, v contract.ValsetUpdate) error {
msg := contract.SudoMsg{
ValsetUpdate: &v,
}
return k.doSudoCall(ctx, contractAddr, msg)
}
// caller must ensure gas limits are set proper and handle panics
func (k Keeper) doSudoCall(ctx sdk.Context, contractAddr sdk.AccAddress, msg contract.SudoMsg) error {
bz, err := json.Marshal(msg)
if err != nil {
return errorsmod.Wrap(err, "marshal sudo msg")
}
_, err = k.wasm.Sudo(ctx, contractAddr, bz)
return err
}