How To Calculate Merkle Root? I found this example:



Current merkle hash list:
  32650049a0418e4380db0af81788635d8b65424d397170b8499cdc28c4d27006
  30861db96905c8dc8b99398ca1cd5bd5b84ac3264a4e1b3e65afa1bcee7540c4

Current merkle hash list:
  d47780c084bad3830bcdaf6eace035e4c6cbf646d103795d22104fb105014ba3



I have tried to calculate the hash using PHP:

$tx1="32650049a0418e4380db0af81788635d8b65424d397170b8499cdc28c4d27006";
$tx2="30861db96905c8dc8b99398ca1cd5bd5b84ac3264a4e1b3e65afa1bcee7540c4";
$v=hash('sha256', hash('sha256',$tx1.$tx2) );


But I got:
2b5f377b4adab64f489a2f73605ffb448b8add5b708d218729f9dfc58f1f5fe2

What is wrong?
This is the correct way to double hash two tx's.
First you need to convert them into little endian, and then convert into raw binary data before hashing.
&lt;?php

function le_raw ($str) {
    return pack(&quot;H*&quot;, join(&quot;&quot;, array_reverse(str_split($str, 2))) );
    // return map { pack &quot;H*&quot;, join &quot;&quot;, reverse /(..)/g } @_;
}
function be_hex ($raw) {
    return join(&quot;&quot;, array_reverse(str_split( unpack(&quot;H*&quot;, $raw)[1], 2)));
    // return map { join &quot;&quot;, reverse unpack(&quot;H*&quot;, $_) =~ /(..)/g } @_;
}

$tx1 = le_raw(&quot;32650049a0418e4380db0af81788635d8b65424d397170b8499cdc28c4d27006&quot;);
$tx2 = le_raw(&quot;30861db96905c8dc8b99398ca1cd5bd5b84ac3264a4e1b3e65afa1bcee7540c4&quot;);
$v = hash('sha256', hash('sha256', $tx1.$tx2, true), true );

echo be_hex($v), &quot;\n&quot;;

output
d47780c084bad3830bcdaf6eace035e4c6cbf646d103795d22104fb105014ba3