Fix: Cache value encoding
- Using BigInt (uInt64) for cache value (balance, sent, received) as they are large for uInt32 - Reflect the changes for BigInt (uInt64) in decode cache value - Removed default values in cache encoding, as if a value is invalid then it must throw error and not write db
This commit is contained in:
parent
6b794aa9a3
commit
f8260541ef
@ -127,35 +127,35 @@ Encoding.prototype.encodeAddressCacheValue = function(lastTx, balance, received,
|
|||||||
|
|
||||||
var buffer = [];
|
var buffer = [];
|
||||||
|
|
||||||
var balanceBuffer = new Buffer(4);
|
var balanceBuffer = new Buffer(8);
|
||||||
balanceBuffer.writeUInt32BE(balance || 0);
|
balanceBuffer.writeBigUInt64BE(BigInt(balance));
|
||||||
buffer.push(balanceBuffer);
|
buffer.push(balanceBuffer);
|
||||||
|
|
||||||
var receivedBuffer = new Buffer(4);
|
var receivedBuffer = new Buffer(8);
|
||||||
receivedBuffer.writeUInt32BE(received || 0);
|
receivedBuffer.writeBigUInt64BE(BigInt(received));
|
||||||
buffer.push(receivedBuffer);
|
buffer.push(receivedBuffer);
|
||||||
|
|
||||||
var sentBuffer = new Buffer(4);
|
var sentBuffer = new Buffer(8);
|
||||||
sentBuffer.writeUInt32BE(sent || 0);
|
sentBuffer.writeBigUInt64BE(BigInt(sent));
|
||||||
buffer.push(sentBuffer);
|
buffer.push(sentBuffer);
|
||||||
|
|
||||||
var txApperancesBuffer = new Buffer(4);
|
var txApperancesBuffer = new Buffer(4);
|
||||||
txApperancesBuffer.writeUInt32BE(txApperances || 0);
|
txApperancesBuffer.writeUInt32BE(txApperances);
|
||||||
buffer.push(txApperancesBuffer);
|
buffer.push(txApperancesBuffer);
|
||||||
|
|
||||||
var txidBuffer = new Buffer(lastTx || Array(65).join('0'), 'hex');
|
var txidBuffer = new Buffer(lastTx);
|
||||||
buffer.push(txidBuffer);
|
buffer.push(txidBuffer);
|
||||||
|
|
||||||
return Buffer.concat(buffers);
|
return Buffer.concat(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
Encoding.prototype.decodeAddressCacheValue = function(buffer) {
|
Encoding.prototype.decodeAddressCacheValue = function(buffer) {
|
||||||
|
|
||||||
var balance = buffer.readUInt32BE(0);
|
var balance = parseInt(buffer.readBigUInt64BE(0));
|
||||||
var received = buffer.readUInt32BE(4);
|
var received = parseInt(buffer.readBigUInt64BE(8));
|
||||||
var sent = buffer.readUInt32BE(8);
|
var sent = parseInt(buffer.readBigUInt64BE(16));
|
||||||
var txApperances = buffer.readUInt32BE(12);
|
var txApperances = buffer.readUInt32BE(24);
|
||||||
var lastTx = buffer.slice(24).toString('hex');
|
var lastTx = buffer.slice(28).toString('hex');
|
||||||
|
|
||||||
return { lastTx, balance, received, sent, txApperances };
|
return { lastTx, balance, received, sent, txApperances };
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user