completed auction-creation escrow

master
michael 2022-09-01 07:08:30 +00:00
parent 69f2fa82de
commit 5c41dc7fef
2 changed files with 13 additions and 2 deletions

View File

@ -33,12 +33,12 @@ func (k msgServer) NewAuction(goCtx context.Context, msg *types.MsgNewAuction) (
Ceiling: msg.Ceiling,
}
addr, err := sdk.AccAddressFromBech32(msg.Creator)
senderAddr, err := sdk.AccAddressFromBech32(msg.Creator)
if err != nil {
return nil, fmt.Errorf("sender address `%s` format invalid (bech32 required)", msg.Creator)
}
spendable := k.bank.SpendableCoins(ctx, addr)
spendable := k.bank.SpendableCoins(ctx, senderAddr)
// if balance does not exceed or equal proposed auction ceiling...
ceiling := new(big.Int)
ceiling.SetString(auction.Ceiling, 10)
@ -46,6 +46,15 @@ func (k msgServer) NewAuction(goCtx context.Context, msg *types.MsgNewAuction) (
return nil, fmt.Errorf("not enough balance to set ceiling %s%s", msg.Ceiling, auction.Denom)
}
coins := sdk.NewCoins(sdk.Coin{
Amount: spendable.AmountOf(auction.Ceiling),
Denom: auction.Denom,
})
if err := k.bank.SendCoinsFromAccountToModule(ctx, senderAddr, "cosmostest", coins); err != nil {
return nil, fmt.Errorf("failed to transfer %s%s", auction.Ceiling, auction.Denom)
}
k.Keeper.SetAuction(ctx, auction)
next.AuctionId++

View File

@ -14,5 +14,7 @@ type AccountKeeper interface {
// BankKeeper defines the expected interface needed to retrieve account balances.
type BankKeeper interface {
SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error
SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error
// Methods imported from bank should be defined here
}