How to get hex string from transaction in bitcoinj

3

0

I want to use this tool: http://blockchain.info/pushtx to push transaction. I don't understand the input data. It says it is hex string representation. I've read information about that in the raw transaction of the RPC API, but I am working with bitcoinj, it there a way to get this hex string ?

Thank you

EDIT: I want to do that to compose and broadcast a transaction

For now I did this:

final StringBuilder sb = new StringBuilder();
Formatter formatter = new Formatter(sb);
try {
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    transaction.bitcoinSerialize(os);
    byte[] bytes = os.toByteArray();
    for (byte b : bytes) {
        formatter.format("%02x", b);  
    }

    return sb.toString();
}catch (IOException e) {
    return "Couldn't serialize to hex string.";
} finally {
    formatter.close();
}

Baptiste Pernet

Posted 2013-03-18T16:54:44.647

Reputation: 145

To compose and broadcast a transaction, or to re-broadcast a transaction that the network has already seen?Stephen Gornick 2013-03-18T17:35:53.643

To compose and broadcast a transaction.Baptiste Pernet 2013-03-18T18:43:39.357

I am using your code and it works very well, thanksRiccardo Casatta 2014-08-28T09:34:31.053

Answers

3

A shorter version could be:

String hex = DatatypeConverter.printHexBinary(tx.unsafeBitcoinSerialize());

Where the hex converter used is standard at least since Java 7:

http://docs.oracle.com/javase/7/docs/api/javax/xml/bind/DatatypeConverter.html

Alessandro Polverini

Posted 2013-03-18T16:54:44.647

Reputation: 191

If you use unsafeBitcoinSerialize, make a note of the warnings in the API).

Nick ODell 2014-09-12T15:49:34.080

1As for the example, the result is only temporary used to convert it to hex and the discarded, so it's safe to be used this way. Problems arise only if you decide to modify the returned buffer.Alessandro Polverini 2014-09-12T19:33:26.840