refactor parsing.
This commit is contained in:
parent
f6b42ae5f3
commit
90790ac675
@ -53,13 +53,11 @@ function AbstractBlock(data) {
|
|||||||
this.totalTX = data.totalTX || 0;
|
this.totalTX = data.totalTX || 0;
|
||||||
this.height = data.height != null ? data.height : -1;
|
this.height = data.height != null ? data.height : -1;
|
||||||
|
|
||||||
this._raw = data._raw || null;
|
|
||||||
this._size = data._size || 0;
|
|
||||||
|
|
||||||
this.valid = null;
|
|
||||||
this._hash = null;
|
|
||||||
|
|
||||||
this.txs = null;
|
this.txs = null;
|
||||||
|
this.valid = null;
|
||||||
|
|
||||||
|
this._hash = null;
|
||||||
|
this._size = data._size || 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -81,9 +79,6 @@ AbstractBlock.prototype.hash = function hash(enc) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
AbstractBlock.prototype.abbr = function abbr() {
|
AbstractBlock.prototype.abbr = function abbr() {
|
||||||
if (this._raw)
|
|
||||||
return this._raw.slice(0, 80);
|
|
||||||
|
|
||||||
return bcoin.protocol.framer.blockHeaders(this);
|
return bcoin.protocol.framer.blockHeaders(this);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -1429,15 +1429,15 @@ ChainDB.prototype.getUndoCoins = function getUndoCoins(hash, callback) {
|
|||||||
coins = [];
|
coins = [];
|
||||||
p = new BufferReader(data);
|
p = new BufferReader(data);
|
||||||
|
|
||||||
p.start();
|
try {
|
||||||
|
while (p.left()) {
|
||||||
while (p.left()) {
|
coin = Parser.parseCoin(p, false);
|
||||||
coin = new bcoin.coin(Parser.parseCoin(p, false));
|
coins.push(new bcoin.coin(coin));
|
||||||
coins.push(coin);
|
}
|
||||||
|
} catch (e) {
|
||||||
|
return callback(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
p.end();
|
|
||||||
|
|
||||||
return callback(null, coins);
|
return callback(null, coins);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@ -41,10 +41,11 @@ var assert = utils.assert;
|
|||||||
* @property {Number} nonce
|
* @property {Number} nonce
|
||||||
* @property {Number} totalTX - Transaction count.
|
* @property {Number} totalTX - Transaction count.
|
||||||
* @property {Number} height - Block height (-1 if not present).
|
* @property {Number} height - Block height (-1 if not present).
|
||||||
|
* @property {Boolean} compact - Always true.
|
||||||
* @property {Number} coinbaseHeight - The coinbase height which
|
* @property {Number} coinbaseHeight - The coinbase height which
|
||||||
* was extracted by the parser (the coinbase is the only
|
* was extracted by the parser (the coinbase is the only
|
||||||
* transaction we parse ahead of time).
|
* transaction we parse ahead of time).
|
||||||
* @property {Buffer} _raw - The raw block data.
|
* @property {Buffer} raw - The raw block data.
|
||||||
* @property {ReversedHash} rhash - Reversed block hash (uint256le).
|
* @property {ReversedHash} rhash - Reversed block hash (uint256le).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -56,10 +57,20 @@ function CompactBlock(data) {
|
|||||||
|
|
||||||
this.compact = true;
|
this.compact = true;
|
||||||
this.coinbaseHeight = data.coinbaseHeight;
|
this.coinbaseHeight = data.coinbaseHeight;
|
||||||
|
this.raw = data.raw;
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.inherits(CompactBlock, bcoin.abstractblock);
|
utils.inherits(CompactBlock, bcoin.abstractblock);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the full block size.
|
||||||
|
* @returns {Number}
|
||||||
|
*/
|
||||||
|
|
||||||
|
CompactBlock.prototype.getSize = function getSize() {
|
||||||
|
return this.raw.length;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verify the block headers.
|
* Verify the block headers.
|
||||||
* @alias verify
|
* @alias verify
|
||||||
@ -89,8 +100,9 @@ CompactBlock.prototype.getCoinbaseHeight = function getCoinbaseHeight() {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
CompactBlock.prototype.toBlock = function toBlock() {
|
CompactBlock.prototype.toBlock = function toBlock() {
|
||||||
var data = bcoin.protocol.parser.parseBlock(this._raw);
|
var data = bcoin.protocol.parser.parseBlock(this.raw);
|
||||||
delete this._raw;
|
delete this.raw;
|
||||||
|
assert(!data.raw);
|
||||||
assert(!data._raw);
|
assert(!data._raw);
|
||||||
return new bcoin.block(data);
|
return new bcoin.block(data);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -378,10 +378,8 @@ Input.parseExtended = function parseExtended(data, enc) {
|
|||||||
data = new Buffer(data, 'hex');
|
data = new Buffer(data, 'hex');
|
||||||
|
|
||||||
p = new BufferReader(data);
|
p = new BufferReader(data);
|
||||||
p.start();
|
|
||||||
input = bcoin.protocol.parser.parseInput(p);
|
input = bcoin.protocol.parser.parseInput(p);
|
||||||
input.witness = bcoin.protocol.parser.parseWitness(p);
|
input.witness = bcoin.protocol.parser.parseWitness(p);
|
||||||
p.end();
|
|
||||||
|
|
||||||
return input;
|
return input;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -933,8 +933,6 @@ Mempool.prototype.getWaiting = function getWaiting(hash, callback) {
|
|||||||
|
|
||||||
p = new BufferReader(buf);
|
p = new BufferReader(buf);
|
||||||
|
|
||||||
p.start();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
while (p.left())
|
while (p.left())
|
||||||
hashes.push(p.readHash('hex'));
|
hashes.push(p.readHash('hex'));
|
||||||
@ -942,8 +940,6 @@ Mempool.prototype.getWaiting = function getWaiting(hash, callback) {
|
|||||||
return callback(e);
|
return callback(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
p.end();
|
|
||||||
|
|
||||||
return callback(null, hashes, buf);
|
return callback(null, hashes, buf);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@ -167,11 +167,9 @@ Parser.parseMempool = function parseMempool(p) {
|
|||||||
Parser.parseSubmitOrder = function parseSubmitOrder(p) {
|
Parser.parseSubmitOrder = function parseSubmitOrder(p) {
|
||||||
var hash, tx;
|
var hash, tx;
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
return {
|
return {
|
||||||
hash: p.readHash('hex'),
|
hash: p.readHash('hex'),
|
||||||
tx: Parser.parseTX(p),
|
tx: Parser.parseTX(p)
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -194,12 +192,10 @@ Parser.parseCheckOrder = function parseCheckOrder(p) {
|
|||||||
Parser.parseReply = function parseReply(p) {
|
Parser.parseReply = function parseReply(p) {
|
||||||
var hash, code, publicKey;
|
var hash, code, publicKey;
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
return {
|
return {
|
||||||
hash: p.readHash('hex'),
|
hash: p.readHash('hex'),
|
||||||
code: p.readU32(),
|
code: p.readU32(),
|
||||||
publicKey: p.readVarBytes(),
|
publicKey: p.readVarBytes()
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -243,7 +239,6 @@ Parser.parseFilterLoad = function parseFilterLoad(p) {
|
|||||||
var filter, n, tweak, update;
|
var filter, n, tweak, update;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
filter = p.readVarBytes();
|
filter = p.readVarBytes();
|
||||||
n = p.readU32();
|
n = p.readU32();
|
||||||
@ -256,8 +251,7 @@ Parser.parseFilterLoad = function parseFilterLoad(p) {
|
|||||||
filter: filter,
|
filter: filter,
|
||||||
n: n,
|
n: n,
|
||||||
tweak: tweak,
|
tweak: tweak,
|
||||||
update: update,
|
update: update
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -269,10 +263,8 @@ Parser.parseFilterLoad = function parseFilterLoad(p) {
|
|||||||
|
|
||||||
Parser.parseFilterAdd = function parseFilterAdd(p) {
|
Parser.parseFilterAdd = function parseFilterAdd(p) {
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
return {
|
return {
|
||||||
data: p.readVarBytes(),
|
data: p.readVarBytes()
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -367,7 +359,6 @@ Parser.parseGetUTXOs = function parseGetUTXOs(p) {
|
|||||||
var mempool, prevout, count, i;
|
var mempool, prevout, count, i;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
mempool = p.readU8() === 1;
|
mempool = p.readU8() === 1;
|
||||||
prevout = [];
|
prevout = [];
|
||||||
@ -382,8 +373,7 @@ Parser.parseGetUTXOs = function parseGetUTXOs(p) {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
mempool: mempool,
|
mempool: mempool,
|
||||||
prevout: prevout,
|
prevout: prevout
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -398,7 +388,6 @@ Parser.parseUTXOs = function parseUTXOs(p) {
|
|||||||
var coin, version, height, i, hits, ch, j;
|
var coin, version, height, i, hits, ch, j;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
chainHeight = p.readU32();
|
chainHeight = p.readU32();
|
||||||
tip = p.readHash('hex');
|
tip = p.readHash('hex');
|
||||||
@ -430,8 +419,7 @@ Parser.parseUTXOs = function parseUTXOs(p) {
|
|||||||
tip: tip,
|
tip: tip,
|
||||||
map: map,
|
map: map,
|
||||||
coins: coins,
|
coins: coins,
|
||||||
hits: hits,
|
hits: hits
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -443,11 +431,9 @@ Parser.parseUTXOs = function parseUTXOs(p) {
|
|||||||
|
|
||||||
Parser.parsePing = function parsePing(p) {
|
Parser.parsePing = function parsePing(p) {
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
nonce: p.readU64(),
|
nonce: p.readU64()
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -459,11 +445,9 @@ Parser.parsePing = function parsePing(p) {
|
|||||||
|
|
||||||
Parser.parsePong = function parsePong(p) {
|
Parser.parsePong = function parsePong(p) {
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
nonce: p.readU64(),
|
nonce: p.readU64()
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -477,7 +461,6 @@ Parser.parseVersion = function parseVersion(p) {
|
|||||||
var version, services, ts, recv, from, nonce, agent, height, relay;
|
var version, services, ts, recv, from, nonce, agent, height, relay;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
version = p.read32();
|
version = p.read32();
|
||||||
services = p.readU53();
|
services = p.readU53();
|
||||||
@ -510,8 +493,7 @@ Parser.parseVersion = function parseVersion(p) {
|
|||||||
nonce: nonce,
|
nonce: nonce,
|
||||||
agent: agent,
|
agent: agent,
|
||||||
height: height,
|
height: height,
|
||||||
relay: relay,
|
relay: relay
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -549,7 +531,6 @@ Parser._parseGetBlocks = function _parseGetBlocks(p) {
|
|||||||
var version, count, locator, i, stop;
|
var version, count, locator, i, stop;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
version = p.readU32();
|
version = p.readU32();
|
||||||
count = p.readVarint();
|
count = p.readVarint();
|
||||||
@ -566,8 +547,7 @@ Parser._parseGetBlocks = function _parseGetBlocks(p) {
|
|||||||
return {
|
return {
|
||||||
version: version,
|
version: version,
|
||||||
locator: locator,
|
locator: locator,
|
||||||
stop: stop,
|
stop: stop
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -607,7 +587,6 @@ Parser.parseInv = function parseInv(p) {
|
|||||||
var i, count;
|
var i, count;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
count = p.readVarint();
|
count = p.readVarint();
|
||||||
|
|
||||||
@ -620,8 +599,6 @@ Parser.parseInv = function parseInv(p) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
items._size = p.end();
|
|
||||||
|
|
||||||
return items;
|
return items;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -636,7 +613,6 @@ Parser.parseMerkleBlock = function parseMerkleBlock(p) {
|
|||||||
var i, hashCount, hashes, flags;
|
var i, hashCount, hashes, flags;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
version = p.readU32();
|
version = p.readU32();
|
||||||
prevBlock = p.readHash('hex');
|
prevBlock = p.readHash('hex');
|
||||||
@ -664,8 +640,7 @@ Parser.parseMerkleBlock = function parseMerkleBlock(p) {
|
|||||||
nonce: nonce,
|
nonce: nonce,
|
||||||
totalTX: totalTX,
|
totalTX: totalTX,
|
||||||
hashes: hashes,
|
hashes: hashes,
|
||||||
flags: flags,
|
flags: flags
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -680,7 +655,6 @@ Parser.parseHeaders = function parseHeaders(p) {
|
|||||||
var i, count;
|
var i, count;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
count = p.readVarint();
|
count = p.readVarint();
|
||||||
|
|
||||||
@ -696,8 +670,6 @@ Parser.parseHeaders = function parseHeaders(p) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
headers._size = p.end();
|
|
||||||
|
|
||||||
return headers;
|
return headers;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -709,7 +681,6 @@ Parser.parseHeaders = function parseHeaders(p) {
|
|||||||
|
|
||||||
Parser.parseBlockHeaders = function parseBlockHeaders(p) {
|
Parser.parseBlockHeaders = function parseBlockHeaders(p) {
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
version: p.readU32(), // Technically signed
|
version: p.readU32(), // Technically signed
|
||||||
@ -717,8 +688,7 @@ Parser.parseBlockHeaders = function parseBlockHeaders(p) {
|
|||||||
merkleRoot: p.readHash('hex'),
|
merkleRoot: p.readHash('hex'),
|
||||||
ts: p.readU32(),
|
ts: p.readU32(),
|
||||||
bits: p.readU32(),
|
bits: p.readU32(),
|
||||||
nonce: p.readU32(),
|
nonce: p.readU32()
|
||||||
_size: p.end()
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -734,7 +704,6 @@ Parser.parseBlock = function parseBlock(p) {
|
|||||||
var i, totalTX, tx;
|
var i, totalTX, tx;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
version = p.readU32(); // Technically signed
|
version = p.readU32(); // Technically signed
|
||||||
prevBlock = p.readHash('hex');
|
prevBlock = p.readHash('hex');
|
||||||
@ -749,8 +718,6 @@ Parser.parseBlock = function parseBlock(p) {
|
|||||||
txs.push(tx);
|
txs.push(tx);
|
||||||
}
|
}
|
||||||
|
|
||||||
p.end();
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
version: version,
|
version: version,
|
||||||
prevBlock: prevBlock,
|
prevBlock: prevBlock,
|
||||||
@ -769,12 +736,11 @@ Parser.parseBlock = function parseBlock(p) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
Parser.parseBlockCompact = function parseBlockCompact(p) {
|
Parser.parseBlockCompact = function parseBlockCompact(p) {
|
||||||
var version, prevBlock, merkleRoot, ts, bits, nonce;
|
var version, prevBlock, merkleRoot;
|
||||||
var totalTX, height;
|
var ts, bits, nonce, totalTX, height;
|
||||||
var inCount, input, raw;
|
var inCount, input;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
version = p.readU32(); // Technically signed
|
version = p.readU32(); // Technically signed
|
||||||
prevBlock = p.readHash('hex');
|
prevBlock = p.readHash('hex');
|
||||||
@ -804,10 +770,6 @@ Parser.parseBlockCompact = function parseBlockCompact(p) {
|
|||||||
else
|
else
|
||||||
height = -1;
|
height = -1;
|
||||||
|
|
||||||
raw = p.data;
|
|
||||||
|
|
||||||
p.end();
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
version: version,
|
version: version,
|
||||||
prevBlock: prevBlock,
|
prevBlock: prevBlock,
|
||||||
@ -818,8 +780,7 @@ Parser.parseBlockCompact = function parseBlockCompact(p) {
|
|||||||
totalTX: totalTX,
|
totalTX: totalTX,
|
||||||
coinbaseHeight: height,
|
coinbaseHeight: height,
|
||||||
txs: [],
|
txs: [],
|
||||||
_raw: raw,
|
raw: p.data
|
||||||
_size: raw.length
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -833,7 +794,6 @@ Parser.parseInput = function parseInput(p) {
|
|||||||
var hash, index, script, sequence;
|
var hash, index, script, sequence;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
hash = p.readHash('hex');
|
hash = p.readHash('hex');
|
||||||
index = p.readU32();
|
index = p.readU32();
|
||||||
@ -847,8 +807,7 @@ Parser.parseInput = function parseInput(p) {
|
|||||||
},
|
},
|
||||||
coin: null,
|
coin: null,
|
||||||
script: script,
|
script: script,
|
||||||
sequence: sequence,
|
sequence: sequence
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -862,15 +821,13 @@ Parser.parseOutput = function parseOutput(p) {
|
|||||||
var value, script;
|
var value, script;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
value = p.read64();
|
value = p.read64();
|
||||||
script = Parser.parseScript(p);
|
script = Parser.parseScript(p);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
value: value,
|
value: value,
|
||||||
script: script,
|
script: script
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -885,7 +842,6 @@ Parser.parseCoin = function parseCoin(p, extended) {
|
|||||||
var version, height, value, script, hash, index, coinbase;
|
var version, height, value, script, hash, index, coinbase;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
version = p.readU32();
|
version = p.readU32();
|
||||||
height = p.readU32();
|
height = p.readU32();
|
||||||
@ -908,8 +864,7 @@ Parser.parseCoin = function parseCoin(p, extended) {
|
|||||||
script: script,
|
script: script,
|
||||||
coinbase: coinbase,
|
coinbase: coinbase,
|
||||||
hash: hash,
|
hash: hash,
|
||||||
index: index,
|
index: index
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -929,7 +884,6 @@ Parser.parseTX = function parseTX(p) {
|
|||||||
return Parser.parseWitnessTX(p);
|
return Parser.parseWitnessTX(p);
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
version = p.readU32(); // Technically signed
|
version = p.readU32(); // Technically signed
|
||||||
inCount = p.readVarint();
|
inCount = p.readVarint();
|
||||||
@ -947,8 +901,6 @@ Parser.parseTX = function parseTX(p) {
|
|||||||
|
|
||||||
locktime = p.readU32();
|
locktime = p.readU32();
|
||||||
|
|
||||||
p.end();
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
version: version,
|
version: version,
|
||||||
flag: 1,
|
flag: 1,
|
||||||
@ -991,7 +943,6 @@ Parser.parseWitnessTX = function parseWitnessTX(p) {
|
|||||||
var version, locktime, i;
|
var version, locktime, i;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
version = p.readU32(); // Technically signed
|
version = p.readU32(); // Technically signed
|
||||||
marker = p.readU8();
|
marker = p.readU8();
|
||||||
@ -1023,8 +974,6 @@ Parser.parseWitnessTX = function parseWitnessTX(p) {
|
|||||||
|
|
||||||
locktime = p.readU32();
|
locktime = p.readU32();
|
||||||
|
|
||||||
p.end();
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
version: version,
|
version: version,
|
||||||
flag: flag,
|
flag: flag,
|
||||||
@ -1044,13 +993,11 @@ Parser.parseScript = function parseScript(p) {
|
|||||||
var data;
|
var data;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
data = p.readVarBytes();
|
data = p.readVarBytes();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
raw: data,
|
raw: data,
|
||||||
code: bcoin.script.decode(data),
|
code: bcoin.script.decode(data)
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1065,7 +1012,6 @@ Parser.parseWitness = function parseWitness(p) {
|
|||||||
var chunkCount, i;
|
var chunkCount, i;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
chunkCount = p.readVarint();
|
chunkCount = p.readVarint();
|
||||||
|
|
||||||
@ -1073,8 +1019,7 @@ Parser.parseWitness = function parseWitness(p) {
|
|||||||
items.push(p.readVarBytes());
|
items.push(p.readVarBytes());
|
||||||
|
|
||||||
return {
|
return {
|
||||||
items: items,
|
items: items
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1088,7 +1033,6 @@ Parser.parseReject = function parseReject(p) {
|
|||||||
var message, ccode, reason, data;
|
var message, ccode, reason, data;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
message = p.readVarString('ascii');
|
message = p.readVarString('ascii');
|
||||||
ccode = p.readU8();
|
ccode = p.readU8();
|
||||||
@ -1103,8 +1047,7 @@ Parser.parseReject = function parseReject(p) {
|
|||||||
message: message,
|
message: message,
|
||||||
ccode: constants.rejectByVal[ccode] || ccode,
|
ccode: constants.rejectByVal[ccode] || ccode,
|
||||||
reason: reason,
|
reason: reason,
|
||||||
data: data,
|
data: data
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1118,7 +1061,6 @@ Parser.parseAddress = function parseAddress(p, full) {
|
|||||||
var ts, services, ip, port;
|
var ts, services, ip, port;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
if (full) // only version >= 31402
|
if (full) // only version >= 31402
|
||||||
ts = p.readU32();
|
ts = p.readU32();
|
||||||
@ -1140,8 +1082,7 @@ Parser.parseAddress = function parseAddress(p, full) {
|
|||||||
witness: (services & constants.services.WITNESS) !== 0,
|
witness: (services & constants.services.WITNESS) !== 0,
|
||||||
ipv6: utils.array2ip(ip, 6),
|
ipv6: utils.array2ip(ip, 6),
|
||||||
ipv4: utils.array2ip(ip, 4),
|
ipv4: utils.array2ip(ip, 4),
|
||||||
port: port,
|
port: port
|
||||||
_size: p.end()
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1156,15 +1097,12 @@ Parser.parseAddr = function parseAddr(p) {
|
|||||||
var i, count;
|
var i, count;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
count = p.readVarint();
|
count = p.readVarint();
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++)
|
||||||
addrs.push(Parser.parseAddress(p, true));
|
addrs.push(Parser.parseAddress(p, true));
|
||||||
|
|
||||||
addrs._size = p.end();
|
|
||||||
|
|
||||||
return addrs;
|
return addrs;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1188,17 +1126,15 @@ Parser.parseAlert = function parseAlert(p) {
|
|||||||
var version, relayUntil, expiration, id, cancel;
|
var version, relayUntil, expiration, id, cancel;
|
||||||
var cancels, count, i, minVer, maxVer, subVers;
|
var cancels, count, i, minVer, maxVer, subVers;
|
||||||
var priority, comment, statusBar, reserved;
|
var priority, comment, statusBar, reserved;
|
||||||
var payload, size;
|
var payload;
|
||||||
|
|
||||||
p = new BufferReader(p);
|
p = new BufferReader(p);
|
||||||
p.start();
|
|
||||||
|
|
||||||
payload = p.readVarBytes();
|
payload = p.readVarBytes();
|
||||||
signature = p.readVarBytes();
|
signature = p.readVarBytes();
|
||||||
size = p.end();
|
|
||||||
|
|
||||||
p = new BufferReader(payload);
|
p = new BufferReader(payload);
|
||||||
p.start();
|
|
||||||
version = p.read32();
|
version = p.read32();
|
||||||
relayUntil = p.read53();
|
relayUntil = p.read53();
|
||||||
expiration = p.read53();
|
expiration = p.read53();
|
||||||
@ -1218,7 +1154,6 @@ Parser.parseAlert = function parseAlert(p) {
|
|||||||
comment = p.readVarString('ascii');
|
comment = p.readVarString('ascii');
|
||||||
statusBar = p.readVarString('ascii');
|
statusBar = p.readVarString('ascii');
|
||||||
reserved = p.readVarString('ascii');
|
reserved = p.readVarString('ascii');
|
||||||
p.end();
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
version: version,
|
version: version,
|
||||||
@ -1235,8 +1170,7 @@ Parser.parseAlert = function parseAlert(p) {
|
|||||||
statusBar: statusBar,
|
statusBar: statusBar,
|
||||||
reserved: reserved,
|
reserved: reserved,
|
||||||
payload: payload,
|
payload: payload,
|
||||||
signature: signature,
|
signature: signature
|
||||||
_size: size
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -1823,7 +1823,6 @@ TX.parseExtended = function parseExtended(buf, saveCoins, enc) {
|
|||||||
buf = new Buffer(buf, 'hex');
|
buf = new Buffer(buf, 'hex');
|
||||||
|
|
||||||
p = new BufferReader(buf);
|
p = new BufferReader(buf);
|
||||||
p.start();
|
|
||||||
|
|
||||||
tx = bcoin.protocol.parser.parseTX(p);
|
tx = bcoin.protocol.parser.parseTX(p);
|
||||||
|
|
||||||
@ -1859,8 +1858,6 @@ TX.parseExtended = function parseExtended(buf, saveCoins, enc) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
p.end();
|
|
||||||
|
|
||||||
return tx;
|
return tx;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -321,15 +321,11 @@ function parseBody(data) {
|
|||||||
var p = new BufferReader(data, true);
|
var p = new BufferReader(data, true);
|
||||||
var name, items;
|
var name, items;
|
||||||
|
|
||||||
p.start();
|
|
||||||
|
|
||||||
name = p.readVarString('ascii');
|
name = p.readVarString('ascii');
|
||||||
items = parseItem(p);
|
items = parseItem(p);
|
||||||
|
|
||||||
assert(p.readU8() === 0x0a);
|
assert(p.readU8() === 0x0a);
|
||||||
|
|
||||||
p.end();
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name: name || null,
|
name: name || null,
|
||||||
items: items
|
items: items
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user