solana token swap code and guide - cryptoking-max/solana-sniper-bot GitHub Wiki

Here’s a complete Solana token swap code example (using Python + Jupiter Aggregator API) along with a clean GitHub Wiki-style guide you can copy-paste into your repo for documentation.


πŸ“‚ Folder Structure

solana-sniper-bot/
β”œβ”€β”€ swap/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ jupiter_swap.py     ← Swap logic using Jupiter API
β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ solana_client.py    ← Wallet & TX utilities
β”œβ”€β”€ main.py
└── README.md

πŸ” jupiter_swap.py – Jupiter Token Swap (Python)

import requests
import base64
from solana.rpc.api import Client
from solana.transaction import Transaction
from solana.keypair import Keypair
from solana.rpc.types import TxOpts
from utils.solana_client import get_wallet, sign_and_send_tx

JUPITER_API_URL = "https://quote-api.jup.ag/v6"

def get_swap_route(input_token, output_token, amount):
    params = {
        "inputMint": input_token,
        "outputMint": output_token,
        "amount": int(amount * 1e9),  # Amount in lamports
        "slippageBps": 100,  # 1% slippage
        "onlyDirectRoutes": False
    }
    response = requests.get(f"{JUPITER_API_URL}/quote", params=params)
    routes = response.json().get("data", [])
    return routes[0] if routes else None

def execute_swap(input_token, output_token, amount, keypair: Keypair):
    route = get_swap_route(input_token, output_token, amount)
    if not route:
        raise Exception("No swap route found")

    payload = {
        "route": route,
        "userPublicKey": str(keypair.public_key),
        "wrapUnwrapSOL": True
    }

    resp = requests.post(f"{JUPITER_API_URL}/swap", json=payload)
    swap_tx_base64 = resp.json()["swapTransaction"]

    tx_bytes = base64.b64decode(swap_tx_base64)
    tx = Transaction.deserialize(tx_bytes)

    return sign_and_send_tx(tx, keypair)

πŸ”§ solana_client.py – Wallet & TX Signing

from solana.rpc.api import Client
from solana.keypair import Keypair
from solana.transaction import Transaction

SOLANA_RPC = "https://api.mainnet-beta.solana.com"
client = Client(SOLANA_RPC)

def get_wallet(private_key: list):
    return Keypair.from_secret_key(bytes(private_key))

def sign_and_send_tx(tx: Transaction, keypair: Keypair):
    tx.recent_blockhash = client.get_recent_blockhash()["result"]["value"]["blockhash"]
    tx.sign(keypair)
    txid = client.send_transaction(tx, keypair)["result"]
    return txid

βœ… main.py – Example Usage

from swap.jupiter_swap import execute_swap
from utils.solana_client import get_wallet

# Example: SWAP 0.1 SOL β†’ USDC
SOL_MINT = "So11111111111111111111111111111111111111112"
USDC_MINT = "EPjFWdd5AufqSSqeM2qF4hZX9EwsmE1wY1UBWutUDgkX"

PRIVATE_KEY = [int_list_here]  # your wallet's private key
wallet = get_wallet(PRIVATE_KEY)

txid = execute_swap(SOL_MINT, USDC_MINT, 0.1, wallet)
print("Swap TxID:", txid)

πŸ“˜ GitHub Wiki Guide: Token Swap via Jupiter Aggregator


πŸ”„ Solana Token Swapping (via Jupiter Aggregator)

This module allows seamless token swaps on Solana using the [Jupiter Aggregator API](https://docs.jup.ag/).


βœ… Features

  • Swaps any SPL token (e.g. SOL β†’ USDC, SOL β†’ meme)
  • Uses best route automatically via Jupiter
  • Adjustable slippage
  • Fully compatible with pump.fun and memecoin bots

πŸ“¦ Setup

  1. Install Dependencies
pip install solana requests
  1. Create a Wallet Use Phantom or CLI to get your private key array:
[134, 72, ..., 22]

πŸ” Swap Logic

execute_swap(
    input_token="So1111...",     # SOL
    output_token="EPjF...",      # USDC or token
    amount=0.1,                  # Amount in SOL
    keypair=wallet
)

πŸ“„ Example Use Case

python main.py

Outputs:

Swap TxID: 5G4vT1LJ...kJx

⚠️ Notes

  • Make sure you have enough SOL to cover transaction fees.
  • Jupiter routes dynamicallyβ€”no fixed liquidity pool needed.
  • For memecoins, ensure the token is not a honeypot (use simulator).