Skip to main content

Quickstart

This guide will walk you through setting up your Solana wallet, connecting to SolBid, and playing your first bidding game.
SolBid runs on Solana devnet. You’ll need devnet SOL and USDC tokens, which are free test tokens with no real monetary value.

Prerequisites

Before you begin, you’ll need:
  • A modern web browser (Chrome, Firefox, or Brave recommended)
  • A Solana wallet browser extension (Phantom, Solflare, or similar)
  • Basic understanding of cryptocurrency wallets

Step 1: Set up your Solana wallet

1

Install a wallet extension

Download and install a Solana wallet extension. We recommend Phantom for beginners.After installation, create a new wallet and securely save your recovery phrase.
2

Switch to devnet

In your wallet settings, change the network from “Mainnet” to “Devnet”. This ensures you’re using test tokens.
3

Get devnet SOL

You’ll need devnet SOL to pay for transaction fees. Visit the Solana Faucet and enter your wallet address to receive free devnet SOL.
Request at least 2 SOL to cover transaction fees for multiple games.

Step 2: Connect to SolBid

1

Navigate to SolBid

Open the SolBid application in your browser. The URL will be provided by your administrator or available at your deployment.
2

Create an account

Click the signup button and register with your email and preferred username. This creates your SolBid profile linked to your wallet.
3

Connect your wallet

Click the “Connect Wallet” button in the navigation bar. Select your wallet provider and approve the connection.
SolBid uses the @solana/wallet-adapter-react library, which supports Phantom, Solflare, Slope, and other popular Solana wallets.

Step 3: Create your first game

Now that you’re connected, let’s create a game:
1

Access the dashboard

Navigate to the dashboard at /dashboard. You’ll see sections for Live Games, Past Games, and Transactions.
2

Click 'Create Game'

Click the “Create Game” button to open the game creation modal.
3

Set the initial bid

Enter an initial bid amount in USDC. The minimum is 0.014 USDC (14,000,000 lamports).
// From programs/src/instructions/create_game.rs:35
if initial_bid_amount < 14_000_000 {
  return Err(BiddingError::InsufficientInitialBid.into());
}
Make sure you have enough SOL in your wallet to cover the initial bid amount plus transaction fees.
4

Approve the transaction

Click “Create Game” and approve the transaction in your wallet. The transaction creates three on-chain accounts:
  • Game PDA: Stores game state (prize pool, bid count, timer)
  • Player PDA: Tracks your bid amount and royalty earnings
  • Bid PDA: Records your bid details (amount, timestamp)
5

Wait for confirmation

The transaction typically confirms in 1-2 seconds on Solana. You’ll see your game appear in the Live Games section.

Step 4: Place a bid

Join an existing game by placing a competitive bid:
1

Select a live game

From the dashboard, click on any live game card to view the game details.
2

Calculate your bid

Your bid must be at least 2x the current highest bid:
// From programs/src/instructions/place_bid.rs:46
if bid_amount < 2 * game_state.highest_bid {
  return Err(BiddingError::InsufficientBidAmount.into());
}
The UI displays the minimum bid amount automatically.
3

Submit your bid

Enter your bid amount and click “Place Bid”. The transaction will:
  1. Validate your bid meets the 2x requirement
  2. Create new Player and Bid PDAs for your entry
  3. Transfer your bid amount to the game’s prize pool
  4. Update the game state with your bid as the new highest
  5. Reset the 10-minute countdown timer
Each bid creates new on-chain accounts, which incurs small rent fees (automatically calculated and included in the transaction).
4

Watch the countdown

After placing your bid, you’ll see the countdown timer reset. Monitor the game in real-time to see if other players place higher bids.

Step 5: Win the game

To win a game, you need to be the last bidder when the countdown reaches zero:
1

Monitor the timer

The game ends when 10 minutes (600 seconds) pass without any new bids:
// From programs/src/instructions/place_bid.rs:42
if current_time - game_state.last_bid_time > 600 {
  return end_game(program_id, game_state.game_id, accounts, &mut game_state);
}
2

Automatic prize distribution

When the timer expires, the smart contract automatically distributes prizes:For games with 5+ bids:
  • Platform receives 10% fee from the last 5 bids
  • Early bidders (all except last 5) receive weighted royalties
  • Winner receives the remaining prize pool
For games with fewer than 5 bids:
  • Platform receives 10% fee
  • Winner receives 90% of the prize pool
3

Check your winnings

Navigate to your Transactions tab in the dashboard to see your prize distribution. Winnings are automatically transferred to your wallet.Your Player PDA’s royalty_earned field tracks your total earnings:
// From programs/src/state.rs:17
pub struct PlayerState {
  pub total_bid_amount: u64,
  pub safe: bool,
  pub royalty_earned: u64,
  pub bid_count: u64,
}

Understanding game mechanics

Timer mechanics

The 10-minute countdown timer is critical to gameplay:
  • Each new bid resets the timer to 10 minutes
  • If no bid is placed within 10 minutes, the game ends
  • The countdown is enforced on-chain using Solana’s Clock sysvar

Prize pool accumulation

Every bid adds to the prize pool:
// From programs/src/instructions/place_bid.rs:120
game_state.prize_pool += bid_amount;
The prize pool grows rapidly due to the 2x minimum bid requirement.

Royalty calculation

For games with 5+ bidders, royalties are calculated using a weighted formula:
// From programs/src/instructions/place_bid.rs:259
let weight = total_bidders as u64 - i as u64;
let share = (weight * bid.amount) as u64;
let royalty_share = (share * royalty_amount) / (total_weight * total_bid_amount);
This ensures earlier bidders with larger contributions receive proportionally higher royalties.
Bidding early in the game can be profitable if the game attracts many participants, as you’ll receive royalties even if you don’t win.

Next steps

Now that you’ve played your first game, you can:
  • Explore the Architecture documentation to understand how SolBid works under the hood
  • Review past game results to develop bidding strategies
  • Monitor multiple live games simultaneously from the dashboard
  • Check your transaction history to track earnings and spending

Troubleshooting

Transaction failed

If your transaction fails, check:
  • You have sufficient SOL for transaction fees (usually 0.001-0.01 SOL)
  • You have enough balance to cover the bid amount
  • Your bid meets the 2x minimum requirement
  • The game hasn’t already ended

Wallet not connecting

If your wallet won’t connect:
  • Ensure you’re on the devnet network in your wallet settings
  • Refresh the page and try reconnecting
  • Try a different wallet provider
  • Check that your wallet extension is up to date

Game ended unexpectedly

If a game ends while you’re placing a bid:
// From next-app/components/game/PlaceBid.tsx:80
if (game?.game_ended) {
  toast({
    title: "Game Ended",
    description: "You finished after the winner. No amount has been deducted.",
  });
}
Your transaction will be rejected and no funds will be deducted.
Always verify you’re on Solana devnet before playing. Real money should never be used for testing.

Build docs developers (and LLMs) love