web3J常用接口调用示例

  |   0 评论   |   4,190 浏览

目前做以太坊节点交互的话主要还是用到web3.js,使用的人也比较多,当然java也有着相应的类库,就是web3J,但是目前网上的资料比较少,用的人也很少,在这里记录一下常用的接口方法,我这里用到的版本是3.2.0,新版本是否兼容旧版本目前并未尝试。

 1//以太坊节点RPC地址
 2private static final String RPC_URL = "";
 3//使用http服务连接节点构建web3j对象
 4private static final Web3j web3 = Web3j.build(new HttpService(RPC_URL));
 5
 6/**
 7 * 创建钱包
 8 * @param password 生成的keyStore密码
 9 * @param outPath 生成的keyStore文件存放路径
10 */
11public static String createWallet(String password, String outPath) throws Exception {
12    //创建新钱包KeyStore文件
13    String fileName = WalletUtils.generateFullNewWalletFile(password,new File(outPath));
14    //通过KeyStore文件加载钱包
15    Credentials credentials = WalletUtils.loadCredentials(password,"outPath\\"+fileName);
16    //通过钱包获取私钥
17    BigInteger privateKey = credentials.getEcKeyPair().getPrivateKey();
18    return privateKey.toString(16);
19}
20
21/**
22 * 加载钱包对象(Credentials)四种方式
23 * 1.通过私钥
24 * 2.通过密钥对
25 * 3.通过密码+keyStore路径
26 * 4.通过密码+keyStore字符串
27 */
28public static Credentials loadCredentials(String privateKey){
29    return Credentials.create(privateKey);
30}
31public static Credentials loadCredentials(ECKeyPair keyPair){
32    return Credentials.create(keyPair);
33}
34public static Credentials loadCredentials(String password, String keyStoreUrl) throws IOException, CipherException {
35    return WalletUtils.loadCredentials(password, keyStoreUrl);
36}
37public static Credentials loadCredentialsByString(String password, String keyStoreJson) throws IOException, CipherException {
38    WalletFile walletFile = new ObjectMapper().readValue(keyStoreJson, WalletFile.class);
39    return Credentials.create(Wallet.decrypt(password, walletFile));
40}
41
42/**
43 * 查询以太币余额
44 * @Param address 需要查询的钱包地址
45 */
46public static String getETHBalance(String address) throws IOException {
47    BigDecimal banlance = new BigDecimal(web3.ethGetBalance(address, DefaultBlockParameter.valueOf("LATEST")).send().getBalance());
48    return banlance.divide(new BigDecimal("10").pow(18)).toPlainString();
49}
50
51/**
52 * ETH单笔转账
53 * @param address to地址
54 * @param count to数量
55 * @param credentials from钱包对象
56 */
57public static TransactionReceipt transferETH(String address, BigDecimal count, Credentials credentials) throws Exception {
58    return Transfer.sendFunds(web3, credentials, address, count, Convert.Unit.ETHER).send();
59}
60
61/**
62 * 获取当前nonce
63 * @param address 需要查询的钱包地址
64 */
65public static String getNonce(String address) throws IOException {
66    return web3.ethGetTransactionCount(address,DefaultBlockParameterName.LATEST).send().getTransactionCount().toString();
67}

作者:wenbo

评论

发表评论


取消