Merge branch 'master' into natsoni/fix-tooltip-timeline
This commit is contained in:
commit
510b4adcea
@ -28,7 +28,7 @@
|
|||||||
"POOLS_JSON_URL": "https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json",
|
"POOLS_JSON_URL": "https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json",
|
||||||
"POOLS_JSON_TREE_URL": "https://api.github.com/repos/mempool/mining-pools/git/trees/master",
|
"POOLS_JSON_TREE_URL": "https://api.github.com/repos/mempool/mining-pools/git/trees/master",
|
||||||
"AUDIT": false,
|
"AUDIT": false,
|
||||||
"RUST_GBT": false,
|
"RUST_GBT": true,
|
||||||
"LIMIT_GBT": false,
|
"LIMIT_GBT": false,
|
||||||
"CPFP_INDEXING": false,
|
"CPFP_INDEXING": false,
|
||||||
"DISK_CACHE_BLOCK_INTERVAL": 6,
|
"DISK_CACHE_BLOCK_INTERVAL": 6,
|
||||||
|
@ -42,7 +42,7 @@ describe('Mempool Backend Config', () => {
|
|||||||
POOLS_JSON_TREE_URL: 'https://api.github.com/repos/mempool/mining-pools/git/trees/master',
|
POOLS_JSON_TREE_URL: 'https://api.github.com/repos/mempool/mining-pools/git/trees/master',
|
||||||
POOLS_JSON_URL: 'https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json',
|
POOLS_JSON_URL: 'https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json',
|
||||||
AUDIT: false,
|
AUDIT: false,
|
||||||
RUST_GBT: false,
|
RUST_GBT: true,
|
||||||
LIMIT_GBT: false,
|
LIMIT_GBT: false,
|
||||||
CPFP_INDEXING: false,
|
CPFP_INDEXING: false,
|
||||||
MAX_BLOCKS_BULK_QUERY: 0,
|
MAX_BLOCKS_BULK_QUERY: 0,
|
||||||
|
@ -121,6 +121,7 @@ class TransactionUtils {
|
|||||||
const adjustedVsize = Math.max(fractionalVsize, sigops * 5); // adjusted vsize = Max(weight, sigops * bytes_per_sigop) / witness_scale_factor
|
const adjustedVsize = Math.max(fractionalVsize, sigops * 5); // adjusted vsize = Max(weight, sigops * bytes_per_sigop) / witness_scale_factor
|
||||||
const feePerVbytes = (transaction.fee || 0) / fractionalVsize;
|
const feePerVbytes = (transaction.fee || 0) / fractionalVsize;
|
||||||
const adjustedFeePerVsize = (transaction.fee || 0) / adjustedVsize;
|
const adjustedFeePerVsize = (transaction.fee || 0) / adjustedVsize;
|
||||||
|
const effectiveFeePerVsize = transaction['effectiveFeePerVsize'] || adjustedFeePerVsize || feePerVbytes;
|
||||||
const transactionExtended: MempoolTransactionExtended = Object.assign(transaction, {
|
const transactionExtended: MempoolTransactionExtended = Object.assign(transaction, {
|
||||||
order: this.txidToOrdering(transaction.txid),
|
order: this.txidToOrdering(transaction.txid),
|
||||||
vsize,
|
vsize,
|
||||||
@ -128,7 +129,7 @@ class TransactionUtils {
|
|||||||
sigops,
|
sigops,
|
||||||
feePerVsize: feePerVbytes,
|
feePerVsize: feePerVbytes,
|
||||||
adjustedFeePerVsize: adjustedFeePerVsize,
|
adjustedFeePerVsize: adjustedFeePerVsize,
|
||||||
effectiveFeePerVsize: adjustedFeePerVsize,
|
effectiveFeePerVsize: effectiveFeePerVsize,
|
||||||
});
|
});
|
||||||
if (!transactionExtended?.status?.confirmed && !transactionExtended.firstSeen) {
|
if (!transactionExtended?.status?.confirmed && !transactionExtended.firstSeen) {
|
||||||
transactionExtended.firstSeen = Math.round((Date.now() / 1000));
|
transactionExtended.firstSeen = Math.round((Date.now() / 1000));
|
||||||
|
@ -193,7 +193,7 @@ const defaults: IConfig = {
|
|||||||
'POOLS_JSON_URL': 'https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json',
|
'POOLS_JSON_URL': 'https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json',
|
||||||
'POOLS_JSON_TREE_URL': 'https://api.github.com/repos/mempool/mining-pools/git/trees/master',
|
'POOLS_JSON_TREE_URL': 'https://api.github.com/repos/mempool/mining-pools/git/trees/master',
|
||||||
'AUDIT': false,
|
'AUDIT': false,
|
||||||
'RUST_GBT': false,
|
'RUST_GBT': true,
|
||||||
'LIMIT_GBT': false,
|
'LIMIT_GBT': false,
|
||||||
'CPFP_INDEXING': false,
|
'CPFP_INDEXING': false,
|
||||||
'MAX_BLOCKS_BULK_QUERY': 0,
|
'MAX_BLOCKS_BULK_QUERY': 0,
|
||||||
|
@ -30,7 +30,7 @@ __MEMPOOL_AUTOMATIC_POOLS_UPDATE__=${MEMPOOL_AUTOMATIC_POOLS_UPDATE:=false}
|
|||||||
__MEMPOOL_POOLS_JSON_URL__=${MEMPOOL_POOLS_JSON_URL:=https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json}
|
__MEMPOOL_POOLS_JSON_URL__=${MEMPOOL_POOLS_JSON_URL:=https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json}
|
||||||
__MEMPOOL_POOLS_JSON_TREE_URL__=${MEMPOOL_POOLS_JSON_TREE_URL:=https://api.github.com/repos/mempool/mining-pools/git/trees/master}
|
__MEMPOOL_POOLS_JSON_TREE_URL__=${MEMPOOL_POOLS_JSON_TREE_URL:=https://api.github.com/repos/mempool/mining-pools/git/trees/master}
|
||||||
__MEMPOOL_AUDIT__=${MEMPOOL_AUDIT:=false}
|
__MEMPOOL_AUDIT__=${MEMPOOL_AUDIT:=false}
|
||||||
__MEMPOOL_RUST_GBT__=${MEMPOOL_RUST_GBT:=false}
|
__MEMPOOL_RUST_GBT__=${MEMPOOL_RUST_GBT:=true}
|
||||||
__MEMPOOL_LIMIT_GBT__=${MEMPOOL_LIMIT_GBT:=false}
|
__MEMPOOL_LIMIT_GBT__=${MEMPOOL_LIMIT_GBT:=false}
|
||||||
__MEMPOOL_CPFP_INDEXING__=${MEMPOOL_CPFP_INDEXING:=false}
|
__MEMPOOL_CPFP_INDEXING__=${MEMPOOL_CPFP_INDEXING:=false}
|
||||||
__MEMPOOL_MAX_BLOCKS_BULK_QUERY__=${MEMPOOL_MAX_BLOCKS_BULK_QUERY:=0}
|
__MEMPOOL_MAX_BLOCKS_BULK_QUERY__=${MEMPOOL_MAX_BLOCKS_BULK_QUERY:=0}
|
||||||
|
@ -219,9 +219,13 @@ export class AddressComponent implements OnInit, OnDestroy {
|
|||||||
address.is_pubkey
|
address.is_pubkey
|
||||||
? this.electrsApiService.getScriptHashTransactions$((address.address.length === 66 ? '21' : '41') + address.address + 'ac')
|
? this.electrsApiService.getScriptHashTransactions$((address.address.length === 66 ? '21' : '41') + address.address + 'ac')
|
||||||
: this.electrsApiService.getAddressTransactions$(address.address),
|
: this.electrsApiService.getAddressTransactions$(address.address),
|
||||||
utxoCount >= 2 && utxoCount <= 500 ? (address.is_pubkey
|
(utxoCount >= 2 && utxoCount <= 500 ? (address.is_pubkey
|
||||||
? this.electrsApiService.getScriptHashUtxos$((address.address.length === 66 ? '21' : '41') + address.address + 'ac')
|
? this.electrsApiService.getScriptHashUtxos$((address.address.length === 66 ? '21' : '41') + address.address + 'ac')
|
||||||
: this.electrsApiService.getAddressUtxos$(address.address)) : of([])
|
: this.electrsApiService.getAddressUtxos$(address.address)) : of([])).pipe(
|
||||||
|
catchError(() => {
|
||||||
|
return of([]);
|
||||||
|
})
|
||||||
|
)
|
||||||
]);
|
]);
|
||||||
}),
|
}),
|
||||||
switchMap(([transactions, utxos]) => {
|
switchMap(([transactions, utxos]) => {
|
||||||
|
@ -85,7 +85,6 @@
|
|||||||
<li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-home" *ngIf="network.val === '' && stateService.env.ACCELERATOR">
|
<li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-home" *ngIf="network.val === '' && stateService.env.ACCELERATOR">
|
||||||
<a class="nav-link" [routerLink]="['/acceleration' | relativeUrl]" (click)="collapse()">
|
<a class="nav-link" [routerLink]="['/acceleration' | relativeUrl]" (click)="collapse()">
|
||||||
<fa-icon [icon]="['fas', 'rocket']" [fixedWidth]="true" i18n-title="master-page.accelerator-dashboard" title="Accelerator Dashboard"></fa-icon>
|
<fa-icon [icon]="['fas', 'rocket']" [fixedWidth]="true" i18n-title="master-page.accelerator-dashboard" title="Accelerator Dashboard"></fa-icon>
|
||||||
<span class="badge badge-pill badge-warning beta" i18n="beta">beta</span>
|
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-pools" *ngIf="stateService.env.MINING_DASHBOARD">
|
<li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-pools" *ngIf="stateService.env.MINING_DASHBOARD">
|
||||||
|
@ -165,7 +165,7 @@ export class ServicesApiServices {
|
|||||||
return this.getAccelerationHistoryObserveResponse$({...params, page}).pipe(
|
return this.getAccelerationHistoryObserveResponse$({...params, page}).pipe(
|
||||||
map((response) => ({
|
map((response) => ({
|
||||||
page,
|
page,
|
||||||
total: parseInt(response.headers.get('X-Total-Count'), 10),
|
total: parseInt(response.headers.get('X-Total-Count'), 10) || 0,
|
||||||
accelerations: accelerations.concat(response.body || []),
|
accelerations: accelerations.concat(response.body || []),
|
||||||
})),
|
})),
|
||||||
switchMap(({page, total, accelerations}) => {
|
switchMap(({page, total, accelerations}) => {
|
||||||
|
@ -8,7 +8,7 @@ export class BitcoinsatoshisPipe implements PipeTransform {
|
|||||||
|
|
||||||
constructor(private sanitizer: DomSanitizer) { }
|
constructor(private sanitizer: DomSanitizer) { }
|
||||||
|
|
||||||
transform(value: string): SafeHtml {
|
transform(value: string, firstPartClass?: string): SafeHtml {
|
||||||
const newValue = this.insertSpaces(parseFloat(value || '0').toFixed(8));
|
const newValue = this.insertSpaces(parseFloat(value || '0').toFixed(8));
|
||||||
const position = (newValue || '0').search(/[1-9]/);
|
const position = (newValue || '0').search(/[1-9]/);
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ export class BitcoinsatoshisPipe implements PipeTransform {
|
|||||||
const secondPart = newValue.slice(position);
|
const secondPart = newValue.slice(position);
|
||||||
|
|
||||||
return this.sanitizer.bypassSecurityTrustHtml(
|
return this.sanitizer.bypassSecurityTrustHtml(
|
||||||
`<span class="text-secondary">${firstPart}</span>${secondPart}`
|
`<span class="${firstPartClass ? firstPartClass : 'text-secondary'}">${firstPart}</span>${secondPart}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -365,6 +365,7 @@ import { OnlyVsizeDirective, OnlyWeightDirective } from './components/weight-dir
|
|||||||
TwitterWidgetComponent,
|
TwitterWidgetComponent,
|
||||||
TwitterLogin,
|
TwitterLogin,
|
||||||
BitcoinInvoiceComponent,
|
BitcoinInvoiceComponent,
|
||||||
|
BitcoinsatoshisPipe,
|
||||||
|
|
||||||
MempoolBlockOverviewComponent,
|
MempoolBlockOverviewComponent,
|
||||||
ClockchainComponent,
|
ClockchainComponent,
|
||||||
|
@ -92,6 +92,7 @@ location @mempool-api-v1-services-cache-disabled-addcors {
|
|||||||
set $cors_methods 'GET, POST, PUT, DELETE, OPTIONS';
|
set $cors_methods 'GET, POST, PUT, DELETE, OPTIONS';
|
||||||
set $cors_origin 'https://mempool.space';
|
set $cors_origin 'https://mempool.space';
|
||||||
set $cors_headers 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With';
|
set $cors_headers 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With';
|
||||||
|
set $cors_expose_headers 'X-Total-Count';
|
||||||
set $cors_credentials 'true';
|
set $cors_credentials 'true';
|
||||||
|
|
||||||
# set CORS for approved hostnames
|
# set CORS for approved hostnames
|
||||||
@ -100,6 +101,7 @@ location @mempool-api-v1-services-cache-disabled-addcors {
|
|||||||
set $cors_methods 'GET, POST, PUT, DELETE, OPTIONS';
|
set $cors_methods 'GET, POST, PUT, DELETE, OPTIONS';
|
||||||
set $cors_origin "$http_origin";
|
set $cors_origin "$http_origin";
|
||||||
set $cors_headers 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With';
|
set $cors_headers 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With';
|
||||||
|
set $cors_expose_headers 'X-Total-Count';
|
||||||
set $cors_credentials 'true';
|
set $cors_credentials 'true';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,6 +110,7 @@ location @mempool-api-v1-services-cache-disabled-addcors {
|
|||||||
add_header Access-Control-Allow-Origin "$cors_origin" always;
|
add_header Access-Control-Allow-Origin "$cors_origin" always;
|
||||||
add_header Access-Control-Allow-Headers "$cors_headers" always;
|
add_header Access-Control-Allow-Headers "$cors_headers" always;
|
||||||
add_header Access-Control-Allow-Credentials "$cors_credentials" always;
|
add_header Access-Control-Allow-Credentials "$cors_credentials" always;
|
||||||
|
add_header Access-Control-Expose-Headers "$cors_expose_headers" always;
|
||||||
|
|
||||||
proxy_redirect off;
|
proxy_redirect off;
|
||||||
proxy_buffering off;
|
proxy_buffering off;
|
||||||
@ -172,6 +175,7 @@ location @mempool-api-v1-services-cache-short-addcors {
|
|||||||
set $cors_methods 'GET, POST, PUT, DELETE, OPTIONS';
|
set $cors_methods 'GET, POST, PUT, DELETE, OPTIONS';
|
||||||
set $cors_origin 'https://mempool.space';
|
set $cors_origin 'https://mempool.space';
|
||||||
set $cors_headers 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With';
|
set $cors_headers 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With';
|
||||||
|
set $cors_expose_headers 'X-Total-Count';
|
||||||
set $cors_credentials 'true';
|
set $cors_credentials 'true';
|
||||||
|
|
||||||
# set CORS for approved hostnames
|
# set CORS for approved hostnames
|
||||||
@ -180,6 +184,7 @@ location @mempool-api-v1-services-cache-short-addcors {
|
|||||||
set $cors_methods 'GET, POST, PUT, DELETE, OPTIONS';
|
set $cors_methods 'GET, POST, PUT, DELETE, OPTIONS';
|
||||||
set $cors_origin "$http_origin";
|
set $cors_origin "$http_origin";
|
||||||
set $cors_headers 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With';
|
set $cors_headers 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With';
|
||||||
|
set $cors_expose_headers 'X-Total-Count';
|
||||||
set $cors_credentials 'true';
|
set $cors_credentials 'true';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,6 +193,7 @@ location @mempool-api-v1-services-cache-short-addcors {
|
|||||||
add_header Access-Control-Allow-Origin "$cors_origin" always;
|
add_header Access-Control-Allow-Origin "$cors_origin" always;
|
||||||
add_header Access-Control-Allow-Headers "$cors_headers" always;
|
add_header Access-Control-Allow-Headers "$cors_headers" always;
|
||||||
add_header Access-Control-Allow-Credentials "$cors_credentials" always;
|
add_header Access-Control-Allow-Credentials "$cors_credentials" always;
|
||||||
|
add_header Access-Control-Expose-Headers "$cors_expose_headers" always;
|
||||||
|
|
||||||
# add our own cache headers
|
# add our own cache headers
|
||||||
add_header 'Pragma' 'public';
|
add_header 'Pragma' 'public';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user