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:
sairajzero 2023-04-19 00:42:47 +05:30
parent 6b794aa9a3
commit f8260541ef

View File

@ -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 };
}