-
Notifications
You must be signed in to change notification settings - Fork 0
/
keeper.go
115 lines (102 loc) · 3.23 KB
/
keeper.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package keeper
import (
"fmt"
wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
"github.com/tendermint/tendermint/libs/log"
"github.com/mage-coven/gridiron/x/twasm/types"
)
type Keeper struct {
wasmkeeper.Keeper
cdc codec.Codec
storeKey sdk.StoreKey
contractKeeper wasmtypes.ContractOpsKeeper
paramSpace paramtypes.Subspace
govRouter govtypes.Router
}
func NewKeeper(
cdc codec.Codec,
storeKey sdk.StoreKey,
paramSpace paramtypes.Subspace,
accountKeeper wasmtypes.AccountKeeper,
bankKeeper wasmtypes.BankKeeper,
stakingKeeper wasmtypes.StakingKeeper,
distKeeper wasmtypes.DistributionKeeper,
channelKeeper wasmtypes.ChannelKeeper,
portKeeper wasmtypes.PortKeeper,
capabilityKeeper wasmtypes.CapabilityKeeper,
portSource wasmtypes.ICS20TransferPortSource,
router wasmkeeper.MessageRouter,
queryRouter wasmkeeper.GRPCQueryRouter,
govRouter govtypes.Router,
homeDir string,
twasmConfig types.TWasmConfig,
availableCapabilities string,
opts ...wasmkeeper.Option,
) Keeper {
result := Keeper{
cdc: cdc,
storeKey: storeKey,
paramSpace: paramSpace,
govRouter: govRouter,
}
// configure wasm keeper via options
result.Keeper = wasmkeeper.NewKeeper(
cdc,
storeKey,
paramSpace,
accountKeeper,
bankKeeper,
stakingKeeper,
distKeeper,
channelKeeper,
portKeeper,
capabilityKeeper,
portSource,
router,
queryRouter,
homeDir,
twasmConfig.WasmConfig,
availableCapabilities,
opts...,
)
result.contractKeeper = wasmkeeper.NewDefaultPermissionKeeper(&result.Keeper)
return result
}
func (k Keeper) setParams(ctx sdk.Context, ps wasmtypes.Params) {
k.paramSpace.SetParamSet(ctx, &ps)
}
func WasmQuerier(k *Keeper) wasmtypes.QueryServer {
return wasmkeeper.NewGrpcQuerier(k.cdc, k.storeKey, k, k.QueryGasLimit())
}
func (Keeper) Logger(ctx sdk.Context) log.Logger {
return ModuleLogger(ctx)
}
func ModuleLogger(ctx sdk.Context) log.Logger {
return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName))
}
// setContractDetails stores new gridiron data with the contract info.
func (k Keeper) setContractDetails(ctx sdk.Context, contract sdk.AccAddress, details *types.GridironContractDetails) error {
return k.contractKeeper.SetContractInfoExtension(ctx, contract, details)
}
// getContractDetails loads gridiron details. This method should only be used when no ContractInfo is used anywhere.
func (k Keeper) getContractDetails(ctx sdk.Context, contract sdk.AccAddress) (*types.GridironContractDetails, error) {
contractInfo := k.GetContractInfo(ctx, contract)
if contractInfo == nil {
return nil, sdkerrors.Wrap(wasmtypes.ErrNotFound, "contract info")
}
var details types.GridironContractDetails
if err := contractInfo.ReadExtension(&details); err != nil {
return nil, err
}
return &details, nil
}
// GetContractKeeper returns the contract keeper instance with default permissions set
func (k Keeper) GetContractKeeper() wasmtypes.ContractOpsKeeper {
return k.contractKeeper
}