import payload from "../dump-blocks-message"; var bitcore = require("@tecracoin/bitcore-lib-tcr-with-lyra2z"); (function () { const addNetworkToBlockClass = function (Class, network, BlockHeader) { return class A extends Class { static get network() { return network; } static get BlockHeader() { return BlockHeader; } }; }; const addNetworkToBlockHeaderClass = function (Class, network) { return class A extends Class { static get network() { return network; } }; }; // var $ = bitcore.util.preconditions; let Block = bitcore.Block; let BlockHeader = bitcore.BlockHeader; // let Transaction = options.Transaction || bitcore.Transaction; // let MerkleBlock = options.MerkleBlock || bitcore.MerkleBlock; // let protocolVersion = options.protocolVersion || options.network.protocolVersion || 90026; BlockHeader = addNetworkToBlockHeaderClass(BlockHeader, bitcore.Networks.testnet); Block = addNetworkToBlockClass(Block, bitcore.Networks.testnet, BlockHeader); const block = Block.fromBuffer(payload); console.log(block); // if (!parser.finished()) { // throw new Error('Data still available after parsing'); // } })(); /** Examples: ---------- Put into block.js to generate dump: BlockMessage.prototype.setPayload = function(payload) { // require("fs').writeFileSync('dump-blocks-message.js',`module.exports="${payload.toString('hex")}";`); // alert(); this.block = this.Block.fromBuffer(payload); }; ---------- Put into block/block.js to test dump: static _fromBufferReader(br) { var info = {}; $.checkState(!br.finished(), 'No block data received'); // console.log(br.read(32).toString('hex')); //hash should be: 571329d575e876437f37e1b3a13f7fa39dd537471a8e01533307a0f8575594fe info.header = this.BlockHeader.fromBufferReader(br, true); // $.checkState(info.header.version === 536875008, 'bug'); // $.checkState(info.header.id === '571329d575e876437f37e1b3a13f7fa39dd537471a8e01533307a0f8575594fe', 'bug'); // $.checkState(info.header.toObject().prevHash === '00000123d1e21254d18cbc19ba7de76b197983286da903d8598a7a4665e96b2e', 'bug'); // $.checkState(info.header.toObject().merkleRoot === '23980c51c990340c7e30684199fd8ca2204d66e9ff7dda574f02efb778184750', 'bug'); // $.checkState(info.header.nonce === 217474, 'bug'); // $.checkState(info.header.time === 1557146433, 'bug'); // $.checkState(info.header.timestamp === 1557146433, 'bug'); // // $.checkState(info.header.bits === 1966367, 'bug'); // $.checkState(info.header.isMTP === true, 'bug'); // $.checkState(info.header.nVersionMTP === 4096, 'bug'); // let count = 0, pos = 0; //should be 199044 // while (!br.finished()) { // // console.log('pos:' ,pos,br.pos); // ++count; // var transactions; // try { // transactions = br.readVarintNum(); // }catch(e){ // // } // if (transactions === 1) { // try { // const t = Transaction().fromBufferReader(br); // console.log(t); // if (t.version === 1) { // alert(); // } // }catch(e){ // // } // } // br.pos = ++pos; // // } var transactions = br.readVarintNum(); // $.checkState(transactions === 1, 'bug'); info.transactions = []; for (var i = 0; i < transactions; i++) { info.transactions.push(Transaction().fromBufferReader(br)); } return info; } */