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.3.0</version>
  5. </dependency>

1.3.1.2. 使用

创建客户端,假设你的节点地址为 127.0.0.1:37101:

  1. XuperClient client = new XuperClient(“127.0.0.1:37101”);

向链上发交易前需要创建自己的账户,创建账户后余额为0,你可以使用 xchain-cli 程序向此地址转账:

  1. Account account = Account.create(1, 2);
  2. System.out.println(account.getAddress());
  3. System.out.println(account.getMnemonic());

当账户有余额后,你可以进行部署合约、调用合约,在这之前你需要先创建合约账户:

  1. // 创建合约账户
  2. client.createContractAccount(account, 1111111111111111”);
  3. // 转账给合约账户
  4. client.transfer(account, XC1111111111111111@xuper”, BigInteger.valueOf(1000000), 1”);
  5. // 查询余额
  6. BigInteger result = client.getBalance(“XC1111111111111111@xuper”);

创建合约账户之后,可以部署合约,本次以部署 wasm 合约为例:

  1. // 设置合约账户
  2. account.setContractAccount(“XC1111111111111111@xuper”);
  3. // 构造合约初始化参数
  4. Map<String, byte[]> args = new HashMap<>();
  5. args.put(“creator”, icexin”.getBytes());
  6. // wasm 合约编译的文件
  7. String codePath = “./counter.wasm”;
  8. byte[] code = Files.readAllBytes(Paths.get(codePath));
  9. // C++ 编写的合约,runtime 参数使用 “c”,合约名字为 counter
  10. client.deployWasmContract(account, code, counter”, c”, args);

部署合约后可以调用合约方法:

  1. Map<String, byte[]> args = new HashMap<>();
  2. args.put(“key”, icexin”.getBytes());
  3. Transaction tx = client.invokeContract(account, wasm”, counter”, increase”, args);
  4. System.out.println(“txid: + tx.getTxid());
  5. System.out.println(“response: + tx.getContractResponse().getBodyStr());
  6. System.out.println(“gas: + tx.getGasUsed());

Java 合约还支持 evm 合约以及其他查询接口请参考 Java SDK 接口