1
I am trying to extract the signatures from a transaction. What is the best way to do this given a com.google.bitcoin.core.Transaction object I just received from the network?
1
I am trying to extract the signatures from a transaction. What is the best way to do this given a com.google.bitcoin.core.Transaction object I just received from the network?
1
This works for P2PK, and P2PKH, but multisig will not work.
int index = (the index you want);
List<TransactionInput> inputs = Transaction.getInputs()
TransactionInput input = inputs.get(index);
Script scriptSig = input.getScriptSig();
List<ScriptChunk> signature_and_pubkey = scriptSig.getChunks();
ScriptChunk sig_chunk = signature_and_pubkey.get(0);
bytes[] sig_bytes = sig_chunk.data;
If you want a TransactionSignature object instead of raw bytes:
TransactionSignature ts = TransactionSignature.decodeFromBitcoin(sig_bytes, false)
how can I get a
TransactionSignatureobject from this? I triedcom.google.bitcoin.crypto.TransactionSignature.decodeFromBitcoin(sig_chunk.data, false)but sometimes it gives an error. – Jus12 – 2015-02-23T18:16:58.227@Jus12 RuntimeError or VerificationError? – Nick ODell – 2015-02-23T18:20:52.080
Here is the error I got (happens in few cases only):
java.lang.RuntimeException: java.io.IOException: DER length more than 4 bytes: 112 at com.google.bitcoin.core.ECKey$ECDSASignature.decodeFromDER(ECKey.java:358)– Jus12 – 2015-02-23T18:23:25.300