Request for Proposals: Create Sealed Bid Auctions on Paddle Battle

Request for Proposals: Create Sealed Bid Auctions on Paddle Battle

Timeline

  • May 2: RFP Announced
  • May 8 (12:00 GMT): Proposal Submission Opened
  • May 15 (12:00 GMT): Proposal Submission Closed
  • May 16 (12:00 GMT): Proposal Submissions Revealed
  • May 20: Shortlisted Proposals Announced (anticipated)
  • May 23: Service Agreement Signed (anticipated)
  • June 1: Work begins (latest)

Proposals

Proposals must be submitted in plain text via the Shutter Sealed Bid RFP page (link shared on May 8).

Proposals must not be shared with other bidders, brainbot gmbh or the public.

Proposals must include the following:

  • Company Name
  • Company Website
  • Contact Name
  • Contact Email
  • Contact Telegram
  • Developer Name(s) and Profiles
  • Company and Developer References (optional)
  • UX Flow
  • Implementation Process
  • Estimation of Hours
  • Cost per Hour
  • Timeline for Implementation
  • Post-Delivery (testing, bug fixes, warranties, documentation, training for brainbot team)

Evaluation Criteria

Technical soundness

UX/Design quality

Team experience

Budget and time alignment

Risk mitigation

Price & Payment Terms

Price may be quoted in USD (fiat or stablecoins) or SHU (unlocked or lock according to schedule).

Payment terms will be 50% upon delivery / 50% upon completion of post-delivery.

Scope

Overview

Create sealed bid auctions on Paddle Battle using Shutter API

Paddle Battle

Paddle Battle (paddlebattle.auction) is an impactful auction platform - where anyone can auction off cool stuff and donate the auction proceeds to public goods.

Paddle Battle already supports a wide range of auction formats, including: English auctions, All Pay auctions, and Penny auctions. It now seeks to support Sealed Bid auctions.

Paddle Battle is in the MVP stage. It currently uses Strikingly (strikingly.com) (a no-code website builder) for the frontend, yodl (a payment link service) for payments, and BlockSurvey (a no-code onchain survey tool) for linking transactions to individuals. There is also a custom built node.js backend (access can be provided upon request) that polls and aggregates on chain data and supplies the Strikingly frontend with that data.

Sealed Bid Auctions

Sealed Bid auctions drive higher donations by encouraging bidders to submit their maximum willingness to pay without anchoring to other bids. Sealed Bid auctions create a sense of urgency and fairness, avoiding bidding wars that might discourage participation. Sealed Bid auctions also add excitement and suspense.

Sealed Bid Auction Format

  1. Fixed timeframe
  2. Bid fee (prevents spam)
  3. Sealed bids
  4. Highest bid wins
  5. Winner pays bid and receives prizes (all others do not pay the bid and do not receive the prize)

Sealed Bid Auction UX Flow

  1. User pays bid fee (ERC-20 transfer) via yodl payment link
  2. User is redirected to a bid placement form
  3. User submits form: bid amount (a form field response, a promise to pay if the bid is the highest bid) is encrypted via Shutter-API, but other form field responses are left unencrypted
  4. Bidding period ends
  5. All user’s bid amounts are decrypted and revealed publicly
  6. Winner is revealed

Paddle Battle Repositories

  1. Paddle Battle Backend: https://github.com/brainbot-com/paddlebattle-backend

Shutter API Resources

  1. Website: Shutter API | Threshold Encryption Service
  2. Quick Start Guide: Get Started with Shutter API | Shutter Docs
  3. Docs: How It Works | Shutter Docs

Shutter API Flow (High Level)

  1. Register identity (i.e. auction id / address + user’s address) and auction end time with Shutter API
  2. Provide encryption key and identity (“encryption data”) to the form / frontend
  3. Encrypt the bid amount using the shutter-sdk
  4. Store the encrypted bid

Sutter API Integration Options

  1. Integrate with BlockSurvey form
  2. Introduce an additional step - user states and encrypts bid amount - after the yodl payment link and before the BlockSurvey form (use URL parameters to pre-populate one or more fields in the BlockSurvey form).
  3. Create our own custom form (replacing the BlockSurvey form)
  4. Other (propose your own)