I don't know if there is an error in the scriptsig generation method of input in P2PSH.

My address is a single signing address with one Private key, I created a transaction that will generate hex string via Bitcoinj.

script = ScriptBuilder.createOutputScript(key.getAddress(params));
Sha256Hash hashForSign = transaction.hashForSignature(i, script, SigHash.ALL, false);
ECDSASignature signature = eckey.sign(hashForSign);
TransactionSignature tranSign = new TransactionSignature(signature, SigHash.ALL, false);
scriptSig = ScriptBuilder.createInputScript(tranSign, eckey);

But it is not the same as the hex string generated by the client RPC, but I don't know where it is wrong.

I will be very grateful if you can help me.

1 Answer 1


ECDSA signatures are not deterministic unless you are using a deterministic signature scheme. Meaning that signing the same data with the same key produce different (valid) signatures.

I don't know if Bitcoinj uses such a scheme so If only the signature bytes in the transaction are different it is probably fine.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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