1.3. Java SDK 使用说明
1.3.1. Java SDK
1.3.1.1. 下载
JS SDK 代码可在github上下载: Java SDK,可以查看详细的 文档
同时可以使用 maven:
1<dependency>
2 <groupId>com.baidu.xuper</groupId>
3 <artifactId>xuper-java-sdk</artifactId>
4 <version>0.2.0</version>
5</dependency>
1.3.1.2. 使用
创建客户端,假设你的节点地址为 127.0.0.1:37101:
1XuperClient client = new XuperClient("127.0.0.1:37101");
向链上发交易前需要创建自己的账户,创建账户后余额为0,你可以使用 xchain-cli 程序向此地址转账:
1Account account = Account.create(1, 2);
2System.out.println(account.getAddress());
3System.out.println(account.getMnemonic());
当账户有余额后,你可以进行部署合约、调用合约,在这之前你需要先创建合约账户:
1// 创建合约账户
2client.createContractAccount(account, "1111111111111111");
3
4// 转账给合约账户
5client.transfer(account, "XC1111111111111111@xuper", BigInteger.valueOf(1000000), "1");
6
7// 查询余额
8BigInteger result = client.getBalance("XC1111111111111111@xuper");
创建合约账户之后,可以部署合约,本次以部署 wasm 合约为例:
1// 设置合约账户
2account.setContractAccount("XC1111111111111111@xuper");
3
4// 构造合约初始化参数
5Map<String, byte[]> args = new HashMap<>();
6args.put("creator", "icexin".getBytes());
7
8// wasm 合约编译的文件
9String codePath = "./counter.wasm";
10byte[] code = Files.readAllBytes(Paths.get(codePath));
11
12// C++ 编写的合约,runtime 参数使用 "c",合约名字为 counter
13client.deployWasmContract(account, code, "counter", "c", args);
部署合约后可以调用合约方法:
1Map<String, byte[]> args = new HashMap<>();
2args.put("key", "icexin".getBytes());
3Transaction tx = client.invokeContract(account, "wasm", "counter", "increase", args);
4System.out.println("txid: " + tx.getTxid());
5System.out.println("response: " + tx.getContractResponse().getBodyStr());
6System.out.println("gas: " + tx.getGasUsed());
Java 合约还支持 evm 合约以及其他查询接口请参考 Java SDK 接口