@@ -4,20 +4,23 @@ import (
4
4
"cosmossdk.io/errors"
5
5
sdk "github.com/cosmos/cosmos-sdk/types"
6
6
"github.com/cosmos/cosmos-sdk/x/accumulator/types"
7
- minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
8
7
)
9
8
10
- func (k BaseKeeper ) DistributeValidatorsPool (ctx sdk.Context , amount sdk.Coins ) error {
11
- return k .distributeTokens (ctx , types .ValidatorPoolName , minttypes .ModuleName , amount )
12
- }
13
-
14
- func (k BaseKeeper ) distributeTokens (ctx sdk.Context , fromPool string , receiverModule string , amount sdk.Coins ) error {
9
+ func (k BaseKeeper ) DistributeTokens (ctx sdk.Context , fromPool string , isSentToModule bool , amount sdk.Coins , receiverModule string , receiverAddress * sdk.AccAddress ) error {
15
10
poolAddress := GetPoolAddress (fromPool )
16
11
if poolAddress == nil {
17
12
return types .ErrInvalidPool
18
13
}
19
14
20
- return k .sendFromAddressToModule (ctx , poolAddress , receiverModule , amount )
15
+ if isSentToModule {
16
+ return k .sendFromAddressToModule (ctx , poolAddress , receiverModule , amount )
17
+ }
18
+
19
+ if receiverAddress == nil {
20
+ return types .ErrInvalidReceiver
21
+ }
22
+ return k .sendFromAddressToAddress (ctx , poolAddress , * receiverAddress , amount )
23
+
21
24
}
22
25
23
26
func (k BaseKeeper ) sendFromAddressToModule (ctx sdk.Context , poolAddress sdk.AccAddress , receiverAddress string , amount sdk.Coins ) error {
@@ -36,3 +39,33 @@ func (k BaseKeeper) sendFromAddressToModule(ctx sdk.Context, poolAddress sdk.Acc
36
39
37
40
return nil
38
41
}
42
+
43
+ func (k BaseKeeper ) sendFromAddressToAddress (ctx sdk.Context , poolAddress sdk.AccAddress , receiverAddress sdk.AccAddress , amount sdk.Coins ) error {
44
+ err := k .bankKeeper .SendCoinsFromAccountToModule (
45
+ ctx ,
46
+ poolAddress ,
47
+ types .ModuleName ,
48
+ amount ,
49
+ )
50
+
51
+ if err != nil {
52
+ err = errors .Wrap (err , "sending native coins to module" )
53
+ k .Logger (ctx ).Error (err .Error ())
54
+ return err
55
+ }
56
+
57
+ err = k .bankKeeper .SendCoinsFromModuleToAccount (
58
+ ctx ,
59
+ types .ModuleName ,
60
+ receiverAddress ,
61
+ amount ,
62
+ )
63
+
64
+ if err != nil {
65
+ err = errors .Wrap (err , "sending native coins to module" )
66
+ k .Logger (ctx ).Error (err .Error ())
67
+ return err
68
+ }
69
+
70
+ return nil
71
+ }
0 commit comments