From 7fdb8fda0c192fecb9d049cbdb914099791fc159 Mon Sep 17 00:00:00 2001 From: Yolan Romailler Date: Tue, 4 Mar 2025 18:33:00 +0100 Subject: [PATCH 1/5] Adding Tari's blog about sealed bid auction --- .../2025-03-04-onchain-sealed-bid-auction.md | 678 ++++++++++++++++++ .../sealed-bid_auction_flow.png | Bin 0 -> 63619 bytes 2 files changed, 678 insertions(+) create mode 100644 docs/blog/2025-03-04-onchain-sealed-bid-auction.md create mode 100644 docs/blog/images/2025-03-04-onchain-sealed-bid-auction/sealed-bid_auction_flow.png diff --git a/docs/blog/2025-03-04-onchain-sealed-bid-auction.md b/docs/blog/2025-03-04-onchain-sealed-bid-auction.md new file mode 100644 index 0000000..a72ab53 --- /dev/null +++ b/docs/blog/2025-03-04-onchain-sealed-bid-auction.md @@ -0,0 +1,678 @@ +--- +title: "No Peeking! How to Build a Sealed-Bid Auction with On-Chain Timelock Encryption" +summary: "A step by step tutorial." +date: 2025-03-04 +author: Nemitari Ajienka +tags: + - Beginner + - How-to +--- + +## 1. What We're Building & Why It's Cool + +🔒 A **sealed-bid auction** is like a high-stakes guessing game where no one knows what anyone else is offering until the very end. Instead of shouting bids in a crowded room (like in a regular auction), everyone submits their bids **in secret**. Once the bidding phase is over, all bids are revealed, and the highest bidder wins. + +### **Why does it matter?** + +- 🎯 **No Last-Minute Sniping** – Since bids are secret, no one can wait until the last second to outbid someone else. +- ⚖️ **Fairer Competition** – Everyone bids based on what they think the item is worth, not just to beat the current highest bid. +- 🔐 **Privacy & Strategy** – In open auctions, bidders might adjust their offers based on others' bids. With sealed bids, it's all about **what you're actually willing to pay**. +- **🛡️ Censorship Resistance** – By publishing bids on-chain, we ensure that nobody has the power to censor bids. + +⛓️ Imagine trying to do this on a public blockchain where all state is visible to everyone, and then consider the power of timelock encryption, which allows data to remain unreadable until a specified time, protecting sensitive information even in transparent systems—that means bids stay locked until the conditions for their automated decryption have been met. In this case, the condition is a block number in the future (the final one of the bidding phase of the auction), making sure everything is **provably fair and tamper-proof**. + +Cool, right? **No bid sniping, no last-minute drama.** + +By the end of the tutorial, you will have: + +- 💻 A sealed-bid auction smart contract (written in Solidity) and deployed to the [Filecoin Calibration Test Network](https://docs.filecoin.io/networks/calibration). +- 🔧 A simple JavaScript code to interact with our smart contract, i.e., generate encrypted bids, place them on-chain, and watch them get decrypted at the auction end block number. + +You will also get to meet [**blocklock-solidity**](https://github.com/randa-mu/blocklock-solidity) and [**blocklock-js**](https://github.com/randa-mu/blocklock-js), our Solidity and TypeScript libaries for on-chain timelock encryption (a.k.a conditional decryption). + +## 2. Prerequisites + +Before we dive in, make sure you have the following: + +### **Basic Knowledge** + +- Familiarity with **Solidity and JavaScript** (don’t worry—we’ll keep it straightforward). + +### **Tools & Setup 🔧** + +1. **Install [Node.js](https://nodejs.org/en/download) and [Yarn](https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable)** + + Verify the installations with: + + ```bash + $ node --version + $ yarn --version + ``` + +2. **Set Up Foundry** (for smart contract development, testing, and deployment) + + Install the Foundry toolchain following the installation steps in the [Foundry documentation](https://book.getfoundry.sh/getting-started/installation). + +3. **Set Up an EVM-Based Wallet** (for the Filecoin Calibration testnet) + - You’ll need an **EVM-compatible wallet** configured for the Filecoin Calibration testnet. + - To cover transaction costs, request FIL test tokens from the [Filecoin faucet](https://docs.filecoin.io/smart-contracts/developing-contracts/get-test-tokens). +4. **Code Editor** + - Any editor works, but we recommend [Visual Studio Code](https://code.visualstudio.com/) if you are a beginner. + +## 3. How the Sealed-Bid Auction Works + +The auction runs in **four phases**: + +1. 🔒 **Encrypting Your Bid (Off-Chain)** – Before submitting a bid, each bidder encrypts their bid amount off-chain. This generates a **ciphertext** (fancy word for an encrypted bid) that they'll submit to the smart contract. +2. 💰 **Submitting Your Bid** **(On-Chain)** – Bidders send their encrypted bids to the smart contract, keeping everything under wraps. Along with the bid, they also pay a **reserve price**—this amount is refundable for everyone **except** the highest bidder, who ends up paying the full bid amount. +3. 🔓 **Revealing the Bids (On-Chain)** – Once the auction reaches a predefined **decryption block number**, an off-chain oracle sends decryption keys to the smart contract. The contract then decrypts each bid **on-chain**, so everyone can finally see the actual bids. +4. 🏆 **Picking the Winner & Settling Payments** **(On-Chain)** – The contract figures out the highest bid, and the winner has to pay the difference between their actual bid and the reserve price they already paid. Everyone else can claim back their reserve price. Instead of the highest bid, we could also run a [Vickrey auction](https://en.wikipedia.org/wiki/Vickrey_auction), requiring the winner to pay the second-highest bid. This could potentially be one idea for extending the features of your smart contract at the end of this tutorial! + +Figure 1 (below) depicts a sequence diagram which demonstrates the sealed-bid auction process end-to-end: + +![sealed-bid auction flow.png](./images/2025-03-04-onchain-sealed-bid-auction./sealed-bid_auction_flow.png) + +Figure 1. Sealed-Bid Auction Flow + +# **4. Building the Smart Contract (Don't Worry, We'll Guide You!)** + +Now comes the fun part—**building the auction smart contract!** 🎉 + +## **4.1 Setting Up the Project** + +### **Initialize a Foundry Project** + +First, let's set up our smart contract environment using **Foundry**. We create a new folder, and initialize the project as follows: + +```bash +$ mkdir sealed-bid-auction-filecoin-testnet # Create project folder +$ cd sealed-bid-auction-filecoin-testnet # Navigate into the folder +$ forge init +``` + +This creates essential files and folders. You can read more about it in the Foundry [documentation](https://book.getfoundry.sh/projects/creating-a-new-project). + +### **Committing to Create a GitHub Repository** + +NowFirst, create a new repository on [GitHub](https://github.com/). This will store all our code. Once created, GitHub will show you commands to set it up locally. With our newly initialized Foundry project, we simply need to add the remote branch and push the changesHere’s an example: + +```bash +$ mkdir sealed-bid-auction-filecoin-testnet # Create project folder +$ cd sealed-bid-auction-filecoin-testnet # Navigate into the folder +$ echo "# sealed-bid-auction-filecoin-testnet" >> README.md # Add a README file +$ git init # Initialize Git locally +$ git add README.md +$ git commit -m "first commit" +$ git branch -M main +$ git remote add origin https://github.com//sealed-bid-auction-filecoin-testnet.git # replace with your github username +$ git push -u origin main +``` + +### **Install External Libraries** + +We'll need two key Solidity libraries: + +- **OpenZeppelin** → For security features like preventing reentrancy attacks. +- **blocklock-solidity** → To handle **bid encryption** and **timed unlocking**. + +Install them with: + +```bash +$ forge install OpenZeppelin/openzeppelin-contracts +$ forge install +``` + +Now, create a **./remappings.txt** file in the project root folder so Foundry knows where to find these libraries. And add these lines to the file: + +``` +src/=src/ +@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/ +@blocklock-solidity/src/=lib/blocklock-solidity/src/ + +``` + +--- + +## **4.2 Structuring Our Smart Contract** + +Now that everything is set up, let’s start coding our **sealed-bid auction contract**. + +We’ll break it down into easy-to-digest sections: + +- **Imports & Setup** → Bring in external libraries +- **State Variables** → Keep track of auction details +- **Modifiers & Events** → Prevent mistakes and log important actions +- **Auction Phases** → Handling bids, revealing, and finalizing +- **Helper & Getter Functions** → Making things easier to interact with + +--- + +## **4.3 Importing Dependencies** + +At the top of our contract file, we **import the required libraries**: + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity 0.8.28; + +// Import libraries +import {TypesLib} from "@blocklock-solidity/src/libraries/TypesLib.sol"; +import {AbstractBlocklockReceiver} from "@blocklock-solidity/src/AbstractBlocklockReceiver.sol"; +import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +``` + +### **What do these do?** + +- **`TypesLib`** → Provides a custom data structure for **sealed (encrypted) bids**. +- **`AbstractBlocklockReceiver`** → Allows bids to be **decrypted after bidding ends**. +- **`ReentrancyGuard`** → Prevents **reentrancy attacks**, a common Solidity exploit. + +--- + +## **4.4 Defining the Interface & State Variables** + +First, let’s define an **interface** for our contract: + +```solidity +interface ISealedBidAuction { + function placeSealedBid(TypesLib.Ciphertext calldata sealedBid) external payable returns (uint256); + function withdrawRefund() external; + function fulfillHighestBid() external payable; + function finalizeAuction() external; +} +``` + +Note that the smart contract does not facilitate any asset transfer to the highest bidder, but it could be a nice idea for further extending the smart contract, e.g., escrow an NFT (non-fungible token) in the contract and add functionality to transfer to the highest bidder upon completion of the auction or allow only the seller to extract it from the contract if there is no auction winner / bidder. + +If you’re up for it, please check this and other ideas for extension towards the end of this tutorial! + +Now, under the interface, let's add **state variables** to keep track of bids, bidders, and the auction status. + +```solidity +contract SealedBidAuction is ISealedBidAuction, AbstractBlocklockReceiver, ReentrancyGuard { + struct Bid { + uint256 bidID; // Unique identifier for the bid + address bidder; // Bidders wallet address + TypesLib.Ciphertext sealedBid; // Encrypted / sealed bid amount + bytes decryptionKey; // The timelock decryption key used to unseal the sealed bid + uint256 unsealedBid; // Decrypted/unsealed bid amount, revealed after auction end + bool revealed; // Status of whether the bid has been revealed + } + + address public seller; // seller + uint256 public biddingEndBlock; // bidding end block number + bool public auctionEnded; // bool indicating end of the auction or not + bool public highestBidPaid; // bool indicating if auction winner has fulfilled their bid + uint256 public totalBids; // Total number of bids placed + uint256 public revealedBidsCount; // Count of revealed bids after auction end + bool public allBidsUnsealed; // bool indicating if all the sealed bids have been decrypted + address public highestBidder; // address of the current highest bidder + uint256 public highestBid; // highest bid amount in plaintext + mapping(address => Bid) bids; // Mapping of bidders to bids + mapping(uint256 => Bid) public bidsById; // Mapping of bid IDs to bid details + mapping(address => uint256) public bidderToBidID; // Mapping of bidders to their bid IDs + mapping(address => uint256) public pendingReturns; // mapping of bidders to their pending reservePrice refunds + uint256 public reservePrice = 0.01 ether; // reserve price paid for each bid placed. Non-refundable for highest bidder + +``` + +### **What’s happening here?** + +- **Tracks all bids** using mappings. +- **Stores the highest bid & bidder**. +- **Handles refunds** for non-winning bidders. + +--- + +## **4.5 Adding Modifiers & Events** + +### **Events (For Logging)** + +Events help keep track of auction actions: + +```solidity +event NewBid(uint256 indexed bidID, address indexed bidder); + event AuctionEnded(address winner, uint256 highestBid); + event BidUnsealed(uint256 indexed bidID, address indexed bidder, uint256 unsealedBid); + event HighestBidFulfilled(address indexed bidder, uint256 amount); + event ReservePriceClaimed(uint256 indexed bidID, address indexed claimant, uint256 amount); + +``` + +### **Modifiers (To Enforce Rules) and Constructor** + +```solidity +modifier onlyBefore(uint256 _block) { + require(block.number < _block, "Block has passed."); + _; +} + +modifier onlyAfter(uint256 _block) { + require(block.number > _block, "Not yet allowed."); + _; +} + +modifier validateReservePrice() { + require(msg.value == reservePrice, "Bid must be accompanied by a deposit equal to the reserve price."); + _; +} + +modifier onlySeller() { + require(msg.sender == seller, "Only seller can call this."); + _; +} + +modifier onlyAfterBidsUnsealed() { + require(revealedBidsCount == totalBids, "Not all bids have been revealed."); + _; +} + +constructor(uint256 _biddingEndBlock, address blocklockContract) AbstractBlocklockReceiver(blocklockContract) { + require(_biddingEndBlock > block.number, "Bidding must end after a future block."); + biddingEndBlock = _biddingEndBlock; + seller = msg.sender; +} +``` + +--- + +## **4.6 Implementing the Auction Phases** + +### **4.6.1 Placing a Sealed Bid** + +```solidity +function placeSealedBid(TypesLib.Ciphertext calldata sealedBid) + external + payable + onlyBefore(biddingEndBlock) + validateReservePrice + returns (uint256) +{ + uint256 bidID = bidderToBidID[msg.sender]; + require(bidID == 0, "Only one bid allowed per bidder."); + bidID = blocklock.requestBlocklock(biddingEndBlock, sealedBid); + Bid memory newBid = Bid({ + bidID: bidID, + bidder: msg.sender, + sealedBid: sealedBid, + decryptionKey: hex"", + unsealedBid: 0, + revealed: false + }); + bids[msg.sender] = newBid; + bidsById[bidID] = newBid; + bidderToBidID[msg.sender] = bidID; + + pendingReturns[msg.sender] = reservePrice; + totalBids += 1; + + emit NewBid(bidID, msg.sender); + return bidID; +} +``` + +**What happens?** + +- Bidder submits an **encrypted bid**. +- They pay a **0.01 ETH reserve price**. + +--- + +### **4.6.2 Revealing Bids** + +Once bidding ends, bids get **decrypted on-chain** using decryption keys passed to your auction smart contract by an oracle: + +```solidity +function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) + external + override + onlyAfter(biddingEndBlock) +{ + require(bidsById[requestID].bidID != 0, "Bid ID does not exist."); + require( + bidsById[requestID].decryptionKey.length == 0, "Bid decryption key already received from timelock contract." + ); + + // update the stored bid data + Bid storage bid = bidsById[requestID]; + bid.decryptionKey = decryptionKey; + bid.revealed = true; + + // decrypt bid amount + uint256 decryptedSealedBid = abi.decode(blocklock.decrypt(bid.sealedBid, bid.decryptionKey), (uint256)); + bid.unsealedBid = decryptedSealedBid; + + // update highest bid + updateHighestBid(requestID, decryptedSealedBid); + + emit BidUnsealed(bid.bidID, bid.bidder, bid.unsealedBid); +} + + + +function updateHighestBid(uint256 bidID, uint256 unsealedBid) internal { + Bid storage bid = bidsById[bidID]; + + bid.unsealedBid = unsealedBid; + bid.revealed = true; + revealedBidsCount += 1; + + if (unsealedBid > highestBid && unsealedBid > reservePrice) { + highestBid = unsealedBid; + highestBidder = bid.bidder; + } + + emit BidUnsealed(bidID, bid.bidder, unsealedBid); +} + +``` + +**What happens?** + +- Each bid gets **decrypted after the bidding end block number**. +- The highest bid is **updated**. + +--- + +### **4.6.3 Finalizing the Auction** + +**The auction can be finalised after all bids have been unsealed:** + +```solidity +function finalizeAuction() external onlyAfterBidsUnsealed { + require(!auctionEnded, "Auction already finalised."); + auctionEnded = true; + emit AuctionEnded(highestBidder, highestBid); +} + +``` + +**Losing bidders withdraw refunds**: + +```solidity +function withdrawRefund() external onlyAfter(biddingEndBlock) onlyAfterBidsUnsealed nonReentrant { + require(msg.sender != highestBidder, "Highest bidder cannot withdraw refund."); + Bid memory bid = bids[msg.sender]; + uint256 amount = pendingReturns[bid.bidder]; + require(amount > 0, "Nothing to withdraw."); + pendingReturns[msg.sender] = 0; + payable(msg.sender).transfer(amount); + emit ReservePriceClaimed(bid.bidID, msg.sender, amount); +} + +``` + +**The winner pays the remaining balance**: + +```solidity +function fulfillHighestBid() external payable onlyAfter(biddingEndBlock) onlyAfterBidsUnsealed { + require(highestBid > 0, "Highest bid is zero."); + require(msg.sender == highestBidder, "Only the highest bidder can fulfil."); + require(!highestBidPaid, "Payment has already been completed."); + require( + msg.value == highestBid - reservePrice, "Payment must be equal to highest bid minus the reserve amount." + ); + + highestBidPaid = true; + payable(seller).transfer(msg.value + reservePrice); + pendingReturns[highestBidder] = 0; + + emit HighestBidFulfilled(msg.sender, msg.value + reservePrice); +} +``` + +--- + +### **4.6.4 Getter Functions** + +To make it easier to retrieve auction details, we'll implemented several getter functions. These functions allow users to check bid information, verify their own bids, and determine the highest bid. + +### **Retrieving a Bid by Bid ID** + +Use this function to fetch bid details using a specific `bidID`. This is useful for accessing bids directly if you have the bid identifier. + +```solidity +function getBidWithBidID(uint256 bidID) + external + view + returns ( + TypesLib.Ciphertext memory sealedBid, + bytes memory decryptionKey, + uint256 unsealedBid, + address bidder, + bool revealed + ) +{ + sealedBid = bidsById[bidID].sealedBid; + decryptionKey = bidsById[bidID].decryptionKey; + unsealedBid = bidsById[bidID].unsealedBid; + bidder = bidsById[bidID].bidder; + revealed = bidsById[bidID].revealed; +} +``` + +### **Retrieving a Bid by Bidder's Address** + +If you know a bidder's wallet address, you can use this function to check whether they placed a bid and get their bid details. + +```solidity +function getBidWithBidder(address bidder) + external + view + returns ( + TypesLib.Ciphertext memory sealedBid, + bytes memory decryptionKey, + uint256 unsealedBid, + address _bidder, + bool revealed + ) +{ + sealedBid = bidsById[bidderToBidID[bidder]].sealedBid; + decryptionKey = bidsById[bidderToBidID[bidder]].decryptionKey; + unsealedBid = bidsById[bidderToBidID[bidder]].unsealedBid; + _bidder = bidsById[bidderToBidID[bidder]].bidder; + revealed = bidsById[bidderToBidID[bidder]].revealed; +} +``` + +### **Retrieving the Highest Bid and Bidder** + +To check the leading bid and its owner, use this function: + +```solidity +function getHighestBid() + external + view + returns (uint256 highestBidAmount, address highestBidderAddress) +{ + highestBidAmount = highestBid; + highestBidderAddress = highestBidder; +} +``` + +✅ **Why These Functions Matter?** + +- **Transparency**: Participants can verify bid statuses. +- **Fairness**: Ensures all bidders have access to auction data. +- **Ease of Use**: Smart contract interactions become smoother for dApp integrations. + +## **5. Deploying to the Filecoin Calibration Testnet** + +Now that we have our smart contract, it's time to deploy it to the **Filecoin Calibration Testnet** using a custom deployment script. + +### **Step 1: Verify Your Smart Contract** + +Before deploying, compare your contract with the reference implementation on GitHub: + +🔗 [SealedBidAuction.sol on GitHub](https://github.com/randa-mu/sealed-bid-auction-filecoin-testnet/blob/development/src/SealedBidAuction.sol). + +### **Step 2: Set Up Environment Variables** + +Create a `.env` file to store the **RPC URL** and your **private key**. These are required for deployment. If you don’t have test FIL tokens, you can obtain them from the Filecoin testnet faucet by simply pasting your EVM wallet address in the [token faucet](https://faucet.calibnet.chainsafe-fil.io/funds.html). The faucet will return a string representing the token transfer transaction hash. You can paste this string into the [block explorer](https://calibration.filfox.info/en) to view the status of the transaction. + +Your `.env` file should look like this (replace the private key with your own): + +``` +CALIBRATION_TESTNET_PRIVATE_KEY=0x... +CALIBRATION_TESTNET_RPC_URL=https://filecoin-calibration.chainup.net/rpc/v1 + +``` + +### **Step 3: Create the Deployment Script** + +Inside the `script` folder, create a file named `SealedBidAuction.s.sol` and add the following deployment script: + +```solidity +// SPDX-License-Identifier: MIT +pragma solidity 0.8.28; + +import {Script} from "forge-std/Script.sol"; +import {console} from "forge-std/console.sol"; +import {SealedBidAuction} from "../src/SealedBidAuction.sol"; + +contract SealedBidAuctionScript is Script { + + function run() external { + uint256 deployerPrivateKey = vm.envUint("CALIBRATION_TESTNET_PRIVATE_KEY"); + + vm.startBroadcast(deployerPrivateKey); + + uint biddingEndBlock = block.number + 100; // Adjust based on the desired bidding duration + address blocklockSenderContractAddress = 0xfF66908E1d7d23ff62791505b2eC120128918F44; + + SealedBidAuction auction = new SealedBidAuction(biddingEndBlock, blocklockSenderContractAddress); + + console.log("SealedBidAuction deployed at: ", address(auction)); + + vm.stopBroadcast(); + } +} + +``` + +### **Step 4: Set Deployment Parameters** + +- **Bidding End Block**: The script sets `biddingEndBlock` to `current block number + 100`. This ensures the bidding process lasts for 100 more blocks. +📌 Check the current block number on the **Filecoin Calibration Testnet block explorer**, then update this value accordingly. +- **BlocklockSender Contract Address**: This contract handles **timelock encryption (conditional decryption) requests** and **decryption key delivery**. +The deployed **BlocklockSender Proxy Contract** on Filecoin Calibration Testnet is: + + ``` + 0xfF66908E1d7d23ff62791505b2eC120128918F44 + ``` + + +### **Step 5: Deploy the Contract** + +**We will be using our environment variables in our created `.env` file.** + +Load the environment variables: + +```bash +$ source .env +``` + +Then run the deployment script using the following `forge script` command: + +```bash +$ forge script script/SealedBidAuction.s.sol --rpc-url $CALIBRATION_TESTNET_RPC_URL --private-key $CALIBRATION_TESTNET_PRIVATE_KEY --broadcast +``` + +### **Deployment Complete! 🎉** + +Once the script executes successfully, it will display the contract’s deployment address. 🎯 Now, your **SealedBidAuction** contract is live on the **Filecoin Calibration Testnet**! + +## **6. Let's Make It Work: Communicating with the Contract Using JavaScript!** + +Now that our smart contract is deployed, it’s time to bring it to life with JavaScript! We’ll use **TypeScript** and a cool client-side library to generate Ciphertexts and interact with our sealed-bid auction contract. 🚀 + +### **Step 1: Install Required Packages** + +First, we need to install the **blocklock-js** library (for Ciphertext magic!) and some TypeScript tools to run our scripts. Here's the command to get everything set up: + +```bash +$ yarn add blocklock-js --dev +$ yarn add ts-node typescript dotenv --dev + +``` + +### **Step 2: Create Utility Scripts** + +Next, let's create a `utils` folder where we'll store two important scripts: + +- **`utils/getBid.ts`**: This script will fetch bid data from the smart contract and display it in a human-readable format. 🧐 +- **`utils/encryptAndPlaceBid.ts`**: This script will generate bid amount **Ciphertexts** and place them in the auction contract. 💸 + +You can find the full source code for these files on [GitHub](https://github.com/randa-mu/sealed-bid-auction-filecoin-testnet/tree/development/utils). You will also need to copy the [tsconfig.json](https://github.com/randa-mu/sealed-bid-auction-filecoin-testnet/blob/development/tsconfig.json) file and store it at the root of the project. + +### **Step 3: Adjust the Parameters** + +Before you run the scripts, don’t forget to update the contract address and other parameters (e.g., the bid id to get data for) in the main methods of both files. This ensures the scripts know where to talk to your deployed auction contract. + +### **Step 4: Run the Scripts** + +Once everything is set up, you can run the scripts with these commands: + +```bash +$ yarn ts-node utils/getBid.ts +$ yarn ts-node utils/encryptAndPlaceBid.ts + +``` + +🎯 **Pro Tip:** You’ll need to switch the private key if you plan to place multiple bids (since each bidder can only place one bid). Make sure the wallet you’re using has FIL tokens for the bids! + +### **Step 5: Dependencies Checklist** + +Make sure you have these dependencies in your `package.json` file. These tools will keep everything running smoothly: + +```json +"devDependencies": { + "blocklock-js": "^0.0.7", + "dotenv": "^16.4.7", + "ts-node": "^10.9.2", + "typescript": "^5.7.3" +} +``` + +### **Congratulations! 🎉** + +You’ve made it! Your sealed-bid auction contract is now up and running on the **Filecoin Calibration Testnet**. It’s capable of accepting encrypted bids and automatically decrypting them at the end of the auction process. 🙌 + +Now, you’re all set to watch your auction unfold! 🌟 + +## **7. Wrapping Up & What’s Next?** + +### 🎉 Well Done**!** + +You’ve built a **fully functional sealed-bid auction** on the **Filecoin Calibration Testnet**! Your contract can now accept encrypted bids, keep them secret until the auction ends, and then decrypt them automatically. That’s a **big** deal! 💪 + +But why stop here? There’s always room for **improvements and new ideas**—let’s explore what’s next. + +### **🚀 Ideas for Improvements** + +Want to take your auction to the next level? Here are a few **cool upgrades** to consider: + +- **Payment Window** - Enforce a timeframe for the highest bidder to complete payment or forfeit their deposit +- **Seller Withdrawals** - Enable auction owners to withdraw forfeited deposits from non-paying bidders +- **Vickrey Auction** - Extend the contract logic to support Vickrey auctions which is a type of sealed-bid auction **where the highest bidder pays the second-highest bid** +- **Gas Optimization** - Improve bidding efficiency to reduce transaction costs +- **User Interface** - Create an intuitive front-end for easy auction participation +- **New Applications** - Explore other use cases like **sealed voting, private transactions, or secret contracts** +- **Facilitate Asset Transfer** - Add logic to execute the transfer of an asset, e.g., NFT to the highest bidder or extract it from the contract if there is no auction winner / bidder + +### **👩‍💻 Contribute to the blocklock Ecosystem** + +Want to give back to the community? You can **contribute to blocklock’s open-source libraries** and help improve the tools we just used! + +🔹 [blocklock-js (JavaScript library)](https://github.com/Blocklock/blocklock-js) + +🔹 [blocklock-solidity (Smart contract library)](https://github.com/Blocklock/blocklock-solidity) + +By contributing, you’ll be helping others **build private, secure, and decentralized applications.** + +### **🌟 What’s Next?** + +This is just the **beginning** of your journey in privacy-preserving smart contracts. Whether you're refining this auction, **building new dApps**, or **exploring more advanced cryptographic techniques**, the possibilities are endless. + +💡 Keep experimenting, keep innovating, and **happy coding!** diff --git a/docs/blog/images/2025-03-04-onchain-sealed-bid-auction/sealed-bid_auction_flow.png b/docs/blog/images/2025-03-04-onchain-sealed-bid-auction/sealed-bid_auction_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..4466adcfa3fdfcc0f1da39a768d9b20abd1ef0db GIT binary patch literal 63619 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 bW;lhW?FLxaQ&q4MndFWf|2yT-nScHt@BGVR literal 0 HcmV?d00001 From abe41875efd4c6bdac7745676d22a39364eb2b4c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 17:33:59 +0000 Subject: [PATCH 2/5] Optimised images with calibre/image-actions --- .../sealed-bid_auction_flow.png | Bin 63619 -> 58033 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/blog/images/2025-03-04-onchain-sealed-bid-auction/sealed-bid_auction_flow.png b/docs/blog/images/2025-03-04-onchain-sealed-bid-auction/sealed-bid_auction_flow.png index 4466adcfa3fdfcc0f1da39a768d9b20abd1ef0db..5790a932a4283e09d9e38b1a30c96bc7f87f59da 100644 GIT binary patch literal 58033 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%0D`VG!i3(|whLGW;6amH8OmMFxo;u< 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 bW;lhW?FLxaQ&q4MndFWf|2yT-nScHt@BGVR From 9280f281842776868a0e817ddd9cbc4fcfa6ca7a Mon Sep 17 00:00:00 2001 From: Yolan Romailler Date: Tue, 4 Mar 2025 18:36:29 +0100 Subject: [PATCH 3/5] fixing images --- docs/blog/2025-03-04-onchain-sealed-bid-auction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/2025-03-04-onchain-sealed-bid-auction.md b/docs/blog/2025-03-04-onchain-sealed-bid-auction.md index a72ab53..9f32da2 100644 --- a/docs/blog/2025-03-04-onchain-sealed-bid-auction.md +++ b/docs/blog/2025-03-04-onchain-sealed-bid-auction.md @@ -70,7 +70,7 @@ The auction runs in **four phases**: Figure 1 (below) depicts a sequence diagram which demonstrates the sealed-bid auction process end-to-end: -![sealed-bid auction flow.png](./images/2025-03-04-onchain-sealed-bid-auction./sealed-bid_auction_flow.png) +![sealed-bid auction flow.png](./images/2025-03-04-onchain-sealed-bid-auction/sealed-bid_auction_flow.png) Figure 1. Sealed-Bid Auction Flow From 53d644fc8b86fa056e714e5fffddc16287aae243 Mon Sep 17 00:00:00 2001 From: Yolan Romailler Date: Tue, 4 Mar 2025 18:49:43 +0100 Subject: [PATCH 4/5] using latest version --- .../2025-03-04-onchain-sealed-bid-auction.md | 32 +++++++------------ 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/docs/blog/2025-03-04-onchain-sealed-bid-auction.md b/docs/blog/2025-03-04-onchain-sealed-bid-auction.md index 9f32da2..e78ee16 100644 --- a/docs/blog/2025-03-04-onchain-sealed-bid-auction.md +++ b/docs/blog/2025-03-04-onchain-sealed-bid-auction.md @@ -7,7 +7,6 @@ tags: - Beginner - How-to --- - ## 1. What We're Building & Why It's Cool 🔒 A **sealed-bid auction** is like a high-stakes guessing game where no one knows what anyone else is offering until the very end. Instead of shouting bids in a crowded room (like in a regular auction), everyone submits their bids **in secret**. Once the bidding phase is over, all bids are revealed, and the highest bidder wins. @@ -92,18 +91,11 @@ $ forge init This creates essential files and folders. You can read more about it in the Foundry [documentation](https://book.getfoundry.sh/projects/creating-a-new-project). -### **Committing to Create a GitHub Repository** +### **Committing to a GitHub Repository** -NowFirst, create a new repository on [GitHub](https://github.com/). This will store all our code. Once created, GitHub will show you commands to set it up locally. With our newly initialized Foundry project, we simply need to add the remote branch and push the changesHere’s an example: +Now, create a new repository on [GitHub](https://github.com/). This will store all our code. Once created, GitHub will show you commands to set it up locally. With our newly initialized Foundry project, we simply need to add the remote branch and push the changes: ```bash -$ mkdir sealed-bid-auction-filecoin-testnet # Create project folder -$ cd sealed-bid-auction-filecoin-testnet # Navigate into the folder -$ echo "# sealed-bid-auction-filecoin-testnet" >> README.md # Add a README file -$ git init # Initialize Git locally -$ git add README.md -$ git commit -m "first commit" -$ git branch -M main $ git remote add origin https://github.com//sealed-bid-auction-filecoin-testnet.git # replace with your github username $ git push -u origin main ``` @@ -119,7 +111,7 @@ Install them with: ```bash $ forge install OpenZeppelin/openzeppelin-contracts -$ forge install +$ forge install https://github.com/randa-mu/blocklock-solidity ``` Now, create a **./remappings.txt** file in the project root folder so Foundry knows where to find these libraries. And add these lines to the file: @@ -233,11 +225,10 @@ Events help keep track of auction actions: ```solidity event NewBid(uint256 indexed bidID, address indexed bidder); - event AuctionEnded(address winner, uint256 highestBid); - event BidUnsealed(uint256 indexed bidID, address indexed bidder, uint256 unsealedBid); - event HighestBidFulfilled(address indexed bidder, uint256 amount); - event ReservePriceClaimed(uint256 indexed bidID, address indexed claimant, uint256 amount); - +event AuctionEnded(address winner, uint256 highestBid); +event BidUnsealed(uint256 indexed bidID, address indexed bidder, uint256 unsealedBid); +event HighestBidFulfilled(address indexed bidder, uint256 amount); +event ReservePriceClaimed(uint256 indexed bidID, address indexed claimant, uint256 amount); ``` ### **Modifiers (To Enforce Rules) and Constructor** @@ -348,9 +339,9 @@ function receiveBlocklock(uint256 requestID, bytes calldata decryptionKey) emit BidUnsealed(bid.bidID, bid.bidder, bid.unsealedBid); } - - - + + + function updateHighestBid(uint256 bidID, uint256 unsealedBid) internal { Bid storage bid = bidsById[bidID]; @@ -594,7 +585,6 @@ First, we need to install the **blocklock-js** library (for Ciphertext magic!) a ```bash $ yarn add blocklock-js --dev $ yarn add ts-node typescript dotenv --dev - ``` ### **Step 2: Create Utility Scripts** @@ -604,7 +594,7 @@ Next, let's create a `utils` folder where we'll store two important scripts: - **`utils/getBid.ts`**: This script will fetch bid data from the smart contract and display it in a human-readable format. 🧐 - **`utils/encryptAndPlaceBid.ts`**: This script will generate bid amount **Ciphertexts** and place them in the auction contract. 💸 -You can find the full source code for these files on [GitHub](https://github.com/randa-mu/sealed-bid-auction-filecoin-testnet/tree/development/utils). You will also need to copy the [tsconfig.json](https://github.com/randa-mu/sealed-bid-auction-filecoin-testnet/blob/development/tsconfig.json) file and store it at the root of the project. +You can find the full source code for these files on [GitHub](https://github.com/randa-mu/sealed-bid-auction-filecoin-testnet/tree/development/utils). You will also need to copy the [tsconfig.json](https://github.com/randa-mu/sealed-bid-auction-filecoin-testnet/blob/development/tsconfig.json) file and store it in the root folder of the project. ### **Step 3: Adjust the Parameters** From 05108a44aea38ae039eba8812f4ac546ebc7288b Mon Sep 17 00:00:00 2001 From: Yolan Romailler Date: Tue, 4 Mar 2025 18:56:54 +0100 Subject: [PATCH 5/5] fixing typo and link --- docs/blog/2025-03-04-onchain-sealed-bid-auction.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/blog/2025-03-04-onchain-sealed-bid-auction.md b/docs/blog/2025-03-04-onchain-sealed-bid-auction.md index e78ee16..bafc566 100644 --- a/docs/blog/2025-03-04-onchain-sealed-bid-auction.md +++ b/docs/blog/2025-03-04-onchain-sealed-bid-auction.md @@ -633,7 +633,7 @@ Now, you’re all set to watch your auction unfold! 🌟 ## **7. Wrapping Up & What’s Next?** -### 🎉 Well Done**!** +### 🎉 Well Done! You’ve built a **fully functional sealed-bid auction** on the **Filecoin Calibration Testnet**! Your contract can now accept encrypted bids, keep them secret until the auction ends, and then decrypt them automatically. That’s a **big** deal! 💪 @@ -655,9 +655,9 @@ Want to take your auction to the next level? Here are a few **cool upgrades** to Want to give back to the community? You can **contribute to blocklock’s open-source libraries** and help improve the tools we just used! -🔹 [blocklock-js (JavaScript library)](https://github.com/Blocklock/blocklock-js) +🔹 [blocklock-js (JavaScript library)](https://github.com/randa-mu/blocklock-js) -🔹 [blocklock-solidity (Smart contract library)](https://github.com/Blocklock/blocklock-solidity) +🔹 [blocklock-solidity (Smart contract library)](https://github.com/randa-mu/blocklock-solidity) By contributing, you’ll be helping others **build private, secure, and decentralized applications.**