1回の関数呼び出しでUSDCを売却。
取引所になることなく換金機能を追加できます。SDK の 1 回の呼び出しで Base のデポジットを作成し、価格設定を委任し、アプリに必要な識別子を返します。経路の選択、エクスプローラーのコンテキスト、webhook、エージェント運用のインフラが必要になったら、後から Peerlytics を追加してください。
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>
);
}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 の操作面
プロダクトのコードを実際の操作に近づけて保ちます。作成、一覧、クローズ、制限、観測。
offramp()USDC 売却のデポジットを作成または再開し、価格設定を委任して、depositId + txHash を返します。
deposits()アプリが所有者状態の限定的な照合を必要とするときに、あるアドレスのデポジットを一覧表示します。
close()署名ウォレットを使って、既存のデポジットから未約定の USDC を引き出します。
注文を taker ウォレット 1 つに制限する、共有リンクを生成する、または制限を解除します。
ウォレットアプリのフロントエンド向けの useOfframp() と usePeerExtensionRegistration()。
PLATFORMS、CURRENCIES、バリデーションヘルパー、OfframpError コード。
開発パス
まずデポジットのライフサイクルから始め、必要になったときだけデータと運用を追加します。
コストについて
開発者向けの操作面は、パッケージ、スターター、型付き SDK 契約です。
@usdctofiat/offramp は MIT ライセンスの TypeScript で、core と React のエントリーポイントを備えています。
ウォレット署名が Base のデポジットを作成します。アプリは通常の Base のガス代だけを支払います。
経路計画、orderbook の読み取り、エクスプローラーのコンテキスト、x402、API クレジット、webhook はそこに存在します。
本番フロー
まず最短経路を構築し、その後にプライベート注文と可観測性を追加します。
- 01offramp() を使って、ユーザーウォレットまたはボットウォレットから委任デポジットを作成します。
- 02更新、リトライ、ボット再起動の後にローカル状態を照合するため、deposits() を使います。
- 03買い手が既知で、注文を公開で約定可能にすべきでない場合は otcTaker を渡します。
- 04経路計画、公開のテイクリンク、エクスプローラーのコンテキスト、webhook が必要なときは @peerlytics/sdk を追加します。
開発者向けの質問
SDKは鍵を保管しますか?
いいえ。SDKは渡されたviem WalletClient、つまりユーザーのウォレット、サーバーウォレット、またはボットウォレットで署名します。秘密鍵を保持することはありません。
SDKはfiatを動かしますか?
いいえ。fiatは、選択した支払いアプリ上で買い手と売り手の間で直接移動します。SDKはオンチェーンのUSDCとデポジットのライフサイクルのみを扱います。
デポジットの作成にAPIキーは必要ですか?
いいえ。署名は自分のウォレットが行うため、デポジットの作成はパーミッションレスです。APIキーが必要なのは、Webhookの登録とPeerlytics APIの利用時のみです。
統合のテストはどう行いますか?
公開サンドボックスはありません。SDKはBaseメインネットを対象とするため、テストデポジットは実物で、公開オーダーブック上で発見可能です。最小額の1 USDCを使い、OTCデポジットとして制限する(otcTakerを渡して自分のウォレットだけがフィルできるようにする)か、close()を呼ぶ前に買い手がテイクし得ることを受け入れてください。オンチェーンとdeposits()で確認したうえでclose()してください。
Webhookはどう検証されますか?
各配信にはX-Usdctofiat-Signature: t=<unix>,v1=<hex>(timestamp.rawBodyに対するHMAC-SHA256)が含まれます。スターターリポジトリのリファレンス検証ツールは、リプレイ対策として5分より古いタイムスタンプを古いものとして扱います。そのウィンドウは自分の検証側で設定するもので、送信側が強制するものではありません。