合约事件与 Webhook
ONE SDK 允许你使用 webhook 订阅链上合约事件。当匹配的事件被触发时,Engine 会向你配置的端点发送包含解码事件数据的 HTTP POST 请求。
工作原理
合约触发 Transfer 事件
|
v
ONE Engine 索引器检测到事件
|
v
Engine 将事件与活跃的 webhook 进行匹配
|
v
向你的 webhook URL 发送 HTTP POST,携带事件载荷
createWebhook
注册新的 webhook 事件订阅。
方法签名
client.createWebhook(params: CreateWebhookParams): Promise<ApiResponse<Webhook>>
CreateWebhookParams
import type { CreateWebhookParams, WebhookEventType } from '@one_deploy/sdk';
interface CreateWebhookParams {
url: string; // 你的 HTTPS 端点
eventType: WebhookEventType; // 要订阅的事件类别
contractAddress?: string; // 筛选特定合约
chainId?: number; // 筛选特定链
eventName?: string; // 筛选特定事件名(如 'Transfer')
secret?: string; // 用于 HMAC 签名验证的共享密钥
metadata?: Record<string, unknown>; // 附加到 webhook 的自定义元数据
active?: boolean; // webhook 是否激活(默认 true)
}
WebhookEventType
type WebhookEventType =
| 'contract.event' // 合约发出的任意事件
| 'contract.transfer' // ERC-20 / ERC-721 / ERC-1155 Transfer 事件
| 'contract.approval' // ERC-20 Approval 事件
| 'contract.deploy' // 合约部署确认
| 'transaction.confirmed' // 任何交易确认
| 'transaction.failed'; // 任何交易失败
Webhook 响应
interface Webhook {
id: string; // 唯一 webhook ID
url: string;
eventType: WebhookEventType;
contractAddress?: string;
chainId?: number;
eventName?: string;
active: boolean;
createdAt: string; // ISO-8601
}