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 15 (12:00 GMT): Proposal Submission Opened
  • May 22 (12:00 GMT): Proposal Submission Closed
  • May 23 (12:00 GMT): Proposal Submissions Revealed
  • May 27: Shortlisted Proposals Announced (anticipated)
  • May 30: Service Agreement Signed (anticipated)
  • June 8: Work begins (latest)

Proposals

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

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)

Sorry, we are running a bit behind schedule. As a result, we have revised the dates in the original post.

The RFP is now live!

Please submit your proposal here: RFP Details - On-Chain Sealed Bid

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

Hi @Loring, My team and I are interested in taking on this task. Would you be able to grant me access to the Paddle Battle Backend repository (https://github.com/brainbot-com/paddlebattle-backend)? Having access would make it much easier for me to review and contribute effectively.

Here is my GitHub ID: cryptokage1996.

@vkjvivek7 I’ve added you to the repo.

1 Like

Hey Loring, Hope you’re doing well. We were going through the codebase and noticed a few things on the UI side—just wanted to share a quick suggestion.

We think it might make more sense to move the UI over to Next.js instead of continuing with Strikingly. Next.js is more flexible, easier to work with, and has better long-term potential. Plus, it’ll make integrating things like the Shutter library smoother.

Would it be okay if we put together a revised bid based on that?

Also, listing few advantages of using Next.js over vanilla JS generated by Strikingly:

  • Supports component libraries like Tailwind & MUI for a cleaner UI

  • Built-in routing, SSR, and performance optimizations

  • Lets us host backend and frontend on the same server = more efficient + cost-effective

  • Easier to scale and maintain over time

Let me know what you think—happy to chat more about it or walk through the idea if needed!

Hi @vkjvivek7 -

Thanks for your suggestion.

We understand the limits of Strikingly and then benefits of other UIs. However, we will not change this aspect of the platform at this time.

Please limit your proposal to the scope defined in the RFP.

To add a bit on Loring’s comment: We would be fine with replacing the VanillaJS with some more modern frontend technology with the provision that it’s embeddable into the current Strikingly structure.

Thank you to everyone who submitted a proposal in response to the RFP: Create Sealed Bid Auctions on Paddle Battle.

brainbot was very impressed by all the proposals - they demonstrated a solid understanding of both Paddle Battle sealed bid auctions and the Shutter API framework.

brainbot has decided to move forward with General Magic. It was the most straightforward approach and the best in terms of cost/value.