Peg Out
-
+
@@ -55,18 +55,18 @@
Input #{{ line.vin + 1 }}
- Confidential
-
+
Confidential
+
- {{ line.value }} {{ line.asset | slice : 0 : 7 }}
+ {{ line.displayValue }} {{ line.asset | slice : 0 : 7 }}
-
+
@@ -76,5 +76,5 @@
- {{ item.value / pow(10, assetsMinimal[item.asset][3]) | number: '1.' + assetsMinimal[item.asset][3] + '-' + assetsMinimal[item.asset][3] }} {{ assetsMinimal[item.asset][1] }}
+ {{ item.displayValue / pow(10, assetsMinimal[item.asset][3]) | number: '1.' + assetsMinimal[item.asset][3] + '-' + assetsMinimal[item.asset][3] }} {{ assetsMinimal[item.asset][1] }}
\ No newline at end of file
diff --git a/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.ts b/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.ts
index bd669b897..924982983 100644
--- a/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.ts
+++ b/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.ts
@@ -7,6 +7,7 @@ import { environment } from '../../../environments/environment';
interface Xput {
type: 'input' | 'output' | 'fee';
value?: number;
+ displayValue?: number;
index?: number;
txid?: string;
vin?: number;
diff --git a/frontend/src/app/components/tx-bowtie-graph/tx-bowtie-graph.component.ts b/frontend/src/app/components/tx-bowtie-graph/tx-bowtie-graph.component.ts
index 18f13cc15..97e74957e 100644
--- a/frontend/src/app/components/tx-bowtie-graph/tx-bowtie-graph.component.ts
+++ b/frontend/src/app/components/tx-bowtie-graph/tx-bowtie-graph.component.ts
@@ -1,12 +1,13 @@
import { Component, OnInit, Input, OnChanges, HostListener, Inject, LOCALE_ID } from '@angular/core';
import { StateService } from '../../services/state.service';
-import { Outspend, Transaction } from '../../interfaces/electrs.interface';
+import { Outspend, Transaction, Vin, Vout } from '../../interfaces/electrs.interface';
import { Router } from '@angular/router';
import { ReplaySubject, merge, Subscription, of } from 'rxjs';
import { tap, switchMap } from 'rxjs/operators';
import { ApiService } from '../../services/api.service';
import { RelativeUrlPipe } from '../../shared/pipes/relative-url/relative-url.pipe';
import { AssetsService } from '../../services/assets.service';
+import { environment } from '../../../environments/environment';
interface SvgLine {
path: string;
@@ -20,6 +21,7 @@ interface SvgLine {
interface Xput {
type: 'input' | 'output' | 'fee';
value?: number;
+ displayValue?: number;
index?: number;
txid?: string;
vin?: number;
@@ -74,6 +76,7 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
zeroValueThickness = 20;
hasLine: boolean;
assetsMinimal: any;
+ nativeAssetId = this.stateService.network === 'liquidtestnet' ? environment.nativeTestAssetId : environment.nativeAssetId;
outspendsSubscription: Subscription;
refreshOutspends$: ReplaySubject = new ReplaySubject();
@@ -167,7 +170,8 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
let voutWithFee = this.tx.vout.map((v, i) => {
return {
type: v.scriptpubkey_type === 'fee' ? 'fee' : 'output',
- value: v?.value,
+ value: this.getOutputValue(v),
+ displayValue: v?.value,
address: v?.scriptpubkey_address || v?.scriptpubkey_type?.toUpperCase(),
index: i,
pegout: v?.pegout?.scriptpubkey_address,
@@ -185,7 +189,8 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
let truncatedInputs = this.tx.vin.map((v, i) => {
return {
type: 'input',
- value: v?.prevout?.value || (v?.is_coinbase && !totalValue ? 0 : undefined),
+ value: (v?.is_coinbase && !totalValue ? 0 : this.getInputValue(v)),
+ displayValue: v?.prevout?.value,
txid: v.txid,
vout: v.vout,
address: v?.prevout?.scriptpubkey_address || v?.prevout?.scriptpubkey_type?.toUpperCase(),
@@ -229,14 +234,14 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
}
calcTotalValue(tx: Transaction): number {
- const totalOutput = this.tx.vout.reduce((acc, v) => (v.value == null ? 0 : v.value) + acc, 0);
+ let totalOutput = this.tx.vout.reduce((acc, v) => (this.getOutputValue(v) || 0) + acc, 0);
// simple sum of outputs + fee for bitcoin
if (!this.isLiquid) {
return this.tx.fee ? totalOutput + this.tx.fee : totalOutput;
} else {
- const totalInput = this.tx.vin.reduce((acc, v) => (v?.prevout?.value == null ? 0 : v.prevout.value) + acc, 0);
- const confidentialInputCount = this.tx.vin.reduce((acc, v) => acc + (v?.prevout?.value == null ? 1 : 0), 0);
- const confidentialOutputCount = this.tx.vout.reduce((acc, v) => acc + (v.value == null ? 1 : 0), 0);
+ const totalInput = this.tx.vin.reduce((acc, v) => (this.getInputValue(v) || 0) + acc, 0);
+ const confidentialInputCount = this.tx.vin.reduce((acc, v) => acc + (this.isUnknownInputValue(v) ? 1 : 0), 0);
+ const confidentialOutputCount = this.tx.vout.reduce((acc, v) => acc + (this.isUnknownOutputValue(v) ? 1 : 0), 0);
// if there are unknowns on both sides, the total is indeterminate, so we'll just fudge it
if (confidentialInputCount && confidentialOutputCount) {
@@ -456,6 +461,34 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
}
}
+ getOutputValue(v: Vout): number | void {
+ if (!v) {
+ return null;
+ } else if (this.isLiquid && v.asset !== this.nativeAssetId) {
+ return null;
+ } else {
+ return v.value;
+ }
+ }
+
+ getInputValue(v: Vin): number | void {
+ if (!v?.prevout) {
+ return null;
+ } else if (this.isLiquid && v.prevout.asset !== this.nativeAssetId) {
+ return null;
+ } else {
+ return v.prevout.value;
+ }
+ }
+
+ isUnknownInputValue(v: Vin): boolean {
+ return v?.prevout?.value == null || this.isLiquid && v?.prevout?.asset !== this.nativeAssetId;
+ }
+
+ isUnknownOutputValue(v: Vout): boolean {
+ return v?.value == null || this.isLiquid && v?.asset !== this.nativeAssetId;
+ }
+
@HostListener('pointermove', ['$event'])
onPointerMove(event) {
if (this.dir === 'rtl') {
From 0bc244b9f16372b4f59f7159de27d3f707d7c136 Mon Sep 17 00:00:00 2001
From: nymkappa <1612910616@pm.me>
Date: Wed, 29 Mar 2023 15:10:59 +0900
Subject: [PATCH 13/25] Use window.location object instead of angular router
for default graph window preference setting
---
frontend/src/app/services/storage.service.ts | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/frontend/src/app/services/storage.service.ts b/frontend/src/app/services/storage.service.ts
index 73a013146..60d66b284 100644
--- a/frontend/src/app/services/storage.service.ts
+++ b/frontend/src/app/services/storage.service.ts
@@ -12,20 +12,22 @@ export class StorageService {
setDefaultValueIfNeeded(key: string, defaultValue: string) {
const graphWindowPreference: string = this.getValue(key);
+ const fragment = window.location.hash.replace('#', '');
+
if (graphWindowPreference === null) { // First visit to mempool.space
- if (this.router.url.includes('graphs') && key === 'graphWindowPreference' ||
- this.router.url.includes('pools') && key === 'miningWindowPreference'
+ if (window.location.pathname.includes('graphs') && key === 'graphWindowPreference' ||
+ window.location.pathname.includes('pools') && key === 'miningWindowPreference'
) {
- this.setValue(key, this.route.snapshot.fragment ? this.route.snapshot.fragment : defaultValue);
+ this.setValue(key, fragment ? fragment : defaultValue);
} else {
this.setValue(key, defaultValue);
}
- } else if (this.router.url.includes('graphs') && key === 'graphWindowPreference' ||
- this.router.url.includes('pools') && key === 'miningWindowPreference'
+ } else if (window.location.pathname.includes('graphs') && key === 'graphWindowPreference' ||
+ window.location.pathname.includes('pools') && key === 'miningWindowPreference'
) {
// Visit a different graphs#fragment from last visit
- if (this.route.snapshot.fragment !== null && graphWindowPreference !== this.route.snapshot.fragment) {
- this.setValue(key, this.route.snapshot.fragment);
+ if (fragment !== null && graphWindowPreference !== fragment) {
+ this.setValue(key, fragment);
}
}
}
From 7562407a0cff67397a928e51683c8b551ff0589d Mon Sep 17 00:00:00 2001
From: nymkappa <1612910616@pm.me>
Date: Sat, 18 Mar 2023 17:01:31 +0900
Subject: [PATCH 14/25] Show warning on testnet/signet
---
.../master-page/master-page.component.html | 15 +++++++++++++++
.../master-page/master-page.component.scss | 15 +++++++++++++++
.../master-page/master-page.component.ts | 6 ++++++
frontend/src/app/shared/shared.module.ts | 3 ++-
4 files changed, 38 insertions(+), 1 deletion(-)
diff --git a/frontend/src/app/components/master-page/master-page.component.html b/frontend/src/app/components/master-page/master-page.component.html
index 13935c04a..6f4e30d60 100644
--- a/frontend/src/app/components/master-page/master-page.component.html
+++ b/frontend/src/app/components/master-page/master-page.component.html
@@ -62,6 +62,21 @@
+
+
+
+
+
+ This is a test network. Coins have no value
+
+
+
+ ×
+
+
+
+
+
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 95f05245e..0f4fb840d 100644
--- a/frontend/src/app/components/master-page/master-page.component.scss
+++ b/frontend/src/app/components/master-page/master-page.component.scss
@@ -192,4 +192,19 @@ nav {
margin: 33px 0px 0px -19px;
font-size: 7px;
}
+}
+
+.close {
+ position: absolute;
+ color: black;
+ right: 10px;
+ top: 17px;
+ @media (max-width: 620px) {
+ right: 10px;
+ top: 0px;
+ };
+ @media (min-width: 992px) {
+ right: 10px;
+ top: 13px;
+ };
}
\ No newline at end of file
diff --git a/frontend/src/app/components/master-page/master-page.component.ts b/frontend/src/app/components/master-page/master-page.component.ts
index 34c525108..1fd040f47 100644
--- a/frontend/src/app/components/master-page/master-page.component.ts
+++ b/frontend/src/app/components/master-page/master-page.component.ts
@@ -4,6 +4,7 @@ import { Observable, merge, of } from 'rxjs';
import { LanguageService } from '../../services/language.service';
import { EnterpriseService } from '../../services/enterprise.service';
import { NavigationService } from '../../services/navigation.service';
+import { StorageService } from '../../services/storage.service';
@Component({
selector: 'app-master-page',
@@ -26,6 +27,7 @@ export class MasterPageComponent implements OnInit {
private languageService: LanguageService,
private enterpriseService: EnterpriseService,
private navigationService: NavigationService,
+ public storageService: StorageService
) { }
ngOnInit() {
@@ -46,4 +48,8 @@ export class MasterPageComponent implements OnInit {
onResize(event: any) {
this.isMobile = window.innerWidth <= 767.98;
}
+
+ dismissWarning() {
+ this.storageService.setValue('hideWarning', 'hidden');
+ }
}
diff --git a/frontend/src/app/shared/shared.module.ts b/frontend/src/app/shared/shared.module.ts
index 188942c02..8aa2fb173 100644
--- a/frontend/src/app/shared/shared.module.ts
+++ b/frontend/src/app/shared/shared.module.ts
@@ -4,7 +4,7 @@ import { NgbCollapseModule, NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstra
import { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome';
import { faFilter, faAngleDown, faAngleUp, faAngleRight, faAngleLeft, faBolt, faChartArea, faCogs, faCubes, faHammer, faDatabase, faExchangeAlt, faInfoCircle,
faLink, faList, faSearch, faCaretUp, faCaretDown, faTachometerAlt, faThList, faTint, faTv, faAngleDoubleDown, faSortUp, faAngleDoubleUp, faChevronDown,
- faFileAlt, faRedoAlt, faArrowAltCircleRight, faExternalLinkAlt, faBook, faListUl, faDownload, faQrcode, faArrowRightArrowLeft, faArrowsRotate, faCircleLeft } from '@fortawesome/free-solid-svg-icons';
+ faFileAlt, faRedoAlt, faArrowAltCircleRight, faExternalLinkAlt, faBook, faListUl, faDownload, faQrcode, faArrowRightArrowLeft, faArrowsRotate, faCircleLeft, faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
import { MasterPageComponent } from '../components/master-page/master-page.component';
import { PreviewTitleComponent } from '../components/master-page-preview/preview-title.component';
@@ -309,5 +309,6 @@ export class SharedModule {
library.addIcons(faQrcode);
library.addIcons(faArrowRightArrowLeft);
library.addIcons(faExchangeAlt);
+ library.addIcons(faExclamationTriangle);
}
}
From d9b4ad64bb7d6f4277e77134060c019cb7def9be Mon Sep 17 00:00:00 2001
From: nymkappa <1612910616@pm.me>
Date: Thu, 16 Mar 2023 14:35:09 +0900
Subject: [PATCH 15/25] Fix % on heap limit warn
---
backend/src/index.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backend/src/index.ts b/backend/src/index.ts
index a34ffd21b..a7f805313 100644
--- a/backend/src/index.ts
+++ b/backend/src/index.ts
@@ -276,7 +276,7 @@ class Server {
if (!this.warnedHeapCritical && this.maxHeapSize > warnThreshold) {
this.warnedHeapCritical = true;
- logger.warn(`Used ${(this.maxHeapSize / stats.heap_size_limit).toFixed(2)}% of heap limit (${formatBytes(this.maxHeapSize, byteUnits, true)} / ${formatBytes(stats.heap_size_limit, byteUnits)})!`);
+ logger.warn(`Used ${(this.maxHeapSize / stats.heap_size_limit * 100).toFixed(2)}% of heap limit (${formatBytes(this.maxHeapSize, byteUnits, true)} / ${formatBytes(stats.heap_size_limit, byteUnits)})!`);
}
if (this.lastHeapLogTime === null || (now - this.lastHeapLogTime) > (this.heapLogInterval * 1000)) {
logger.debug(`Memory usage: ${formatBytes(this.maxHeapSize, byteUnits)} / ${formatBytes(stats.heap_size_limit, byteUnits)}`);
From 9e4fe40ca396bf9305dad75de7d97285de688857 Mon Sep 17 00:00:00 2001
From: nymkappa <1612910616@pm.me>
Date: Sun, 19 Mar 2023 10:46:38 +0900
Subject: [PATCH 16/25] When a re-org happens, keep the block templates for
audit
---
backend/src/api/blocks.ts | 6 ++--
backend/src/repositories/BlocksRepository.ts | 29 ++-----------------
.../repositories/BlocksSummariesRepository.ts | 14 +++++----
.../src/repositories/HashratesRepository.ts | 2 +-
4 files changed, 16 insertions(+), 35 deletions(-)
diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts
index eee5dae6e..dacf1bfd5 100644
--- a/backend/src/api/blocks.ts
+++ b/backend/src/api/blocks.ts
@@ -589,11 +589,11 @@ class Blocks {
if (!fastForwarded) {
const lastBlock = await blocksRepository.$getBlockByHeight(blockExtended.height - 1);
if (lastBlock !== null && blockExtended.previousblockhash !== lastBlock.id) {
- logger.warn(`Chain divergence detected at block ${lastBlock.height}, re-indexing most recent data`);
+ logger.warn(`Chain divergence detected at block ${lastBlock.height}, re-indexing most recent data`, logger.tags.mining);
// We assume there won't be a reorg with more than 10 block depth
await BlocksRepository.$deleteBlocksFrom(lastBlock.height - 10);
await HashratesRepository.$deleteLastEntries();
- await BlocksSummariesRepository.$deleteBlocksFrom(lastBlock.height - 10);
+ await BlocksSummariesRepository.$deleteTransactionsFrom(lastBlock.height - 10); // Will be re-index in formatDbBlockIntoExtendedBlock()
await cpfpRepository.$deleteClustersFrom(lastBlock.height - 10);
for (let i = 10; i >= 0; --i) {
const newBlock = await this.$indexBlock(lastBlock.height - i);
@@ -604,7 +604,7 @@ class Blocks {
}
await mining.$indexDifficultyAdjustments();
await DifficultyAdjustmentsRepository.$deleteLastAdjustment();
- logger.info(`Re-indexed 10 blocks and summaries. Also re-indexed the last difficulty adjustments. Will re-index latest hashrates in a few seconds.`);
+ logger.info(`Re-indexed 10 blocks and summaries. Also re-indexed the last difficulty adjustments. Will re-index latest hashrates in a few seconds.`, logger.tags.mining);
indexer.reindex();
}
await blocksRepository.$saveBlockInDatabase(blockExtended);
diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts
index 4758c0708..8d87c9537 100644
--- a/backend/src/repositories/BlocksRepository.ts
+++ b/backend/src/repositories/BlocksRepository.ts
@@ -466,30 +466,6 @@ class BlocksRepository {
}
}
- /**
- * Get one block by hash
- */
- public async $getBlockByHash(hash: string): Promise {
- try {
- const query = `
- SELECT ${BLOCK_DB_FIELDS}
- FROM blocks
- JOIN pools ON blocks.pool_id = pools.id
- WHERE hash = ?;
- `;
- const [rows]: any[] = await DB.query(query, [hash]);
-
- if (rows.length <= 0) {
- return null;
- }
-
- return await this.formatDbBlockIntoExtendedBlock(rows[0]);
- } catch (e) {
- logger.err(`Cannot get indexed block ${hash}. Reason: ` + (e instanceof Error ? e.message : e));
- throw e;
- }
- }
-
/**
* Return blocks difficulty
*/
@@ -599,7 +575,7 @@ class BlocksRepository {
if (blocks[idx].previous_block_hash !== blocks[idx - 1].hash) {
logger.warn(`Chain divergence detected at block ${blocks[idx - 1].height}`);
await this.$deleteBlocksFrom(blocks[idx - 1].height);
- await BlocksSummariesRepository.$deleteBlocksFrom(blocks[idx - 1].height);
+ await BlocksSummariesRepository.$deleteTransactionsFrom(blocks[idx - 1].height);
await HashratesRepository.$deleteHashratesFromTimestamp(blocks[idx - 1].timestamp - 604800);
await DifficultyAdjustmentsRepository.$deleteAdjustementsFromHeight(blocks[idx - 1].height);
return false;
@@ -619,7 +595,7 @@ class BlocksRepository {
* Delete blocks from the database from blockHeight
*/
public async $deleteBlocksFrom(blockHeight: number) {
- logger.info(`Delete newer blocks from height ${blockHeight} from the database`);
+ logger.info(`Delete newer blocks from height ${blockHeight} from the database`, logger.tags.mining);
try {
await DB.query(`DELETE FROM blocks where height >= ${blockHeight}`);
@@ -997,6 +973,7 @@ class BlocksRepository {
}
// If we're missing block summary related field, check if we can populate them on the fly now
+ // This is for example triggered upon re-org
if (Common.blocksSummariesIndexingEnabled() &&
(extras.medianFeeAmt === null || extras.feePercentiles === null))
{
diff --git a/backend/src/repositories/BlocksSummariesRepository.ts b/backend/src/repositories/BlocksSummariesRepository.ts
index 2724ddcf5..b583a5f2c 100644
--- a/backend/src/repositories/BlocksSummariesRepository.ts
+++ b/backend/src/repositories/BlocksSummariesRepository.ts
@@ -17,7 +17,7 @@ class BlocksSummariesRepository {
return undefined;
}
- public async $saveSummary(params: { height: number, mined?: BlockSummary}) {
+ public async $saveSummary(params: { height: number, mined?: BlockSummary}): Promise {
const blockId = params.mined?.id;
try {
const transactions = JSON.stringify(params.mined?.transactions || []);
@@ -71,13 +71,17 @@ class BlocksSummariesRepository {
/**
* Delete blocks from the database from blockHeight
*/
- public async $deleteBlocksFrom(blockHeight: number) {
- logger.info(`Delete newer blocks summary from height ${blockHeight} from the database`);
+ public async $deleteTransactionsFrom(blockHeight: number): Promise {
+ logger.info(`Delete blocks summaries transactions from height ${blockHeight} from the database, but keep templates`, logger.tags.mining);
try {
- await DB.query(`DELETE FROM blocks_summaries where height >= ${blockHeight}`);
+ await DB.query(`
+ UPDATE blocks_summaries
+ SET transactions = '[]'
+ WHERE height >= ${blockHeight}
+ `);
} catch (e) {
- logger.err('Cannot delete indexed blocks summaries. Reason: ' + (e instanceof Error ? e.message : e));
+ logger.err('Cannot delete blocks summaries transactions. Reason: ' + (e instanceof Error ? e.message : e));
}
}
diff --git a/backend/src/repositories/HashratesRepository.ts b/backend/src/repositories/HashratesRepository.ts
index 875f77b34..96cbf6f75 100644
--- a/backend/src/repositories/HashratesRepository.ts
+++ b/backend/src/repositories/HashratesRepository.ts
@@ -220,7 +220,7 @@ class HashratesRepository {
* Delete hashrates from the database from timestamp
*/
public async $deleteHashratesFromTimestamp(timestamp: number) {
- logger.info(`Delete newer hashrates from timestamp ${new Date(timestamp * 1000).toUTCString()} from the database`);
+ logger.info(`Delete newer hashrates from timestamp ${new Date(timestamp * 1000).toUTCString()} from the database`, logger.tags.mining);
try {
await DB.query(`DELETE FROM hashrates WHERE hashrate_timestamp >= FROM_UNIXTIME(?)`, [timestamp]);
From ea2193a42da6f679d7e2466962bb62cfb99d5bca Mon Sep 17 00:00:00 2001
From: nymkappa <1612910616@pm.me>
Date: Mon, 27 Mar 2023 20:02:33 +0900
Subject: [PATCH 17/25] Add missing sanity check when fetching single price
datapoint
---
backend/src/repositories/PricesRepository.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backend/src/repositories/PricesRepository.ts b/backend/src/repositories/PricesRepository.ts
index 4cbc06afd..ed9d1fd72 100644
--- a/backend/src/repositories/PricesRepository.ts
+++ b/backend/src/repositories/PricesRepository.ts
@@ -160,7 +160,7 @@ class PricesRepository {
// Compute fiat exchange rates
let latestPrice = rates[0] as ApiPrice;
- if (latestPrice.USD === -1) {
+ if (!latestPrice || latestPrice.USD === -1) {
latestPrice = priceUpdater.getEmptyPricesObj();
}
From 96121a86f8de51edd60592b87c2cccb5b9b4632f Mon Sep 17 00:00:00 2001
From: nymkappa <1612910616@pm.me>
Date: Wed, 29 Mar 2023 17:35:49 +0900
Subject: [PATCH 18/25] Fix search 1wizS test
---
frontend/cypress/e2e/mainnet/mainnet.spec.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/frontend/cypress/e2e/mainnet/mainnet.spec.ts b/frontend/cypress/e2e/mainnet/mainnet.spec.ts
index 71a35ba86..3319b4835 100644
--- a/frontend/cypress/e2e/mainnet/mainnet.spec.ts
+++ b/frontend/cypress/e2e/mainnet/mainnet.spec.ts
@@ -127,7 +127,7 @@ describe('Mainnet', () => {
cy.get('.search-box-container > .form-control').type('S').then(() => {
cy.wait('@search-1wizS');
- cy.get('app-search-results button.dropdown-item').should('have.length', 5);
+ cy.get('app-search-results button.dropdown-item').should('have.length', 6);
});
cy.get('.search-box-container > .form-control').type('A').then(() => {
From aba49897f9f2e145b7615504ae7564d4907a61b1 Mon Sep 17 00:00:00 2001
From: nymkappa <1612910616@pm.me>
Date: Thu, 30 Mar 2023 17:07:34 +0900
Subject: [PATCH 19/25] Fix infinite scroll transaction list component
---
.../transactions-list/transactions-list.component.html | 6 +++++-
.../transactions-list/transactions-list.component.ts | 9 +--------
2 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/frontend/src/app/components/transactions-list/transactions-list.component.html b/frontend/src/app/components/transactions-list/transactions-list.component.html
index cb54e1870..adadf0a1c 100644
--- a/frontend/src/app/components/transactions-list/transactions-list.component.html
+++ b/frontend/src/app/components/transactions-list/transactions-list.component.html
@@ -1,3 +1,5 @@
+
+
-