跳到主要内容

交易签名




Transaction signature


上图所示是我们 2-3 默认方案的交易签名时序图,需要 2 个参与方,分别为:User 和 Hot Server。 整个 Signing 生命周期携带唯一的 Session ID 标识单轮次信息。 消息传递通过消息队列,采用了端到端加密,且通过 Token 鉴权确保了各方只能获取自己 Channel 的消息。Hot Server 是常驻服务,通过消息订阅可以随时接收信息。



Signing 具体步骤如下:

  1. 用户向服务端用户中心发起 Signing 请求,获取 Session ID。

  2. 服务端响应请求,生成 Signing Session ID 并返回给用户。

  3. 用户端向消息队列发送 Signing 启动的广播消息,并携带 Session ID。同时,本地异步启动 Signing 流程。

  4. 消息队列收到发送消息请求,解析用户 Token,并到用户中心鉴权是否合法。

  5. 如果鉴权通过,说明是正常用户请求,反之是直接拒绝返回。

  6. 消息队列将 Signing 启动的消息广播到 Hot Server 订阅的 Channel。Hot Server 收到消息的同时,异步启动 Signing 流程。

  7. 消息队列返回广播成功的响应,用户端启动 MPC 协议交互流程。反之,Signing 异常。

  8. 通过消息队列,User 和 Hot Server进行多次 MPC 信息交换。最后 Hot Server 在 TEE 中丢弃签名信息,只将签名结果记录到 DB。

  9. 用户端完成 MPC 交互会获得相同的签名信息。

  10. 用户端将签名信息广播到区块链,整个 Signing 流程结束。