FIX: listtransactions caching
This commit is contained in:
parent
6a6611e9b6
commit
4a871a7d17
@ -285,7 +285,7 @@ export class User {
|
|||||||
addr = await this.getAddress();
|
addr = await this.getAddress();
|
||||||
}
|
}
|
||||||
if (!addr) throw new Error('cannot get transactions: no onchain address assigned to user');
|
if (!addr) throw new Error('cannot get transactions: no onchain address assigned to user');
|
||||||
let txs = await this._bitcoindrpc.request('listtransactions', ['*', 100500, 0, true]);
|
let txs = await this._listtransactions();
|
||||||
txs = txs.result;
|
txs = txs.result;
|
||||||
let result = [];
|
let result = [];
|
||||||
for (let tx of txs) {
|
for (let tx of txs) {
|
||||||
@ -323,6 +323,42 @@ export class User {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple caching for this._bitcoindrpc.request('listtransactions', ['*', 100500, 0, true]);
|
||||||
|
* since its too much to fetch from bitcoind every time
|
||||||
|
*
|
||||||
|
* @returns {Promise<*>}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
async _listtransactions() {
|
||||||
|
const key = 'listtransactions';
|
||||||
|
let response = await this._redis.get(key);
|
||||||
|
if (response) {
|
||||||
|
try {
|
||||||
|
let json = JSON.parse(response);
|
||||||
|
return json;
|
||||||
|
} catch (_) {
|
||||||
|
// nop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let txs = await this._bitcoindrpc.request('listtransactions', ['*', 100500, 0, true]);
|
||||||
|
// now, compacting response a bit
|
||||||
|
let ret = { result: [] };
|
||||||
|
for (const tx of txs.result) {
|
||||||
|
ret.result.push({
|
||||||
|
category: tx.category,
|
||||||
|
amount: tx.amount,
|
||||||
|
confirmations: tx.confirmations,
|
||||||
|
address: tx.address,
|
||||||
|
time: tx.time,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await this._redis.set(key, JSON.stringify(ret));
|
||||||
|
await this._redis.expire(key, 5 * 60);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returning onchain txs for user's address that are less than 3 confs
|
* Returning onchain txs for user's address that are less than 3 confs
|
||||||
*
|
*
|
||||||
@ -335,7 +371,7 @@ export class User {
|
|||||||
addr = await this.getAddress();
|
addr = await this.getAddress();
|
||||||
}
|
}
|
||||||
if (!addr) throw new Error('cannot get transactions: no onchain address assigned to user');
|
if (!addr) throw new Error('cannot get transactions: no onchain address assigned to user');
|
||||||
let txs = await this._bitcoindrpc.request('listtransactions', ['*', 100500, 0, true]);
|
let txs = await this._listtransactions();
|
||||||
txs = txs.result;
|
txs = txs.result;
|
||||||
let result = [];
|
let result = [];
|
||||||
for (let tx of txs) {
|
for (let tx of txs) {
|
||||||
@ -372,6 +408,7 @@ export class User {
|
|||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
*/
|
*/
|
||||||
async accountForPosibleTxids() {
|
async accountForPosibleTxids() {
|
||||||
|
return; // TODO: remove
|
||||||
let onchain_txs = await this.getTxs();
|
let onchain_txs = await this.getTxs();
|
||||||
let imported_txids = await this._redis.lrange('imported_txids_for_' + this._userid, 0, -1);
|
let imported_txids = await this._redis.lrange('imported_txids_for_' + this._userid, 0, -1);
|
||||||
for (let tx of onchain_txs) {
|
for (let tx of onchain_txs) {
|
||||||
|
@ -32,7 +32,7 @@ if (config.lnd.password) {
|
|||||||
var walletUnlocker = new lnrpc.WalletUnlocker(config.lnd.url, creds);
|
var walletUnlocker = new lnrpc.WalletUnlocker(config.lnd.url, creds);
|
||||||
walletUnlocker.unlockWallet(
|
walletUnlocker.unlockWallet(
|
||||||
{
|
{
|
||||||
wallet_password: config.lnd.password,
|
wallet_password: Buffer.from(config.lnd.password).toString('base64'),
|
||||||
},
|
},
|
||||||
function(err, response) {
|
function(err, response) {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user