FISCO链地址授权
FISCO方式(私钥)
请求实体
1 | import lombok.AllArgsConstructor; |
秘钥串验证工具类
1 | import lombok.extern.slf4j.Slf4j; |
交易服务类
1 |
|
判断授权 + 执行授权
1 | /** |
执行授权
1 |
|
WeBase方式(签名)
控制层
1 |
|
服务Helper类
1 |
|
请求实体
1 | /** |
WeBase交易输入实体
1 | /** |
签名授权数据Helper
1 | /** |
合约交易确认Helper
1 | /** |
编码服务类
1 | /** |
配置文件
1 | 47.93.14.150:20200 = |
FISCO方式(签名)
交易的组装和发送
RawTransaction
构造:构造不带有签名的交易RawTransaction
编码:对不带有签名的交易进行编码,并计算其哈希SignedTransaction
构造与编码:将不带有签名的交易与交易签名进行组装编码为带有签名的交易SignedTransaction
发送:将带有签名的交易发送到区块链上
构造 RawTransaction
构造交易内容
交易内容定义了交易要调用的指令以及参数,FISCO BCOS 中的交易采用 ABI 编码,可根据 abi 和 binary 以及参数,构造交易内容,主要包括两步:
步骤一:创建 ABICodec 对象
1 | /** |
步骤二:调用创建的 ABICodec 对象对交易内容进行编码
1 | /** |
构造 RawTransaction
1 | /** |
对 RawTransaction 进行编码
1 | /** |
签名服务对交易进行签名
获取 RawTransaction 的哈希后,可以调用硬件加密机或远程签名服务对该哈希进行签名,该流程因业务系统的不同而有所差异。外部签名服务需实现 RemoteSignProviderInterface 接口,具体的接口定义如下:
1 | public interface RemoteSignProviderInterface { |
签名示例如下,其中dataToSign
是获取到的交易哈希。Java SDK 收到签名服务返回的签名后 (这里设为txSignature
),需要对齐反序列化为SignatureResult
对象,接口示例如下:
1 | public SignatureResult decodeSign(String txSignature); |
拼接未签名交易与签名
获取到签名后,需将未签名交易与签名拼接起来,产生带有签名的交易:
1 | /** |
发送带有签名的交易
获取带有签名的交易后,可将其发送到链上:
1 | /** |
交易构造整体流程
1 | public class TransactionMaker |