diff --git a/swap/peer.go b/swap/peer.go index 83b8ad6f9c..f86393486e 100644 --- a/swap/peer.go +++ b/swap/peer.go @@ -204,6 +204,16 @@ func (p *Peer) sendCheque() error { return fmt.Errorf("error while creating cheque: %v", err) } + availableBalance, err := p.swap.AvailableBalance() + if err != nil { + return fmt.Errorf("error while getting available balance: %v", err) + } + + chequeAmount := uint64(-p.getBalance()) + if availableBalance < chequeAmount { + return fmt.Errorf("cannot send created cheque, amount %d is greater than chequebook available balance %d", chequeAmount, availableBalance) + } + err = p.setPendingCheque(cheque) if err != nil { return fmt.Errorf("error while saving pending cheque: %v", err) diff --git a/swap/swap_test.go b/swap/swap_test.go index 01bf17d142..9ad0eddb65 100644 --- a/swap/swap_test.go +++ b/swap/swap_test.go @@ -1433,5 +1433,4 @@ func TestAvailableBalance(t *testing.T) { if !availableBalance.Equals(expectedBalance) { t.Fatalf("available balance not equal to deposited minus withdraw. available balance: %v, expected balance: %v", availableBalance, expectedBalance) } - }