当前位置:   article > 正文

Web3j的使用_org.web3j

org.web3j

Web3j实际上就是一个简单的封装好的JsonRpc的HttpClient。这是java版的,它的同族兄弟最著名的还是web3.js,是js版本的,都是用来访问以太坊节点的。

使用web3j第一步当然是引入依赖:

  1. <dependency>
  2. <groupId>org.web3j</groupId>
  3. <artifactId>core</artifactId>
  4. <version>4.5.5</version>
  5. </dependency>

一个简单例子如下:

  1. package com.alisita.eth;
  2. import java.io.IOException;
  3. import java.math.BigInteger;
  4. import java.security.InvalidAlgorithmParameterException;
  5. import java.security.NoSuchAlgorithmException;
  6. import java.security.NoSuchProviderException;
  7. import java.util.List;
  8. import org.web3j.crypto.CipherException;
  9. import org.web3j.crypto.ECKeyPair;
  10. import org.web3j.crypto.Keys;
  11. import org.web3j.crypto.Wallet;
  12. import org.web3j.crypto.WalletFile;
  13. import org.web3j.protocol.Web3j;
  14. import org.web3j.protocol.admin.Admin;
  15. import org.web3j.protocol.admin.methods.response.NewAccountIdentifier;
  16. import org.web3j.protocol.admin.methods.response.PersonalListAccounts;
  17. import org.web3j.protocol.http.HttpService;
  18. public class EthService {
  19. public static Web3j initWeb3j() {
  20. return Web3j.build(new HttpService());
  21. }
  22. public static Admin initAdmin() {
  23. return Admin.build(new HttpService());
  24. }
  25. /**
  26. * 查询所有的地址
  27. * @return
  28. * @throws IOException
  29. */
  30. public static List<String> listAccounts() throws IOException {
  31. PersonalListAccounts listAccounts = initAdmin().personalListAccounts().send();
  32. return listAccounts.getResult();
  33. }
  34. /**
  35. * 创建新地址
  36. * @param ps
  37. * @return 公钥地址
  38. * @throws IOException
  39. */
  40. public static String newAccount(String ps) throws IOException {
  41. NewAccountIdentifier identifier = initAdmin().personalNewAccount(ps).send();
  42. return identifier.getResult();
  43. }
  44. /**
  45. * 创建新地址
  46. * @param ps
  47. * @return
  48. * @throws IOException
  49. * @throws CipherException
  50. * @throws NoSuchProviderException
  51. * @throws NoSuchAlgorithmException
  52. * @throws InvalidAlgorithmParameterException
  53. */
  54. public static void newAcc() throws IOException, CipherException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchProviderException {
  55. ECKeyPair ecKeyPair = Keys.createEcKeyPair();
  56. BigInteger privateKeyInDec = ecKeyPair.getPrivateKey();
  57. String sPrivatekeyInHex = privateKeyInDec.toString(16);
  58. WalletFile aWallet = Wallet.createLight("", ecKeyPair);
  59. String sAddress = aWallet.getAddress();
  60. System.out.println(sPrivatekeyInHex);
  61. System.out.println(sAddress);
  62. }
  63. }

只是个别使用的示例,这个里面需要注意的地方不少,容我一一道来:

1.Web3j是基本工具对象,Admin继承自web3j,并且多了一些权限较大的方法。

2、Web3j的构造方法里的HttpService拥有一个url的构造,是区块节点的url,如果不填写就代表这localhost:8545,代表着本地区块节点,如果将来你要连接其他节点比如以太坊api什么的,就要换成它们的url

3.newAccount创建新用户方法和在geth命令行里创建的方式是一样的,该方法返回公钥,如果创建好,你会发现在节点keystore文件夹里出现了一个以公钥为结尾的keystore文件。

4.如果你要访问外网的节点api地方,它们可能就根本不给你创建keystore,这时候你就只能使用newAcc方法,只生成秘钥和公钥,不生成文件,这是最简单的,有的时候你可能需要修改下本方法,比如生成助记词什么的。

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号