Merge branch 'master' into simon/populate-historical-node-data

This commit is contained in:
wiz 2022-07-11 15:58:58 +02:00 committed by GitHub
commit 46bed0be29
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 45 additions and 28 deletions

View File

@ -527,13 +527,12 @@ class Blocks {
} }
} }
let block = await bitcoinClient.getBlock(hash);
// Not Bitcoin network, return the block as it // Not Bitcoin network, return the block as it
if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) { if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) {
return block; return await bitcoinApi.$getBlock(hash);
} }
let block = await bitcoinClient.getBlock(hash);
block = prepareBlock(block); block = prepareBlock(block);
// Bitcoin network, add our custom data on top // Bitcoin network, add our custom data on top
@ -547,8 +546,8 @@ class Blocks {
return blockExtended; return blockExtended;
} }
public async $getStrippedBlockTransactions(hash: string, skipMemoryCache: boolean = false, public async $getStrippedBlockTransactions(hash: string, skipMemoryCache = false,
skipDBLookup: boolean = false): Promise<TransactionStripped[]> skipDBLookup = false): Promise<TransactionStripped[]>
{ {
if (skipMemoryCache === false) { if (skipMemoryCache === false) {
// Check the memory cache // Check the memory cache

View File

@ -172,7 +172,7 @@ export class Common {
static indexingEnabled(): boolean { static indexingEnabled(): boolean {
return ( return (
['mainnet', 'testnet', 'signet', 'regtest'].includes(config.MEMPOOL.NETWORK) && ['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) &&
config.DATABASE.ENABLED === true && config.DATABASE.ENABLED === true &&
config.MEMPOOL.INDEXING_BLOCKS_AMOUNT !== 0 config.MEMPOOL.INDEXING_BLOCKS_AMOUNT !== 0
); );

View File

@ -761,7 +761,19 @@ class Routes {
public async getBlock(req: Request, res: Response) { public async getBlock(req: Request, res: Response) {
try { try {
const block = await blocks.$getBlock(req.params.hash); const block = await blocks.$getBlock(req.params.hash);
res.setHeader('Expires', new Date(Date.now() + 1000 * 600).toUTCString());
const blockAge = new Date().getTime() / 1000 - block.timestamp;
const day = 24 * 3600;
let cacheDuration;
if (blockAge > 365 * day) {
cacheDuration = 30 * day;
} else if (blockAge > 30 * day) {
cacheDuration = 10 * day;
} else {
cacheDuration = 600
}
res.setHeader('Expires', new Date(Date.now() + 1000 * cacheDuration).toUTCString());
res.json(block); res.json(block);
} catch (e) { } catch (e) {
res.status(500).send(e instanceof Error ? e.message : e); res.status(500).send(e instanceof Error ? e.message : e);

View File

@ -6588,11 +6588,11 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
}, },
"node_modules/common-shakeify": { "node_modules/common-shakeify": {
"version": "0.6.2", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/common-shakeify/-/common-shakeify-0.6.2.tgz", "resolved": "https://registry.npmjs.org/common-shakeify/-/common-shakeify-1.1.1.tgz",
"integrity": "sha512-vxlXr26fqxm8ZJ0jh8MlvpeN6IbyUKqsVmgb4rAjDM/0f4nKebiHaAXpF/Mm86W9ENR5iSI7UOnUTylpVyplUA==", "integrity": "sha512-M9hTU14RkpKvNggSU4zJIzgm89inwjnhipxvKxCNms/gM77R7keRqOqGYIM/Jr4BBhtbZB8ZF//raYqAbHk/DA==",
"dependencies": { "dependencies": {
"@goto-bus-stop/common-shake": "^2.2.0", "@goto-bus-stop/common-shake": "^2.3.0",
"convert-source-map": "^1.5.1", "convert-source-map": "^1.5.1",
"through2": "^2.0.3", "through2": "^2.0.3",
"transform-ast": "^2.4.3", "transform-ast": "^2.4.3",
@ -8603,7 +8603,7 @@
"node_modules/escope": { "node_modules/escope": {
"version": "3.6.0", "version": "3.6.0",
"resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
"integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", "integrity": "sha512-75IUQsusDdalQEW/G/2esa87J7raqdJF+Ca0/Xm5C3Q58Nr4yVYjZGp/P1+2xiEVgXRrA39dpRb8LcshajbqDQ==",
"dependencies": { "dependencies": {
"es6-map": "^0.1.3", "es6-map": "^0.1.3",
"es6-weak-map": "^2.0.1", "es6-weak-map": "^2.0.1",
@ -16304,15 +16304,15 @@
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
}, },
"node_modules/tinyify": { "node_modules/tinyify": {
"version": "3.0.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/tinyify/-/tinyify-3.0.0.tgz", "resolved": "https://registry.npmjs.org/tinyify/-/tinyify-3.1.0.tgz",
"integrity": "sha512-RtjVjC1xwwxt8AMVfxEmo+FzRJB6p5sAOtFaJj8vMrkWShtArsM4dLVRWhx2Vc07Me3NWgmP7pi9UPm/a2XNNA==", "integrity": "sha512-r4tHoDkWhhoItWbxJ3KCHXask3hJN7gCUkR5PLfnQzQagTA6oDkzhCbiEDHkMqo7Ck7vVSA1pTP1gDc9p1AC1w==",
"dependencies": { "dependencies": {
"@goto-bus-stop/envify": "^5.0.0", "@goto-bus-stop/envify": "^5.0.0",
"acorn-node": "^1.8.2", "acorn-node": "^1.8.2",
"browser-pack-flat": "^3.0.9", "browser-pack-flat": "^3.0.9",
"bundle-collapser": "^1.3.0", "bundle-collapser": "^1.3.0",
"common-shakeify": "^0.6.0", "common-shakeify": "^1.1.1",
"dash-ast": "^1.0.0", "dash-ast": "^1.0.0",
"minify-stream": "^2.0.1", "minify-stream": "^2.0.1",
"multisplice": "^1.0.0", "multisplice": "^1.0.0",
@ -22670,11 +22670,11 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
}, },
"common-shakeify": { "common-shakeify": {
"version": "0.6.2", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/common-shakeify/-/common-shakeify-0.6.2.tgz", "resolved": "https://registry.npmjs.org/common-shakeify/-/common-shakeify-1.1.1.tgz",
"integrity": "sha512-vxlXr26fqxm8ZJ0jh8MlvpeN6IbyUKqsVmgb4rAjDM/0f4nKebiHaAXpF/Mm86W9ENR5iSI7UOnUTylpVyplUA==", "integrity": "sha512-M9hTU14RkpKvNggSU4zJIzgm89inwjnhipxvKxCNms/gM77R7keRqOqGYIM/Jr4BBhtbZB8ZF//raYqAbHk/DA==",
"requires": { "requires": {
"@goto-bus-stop/common-shake": "^2.2.0", "@goto-bus-stop/common-shake": "^2.3.0",
"convert-source-map": "^1.5.1", "convert-source-map": "^1.5.1",
"through2": "^2.0.3", "through2": "^2.0.3",
"transform-ast": "^2.4.3", "transform-ast": "^2.4.3",
@ -24256,7 +24256,7 @@
"escope": { "escope": {
"version": "3.6.0", "version": "3.6.0",
"resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
"integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", "integrity": "sha512-75IUQsusDdalQEW/G/2esa87J7raqdJF+Ca0/Xm5C3Q58Nr4yVYjZGp/P1+2xiEVgXRrA39dpRb8LcshajbqDQ==",
"requires": { "requires": {
"es6-map": "^0.1.3", "es6-map": "^0.1.3",
"es6-weak-map": "^2.0.1", "es6-weak-map": "^2.0.1",
@ -30040,15 +30040,15 @@
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
}, },
"tinyify": { "tinyify": {
"version": "3.0.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/tinyify/-/tinyify-3.0.0.tgz", "resolved": "https://registry.npmjs.org/tinyify/-/tinyify-3.1.0.tgz",
"integrity": "sha512-RtjVjC1xwwxt8AMVfxEmo+FzRJB6p5sAOtFaJj8vMrkWShtArsM4dLVRWhx2Vc07Me3NWgmP7pi9UPm/a2XNNA==", "integrity": "sha512-r4tHoDkWhhoItWbxJ3KCHXask3hJN7gCUkR5PLfnQzQagTA6oDkzhCbiEDHkMqo7Ck7vVSA1pTP1gDc9p1AC1w==",
"requires": { "requires": {
"@goto-bus-stop/envify": "^5.0.0", "@goto-bus-stop/envify": "^5.0.0",
"acorn-node": "^1.8.2", "acorn-node": "^1.8.2",
"browser-pack-flat": "^3.0.9", "browser-pack-flat": "^3.0.9",
"bundle-collapser": "^1.3.0", "bundle-collapser": "^1.3.0",
"common-shakeify": "^0.6.0", "common-shakeify": "^1.1.1",
"dash-ast": "^1.0.0", "dash-ast": "^1.0.0",
"minify-stream": "^2.0.1", "minify-stream": "^2.0.1",
"multisplice": "^1.0.0", "multisplice": "^1.0.0",

View File

@ -1,10 +1,10 @@
<div *ngIf="stateService.env.MINING_DASHBOARD || stateService.env.LIGHTNING" class="mb-3 d-flex menu" <div *ngIf="stateService.env.MINING_DASHBOARD || stateService.env.LIGHTNING" class="mb-3 d-flex menu"
style="padding: 0px 35px;"> style="padding: 0px 35px;">
<a routerLinkActive="active" class="btn btn-primary w-50 mr-1" <a routerLinkActive="active" class="btn btn-primary mr-1" [class]="padding"
[routerLink]="['/graphs/mempool' | relativeUrl]">Mempool</a> [routerLink]="['/graphs/mempool' | relativeUrl]">Mempool</a>
<div ngbDropdown class="w-50" *ngIf="stateService.env.MINING_DASHBOARD"> <div ngbDropdown class="mr-1" [class]="padding" *ngIf="stateService.env.MINING_DASHBOARD">
<button class="btn btn-primary w-100" id="dropdownBasic1" ngbDropdownToggle i18n="mining">Mining</button> <button class="btn btn-primary w-100" id="dropdownBasic1" ngbDropdownToggle i18n="mining">Mining</button>
<div ngbDropdownMenu aria-labelledby="dropdownBasic1"> <div ngbDropdownMenu aria-labelledby="dropdownBasic1">
<a class="dropdown-item" routerLinkActive="active" [routerLink]="['/graphs/mining/pools' | relativeUrl]" <a class="dropdown-item" routerLinkActive="active" [routerLink]="['/graphs/mining/pools' | relativeUrl]"
@ -27,7 +27,7 @@
</div> </div>
</div> </div>
<div ngbDropdown class="w-50" *ngIf="stateService.env.LIGHTNING"> <div ngbDropdown [class]="padding" *ngIf="stateService.env.LIGHTNING">
<button class="btn btn-primary w-100" id="dropdownBasic1" ngbDropdownToggle i18n="lightning">Lightning</button> <button class="btn btn-primary w-100" id="dropdownBasic1" ngbDropdownToggle i18n="lightning">Lightning</button>
<div ngbDropdownMenu aria-labelledby="dropdownBasic1"> <div ngbDropdownMenu aria-labelledby="dropdownBasic1">
<a class="dropdown-item" routerLinkActive="active" [routerLink]="['/graphs/lightning/nodes-networks' | relativeUrl]" <a class="dropdown-item" routerLinkActive="active" [routerLink]="['/graphs/lightning/nodes-networks' | relativeUrl]"

View File

@ -8,6 +8,8 @@ import { WebsocketService } from "src/app/services/websocket.service";
styleUrls: ['./graphs.component.scss'], styleUrls: ['./graphs.component.scss'],
}) })
export class GraphsComponent implements OnInit { export class GraphsComponent implements OnInit {
padding = 'w-50';
constructor( constructor(
public stateService: StateService, public stateService: StateService,
private websocketService: WebsocketService private websocketService: WebsocketService
@ -15,5 +17,9 @@ export class GraphsComponent implements OnInit {
ngOnInit(): void { ngOnInit(): void {
this.websocketService.want(['blocks']); this.websocketService.want(['blocks']);
if (this.stateService.env.MINING_DASHBOARD === true && this.stateService.env.LIGHTNING === true) {
this.padding = 'w-33';
}
} }
} }