Last updated
Conventional auction contract
This page outlines the Conventional Auction Contract designed for blockchain-based auction systems. It provides a comprehensive guide to its features, components, and usage.
Features
- Auction Management: Set up and manage conventional auctions with start and end dates, and reserve prices.
- Bid Handling: Facilitate the placement and management of bids.
- Escrow Account Management: Secure handling of funds through escrow accounts.
- Bid Refunding: Mechanism for refunding bids.
- Auction Finalization: Rules for concluding the auction and determining the winning bid.
Technical specifications
The following sections provide reference information for writing a smart contract to conduct a conventional auction using Marmalade on the Kadena network.
Capabilities
You can define the following capabilities to manage permissions in conventional auctions:
GOVERNANCE: Defines governance for the contract and is controlled by the keyset defined under theADMIN-KSconstant.AUCTION_CREATED: Specifies the event emitted when thecreate-auctionfunction is executed. The emitted event includes thesale-id,token-id, andescrowfields.MANAGE_AUCTION: Identifies a guard to control who can create and update an auction. You must specify thesale-idandtoken-idparameters when you use this capability increate-auctionandupdate-auctionfunctions.BID_PLACED: Specifies the event emitted when a bid is place. The emitted event includes thebidder?,bid-amount, andtimestampfields.PLACE_BID: Ensures that the bidder signs the transaction to place the bid.REFUND_CAP: Protects funds held in escrow to ensure refunds can be made, if necessary.
Schemas
auctions-schema: Describes auction information includingtoken-id,start-date,end-date,highest-bid,highest-bid-id, andreserve-price.bids-schema: Describes bid information includingbidder,bidder-guard, andbid.
Tables
auctions: Stores auction information.bids: Stores bid information.
Functions
escrow-account: Returns the auction's fungible escrow account name.escrow-guard: Returns the account guard of the escrow account.enforce-fungible-transfer: Requires thatpolicy-manager.FUNGIBLE_TRANSFER_CALLcapability is in scope.enforce-quote-update: Enforces a quote update when required for sale contracts. This function is called by thepolicy-manager.enforce-buyfunction to validate that only the winning bidder processes themarmalade.buycall, the escrow payment, and the marketplace fee.enforce-withdrawal: Enforces a withdrawal when required for sale contracts. This function is called by thepolicy-manager.enforce-withdrawfunction to validate that the auction has expired, or that the bid has already been placed.create-bid-id: Generates a unique bid identifier by hashing thesale-id,bidder, andblock-timefields.create-auction: Allows sellers to create a conventional auction for their token after providing auction information.update-auction: Allows sellers to update auction information before the auction start time.retrieve-auction: Retrieves auction information from theauctionstable.retrieve-bid: Retrieves bid information from thebidstable.place-bid: Transfers the bid amount in a fungible currency from the bidder account to an escrow account and records the bids in the blockchain.
Constants
-
ADMIN-KS: Sets themarmalade-sale.marmalade-contract-adminfor theGOVERNANCEcapability.