diff --git a/backend/src/api/common.ts b/backend/src/api/common.ts
index 130e0205d..dd3d84e48 100644
--- a/backend/src/api/common.ts
+++ b/backend/src/api/common.ts
@@ -81,9 +81,10 @@ export class Common {
static setRelativesAndGetCpfpInfo(tx: TransactionExtended, memPool: { [txid: string]: TransactionExtended }): CpfpInfo {
const parents = this.findAllParents(tx, memPool);
+ const lowerFeeParents = parents.filter((parent) => parent.feePerVsize < tx.feePerVsize);
- let totalWeight = tx.weight + parents.reduce((prev, val) => prev + val.weight, 0);
- let totalFees = tx.fee + parents.reduce((prev, val) => prev + val.fee, 0);
+ let totalWeight = tx.weight + lowerFeeParents.reduce((prev, val) => prev + val.weight, 0);
+ let totalFees = tx.fee + lowerFeeParents.reduce((prev, val) => prev + val.fee, 0);
tx.ancestors = parents
.map((t) => {
diff --git a/frontend/src/app/components/transaction/transaction.component.html b/frontend/src/app/components/transaction/transaction.component.html
index bf0f9a3c3..d80c6c1d0 100644
--- a/frontend/src/app/components/transaction/transaction.component.html
+++ b/frontend/src/app/components/transaction/transaction.component.html
@@ -177,10 +177,7 @@
{{ cpfpTx.weight / 4 | vbytes: 2 }} |
{{ roundToOneDecimal(cpfpTx) | number : '1.1-1' }} sat/vB |
- tx.feePerVsize; else arrowDown" class="arrow-green" [icon]="['fas', 'angle-double-up']" [fixedWidth]="true"> |
-
-
-
+ |
diff --git a/frontend/src/app/components/transaction/transaction.component.ts b/frontend/src/app/components/transaction/transaction.component.ts
index e551b71b6..ef765b49f 100644
--- a/frontend/src/app/components/transaction/transaction.component.ts
+++ b/frontend/src/app/components/transaction/transaction.component.ts
@@ -109,8 +109,9 @@ export class TransactionComponent implements OnInit, OnDestroy {
} else {
this.apiService.getCpfpinfo$(this.tx.txid)
.subscribe((cpfpInfo) => {
- let totalWeight = tx.weight + cpfpInfo.ancestors.reduce((prev, val) => prev + val.weight, 0);
- let totalFees = tx.fee + cpfpInfo.ancestors.reduce((prev, val) => prev + val.fee, 0);
+ const lowerFeeParents = cpfpInfo.ancestors.filter((ancestor) => (ancestor.fee / (ancestor.weight / 4)) < tx.feePerVsize);
+ let totalWeight = tx.weight + lowerFeeParents.reduce((prev, val) => prev + val.weight, 0);
+ let totalFees = tx.fee + lowerFeeParents.reduce((prev, val) => prev + val.fee, 0);
if (cpfpInfo.bestDescendant) {
totalWeight += cpfpInfo.bestDescendant.weight;