Skip to main content
Auctions enable price discovery through competitive bidding over fixed time periods. Sellers set reserve prices and duration while buyers submit increasing bids until auction expiration triggers automatic settlement to the highest bidder.

Why Use Auctions

Price Discovery

Market determines value through competitive bidding rather than seller pricing

Time Pressure

Fixed duration creates urgency and incentivizes competitive bidding

Automatic Settlement

Highest bid wins at expiration with atomic token transfer and payment

Anti-Sniping

Last-minute bids extend auction duration, preventing manipulation

Auction Mechanics

Auctions run for configured durations (typically 24-72 hours) with minimum bid increments. Each new bid must exceed the current highest bid by the minimum increment percentage, typically 5-10%. Sellers configure reserve prices—minimum acceptable bids that must be met for auction completion. Auctions ending below reserve price return tokens to sellers without trades executing.
Minimum bid increments prevent penny-bidding spam while maintaining competitive dynamics:
// Calculate minimum next bid
const currentHighBid = 100_000_000000; // 100,000 USDC
const minIncrement = 5; // 5% in basis points (500)

const minNextBid = currentHighBid + 
    (currentHighBid * minIncrement) / 10000;
// minNextBid = 105,000 USDC

// Validate new bid
if (newBid < minNextBid) {
    revert("BID_TOO_LOW");
}
Higher increment percentages (10-15%) suit high-value assets where large jumps are expected. Lower increments (2-5%) work better for price-sensitive markets with many participants.

Anti-Sniping Protection

Last-minute bids within the extension window automatically extend auction duration. This prevents sniping strategies where bidders wait until final seconds to submit winning bids without competition.
Time RemainingBid ActionResult
more than 15 minutesNew bid receivedNo extension, auction continues
less than 15 minutesNew bid receivedExtend auction by 15 minutes
0 minutesAuction expiresSettle to highest bidder automatically
No valid bidsAuction expiresReturn token to seller
Extension windows typically range from 10-30 minutes based on asset liquidity and expected bidding patterns. Extensions reset each time a new bid arrives during the window, creating fair competition windows.

Auction Creation

Sellers configure all auction parameters during creation including duration, reserve price, minimum increment, and extension settings.
// POST https://api.trusset.org/v1/trading/auctions/create

const response = await fetch('https://api.trusset.org/v1/trading/auctions/create', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    tokenAddress: "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    tokenId: "42",
    reservePrice: "50000000000", // 50,000 USDC minimum
    paymentToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    duration: 172800, // 48 hours in seconds
    minBidIncrement: 500, // 5% in bps
    extensionWindow: 900, // 15 minutes in seconds
    startTime: Math.floor(Date.now() / 1000) + 3600 // Start in 1 hour
  })
});

const { auctionId, escrowAddress } = await response.json();
Tokens transfer to auction escrow upon creation, preventing seller withdrawal during active bidding. Sellers can only cancel auctions that haven’t received any bids yet.

Bidding Process

Bidders submit bids meeting minimum increment requirements. Each bid locks payment tokens in escrow, returning previous bidder’s funds automatically.
Submit new bid exceeding current highest by minimum increment. Previous highest bidder receives automatic refund when outbid.
// POST https://api.trusset.org/v1/trading/auctions/bid

await fetch('https://api.trusset.org/v1/trading/auctions/bid', {
  method: 'POST',
  body: JSON.stringify({
    auctionId: "auction_xyz789",
    bidAmount: "105000000000", // 105,000 USDC
    maxGasPrice: "50" // Optional gas limit
  })
});

// Smart contract:
// 1. Validates bid meets minimum increment
// 2. Checks bidder compliance (KYC, restrictions)
// 3. Locks new bid payment in escrow
// 4. Returns previous bidder's payment
// 5. Extends auction if within extension window

Settlement

Auctions settle automatically when time expires. The smart contract transfers tokens to the highest bidder and payment to the seller in a single atomic transaction.
Reserve Met, Bids Present:
  • Token transfers from escrow to highest bidder
  • Payment transfers from escrow to seller minus marketplace fees
  • Auction marked complete, no further bids accepted
Reserve Not Met:
  • Token returns to seller from escrow
  • Highest bidder receives payment refund
  • Auction marked failed, seller can relist
No Bids Received:
  • Token automatically returns to seller
  • Auction expires without settlement
  • No fees charged to seller
Settlement Gas: Anyone can trigger settlement transaction after expiration. Typically executed by auction creator, highest bidder, or automated keeper services. Gas costs are minimal since state changes are limited to two transfers.
Settlement transactions can be triggered by anyone after auction expiration—typically the seller, winning bidder, or automated keeper bots monitoring auction contracts. First to execute wins the gas race but outcome remains identical regardless of executor.

Compliance Validation

Auctions enforce the same compliance rules as direct listings. Every bid validates identity verification and transfer restrictions before locking funds.
validateBidder
function
Check bidder KYC status and token transfer permissions before accepting bid
checkTransferRestrictions
function
Validate token can transfer to bidder based on whitelist/blacklist rules
verifyWalletLimits
function
Ensure winning bidder won’t exceed maximum holding restrictions
Failed compliance checks reject bids before locking payment tokens, saving gas costs and preventing invalid auction participation.
Compliance rules are checked at bid submission time and again at settlement. If token restrictions change during the auction (e.g., winner gets blacklisted), settlement may fail and require manual resolution.

Auction History

All bid activity records on-chain with complete audit trails. Query historical auctions for price discovery analysis or compliance reporting.
bidHistory
Bid[]
Array of all bids with amounts, bidders, timestamps, and transaction hashes
priceProgression
uint256[]
Historical price points showing competitive bidding intensity
participantCount
uint256
Unique bidders who participated, useful for liquidity metrics
settlementPrice
uint256
Final winning bid amount after auction completion
Export auction data for market analysis, regulatory reporting, or transparency dashboards through API endpoints or direct blockchain queries.

Fee Structure

Marketplace charges fees on successful auction settlements, typically 2.5% of final bid amount. Fees are deducted from seller proceeds automatically during settlement.
// Fee calculation at settlement
const winningBid = 125_000_000000; // 125,000 USDC
const feePercentage = 250; // 2.5% in bps

const feeAmount = (winningBid * feePercentage) / 10000;
const sellerReceives = winningBid - feeAmount;

// Results:
// feeAmount = 3,125 USDC
// sellerReceives = 121,875 USDC
Failed auctions (no bids or reserve not met) incur no fees. Sellers can relist without penalty, though initial escrow gas costs are not refunded.