USDC in einem Funktionsaufruf verkaufen.
Füge Auszahlung hinzu, ohne zur Börse zu werden. Ein SDK-Aufruf erstellt die Base-Einzahlung, delegiert die Bepreisung und liefert die Kennungen zurück, die deine App braucht. Füge Peerlytics später hinzu, wenn du Wegewahl, Explorer-Kontext, Webhooks oder agentenbetriebene Infrastruktur brauchst.
Base-Mainnetimport { 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.
SDK-Oberfläche
Halte den Produktcode nah an den echten Aktionen: erstellen, auflisten, schließen, beschränken, beobachten.
offramp()Erstelle oder setze eine USDC-Verkaufseinzahlung fort, delegiere die Bepreisung und liefere depositId + txHash zurück.
deposits()Liste Einzahlungen für eine Adresse auf, wenn die App einen eng begrenzten Abgleich des Eigentümerstatus braucht.
close()Hebe nicht ausgeführtes USDC aus einer bestehenden Einzahlung mit der signierenden Wallet ab.
Beschränke einen Auftrag auf eine einzige Taker-Wallet, erzeuge einen Freigabe-Link oder hebe die Beschränkung auf.
useOfframp() und usePeerExtensionRegistration() für Wallet-App-Frontends.
PLATFORMS, CURRENCIES, Validierungshelfer und OfframpError-Codes.
Entwicklungspfade
Beginne mit dem Einzahlungs-Lebenszyklus und füge Daten und Operationen erst bei Bedarf hinzu.
Was es kostet
Die Entwickleroberfläche ist das Paket, die Starter-Vorlagen und der typisierte SDK-Vertrag.
@usdctofiat/offramp ist MIT-lizenziertes TypeScript mit Core- und React-Einstiegspunkten.
Eine Wallet-Signatur erstellt die Base-Einzahlung. Deine App zahlt nur das normale Base-Gas.
Wegeplanung, Orderbook-Lesevorgänge, Explorer-Kontext, x402, API-Credits und Webhooks leben dort.
Produktionsablauf
Baue zuerst den kürzesten Weg, füge dann private Aufträge und Observability hinzu.
- 01Erstelle mit offramp() eine delegierte Einzahlung aus der Nutzer- oder Bot-Wallet.
- 02Nutze deposits(), um den lokalen Status nach Aktualisierungen, Retries oder Bot-Neustarts abzugleichen.
- 03Übergib otcTaker, wenn der Käufer bekannt ist und der Auftrag nicht öffentlich ausführbar sein soll.
- 04Füge @peerlytics/sdk hinzu, wenn du Wegeplanung, öffentliche Take-Links, Explorer-Kontext oder Webhooks brauchst.
Entwicklerfragen
Verwahrt das SDK Schlüssel?
Nein. Das SDK signiert mit dem von Ihnen übergebenen viem WalletClient: der Wallet Ihres Nutzers, einer Server-Wallet oder einer Bot-Wallet. Es verwahrt niemals private Schlüssel.
Bewegt das SDK Fiat?
Nein. Fiat wird direkt zwischen Käufer und Verkäufer in der gewählten Zahlungs-App bewegt. Das SDK verarbeitet nur den Onchain-USDC und den Einzahlungslebenszyklus.
Benötige ich einen API-Key zum Erstellen von Einzahlungen?
Nein. Das Erstellen von Einzahlungen ist erlaubnisfrei, da Ihre Wallet signiert. Ein API-Key wird nur benötigt, um Webhooks zu registrieren und die Peerlytics API zu nutzen.
Wie teste ich eine Integration?
Es gibt keine öffentliche Sandbox; das SDK zielt auf das Base-Mainnet ab, daher ist eine Test-Einzahlung real und im offenen Orderbook auffindbar. Verwenden Sie das Minimum von 1 USDC, und schränken Sie es entweder als OTC-Einzahlung ein (übergeben Sie otcTaker, damit nur Ihre eigene Wallet es ausführen kann) oder akzeptieren Sie, dass ein Käufer es vor Ihrem Aufruf von close() übernehmen könnte. Bestätigen Sie es Onchain und über deposits(), dann rufen Sie close() auf.
Wie werden Webhooks verifiziert?
Jede Lieferung trägt X-Usdctofiat-Signature: t=<unix>,v1=<hex>, ein HMAC-SHA256 über timestamp.rawBody. Der Referenzverifizierer im Starters-Repo behandelt Zeitstempel, die älter als 5 Minuten sind, als veraltet, um Replay-Angriffe abzuwehren; Sie legen dieses Fenster in Ihrem eigenen Verifizierer fest, der Sender erzwingt es nicht.