0

I am trying out private transaction using Quorum. Two quorum nodes N1 and N2 configured to participate in the private transaction.

I deployed a contract which is private for N1 and N2.

I issue transaction (invoke contract method) using A1 account (address) and use public key of N2 node. Note that account A1 is not present on either of the nodes N1/N2.

I connect to Node N1 to issue the transaction.

I receive following error when the transaction is sent to the N1 node.

Error processing transaction request: account is locked

I do not get such an error in following scenario:

  1. Deploy public contract

  2. Issue transaction (invoke contract method) using A1 account (address) by connecting to node N1

Im using web3j-quorum API to connect to the quorum nodes.

Please help to have the issue resolved.

Thanks in advance.

Regards, S

  • you may need to unlock an account first with web3.personal.unlockAccount(account,password) – Achala Dissanayake Oct 9 '17 at 17:42
  • Tried unlocking the account. Didn't help :( – dives Oct 10 '17 at 5:56
  • any error message displayed? – Achala Dissanayake Oct 10 '17 at 7:10
  • No error in geth log. Following is stack trace received in DApp java.util.concurrent.ExecutionException: java.lang.RuntimeException: Error processing transaction request: account is locked ... at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895) ... Caused by: java.lang.RuntimeException: Error processing transaction request: account is locked at org.web3j.tx.TransactionManager.processResponse(TransactionManager.java:61) at org.web3j.tx.TransactionManager.executeTransaction – dives Oct 10 '17 at 7:58
  • Just observed following: If i copy A1 account file on the node N1, Transaction could complete successfully. I did not understand why this happened. Since, this is not needed if I perform public transaction. Please help me to understand this behavior. – dives Oct 17 '17 at 9:27
0

As the doc says:

Note that if Party A does not receive a response/receives a Nack from Party B then the Transaction will not be propagated to the network. It is a prerequisite for the recipients to store the communicated payload

https://github.com/jpmorganchase/quorum/wiki/Transaction-Processing

I think one node that knows about account A needs to store the private state

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.