From 8f4f5d270a24cd8833e9b3c02e9c20327502b50c Mon Sep 17 00:00:00 2001 From: turtlebasket Date: Thu, 1 Sep 2022 02:02:23 +0000 Subject: [PATCH] make bids for lowest rather than highest --- proto/cosmostest/auction.proto | 2 +- x/cosmostest/keeper/auction_expiry.go | 2 +- x/cosmostest/keeper/msg_server_new_auction.go | 2 +- x/cosmostest/keeper/msg_server_new_bid.go | 6 +-- x/cosmostest/memdb/biddb.go | 4 +- x/cosmostest/memdb/biddb_test.go | 2 +- x/cosmostest/types/auction.pb.go | 42 +++++++++---------- 7 files changed, 30 insertions(+), 30 deletions(-) diff --git a/proto/cosmostest/auction.proto b/proto/cosmostest/auction.proto index f59ee4e..c411553 100644 --- a/proto/cosmostest/auction.proto +++ b/proto/cosmostest/auction.proto @@ -9,7 +9,7 @@ message Auction { string index = 1; string name = 2; string description = 3; - Bid topBid = 4; + Bid best = 4; uint64 deadline = 5; } diff --git a/x/cosmostest/keeper/auction_expiry.go b/x/cosmostest/keeper/auction_expiry.go index 21d4b65..7a0b91e 100644 --- a/x/cosmostest/keeper/auction_expiry.go +++ b/x/cosmostest/keeper/auction_expiry.go @@ -29,7 +29,7 @@ func (k *Keeper) EndExpiredAuctions(ctx types.Context) { if uint64(ctx.BlockHeight()) >= auction.Deadline-auctionconfig.AuctionTime { var err error - auction.TopBid, err = memdb.BidDB.GetHighestBid(auctionId) + auction.Best, err = memdb.BidDB.GetLowestBid(auctionId) if err != nil { return errors.Errorf("could not get highest bid for auction %s: %s", auctionId, err) } diff --git a/x/cosmostest/keeper/msg_server_new_auction.go b/x/cosmostest/keeper/msg_server_new_auction.go index ea2b655..386de62 100644 --- a/x/cosmostest/keeper/msg_server_new_auction.go +++ b/x/cosmostest/keeper/msg_server_new_auction.go @@ -24,7 +24,7 @@ func (k msgServer) NewAuction(goCtx context.Context, msg *types.MsgNewAuction) ( Index: index, Name: msg.Name, Description: msg.Description, - TopBid: new(types.Bid), + Best: new(types.Bid), Deadline: uint64(ctx.BlockHeight()) + auctionconfig.AuctionTime, } diff --git a/x/cosmostest/keeper/msg_server_new_bid.go b/x/cosmostest/keeper/msg_server_new_bid.go index 33e2369..7fd3596 100644 --- a/x/cosmostest/keeper/msg_server_new_bid.go +++ b/x/cosmostest/keeper/msg_server_new_bid.go @@ -38,7 +38,7 @@ func (k msgServer) NewBid(goCtx context.Context, msg *types.MsgNewBid) (*types.M return nil, fmt.Errorf("bid amount must be greater than 0") } - highestBid, err := memdb.BidDB.GetHighestBid(msg.AuctionIndex) + highestBid, err := memdb.BidDB.GetLowestBid(msg.AuctionIndex) // we manually handle KeyNotFound in GetHighestBid, so should return (nil, nil) if not found if err != nil { return nil, fmt.Errorf("failed to get highest bid: %s", reflect.TypeOf(err)) @@ -51,8 +51,8 @@ func (k msgServer) NewBid(goCtx context.Context, msg *types.MsgNewBid) (*types.M return nil, fmt.Errorf("failed to convert max bid (%s) to a large integer", msg.Amount) } - if amt.Cmp(amtPrev) < 1 { - return nil, fmt.Errorf("bid amount must be greater than largest bid") + if amt.Cmp(amtPrev) != -1 { + return nil, fmt.Errorf("bid amount must be less than current lowest bid (%s)", amtPrev) } } diff --git a/x/cosmostest/memdb/biddb.go b/x/cosmostest/memdb/biddb.go index 5eaf13a..8371b75 100644 --- a/x/cosmostest/memdb/biddb.go +++ b/x/cosmostest/memdb/biddb.go @@ -74,7 +74,7 @@ func (b *bidDB) AddBid(auctionId string, bid *types.Bid) error { } // Get the highest bid in the list under specified auction key. -func (b *bidDB) GetHighestBid(auctionId string) (*types.Bid, error) { +func (b *bidDB) GetLowestBid(auctionId string) (*types.Bid, error) { k := []byte(auctionId) var bid *types.Bid @@ -108,7 +108,7 @@ func (b *bidDB) GetHighestBid(auctionId string) (*types.Bid, error) { amt.SetString(rBid.Amount, 10) } else { rAmt.SetString(rBid.Amount, 10) - if rAmt.Cmp(amt) == 1 { + if rAmt.Cmp(amt) == -1 { bid = rBid } } diff --git a/x/cosmostest/memdb/biddb_test.go b/x/cosmostest/memdb/biddb_test.go index 0cff2c9..673722a 100644 --- a/x/cosmostest/memdb/biddb_test.go +++ b/x/cosmostest/memdb/biddb_test.go @@ -35,7 +35,7 @@ func TestBasicFlow(t *testing.T) { } // check highest bid - if bid, err := BidDB.GetHighestBid("0"); err != nil { + if bid, err := BidDB.GetLowestBid("0"); err != nil { panic(err) } else { if bid.Owner != "cosmos456" || bid.Amount != "200" { diff --git a/x/cosmostest/types/auction.pb.go b/x/cosmostest/types/auction.pb.go index 85cf85b..f00f31f 100644 --- a/x/cosmostest/types/auction.pb.go +++ b/x/cosmostest/types/auction.pb.go @@ -26,7 +26,7 @@ type Auction struct { Index string `protobuf:"bytes,1,opt,name=index,proto3" json:"index,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - TopBid *Bid `protobuf:"bytes,4,opt,name=topBid,proto3" json:"topBid,omitempty"` + Best *Bid `protobuf:"bytes,4,opt,name=best,proto3" json:"best,omitempty"` Deadline uint64 `protobuf:"varint,5,opt,name=deadline,proto3" json:"deadline,omitempty"` } @@ -84,9 +84,9 @@ func (m *Auction) GetDescription() string { return "" } -func (m *Auction) GetTopBid() *Bid { +func (m *Auction) GetBest() *Bid { if m != nil { - return m.TopBid + return m.Best } return nil } @@ -105,21 +105,21 @@ func init() { func init() { proto.RegisterFile("cosmostest/auction.proto", fileDescriptor_631f6f59914101d9) } var fileDescriptor_631f6f59914101d9 = []byte{ - // 223 bytes of a gzipped FileDescriptorProto + // 221 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x48, 0xce, 0x2f, 0xce, 0xcd, 0x2f, 0x2e, 0x49, 0x2d, 0x2e, 0xd1, 0x4f, 0x2c, 0x4d, 0x2e, 0xc9, 0xcc, 0xcf, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x45, 0xc8, 0xe8, 0x21, 0x98, 0x52, 0x22, 0x48, 0x1a, 0x92, - 0x32, 0x53, 0x20, 0x8a, 0x95, 0x96, 0x32, 0x72, 0xb1, 0x3b, 0x42, 0xb4, 0x0b, 0x89, 0x70, 0xb1, + 0x32, 0x53, 0x20, 0x8a, 0x95, 0x16, 0x32, 0x72, 0xb1, 0x3b, 0x42, 0xb4, 0x0b, 0x89, 0x70, 0xb1, 0x66, 0xe6, 0xa5, 0xa4, 0x56, 0x48, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x06, 0x41, 0x38, 0x42, 0x42, 0x5c, 0x2c, 0x79, 0x89, 0xb9, 0xa9, 0x12, 0x4c, 0x60, 0x41, 0x30, 0x5b, 0x48, 0x81, 0x8b, 0x3b, - 0x25, 0xb5, 0x38, 0xb9, 0x28, 0xb3, 0x00, 0xa4, 0x51, 0x82, 0x19, 0x2c, 0x85, 0x2c, 0x24, 0x64, - 0xc4, 0xc5, 0x56, 0x92, 0x5f, 0xe0, 0x94, 0x99, 0x22, 0xc1, 0xa2, 0xc0, 0xa8, 0xc1, 0x6d, 0x24, - 0xa5, 0x87, 0xd5, 0x55, 0x7a, 0x4e, 0x99, 0x29, 0x41, 0x50, 0x95, 0x42, 0x52, 0x5c, 0x1c, 0x29, - 0xa9, 0x89, 0x29, 0x39, 0x99, 0x79, 0xa9, 0x12, 0xac, 0x0a, 0x8c, 0x1a, 0x2c, 0x41, 0x70, 0xbe, - 0x93, 0xc5, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, - 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0xc9, 0x41, 0x4c, 0xd3, - 0x05, 0x7b, 0xac, 0x42, 0x1f, 0xc9, 0x97, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, 0x8f, - 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x84, 0x5a, 0xc2, 0xfb, 0x31, 0x01, 0x00, 0x00, + 0x25, 0xb5, 0x38, 0xb9, 0x28, 0xb3, 0x00, 0xa4, 0x51, 0x82, 0x19, 0x2c, 0x85, 0x2c, 0x24, 0xa4, + 0xc7, 0xc5, 0x92, 0x94, 0x5a, 0x5c, 0x22, 0xc1, 0xa2, 0xc0, 0xa8, 0xc1, 0x6d, 0x24, 0xa5, 0x87, + 0xd5, 0x4d, 0x7a, 0x4e, 0x99, 0x29, 0x41, 0x60, 0x75, 0x42, 0x52, 0x5c, 0x1c, 0x29, 0xa9, 0x89, + 0x29, 0x39, 0x99, 0x79, 0xa9, 0x12, 0xac, 0x0a, 0x8c, 0x1a, 0x2c, 0x41, 0x70, 0xbe, 0x93, 0xc5, + 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, + 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0xc9, 0x41, 0xcc, 0xd2, 0x05, 0x7b, + 0xaa, 0x42, 0x1f, 0xc9, 0x87, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, 0x4f, 0x1a, 0x03, + 0x02, 0x00, 0x00, 0xff, 0xff, 0xb5, 0xb0, 0xd9, 0xd2, 0x2d, 0x01, 0x00, 0x00, } func (m *Auction) Marshal() (dAtA []byte, err error) { @@ -147,9 +147,9 @@ func (m *Auction) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x28 } - if m.TopBid != nil { + if m.Best != nil { { - size, err := m.TopBid.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Best.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -212,8 +212,8 @@ func (m *Auction) Size() (n int) { if l > 0 { n += 1 + l + sovAuction(uint64(l)) } - if m.TopBid != nil { - l = m.TopBid.Size() + if m.Best != nil { + l = m.Best.Size() n += 1 + l + sovAuction(uint64(l)) } if m.Deadline != 0 { @@ -355,7 +355,7 @@ func (m *Auction) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TopBid", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Best", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -382,10 +382,10 @@ func (m *Auction) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.TopBid == nil { - m.TopBid = &Bid{} + if m.Best == nil { + m.Best = &Bid{} } - if err := m.TopBid.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Best.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex