Skip to main content

Connection methods

Deriverse supports two ways to access trading data:

Wallet connect

Connect using any Solana wallet adapter (Phantom, Solflare, Backpack, etc.)

Manual entry

Enter any Solana wallet address to analyze trades without connecting

Wallet connect (Jupiter Wallet Adapter)

Deriverse uses the Jupiter Wallet Adapter to provide a unified wallet connection experience across all major Solana wallets.

Supported wallets

  • Phantom — Most popular Solana wallet
  • Solflare — Feature-rich browser extension
  • Backpack — Multi-chain wallet with xNFT support
  • Coinbase Wallet — Trusted exchange wallet
  • Torus — Social login wallet
  • And many more — Any wallet supported by Jupiter Wallet Adapter

How to connect

1

Open the wallet modal

Click the Connect Wallet button in the top-right corner of the Deriverse interface.
// Programmatically open wallet modal
import { useWalletConnection } from '@/lib/hooks/useWalletConnection';

const { openWalletModal } = useWalletConnection();
openWalletModal();
2

Select your wallet

Choose your preferred wallet from the list. If this is your first time, you may need to install the wallet extension.
If you don’t have a Solana wallet yet, we recommend Phantom for beginners or Solflare for advanced users.
3

Approve the connection

Your wallet will prompt you to approve the connection. Click Approve or Connect in your wallet.
Deriverse only requests permission to view your public key. It cannot access your funds or sign transactions without explicit approval.
4

View your trades

Once connected, Deriverse will:
  • Fetch your transaction history from the Solana blockchain
  • Parse Deriverse-specific trades (spot and perpetual)
  • Display comprehensive analytics and trade history
  • Save your wallet to Supabase for cross-device access

Wallet connection hook

Deriverse uses a custom useWalletConnection hook that wraps Jupiter’s useUnifiedWallet:
useWalletConnection.ts
import { useWalletConnection } from '@/lib/hooks/useWalletConnection';

export function MyComponent() {
  const { 
    walletAddress,      // Full address (e.g., "7xKXtG2JtPZy4WqU9emKfbeuSTePDnSqeAACqVNx3k8s")
    shortAddress,       // Shortened (e.g., "7xKX…3k8s")
    connected,          // Boolean connection state
    connecting,         // Loading state
    connect,            // Function to trigger connection
    disconnect,         // Function to disconnect
    walletName,         // Name of connected wallet (e.g., "Phantom")
    openWalletModal     // Function to open wallet selection modal
  } = useWalletConnection();
  
  return (
    <div>
      {connected ? (
        <p>Connected: {shortAddress}</p>
      ) : (
        <button onClick={openWalletModal}>Connect Wallet</button>
      )}
    </div>
  );
}
export interface WalletConnectionState {
    publicKey: PublicKey | null;
    walletAddress: string | null;
    shortAddress: string | null;
    connected: boolean;
    connecting: boolean;
    connect: () => Promise<void>;
    disconnect: () => Promise<void>;
    selectWallet: (walletName: WalletName | null) => void;
    walletName: string | null;
    wallets: Wallet[];
    openWalletModal: () => void;
    isWalletModalOpen: boolean;
}

Manual wallet entry

If you prefer not to connect your wallet, or want to analyze another trader’s wallet, you can manually enter a wallet address.
1

Open the address input

Click the Enter Address option on the welcome screen or in the wallet dropdown.
2

Paste the wallet address

Enter a valid Solana wallet address (44 characters starting with a base58 character).
Example: 7xKXtG2JtPZy4WqU9emKfbeuSTePDnSqeAACqVNx3k8s
The address must be valid base58 and exactly 44 characters. Invalid addresses will show an error.
3

Submit and fetch

Click Analyze to fetch the trade history for that wallet.
Manual entry uses the same blockchain fetching logic as wallet connect, but the wallet is stored with connection_method: 'manual' in the database.

Devnet vs mainnet

Devnet (default)

Deriverse currently operates on Solana devnet by default:
  • RPC Endpoint: https://api.devnet.solana.com
  • Purpose: Testing and development without risking real funds
  • Data: Real blockchain transactions, but on devnet
  • Trades: Requires trading on Deriverse devnet markets
.env.local
NEXT_PUBLIC_RPC_HTTP=https://api.devnet.solana.com

Mainnet (coming soon)

Mainnet support is planned for future releases:
  • RPC Endpoint: https://api.mainnet-beta.solana.com (or Helius)
  • Purpose: Production trading analytics
  • Data: Real mainnet transactions
  • Trades: Actual Deriverse mainnet trading history
To add mainnet support, update the NEXT_PUBLIC_RPC_HTTP environment variable and ensure your Helius API key has mainnet access.

Data persistence

When you connect your wallet or enter an address, Deriverse saves it to Supabase:
{
  wallet_address: "7xKXtG2JtPZy4WqU9emKfbeuSTePDnSqeAACqVNx3k8s",
  network: "devnet",
  wallet_provider: "Phantom",
  connection_method: "wallet_connect",
  last_synced_at: "2026-03-04T10:30:00Z",
  created_at: "2026-03-04T10:30:00Z"
}
This enables:
  • Cross-device access to your trade history
  • 24-hour caching to reduce blockchain fetch latency
  • Sync status tracking with “Last updated X hours ago”

Disconnecting

To disconnect your wallet:
1

Open wallet menu

Click your wallet address in the top-right corner.
2

Click disconnect

Select Disconnect from the dropdown menu.
3

Confirm in wallet

Your wallet may prompt you to confirm the disconnection.
Disconnecting does not delete your data from Supabase. Your trades and annotations remain saved for future sessions.

Troubleshooting

Solutions:
  • Ensure your wallet extension is installed and enabled
  • Refresh the page after installing the extension
  • Try a different browser (Chrome and Brave work best)
  • Check if your wallet is locked and unlock it
Solutions:
  • Check if your wallet is open and unlocked
  • Refresh the page and try again
  • Clear browser cache and cookies
  • Try disconnecting and reconnecting from within your wallet settings
Possible causes:
  • You haven’t traded on Deriverse devnet yet
  • Your trades are on mainnet (not yet supported)
  • Blockchain fetch is in progress (check sync status)
Solutions:
  • Switch to Mock Mode to explore the interface with sample data
  • Verify you’re connected to the correct wallet address
  • Check the “Last Synced” timestamp to see if data is loading
Solutions:
  • Ensure the address is exactly 44 characters
  • Verify it’s a valid base58 string (no special characters except 1-9 and A-Za-z)
  • Try copying the address directly from your wallet or a blockchain explorer
  • Remove any leading/trailing spaces

What’s next?

View Analytics

Explore your trading performance metrics

Start Journaling

Add notes and tags to your trades

Trade History

Browse your complete trade history

Data Modes

Learn about mock mode vs devnet mode

Build docs developers (and LLMs) love