交易类型
交易体的封装
SDK对于发送的交易需要进行封装,不同虚拟机的交易类型不同,同时SDK也需要将传进来的交易参数进行编码
SDK
使用构造器模式来创建相应虚拟机的Builder
来完成对Transaction
的创建,通过调用build()
函数来获取到Transaction
实例
class Builder {
Builder deploy();
Builder invoke();
Transaction build();
}
Transaction tx = new Transaction.Builder().build();
下面将详细展开具体Transaction
构造
HVM合约交易封装
HVM
合约交易的构造器继承自Transaction.Builder
,HVMBuilder
可以构造HVM
虚拟机的部署合约和调用合约两种交易
创建构造器
方法原型
public HVMBuilder(String from)
参数说明
参数名 | 参数描述 | |
---|---|---|
from | string | 调用者账户地址 |
使用示例
String accountAddress = "856E2B9A5FA82FD1B031D1FF6863864DBAC7995D";
HVMBuilder builder = new Transaction.HVMBuilder(accountAddress);
获取部署交易
方法原型
public Builder deploy(String jarPath)
参数说明
参数名 | 参数描述 | |
---|---|---|
jarPath | string | 合约jar包文件路径 |
使用示例
String accountAddress = "856E2B9A5FA82FD1B031D1FF6863864DBAC7995D";
String jarPath = "/usr/tmp/hvm-contract.jar";
Transaction tx = new Transaction.HVMBuilder(accountAddress).deploy(jarPath).build();
说明:合约jar包路径若为相对路径,则相对于当前SDK执行环境的classpath路径
获取调用交易
方法原型
public Builder invoke(String contractAddress, BaseInvoke baseInvoke)
参数说明
参数名 | 参数描述 | |
---|---|---|
contractAddress | string | 调用合约地址 |
baseInvoke | BaseInvoke | HVM合约的调用Bean实例 |
使用示例
String accountAddress = "856E2B9A5FA82FD1B031D1FF6863864DBAC7995D";
String contractAddr = "ec425efb6bd536b9874038a012e753022e75302a";
BaseInvoke baseInvoke = new StudentInvoke();
Transaction tx = new Transaction.HVMBuilder(accountAddress).invoke(contractAddr, baseInvoke).build();
说明:BaseInvoke的实现类必须包含空参构造函数