开发回调服务器

HTTP 接口说明

回调服务器是一个 HTTP 服务器,需要支持如下接口的请求:

  • Path

    • /v1/check

  • Method

    • POST

  • Body

    • 采用 x-www-form-urlencoded 编码的数据

解析 HTTP 请求

TSS Node 采用如下步骤构建 HTTP 请求,供对接参考:

  1. 根据任务类型,生成对应的 CallbackRequest 结构体

  2. 将 CallbackRequest 结构体进行 JSON 序列化,得到 CallbackRequestJsonString

  3. 使用 CallbackRequestJsonString 作为 JWT 的 payload,使用自身的 RSA 私钥对其进行签名,构造 JWT

  4. 使用 form 表单的形式进行 HTTP POST 提交,form 表单的 Key 是 TSS_JWT_MSG,Value 为上一步构造的 JWT

回调服务器接收到 HTTP 请求后,需要按照如下步骤进行解析:

  1. 提取 HTTP POST 请求中提交的表单数据,Key 为 TSS_JWT_MSG,Value 即为 JWT

  2. 使用本地保存的 TSS Node 的 RSA 公钥,对 JWT 进行签名检查

  3. 提取 JWT 中的 payload,并对 payload 按照 CallbackRequest 结构体进行 JSON 反序列化

  4. 根据 CallbackRequest 的类型,对其中的 meta 字段进行进一步的 JSON 反序列化,得到本请求的详细信息

开发风控检查相关逻辑

回调服务器内,需要结合自身业务上的需求,针对 CallbackRequest 的内容进行风控检查,确保本次请求的任务是合法的动用私钥分片的任务。

构建 HTTP 响应

回调服务器构建 HTTP 响应的步骤如下:

  1. 根据风控检查结构,生成对应的 CallbackResponse 结构体

  2. 将 CallbackResponse 结构体进行 JSON 序列化,得到 CallbackResponseJsonString

  3. 使用 CallbackResponseJsonString 作为 JWT 的 payload,使用自身的 RSA 私钥对其进行签名,构造 JWT

  4. 将上一步构造的 JWT 作为 HTTP 响应的内容,直接返回给 TSS Node

CallbackRequest 定义

当request_type == TypeKeyGen时,request_detail 的结构定义如下:

extra_info 的结构定义如下:

当 request_type == TypeKeySign 时,request_detail 的结构定义如下:

extra_info 的结构定义如下:

ToAddressDetail

extra_parameters

Input

TransactionTypeEnum

TransactionOperationEnum

RawTx

当 request_type == TypeKeyReshare 时,request_detail 的结构定义如下:

extra_info 的结构定义如下:

CallbackResponse 定义

注:当 TSS Node 无法接收到 HTTP 响应时,会持续重试请求回调服务器。当超过最大重试次数后,风控结果为 REJECT

Last updated