Skip to content

Improve BMA `/tx/history/:pubkey/pending`, `/tx/history/:pubkey/blocks/:from/:to` and `/tx/history/:pubkey/times/:from/:to`

I thhink we cn optimize the response time of BMA /tx/history/:pubkey/pending

In Duniter dev branch, i can see that:

  • in transactions.ts the pubkey's full history is laoded (including sending and received), then filtered :
    async getPendingForPubkey(req: any): Promise<HttpTxHistory> {
      const pubkey = await ParametersService.getPubkeyP(req);
      return this.getFilteredHistory(pubkey, function (res: any) {
        const histo = res.history;
        Underscore.extend(histo, { sent: [], received: [] });
        return res;
      });
    }
    
    private async getFilteredHistory(
      pubkey: string,
      filter: any
      ): Promise<HttpTxHistory> {
        let history = await this.server.dal.getTransactionsHistory(pubkey);
        let result = {
          currency: this.conf.currency,
          pubkey: pubkey,
          history: {
            sending: history.sending.map(dbtx2HttpTxOfHistory),
            received: history.received.map(dbtx2HttpTxOfHistory),
            sent: history.sent.map(dbtx2HttpTxOfHistory),
            pending: history.pending.map(dbtx2HttpTxOfHistory),
          },
        };
      return filter(result);
      }
    }
  • there is not DAL function to get only pending TX, by pubkey
Edited by Benoit Lavenier
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information