Skip to content

Commit 9cb6a55

Browse files
committed
++
1 parent f86e455 commit 9cb6a55

File tree

4 files changed

+149
-7
lines changed

4 files changed

+149
-7
lines changed

x/incentive/codec.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
77
sdk "github.com/cosmos/cosmos-sdk/types"
88
"github.com/cosmos/cosmos-sdk/types/msgservice"
9-
proto "github.com/gogo/protobuf/proto"
109
)
1110

1211
var (
@@ -24,12 +23,12 @@ func init() {
2423
// concrete types on the provided LegacyAmino codec. These types are used for
2524
// Amino JSON serialization.
2625
func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
27-
cdc.RegisterConcrete(&MsgClaim{}, proto.MessageName(&MsgClaim{}), nil)
28-
cdc.RegisterConcrete(&MsgBond{}, proto.MessageName(&MsgBond{}), nil)
29-
cdc.RegisterConcrete(&MsgBeginUnbonding{}, proto.MessageName(&MsgBeginUnbonding{}), nil)
30-
cdc.RegisterConcrete(&MsgSponsor{}, proto.MessageName(&MsgSponsor{}), nil)
31-
cdc.RegisterConcrete(&MsgGovCreateProgram{}, proto.MessageName(&MsgGovCreateProgram{}), nil)
32-
cdc.RegisterConcrete(&MsgGovCreateAndSponsorProgram{}, proto.MessageName(&MsgGovCreateAndSponsorProgram{}), nil)
26+
cdc.RegisterConcrete(&MsgClaim{}, "umee/incentive/MsgClaim", nil)
27+
cdc.RegisterConcrete(&MsgBond{}, "umee/incentive/MsgBond", nil)
28+
cdc.RegisterConcrete(&MsgBeginUnbonding{}, "umee/incentive/MsgBeginUnbonding", nil)
29+
cdc.RegisterConcrete(&MsgSponsor{}, "umee/incentive/MsgSponsor", nil)
30+
cdc.RegisterConcrete(&MsgGovCreateProgram{}, "umee/incentive/MsgGovCreateProgram", nil)
31+
cdc.RegisterConcrete(&MsgGovCreateAndSponsorProgram{}, "umee/incentive/MsgGovCreateAndSponsorProgram", nil)
3332
}
3433

3534
func RegisterInterfaces(registry cdctypes.InterfaceRegistry) {

x/incentive/errors.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import (
77
)
88

99
var (
10+
// 0 = TODO
11+
ErrNotImplemented = sdkerrors.Register(ModuleName, 0, "not implemented")
12+
1013
// 1XX = General
1114
ErrInvalidProgramID = sdkerrors.Register(ModuleName, 100, "invalid program ID")
1215
ErrNilAsset = sdkerrors.Register(ModuleName, 101, "nil asset")

x/incentive/expected_keepers.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package incentive
2+
3+
import (
4+
sdk "github.com/cosmos/cosmos-sdk/types"
5+
)
6+
7+
// BankKeeper defines the expected x/bank keeper interface.
8+
type BankKeeper interface {
9+
SendCoinsFromModuleToAccount(
10+
ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins,
11+
) error
12+
SendCoinsFromAccountToModule(
13+
ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins,
14+
) error
15+
SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
16+
}
17+
18+
// LeverageKeeper defines the expected x/leverage keeper interface.
19+
type LeverageKeeper interface {
20+
GetCollateral(ctx sdk.Context, borrowerAddr sdk.AccAddress, denom string) sdk.Coin
21+
// AssertNotBlacklisted(ctx sdk.Context, denom string) error
22+
}

x/incentive/genesis.go

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package incentive
2+
3+
import (
4+
"encoding/json"
5+
6+
"github.com/cosmos/cosmos-sdk/codec"
7+
sdk "github.com/cosmos/cosmos-sdk/types"
8+
)
9+
10+
// NewGenesisState creates a new GenesisState object
11+
func NewGenesisState(
12+
params Params,
13+
programs []IncentiveProgram,
14+
nextID uint32,
15+
totalBonded sdk.Coins,
16+
bondAmounts []BondAmount,
17+
pendingRewards []PendingReward,
18+
rewardBases []RewardBasis,
19+
rewardAccumulators []RewardAccumulator,
20+
unbondings []Unbonding,
21+
) *GenesisState {
22+
return &GenesisState{
23+
Params: params,
24+
Programs: programs,
25+
NextProgramId: nextID,
26+
TotalBonded: totalBonded,
27+
BondAmounts: bondAmounts,
28+
PendingRewards: pendingRewards,
29+
RewardBases: rewardBases,
30+
RewardAccumulators: rewardAccumulators,
31+
Unbondings: unbondings,
32+
}
33+
}
34+
35+
// DefaultGenesis returns the default genesis state of the x/incentive module.
36+
func DefaultGenesis() *GenesisState {
37+
return &GenesisState{
38+
Params: DefaultParams(),
39+
NextProgramId: 1,
40+
}
41+
}
42+
43+
// Validate performs basic genesis state validation returning an error upon any
44+
// failure.
45+
func (gs GenesisState) Validate() error {
46+
if err := gs.Params.Validate(); err != nil {
47+
return err
48+
}
49+
50+
// TODO: Finish validation logic - includes in-progress programs
51+
// all ID < NextID (and NextID = len(programs) + 1)
52+
53+
for _, p := range gs.Programs {
54+
if err := p.Validate(); err != nil {
55+
return err
56+
}
57+
}
58+
59+
return nil
60+
}
61+
62+
// GetGenesisStateFromAppState returns x/incentive GenesisState given raw application
63+
// genesis state.
64+
func GetGenesisStateFromAppState(cdc codec.JSONCodec, appState map[string]json.RawMessage) *GenesisState {
65+
var genesisState GenesisState
66+
67+
if appState[ModuleName] != nil {
68+
cdc.MustUnmarshalJSON(appState[ModuleName], &genesisState)
69+
}
70+
71+
return &genesisState
72+
}
73+
74+
// NewBondAmount creates the BondAmount struct used in GenesisState
75+
func NewBondAmount(addr string, tier uint32, amount sdk.Coin) BondAmount {
76+
return BondAmount{
77+
Account: addr,
78+
Tier: tier,
79+
Amount: amount,
80+
}
81+
}
82+
83+
// NewPendingReward creates the PendingReward struct used in GenesisState
84+
func NewPendingReward(addr string, rewards sdk.Coins) PendingReward {
85+
return PendingReward{
86+
Account: addr,
87+
PendingReward: rewards,
88+
}
89+
}
90+
91+
// NewRewardBasis creates the RewardBasis struct used in GenesisState
92+
func NewRewardBasis(addr, denom string, tier uint32, basis sdk.DecCoins) RewardBasis {
93+
return RewardBasis{
94+
Account: addr,
95+
Denom: denom,
96+
Tier: tier,
97+
RewardBasis: basis,
98+
}
99+
}
100+
101+
// NewRewardAccumulator creates the RewardAccumulator struct used in GenesisState
102+
func NewRewardAccumulator(addr, denom string, tier uint32, basis sdk.DecCoins) RewardAccumulator {
103+
return RewardAccumulator{
104+
Denom: denom,
105+
Tier: tier,
106+
RewardBasis: basis,
107+
}
108+
}
109+
110+
// NewUnbonding creates the Unbonding struct used in GenesisState
111+
func NewUnbonding(addr string, tier uint32, unbondHeight uint64, amount sdk.Coin) Unbonding {
112+
return Unbonding{
113+
Account: addr,
114+
Tier: tier,
115+
End: unbondHeight,
116+
Amount: amount,
117+
}
118+
}

0 commit comments

Comments
 (0)