net: drop getutxos impl.

This commit is contained in:
Christopher Jeffrey 2017-01-19 04:39:25 -08:00
parent 66ec0ae36e
commit e407c08668
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
2 changed files with 0 additions and 418 deletions

View File

@ -57,8 +57,6 @@ exports.types = {
FILTERADD: 19,
FILTERCLEAR: 20,
MERKLEBLOCK: 21,
GETUTXOS: 22,
UTXOS: 23,
FEEFILTER: 24,
SENDCMPCT: 25,
CMPCTBLOCK: 26,
@ -2422,339 +2420,6 @@ MerkleBlockPacket.fromRaw = function fromRaw(data, enc) {
return new MerkleBlockPacket().fromRaw(data);
};
/**
* Represents a `getutxos` packet.
* @exports GetUTXOsPacket
* @constructor
* @param {Boolean} mempool
* @param {Outpoint[]} prevout
* @property {Boolean} mempool
* @property {Outpoint[]} prevout
*/
function GetUTXOsPacket(mempool, prevout) {
if (!(this instanceof GetUTXOsPacket))
return new GetUTXOsPacket(mempool, prevout);
Packet.call(this);
this.mempool = mempool || false;
this.prevout = prevout || [];
}
util.inherits(GetUTXOsPacket, Packet);
GetUTXOsPacket.prototype.cmd = 'getutxos';
GetUTXOsPacket.prototype.type = exports.types.GETUTXOS;
/**
* Get serialization size.
* @returns {Number}
*/
GetUTXOsPacket.prototype.getSize = function getSize() {
var size = 0;
size += 1;
size += encoding.sizeVarint(this.prevout.length);
size += this.prevout.length * 36;
return size;
};
/**
* Serialize getutxos packet to writer.
* @param {BufferWriter} bw
*/
GetUTXOsPacket.prototype.toWriter = function toWriter(bw) {
var i, prevout;
bw.writeU8(this.mempool ? 1 : 0);
bw.writeVarint(this.prevout.length);
for (i = 0; i < this.prevout.length; i++) {
prevout = this.prevout[i];
prevout.toWriter(bw);
}
return bw;
};
/**
* Serialize getutxos packet.
* @returns {Buffer}
*/
GetUTXOsPacket.prototype.toRaw = function toRaw() {
var size = this.getSize();
return this.toWriter(new StaticWriter(size)).render();
};
/**
* Inject properties from buffer reader.
* @private
* @param {BufferReader} br
*/
GetUTXOsPacket.prototype.fromReader = function fromReader(br) {
var i, count;
this.mempool = br.readU8() === 1;
count = br.readVarint();
for (i = 0; i < count; i++)
this.prevout.push(Outpoint.fromReader(br));
return this;
};
/**
* Inject properties from serialized data.
* @private
* @param {Buffer} data
*/
GetUTXOsPacket.prototype.fromRaw = function fromRaw(data) {
return this.fromReader(new BufferReader(data));
};
/**
* Instantiate getutxos packet from buffer reader.
* @param {BufferReader} br
* @returns {GetBlocksPacket}
*/
GetUTXOsPacket.fromReader = function fromReader(br) {
return new GetUTXOsPacket().fromReader(br);
};
/**
* Instantiate getutxos packet from serialized data.
* @param {Buffer} data
* @param {String?} enc
* @returns {GetBlocksPacket}
*/
GetUTXOsPacket.fromRaw = function fromRaw(data, enc) {
if (typeof data === 'string')
data = new Buffer(data, enc);
return new GetUTXOsPacket().fromRaw(data);
};
/**
* Represents a `utxos` packet.
* @exports UTXOsPacket
* @constructor
* @param {Object} options
* @property {Number} height
* @property {Hash} tip
* @property {Boolean[]} hits
* @property {Coin[]} coins
*/
function UTXOsPacket(options) {
if (!(this instanceof UTXOsPacket))
return new UTXOsPacket(options);
Packet.call(this);
this.height = -1;
this.tip = encoding.NULL_HASH;
this.hits = [];
this.coins = [];
if (options)
this.fromOptions(options);
}
util.inherits(UTXOsPacket, Packet);
UTXOsPacket.prototype.cmd = 'utxos';
UTXOsPacket.prototype.type = exports.types.UTXOS;
/**
* Inject properties from options.
* @private
* @param {Buffer} data
*/
UTXOsPacket.prototype.fromOptions = function fromOptions(options) {
if (options.height != null) {
assert(util.isNumber(options.height));
this.height = options.height;
}
if (options.tip) {
assert(typeof options.tip === 'string');
this.tip = options.tip;
}
if (options.hits) {
assert(Array.isArray(options.hits));
this.hits = options.hits;
}
if (options.coins) {
assert(Array.isArray(options.coins));
this.coins = options.coins;
}
return this;
};
/**
* Instantiate utxos packet from options.
* @param {Buffer} data
* @param {String?} enc
* @returns {GetBlocksPacket}
*/
UTXOsPacket.fromOptions = function fromOptions(options) {
return new UTXOsPacket().fromOptions(options);
};
/**
* Get serialization size.
* @returns {Number}
*/
UTXOsPacket.prototype.getSize = function getSize() {
var size = 0;
var i;
size += 4;
size += 32;
size += encoding.sizeVarlen((this.hits.length + 7) / 8 | 0);
size += encoding.sizeVarint(this.coins.length);
for (i = 0; i < this.coins.length; i++)
size += 12 * this.coins[i].script.getVarSize();
return size;
};
/**
* Serialize utxos packet to writer.
* @param {BufferWriter} bw
*/
UTXOsPacket.prototype.toWriter = function toWriter(bw) {
var map = new Buffer((this.hits.length + 7) / 8 | 0);
var i, bit, oct, coin, height;
for (i = 0; i < this.hits.length; i++) {
bit = i % 8;
oct = (i - bit) / 8;
map[oct] |= +this.hits[i] << (7 - bit);
}
bw.writeU32(this.height);
bw.writeHash(this.tip);
bw.writeVarBytes(map);
bw.writeVarInt(this.coins.length);
for (i = 0; i < this.coins.length; i++) {
coin = this.coins[i];
height = coin.height;
if (height === -1)
height = 0x7fffffff;
bw.writeU32(coin.version);
bw.writeU32(height);
bw.write64(coin.value);
bw.writeVarBytes(coin.script.toRaw());
}
return bw;
};
/**
* Serialize utxos packet.
* @returns {Buffer}
*/
UTXOsPacket.prototype.toRaw = function toRaw() {
var size = this.getSize();
return this.toWriter(new StaticWriter(size)).render();
};
/**
* Inject properties from buffer reader.
* @private
* @param {BufferReader} br
*/
UTXOsPacket.prototype.fromReader = function fromReader(br) {
var i, bit, oct, coin, output;
var version, height, map, count;
this.height = br.readU32();
this.tip = br.readHash('hex');
map = br.readVarBytes();
count = br.readVarint();
for (i = 0; i < map.length * 8; i++) {
bit = i % 8;
oct = (i - bit) / 8;
this.hits.push((map[oct] >> (7 - bit)) & 1);
}
for (i = 0; i < count; i++) {
version = br.readU32();
height = br.readU32();
coin = new Coin();
if (height === 0x7fffffff)
height = -1;
output = Output.fromReader(br);
coin.version = version;
coin.height = height;
coin.script = output.script;
coin.value = output.value;
this.coins.push(coin);
}
return this;
};
/**
* Inject properties from serialized data.
* @private
* @param {Buffer} data
*/
UTXOsPacket.prototype.fromRaw = function fromRaw(data) {
return this.fromReader(new BufferReader(data));
};
/**
* Instantiate utxos packet from buffer reader.
* @param {BufferReader} br
* @returns {UTXOsPacket}
*/
UTXOsPacket.fromReader = function fromReader(br) {
return new UTXOsPacket().fromReader(br);
};
/**
* Instantiate utxos packet from serialized data.
* @param {Buffer} data
* @param {String?} enc
* @returns {UTXOsPacket}
*/
UTXOsPacket.fromRaw = function fromRaw(data, enc) {
if (typeof data === 'string')
data = new Buffer(data, enc);
return new UTXOsPacket().fromRaw(data);
};
/**
* Represents a `feefilter` packet.
* @exports FeeFilterPacket
@ -3862,10 +3527,6 @@ exports.fromRaw = function fromRaw(cmd, data) {
return FilterClearPacket.fromRaw(data);
case 'merkleblock':
return MerkleBlockPacket.fromRaw(data);
case 'getutxos':
return GetUTXOsPacket.fromRaw(data);
case 'utxos':
return UTXOsPacket.fromRaw(data);
case 'feefilter':
return FeeFilterPacket.fromRaw(data);
case 'sendcmpct':
@ -3918,8 +3579,6 @@ exports.FilterLoadPacket = FilterLoadPacket;
exports.FilterAddPacket = FilterAddPacket;
exports.FilterClearPacket = FilterClearPacket;
exports.MerkleBlockPacket = MerkleBlockPacket;
exports.GetUTXOsPacket = GetUTXOsPacket;
exports.UTXOsPacket = UTXOsPacket;
exports.FeeFilterPacket = FeeFilterPacket;
exports.SendCmpctPacket = SendCmpctPacket;
exports.CmpctBlockPacket = CmpctBlockPacket;

View File

@ -1504,12 +1504,6 @@ Peer.prototype.handlePacket = co(function* handlePacket(packet) {
case packetTypes.MERKLEBLOCK:
yield this.handleMerkleBlock(packet);
break;
case packetTypes.GETUTXOS:
yield this.handleGetUTXOs(packet);
break;
case packetTypes.UTXOS:
yield this.handleUTXOs(packet);
break;
case packetTypes.FEEFILTER:
yield this.handleFeeFilter(packet);
break;
@ -1735,77 +1729,6 @@ Peer.prototype.handleFeeFilter = co(function* handleFeeFilter(packet) {
this.emit('feefilter', rate);
});
/**
* Handle `utxos` packet.
* @private
* @param {UTXOsPacket}
*/
Peer.prototype.handleUTXOs = co(function* handleUTXOs(utxos) {
this.logger.debug('Received %d utxos (%s).',
utxos.coins.length, this.hostname);
this.emit('utxos', utxos);
});
/**
* Handle `getutxos` packet.
* @private
*/
Peer.prototype.handleGetUTXOs = co(function* handleGetUTXOs(packet) {
var i, utxos, prevout, hash, index, coin;
if (!this.chain.synced)
return;
if (this.options.selfish)
return;
if (this.chain.options.spv)
return;
if (packet.prevout.length > 15)
return;
utxos = new packets.UTXOsPacket();
for (i = 0; i < packet.prevout.length; i++) {
prevout = packet.prevout[i];
hash = prevout.hash;
index = prevout.index;
if (this.mempool && packet.mempool) {
coin = this.mempool.getCoin(hash, index);
if (coin) {
utxos.hits.push(1);
utxos.coins.push(coin);
continue;
}
if (this.mempool.isSpent(hash, index)) {
utxos.hits.push(0);
continue;
}
}
coin = yield this.chain.db.getCoin(hash, index);
if (!coin) {
utxos.hits.push(0);
continue;
}
utxos.hits.push(1);
utxos.coins.push(coin);
}
utxos.height = this.chain.height;
utxos.tip = this.chain.tip.hash;
this.send(utxos);
});
/**
* Handle `getheaders` packet.
* @private