-
嵌入式风控提供基础的、预定义的规则,这些规则不能自定义。您可以在
configs/cobo-tss-node-config.yaml文件中配置风控规则。 -
对于 TSS Node 回调,您需要在回调服务器中实现自定义的风控逻辑,根据您的特定规则检查回调请求。回调请求中需要检查的关键字段:
request_detail:包含私钥生成、私钥 Resharing 和交易签名的关键信息。extra_info:提供额外的上下文信息;应与request_detail交叉验证。
私钥生成
我们建议对私钥生成请求使用嵌入式风控。通常不需要为此操作使用回调服务器逻辑。 按如下方式配置私钥生成的嵌入式风控:- 允许使用指定阈值和 TSS Node ID 的私钥生成
- 拒绝所有其他请求
私钥 Resharing
我们建议对私钥 Resharing 请求使用嵌入式风控。通常不需要为此操作使用回调服务器逻辑。 按如下方式配置私钥 Resharing 的嵌入式风控:- 允许来自指定私钥分片持有者组、阈值和 TSS Node ID 的私钥 Resharing 请求。
- 拒绝所有其他请求
交易签名
我们建议对交易签名请求同时使用嵌入式风控和回调服务器逻辑。嵌入式风控
配置交易签名的嵌入式风控规则:回调风控
在您的 TSS Node 回调服务器中实现以下安全检查:-
验证交易哈希以防止交易被篡改:
- 从
extra_info.Transaction.RawTxInfo.UnsignedRawTx提取原始交易数据 - 根据特定链的规则计算此原始交易数据的哈希值
- 将计算出的哈希值与
request_detail.msg_hash_list中提供的哈希值进行比较 - 如果哈希值不匹配,则拒绝交易
- 从
-
验证关键的交易参数以防止未经授权或恶意的交易:
- 根据特定链的格式解析
extra_info.Transaction.RawTxInfo.UnsignedRawTx,提取以下关键参数:- Gas 费用:确保在可接受的范围内
- 目标地址:验证是否在允许的地址列表中
- 交易金额:检查是否符合配置的限制
- 链 ID:确认是否匹配您预期的网络
- Call data
- 根据需要验证其他特定参数
- 将解析出的参数与
extra_info.Transaction中的值进行比对 - 将解析出的参数或
extra_info.Transaction与通过 WaaS 2.0 API 构建的原始交易进行比对
- 根据特定链的格式解析
-
验证签名私钥分片:
tweak_list:签名中使用的 tweak 列表bip32_path_list:BIP32 派生路径。root_pub_key:私钥分片持有者组的根扩展公钥。
-
检查
signature_type是否与目标区块链兼容,因为不同链的签名类型各不相同。
自动归集实现
对于启用了自动归集的 MPC 钱包,实现基于白名单的审批系统,该系统应:- 验证交易哈希以确保交易完整性。
- 检查目标地址是否在预先批准的白名单中。
- 自动批准满足这两个条件的交易。
- 在 callback-server-config.yaml 中配置目标地址的白名单。
-
参考 sign.go 了解以下示例:
- 解析交易内容
- 验证哈希与已签名消息是否匹配
- 基于白名单批准交易
未来我们将扩展示例项目以支持更多区块链网络。您也可以使用代码库中的 token_adapter 模块来扩展对更多代币的支持。
