2

I want to compute the merkle root for transactions in a given template block - bitcoind:getblocktemplate().

I understand the merkle root is a hash of all the transactions in a block from the last up to the coinbase transaction, but this is currently way above my pay grade and the documentation I can find for this process is abstract and sketchy at best.

Has anyone done this in JavaScript or know of a resource that could be helpful?

Thanks in advance.

client.getBlockTemplate( function(error, template) {
    if (error) return console.log(error);

    // SETUP MINING
    nonce=0;
    const block = {
        version: template.version
        ,previousblockhash: template.previousblockhash
        ,merkleroot: calculateMerkleRoot(template)
        ,time: template.mintime
        ,bits: template.bits
    }           

    // START MINER
    miner(block,nonce);
});
2
  • 2
    It's named after Ralph Merkle, not Angela Merkel. Mar 11, 2018 at 3:00
  • Oh HAHAHAHAHAHA, fixed.
    – Corbin
    Mar 11, 2018 at 3:03

1 Answer 1

1

I'm much closer now I hope this helps someone else trying to do this!

REQUIREMENTS:

NPM bitcoin bitcoin-js merkle-lib

CODE:

client.getBlockTemplate( function(error, template) {
    if (error) return console.log(error);
    txhashes = template.transactions.map(function(tx){ return Buffer.from(tx.txid, 'hex').reverse() });
    merkleRoot = fastMerkleRoot(txhashes, bcrypto.hash256);
    console.log(merkleRoot);
)};

The result is in a Buffer and I'm having trouble converting it to hex.

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.