diff options
Diffstat (limited to 'bidder')
-rw-r--r-- | bidder/auction.go | 67 | ||||
-rw-r--r-- | bidder/bid.go | 77 | ||||
-rw-r--r-- | bidder/bid_test.go | 27 | ||||
-rw-r--r-- | bidder/option.go | 18 |
4 files changed, 0 insertions, 189 deletions
diff --git a/bidder/auction.go b/bidder/auction.go deleted file mode 100644 index a22f005..0000000 --- a/bidder/auction.go +++ /dev/null @@ -1,67 +0,0 @@ -package bidder - -import ( - "fmt" - "log" - "os" - - "kesim.org/seal" - "kesim.org/seal/nizk/commit" -) - -// Auction is the simple interface for the engine -type Auction interface { - Join(bidder Bidder) // A bidder calls this to join the auction - GotMessage(msg []byte, sig []byte) error // A bidder uses this method to publish a message -} - -// Bidder is the interface that the Auction engine uses to communicate -type Bidder interface { - Commitment() *commit.Commitment - Start(map[string]*commit.Commitment) - Result() - Receive(msg []byte) error -} - -type auction struct { - description *seal.Description - - bidder Bidder - - log func(string, ...any) - verbose func(string, ...any) - debug func(string, ...any) -} - -func nullf(string, ...any) {} - -func NewAuction(description *seal.Description, options ...Option) (a *auction, e error) { - if description.BitLength > 63 { - return nil, fmt.Errorf("Invalid BitLength in description: %d", description.BitLength) - } - - logger := log.New(os.Stdout, "[seal::client] ", log.LstdFlags) - - a = &auction{ - description: description, - log: logger.Printf, - verbose: nullf, - debug: nullf, - } - - for _, opt := range options { - opt(a) - } - - return a, nil -} - -func (a *auction) Join(bidder Bidder) { - a.bidder = bidder -} - -// Received is called by the bidder whenever a message came in for the auction via the dashboard -// or other means of communication. -func (a *auction) Received(msg []byte) error { - return fmt.Errorf("Auction.Received not implemented") -}
\ No newline at end of file diff --git a/bidder/bid.go b/bidder/bid.go deleted file mode 100644 index 5f98a0c..0000000 --- a/bidder/bid.go +++ /dev/null @@ -1,77 +0,0 @@ -package bidder - -import ( - "crypto/ed25519" - "fmt" - - . "kesim.org/seal/nizk" - - "kesim.org/seal/nizk/commit" - "kesim.org/seal/nizk/stage1" -) - -type bid struct { - id ed25519.PrivateKey - Id ed25519.PublicKey - - price uint64 // bigendian encoding of the bid - bitlength uint8 // number of bits encoded in price. - - // bits are derived from zbid and the zero element in - // the slice corresponds to the highest bit in zbid - bits []*commit.Statement - - // The commitments we received from the bidders. - bidders map[string][]*commit.Commitment - - // sorted list of the bidders. - bidder_ids []string - - // Stage 1 data per round - stage1 []*stage1.Statement -} - -// newBid creates a new Bidder for the given price, using the lower bits up to bitlength -func newBid(price uint64, bitlength uint8) (b *bid, e error) { - if bitlength > 63 { - return nil, fmt.Errorf("bitlength too large, maximum is 63") - } else if 0 != (price >> bitlength) { - return nil, fmt.Errorf("price %d too large for given bitlength %d", price, bitlength) - } - - b = &bid{ - price: price, - bitlength: bitlength, - } - - b.Id, b.id, e = ed25519.GenerateKey(nil) - if e != nil { - return nil, e - } - - b.bits = make([]*commit.Statement, bitlength) - for i := bitlength; i > 0; i-- { - set := (price>>(i-1)&1 != 0) - x, r := Curve.RandomScalar(), Curve.RandomScalar() - b.bits[i-1] = commit.NewStatement(x, r, set) - } - - return b, nil -} - -// Commit returns the public commitment to the bits and a signature -// TODO: return signature over bid -func (bid *bid) Commit() (c []*commit.Commitment) { - c = make([]*commit.Commitment, len(bid.bits)) - for i := range bid.bits { - c[i] = bid.bits[i].Commit(Bites(bid.Id)) - } - return c -} - -func (bid *bid) Result() { -} - -func (bid *bid) Send(msg []byte, sig []byte) error { - return fmt.Errorf("bidder.Send not implemented") -}
\ No newline at end of file diff --git a/bidder/bid_test.go b/bidder/bid_test.go deleted file mode 100644 index a479e5d..0000000 --- a/bidder/bid_test.go +++ /dev/null @@ -1,27 +0,0 @@ -package bidder - -import ( - "testing" -) - -func TestBitlengthTooLarge(t *testing.T) { - bid, e := newBid(0xFFFFFF, 70) - if e == nil { - t.Fatalf("failure expected, but got bid: %#v", bid) - } -} - -func TestPriceTooLarge(t *testing.T) { - bid, e := newBid(0xFFFFFF, 8) - if e == nil { - t.Fatalf("failure expected, but got bid: %#v", bid) - } -} - -func TestBidOK(t *testing.T) { - bid, e := newBid(102400, 24) - if e != nil { - t.Fatalf("unexpected error: %v", e) - } - t.Logf("Bid: %+v", bid) -}
\ No newline at end of file diff --git a/bidder/option.go b/bidder/option.go deleted file mode 100644 index d1c9783..0000000 --- a/bidder/option.go +++ /dev/null @@ -1,18 +0,0 @@ -package bidder - -import ( - "log" - "os" -) - -type Option func(auction *auction) - -func OptVerbose(a *auction) { - logger := log.New(os.Stdout, "[seal::client][verbose] ", log.LstdFlags) - a.verbose = logger.Printf -} - -func OptDebug(a *auction) { - logger := log.New(os.Stdout, "[seal::client][debug] ", log.LstdFlags) - a.debug = logger.Printf -} |