Relayer API

Relayer 负责处理 MPC Node 之间的通信,本文档介绍 Relayer 提供的接口。

基本概念

OTT

一次性 Token(One-Time Token,OTT),每个 Embedded MPC Node 连接 Relayer 时需要使用一次性 Token 进行鉴权。

获取 OTT

功能概述

每个 Embedded MPC Node 连接 Relayer 时需要使用一次性 Token 进行鉴权(One-Time Token,OTT)。当建立连接后 OTT 马上失效,每个 OTT 只能只用一次,并且 OTT 有效期为 1 小时。

此接口仅支持通过 APIServer.Port 端口访问。

接口 URL

POST /ott/create

请求参数

参数名类型必须说明
idintEmbedded MPC Node 中租户的 Party ID
tpkstring租户的公钥,格式为 16 进制字符串,04 开头,共 130 个字符
countint要创建的 OTT 个数,最大 10 个

响应参数

参数名类型说明
ottsarray<string>ott列表
timestampstring服务器当前时间戳
errorCodestring错误码
errorMsgstring错误码描述

WebSocket 通信接口

功能概述

MPC Node Service 和 Embedded MPC Node 自动使用该接口通过 WebSocket 协议进行点对点通信。

该接口存在两种访问场景:

(1)MPC Node Service 通过内网或者公网访问,通过在 Relayer 配置文件中配置 MPC Node Service 公钥实现通信的鉴权。开发者只需要配置 MPC Node Service 公钥即可,MPC Node Service 调用该接口自动进行鉴权,无需开发者额外配置。

(2)Embedded MPC Node 通过公网访问该接口,访问时需要携带 OTT。开发者需要开发自己的后端服务,通过内网调用 Relayer 获取 OTT 接口获得 OTT,然后下发给 Embedded MPC Node,Embedded MPC Node 每次连接时会使用该 OTT。

开发者无需显式编程调用此接口。

接口 URL

/websocket

通信补偿接口

功能概述

当 Embedded MPC Node 所处的网络环境不稳定时, Embedded MPC Node 会自动尝试使用该接口通信。该接口依然需要 OTT,需要开发者后端服务向 Relayer 申请 OTT 并下发给 Embedded MPC Node。

默认情况下该接口不支持跨域访问,如果 Embedded MPC Node 是浏览器端,则需要开启跨域功能。如需配置跨域访问,请参考 Relayer 部署文档进行配置。

开发者无需显式编程调用此接口。

接口 URL

/sendandreceive

PreStop 接口

功能概述

当开发者希望下线或者重启某个实例时需要调用本接口。收到接口调用后,健康检查接口状态变更为 stopped,同时 HTTP 状态码返回 500。此接口仅支持通过 APIServer.Port 端口访问。

当调用 preStop 接口后,/ott/create 请求响应固定返回错误码 R000003 。此时存在一个场景,当开发者调用 preStop 接口后,负载均衡器还没有将 relayer 实例从负载均衡目标组中摘除,开发者的后端服务可以请求到正在关闭的 relayer 实例,此时可以增加重试逻辑:如果错误码为 R000003 则进行一定次数的重试。

为了防止 preStop 被内网恶意调用,每个实例在启动时独立生成一个 token,该 token 用于 preStop 的简单鉴权,保存 token 的位置为 ./preStop/preStopToken.txt,文件内容中包含了 token。开发者通过查看 preStopToken.txt 内容进行调用 preStop。

此接口仅支持通过 APIServer.Port 端口访问。

接口 URL

GET /preStop

请求参数

参数名类型说明
tokenstring启动时生成的 token 字符串,存储路径在 ./preStop/preStopToken.txt

响应参数

参数名类型说明
stoppedbool停机状态
timestampstring服务器当前时间戳
errorCodestring错误码
errorMsgstring错误码描述

健康检查接口

功能概述

检查 Relayer 工作状态是否正常。当 Relayer 工作状态正常时,该接口返回 HTTP 状态码 200,当工作状态不正常时,返回 HTTP 状态码 500。当使用负载均衡类产品配置负载时,可以使用该接口检查负载的健康状况。

此接口仅支持通过 APIServer.Port 端口访问。

接口 URL

GET /check

请求参数

响应参数

参数名类型说明
versionstringMPC Node Relayer 的版本,如 v1.0.0
statusstring如果一切正常,该字段为 ok,preStop 后为 stopped,其他情况为 unhealthy
msgstring状态描述
timestampstring服务器当前时间戳
errorCodestring错误码
errorMsgstring错误码描述

错误码列表

错误码错误描述
R000001Unknown Error. Please check the service logs or contact Safeheron support team.
R000002Please check if Redis is functioning properly.
R000003The new request is not allowed since the Relayer is stopping.
R001001The request is missing the 'commPartyId' parameter.
R001002The request is missing authentication credential information.
R001003Request missing parameters
R001004Failed to format the request data.
R001005Invalid request parameters, please check the Id and the TPK
R001006The timestamp parameter must be between the current time and a time point within the last five minutes.
R001007The timestamp parameter must be between the current time and a time point within the last sixty minutes.
R001008Invalid OTT or Signature.
R001009Invalid CommPartyId or Signature.
R001010Illegal PreStopToken
R002001Messages and query* cannot be empty at the same time.