DexterDexter

DexterWallet Integration

How to connect your Solana wallet to PokeDexter.

Wallet Integration

To wager on PokeDexter, you need to connect a Solana wallet. This page covers wallet connection, supported wallets, and security.

Supported Wallets

Any Solana wallet that supports the wallet-standard spec works with PokeDexter:

WalletRecommendedNotes
Phantom✅ YesMost popular, best UX
Solflare✅ YesGreat mobile support
Backpack✅ YesxNFT support
Glow✅ YesSimple, fast
Ledger✅ YesHardware security (via Phantom)

We recommend Phantom for the best experience.


Connecting Your Wallet

PokeDexter has built-in wallet detection. Open your browser console and run:

DexterWallet.showPicker()

A modal will appear with all detected wallets:

  1. Click your wallet (e.g., "Phantom")
  2. Your wallet extension will prompt for approval
  3. Click "Connect" in the wallet popup
  4. Done! You'll see a confirmation message

What happens:

  • PokeDexter detects wallets using the wallet-standard spec
  • Your wallet's public address is sent to the server
  • No private keys ever leave your wallet

Method 2: Manual Command

If the wallet picker doesn't work, connect manually:

  1. Copy your wallet address from Phantom/Solflare
  2. In chat, type:
/connectwallet YOUR_ADDRESS

Example:

/connectwallet 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU

Verify Connection

Check it worked:

/mywallet

You should see:

Your connected wallet: 7xKX...AsU

Wallet Picker JavaScript API

For developers or power users, the wallet picker exposes these functions:

// Show the wallet picker modal
DexterWallet.showPicker()
 
// Get list of detected wallets
DexterWallet.getWallets()
// Returns: [{ name: "Phantom", icon: "...", ... }, ...]
 
// Get currently connected wallet
DexterWallet.getConnected()
// Returns: { name: "Phantom", address: "7xKX..." } or null
 
// Connect to a specific wallet by index
DexterWallet.connectAndVerify(0)  // Connect to first detected wallet
 
// Disconnect
DexterWallet.disconnect()

What Gets Stored

When you connect a wallet:

DataStored?Notes
Public address✅ YesRequired for deposits/payouts
Private key❌ NeverOnly you have this
Seed phrase❌ NeverOnly you have this
Username mapping✅ YesLinks PS name to wallet

Your private keys never leave your wallet. We only store the public address, encrypted in our database.


Security Model

How Deposits Work

When you wager, you manually send USDC to an escrow address:

You  →  [Your Wallet]  →  [Escrow Wallet]  →  [Winner's Wallet]
              │                   │                   │
         You control        Server controls      Server sends
  1. You initiate the transfer from your wallet
  2. Escrow holds both players' deposits
  3. Server settles to winner automatically

Why This Is Safe

  • You approve every transaction in your wallet
  • Escrow is per-match - fresh keypair each time
  • Escrow keys are encrypted - AES-256-GCM encryption at rest
  • Settlement is automatic - can't be withheld
  • On-chain verification - anyone can audit

Risks to Understand

RiskLikelihoodMitigation
Send to wrong addressLowDouble-check escrow address
Server compromiseLowPer-match escrow + encrypted keys
Opponent doesn't depositMediumTimeout cancellation
Battle bugsLowStandard PS engine, battle-tested

Changing Your Wallet

To use a different wallet:

// Disconnect current
DexterWallet.disconnect()
 
// Connect new one
DexterWallet.showPicker()

Or via command:

/connectwallet NEW_ADDRESS

Warning: If you change wallets mid-wager:

  • Pending challenges still use the OLD wallet
  • New wagers will use the new wallet
  • Active battles settle to wallet at time of acceptance

Disconnecting

Via JavaScript:

DexterWallet.disconnect()

Or via command:

/disconnectwallet

After disconnecting:

  • You cannot create new wagers
  • You cannot accept wager challenges
  • Existing battles still settle normally (wallet was recorded at start)

Getting USDC

To wager, you need USDC (not SOL) in your wallet.

Option 1: Buy on Exchange

  1. Buy USDC on Coinbase, Binance, Kraken, etc.
  2. Withdraw to your Solana wallet address
  3. Make sure to select Solana network (not Ethereum!)

Option 2: Swap in Wallet

  1. If you have SOL, use Jupiter or Raydium
  2. Swap SOL → USDC
  3. Use jup.ag for best rates

Option 3: Bridge from Other Chains

  1. Use Portal Bridge or Wormhole
  2. Bridge USDC from Ethereum/Polygon/etc.
  3. Receive Solana USDC

Minimum recommended: $20 USDC (for a few $5 wagers)


Checking Your Balance

PokeDexter doesn't currently show your USDC balance. Check in:


Troubleshooting

"No wallets detected"

Cause: No wallet extension installed, or wallet not registered yet.

Fix:

  • Install Phantom or another Solana wallet
  • Refresh the page after installing
  • Make sure the wallet extension is enabled

"Invalid Solana address format"

Cause: The address you entered isn't valid.

Fix:

  • Check for typos
  • Make sure it's a Solana address (not Ethereum)
  • Solana addresses are 32-44 characters, base58 encoded
  • No 0x prefix (that's Ethereum)

"No wallet connected"

Cause: You haven't connected a wallet yet.

Fix: Run DexterWallet.showPicker() or /connectwallet <address>.

USDC Not Showing

Cause: You might have USDC on wrong network.

Fix:

  • Make sure it's Solana USDC, not Ethereum USDC
  • The token mint should be: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

Transaction Failed

Cause: Usually insufficient SOL for fees or wrong amount.

Fix:

  • Keep ~0.01 SOL for transaction fees
  • Send the exact amount specified
  • Wait a moment and retry

Wallet Picker Not Opening

Cause: JavaScript error or popup blocked.

Fix:

  • Check browser console (F12) for errors
  • Make sure popups aren't blocked
  • Try the manual /connectwallet command instead

Next Steps