← Back to home

XBid

XBid: Cross-chain NFT auctions. Sell on any chain, accept bids from all chains. Liquidity unified.

Problem Statement

XBid: Cross-Chain NFT Auction Platform==================================What XBid Is ?XBid is a decentralized NFT auction marketplace that eliminates blockchain boundaries. It allows NFT sellers to accept bids from buyers on any supported blockchain, using different tokens, while automatically handling all cross-chain complexities behind the scenes.The Problem It SolvesCurrent NFT marketplaces suffer from severe liquidity fragmentation. If you own an NFT on Ethereum, you can only sell to buyers who also have funds on Ethereum in the specific token you accept. A potential buyer on Arbitrum with ample USDT simply cannot participate, even if they'd pay more than anyone on Ethereum. This artificial limitation:Reduces seller revenue by artificially limiting the buyer poolExcludes willing buyers based purely on where their assets are locatedFragments liquidity across chains instead of unifying itCreates friction requiring manual bridging, swapping, and multiple transactionsReal-world impact: Sellers miss higher bids, buyers miss opportunities, and the NFT market operates far below its potential efficiency.How XBid WorksCore Innovation: Intent-Based Cross-Chain AuctionsXBid uses an intent-based architecture that separates what users want from how it's executed:Sellers express intent:"I want to sell this NFT""I prefer payment in USDC on Arbitrum""I'll accept bids with highest of 100 USDC, with a minimum reserve of 80 USDC"Buyers express intent:"I'll bid 90 USDT from my Optimism wallet"System automatically bridges funds to the BidManager contract on Optimism SepoliaSystem handles execution:Monitors all chains for bidsDetermines winners fairlyAutomatically refund to loosersAutomatically delivers NFT to Winners wallet addressThe Complete User FlowCreating an Auction (Seller Side):Recommendation : USE USDC FOR WHOLE FLOW AS USDT LIQUIDITY IS LOW ON TOKEN CONTRACT ADDRESS PROVIDED BY AVAIL NEXUS.Connect wallet on any supported chain (Ethereum, Arbitrum, Optimism, or Base Sepolia testnets)Browse your NFTs through visual gallery (powered by Alchemy NFT API)Click the NFT you want to sell—contract details auto-populateSet auction parameters:Highest Price (maximum bid to participate)Reserve price (absolute minimum you'll accept)Duration (2 minutes to 7 days)Preferred settlement token (USDC or USDT)Preferred settlement chain (where you want payment)Approve NFT contract (one-time per collection)Create auction—your NFT goes into escrow in the AuctionHub smart contractYour auction is now live and visible to bidders on ALL chains simultaneously.Placing Bids (Buyer Side):Browse live auctions from all chains in unified marketplaceSelect an auction and enter your bid amountChoose which chain to bid from (your native chain where you have gas fees)Click "Place Bid"—system automatically:Bridges your tokens to the auction chain if needed (using Nexus SDK)Locks your bid in the BidManager contractShows real-time transaction status (via Blockscout SDK)Track your bid status in "My Auctions"You stay on your native chain throughout—no manual bridging required.Claiming After Auction Ends:For sellers with winning bids:"Claim Tokens" button appearsOne click triggers automatic settlement:Winning bid bridges to your preferred chain (if different)Converts to your preferred token (if different)All happens atomically in single transactionYou receive exactly what you specifiedFor winning bidders:NFT automatically transfers to your walletNo action neededFor losing bidders:Automatic refunds to original chainsNo action neededTechnical ArchitectureSmart ContractsAuctionHub Contract (deployed on all chains):Takes NFT custody during auctionsStores auction parameters and seller preferencesManages auction lifecycle (create, cancel, settle)Transfers NFT to winner on completionGenerates unique intent IDs linking bids across chainsBidManager Contract (deployed on all chains):Accepts and locks bids on every chainValidates bid amounts against requirementsReleases funds to sellers or refunds biddersSupports bid increases for same bidderEmits events for keeper monitoringThe Keeper ServiceA backend Node.js service that acts as the coordination layer:Functions:Monitors blockchain events across all 4+ chains simultaneouslyAggregates bids from different chains for each auctionDetermines winners when auctions endAnalyzes settlement requirements (which chain, which token)Triggers NFT transfers and refund processingCritical Note:The keeper cannot move funds or manipulate outcomes. It only reads blockchain state and coordinates settlement transactions that smart contracts validate. Users remain in full custody of their assets through smart contracts.Four Settlement StrategiesThe system automatically selects the optimal path based on bid characteristics vs. seller preferences:Strategy 1: Direct TransferWinner's token + chain = Seller's preferenceSimple transfer from BidManager to sellerExample: USDC on Arbitrum $\rightarrow$ USDC on ArbitrumStrategy 2: Same-Chain SwapSame chain, different tokenUniswap swap on that chain (testnet uses direct swaps; mainnet ready for Nexus swap)Example: USDT on Arbitrum $\rightarrow$ USDC on ArbitrumStrategy 3: Cross-Chain BridgeDifferent chain, same tokenNexus SDK bridge to move tokensExample: USDC on Optimism $\rightarrow$ USDC on EthereumStrategy 4: Bridge + SwapDifferent chain AND different tokenNexus SDK bridgeAndExecute atomically combines bridging and Uniswap swapExample: USDT on Optimism $\rightarrow$ USDC on EthereumSingle transaction prevents funds getting stuck mid-transferTechnology IntegrationsAvail Nexus SDK (core cross-chain infrastructure):Unified Balance:Shows total token holdings across all chainsTransfer:Enables cross-chain bid placement without manual bridgingBridge:Moves winning bids to seller's preferred chainBridgeAndExecute:Atomically bridges and swaps in one transactionBlockscout SDK (transaction visibility):Tracks every transaction (NFT approvals, bids, claims, cancellations)Displays real-time status: Pending $\rightarrow$ Confirmed $\rightarrow$ FinalizedProvides direct explorer links for verificationEliminates need to manually check block explorersBuilds user trust through transparencyAlchemy NFT API (user experience):Fetches all NFTs owned by connected walletDisplays visual gallery with images and metadataAuto-populates contract addresses and token IDsEliminates error-prone manual entryUniswap (token conversion):Handles same-chain token swapsIntegrated into bridgeAndExecute for cross-chain swapsProvides liquidity for USDC/USDT conversionsFrontend Architecture (Next.js + React)Home Page:Wallet connection statusUnified balance display across all chainsNexus SDK initialization controlsCreate Auction Page:Visual NFT selector with galleryAuction parameter forms with validationNFT approval flow with Blockscout trackingSupports flexible durations and chain/token preferencesAuctions Browse Page:Live feed of all active auctions across chainsReal-time highest bid displayCross-chain bidding interface"My Bids" tracking sectionMy Auctions Page:View created auctions with statusCancel auctions (if no bids placed)Claim winning bids with automatic settlementTrack all bids you've placedSupported Networks & TokensCurrent Testnet’s where auctionHub.sol and bidManager.sol is deployed:Ethereum Sepolia (Layer 1 base)Arbitrum Sepolia (Optimistic rollup)Optimism Sepolia (Optimistic rollup)Base Sepolia (Coinbase L2)Supported Tokens:USDC (preferred—better testnet liquidity)USDT(Not preferred due to low liquidity on testnet’s)Both AuctionHub and BidManager deployed on all 4 major blockchains, creating full mesh topology where any chain can host auctions and accept bids from any other chain.Security ModelOn-Chain Security:All critical operations (NFT custody, bid locking, transfers) happen via auditable smart contractsNFTs held in escrow by AuctionHub contract, not intermediariesBid funds locked in BidManager contracts under user controlKeeper cannot move funds or manipulate outcomesIntent-Based Safety:If keeper fails, funds remain locked in contractsSellers retain NFT custody until valid winner claimsNo custody or control by centralized partiesWhy This MattersXBid demonstrates that cross-chain applications can be:Simple for users while complex under the hoodSecure and decentralized while providing seamless UXTransparent with real-time transaction visibilityEfficient by unifying fragmented liquidityThe platform proves that blockchain boundaries are technical limitations, not fundamental constraints. By leveraging Avail Nexus for cross-chain operations, Blockscout for transparency, Alchemy for data, and custom auction logic, XBid creates a marketplace where NFT value is determined by global demand, not chain affiliation.Sellers access maximum liquidity. Buyers participate from anywhere. The system handles all complexity automatically. This is the future of NFT marketplaces—truly chain-agnostic commerce.

Solution

Core Technology & ArchitectureWe built XBid using a three-layer architecture designed to handle cross-chain complexity seamlessly: Smart Contracts (Solidity): This layer is split into two main contracts.AuctionHub.sol: Deployed on the seller's chain, this contract acts as the escrow, holding the NFT and the auction's core parameters (like reserve price and deadline). BidManager.sol: Deployed on every supported chain (e.g., Arbitrum, Optimism, Base), this contract accepts and locks bids locally. This is the key: bidders never have to leave their native chain to participate.Frontend (Next.js 14): The UI uses RainbowKit and Wagmi for simple, multi-chain wallet connections. It fetches a user's NFTs using the Alchemy API for easy auction creation and provides a single interface to bid on any auction from any chain.Backend Keeper (Node.js/Express): This is the central orchestrator. It's a Node.js service that constantly monitors events (like BidPlaced) from all chains. It aggregates all bids in a MongoDB database to determine the real-time highest bidder across the entire system and coordinates the final settlement and refunds.Partner Technology IntegrationsPartner tech was essential for abstracting the cross-chain complexity away from the user:Avail Nexus SDK: This was our cross-chain backbone. It allowed us to:Show Unified Balances: Display a user's total USDC balance across all chains combined.Automate Bridging: When a user on Optimism bids on an Arbitrum auction, the Nexus SDK handles the transfer or bridgeAndExecute (bridge + swap) call automatically in the background.Simplify Settlement: It handles all the complex routing for sending the final payment to the seller, even if it needs to bridge and swap tokens.Blockscout SDK: This was key for transaction transparency. We used it to provide real-time toast notifications in the UI ("Transaction pending..." $\rightarrow$ "Confirmed!") with direct links to the Blockscout explorer, which builds significant user trust.Notable & Hacky ImplementationsTo make this system work, we used several notable approaches:Intent-Based Architecture (The Core Innovation):Instead of using expensive, synchronous cross-chain messages, our system is asynchronous. Sellers and bidders simply "express intent" on their native chains. Our backend keeper coordinates these intents "lazily," only executing the complex cross-chain settlement after the auction ends. This is vastly cheaper and creates a much smoother UX.Four-Path Settlement Router:We hid immense complexity behind a single "Claim Tokens" button for the seller. This button automatically runs logic to determine which of the four possible settlement paths is needed (e.g., a simple transfer, a same-chain swap, a cross-chain bridge, or a full bridge-and-swap) and executes the correct one.Hybrid Data Model:We use MongoDB for speed, allowing the frontend to quickly query for active auctions and bid history. However, the blockchain remains the single source of truth. Before any critical action (like settlement), the keeper and frontend verify the data from MongoDB against the on-chain smart contracts to ensure integrity.40-Second Polling:Instead of relying on WebSockets (which can be unreliable on testnets), our keeper simply polls all chains for new events every 40 seconds. This is a simpler, more robust solution, and the slight delay is perfectly acceptable for an auction format.

Hackathon

ETHOnline 2025

2025

Contributors