send with correct API

This commit is contained in:
David Terpay 2024-05-20 16:52:24 -04:00
parent db739e903e
commit 85c537bcc5
No known key found for this signature in database
GPG Key ID: 627EFB00DADF0CD1
8 changed files with 42 additions and 47 deletions

View File

@ -102,10 +102,7 @@ func (k Keeper) ExtractBid(ctx sdk.Context, bidder sdk.AccAddress, bid sdk.Coin)
var proposerReward sdk.Coins
if params.ProposerFee.IsZero() {
// send the entire bid to the escrow account when no proposer fee is set
if err := k.bankKeeper.SendCoins(ctx, bidder, escrowAddress, sdk.NewCoins(bid)); err != nil {
return err
}
return k.SendBid(ctx, bidder, escrowAddress, sdk.NewCoins(bid))
} else {
rewardsAddress, err := k.rewardsAddressProvider.GetRewardsAddress(ctx)
if err != nil {
@ -118,7 +115,7 @@ func (k Keeper) ExtractBid(ctx sdk.Context, bidder sdk.AccAddress, bid sdk.Coin)
bid := sdk.NewDecCoinsFromCoins(bid)
proposerReward, _ = bid.MulDecTruncate(params.ProposerFee).TruncateDecimal()
if err := k.bankKeeper.SendCoins(ctx, bidder, rewardsAddress, proposerReward); err != nil {
if err := k.SendBid(ctx, bidder, rewardsAddress, proposerReward); err != nil {
return err
}
@ -127,7 +124,7 @@ func (k Keeper) ExtractBid(ctx sdk.Context, bidder sdk.AccAddress, bid sdk.Coin)
escrowTotal := bid.Sub(sdk.NewDecCoinsFromCoins(proposerReward...))
escrowReward, _ := escrowTotal.TruncateDecimal()
if err := k.bankKeeper.SendCoins(ctx, bidder, escrowAddress, escrowReward); err != nil {
if err := k.SendBid(ctx, bidder, escrowAddress, escrowReward); err != nil {
return err
}
}
@ -206,6 +203,16 @@ func (k Keeper) ValidateBundleTimeouts(bidInfo *types.BidInfo) error {
return nil
}
// SendBid sends the bid from the bidder to the relevant address.
func (k Keeper) SendBid(ctx sdk.Context, from, to sdk.AccAddress, bid sdk.Coins) error {
moduleAddress := k.accountKeeper.GetModuleAddress(types.ModuleName)
if moduleAddress.Equals(to) {
return k.bankKeeper.SendCoinsFromAccountToModule(ctx, from, types.ModuleName, bid)
}
return k.bankKeeper.SendCoins(ctx, from, to, bid)
}
// filterSigners removes any signers from the currentSigners map that are not in the txSigners map.
func filterSigners(currentSigners, txSigners map[string]struct{}) {
for signer := range currentSigners {

View File

@ -18,6 +18,7 @@ type Keeper struct {
cdc codec.BinaryCodec
storeKey storetypes.StoreKey
accountKeeper types.AccountKeeper
bankKeeper types.BankKeeper
rewardsAddressProvider types.RewardsAddressProvider
@ -73,6 +74,7 @@ func NewKeeperWithRewardsAddressProvider(
return Keeper{
cdc: cdc,
storeKey: storeKey,
accountKeeper: accountKeeper,
bankKeeper: bankKeeper,
rewardsAddressProvider: rewardsAddressProvider,
authority: authority,

View File

@ -1,7 +1,7 @@
package types
import (
context "context"
"context"
sdk "github.com/cosmos/cosmos-sdk/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
@ -18,7 +18,8 @@ type AccountKeeper interface {
//
//go:generate mockery --name BankKeeper --output ./mocks --outpkg mocks --case underscore
type BankKeeper interface {
SendCoins(ctx context.Context, fromAddr, toAddr sdk.AccAddress, amt sdk.Coins) error
SendCoinsFromAccountToModule(ctx context.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error
SendCoins(ctx context.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error
GetBalance(ctx context.Context, addr sdk.AccAddress, denom string) sdk.Coin
}

View File

@ -1,4 +1,4 @@
// Code generated by mockery v2.40.1. DO NOT EDIT.
// Code generated by mockery v2.30.1. DO NOT EDIT.
package mocks
@ -16,10 +16,6 @@ type AccountKeeper struct {
func (_m *AccountKeeper) GetModuleAddress(moduleName string) types.AccAddress {
ret := _m.Called(moduleName)
if len(ret) == 0 {
panic("no return value specified for GetModuleAddress")
}
var r0 types.AccAddress
if rf, ok := ret.Get(0).(func(string) types.AccAddress); ok {
r0 = rf(moduleName)
@ -37,8 +33,7 @@ func (_m *AccountKeeper) GetModuleAddress(moduleName string) types.AccAddress {
func NewAccountKeeper(t interface {
mock.TestingT
Cleanup(func())
},
) *AccountKeeper {
}) *AccountKeeper {
mock := &AccountKeeper{}
mock.Mock.Test(t)

View File

@ -1,4 +1,4 @@
// Code generated by mockery v2.40.1. DO NOT EDIT.
// Code generated by mockery v2.30.1. DO NOT EDIT.
package mocks
@ -18,10 +18,6 @@ type BankKeeper struct {
func (_m *BankKeeper) GetBalance(ctx context.Context, addr types.AccAddress, denom string) types.Coin {
ret := _m.Called(ctx, addr, denom)
if len(ret) == 0 {
panic("no return value specified for GetBalance")
}
var r0 types.Coin
if rf, ok := ret.Get(0).(func(context.Context, types.AccAddress, string) types.Coin); ok {
r0 = rf(ctx, addr, denom)
@ -36,10 +32,6 @@ func (_m *BankKeeper) GetBalance(ctx context.Context, addr types.AccAddress, den
func (_m *BankKeeper) SendCoins(ctx context.Context, fromAddr types.AccAddress, toAddr types.AccAddress, amt types.Coins) error {
ret := _m.Called(ctx, fromAddr, toAddr, amt)
if len(ret) == 0 {
panic("no return value specified for SendCoins")
}
var r0 error
if rf, ok := ret.Get(0).(func(context.Context, types.AccAddress, types.AccAddress, types.Coins) error); ok {
r0 = rf(ctx, fromAddr, toAddr, amt)
@ -50,13 +42,26 @@ func (_m *BankKeeper) SendCoins(ctx context.Context, fromAddr types.AccAddress,
return r0
}
// SendCoinsFromAccountToModule provides a mock function with given fields: ctx, senderAddr, recipientModule, amt
func (_m *BankKeeper) SendCoinsFromAccountToModule(ctx context.Context, senderAddr types.AccAddress, recipientModule string, amt types.Coins) error {
ret := _m.Called(ctx, senderAddr, recipientModule, amt)
var r0 error
if rf, ok := ret.Get(0).(func(context.Context, types.AccAddress, string, types.Coins) error); ok {
r0 = rf(ctx, senderAddr, recipientModule, amt)
} else {
r0 = ret.Error(0)
}
return r0
}
// NewBankKeeper creates a new instance of BankKeeper. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func NewBankKeeper(t interface {
mock.TestingT
Cleanup(func())
},
) *BankKeeper {
}) *BankKeeper {
mock := &BankKeeper{}
mock.Mock.Test(t)

View File

@ -1,4 +1,4 @@
// Code generated by mockery v2.40.1. DO NOT EDIT.
// Code generated by mockery v2.30.1. DO NOT EDIT.
package mocks
@ -18,10 +18,6 @@ type DistributionKeeper struct {
func (_m *DistributionKeeper) GetPreviousProposerConsAddr(ctx context.Context) (types.ConsAddress, error) {
ret := _m.Called(ctx)
if len(ret) == 0 {
panic("no return value specified for GetPreviousProposerConsAddr")
}
var r0 types.ConsAddress
var r1 error
if rf, ok := ret.Get(0).(func(context.Context) (types.ConsAddress, error)); ok {
@ -49,8 +45,7 @@ func (_m *DistributionKeeper) GetPreviousProposerConsAddr(ctx context.Context) (
func NewDistributionKeeper(t interface {
mock.TestingT
Cleanup(func())
},
) *DistributionKeeper {
}) *DistributionKeeper {
mock := &DistributionKeeper{}
mock.Mock.Test(t)

View File

@ -1,4 +1,4 @@
// Code generated by mockery v2.40.1. DO NOT EDIT.
// Code generated by mockery v2.30.1. DO NOT EDIT.
package mocks
@ -16,10 +16,6 @@ type RewardsAddressProvider struct {
func (_m *RewardsAddressProvider) GetRewardsAddress(context types.Context) (types.AccAddress, error) {
ret := _m.Called(context)
if len(ret) == 0 {
panic("no return value specified for GetRewardsAddress")
}
var r0 types.AccAddress
var r1 error
if rf, ok := ret.Get(0).(func(types.Context) (types.AccAddress, error)); ok {
@ -47,8 +43,7 @@ func (_m *RewardsAddressProvider) GetRewardsAddress(context types.Context) (type
func NewRewardsAddressProvider(t interface {
mock.TestingT
Cleanup(func())
},
) *RewardsAddressProvider {
}) *RewardsAddressProvider {
mock := &RewardsAddressProvider{}
mock.Mock.Test(t)

View File

@ -1,4 +1,4 @@
// Code generated by mockery v2.40.1. DO NOT EDIT.
// Code generated by mockery v2.30.1. DO NOT EDIT.
package mocks
@ -20,10 +20,6 @@ type StakingKeeper struct {
func (_m *StakingKeeper) GetValidatorByConsAddr(_a0 context.Context, _a1 types.ConsAddress) (stakingtypes.Validator, error) {
ret := _m.Called(_a0, _a1)
if len(ret) == 0 {
panic("no return value specified for GetValidatorByConsAddr")
}
var r0 stakingtypes.Validator
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, types.ConsAddress) (stakingtypes.Validator, error)); ok {
@ -49,8 +45,7 @@ func (_m *StakingKeeper) GetValidatorByConsAddr(_a0 context.Context, _a1 types.C
func NewStakingKeeper(t interface {
mock.TestingT
Cleanup(func())
},
) *StakingKeeper {
}) *StakingKeeper {
mock := &StakingKeeper{}
mock.Mock.Test(t)