KUNCI ANDA. ASET ANDA.

JELAJAHI

RingkasanCari walletPool likuiditasTokenRadar pool baruDaftar pantauan

ASET ANDA

Profil walletTransaksiOtomatisasiSwap

EKOSISTEM

Status jaringanDokumentasiPanduanArtikelDeveloperPengaturan
BANIPOOL/Dokumentasi

Cari pool

Tempel atau ketik alamat pool, ID pool, CA token, atau simbol token. Semua jaringan dicari sekaligus.

Alamat token akan menampilkan pool yang menggunakan token tersebut.

Buat pool baru

Connect wallet

Pilih wallet di perangkat ini atau hubungkan wallet HP dengan QR.

Wallet terdeteksi

Tidak ada wallet browser yang terdeteksi. Gunakan WalletConnect untuk wallet di HP.

Tanda tangan login untuk menampilkan portofolio tidak memberi izin transaksi.

Dokumentasi

Membangun transaksi

Alur quote → plan → tanda tangan → tracking yang dipakai situs, tersedia juga untuk aplikasi Anda. Server tidak pernah menandatangani atau menyiarkan transaksi.

Alur

  • 1. POST /v1/quotes (header Idempotency-Key 8–128 karakter): server membaca on-chain, menghitung hasil, minimum, biaya, lalu mensimulasikan transaksi final dari wallet Anda.
  • 2. Bila requiresApproval, kirim transaksi approvals (izin sebesar jumlah transaksi) lalu minta quote lagi.
  • 3. POST /v1/transaction-plans dengan quoteId → transaksi unsigned { id, to, data, value }.
  • 4. Tanda tangani & kirim dari wallet, lalu laporkan hash: POST /v1/transactions/:id/submissions.
  • 5. Pantau GET /v1/transactions/:id (submitted → confirmed → finalized / failed) atau terima event SSE/webhook transaction.finalized.

Contoh: swap ETH → USDC di Base

ts
import { createWalletClient, http } from 'viem';
import { base } from 'viem/chains';
import { privateKeyToAccount } from 'viem/accounts';

const API = 'https://banipool.com/api/v1';
const ETH = '0x0000000000000000000000000000000000000000';
const USDC = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
const account = privateKeyToAccount(process.env.WALLET_PRIVATE_KEY as `0x${string}`);
const wallet = createWalletClient({ account, chain: base, transport: http() });
const auth = { authorization: `Bearer ${process.env.BANIPOOL_SESSION}`, 'content-type': 'application/json' };

// Rute terbaik (1–2 langkah)
const route = await fetch(`${API}/swap-routes`, { method: 'POST', headers: auth,
  body: JSON.stringify({ chainRef: 'eip155:8453', tokenIn: ETH, tokenOut: USDC, amountIn: '1000000000000000' }) }).then((r) => r.json());
const [first, second] = route.data.steps;

// Quote (disimulasikan di mainnet dari wallet Anda)
const quote = await fetch(`${API}/quotes`, { method: 'POST',
  headers: { ...auth, 'idempotency-key': crypto.randomUUID() },
  body: JSON.stringify({ action: 'swap', deploymentId: first.deploymentId, poolAddress: first.poolAddress,
    tokenIn: ETH, amountIn: '1000000000000000', unwrapNative: false, slippageBps: 100,
    ...(second ? { viaDeploymentId: second.deploymentId, viaPoolAddress: second.poolAddress } : {}) }) }).then((r) => r.json());
console.log('minimum:', quote.data.swap.minOut, 'fee platform:', quote.data.platformFee);

// Plan → tanda tangan → laporkan hash
const plan = await fetch(`${API}/transaction-plans`, { method: 'POST', headers: auth,
  body: JSON.stringify({ quoteId: quote.data.id }) }).then((r) => r.json());
const hash = await wallet.sendTransaction({ to: plan.data.to, data: plan.data.data, value: BigInt(plan.data.value) });
await fetch(`${API}/transactions/${plan.data.id}/submissions`, { method: 'POST', headers: auth, body: JSON.stringify({ txHash: hash }) });

Selalu tampilkan hasil minimum, biaya, dan alamat kontrak kepada pengguna sebelum menandatangani. Jangan pernah menaruh private key di frontend.

Aksi yang didukung

AksiKeterangan
swapTukar token lewat pool (1–2 langkah dalam satu transaksi).
mint / addBuat posisi baru atau tambah likuiditas ke posisi.
mint + createPoolBuat pool baru sekaligus likuiditas pertama (createPool: true, initialPrice = token1 per token0; v4 juga tickSpacing). Cek dulu dengan GET /v1/pool-create/check. Zap In (bayar satu token): rencana dari POST /v1/pool-create/zap-plan, jalankan swap per langkah lalu mint dengan hasilnya.
remove / claimTarik likuiditas (sebagian/semua) atau klaim fee.
compound / rebalanceTambahkan fee ke posisi, atau pindah ke rentang baru.
stake / unstakeAerodrome: stake posisi ke gauge untuk reward.

Zap memakai endpoint rencana tersendiri: POST /v1/zap-in-contract-plans dan POST /v1/zap-out-contract-plans (satu transaksi lewat kontrak BaniZap), dengan respons berisi approvals, call, hasil minimum, dan platformFee.

Bridge lewat API

bash
# Rute tersedia
curl -s https://banipool.com/api/v1/bridge/routes | jq '.data[] | {symbol, fromChainRef, toChainRef}'

# Kuota (sesi wallet; Idempotency-Key wajib) → transaction + approvals
curl -s -X POST https://banipool.com/api/v1/bridge/quotes \
  -H "authorization: Bearer $BANIPOOL_SESSION" -H "idempotency-key: $(uuidgen)" \
  -H "content-type: application/json" \
  -d '{"fromChainRef":"eip155:8453","toChainRef":"eip155:1","symbol":"USDC","amount":"5000000"}'

# Setelah transaksi dikirim: daftarkan untuk dilacak sampai completed
curl -s -X POST https://banipool.com/api/v1/bridge/transfers -H "authorization: Bearer $BANIPOOL_SESSION" \
  -H "content-type: application/json" -d '{"quoteId":"<id kuota>","txHash":"0x…"}'