在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  |