From 1647e8ccd6cfbce51cc89fd490368c0891fbf0e4 Mon Sep 17 00:00:00 2001 From: MoneroOcean Date: Wed, 9 Dec 2020 03:45:40 +0000 Subject: [PATCH] Fixed raven block processing --- index.js | 14 ++++++++------ package.json | 5 +++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/index.js b/index.js index b957b91..27c5442 100644 --- a/index.js +++ b/index.js @@ -5,8 +5,8 @@ const bignum = require('bignum'); const bitcoin = require('bitcoinjs-lib'); const varuint = require('varuint-bitcoin'); const crypto = require('crypto'); -const fastMerkleRoot = require('merkle-lib/fastRoot'); const promise = require('promise'); +const merklebitcoin = promise.denodeify(require('merkle-bitcoin')); function scriptCompile(addrHash) { return bitcoin.script.compile([ @@ -43,10 +43,12 @@ function hash256(buffer) { function getMerkleRoot(transactions) { if (transactions.length === 0) return null; - const forWitness = txesHaveWitnessCommit(transactions); - const hashes = transactions.map(transaction => transaction.getHash(forWitness)); - const rootHash = fastMerkleRoot(hashes, hash256); - return forWitness ? hash256(Buffer.concat([rootHash, transactions[0].ins[0].witness[0]])) : rootHash; + if (transactions.length === 1) return transactions[0]; + let hashes = [ reverseBuffer(transactions[0]).toString('hex') ]; + transactions.split(1).forEach(function (value) { + hashes.push(value.hash); + }); + return reverseBuffer(new Buffer(Object.values(merklebitcoin(hashes))[2].root, 'hex')); } let last_epoch_number; @@ -149,7 +151,7 @@ function update_merkle_root_hash(blob_in, blob_out) { transactions.push(tx); offset += tx.byteLength(); } - reverseBuffer(getMerkleRoot(transactions)).copy(blob_out, 4 + 32); + getMerkleRoot(transactions).copy(blob_out, 4 + 32); }; module.exports.convertRavenBlob = function(blobBuffer) { diff --git a/package.json b/package.json index 0e20f9f..8fd409e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cryptoforknote-util", - "version": "9.0.12", + "version": "9.0.13", "main": "cryptoforknote-util", "author": { "name": "LucasJones", @@ -17,7 +17,8 @@ "bignum": "^0.13.1", "sha3": "*", "varuint-bitcoin": "^1.0.4", - "bitcoinjs-lib": "git+https://github.com/bitcoinjs/bitcoinjs-lib.git#533d6c2e6d0aa4111f7948b1c12003cf6ef83137" + "bitcoinjs-lib": "git+https://github.com/bitcoinjs/bitcoinjs-lib.git#533d6c2e6d0aa4111f7948b1c12003cf6ef83137", + "merkle-bitcoin": "git+https://github.com/CloudMining/merkle-bitcoin.git#ec00ae20ba60d444e150ead03c747695ddaa83a1" }, "keywords": [ "cryptonight",