When I trying to unlock the account with personalUnlockAccount.accountUnlocked() method of PersonalUnlockAccount class of web3j library, it's giving NullPointerException even if I am entering right password.
Please point out the wrong doing, I am committing in the below code.
package com.kaushik.blockchain;
import java.io.IOException;
import java.math.BigInteger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.web3j.protocol.admin.Admin;
import org.web3j.protocol.admin.methods.response.PersonalUnlockAccount;
import org.web3j.protocol.core.DefaultBlockParameterName;
import org.web3j.protocol.core.methods.request.Transaction;
import org.web3j.protocol.core.methods.response.EthGetBalance;
import org.web3j.protocol.core.methods.response.EthGetTransactionCount;
import org.web3j.protocol.core.methods.response.EthGetTransactionReceipt;
import org.web3j.protocol.core.methods.response.EthSendTransaction;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.protocol.http.HttpService;
import org.web3j.utils.Convert;
public class MainTransferApp {
private static final Logger log =
LoggerFactory.getLogger(MainTransferApp.class);
public static void main(String[] args) throws Exception {
new MainTransferApp().run();
}
private void run() throws IOException, InterruptedException {
String from = "0xe8fbbddf73c128e50f824ec6af65cb15c237fe58";
String to = "0x288a49996ae58aa9999389912cba8cf908a0990e";
Admin web3j = Admin.build(new HttpService());
//web3j
log.info("Connected to Ethereum client version: "
+ web3j.web3ClientVersion().send().getWeb3ClientVersion());
PersonalUnlockAccount personalUnlockAccount = web3j.personalUnlockAccount(from, "passPhrase").send();
log.info("Unlocked: "+personalUnlockAccount.accountUnlocked());
if(personalUnlockAccount.accountUnlocked()){
EthGetTransactionCount transactionCount =
web3j.ethGetTransactionCount(from, DefaultBlockParameterName.LATEST).send();
BigInteger value = Convert.toWei("45.0", Convert.Unit.ETHER).toBigInteger();
Transaction transaction = Transaction.createEtherTransaction(from,
transactionCount.getTransactionCount(),
BigInteger.valueOf(10000), BigInteger.valueOf(4500000),
to, value);
EthSendTransaction response = web3j.ethSendTransaction(transaction).send();
if (response.getError() != null) {
log.info("Transaction error: {}", response.getError().getMessage());
}
log.info("Transaction: {}", response.getResult());
EthGetTransactionReceipt receipt =
web3j.ethGetTransactionReceipt(response.getTransactionHash()).send();
if (receipt.getTransactionReceipt().isPresent()) {
TransactionReceipt r = receipt.getTransactionReceipt().get();
log.info("Tx receipt: from={}, to={}, gas={}, cumulativeGas={}", r.getFrom(), r.getTo(), r.getGasUsed().intValue(), r.getCumulativeGasUsed().intValue());
}
Thread.sleep(5000);
EthGetBalance balance = web3j.ethGetBalance(from, DefaultBlockParameterName.LATEST).send();
log.info("Balance: address={}, amount={}", from, balance.getBalance().longValue());
balance = web3j.ethGetBalance(to, DefaultBlockParameterName.LATEST).send();
log.info("Balance: address={}, amount={}", to, balance.getBalance().longValue());
}else{
log.info("Error occurred while unlocking account");
}
}
}
Now this is the error I am getting. Please help me out.
[main] INFO com.kaushik.blockchain.MainTransferApp - Connected to Ethereum client version: Geth/nodeSOL/v1.8.13-stable-225171a4/windows-amd64/go1.10.3
[main] INFO com.kaushik.blockchain.MainTransferApp - Unlocked: null
Exception in thread "main" java.lang.NullPointerException
at com.kaushik.blockchain.MainTransferApp.run(MainTransferApp.java:35)
at com.kaushik.blockchain.MainTransferApp.main(MainTransferApp.java:24)
Please suggest me the other way around. In my project, I want to send from address and password from the UI. Is there any other approach, I can go with, which should be easy from user perspective?
personalapi enabled? – Ismael Aug 29 '18 at 17:46--rpcapi "db,eth,net,web3,personal". – Ismael Aug 29 '18 at 19:25personalis not enabled in RPC you have to explicitely enable it. – Ismael Aug 29 '18 at 19:34geth? – alper Sep 10 '18 at 22:52