在FISCO应用中,有些时候需要把上链拆分为两步骤,而不是一次性就完成签名上链,一次性上链对用户保管的私钥是不友好的。
拆分为两步骤:
- 构造待签名的数据返回用户;
- 用户使用自己保管的私钥完成签名;
- 上链签名后的数据。
本文提供了FISCO-3.3.0版本SDK拆分两步骤上链的demo。
签名Base
签名包服务结构如下:
sign下有data和helper两个包,data下有Transaction和TransactionDataInfo两个类,helper下有SignHelper一个类。
Transaction作为返回体,返回用户待签名数据体。
TransactionDataInfo用于接受SDK返回的待签名参数,再部分赋值到Transaction返回用户。
SignHelper是签名辅助类,签名相关的方法都封装再这个类,提供对外调用服务。
Transaction
1 | import io.swagger.annotations.ApiModelProperty; |
TransactionDataInfo
1 | import io.swagger.annotations.ApiModelProperty; |
SignHelper
1 | import com.btsi.bcos.base.sign.data.TransactionDataInfo; |
签名实现服务层
上文提供了签名的Base服务,现在使用Base服务,实现签名业务。
某合约创建类别方法
调用SignHelper,返回待签名数据。
1 | public TransactionDataInfo createCategory( |
返回待签名数据到用户
1 | // 获取待签名数据 |
用户使用私钥自行签名
1 | // 获取服务端返回的Transaction |
发送交易上链方法
1 | /** |
实现上链
1 | // 调用合约方法mint |