diff --git a/lib/bcoin/block.js b/lib/bcoin/block.js index 72bbb17a..88886375 100644 --- a/lib/bcoin/block.js +++ b/lib/bcoin/block.js @@ -204,14 +204,13 @@ Block.prototype._verifyPartial = function _verifyPartial() { }; Block.prototype.getMerkleRoot = function getMerkleRoot() { - var merkleTree = []; + var tree = []; var i, j, size, i2, hash; assert(this.subtype === 'block'); - for (i = 0; i < this.txs.length; i++) { - merkleTree.push(this.txs[i].hash('hex')); - } + for (i = 0; i < this.txs.length; i++) + tree.push(this.txs[i].hash()); j = 0; size = this.txs.length; @@ -220,19 +219,20 @@ Block.prototype.getMerkleRoot = function getMerkleRoot() { for (i = 0; i < size; i += 2) { i2 = Math.min(i + 1, size - 1); if (i2 === i + 1 && i2 + 1 === size - && merkleTree[j + i] === merkleTree[j + i2]) { + && tree[j + i] === tree[j + i2]) { return utils.toHex(constants.zeroHash); } - hash = utils.dsha256(merkleTree[j + i] + merkleTree[j + i2], 'hex'); - merkleTree.push(utils.toHex(hash)); + hash = Buffer.concat([tree[j + i], tree[j + i2]]); + hash = utils.dsha256(hash); + tree.push(hash); } j += size; } - if (!merkleTree.length) + if (!tree.length) return utils.toHex(constants.zeroHash); - return merkleTree[merkleTree.length - 1]; + return utils.toHex(tree[tree.length - 1]); }; Block.prototype._verify = function _verify() {