订阅和事件

SolarPath 支持所有链发出的事件通知,稳定且高效。

SolarPath 扩展了订阅模型,有效解决 Websocket 断连、重连等问题,少量编码就能接收链上发出的事件通知,如: 账户 ERC20 / TRC20 余额变动等。

  1. 进入您的 APP,点击 APP 设置。

  2. 切换至 Event Hook,根据您业务需要创建事件通知。

Event Hook 采用 HTTP 通知模式,您需要提供 HTTP 的 URL 地址接收事件通知。

使用介绍

  • 进入您的 APP,点击 APP 设置。

  • 切换到 Event Hook 选显卡,如下图:

  • 输入名称、通知地址、以及需要监控的合约地址 (EVM 链同时支持 NFT 和 TOKEN)。

  • 下图展示已经创建的事件列表,如下图:

通知安全/签名

为了确保您接收的事件安全,您可以使用唯一的 EventHook 签名密钥生成 HMAC SHA-256 哈希来验证它们是否来自 SolarPath。

查看签名密钥

点击 Signing Key 查看您的唯一签名密钥。

验证收到的签名

SolarPath 发出的请求 Header 中包含一串签名内容。它是用您的签名密钥将请求的 Body (JSON格式) 部分进行 HMAC SHA256 哈希算法生成。

为验证签名来自 SolarPath,请将您生成 HMAC SHA256 哈希与收到的签名进行比较。

Header中包含: x-sp-signature 的名称签名内容

  • 示例请求Header

// request header
POST /yourApp.com/webhook HTTP/1.1 
content-type: application/json;
x-sp-signature: signature-hash
  • 示例签名验证

import * as crypto from "crypto";

function validationSignature(
    body: string, // JSON from request body
    signature: string, // "x-sp-signature" from header
    signingKey: string // taken from dashboard for specific app eventhook
  ): boolean {
    const hmac = crypto.createHmac("sha256", signingKey); // Create a HMAC SHA256 hash
    hmac.update(body, "utf8"); // Update the token hash with the request body using utf8
    const result = hmac.digest("base64");
    return signature === result;
}

使用 Ngrok 测试

Ngrok 帮助您在本地调试远程发来的请求,不用部署到公网服务器,从而提高开发效率。

  1. 使用安装 Ngrok 指南. 在 macOS 上运行.brew install ngrok

  2. 通过运行连接您的 Ngrok 帐户。ngrok authtoken YOUR_AUTH_TOKEN

  3. 启动您的本地转发通道。ngrok http 80

参考以上第4步中输出的 Forwarding 地址,如: https://****-***-***-**-***.ngrok.io,然后按照以下步骤操作:

  1. 进入您的 APP,点击 APP 设置。

  2. 切换至 Event Hook,填入以上 ngrok 中的 Forwarding 地址并创建 EventHook。

  3. 启动您本地服务,观察收到的合约事件通知。

补发机制

SolarPath 根据您 HTTP 的响应状态码来确定是否需要补发。如需了解状态码请参考: HTTP 响应状态码

常见的几种补发策略如下:

  1. HTTP 响应状态码非 200 时。

  2. HTTP 响应/连接超时,默认 timeout = 15s

根据以上情况进行补发事件通知,补发尝试间隔依次为:

  • 1Minute

  • 5Minutes

  • 15Minutes

  • 1Hour

  • 6Hours

总计尝试 5 次后,不再进行补发。

SolarPath 不会解析您返回内容,只根据 HTTP 响应状态码来触发补发策略。

最后更新于