diff --git a/backend/src/api/fee-api.ts b/backend/src/api/fee-api.ts index 8293520bf..2ad9744d2 100644 --- a/backend/src/api/fee-api.ts +++ b/backend/src/api/fee-api.ts @@ -18,9 +18,9 @@ class FeeApi { }; } - const firstMedianFee = this.optimizeMedianFee(pBlocks[0]); - const secondMedianFee = pBlocks[1] ? this.optimizeMedianFee(pBlocks[1], firstMedianFee) : this.defaultFee; - const thirdMedianFee = pBlocks[2] ? this.optimizeMedianFee(pBlocks[2], secondMedianFee) : this.defaultFee; + const firstMedianFee = this.optimizeMedianFee(pBlocks[0], pBlocks[1]); + const secondMedianFee = pBlocks[1] ? this.optimizeMedianFee(pBlocks[1], pBlocks[2], firstMedianFee) : this.defaultFee; + const thirdMedianFee = pBlocks[2] ? this.optimizeMedianFee(pBlocks[2], pBlocks[3], secondMedianFee) : this.defaultFee; return { 'fastestFee': firstMedianFee, @@ -29,12 +29,12 @@ class FeeApi { }; } - private optimizeMedianFee(pBlock: MempoolBlock, previousFee?: number): number { + private optimizeMedianFee(pBlock: MempoolBlock, nextBlock: MempoolBlock | undefined, previousFee?: number): number { const useFee = previousFee ? (pBlock.medianFee + previousFee) / 2 : pBlock.medianFee; if (pBlock.blockVSize <= 500000) { return this.defaultFee; } - if (pBlock.blockVSize <= 950000) { + if (pBlock.blockVSize <= 950000 && nextBlock) { const multiplier = (pBlock.blockVSize - 500000) / 500000; return Math.max(Math.round(useFee * multiplier), this.defaultFee); } diff --git a/frontend/src/app/components/fees-box/fees-box.component.ts b/frontend/src/app/components/fees-box/fees-box.component.ts index d52916127..8823891f7 100644 --- a/frontend/src/app/components/fees-box/fees-box.component.ts +++ b/frontend/src/app/components/fees-box/fees-box.component.ts @@ -40,9 +40,9 @@ export class FeesBoxComponent implements OnInit { }; } - const firstMedianFee = this.optimizeMedianFee(pBlocks[0]); - const secondMedianFee = pBlocks[1] ? this.optimizeMedianFee(pBlocks[1], firstMedianFee) : this.defaultFee; - const thirdMedianFee = pBlocks[2] ? this.optimizeMedianFee(pBlocks[2], secondMedianFee) : this.defaultFee; + const firstMedianFee = this.optimizeMedianFee(pBlocks[0], pBlocks[1]); + const secondMedianFee = pBlocks[1] ? this.optimizeMedianFee(pBlocks[1], pBlocks[2], firstMedianFee) : this.defaultFee; + const thirdMedianFee = pBlocks[2] ? this.optimizeMedianFee(pBlocks[2], pBlocks[3], secondMedianFee) : this.defaultFee; return { 'fastestFee': firstMedianFee, @@ -53,12 +53,12 @@ export class FeesBoxComponent implements OnInit { ); } - optimizeMedianFee(pBlock: MempoolBlock, previousFee?: number): number { + private optimizeMedianFee(pBlock: MempoolBlock, nextBlock: MempoolBlock | undefined, previousFee?: number): number { const useFee = previousFee ? (pBlock.medianFee + previousFee) / 2 : pBlock.medianFee; if (pBlock.blockVSize <= 500000) { return this.defaultFee; } - if (pBlock.blockVSize <= 950000) { + if (pBlock.blockVSize <= 950000 && nextBlock) { const multiplier = (pBlock.blockVSize - 500000) / 500000; return Math.max(Math.round(useFee * multiplier), this.defaultFee); }