From 40431ef64671d748be2d83b3d4f66928cab589c1 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 14 Sep 2022 18:49:02 -0500 Subject: [PATCH] fix: MsgBeginUnlocking bug (#2746) (#2748) * fix unlocking bug * explicitly allow empty coins * added fixes * remove white space (cherry picked from commit 0997049b4c5459fa5161c9b8f2e18869475e360a) Co-authored-by: Adam Tucker <adam@osmosis.team> --- x/lockup/types/msgs.go | 6 +++--- x/lockup/types/msgs_test.go | 12 +++++++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/x/lockup/types/msgs.go b/x/lockup/types/msgs.go index 1fb8e83d5..b456cc01c 100644 --- a/x/lockup/types/msgs.go +++ b/x/lockup/types/msgs.go @@ -111,12 +111,12 @@ func (m MsgBeginUnlocking) ValidateBasic() error { return fmt.Errorf("invalid lockup ID, got %v", m.ID) } - // only allow unlocks with a single denom - if m.Coins.Len() != 1 { + // only allow unlocks with a single denom or empty + if m.Coins.Len() > 1 { return fmt.Errorf("can only unlock one denom per lock ID, got %v", m.Coins) } - if !m.Coins.IsAllPositive() { + if !m.Coins.Empty() && !m.Coins.IsAllPositive() { return fmt.Errorf("cannot unlock a zero or negative amount") } diff --git a/x/lockup/types/msgs_test.go b/x/lockup/types/msgs_test.go index 29a1fc807..6d0ab74ed 100644 --- a/x/lockup/types/msgs_test.go +++ b/x/lockup/types/msgs_test.go @@ -167,12 +167,22 @@ func TestMsgBeginUnlocking(t *testing.T) { }, }, { - name: "not positive coins amount", + name: "zero coins (same as nil)", msg: types.MsgBeginUnlocking{ Owner: addr1, ID: 1, Coins: sdk.NewCoins(sdk.NewCoin("test1", sdk.NewInt(0))), }, + expectPass: true, + }, + { + name: "nil coins (unlock by ID)", + msg: types.MsgBeginUnlocking{ + Owner: addr1, + ID: 1, + Coins: sdk.NewCoins(), + }, + expectPass: true, }, } -- GitLab