两个TX的双哈希

我希望对两个 tx 进行双重哈希,以构建默克尔树

这个

const bsv = require("bsv");
var tx1 = '3a459eab5f0cf8394a21e04d2ed3b2beeaa59795912e20b9c680e9db74dfb18c';
var tx2 = 'be38f46f0eccba72416aed715851fd07b881ffb7928b7622847314588e06a6b7';

bsv.crypto.Hash.sha256sha256(Buffer.concat(
    [ tx1, tx2 ].map( v => Buffer.from(v, 'hex') )
)).toString('hex');

正在给我

215f8397a3090a0bc8f4a2e98609a10d55fc7b939fa1ecf9803df20b1ee089a2

但应该是

13a3595f2610c8e4d727130daade66c772fdec4bd2463d773fd0f85c20ced32d

我如何得到正确的结果?

回答

正如所指出的,在继续使用concat()双哈希之前,您需要先将 tx 哈希转换为小端。

由于您正在使用Buffer它可以有效地完成.reverse()

const bsv = require("bsv");
var tx1 = '3a459eab5f0cf8394a21e04d2ed3b2beeaa59795912e20b9c680e9db74dfb18c';
var tx2 = 'be38f46f0eccba72416aed715851fd07b881ffb7928b7622847314588e06a6b7';

bsv.crypto.Hash.sha256sha256(Buffer.concat(
    [ tx1, tx2 ].map( v => Buffer.from(v, 'hex').reverse() )
)).reverse().toString('hex');


以上是两个TX的双哈希的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>