diff --git a/backend/src/api/audit.ts b/backend/src/api/audit.ts index e78b2796f..0ddfc2cc2 100644 --- a/backend/src/api/audit.ts +++ b/backend/src/api/audit.ts @@ -9,7 +9,7 @@ class Audit { auditBlock(transactions: MempoolTransactionExtended[], projectedBlocks: MempoolBlockWithTransactions[], mempool: { [txId: string]: MempoolTransactionExtended }, useAccelerations: boolean = false) : { censored: string[], added: string[], fresh: string[], sigop: string[], fullrbf: string[], accelerated: string[], score: number, similarity: number } { if (!projectedBlocks?.[0]?.transactionIds || !mempool) { - return { censored: [], added: [], fresh: [], sigop: [], fullrbf: [], accelerated: [], score: 0, similarity: 1 }; + return { censored: [], added: [], fresh: [], sigop: [], fullrbf: [], accelerated: [], score: 1, similarity: 1 }; } const matches: string[] = []; // present in both mined block and template @@ -144,7 +144,12 @@ class Audit { const numCensored = Object.keys(isCensored).length; const numMatches = matches.length - 1; // adjust for coinbase tx - const score = numMatches > 0 ? (numMatches / (numMatches + numCensored)) : 0; + let score = 0; + if (numMatches <= 0 && numCensored <= 0) { + score = 1; + } else if (numMatches > 0) { + score = (numMatches / (numMatches + numCensored)); + } const similarity = projectedWeight ? matchedWeight / projectedWeight : 1; return { diff --git a/frontend/src/app/components/about/about.component.html b/frontend/src/app/components/about/about.component.html index a56e172c8..a4cc51f90 100644 --- a/frontend/src/app/components/about/about.component.html +++ b/frontend/src/app/components/about/about.component.html @@ -36,14 +36,14 @@

If you're an individual...

- Become a Community Sponsor + Become a Community Sponsor

If you're a business...

- Become an Enterprise Sponsor + Become an Enterprise Sponsor diff --git a/frontend/src/app/components/accelerate-preview/accelerate-preview.component.html b/frontend/src/app/components/accelerate-preview/accelerate-preview.component.html index 2869d02ae..2a075f1e2 100644 --- a/frontend/src/app/components/accelerate-preview/accelerate-preview.component.html +++ b/frontend/src/app/components/accelerate-preview/accelerate-preview.component.html @@ -1,14 +1,16 @@ +
-
+
Transaction has now been submitted to mining pools for acceleration.
+
-
- +
+
@@ -37,10 +39,10 @@ Virtual size - + - + Size in vbytes of this transaction and its unconfirmed ancestors @@ -48,12 +50,12 @@ In-band fees - + {{ estimate.txSummary.effectiveFee | number : '1.0-0' }} sats - + Fees already paid by this transaction and its unconfirmed ancestors @@ -95,7 +97,7 @@ Next block market rate - + {{ estimate.targetFeeRate | number : '1.0-0' }} sat/vB @@ -109,7 +111,7 @@ sats - + @@ -129,7 +131,7 @@ sats - + @@ -141,7 +143,7 @@ sats - + @@ -158,11 +160,11 @@ sats - + - + If your tx is accelerated to {{ estimate.targetFeeRate | number : '1.0-0' }} sat/vB @@ -181,13 +183,13 @@ sats - + - + If your tx is accelerated to ~{{ ((estimate.txSummary.effectiveFee + userBid) / estimate.txSummary.effectiveVsize) | number : '1.0-0' }} sat/vB @@ -204,7 +206,7 @@ sats - + diff --git a/frontend/src/app/components/accelerate-preview/accelerate-preview.component.scss b/frontend/src/app/components/accelerate-preview/accelerate-preview.component.scss index 814b37e7a..2e2b19ee8 100644 --- a/frontend/src/app/components/accelerate-preview/accelerate-preview.component.scss +++ b/frontend/src/app/components/accelerate-preview/accelerate-preview.component.scss @@ -8,9 +8,6 @@ align-items: center; justify-content: center; - .fee { - font-size: 1.2em; - } .rate { font-size: 0.9em; .symbol { @@ -64,8 +61,6 @@ .table-accelerator { tr { - text-wrap: wrap; - td { padding-top: 0; padding-bottom: 0; @@ -89,6 +84,7 @@ } &.info { color: #6c757d; + white-space: initial; } &.amt { text-align: right; @@ -97,6 +93,9 @@ &.units { padding-left: 0.2em; white-space: nowrap; + display: flex; + justify-content: space-between; + align-items: center; } } } @@ -106,4 +105,8 @@ flex-direction: row; align-items: stretch; margin-top: 1em; +} + +.item { + white-space: initial; } \ No newline at end of file diff --git a/frontend/src/app/components/accelerate-preview/accelerate-preview.component.ts b/frontend/src/app/components/accelerate-preview/accelerate-preview.component.ts index 7215f9bfb..530977c71 100644 --- a/frontend/src/app/components/accelerate-preview/accelerate-preview.component.ts +++ b/frontend/src/app/components/accelerate-preview/accelerate-preview.component.ts @@ -1,5 +1,4 @@ -import { Component, OnInit, Input, OnDestroy, OnChanges, SimpleChanges, HostListener } from '@angular/core'; -import { Router } from '@angular/router'; +import { Component, OnInit, Input, OnDestroy, OnChanges, SimpleChanges, HostListener, ChangeDetectorRef } from '@angular/core'; import { ApiService } from '../../services/api.service'; import { Subscription, catchError, of, tap } from 'rxjs'; import { StorageService } from '../../services/storage.service'; @@ -63,7 +62,7 @@ export class AcceleratePreviewComponent implements OnInit, OnDestroy, OnChanges constructor( private apiService: ApiService, private storageService: StorageService, - private router: Router, + private cd: ChangeDetectorRef ) { } ngOnDestroy(): void { @@ -163,13 +162,14 @@ export class AcceleratePreviewComponent implements OnInit, OnDestroy, OnChanges scrollToPreview(id: string, position: ScrollLogicalPosition) { const acceleratePreviewAnchor = document.getElementById(id); if (acceleratePreviewAnchor) { + this.cd.markForCheck(); acceleratePreviewAnchor.scrollIntoView({ behavior: 'smooth', inline: position, block: position, }); } -} + } /** * Send acceleration request diff --git a/frontend/src/app/components/master-page/master-page.component.scss b/frontend/src/app/components/master-page/master-page.component.scss index 6b2377f92..79f5e8a12 100644 --- a/frontend/src/app/components/master-page/master-page.component.scss +++ b/frontend/src/app/components/master-page/master-page.component.scss @@ -244,10 +244,9 @@ main { .sidenav { z-index: 1; background-color: transparent; - width: 225px; + width: 0px; height: calc(100vh - 65px); position: sticky; top: 65px; - margin-left: -225px; padding-bottom: 20px; } diff --git a/frontend/src/app/components/menu/menu.component.scss b/frontend/src/app/components/menu/menu.component.scss index 8fe651e27..59b04e92c 100644 --- a/frontend/src/app/components/menu/menu.component.scss +++ b/frontend/src/app/components/menu/menu.component.scss @@ -29,6 +29,7 @@ margin-left: 0px; left: 0px; display: block; + background-color: #1d1f31; } .sidenav a, button{ diff --git a/frontend/src/app/components/privacy-policy/privacy-policy.component.html b/frontend/src/app/components/privacy-policy/privacy-policy.component.html index fe4bd7f1e..d14b12bc3 100644 --- a/frontend/src/app/components/privacy-policy/privacy-policy.component.html +++ b/frontend/src/app/components/privacy-policy/privacy-policy.component.html @@ -5,7 +5,7 @@

Privacy Policy

-
Updated: November 18, 2021
+
Updated: November 23, 2023


@@ -59,7 +59,7 @@
    -
  1. If you provide your e-mail address, we may contact you regarding your account, billing purposess, or to update you about our services. We will not share this with any third-party.
  2. +
  3. If you provide your name, country, and/or e-mail address, we may use this information to manage your user account, for billing purposes, or to update you about our services. We will not share this with any third-party, except as detailed below if you sponsor The Mempool Open Source Project®, purchase a subscription to Mempool Enterprise®, or accelerate transactions using Mempool Accelerator™.
  4. If you connect your Twitter account, we may store your Twitter identity, e-mail address, and profile photo. We may publicly display your profile photo or link to your profile on our website, if you sponsor The Mempool Open Source Project, claim your Lightning node, or other such use cases.
  5. @@ -67,7 +67,7 @@
  6. If you make a Bitcoin or Liquid payment, we will process your payment using our self-hosted BTCPay Server instance and not share these details with any third-party.
  7. -
  8. If you accelerate transactions using Mempool Accelerator(tm), we will store the TXID of your transactions you accelerate with us. We share this information with our mining pool partners, as well as publicly display accelerated transaction details on our website and APIs.
  9. +
  10. If you accelerate transactions using Mempool Accelerator™, we will store the TXID of your transactions you accelerate with us. We share this information with our mining pool partners, as well as publicly display accelerated transaction details on our website and APIs.
diff --git a/frontend/src/app/shared/components/mempool-error/mempool-error.component.html b/frontend/src/app/shared/components/mempool-error/mempool-error.component.html index 020b147a9..b8179e4c3 100644 --- a/frontend/src/app/shared/components/mempool-error/mempool-error.component.html +++ b/frontend/src/app/shared/components/mempool-error/mempool-error.component.html @@ -1,2 +1,2 @@ -
+
diff --git a/frontend/src/app/shared/components/mempool-error/mempool-error.component.ts b/frontend/src/app/shared/components/mempool-error/mempool-error.component.ts index 4071146ab..e89daaffd 100644 --- a/frontend/src/app/shared/components/mempool-error/mempool-error.component.ts +++ b/frontend/src/app/shared/components/mempool-error/mempool-error.component.ts @@ -33,6 +33,7 @@ export function isMempoolError(error: string) { }) export class MempoolErrorComponent implements OnInit { @Input() error: string; + @Input() alertClass = 'alert-danger'; errorContent: SafeHtml; constructor(private sanitizer: DomSanitizer) { }