两个 TX 的双哈希
Double hash of two TX
我希望对两笔交易进行双重哈希处理,以便构建 merkle tree
这个
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
如何获得正确的结果?
作为pointed out,您需要先将交易哈希值转换为小端字节序,然后再使用concat()
和双哈希值。
由于您使用的是 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');
我希望对两笔交易进行双重哈希处理,以便构建 merkle tree
这个
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
如何获得正确的结果?
作为pointed out,您需要先将交易哈希值转换为小端字节序,然后再使用concat()
和双哈希值。
由于您使用的是 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');