Pengembang

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.

@usdctofiat/offramp v4.xMainnet BaseMIT · ESM + CJS
Off-ramp satu panggilanMainnet Base
import { 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>
  );
}
Buat deposit dan baca hasilnya
create-deposit.ts
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);
OfframpResult
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.

Helper OTC

Batasi order ke satu wallet taker, hasilkan tautan berbagi, atau hapus pembatasannya.

React hooks

useOfframp() dan usePeerExtensionRegistration() untuk frontend aplikasi wallet.

Map bertipe

PLATFORMS, CURRENCIES, helper validasi, dan kode OfframpError.

Berapa biayanya

Permukaan untuk developer adalah paket, starter, dan kontrak SDK bertipe.

Paket
$0

@usdctofiat/offramp adalah TypeScript berlisensi MIT dengan entry point core dan React.

Pembuatan deposit
Tanpa kunci

Tanda tangan wallet membuat deposit Base. Aplikasi Anda hanya membayar gas Base biasa.

Bidang data
Peerlytics

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.

  1. 01Buat deposit terdelegasi dari wallet pengguna atau wallet bot dengan offramp().
  2. 02Gunakan deposits() untuk merekonsiliasi status lokal setelah refresh, retry, atau bot dimulai ulang.
  3. 03Berikan otcTaker saat pembeli sudah dikenal dan order tidak boleh dapat dieksekusi secara publik.
  4. 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.