Skip to content

Commit

Permalink
feat: enable VPURSE_GIVE_TO_FEE_COLLECTOR
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelfig committed May 21, 2021
1 parent f916ed5 commit b56fa7f
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 4 deletions.
2 changes: 1 addition & 1 deletion golang/cosmos/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ func NewAgoricApp(

app.VpurseKeeper = vpurse.NewKeeper(
appCodec, keys[vpurse.StoreKey],
app.BankKeeper,
app.BankKeeper, authtypes.FeeCollectorName,
callToController,
)
vpurseModule := vpurse.NewAppModule(app.VpurseKeeper)
Expand Down
12 changes: 11 additions & 1 deletion golang/cosmos/x/vpurse/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ type Keeper struct {
storeKey sdk.StoreKey
cdc codec.Marshaler

bankKeeper bankkeeper.Keeper
bankKeeper bankkeeper.Keeper
feeCollectorName string

// CallToController dispatches a message to the controlling process
CallToController func(ctx sdk.Context, str string) (string, error)
Expand All @@ -26,13 +27,15 @@ type Keeper struct {
func NewKeeper(
cdc codec.Marshaler, key sdk.StoreKey,
bankKeeper bankkeeper.Keeper,
feeCollectorName string,
callToController func(ctx sdk.Context, str string) (string, error),
) Keeper {

return Keeper{
storeKey: key,
cdc: cdc,
bankKeeper: bankKeeper,
feeCollectorName: feeCollectorName,
CallToController: callToController,
}
}
Expand All @@ -58,6 +61,13 @@ func (k Keeper) GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins {
return k.bankKeeper.GetAllBalances(ctx, addr)
}

func (k Keeper) SendCoinsToFeeCollector(ctx sdk.Context, amt sdk.Coins) error {
if err := k.bankKeeper.MintCoins(ctx, types.ModuleName, amt); err != nil {
return err
}
return k.bankKeeper.SendCoinsFromModuleToModule(ctx, types.ModuleName, k.feeCollectorName, amt)
}

func (k Keeper) SendCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) error {
if err := k.bankKeeper.MintCoins(ctx, types.ModuleName, amt); err != nil {
return err
Expand Down
21 changes: 19 additions & 2 deletions golang/cosmos/x/vpurse/vpurse.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,9 @@ func (ch portHandler) Receive(ctx *swingset.ControllerContext, str string) (ret
}
if bz == nil {
ret = "true"
} else {
ret = string(bz)
}
ret = string(bz)

case "VPURSE_GIVE":
addr, err := sdk.AccAddressFromBech32(msg.Recipient)
Expand All @@ -140,8 +141,24 @@ func (ch portHandler) Receive(ctx *swingset.ControllerContext, str string) (ret
}
if bz == nil {
ret = "true"
} else {
ret = string(bz)
}
ret = string(bz)

case "VPURSE_GIVE_TO_FEE_COLLECTOR":
value, ok := sdk.NewIntFromString(msg.Amount)
if !ok {
return "", fmt.Errorf("cannot convert %s to int", msg.Amount)
}
coins := sdk.NewCoins(sdk.NewCoin(msg.Denom, value))
if err := keeper.SendCoinsToFeeCollector(ctx.Context, coins); err != nil {
return "", fmt.Errorf("cannot give %s coins: %w", coins.Sort().String(), err)
}
if err != nil {
return "", err
}
// We don't supply the module balance, since the controller shouldn't know.
ret = "true"

default:
err = fmt.Errorf("unrecognized type %s", msg.Type)
Expand Down

0 comments on commit b56fa7f

Please sign in to comment.