I'd like to generate and sign a transaction offline and then send that transaction with a different account. I've found a few web3js sources and I've read the web3 documentation, but I haven't found any clear solutions for doing this in Java with web3j. Thanks for the help.

  • what do you mean by "different account"? If you sign the transaction offline by one account, that's the account that will send the transaction, not another account – flygoing Apr 5 '19 at 19:10
  • I want to create a signed raw transaction that can be broadcast by a third-party (someone other than the user who created the transaction). I misspoke when I said "different account." – Benjaminius Apr 5 '19 at 20:34

I think something like this should work

// Create the Transaction
RawTransaction rawTransaction = RawTransaction.createEtherTransaction(<nonce>, <gasPrice>, 
       <gasLimit>, <to>, <value>);  

// Sign the Transaction
byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, <your-Credentials>);

String hexValue = Numeric.toHexString(signedMessage);

and then give the hexValue to the third-party to broadcast it to the network


You probably need to dig around SignedRawTransaction and TransactionEncoder classes.

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.