함수 호출 한 번으로 USDC를 판매하세요.
거래소가 되지 않고도 현금화 기능을 추가하세요. SDK 한 번의 호출로 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 지갑 하나로 제한하거나, 공유 링크를 생성하거나, 제한을 해제합니다.
지갑 앱 프런트엔드용 useOfframp()와 usePeerExtensionRegistration().
PLATFORMS, CURRENCIES, 검증 헬퍼, OfframpError 코드.
개발 경로
예치 라이프사이클로 시작하고, 필요할 때만 데이터와 운영을 추가하세요.
비용은 얼마인가
개발자 표면은 패키지, 스타터, 그리고 타입이 지정된 SDK 계약입니다.
@usdctofiat/offramp은 core와 React 진입점을 갖춘 MIT 라이선스 TypeScript입니다.
지갑 서명이 Base 예치를 생성합니다. 앱은 일반적인 Base 가스만 지불합니다.
경로 계획, orderbook 읽기, 익스플로러 컨텍스트, x402, API 크레딧, webhook이 그곳에 있습니다.
프로덕션 흐름
가장 짧은 경로를 먼저 구축한 뒤, 비공개 주문과 관측 가능성을 추가하세요.
- 01offramp()로 사용자 지갑 또는 봇 지갑에서 위임 예치를 생성합니다.
- 02새로 고침, 재시도, 봇 재시작 후 로컬 상태를 대조하려면 deposits()를 사용합니다.
- 03구매자가 알려져 있고 주문이 공개적으로 체결 가능해서는 안 될 때 otcTaker를 전달합니다.
- 04경로 계획, 공개 테이크 링크, 익스플로러 컨텍스트, webhook이 필요할 때 @peerlytics/sdk를 추가합니다.
개발자 질문
SDK가 키를 보관하나요?
아닙니다. SDK는 전달하는 viem WalletClient로 서명합니다. 사용자 지갑, 서버 지갑 또는 봇 지갑 중 하나입니다. 개인 키를 절대 보관하지 않습니다.
SDK가 법정화폐를 이동시키나요?
아닙니다. 법정화폐는 선택한 결제 앱에서 구매자와 판매자 사이에서 직접 이동합니다. SDK는 온체인 USDC 및 예치금 수명 주기만 처리합니다.
예치금 생성에 API 키가 필요한가요?
아닙니다. 지갑이 서명하므로 예치금 생성은 무허가입니다. API 키는 웹훅 등록 및 Peerlytics API 사용에만 필요합니다.
통합을 어떻게 테스트하나요?
공개 샌드박스는 없습니다. SDK는 Base 메인넷을 대상으로 하므로 테스트 예치금은 실제이며 공개 오더북에서 검색 가능합니다. 1 USDC 최솟값을 사용하고, OTC 예치금으로 제한하거나(본인 지갑만 체결할 수 있도록 otcTaker를 전달) 구매자가 close()를 호출하기 전에 체결할 수 있음을 허용하세요. 온체인 및 deposits()를 통해 확인한 후 close()를 호출하세요.
웹훅은 어떻게 검증하나요?
각 전달에는 timestamp.rawBody에 대한 HMAC-SHA256인 X-Usdctofiat-Signature: t=<unix>,v1=<hex>가 포함됩니다. 스타터 리포지터리의 참조 검증기는 5분보다 오래된 타임스탬프를 리플레이 방지를 위해 만료된 것으로 처리합니다. 해당 기간은 발신자가 아닌 본인 검증기에서 설정합니다.