MPC Node Service API

接口鉴权说明

Safeheron MPC Node Service 使用 JWT(JSON Web Token) 方式鉴权,开发者需要自己创建 JWT 鉴权密钥对,并将公钥配置到 SMN Service,具体的密钥创建和配置方式请参考《SMN Service 部署》

开发者使用 JWT 生成 token 时,首先准备需要编码的内容为:

token = {
    "app": "safeheron-mpc-node-service",
		"uri": path,
		"nonce": nonce,
		"iat": timestamp_secs,
		"exp": iat + seconds_jwt_exp,
		"hash": sha256(json.dumps(body_json).encode("utf-8")).hexdigest()
}

其中每个字段的含义如下:

对 token 进行编码和签名,其中 private_key 为 JWT 密钥对中的私钥,签名使用 ES256 算法, 示例如下:

token = jwt.encode(token, key=private_key, algorithm="ES256")

在进行接口调用时,需要在 HTTP 请求时增加 Authorization 请求头,如下:

Authorization: Bearer {token}

除以下两个接口外,Safeheron MPC Node Service 其他接口均需 JWT 鉴权:

全局 API

Node Info

功能概述

查看 MPC Node 的基本配置信息。

接口地址

GET /node/info

请求参数

响应参数

参数名类型说明
localPartyobject本地 Party 相关信息
└─idint当前节点 ID
└─tpkstring16 进制字符串格式的公钥
relayerobjectRelayer 相关配置
└─addressstringRelayer 连接地址

Check

功能概述

检查 MPC Node Service 健康状态。状态为健康时 HTTP 响应码为 200,其他状态 HTTP 响应码为 500;该接口不需要 JWT 鉴权。

接口 URL

GET /check

请求参数

响应参数

参数名类型说明
versionstringMPC Node Service 的版本,如 1.0.0
statusstringok:状态正常
stopping:停止中,即将下线
unhealthy:其他情况
teeEngineobjectTEE Engine 版本和状态
└─versionstring版本,如 1.0.0
└─statusstringok:状态正常
unhealthy:其他情况
licenseobjectLicense 信息
└─licenseIdstringLicense ID
└─customerIdstring客户信息
└─issuedstring签发时间,YYYY-MM-dd HH:mm:ss,UTC 时间
└─expirystring过期时间,YYYY-MM-dd HH:mm:ss,UTC 时间
└─gracePeriodint过渡期天数,当 License 已经过期的情况下,如果尚在过渡期内,此时系统依然可用,但请及时更新 License,避免影响业务运行
└─statusstringLicense 的状态,有以下四种:
1. VALID:License 在有效期内,系统正常提供服务
2. GRACE_PERIOD:License 已经过期,尚在宽限期内,系统正常提供服务,需要及时更新 License
3. EXPIRED: License 已经过期,且过渡期已结束,系统功能受限,需更新 License
4. INVALID: 其他未知情况导致的 License 失效,系统功能受限,请联系 Safeheron 协助处理
└─algorithmobject[]许可的 MPC 算法,及在算法下许可的 MPC 协议、曲线、门限、和派生路径
        └─namestring算法名称,例如:ECDSA-CMP、EdDSA-Lin22、Schnorr-Lin22
        └─curvestring[]在算法下许可的曲线,例如:Secp256k1
        └─thresholdstring[]在算法下许可的门限,例如:2/2、2/3
        └─protocolstring[]在算法下许可的 MPC 协议,例如:keygen、refresh
        └─bip44Pathobject在算法下许可的 BIP44 派生路径
                  └─typestingANY:许可任意派生路径 SPECIFIED_PATH_ONLY:仅许可指定的派生路径
                  └─pathstring[]当 type 为 SPECIFIED_PATH_ONLY 时,指定可使用的派生路径

PreStop

功能概述

当开发者希望下线或者重启某个 MPC Node Service 实例时,必须等待当前实例中所有正在进行的 MPC 任务结束才可以关闭或者重启进程,所以提供此接口通知实例准备结束工作。收到接口调用后,健康检查接口状态变更为 stopping,同时 HTTP 状态码返回 500。当所有 MPC 任务结束后,返回本次 preStop HTTP 调用的响应。同时,启动 MPC 任务的接口,如创建私钥分片、签名、刷新和恢复接口,调用时返回特定错误码 M201058,并返回对应错误信息:The new request is not allowed since the MPC Node Service is stopping.

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

💡
由于 MPC Node Service 从开发者的 Load Balance 中下线需要一定时间(取决于额 Load Balance 配置),当调用 MPC 协议接口时有一定机率遇到上述错误码和错误信息,表示当前调用的 MPC Node Service 正在处于关闭中状态,开发者可以进行重试。

接口 URL

GET /preStop

请求参数

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

响应参数

参数名类型说明
stoppedbooltrue

算法 API

创建私钥分片

功能概述

MPC Node 接收到启动私钥分片创建指令后,根据 session ID 和远程参与方信息,启动本次 MPC Session,如果 MPC Session 执行成功,则返回 Key ID 和 xPub(扩展公钥),如果计算失败,返回具体的错误信息。

💡
由于网络原因,有可能会出现 Embedded MPC Node 未完成 Keygen 协议,没有获取到 Key ID 和 XPub,但是 MPC Node Service 端完成了计算,得到了 Key ID 和 XPub,或者相反的情况。建议开发者在后端服务中检查是否所有 MPC 的参与方都获取到了 Key ID 和 XPub 并且相同,检查通过后再进行后续操作,其他 MPC 协议调用时也进行类似的检查

License 说明

需要 License 授权

接口 URL

算法接口 URL
ECDSA-CMPPOST /mpc/ecdsa/keys/keygen
EdDSA-Lin22POST /mpc/eddsa/keys/keygen
Schnorr-Lin22POST /mpc/schnorr/keys/keygen

请求参数

参数名类型必须说明
sessionIdstringMPC Session ID,唯一标识一个 MPC 任务,所有 Party 在计算同一个任务时, sessionId 必须一致。sessionId 推荐使用 UUIDv4
thresholdint签名门限 t/n 中的 t 值,可用值由 License 决定,1 < threshold <= totalPartyNum。所有 Party 在计算同一个任务时, threshold 必须一致
totalPartyNumint签名门限 t/n 中的 n 值,可用值由 License 决定,1 < threshold <= totalPartyNum。所有 Party 在计算同一个任务时, totalPartyNum 必须一致
curveNamestring签名算法需要的曲线名称,可用值范围由 License 决定
ECDSA 算法支持的曲线为: Secp256k1
EdDSA 算法支持的曲线为:Ed25519
Schnorr 算法支持的曲线为:Secp256k1
remotePartiesarray参与本次 MPC 计算任务的其他方, 不包含自己,数量为 totalPartyNum - 1
└─idint参与方 Party 的 ID
└─tpkstring参与方 Party 的 Tenant Public Key (TPK)
💡
sessionId 建议使用 UUIDv4,MPC Node Service 和 Embedded MPC Node Service 会对sessionId 格式进行检查,格式要求为:包含大小写字母、0-9 数字、 _ 和 -,长度大于等于 32 字符,小于等于 64 字符。其他 MPC 协议请求参数中的 sessionId 同理。

响应参数

参数名类型说明
keyIdstringMPC Session 计算成功,每个参与方会返回相同的 Key ID
xPubstring扩展公钥,每个参与方会返回相同的 xPub
signKeyVersionstring私钥分片数据和数据结构版本

私钥分片签名

功能概述

MPC Node 接收到启动私钥分片签名指令后,根据 sessionID 和远程参与方启动本次 MPC Session,根据 Key ID 获取本地存储的私钥分片执行 MPC 任务;如果 MPC Session 执行成功,则返回对应响应参数,如果计算失败,返回具体的错误信息。

License 说明

需要 License 授权

接口 URL

算法接口 URL
ECDSAPOST /mpc/ecdsa/keys/sign
EdDSAPOST /mpc/eddsa/keys/sign
SchnorrPOST /mpc/schnorr/keys/sign

请求参数

参数名类型必须说明
sessionIdstringMPC Session ID,唯一标识一个 MPC 任务,所有 Party 在计算同一个任务时, sessionId 必须一致。sessionId 推荐使用 UUIDv4
keyIdstring需要使用的私钥分片 ID
algoTypestring仅 Schnorr 算法签名时需要此参数,该参数支持 LEGACY 和 BIP340 两种类型,参数值不区分大小写;LEGACY 适用于 BCH,BIP340 适用于 BTC
digestsarray需要签名的消息摘要列表
└─pathstring签名使用的 BIP44 路径,不可为空,使用的 BIP44 路径需要 License 授权。输入示例:m/44/60/1/0/0。格式为必须 m 开头,/ 分割路径,每段中间必须整数,整数范围为 [0, 2^32),不能带 ',数字部分字段只能包含 5 段
└─digeststring要签名的数据,使用 16 进制字符串表示,不包含 0x。其中 ECDSA 算法要求此参数大小为 32 字节,EdDSA 和 Schnorr 算法要求此参数大于等于 32 字节,小于等于 1M 字节
remotePartiesarrayMPC Session 的参与方信息,不包含自己,数组长度值应为 threshold - 1,其中 threshold 的值为生成 keyId 对应的私钥分片时传入的 threshold 参数
└─idint参与方 Party 的 ID
└─tpkstring参与方 Party 的 Tenant Public Key(TPK)

响应参数

参数名类型说明
signaturesarray
└─pathstring签名使用的 BIP44 路径
└─digeststring与请求参数对应的 16 进制格式的待签名数据,字母全小写
└─signaturestring签名结果 16 进制字符串表示
└─recoveryIdintEVM 公链签名中的 v,值为 0 或者 1。仅当使用 ECDSA 算法及 Secp256k1 曲线签名时,返回该字段

私钥分片刷新

功能概述

针对 2/3 门限,当 MPC Node 收到刷新指令后,每个参与方得到一个新的私钥分片,同时对应一组新的 KeyId,如果刷新成功,则返回新的 KeyId。如果刷新失败,则返回失败,需要开发者重新触发刷新。新生成的私钥分片和老的私钥分片对应的扩展公钥保持不变(背后对应的私钥保持不变),老的私钥分片依然可用。老的私钥分片需要开发者根据业务场景,选择适当的时机进行删除。

关于刷新和恢复的区别参考:《Keyless 钱包》

💡
开发者如果存在删除老私钥分片的场景,建议在刷新后使用新的私钥分片进行签名,当验证新的私钥分片可用后,调用删除接口删除服务端老的私钥分片,同时 Embedded MPC Node 调用删除接口删除用户设备中的老私钥分片。

License 说明

需要 License 授权

接口 URL

算法接口 URL
ECDSA-CMPPOST /mpc/ecdsa/keys/refresh
EdDSA-Lin22POST /mpc/eddsa/keys/refresh
Schnorr-Lin22POST /mpc/schnorr/keys/refresh

请求参数

参数名类型必须说明
sessionIdstringMPC Session ID,唯一标识一个 MPC 任务,所有 Party 在计算同一个任务时, sessionId 必须一致。sessionId 推荐使用 UUIDv4
keyIdstring需要刷新的私钥分片 ID
remotePartiesarrayMPC Session 的参与方信息,不包含自己。数组长度值应为 totalPartyNum - 1,其中 totalPartyNum 的值为生成 keyId 对应的私钥分片时传入的 totalPartyNum 参数。
└─idint参与方 Party 的 ID
└─tpkstring参与方 Party 的 Tenant Public Key(TPK)

响应参数

参数名类型说明
keyIdstringMPC Session 计算成功,每个参与方会返回相同的新 KeyId
xPubstring扩展公钥,和原来一组私钥分片的扩展公钥保持不变
signKeyVersionstring私钥分片数据和数据结构版本

私钥分片恢复

功能概述

针对 2/3 门限,使用其中两个私钥分片恢复另外一个私钥分片。所有的参与方都必须输入 KeyId,即使本地私钥分片不存在的的参与方,也需要输入 KeyId。RecoveredParty 用于表示需要恢复私钥分片的一方。如果恢复成功,则返回新的 KeyId。如果恢复失败,则返回失败,需要开发者重新触发恢复。新生成的私钥分片和老的私钥分片对应的扩展公钥保持不变(背后对应的私钥保持不变),老的私钥分片依然可用。老的私钥分片需要开发者根据业务场景,选择适当的时机进行删除或者始终保留用于将来的恢复场景。

更多关于恢复私钥分片和私钥分片合成单私钥参考:《Keyless 钱包》

License 说明

需要 License 授权

接口 URL

算法接口 URL
ECDSA-CMPPOST /mpc/ecdsa/keys/recover
EdDSA-Lin22POST /mpc/eddsa/keys/recover
Schnorr-Lin22POST /mpc/schnorr/keys/recover

请求参数

参数名类型必须说明
sessionIdstringMPC Session ID,唯一标识一个 MPC 任务,所有 Party 在计算同一个任务时, sessionId 必须一致。sessionId 推荐使用 UUIDv4
keyIdstring指定需要使用的私钥分片 ID
remotePartiesarray所有其他的 MPC Session 参与方信息,不包含自己,数组长度值应为 totalPartyNum - 1,其中 totalPartyNum 的值为生成 keyId 对应的私钥分片时传入的 totalPartyNum 参数
└─idint参与方 Party 的 ID
└─tpkstring参与方 Party 的 Tenant Public Key(TPK)
recoveredPartyobject需要恢复的一方的 Party 信息
└─idint被恢复方 Party 的 ID
└─tpkstring被恢复方 Tenant Public Key(TPK)

响应参数

参数名类型说明
keyIdstring recover 后生成新的一组私钥分片的 keyId
xPubstring扩展公钥,和原来一组私钥分片的扩展公钥保持不变
signKeyVersionstring私钥分片数据和数据结构版本

根据 KeyId 和 BIP44 路径获取公钥

功能概述

扩展公钥派生子公钥功能。

License 说明

需要 License 授权

接口 URL

算法接口 URL
ECDSA-CMPPOST /mpc/ecdsa/keys/derivePublicKeys
EdDSA-Lin22POST /mpc/eddsa/keys/derivePublicKeys
Schnorr-Lin22POST /mpc/schnorr/keys/derivePublicKeys

请求参数

参数名类型必须说明
keyIdstring指定需要使用的私钥分片
compressedbool是否返回压缩公钥,true 是,返回压缩公钥,false 返回未压缩公钥。仅当 keyId 所对应的算法是 ECDSA 或 Schnorr 时,需要此参数
pathsarrayBIP 44 路径数组,使用的 BIP44 路径需要 License 授权

响应参数

参数名类型说明
pathsarray
└─pathstringBIP44 路径
└─pkstringBIP44 路径对应的公钥

验证签名的有效性

功能概述

给定公钥、消息、签名,验证签名是否是一个有效的签名。

接口 URL

算法接口 URL
ECDSA-CMPPOST /mpc/ecdsa/keys/verifysignature
EdDSA-Lin22POST /mpc/eddsa/keys/verifysignature
Schnorr-Lin22POST /mpc/schnorr/keys/verifysignature

请求参数

参数名类型必须说明
curveNamestring签名时所使用的曲线,需要与签名时所使用的曲线保持一致
algoTypestring仅当要验证的签名是采用 Schnorr 算法生成时需要此参数,需要与签名时所使用的 algoType 参数值保持一致
publicKeystring公钥
digeststring开发者对消息 hash 后的摘要,16 进制字符串
signaturestring签名内容,签名接口返回的 16 进制字符串

响应参数

参数名类型说明
verifiedbooltrue 表示签名有效,false 签名无效

获取私钥分片信息

功能概述

给定私钥分片 KeyId,获取私钥分片的可公开部分信息。

接口 URL

算法接口 URL
ECDSA-CMPPOST /mpc/ecdsa/keys/info
EdDSA-Lin22POST /mpc/eddsa/keys/info
Schnorr-Lin22POST /mpc/schnorr/keys/info

请求参数

参数名类型必须说明
keyIdstring私钥分片 ID

响应参数

参数名类型说明
keyIdstring私钥分片 ID
xPubstring扩展公钥
curveNamestring签名算法需要的曲线名称
signKeyVersionstring私钥分片数据和数据结构版本
thresholdint门限值
totalPartyNumint参与方总数
parentKeyIdstring如果私钥分片由刷新或者恢复得到,这里为父私钥分片的 keyId,如果为分布式私钥分片生成得到,这里为空
parentTypestring如果存在 parentKeyId,那么这里为 refresh/recover,如果不存在 parentKeyId,这里为空
createdTimestampstring私钥分片创建时间的毫秒级时间戳

从签名中恢复公钥

功能概述

给定摘要、签名和 recoveryId,恢复公钥。仅 ECDAS-CMP 算法支持此接口。

接口 URL

算法接口 URL
ECDSA-CMPPOST /mpc/ecdsa/keys/recoverPublicKey

请求参数

参数名类型说明
curveNamestring签名时所使用的曲线,需要与签名时所使用的曲线保持一致
digeststring开发者对消息 hash 后的摘要,16 进制字符串
signaturestring消息摘要对应的签名
recoveryIdintECDSA 签名返回的 recoveryId,0 或者 1
compressedbool是否返回压缩公钥,true 返回压缩公钥,false 返回未压缩公钥

响应参数

参数名类型说明
publicKeystring恢复出来的公钥

分页查询 keyId 列表

功能概述

分页查询 keyId 列表,按照创建时间降序查询。

接口 URL

算法接口 URL
ECDSA-CMPPOST /mpc/ecdsa/keys/list
EdDSA-Lin22POST /mpc/eddsa/keys/list
Schnorr-Lin22POST /mpc/schnorr/keys/list

请求参数

参数名类型必须说明
pageint页码
pageSizeint每页数据大小,最大为 200,超过 200 后默认按照 200 进行限制

响应参数

参数名类型说明
keyIdsarray
└─keyIdstring私钥分片 ID
└─curveNamestring曲线名称
└─xPubstring扩展公钥
└─signKeyVersionstring私钥分片数据和数据结构版本
└─thresholdint签名门限
└─totalPartyNumintMPC 参与方总个数
└─parentKeyIdstring如果私钥分片由刷新或者恢复得到,这里为父私钥分片的 keyId,如果 keygen 得到,这里为空
└─parentTypestring如果存在 parentKeyId,那么这里为 refresh/recover,如果不存在 parentKeyId,这里为空
└─createdTimestampstring创建时间,采用毫秒时间戳
currentPageint当前页码
totalPageint总页数
pageSizeint当前页数据大小

删除私钥分片

功能概述

指定 keyId,物理删除指定的私钥分片,一旦删除不可恢复。

接口 URL

算法接口 URL
ECDSA-CMPPOST /mpc/ecdsa/keys/delete
EdDSA-Lin22POST /mpc/eddsa/keys/delete
Schnorr-Lin22POST /mpc/schnorr/keys/delete
参数名类型必须说明
keyIdstring私钥分片的 keyId

响应参数

参数名类型说明
deletedbooltrue 表示删除成功,false 表示删除失败

错误码

错误码说明
M201001Ready message algoId mismatch
和其他 MPC 参与方发送的 Ready 消息中 algoId 对比不一致
M201002Ready message curveId mismatch
和其他 MPC 参与方发送的 Ready 消息中 curveId 对比不一致
M201003Ready message algoVersion mismatch
和其他 MPC 参与方发送的 Ready 消息中 algoVersion 对比不一致
M201004Ready message keyId mismatch
和其他 MPC 参与方发送的 Ready消息中 keyId 对比不一致
M201005Ready message sessionId mismatch
和其他 MPC 参与方发送的 Ready消息中 sessionId 对比不一致
M201006Ready message taskHash mismatch
和其他 MPC 参与方发送的 Ready 消息待签内容的摘要对比不一致
M201007Ready remote party error
Ready 消息来源和入参 remoteParties 对比不一致
M201008Ready timeout
等他其他参与方 Ready 消息超时,超过配置文件中 ReadyTimeout 配置
M201009Ready message send error
发送 Ready 消息失败
M201010Ready message chainCode mismatch
和其他 MPC 参与方发送的 Ready 消息中 chainCode 对比不一致
M201011Ready message rcKeyId mismatch
和其他 MPC 参与方发送的 Ready 消息中 rcKeyId 对比不一致
M201012Ready message verify exception
Ready 消息校验异常
M201013Ready message signKeyVersion mismatch
和其他 MPC 参与方发送的 Ready 消息中 signKeyVersion 兼容性检查异常
M201014Ready message algoType mismatch
和其他 MPC 参与方发送的 Ready 消息中 algoType对比不一致
M201021MPC session timeout
MPC 计算超时失败,超过配置文件中的 SessionTimeout 配置
M201022MPC engine run context error
MPC 创建计算上下文 context 失败
M201023MPC engine run mid round error
MPC 执行 midRound 失败
M201024MPC engine run final round error
MPC 执行 finalRound 失败
M201025MPC engine create key error
创建鉴权公私钥失败
M201026MPC websocket communicate error
WebSocket 通信失败
M201027MPC create session error
创建 MPC Session 失败
M201028Duplicate calls sessionId error
重复的 sessionId 错误
M201029Mpc engine offline error
MPC Engline 工作状态异常
M201030Mpc engine recover userKeyShare error
MPC Engine 恢复 userKeyShare 失败
M201031MPC engine timeout error
MPC 计算超时错误
M201032MPC engine recover minimal key error
MPC 恢复计算过程中 minimalKey 失败
M201033MPC engine input chianCode empty error
MPC 检查 chainCode 字段出现错误
M201034Prestop token is invalid
preStop token 不合法
M201051The input parameter is empty error
输入参数为空失败
M201052The input parameter is invalid error
输入参数超出范围
M201053The signkey is empty error
SMN Service 存储的 signKey 为空
M201054The bip44 path is illegal error
BIP44 路径非法
M201055The input parameter %s is invalid hex format error
16 进制格式校验错误
M201056The input parameter conflict with config error
输入参数和配置参数冲突
M201057Check failed, entering preStop status
check 接口自检异常,进入preStop 状态
M201058The new request is not allowed since the MPC Node Service is stopping
新请求不再响应,因为服务被调用过 preStop 接口正在停止中
M201059The format of sessionId does not conform to the specified format.
sessionId 格式不符合规则
M201060The keyId %s doesn’t exist.
keyId 不存在
M201062The given remote party %s cannot be the same as the local party.
传入的 remoteParty 不能和本地party相同
M201063The two given remote party IDs cannot be the same.
传入的 2 个 remoteParty ID 不能相同
M201064The given remote party ID must be in the range of [1,2,3].
传入的 remoteParty ID 必须在 [1,2,3] 范围内
M201065The given remote tpk is not in the correct format
传入的 remoteParty tpk 格式不正确
M201066The given remote parties count is not correct of threshold.
传入的 remoteParties 数量和 threshold 不匹配
M201067The given recovered tpk is not in the correct format.
传入的 recovered tpk 格式不正确
M201068The given recovered party %s should not in the remoteParties.
被恢复方调用接口时,传入的 remoteParties 不应该包含自己
M201069The given recovered party %s should in the remoteParties.
被恢复方信息在 remoteParties 也应该包含
M201070The given recovered party ID must be in the range of [1,2,3].
传入的 recoveredParty ID 必须在 [1,2,3] 范围内
M201071sessionId=%s. The path cannot be empty
path 不能为空
M201072sessionId=%s. The digest should be 64 chars in length
digest 应该是64字符长度
M201073sessionId=%s. The threshold cannot be empty
threshold 不能为空
M201074sessionId=%s. The totalPartyNum cannot be empty
totalPartyNum 不能为空
M201075sessionId=%s. The sessionId should be between 32 and 64 chars in length
sessionId 应该在32到64字符长度之间
M201076sessionId=%s. The curveName should be below 64 chars length
curveName 应该小于64字符长度
M201077sessionId=%s. The remoteParties cannot be empty
remoteParties 不能为空
M201078sessionId=%s. The keyId should be 64 chars in length
keyId 应该是64字符长度
M201079sessionId=%s. The page should be greater than 0
page 应该大于0
M201080sessionId=%s. The page should be less than 99999999
page 应该小于99999999
M201081sessionId=%s. The pageSize should be greater than 0
pageSize 应该大于0
M201082sessionId=%s. The id cannot be empty
id 不能为空
M201083sessionId=%s. The recoveredParty cannot be null
recoveredParty 不能为空
M201084sessionId=%s. The signature should be 128 chars in length
signature应该是128字符长度
M201085sessionId=%s. The recoveryId should be 0 or 1
recoveryId 应该是0或1
M201086sessionId=%s. The digests cannot be empty
digests 不能为空
M201087sessionId=%s. The publicKey should be 130 chars in length
publicKey 应该是130字符长度
M201088sessionId=%s. The compressed cannot be empty
compressed 不能为空
M201089sessionId=%s. The paths cannot be empty
paths 不能为空
M201090sessionId=%s. The page cannot be empty
page 不能为空
M201091sessionId=%s. The pageSize cannot be empty
pageSize 不能为空
M201092sessionId=%s. The recoveryId cannot be empty
recoveryId 不能为空
M201093sessionId=%s. The publicKey %s invalid format error
publicKey 格式错误
M201094sessionId=%s. The digest length should be between 64 and 2097152 chars in length
digest 长度应该在64到2097152字符之间
M201095Input curveName invalid error
参数 curveName 不支持
M201096Input algoType invalid error
参数 algoType 不支持
M201999Unknown exception error
未知异常失败

文档变更记录

2024-07-04 1.2.0 版本更新