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)
Token Swap via Jupiter Aggregator
π GitHub Wiki Guide: π 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
- Install Dependencies
pip install solana requests
- 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).