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 balanceBuffer = new Buffer(4);
|
||||
balanceBuffer.writeUInt32BE(balance || 0);
|
||||
var balanceBuffer = new Buffer(8);
|
||||
balanceBuffer.writeBigUInt64BE(BigInt(balance));
|
||||
buffer.push(balanceBuffer);
|
||||
|
||||
var receivedBuffer = new Buffer(4);
|
||||
receivedBuffer.writeUInt32BE(received || 0);
|
||||
var receivedBuffer = new Buffer(8);
|
||||
receivedBuffer.writeBigUInt64BE(BigInt(received));
|
||||
buffer.push(receivedBuffer);
|
||||
|
||||
var sentBuffer = new Buffer(4);
|
||||
sentBuffer.writeUInt32BE(sent || 0);
|
||||
var sentBuffer = new Buffer(8);
|
||||
sentBuffer.writeBigUInt64BE(BigInt(sent));
|
||||
buffer.push(sentBuffer);
|
||||
|
||||
var txApperancesBuffer = new Buffer(4);
|
||||
txApperancesBuffer.writeUInt32BE(txApperances || 0);
|
||||
txApperancesBuffer.writeUInt32BE(txApperances);
|
||||
buffer.push(txApperancesBuffer);
|
||||
|
||||
var txidBuffer = new Buffer(lastTx || Array(65).join('0'), 'hex');
|
||||
var txidBuffer = new Buffer(lastTx);
|
||||
buffer.push(txidBuffer);
|
||||
|
||||
return Buffer.concat(buffers);
|
||||
return Buffer.concat(buffer);
|
||||
}
|
||||
|
||||
Encoding.prototype.decodeAddressCacheValue = function(buffer) {
|
||||
|
||||
var balance = buffer.readUInt32BE(0);
|
||||
var received = buffer.readUInt32BE(4);
|
||||
var sent = buffer.readUInt32BE(8);
|
||||
var txApperances = buffer.readUInt32BE(12);
|
||||
var lastTx = buffer.slice(24).toString('hex');
|
||||
|
||||
var balance = parseInt(buffer.readBigUInt64BE(0));
|
||||
var received = parseInt(buffer.readBigUInt64BE(8));
|
||||
var sent = parseInt(buffer.readBigUInt64BE(16));
|
||||
var txApperances = buffer.readUInt32BE(24);
|
||||
var lastTx = buffer.slice(28).toString('hex');
|
||||
|
||||
return { lastTx, balance, received, sent, txApperances };
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user