Merge branch 'master' into simon/populate-historical-node-data
This commit is contained in:
commit
46bed0be29
@ -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
|
||||||
|
@ -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
|
||||||
);
|
);
|
||||||
|
@ -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);
|
||||||
|
36
frontend/package-lock.json
generated
36
frontend/package-lock.json
generated
@ -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",
|
||||||
|
@ -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]"
|
||||||
|
@ -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';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user