Jual USDC dalam satu pemanggilan fungsi.
Tambahkan pencairan tanpa menjadi bursa. Satu panggilan SDK membuat deposit Base, mendelegasikan penetapan harga, dan mengembalikan identifier yang dibutuhkan aplikasi Anda. Tambahkan Peerlytics nanti saat Anda membutuhkan pilihan rute, konteks explorer, webhook, atau infrastruktur yang dioperasikan agen.
Mainnet Baseimport { useOfframp } from "@usdctofiat/offramp/react";
import { CURRENCIES, PLATFORMS } from "@usdctofiat/offramp";
function SellButton({ walletClient }) {
const { offramp, isLoading } = useOfframp();
return (
<button
disabled={isLoading}
onClick={() =>
offramp(walletClient, {
amount: "100",
platform: PLATFORMS.VENMO,
currency: CURRENCIES.USD,
identifier: "alice",
})
}
>
Sell 100 USDC
</button>
);
}import { CURRENCIES, PLATFORMS, offramp } from "@usdctofiat/offramp";
const result = await offramp(walletClient, {
amount: "100",
platform: PLATFORMS.REVOLUT,
currency: CURRENCIES.EUR,
identifier: "alice",
integratorId: "your-app",
referralId: "partner-123",
});
console.log(result.depositId, result.txHash, result.resumed);- depositId
- Escrow deposit ID. Reconcile and close against it.
- txHash
- Base transaction hash for the deposit creation.
- resumed
- true when an existing undelegated deposit was reused.
- otcLink
- Buyer link for private deposits; null when public.
Permukaan SDK
Jaga kode produk dekat dengan tindakan nyata: buat, daftar, tutup, batasi, amati.
offramp()Buat atau lanjutkan deposit jual USDC, delegasikan penetapan harga, dan kembalikan depositId + txHash.
deposits()Daftar deposit untuk sebuah alamat saat aplikasi membutuhkan rekonsiliasi status pemilik yang terbatas.
close()Tarik USDC yang belum tereksekusi dari deposit yang ada dengan wallet penanda tangan.
Batasi order ke satu wallet taker, hasilkan tautan berbagi, atau hapus pembatasannya.
useOfframp() dan usePeerExtensionRegistration() untuk frontend aplikasi wallet.
PLATFORMS, CURRENCIES, helper validasi, dan kode OfframpError.
Jalur pengembangan
Mulai dengan siklus hidup deposit, lalu tambahkan data dan operasi hanya saat diperlukan.
Berapa biayanya
Permukaan untuk developer adalah paket, starter, dan kontrak SDK bertipe.
@usdctofiat/offramp adalah TypeScript berlisensi MIT dengan entry point core dan React.
Tanda tangan wallet membuat deposit Base. Aplikasi Anda hanya membayar gas Base biasa.
Perencanaan rute, pembacaan orderbook, konteks explorer, x402, kredit API, dan webhook berada di sana.
Alur produksi
Bangun jalur terpendek dahulu, lalu tambahkan order privat dan observabilitas.
- 01Buat deposit terdelegasi dari wallet pengguna atau wallet bot dengan offramp().
- 02Gunakan deposits() untuk merekonsiliasi status lokal setelah refresh, retry, atau bot dimulai ulang.
- 03Berikan otcTaker saat pembeli sudah dikenal dan order tidak boleh dapat dieksekusi secara publik.
- 04Tambahkan @peerlytics/sdk saat Anda membutuhkan perencanaan rute, tautan take publik, konteks explorer, atau webhook.
Pertanyaan developer
Apakah SDK menyimpan kunci?
Tidak. SDK menandatangani dengan viem WalletClient yang Anda masukkan: wallet pengguna Anda, wallet server, atau wallet bot. SDK tidak pernah menyimpan kunci privat.
Apakah SDK memindahkan fiat?
Tidak. Fiat bergerak langsung antara pembeli dan penjual di aplikasi pembayaran yang dipilih. SDK hanya menangani siklus hidup USDC dan deposit onchain.
Apakah saya perlu kunci API untuk membuat deposit?
Tidak. Membuat deposit bersifat permissionless, karena wallet Anda yang menandatangani. Kunci API hanya diperlukan untuk mendaftarkan webhook dan menggunakan API Peerlytics.
Bagaimana cara menguji integrasi?
Tidak ada sandbox publik; SDK menargetkan mainnet Base, sehingga deposit uji bersifat nyata dan dapat ditemukan di orderbook terbuka. Gunakan minimum 1 USDC, dan batasi sebagai deposit OTC (masukkan otcTaker agar hanya wallet Anda sendiri yang bisa mengisinya) atau terima bahwa pembeli bisa mengambilnya sebelum Anda memanggil close(). Konfirmasi secara onchain dan melalui deposits(), lalu close().
Bagaimana cara memverifikasi webhook?
Setiap pengiriman membawa X-Usdctofiat-Signature: t=<unix>,v1=<hex>, HMAC-SHA256 atas timestamp.rawBody. Verifikator referensi di repo starters menganggap timestamp yang lebih lama dari 5 menit sebagai basi untuk menjaga dari replay; Anda mengatur jendela waktu tersebut di verifikator Anda sendiri, pengirim tidak menegakkannya.