diff --git a/x/auction/types/auctions.go b/x/auction/types/auctions.go index 53574412..021c8561 100644 --- a/x/auction/types/auctions.go +++ b/x/auction/types/auctions.go @@ -68,19 +68,18 @@ func (a BaseAuction) GetType() string { return "base" } // Validate verifies that the auction end time is before max end time func (a BaseAuction) Validate() error { - if a.ID == 0 { - return errors.New("auction id cannot be zero") - } + // ID can be 0 for surplus, Debt and collateral auctions if strings.TrimSpace(a.Initiator) == "" { return errors.New("auction initiator cannot be blank") } if !a.Lot.IsValid() { return fmt.Errorf("invalid lot: %s", a.Lot) } - if a.Bidder.Empty() { + // NOTE: bidder can be nil for Surplus and Collateral auctions + if a.Bidder != nil && a.Bidder.Empty() { return errors.New("auction bidder cannot be empty") } - if len(a.Bidder) != sdk.AddrLen { + if a.Bidder != nil && len(a.Bidder) != sdk.AddrLen { return fmt.Errorf("the expected bidder address length is %d, actual length is %d", sdk.AddrLen, len(a.Bidder)) } if !a.Bid.IsValid() { diff --git a/x/auction/types/auctions_test.go b/x/auction/types/auctions_test.go index e19e7423..decb2cc7 100644 --- a/x/auction/types/auctions_test.go +++ b/x/auction/types/auctions_test.go @@ -107,11 +107,6 @@ func TestBaseAuctionValidate(t *testing.T) { }, true, }, - { - "0 id", - BaseAuction{ID: 0}, - false, - }, { "blank initiator", BaseAuction{ @@ -135,7 +130,7 @@ func TestBaseAuctionValidate(t *testing.T) { ID: 1, Initiator: testAccAddress1, Lot: c("kava", 1), - Bidder: nil, + Bidder: sdk.AccAddress{}, }, false, },