Guide
Devnet Testing
Test the full Buff flow on Solana devnet before going to mainnet.
Switch to Devnet
devnet.ts
typescript
1const buff = await Buff.init({2 network: "devnet", // ← only change needed3 platformId: "test",4 signMessage: (msg) => wallet.signMessage(msg),5 plan: "sprout",6 investInto: "USDC", // only SOL + USDC on devnet7})Available Tokens on Devnet
| Asset | Available | Mint |
|---|---|---|
| SOL | Yes | So1111...1112 (native) |
| USDC | Yes | 4zMMC9...cqmJh (devnet faucet) |
| BTC | No* | Maps to SOL on devnet |
| ETH | No* | Maps to SOL on devnet |
| USDT | No* | Maps to devnet USDC |
Note
wBTC and wETH don't exist on devnet. The SDK maps them to SOL/USDC for testing. Use investInto: "USDC" or "SOL" for realistic devnet tests.
Get Devnet SOL
Visit https://faucet.solana.com and paste your wallet address to get free devnet SOL.
Full Test Script
test-devnet.ts
typescript
1import { Buff } from "@buff/sdk"2import { Connection, Keypair, Transaction, SystemProgram } from "@solana/web3.js"34const conn = new Connection("https://api.devnet.solana.com")5const user = Keypair.generate()67// Fund via airdrop (or use faucet.solana.com)8await conn.requestAirdrop(user.publicKey, 2e9)910// Init Buff11const buff = await Buff.init({12 network: "devnet",13 platformId: "test",14 signMessage: async (msg) => {15 // In a real app, use wallet adapter16 const { sign } = await import("tweetnacl")17 return sign.detached(msg, user.secretKey)18 },19 plan: "tree",20 investInto: "USDC",21 investThreshold: 1, // low threshold for testing22})2324console.log("Buff wallet:", buff.getWalletAddress())2526// Simulate a $5.37 transaction27const tx = new Transaction().add(28 SystemProgram.transfer({29 fromPubkey: user.publicKey,30 toPubkey: Keypair.generate().publicKey,31 lamports: 1000000,32 })33)3435const { transaction, breakdown } = await buff.wrap(tx, user.publicKey, {36 txValueUsd: 5.37,37})3839console.log("Round-up: $" + breakdown.roundUpUsd)40console.log("Invested: $" + breakdown.userInvestmentUsd)4142// Check portfolio43const portfolio = await buff.getPortfolio()44console.log("Pending SOL:", portfolio.pendingSol)