点对点转账
点对点转账允许用户将加密货币直接发送到任意钱包地址。ONE SDK(@one_deploy/sdk v1.1.0)提供了用于 Web 应用的 OneSendWidget 和全平台的 sendTransaction API 方法。
Widget 用法(Web)
OneSendWidget
完整的发送加密货币 widget,处理收款方输入、代币选择、金额录入、Gas 估算、确认和交易追踪。
import { OneSendWidget } from '@one_deploy/sdk';
function SendPage() {
return (
<OneSendWidget
walletAddress="0xSenderWalletAddress"
chainId={1}
defaultToken={{ symbol: 'ETH', chainId: 1 }}
defaultRecipient=""
allowedTokens={[
{ symbol: 'ETH', chainId: 1 },
{ symbol: 'USDC', chainId: 1, address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' },
{ symbol: 'USDT', chainId: 1, address: '0xdAC17F958D2ee523a2206206994597C13D831ec7' },
]}
onSuccess={(result) => {
console.log('Transfer sent:', result.txHash);
}}
onError={(error) => {
console.error('Transfer failed:', error.message);
}}
onClose={() => {
console.log('Widget closed');
}}
theme="light"
/>
);
}
OneSendWidgetProps
interface OneSendWidgetProps {
/** 发送方钱包地址 */
walletAddress: string;
/** 转账的链 ID */
chainId: number;
/** 默认发送的代币 */
defaultToken?: TokenIdentifier;
/** 预填充的收款方地址 */
defaultRecipient?: string;
/** 预填充的金额 */
defaultAmount?: string;
/** 限制用户可发送的代币 */
allowedTokens?: TokenIdentifier[];
/** 启用 ENS / 地址簿解析(默认: true) */
enableAddressResolution?: boolean;
/** 转账在链上确认时调用 */
onSuccess?: (result: EngineTransactionResponse) => void;
/** 转账失败时调用 */
onError?: (error: { code: string; message: string }) => void;
/** 用户关闭 widget 时调用 */
onClose?: () => void;
/** Widget 颜色主题 */
theme?: 'light' | 'dark' | 'auto';
/** 覆盖 CSS 类名 */
className?: string;
}
interface TokenIdentifier {
symbol: string;
chainId: number;
address?: string;
}
API 方法:sendTransaction
OneEngineClient 上的 sendTransaction 方法处理原生代币转账、ERC-20 代币转账和任意合约调用。
import { OneEngineClient } from '@one_deploy/sdk';
const engine = new OneEngineClient({
apiKey: 'YOUR_API_KEY',
projectId: 'YOUR_PROJECT_ID',
});