1:启动节点
geth --identity "xiaohong" --rpc --rpccorsdomain "*" --rpcaddr "192.168.1.105" --datadir "./" --port "30303" --nodiscover --rpcapi "personal,db,eth,net,web3,miner" --networkid 1999 console 2>>geth.log
2:通过maven引入jar包
<dependency> <groupId>org.web3j</groupId> <artifactId>core</artifactId> <version>3.3.1</version> </dependency>
3:创建web3j 、admin实例
//import org.web3j.protocol.Web3j; import org.web3j.protocol.Web3j; import org.web3j.protocol.admin.Admin; import org.web3j.protocol.admin.methods.response.PersonalListAccounts; import org.web3j.protocol.http.HttpService; import org.web3j.protocol.rx.Web3jRx; public class Web3JClient { private static String ip = "http://192.168.1.105:8545"; private Web3JClient(){} private volatile static Web3j web3j; private volatile static Admin admin; public static Web3j getClient(){ if(web3j==null){ synchronized (Web3JClient.class){ if(web3j==null){ web3j = Web3j.build(new HttpService(ip)); } } } return web3j; } public static Admin getAdmin(){ if(admin==null){ synchronized (Web3JClient.class){ if(admin==null){ admin = Admin.build(new HttpService(ip)); } } } return admin; } }
4:使用web3j、admin相关方法
import org.web3j.protocol.Web3j; import org.web3j.protocol.admin.Admin; import org.web3j.protocol.admin.methods.response.NewAccountIdentifier; import org.web3j.protocol.core.DefaultBlockParameter; import org.web3j.protocol.core.DefaultBlockParameterNumber; import org.web3j.protocol.core.methods.response.EthGetBalance; import java.math.BigInteger; import java.util.HashMap; import java.util.List; import java.util.Map; public class Account { private static Web3j web3j = Web3JClient.getClient(); private static Admin admin = Web3JClient.getAdmin(); public List<String> getAccountlist(){ try{ return admin.personalListAccounts().send().getAccountIds(); }catch (Exception e){ e.printStackTrace(); } return null; } public String createAccount(String password){ try { NewAccountIdentifier newAccountIdentifier = admin.personalNewAccount(password).send(); if(newAccountIdentifier!=null){ String accountId = newAccountIdentifier.getAccountId(); // admin.personalSetAccountName(accountId,accountName); // admin. // // Map<String,Object> account = new HashMap<String,Object>(); // account.put(accountId,accountInfo); // parity.personalSetAccountMeta(accountId,account);account return accountId; } } catch (Exception e) { e.printStackTrace(); } return null; } // public PersonalAccountsInfo.AccountsInfo getAccountInfo(String accountId){ // // try{ // PersonalAccountsInfo personalAccountsInfo = parity.personalAccountsInfo().send(); // // return personalAccountsInfo.getAccountsInfo().get(accountId); // }catch (Exception e){ // e.printStackTrace(); // } // return null; // } public BigInteger getBalance(String accountId){ try { DefaultBlockParameter defaultBlockParameter = new DefaultBlockParameterNumber(web3j.ethBlockNumber().send().getBlockNumber()); EthGetBalance ethGetBalance = web3j.ethGetBalance(accountId,defaultBlockParameter).send(); if(ethGetBalance!=null){ return ethGetBalance.getBalance(); } }catch (Exception e){ e.printStackTrace(); } return null; } }
5:在main里面测试
import org.web3j.protocol.Web3j; import org.web3j.protocol.http.HttpService; import java.io.IOException; import java.math.BigInteger; import java.util.List; public class TestWeb3j { public static void main(String args[]) { // getBalance(); // createAccount(); // queryAccount(); getBalance(); } public static void getBalance(){ Account account = new Account(); String accoundId = account.getAccountlist().get(0); System.out.println(accoundId); BigInteger ba = account.getBalance(accoundId); System.out.print(ba); } public static void queryAccount(){ Account account = new Account(); List<String> accounts = account.getAccountlist(); for(String accountId:accounts){ System.out.println(accountId); } } public static void createAccount(){ Account account = new Account(); String accountId = account.createAccount("123456"); System.out.println("注册账户成功:"+accountId); // PersonalAccountsInfo.AccountsInfo accountsInfo = account.getAccountInfo("0xad7bbca86e02e503076b06931e05938e51e49fb9"); // System.out.println(accountsInfo.toString()); } }
6:注意web3j需要在java 8的环境才能运行
7:源码可以通过https://download.csdn.net/download/wahaha13168/10544553下载