Skip to content

Commit 0e75114

Browse files
add check send enabled (backport cosmos#2679) (cosmos#2687)
* add check send enabled (cosmos#2679) * add check send enabled * changelog (cherry picked from commit b1f494c) # Conflicts: # CHANGELOG.md # modules/apps/transfer/keeper/msg_server.go # modules/apps/transfer/keeper/msg_server_test.go * fix conflict * fix build Co-authored-by: Carlos Rodriguez <carlos@interchain.io> Co-authored-by: Carlos Rodriguez <crodveg@gmail.com>
1 parent d0319b6 commit 0e75114

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ Ref: https://keepachangelog.com/en/1.0.0/
5555

5656
### Bug Fixes
5757

58+
* (apps/transfer) [\#2672](https://github.com/cosmos/ibc-go/pull/2672) Check `x/bank` send enabled.
59+
5860
## [v2.4.1](https://github.com/cosmos/ibc-go/releases/tag/v2.4.1) - 2022-09-15
5961

6062
### Dependencies

modules/apps/transfer/keeper/msg_server_test.go

+23
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package keeper_test
22

33
import (
44
sdk "github.com/cosmos/cosmos-sdk/types"
5+
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
56

67
"github.com/cosmos/ibc-go/v2/modules/apps/transfer/types"
78
)
@@ -19,6 +20,17 @@ func (suite *KeeperTestSuite) TestMsgTransfer() {
1920
func() {},
2021
true,
2122
},
23+
{
24+
"bank send enabled for denom",
25+
func() {
26+
suite.chainA.GetSimApp().BankKeeper.SetParams(suite.chainA.GetContext(),
27+
banktypes.Params{
28+
SendEnabled: []*banktypes.SendEnabled{{Denom: sdk.DefaultBondDenom, Enabled: true}},
29+
},
30+
)
31+
},
32+
true,
33+
},
2234
{
2335
"invalid sender",
2436
func() {
@@ -33,6 +45,17 @@ func (suite *KeeperTestSuite) TestMsgTransfer() {
3345
},
3446
false,
3547
},
48+
{
49+
"bank send disabled for denom",
50+
func() {
51+
suite.chainA.GetSimApp().BankKeeper.SetParams(suite.chainA.GetContext(),
52+
banktypes.Params{
53+
SendEnabled: []*banktypes.SendEnabled{{Denom: sdk.DefaultBondDenom, Enabled: false}},
54+
},
55+
)
56+
},
57+
false,
58+
},
3659
{
3760
"channel does not exist",
3861
func() {

modules/apps/transfer/keeper/relay.go

+4
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ func (k Keeper) sendTransfer(
9090
return 0, types.ErrSendDisabled
9191
}
9292

93+
if !k.bankKeeper.IsSendEnabledCoin(ctx, token) {
94+
return 0, sdkerrors.Wrapf(types.ErrSendDisabled, "%s transfers are currently disabled", token.Denom)
95+
}
96+
9397
if k.bankKeeper.BlockedAddr(sender) {
9498
return 0, sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to send funds", sender)
9599
}

modules/apps/transfer/types/expected_keepers.go

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ type BankKeeper interface {
2323
SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error
2424
SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error
2525
BlockedAddr(addr sdk.AccAddress) bool
26+
IsSendEnabledCoin(ctx sdk.Context, coin sdk.Coin) bool
2627
}
2728

2829
// ChannelKeeper defines the expected IBC channel keeper

0 commit comments

Comments
 (0)