Bán USDC chỉ với một lời gọi hàm.
Thêm tính năng rút tiền mà không cần trở thành sàn giao dịch. Một lệnh gọi SDK tạo khoản ký gửi trên Base, ủy quyền định giá và trả về các định danh mà ứng dụng của bạn cần. Thêm Peerlytics sau khi bạn cần lựa chọn tuyến, ngữ cảnh explorer, webhook hoặc hạ tầng do agent vận hành.
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.
Bề mặt SDK
Giữ mã sản phẩm gần với các hành động thực: tạo, liệt kê, đóng, giới hạn, quan sát.
offramp()Tạo hoặc tiếp tục một khoản ký gửi bán USDC, ủy quyền định giá và trả về depositId + txHash.
deposits()Liệt kê các khoản ký gửi cho một địa chỉ khi ứng dụng cần đối soát trạng thái chủ sở hữu trong phạm vi hẹp.
close()Rút USDC chưa khớp từ một khoản ký gửi hiện có bằng ví ký.
Giới hạn một lệnh cho một ví taker duy nhất, tạo liên kết chia sẻ, hoặc gỡ giới hạn.
useOfframp() và usePeerExtensionRegistration() cho frontend của ứng dụng ví.
PLATFORMS, CURRENCIES, các trợ thủ kiểm tra và mã OfframpError.
Lộ trình xây dựng
Bắt đầu với vòng đời khoản ký gửi, rồi chỉ thêm dữ liệu và vận hành khi cần.
Chi phí ra sao
Bề mặt cho nhà phát triển là gói, starter và hợp đồng SDK có kiểu.
@usdctofiat/offramp là TypeScript theo giấy phép MIT với các entry point core và React.
Một chữ ký ví tạo khoản ký gửi trên Base. Ứng dụng của bạn chỉ trả gas Base thông thường.
Lập kế hoạch tuyến, đọc orderbook, ngữ cảnh explorer, x402, tín dụng API và webhook nằm ở đó.
Luồng sản xuất
Xây dựng tuyến ngắn nhất trước, rồi thêm lệnh riêng tư và khả năng quan sát.
- 01Tạo một khoản ký gửi được ủy quyền từ ví người dùng hoặc ví bot bằng offramp().
- 02Dùng deposits() để đối soát trạng thái cục bộ sau khi làm mới, thử lại hoặc bot khởi động lại.
- 03Truyền otcTaker khi người mua đã biết và lệnh không nên được khớp công khai.
- 04Thêm @peerlytics/sdk khi bạn cần lập kế hoạch tuyến, liên kết take công khai, ngữ cảnh explorer hoặc webhook.
Câu hỏi của nhà phát triển
SDK có giám hộ khóa không?
Không. SDK ký bằng viem WalletClient bạn truyền vào: ví của người dùng, ví máy chủ, hoặc ví bot. Nó không bao giờ giữ khóa riêng tư.
SDK có chuyển tiền pháp định không?
Không. Tiền pháp định chuyển trực tiếp giữa người mua và người bán trên ứng dụng thanh toán đã chọn. SDK chỉ xử lý USDC onchain và vòng đời khoản ký gửi.
Tôi có cần khóa API để tạo các khoản ký gửi không?
Không. Việc tạo khoản ký gửi không cần xin phép, vì ví của bạn ký. Khóa API chỉ cần thiết để đăng ký webhook và để dùng API Peerlytics.
Làm thế nào để tôi kiểm thử một tích hợp?
Không có sandbox công khai; SDK nhắm tới Base mainnet, nên một khoản ký gửi thử nghiệm là thật và có thể được phát hiện trên orderbook mở. Hãy dùng mức tối thiểu 1 USDC, và hoặc giới hạn nó như một khoản ký gửi OTC (truyền otcTaker để chỉ ví của riêng bạn mới lấp được) hoặc chấp nhận rằng một người mua có thể lấp nó trước khi bạn gọi close(). Xác nhận nó onchain và qua deposits(), rồi close() nó.
Webhook được xác minh như thế nào?
Mỗi lượt giao mang theo X-Usdctofiat-Signature: t=<unix>,v1=<hex>, một HMAC-SHA256 trên timestamp.rawBody. Bộ xác minh tham chiếu trong repo starters coi các dấu thời gian cũ hơn 5 phút là lỗi thời để chống phát lại; bạn đặt cửa sổ đó trong bộ xác minh của riêng mình, bên gửi không thực thi nó.