Compare commits

..

10139 Commits
v1.0.1 ... v3.0

Author SHA1 Message Date
wiz
617789926b Release v3.0.1
- No code change from v3.0.0, just enables RUST_GBT by default
2024-10-02 04:01:52 +09:00
wiz
001c596d14 Enable RUST_GBT in backend by default 2024-10-02 04:00:51 +09:00
wiz
f0af1703da Release v3.0.0 2024-08-24 18:35:41 +09:00
softsimon
5452d7f524 pull from transifex 2024-08-20 09:32:56 +02:00
wiz
ff9e2456b9 ops: Tweak build script to support tags 2024-08-20 15:22:16 +09:00
wiz
4e581347c8 Bump version to v3.0.0-rc1 2024-08-20 12:06:11 +09:00
wiz
820777236e Merge pull request #5465 from mempool/orangesurf/update-logos-2024-08-19
Add logo images and references to logos
2024-08-20 12:01:51 +09:00
wiz
beeb5eb08c Merge pull request #5466 from mempool/mononaut/fix-about-layout
Fix about page layout
2024-08-20 10:50:04 +09:00
Mononaut
b78aca0282 Fix about page layout 2024-08-19 19:46:22 +00:00
orangesurf
9572f2d554 Add logo images and references to logos 2024-08-19 20:13:49 +02:00
softsimon
ef13596b59 Merge pull request #5449 from mempool/mononaut/non-acc-effective-fee
fix mined acceleration detection logic on tx pages
2024-08-19 17:10:46 +02:00
wiz
80da024bbb Add hr locale to angular.json 2024-08-19 14:49:36 +09:00
natsoni
f75f85f914 Hide fee delta on accelerated tx mined by participating pool with 0 bid boost 2024-08-18 19:43:38 +02:00
natsoni
b3ac107b0b clear feeDelta if a tx is mined by non-participating pool 2024-08-18 18:35:30 +02:00
softsimon
f8cedaa7a3 Merge pull request #5462 from mempool/natsoni/fix-console-error
Fix accelerated arrow not appearing
2024-08-18 15:47:02 +02:00
natsoni
72bb92dd8b Merge branch 'master' into mononaut/non-acc-effective-fee 2024-08-18 14:27:48 +02:00
natsoni
e3c4e219f3 Fix accelerated arrow not appearing 2024-08-18 14:15:56 +02:00
wiz
aa3fa4478a Merge pull request #5458 from mempool/mononaut/pool-pie-colors
update pool pie chart color scheme
2024-08-18 12:15:27 +09:00
Mononaut
26c03eee88 update pool pie chart color scheme 2024-08-14 14:21:47 +00:00
softsimon
db10ab9aae pull from transifex 2024-08-13 10:28:42 +02:00
wiz
2ee7b9531a Merge pull request #5454 from mempool/simon/add-croatian
Add Croatian language
2024-08-13 13:36:00 +09:00
wiz
5f6af83944 Merge pull request #5453 from mempool/mononaut/acceleration-sparkles
acceleration sparkles
2024-08-13 13:33:25 +09:00
softsimon
8d2204a53f Merge pull request #5457 from mempool/mononaut/flow-output-indices
flow diagram zero-indexed inputs & outputs
2024-08-12 23:04:34 +02:00
Mononaut
96bec279a9 flow diagram zero-indexed inputs & outputs 2024-08-12 14:54:51 +00:00
softsimon
5178ae43f6 Add Croatian language 2024-08-12 00:07:48 +02:00
softsimon
ca26154426 pull from transifex 2024-08-11 23:51:16 +02:00
Mononaut
021f0b32a1 sparklier sparkles 2024-08-11 20:52:26 +00:00
Mononaut
b8cfeb579b make accelerations magical again 2024-08-11 20:38:54 +00:00
softsimon
fc5b99f93f Merge pull request #5452 from mempool/mononaut/tx-v1-audit
Implement v1 audit in tx audit API
2024-08-11 00:18:09 +02:00
Mononaut
ce4b0ed0f3 Implement v1 audit in tx audit API 2024-08-10 21:57:31 +00:00
Mononaut
a31729b8b8 fix feeDelta display logic 2024-08-10 21:56:11 +00:00
Mononaut
79e494150c fix mined acceleration detection logic on tx pages 2024-08-09 14:44:51 +00:00
softsimon
b1a43abc0e Merge pull request #5444 from mempool/natsoni/fix-pool-pie-position
Fix pool pie position on safari
2024-08-08 22:20:09 +02:00
softsimon
3e50a3c9e7 pull from transifex 2024-08-08 18:58:59 +02:00
natsoni
132d6204c3 Fix pool pie position on safari 2024-08-08 11:23:56 +02:00
wiz
77c6ad5576 Merge pull request #5438 from mempool/natsoni/hide-fee-delta-on-confirmed
Hide fee delta on accelerated tx if bid boost is 0
2024-08-07 19:38:04 -04:00
wiz
4d35845c18 Merge pull request #5441 from mempool/simon/remove-testnet4-beta
remove testnet4 beta tag
2024-08-07 19:36:55 -04:00
wiz
3d8a4a85f7 Merge pull request #5433 from mempool/simon/remove-mempool-goggles-beta
remove mempool googles [beta] tag
2024-08-07 19:36:45 -04:00
wiz
1545347a45 Merge pull request #5443 from mempool/simon/fix-broken-sponsor-image-proxy
fix broken sponsor image proxy
2024-08-07 18:11:59 -04:00
softsimon
9facf28ba5 pull from transifex 2024-08-07 23:57:11 +02:00
softsimon
d6eb98561b Merge pull request #5439 from mempool/natsoni/purple-acc-fee-rate
Consistent purple accelerated fee rate
2024-08-07 23:42:37 +02:00
softsimon
0f688e8347 fix broken sponsor image proxy 2024-08-07 23:41:53 +02:00
wiz
7f53741a7b Merge pull request #5442 from mempool/simon/timesincepaid-sorry-time-increase
increasing time since paid sorry message
2024-08-07 17:19:11 -04:00
softsimon
d5672691e1 increasing time since paid sorry message 2024-08-07 22:06:22 +02:00
softsimon
e6049c707b remove testnet4 beta tag 2024-08-07 22:03:47 +02:00
natsoni
91e74e769c Purple accelerated fee rate everywhere 2024-08-07 14:19:59 +02:00
natsoni
7f252f06b7 Hide fee delta on accelerated tx with bidBoost=0 2024-08-07 11:11:31 +02:00
softsimon
1b9d3f669d remove mempool googles [beta] tag 2024-08-07 00:30:20 +02:00
wiz
ef0ba9a77a ops: Add mempool-update-repo script 2024-08-06 18:30:11 -04:00
wiz
15f10736e2 Merge pull request #5432 from mempool/simon/match-any-onion
match any onion
2024-08-06 18:26:31 -04:00
softsimon
924399df46 match any onion 2024-08-07 00:24:23 +02:00
wiz
cddff129b3 Merge pull request #5431 from mempool/simon/fix-services-onion
fix services onion url
2024-08-06 17:29:15 -04:00
softsimon
7c90e8ae06 fix services onion url 2024-08-06 23:27:59 +02:00
wiz
34d996c7cb Merge pull request #5430 from mempool/natsoni/dynamically-show-oob-fee
Immediately show oob fee on accelerated transaction
2024-08-06 15:00:49 -04:00
wiz
641a2ae3ae Remove testnet4 not-yet-finalized warning now that BIP is merged 2024-08-05 15:37:29 -04:00
natsoni
11a849ef28 Immediately show oob fee on accelerated transaction 2024-08-05 21:01:33 +02:00
wiz
7b0347e846 Bump version string to 3.0.0-beta 2024-08-05 14:55:59 -04:00
wiz
bb1352ed58 Merge pull request #5427 from mempool/mononaut/fix-other-liquid-migration
fix db migration 75 on liquid
2024-08-05 14:09:36 -04:00
wiz
fa6456b92c Merge pull request #5422 from mempool/natsoni/purple-accelerated-rate
Purple accelerated fee rate
2024-08-05 14:09:14 -04:00
wiz
bfea19238b Merge pull request #5420 from mempool/natsoni/add-tooltip-acc-fee
Add tooltip to acceleration fee
2024-08-05 14:04:42 -04:00
wiz
36b91cfdfd Merge pull request #5421 from mempool/mononaut/rbf-tracker-redirect
Fix broken pizza rbf link to /tracker
2024-08-05 14:04:20 -04:00
wiz
7b56212064 Merge pull request #5425 from mempool/natsoni/clear-mining-cache-network-change
Clear mining service cache on network change
2024-08-05 14:03:14 -04:00
wiz
d4be3c2c4c Merge pull request #5428 from mempool/mononaut/payment-method-click
[accelerator] fix click binding on payment method buttons
2024-08-05 14:02:51 -04:00
wiz
3a9f06f651 Merge pull request #5429 from mempool/mononaut/fix-block-unfurl-loading
Fix stray loading spinner in block unfurl
2024-08-05 14:02:34 -04:00
Mononaut
e652eb339d Fix stray loading spinner in block unfurl 2024-08-05 17:08:44 +00:00
softsimon
96435c329f Merge pull request #5426 from mempool/mononaut/fix-liquid-migration
fix liquid db migration
2024-08-05 18:47:26 +02:00
Mononaut
1c69613d65 [accelerator] fix click binding on payment method buttons 2024-08-05 16:15:53 +00:00
Mononaut
3707763e30 fix db migration 75 on liquid 2024-08-05 16:03:22 +00:00
Mononaut
b6ce8229f0 fix liquid db migration 2024-08-05 15:49:16 +00:00
natsoni
b62ae9b6f6 Clear mining service cache on network change 2024-08-05 15:45:39 +02:00
Mononaut
f61ace2f92 Fix broken pizza rbf link to /tracker 2024-08-05 10:31:01 +00:00
natsoni
2b572f2494 Purple accelerated fee rate 2024-08-05 12:20:49 +02:00
natsoni
c0e4c1efe1 Fix text wrap 2024-08-05 11:53:01 +02:00
natsoni
8078caaa89 Add tooltip to acceleration fee 2024-08-05 11:36:35 +02:00
wiz
5eb117165f Revert "ops: Remove potentially dangerous env var in rust build process"
This reverts commit a2dcf0d545.
2024-08-04 21:19:44 -04:00
wiz
a2dcf0d545 ops: Remove potentially dangerous env var in rust build process 2024-08-04 21:06:36 -04:00
wiz
212d58f917 Change accelerate checkout redirect from /tracker/ to /tx/ 2024-08-04 20:52:49 -04:00
wiz
d1eec80afb Delete redirect to /tracker/ for cash.app 2024-08-04 20:45:05 -04:00
wiz
05c6709926 Merge pull request #5417 from mempool/simon/hide-fiat-buttons-correctly
hide fiat buttons correctly
2024-08-04 19:45:07 -04:00
softsimon
f1a48db9ee hide fiat buttons correctly 2024-08-05 01:43:58 +02:00
wiz
76ce43d289 Merge pull request #5416 from mempool/simon/enable-acc-button-enterprise
enable accelerator button on enterprise instances
2024-08-04 19:22:33 -04:00
softsimon
51f5b728f3 enable accelerator button on enterprise instances 2024-08-05 01:20:40 +02:00
wiz
8fa1863aff Merge pull request #5415 from mempool/simon/fix-invalid-json-response-requestAcceleration
fix invalid json response from requestAcceleration
2024-08-04 19:12:06 -04:00
softsimon
e3d1d9c1c0 fix invalid json response from requestAcceleration 2024-08-05 01:11:18 +02:00
wiz
f2f8d91e10 Merge pull request #5410 from mempool/natsoni/show-oob-fee
Show oob fees on tx details
2024-08-04 19:02:20 -04:00
wiz
11ef090846 Merge pull request #5414 from mempool/simon/only-enable-fiat-prod-staging
only enable fiat on prod and staging
2024-08-04 19:01:54 -04:00
softsimon
5cacd2635e only enable fiat on prod, staging and dev 2024-08-05 01:00:58 +02:00
softsimon
1b4780c25b Merge pull request #5409 from mempool/natsoni/fix-truncated-link
Fix truncated link to not refresh full window
2024-08-05 00:16:15 +02:00
softsimon
5ea44f2e7d Merge pull request #5408 from mempool/natsoni/pizza-tracker-fix-crash
Pizza tracker: handle transaction not yet in mempool
2024-08-04 23:39:39 +02:00
softsimon
261c794817 pull from transifex 2024-08-04 23:36:03 +02:00
natsoni
de9fae5cd7 Show oob fees on tx details 2024-08-04 17:07:38 +02:00
natsoni
439c52af30 Fix truncated link to not refresh full window 2024-08-04 14:36:42 +02:00
softsimon
4dbcd6ca18 pull from transifex 2024-08-04 10:18:18 +02:00
softsimon
2921c94520 Merge pull request #5354 from mempool/mononaut/v1-audits
v1 audits
2024-08-03 21:55:19 +02:00
softsimon
ab4a258be3 Merge pull request #5406 from mempool/simon/fix-mobile-rbf-test
fix mobile rbf test
2024-08-03 19:07:49 +02:00
softsimon
21b0d50947 fix mobile rbf test 2024-08-03 18:58:55 +02:00
softsimon
233ec112c2 Merge pull request #5405 from TechMiX/fix/more-accel-rtl-issues
fix: acceleration rtl layout issues
2024-08-03 18:24:22 +02:00
TechMiX
6f0a5c9b44 fix: accelerationn rtl layout issues 2024-08-03 14:39:50 +02:00
softsimon
2bc243b115 accel list i18n fixes 2024-08-03 00:26:37 +02:00
softsimon
154f8e65a7 accel status i18n fix 2024-08-03 00:20:38 +02:00
wiz
cc9855aa65 Merge pull request #5404 from mempool/nymkappa/square-loading
[square] use mirror to serve square.js and load it sooner
2024-08-02 17:52:44 -04:00
nymkappa
7b45d922bc [square] i'm an idiot 2024-08-02 23:35:30 +02:00
nymkappa
9488ca50a3 [square] use mirror to serve square.js and load it sooner 2024-08-02 23:27:40 +02:00
wiz
9f559248cc Merge pull request #5403 from mempool/nymkappa/square-loading
[square] retry web sdk faster
2024-08-02 17:24:00 -04:00
nymkappa
067aac4d06 [square] retry web sdk faster 2024-08-02 23:04:15 +02:00
wiz
37eb17cc22 Merge pull request #5402 from mempool/nymkappa/square-loading
[square] fix web sdk retry logic
2024-08-02 16:50:41 -04:00
nymkappa
c7382a1c6c [square] fix web sdk retry logic 2024-08-02 22:48:04 +02:00
softsimon
f782693b26 Merge pull request #5401 from mempool/mononaut/acc-pie-colors
adjust pie colors to handle more pools
2024-08-02 21:40:36 +02:00
wiz
908988d06e Merge pull request #5398 from mempool/natsoni/fix-accelerator-loader
Fix accelerator skeleton loader
2024-08-02 14:41:29 -04:00
wiz
a0c21e4120 Merge pull request #5395 from mempool/nymkappa/accel-status
[accelerator] fix accel status in widget
2024-08-02 14:25:54 -04:00
wiz
bd96cbd701 Merge pull request #5399 from mempool/natsoni/fix-mobile-tx-routing
Remove query param redirect on tx page
2024-08-02 14:23:54 -04:00
wiz
9cccdcf70f Merge pull request #5400 from mempool/natsoni/pizza-tracker-loader
Align pizza tracker skeleton loader
2024-08-02 14:23:21 -04:00
natsoni
2489fc4902 Fix need to double click on previous to go back 2024-08-02 19:00:52 +02:00
natsoni
e378df4158 Fix pizza tracker crash on unseen transaction 2024-08-02 18:52:07 +02:00
Mononaut
fa5f758875 adjust pie colors to handle more pools 2024-08-02 16:44:36 +00:00
natsoni
a46f15e7ec Align pizza tracker skeleton loader 2024-08-02 17:37:53 +02:00
natsoni
46ecd2a51f Fix accelerator skeleton loader 2024-08-02 16:53:34 +02:00
softsimon
c1aaf2f61a pull from transifex 2024-08-02 14:04:49 +02:00
Mononaut
d2b57c8d4f added/prioritized dual audit status 2024-08-02 10:46:07 +00:00
softsimon
f27a5700fa pull from transifex 2024-08-02 02:43:34 +02:00
nymkappa
17522cca6e [accelerator] 2024-08-02 00:24:50 +02:00
nymkappa
3f2581886d [accelerator] fix accel status in widget 2024-08-02 00:20:34 +02:00
wiz
c5beee3a40 ops: Fix nginx routing for /api/v1/accelerations 2024-08-01 17:04:00 -04:00
wiz
94e223e8da Merge pull request #5010 from mempool/mononaut/tracker-tx-routing
Transparently redirect direct mobile tx visits to pizza tracker
2024-08-01 14:30:56 -04:00
wiz
416e1bb4cb Merge pull request #5393 from mempool/mononaut/accelerate-anchor
[accelerator] add anchor element
2024-08-01 14:19:22 -04:00
wiz
564dc08509 Merge pull request #5392 from mempool/orangesurf/privacy-policy
Update PP
2024-08-01 14:19:01 -04:00
Mononaut
b9334c93f5 Handle accelerations in v1 audit 2024-08-01 14:07:19 +00:00
Mononaut
67761230e3 frontend support for v1 block audits 2024-08-01 14:07:19 +00:00
Mononaut
7cc01af631 Implement v1 block audits 2024-08-01 14:07:19 +00:00
Mononaut
96e2e6060b Migrate audits from v0 to v1 2024-08-01 14:07:19 +00:00
Mononaut
0723778e7c Update audit schema version 2024-08-01 14:07:19 +00:00
orangesurf
39d7e4ac3e Merge branch 'master' into orangesurf/privacy-policy 2024-08-01 13:44:34 +02:00
softsimon
1869368a49 pull from transifex 2024-08-01 10:50:01 +02:00
orangesurf
b83f19f186 Merge branch 'master' into orangesurf/privacy-policy 2024-07-31 23:50:58 +02:00
Mononaut
b248aad6d9 [accelerator] add anchor element 2024-07-31 17:08:39 +00:00
softsimon
87c9f920c1 Merge pull request #5391 from mempool/natsoni/add-opacity-pools-logo
Set pool logos opacity to 0.3
2024-07-31 18:34:09 +02:00
orangesurf
ea0e339d60 Update PP 2024-07-31 16:02:26 +02:00
orangesurf
0a0b5e52fe Update PP 2024-07-31 13:55:21 +02:00
natsoni
5314f35974 Make logos 0.3 opacity 2024-07-31 12:22:49 +02:00
softsimon
87d2f6cf90 Merge pull request #5389 from TechMiX/fix/acc-rtl-issues
fix: acceleration rtl issues
2024-07-31 11:16:29 +02:00
softsimon
4266bdcbb6 pull from transifex 2024-07-31 09:29:55 +02:00
softsimon
73e68534f1 Merge pull request #5390 from mempool/dependabot/npm_and_yarn/backend/babel/core-7.25.2
Bump @babel/core from 7.24.0 to 7.25.2 in /backend
2024-07-31 02:56:37 -04:00
dependabot[bot]
ee5b383a46 Bump @babel/core from 7.24.0 to 7.25.2 in /backend
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.24.0 to 7.25.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.25.2/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-31 02:27:25 +00:00
TechMiX
fa4b445dca fix acc rtl issues 2024-07-31 01:28:31 +02:00
softsimon
06eaadd517 pull from transifex 2024-07-30 16:17:21 -04:00
softsimon
ebdc1dbf6d Merge pull request #5385 from mempool/mononaut/fix-ffee-detection
Fix effective fee rate detection on tx page
2024-07-30 16:13:21 -04:00
softsimon
184903670a Merge pull request #5386 from mempool/natsoni/fix-timeline-tooltip
Fix missing accelerated fee rate in timeline tooltip
2024-07-30 14:49:06 -05:00
softsimon
878561244a Merge pull request #5387 from mempool/natsoni/fix-timeline-centering
Fix accelerated time centering
2024-07-30 14:48:19 -05:00
softsimon
a0e9b33199 pull from i18n 2024-07-30 15:46:29 -04:00
natsoni
0a4513c8fb Fix 'Just now' capitalization in timeline of mined transactions 2024-07-30 17:40:58 +02:00
softsimon
77b9277da5 pull from i18n 2024-07-30 10:38:05 -05:00
natsoni
009fac183f Fix accelerated time centering 2024-07-30 17:31:34 +02:00
natsoni
83a6df4d04 Fix missing accelerated fee rate line 2024-07-30 17:22:57 +02:00
Mononaut
474d384b0c fix wildcard routing clash 2024-07-30 14:48:47 +00:00
Mononaut
5870782abf Fix effective fee rate detection on tx page 2024-07-30 11:49:52 +00:00
softsimon
fb335f62db pull from i18n 2024-07-29 22:16:15 -05:00
softsimon
346ef0028d Merge pull request #5384 from mempool/dependabot/npm_and_yarn/backend/redis-4.7.0
Bump redis from 4.6.6 to 4.7.0 in /backend
2024-07-29 21:21:43 -05:00
dependabot[bot]
916cae2a8f Bump redis from 4.6.6 to 4.7.0 in /backend
Bumps [redis](https://github.com/redis/node-redis) from 4.6.6 to 4.7.0.
- [Release notes](https://github.com/redis/node-redis/releases)
- [Changelog](https://github.com/redis/node-redis/blob/master/CHANGELOG.md)
- [Commits](https://github.com/redis/node-redis/compare/redis@4.6.6...redis@4.7.0)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-30 02:12:44 +00:00
softsimon
550e667a2f Merge pull request #5383 from mempool/nymkappa/accel-history-list-update
[accelerator] use "mined" when accelerated tx is mined by non participating pool
2024-07-29 11:33:34 -05:00
softsimon
eb4ebf6786 pull from transifex 2024-07-29 11:09:12 -05:00
softsimon
7515348997 Merge pull request #5381 from TechMiX/hotfix/rtl-layout
fix: various rtl issues
2024-07-29 10:39:59 -05:00
nymkappa
41441bb958 [accelerator] use "mined" when accelerated tx is mined by non participating pool 2024-07-29 11:11:29 +02:00
softsimon
98c49918f7 Merge pull request #5382 from mempool/dependabot/npm_and_yarn/backend/mysql2-3.11.0
Bump mysql2 from 3.10.0 to 3.11.0 in /backend
2024-07-28 21:14:52 -05:00
dependabot[bot]
5855e09663 Bump mysql2 from 3.10.0 to 3.11.0 in /backend
Bumps [mysql2](https://github.com/sidorares/node-mysql2) from 3.10.0 to 3.11.0.
- [Release notes](https://github.com/sidorares/node-mysql2/releases)
- [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md)
- [Commits](https://github.com/sidorares/node-mysql2/compare/v3.10.0...v3.11.0)

---
updated-dependencies:
- dependency-name: mysql2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-29 02:07:00 +00:00
softsimon
558b876d47 pull from transifex 2024-07-28 19:48:15 -05:00
TechMiX
fb63af5070 fix various rtl issues 2024-07-29 02:17:09 +02:00
wiz
d02a2ccf65 Merge pull request #5380 from mempool/simon/1w-1m
fixes crash with missing pool partner
2024-07-28 14:40:50 -05:00
softsimon
e3bb812203 fixes crash with missing pool partner
fixes #5379
2024-07-28 14:10:50 -05:00
softsimon
e3af4ea61c pull from transifex 2024-07-28 13:20:58 -05:00
softsimon
7d10b32861 pull from transifex 2024-07-26 16:43:17 -05:00
wiz
adea897e93 Merge branch 'master' into mononaut/tracker-tx-routing 2024-07-26 11:29:31 -05:00
wiz
17ec50dba0 Merge pull request #5371 from mempool/natsoni/timeline-tooltip
Add tooltip to acceleration timeline
2024-07-26 11:12:15 -05:00
Mononaut
53a36d042f Fix /tx redirect merge conflicts 2024-07-26 16:11:59 +00:00
softsimon
7531a53b2e correct i18n 2024-07-26 11:06:36 -05:00
Mononaut
d59bc085e5 Redirect direct mobile tx visits to pizza tracker 2024-07-26 15:54:22 +00:00
wiz
5d37e08c64 Merge branch 'master' into natsoni/timeline-tooltip 2024-07-26 10:44:01 -05:00
wiz
b5d89b83fa Merge pull request #5368 from mempool/nymkappa/google-pay
[accelerator] add support for Google Pay payment
2024-07-26 10:43:50 -05:00
nymkappa
1245673575 [accelerator] polish UI 2024-07-26 17:39:58 +02:00
softsimon
62a72755c7 pull from transifex 2024-07-26 10:25:29 -05:00
wiz
5b8ec8925a Merge pull request #5373 from mempool/mononaut/no-405
[accelerator] remove dumb log request 405 response
2024-07-26 10:22:38 -05:00
softsimon
262866c15b Merge pull request #5369 from mempool/nymkappa/getjwtemptynonofficial
[services] getJWT call returns nothing if non official
2024-07-26 06:36:21 -05:00
softsimon
aec7eb57c2 Merge pull request #5370 from mempool/natsoni/fix-loading-spinner
Fix loading spinner z-index
2024-07-26 05:10:25 -05:00
Mononaut
8d3b4733f5 [accelerator] remove dumb 405 log request response 2024-07-26 09:49:42 +00:00
nymkappa
3e4debdf7a Merge branch 'master' into nymkappa/google-pay 2024-07-26 11:38:47 +02:00
nymkappa
b719b76999 Merge pull request #5372 from mempool/mononaut/google-play-minor-fixes
minor accelerator checkout fixes
2024-07-26 11:37:54 +02:00
Mononaut
6adbda5185 Fix accelerator checkout linting & type errors 2024-07-26 09:27:18 +00:00
natsoni
01311d0ba1 Add tooltip to timeline 2024-07-26 11:21:24 +02:00
Mononaut
6081daacef [accelerator] add missing getters etc 2024-07-26 09:06:47 +00:00
natsoni
54c9970386 Merge branch 'master' into natsoni/timeline-tooltip 2024-07-26 11:04:17 +02:00
softsimon
1e4a599055 fix accelerations row height 2024-07-25 21:05:32 -05:00
softsimon
b051861d61 Merge pull request #5365 from mempool/natsoni/fix-mining-data
Get all pools in accelerations list
2024-07-25 21:03:52 -05:00
natsoni
3c7deafffd Fix loading spinner z-index 2024-07-26 00:00:14 +02:00
nymkappa
845123fc63 [services] getJWT call returns nothing if non official 2024-07-25 23:04:53 +02:00
nymkappa
d3e3650cac [accelerator] avoid premature square setup call 2024-07-25 21:49:48 +02:00
softsimon
008cc385da pull from transifex 2024-07-25 13:01:37 -05:00
softsimon
817a6bef6e Merge pull request #5367 from mempool/knorrium/change_default_var
Set the default value to the SERVICES_API variable
2024-07-25 12:59:40 -05:00
Felipe Knorr Kuhn
8dd8fe5fb1 Fix string value 2024-07-25 12:57:36 -05:00
softsimon
c734a81f08 pull from transifex 2024-07-25 12:27:32 -05:00
Felipe Knorr Kuhn
a0f4c260ab Set the default URL for the backend 2024-07-25 12:20:01 -05:00
Felipe Knorr Kuhn
000a989055 Set the default value to the SERVICES_API variable 2024-07-25 11:29:17 -05:00
natsoni
90331e2c1b Get all pools in accelerations list 2024-07-25 17:45:08 +02:00
wiz
78ac0137b3 Merge pull request #5350 from mempool/orangesurf/2024-07-19
Update webserver line
2024-07-25 10:21:53 -05:00
natsoni
3d9133c47e Add fee delta to acceleration data 2024-07-25 16:52:10 +02:00
nymkappa
481859bc8f [accelerator] add support for Google Pay payment 2024-07-25 15:54:24 +02:00
orangesurf
811feec145 Merge branch 'master' into orangesurf/2024-07-19 2024-07-25 18:47:27 +09:00
softsimon
b3e59c06e9 add new accelerator button config to sample 2024-07-25 04:07:18 -05:00
softsimon
67d44e3d6f Merge pull request #5359 from mempool/natsoni/fix-loop-calling-transactionTimes
Prevent never ending loop of calls to transactionTimes
2024-07-25 03:38:06 -05:00
softsimon
ca4b1943a8 moving code block 2024-07-25 03:35:17 -05:00
natsoni
df0f244bd1 Prevent never ending loop of calls to transactionTimes 2024-07-25 00:53:13 +02:00
softsimon
fe1ad86885 Merge pull request #5362 from mempool/natsoni/more-data-acc-table
Add fee delta and pool name to acceleration list
2024-07-24 17:42:28 -05:00
natsoni
aee2454a98 Add pool name to acceleration list 2024-07-25 00:24:08 +02:00
softsimon
5c814d9c22 pending balance -> pending 2024-07-24 17:21:55 -05:00
wiz
2c5d7fbc9f Merge pull request #5363 from mempool/nymkappa/apple-pay-hotfix
[accelerator] hide fiat payment method section if none available
2024-07-24 17:11:01 -05:00
nymkappa
570f7841ce [accelerator] hide fiat payment method section if none available 2024-07-25 00:10:27 +02:00
wiz
117c066425 Merge pull request #5353 from mempool/nymkappa/apple-pay
[accelerator] add support for acceleration with apple pay
2024-07-24 17:01:23 -05:00
softsimon
96f9f66e7f changing unconfirmed to pending balance/utxo 2024-07-24 16:56:30 -05:00
wiz
ce2742ff9c Merge branch 'master' into nymkappa/apple-pay 2024-07-24 16:47:57 -05:00
softsimon
4547a2757c Merge pull request #5351 from mempool/natsoni/fix-recursion-search
Fix recursion loop in search bar
2024-07-24 15:42:51 -05:00
nymkappa
4d44ee55fc [accelerator] add missing getters for applepay 2024-07-24 22:20:52 +02:00
nymkappa
29875e0095 Merge branch 'master' into nymkappa/apple-pay 2024-07-24 22:04:44 +02:00
softsimon
bc498733fc Merge pull request #5355 from mempool/natsoni/fix-blockchain-scroll
Fix unwanted blockchain scroll on screen resize
2024-07-24 11:44:36 -07:00
wiz
dc09e75783 Merge pull request #5361 from mempool/mononaut/fosscelerator
On-demand acceleration polling
2024-07-24 13:44:04 -05:00
wiz
544261eafe ops: Add /api/v1/accelerations to nginx hot cache 2024-07-24 13:31:56 -05:00
softsimon
58c0c060d5 Merge pull request #5358 from mempool/natsoni/fix-miner-loading
Fix miner loading forever
2024-07-24 11:25:48 -07:00
Mononaut
af7a962a0b [accelerator] accelerator_button config 2024-07-24 17:32:44 +00:00
Mononaut
7b3cc6372b [accelerator] frontend on-demand polling support 2024-07-24 17:32:44 +00:00
Mononaut
b49a6c4cac [accelerator] on-demand polling support 2024-07-24 17:32:43 +00:00
wiz
b0db348605 Merge pull request #5357 from mempool/nymkappa/update-api-key-header
[doc] update api key header
2024-07-24 12:27:03 -05:00
wiz
b1aa4f50bd Change X-Mempool-Authorization to X-Mempool-Auth 2024-07-24 12:25:35 -05:00
orangesurf
301f1821ae Merge branch 'master' into orangesurf/2024-07-19 2024-07-23 20:48:03 +09:00
natsoni
b9a053387f Add txConfirmed subscription variable to fix miner loading forever 2024-07-23 11:44:50 +02:00
softsimon
82c271267a extracting i18n's 2024-07-23 00:28:32 +08:00
softsimon
06affa60cc Merge pull request #5352 from mempool/simon/replace-crypto-uuid-func
Fix crypto lib call crash with custom function
2024-07-22 22:38:05 +08:00
nymkappa
4ef4e5b98a [doc] update api key header 2024-07-22 15:17:56 +02:00
wiz
6bc52dcc82 Merge pull request #5356 from mempool/simon/fix-payment-waiting-retry
fix btc payment waiting reply
2024-07-22 21:16:00 +09:00
softsimon
1f357408ac fix btc payment waiting reply 2024-07-22 20:13:13 +08:00
natsoni
a7be59df3e Fix buggy blockchain scroll on resize 2024-07-22 13:36:36 +02:00
orangesurf
82360f5525 Merge branch 'master' into orangesurf/2024-07-19 2024-07-22 17:08:47 +09:00
nymkappa
8762ccaa09 [accelerator] remove attempt to align fiat payment methods 2024-07-21 23:22:11 +02:00
nymkappa
3f7a24fb52 [accelerator] only show apple pay if available 2024-07-21 23:08:08 +02:00
nymkappa
09b09710e4 [accelerator] fix cashapp acceleration on mobile 2024-07-21 23:07:55 +02:00
nymkappa
08d3beed72 [accelerator] on mobile, autoscroll after selection cashapp or applepay 2024-07-21 22:38:49 +02:00
nymkappa
920f225e6c [accelerator] add support for acceleration with apple pay 2024-07-21 22:17:47 +02:00
softsimon
9c2d010516 rename to insecureRandomUUID 2024-07-21 23:55:28 +08:00
softsimon
743c7e8bfb Fix crypto lib call crash with custom function 2024-07-21 22:54:58 +08:00
softsimon
8116b50d50 fix spelling error 2024-07-21 20:34:20 +08:00
softsimon
df977926e2 Merge pull request #5349 from mempool/simon/add-fee-to-cpfp
Add fee to Cpfp API
2024-07-21 19:05:55 +08:00
softsimon
b0fac806d0 Merge pull request #4905 from mempool/mononaut/mini-miner-cpfp
Mini miner cpfp
2024-07-21 19:05:35 +08:00
Mononaut
398593828f Implement CPFP reindexing using mini-miner method (not activated) 2024-07-20 12:08:52 +00:00
Mononaut
9aac0ddce7 Fix merge conflict 2024-07-20 12:08:52 +00:00
Mononaut
79eb9635c2 Fix cpfp vsize rounding & goggles bugs 2024-07-20 12:08:52 +00:00
Mononaut
41c373c39d Mini-miner based block cpfp calculations 2024-07-20 12:08:52 +00:00
Mononaut
27374bd131 Refactor cpfp & single-block gbt code into mini-miner module 2024-07-20 12:08:52 +00:00
natsoni
8c07e3c31a Fix recursion loop in search bar 2024-07-19 16:12:54 +02:00
orangesurf
84ba721407 Update webserver line 2024-07-19 11:48:47 +02:00
softsimon
cdaf42797f Add fee to Cpfp API 2024-07-18 16:44:00 +08:00
wiz
0a116804e8 Merge pull request #5347 from mempool/junderw/fix-docker-aarch64
Bump Rust version to 1.79
2024-07-18 15:08:22 +09:00
junderw
68edf4306c Bump Rust version to 1.79
Maintaining an old MSRV is not a priority for this project.
If you would like to keep an old MSRV active, please maintain your own patch/fork.
2024-07-18 01:07:05 +09:00
softsimon
61bbb95819 fix default docker unix socket path variable 2024-07-17 12:34:28 +08:00
softsimon
3fa32edf25 Merge pull request #5345 from mempool/dependabot/npm_and_yarn/frontend/fortawesome/fontawesome-common-types-6.6.0
Bump @fortawesome/fontawesome-common-types from 6.5.1 to 6.6.0 in /frontend
2024-07-17 11:48:05 +09:00
dependabot[bot]
db220d9dfd Bump @fortawesome/fontawesome-common-types in /frontend
Bumps [@fortawesome/fontawesome-common-types](https://github.com/FortAwesome/Font-Awesome) from 6.5.1 to 6.6.0.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.5.1...6.6.0)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-common-types"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-17 02:47:44 +00:00
softsimon
bf61557879 Merge pull request #5344 from mempool/dependabot/npm_and_yarn/frontend/fortawesome/free-solid-svg-icons-6.6.0
Bump @fortawesome/free-solid-svg-icons from 6.5.1 to 6.6.0 in /frontend
2024-07-17 11:47:15 +09:00
dependabot[bot]
ebaf5cd304 Bump @fortawesome/free-solid-svg-icons from 6.5.1 to 6.6.0 in /frontend
Bumps [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome) from 6.5.1 to 6.6.0.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.5.1...6.6.0)

---
updated-dependencies:
- dependency-name: "@fortawesome/free-solid-svg-icons"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-17 02:47:02 +00:00
softsimon
51154d3954 Merge pull request #5343 from mempool/dependabot/npm_and_yarn/frontend/fortawesome/fontawesome-svg-core-6.6.0
Bump @fortawesome/fontawesome-svg-core from 6.5.1 to 6.6.0 in /frontend
2024-07-17 11:46:09 +09:00
dependabot[bot]
41b4b2eddf Bump @fortawesome/fontawesome-svg-core from 6.5.1 to 6.6.0 in /frontend
Bumps [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) from 6.5.1 to 6.6.0.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.5.1...6.6.0)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-svg-core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-17 02:34:33 +00:00
softsimon
0dff7e82a3 Merge pull request #5341 from mempool/simon/retry-firstseen-onerror
retry firstseen on error
2024-07-15 02:03:20 +09:00
softsimon
9cba7ccf75 retry firstseen on error
fixes #5340
2024-07-14 20:44:34 +09:00
wiz
6177b97bd1 Merge pull request #5337 from mempool/nymkappa/invoice-check-http-code
[btcpay] handle new http code 204 when calling /payments/bitcoin/check
2024-07-14 20:12:23 +09:00
softsimon
f7f1a99486 Merge pull request #5339 from mempool/mononaut/fix-pizza-status
fix pizza status
2024-07-14 17:22:53 +09:00
Mononaut
6b955acf9e [pizza] fix status icon layout w/ accelerator modal 2024-07-14 04:40:27 +00:00
Mononaut
530610add6 [pizza] fix trackerStage clobbered by ETA change 2024-07-14 04:39:46 +00:00
wiz
428f9369e2 Merge pull request #5338 from jlopp/jloppAgreement 2024-07-14 05:17:02 +09:00
softsimon
a9defb21bb restore timeline lowercase time 2024-07-14 02:06:34 +09:00
nymkappa
680e9562a0 [btcpay] handle new http code 204 when calling /payments/bitcoin/check api 2024-07-13 21:07:13 +09:00
wiz
66c5c303b3 ops: Set HTTP CORS headers with caching in nginx for services 2024-07-13 20:20:15 +09:00
wiz
5a86c8c83a ops: Set HTTP CORS headers in nginx for services 2024-07-13 19:56:17 +09:00
softsimon
725e9c0d95 restore timeline lowercase time 2024-07-13 19:36:27 +09:00
softsimon
74e59d6ea5 Merge pull request #5333 from mempool/natsoni/timeline-updates
Acceleration timeline refactor
2024-07-13 18:53:39 +09:00
natsoni
9ac45a6cc3 Clear interval on destroy and remove commented code 2024-07-13 18:45:18 +09:00
wiz
94d537daa6 Merge pull request #5330 from mempool/simon/block-preview-miner-tag-design
Block preview new miner tag design
2024-07-13 18:37:45 +09:00
wiz
30bc026c28 Merge pull request #5331 from mempool/mononaut/accelerated-cpfp
show cpfp toggle on pending accelerations
2024-07-13 18:37:23 +09:00
wiz
21942f8ab1 Merge pull request #5334 from mempool/natsoni/click-on-acceleration-graph
Allow to click on bid boost graph to go on block page
2024-07-13 18:36:47 +09:00
wiz
147f55fec3 Merge pull request #5335 from mempool/natsoni/fix-btc-amount-pool
Fix btc amount in mining dashboard
2024-07-13 18:36:04 +09:00
natsoni
e73f2cbdc1 Fix btc amount mining dashboard 2024-07-13 18:22:45 +09:00
softsimon
009e18b622 adjust lightning dashboard to be in line with new default dashboard 2024-07-13 18:18:56 +09:00
natsoni
5f20803e21 Allow to click on bid boost graph to go on block page 2024-07-13 18:16:41 +09:00
softsimon
832d16cf2d Merge pull request #5332 from hans-crypto/html-quickfix
Html quickfix
2024-07-13 17:38:10 +09:00
natsoni
5e8b5e75d8 Fix accelerated fee update logic 2024-07-13 17:31:49 +09:00
Hans ❤️ Crypto
c5ef1011d8 Merge branch 'mempool:master' into html-quickfix 2024-07-13 10:23:28 +02:00
softsimon
6a14043641 Merge pull request #5094 from ordpool-space/hans-crypto-patch-1
Remove reference to bisq in unfurler
2024-07-13 17:09:21 +09:00
Mononaut
0f526f24cb show cpfp toggle on pending accelerations 2024-07-13 07:59:59 +00:00
softsimon
4426bb10a9 Block preview new miner tag design 2024-07-13 16:48:03 +09:00
natsoni
18a7859cca Merge branch 'master' into natsoni/timeline-updates 2024-07-13 16:25:14 +09:00
natsoni
349d491f7d Refactor timeline but keep times 2024-07-13 16:21:56 +09:00
wiz
7556424f0b Merge pull request #5328 from mempool/nymkappa/accel-dashboard-update
[accelerator] also show completed_provisional in accel dashboard
2024-07-13 16:03:16 +09:00
wiz
1d827a9724 Merge pull request #5329 from mempool/nymkappa/external-menu-link
[menu] link can be external
2024-07-13 16:01:10 +09:00
softsimon
f019dd67b3 update i18n from transifex 2024-07-13 14:38:27 +09:00
Jameson Lopp
8b27ac1bbf add contributor agreement 2024-07-12 17:03:27 -04:00
nymkappa
b91774d50c [menu] link can be external 2024-07-13 00:41:45 +09:00
nymkappa
22a5cd2de2 [accelerator] also show completed_provisional in accel dashboard 2024-07-12 23:45:41 +09:00
softsimon
e5489277c6 i18n fixes 2024-07-12 23:20:18 +09:00
softsimon
04b6bee8a1 Merge pull request #5327 from mempool/revert-5321-natsoni/fees-on-acc-timeline
Revert "Show accelerated fee rates on timeline"
2024-07-12 19:10:17 +09:00
softsimon
6cd8cf660b Revert "Show accelerated fee rates on timeline" 2024-07-12 19:10:06 +09:00
wiz
1b6fd29c82 Merge pull request #5325 from mempool/mononaut/subnet-route-restrictions
Restrict accelerator routes to mainnet
2024-07-12 18:59:21 +09:00
softsimon
a31dae67a8 Merge pull request #5326 from mempool/revert-5323-natsoni/timeline-feedback
Revert "Add accelerated word to timeline"
2024-07-12 18:58:20 +09:00
softsimon
76e3053207 Revert "Add accelerated word to timeline" 2024-07-12 18:58:02 +09:00
Mononaut
985b7577e4 Restrict accelerator routes to mainnet 2024-07-12 09:29:21 +00:00
wiz
c748e5cda9 Merge pull request #5323 from mempool/natsoni/timeline-feedback 2024-07-12 18:12:27 +09:00
natsoni
a99f45cd47 Add accelerated word to timeline 2024-07-12 18:00:02 +09:00
softsimon
de1d7839b3 Merge pull request #5321 from mempool/natsoni/fees-on-acc-timeline
Show accelerated fee rates on timeline
2024-07-12 17:24:36 +09:00
natsoni
6aa3e38af2 Fix broken loader in accelerate fee rate line 2024-07-12 17:15:51 +09:00
softsimon
dca7df709b Merge pull request #5305 from mempool/natsoni/avoid-fetching-full-audit
Avoid fetching full audit on tx page
2024-07-12 17:10:36 +09:00
softsimon
e40e9f7d11 Merge pull request #5319 from mempool/orangesurf/accelerator-api
Update Accelerator API documentation
2024-07-12 17:04:28 +09:00
softsimon
285bb357ba Merge pull request #5317 from mempool/mononaut/coming-now
[accelerator] remove "coming soon" button state
2024-07-12 16:34:21 +09:00
natsoni
c3b9828d42 Move block audit cache to apiService 2024-07-12 16:00:51 +09:00
softsimon
871e590305 Merge pull request #5322 from mempool/natsoni/fix-accelerations-graph
Fix accelerations graph view more
2024-07-12 15:08:59 +09:00
softsimon
0e5a1abb2b Merge pull request #5320 from mempool/mononaut/24h-acc-dash
Add 24h and all time views to accelerator dashboard
2024-07-12 15:02:46 +09:00
natsoni
5665c6e6ec Fix accelerations graph view more 2024-07-12 14:20:05 +09:00
natsoni
06b696f0bb Show fees rates on acceleration timeline 2024-07-12 01:58:20 +09:00
Mononaut
75ca963bd5 Add 24h and all time views to accelerator dashboard 2024-07-11 16:48:41 +00:00
orangesurf
3a6647eac0 Update Accelerator APIs 2024-07-11 18:12:23 +02:00
Mononaut
9ad6b925c8 [accelerator] remove "coming soon" button state 2024-07-11 12:27:31 +00:00
natsoni
17720b98c1 Avoid briefly displaying wrong accelerated fee rate on tx load 2024-07-11 20:38:38 +09:00
wiz
5bb3e930cc Merge pull request #5313 from mempool/mononaut/enable-cashapp
[accelerator] enable cashapp
2024-07-11 20:28:43 +09:00
wiz
347bddc974 Merge pull request #5315 from mempool/hunicus/faq-update-accelerate
Update faq
2024-07-11 20:28:16 +09:00
hunicus
4eca8240db Update accelerator faq mention for public availability 2024-07-11 18:18:13 +09:00
Mononaut
1c135b4c67 [accelerator] enable cashapp 2024-07-11 07:56:15 +00:00
softsimon
f24223ca06 Merge pull request #5312 from mempool/mononaut/fix-enterprise-import
Fix broken enterpriseService import
2024-07-11 15:06:28 +09:00
Mononaut
9748aa05cf Fix broken enterpriseService import 2024-07-11 05:59:29 +00:00
wiz
1a5613bf65 Merge pull request #5311 from mempool/natsoni/accel-tx-fee-update
Update tx acceleration state on confirmation
2024-07-11 14:50:06 +09:00
wiz
e55e4e378a Merge pull request #5310 from mempool/mononaut/acc-goal
accelerator goals
2024-07-11 01:21:15 +09:00
Mononaut
927eb98072 accelerator goals 2024-07-10 16:18:13 +00:00
natsoni
99ea1ad0a0 Avoid fetching full audit on tx page 2024-07-11 00:23:46 +09:00
softsimon
fed3012449 prevent goggles from becoming small or move with many filters activated 2024-07-10 23:26:34 +09:00
natsoni
bbff50527b Don't show Accelerated on tx just mined by non-participating pool 2024-07-10 23:23:40 +09:00
natsoni
4470461a98 Add retry logic to acceleration data fetching on tx page 2024-07-10 23:22:57 +09:00
natsoni
645fd98c30 Show actual accelerated fee rate on newly mined tracked tx 2024-07-10 23:21:53 +09:00
softsimon
10de603ee7 use default link color for top up link 2024-07-10 23:16:28 +09:00
softsimon
685c1c9fb2 Merge pull request #5308 from mempool/revert-5306-mononaut/selected-block-pool
Revert "align block arrows & reposition selected block pool tag"
2024-07-10 21:51:17 +09:00
softsimon
d02a67766d Revert "align block arrows & reposition selected block pool tag" 2024-07-10 21:51:04 +09:00
wiz
7721fde7b6 Merge pull request #5306 from mempool/mononaut/selected-block-pool
align block arrows & reposition selected block pool tag
2024-07-10 21:33:02 +09:00
wiz
aa10d1233c Merge pull request #5304 from mempool/natsoni/fix-miner-tag-loading
Possibly fix miner tag loading on tracked transactions
2024-07-10 21:31:56 +09:00
orangesurf
ba79821aac 20240710 Update ToS and PP (#5307) 2024-07-10 21:29:02 +09:00
Mononaut
e054e1d5a3 align block arrows & reposition selected block pool tag 2024-07-10 08:15:29 +00:00
softsimon
565910f9f9 Merge pull request #5303 from mempool/mononaut/oob-8dp
always show out-of-band block fees to 8 decimal places
2024-07-10 13:24:53 +09:00
natsoni
2915be8fd6 Possibly fix miner tag loading on tracked transactions 2024-07-10 12:55:34 +09:00
Mononaut
ff25b8ff1e always show out-of-band block fees to 8 decimal places 2024-07-10 03:51:51 +00:00
softsimon
2d03ab6346 make arrow position more consistent
fixes #5180
2024-07-10 12:49:16 +09:00
wiz
a530b70f9f Merge pull request #5302 from mempool/simon/smaller-block-arrow
Smaller block arrow
2024-07-10 01:46:42 +09:00
softsimon
986d71d47f Smaller block arrow 2024-07-10 01:44:15 +09:00
wiz
79f4720516 Merge pull request #5299 from mempool/mononaut/services-api-config
services api endpoint config
2024-07-09 23:51:53 +09:00
wiz
6135b1db10 Merge pull request #5300 from mempool/simon/pool-search-icons
Icons to pool search
2024-07-09 23:51:05 +09:00
wiz
4269077d4b Merge pull request #5301 from mempool/natsoni/hide-standard-eta-timeline
Remove standard ETA from timeline
2024-07-09 23:50:47 +09:00
natsoni
da0df70ad2 Acc timeline: More similar color logic with RBF 2024-07-09 22:14:40 +09:00
softsimon
6253d3716d Icons to pool search 2024-07-09 21:52:19 +09:00
Mononaut
614432426a call services api directly, make endpoint configurable 2024-07-09 12:23:52 +00:00
softsimon
e51951c3ff Merge pull request #5298 from svrgnty/master
add seconds to address and transaction views
2024-07-09 21:02:34 +09:00
natsoni
b38bf0f7b6 Hide standard ETA data until proper ETA calculation gets implemented 2024-07-09 20:50:47 +09:00
svrgnty
503de93094 add seconds to address and transaction views 2024-07-09 13:10:48 +02:00
natsoni
58f3169712 Faster, synced chevron animation 2024-07-09 18:48:58 +09:00
natsoni
53da6549e2 Remove unused CSS 2024-07-09 18:48:33 +09:00
wiz
65046c4cb8 Change blockstream/electrs to mempool/electrs in README 2024-07-09 18:03:41 +09:00
Mononaut
9416fd25f4 [accelerator] tidy up chevron animation 2024-07-09 08:58:03 +00:00
Mononaut
adde1a86e4 [accelerator] fast track chevrons animation 2024-07-09 08:57:09 +00:00
wiz
8a96669260 Merge pull request #5296 from mempool/mononaut/disable-services-proxy
[ops] disable node services api proxy on production
2024-07-09 15:38:38 +09:00
Mononaut
92434d41a4 [ops] disable services api proxy on production 2024-07-09 06:27:26 +00:00
softsimon
2c81ebb637 Merge pull request #5294 from mempool/mononaut/acc-fee-graph-fixes
[accelerator] improve rendering of acceleration fee rate graph
2024-07-09 01:01:27 +09:00
wiz
7735da96f2 Merge pull request #5293 from mempool/simon/block-mining-pool-logos
Block pool logos [Test]
2024-07-09 00:10:06 +09:00
softsimon
d914df20ba updating miner tag on tx page 2024-07-09 00:01:20 +09:00
softsimon
852e2b2fa0 miner tag as texts instead of badges 2024-07-08 23:44:22 +09:00
Mononaut
9396a4bbae [accelerator] improve rendering of acceleration fee rate graph 2024-07-08 14:36:38 +00:00
wiz
bf95938be8 Merge branch 'master' into simon/block-mining-pool-logos 2024-07-08 23:06:28 +09:00
wiz
8d2e7bef7a Merge pull request #5287 from mempool/natsoni/acc-timeline-polish
Acceleration timeline polishing
2024-07-08 23:06:09 +09:00
wiz
6f31fb2a08 Merge branch 'master' into natsoni/acc-timeline-polish 2024-07-08 22:54:31 +09:00
wiz
34b5678199 Merge pull request #5292 from mempool/mononaut/high-fee-accelerations
[accelerator] hide modal for transactions near the top of the mempool
2024-07-08 22:53:53 +09:00
softsimon
432496d2a0 move logo into the badge 2024-07-08 22:53:03 +09:00
natsoni
23ee613414 Fix missing 'Mined' tag 2024-07-08 22:49:31 +09:00
softsimon
c391a532de fix overflow 2024-07-08 22:29:49 +09:00
natsoni
cd56128bb6 Implement feedbacks on acceleration timeline 2024-07-08 22:17:18 +09:00
wiz
07370a8dc7 Merge branch 'master' into natsoni/acc-timeline-polish 2024-07-08 21:58:34 +09:00
natsoni
bf51e3e1c9 Show unaccelerated ETA in acceleration timeline 2024-07-08 21:53:41 +09:00
softsimon
eec6efcc22 Block pool logos 2024-07-08 21:45:57 +09:00
Hans ❤️ Crypto
64dd55b44b Update block.component.html 2024-07-08 12:40:43 +02:00
Hans ❤️ Crypto
e2d2a8da26 Update block-transactions.component.html 2024-07-08 12:39:49 +02:00
Mononaut
487d82eccf [accelerator] hide modal for transactions near the top of the mempool 2024-07-08 09:45:49 +00:00
softsimon
c43b567847 extracting i18n 2024-07-08 18:00:55 +09:00
wiz
5d9c846a8f Merge pull request #5290 from mempool/mononaut/server-side-bids 2024-07-08 17:50:46 +09:00
wiz
cc30536857 Merge pull request #5291 from mempool/simon/acc-error-message-positioning 2024-07-08 17:49:00 +09:00
wiz
8625419417 Merge pull request #5288 from mempool/natsoni/fix-statistics-replication 2024-07-08 17:47:17 +09:00
natsoni
a9341821c5 Remove 211.fra from trusted servers list 2024-07-08 17:36:25 +09:00
softsimon
d074ff1d4c Fix accelerator error message positioning 2024-07-08 16:38:38 +09:00
Mononaut
9837a69a1a [accelerator] move bid option calculation to server side 2024-07-08 05:18:42 +00:00
softsimon
32eaf29aaa fix i18n error rendering 2024-07-08 12:48:29 +09:00
softsimon
5316d1705a pulling new i18n 2024-07-08 11:42:57 +09:00
softsimon
2fb735c430 adding missing i18n 2024-07-07 23:01:55 +09:00
natsoni
5001d553f3 Quick fix on statistics replication: filter out temporal outsiders 2024-07-07 22:35:34 +09:00
softsimon
663a09ea97 i18n extraction 2024-07-07 18:59:22 +09:00
softsimon
8afdd9a482 Merge pull request #5285 from mempool/mononaut/acc-timeout
[accelerator] error message after timeout
2024-07-07 18:58:28 +09:00
softsimon
fc12733132 Merge pull request #5286 from mempool/mononaut/accelerator-unavailable
[accelerator] handle temporarily unavailable state
2024-07-06 20:00:06 +09:00
Mononaut
0c200e090d [accelerator] handle temporarily unavailable state 2024-07-06 10:48:37 +00:00
Mononaut
f4a9aeacc7 [accelerator] error message after timeout 2024-07-06 08:32:33 +00:00
softsimon
1a2487b740 Merge pull request #5284 from mempool/mononaut/zero-seconds
handle zero relative time seconds
2024-07-06 14:54:35 +09:00
Mononaut
3425bdd100 handle zero relative time seconds 2024-07-06 05:48:43 +00:00
softsimon
be72a26760 Merge pull request #5283 from mempool/natsoni/fix-liquid-blocks-page
Fix Liquid blocks page
2024-07-06 00:10:01 +09:00
softsimon
77cd07cc93 Merge pull request #5282 from mempool/mononaut/acc-error-msgs
[accelerator] proper error handling
2024-07-06 00:03:54 +09:00
Mononaut
0e122c15e2 [accelerator] handle estimate api fail 2024-07-05 13:53:03 +00:00
natsoni
2ec0e6634b Fix Liquid blocks page 2024-07-05 22:51:39 +09:00
natsoni
a0992f6091 More accel timeline polish 2024-07-05 22:42:53 +09:00
Mononaut
b8820684c3 [accelerator] proper error handling 2024-07-05 10:42:46 +00:00
natsoni
7c08a104ce remove rtl for now 2024-07-05 16:48:50 +09:00
natsoni
fb8bd4b194 Add i18n to acceleration timeline 2024-07-05 16:35:00 +09:00
softsimon
20d948c280 updating i18n 2024-07-05 16:32:26 +09:00
natsoni
1710ae0503 Improve step colors in timeline 2024-07-05 16:30:12 +09:00
softsimon
8735b62510 fix hide acceleration button overflow
fixes #5276
2024-07-05 16:22:28 +09:00
softsimon
4cd70941f7 Merge pull request #5277 from mempool/natsoni/acceleration-timeline
Acceleration timeline concept
2024-07-05 15:49:09 +09:00
softsimon
2773c21343 rename RBF history to timeline 2024-07-05 15:47:06 +09:00
wiz
54763fe5d6 Merge pull request #5281 from mempool/mononaut/enable-auto-pools
Rename AUTOMATIC_POOLS_UPDATE, set in prod
2024-07-05 15:43:00 +09:00
Mononaut
99b8a3cb3e Rename AUTOMATIC_POOLS_UPDATE, set in prod 2024-07-05 05:58:14 +00:00
wiz
d15e2ada42 ops: Set HTTP expires header for warm cache mining APIs 2024-07-05 14:44:56 +09:00
softsimon
70548ed532 Merge pull request #5280 from mempool/natsoni/add-first-seen
Add first seen data to confirmed transactions
2024-07-05 14:23:47 +09:00
natsoni
c85e7b08c3 Add first seen data to confirmed transactions 2024-07-05 11:46:30 +09:00
natsoni
bdd51a0f4b Merge branch 'master' into natsoni/acceleration-timeline 2024-07-04 20:55:45 +09:00
wiz
769bb6f1be Merge pull request #5279 from mempool/natsoni/error-message-context
Add more context to error messages
2024-07-04 20:13:37 +09:00
wiz
2fc89f6a35 Merge pull request #5278 from mempool/natsoni/fix-keynav-events
Fix issue on key navigation logic
2024-07-04 20:13:07 +09:00
wiz
f8447c10d5 Merge pull request #5275 from mempool/simon/remove-layer-two
Remove Layer 2 divider
2024-07-04 20:12:36 +09:00
natsoni
3d4316cd44 Add more context to error messages 2024-07-04 19:38:27 +09:00
natsoni
6ed6f2e2cf Fix key navigation logic in blocks-list and recent-pegs-list 2024-07-04 19:03:17 +09:00
softsimon
2b96c99fb3 Merge pull request #5274 from mempool/mononaut/stale-cpfp
Fix stale cpfp bug
2024-07-04 18:45:53 +09:00
natsoni
6b481d5a07 Add acceleration timeline 2024-07-04 18:22:39 +09:00
softsimon
cc77476756 Merge pull request #5272 from mempool/dependabot/npm_and_yarn/backend/ws-8.18.0
Bump ws from 8.17.1 to 8.18.0 in /backend
2024-07-04 18:01:17 +09:00
softsimon
736833b4f6 Remove Layer 2 divider 2024-07-04 17:58:40 +09:00
Mononaut
c37858fa54 Fix stale cpfp bug 2024-07-04 08:43:05 +00:00
wiz
fb44c1d8a8 Merge pull request #5273 from mempool/simon/hide-accelerator-graphs-non-mainnet
Hide accelerator charts on non-mainnet
2024-07-04 17:40:43 +09:00
natsoni
815dcbd4ce Retrieve acceleration request time and first seen time 2024-07-04 16:54:03 +09:00
softsimon
3c6e18f198 Hide accelerator charts on non-mainnet
fixes #5265
2024-07-04 11:43:31 +09:00
dependabot[bot]
fa84283a01 Bump ws from 8.17.1 to 8.18.0 in /backend
Bumps [ws](https://github.com/websockets/ws) from 8.17.1 to 8.18.0.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.17.1...8.18.0)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-04 02:13:31 +00:00
softsimon
46c4d57367 updating german i18n 2024-07-04 00:49:22 +09:00
softsimon
7dfb3c452f add some margin left to mining pie chart 2024-07-03 22:42:45 +09:00
softsimon
9be56badee updating japanese 2024-07-03 22:37:42 +09:00
softsimon
bbdc9e4aa4 fix accelerator logo positioning 2024-07-03 22:02:27 +09:00
softsimon
a3e58d632e add svg titles 2024-07-03 22:00:54 +09:00
wiz
df7e647523 Merge pull request #5271 from mempool/hunicus/add-logo-tm
Update trademark images
2024-07-03 21:47:41 +09:00
hunicus
c9edfa1826 Add logos to general info text section 2024-07-03 21:42:09 +09:00
hunicus
9ebb98b1b9 Revert horizontal logo change 2024-07-03 21:37:04 +09:00
softsimon
cc5ccd01e2 turn mempool accelerator logo into a link 2024-07-03 21:30:59 +09:00
softsimon
c34be2a334 fix malplaced details button 2024-07-03 21:18:33 +09:00
softsimon
1270a2d67a Pull from transifex 2024-07-03 21:17:02 +09:00
hunicus
5a4b79b83e Add accelerator & goggle logos to trademark-policy
Also update horizontal mempool.space logo to correct
font weight.
2024-07-03 21:07:02 +09:00
softsimon
2fc0079530 Accelerator mobile size 2024-07-03 20:50:02 +09:00
wiz
680d8504b6 Merge pull request #5268 from mempool/mononaut/paid-processing
accelerator success screen
2024-07-03 19:47:15 +09:00
wiz
89db3dc70e Merge pull request #5269 from mempool/simon/mempool-goggles-logo
Update mempool goggles logo
2024-07-03 19:45:53 +09:00
wiz
9d6816132b Merge pull request #5270 from mempool/simon/accelerate-logo-wip
Accelerate logo
2024-07-03 19:45:25 +09:00
softsimon
f496fc9653 Accelerate logo 2024-07-03 19:30:32 +09:00
softsimon
9318aa9a6a Update mempool goggles logo 2024-07-03 19:17:18 +09:00
Mononaut
db3db49fbc [accelerator] success confirmation screen 2024-07-03 18:16:50 +09:00
Mononaut
75ad6a2335 [accelerator] remove green success banner 2024-07-03 18:15:57 +09:00
softsimon
ec209bb618 new eta i18n key 2024-07-03 17:32:22 +09:00
softsimon
2b21ddd0b2 Merge pull request #5263 from mempool/simon/new-eta-label
New ETA label
2024-07-03 17:31:35 +09:00
softsimon
d0358f1551 Merge pull request #5262 from mempool/simon/accelerator-default-hide
Only default show accelerator on mempool space
2024-07-03 17:31:26 +09:00
softsimon
6ce1970ef4 Merge pull request #5260 from mempool/simon/tx-page-ui-jump
Fix accelerator ui jumps
2024-07-03 17:31:07 +09:00
softsimon
6597854b14 Fix accelerator ui jumps 2024-07-03 17:30:31 +09:00
softsimon
69cd054a97 Merge pull request #5267 from mempool/mononaut/fix-ln-invoice-flicker
fix ln invoice flicker
2024-07-03 17:29:43 +09:00
softsimon
0ea22961e8 fix i18n duplicate 2024-07-03 17:28:00 +09:00
Mononaut
1ce72e23a3 [accelerator] fix ln invoice flicker 2024-07-03 17:19:22 +09:00
softsimon
140c371c51 fix duplicate i18n 2024-07-03 16:24:45 +09:00
softsimon
39e55bb3f8 New ETA label 2024-07-03 15:59:54 +09:00
softsimon
5a9dde0807 Only default show accelerator on mempool space 2024-07-03 12:27:29 +09:00
softsimon
ae8b6043b2 Merge pull request #5261 from mempool/dependabot/npm_and_yarn/frontend/esbuild-0.23.0
Bump esbuild from 0.22.0 to 0.23.0 in /frontend
2024-07-03 11:54:56 +09:00
dependabot[bot]
b49618fbed Bump esbuild from 0.22.0 to 0.23.0 in /frontend
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.22.0 to 0.23.0.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.22.0...v0.23.0)

---
updated-dependencies:
- dependency-name: esbuild
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-03 02:29:29 +00:00
softsimon
46e8f6137c Merge pull request #5259 from mempool/mononaut/fix-auth-refresh
fix auth refresh race condition
2024-07-02 22:11:34 +09:00
Mononaut
ec2ab174de fix auth refresh race condition 2024-07-02 13:08:20 +00:00
wiz
4e18ff3329 Merge pull request #5258 from mempool/nymkappa/btcpayid
[btcpay] temp fix qr code accel
2024-07-02 22:04:24 +09:00
nymkappa
90a8ff47b7 [btcpay] temp fix qr code accel 2024-07-02 22:03:44 +09:00
wiz
c4f5aa1874 Merge pull request #5253 from mempool/natsoni/fix-accelerator-dashboard
Fix key navigation bug in accelerator dashboard
2024-07-02 21:43:36 +09:00
wiz
3c106a3c8f Merge pull request #5254 from mempool/nymkappa/hide-accel-menu
[services] hide accelerator from user menu if not whitelisted
2024-07-02 21:43:26 +09:00
wiz
ec033a9eaf Merge pull request #5257 from mempool/mononaut/more-accelerator-polish
more accelerator polish
2024-07-02 21:43:02 +09:00
softsimon
6b0496029c Filter arrow key strokes 2024-07-02 21:42:11 +09:00
Mononaut
642bf86423 [accelerator] streamline payment method logic 2024-07-02 12:32:09 +00:00
Mononaut
3e07d6b684 [accelerator] disable for txs not in mempool 2024-07-02 12:32:08 +00:00
softsimon
3a94687548 Merge pull request #5248 from mempool/nymkappa/fix-btcpay-invoice-amount
[btcpay] cleanup invoice api
2024-07-02 21:32:01 +09:00
softsimon
8028d80ab8 Merge pull request #5256 from mempool/nymkappa/more-auth-fix
[auth] more auth fixes
2024-07-02 21:31:36 +09:00
softsimon
453bcffbbc mandarin corrections 2024-07-02 21:23:43 +09:00
nymkappa
c6b2db9282 [auth] more auth fixes 2024-07-02 21:20:18 +09:00
nymkappa
00fb261124 [services] hide accelerator from user menu if not whitelisted 2024-07-02 20:43:37 +09:00
nymkappa
11113041bb Merge branch 'master' into nymkappa/fix-btcpay-invoice-amount 2024-07-02 20:34:42 +09:00
softsimon
63cb6c3804 Merge pull request #5250 from mempool/nymkappa/accel-checkout-clear-error
[accelerator] clear error state when auth state changes
2024-07-02 18:26:05 +09:00
softsimon
2ff3d00bd7 Merge pull request #5249 from mempool/nymkappa/fix-auth-issue
[auth] catch auth error and return null
2024-07-02 18:23:12 +09:00
softsimon
f0a63aaba3 Merge pull request #5251 from mempool/dependabot/npm_and_yarn/frontend/cypress-13.13.0
Bump cypress from 13.12.0 to 13.13.0 in /frontend
2024-07-02 18:22:05 +09:00
softsimon
44ef81fde0 Swedish, Chinese etc 2024-07-02 17:29:08 +09:00
softsimon
16caae8123 i18n fix 2024-07-02 17:11:50 +09:00
softsimon
5a897e56ab i18n fix 2024-07-02 17:05:56 +09:00
softsimon
5715915850 add missing i18n 2024-07-02 16:46:49 +09:00
softsimon
53109aa50a fixing i18n 2024-07-02 15:54:49 +09:00
softsimon
d52ca35cc0 i18n fixes 2024-07-02 15:32:03 +09:00
softsimon
d00f4245f8 i18n fixes 2024-07-02 15:15:59 +09:00
natsoni
4723ca88ec Fix key navigation bug in accelerator dashboard 2024-07-02 15:04:54 +09:00
softsimon
e5d23e8076 Merge pull request #5252 from mempool/natsoni/fix-bech32
Fix bech32 regex and adapt tests
2024-07-02 14:33:53 +09:00
softsimon
2827dcd0ba i18n fixes 2024-07-02 14:02:16 +09:00
natsoni
7d7f9b1665 Fix bech32 regex and adapt tests 2024-07-02 13:09:05 +09:00
dependabot[bot]
2eb9108046 Bump cypress from 13.12.0 to 13.13.0 in /frontend
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.12.0 to 13.13.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.12.0...v13.13.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-02 02:53:56 +00:00
nymkappa
b198528592 [accelerator] clear error state when auth state changes 2024-07-02 11:21:30 +09:00
nymkappa
7dcd952a40 [btcpay] cleanup invoice api 2024-07-02 11:12:20 +09:00
nymkappa
89a3b1c577 [auth] catch auth error and return null 2024-07-02 10:37:40 +09:00
softsimon
3dbbc83077 Updating i18n strings 2024-07-01 22:54:24 +09:00
softsimon
011a854a84 Merge pull request #5244 from mempool/nymkappa/refresh-checkout-state-logout
[accelerator] refresh checkout state logout
2024-07-01 19:08:07 +09:00
softsimon
6261f83e5e Merge pull request #5246 from mempool/nymkappa/update-payment-method-handling
[accelerator] update payment method handling
2024-07-01 19:06:26 +09:00
softsimon
c4b45180dd Merge pull request #5241 from vostrnad/baremultisig-labels
Fix missing bare multisig labels
2024-07-01 19:06:07 +09:00
nymkappa
69b40cf073 [accelerator] add new error message payment_method_not_allowed_out_of_bound 2024-07-01 18:30:40 +09:00
nymkappa
9ef79a268d [accelerator] update payment method handling 2024-07-01 18:18:13 +09:00
softsimon
75c9e15e16 Merge branch 'master' into nymkappa/refresh-checkout-state-logout 2024-07-01 18:00:30 +09:00
softsimon
dfede7fe25 Merge pull request #5243 from mempool/mononaut/hybrid-accelerator-polish
Accelerator polish
2024-07-01 18:00:08 +09:00
softsimon
a86709d7b0 Merge pull request #5245 from mempool/mononaut/no-replaceable-inputs
don't accelerate txs with replaceable inputs
2024-07-01 17:07:42 +09:00
Mononaut
396eee3555 [accelerator] hide accelerate button for ineligible txs 2024-07-01 07:42:57 +00:00
Mononaut
5067c88642 [accelerator] check for high sigops 2024-07-01 07:39:28 +00:00
Mononaut
e35ac6e1a2 [accelerator] check for input replaceability 2024-07-01 07:28:25 +00:00
nymkappa
5b93c8e875 [accelerator] refresh auth state when logging out 2024-07-01 16:21:47 +09:00
Mononaut
c71a0afe1f [accelerator] remember hide accelerator preference 2024-07-01 06:44:03 +00:00
nymkappa
2d12d2e5ef [logout] fix redirection 2024-07-01 15:30:39 +09:00
Mononaut
23fa28567d [accelerator] toggle button alignment 2024-07-01 06:19:29 +00:00
Mononaut
a624e82630 [accelerator] restore "wait" radio on pizza tracker 2024-07-01 06:19:11 +00:00
Mononaut
da4c2f5307 [accelerator] remove safety catch, always show checkout 2024-07-01 05:45:32 +00:00
nymkappa
b91f195955 [footer] refresh auth state in real time 2024-07-01 14:33:19 +09:00
Mononaut
69b346ab00 move CPFP panel above accelerator 2024-07-01 05:24:21 +00:00
Vojtěch Strnad
1c89a1a44e Fix missing bare multisig labels 2024-07-01 07:21:37 +02:00
Mononaut
3088befbf5 remove btcpay.svg 2024-07-01 05:18:19 +00:00
softsimon
7ed35b955d Merge pull request #5239 from mempool/dependabot/docker/docker/frontend/node-20.15.0-buster-slim
Bump node from 20.14.0-buster-slim to 20.15.0-buster-slim in /docker/frontend
2024-07-01 12:59:19 +09:00
softsimon
e7e4b63fbc Merge pull request #5238 from mempool/dependabot/docker/docker/backend/node-20.15.0-buster-slim
Bump node from 20.14.0-buster-slim to 20.15.0-buster-slim in /docker/backend
2024-07-01 12:59:08 +09:00
softsimon
723ac4cece Merge pull request #5240 from mempool/dependabot/npm_and_yarn/frontend/esbuild-0.22.0
Bump esbuild from 0.21.1 to 0.22.0 in /frontend
2024-07-01 12:58:49 +09:00
dependabot[bot]
1a91f2b0a3 Bump esbuild from 0.21.1 to 0.22.0 in /frontend
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.21.1 to 0.22.0.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.21.1...v0.22.0)

---
updated-dependencies:
- dependency-name: esbuild
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 02:49:42 +00:00
softsimon
300bfd225b Merge pull request #5207 from mempool/mononaut/pool-reindexing
Pool reindexing
2024-07-01 11:32:03 +09:00
mononaut
cf09669902 Merge branch 'master' into mononaut/pool-reindexing 2024-07-01 11:25:02 +09:00
dependabot[bot]
d5525ae324 Bump node in /docker/frontend
Bumps node from 20.14.0-buster-slim to 20.15.0-buster-slim.

---
updated-dependencies:
- dependency-name: node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 02:16:38 +00:00
dependabot[bot]
ff8b0a8d80 Bump node in /docker/backend
Bumps node from 20.14.0-buster-slim to 20.15.0-buster-slim.

---
updated-dependencies:
- dependency-name: node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-01 02:11:21 +00:00
softsimon
8fc5fdbde6 Merge pull request #5237 from vostrnad/p2tr-without-witness
Fix errors caused by P2TR inputs without witness data
2024-07-01 10:48:16 +09:00
Mononaut
27c70bd919 Also fix backend errors caused by P2TR inputs without witness data 2024-07-01 01:22:10 +00:00
Vojtěch Strnad
7432e6e29b Fix errors caused by P2TR inputs without witness data 2024-07-01 02:02:53 +02:00
wiz
a9c3637c7f Merge pull request #5233 from mempool/mononaut/hybrid-acceleration-checkout
hybrid acceleration checkout
2024-07-01 00:27:53 +09:00
softsimon
de95dd9c77 removing margin causing table jump 2024-06-30 22:20:44 +09:00
Mononaut
da1e5c515e [accelerator] use invoice amount 2024-06-30 12:44:32 +00:00
Mononaut
ce879152fd [accelerator] don't scroll to btcpay invoice 2024-06-30 12:43:38 +00:00
Mononaut
d76490df0c [accelerator] fresh invoice after changing bid 2024-06-30 12:43:31 +00:00
Mononaut
a80372f335 [accelerator] play sound on invoice paid 2024-06-30 12:43:26 +00:00
softsimon
102625b3ea Merge pull request #5236 from mempool/mononaut/fix-weird-dust
Fix dust limit for undefined witness program outputs
2024-06-30 18:34:42 +09:00
softsimon
eb3c248acd Add test transaction 2024-06-30 18:34:22 +09:00
Mononaut
9140bcb408 [accelerator] fix liquid 2024-06-30 08:58:39 +00:00
Mononaut
35d0e7fae7 [accelerator] rerefactor bitcoin-payment component 2024-06-30 08:39:32 +00:00
Mononaut
f114a8ca75 [accelerator] refactor bitcoin-payment component 2024-06-30 08:15:20 +00:00
Mononaut
0b663c1a77 [accelerator] fix loading spinner alignment 2024-06-30 07:41:25 +00:00
Mononaut
c494207469 [accelerator] match loading height to actual QR 2024-06-30 07:38:25 +00:00
Mononaut
ce31d0512c [accelerator] improve btcpay QR codes 2024-06-30 07:32:04 +00:00
Mononaut
3ecc8ae8cf [accelerator] ln qr 2024-06-30 07:17:15 +00:00
Mononaut
1e820a0fc8 [accelerator] soft enforce referrer 2024-06-30 06:56:55 +00:00
Mononaut
e3abdf4b4f [accelerator] revert titles 2024-06-30 06:56:55 +00:00
Mononaut
caf7011df5 [accelerator] checkbox error hint 2024-06-30 06:56:54 +00:00
softsimon
7caad9fca9 Merge pull request #5234 from mempool/nymkappa/fix-bitcoin-rounding
[btcpay] fix displayed amount
2024-06-30 14:54:26 +09:00
Mononaut
84e1ac31c2 [accelerator] fix stray margin 2024-06-30 05:51:13 +00:00
Mononaut
3b4ac3b6b7 [accelerator] less muted text 2024-06-30 05:42:32 +00:00
Mononaut
cfe5da2276 [accelerator] streamline flow 2024-06-30 05:37:51 +00:00
Mononaut
110b7a934c [accelerator] buttons 2024-06-30 04:57:00 +00:00
Mononaut
d059c5ca27 [accelerator] slim summary screen 2024-06-30 03:43:28 +00:00
Mononaut
bf37affe47 [accelerator] fiat limits 2024-06-30 03:23:09 +00:00
Mononaut
2798b43913 [accelerator] adjust h1 labels 2024-06-30 02:40:58 +00:00
Mononaut
425edb9b9f Fix dust limit for undefined witness program outputs 2024-06-30 02:06:50 +00:00
Mononaut
f68c8cc621 [accelerator] restore scroll events, remove eta button 2024-06-30 01:46:11 +00:00
Mononaut
c5fc476834 [accelerator] no autoscroll to checkout 2024-06-29 09:21:39 +00:00
Mononaut
776404dbde [accelerator] Pro for everyone 2024-06-29 09:17:08 +00:00
nymkappa
1067131120 [btcpay] fix displayed amount 2024-06-29 16:47:38 +09:00
Mononaut
6cf753ddaf [accelerator] fix other missing button 2024-06-29 07:46:24 +00:00
Mononaut
277f8f7bfd [accelerator] restore missing sparkles button 2024-06-29 07:45:10 +00:00
Mononaut
c249da7901 [accelerator] pizza tracker waitlisted & preview-only screens 2024-06-29 07:13:43 +00:00
Mononaut
3720d67666 [accelerator] waitlisted & preview-only screens 2024-06-29 07:04:08 +00:00
Mononaut
84d4eaa932 remove stray console.log 2024-06-29 06:08:58 +00:00
Mononaut
d62300ccff [accelerator] add acceleration paid screen, fix end state 2024-06-29 06:06:11 +00:00
Mononaut
48bdae4e78 [accelerator] hide pizza tracker CTA when irrelevant 2024-06-29 04:11:02 +00:00
Mononaut
193c41cb81 Fix pizza tracker loading state 2024-06-29 04:10:47 +00:00
Mononaut
5872b2c46b [accelerator] fix success/failure messages 2024-06-28 13:46:02 +00:00
Mononaut
e158c10688 [accelerator] fix duplicate invoice request 2024-06-28 13:46:02 +00:00
wiz
b4e46c3ff8 Merge branch 'master' into mononaut/hybrid-acceleration-checkout 2024-06-28 21:26:23 +09:00
nymkappa
254d962558 [accelerator] add new error message 2024-06-28 07:06:02 +00:00
Mononaut
c75afe20cd More acceleration checkout refactoring 2024-06-28 07:05:57 +00:00
wiz
98e9d1a6c3 Merge pull request #5227 from mempool/hunicus/about-juggling
Juggle community integration listings
2024-06-28 15:45:39 +09:00
hunicus
c4577b8c09 Merge branch 'master' into hunicus/about-juggling 2024-06-28 15:36:00 +09:00
hunicus
95c4da51ed Juggle community integration listings
Also add back bitcoin-s and remove mercury.

Signed-off-by: hunicus <93150691+hunicus@users.noreply.github.com>
2024-06-28 15:30:43 +09:00
softsimon
2e336d7ad1 Merge pull request #5231 from mempool/hunicus/about-foundry-logo
Update foundry logo on about page
2024-06-28 14:07:48 +09:00
hunicus
903ff1ea66 Update foundry logo on about page 2024-06-28 13:49:13 +09:00
softsimon
f02d8e0626 Merge pull request #5230 from mempool/simon/docs-root-network-support
Docs root network support
2024-06-28 11:43:05 +09:00
softsimon
ea04ea0048 Docs root network support 2024-06-28 11:28:41 +09:00
Mononaut
473da82caa acceleration estimate payment methods field 2024-06-27 13:09:43 +00:00
Mononaut
415ad3de70 Merge simple & advanced acceleration checkout components 2024-06-27 13:09:39 +00:00
softsimon
d91c6bceed Merge pull request #5226 from mempool/natsoni/fix-accel-pie-chart
Fix logic for pool pie chart position
2024-06-27 21:48:04 +09:00
softsimon
aa5355e93d Merge pull request #5229 from rishkwal/rishkwal/fix-tx-base-route
Redirect user to `/` when user goes to `/tx` without any transaction `id`
2024-06-27 21:44:27 +09:00
softsimon
9672928da9 Adding missing TESTNET4_ENABLED to docker build 2024-06-27 19:19:28 +09:00
Rishabh
d189e70817 fix: redirect /tx/ routes to / 2024-06-27 15:11:00 +05:30
Mononaut
d7acd389bf fix scrolljacking by #accelerate fragment 2024-06-27 09:07:24 +00:00
Mononaut
9fe44bd6ba more simple acceleration UI adjustments 2024-06-27 09:07:24 +00:00
Mononaut
4445fe408b Add simple mode checkout to main transaction page 2024-06-27 09:07:22 +00:00
nymkappa
790e76ab26 [accelerator] add payment methods assets 2024-06-27 09:05:50 +00:00
nymkappa
66a88b8422 [accelerator] accelerate with lightning 2024-06-27 09:05:49 +00:00
natsoni
bb91f9142e Fix accel pool pie chart placement 2024-06-27 17:50:45 +09:00
softsimon
66f90cb0bd Merge pull request #5225 from mempool/natsoni/fix-accel-preview-displaying
Fix acceleration preview showing with fragment on accel txs
2024-06-27 16:50:31 +09:00
softsimon
f1572f0038 Merge pull request #5222 from mempool/mononaut/partition-pool-pie
Show more detail in acceleration pools pie chart
2024-06-27 16:37:28 +09:00
natsoni
c3963d6a0d Fix acceleration preview showing with fragment on accel txs 2024-06-27 16:32:20 +09:00
softsimon
1dd86df3e0 Merge pull request #5224 from mempool/hunicus/about-coldcard
Replace bitcoin-s with coldcard on about page
2024-06-27 16:02:47 +09:00
softsimon
c8d443bea7 Merge pull request #5216 from mempool/natsoni/align-acceleration-pie-chart
Align "Accelerated to / by" fields on mobile
2024-06-27 15:44:03 +09:00
hunicus
575fc737ca Replace bitcoin-s with coldcard on about page 2024-06-27 15:34:53 +09:00
Mononaut
ebd4408b8d Adjust acceleration pool pie labels 2024-06-27 06:19:43 +00:00
Mononaut
d6d8c85419 Show more detail in acceleration pools pie chart 2024-06-27 03:40:03 +00:00
softsimon
fbb409e17b Merge pull request #5219 from mempool/simon/local-accelerator-estimates
Show accelerator estimates on local instances
2024-06-27 11:19:07 +09:00
softsimon
b6d03953b9 Show accelerator estimates on local instances 2024-06-26 21:42:30 +09:00
natsoni
d45104f7c9 Align acceleration pie chart 2024-06-26 18:03:14 +09:00
softsimon
d175c34e5b Merge pull request #5211 from mempool/simon/simpler-advanced-acceleration
Simplify advanced acceleration
2024-06-26 17:42:11 +09:00
softsimon
2bf2440e3a Merge pull request #5215 from mempool/mononaut/acceleration-preview-layout-tweaks
Minor style & layout tweaks for the acceleration preview
2024-06-26 17:41:33 +09:00
Mononaut
124c0acbe1 Minor layout tweaks for the acceleration preview 2024-06-26 08:18:39 +00:00
softsimon
69c5a2fb5a Merge pull request #5214 from mempool/natsoni/rbf-list-loading
Show loading indicator on toggle in RBF list
2024-06-26 17:10:14 +09:00
softsimon
c4f08e0d41 Merge pull request #5213 from mempool/natsoni/accelerations-table-fixes
Add page in URL to accelerations table
2024-06-26 17:08:49 +09:00
natsoni
87ee14f189 Show loading indicator on toggle in RBF list 2024-06-26 16:12:21 +09:00
natsoni
122b4b05c4 Add pagination in URL to accelerations table 2024-06-26 15:37:39 +09:00
natsoni
09f7dddf14 Use url parameter instead of query parameter 2024-06-26 15:25:03 +09:00
softsimon
f7ad45939c Hide surcharge row if zero 2024-06-26 15:08:00 +09:00
natsoni
7b6246a035 Fix loading state in blocks table issue 2024-06-26 14:20:49 +09:00
softsimon
a8d2138404 Simplify advanced acceleration 2024-06-26 12:30:34 +09:00
softsimon
0b608c96dd Merge pull request #5212 from mempool/simon/fix-eta-loading-error
Fix ETA loading error
2024-06-26 12:29:22 +09:00
softsimon
a0402b92f9 Fix ETA loading error 2024-06-26 12:12:49 +09:00
softsimon
14e05b43c7 Merge pull request #5210 from mempool/natsoni/btc-unit-on-pool-page
Force amounts to BTC unit in pool page
2024-06-26 11:46:32 +09:00
natsoni
fc8f8abc7e Add SEO title to Accelerations page 2024-06-26 11:42:22 +09:00
natsoni
a1f1b09c55 Fix loading indicator when changing page 2024-06-26 11:13:32 +09:00
natsoni
ad2d7af084 Force amounts to BTC unit in pool page 2024-06-26 10:48:17 +09:00
softsimon
9d3044efae Merge pull request #5199 from mempool/mononaut/tracker-acceleration-eta
Add projected acceleration ETA to tracker page
2024-06-25 17:15:41 +09:00
wiz
bac21afa54 Merge pull request #5203 from mempool/simon/address-page-romanz-support
Romanz support for address page
2024-06-25 16:54:37 +09:00
softsimon
f98bb675e7 Merge pull request #5209 from mempool/mononaut/fix-type-error
Fix coinbase address type error
2024-06-25 11:25:29 +09:00
Mononaut
3e057f2db1 Fix coinbase address type error 2024-06-25 02:20:44 +00:00
softsimon
4fbdf92f0c Merge pull request #5206 from mempool/simon/address-prefix-fixes
Fix address prefix for non esplora backend
2024-06-25 10:21:50 +09:00
softsimon
fd60940a08 Merge pull request #5167 from mempool/dependabot/npm_and_yarn/unfurler/braces-3.0.3
Bump braces from 3.0.2 to 3.0.3 in /unfurler
2024-06-24 21:21:34 +09:00
Mononaut
c54bc5a4bb Clear redis block cache on pool update 2024-06-24 12:07:52 +00:00
Mononaut
04559e7b98 Update README.md with new mining pool update behavior 2024-06-24 12:07:51 +00:00
Mononaut
255919f03f Update pool instead of deleting blocks 2024-06-24 12:07:51 +00:00
softsimon
b92b5cdd87 Merge pull request #5205 from mempool/mononaut/index-cb-addresses
Add coinbase_addresses to extended blocks & table
2024-06-24 20:59:38 +09:00
Mononaut
03036bf59d coinbase_addresses fixes 2024-06-24 11:51:12 +00:00
softsimon
563def45d8 Fix address prefix for non esplora backend 2024-06-24 18:27:30 +09:00
wiz
e4c9b67239 Merge pull request #5204 from mempool/simon/fix-tx-position-crash
Fix tx position frontend error
2024-06-24 17:26:34 +09:00
softsimon
38bf056b6d Merge pull request #5187 from mempool/simon/websocket-reconnect-root-instance
Prevent websocket reconnect on custom root instances
2024-06-24 17:15:35 +09:00
softsimon
91ddf7ea98 Fix tx position crash 2024-06-24 17:10:33 +09:00
softsimon
a9a1ff68ab Romanz support for address page 2024-06-24 16:25:29 +09:00
softsimon
dfc61f3991 Merge pull request #5202 from mempool/natsoni/round-24h-hashrate
Round 24h pools hashrate
2024-06-24 16:06:10 +09:00
Mononaut
f9d03b1bb4 Add coinbase_addresses to extended blocks & table 2024-06-24 06:15:01 +00:00
softsimon
868dac91c7 Merge pull request #5197 from mempool/simon/sha256-secure-context-workaround
Sha256 P2PK secure context workaround
2024-06-24 13:22:55 +09:00
natsoni
3c689e34b8 Round 24h pools hashrate 2024-06-24 13:22:47 +09:00
softsimon
835f16aab6 Merge pull request #5198 from mempool/natsoni/fix-confirmed-after
Fix "Confirmed after" transaction field
2024-06-24 11:53:50 +09:00
softsimon
2c2a6ee872 Merge pull request #5200 from mempool/mononaut/no-trailing-spaces
no trailing spaces
2024-06-24 11:19:40 +09:00
Mononaut
7d0720d55f no trailing spaces 2024-06-24 02:16:59 +00:00
natsoni
c4dec53387 Fix confirmed after 55 years 2024-06-24 11:06:33 +09:00
Mononaut
517e82ec8b Add projected acceleration ETA to tracker page 2024-06-24 02:06:22 +00:00
softsimon
0c72e1b6ed Merge pull request #5195 from mempool/natsoni/hide-usd-on-non-mainnet
Address balance graph: hide usd on non-mainnet networks
2024-06-24 10:34:30 +09:00
softsimon
5d1877a275 Sha256 P2PK secure context workaround 2024-06-24 09:31:02 +09:00
natsoni
8a43ed1a61 Address balance graph: hide usd on non-mainnet networks 2024-06-23 22:35:00 +09:00
softsimon
61c9debcca Merge pull request #5007 from mempool/nymkappa/prepaid-update-price
[accelerator] change default bid prepaid
2024-06-23 18:51:28 +09:00
wiz
172fb0bf41 Merge pull request #5178 from mempool/mononaut/fix-reorg-health-check
Recover from esplora failover after a reorg to lower height
2024-06-23 18:35:19 +09:00
wiz
eedfbacf01 Merge pull request #5147 from mempool/mononaut/accelerate-preview-hashrate-pie
Acceleration preview hashrate pie chart
2024-06-23 18:34:44 +09:00
Mononaut
396b7eb3d3 Add expected hashrate pie chart & eta to acceleration preview 2024-06-23 09:32:37 +00:00
Mononaut
05724b9d58 Integrate multi-pool ETA into pizza tracker 2024-06-23 09:31:16 +00:00
Mononaut
f67ae10684 Integrate multi-pool ETA into transaction page 2024-06-23 09:30:02 +00:00
Mononaut
e11ce14f81 hashrate is a number not a string 2024-06-23 09:30:02 +00:00
Mononaut
833418514e Multi-pool ETA calculation 2024-06-23 09:30:01 +00:00
softsimon
6277813414 Merge pull request #5193 from mempool/mononaut/address-table-wrapping
Refactor address table to improve cell wrapping
2024-06-23 18:21:24 +09:00
softsimon
6936b97ba6 Merge pull request #5194 from mempool/simon/fix-stripped-mempool-transactions
Fix mempool transactions being stripped
2024-06-23 17:58:46 +09:00
softsimon
4dfabaf165 Fix mempool transactions being stripped
fixes #5150
2024-06-23 17:50:13 +09:00
softsimon
06f60df4cf Fix tx page crash when accelerationHistory errors 2024-06-23 15:38:53 +09:00
Mononaut
29a8f6a09e Refactor address table to improve cell wrapping 2024-06-23 03:17:33 +00:00
wiz
9394572ec3 Merge pull request #5190 from mempool/simon/address-page-updates
Address page ux updates
2024-06-22 17:53:00 +09:00
softsimon
8e521a2376 Add "confirmed" 2024-06-22 17:52:31 +09:00
softsimon
b227767fee Address page ux updates 2024-06-22 17:34:27 +09:00
natsoni
1c1c93abfc Fix websocket network change handling 2024-06-22 17:28:08 +09:00
softsimon
ec7c691044 Merge pull request #5189 from mempool/simon/twitter-to-x
Twitter -> X
2024-06-22 16:23:15 +09:00
softsimon
92e6df1295 Twitter -> X 2024-06-22 16:21:55 +09:00
softsimon
8b0015b3ff Merge pull request #5153 from mempool/natsoni/address-history-chart-usd
Add USD to address balance history chart
2024-06-22 16:11:56 +09:00
softsimon
19ea077fe5 Merge branch 'master' into natsoni/address-history-chart-usd 2024-06-22 15:54:31 +09:00
softsimon
16502332fd Merge pull request #5188 from mempool/natsoni/address-page-skeleton
Adapt address page skeleton
2024-06-22 15:53:37 +09:00
natsoni
7f2987f250 address page: adapt skeletons 2024-06-22 15:27:29 +09:00
natsoni
25e9741fc2 Set same start time for BTC and USD lines 2024-06-22 15:01:42 +09:00
softsimon
5be66f0b05 Merge pull request #5184 from mempool/mononaut/incoming-tx-scale
Always show clearing rate line on incoming tx chart
2024-06-22 14:57:31 +09:00
softsimon
a517c6c711 Prevent websocket reconnect on custom root instances 2024-06-22 14:55:59 +09:00
natsoni
43f35837da Merge branch 'master' into natsoni/address-history-chart-usd 2024-06-22 14:36:56 +09:00
softsimon
f9101b381b Merge pull request #5186 from mempool/mononaut/fix-hardcoded-median-weight
Fix hardcoded median weight units in calcEffectiveFeeStatistics
2024-06-22 14:18:58 +09:00
softsimon
6b84dc2be4 Merge branch 'master' into mononaut/fix-hardcoded-median-weight 2024-06-22 14:13:41 +09:00
softsimon
8082e1d1cf Merge pull request #5185 from mempool/mononaut/rust-gbt-block-size
configurable block size & count in rust gbt
2024-06-22 14:11:44 +09:00
Mononaut
36bc1db195 Fix hardcoded median weight units in calcEffectiveFeeStatistics 2024-06-22 04:38:06 +00:00
Mononaut
fa9a8bdba8 rust gbt restore 4kWU reserve 2024-06-22 04:30:36 +00:00
Mononaut
b44b790e28 configurable block size & count in rust gbt 2024-06-22 04:10:32 +00:00
softsimon
cf8d179925 Merge pull request #5176 from mempool/mononaut/fix-monitoring-layout
Fix monitoring table layout & text wrapping
2024-06-22 12:58:53 +09:00
softsimon
32db01d353 Merge pull request #5183 from mempool/simon/fix-invalid-json-response-missing-da
Missing difficulty adjustment causes invalid json response
2024-06-22 12:53:37 +09:00
Mononaut
7c806b4b23 Always show clearing rate line on incoming tx chart 2024-06-22 01:58:46 +00:00
softsimon
c581be0e97 Missing da causes invalid json 2024-06-22 10:52:01 +09:00
softsimon
e1e4e79b68 Merge pull request #5182 from mempool/simon/goggles-unit-tests
Unit tests: nonstandard
2024-06-22 09:54:37 +09:00
softsimon
246ca593bb Merge branch 'master' into simon/goggles-unit-tests 2024-06-22 09:43:35 +09:00
softsimon
136af78147 Merge pull request #5160 from mempool/mononaut/fix-nonstandard-label-bug
Fix incorrect non-standard label on reserved segwit output types
2024-06-22 09:32:06 +09:00
softsimon
da1ad1c316 Unit tests: nonstandard 2024-06-22 09:31:24 +09:00
softsimon
2e893e0aea adding missing }, to proxy conf 2024-06-22 08:21:56 +09:00
softsimon
b41382dfee Local dev accelerations proxy 2024-06-22 08:20:36 +09:00
softsimon
8d66374374 Merge pull request #5156 from mempool/simon/default-frontend-network-setting
Root frontend network setting
2024-06-22 07:56:13 +09:00
softsimon
c00d2f3763 Hack networkMatches 2024-06-21 19:32:25 +09:00
softsimon
e7cba13704 Add new frontend configs to docker 2024-06-21 19:09:35 +09:00
softsimon
55598e7974 Remove space between plus and amount 2024-06-21 18:38:37 +09:00
softsimon
bf81cc5ba9 Merge pull request #5159 from mempool/mononaut/handle-services-failures
Handle services backend failures in block component
2024-06-21 13:44:39 +09:00
Mononaut
c5b12e3bc3 split overview subscriptions in block component 2024-06-21 11:57:00 +09:00
softsimon
762c5aa718 Merge pull request #5169 from mempool/mononaut/core-gettxsforblock
Implement $getTxsForBlock for Core backends
2024-06-21 10:10:45 +09:00
softsimon
e95e64a443 Merge branch 'master' into mononaut/core-gettxsforblock 2024-06-21 08:03:34 +09:00
softsimon
d10fdaad46 Merge pull request #5177 from mempool/simon/deprecate-unique-pool-id
Deprecate pool_unique_id, fixing accelerations sync
2024-06-21 03:31:13 +09:00
Mononaut
5b554852bb Recover from esplora failover after a reorg to lower height 2024-06-20 14:29:35 +00:00
softsimon
ff8fb3b24f Merge pull request #5151 from mempool/mononaut/address-redesign-phase-1
Address page redesign phase 1
2024-06-20 17:51:48 +09:00
softsimon
1219526e2d Disabling liquid test and fixing liquid overflow 2024-06-20 17:43:54 +09:00
softsimon
85006a5bec some -> includes 2024-06-20 14:36:58 +09:00
softsimon
82e2f46eba Merge pull request #5134 from mempool/natsoni/improve-conversions-price-service
Improve price conversions fetching from free API
2024-06-20 14:15:07 +09:00
softsimon
0719b20110 Deprecate pool_unique_id 2024-06-20 12:22:54 +09:00
Mononaut
25b510359f Fix monitoring table layout & text wrapping 2024-06-20 03:09:54 +00:00
softsimon
02eb633d89 Merge pull request #5171 from mempool/nymkappa/fix-accel-dashboard-many-pending
[accelerator] always show last 6 completed accelerations in accel dashboard
2024-06-20 02:16:28 +09:00
nymkappa
522a473213 [accelerator] always show last 6 completed accelerations in accel dashboard 2024-06-19 17:32:16 +09:00
softsimon
bc583979c5 Merge pull request #5158 from mempool/dependabot/npm_and_yarn/frontend/braces-3.0.3
Bump braces from 3.0.2 to 3.0.3 in /frontend
2024-06-19 16:04:44 +09:00
softsimon
3222e0efd2 Merge pull request #5170 from mackalex/fix-grammatical-errors
Small grammatical or typo fixes in backend README
2024-06-19 16:03:45 +09:00
Alex Makoviecki
f720c90c03 Small grammatical or typo fixes in backend README 2024-06-18 22:36:32 -07:00
Mononaut
1bf5047377 Implement $getTxsForBlock for Core backends 2024-06-19 03:15:23 +00:00
dependabot[bot]
bdeac877d2 Bump braces from 3.0.2 to 3.0.3 in /frontend
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-19 03:01:39 +00:00
dependabot[bot]
1bcacf53be Bump braces from 3.0.2 to 3.0.3 in /unfurler
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-19 03:01:16 +00:00
softsimon
0c8d9daaec Merge pull request #5165 from mempool/dependabot/npm_and_yarn/backend/ws-8.17.1
Bump ws from 8.17.0 to 8.17.1 in /backend
2024-06-19 12:00:46 +09:00
softsimon
307d3627a0 Merge pull request #5164 from mempool/dependabot/npm_and_yarn/frontend/cypress-13.12.0
Bump cypress from 13.11.0 to 13.12.0 in /frontend
2024-06-19 12:00:30 +09:00
dependabot[bot]
db04c4663e Bump ws from 8.17.0 to 8.17.1 in /backend
Bumps [ws](https://github.com/websockets/ws) from 8.17.0 to 8.17.1.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.17.0...8.17.1)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-19 02:27:59 +00:00
dependabot[bot]
a0a6a0da4f Bump cypress from 13.11.0 to 13.12.0 in /frontend
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.11.0 to 13.12.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.11.0...v13.12.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-19 02:21:54 +00:00
natsoni
26968605cc Display both BTC and USD in address history graph 2024-06-18 11:27:12 +02:00
wiz
ccd8412e6a Merge pull request #5157 from mempool/nymkappa/grumpy
[about page] use grumpy guy instead of boring placeholder
2024-06-17 11:12:26 +09:00
Mononaut
272a2c8441 Fix incorrect non-standard label on reserved segwit output types 2024-06-16 22:25:40 +00:00
softsimon
2ee656a176 Renaming default to root network 2024-06-16 10:50:31 +02:00
Mononaut
5cecd9f8a7 Address page bigger QR button on mobile 2024-06-15 21:02:32 +00:00
softsimon
c0ec9f70c3 Fix dropdown visibility when using only 1 random network 2024-06-15 13:00:23 +02:00
nymkappa
84dae82e90 [about page] use grumpy guy instead of boring placeholder 2024-06-15 18:50:27 +09:00
softsimon
9dbf3b54fb Electrs network routing fix 2024-06-15 05:18:35 +02:00
softsimon
ce46aae8cc Default frontend network setting 2024-06-15 00:22:33 +02:00
Mononaut
fb621f9812 Address redesign liquid & layout fixes 2024-06-14 15:51:00 +00:00
natsoni
2156924d7e Prevent address txs widget to send too many price requests 2024-06-12 20:02:54 +02:00
natsoni
60a30aaede Allow to open transaction in new tab/page when click on address graph 2024-06-12 20:01:48 +02:00
Mononaut
7dfdb5553e Address & script parsing refactor 2024-06-12 17:28:43 +00:00
natsoni
824bf5fc63 Fix price fetching causing race condition 2024-06-12 16:57:19 +02:00
natsoni
2b44055fc7 Add support for zooming in address balance graph 2024-06-12 13:17:39 +02:00
natsoni
7bef8653b1 Add support for USD in address history graph 2024-06-12 11:47:57 +02:00
Mononaut
3b419be341 Address details pending -> unconfirmed 2024-06-11 20:51:17 +00:00
Mononaut
331b54fe89 Address mouseover QR code 2024-06-10 23:22:10 +00:00
Mononaut
9514bb703b Redesign top of address page 2024-06-10 23:04:37 +00:00
Mononaut
746a045c48 Refactor address page component with AddressStats class 2024-06-10 22:03:07 +00:00
softsimon
684ad9f0e6 Merge pull request #5062 from mempool/mononaut/configurable-tip-monitoring
Configurable threshold for esplora tip check
2024-06-10 00:52:50 +04:00
softsimon
24b5d4e971 Fix docker default value 2024-06-10 00:52:39 +04:00
softsimon
fda40cad48 Fix trailing comma 2024-06-10 00:47:40 +04:00
softsimon
2ce4b5604e Merge pull request #5130 from mempool/dependabot/docker/docker/frontend/node-20.14.0-buster-slim
Bump node from 20.13.1-buster-slim to 20.14.0-buster-slim in /docker/frontend
2024-06-10 00:16:42 +04:00
softsimon
fb660e8477 Merge pull request #5129 from mempool/dependabot/docker/docker/frontend/nginx-1.27.0-alpine
Bump nginx from 1.26.0-alpine to 1.27.0-alpine in /docker/frontend
2024-06-10 00:16:34 +04:00
softsimon
621def712d Merge pull request #5128 from mempool/dependabot/docker/docker/backend/node-20.14.0-buster-slim
Bump node from 20.13.1-buster-slim to 20.14.0-buster-slim in /docker/backend
2024-06-10 00:16:21 +04:00
softsimon
8382a27a7c Merge pull request #5149 from mempool/mononaut/accurate-timestamps-hover
Accurate timestamps on hover
2024-06-10 00:16:07 +04:00
softsimon
b7d96a2a26 Merge pull request #5145 from mempool/natsoni/tapscript-toggle-show-more
Refactor "show all" toggle for long witnesses and witness scripts
2024-06-10 00:11:26 +04:00
Mononaut
3149199c8a Accurate timestamps on hover 2024-06-08 23:28:44 +00:00
softsimon
0c3ef4eabc Merge pull request #5139 from mempool/dependabot/npm_and_yarn/frontend/cypress-13.11.0
Bump cypress from 13.10.0 to 13.11.0 in /frontend
2024-06-08 19:12:02 +04:00
wiz
fffcb5038f Merge pull request #5136 from mempool/mononaut/research
research footer link
2024-06-07 11:49:51 +09:00
natsoni
77d42bfdbb Don't render full input witness if user does not press "show all" 2024-06-06 17:53:20 +02:00
natsoni
f840ac951b Add show all toggle for redeem scripts 2024-06-06 11:43:21 +02:00
wiz
22a48efd19 Merge pull request #5141 from mempool/nymkappa/liquid-fix
[liquid] don't fetch pools
2024-06-05 15:31:44 +09:00
nymkappa
fba3f7ec1c [liquid] don't fetch pools 2024-06-05 08:28:01 +02:00
wiz
6b3005c49d Merge pull request #5125 from mempool/mononaut/recent-address-chart
Make address chart prefer "recent" mode by default
2024-06-05 14:22:00 +09:00
wiz
17132ff047 Merge pull request #5120 from mempool/mononaut/multi-pool-eta
Multi-pool ETA
2024-06-05 14:21:34 +09:00
wiz
355fe58b43 Merge pull request #5137 from mempool/mononaut/pizza-replacement
Pizza tracker RBF support
2024-06-05 14:20:51 +09:00
wiz
604b0ba3e6 Merge pull request #5135 from mempool/mononaut/research-images
research images
2024-06-05 14:19:34 +09:00
dependabot[bot]
d016838356 Bump cypress from 13.10.0 to 13.11.0 in /frontend
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.10.0 to 13.11.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.10.0...v13.11.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-05 02:38:18 +00:00
Mononaut
f77582250f Pizza tracker rbf tree traversal to find mined tx 2024-06-04 23:02:13 +00:00
Mononaut
976e505445 Pizza tracker handle RBF replacements 2024-06-04 22:45:43 +00:00
Mononaut
42c60fd991 Defer db access to fix failing tests 2024-06-04 20:57:40 +00:00
Mononaut
9a838c7269 Use estimated acceleration positions in frontend 2024-06-04 20:40:41 +00:00
Mononaut
f31b28251c Estimate accelerated positions in partner mempools 2024-06-04 20:40:40 +00:00
Mononaut
ced1595d70 research footer link 2024-06-04 15:50:13 +00:00
Mononaut
0b0109d821 Research unfurler preview image 2024-06-04 15:25:04 +00:00
Mononaut
992da1e5d2 Research logo 2024-06-04 15:09:45 +00:00
natsoni
25c0eb62b2 More robust price service 2024-06-04 10:58:04 +02:00
wiz
9b9aaed757 Merge pull request #5132 from mempool/mononaut/coldcard-nfc
Experimental auto-push URL support
2024-06-04 12:04:25 +09:00
Mononaut
b699063153 Experimental auto-push URL support 2024-06-03 21:45:36 +00:00
wiz
6947e19ca9 ops: Tweak nginx cache config 2024-06-03 18:21:14 +09:00
dependabot[bot]
9d4bbe9317 Bump node in /docker/frontend
Bumps node from 20.13.1-buster-slim to 20.14.0-buster-slim.

---
updated-dependencies:
- dependency-name: node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 02:53:03 +00:00
dependabot[bot]
5575798cb6 Bump nginx from 1.26.0-alpine to 1.27.0-alpine in /docker/frontend
Bumps nginx from 1.26.0-alpine to 1.27.0-alpine.

---
updated-dependencies:
- dependency-name: nginx
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 02:52:57 +00:00
dependabot[bot]
57cc53b64e Bump node in /docker/backend
Bumps node from 20.13.1-buster-slim to 20.14.0-buster-slim.

---
updated-dependencies:
- dependency-name: node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 02:17:00 +00:00
softsimon
a0d3afb4d2 Merge pull request #5124 from mempool/natsoni/fix-lightning-search
Searchbar: wait for 3 characters before requesting lightning data
2024-06-01 14:22:19 +07:00
softsimon
67afda7dcf Merge branch 'master' into natsoni/fix-lightning-search 2024-06-01 14:20:00 +07:00
softsimon
a56af00500 Merge pull request #5123 from mempool/natsoni/search-results-ordering
Improve search results ordering
2024-06-01 14:19:48 +07:00
softsimon
e3971af207 Merge pull request #5122 from mempool/natsoni/fix-pool-ranking
Fix pool ranking table
2024-06-01 14:17:50 +07:00
Mononaut
37725bb341 Make address graph prefer "recent" mode by default 2024-05-31 17:20:07 +00:00
natsoni
f17635193a Fix pool ranking component update 2024-05-31 17:25:36 +02:00
softsimon
1c73dc59f9 Merge branch 'master' into natsoni/search-results-ordering 2024-05-31 22:18:43 +07:00
softsimon
3adbba2959 Merge branch 'master' into natsoni/fix-lightning-search 2024-05-31 21:20:31 +07:00
softsimon
ea1629fba8 Merge pull request #5121 from mempool/dependabot/npm_and_yarn/backend/mysql2-3.10.0
Bump mysql2 from 3.9.7 to 3.10.0 in /backend
2024-05-31 21:20:02 +07:00
softsimon
87a4c087e5 Merge pull request #5118 from mempool/natsoni/fix-pool-page-update
Fix pool page update
2024-05-31 21:19:35 +07:00
softsimon
692edea1ce Merge branch 'master' into natsoni/fix-pool-page-update 2024-05-31 21:17:09 +07:00
softsimon
11cfb8a783 Merge pull request #5117 from mempool/natsoni/pools-search
Add mining pools to search results
2024-05-31 21:16:46 +07:00
natsoni
0b953f21b0 Only query lightning search if more than 3 characters 2024-05-31 15:40:27 +02:00
natsoni
d5508872dd Select lightning node by default in search results of public key 2024-05-31 15:08:58 +02:00
natsoni
321181d708 Update search results ordering 2024-05-31 13:52:37 +02:00
natsoni
f3bd50d4ab Revert "Update search results ordering"
This reverts commit 00838ea947.
2024-05-31 13:37:30 +02:00
dependabot[bot]
12a843c386 Bump mysql2 from 3.9.7 to 3.10.0 in /backend
Bumps [mysql2](https://github.com/sidorares/node-mysql2) from 3.9.7 to 3.10.0.
- [Release notes](https://github.com/sidorares/node-mysql2/releases)
- [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md)
- [Commits](https://github.com/sidorares/node-mysql2/compare/v3.9.7...v3.10.0)

---
updated-dependencies:
- dependency-name: mysql2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-31 02:34:09 +00:00
natsoni
21f91bcb6e Fix pool page update on slug change 2024-05-30 17:58:28 +02:00
natsoni
d57bd56743 Use includes() instead of startsWith() to search for pool names 2024-05-30 15:08:20 +02:00
natsoni
08969592ea Fix i18n for unknown pool search 2024-05-30 14:46:48 +02:00
wiz
f0437886ee Merge pull request #5116 from mempool/simon/fix-undefined-group-channels 2024-05-30 18:29:53 +09:00
softsimon
cfedb5fd24 Fix for undefined LN group channels 2024-05-30 16:15:51 +07:00
wiz
a9ad892495 Merge pull request #5112 from mempool/mononaut/polish-acc-pie
Polish acceleration pie chart section
2024-05-30 17:58:58 +09:00
natsoni
00838ea947 Update search results ordering 2024-05-30 10:34:40 +02:00
natsoni
7761ea53c6 Add mining pools to search bar 2024-05-30 09:31:44 +02:00
softsimon
aeeb4af9ba Merge pull request #5110 from mempool/natsoni/lift-up-blockchain-toggle
Slightly lift up blockchain toggle button
2024-05-29 16:21:45 +07:00
softsimon
9186f664da Merge pull request #5109 from mempool/natsoni/fix-mining-graphs
Fix widget mining graphs
2024-05-29 15:58:56 +07:00
softsimon
83db2a3b72 Add margin to graph on pool ranking page 2024-05-29 15:58:39 +07:00
natsoni
3cfd54b4c5 Update mining dashboard graph heights 2024-05-29 10:27:45 +02:00
Mononaut
c6db016c99 Show hashrate pie chart immediately on acceleration 2024-05-28 21:33:09 +00:00
Mononaut
6f6a9ea1a4 Brighter purple pie chart 2024-05-28 21:07:36 +00:00
Mononaut
83246be962 Responsive active acceleration details 2024-05-28 21:06:58 +00:00
natsoni
dcd94d868a Slightly lift up blockchain toggle button 2024-05-28 16:11:48 +02:00
natsoni
e9fc5c0433 Fix widget mining graphs 2024-05-28 16:11:06 +02:00
wiz
e281684ca4 Merge pull request #5107 from mempool/mononaut/acceleration-piechart-hotfix
Hotfix for acceleration pie chart section logic
2024-05-28 12:37:22 +09:00
Mononaut
6a915c0b88 Hotfix for acceleration pie chart section logic 2024-05-28 03:35:41 +00:00
wiz
078dc8d9a1 Merge pull request #5090 from mempool/mononaut/update-onbtc-preview-img
Update onbtc preview fallback image
2024-05-28 11:26:33 +09:00
wiz
232f81b906 Merge pull request #5017 from mempool/nymkappa/image-md5
[account] update profile image md5
2024-05-28 11:25:55 +09:00
wiz
8701119304 Merge pull request #5101 from mempool/natsoni/block-rewards-graph
Fees vs subsidy graph: add percentage mode
2024-05-28 11:23:57 +09:00
wiz
33c9f4a8dc Merge pull request #5103 from mempool/mononaut/multi-pool-acc
inline acceleration hashrate pie chart
2024-05-28 11:23:25 +09:00
natsoni
0654872627 Fix graph legend update while load bug and remove unnecessary query 2024-05-27 16:49:29 +02:00
natsoni
cca798eeaa Remove unnecessary filters in graph 2024-05-27 16:42:17 +02:00
Mononaut
1498db3b33 Backend support for multi-pool acceleration details 2024-05-26 20:47:36 +00:00
Mononaut
05b022dec8 multi-pool active accelerating details component 2024-05-26 20:39:35 +00:00
natsoni
6c6c18830c Fees vs subsidy graph: add percentage mode 2024-05-25 12:32:38 +02:00
softsimon
46b5b26347 Merge pull request #5099 from mempool/natsoni/graphs-cleanup
Graphs loading indicators update
2024-05-25 12:36:40 +07:00
natsoni
bd5abf6592 Re-enable graph timespan controls while isLoading 2024-05-24 17:08:36 +02:00
natsoni
2c04896397 Graphs loading indicators update 2024-05-24 14:02:24 +02:00
softsimon
286fc8e9ad Merge pull request #5042 from mempool/natsoni/statistics-replication
Add statistics to replication service
2024-05-24 14:35:30 +07:00
softsimon
52fa6a0f78 Merge pull request #5095 from mempool/mononaut/fix-local-acc-history
Fix local acceleration filter & reindex
2024-05-23 23:13:19 +07:00
softsimon
a53b587395 Merge pull request #5098 from mempool/natsoni/add-pool-health-check
Add check for pool addresses and regexes
2024-05-23 23:03:11 +07:00
softsimon
2341b1d79e Merge pull request #5091 from mempool/mononaut/faucet-ui-changes
Requested changes to testnet4 faucet UI
2024-05-23 19:11:15 +07:00
natsoni
35215c7740 Add check for pool addresses and regexes 2024-05-23 11:30:30 +02:00
softsimon
e2080e5548 Merge pull request #5077 from mempool/dependabot/npm_and_yarn/frontend/frontend-angular-dependencies-ced88fd6cd
Bump ngx-echarts from 17.1.0 to 17.2.0 in /frontend in the frontend-angular-dependencies group
2024-05-23 01:23:08 +07:00
natsoni
60a07fb093 Improve statistics replication service 2024-05-22 18:10:52 +02:00
softsimon
28477cc433 Merge pull request #5085 from mempool/simon/refactor-block-page
Refactor block transactions
2024-05-22 22:36:48 +07:00
Mononaut
6bb2f06118 Faucet: clamp default amount to minimum 2024-05-22 15:28:15 +00:00
softsimon
68bab5b7b8 Merge pull request #5097 from mempool/dependabot/npm_and_yarn/backend/axios-1.7.2
Bump axios from 1.6.1 to 1.7.2 in /backend
2024-05-22 17:19:43 +07:00
dependabot[bot]
6bc7eec4e3 Bump ngx-echarts in /frontend in the frontend-angular-dependencies group
Bumps the frontend-angular-dependencies group in /frontend with 1 update: [ngx-echarts](https://github.com/xieziyu/ngx-echarts).


Updates `ngx-echarts` from 17.1.0 to 17.2.0
- [Release notes](https://github.com/xieziyu/ngx-echarts/releases)
- [Changelog](https://github.com/xieziyu/ngx-echarts/blob/master/CHANGELOG.md)
- [Commits](https://github.com/xieziyu/ngx-echarts/compare/v17.1.0...v17.2.0)

---
updated-dependencies:
- dependency-name: ngx-echarts
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-22 09:34:31 +00:00
softsimon
4364b5fb06 Merge pull request #5096 from mempool/dependabot/npm_and_yarn/frontend/cypress-13.10.0
Bump cypress from 13.9.0 to 13.10.0 in /frontend
2024-05-22 16:33:04 +07:00
softsimon
86bc7b3f37 Pull from transifex 22/5 2024-05-22 16:32:45 +07:00
softsimon
ea0a4d1d67 Liquid gets block reward data from coinbase 2024-05-22 16:16:47 +07:00
softsimon
aa80fa550b More refactoring based on feedback 2024-05-22 15:28:27 +07:00
dependabot[bot]
bdbe833e2a ---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-22 02:42:52 +00:00
dependabot[bot]
c1f338774a ---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-22 02:21:26 +00:00
Mononaut
e5ab8ab732 Update default faucet min, revalidate on change 2024-05-21 22:12:33 +00:00
Mononaut
ce204d03c6 Fix local acceleration filter & reindex 2024-05-21 21:47:18 +00:00
Hans ❤️ Crypto
0e37e85af6 Create hans-crypto.txt 2024-05-21 12:35:20 +02:00
natsoni
b0630de3cc Merge branch 'master' into natsoni/statistics-replication 2024-05-21 11:35:26 +02:00
Hans ❤️ Crypto
4b3123b5ae Remove reference to bisq in unfurler
not needed anymore
2024-05-21 09:00:05 +02:00
wiz
2ff2b78d26 Merge pull request #5087 from TheBlueMatt/patch-1
Update empty block explainer to remove nonsense information
2024-05-21 10:47:08 +09:00
Mononaut
35ff2c7225 Minor faucet UI refactor 2024-05-21 00:56:24 +00:00
Mononaut
69786d5b4b Update onbtc preview fallback image 2024-05-20 23:48:53 +00:00
softsimon
3c3ab96164 Fix liquid testnet block test 2024-05-21 00:48:00 +07:00
softsimon
0c49c5313b Scroll down block page in e2e tests 2024-05-21 00:01:40 +07:00
Matt Corallo
c5f6509a4c Update empty block explainer to remove nonsense information
In #5061 it was suggested that the primary cause of empty blocks was due to ASICs taking some time to switch to new work, but this is not a possible reason for empty blocks - pools can mine empty or full blocks no matter how long ASICs do (or do not) take to switch to new work.

At some time T a new block is found, at some time T+1 a pool hears about this new block and desires to switch their miners to the new block. If the pool does a full block validation of the new block prior to sending new work (and updates their mempool), they can switch miners to the new work with transactions immediately. If, then, at time T+2 the ASIC finds a block based on the prior work it doesn't matter whether they were given transactions or not - the block is based on the previous tip and is just a fork.

Instead, the relevant question for empty blocks is whether the pool delays until they can fully validate the block and update their mempool (or in fact even *have* the block), selecting a first block template which contains transactions or not. #5061 tried to explain this away with an incredibly weak reference to bandwidth, but the cost of a merkle branch for a block with 4k transactions is only ~800 bytes of JSON'd hex, which shouldn't even push you into a second IP packet, let alone make for substantial bandwidth.

Its worth noting that it can take many seconds for block to make it from one pool to others, and can further take a second or two to validate a block even on fast hardware (in cases where Bitcoin Core decides to flush to disk due to cache fill), so it makes sense that you'll see empty blocks for some seconds after the previous block. @mononaut posted a chart convincingly demonstrating this - for the first few seconds after a previous block ~all blocks are empty blocks (strong evidence for spy mining or otherwise sending new work prior to updating the local mempool) and we see some dropoff of empty blocks therafter on a relatively expected distribution.

There are likely some empty blocks which are mined further past the previous block due to ASICs holding onto previous work, however the only reason those ASICs *have* previous work that is an empty block is because of spy mining or otherwise not tuning Bitcoin Core on the side of the pool to ensure they can update their mempool fast enough and get blocks fast enough to not need to send empty work at all.
2024-05-20 00:39:13 +00:00
softsimon
8bac2db12c Fix 3rd party licenses link 2024-05-20 00:43:58 +07:00
nymkappa
0605e80d89 Merge branch 'master' into nymkappa/prepaid-update-price 2024-05-19 08:10:23 +02:00
softsimon
abad704fc6 Merge branch 'master' into simon/refactor-block-page 2024-05-19 11:53:54 +07:00
softsimon
d7459ba943 Merge pull request #5084 from mempool/nymkappa/testnet4-tests
[tests] testnet -> testnet4
2024-05-19 11:53:43 +07:00
wiz
ec7da01186 Fix broken TX link from faucet component 2024-05-19 09:59:56 +09:00
wiz
2ce1cc24b9 Merge pull request #5080 from mempool/nymkappa/faucet-polish
[faucet] polish code and UX - Move Twitter login component into FOSS
2024-05-19 08:25:08 +09:00
nymkappa
cb95423178 [tests] testnet -> testnet4 2024-05-18 20:52:45 +02:00
softsimon
a68c8d317c Refactor block transactions 2024-05-19 00:39:33 +07:00
nymkappa
f58c2e6fe5 [faucet] add more error string 2024-05-18 18:56:02 +02:00
nymkappa
203e2904d6 [faucet] block coins request to faucet change address 2024-05-18 16:13:58 +02:00
nymkappa
38971d33a6 [faucet] handle new faucet status codes 2024-05-18 11:20:07 +02:00
nymkappa
83f3d07538 [faucet] only enable on mempool.space instance 2024-05-18 10:54:06 +02:00
nymkappa
9e844ffbbd [faucet] disable pointer when not available, fix unsubscribe() 2024-05-18 10:43:19 +02:00
wiz
0497c750be Merge pull request #5066 from mempool/mononaut/hide-t4-ln-graphs
Remove all lightning elements on unsupported networks
2024-05-18 07:19:35 +09:00
Mononaut
788caf05ce Remove all lightning elements on unsupported networks 2024-05-17 22:02:16 +00:00
softsimon
db34ca6a5f Merge pull request #5061 from BitcoinMechanic/update-empty-block-explainer
update empty block explainer, add contributor info
2024-05-18 01:45:55 +07:00
nymkappa
3bbdf6fb25 [faucet] improve feedback upon success 2024-05-17 20:45:39 +02:00
nymkappa
6b16b2d651 [faucet] polish code and UX - Move Twitter login component into FOSS 2024-05-17 20:32:43 +02:00
wiz
0279fe69d4 Fix footer links for Sign In / My Account 2024-05-17 17:54:06 +09:00
wiz
e1c47fddee Merge pull request #5075 from mempool/mononaut/testnet4-faucet
Faucet
2024-05-17 17:40:24 +09:00
wiz
6b2b3459f7 Merge branch 'master' into update-empty-block-explainer 2024-05-17 15:43:53 +09:00
softsimon
1d91e76ec2 Merge pull request #5033 from mempool/natsoni/add-block-fee-graph
Add block fees vs subsidy bar graph
2024-05-17 11:47:58 +07:00
Mononaut
e8dbd777d0 Faucet arguments as query params 2024-05-16 21:17:39 +00:00
Mononaut
987def9baa Improve faucet mobile layout 2024-05-16 21:10:15 +00:00
Mononaut
d9197e28be Fix faucet 403 handling 2024-05-16 21:09:47 +00:00
Mononaut
72f4d811c1 Add missing websocket subscription to faucet component 2024-05-16 19:16:53 +00:00
Mononaut
f8144bd9a0 Fetch faucet address from services backend 2024-05-16 18:36:33 +00:00
BitcoinMechanic
d6d56688ea Update api-docs.component.html
Tweak empty block explainer
2024-05-16 10:12:09 -07:00
softsimon
97817e770f Merge pull request #5074 from mempool/mononaut/meta-slurper
Preserve site-specific meta title/descriptions/canonical urls
2024-05-16 23:19:03 +07:00
Mononaut
bbf8aed38f Add faucet navbar item on official testnet4 2024-05-16 07:36:13 +00:00
Mononaut
ef5c8ddcdf Add testnet4 faucet 2024-05-16 07:35:55 +00:00
Mononaut
69e1d6150d Preserve site-specific meta title/descriptions 2024-05-15 20:57:29 +00:00
natsoni
86c3ef68e4 Graph: don't refresh data if timespan is 24h or 3d 2024-05-15 17:05:18 +02:00
natsoni
ec54ed6f94 Remove bar graph data update logic and fix mobile navigation 2024-05-15 13:07:32 +02:00
natsoni
c2a3ff4b67 Improve granularity when zoom in block fees bar graph 2024-05-14 20:31:25 +02:00
softsimon
cc9e4f2d43 Merge pull request #5073 from mempool/simon/fix-themeservice-not-loaded
Fix themeService not loaded
2024-05-14 22:26:52 +07:00
softsimon
4c62d54b6b Fix themeService not loaded 2024-05-14 21:47:53 +07:00
softsimon
8bbc27dae5 Merge pull request #5072 from mempool/mononaut/fix-frontend-index-build
Fix index.html generation for custom frontend builds
2024-05-14 15:01:05 +07:00
Mononaut
2ffaeb50df Fix index.html generation for custom frontend builds 2024-05-14 00:15:36 +00:00
wiz
12d212b89f Merge pull request #5071 from mempool/mononaut/fix-customizejs-caching
Fix nginx caching for customize.js resource
2024-05-14 02:12:46 +09:00
Mononaut
1cdb38af0b Fix nginx caching for customize.js resource 2024-05-13 16:57:14 +00:00
softsimon
947f55dda2 Merge pull request #5070 from mempool/dependabot/docker/docker/frontend/node-20.13.1-buster-slim
Bump node from 20.12.0-buster-slim to 20.13.1-buster-slim in /docker/frontend
2024-05-13 23:52:48 +07:00
softsimon
c52bde140f Merge pull request #5069 from mempool/dependabot/docker/docker/backend/node-20.13.1-buster-slim
Bump node from 20.12.0-buster-slim to 20.13.1-buster-slim in /docker/backend
2024-05-13 23:52:34 +07:00
wiz
1663637ed9 ops: Keep non-mainnet networks' maxmempool at default size 2024-05-13 23:20:24 +09:00
wiz
d24217282b ops: Fix wrong port in onbtc unfurler config 2024-05-13 20:58:57 +09:00
softsimon
b6a1547ce4 Merge pull request #5034 from mempool/natsoni/fix-unnecessary-load-more
Prevent address page to load more txs unnecessarily
2024-05-13 17:19:28 +07:00
softsimon
66f431d3d3 Force curly if-statements 2024-05-13 17:16:28 +07:00
softsimon
d02625eb0d Merge branch 'master' into natsoni/fix-unnecessary-load-more 2024-05-13 17:09:50 +07:00
softsimon
a3ac9c31ed Merge pull request #5067 from mempool/hunicus/bird-x
Replace twitter logo with x logo
2024-05-13 16:24:35 +07:00
softsimon
4729a87b39 Slight width reduction 2024-05-13 16:24:17 +07:00
BitcoinMechanic
16c154f39d Update frontend/src/app/docs/api-docs/api-docs.component.html
Co-authored-by: mononaut <83316221+mononaut@users.noreply.github.com>
2024-05-12 23:05:55 -07:00
softsimon
fa98c73067 Merge pull request #5025 from mempool/hunicus/sv-about
Replace bisq with onbtc for about alliances
2024-05-13 10:12:49 +07:00
softsimon
d32de4fa06 Merge pull request #5068 from mempool/mononaut/handle-services-outage
Fix error handling for non-critical services API requests
2024-05-13 10:03:13 +07:00
dependabot[bot]
50ee7c07d1 Bump node in /docker/frontend
Bumps node from 20.12.0-buster-slim to 20.13.1-buster-slim.

---
updated-dependencies:
- dependency-name: node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-13 02:59:07 +00:00
dependabot[bot]
2ac041dc6c Bump node in /docker/backend
Bumps node from 20.12.0-buster-slim to 20.13.1-buster-slim.

---
updated-dependencies:
- dependency-name: node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-13 02:44:50 +00:00
hunicus
4aac31332f Merge branch 'master' into hunicus/sv-about 2024-05-13 06:23:22 +09:00
hunicus
9a6ac69983 Update onbtc image and url 2024-05-12 17:21:58 -04:00
Mononaut
c93aa4d82c add catchError fallback for non-critical services API requests 2024-05-12 21:16:00 +00:00
hunicus
16fe1f3cec Merge branch 'master' into hunicus/bird-x 2024-05-13 05:25:54 +09:00
natsoni
42d591bf4c Block subsidy graph: add lower timeframes 2024-05-12 21:52:53 +02:00
wiz
2133356047 Merge pull request #5065 from mempool/mononaut/balance-widget-periods
Update balance widget 7d/30d intervals
2024-05-13 01:31:48 +09:00
Mononaut
d7b0923000 Update balance widget 7d/30d intervals 2024-05-12 16:27:57 +00:00
wiz
2fa33b749c Update el salvador twitter handle again 2024-05-13 01:23:32 +09:00
wiz
90cc75479e Merge pull request #5064 from mempool/mononaut/update-tos-onbtc
Update terms of service
2024-05-13 01:07:47 +09:00
wiz
e2eadd0433 Merge pull request #5063 from mempool/mononaut/fix-x-widget-handle
Fix x widget
2024-05-13 01:05:17 +09:00
Mononaut
1bd045582d Update terms of service 2024-05-12 16:05:02 +00:00
Mononaut
c6e8885c94 fix x widget handle handling 2024-05-12 16:00:44 +00:00
wiz
5531d04f10 Change twitter timeline acct bitcoinofficesv to nayibbukele 2024-05-13 00:51:32 +09:00
wiz
85ff8521f7 ops: Update bitcoin.crontab for testnet4 2024-05-13 00:51:28 +09:00
wiz
3794ddfd3a ops: Update bitcoin.conf for testnet4 2024-05-13 00:51:25 +09:00
Mononaut
568084e143 Configurable threshold for esplora tip check 2024-05-12 00:35:25 +00:00
BitcoinMechanic
64d979d5f9 update empty block explainer, add contributor info 2024-05-11 11:39:46 -07:00
natsoni
0ef76f3e64 Block subsidy graph back to timespan selection mode 2024-05-11 14:36:17 +02:00
softsimon
b8725ab13a Merge pull request #5054 from mempool/mononaut/fix-statistics-graphs
Fix statistics graphs
2024-05-10 14:12:34 +07:00
wiz
6bf47f69eb Merge pull request #5056 from mempool/mononaut/unfurl-descriptions
temporarily hardcode unfurl titles & descriptions
2024-05-10 06:13:25 +09:00
wiz
0192c2bffa ops: Modify build script to build unfurlers last 2024-05-10 05:41:46 +09:00
Mononaut
91aa815d88 temporarily hardcode unfurl titles & descriptions 2024-05-09 20:01:13 +00:00
wiz
53a493c233 Merge branch 'master' into natsoni/add-block-fee-graph 2024-05-10 04:59:17 +09:00
wiz
dcdb9361e8 Merge pull request #5055 from mempool/mononaut/custom-build-html
Update custom sv html
2024-05-10 04:22:15 +09:00
Mononaut
89531d1703 Update custom sv html 2024-05-09 19:18:17 +00:00
wiz
8311e842bb ops: Enable testnet4 in prod frontend configs 2024-05-10 04:02:35 +09:00
wiz
a492223369 Add warning that testnet4 may be reset at anytime 2024-05-10 03:57:25 +09:00
Mononaut
cd9e336165 Also fix stats on custom dashboard & tv view 2024-05-09 18:05:01 +00:00
Mononaut
5b2ecac1f6 Fix statistics graphs 2024-05-09 18:00:09 +00:00
wiz
d2f7864266 ops: Don't serve stale cache data for non-mainnet (2/2) 2024-05-10 01:14:51 +09:00
wiz
c9432aa0d1 Merge pull request #5053 from mempool/mononaut/unfurler-fixes-2
Fix unfurler resources build
2024-05-10 00:56:56 +09:00
Mononaut
eeb2bae9f3 Fix unfurler resources build 2024-05-09 15:55:03 +00:00
wiz
659ef0b6b9 ops: Don't serve stale cache data for non-mainnet 2024-05-10 00:44:53 +09:00
wiz
9b83ac29b7 Merge pull request #5050 from mempool/mononaut/t4-unfurls
Enable testnet4 unfurls
2024-05-09 23:42:39 +09:00
wiz
722b81623b Merge pull request #5051 from mempool/mononaut/fix-onbtc-fallback-img
Fix onbtc unfurler fallback image
2024-05-09 23:42:26 +09:00
wiz
648dd5adb2 Merge pull request #5052 from mempool/mononaut/testnet3-banner
Update testnet3 banner
2024-05-09 23:42:11 +09:00
Mononaut
75e7bb3255 Update testnet3 banner 2024-05-08 20:46:55 +00:00
Mononaut
10fc4d27ad Fix onbtc unfurler fallback image 2024-05-08 19:59:50 +00:00
Mononaut
ace422c0d5 Enable testnet4 unfurls 2024-05-08 19:58:57 +00:00
softsimon
b6682eed2a Merge pull request #5048 from mempool/dependabot/npm_and_yarn/frontend/cypress-13.9.0
Bump cypress from 13.8.0 to 13.9.0 in /frontend
2024-05-09 00:09:55 +07:00
softsimon
8080b8b56a Remove Bukele theme option 2024-05-08 23:58:51 +07:00
softsimon
0e8d04e464 Merge pull request #5049 from mempool/natsoni/fix-navbar
Fix transparent navbar
2024-05-08 23:30:33 +07:00
natsoni
fc76146085 Fix transparent navbar 2024-05-08 18:25:29 +02:00
softsimon
4142413002 Merge pull request #5028 from mempool/mononaut/x-widget
Add x widget
2024-05-08 22:57:21 +07:00
softsimon
49e4855982 Merge branch 'master' into mononaut/x-widget 2024-05-08 22:56:03 +07:00
dependabot[bot]
65cad2025a Bump cypress from 13.8.0 to 13.9.0 in /frontend
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.8.0 to 13.9.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/commits)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-08 15:29:38 +00:00
softsimon
64327b3d25 Merge pull request #5047 from mempool/dependabot/npm_and_yarn/frontend/esbuild-0.21.1
Bump esbuild from 0.20.2 to 0.21.1 in /frontend
2024-05-08 22:28:27 +07:00
wiz
54289368b1 Merge pull request #5027 from mempool/mononaut/tracker-logos
Add enterprise logos to pizza tracker header
2024-05-08 17:49:27 +09:00
softsimon
297c226fab Merge branch 'master' into mononaut/tracker-logos 2024-05-08 10:06:47 +07:00
softsimon
7f5b5f487e Merge pull request #5044 from mempool/mononaut/onbtc-imgs-themed
onbtc theme
2024-05-08 10:06:13 +07:00
softsimon
f2a6828015 Merge pull request #5045 from mempool/mononaut/fix-custom-dash-graph
Fix custom dashboard address graph
2024-05-08 10:01:31 +07:00
dependabot[bot]
45936805e9 Bump esbuild from 0.20.2 to 0.21.1 in /frontend
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.20.2 to 0.21.1.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.20.2...v0.21.1)

---
updated-dependencies:
- dependency-name: esbuild
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-08 02:17:49 +00:00
Mononaut
0fae0b21ad Fix pizza tracker branding layout 2024-05-08 00:23:50 +00:00
Mononaut
9bd741b1d9 Add enterprise logos to pizza tracker header 2024-05-08 00:23:50 +00:00
Mononaut
c15393981d Update onbtc fallback preview img 2024-05-08 00:22:54 +00:00
Mononaut
9495d7d2ea Fix custom dashboard address graph 2024-05-08 00:17:35 +00:00
Mononaut
788a95b260 disable selector when forcing custom theme 2024-05-07 23:48:28 +00:00
Mononaut
4c697d0008 Update onbtc theme & branding 2024-05-07 23:48:23 +00:00
natsoni
463e66081c CSS theme changes 2024-05-07 21:03:26 +00:00
natsoni
a7e501570c Add El Salvador theme 2024-05-07 21:03:25 +00:00
natsoni
4a76cb083a More css included in color themes 2024-05-07 21:03:24 +00:00
natsoni
6a767ce5c4 Make links color manageable with themes 2024-05-07 21:02:40 +00:00
natsoni
f2a7cddbb0 Enable statistics replication on prod 2024-05-07 16:31:03 +02:00
natsoni
f85f3a4eb5 Add statistics to replication service 2024-05-07 16:04:50 +02:00
wiz
0fcd132df4 Merge pull request #5041 from mempool/mononaut/unbork-orphan-cache
Don't get stuck fetching orphans
2024-05-07 17:55:37 +09:00
Mononaut
0990cfe072 Don't get stuck fetching orphans 2024-05-07 01:41:41 +00:00
hunicus
1312dd45e6 Replace twitter logo with x logo 2024-05-06 14:33:42 -04:00
wiz
d92bf14b50 Merge pull request #5040 from mempool/mononaut/testnet4
test
2024-05-07 02:50:37 +09:00
Mononaut
de8462e81e testnet4 docs 2024-05-06 17:31:49 +00:00
Mononaut
15bd58c746 testnet4 beta tags 2024-05-06 17:31:16 +00:00
Mononaut
26da18810d Hide lightning tab on testnet4 2024-05-06 16:48:39 +00:00
wiz
f80c99576b ops: Update prod scripts for testnet4 2024-05-07 01:01:09 +09:00
Mononaut
1e5a55917c Add testnet4 frontend support 2024-05-06 15:55:49 +00:00
softsimon
375e43c191 Merge pull request #5038 from mempool/mononaut/improve-deferred-mempool-animations
Improve deferred mempool visualization updates
2024-05-06 22:40:12 +07:00
softsimon
feab4d2a51 Merge pull request #5035 from mempool/mononaut/accelerator-websocket
Replace acceleration API polling with websocket
2024-05-06 20:57:41 +07:00
softsimon
73f0cdde7d Merge pull request #5039 from mempool/dependabot/github_actions/dtolnay/rust-toolchain-d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
Bump dtolnay/rust-toolchain from bb45937a053e097f8591208d8e74c90db1873d07 to d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
2024-05-06 18:02:04 +07:00
softsimon
810c2cbde4 Merge pull request #5037 from mempool/nymkappa/node-socket
[lightning] apply #4991 at node creation as well
2024-05-06 17:59:40 +07:00
softsimon
a9ff9c3bc7 Merge pull request #5030 from TheBlueMatt/msrv-take-2
Restore MSRV to 1.63
2024-05-06 12:51:42 +07:00
dependabot[bot]
69faa1d493 Bump dtolnay/rust-toolchain
Bumps [dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain) from bb45937a053e097f8591208d8e74c90db1873d07 to d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a.
- [Release notes](https://github.com/dtolnay/rust-toolchain/releases)
- [Commits](bb45937a05...d8352f6b1d)

---
updated-dependencies:
- dependency-name: dtolnay/rust-toolchain
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-06 02:26:59 +00:00
natsoni
f16afe20be Update data length limit in fees bar chart to 10k blocks at once 2024-05-05 15:24:03 +02:00
Mononaut
a29b29300e Replace acceleration API polling with websocket 2024-05-04 17:23:20 +00:00
Mononaut
56a0d89b88 Improve deferred mempool visualization updates 2024-05-04 17:08:38 +00:00
natsoni
d0cba30543 Fix fees vs subsidy graph when blocks are not fully indexed 2024-05-04 18:29:52 +02:00
natsoni
6d595dcdb6 Fix graph menu styling 2024-05-04 16:56:02 +02:00
nymkappa
2e49ef38c9 [lightning] apply 4991 at node creation as well 2024-05-04 10:01:21 +02:00
softsimon
8ec5dd70e0 Merge pull request #5026 from mempool/mononaut/balance-graph-span-toggle
Polish address balance graph, add period toggle
2024-05-04 14:31:26 +07:00
softsimon
89363bfbff Merge pull request #4815 from mempool/mononaut/testmempoolaccept
testmempoolaccept
2024-05-04 14:22:37 +07:00
softsimon
e45a03729b Adding footer link 2024-05-04 14:19:26 +07:00
softsimon
395ef82ad4 Merge branch 'master' into mononaut/testmempoolaccept 2024-05-04 14:11:48 +07:00
softsimon
02f1b11ad6 Merge pull request #5021 from mempool/dependabot/docker/docker/frontend/nginx-1.26.0-alpine
Bump nginx from 1.25.4-alpine to 1.26.0-alpine in /docker/frontend
2024-05-04 14:11:17 +07:00
softsimon
c53fb9266c Merge pull request #5023 from mempool/natsoni/block-view-fees-default
Change block display default mode to fees
2024-05-04 14:09:56 +07:00
softsimon
3d1edffd18 Merge pull request #5032 from mempool/mononaut/fix-mempool-animation-desync
Fix mempool animation desync
2024-05-04 14:08:42 +07:00
softsimon
24ea3199dd Merge pull request #4598 from mempool/mononaut/mempool-delta-subscription
Feature: track-mempool websocket subscriptions
2024-05-04 13:47:29 +07:00
Mononaut
44116424b0 Reimplement mempool animation smoothing within viz component 2024-05-03 21:43:53 +00:00
Mononaut
a8868b5f0f Simplify websocket mempool delta handling 2024-05-03 21:43:48 +00:00
Mononaut
5172f032e7 Add sequence number to track-mempool subscription messages 2024-05-03 16:31:56 +00:00
Mononaut
f8d30bf528 Add 'mempool delta' websocket subscriptions 2024-05-03 16:25:45 +00:00
natsoni
1c3e0bdd6a Prevent address page to load more txs unnecessarily 2024-05-03 14:45:09 +02:00
natsoni
453a2224cd Add block fees vs subsidy bar chart 2024-05-03 12:56:33 +02:00
natsoni
1b25a71d9f Add accelerations category to graphs page 2024-05-03 11:53:33 +02:00
softsimon
ba27ff9c42 Merge pull request #5022 from mempool/dependabot/npm_and_yarn/backend/ws-8.17.0
Bump ws from 8.16.0 to 8.17.0 in /backend
2024-05-03 05:16:37 +07:00
softsimon
02878d6a58 Merge pull request #5029 from mempool/dependabot/npm_and_yarn/unfurler/ejs-3.1.10
Bump ejs from 3.1.9 to 3.1.10 in /unfurler
2024-05-03 05:15:15 +07:00
Matt Corallo
a676d23a54 Restore MSRV to 1.63
In trying to upgrade my mempool instance, I discovered I couldn't
build the latest mempool Rust code with my available Rust
toolchain.

It appears in #4612 the Rust MSRV was bumped without justification,
which is reverted here. Note that `Cargo.lock` updates here should
ensure the versions of dependent crates use the versions supported
by our MSRV.

Its possible that the dependency downgrades here break something,
but things appear to be running fine for me locally, so figured I'd
suggest this upstream.
2024-05-02 21:00:49 +00:00
dependabot[bot]
36f1f778c3 Bump ejs from 3.1.9 to 3.1.10 in /unfurler
Bumps [ejs](https://github.com/mde/ejs) from 3.1.9 to 3.1.10.
- [Release notes](https://github.com/mde/ejs/releases)
- [Commits](https://github.com/mde/ejs/compare/v3.1.9...v3.1.10)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-02 18:34:47 +00:00
Mononaut
f83404421a Add x widget 2024-05-01 23:59:02 +00:00
wiz
cd8abe5c06 ops: Tweak http port for onbtc unfurler instance 2024-05-02 00:53:14 +09:00
softsimon
471a2397c0 Add customize.js to .gitignore 2024-05-01 22:51:58 +07:00
hunicus
bf541f0898 Replace bisq with onbtc for about alliances 2024-04-29 22:39:10 -04:00
Mononaut
a582a3b0ed Polish address balance graph, add period toggle 2024-04-29 21:03:09 +00:00
softsimon
20df70c449 Fix missing return on invalid params 2024-04-30 02:02:53 +07:00
wiz
af13b6c9f8 Merge pull request #5024 from mempool/mononaut/onbtc-siteid
Add onbtc site id
2024-04-30 01:33:36 +09:00
Mononaut
06ee82af0b Add onbtc site id 2024-04-29 14:36:45 +00:00
natsoni
57b466d80f Update block display default mode to fees 2024-04-29 11:54:28 +02:00
wiz
dbd4d152ce Merge pull request #5020 from mempool/mononaut/custom-unfurls
custom unfurls
2024-04-29 17:37:11 +09:00
wiz
95f47409d8 Add onbtc frontend config, add onbtc backend to build script 2024-04-29 17:29:45 +09:00
wiz
ed64b72676 ops: Add onbtc frontend config 2024-04-29 17:20:35 +09:00
wiz
f9948055e4 ops: Update build/unfurler stuff for onbtc 2024-04-29 17:12:51 +09:00
dependabot[bot]
6ad709f93a Bump ws from 8.16.0 to 8.17.0 in /backend
Bumps [ws](https://github.com/websockets/ws) from 8.16.0 to 8.17.0.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.16.0...8.17.0)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-29 02:16:33 +00:00
dependabot[bot]
f9498cf5a2 Bump nginx from 1.25.4-alpine to 1.26.0-alpine in /docker/frontend
Bumps nginx from 1.25.4-alpine to 1.26.0-alpine.

---
updated-dependencies:
- dependency-name: nginx
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-29 02:06:21 +00:00
Mononaut
f5333c529c Update unfurler routing, add fallback img 2024-04-28 16:18:35 +00:00
Mononaut
6b2cc23cd3 Add custom branding to unfurler previews 2024-04-28 16:18:16 +00:00
Mononaut
34329d04f0 favicons 2024-04-28 16:02:42 +00:00
Mononaut
701c283e97 Fix svg 2024-04-28 16:02:41 +00:00
Mononaut
f9fd589af2 Logo overrides, custom index.html 2024-04-28 16:02:41 +00:00
softsimon
0d9602693b Correcting duplicate string 'Date' 2024-04-28 09:46:55 +07:00
softsimon
27be568eb5 Fix duplicate "sats" string 2024-04-28 09:43:35 +07:00
softsimon
8f06aea736 Extracting new i18n strings 2024-04-28 09:39:04 +07:00
wiz
65191538e2 Merge pull request #5016 from mempool/mononaut/customization
Customized frontend builds
2024-04-28 04:11:11 +09:00
nymkappa
8b1acbe13b [account] update profile image md5 2024-04-27 14:49:06 +02:00
Mononaut
d49485c363 Update custom address widgets on new block transactions 2024-04-26 23:59:27 +00:00
Mononaut
1de028840e Custom address widget title links 2024-04-26 20:06:34 +00:00
Mononaut
3f9fb68c5f Fix mobile custom enterprise logo 2024-04-26 20:01:00 +00:00
Mononaut
33ef15511f Check in missing address transactions widget component 2024-04-26 19:41:11 +00:00
Mononaut
139c384e97 Add address transactions widget 2024-04-26 19:17:28 +00:00
Mononaut
ccb27dbdb9 Address widget timespans 2024-04-26 19:17:27 +00:00
Mononaut
6eb21ffd24 check in svg 2024-04-26 19:17:27 +00:00
Mononaut
b9b3c8f78a Custom branding 2024-04-26 19:17:27 +00:00
Mononaut
4f4215577a Add custom dashboard component 2024-04-26 19:17:27 +00:00
Mononaut
ac0f56325b Add customizable enterprise build 2024-04-26 19:17:27 +00:00
softsimon
fd8df2a035 Merge pull request #5015 from mempool/natsoni/add-toggle-sats
Add an option to display values as sats
2024-04-26 12:58:52 +07:00
softsimon
b4decb8f91 Merge pull request #5014 from mempool/natsoni/small-fixes-liquid-frontend
Minor changes on Liquid frontend
2024-04-26 12:07:07 +07:00
softsimon
836c1e002e Merge pull request #4981 from mempool/natsoni/fix-tx-details-loading
Fix miner data loading in transaction details
2024-04-26 12:06:03 +07:00
softsimon
701701e13c Merge pull request #5013 from mempool/natsoni/fix-liquid-footer
Remove Mining dashboard from Liquid footer
2024-04-26 11:54:36 +07:00
wiz
6accf8420f Merge branch 'master' into nymkappa/prepaid-update-price 2024-04-25 02:24:42 +09:00
natsoni
ea5c3212d6 Add an option to display values as sats 2024-04-24 16:44:56 +02:00
natsoni
65705a8a1d Fix Liquid UTXOs table color 2024-04-24 14:19:14 +02:00
natsoni
8310ad9f24 Fix gauge clickable pointer 2024-04-24 14:17:50 +02:00
natsoni
1a5c2c4d3a Add a 5% tolerance for declaring a "unpeg event" 2024-04-24 14:17:40 +02:00
natsoni
cd689afaaa Add config check to show mining dashboard in footer 2024-04-24 11:00:51 +02:00
softsimon
00e0eea60e Merge pull request #5012 from mempool/dependabot/npm_and_yarn/backend/mysql2-3.9.7
Bump mysql2 from 3.9.4 to 3.9.7 in /backend
2024-04-24 10:38:42 +07:00
softsimon
d89ba767f1 Merge pull request #5011 from mempool/mononaut/rbf-mobile-autoscroll-bug
Fix rbf autoscroll bug on mobile
2024-04-24 10:34:34 +07:00
dependabot[bot]
c4acc95b06 Bump mysql2 from 3.9.4 to 3.9.7 in /backend
Bumps [mysql2](https://github.com/sidorares/node-mysql2) from 3.9.4 to 3.9.7.
- [Release notes](https://github.com/sidorares/node-mysql2/releases)
- [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md)
- [Commits](https://github.com/sidorares/node-mysql2/compare/v3.9.4...v3.9.7)

---
updated-dependencies:
- dependency-name: mysql2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-23 23:11:18 +00:00
nymkappa
ed9f792d21 fix typo 2024-04-23 17:54:04 +02:00
Mononaut
31c008afa5 Fix rbf autoscroll bug on mobile 2024-04-22 21:52:48 +00:00
orangesurf
6e2c0bac43 Update accelerate-checkout.component.ts
Analysis suggests 1.5 would be a good starting point

https://gist.github.com/orangesurf/5f69da2ffbdd1b737be53789e1783b03
2024-04-22 20:18:40 +02:00
softsimon
a66920c51e Merge pull request #5004 from mempool/natsoni/toggle-block-fees
Add block display mode toggle
2024-04-22 20:30:26 +07:00
softsimon
1c9e2b546b Replacing setTimeouts with rxjs 2024-04-22 14:42:48 +07:00
nymkappa
9363004252 [accelerator] change default bid prepaid 2024-04-22 08:08:03 +02:00
softsimon
2297ff72f5 Merge pull request #5006 from mempool/knorrium/increase_language_selector_width
Knorrium/increase language selector width
2024-04-22 10:24:38 +07:00
Felipe Knorr Kuhn
fbaa39a300 Change only the selector width 2024-04-21 19:34:48 -07:00
Felipe Knorr Kuhn
bd2c15c6bb Increase the language selector width to accomodate all languages 2024-04-21 18:48:44 -07:00
natsoni
a4d8f2db58 Add block display mode toggle button 2024-04-21 14:54:50 +02:00
Mononaut
2a43255802 testmempool accept more validation & switch to JSON array format 2024-04-21 10:05:58 +07:00
Mononaut
f3232b2d5c Add Test Transactions page 2024-04-21 10:05:58 +07:00
Mononaut
c7cb7d1ac4 Add testmempoolaccept API endpoint 2024-04-21 10:05:57 +07:00
softsimon
bd5a23ff0d Merge pull request #4997 from mempool/natsoni/fix-dropdown-focus
Fix dropdown menu navigation with arrow keys
2024-04-20 08:35:17 +07:00
natsoni
dd0c1eb74d Fix dropdown menu arrow navigation 2024-04-20 00:57:59 +02:00
softsimon
9950ef16ce Merge pull request #4995 from mempool/natsoni/fix-pagination-color
Fix table pagination colors on custom themes
2024-04-20 01:25:56 +07:00
softsimon
fed2c034ee Merge pull request #4996 from mempool/nymkappa/update-doc
[doc] update accel doc
2024-04-20 00:47:03 +07:00
nymkappa
4944e3c257 [doc] update accel doc 2024-04-19 18:45:59 +02:00
natsoni
b865fa33f6 Fix table pagination colors 2024-04-19 17:08:19 +02:00
softsimon
bb44ed15da Merge pull request #4991 from mempool/nymkappa/unique-node-addr
[lightning] unique sockets for ln nodes
2024-04-19 18:02:42 +07:00
softsimon
93919421ee Merge pull request #4984 from mempool/natsoni/more-css
More css fixes
2024-04-19 16:24:25 +07:00
softsimon
8d1831129b Merge pull request #4988 from mempool/dependabot/npm_and_yarn/frontend/cypress-13.8.0
Bump cypress from 13.7.0 to 13.8.0 in /frontend
2024-04-19 16:23:30 +07:00
softsimon
5e6e2c037e Merge pull request #4979 from mempool/natsoni/improve-tooltip-positioning
Fix cropped transaction tooltip in block overview on mobile
2024-04-19 16:23:10 +07:00
nymkappa
ddfceddc57 [lightning] unique sockets for ln nodes 2024-04-19 10:56:15 +02:00
softsimon
5b19ffd524 Pull from transifex 2024-04-19 14:53:32 +07:00
wiz
7422001ed5 Merge pull request #4990 from mempool/nymkappa/disable-topology-prod
[prod] disable LN TOPOLOGY_FOLDER by default
2024-04-19 16:27:16 +09:00
nymkappa
3b0ef48cdf [prod] disable LN TOPOLOGY_FOLDER by default 2024-04-19 09:06:10 +02:00
wiz
d13875e3e7 Merge pull request #4989 from mempool/nymkappa/update-doc
[doc] update
2024-04-19 16:06:03 +09:00
nymkappa
6ebc7fab47 [doc] update to match accel history endpoint actual response 2024-04-19 08:55:21 +02:00
dependabot[bot]
9d931c1d13 Bump cypress from 13.7.0 to 13.8.0 in /frontend
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.7.0 to 13.8.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.7.0...v13.8.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-19 02:15:31 +00:00
softsimon
f86b6ac3de Merge pull request #4985 from mempool/mononaut/fix-audit-bug
Fix audit blockIndex increment bug
2024-04-19 00:13:48 +07:00
natsoni
ce1124284e Adapt more css for color theme 2024-04-18 16:18:38 +02:00
Mononaut
233f19d23d Fix audit blockIndex increment bug 2024-04-18 13:27:33 +00:00
natsoni
89ef5fe33d Fix tooltip text overflow in some languages 2024-04-18 11:09:28 +02:00
softsimon
7cd4345264 Merge pull request #4956 from henrialb/typo
Fix typo in docs
2024-04-18 11:59:57 +07:00
natsoni
bbaa5dafb9 Separate mining and audit subscriptions 2024-04-17 16:41:30 +02:00
wiz
cee1b39640 Merge pull request #4980 from mempool/mononaut/fix-acc-button-conditions 2024-04-17 04:06:27 +09:00
Mononaut
e388410e34 Re-add accelerate button on deep mempool txs 2024-04-16 18:52:13 +00:00
natsoni
c2d649d3f4 Improve tooltip position in block overview on mobile 2024-04-16 16:02:39 +02:00
wiz
d9dec44c8f Merge pull request #4977 from mempool/nymkappa/fix-copy
[accelerator] fix pizza accel copy/eta
2024-04-16 21:14:56 +09:00
wiz
c94a3a98eb Change "Settlement" to "Confirmation" 2024-04-16 21:14:45 +09:00
nymkappa
ec9b8359df [accelerator] fix pizza accel copy/eta x2 2024-04-16 21:12:25 +09:00
nymkappa
3db89e3dee [accelerator] fix pizza accel copy/eta 2024-04-16 21:09:30 +09:00
wiz
7f8dc74146 Merge pull request #4975 from mempool/nymkappa/mini-branch
[accelerator] polish pizza accel
2024-04-16 17:11:55 +09:00
wiz
83cea33727 Merge pull request #4969 from mempool/nymkappa/missing-accelerate-button-mobile
[accelerator] re-add missing accelerator button on mobile, set locati…
2024-04-16 17:02:25 +09:00
nymkappa
ada18a0413 [accelerator] fix redirects 2024-04-16 17:02:10 +09:00
nymkappa
96d85dcacd [accelerator] polish pizza accel x2 2024-04-16 16:56:37 +09:00
nymkappa
64ba033602 [accelerator] polish pizza accel 2024-04-16 16:01:52 +09:00
nymkappa
26807e80db Merge branch 'nymkappa/accel-summary-default' into nymkappa/mini-branch 2024-04-16 14:43:01 +09:00
nymkappa
e4f00285b3 Merge branch 'nymkappa/polish-accel' into nymkappa/mini-branch 2024-04-16 14:42:53 +09:00
nymkappa
d443e51d30 [accelerator] if eligible, show pizza accel summary by default 2024-04-16 11:45:04 +09:00
softsimon
b4352f5f25 Merge pull request #4972 from mempool/dependabot/github_actions/dtolnay/rust-toolchain-bb45937a053e097f8591208d8e74c90db1873d07
Bump dtolnay/rust-toolchain from dc6353516c68da0f06325f42ad880f76a5e77ec9 to bb45937a053e097f8591208d8e74c90db1873d07
2024-04-15 18:10:12 +07:00
softsimon
2c1b4a2547 Merge pull request #4955 from mempool/dependabot/npm_and_yarn/backend/mysql2-3.9.4
Bump mysql2 from 3.9.1 to 3.9.4 in /backend
2024-04-15 18:09:56 +07:00
softsimon
b54685bed7 Merge pull request #4973 from mempool/natsoni/fix-dropdown-menu-color
Adapt dropdown menu color to theme
2024-04-15 18:02:54 +07:00
natsoni
9032d5ac11 Adapt dropdown menu color to theme 2024-04-15 12:35:15 +02:00
dependabot[bot]
942747a0be Bump dtolnay/rust-toolchain
Bumps [dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain) from dc6353516c68da0f06325f42ad880f76a5e77ec9 to bb45937a053e097f8591208d8e74c90db1873d07.
- [Release notes](https://github.com/dtolnay/rust-toolchain/releases)
- [Commits](dc6353516c...bb45937a05)

---
updated-dependencies:
- dependency-name: dtolnay/rust-toolchain
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-15 03:00:06 +00:00
nymkappa
fdd6463ac0 [ui] polish pizza accelerator 2024-04-14 16:29:56 +09:00
nymkappa
e9afc4ec0f remove duplicated condition 2024-04-14 13:55:49 +09:00
nymkappa
dff811f615 [accelerator] re-add missing accelerator button on mobile, set location.hash when click on accelerate button 2024-04-14 13:54:25 +09:00
wiz
d1e382ddf7 Merge pull request #4967 from mempool/mononaut/fix-acc-fee-rate-again
Fix accelerated fee rate again
2024-04-14 13:20:06 +09:00
wiz
ccd460cf70 Merge pull request #4968 from mempool/mononaut/54-year-pizza
Fix first seen loading time in tx tracker
2024-04-14 13:18:56 +09:00
Mononaut
7b1ba912be Fix first seen loading time in tx tracker 2024-04-14 03:49:26 +00:00
Mononaut
f3864c9100 Fix accelerated fee rate again 2024-04-14 03:21:24 +00:00
wiz
1082889b64 Merge pull request #4966 from mempool/nymkappa/fix-fee-paid
[accelerator] fix fee paid calculation
2024-04-14 00:20:42 +09:00
nymkappa
36839fdcb9 [accelerator] fix fee paid calculation 2024-04-14 00:19:14 +09:00
wiz
ebe54d47d8 Merge pull request #4965 from mempool/nymkappa/remove-prepaid-tx
[accelerator] remove simple mode from tx page
2024-04-14 00:15:02 +09:00
nymkappa
7219823847 [accelerator] remove simple mode from tx page 2024-04-14 00:10:15 +09:00
wiz
336fc7a64a Merge pull request #4964 from mempool/mononaut/bitcoin-tracker
Add Bitcoin logo to tracker header
2024-04-13 23:20:46 +09:00
Mononaut
84f62f8025 Add Bitcoin logo to tracker page 2024-04-13 14:18:01 +00:00
wiz
6bd6dfec49 Merge pull request #4963 from mempool/nymkappa/accel-checkout
[accelerator] remove test code
2024-04-13 23:13:29 +09:00
nymkappa
a6e27f1312 Merge branch 'master' into nymkappa/accel-checkout 2024-04-13 23:13:02 +09:00
nymkappa
c913df837a [accelerator] remove test code 2024-04-13 23:12:05 +09:00
wiz
42bd9811e3 Merge pull request #4962 from mempool/nymkappa/accel-checkout
[accelerator] polish prepaid accel UI
2024-04-13 23:09:03 +09:00
wiz
7fbf13fd9d Merge pull request #4961 from mempool/mononaut/pizza-layout
Change tx tracker layout
2024-04-13 23:08:10 +09:00
nymkappa
fb086b5ad5 [accelerator] polish UI prepaid accel 2024-04-13 23:07:19 +09:00
Mononaut
d4f51979d4 Change tx tracker layout 2024-04-13 13:56:29 +00:00
wiz
aeb54f59f1 Merge pull request #4960 from mempool/mononaut/change-toppings
change pizza tracker toppings
2024-04-13 22:17:10 +09:00
Mononaut
5ca3b24527 Fix accelerate arrow, add accelerating status 2024-04-13 13:14:26 +00:00
Mononaut
88df2878cb Add logo to tx tracker page, fix bugs 2024-04-13 12:26:30 +00:00
nymkappa
f601bbc499 Merge branch 'master' into nymkappa/accel-checkout 2024-04-13 21:13:11 +09:00
nymkappa
24e9ae6440 [accelerator] re-integrate square payment WIP 2024-04-13 20:53:19 +09:00
wiz
8c3f11622c Merge pull request #4959 from mempool/mononaut/pizza
WIP (work-in-pizza)
2024-04-13 19:02:22 +09:00
Mononaut
da25ed431f hijack /tx/ page for tracker users 2024-04-13 09:24:52 +00:00
Mononaut
ecc234a96a Tracker bottom panel with status icon 2024-04-13 09:09:14 +00:00
Mononaut
29851537eb Prototype accelerate checkout properties 2024-04-13 09:09:13 +00:00
nymkappa
5f2d7b32ae [accelerator] concept accelerator a/b ctas 2024-04-13 09:09:13 +00:00
Mononaut
de00d49d7b Basic tracker page structure 2024-04-13 09:09:09 +00:00
wiz
bafa0f50fc Merge pull request #4958 from mempool/wiz/20240413-add-new-lightning-nodes
Add new VA1/FRA lightning nodes
2024-04-13 17:56:13 +09:00
wiz
80c75f9aeb Add new FRA lightning nodes 2024-04-13 17:49:29 +09:00
wiz
407eba194d Add new VA1 lightning nodes 2024-04-13 17:37:54 +09:00
Mononaut
2eac3e6555 Add pizza tracker component 2024-04-13 08:05:31 +00:00
Mononaut
61a308cbc6 Add simplified tracker blockchain component 2024-04-13 08:04:58 +00:00
nymkappa
49b9a6f53d [accelerator] concept accelerator a/b ctas 2024-04-13 16:11:49 +09:00
wiz
db1cc0d0e1 Merge pull request #4953 from mempool/nymkappa/use-bid-boost-accel-list
[accelerator] use new bidBoost field
2024-04-13 14:59:33 +09:00
Henrique Albuquerque
f89bd5b972 Add contributor statement 2024-04-12 18:05:18 +01:00
Henrique Albuquerque
d94a8cb58c Fix typo 2024-04-12 17:59:31 +01:00
dependabot[bot]
faf79e85fd Bump mysql2 from 3.9.1 to 3.9.4 in /backend
Bumps [mysql2](https://github.com/sidorares/node-mysql2) from 3.9.1 to 3.9.4.
- [Release notes](https://github.com/sidorares/node-mysql2/releases)
- [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md)
- [Commits](https://github.com/sidorares/node-mysql2/compare/v3.9.1...v3.9.4)

---
updated-dependencies:
- dependency-name: mysql2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-12 16:14:46 +00:00
softsimon
0d72e88c6a Updated from transifex 2024-04-12 16:18:39 +09:00
Mononaut
786ec7fff1 Mobile transaction tracker page 2024-04-12 07:16:01 +00:00
softsimon
8df497e53d Merge pull request #4954 from mempool/simon/convert-paid-currency-api
Convert v3 Currency api into v1
2024-04-12 16:07:50 +09:00
softsimon
1dd7a6ebac Convert v3 api into v1 2024-04-12 15:59:33 +09:00
nymkappa
2c12e9f64b [accelerator] use new bidBoost field 2024-04-12 15:12:25 +09:00
softsimon
9a77135d30 Merge pull request #4952 from mempool/simon/paid-currency-api
Paid currency api support
2024-04-12 14:42:56 +09:00
softsimon
f3b3b9b3f0 Adding new config to sample 2024-04-12 14:15:50 +09:00
softsimon
55c4d4d03d Paid currency api support 2024-04-12 14:10:47 +09:00
softsimon
061d341d8b Merge pull request #4949 from mempool/mononaut/delta-sequence
Add sequence number to mempool block updates
2024-04-12 00:30:30 +09:00
softsimon
1c29b8b260 Merge pull request #4950 from mempool/natsoni/fix-timestamp-datetime
Update prices table  'time' field to datetime
2024-04-11 21:07:26 +09:00
natsoni
79bfe9c866 Change time field to datetime 2024-04-11 17:56:34 +09:00
Mononaut
3e6d38656d Add sequence number to mempool block updates 2024-04-11 08:11:45 +00:00
softsimon
5697486cea Merge pull request #4947 from mempool/mononaut/hide-accelerate-panel-already
Hide accelerate panel if not needed
2024-04-11 15:54:55 +09:00
softsimon
df0da605e4 Merge pull request #4948 from mempool/mononaut/54-years
it hasn't been 54 years since this transaction was submitted
2024-04-11 15:54:39 +09:00
Mononaut
fa9aaf0423 Keep firstSeen loader, retry on fail 2024-04-11 06:03:14 +00:00
Mononaut
89de288fec it hasn't been 54 years since this transaction was submitted 2024-04-11 04:02:25 +00:00
Mononaut
940003552b Hide acceleration panel if tx is already accelerated 2024-04-10 11:14:13 +00:00
Mononaut
0660296b51 Disable accelerate button on successful submission 2024-04-10 11:14:13 +00:00
softsimon
affeb0a169 Merge pull request #4943 from mempool/nymkappa/fix-missing-qr-code
[accelerator] fix missing qr code
2024-04-10 19:15:04 +09:00
softsimon
2504653426 Merge pull request #4207 from mempool/mononaut/sipper
Proof-of-concept "sipper" lightweight pages for web crawlers
2024-04-10 18:29:42 +09:00
softsimon
b6a9ad67d3 Merge pull request #4946 from mempool/mononaut/acc-dash-vbytes
Switch success rate to total vsize
2024-04-10 18:12:48 +09:00
Mononaut
3d4741eac2 Fix acceleration skeleton loader titles 2024-04-10 09:03:31 +00:00
softsimon
5611f57e9e Merge pull request #4945 from mempool/mononaut/acc-dash-times
Add timespan toggle to acceleration dashboard
2024-04-10 18:00:25 +09:00
softsimon
44027f5bc0 Pull from transifex 2024-04-10 17:02:35 +09:00
Mononaut
41b25a78e9 adjust accelerator dashboard mobile fields 2024-04-10 07:22:02 +00:00
Mononaut
e263f94765 Switch success rate for total vsize on acceleration dashboard 2024-04-10 06:52:54 +00:00
Mononaut
80c7754e48 Add timespan toggle to acceleration dashboard 2024-04-10 06:27:48 +00:00
softsimon
165340324c Merge pull request #4944 from mempool/natsoni/more-css-fix
More css fixes
2024-04-10 15:15:47 +09:00
softsimon
735dddd604 Merge pull request #4941 from mempool/natsoni/polish-footer
Polish global footer
2024-04-10 15:03:13 +09:00
natsoni
3e3bd32705 Convert more css to variables 2024-04-10 14:41:19 +09:00
softsimon
f83025a9ff Merge pull request #4939 from mempool/hunicus/natsoni-formatting
Make room for natsoni as project member
2024-04-10 14:40:10 +09:00
softsimon
ba6a7b58aa Merge pull request #4942 from mempool/natsoni/fix-header-color-theme
Fix header color theme
2024-04-10 14:37:56 +09:00
nymkappa
fb8808ea59 [accelerator] fix redirect url, fix UX 2024-04-10 14:33:33 +09:00
nymkappa
73f241e9c3 Revert "Disable accelerate button after submission"
This reverts commit e55b1740db.
2024-04-10 13:53:21 +09:00
softsimon
317b1b6ac5 Merge pull request #4909 from mempool/nymkappa/unix-socket
[server] express server also listens on unix socket
2024-04-10 13:41:14 +09:00
natsoni
cabe629f17 Add icon color variable to color themes 2024-04-10 12:26:00 +09:00
natsoni
9f6521b987 Update navbar background color 2024-04-10 12:25:30 +09:00
hunicus
6daffe5b13 Make room for natsoni as project member 2024-04-10 11:39:25 +09:00
nymkappa
4c7f93d1ef fix tests 2024-04-10 09:46:05 +09:00
natsoni
f81bbb93a5 Polish global footer 2024-04-09 20:55:14 +09:00
wiz
b0058e94ce Merge pull request #4938 from mempool/nymkappa/accel-graph
[accelerator] show 1w accel graph by default
2024-04-09 20:17:51 +09:00
nymkappa
de069f704a [accelerator] show 1w accel graph by default 2024-04-09 18:10:53 +09:00
wiz
bcb8493cd0 Merge pull request #4937 from mempool/mononaut/disable-acc-button
disable accelerate button after submission
2024-04-09 18:07:30 +09:00
Mononaut
e55b1740db Disable accelerate button after submission 2024-04-09 08:31:24 +00:00
softsimon
df673b2a4e Pull from transifex 2024-04-09 16:58:02 +09:00
wiz
a4753769d2 Merge pull request #4936 from mempool/natsoni/add-wiz-theme
Add wiz theme
2024-04-09 16:50:31 +09:00
wiz
be75a87e88 Merge pull request #4935 from mempool/mononaut/acc-rate-tooltips
Fix accelerated fee rate in mined block tooltips
2024-04-09 16:50:21 +09:00
nymkappa
0ac3ae1cb1 Update docker/backend/start.sh
Co-authored-by: softsimon <softsimon@users.noreply.github.com>
2024-04-09 16:50:04 +09:00
wiz
a5e1e95534 Fix capitalization of "wiz" theme 2024-04-09 16:49:41 +09:00
natsoni
7f6ab0b854 Add wiz theme 2024-04-09 16:43:02 +09:00
Mononaut
8420ecd380 Fix accelerated fee rate in mined block tooltips 2024-04-09 07:22:24 +00:00
softsimon
192fd09a00 Merge pull request #4933 from mempool/natsoni/fix-address-component-subscriptions
Fix subscription management in address component
2024-04-09 16:18:57 +09:00
softsimon
d9a59c6d1e Accelerator i18n fixes 2024-04-09 16:15:26 +09:00
softsimon
69c3c3162c Theme selector i18n fix 2024-04-09 16:08:58 +09:00
softsimon
61ba832dfd Merge pull request #4932 from mempool/natsoni/remove-console-log
Remove console log
2024-04-09 15:17:34 +09:00
natsoni
f332bba468 Remove console log 2024-04-09 15:14:50 +09:00
nymkappa
ba8cca6ba5 Merge branch 'master' into nymkappa/unix-socket 2024-04-09 15:11:52 +09:00
nymkappa
7a098952c8 [server] disable unix socket listening by default 2024-04-09 15:11:40 +09:00
softsimon
347b74a55d Theme elector width fix 2024-04-09 14:51:54 +09:00
wiz
d5b0adeeed Merge pull request #4931 from mempool/nymkappa/additional-error-message
add additional error message
2024-04-09 14:50:05 +09:00
softsimon
d8c4d36d4b Rename themes 2024-04-09 14:49:24 +09:00
nymkappa
aac32c5bff add additional error message 2024-04-09 14:33:18 +09:00
softsimon
ff86e55622 Merge pull request #4916 from mempool/natsoni/high-contrast-theme
High contrast theme (duplicate)
2024-04-09 14:33:09 +09:00
wiz
894c4cb139 Merge pull request #4930 from mempool/mononaut/filter-acc
Filter accelerations for matching pool
2024-04-09 14:32:27 +09:00
softsimon
2792016383 Fix relative imports 2024-04-09 14:24:34 +09:00
wiz
46215871aa Merge pull request #4928 from mempool/hunicus/bid-boost-link
Make bid boost widget link clickable on mobile
2024-04-09 14:24:28 +09:00
natsoni
cfc06be975 Fix subscription management in address component 2024-04-09 14:21:08 +09:00
natsoni
527589ac04 Merge branch 'master' into natsoni/high-contrast-theme 2024-04-09 12:13:11 +09:00
Mononaut
43845cda5c Filter accelerations for matching pool 2024-04-09 00:08:50 +00:00
wiz
b74b8a8a5a Merge pull request #4929 from mempool/mononaut/fix-acc-rate-labels
Fix accelerated rate labels
2024-04-08 23:13:20 +09:00
Mononaut
226c6d8432 More acceleration labelling fixes 2024-04-08 14:08:11 +00:00
Mononaut
9f79258dec Fix accelerated/effective rate labelling 2024-04-08 13:45:05 +00:00
Mononaut
13bcc99095 Fix block summary data fields 2024-04-08 13:44:08 +00:00
hunicus
fef9b93a05 Merge branch 'master' into hunicus/bid-boost-link 2024-04-08 22:17:10 +09:00
hunicus
ccac3437cf Make bid boost widget link clickable on mobile 2024-04-08 22:09:52 +09:00
wiz
e849a31668 Merge pull request #4926 from mempool/nymkappa/duplicated-accel
[accelerator] fix possible duplicated accel request call
2024-04-08 21:57:17 +09:00
nymkappa
88de5412f8 [accelerator] reset cashapp upon price update 2024-04-08 21:55:47 +09:00
wiz
d13c48d31d Merge pull request #4925 from mempool/simon/fix-first-seen-skeleton
Fix first seen skeleton loader
2024-04-08 21:55:31 +09:00
softsimon
4c807866a3 Fix first seen skeleton loader 2024-04-08 21:44:29 +09:00
nymkappa
d7a4a95c05 [accelerator] avoid duplicated accel request 2024-04-08 21:43:06 +09:00
wiz
b35422ff9f Merge pull request #4922 from mempool/mononaut/actually-fix-sticky-button
Actually fix sticky button
2024-04-08 21:32:28 +09:00
wiz
b6be5d71bb Merge pull request #4923 from mempool/mononaut/wider-sticky-button
Slightly wider sticky button
2024-04-08 21:32:12 +09:00
wiz
4c5eddcf6d Merge pull request #4924 from mempool/mononaut/fix-acc-fee-rate
Fix missing accelerated fee rate again
2024-04-08 21:31:27 +09:00
softsimon
51f0b75a64 Merge pull request #4917 from mempool/natsoni/fix-liquid-dropdown-position
Fix dropdown menu position in Liquid
2024-04-08 21:03:39 +09:00
softsimon
fe4648cd9e Update frontend/src/app/components/liquid-master-page/liquid-master-page.component.scss 2024-04-08 21:03:25 +09:00
softsimon
03867ada49 Merge pull request #4887 from mempool/mononaut/local-acceleration-data
Local acceleration data
2024-04-08 20:43:46 +09:00
Mononaut
7959188c06 Fix missing accelerated fee rate again 2024-04-08 11:36:22 +00:00
Mononaut
11eaa0ca50 Fix NaN boost 2024-04-08 11:22:57 +00:00
Mononaut
dc6dba416a Fix missing boost 2024-04-08 11:22:57 +00:00
Mononaut
c8e7cc773a Always use local data for pending/historical accelerations 2024-04-08 11:22:57 +00:00
Mononaut
efe43329a1 Support PREFER_LOCAL for /accelerations(/history) 2024-04-08 11:22:56 +00:00
Mononaut
3f97c17af2 Fetch block accelerations by height instead of hash 2024-04-08 11:22:56 +00:00
Mononaut
91493e8769 Roll back local acceleration data on reorg 2024-04-08 11:22:56 +00:00
softsimon
5f36cb88ab Merge pull request #4895 from mempool/hunicus/txacc-faq
Add note about accelerator waitlist to faq
2024-04-08 18:44:40 +09:00
Mononaut
a0ef635c92 Slightly wider sticky button 2024-04-08 09:36:45 +00:00
natsoni
d68904fec0 More contrast theme fixes 2024-04-08 18:32:59 +09:00
Mononaut
b679581cf2 Actually fix sticky button 2024-04-08 09:25:53 +00:00
softsimon
f7e6fa026d Merge pull request #4921 from mempool/mononaut/fix-accel-highlight
Fix new acceleration visualization color change
2024-04-08 18:04:23 +09:00
softsimon
96f16f1f2e Merge pull request #4914 from mempool/hunicus/why-no-confirm
Remove another faq reference to tx-acc
2024-04-08 18:01:34 +09:00
Mononaut
ad8fa8722f Fix new acceleration color change 2024-04-08 09:00:51 +00:00
wiz
e477f09cd5 Merge pull request #4920 from mempool/mononaut/fix-tx-autoscroll
Fix tx autoscroll
2024-04-08 17:59:54 +09:00
Mononaut
be5eb9ef70 Fix tx autoscroll 2024-04-08 08:51:35 +00:00
wiz
b952642570 Update staging URLs for prod Square SDK load 2024-04-08 17:12:38 +09:00
wiz
47cc74a351 Merge pull request #4913 from mempool/mononaut/simple-acceleration-mode
Simplified acceleration mode for mobile
2024-04-08 17:06:20 +09:00
wiz
cff572a104 Merge branch 'master' into mononaut/simple-acceleration-mode 2024-04-08 17:05:51 +09:00
Mononaut
48e16e64c2 Simple mode redesign w/ sticky button 2024-04-08 08:05:22 +00:00
wiz
46172836f1 Merge pull request #4915 from mempool/simon/fix-mobile-initial-zoom
Fix initial zoom behavior on mobile
2024-04-08 16:13:18 +09:00
wiz
eacb72a05b Merge pull request #4912 from mempool/mononaut/accelerated-fee-rates
Fix accelerated fee rates
2024-04-08 16:10:55 +09:00
softsimon
c1fefaab92 Pull from transifex 2024-04-08 16:01:26 +09:00
natsoni
f2f86457ee Fix dropdown menu position in Liquid 2024-04-08 15:53:51 +09:00
natsoni
c251b5831b Merge branch 'master' into natsoni/contrast-theme 2024-04-08 14:54:38 +09:00
softsimon
8c589d3000 Fix initial zoom behavior on mobile
fixes #4875
2024-04-08 14:54:33 +09:00
hunicus
ddc599f6b7 Remove another faq reference to tx-acc 2024-04-08 14:18:53 +09:00
hunicus
6822c3a04b Merge branch 'master' into hunicus/txacc-faq 2024-04-08 14:00:00 +09:00
Mononaut
aa0c70bd44 Simplified acceleration mode for mobile 2024-04-08 04:58:56 +00:00
hunicus
94f649b345 Add condition for officialmempoolspace 2024-04-08 13:50:48 +09:00
Mononaut
5e07e9dceb Fix accelerated fee rates 2024-04-08 03:03:26 +00:00
softsimon
91a8a8be34 Merge pull request #4911 from daweilv/master
fix(address): clicking on the Balance History chart within the /testnet/address/:id page would incorrectly navigate to /tx/:tx
2024-04-08 11:41:54 +09:00
natsoni
99e1890795 Fix footer to fit with theme selector 2024-04-08 10:50:59 +09:00
Metadavid
5583befbba Update daweilv.txt 2024-04-07 21:42:36 +08:00
Metadavid
c637055859 Update daweilv.txt 2024-04-07 21:20:42 +08:00
Metadavid
c3acfb8781 Update address-graph.component.ts
fix(address): Clicking on the Balance History chart within the /testnet/address/:id page under testnet now navigates to /testnet/tx/:tx instead of /tx/:tx.
2024-04-07 21:04:23 +08:00
Metadavid
fd073a7043 Add files via upload 2024-04-07 21:03:20 +08:00
nymkappa
bed00fbd41 [server] express server also listens on unix socket 2024-04-07 18:39:37 +09:00
softsimon
501b79fdce Italian and Spanish fineshed 2024-04-07 10:43:17 +09:00
softsimon
ed6af8f560 Merge pull request #4906 from mempool/mononaut/acceleration-harmony
Acceleration sound
2024-04-06 19:02:26 +09:00
Mononaut
32495736d4 such bright wow harmony 2024-04-06 09:58:07 +00:00
wiz
bff48b0a64 Merge pull request #4901 from mempool/nymkappa/clear-state
[accelerator] clear state after loading preview
2024-04-06 18:47:46 +09:00
softsimon
f6228240ba Transifex pull 2024-04-06 18:04:39 +09:00
softsimon
215c8a7ff4 Merge pull request #4902 from mempool/mononaut/disappearing-effective-rates
Fix disappearing effective/accelerated fee rates
2024-04-06 18:00:07 +09:00
softsimon
0f217bd753 Merge pull request #4903 from mempool/mononaut/bright-purple
Don't apply age tint to accelerated txs
2024-04-06 17:39:24 +09:00
natsoni
7e920f4bae Replace more hardcoded css 2024-04-06 17:14:53 +09:00
natsoni
cde3d878b1 Fix block overview graph on contrast theme 2024-04-06 15:59:42 +09:00
natsoni
621a6ea42d Fix rbf tree fade out 2024-04-06 15:59:36 +09:00
natsoni
cfc3615e64 Fix global footer selector css 2024-04-06 15:59:30 +09:00
natsoni
2f8d0d90cd Update theme-contrast.css 2024-04-06 15:59:26 +09:00
natsoni
c827953ca5 Fix remaining bugs from rebase 2024-04-06 15:59:07 +09:00
Mononaut
79dd263fb1 add high contrast theme 2024-04-06 15:56:53 +09:00
Mononaut
1ca05a029a add theme selector to main dashboard 2024-04-06 15:56:22 +09:00
Mononaut
4c205eb09d implement theme switching service 2024-04-06 15:55:47 +09:00
natsoni
ee92f6639a convert to CSS variables 2024-04-06 15:54:55 +09:00
Mononaut
7721f16f9f Don't apply age tint to accelerated txs 2024-04-06 03:44:58 +00:00
nymkappa
854222b8cc [accelerator] clear state after loading preview 2024-04-06 12:32:33 +09:00
Mononaut
0bc86541c6 Fix disappearing effective/accelerated fee rates 2024-04-06 03:22:56 +00:00
softsimon
c45111333d Fix space 2024-04-06 11:58:48 +09:00
softsimon
ba6fedc430 Merge pull request #4900 from mempool/nymkappa/fix-accel-preview-autoscroll
[accelerator] fix accel preview autoscroll
2024-04-05 21:06:57 +09:00
nymkappa
caa34fa8bb [accelerator] fix accel preview autoscroll 2024-04-05 20:59:15 +09:00
softsimon
fa7c0ab58e Pull from transifex 2024-04-05 20:46:37 +09:00
wiz
2543eb6861 Merge pull request #4899 from mempool/nymkappa/polish-button
[accelerator] fix label accelerate button
2024-04-05 20:45:27 +09:00
nymkappa
c4cf3363ee [accelerator] fix label accelerate button 2024-04-05 20:39:43 +09:00
softsimon
98d4efd509 Merge pull request #4889 from mempool/mononaut/non-esplora-inscription-goggles
Add support for inscription goggles for non-esplora backends
2024-04-05 18:28:07 +09:00
softsimon
a99e65ee48 Merge branch 'master' into mononaut/non-esplora-inscription-goggles 2024-04-05 18:28:01 +09:00
wiz
3fd4d24c93 Merge pull request #4897 from mempool/nymkappa/fix-preview-loading
[accelerator] fix spinner loading
2024-04-05 18:23:38 +09:00
nymkappa
55a564a5a8 [accelerator] fix spinner loading 2024-04-05 17:52:07 +09:00
softsimon
04f6490eeb Merge branch 'master' into mononaut/non-esplora-inscription-goggles 2024-04-05 17:48:55 +09:00
softsimon
b5026789d6 Merge pull request #4896 from mempool/nymkappa/fix-referrer
[accelator] fix referrer check
2024-04-05 17:38:47 +09:00
nymkappa
705e570cf5 [accelator] fix referrer check 2024-04-05 17:36:04 +09:00
softsimon
10a41fb0d1 Merge pull request #4804 from mempool/nymkappa/prepaid-acceleration
[accelerator] prepaid acceleration
2024-04-05 17:32:46 +09:00
hunicus
2a591646c3 Add note about accelerator waitlist to faq 2024-04-05 16:53:19 +09:00
softsimon
e55898b414 Merge pull request #4891 from mempool/mononaut/tx-details-stripes
Transaction details template refactor
2024-04-05 16:50:41 +09:00
Mononaut
2df476406d Transaction details template refactor 2024-04-05 07:46:48 +00:00
softsimon
4a05b35f2b Pulling from transifex 2024-04-05 16:46:23 +09:00
softsimon
3ad8e56c25 Accelerations i18n key fix 2024-04-05 16:30:26 +09:00
softsimon
c1704758fd Merge pull request #4893 from mempool/simon/build-target-es2020
Set build target to es2020
2024-04-05 16:26:38 +09:00
softsimon
fe580f2b2b Merge pull request #4894 from mempool/hunicus/esplora-docs
Switch blockstream/electrs for mempool/electrs in backend readme
2024-04-05 16:19:35 +09:00
hunicus
d82e482acc Update readme: blockstream/electrs for mempool/electrs 2024-04-05 15:59:16 +09:00
softsimon
9d6142dc79 Merge pull request #4892 from mempool/hunicus/memsplora
Switch blockstream/electrs for mempool/electrs in faq
2024-04-05 15:57:14 +09:00
softsimon
2dec83735b Set build target to es2020 2024-04-05 15:56:10 +09:00
softsimon
9f4204b815 Remove goggles i18n 2024-04-05 15:50:34 +09:00
hunicus
40f2c972d7 Update faq: blockstream/electrs for mempool/electrs 2024-04-05 15:50:15 +09:00
softsimon
eee2385d0d Merge pull request #4886 from mempool/nymkappa/mempool-goggle-tm
[copy] add missing trademark to Mempool Goggles
2024-04-05 14:48:43 +09:00
softsimon
492c652157 Merge pull request #4885 from mempool/natsoni/fix-side-nav-on-rtl
Fix side panel for rtl languages
2024-04-05 14:47:36 +09:00
softsimon
af8e060dc6 A few goggles i18n 2024-04-05 12:37:17 +09:00
softsimon
6a19b9058f Merge pull request #4888 from mempool/mononaut/tint
Goggles age tint by default
2024-04-05 12:36:24 +09:00
nymkappa
bcbd21b922 [acclerator] load square for prepaid acceleration 2024-04-05 11:16:48 +09:00
nymkappa
aac76d68b0 Merge branch 'master' into nymkappa/prepaid-acceleration 2024-04-05 11:14:16 +09:00
softsimon
25bb942e04 Fixing the other i18n 2024-04-04 21:55:14 +09:00
softsimon
8ac71f21d1 Updating i18n for accelerator preview 2024-04-04 21:48:16 +09:00
Mononaut
287559f028 Add support for inscription goggles for non-esplora backends 2024-04-04 12:32:03 +00:00
Mononaut
7fbb93cf41 Goggles age tint by default 2024-04-04 11:33:51 +00:00
nymkappa
7b76e93631 Update messages.ca.xlf 2024-04-04 18:26:38 +08:00
wiz
896c451c3e Merge pull request #4884 from mempool/nymkappa/about-page 2024-04-04 19:18:48 +09:00
natsoni
0874386001 Fix side panel for rtl languages 2024-04-04 19:00:04 +09:00
nymkappa
ce6808b3c4 [copy] add missing trademark to Mempool Goggles 2024-04-04 18:01:01 +09:00
softsimon
40fa1c5acb Some language string updates 2024-04-04 17:51:42 +09:00
nymkappa
7307990f6f [about page] enable sponsors on self hosted 2024-04-04 17:36:37 +09:00
softsimon
5104da500e Adding i18n to mempool goggles 2024-04-04 17:28:32 +09:00
softsimon
3a8c46bbed Merge pull request #4837 from mempool/mononaut/goggles-age-filter
Goggles age filter
2024-04-04 16:47:34 +09:00
Mononaut
fc5312549d Switch gradient toggle fee -> default 2024-04-04 07:42:31 +00:00
softsimon
c14e8797e2 Merge pull request #4879 from mempool/nymkappa/proxy-accel-endpoints
[accelerator] proxy acceleration api to prod
2024-04-04 16:20:27 +09:00
nymkappa
0f26940018 Merge branch 'master' into nymkappa/proxy-accel-endpoints 2024-04-04 16:01:17 +09:00
Mononaut
26227e2f3b New opacity-based age Goggles 2024-04-04 06:57:38 +00:00
Mononaut
dcf78fab06 Block visualization color-by-age mode 2024-04-04 06:57:37 +00:00
softsimon
0813592a6d Merge pull request #4882 from mempool/nymkappa/reset-pool-sha
[migration] reset mining pool sha to force refreshing
2024-04-04 15:20:04 +09:00
nymkappa
abdb27af3f [migration] reset mining pool sha to force refreshing 2024-04-04 14:27:50 +09:00
nymkappa
b421be3315 [accelerator] also forward headers 2024-04-04 14:04:12 +09:00
softsimon
b74fbee069 Merge pull request #4881 from mempool/nymkappa/proxy-sponsors
[about page] proxy community sponsors apis to prod, small refactor
2024-04-04 14:02:00 +09:00
nymkappa
dab9357b40 [about page] proxy community sponsors apis to prod, small refactor 2024-04-04 13:56:39 +09:00
softsimon
ccd89604c0 Merge pull request #4856 from mempool/hunicus/docs-links-alignment
Fix api-docs anchor link vertical alignment
2024-04-04 13:54:53 +09:00
Felipe Knorr Kuhn
cd135b7171 Merge branch 'master' into nymkappa/proxy-accel-endpoints 2024-04-04 13:14:54 +09:00
softsimon
7e16d550b0 Merge pull request #4880 from mempool/knorrium/enable_fiat_price_again
Enable fiat price conversion again
2024-04-04 13:14:24 +09:00
nymkappa
404079ef4e [accelerator] use config.MEMPOOL_SERVICES.API url 2024-04-04 13:10:32 +09:00
Felipe Knorr Kuhn
d13f78f046 Enable fiat price conversion again 2024-04-04 13:10:11 +09:00
nymkappa
60040c3914 [accelerator] proxy acceleration api to prod 2024-04-04 12:57:54 +09:00
softsimon
e408fbd8d6 Merge branch 'master' into hunicus/docs-links-alignment 2024-04-04 12:40:14 +09:00
softsimon
6931ecd468 Merge pull request #4878 from mempool/dependabot/npm_and_yarn/backend/multi-b37afcb6a9
Bump ws and @types/ws in /backend
2024-04-04 12:31:27 +09:00
dependabot[bot]
ed5d30ea5b Bump ws and @types/ws in /backend
Bumps [ws](https://github.com/websockets/ws) and [@types/ws](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ws). These dependencies needed to be updated together.

Updates `ws` from 8.13.0 to 8.16.0
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.13.0...8.16.0)

Updates `@types/ws` from 8.5.5 to 8.5.10
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/ws)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: "@types/ws"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-04 02:49:18 +00:00
wiz
ead7613579 Merge pull request #4877 from mempool/nymkappa/truncate-hashrate-difficulty
[migration] re-index hashrates and difficulty_adjustments
2024-04-04 11:05:16 +09:00
wiz
ca0613ec17 Merge pull request #4876 from mempool/knorrium/change_default_replication_settings
Update default settings for Docker
2024-04-04 11:05:04 +09:00
nymkappa
727208ff84 [migration] re-index hashrates and difficulty_adjustments 2024-04-04 10:57:54 +09:00
Felipe Knorr Kuhn
53c3de2af5 Update default settings for Docker 2024-04-04 10:49:32 +09:00
softsimon
3f50d57ed1 Fix test broke due to i18n key change 2024-04-03 21:44:48 +09:00
softsimon
55f9d0f875 Merge branch 'master' into hunicus/docs-links-alignment 2024-04-03 18:57:46 +09:00
softsimon
37cb9b0fe8 Merge pull request #4872 from mempool/natsoni/fix-fiat-selector-sorting
Sort currency by ticker in fiat selector
2024-04-03 18:57:24 +09:00
softsimon
a3b5f79094 Merge pull request #4871 from mempool/natsoni/fix-liquid-testnet
Fix Liquid testnet broken blocks
2024-04-03 18:55:55 +09:00
softsimon
1b1ffa7109 Transifex pull 04-03 2024-04-03 18:47:16 +09:00
softsimon
2b3021c8fe Merge pull request #4873 from mempool/simon/i18n-improvements-04-02
i18n corrections and merging
2024-04-03 18:18:29 +09:00
softsimon
0ccc47786d Merge pull request #4874 from mempool/knorrium/fix_docker_for_rust
Fix the Docker workflow for the new Rust steps
2024-04-03 18:17:06 +09:00
softsimon
24366b929e i18n corrections and merging 2024-04-03 18:13:42 +09:00
Felipe Knorr Kuhn
2cab2a7885 Read FD from the environment variables 2024-04-03 18:13:14 +09:00
Felipe Knorr Kuhn
4284038c4b Fix error when deleting the missing @napi-rs folder 2024-04-03 18:12:51 +09:00
Felipe Knorr Kuhn
425d158777 Update Dockerfile to work with the new Rust steps 2024-04-03 18:12:26 +09:00
Felipe Knorr Kuhn
1a11b1813f Add more build contexts for the backend and rust-gbt 2024-04-03 18:11:58 +09:00
wiz
85a86d4b06 ops: Add backend git hash check 2024-04-03 17:28:58 +09:00
natsoni
073578243c Fix fiat selector sorting 2024-04-03 16:34:56 +09:00
wiz
69578f8086 Merge pull request #4820 from mempool/nymkappa/polish-enterprise-logo
[enterprise] polish enterprise logo
2024-04-03 16:17:37 +09:00
wiz
ec92f83a58 Merge pull request #4865 from mempool/mononaut/public-acceleration-config
Public acceleration config
2024-04-03 16:16:36 +09:00
wiz
37c0adbbfa Merge pull request #4868 from mempool/natsoni/fix-global-footer
Fix footer position
2024-04-03 16:15:57 +09:00
natsoni
e9c40692a6 Fix network switch mechanism 2024-04-03 16:09:30 +09:00
softsimon
32383b0bc2 Merge pull request #4869 from mempool/knorrium/more_bisq_cleanup
Cleanup more bisq references
2024-04-03 14:01:53 +09:00
Felipe Knorr Kuhn
d2f912d15c Remove leftover Bisq references from the GH workflow 2024-04-03 12:31:41 +09:00
Felipe Knorr Kuhn
c35c08b17a Remove bisq references from the tests 2024-04-03 12:31:17 +09:00
natsoni
4efd0dda83 Push footer down when content is less than window height 2024-04-03 11:28:25 +09:00
wiz
e7f8bcf83b ops: Update check script for elements electrs hash 2024-04-02 22:24:00 +09:00
wiz
08fa6d55b5 Merge pull request #4832 from mempool/dependabot/npm_and_yarn/frontend/express-4.19.2
Bump express from 4.18.2 to 4.19.2 in /frontend
2024-04-02 22:03:05 +09:00
Felipe Knorr Kuhn
995a26b944 Merge branch 'master' into nymkappa/prepaid-acceleration 2024-04-02 21:53:01 +09:00
Felipe Knorr Kuhn
3a2aad645b Merge branch 'master' into mononaut/public-acceleration-config 2024-04-02 21:31:28 +09:00
Felipe Knorr Kuhn
2c655a08be Merge branch 'master' into dependabot/npm_and_yarn/frontend/express-4.19.2 2024-04-02 21:13:34 +09:00
softsimon
bd359fdd31 Merge pull request #4859 from mempool/nymkappa/accel-copy
[accelerator] deposit -> top up
2024-04-02 21:12:47 +09:00
Felipe Knorr Kuhn
13216687dc Merge branch 'master' into nymkappa/accel-copy 2024-04-02 21:03:41 +09:00
wiz
1bf4f9902e Merge pull request #4862 from mempool/knorrium/fix_liquid_tests
Re-enable and fix Liquid tests
2024-04-02 21:02:42 +09:00
Felipe Knorr Kuhn
9908ec01aa Merge branch 'master' into mononaut/public-acceleration-config 2024-04-02 20:53:01 +09:00
Felipe Knorr Kuhn
051533bb14 Merge branch 'master' into knorrium/fix_liquid_tests 2024-04-02 20:48:36 +09:00
Mononaut
3d900bdfe5 Enable PUBLIC_ACCELERATIONS in mainnet prod 2024-04-02 08:24:57 +00:00
Mononaut
b32cce1440 Restrict public acceleration APIs to mainnet 2024-04-02 08:23:38 +00:00
Mononaut
37aee77eb4 Add config for public acceleration data 2024-04-02 08:19:35 +00:00
softsimon
72b8ae2a55 Revert id change 2024-04-02 17:07:18 +09:00
Felipe Knorr Kuhn
3e3bed9aa4 Disable viewport tests for now 2024-04-02 16:54:02 +09:00
Felipe Knorr Kuhn
844a86f997 Merge branch 'master' into knorrium/fix_liquid_tests 2024-04-02 16:44:04 +09:00
Felipe Knorr Kuhn
468f17c76c Add a few more Liquid testnet tests 2024-04-02 16:18:52 +09:00
softsimon
68a7a89fd6 Merge pull request #4864 from mempool/simon/update-i18n-04-02
Simon/update i18n 04 02
2024-04-02 16:06:07 +09:00
softsimon
931551a17f New extract 2024-04-02 16:05:52 +09:00
softsimon
7b79384f27 Extracting i18n 2024-04-02 16:02:18 +09:00
softsimon
69568421f3 Merge pull request #4232 from mempool/hunicus/move-on-in-it
Fix mining dashboard meta description not showing
2024-04-02 15:58:07 +09:00
softsimon
7fab57193d Merge pull request #4863 from mempool/mononaut/fix-block-page
Fix block audit cache bug
2024-04-02 15:32:58 +09:00
Mononaut
49146e1402 Fix mainnet blocks loading bug 2024-04-02 06:29:43 +00:00
hunicus
f28abd68f4 Merge branch 'master' into hunicus/move-on-in-it 2024-04-02 15:26:11 +09:00
Felipe Knorr Kuhn
4bb1320563 Re-enable and fix Liquid tests 2024-04-02 15:14:02 +09:00
dependabot[bot]
0a848f25a4 Bump express from 4.18.2 to 4.19.2 in /frontend
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-02 06:07:47 +00:00
wiz
83dbae3a70 Merge pull request #4786 from mempool/simon/remove-bisq
Removing Bisq
2024-04-02 15:06:23 +09:00
wiz
ce057bad20 ops: Bump NodeJS to v20.12.0 in start script 2024-04-02 14:58:55 +09:00
wiz
8bec0cacdb ops: Remove bisq from start script 2024-04-02 14:58:21 +09:00
wiz
faa990a2c6 ops: Remove bisq from build script 2024-04-02 14:55:52 +09:00
wiz
872e4b4a17 Merge pull request #4855 from mempool/knorrium/fix_missing_assets
Run sync-assets-dev when building
2024-04-02 14:55:03 +09:00
softsimon
3e0c36e714 Merge pull request #4854 from mempool/natsoni/fix-network-errors
Fix frontend errors on block loading
2024-04-02 14:38:26 +09:00
softsimon
974eaeb02f Merge branch 'master' into natsoni/fix-network-errors 2024-04-02 14:31:32 +09:00
softsimon
f833904d7b Merge pull request #4858 from mempool/mononaut/better-audits
Betterer audits
2024-04-02 14:30:17 +09:00
Mononaut
96ba7d0656 Add draft sip tx page 2024-04-02 05:28:03 +00:00
Mononaut
6852319e4d Improve sip API error handling 2024-04-02 05:26:27 +00:00
Mononaut
8bc1eaebc0 Sip set /block canonical url 2024-04-02 05:26:27 +00:00
Mononaut
eeefaa6374 Proof-of-concept "sipper" minimal pages for web crawlers 2024-04-02 05:26:24 +00:00
nymkappa
1bba1cfeb1 [accelerator] deposit -> top up 2024-04-02 11:35:03 +08:00
Mononaut
4a6641f544 revert reverting better audits PR 2024-04-02 02:02:38 +00:00
softsimon
c51159d275 Merge pull request #4836 from mempool/mononaut/first-seen-tooltip
Display first seen time on block visualisation tooltips
2024-04-01 22:49:46 +09:00
softsimon
d279ea3278 Merge pull request #4857 from mempool/revert-4852-mononaut/better-audits
Revert "Better audits"
2024-04-01 22:49:05 +09:00
softsimon
102cb96483 Revert "Better audits" 2024-04-01 22:48:46 +09:00
softsimon
10d4e5a600 Merge pull request #4852 from mempool/mononaut/better-audits
Better audits
2024-04-01 22:47:46 +09:00
softsimon
2048816c23 Merge pull request #4847 from mempool/dependabot/github_actions/dtolnay/rust-toolchain-dc6353516c68da0f06325f42ad880f76a5e77ec9
Bump dtolnay/rust-toolchain from be73d7920c329f220ce78e0234b8f96b7ae60248 to dc6353516c68da0f06325f42ad880f76a5e77ec9
2024-04-01 22:04:15 +09:00
Felipe Knorr Kuhn
8d2efd4d10 Merge branch 'master' into dependabot/github_actions/dtolnay/rust-toolchain-dc6353516c68da0f06325f42ad880f76a5e77ec9 2024-04-01 21:59:31 +09:00
softsimon
ecf1db0716 Merge pull request #4848 from mempool/mononaut/esplora-only-address-graph
Add backend type flag, disable address graphs for non-esplora
2024-04-01 19:11:54 +09:00
softsimon
1a3b8580e7 Merge branch 'master' into mononaut/esplora-only-address-graph 2024-04-01 19:10:18 +09:00
hunicus
fb6aec0afe Merge branch 'master' into hunicus/docs-links-alignment 2024-04-01 19:06:18 +09:00
Felipe Knorr Kuhn
7063d9e113 Merge branch 'master' into knorrium/fix_missing_assets 2024-04-01 19:04:06 +09:00
Felipe Knorr Kuhn
0445c150a2 Run sync-assets-dev when building 2024-04-01 19:01:08 +09:00
wiz
cfb1e1d908 ops: Remove nginx config for bisq 2024-04-01 19:00:37 +09:00
natsoni
3f80dbc5ce Fix random console errors on block loading 2024-04-01 18:53:50 +09:00
hunicus
b8a48314c1 Fix api-docs anchor link vertical alignment 2024-04-01 18:53:38 +09:00
softsimon
0090d36514 Merge branch 'master' into simon/remove-bisq 2024-04-01 18:52:56 +09:00
softsimon
bf22f4515f Merge branch 'master' into mononaut/first-seen-tooltip 2024-04-01 18:44:52 +09:00
wiz
bf5d5b98cb ops: Update check script for config.js URL 2024-04-01 18:44:41 +09:00
softsimon
df491d050d Merge pull request #4851 from mempool/knorrium/docker_node_bump
Bump Docker images to node v20.12.0 LTS
2024-04-01 18:40:14 +09:00
softsimon
91267201bf Merge pull request #4853 from mempool/natsoni/fix-liquid-peg-crash
Fix Liquid crash
2024-04-01 18:30:33 +09:00
natsoni
061abaa148 Fix Liquid crash 2024-04-01 18:21:43 +09:00
wiz
4132765027 Merge pull request #4819 from mempool/simon/angular-17
Angular 17
2024-04-01 18:14:17 +09:00
wiz
e64d1be6f0 Merge branch 'master' into simon/angular-17 2024-04-01 17:48:55 +09:00
Mononaut
03255dd077 Improve marginal fee rate detection 2024-04-01 08:42:23 +00:00
Mononaut
bd4e223aed Add "prioritized" category to audits 2024-04-01 08:07:09 +00:00
wiz
964be2a6df Don't use PATH in sync-assets.js 2024-04-01 16:53:49 +09:00
softsimon
cf00fa73c6 Correcting esbuild target and module 2024-04-01 16:16:40 +09:00
Felipe Knorr Kuhn
8956ef4b43 Bump Docker images to node v20.12.0 LTS 2024-04-01 16:14:26 +09:00
softsimon
5c3f256229 Bumping TS build target 2024-04-01 16:11:08 +09:00
wiz
56b9715fc5 ops: Upgrade NodeJS to v20.12 for Debian in prod installer 2024-04-01 16:05:31 +09:00
wiz
e3f7f08fb4 ops: Follow redirects to download AppleColorEmoji.ttf 2024-04-01 16:01:16 +09:00
wiz
cc63f20708 ops: Upgrade NodeJS to v20.12.0 in prod installer 2024-04-01 16:01:13 +09:00
Mononaut
93956d0ed4 Refactor first seen tooltip labels 2024-04-01 07:00:46 +00:00
softsimon
4a3aceadbf Merge pull request #4849 from mempool/mononaut/backend-backend-info
Add backend mode to backend-info
2024-04-01 15:27:38 +09:00
Mononaut
9b456954b1 Change "first seen ... before" to "confirmed ... after" 2024-04-01 06:21:01 +00:00
Mononaut
855b20834e Display first seen time on block visualiation tooltips 2024-04-01 06:21:01 +00:00
Mononaut
df72829fd2 Add backend mode to backend-info 2024-04-01 04:00:29 +00:00
Mononaut
855e25ccd2 Add backend type flag, disable address graphs for non-esplora 2024-04-01 03:49:56 +00:00
dependabot[bot]
150a7d9eeb Bump dtolnay/rust-toolchain
Bumps [dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain) from be73d7920c329f220ce78e0234b8f96b7ae60248 to dc6353516c68da0f06325f42ad880f76a5e77ec9.
- [Release notes](https://github.com/dtolnay/rust-toolchain/releases)
- [Commits](be73d7920c...dc6353516c)

---
updated-dependencies:
- dependency-name: dtolnay/rust-toolchain
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 02:45:31 +00:00
softsimon
1630d71e7b Merge pull request #4840 from mempool/mononaut/multi-tx-tracking
Add track-txs websocket subscription
2024-03-31 18:51:00 +09:00
Mononaut
7deee5d5f2 Fix outspend tracking typo 2024-03-31 09:45:26 +00:00
softsimon
19dcc9d62d Merge pull request #4842 from mempool/mononaut/halving-widget-fixes
Fix next block subsidy calculation
2024-03-31 18:04:57 +09:00
Mononaut
9270298374 Fix next block subsidy calculation 2024-03-31 08:53:09 +00:00
softsimon
1c862d57ea Merge pull request #4841 from mempool/mononaut/fix-always-dirty
Clear cpfp dirty status
2024-03-31 17:16:36 +09:00
Mononaut
ac8fdd6405 Clear cpfp dirty status 2024-03-31 08:06:01 +00:00
Mononaut
c5300c950b Add track-txs websocket subscription 2024-03-31 07:55:43 +00:00
softsimon
92b9c8f370 Merge pull request #4838 from mempool/mononaut/stop-excluding-accelerations
Don't exclude accelerated txs from fee graph & fee statistics
2024-03-31 16:09:37 +09:00
softsimon
7969d069b2 Merge pull request #4835 from mempool/natsoni/add-data-lightning-world-graph
Add node data to lightning world channels graph
2024-03-31 16:05:58 +09:00
Mononaut
7367991df1 Don't exclude accelerated txs from fee graph & fee statistics 2024-03-31 05:40:51 +00:00
softsimon
8f19a376fa Merge pull request #4826 from mempool/mononaut/standardized-grid
Standardize the block visualization grid
2024-03-31 12:39:16 +09:00
softsimon
0b1296330b Merge pull request #4817 from mempool/natsoni/fix-unnecessary-block-load
Fix unnecessary request of blocks on dashboard load
2024-03-31 12:37:02 +09:00
softsimon
6bebc76633 Fix websocket init test support 2024-03-31 12:26:13 +09:00
natsoni
6b8f08c6d7 Add node data to lightning world channels graph 2024-03-29 21:57:11 +09:00
softsimon
ba8d4ccc02 Merge pull request #4555 from mempool/mononaut/limit-gbt-input-redux
Limited GBT
2024-03-29 21:26:33 +09:00
softsimon
e9fe50a4bb Merge pull request #4830 from mempool/dependabot/npm_and_yarn/unfurler/express-4.19.2
Bump express from 4.18.1 to 4.19.2 in /unfurler
2024-03-29 20:23:11 +09:00
softsimon
52a33d5a51 Merge pull request #4829 from mempool/natsoni/allow-show-block-fees-only
Add an option to always show the block fees on infinite blockchain
2024-03-29 17:04:11 +09:00
softsimon
66309813d5 Changing to async pipe 2024-03-29 16:30:55 +09:00
softsimon
5a57d220cb Merge pull request #4834 from mempool/mononaut/fix-audit-tx-row
hide empty audit row in tx page details panel
2024-03-29 16:19:36 +09:00
Mononaut
cbcb61d3fa hide empty audit row in tx page details panel 2024-03-29 06:51:56 +00:00
softsimon
3d0e16857a Merge pull request #4833 from mempool/dependabot/npm_and_yarn/backend/express-4.19.2
Bump express from 4.18.2 to 4.19.2 in /backend
2024-03-29 15:40:11 +09:00
Mononaut
3732406ce8 Sanity checks for mempool visualization deltas 2024-03-29 03:52:21 +00:00
Mononaut
8f2e1de578 Limit GBT: fix on-demand CPFP calculation 2024-03-29 03:52:18 +00:00
Mononaut
07c76d084e Limit GBT: handle accelerations beneath the purge rate 2024-03-29 03:51:48 +00:00
Mononaut
5411eb491f Limit GBT: fix candidate set inconsistency 2024-03-29 03:51:48 +00:00
Mononaut
b10bd05207 Move max cpfp graph size to named const 2024-03-29 03:51:47 +00:00
Mononaut
0533953f54 Add LIMIT_GBT config 2024-03-29 03:51:47 +00:00
Mononaut
b3e07e0c22 Retire "getSimonTemplate" GBT option 2024-03-29 03:51:46 +00:00
Mononaut
62653086e9 Limit GBT - calculate purged tx cpfp on demand 2024-03-29 03:49:57 +00:00
Mononaut
e2d3bb4cc5 Use minfee node to limit gbt input size 2024-03-29 03:49:54 +00:00
dependabot[bot]
70bf31c397 Bump express from 4.18.2 to 4.19.2 in /backend
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-28 17:18:10 +00:00
natsoni
22d9a1cb8b Keep block fees on infinite blockchain when leaving mining dashboard 2024-03-28 16:58:00 +09:00
Felipe Knorr Kuhn
6492aa6f4a Merge branch 'master' into simon/angular-17 2024-03-28 16:46:43 +09:00
dependabot[bot]
c0a9a8b07a Bump express from 4.18.1 to 4.19.2 in /unfurler
Bumps [express](https://github.com/expressjs/express) from 4.18.1 to 4.19.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.1...4.19.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-28 07:42:18 +00:00
softsimon
5c430e57a4 Merge pull request #4828 from mempool/natsoni/fix-blockchain-doc
Fix truncated blockchain in FAQ
2024-03-28 14:40:20 +09:00
softsimon
27b48b1874 Updating eslib build target 2024-03-28 12:24:31 +09:00
softsimon
33cddc6fba Moving esbuild to dependency 2024-03-28 12:17:16 +09:00
natsoni
1e5b798af9 Fix for #4827 2024-03-27 19:00:24 +09:00
natsoni
f91fc6f026 Fix truncated blockchain in faq 2024-03-27 18:47:10 +09:00
Mononaut
82e115c009 Standardize the block visualization grid 2024-03-27 02:46:29 +00:00
softsimon
44cf63458f Correct sample mempool services api url 2024-03-26 18:54:31 +09:00
softsimon
53aea3dcf6 Fix eslint errors 2024-03-26 18:13:02 +09:00
softsimon
7408a6f331 Add esbuild as dev dependency 2024-03-26 18:04:20 +09:00
softsimon
6e62e93bf6 Updating eslint 2024-03-26 17:51:54 +09:00
softsimon
8861aedea1 Merge pull request #4824 from mempool/natsoni/fix-hashrate-graph-scale
Set coherent units for hashrate and difficulty units on hashrate graph
2024-03-26 17:37:16 +09:00
softsimon
16f9593d2e Merge pull request #4814 from mempool/natsoni/hide-featured-assets-testnet
Hide featured assets on Liquid testnet
2024-03-26 17:10:36 +09:00
softsimon
5537e79640 Merge branch 'master' into natsoni/hide-featured-assets-testnet 2024-03-26 17:07:36 +09:00
softsimon
1ea66595ea Merge pull request #4822 from mempool/natsoni/add-pool-dominance-to-graph
Add pool dominance data to mining pool page
2024-03-26 17:01:40 +09:00
natsoni
fa2dd3c7cb Set coherent units for hashrate and difficulty units on hashrate graph 2024-03-26 16:57:00 +09:00
softsimon
1e04afffa3 Update package.lock 2024-03-26 15:42:56 +09:00
softsimon
57cbf71915 Merge pull request #4821 from mempool/mononaut/accelerated-badge-fixes
Accelerated badge fixes
2024-03-26 14:46:52 +09:00
softsimon
78b1b1e561 Merge pull request #4823 from mempool/nymkappa/aggregated-acceleration-history-rounding
[accelerator] fix rounding issue
2024-03-26 14:40:37 +09:00
nymkappa
6fb2a3b39c [accelerator] fix rounding issue 2024-03-26 14:38:57 +09:00
natsoni
cb866d8fa2 Add pool dominance data to mining pool page 2024-03-26 14:11:08 +09:00
softsimon
365c89d98f Merge pull request #4818 from mempool/mononaut/halving-widget
Add halving countdown widget to main dashboard
2024-03-26 13:22:01 +09:00
nymkappa
f4b9301f55 [enterprise] polish enterprise logo 2024-03-26 11:36:20 +09:00
Mononaut
6afe12c1be Fix duplicate accelerated badge on transaction page 2024-03-26 02:33:51 +00:00
Mononaut
952a61f8f2 Fix accelerated badge in block overview tooltip 2024-03-26 02:33:33 +00:00
softsimon
0825c7a6d6 Fixing SSR 2024-03-25 18:33:58 +09:00
Mononaut
0ece8bb2a6 Add halving countdown widget to main dashboard 2024-03-25 08:32:50 +00:00
natsoni
8822c0972f Fix unnecessary request of blocks on dashboard load 2024-03-25 12:07:33 +09:00
softsimon
6310ef7f57 Upgrade to Angular 17 2024-03-24 16:22:05 +09:00
natsoni
d4749cfc82 Hide featured assets on liquid testnet 2024-03-24 15:41:18 +09:00
softsimon
60996a99f0 Removing Bisq 2024-03-23 18:03:49 +09:00
softsimon
1b21cd89a3 Merge pull request #4805 from mempool/mononaut/http-error-handling
http error handling
2024-03-23 18:03:24 +09:00
Mononaut
13fb75fec3 Extend http interceptor to normalize errors 2024-03-23 07:07:29 +00:00
Mononaut
484e032775 Reusable component & pipe for http error rendering 2024-03-23 07:07:24 +00:00
softsimon
21b3e4071c Merge pull request #4812 from mempool/mononaut/tx-page-tags
Add Goggles filter badges to the transaction page
2024-03-23 15:56:25 +09:00
Mononaut
48b82329cb Adjust transaction details table layout 2024-03-23 06:52:38 +00:00
Mononaut
00dcff50ee Add Goggles filters tags to the transaction page 2024-03-23 06:08:40 +00:00
wiz
abbc8a134b Merge pull request #4811 from mempool/nymkappa/hide-accel-subdomain
[accelerator] disable ui elements on subdomain
2024-03-23 14:43:18 +09:00
softsimon
4374e6e0eb Merge pull request #4810 from mempool/mononaut/tx-tags
Show goggles badges on block overview tooltip
2024-03-23 14:10:30 +09:00
softsimon
15062b80d1 Removing goggles icon 2024-03-23 14:08:43 +09:00
softsimon
b4d0b75557 Merge pull request #4321 from mempool/mononaut/ssr
Angular Universal SSR
2024-03-22 20:01:30 +09:00
Mononaut
d6f1b51fa6 Show goggles badges on block overview tooltip 2024-03-22 10:05:59 +00:00
nymkappa
0a24a9ea7c [accelerator] disable ui elements on subdomain 2024-03-22 17:51:13 +09:00
softsimon
e01df9ee32 Merge pull request #4809 from mempool/nymkappa/polish-menu
[menu] fix css
2024-03-22 17:37:08 +09:00
softsimon
3aa12c935b Merge pull request #4806 from mempool/mononaut/address-chart-navigation
Add click navigation to balance history chart
2024-03-22 15:44:53 +09:00
Mononaut
6e2f17b3d2 SSR: Fix more merge/version conflicts 2024-03-22 05:41:58 +00:00
Mononaut
50e656b259 SSR: fix merge/version conflicts 2024-03-22 05:35:22 +00:00
Mononaut
48af95d722 SSR: placeholder bowtie diagram while loading 2024-03-22 05:35:22 +00:00
Mononaut
c926088136 SSR: Fix block viz loading indicators 2024-03-22 05:35:22 +00:00
Mononaut
b167848b9b SSR: Fix initial state of lightning pages & graphs 2024-03-22 05:35:22 +00:00
Mononaut
99730d02ab SSR: fix graph loading indicators 2024-03-22 05:35:22 +00:00
Mononaut
ed73c1e94c SSR: fix clock page timeout 2024-03-22 05:35:22 +00:00
Mononaut
ab5ee5370a SSR: solve block page initial state 2024-03-22 05:35:21 +00:00
Mononaut
4fbbff6614 SSR: fix transferstate block ordering 2024-03-22 05:35:21 +00:00
Mononaut
9cd33825bf SSR: dirty hack to fix initial blockchain scroll 2024-03-22 05:35:21 +00:00
Mononaut
abd7f62b20 SSR: preserve transferstate api response headers 2024-03-22 05:35:21 +00:00
Mononaut
bcd337794a SSR: fix mining dashboard initial layout 2024-03-22 05:35:21 +00:00
Mononaut
1ae5f05316 SSR: init latest replacements on server side 2024-03-22 05:35:20 +00:00
Mononaut
c5822b11a0 SSR zone macrotask utilities, solve tx page initial state 2024-03-22 05:35:20 +00:00
Mononaut
5b4132b551 SSR: fix incoming tx graph init state 2024-03-22 05:35:20 +00:00
Mononaut
29aaeef47b Fix deprecated SSR state transfer imports 2024-03-22 05:35:20 +00:00
Mononaut
10e468d463 Fix hashrate difficulty SSR state dependency 2024-03-22 05:35:20 +00:00
Mononaut
6464f6d8bb Exclude webgl block viz from SSR rendering 2024-03-22 05:35:20 +00:00
Mononaut
cfdbd93695 Fix SSR matchMedia shim 2024-03-22 05:35:19 +00:00
Mononaut
a2b9b0c89d Exclude echarts from server-side rendering 2024-03-22 05:35:19 +00:00
Mononaut
e6fb93140c Fix default mining pool img fallback behavior 2024-03-22 05:35:19 +00:00
Mononaut
4e26e1f196 SSR ResizeObserver shim 2024-03-22 05:35:19 +00:00
Mononaut
1bb625f06b Cleaner SSR server routing 2024-03-22 05:35:19 +00:00
Mononaut
68b55db872 restore basic Angular Universal build 2024-03-22 05:35:19 +00:00
nymkappa
c47822cae7 [menu] fix css 2024-03-22 14:34:21 +09:00
softsimon
00a94f9e3c Merge pull request #4799 from mempool/natsoni/blocks-table-url-pagination
Add page number to URL in blocks table
2024-03-22 14:24:56 +09:00
natsoni
adda511869 Refactor key navigation on recent pegs table 2024-03-22 13:48:01 +09:00
softsimon
1b971bfb05 Merge pull request #4807 from mempool/nymkappa/cleanup-lightning-code
[refactor] cleanup dead code
2024-03-22 09:39:40 +09:00
nymkappa
1eb52d8a35 [accelerator] fix redirection link 2024-03-21 19:08:48 +09:00
nymkappa
ea94dfcd6b [refactor] cleanup dead code 2024-03-21 18:14:35 +09:00
Mononaut
3dd328475e Add click navigation to balance history chart 2024-03-21 09:02:17 +00:00
softsimon
c18779b4e3 Refactoring debounce mechanism 2024-03-21 17:58:34 +09:00
nymkappa
8fee195577 [accelerator] prepaid acceleration 2024-03-21 16:44:07 +09:00
natsoni
5deb8c3149 Allow smooth key navigation in block table and pegs table 2024-03-21 16:24:16 +09:00
softsimon
78f03bd6d5 Merge pull request #4803 from mempool/mononaut/fix-address-chart-axis
Fix address chart y-axis labels
2024-03-21 15:47:50 +09:00
softsimon
5249fb1a8b Merge pull request #4790 from mempool/natsoni/account-menu-overlay
Account menu overlays UI instead of pushing it
2024-03-21 14:50:48 +09:00
softsimon
4ce0497048 Improve select truncated strings 2024-03-21 14:05:44 +09:00
natsoni
393181f753 Set absolute menu in sticky header by @mononaut 2024-03-21 13:47:28 +09:00
softsimon
7f2d77a73b Merge pull request #4793 from mempool/natsoni/fix-fiat-price-on-tesnet
Fix fiat price displayed on test networks
2024-03-21 12:08:18 +09:00
Mononaut
f8a1fc6aa2 Fix address chart y-axis labels 2024-03-21 02:56:20 +00:00
softsimon
7bf7d02a18 Merge pull request #4802 from mempool/natsoni/fix-bowtie-tooltip-bug
Fix bowtie tooltip bug
2024-03-21 11:31:18 +09:00
natsoni
7b6163cfee Fix bowtie tooltip bug 2024-03-20 21:25:00 +09:00
softsimon
19b0c4e410 Merge pull request #4792 from mempool/mononaut/address-balance-graph
Add balance graph to address page
2024-03-20 19:08:43 +09:00
Mononaut
2c16dda7c0 Address chart support p2pks 2024-03-20 10:03:19 +00:00
Mononaut
82f1fa5110 Add balance graph to address page 2024-03-20 10:03:19 +00:00
natsoni
524619f48e Add URL pagination and keyboard navigation to Liquid pegs list 2024-03-20 18:24:40 +09:00
natsoni
666165ebe9 Add key navigation support to blocks list 2024-03-20 15:10:51 +09:00
natsoni
6b9159b89c Add URL pagination to block transaction list 2024-03-20 14:08:44 +09:00
softsimon
48d852fd49 Merge pull request #4798 from mempool/simon/flex-justified-navbar
Flex justified navbar
2024-03-20 13:07:00 +09:00
natsoni
f6dbe1e17f Add page number to URL in blocks table 2024-03-20 13:02:56 +09:00
softsimon
fc5b2c050e Flex justified navbar 2024-03-19 15:12:28 +09:00
softsimon
92d960a9cc Merge pull request #4789 from mempool/hunicus/api-docs-unfurler
Add /docs/api unfurler image
2024-03-19 12:19:41 +09:00
softsimon
482493fef0 Merge pull request #4794 from mempool/natsoni/add-currency-frontend-config
Add missing ADDITIONAL_CURRENCIES flag in frontend config
2024-03-19 12:11:26 +09:00
natsoni
4e45993d41 Add missing additional currencies flag in frontend config 2024-03-19 12:07:25 +09:00
natsoni
8edd2b5802 Fix fiat price displayed on test networks 2024-03-19 11:58:50 +09:00
softsimon
e53254fb2d Merge pull request #4791 from mempool/natsoni/update-doc-historical-price
Update doc for historical price endpoint
2024-03-19 11:53:01 +09:00
nymkappa
40663c79c0 Merge branch 'master' into natsoni/account-menu-overlay 2024-03-19 09:04:07 +09:00
natsoni
cca7c7e8e2 Update doc for historical price endpoint 2024-03-18 17:41:13 +09:00
natsoni
2c6f210e8e Account menu overlays UI instead of pushing it 2024-03-18 16:49:33 +09:00
hunicus
82ba80dbb1 Add /docs/api unfurler image 2024-03-18 03:16:00 -04:00
softsimon
634b461bb5 Merge pull request #4787 from mempool/natsoni/fix-load-more-p2pk
Fix broken load more for P2PK address page
2024-03-18 15:27:39 +09:00
softsimon
f1b9a0f536 Merge pull request #4697 from mempool/dependabot/docker/docker/backend/node-20.11.1-buster-slim
Bump node from 20.8.0-buster-slim to 20.11.1-buster-slim in /docker/backend
2024-03-18 15:07:07 +09:00
softsimon
b7d9efebd1 Merge pull request #4785 from mempool/natsoni/bowtie-tooltip-price
Display more accurate price data on tx bowtie tooltip
2024-03-18 14:46:39 +09:00
softsimon
34d93abbf6 Merge pull request #4784 from mempool/simon/scss-flex-warning-fixes
Fixing scss flexbox warnings
2024-03-18 12:27:52 +09:00
softsimon
dbecb73f97 Merge pull request #4782 from mempool/nymkappa/no-block-accel-list
[accelerator] show ~ for pending accel in the block column
2024-03-18 11:47:24 +09:00
softsimon
9fa6d232d9 Merge pull request #4696 from mempool/dependabot/docker/docker/frontend/node-20.11.1-buster-slim
Bump node from 20.8.0-buster-slim to 20.11.1-buster-slim in /docker/frontend
2024-03-18 11:40:03 +09:00
softsimon
30c033b403 Merge pull request #4695 from mempool/dependabot/docker/docker/frontend/nginx-1.25.4-alpine
Bump nginx from 1.24.0-alpine to 1.25.4-alpine in /docker/frontend
2024-03-18 11:39:37 +09:00
softsimon
788d1de968 Merge pull request #4783 from mempool/mononaut/pool-acc-fees-mobile
Fix pool oob fees table mobile layout
2024-03-18 11:39:09 +09:00
natsoni
a04d685f1a Change tooltip text "ago" -> "earlier" 2024-03-17 22:23:46 +09:00
natsoni
43232b9d0a Fix broken load more for P2PK address page 2024-03-17 17:58:26 +09:00
softsimon
acd9c23180 Fixing scss flexbox warnings
fixes #4781
2024-03-17 17:08:07 +09:00
Mononaut
a8fa7dcb2a Fix pool oob fees table mobile layout 2024-03-17 08:00:51 +00:00
natsoni
2dc6f6ff5a Display more accurate price on prevout/spent outputs in bowtie tooltip 2024-03-17 16:25:36 +09:00
softsimon
df107d34b4 Fixing undefined error 2024-03-17 15:31:17 +09:00
nymkappa
2245109ae6 [accelerator] show ~ for pending accel in the block column 2024-03-17 10:12:17 +09:00
softsimon
1c76a6091a Merge pull request #4778 from mempool/dependabot/npm_and_yarn/frontend/follow-redirects-1.15.6
Bump follow-redirects from 1.15.5 to 1.15.6 in /frontend
2024-03-16 17:23:59 +07:00
softsimon
29c0131edf Merge pull request #4779 from mempool/dependabot/npm_and_yarn/backend/follow-redirects-1.15.6
Bump follow-redirects from 1.15.5 to 1.15.6 in /backend
2024-03-16 17:23:40 +07:00
wiz
c78a14c5fd Merge pull request #4780 from mempool/mononaut/fix-acc-pool-fees
Fix pool page accelerator fees
2024-03-16 18:21:23 +09:00
wiz
1dd72418c1 Merge branch 'master' into mononaut/fix-acc-pool-fees 2024-03-16 18:19:08 +09:00
Mononaut
f54bdace61 Fix pool page accelerator fees 2024-03-16 09:16:58 +00:00
dependabot[bot]
5ac87c095f Bump follow-redirects from 1.15.5 to 1.15.6 in /backend
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-16 09:13:17 +00:00
dependabot[bot]
2d8111a6e7 Bump follow-redirects from 1.15.5 to 1.15.6 in /frontend
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-16 09:13:14 +00:00
softsimon
d5cca2903c Merge pull request #4770 from mempool/dependabot/npm_and_yarn/frontend/cypress-13.7.0
Bump cypress from 13.6.2 to 13.7.0 in /frontend
2024-03-16 16:12:39 +07:00
wiz
d5e591c4af Merge pull request #4773 from mempool/mononaut/simplify-recent-txs
Simplify recent transactions observable
2024-03-16 17:27:07 +09:00
wiz
b5fa44955f Merge pull request #4775 from mempool/mononaut/oob-block-precision
Increase precision of out-of-band fees on the block page
2024-03-16 17:22:23 +09:00
wiz
9e1cf51e4a Merge pull request #4776 from mempool/mononaut/fix-new-unfurls
Fix tx push unfurl preview
2024-03-16 17:21:58 +09:00
wiz
fd41dfc152 Merge pull request #4774 from mempool/mononaut/accelerator-audit-pools
Show accelerator audit totals on pools page
2024-03-16 17:20:49 +09:00
wiz
d03e7b2d46 Merge branch 'master' into mononaut/accelerator-audit-pools 2024-03-16 17:19:56 +09:00
wiz
d3c5cbde7f Merge pull request #4771 from mempool/mononaut/update-bid-boost
Update acceleration audit to match latest bid boost version
2024-03-16 17:19:34 +09:00
wiz
dd7c8f2934 Merge pull request #4772 from mempool/mononaut/replacement-skeleton
Fix recent replacements skeleton loader
2024-03-16 17:19:18 +09:00
wiz
0b173296c4 Merge pull request #4768 from mempool/nymkappa/provisional-status
[accelerator] add provisional status
2024-03-16 17:17:54 +09:00
softsimon
81c8c8dafb Merge pull request #4747 from mempool/natsoni/more-fiat-currencies
Use fx rates to add more currencies support and improve fiat prices
2024-03-16 10:31:47 +07:00
Mononaut
31d3566ed5 Fix tx push unfurl preview 2024-03-15 09:35:08 +00:00
Mononaut
fb852b73e9 Increase precision of out-of-band fees on the block page 2024-03-15 08:28:50 +00:00
Mononaut
a44219a3c3 Add out of band fees to pools page 2024-03-15 07:44:57 +00:00
Mononaut
120ffdb0f4 Simplify pool details table 2024-03-15 07:40:44 +00:00
nymkappa
8dbfa1c73c Merge branch 'master' into nymkappa/provisional-status 2024-03-15 16:38:13 +09:00
Mononaut
8427127545 Simplify recent transactions observable 2024-03-15 06:05:52 +00:00
Mononaut
404892174d Fix recent replacements skeleton loader 2024-03-15 05:33:23 +00:00
Mononaut
e171c7694c Update acceleration audit to match latest bid boost version 2024-03-15 03:27:30 +00:00
natsoni
7bc6ef2516 Fix tx fee to display historical price 2024-03-14 13:08:15 +01:00
softsimon
0fcfc5e78d Merge branch 'master' into natsoni/more-fiat-currencies 2024-03-14 16:23:26 +07:00
softsimon
c12e664b9a Merge pull request #4769 from mempool/hunicus/the-the-preview
Move 'the' on the sponsor preview image
2024-03-14 16:09:50 +07:00
dependabot[bot]
8cb040eec6 Bump cypress from 13.6.2 to 13.7.0 in /frontend
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.6.2 to 13.7.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.6.2...v13.7.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-14 02:32:54 +00:00
natsoni
5ecb915c60 Fix db version conflicts 2024-03-13 11:09:30 +01:00
hunicus
ab93a45853 Move the on the sponsor preview image 2024-03-13 18:15:06 +09:00
natsoni
a95d17950f Add fake entry for missing price data before 2010-07-19 2024-03-12 20:50:48 +01:00
nymkappa
860aac060c [accelerator] add provisional status 2024-03-12 17:04:37 +09:00
wiz
023b2f7ae2 Tweak CSS color for OOB fees on block component 2024-03-12 16:46:47 +09:00
wiz
9a531b0a00 Fix SQL query for /api/v1/accelerations/block/:height for older blocks 2024-03-12 15:05:05 +09:00
wiz
0c4631359d Merge pull request #4767 from mempool/hunicus/dot-space-previews
Add unfurler routes for /enterprise and /sponsor
2024-03-12 14:20:07 +09:00
wiz
fd04947ac0 Merge pull request #4766 from mempool/mononaut/past-acceleration-fees
Audit past acceleration fees
2024-03-12 14:19:18 +09:00
wiz
acdc5f92cd Merge pull request #4757 from russeree/add-aduit-blocks-param
Add audit=[bool] param to /block/[hash] url
2024-03-12 14:18:13 +09:00
wiz
f0f1eb06bb Remove stray console.log from #4757
Co-authored-by: mononaut <83316221+mononaut@users.noreply.github.com>
2024-03-12 14:17:57 +09:00
hunicus
fc1179f7bd Merge branch 'master' into hunicus/dot-space-previews 2024-03-12 11:35:09 +09:00
hunicus
cbc0e44d64 Add unfurler routes for /enterprise and /sponsor 2024-03-12 11:33:30 +09:00
softsimon
f851e821b4 Merge pull request #4760 from mempool/junderw/rust-gbt-build-final
Refactor rust-gbt and destroy all issues and be happy for all eternity
2024-03-12 09:12:02 +07:00
hunicus
df51018599 Reorder unfurler routes to be alphabetic 2024-03-12 10:22:42 +09:00
Mononaut
11a4f4e6d9 Audit past acceleration data 2024-03-11 21:35:01 +00:00
natsoni
b99e5c4160 Populate historical fiat prices from latest to oldest 2024-03-11 18:02:30 +01:00
natsoni
91ec0c8382 Merge branch 'origin/HEAD' into natsoni/more-fiat-currencies and fix db version conflicts 2024-03-11 15:32:35 +01:00
natsoni
669cf59269 Set monthly granulary for fx rates 2024-03-11 15:27:43 +01:00
natsoni
8e158e1786 Fix lastHistoricalRun variable to be in seconds 2024-03-11 14:28:06 +01:00
wiz
93f547e446 Merge pull request #4764 from mempool/nymkappa/fix-mysql-query
fix mysql query
2024-03-11 19:32:27 +09:00
nymkappa
ece40c5e74 fix mysql query 2024-03-11 19:01:39 +09:00
wiz
0dff902151 Add unfurler page for /blocks and /tx/push 2024-03-11 17:54:51 +09:00
wiz
5ea4ef80b9 Fix typo in fix for database migration fail 2024-03-11 16:07:47 +09:00
wiz
d83f483898 Fix database migration fail 2024-03-11 16:03:08 +09:00
wiz
c5d382c351 Fix typo build error in unfurler 2024-03-11 15:55:32 +09:00
wiz
b50d747440 Add missing unfurler routes, rename images to match 2024-03-11 15:38:09 +09:00
wiz
e7fde2f872 Merge pull request #4759 from mempool/hunicus/add-preview-imgs
Add page-specific preview images
2024-03-11 14:51:49 +09:00
wiz
c4b47e1f1c ops: Add mempool servers to elements.conf 2024-03-11 14:49:47 +09:00
wiz
3d61e57b00 Merge pull request #4761 from mempool/mononaut/fix-block-acc-fees
Fix block acceleration fees calculation & api bugs
2024-03-11 14:29:07 +09:00
junderw
92a5fc8159 Refactor rust-gbt 2024-03-11 02:09:37 +09:00
natsoni
a5099fed75 Add backend checks for enabling fiat prices and update config paths 2024-03-10 17:12:19 +01:00
natsoni
b11164005c Add FIAT_PRICE category to backend config 2024-03-10 16:34:43 +01:00
Mononaut
a2b0dd3a23 Fix block acceleration fees calculation & api 2024-03-10 15:08:44 +00:00
hunicus
553c2131d9 Remove mempool.space signup preview image 2024-03-10 20:46:12 +09:00
hunicus
c590a623f0 Merge branch 'master' into hunicus/add-preview-imgs 2024-03-10 17:47:23 +09:00
hunicus
a81c0a3b0f Add back old preview assets 2024-03-10 17:32:10 +09:00
hunicus
0f6b694fa9 Switch accelerator preview images 2024-03-10 17:28:14 +09:00
wiz
c55c298fb5 Merge pull request #4755 from mempool/nymkappa/sign-in-button
Update CTAs
2024-03-10 17:00:25 +09:00
wiz
ede3a121c7 Merge pull request #4758 from mempool/mononaut/accelerated-badge
Move accelerated badge into tx mining info field
2024-03-10 16:58:43 +09:00
softsimon
7bedb9488b Merge pull request #4749 from mempool/mononaut/fake-p2wsh-goggles
Add fake p2wsh goggles
2024-03-10 10:24:23 +07:00
softsimon
6d3c429bf4 Fixing database migration conflict. 2024-03-10 10:09:18 +07:00
Mononaut
9a730b51d4 Add fake p2wsh goggles 2024-03-10 10:07:33 +07:00
hunicus
a7c450895b Add preview assets for mempool.space 2024-03-10 11:11:40 +09:00
hunicus
a5f864fe35 Explicitly set mining and lightning preview images 2024-03-10 11:10:24 +09:00
hunicus
b41f196421 Add preview image: tos 2024-03-10 11:06:22 +09:00
hunicus
462c7f9c2c Add preview image: trademark policy 2024-03-10 11:04:39 +09:00
hunicus
869aa7fea5 Add preview image: recent blocks 2024-03-10 10:59:44 +09:00
hunicus
5b1f3d7cbe Add preview image: rbf 2024-03-10 10:59:44 +09:00
hunicus
60ad0b71c5 Add preview image: privacy policy 2024-03-10 10:59:43 +09:00
hunicus
68af577104 Update old preview images 2024-03-10 10:59:43 +09:00
hunicus
26be760692 Add preview image: faq 2024-03-10 10:27:10 +09:00
hunicus
a5b16cf129 Add preview image: broadcast tx 2024-03-10 10:26:57 +09:00
hunicus
a0e387efad Add preview image: accelerator dashboard 2024-03-10 10:08:21 +09:00
hunicus
e26e08b426 Add preview image: about page 2024-03-10 09:54:00 +09:00
hunicus
d9d92f1915 Add service function for fixed preview images 2024-03-10 09:52:28 +09:00
hunicus
79f0ea74c8 Compress existing preview images 2024-03-10 09:37:58 +09:00
hunicus
d1c12f9f6e Remove duplicate metadata tags
Some metadata was being set twice, because property and name
attributes for Twitter items were both being set.
2024-03-10 09:37:58 +09:00
hunicus
1b92c62353 Update default preview image location
Remove duplicate image, move to previews folder, and update
existing paths.
2024-03-10 08:23:16 +09:00
russeree
fffffffdb3 add audit=[bool] param to block hash url 2024-03-09 10:18:32 -08:00
Mononaut
2647e94bc8 Move accelerated badge into tx mining info field 2024-03-09 18:14:48 +00:00
natsoni
ccf1121f19 Fetch historical data based on timestamp and currency 2024-03-09 16:43:23 +01:00
natsoni
23076172e4 Merge branch 'master' into natsoni/more-fiat-currencies 2024-03-09 11:53:07 +01:00
nymkappa
52c4dd8bc3 [accelerator] preview cta points to mempool.space if not official build 2024-03-09 17:45:08 +09:00
softsimon
bfde456ca8 Only display docs enterprise upsell on official mempool 2024-03-09 15:38:16 +07:00
nymkappa
10819fda6d [ui] disable sign in button in global footer 2024-03-09 17:33:38 +09:00
wiz
c3d90d573f Merge pull request #4736 from mempool/mononaut/accelerator-audit-stats
Show accelerator audit total on block page
2024-03-09 13:52:39 +09:00
wiz
3c2ba74cb2 Merge pull request #4750 from mempool/nymkappa/fix-acceleration-apis
[accelerator] update dashboard and doc
2024-03-09 13:51:45 +09:00
wiz
0079e5d576 Merge pull request #4754 from mempool/nymkappa/min-accel-graph-bar-height
[accelerator] set accel graph bar min height
2024-03-09 13:51:23 +09:00
wiz
3f07026229 Merge pull request #4753 from mempool/mononaut/clockchain-pools
Hide mining pools on clock blockchain
2024-03-09 13:51:07 +09:00
wiz
ac971d17c7 Merge pull request #4748 from mempool/mononaut/transaction-mining-info
Display basic mining info on transaction page
2024-03-09 13:50:21 +09:00
wiz
00d8241dd7 Merge pull request #4752 from mempool/mononaut/loading-goggles
Fix stuck Goggles on websocket reconnect
2024-03-09 13:49:48 +09:00
wiz
d459e1fae3 Merge pull request #4746 from mempool/nymkappa/subdomain-cache-buster
[enterprise] implement subdomain logo cache buster
2024-03-09 13:49:17 +09:00
wiz
61b84e3957 Merge pull request #4751 from mempool/nymkappa/dynamic-timespan-selector-accel-graph
[accelerator] dynamically show timespan selector based on the oldest acceleration
2024-03-09 13:46:36 +09:00
softsimon
020194d37b Merge pull request #4723 from mempool/natsoni/federation-utxos-expiry
Liquid dashboard: Filter for expired UTXOs - Match layout with main dashboard
2024-03-09 10:20:08 +07:00
nymkappa
1665b0d915 [accelerator] set accel graph bar min height 2024-03-09 09:24:25 +09:00
Mononaut
b606282fb4 Hide mining pools on clock blockchain 2024-03-08 19:16:09 +00:00
Mononaut
dde6719306 Fix stuck Goggles on websocket reconnect 2024-03-08 16:47:15 +00:00
Mononaut
7af185a919 Tx audit tags handle coinbase 2024-03-08 15:22:48 +00:00
Mononaut
c17b77fe31 Display basic mining info on transaction page 2024-03-08 15:22:47 +00:00
nymkappa
faa5887c3b [accelerator] dynamically show timespan selector based on the oldest acceleration 2024-03-08 18:00:57 +09:00
softsimon
29bbb922c5 Merge pull request #4722 from mempool/dependabot/npm_and_yarn/frontend/es5-ext-0.10.64
Bump es5-ext from 0.10.53 to 0.10.64 in /frontend
2024-03-08 10:22:03 +07:00
dependabot[bot]
aac3b1aa5c Bump es5-ext from 0.10.53 to 0.10.64 in /frontend
Bumps [es5-ext](https://github.com/medikoo/es5-ext) from 0.10.53 to 0.10.64.
- [Release notes](https://github.com/medikoo/es5-ext/releases)
- [Changelog](https://github.com/medikoo/es5-ext/blob/main/CHANGELOG.md)
- [Commits](https://github.com/medikoo/es5-ext/compare/v0.10.53...v0.10.64)

---
updated-dependencies:
- dependency-name: es5-ext
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-08 03:21:24 +00:00
softsimon
e3bb7f73f9 Merge pull request #4702 from mempool/dependabot/npm_and_yarn/backend/ip-2.0.1
Bump ip from 2.0.0 to 2.0.1 in /backend
2024-03-08 10:20:09 +07:00
softsimon
c4ecc1626d Merge pull request #4701 from mempool/dependabot/npm_and_yarn/frontend/ip-2.0.1
Bump ip from 2.0.0 to 2.0.1 in /frontend
2024-03-08 10:19:54 +07:00
nymkappa
007f424d15 [accelerator] update doc, split public/authenticated 2024-03-08 10:52:02 +09:00
nymkappa
1d56bfa9b8 [accelerator] remove query params for acceleration list 2024-03-08 10:33:23 +09:00
Mononaut
e7788133fa Add missing null check in block accelerations subscription 2024-03-07 19:52:42 +00:00
Mononaut
7491fb512c Show accelerator audit total on block page 2024-03-07 19:46:24 +00:00
natsoni
b043d698ca Allow historical price api to return data of a single currency 2024-03-07 18:33:19 +01:00
natsoni
f121d16544 Add more fiat currencies using fx rates from FreeCurrencyAPI 2024-03-07 10:48:32 +01:00
natsoni
bfaddfc345 Add CURRENCY_API_KEY option to config files 2024-03-07 10:36:33 +01:00
nymkappa
f5e1e5f1a2 [enterprise] implement subdomain logo cache buster 2024-03-07 18:32:52 +09:00
natsoni
e8c5d478fa Merge branch 'master' into natsoni/federation-utxos-expiry 2024-03-07 10:27:44 +01:00
wiz
1d877a746f Merge pull request #4744 from mempool/mononaut/send-nodes
More status page polish
2024-03-07 18:06:05 +09:00
softsimon
82716b0037 Merge pull request #4745 from mempool/mononaut/missing-blocks
Fix missing mempool blocks
2024-03-07 12:15:19 +07:00
softsimon
b988f042cc Merge pull request #4743 from mempool/junderw/reload-icons
Fix: Refresh Liquid icons every 15 seconds to match electrs.
2024-03-07 11:09:33 +07:00
softsimon
1df5c5df6d Updating to match crontab update 2024-03-07 11:09:08 +07:00
Mononaut
3178d30f2a Fix missing mempool blocks bug 2024-03-06 22:25:58 +00:00
Mononaut
be52fd4e46 More status page polish 2024-03-06 19:34:12 +00:00
junderw
11a6d81a17 Fix: Refresh Liquid icons every 15 seconds to match electrs. 2024-03-07 02:21:38 +09:00
wiz
31e320b2e2 ops: Update check git/md5 hash script 2024-03-06 17:37:27 +09:00
wiz
7f18d73443 Merge pull request #4689 from mempool/mononaut/wallet-balance
Add embeddable wallet balance page
2024-03-06 16:38:00 +09:00
wiz
30485e7483 Merge pull request #4397 from mempool/mononaut/tomahawk-timeouts
Improve timeout handling in esplora api health monitoring & logs
2024-03-06 16:34:20 +09:00
wiz
a2fb16c84c Merge pull request #4144 from mempool/hunicus/enterprise-cta-docs
Add enterprise cta to docs
2024-03-06 16:33:38 +09:00
wiz
57a878403e Merge branch 'master' into mononaut/wallet-balance 2024-03-06 16:29:10 +09:00
wiz
faa5475ab7 Merge branch 'master' into mononaut/tomahawk-timeouts 2024-03-06 16:24:35 +09:00
wiz
28d23d4304 Merge branch 'master' into hunicus/enterprise-cta-docs 2024-03-06 16:23:48 +09:00
wiz
cef80a36a9 Merge pull request #4655 from jamesblacklock/macos-docker-init
modify docker/init.sh for macOS compatibility
2024-03-06 16:20:49 +09:00
wiz
e0e997a3d1 Merge pull request #4549 from mempool/nymkappa/increase-mysql-pool
[database] increase default pool size to 100 connections
2024-03-06 16:19:53 +09:00
wiz
c4a11309fa Merge pull request #4278 from mempool/knorrium/add_sync_check_script
ops: Add block height workflow
2024-03-06 16:18:46 +09:00
wiz
fa4caec73e Merge pull request #4628 from mempool/simon/dashboard-miner-tags
Display pool tags on dashboard
2024-03-06 16:17:25 +09:00
wiz
965a135390 Merge pull request #4740 from mempool/mononaut/polish-nodes
Polish /nodes and /network pages
2024-03-06 16:14:32 +09:00
wiz
9e5fdbb64a ops: Increase nginx proxy buffer sizes 2024-03-06 16:04:30 +09:00
Mononaut
71863e4f48 Polish /nodes and /network pages 2024-03-05 23:16:20 +00:00
dependabot[bot]
7cee1512a3 Bump ip from 2.0.0 to 2.0.1 in /backend
Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-05 13:52:17 +00:00
wiz
c9b2ce3efb Merge pull request #4737 from mempool/junderw/bump-rust-deps
Bump rust-gbt deps
2024-03-05 22:50:35 +09:00
junderw
0f1434e32d Bump rust-gbt deps 2024-03-05 22:32:14 +09:00
wiz
acb60fa1bc ops: Add check script to production folder 2024-03-05 21:44:54 +09:00
wiz
9e1fe71dc8 ops: Add MAX_TRACKED_ADDRESSES to prod configs 2024-03-05 20:48:39 +09:00
wiz
62e0cb2e57 Merge pull request #4734 from mempool/mononaut/tomahawk-status-page
Tomahawk status page
2024-03-05 20:09:40 +09:00
natsoni
198939da81 Minor typo and displaying fixes 2024-03-04 20:45:45 +01:00
natsoni
847b90f167 Fix db version conflicts 2024-03-04 20:32:38 +01:00
Mononaut
73e9c85ff1 Separate tomahawk nodes & network pages, misc fixes 2024-03-04 18:47:26 +00:00
Mononaut
5f3ca3a321 Disable tomahawk status on non-official instances 2024-03-04 18:47:26 +00:00
Mononaut
1518b3ccfb Backend OFFICIAL config setting 2024-03-04 18:47:26 +00:00
Mononaut
5898143f66 Electrs server status page 2024-03-04 18:47:26 +00:00
Mononaut
f63f1b1773 Websocket subscription for fallback server health status 2024-03-04 18:47:24 +00:00
softsimon
8405e5ff07 Merge pull request #4718 from mempool/mononaut/accelerator-audit
Accelerator audit
2024-03-05 01:38:53 +07:00
Mononaut
f923ee4ede Accelerator audit use datetime for added column 2024-03-04 16:32:43 +00:00
Mononaut
bd0de745e2 Add local acceleration info APIs 2024-03-04 16:29:29 +00:00
Mononaut
130bdac58c Calculate & save acceleration bid boost rates 2024-03-04 16:29:28 +00:00
Mononaut
75578ac9fa Improve timeout handling in esplora api health monitoring & logs 2024-03-04 15:22:29 +00:00
wiz
b9d46003f8 Merge pull request #4733 from mempool/mononaut/tooltip-fee-rate
Hide effective rate on tooltip where irrelevant
2024-03-04 22:31:01 +09:00
wiz
1fd07f6c9f Merge pull request #4731 from mempool/nymkappa/accel-list-1y
[accelerator] acceleration list query 1y
2024-03-04 22:30:37 +09:00
wiz
5a5409fd1a Merge pull request #4732 from mempool/nymkappa/fix-accel-chart
[accelerator] fix accel graph tooltip and time axis
2024-03-04 22:30:18 +09:00
softsimon
4bddb52db1 Merge pull request #4712 from mempool/mononaut/the-goggles-nonstandard
Add non-standard Goggles filter
2024-03-04 12:25:49 +07:00
natsoni
dc9bddc6b2 Remove checkbox for expired UTXOs and add new tab 2024-03-03 18:31:39 +01:00
Mononaut
8626846264 Hide effective rate on tooltip where irrelevant 2024-03-03 16:48:04 +00:00
Mononaut
eadbc139fa Handle missing inner_redeemscript 2024-03-03 16:02:14 +00:00
Mononaut
882e8ec598 Check in missing script utility file 2024-03-03 16:02:14 +00:00
Mononaut
249c57f376 Add non-standard Goggles filter 2024-03-03 16:02:14 +00:00
nymkappa
f083aa37d6 [accelerator] fix xaxis type accel graph 2024-03-03 15:43:29 +01:00
nymkappa
c74ce7de83 [accelerator] fix tooltip timestamp accel graph 2024-03-03 15:40:31 +01:00
nymkappa
d4c01f6b1f [accelerator] acceleration list query 1y 2024-03-03 07:57:36 +01:00
wiz
1deacb9996 Merge pull request #4729 from mempool/nymkappa/accel-stats-3m
[accelerator] fix accel bid boost history chart
2024-03-03 12:27:15 +09:00
nymkappa
8bd939b374 [accelerator] show 3m stats, fix accel fee chart 2024-03-01 12:53:29 +01:00
nymkappa
cda5448f13 [accelerator] fix accel bid boost chart height 2024-03-01 11:04:40 +01:00
softsimon
af6af2748c Merge pull request #4715 from mempool/nymkappa/accel-dashboard-cleanup
[accelerator] improve acceleration list/dashboard
2024-03-01 10:17:22 +07:00
wiz
975588a862 Merge pull request #4725 from mempool/knorrium/tag_to_latest_again
Push the latest tag to Docker Hub again
2024-03-01 11:50:46 +09:00
Felipe Knorr Kuhn
093649136e Push the latest tag to Docker Hub again 2024-02-29 18:42:29 -08:00
natsoni
84e91b2c90 Merge remote-tracking branch 'origin/master' into natsoni/federation-utxos-expiry 2024-02-29 14:59:41 +01:00
natsoni
ef209da774 Add expiry filter to Federation UTXOs table
Unify Liquid dashboard with mempool dashboard
2024-02-29 14:57:15 +01:00
wiz
018d4230e2 ops: Remove node207-214.tk7 from prod cluster configs 2024-02-29 19:33:39 +09:00
softsimon
6c66da5426 Merge pull request #4720 from mempool/dependabot/npm_and_yarn/backend/babel/core-7.24.0
Bump @babel/core from 7.23.2 to 7.24.0 in /backend
2024-02-29 17:20:18 +07:00
dependabot[bot]
4a6231c93c Bump ip from 2.0.0 to 2.0.1 in /frontend
Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: ip
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-29 05:06:01 +00:00
softsimon
5b9b0d0968 Merge pull request #4694 from mempool/dependabot/npm_and_yarn/frontend/echarts-5.5.0
Bump echarts from 5.4.3 to 5.5.0 in /frontend
2024-02-29 12:05:10 +07:00
softsimon
ddf1bc0654 Merge pull request #4721 from mempool/simon/accel-tab-mainnet-only
Only display acceleration tab on mainnet
2024-02-29 11:55:08 +07:00
softsimon
419b40884a Only display acceleration tab on mainnet
fixes #4719
2024-02-29 11:49:12 +07:00
dependabot[bot]
1f05e7b366 Bump @babel/core from 7.23.2 to 7.24.0 in /backend
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.23.2 to 7.24.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.24.0/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-29 02:32:53 +00:00
nymkappa
867e959430 [accelerator] /accelerator/stats -> /accelerator/accelerations/stats 2024-02-27 15:22:59 +01:00
nymkappa
3f8a4b5119 [accelerator] move accel stats into backend 2024-02-27 15:20:15 +01:00
nymkappa
cc06f85e73 Merge branch 'master' into nymkappa/accel-dashboard-cleanup 2024-02-27 12:42:19 +01:00
softsimon
a9d94bdafd Merge pull request #4685 from mempool/mononaut/v3-filter
Add Goggles filter for nVersion=3
2024-02-27 15:44:13 +07:00
wiz
18b1805ff3 Merge pull request #4706 from mempool/natsoni/fix-liquid-dashboard-safari
Fix liquid dashboard css
2024-02-27 12:22:18 +09:00
wiz
4044ca3877 Merge pull request #4708 from mempool/mononaut/acceleration-goggles
Add Acceleration Goggles
2024-02-27 12:21:55 +09:00
wiz
66386f2bcc Merge pull request #4709 from mempool/hunicus/txs-api-queryparam
Fix query parameter label in tx history api doc
2024-02-27 12:21:17 +09:00
wiz
d0bf26bcef Merge pull request #4711 from mempool/nymkappa/update-doc
[doc] remove "estimated_fee" from accelerator endpoints
2024-02-27 12:20:54 +09:00
wiz
e918e1fdab ops: Implement ACL for internal APIs 2024-02-27 11:46:14 +09:00
nymkappa
ab0c3eeab6 [accelerator] cap max width acceleration history list for now 2024-02-26 16:47:19 +01:00
nymkappa
e26fcff063 [accelerator] cleanup status 2024-02-26 16:40:22 +01:00
nymkappa
b3b65c59dc [accelerator] improve dashboard responsiveness a bit 2024-02-26 16:23:00 +01:00
nymkappa
fbebfdae04 [accelerator] add pagination support in acceleration list 2024-02-26 15:54:10 +01:00
nymkappa
968a26d2cd Merge branch 'master' into nymkappa/update-doc 2024-02-25 10:07:48 +01:00
wiz
43fde86e9d Merge pull request #4710 from mempool/knorrium/update_node_matrix_20_21
Update node matrix to v20 and v21
2024-02-25 16:48:27 +09:00
wiz
587c7f6d59 ops: Kill nginx cache heater script on shutdown 2024-02-25 16:47:40 +09:00
Felipe Knorr Kuhn
f431ca742f Update node matrix to v20 and v21 2024-02-24 23:40:36 -08:00
wiz
7e16c5e8c4 Tweak a few strings on Acceleration Summary screen 2024-02-25 16:18:43 +09:00
hunicus
8701ba8546 Fix query parameter label in tx history api doc 2024-02-25 01:17:46 -05:00
Mononaut
42912ff007 Add Acceleration Goggles 2024-02-24 20:37:41 +00:00
natsoni
6d8a72301c Fix recent pegs table css 2024-02-22 15:14:47 +01:00
natsoni
1cdbde680c Fix liquid dashboard on mobile view 2024-02-22 14:43:19 +01:00
wiz
ec21b3d06f Merge pull request #4678 from mempool/knorrium/skip_latest_tagging
Temporarily disable tagging images as latest
2024-02-22 19:18:55 +09:00
wiz
e8e43c074b Merge pull request #4704 from mempool/mononaut/matomo-events
matomo events
2024-02-22 19:18:27 +09:00
nymkappa
dc50b40b69 if matomo is undefined, don't try to use it 2024-02-22 11:07:50 +01:00
wiz
e41d6bc2e6 Merge pull request #4504 from mempool/orangesurf/trademark-updates-2
Move 3rd party licenses to footer
2024-02-22 17:45:27 +09:00
wiz
cb7938baa1 Merge branch 'master' into orangesurf/trademark-updates-2 2024-02-22 15:56:08 +09:00
wiz
4d6b62c7de Merge pull request #4205 from mempool/mononaut/unfurl-fallback-no-cache
Unfurl fallback no-cache
2024-02-22 15:52:10 +09:00
wiz
7bf053afe5 Merge branch 'master' into mononaut/unfurl-fallback-no-cache 2024-02-22 15:51:57 +09:00
wiz
d8900d40c7 Merge pull request #4204 from mempool/mononaut/unfurl-symlink-fallbacks
Use symlink to avoid duplicate unfurler fallback images
2024-02-22 15:51:47 +09:00
wiz
841f18f481 Merge pull request #4687 from mempool/mononaut/testnet-expiry
Restore mempoolexpiry on test networks
2024-02-22 15:43:24 +09:00
wiz
b0d34d4e48 Merge branch 'master' into mononaut/matomo-events 2024-02-22 15:27:57 +09:00
Mononaut
c684834c42 matomo tx events 2024-02-21 23:15:31 +00:00
softsimon
46e989ab27 Merge pull request #4692 from mempool/natsoni/fix-goggles-z-index
Fix block visualisation tooltip z-index
2024-02-21 12:17:43 +07:00
softsimon
2c19e44fbf Merge pull request #4690 from mempool/natsoni/fix-hardcoded-hashrate-unit
Fix hardcoded hashrate unit in pool ranking graph
2024-02-21 11:12:21 +07:00
softsimon
dab72f669d Merge pull request #4700 from mempool/natsoni/lightning-pagination
Add pagination to Lightning nodes list and fix table overflow
2024-02-21 11:07:35 +07:00
softsimon
16537e8018 Merge pull request #4703 from mempool/mononaut/revert-halving-countdown
Revert reverted halving countdown widget
2024-02-21 11:05:52 +07:00
Mononaut
a3b713cc74 Revert reverted halving countdown widget 2024-02-20 23:12:41 +00:00
natsoni
17697e669a Add pagination to Lightning nodes list and fix overflow 2024-02-19 17:08:07 +01:00
softsimon
035068a72e Merge pull request #4632 from mempool/mononaut/redis-error-handling
Handle Redis errors and disconnects
2024-02-19 22:18:24 +07:00
softsimon
086ae6978a Merge branch 'master' into mononaut/redis-error-handling 2024-02-19 21:21:05 +07:00
softsimon
951b946be9 Merge pull request #4699 from mempool/natsoni/fix-nodes-map-undefined-channels
Fix nodes map undefined channels count
2024-02-19 21:19:21 +07:00
natsoni
5fc2205b54 Fix nodes map undefined channels count 2024-02-19 11:57:43 +01:00
softsimon
18e412939d Merge pull request #4698 from mempool/mononaut/bg-goggles-indexing
Continue other indexing tasks while Goggles classification runs
2024-02-19 12:29:46 +08:00
Mononaut
69dc21d232 Continue other indexing tasks while Goggles classification runs 2024-02-19 04:11:03 +00:00
dependabot[bot]
dbe66fd4d9 Bump node in /docker/backend
Bumps node from 20.8.0-buster-slim to 20.11.1-buster-slim.

---
updated-dependencies:
- dependency-name: node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-19 02:38:37 +00:00
dependabot[bot]
3041540283 Bump node in /docker/frontend
Bumps node from 20.8.0-buster-slim to 20.11.1-buster-slim.

---
updated-dependencies:
- dependency-name: node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-19 02:30:33 +00:00
dependabot[bot]
d982938366 Bump nginx from 1.24.0-alpine to 1.25.4-alpine in /docker/frontend
Bumps nginx from 1.24.0-alpine to 1.25.4-alpine.

---
updated-dependencies:
- dependency-name: nginx
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-19 02:30:26 +00:00
dependabot[bot]
521d2fc650 Bump echarts from 5.4.3 to 5.5.0 in /frontend
Bumps [echarts](https://github.com/apache/echarts) from 5.4.3 to 5.5.0.
- [Release notes](https://github.com/apache/echarts/releases)
- [Commits](https://github.com/apache/echarts/compare/5.4.3...5.5.0)

---
updated-dependencies:
- dependency-name: echarts
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-19 02:25:26 +00:00
natsoni
ac250ebe6c Add z-index to block overview tooltip component 2024-02-17 18:08:22 +01:00
natsoni
596aada169 Fix hardcoded hashrate unit in pool ranking graph 2024-02-16 09:59:37 +01:00
Mononaut
1f14cbfcaa Fix websocket wallet balances, reposition logo 2024-02-16 06:07:04 +00:00
Mononaut
a7ce7121ee add mempool logo to wallet widget 2024-02-16 02:50:16 +00:00
Mononaut
96a17f09a5 Add embeddable wallet balance page 2024-02-16 02:41:22 +00:00
nymkappa
c4df05b581 [doc] remove "estimated_fee" from accelerator endpoints 2024-02-15 17:33:38 +01:00
softsimon
7fb699a02b Merge pull request #4680 from mempool/mononaut/sliding-difficulty
Project early difficulty adjustment with sliding window
2024-02-15 23:55:21 +08:00
Mononaut
e8fc1e8522 Always show estimated difficulty adjustment 2024-02-15 15:32:31 +00:00
softsimon
5f14b32a06 Merge branch 'master' into mononaut/sliding-difficulty 2024-02-15 22:57:21 +08:00
softsimon
e2d7c82553 Merge pull request #4673 from mempool/natsoni/liquid-dashboard-minor-fixes
Liquid Audit dashboard: requested changes
2024-02-15 17:13:20 +08:00
natsoni
7259a00c8d Polish pegometer for varying screen width 2024-02-14 18:22:04 +01:00
Mononaut
7c6c1187bb Restore mempoolexpiry on test networks 2024-02-14 15:13:00 +00:00
natsoni
9f4c351e3d Minor logic change in dashboard component 2024-02-13 16:55:02 +01:00
softsimon
329c1330f4 Merge pull request #4686 from mempool/move-sponsor-boxes
Move sponsor boxes to subscriptions account panel
2024-02-13 21:26:51 +08:00
natsoni
d55d5db01d Resolve conflicts in dashboard component 2024-02-13 09:47:45 +01:00
natsoni
55cd2f5678 Liquid dashboard: switch places of top graphs 2024-02-13 09:36:22 +01:00
natsoni
69747a0028 Migrate audit dashboard to main Liquid page 2024-02-13 00:59:28 +01:00
hunicus
45c1e05ebc Move sponsor boxes to subscriptions account panel 2024-02-12 17:43:34 -05:00
Mononaut
8713d33d1a Add Goggles filter for nVersion=3 2024-02-12 20:00:57 +00:00
softsimon
512f632475 Merge pull request #4676 from mempool/simon/log-mempool-on-new-blocks
Log mempool stats on new blocks
2024-02-12 23:07:49 +08:00
softsimon
6dedecad70 Merge pull request #4681 from mempool/mononaut/fix-log-stats-on-new-block
Fix statistics timespans
2024-02-12 18:55:48 +08:00
natsoni
99aa6c9ed3 Liquid: improve recent pegs pagination data query 2024-02-12 11:34:47 +01:00
Mononaut
d24d643d70 Fix statistics timespan for 2h and 24hr charts 2024-02-12 00:54:34 +00:00
Mononaut
000524691a Project early difficulty from sliding window 2024-02-11 23:11:19 +00:00
Felipe Knorr Kuhn
290de43df0 Temporarily disable tagging images as latest 2024-02-11 13:10:08 -08:00
softsimon
cc2f42e814 Merge pull request #4672 from mempool/nymkappa/fix-username-not-showing
[auth] properly refresh user when `auth` object changes
2024-02-11 20:13:51 +08:00
softsimon
a40727b194 Merge pull request #4624 from mempool/nymkappa/api-key-rest
[doc] add accelerator rest api documentation
2024-02-11 20:02:41 +08:00
nymkappa
6933d3c395 Merge branch 'master' into nymkappa/fix-username-not-showing 2024-02-11 12:03:04 +01:00
nymkappa
4fc5a6197a Merge branch 'master' into nymkappa/api-key-rest 2024-02-11 12:01:38 +01:00
nymkappa
fbabd93b5e Update frontend/src/app/docs/api-docs/api-docs-data.ts
Co-authored-by: hunicus <93150691+hunicus@users.noreply.github.com>
2024-02-11 12:01:09 +01:00
softsimon
2c22200820 Log mempool stats on new blocks 2024-02-10 20:45:58 +08:00
softsimon
d921c3fdc2 Merge pull request #4670 from mempool/mononaut/optimize-mempool-websocket
Reduce the network size of mempool block websocket updates
2024-02-10 20:10:42 +08:00
nymkappa
a1bd84ea6d [doc] separate private/public acceleration history endpoint title 2024-02-10 11:41:30 +01:00
nymkappa
740f9af9af [doc] additional rest api doc for accelerator 2024-02-10 11:40:19 +01:00
nymkappa
be183ada0a [doc] fix acceleration history endpoint detail 2024-02-10 10:56:19 +01:00
nymkappa
a2b01587b1 [auth] small refactor 2024-02-10 10:31:56 +01:00
nymkappa
5f698dfbbb Merge branch 'master' into nymkappa/api-key-rest 2024-02-10 10:23:17 +01:00
softsimon
46f2509ca0 Merge branch 'master' into mononaut/optimize-mempool-websocket 2024-02-10 15:27:15 +08:00
wiz
8bd4a8a9ee Merge pull request #4674 from mempool/mononaut/data-filter 2024-02-09 17:53:15 -05:00
wiz
e00bc86bd1 Merge pull request #4675 from mempool/mononaut/no-webgl 2024-02-09 17:52:54 -05:00
Mononaut
ade256efc7 Handle missing webgl on dashboards 2024-02-09 21:46:42 +00:00
natsoni
33ac4056d8 Display percent instead of ratio in stats 2024-02-09 18:59:24 +01:00
natsoni
4ef1df47a3 Fix addresses stat error 2024-02-09 18:46:34 +01:00
Mononaut
e23de97e0f 💩 => data 2024-02-09 17:42:20 +00:00
natsoni
346c024ddf Change federation wallet stats to include utxos count 2024-02-09 16:26:59 +01:00
nymkappa
bb43599493 [auth] remove debug log 2024-02-09 15:53:20 +01:00
nymkappa
e6266ecedc [auth] properly refresh user when auth object changes 2024-02-09 15:49:28 +01:00
softsimon
d4db628c3b Merge pull request #4666 from mempool/mononaut/persistent-filters
Make dashboard filters persistent, add disjunctive filter mode
2024-02-09 21:31:09 +08:00
softsimon
1e56ac094c Smaller mobile toggle buttons 2024-02-09 21:30:50 +08:00
Mononaut
ddee5f927c Make dashboard filters persistent, add disjunctive filter mode 2024-02-09 21:30:50 +08:00
natsoni
42bd08c744 Minor fixes on Liquid dashboards 2024-02-09 14:26:34 +01:00
softsimon
dfbec0ceef Merge pull request #4511 from mempool/nymkappa/fix-platinium-typo
[typo] platinium -> platinum
2024-02-09 20:46:19 +08:00
nymkappa
3b3081f884 Merge branch 'master' into nymkappa/api-key-rest 2024-02-09 12:51:30 +01:00
softsimon
925d51f40e Merge pull request #4669 from mempool/mononaut/fix-dashboard-sizes
Fix mining/liquid dashboard widget heights
2024-02-09 14:11:43 +08:00
softsimon
b3dbe1215c Adjusting Load more position to match other dashboards 2024-02-09 14:11:12 +08:00
softsimon
dd89c398cc Merge pull request #4665 from mempool/natsoni/fix-liquid-dashboard-mobile
Fix Liquid dashboard layout on mobile view
2024-02-09 14:01:29 +08:00
Mononaut
7de4a03f1b Fix mining/liquid dashboard widget heights 2024-02-08 22:50:47 +00:00
Mononaut
1121136a5e Reduce the network size of mempool block websocket updates 2024-02-08 22:40:22 +00:00
natsoni
e5f0544cc2 Fix Liquid dashboard layout for mobile view 2024-02-08 18:32:07 +01:00
nymkappa
3456d2737a Merge branch 'master' into nymkappa/fix-platinium-typo 2024-02-08 15:11:45 +01:00
softsimon
efdc83d4bb Enabling Accelerator 2024-02-08 21:25:34 +08:00
softsimon
d745bf3f9e Merge pull request #4664 from mempool/simon/liquid-mining-dashboard-heights
Fixed liquid and mining dashboard graph heights
2024-02-08 21:02:58 +08:00
softsimon
9d6231b6e5 New mining dashboard graph height 2024-02-08 21:01:24 +08:00
softsimon
fdad3d1fd5 Fixing new liquid dashboard height 2024-02-08 20:56:16 +08:00
wiz
1e3650594c Merge pull request #4509 from mempool/nymkappa/mega-branch
[Mega branch] Various fixes and improvements
2024-02-08 07:55:25 -05:00
nymkappa
2dc2a22edb Merge branch 'master' into nymkappa/mega-branch 2024-02-08 13:37:17 +01:00
softsimon
dcccc3c8a2 Merge pull request #4658 from mempool/natsoni/fix-undefined-block-fee
Blockchain component: display dash when feerate is undefined
2024-02-08 20:31:00 +08:00
wiz
49553b7bae Merge pull request #4653 from mempool/mononaut/healthier-checks
Staggered esplora fallback health checks
2024-02-08 07:23:39 -05:00
softsimon
01e019245b Merge pull request #4651 from mempool/natsoni/liquid-audit-improvements
Liquid audit dashboard: various improvements
2024-02-08 19:50:55 +08:00
softsimon
01066eae64 Merge pull request #4648 from mempool/natsoni/search-bar-confidential-addresses
Search bar: add Liquid confidential addresses to addresses regex
2024-02-08 19:45:08 +08:00
softsimon
b88d6bc7b7 Merge pull request #4659 from mempool/natsoni/fix-broken-blocks-skeleton
Fix broken skeleton loader of blocks-list
2024-02-08 18:34:00 +08:00
softsimon
a51d82bcfb Merge branch 'master' into natsoni/fix-broken-blocks-skeleton 2024-02-08 16:22:06 +08:00
softsimon
999994c701 Merge pull request #4652 from mempool/mononaut/fix-address-scroll
Fix infinite address scroll
2024-02-08 16:14:05 +08:00
softsimon
0a7c91a4e9 Merge pull request #4663 from mempool/mononaut/dashboard-concept
New dashboard concept
2024-02-08 14:57:44 +08:00
softsimon
510dd91328 Changed to toggle buttons. Changed filters. 2024-02-08 14:52:31 +08:00
Mononaut
3ceb583127 Fix Goggles title alignment 2024-02-08 04:18:05 +00:00
Mononaut
d7be5a4737 Simple Goggle Toggles 2024-02-08 04:17:54 +00:00
Mononaut
3039481686 Change titles, adjust padding 2024-02-08 02:47:46 +00:00
Mononaut
f14cd5ee2b Swap incoming vb chart and mempool stats 2024-02-08 00:37:16 +00:00
Mononaut
e268a6a033 Fix mining dashboard hashrate graph height 2024-02-08 00:03:34 +00:00
Mononaut
ca2c5d3628 Expand lightning dashboard widgets & improve responsiveness 2024-02-08 00:00:06 +00:00
Mononaut
ce7a007b62 Expand mining dashboard widgets & improve responsiveness 2024-02-07 23:26:06 +00:00
Mononaut
ba0a3d004d Expand acceleration dashboard widgets & improve responsiveness 2024-02-07 21:40:22 +00:00
Mononaut
29e4a581e7 Add next block visualization to main dashboard, expand widgets 2024-02-07 21:39:39 +00:00
Mononaut
4f98a413d1 address scroll handle different page sizes 2024-02-07 20:23:35 +00:00
nymkappa
0ab1183048 Merge branch 'master' into nymkappa/mega-branch 2024-02-07 17:01:55 +01:00
James Blacklock
b8d635f257 Merge branch 'master' into macos-docker-init 2024-02-07 09:15:32 -05:00
natsoni
03d4375b17 Clean up blocks-list skeleton 2024-02-07 14:51:23 +01:00
softsimon
e86d0dc868 Merge pull request #4573 from mempool/dependabot/npm_and_yarn/backend/follow-redirects-1.15.5
Bump follow-redirects from 1.15.2 to 1.15.5 in /backend
2024-02-07 21:47:56 +08:00
softsimon
e9a7ea3623 Merge pull request #4650 from mempool/natsoni/add-liquid-peg-out-label
Add P2WSH Liquid peg out to input label
2024-02-07 20:09:48 +08:00
dependabot[bot]
1e568e5b4c Bump follow-redirects from 1.15.2 to 1.15.5 in /backend
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.5.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.5)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-07 11:53:08 +00:00
softsimon
b56350dca1 Merge pull request #4633 from mempool/dependabot/npm_and_yarn/backend/mysql2-3.9.1
Bump mysql2 from 3.7.0 to 3.9.1 in /backend
2024-02-07 19:52:24 +08:00
natsoni
20614213a7 Add skeleton to recent blocks on Liquid dashboard 2024-02-07 12:50:36 +01:00
softsimon
582eca1fdd Merge branch 'master' into dependabot/npm_and_yarn/backend/mysql2-3.9.1 2024-02-07 19:47:41 +08:00
natsoni
df7f1cc86b Blockchain component: display dash when feerate is undefined 2024-02-07 11:31:22 +01:00
softsimon
0acb797494 Merge pull request #4646 from mempool/knorrium/download_from_cdn
[sync-assets] More logging, add MEMPOOL_CDN and DRY_RUN options
2024-02-07 16:05:01 +08:00
Felipe Knorr Kuhn
195eeaa7b9 Merge branch 'master' into knorrium/download_from_cdn 2024-02-06 20:10:39 -08:00
James Blacklock
d04952b10b Merge branch 'master' into macos-docker-init 2024-02-06 23:06:20 -05:00
softsimon
48c2317e20 Merge pull request #4654 from jamesblacklock/docker-bugfix-2
fix syntax error in mempool-config.json
2024-02-07 12:06:04 +08:00
Felipe Knorr Kuhn
95233f0ef3 Merge branch 'master' into docker-bugfix-2 2024-02-06 19:56:22 -08:00
softsimon
29c6efa9ed Merge pull request #4657 from mempool/knorrium/validate_final_docker_json
Add a step to validate the JSON config generated for Docker
2024-02-07 11:55:42 +08:00
Felipe Knorr Kuhn
624cbf05c0 Add a step to validate the JSON config generated for Docker 2024-02-06 19:47:09 -08:00
James Blacklock
1547c2c477 fix syntax error in mempool-config.json 2024-02-06 22:13:10 -05:00
James Blacklock
df92f4d0aa modify docker/init.sh for macOS compatibility 2024-02-06 21:36:14 -05:00
Mononaut
3959f52d19 Staggered esplora fallback health checks 2024-02-06 23:42:14 +00:00
Mononaut
dfdd286f75 Fix infinite address scroll 2024-02-06 21:50:29 +00:00
wiz
fea115bcbc ops: Fix obvious bug in cache heater script 2024-02-06 14:03:44 -05:00
wiz
f004705896 ops: Add missing HTTP Expires header for fees API 2024-02-06 13:55:44 -05:00
wiz
87a613e4dc ops: Fix broken nginx cache configuration 2024-02-06 13:53:03 -05:00
natsoni
b561648082 Add peg ins/out volume to stats components 2024-02-06 17:35:02 +01:00
natsoni
602c87bea0 Update peg-in/out links to open new page on click 2024-02-06 17:34:24 +01:00
natsoni
b453898b1d Add glow effect to peg outs in progress 2024-02-06 17:34:04 +01:00
Felipe Knorr Kuhn
c4c886b584 Merge branch 'master' into knorrium/download_from_cdn 2024-02-06 07:44:00 -08:00
natsoni
517d36783f Add P2WSH Liquid peg out to input label 2024-02-06 11:37:51 +01:00
nymkappa
f964888c47 Merge branch 'master' into nymkappa/mega-branch 2024-02-05 17:10:07 +01:00
natsoni
c58115a96c Add confidential addresses in liquid address regex 2024-02-05 11:53:05 +01:00
natsoni
fc415372bf Fix P2SH / P2PKH detection on Liquid address page 2024-02-05 11:22:14 +01:00
softsimon
47d221fd3b Merge pull request #4647 from mempool/mononaut/better-coinjoin-goggles
Improve Goggles coinjoin detection
2024-02-05 18:13:12 +08:00
Mononaut
7e5e85c8b9 Improve Goggles coinjoin detection 2024-02-04 21:47:31 +00:00
Felipe Knorr Kuhn
9c72d1df3b Sync assets from the mempool CDN 2024-02-04 09:18:50 -08:00
Felipe Knorr Kuhn
933bc47b44 Add DRY_RUN and MEMPOOL_CDN options 2024-02-04 09:17:42 -08:00
softsimon
a15729c38f Merge pull request #4640 from mempool/fix-liquid-frontend-crash
Fix Liquid frontend crash
2024-02-04 23:38:32 +08:00
softsimon
229e122daf Merge branch 'master' into fix-liquid-frontend-crash 2024-02-04 23:14:35 +08:00
softsimon
16846d526c Merge pull request #4616 from mempool/natsee/liquid-audit-dashboard
Feature: Liquid Federation Audit Dashboard
2024-02-04 22:05:02 +08:00
natsoni
19a4c10860 Fix date alignment in utxos table 2024-02-04 14:57:04 +01:00
natsoni
ae38c3bf81 Update CLA for natsoni 2024-02-04 13:06:49 +01:00
natsoni
575c407098 Remove SQL transactions in federation utxos indexing 2024-02-04 13:03:41 +01:00
natsoni
03e4a21bce Fix styling issue in peg and utxo widgets 2024-02-04 13:01:07 +01:00
natsoni
7bfc649042 Add seo title to pegs and utxos tables 2024-02-04 12:34:40 +01:00
Felipe Knorr Kuhn
e478fb2279 Merge branch 'master' into fix-liquid-frontend-crash 2024-02-03 09:17:53 -08:00
softsimon
9494d2fb0b Merge pull request #4631 from mempool/mononaut/fix-null-err
Fix missing optional chain on bestDescendant access
2024-02-03 21:59:37 +08:00
softsimon
b44ec76130 Merge pull request #4637 from mempool/mononaut/summaries-indexing-error
More robust error handling and logging during summaries indexing
2024-02-03 20:39:09 +08:00
softsimon
dd7bd9e397 Merge pull request #4639 from mempool/mononaut/acc-data-catch
Fix error handling in acceleration data polling
2024-02-02 23:57:41 +08:00
Mononaut
0bf0d79ee4 Fix error handling in acceleration data polling 2024-02-02 15:31:10 +00:00
softsimon
788a8693ee Merge pull request #4523 from jamesblacklock/docker-bugfix
fix bug in backend Docker `start.sh` script
2024-02-02 11:40:45 +08:00
natsee
163c0b6d78 Liquid peg outs address indexing: support for duplicates and minor fixes 2024-02-01 19:29:31 +01:00
natsee
7ab5b2a2b7 Add check for mempoolBlocks length in mempool subscription 2024-02-01 12:13:34 +01:00
nymkappa
f3fd70a846 Merge branch 'master' into nymkappa/mega-branch 2024-01-30 23:17:26 +01:00
James Blacklock
770b6dfd19 Merge branch 'master' into docker-bugfix 2024-01-30 15:50:03 -05:00
Mononaut
db8ba7c938 More robust error handling and logging during summaries indexing 2024-01-30 16:42:55 +00:00
wiz
e4d92c8fe0 Merge pull request #4629 from mempool/wiz/add-new-prod-servers
ops: Add new prod servers for fallback/replication
2024-01-30 10:18:10 -05:00
natsee
1e15428a63 Liquid Audit: fix i18n 2024-01-30 15:11:51 +01:00
natsee
f4de3a44e0 Liquid: Add address column in recent pegs table 2024-01-30 14:25:08 +01:00
natsee
e69ba7e884 Liquid Federation indexing: clean up logging 2024-01-30 11:55:59 +01:00
softsimon
b4906a5e8a Merge pull request #4626 from mempool/mononaut/fix-pool-dominance
Fix pools dominance chart
2024-01-30 17:21:49 +07:00
natsee
73e6045549 Liquid: Add support for peg outs display 2024-01-30 11:11:30 +01:00
dependabot[bot]
5f3f483546 Bump mysql2 from 3.7.0 to 3.9.1 in /backend
Bumps [mysql2](https://github.com/sidorares/node-mysql2) from 3.7.0 to 3.9.1.
- [Release notes](https://github.com/sidorares/node-mysql2/releases)
- [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md)
- [Commits](https://github.com/sidorares/node-mysql2/compare/v3.7.0...v3.9.1)

---
updated-dependencies:
- dependency-name: mysql2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-30 02:07:07 +00:00
Mononaut
ba8ea7d0d1 Handle Redis errors and disconnects 2024-01-30 01:10:36 +00:00
Mononaut
e458196bff Fix missing optional chain on bestDescendant access 2024-01-29 23:15:21 +00:00
Mononaut
2637636f27 Fix pool dominance sorting 2024-01-29 16:59:13 +00:00
natsee
639fc3dd5f Liquid audit: Add recent pegs widget and table 2024-01-29 17:06:25 +01:00
natsee
451a61e5fc Reformat UTXOs widget to Peg Ins widget 2024-01-29 12:22:47 +01:00
nymkappa
b2a130bb17 [doc] fix copy, formatting and hide accelerator doc title if non official instance 2024-01-29 11:45:14 +01:00
natsee
c39ca0270e Fix elements_pegs bitcoinaddress field 2024-01-29 11:36:58 +01:00
natsee
b6e5a059c9 Liquid: minor changes on audit display 2024-01-29 11:06:51 +01:00
hunicus
a3055e20f4 Fix signet and testnet docs pages 2024-01-29 01:57:06 -05:00
wiz
3ac70b3860 ops: Add new prod servers for fallback/replication 2024-01-29 00:05:16 -05:00
natsee
71f73835da Liquid Federation: filter out change UTXOs from table 2024-01-28 21:46:31 +01:00
natsee
59128c8ca0 Audit dashboard: merge utxos and addresses tables in same page 2024-01-28 20:07:41 +01:00
softsimon
08272c7f87 Display pool tags on dashboard 2024-01-29 01:50:46 +07:00
natsee
36d3734d55 Liquid Federation dashboard: minor changes 2024-01-28 18:26:00 +01:00
softsimon
c9c477c88f Merge pull request #4622 from mempool/mononaut/beta-accelerator
Add beta tag to accelerator dashboard nav item
2024-01-28 17:39:51 +07:00
softsimon
8806b8332b Merge pull request #4621 from mempool/mononaut/acceleration-list
Fix acceleration list css, move to /acceleration/list
2024-01-28 17:37:24 +07:00
softsimon
c7a38c78d2 Merge pull request #4619 from mempool/nymkappa/halving-widget
[mining] update halving widget to be more human readable
2024-01-28 17:31:05 +07:00
nymkappa
2d189ca3f6 Merge branch 'master' into nymkappa/halving-widget 2024-01-28 09:50:39 +01:00
softsimon
4b798730b1 Merge pull request #4623 from mempool/mononaut/goggles-index-config
Goggles indexing config & rate limit
2024-01-28 15:24:45 +07:00
Mononaut
bbb0aea0d1 Fix pools dominance chart 2024-01-27 22:25:42 +00:00
nymkappa
57c7df4f1c Merge pull request #4625 from mempool/mononaut/double-time-units
dual-unit app-time halving countdown
2024-01-27 20:25:34 +01:00
Mononaut
87910a6eb7 Display halving countdown with double units 2024-01-27 19:11:43 +00:00
nymkappa
ea1b74dcef [doc] add accelerator rest api documentation 2024-01-27 19:35:16 +01:00
Mononaut
09e38ac177 Goggles indexing config & rate limit 2024-01-27 18:22:58 +00:00
natsee
5b93d39d73 Fix duplicate api call to audit status 2024-01-27 19:19:14 +01:00
Mononaut
4e5ebabc54 Add beta tag to accelerator dashboard tab 2024-01-27 18:03:53 +00:00
Mononaut
a79e1aec1c Fix acceleration list css, move to /acceleration/list 2024-01-27 16:45:18 +00:00
nymkappa
085d40a4e3 Merge branch 'master' into nymkappa/mega-branch 2024-01-27 16:27:25 +01:00
nymkappa
057abbb6c1 [mining] update halving widget to be more human readable 2024-01-27 16:16:32 +01:00
natsee
1a2844ffdf Liquid dashboard: Fix double api call 2024-01-26 20:49:48 +01:00
natsee
7102a72f84 Remove beta tag to Liquid Federation Audit 2024-01-26 19:11:38 +01:00
natsee
87e328504f Liquid: Fix audit updating conditions 2024-01-26 18:52:07 +01:00
softsimon
520e79aec4 Merge pull request #4615 from mempool/mononaut/halvenening
Fix halving fireworks
2024-01-26 23:56:18 +07:00
softsimon
ee6422c982 Merge pull request #4609 from afahrer/master
Channel search results showing up during TX search
2024-01-26 23:43:47 +07:00
wiz
e8ca8e7ec1 ops: Add redis to prod installer 2024-01-26 10:51:44 -05:00
wiz
b110f86b48 ops: Add new nginx hot cacher 2024-01-26 10:43:03 -05:00
wiz
5a7a78cddc ops: Add new nginx hot cacher 2024-01-26 10:40:21 -05:00
wiz
c7862e19c2 ops: Add /api/v1/fees/recommended to warm cache 2024-01-26 10:26:42 -05:00
softsimon
3610908171 Update rust-gbt package lock version 2024-01-26 21:48:21 +07:00
softsimon
87c336734d Merge pull request #4612 from mempool/mononaut/update-rust
Update rust-toolchain to 1.65
2024-01-26 21:45:40 +07:00
hunicus
89d805b500 Merge branch 'master' into hunicus/move-on-in-it 2024-01-26 08:40:40 -05:00
softsimon
bad3992397 Merge pull request #4505 from natsee/fix-overflow-pool-ranking
Fix overflow on mining pool ranking table
2024-01-26 16:13:29 +07:00
nymkappa
edb4c8d9ad Merge branch 'master' into fix-overflow-pool-ranking 2024-01-25 22:33:29 +01:00
nymkappa
565a881f3b Merge branch 'master' into nymkappa/mega-branch 2024-01-25 18:49:13 +01:00
natsee
d1d8f77b29 Fix eslint 2024-01-25 15:56:25 +01:00
natsee
c957692726 Merge branch 'natsee/liquid-federation-audit' into natsee/liquid-audit-dashboard 2024-01-25 15:22:47 +01:00
natsee
16f0830f2c Fix conflict in database-migration 2024-01-25 15:19:46 +01:00
natsee
b6d2008e97 Merge branch 'master' into natsee/liquid-federation-audit 2024-01-25 15:17:51 +01:00
natsee
a6b584d964 Liquid: Federation Audit Dashboard 2024-01-25 15:08:15 +01:00
softsimon
e81d1e273a Merge pull request #4550 from mempool/orangesurf/trademark0103
update trademarks
2024-01-25 15:46:12 +07:00
Mononaut
dbe7ebe530 Fix halving fireworks 2024-01-25 01:51:01 +00:00
Mononaut
4e007acd84 Update rust-toolchain to 1.65 2024-01-24 18:53:59 +00:00
softsimon
4fe745817c Merge pull request #4137 from mempool/mononaut/multi-address-tracking
Multi address tracking
2024-01-24 23:14:00 +07:00
softsimon
09ce1bd458 Merge pull request #4608 from mempool/mononaut/goggle-index-bugfix
Fix version update & error handling in Goggles indexing
2024-01-24 23:08:31 +07:00
Mononaut
09a727c00d Fix more Goggles indexing bugs 2024-01-24 12:18:42 +00:00
afahrer
f7f1eb067b $ match. fix transaction starting with number 2024-01-23 22:56:17 -05:00
afahrer
74d94579f9 Channel search results showing up during TX search 2024-01-23 20:48:49 -05:00
orangesurf
885331fe4a Remove space from footer 2024-01-23 18:34:43 +00:00
Mononaut
8ca2b2b5c0 Fix version update & error handling in Goggles indexing 2024-01-23 17:20:57 +00:00
softsimon
58f143f867 Merge pull request #4605 from mempool/mononaut/goggle-index
Goggle Indexing
2024-01-24 00:16:24 +07:00
softsimon
a19ffb884f Fixing broken info-link 2024-01-24 00:15:10 +07:00
softsimon
2faca121d3 Merge pull request #4526 from mempool/mononaut/mined-goggles
Mined Goggles
2024-01-24 00:13:43 +07:00
softsimon
8f99d2ba58 Merge pull request #4604 from mempool/simon/clear-tx-cache
Clear txCache when switching network
2024-01-23 23:47:40 +07:00
nymkappa
585732e438 Merge branch 'master' into orangesurf/trademark0103 2024-01-23 17:32:58 +01:00
Mononaut
0cddfcfa64 Fix missing quotes on multi-address-tracking error msg 2024-01-23 14:04:15 +00:00
Mononaut
aa0948a154 Add multi-address-tracking limit config 2024-01-23 13:36:42 +00:00
Mononaut
8f7895cb2e Track dropped txs in multi-address subscription 2024-01-23 13:36:42 +00:00
Mononaut
77a526b91c Normalize scriptpubkeys to lowercase 2024-01-23 13:36:42 +00:00
Mononaut
ccd9642a01 Deduplicate address validation code 2024-01-23 13:36:41 +00:00
Mononaut
8642956dc2 Add track-scriptpubkeys websocket subscription 2024-01-23 13:36:41 +00:00
Mononaut
57c3861ca6 Support multi address websocket subscriptions 2024-01-23 13:36:41 +00:00
Mononaut
82920f621f Fix Goggles indexing when summaries disabled 2024-01-23 13:33:59 +00:00
softsimon
de7db08ae3 Merge pull request #4601 from mempool/natsee/seach-bar-liquid-assets
Search bar: suggest Liquid assets
2024-01-23 20:07:06 +07:00
softsimon
431f60d9c0 Use current network name in search result 2024-01-23 18:56:32 +07:00
softsimon
da545dbcf1 Merge branch 'master' into natsee/seach-bar-liquid-assets 2024-01-23 17:14:26 +07:00
natsee
b7feb0d43d Merge branch 'natsee/liquid-federation-audit' into natsee/liquid-audit-dashboard 2024-01-23 09:48:36 +01:00
natsee
cef060be2d Only include count in federation address and UTXO queries 2024-01-23 09:46:15 +01:00
softsimon
c570cc1e73 Merge branch 'master' into simon/clear-tx-cache 2024-01-23 11:20:38 +07:00
softsimon
6339cc8d59 Merge pull request #4597 from mempool/knorrium/cache_assets_gha
Cache build assets to prevent rate limiting
2024-01-23 11:20:06 +07:00
Felipe Knorr Kuhn
fe079a72be Clean up action 2024-01-22 20:06:27 -08:00
Felipe Knorr Kuhn
c789797d2d Revert "Remove the download artifacts step"
This reverts commit 479007da55.
2024-01-22 20:05:20 -08:00
Felipe Knorr Kuhn
479007da55 Remove the download artifacts step 2024-01-22 19:56:45 -08:00
Mononaut
7405cf8336 Add block classification indexing 2024-01-23 01:44:19 +00:00
Felipe Knorr Kuhn
f955c1b0f4 Merge branch 'master' into knorrium/cache_assets_gha 2024-01-22 16:53:19 -08:00
Felipe Knorr Kuhn
99f7201ec5 Cache build assets to prevent rate limiting 2024-01-22 16:51:08 -08:00
Mononaut
0c9c79c86c Enable goggles on supported mined block visualizations 2024-01-22 22:32:19 +00:00
Mononaut
1507003c19 Save goggle flags in audit templates & block summaries 2024-01-22 22:32:18 +00:00
softsimon
5ecdf1988e Clear txCache when switching network
fixes #4603
2024-01-23 01:23:51 +07:00
softsimon
5b622c7786 Merge pull request #4589 from isghe/fix-copyright-2024
about: fix copyright 2024
2024-01-22 22:19:20 +07:00
natsee
392ea35d51 Skeleton audit dashboard 2024-01-22 16:03:55 +01:00
softsimon
552ba98de2 Pull from transifex 2024-01-22 21:30:03 +07:00
softsimon
7a2f8bcce2 Capitalizing title 2024-01-22 21:17:43 +07:00
softsimon
d53b5e4a68 Capitalizing title 2024-01-22 21:16:24 +07:00
softsimon
c2bd6419bb Acceleration i18n fixes 2024-01-22 21:13:41 +07:00
natsee
8f7cd70882 Add throttleTime to avoid too frequent calls to backend 2024-01-22 14:19:01 +01:00
natsee
fa90eb84fc Truncate elements_pegs and add primary key instead of drop/create 2024-01-22 13:59:11 +01:00
natsee
00613fe613 Liquid: suggest asset in search bar results 2024-01-22 11:45:07 +01:00
natsee
0663cc2cfa Fix search bar result overflow 2024-01-22 11:29:41 +01:00
natsee
81a09e9dba Add Liquid Peg-in column to Federation UTXOs list 2024-01-21 13:51:50 +01:00
natsee
cd713c61b3 Liquid: wip on Federation audit dashboard 2024-01-21 13:33:20 +01:00
natsee
752eba767a Liquid: add BTC reserves to L-BTC widget and make it dynamic 2024-01-21 13:19:02 +01:00
natsee
de2842b62a Add pegtxid and pegindex data to federation_txos table 2024-01-21 13:04:34 +01:00
orangesurf
a89af41c48 Update bisq-dashboard.component.ts
Switch from ® to &reg; for better compatibility
2024-01-21 11:20:11 +00:00
orangesurf
c751e10da8 Update seo.service.ts
Switch from ® to &reg; for better compatibility
2024-01-21 11:19:01 +00:00
orangesurf
2750f1789c Update index.ts
Switch from ® to &reg; for better compatibility
2024-01-21 11:17:50 +00:00
orangesurf
aaf378ed42 Update index.liquid.html
Switch from ® to &reg; for better compatibility
2024-01-21 11:15:11 +00:00
orangesurf
bc5e03deb5 Update index.bisq.html
Switch from ® to &reg; for better compatibility
2024-01-21 11:13:55 +00:00
orangesurf
8759d49daf Merge branch 'master' into orangesurf/trademark0103 2024-01-21 10:29:40 +00:00
natsee
4b10e32e73 Liquid: add indexing process of Federation utxos 2024-01-20 15:15:15 +01:00
softsimon
6671746fc5 Fixing i18n build error and extracting new i18n 2024-01-20 20:07:25 +07:00
wiz
10bb6caf97 ops: Fix elements crontab 2024-01-20 07:20:40 -05:00
wiz
b52946e6f5 ops: Fix bitcoin crontab 2024-01-20 07:20:18 -05:00
wiz
aac094b965 ops: Add VA1 nodes to bitcoin.conf peer list 2024-01-20 06:42:46 -05:00
softsimon
8ca14e7f19 Merge pull request #4488 from mempool/simon/acceleration-tab
Acceleration tab
2024-01-19 23:35:23 +07:00
softsimon
84182b2512 Merge pull request #4586 from mempool/mononaut/acceleration-tab-changes
Acceleration tab changes
2024-01-19 23:34:42 +07:00
softsimon
a45e4a6ec5 Merge pull request #4585 from mempool/mononaut/accelerator-dashboard-polish
Accelerator dashboard tweaks
2024-01-19 23:27:33 +07:00
Mononaut
a5eeaaa91a AccDash: label transactions -> request 2024-01-19 14:40:11 +00:00
nymkappa
59e30027a5 Merge branch 'master' into nymkappa/mega-branch 2024-01-19 09:49:00 +01:00
softsimon
7fd8ae375c Asset group title fix 2024-01-19 10:24:04 +07:00
softsimon
9e240e55ce Default Liquid asset child should be /featured 2024-01-19 00:15:51 +07:00
Isidoro Ghezzi
d82a5281fc about: fix copyright 2024
add contributors/isghe.txt

using contributors/wiz.txt as template
2024-01-18 16:56:08 +01:00
nymkappa
8054e2d79a [accelerator] fix success rate stat value 2024-01-18 15:54:04 +01:00
softsimon
af7d437d09 Merge pull request #4584 from mempool/nymkappa/add-internal-routes-to-bitcoin-core
[bitcoin core] Add internal routes to bitcoin core
2024-01-18 20:20:59 +07:00
nymkappa
f6d7790512 [sponsors] allow setting up custom host for the sponsor component 2024-01-18 12:13:52 +01:00
softsimon
e373f36765 Merge pull request #4460 from natsee/lightning-dashboard-ownership
Add % ownership in capacity table (LN dashboard)
2024-01-18 16:41:21 +07:00
nymkappa
8cb49ba8e3 Merge branch 'master' into lightning-dashboard-ownership 2024-01-17 17:42:53 +01:00
Mononaut
d2270ffc26 Move acceleration tab icon, fix responsive issues 2024-01-15 23:39:51 +00:00
Mononaut
5009ca909c AccDash: out-of-band fees -> bid boost 2024-01-15 22:52:42 +00:00
Mononaut
6a189c484a AccDash: accelerated -> pending 2024-01-15 22:34:12 +00:00
nymkappa
ed9826b2d8 [bitcoin core] internal core api from camel case to kebab case 2024-01-15 16:12:58 +01:00
nymkappa
0225455784 Fix merge conflict with 2013dc6d8b 2024-01-15 10:05:37 +01:00
nymkappa
ee721b3e1c Merge branch 'master' into nymkappa/mega-branch 2024-01-15 10:01:38 +01:00
nymkappa
f161f7e8e2 [bitcoin core] fix getMempoolAncestors verbose param 2024-01-15 10:00:01 +01:00
nymkappa
b38bbb9513 [bitcoin core] add missing verbose params to bitcoin core internal routes 2024-01-15 09:59:35 +01:00
nymkappa
f095913538 [bitcoin core] add internal routes to bitcoin core rpc 2024-01-15 09:59:32 +01:00
softsimon
91fad7ff65 Merge pull request #4583 from mempool/mononaut/goggles-inscription-bug
Fix goggles inscription detection bug
2024-01-15 10:25:31 +07:00
Mononaut
00b8f001b0 Fix goggles inscription detection bug 2024-01-15 02:47:29 +00:00
softsimon
73d4ea75de Merge pull request #4543 from natsee/cross-network-address-search
Search bar feature: network based regex and address matches
2024-01-14 18:38:50 +07:00
softsimon
0722c221c7 Minor adjustments 2024-01-14 18:27:30 +07:00
softsimon
693d8c4b3b Merge pull request #4577 from mempool/translations_frontend-src-locale-messages-xlf--master_nb
Updates for file frontend/src/locale/messages.xlf in nb
2024-01-14 10:37:22 +07:00
softsimon
2e5bb000ab Merge pull request #4579 from mempool/knorrium/add_seconds_to_block_list
Add seconds to block timestamp in the mining pool view and blocks list
2024-01-14 10:34:27 +07:00
softsimon
203e2040d7 Merge pull request #4572 from mempool/nymkappa/fix-footer
[footer] fix css
2024-01-14 10:32:49 +07:00
softsimon
a987983413 Merge pull request #4575 from mempool/simon/dashboard-more-skeleton-loaders
Adding dashboard skeleton loaders
2024-01-14 10:08:39 +07:00
softsimon
227c597cb6 Merge pull request #4578 from mempool/knorrium/add_seconds_to_block_view
Add seconds to the block view timestamp
2024-01-14 10:08:03 +07:00
Felipe Knorr Kuhn
a8442a3467 Add seconds to block timestamp in the mining pool view and blocks list 2024-01-13 18:11:13 -08:00
Felipe Knorr Kuhn
65236c7b08 Add seconds to the block view timestamp 2024-01-13 13:55:12 -08:00
transifex-integration[bot]
e4d7034d81 Translate frontend/src/locale/messages.xlf in nb
100% reviewed source file: 'frontend/src/locale/messages.xlf'
on 'nb'.
2024-01-13 16:57:03 +00:00
wiz
2ca6dc51da ops: Increase nginx proxy_read_timeout to 2m 2024-01-13 12:22:38 +09:00
wiz
fdd14fd6dc ops: Disable disk cache for production mainnet 2024-01-13 12:22:23 +09:00
softsimon
cafcb4f9a6 Merge pull request #4576 from mempool/knorrium/cypress_13_6_2
Update Cypress to v13.6.2
2024-01-13 09:08:45 +07:00
Felipe Knorr Kuhn
a06bf86b95 Update Cypress to v13.6.2 2024-01-12 13:06:11 -08:00
nymkappa
5c43c17261 Merge branch 'master' into lightning-dashboard-ownership 2024-01-12 18:45:45 +01:00
natsee
3b8de5057c Check env flags before cross network address search 2024-01-12 18:04:49 +01:00
natsee
0ec40eafb4 Remove hard-coded timestamp for regexes 2024-01-12 17:21:07 +01:00
natsee
9a7e22806d Merge branch 'master' into cross-network-address-search 2024-01-12 17:05:57 +01:00
softsimon
d546f2eba5 Merge pull request #4574 from mempool/dependabot/npm_and_yarn/frontend/follow-redirects-1.15.5
Bump follow-redirects from 1.15.3 to 1.15.5 in /frontend
2024-01-12 22:42:27 +07:00
softsimon
46fdb5b30d Adding dashboard skeleton loaders 2024-01-12 18:08:57 +07:00
dependabot[bot]
a23088458b Bump follow-redirects from 1.15.3 to 1.15.5 in /frontend
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.3 to 1.15.5.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.3...v1.15.5)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-12 10:21:43 +00:00
softsimon
b86b38398e Merge pull request #4558 from mempool/dependabot/npm_and_yarn/frontend/cypress-fail-on-console-error-5.1.0
Bump cypress-fail-on-console-error from 5.0.0 to 5.1.0 in /frontend
2024-01-12 17:20:43 +07:00
softsimon
600cbae739 Merge pull request #4557 from mempool/dependabot/npm_and_yarn/backend/mysql2-3.7.0
Bump mysql2 from 3.6.0 to 3.7.0 in /backend
2024-01-12 17:19:52 +07:00
nymkappa
7f62a0f9b5 [footer] fix css RTL issues 2024-01-12 10:50:41 +01:00
softsimon
978e0bff24 Merge pull request #4534 from natsee/fix-search-result-duplicate-address
Fix duplicate address in search results
2024-01-12 15:43:53 +07:00
softsimon
5291828e6a Merge branch 'master' into fix-search-result-duplicate-address 2024-01-12 15:39:38 +07:00
softsimon
ecb696661e Merge pull request #4570 from mempool/mononaut/sigop-faqs
Add sigop related FAQ entries
2024-01-12 09:54:20 +07:00
softsimon
e9a67adf4f Adding links to FAQ sections from TX page 2024-01-12 09:50:33 +07:00
nymkappa
5389d19850 [footer] fix css 2024-01-11 16:26:09 +01:00
Mononaut
439177a78f Add sigop related FAQ entries 2024-01-10 22:07:01 +00:00
dependabot[bot]
367f70c3b3 Bump mysql2 from 3.6.0 to 3.7.0 in /backend
Bumps [mysql2](https://github.com/sidorares/node-mysql2) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/sidorares/node-mysql2/releases)
- [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md)
- [Commits](https://github.com/sidorares/node-mysql2/compare/v3.6.0...v3.7.0)

---
updated-dependencies:
- dependency-name: mysql2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-10 14:40:20 +00:00
softsimon
6553de53b8 Merge pull request #4566 from mempool/mononaut/rust-clean
Clean rust-gbt directory before build
2024-01-10 21:39:34 +07:00
Mononaut
8336a00aea Clean rust-gbt directory before build 2024-01-10 14:32:37 +00:00
softsimon
f694d5333a Merge pull request #4561 from mempool/mononaut/fix-prices
Fix bad coinbase price url, switch to median prices
2024-01-10 11:21:11 +07:00
softsimon
aad288c0d9 Merge pull request #4554 from mempool/mononaut/unmineable-txs
Handle unmineable transactions in GBT implementations
2024-01-10 00:18:41 +07:00
Mononaut
30d58d9971 Restore GBT result size sanity check 2024-01-09 17:08:25 +00:00
Mononaut
89d37f0058 Fix unmineable tx handling 2024-01-09 16:26:05 +00:00
softsimon
7cd0c4f352 Merge pull request #4530 from natsee/update-docs-api
Add endpoints to docs api
2024-01-09 23:07:02 +07:00
softsimon
7de3d789b3 Merge branch 'master' into update-docs-api 2024-01-09 22:58:16 +07:00
softsimon
f9dfb3b2b1 Merge pull request #4556 from mempool/mononaut/smooth-mempool-blocks
Smooth out irregular mempool block updates
2024-01-09 11:16:25 +07:00
softsimon
17427b7970 Merge pull request #4560 from mempool/mononaut/fee-sanity
Additional fee recommendation sanity checks
2024-01-09 10:41:52 +07:00
softsimon
6da4f34656 Merge pull request #4542 from mempool/mononaut/unsub-track-block
unsubscribe from mempool block tracking
2024-01-09 08:46:15 +07:00
Mononaut
0230f95001 Fix bad coinbase price url, switch to median prices 2024-01-08 22:39:51 +00:00
Mononaut
d5c5ae0e09 Additional fee recommendation sanity checks 2024-01-08 16:33:19 +00:00
Mononaut
fc8eca4c26 Handle stale smoothed mempool block updates 2024-01-08 14:42:00 +00:00
dependabot[bot]
9485dfe2ce Bump cypress-fail-on-console-error from 5.0.0 to 5.1.0 in /frontend
Bumps [cypress-fail-on-console-error](https://github.com/nils-hoyer/cypress-fail-on-console-error) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/nils-hoyer/cypress-fail-on-console-error/releases)
- [Commits](https://github.com/nils-hoyer/cypress-fail-on-console-error/compare/5.0.0...5.1.0)

---
updated-dependencies:
- dependency-name: cypress-fail-on-console-error
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 02:48:43 +00:00
Mononaut
5f66a95402 Smooth out irregular mempool block updates 2024-01-07 18:02:11 +00:00
Mononaut
d665d2a12c Handle unmineable transactions in GBT implementations 2024-01-06 04:20:19 +00:00
James Blacklock
5f1180118a Merge branch 'master' into docker-bugfix 2024-01-04 12:10:31 -05:00
softsimon
f7e7072dbc Merge pull request #4548 from natsee/liquid-missing-featured-route
[Liquid] Fix missing assets/featured route
2024-01-04 17:14:12 +07:00
orangesurf
a0d0650e2a update trademarks 2024-01-03 19:09:59 +01:00
nymkappa
64f6775c68 [database] increase default pool size to 100 connections 2024-01-03 15:12:11 +01:00
natsee
f73350f7d6 [Liquid] Fix missing assets/featured route 2024-01-03 14:21:11 +01:00
natsee
bfdab0ac48 Merge branch 'master' into cross-network-address-search 2024-01-03 13:37:16 +01:00
natsee
b9776263dc Exclude date and timestamp results for non-bitcoin networks 2024-01-03 13:36:33 +01:00
softsimon
56dce6b28c Merge pull request #4527 from natsee/fix-faq-nav-bar-overflow
Fix faq nav bar overflow
2024-01-03 11:28:53 +07:00
Mononaut
c1785993a8 Fix websocket subscription logging 2024-01-02 16:26:57 +00:00
softsimon
0c956be136 Merge pull request #4545 from mempool/simon/block-view-accel-flag-check-fix
Acceleration flag check on block/tx view
2024-01-02 23:18:55 +07:00
softsimon
a498f9205b Fix error on transaction page when acceleration is disabled 2024-01-02 11:25:50 +07:00
softsimon
09041c50ef Acceleration flag check on block view 2024-01-02 10:35:52 +07:00
natsee
dd31d5a665 Fix E2E error: change regex address minimum length 2024-01-01 14:52:02 +01:00
natsee
3e1b85e32c Add search addresses from cross networks feature 2024-01-01 13:54:37 +01:00
Mononaut
51bfffbf0e unsubscribe from mempool block tracking 2024-01-01 12:01:53 +00:00
wiz
9b6e60bfba ops: Add production/redis.conf 2024-01-01 08:03:34 +09:00
wiz
8492007a48 Merge pull request #4541 from mempool/mononaut/optimize-new-block-ws
Optimize websocket updates on new block
2024-01-01 07:48:35 +09:00
natsee
bd34d71d8b Update regexes in regex.utils.ts 2023-12-31 23:46:06 +01:00
Mononaut
23ececca95 Optimize websocket updates on new block 2023-12-31 18:07:39 +00:00
wiz
fb61fddcc4 Merge pull request #4512 from mempool/simon/acceleration-sounds
Acceleration sounds
2023-12-31 04:22:33 +09:00
wiz
24ec12e7a1 Merge pull request #4517 from mempool/orangesurf/goggles
Mempool Goggles™
2023-12-31 04:22:17 +09:00
wiz
681f9a1c69 ops: Enable redis for production mainnet 2023-12-31 03:39:23 +09:00
wiz
fab82551cf Remove old GPLv3 license file, rename AGPLv3 license to COPYING 2023-12-31 03:22:14 +09:00
natsee
6cea6ceb7e Merge branch 'upstream/master' into search-bar-network-regex 2023-12-30 19:18:49 +01:00
softsimon
118eef6f0c Merge pull request #4537 from mempool/mononaut/acc-preview-highlight
Highlight accelerations in block previews & non-audit mode
2023-12-30 10:39:57 +07:00
softsimon
626f95d802 Merge pull request #4521 from mempool/mononaut/responsive-acceleration-dash
Fix widget responsiveness on acceleration dashboard
2023-12-29 23:29:56 +07:00
Mononaut
ab3ce5ece0 Highlight accelerations in blocks in previews & non-audit mode 2023-12-29 14:13:13 +00:00
natsee
d2a5adbd9d Fix duplicate address field in search results 2023-12-28 15:34:36 +01:00
natsee
93b074edf0 Add endpoints to docs api 2023-12-27 18:50:41 +01:00
softsimon
577b1a9f66 Merge pull request #4525 from mempool/mononaut/nogl-fee-chart
Fix missing mempool fee chart when webgl disabled
2023-12-27 13:15:35 +07:00
softsimon
d9c28643f4 Merge pull request #4091 from dni/dni-patch-1
Update liquid-master-page.component.html
2023-12-27 13:11:34 +07:00
James Blacklock
3f305207f9 Merge branch 'master' into docker-bugfix 2023-12-25 03:27:26 -05:00
softsimon
2fb3e4e4e5 Merge pull request #4516 from natsee/toggle-expand-rbf-history
Expand toggle for RBF history view
2023-12-23 15:19:19 +07:00
natsee
40f2d553e2 Fix faq nav bar overflow 2023-12-22 10:39:40 +01:00
James Blacklock
8e9a187a15 Merge branch 'master' into docker-bugfix 2023-12-21 13:02:25 -05:00
Mononaut
0370cc896c Fix missing mempool fee chart when webgl disabled 2023-12-21 13:06:52 +00:00
softsimon
d6291ecd52 Merge pull request #4519 from Start9Labs/update/start9
update startOS info
2023-12-21 15:22:49 +07:00
softsimon
9d82926d6f Merge pull request #4518 from pedromvpg/master
Dot the i's on liquid logo
2023-12-21 15:20:46 +07:00
James Blacklock
cd964d37e8 fix bug in backend Docker start.sh script 2023-12-20 17:03:06 -05:00
James Blacklock
ec4c418c22 sign contributor agreement 2023-12-20 17:02:12 -05:00
wiz
07f9410d45 ops: Fix elements unix socket path 2023-12-21 05:05:59 +09:00
Mononaut
c3675d5b1c Fix widget responsiveness on acceleration dashboard 2023-12-20 18:30:19 +00:00
natsee
f471541907 Fix fade out on RBF history 2023-12-20 16:30:15 +01:00
Matt Hill
4f3852bbba One more 2023-12-19 21:49:52 -07:00
Matt Hill
fc36e04dc0 update start9 os and icon 2023-12-19 08:20:21 -07:00
natsee
7f488f5b01 Fade out the bottom of collapsed rbf history 2023-12-19 14:40:37 +01:00
softsimon
1d74a99d2f Update frontend/src/app/components/transaction/transaction.component.ts
Co-authored-by: mononaut <83316221+mononaut@users.noreply.github.com>
2023-12-19 13:17:26 +07:00
Pedro
bd07773b8d Dot the i's on liquid logo 2023-12-18 12:05:05 +00:00
orangesurf
59f8a7199c Fix space 2023-12-18 09:35:14 +00:00
orangesurf
03b78015ba Remove redundant semicolons 2023-12-18 09:22:28 +00:00
orangesurf
f72683dc19 Add Mempool Goggles TM 2023-12-18 09:18:55 +00:00
natsee
75b3bc6249 Expand toggle for RBF history view 2023-12-17 20:26:34 +01:00
softsimon
f915ff3f91 Merge pull request #4487 from mempool/nymkappa/hashrate-indexing-message
[mining] show proper message when we have less than 2 weeks worth of mining pool hashrate data
2023-12-17 21:33:18 +07:00
softsimon
01131360c2 Merge branch 'master' into nymkappa/hashrate-indexing-message 2023-12-17 21:31:59 +07:00
softsimon
30da419fb4 Merge pull request #4515 from mempool/mononaut/faster-goggles
Faster goggles
2023-12-17 18:44:39 +07:00
softsimon
e8c48f6f23 Merge branch 'master' into mononaut/faster-goggles 2023-12-17 18:08:41 +07:00
softsimon
ca7167870a Merge pull request #4510 from mempool/mononaut/smooth-goggle-transition
Smoother goggles color change transition
2023-12-17 18:08:28 +07:00
softsimon
7bdb2f41a5 Merge branch 'master' into mononaut/smooth-goggle-transition 2023-12-17 18:06:54 +07:00
softsimon
3e505d37c9 Merge pull request #4506 from mempool/mononaut/goggles
Mempool Goggles icon, tooltip, FAQ
2023-12-17 18:06:26 +07:00
Mononaut
78857102f8 Move goggles icon inside generic svg-images component 2023-12-17 10:57:00 +00:00
Mononaut
8dbf879c37 Add Goggles FAQ entry 2023-12-17 10:56:42 +00:00
Mononaut
bc89fd5b7c Goggles icon, beta tag and info tooltip 2023-12-17 10:56:42 +00:00
Mononaut
a8fd2ac9dc Preserve tx replacement flag 2023-12-17 10:45:26 +00:00
Mononaut
c2f52ac1f3 Avoid repeated tx classification work 2023-12-17 09:57:15 +00:00
softsimon
472a86ffd4 Merge pull request #4391 from 0xBEEFCAF3/patch-1
fix: incorrect `HTTP_PORT` docker compose field in docker README.md
2023-12-17 16:55:13 +07:00
softsimon
21ad37dbec Merge pull request #4143 from mempool/hunicus/readme-enterprise
Add links to enterprise page in readmes
2023-12-17 11:37:36 +07:00
softsimon
10a50ac49f Merge pull request #3794 from mempool/mononaut/liquid-default-block-weight
Restore liquid max block weight to defaults
2023-12-17 11:36:36 +07:00
softsimon
b49e01bf64 Merge pull request #4502 from natsee/bugfix-search-block-number
Search result: do not offer "Go to" if block height > chain tip
2023-12-17 10:50:10 +07:00
softsimon
cc54538937 Merge pull request #4508 from natsee/show-clipboard-blockhash
Show blockhash copy button in block component
2023-12-17 10:22:45 +07:00
softsimon
6014469513 Acceleration sounds 2023-12-15 23:09:24 +07:00
nymkappa
9e88f5ecf8 [typo] platinium -> platinum 2023-12-15 16:58:10 +01:00
nymkappa
041f4f6695 Merge branch 'nymkappa/remove-services-version' into nymkappa/mega-branch 2023-12-15 16:16:12 +01:00
nymkappa
70ca75ac12 Merge branch 'nymkappa/subscription-tag' into nymkappa/mega-branch 2023-12-15 16:16:06 +01:00
Mononaut
b3a68a0db2 Smoother goggles color change transition 2023-12-15 15:05:43 +00:00
wiz
99b57bbec0 Merge pull request #4497 from mempool/simon/acceleration-preview-loader
Acceleration preview loader
2023-12-15 23:39:58 +09:00
natsee
eae044cf66 Show blockhash copy button in block component 2023-12-15 15:38:02 +01:00
nymkappa
8238edb721 [menu] show og rank and active subscription in menu 2023-12-15 14:48:17 +01:00
natsee
0ac0a56ae5 Fix overflow on mining pool ranking table 2023-12-15 12:22:08 +01:00
orangesurf
445d600633 Changes following feedback 2023-12-15 10:37:16 +00:00
wiz
e4751a8274 Merge pull request #4503 from mempool/orangesurf/trademark-updates-2 2023-12-15 19:16:46 +09:00
orangesurf
100936e551 Changes following feedback 2023-12-15 10:04:04 +00:00
softsimon
acff9782cb Merge pull request #4501 from takuabonn/bugfix/4475
update to use cachedRequest
2023-12-15 14:15:07 +07:00
softsimon
b9c60b0820 Merge pull request #4500 from mempool/mononaut/block-viz-filters
Projected block filters
2023-12-15 09:04:19 +07:00
Mononaut
2e531413fa Disable filter UI on mined blocks 2023-12-14 18:09:04 +00:00
natsee
3eb6241c98 Delete variables and use observables in top nodes components 2023-12-14 16:09:54 +01:00
Mononaut
16b9ca6c40 Fix CI unit test circular dependency 2023-12-14 13:30:19 +00:00
natsee
b0c02b16ff Search result: do not offer Go to block 2023-12-14 12:49:11 +01:00
Mononaut
512589dc79 Add fake pubkey filter 2023-12-14 11:29:44 +00:00
natsee
464cffb5c1 Add LN statistics interface 2023-12-14 12:22:00 +01:00
Mononaut
ce195c9133 Fix ECDSA DER signature detection 2023-12-13 16:15:55 +00:00
takuabonn
1fb3de9dc3 update contributors 2023-12-14 01:10:28 +09:00
takuabonn
7cb58ed988 update to use cachedRequest 2023-12-14 00:47:11 +09:00
natsee
97053ab5cf Update contributor agreement file 2023-12-13 15:13:01 +01:00
ncois
39c5792e6f Include % ownership in statistics table on LN dashboard and on ranking pages 2023-12-13 15:08:34 +01:00
Mononaut
c019355c9f Adapt block filter UI for small screens 2023-12-13 11:29:10 +00:00
Mononaut
5777561744 Tidy up block filter code, disable multisig flag 2023-12-13 11:04:45 +00:00
Mononaut
24dbe5d4ee Add block viz filter UI 2023-12-13 11:00:49 +00:00
Mononaut
e12f43e741 Add sighash filter flags 2023-12-13 10:59:56 +00:00
Mononaut
173bc127cb Block viz filters proof of concept 2023-12-13 10:59:56 +00:00
wiz
14e440da6b Merge pull request #4499 from mempool/wiz/license-change-agpl-only
Change dual-licensed GPLv3/AGPLv3 to AGPLv3 only
2023-12-13 19:36:52 +09:00
wiz
93c61f5ed3 Change dual-licensed GPLv3/AGPLv3 to AGPLv3 only 2023-12-13 17:46:51 +09:00
wiz
7a77e86ab2 Merge pull request #4485 from mempool/orangesurf/trademark-updates
Add latest registered trademark information
2023-12-13 17:42:01 +09:00
nymkappa
2013dc6d8b [refactoring] move servics related api calls to its own service 2023-12-12 17:24:58 +01:00
softsimon
d3f7190b7f Acceleration preview loader 2023-12-12 20:49:08 +07:00
nymkappa
590188fe6d [footer] remove services version number 2023-12-12 09:17:46 +01:00
nymkappa
38479db5ca Merge branch 'master' into nymkappa/twitter-handle 2023-12-12 09:10:38 +01:00
nymkappa
ed215aa4cd [menu] only add space after @ username if username already contains @ 2023-12-12 09:07:27 +01:00
wiz
df55497747 Merge branch 'master' into orangesurf/trademark-updates 2023-12-12 15:50:56 +09:00
softsimon
6d5a723ff4 Merge pull request #4491 from mempool/dependabot/github_actions/dtolnay/rust-toolchain-be73d7920c329f220ce78e0234b8f96b7ae60248
Bump dtolnay/rust-toolchain from f361669954a8ecfc00a3443f35f9ac8e610ffc06 to be73d7920c329f220ce78e0234b8f96b7ae60248
2023-12-12 09:11:58 +07:00
orangesurf
9f6f210c38 Merge branch 'master' into orangesurf/trademark-updates 2023-12-11 16:43:45 +00:00
orangesurf
cb1d9753c8 Changes following feedback 2023-12-11 15:26:17 +00:00
dependabot[bot]
05259e9f81 Bump dtolnay/rust-toolchain
Bumps [dtolnay/rust-toolchain](https://github.com/dtolnay/rust-toolchain) from f361669954a8ecfc00a3443f35f9ac8e610ffc06 to be73d7920c329f220ce78e0234b8f96b7ae60248.
- [Release notes](https://github.com/dtolnay/rust-toolchain/releases)
- [Commits](f361669954...be73d7920c)

---
updated-dependencies:
- dependency-name: dtolnay/rust-toolchain
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-11 02:42:17 +00:00
softsimon
e5df1571da Acceleration tab 2023-12-09 22:33:02 +07:00
Armin Sabouri
88d2a3a50d sign CLA for 0xBEEFCAF3 2023-12-08 17:25:02 -05:00
Armin Sabouri
a4810b8be0 fix: incorrect HTTP_PORT docker compose field in docker README.md
The override is [BACKEND_HTTP_PORT defined here](59c513f2a5/docker/backend/start.sh (L7))
2023-12-08 17:25:02 -05:00
nymkappa
5ac432556b [mining] show proper message when we have less than 2 weeks worth of mining pool hashrate data 2023-12-08 17:00:36 +01:00
softsimon
f03acce324 Merge pull request #4483 from TechMiX/hotfix/rtlIssues
fix: RTL issues related to sidenav and global footer
2023-12-08 21:21:57 +07:00
wiz
aff8f2c41f Merge branch 'master' into hotfix/rtlIssues 2023-12-08 23:16:59 +09:00
wiz
88f617611f Merge pull request #4220 from mempool/mononaut/accelerator-dashboard
Accelerator dashboard
2023-12-08 22:26:54 +09:00
Mononaut
2cddc5fdd8 accelerations: not yet 2023-12-08 13:23:51 +00:00
orangesurf
d38381af8b Changes following feedback 2023-12-08 13:08:43 +00:00
Mononaut
aff44d90d5 Rerefactor acceleration dashboard 2023-12-08 13:08:16 +00:00
Mononaut
42f6f0c122 Redesign accelerator dashboard 2023-12-08 13:08:16 +00:00
Mononaut
8599876b26 Refactor accelerator dashboard 2023-12-08 13:08:16 +00:00
Mononaut
e34ee3a34d Fix rebase issues 2023-12-08 13:08:15 +00:00
Mononaut
47de84f03a Accelerator dashboard widget titles: latest -> recent 2023-12-08 13:08:15 +00:00
Mononaut
f071d5e76a Accelerator dashboard fix success criteria 2023-12-08 13:08:15 +00:00
Mononaut
5a55ba2d28 Accelerator dashboard pending widget, fee delta fiat values 2023-12-08 13:08:15 +00:00
Mononaut
2efd474357 Fix accelerator dashboard widget page link css 2023-12-08 13:08:15 +00:00
Mononaut
472a76560f Tidy acceleration dashboard, add missing fields 2023-12-08 13:08:14 +00:00
Mononaut
f26b630aab Fix acceleration dashboard merge issues 2023-12-08 13:08:14 +00:00
Mononaut
b0e73466fa Show mining blockchain blocks on accelerator dashboard 2023-12-08 13:08:14 +00:00
Mononaut
7019e6ec03 Add acceleration fees graph 2023-12-08 13:08:14 +00:00
Mononaut
f409c67125 update acceleration dashboard to match actual API format 2023-12-08 13:08:13 +00:00
Mononaut
6cf40489e5 tidy up acceleration dashboard 2023-12-08 13:08:13 +00:00
Mononaut
14ad0c8ecb Add more acceleration stats 2023-12-08 13:08:13 +00:00
Mononaut
f86645b50c Add latest block accelerations list 2023-12-08 13:08:13 +00:00
Mononaut
f23bcec10d Add acceleration fees graph 2023-12-08 13:08:13 +00:00
Mononaut
6f97a2ef74 Add accelerator dashboard 2023-12-08 13:08:13 +00:00
Mononaut
42a3a380d5 widgetify block fee rates chart 2023-12-08 13:08:12 +00:00
TechMiX
bbcc683a3c fix: use empty sidenav when service is disabled 2023-12-08 14:06:34 +01:00
TechMiX
9406103ed1 fix: adjust the blockchain container with menu in rtl mode 2023-12-07 22:49:51 +01:00
TechMiX
dc06387347 fix: rtl issues related to sidenav and global footer 2023-12-07 20:52:11 +01:00
orangesurf
5a2da751fa Remove TM & R from logo names 2023-12-07 09:55:12 +00:00
orangesurf
83db6f6428 Update License, about page and trademark policy with new registered trademarks 2023-12-07 09:28:36 +00:00
wiz
4169e1053f Merge pull request #4482 from mempool/mononaut/fix-negative-accel-rate
Fix negative accelerated fee rate, simplify fee rate table
2023-12-07 01:50:12 +09:00
wiz
a46e779d0c Merge branch 'master' into mononaut/fix-negative-accel-rate 2023-12-06 23:56:12 +09:00
Mononaut
51102004bb Fix negative accelerated fee rate, simplify fee rate table 2023-12-06 14:50:26 +00:00
wiz
08e9142d57 Merge pull request #4481 from mempool/mononaut/improve-acceleration-tracking
Improve acceleration tracking
2023-12-06 22:42:00 +09:00
Mononaut
b7c4cd43fc Better error handling for accelerations update request 2023-12-06 12:09:46 +00:00
Mononaut
08a35b85a8 Fix current accelerations update race condition 2023-12-06 12:09:28 +00:00
wiz
51a28b2e01 Merge pull request #4480 from mempool/mononaut/mined-acceleration-info
Show accelerated fee rates for mined transactions
2023-12-05 23:00:15 +09:00
Mononaut
966adf5963 Show accelerated fee rates on mined tx pages 2023-12-05 13:48:38 +00:00
wiz
ae7b17c4fd Merge pull request #4478 from mempool/mononaut/accelerated-badge
Accelerated tx audit badge
2023-12-05 17:36:52 +09:00
Mononaut
5b4bc9fe19 Accelerated tx audit badge 2023-12-05 08:33:57 +00:00
wiz
89eb7ec90b ops: Enable accelerator in production config 2023-12-05 05:29:18 +09:00
wiz
a646c5f22f Merge pull request #4390 from ncois/tooltip-overflow-bug
Fix tooltip overflow by increasing width
2023-12-04 23:44:44 +09:00
wiz
c345f2164b Merge pull request #4462 from ncois/search-block-datetime
Search a block by date and timestamp
2023-12-04 23:44:19 +09:00
wiz
9791ee018d Merge pull request #4466 from ncois/pool-hashrate-format
Pool chart hashrate format in power of ten
2023-12-04 23:44:06 +09:00
wiz
7c83b85e3e Merge pull request #4476 from mempool/nymkappa/fix-waitlist-message
[accel preview] only show waitlist message if logged in
2023-12-04 23:43:50 +09:00
nymkappa
63942af720 wait list -> waitlist @softsimon 2023-12-04 23:30:22 +09:00
nymkappa
4da5910e0b [accel preview] only show waitlist message if logged in 2023-12-04 23:23:51 +09:00
wiz
025788e78c Merge pull request #4471 from mempool/nymkappa/fix-one-bug-add-two-more
Various fixes and improvements
2023-12-04 22:51:41 +09:00
nymkappa
88a9524064 Merge branch 'master' into pool-hashrate-format 2023-12-04 21:34:43 +09:00
ncois
c216e849e6 Add more precision to hashrate graphs 2023-12-04 09:56:56 +01:00
nymkappa
c86768edc9 [about] fix merge conflict #4425 2023-12-04 16:59:29 +09:00
nymkappa
4283d30ce0 Merge branch 'master' into search-block-datetime 2023-12-04 13:09:58 +09:00
nymkappa
e2eeaebfc7 Merge branch 'master' into nymkappa/fix-one-bug-add-two-more 2023-12-04 10:47:49 +09:00
softsimon
90d87aaaca Merge pull request #4472 from mempool/simon/upgrading-fontawesome
Upgrading fontawesome
2023-12-03 18:17:33 +09:00
softsimon
b2e9275ad9 Upgrading fontawesome 2023-12-03 17:34:31 +09:00
nymkappa
181e816c1a Merge branch 'nymkappa/about-page-empty-anchor' into nymkappa/fix-one-bug-add-two-more 2023-12-03 15:17:04 +09:00
softsimon
758ca4e93a Merge pull request #4233 from mempool/hunicus/enterprise-abs
Make enterprise links not relative
2023-12-03 14:09:25 +09:00
softsimon
a33f915c7a Merge pull request #4438 from mempool/mononaut/refactor-difficulty-reindexing
Refactor difficulty reindexing to process blocks in height order
2023-12-03 13:15:01 +09:00
softsimon
75c6d006ff Merge pull request #4433 from mempool/mononaut/dismiss-acceleration-preview
Make the acceleration preview dismissable
2023-12-02 18:19:46 +09:00
softsimon
1fe983a299 Merge pull request #4468 from mempool/mononaut/fix-liquid-fee-rounding
Fix liquid recommended fee rounding
2023-12-02 15:05:13 +09:00
Mononaut
cd8e3e2604 Fix liquid fee rounding 2023-12-02 03:20:09 +00:00
wiz
dfc4309d9e Merge pull request #4465 from mempool/mononaut/fix-liquid-minfee
Fix Liquid minfee defaults
2023-12-01 21:52:25 +09:00
ncois
0a70273456 Pool chart: show power of ten of hashrate on desktop 2023-12-01 12:57:30 +01:00
softsimon
62c9a88235 Merge pull request #4448 from mempool/nymkappa/accel-preview-logged-in
[accelerator] show wait list message in preview when logged in with no access
2023-12-01 18:37:05 +09:00
Mononaut
851e07b50b Fix liquid minfee defaults 2023-12-01 18:12:59 +09:00
wiz
e1bbec074b Merge pull request #4457 from mempool/mononaut/matomo-path
matomo path
2023-12-01 17:54:06 +09:00
Mononaut
9fcafeeeb0 Switch to toggle-style acceleration dismiss button 2023-12-01 14:55:19 +09:00
Mononaut
e986cfd30b Make the acceleration preview dismissable 2023-12-01 14:21:05 +09:00
ncois
2584a1f2b0 Add date and timestamp search option 2023-11-30 20:05:25 +01:00
softsimon
1c92394563 Merge pull request #4449 from mempool/nymkappa/translation-typo
Fix some SEO strings
2023-11-30 18:33:05 +09:00
softsimon
36398ca57a Updating messages.xlf 2023-11-30 18:29:06 +09:00
softsimon
6b978f9262 Merge pull request #3706 from mempool/mononaut/reconnect-dead-websocket
reconnect websocket after closed by server
2023-11-30 18:26:18 +09:00
softsimon
12cf130c00 Merge branch 'master' into mononaut/reconnect-dead-websocket 2023-11-30 17:57:19 +09:00
softsimon
ba933a81c3 Merge pull request #3704 from mempool/mononaut/handle-websocket-errors
Disconnect websocket clients on error
2023-11-30 17:56:58 +09:00
Mononaut
7de7081d67 matomo path 2023-11-30 17:35:26 +09:00
nymkappa
6b933c202f Update nodes-rankings-dashboard.component.ts 2023-11-30 17:22:22 +09:00
softsimon
f1525b7df5 Merge pull request #4445 from mempool/dependabot/npm_and_yarn/frontend/fortawesome/fontawesome-svg-core-6.5.0
Bump @fortawesome/fontawesome-svg-core from 6.4.0 to 6.5.0 in /frontend
2023-11-30 17:05:19 +09:00
wiz
62c4af1a0c Merge pull request #4455 from mempool/mononaut/fix-matomo-fix
Fix matomo again
2023-11-30 15:49:00 +09:00
Mononaut
4ac98bc483 Fix matomo again 2023-11-30 15:46:58 +09:00
softsimon
ed07daebca Merge branch 'master' into mononaut/handle-websocket-errors 2023-11-30 15:18:16 +09:00
wiz
f8bbf7783c Merge pull request #4443 from mempool/nymkappa/debug-add-context
[log] create more general error
2023-11-30 14:53:51 +09:00
softsimon
fac2fab16a Merge pull request #4437 from mempool/simon/remove-audit-beta
Remove block audit beta-tag
2023-11-30 14:50:57 +09:00
wiz
76de4e34d8 Merge pull request #4425 from mempool/mononaut/fix-matomo
fix matomo bug
2023-11-30 14:40:26 +09:00
softsimon
6109f25aa9 Merge pull request #4452 from ncois/tx-ui-overflow
Fix overflow on transaction page
2023-11-30 14:36:15 +09:00
softsimon
86303175e9 Merge pull request #4451 from ncois/format-difficulty-chart
Difficulty adjustment chart: format the hashrate and difficulty
2023-11-30 14:27:39 +09:00
nymkappa
a670131f40 Merge branch 'master' into tooltip-overflow-bug 2023-11-30 11:54:16 +09:00
ncois
c5ce3167f3 Fix overflow on transaction page 2023-11-29 15:27:45 +01:00
ncois
9913254a5c Difficulty value: remove rounding 2023-11-29 11:16:48 +01:00
ncois
fbb4ba39c2 Mining chart: show hashrate power of ten on desktop 2023-11-29 11:08:38 +01:00
nymkappa
22bf0fe928 Re-apply fix from https://github.com/mempool/mempool/pull/4419/files#diff-9daf43654b4e0bb2c925b6396c6e3a7e1b117bd854fe9c46290f025bfe0a762eR285 2023-11-29 18:03:23 +09:00
nymkappa
3b30765070 Revert unnecessary changes 2023-11-29 18:00:07 +09:00
nymkappa
63fde7d0b6 Merge branch 'master' into nymkappa/about-page-sponsors-component 2023-11-29 17:57:54 +09:00
softsimon
cf338970bf Merge pull request #4450 from mempool/translations_frontend-src-locale-messages-xlf--master_fr
Updates for file frontend/src/locale/messages.xlf in fr
2023-11-29 16:35:27 +09:00
Mononaut
08e046ea2a fix matomo bug 2023-11-29 16:17:07 +09:00
transifex-integration[bot]
5697710c23 Translate frontend/src/locale/messages.xlf in fr
100% reviewed source file: 'frontend/src/locale/messages.xlf'
on 'fr'.
2023-11-29 07:00:03 +00:00
nymkappa
b9e050e24b Fix small typo in lightning node ranking dashboard seo 2023-11-29 15:59:15 +09:00
nymkappa
ff819673e5 Fix "and" chain in lightning dashboard seo 2023-11-29 15:56:35 +09:00
nymkappa
2e2801a4ab Add missing txid in seo tx preview 2023-11-29 15:51:35 +09:00
nymkappa
f52b17ca7a Add missing space in seo address preview 2023-11-29 15:28:14 +09:00
softsimon
3d25235705 Merge pull request #4439 from mempool/mononaut/fix-ln-search-suggestions
Fix spurious ln channel typeahead matches
2023-11-29 15:24:34 +09:00
nymkappa
2cbc6783a4 [accelerator] show wait list message in preview when logged in with no access 2023-11-29 15:02:48 +09:00
dependabot[bot]
406bf5d3b7 Bump @fortawesome/fontawesome-svg-core from 6.4.0 to 6.5.0 in /frontend
Bumps [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) from 6.4.0 to 6.5.0.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.4.0...6.5.0)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-svg-core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-29 02:48:50 +00:00
nymkappa
f5bf883de9 [about] fix auto scroll to chad/whale 2023-11-28 18:05:18 +09:00
nymkappa
c06cade1ca [log] create more general error 2023-11-28 17:13:52 +09:00
softsimon
c23a872887 Updating german i18n 2023-11-28 14:42:25 +09:00
softsimon
cd5a51098b Merge pull request #4419 from mempool/nymkappa/fix-about-page-ctas
[about page] fix wrapping perk
2023-11-26 18:24:58 +09:00
Mononaut
0b449347c1 Fix spurious ln channel typeahead matches 2023-11-26 09:22:44 +00:00
softsimon
d3f8876818 Merge pull request #4424 from mempool/nymkappa/channel-map-larger
[lightning] enlarge channel map
2023-11-26 18:09:31 +09:00
softsimon
d2da81e039 Remove block audit beta-tag 2023-11-26 17:21:13 +09:00
Mononaut
66d88abdc5 Refactor difficulty reindexing to process blocks in height order 2023-11-26 08:17:30 +00:00
softsimon
be2b9a9c2e Merge pull request #4436 from mempool/simon/pull-from-transifex-11-25
Pull from transifex 11/25
2023-11-26 17:01:10 +09:00
softsimon
63ba273dbe Pull from transifex 11/25 2023-11-26 17:00:46 +09:00
softsimon
8ae4c75c1a Fixing one last i18n string 2023-11-26 16:59:45 +09:00
softsimon
1cece1037a Disclaimer i18n fix 2023-11-26 16:29:20 +09:00
softsimon
478873302c Merging another duplicate i18n string 2023-11-26 16:20:57 +09:00
softsimon
3cff01b21e Merging another duplicate i18n string 2023-11-26 16:20:46 +09:00
softsimon
f67848b043 Merging another duplicate i18n string 2023-11-26 16:10:18 +09:00
softsimon
f0c88ff6cc Fix duplicate recent block i18n 2023-11-26 16:03:53 +09:00
softsimon
da5adc3e4e Merge pull request #4435 from mempool/simon/more-i18n-fixes3
More i18n fixes (3)
2023-11-26 15:49:02 +09:00
softsimon
bebd2ea028 More i18n fixes (3) 2023-11-26 15:48:44 +09:00
softsimon
e7e25e1632 Merge pull request #4432 from mempool/simon/more-i18n-fixes-etc
RBF i18n fixes
2023-11-25 20:46:19 +09:00
softsimon
c4130fd5b9 RBF i18n fixes 2023-11-25 20:45:59 +09:00
softsimon
dcad18b297 Merge pull request #4431 from mempool/simon/seo-description-fixes
Fixing titles and merging more i18n duplicates
2023-11-25 20:31:56 +09:00
softsimon
d380aad98c Fixing titles and merging more i18n duplicates 2023-11-25 20:31:29 +09:00
Mononaut
85c9c79699 reconnect websocket after closed by server 2023-11-25 11:25:07 +00:00
softsimon
107e0be59f Merge pull request #4428 from mempool/simon/i18n-fixes-231125
Updating and correcting i18n strings
2023-11-25 18:12:17 +09:00
softsimon
e654170d0b Updating and correcting i18n strings 2023-11-25 18:05:08 +09:00
Mononaut
652100f774 More verbose websocket error logs 2023-11-25 09:02:27 +00:00
Mononaut
0f04f751e1 Disconnect websocket clients on error 2023-11-25 08:27:17 +00:00
wiz
d3055dab54 Merge pull request #4157 from mempool/hunicus/bimi-svg
Add bimi svg
2023-11-25 16:29:29 +09:00
ncois
643402c046 Merge branch 'mempool:master' into tooltip-overflow-bug 2023-11-24 13:28:42 +01:00
nymkappa
e95d5a7982 [lightning] enlarge channel map 2023-11-24 18:14:16 +09:00
nymkappa
3103ef15e5 [about page] move CTA sponsors box into a sub component 2023-11-24 11:13:12 +09:00
wiz
5d5e9e8219 Legal: update Privacy Policy 20231123 2023-11-23 22:23:06 +09:00
wiz
99fd4500e4 Fix broken sponsor links on About page 2023-11-23 21:50:27 +09:00
nymkappa
69081ed647 [about page] fix wrapping perk 2023-11-23 21:07:21 +09:00
softsimon
c8bcd4f04f Merge pull request #4415 from mempool/nymkappa/fix-css-testnet
[ui] only load empty sidebar in foss mainnet
2023-11-23 18:56:43 +09:00
nymkappa
7f4fd83ad2 [ui] fix testnets padding 2023-11-23 18:40:25 +09:00
softsimon
70722dfc9c Merge pull request #4414 from mempool/nymkappa/fix-waitlist-message-preview
[accelerator] fix preview UX on mobile when there is an error/warning
2023-11-23 17:42:19 +09:00
softsimon
407b4c53a6 Merge pull request #4403 from mempool/mononaut/empty-mempool-block-health
Fix health score when mempool was empty
2023-11-23 17:25:06 +09:00
nymkappa
c11551de7b [accelerator] fix preview UX on mobile when there is an error/warning 2023-11-23 17:00:57 +09:00
softsimon
2d5964b81e Merge pull request #4413 from mempool/nymkappa/polish-accel-preview
[accelerator] small align tweak
2023-11-23 15:51:07 +09:00
nymkappa
98e3c7b9cf [accelerator] small align tweak 2023-11-23 15:47:28 +09:00
softsimon
2de57a8074 Merge pull request #4412 from mempool/nymkappa/polish-accel-preview
[accelerator] fix preview text wrap not working on safari/firefox + polish accelerator preview
2023-11-23 15:39:24 +09:00
nymkappa
8badacf123 [accelerator] fix preview text wrap not working on safari/firefox
[accelerator] polish accelerator preview
2023-11-23 14:54:50 +09:00
softsimon
40b387a1e0 Merge pull request #4411 from mempool/nymkappa/fix-menu-css
[menu] force background color when menu is open
2023-11-23 13:31:11 +09:00
nymkappa
e5d2788736 [menu] force background color when menu is open 2023-11-23 10:45:16 +09:00
ncois
f57436f511 Merge branch 'master' into tooltip-overflow-bug 2023-11-22 12:14:03 +01:00
Mononaut
75cc844676 actually fix empty mempool health score 2023-11-22 19:53:22 +09:00
wiz
5d05dd7089 Merge pull request #4410 from mempool/simon/accelerate-button-height
Accelerate button height align fix
2023-11-22 19:51:49 +09:00
softsimon
35e108aa1c Accelerate button height fix 2023-11-22 19:37:44 +09:00
softsimon
3f06b38767 Merge pull request #4408 from mempool/mononaut/restore-calculator
Restore the calculator
2023-11-22 18:19:39 +09:00
Mononaut
9844c3d275 Restore the calculator 2023-11-22 18:13:41 +09:00
wiz
04eeb19bb9 Fix string in community sponsor CTA button box 2023-11-22 17:56:56 +09:00
wiz
671540af78 Merge pull request #4407 from mempool/mononaut/8chain
Standalone multi-block view page
2023-11-22 17:54:38 +09:00
Mononaut
1a732f18fc Remove font, update 8 block defaults, fix deprecated css 2023-11-22 17:47:51 +09:00
Mononaut
729fb3bb9d Move standalone blocks page to /view/blocks 2023-11-22 17:47:51 +09:00
Mononaut
fc56f273d4 Simplify 8chain block info 2023-11-22 17:47:51 +09:00
Mononaut
642be969a3 Add more block info, reduce font size 2023-11-22 17:47:50 +09:00
Mononaut
d69cdacd5e Add numBlocks param 2023-11-22 17:47:50 +09:00
Mononaut
ec8fc53dcb eight blocks 2023-11-22 17:47:49 +09:00
wiz
108d1762d6 Merge pull request #4404 from mempool/simon/truncate-text-link-fix
Fixes truncated links
2023-11-22 17:17:51 +09:00
wiz
879039ca8c Merge pull request #4406 from mempool/wiz/update-privacy-policy
Update our Privacy Policy for new backend
2023-11-22 17:16:38 +09:00
wiz
047d1463e7 Add missing <br> tag in privacy poilicy 2023-11-22 17:15:39 +09:00
wiz
8fc60fa086 Merge pull request #4405 from mempool/mononaut/simplify-acceleration-preview
simplify acceleration preview summary
2023-11-22 17:12:26 +09:00
wiz
bce68ee37f Merge branch 'master' into wiz/update-privacy-policy 2023-11-22 17:09:14 +09:00
wiz
2f25c128c1 Merge pull request #4395 from mempool/hunicus/about-sponsor-link
Change sponsor cta on about page
2023-11-22 17:06:55 +09:00
wiz
a76a600d3f Tweak community sponsor word 2023-11-22 17:06:02 +09:00
wiz
afdb419beb Update our Privacy Policy for new backend 2023-11-22 16:55:40 +09:00
Mononaut
8bd2aa3dd3 simplify acceleration preview summary 2023-11-22 16:38:58 +09:00
hunicus
a3f2c42b8e Replace vip events with early accelerator 2023-11-22 16:31:24 +09:00
softsimon
dbcd900056 Fixes truncated links 2023-11-22 16:22:41 +09:00
softsimon
5a6d6fae41 Merge pull request #4401 from mempool/mononaut/menu-footer-align-bug
Fix truncated hidden text layout flow bug
2023-11-22 15:35:26 +09:00
softsimon
6bb666ba5e Merge pull request #4402 from mempool/dependabot/npm_and_yarn/frontend/cypress-13.6.0
Bump cypress from 13.5.0 to 13.6.0 in /frontend
2023-11-22 14:47:49 +09:00
Mononaut
8dc80eadf3 Fix health score when mempool was empty 2023-11-22 13:10:53 +09:00
softsimon
505532f812 Merge pull request #4396 from mempool/mononaut/graph-tooltip-fixes
Fix mempool graph tooltip width & vb precision
2023-11-22 12:21:03 +09:00
dependabot[bot]
89eb02dad0 Bump cypress from 13.5.0 to 13.6.0 in /frontend
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.5.0 to 13.6.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.5.0...v13.6.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-22 02:21:44 +00:00
Mononaut
94a7b710c5 Fix truncated hidden text layout flow bug 2023-11-22 11:15:00 +09:00
softsimon
1e01f88c15 Merge pull request #4398 from mempool/mononaut/fix-left-margin
Fix negative left margin on master page
2023-11-21 20:41:38 +09:00
Mononaut
d471616a24 Fix negative left margin on master page 2023-11-21 20:29:41 +09:00
hunicus
9b8f70a0ae Change alignment and copy 2023-11-21 18:00:22 +09:00
Mononaut
ab079e9372 Fix mempool graph tooltip width & vb precision 2023-11-21 16:36:46 +09:00
hunicus
b77a16233b Change sponsor cta on about page 2023-11-21 14:56:53 +09:00
wiz
894075493b ops: Fix mempool backend config for liquid socket paths 2023-11-20 23:28:37 +09:00
wiz
954512cd8e Merge pull request #4303 from mempool/nymkappa/mega-branch
[Accelerator] Mega branch
2023-11-20 22:41:23 +09:00
nymkappa
deaf6ad6a5 [enterprise] fix api endpoints urls 2023-11-20 19:12:56 +09:00
nymkappa
98443b48ba Merge remote-tracking branch 'origin/nymkappa/mega-branch' into nymkappa/mega-branch 2023-11-20 17:16:44 +09:00
nymkappa
a7dc8793c2 [about page] un-hide sponsors buttons 2023-11-20 17:16:27 +09:00
wiz
84b8e5d472 Merge branch 'master' into nymkappa/mega-branch 2023-11-20 17:15:01 +09:00
ncois
1eb425897e Adjust the width of the incoming tx tooltip for 2h timeframe 2023-11-19 16:42:09 +01:00
softsimon
e768072799 Merge pull request #4388 from mempool/mononaut/rbf-cache-load-logs
More verbose RBF cache check logs
2023-11-19 17:34:00 +09:00
nymkappa
206706180f [accelerator] fix confirmation message when accelerating 2023-11-19 17:23:46 +09:00
nymkappa
0e3b3a0e00 [accelerator] fix message when trying to accelerate 2023-11-19 17:16:05 +09:00
wiz
28733c1e97 Merge branch 'master' into nymkappa/mega-branch 2023-11-19 16:07:03 +09:00
softsimon
7e74a26de2 Merge pull request #4257 from mempool/nymkappa/sticky-header-non-bitcoin
Sticky header non bitcoin
2023-11-19 15:27:52 +09:00
nymkappa
6d920e0ed3 [accelerator] hide accelerate banner 2023-11-18 18:36:17 +09:00
nymkappa
88e5f8a6af remove upgrade link when feature not available 2023-11-18 17:15:04 +09:00
nymkappa
ae82ac8368 Merge remote-tracking branch 'origin/nymkappa/mega-branch' into nymkappa/mega-branch 2023-11-18 15:21:01 +09:00
nymkappa
15cba58144 /image -> /images 2023-11-18 15:20:53 +09:00
wiz
2c820f1cc0 ops: Rewrite nginx config for new services API endpoints 2023-11-18 15:09:02 +09:00
wiz
4070492584 ops: Set nginx to ignore Pragma header for no-cache endpoints 2023-11-18 13:22:17 +09:00
wiz
82a43e25e0 ops: Set nginx no-cache headers for /api/v1/services/auth 2023-11-18 12:40:39 +09:00
wiz
5e45d8f3bc ops: Set nginx no-cache headers for /api/v1/services/account 2023-11-18 12:20:18 +09:00
wiz
e5709235f3 Merge branch 'master' into nymkappa/mega-branch 2023-11-18 11:30:35 +09:00
ncois
9d0bfdfa88 Increase tooltip width in mempool graphs 2023-11-17 13:47:28 +01:00
softsimon
59c513f2a5 Merge pull request #4389 from ncois/fix-p2pk-balance
Fix P2PK balance display in address page (duplicate)
2023-11-17 20:49:02 +09:00
ncois
76a07315f3 Fix P2PK balance display in address page 2023-11-17 09:52:48 +01:00
softsimon
5723f167df Merge pull request #4386 from mempool/mononaut/fix-electrum-p2pk
Fix electrum p2pk/scripthash format
2023-11-17 17:31:22 +09:00
Mononaut
6ac328c979 More verbose RBF cache check logs 2023-11-17 07:06:44 +00:00
softsimon
85e52d24c3 Merge pull request #4382 from shubhamkmr04/shubham/Change-ZEUS-logo
Change ZEUS Logo
2023-11-17 15:29:13 +09:00
Mononaut
7717c15666 Fix electrum p2pk/scripthash format 2023-11-17 03:49:31 +00:00
softsimon
61d7fd490a Merge pull request #4385 from mempool/mononaut/memory-usage-precision
Round memory usage to 3 significant figures
2023-11-17 11:48:44 +09:00
Mononaut
ccf952983b Round memory usage to 3sf 2023-11-17 02:22:57 +00:00
Shubham Kumar
602d7ce207 Merge branch 'master' into shubham/Change-ZEUS-logo 2023-11-16 12:42:19 +05:30
nymkappa
64a51803c4 Merge branch 'master' into nymkappa/mega-branch 2023-11-16 16:10:55 +09:00
shubham
a63e68e9e3 Change ZEUS Logo 2023-11-16 12:38:54 +05:30
softsimon
d4d17fa167 Merge pull request #4371 from mempool/nymkappa/outliers-toggle
[graph] add toggle to show/hide outliers in transaction vBytes per second graph
2023-11-16 14:59:50 +09:00
nymkappa
4cd8d70de5 cleanup if/else 2023-11-15 18:47:56 +09:00
nymkappa
dc26c6f105 [graph] don't change yaxis scale if no outliers - save state in localstorage 2023-11-15 18:46:33 +09:00
nymkappa
365954f5b4 Merge pull request #4304 from mempool/nymkappa/new-enterprise-launch
Prepare enterprise only launch
2023-11-15 18:24:48 +09:00
nymkappa
ff38073280 Merge branch 'nymkappa/mega-branch' into nymkappa/new-enterprise-launch 2023-11-15 18:22:37 +09:00
nymkappa
eeebfde33c Merge branch 'master' into nymkappa/mega-branch 2023-11-15 18:22:27 +09:00
softsimon
fa12233667 Merge pull request #4381 from mempool/mononaut/acc-preview-min-height
Minimum acceleration preview bar height
2023-11-15 18:22:05 +09:00
nymkappa
19477c4ee3 Merge branch 'master' into mononaut/acc-preview-min-height 2023-11-15 18:18:42 +09:00
nymkappa
e4b56bac88 Merge branch 'nymkappa/mega-branch' into nymkappa/new-enterprise-launch 2023-11-15 18:18:01 +09:00
nymkappa
d390fa8671 Merge branch 'master' into nymkappa/mega-branch 2023-11-15 18:17:48 +09:00
softsimon
f9f9c62608 Merge pull request #4374 from mempool/nymkappa/fix-hybrid-build-routing
[frontend] export MasterPageComponent for re-use in hybrid build
2023-11-15 18:02:25 +09:00
Mononaut
d9966143c1 Minimum acceleration preview bar height 2023-11-15 08:49:22 +00:00
nymkappa
57ab82ae7a Merge branch 'nymkappa/mega-branch' into nymkappa/new-enterprise-launch 2023-11-15 17:23:42 +09:00
nymkappa
756f6d8abe [frontend] export MasterPageComponent for re-use in hybrid build 2023-11-15 17:09:54 +09:00
softsimon
f0840a51d9 Merge pull request #4379 from mempool/mononaut/reduce-batch-sizes
Configurable mempool/electrs batch sizes
2023-11-15 16:56:35 +09:00
softsimon
eac8f8c2c6 Merge pull request #4368 from mempool/simon/truncate-selection
Make search and select work for truncated text
2023-11-15 16:25:17 +09:00
Mononaut
20f61fc6a0 Round batch sizes up 2023-11-15 06:58:00 +00:00
Mononaut
6454892d48 Use mempool/txs max_txs parameter 2023-11-15 06:57:31 +00:00
Mononaut
35d7c55c1d Configurable esplora batch sizes 2023-11-15 06:12:15 +00:00
softsimon
86fe6a802b Fixing mobile overflow 2023-11-15 15:07:14 +09:00
softsimon
d4568b631d Make search and select work for truncated text
fixes #4367
2023-11-15 14:39:23 +09:00
nymkappa
2d30c0b588 [graph] use echart echart yaxis max property instead of modifying the data itself 2023-11-15 14:08:44 +09:00
wiz
1aea3fcac5 Merge pull request #4378 from mempool/mononaut/tomahawk-logs-fix
Set fallback server out-of-sync when unreachable
2023-11-14 19:27:13 +09:00
Mononaut
5cfd599018 Set fallback server out-of-symc when unreachable 2023-11-14 10:17:02 +00:00
wiz
d8f2462ff0 Merge pull request #4377 from mempool/mononaut/tomahawk-logs
🥩🙂🪵📝
2023-11-14 19:10:41 +09:00
Mononaut
85091e1f3a 🥩🙂🪵📝 2023-11-14 09:55:02 +00:00
softsimon
3a8d19062f Merge pull request #4271 from mempool/mononaut/refactor-task-scheduler
Refactor indexer scheduling to avoid accumulating identical tasks
2023-11-14 18:13:48 +09:00
wiz
6913946079 ops: Upgrade mariadb to 10.11.x 2023-11-14 17:46:52 +09:00
wiz
fdd18317f9 ops: Kill node before sh in stop script 2023-11-14 17:46:42 +09:00
softsimon
a7c64c0df3 Merge branch 'master' into mononaut/refactor-task-scheduler 2023-11-14 17:17:55 +09:00
softsimon
f2fb2f98f1 Merge pull request #4375 from mempool/mononaut/db-error-log-levels
Support different log levels for database query error messages
2023-11-14 17:17:31 +09:00
Mononaut
7aad664112 Support different log levels for database query error messages 2023-11-14 07:59:24 +00:00
nymkappa
fa040ca19f [frontend] export MasterPageComponent for re-use in hybrid build 2023-11-14 15:53:37 +09:00
Mononaut
00887bc24b Refactor indexer scheduling to avoid accumulating identical tasks 2023-11-14 06:30:22 +00:00
softsimon
ab8b557e73 Merge pull request #4373 from mempool/mononaut/fix-silent-db-exceptions
Fix silently unhandled database exceptions
2023-11-14 15:27:52 +09:00
Mononaut
5c0a59d2f6 handle unknown query types in db error log 2023-11-14 06:13:06 +00:00
Mononaut
29cbdf6cd5 handle null query in error log 2023-11-14 05:52:27 +00:00
Mononaut
08b68ef8ba handle exception in db transaction rollback 2023-11-14 05:33:48 +00:00
Mononaut
1ae34e069c Fix silently unhandled database exceptions 2023-11-14 05:11:51 +00:00
softsimon
5bad829afc Merge pull request #4316 from starius/taproot-channels
[lightning] add taproot-channels to node features
2023-11-14 13:54:31 +09:00
softsimon
562cd5683a Merge branch 'master' into taproot-channels 2023-11-14 13:41:44 +09:00
nymkappa
cbf2395009 Merge branch 'master' into nymkappa/mega-branch 2023-11-14 11:12:11 +09:00
nymkappa
c393483590 [graph] add toggle to show/hide outliers in transaction vBytes per second graph 2023-11-14 10:51:51 +09:00
wiz
cbe1ec4e72 Merge pull request #4356 from mempool/mononaut/fix-pid-lock
Recover from stale PID file
2023-11-13 22:19:43 +09:00
Mononaut
c6a92083a8 Fix pid parsing on release lock 2023-11-13 07:54:11 +00:00
Mononaut
8c4b488251 handle SIGHUP exit code 2023-11-13 07:54:11 +00:00
Mononaut
3639dcc92a Recover from stale PID file 2023-11-13 07:54:11 +00:00
wiz
28113d1141 Merge pull request #4163 from mempool/mononaut/fast-forensics
Fast lightning forensics
2023-11-13 14:54:20 +09:00
softsimon
12b49abfdd Merge pull request #4258 from mempool/mononaut/esplora-sigops
Sigops everywhere
2023-11-13 14:32:23 +09:00
wiz
68e0dfe736 Merge branch 'master' into mononaut/fast-forensics 2023-11-13 14:24:08 +09:00
Mononaut
29299e622e Calculate sigops in /api/v1/tx/:txid for mined txs 2023-11-13 03:44:35 +00:00
Mononaut
4ac0a6dad2 Display sigops on all transactions 2023-11-13 03:44:35 +00:00
Mononaut
a510b4992c Fix condition to add mempool data to loaded cache txs 2023-11-13 03:44:35 +00:00
Mononaut
72e19f674a Clear Liquid sigops 2023-11-13 03:44:34 +00:00
Mononaut
ea2a7e7505 Use sigops from mempool/electrs, fix the nodejs sigop calculation 2023-11-13 03:44:34 +00:00
wiz
74a2cedc7a Merge pull request #4101 from mempool/mononaut/faster-rbf-load
use bulk /txs endpoint to check cached rbf tx status
2023-11-12 19:10:53 +09:00
wiz
c0a481acbe Reduce /internal/txs RBF cache query chunk size to 250 2023-11-12 19:09:36 +09:00
Mononaut
5998b54fec more logs, reduce request chunk sizes 2023-11-12 09:23:37 +00:00
wiz
a2f6ea7b3a Merge branch 'master' into mononaut/faster-rbf-load 2023-11-12 17:41:30 +09:00
wiz
6a877c2a2e Merge pull request #4158 from mempool/junderw/fix-paths
Nginx: Ignore all internal-api paths
2023-11-12 17:40:34 +09:00
wiz
ee90a96d22 Merge branch 'master' into junderw/fix-paths 2023-11-12 17:22:39 +09:00
softsimon
4ea7989aec Merge pull request #4364 from mempool/mononaut/fix-incoming-tx-chart
restore incoming tx clearance line, smooth moving avg
2023-11-12 17:13:53 +09:00
Mononaut
fc52514c31 restore incoming tx clearance line, smooth moving avg 2023-11-12 07:59:06 +00:00
Mononaut
b9217da453 Change internal API prefix to "internal" 2023-11-12 07:08:21 +00:00
Mononaut
70badaf461 Speed up $scanForClosedChannels, use internal outspends apis 2023-11-12 07:08:20 +00:00
Mononaut
995acb238d Refactor forensics batching, speed up opened channel forensics 2023-11-12 07:08:20 +00:00
Mononaut
5bee54a2bf Use new bulk endpoints to speed up forensics 2023-11-12 07:08:19 +00:00
Mononaut
7ec7ae7b95 Remove old batched outspends API 2023-11-12 07:03:28 +00:00
Mononaut
09f208484a Add electrsApiService cachedRequest function, switch outspends 2023-11-12 07:03:28 +00:00
Mononaut
8aa51c4e80 Batch esplora outspends requests 2023-11-12 07:03:28 +00:00
Mononaut
823f06451c Send correct tx conf status in websocket msgs 2023-11-12 07:03:27 +00:00
Mononaut
9d60c39aeb Resolve rbf cache merge conflicts 2023-11-12 06:19:46 +00:00
Mononaut
031e14f302 Update internal getRawTransactions to use new prefix 2023-11-12 05:37:39 +00:00
Mononaut
156b5d0b3c Update bulk /txs to use new failover router, internal-api path 2023-11-12 05:37:39 +00:00
Mononaut
38909cfc42 use bulk /txs endpoint to check cached rbf tx status 2023-11-12 05:37:37 +00:00
softsimon
3de779ea13 Merge pull request #4255 from mempool/mononaut/confirmed-tx-status
Send correct tx conf status in websocket msgs
2023-11-12 14:34:12 +09:00
Mononaut
2339a0771e Use internal /block/:hash/txs endpoint 2023-11-12 05:04:41 +00:00
junderw
4972f00a96 Add internal endpoint blocking to all Nginx configs 2023-11-12 05:04:41 +00:00
Jonathan Underwood
502a1c021e Add suggestions from wiz
Co-authored-by: wiz <j@wiz.biz>
2023-11-12 05:04:41 +00:00
Mononaut
d16773bfa0 Switch backend to use internal-api paths 2023-11-12 05:04:41 +00:00
junderw
511b827bf5 Nginx: Ignore all internal-api paths 2023-11-12 05:04:40 +00:00
softsimon
90634c4343 Merge branch 'master' into mononaut/confirmed-tx-status 2023-11-12 13:48:35 +09:00
softsimon
1e69f3b331 Merge pull request #4246 from mempool/dependabot/npm_and_yarn/frontend/mock-socket-9.3.1
Bump mock-socket from 9.2.1 to 9.3.1 in /frontend
2023-11-11 18:42:53 +09:00
dependabot[bot]
4273276422 Bump mock-socket from 9.2.1 to 9.3.1 in /frontend
Bumps [mock-socket](https://github.com/thoov/mock-socket) from 9.2.1 to 9.3.1.
- [Release notes](https://github.com/thoov/mock-socket/releases)
- [Changelog](https://github.com/thoov/mock-socket/blob/master/CHANGELOG.md)
- [Commits](https://github.com/thoov/mock-socket/commits)

---
updated-dependencies:
- dependency-name: mock-socket
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-11 09:37:11 +00:00
softsimon
fd25713746 Merge pull request #4318 from mempool/mononaut/more-dp-fees
Improve precision of fee distribution chart labels
2023-11-11 18:36:26 +09:00
Mononaut
37605d5732 Improve fee distribution legibility on small screens 2023-11-11 08:57:55 +00:00
softsimon
df2967d576 Merge pull request #4353 from mempool/dependabot/npm_and_yarn/frontend/frontend-angular-dependencies-f2c2dc5ad6
Bump the frontend-angular-dependencies group in /frontend with 1 update
2023-11-11 17:57:32 +09:00
dependabot[bot]
9ab85ab799 Bump the frontend-angular-dependencies group in /frontend with 1 update
Bumps the frontend-angular-dependencies group in /frontend with 1 update: [ngx-echarts](https://github.com/xieziyu/ngx-echarts).

- [Release notes](https://github.com/xieziyu/ngx-echarts/releases)
- [Commits](https://github.com/xieziyu/ngx-echarts/commits)

---
updated-dependencies:
- dependency-name: ngx-echarts
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-11 08:39:56 +00:00
softsimon
1b6f039341 Merge pull request #4289 from mempool/dependabot/npm_and_yarn/frontend/get-func-name-2.0.2
Bump get-func-name from 2.0.0 to 2.0.2 in /frontend
2023-11-11 17:38:47 +09:00
dependabot[bot]
0abf4f415f Bump get-func-name from 2.0.0 to 2.0.2 in /frontend
Bumps [get-func-name](https://github.com/chaijs/get-func-name) from 2.0.0 to 2.0.2.
- [Release notes](https://github.com/chaijs/get-func-name/releases)
- [Commits](https://github.com/chaijs/get-func-name/commits/v2.0.2)

---
updated-dependencies:
- dependency-name: get-func-name
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-11 08:29:45 +00:00
Mononaut
b5a5f0f608 Add small margin above fee distribution graph 2023-11-11 08:24:58 +00:00
Mononaut
ffd2685922 Display fee distribution labels to 3 sig figs 2023-11-11 08:24:57 +00:00
softsimon
9845567c2f Merge pull request #4361 from mempool/mononaut/fix-double-outspend-request
ApiService caching layer
2023-11-11 17:07:31 +09:00
Mononaut
6740ab61f3 Reduce outspend API cache expiry to 250ms 2023-11-11 07:46:25 +00:00
Mononaut
3f0c3c1952 Add apiService cachedRequest function, apply to outspends requests 2023-11-11 07:16:59 +00:00
softsimon
7142d69dda Merge pull request #4319 from mempool/mononaut/fix-stale-rbf-cache
Fix rbf tree leak, clean up stale trees in Redis
2023-11-11 15:17:13 +09:00
Mononaut
e3e248d601 Convert RBF disk cache data to match new format 2023-11-11 05:52:37 +00:00
softsimon
a0a4ae611c Merge pull request #2846 from antonilol/cookie
Add Bitcoin Core RPC cookie authentication option
2023-11-11 13:16:35 +09:00
Mononaut
0e420d8196 Fix rbf tree leak, clean up stale trees in Redis 2023-11-11 04:05:56 +00:00
softsimon
06d1bbdf03 Merge branch 'master' into cookie 2023-11-11 12:57:49 +09:00
softsimon
87b034fa8c Merge pull request #4292 from mempool/mononaut/hide-arrow-on-replace
Hide the blockchain arrow when transaction is replaced
2023-11-11 12:17:54 +09:00
softsimon
874d2b371d Merge branch 'master' into mononaut/hide-arrow-on-replace 2023-11-11 11:57:03 +09:00
softsimon
6134376964 Merge pull request #4347 from mempool/dependabot/npm_and_yarn/frontend/cypress-13.5.0
Bump cypress from 13.3.0 to 13.5.0 in /frontend
2023-11-11 11:56:46 +09:00
softsimon
eba5560caa Merge pull request #4348 from mempool/dependabot/npm_and_yarn/backend/axios-1.6.1
Bump axios from 1.5.0 to 1.6.1 in /backend
2023-11-11 11:56:34 +09:00
dependabot[bot]
e08665dee5 Bump cypress from 13.3.0 to 13.5.0 in /frontend
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.3.0 to 13.5.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.3.0...v13.5.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-11 02:47:53 +00:00
softsimon
b8b341431a Merge pull request #4354 from mempool/mononaut/rerebundle
Better code-splitting
2023-11-10 16:40:36 +09:00
softsimon
9e6072c371 Merge branch 'master' into mononaut/confirmed-tx-status 2023-11-10 14:49:24 +09:00
Mononaut
af7b9c0dc8 Adjust webpack chunk preloading strategy 2023-11-10 05:36:19 +00:00
softsimon
1e3babe714 Merge pull request #4254 from mempool/mononaut/failover-timeout-config
Add REQUEST_TIMEOUT and FALLBACK_TIMEOUT esplora config options
2023-11-10 14:27:25 +09:00
softsimon
a663cca3d0 Merge branch 'master' into mononaut/failover-timeout-config 2023-11-10 14:09:43 +09:00
softsimon
3580d060ce Merge pull request #4274 from mempool/mononaut/fix-faq-blockchain
Fix faq blockchain positioning
2023-11-10 13:53:15 +09:00
softsimon
31ead371dc Merge branch 'master' into mononaut/fix-faq-blockchain 2023-11-10 13:49:58 +09:00
softsimon
897cd7edeb Merge pull request #3571 from mempool/nymkappa/tx-overflow
Fix transaction amount overflow
2023-11-10 12:56:40 +09:00
softsimon
683b72387b Merge branch 'master' into nymkappa/tx-overflow 2023-11-10 12:47:52 +09:00
Mononaut
db8ed5b705 Split liquid, lightning & mainnet graphs 2023-11-10 03:21:25 +00:00
Mononaut
80bf2f9ebd Split master page components & deduplicate main routes 2023-11-10 03:20:59 +00:00
Mononaut
854a9dd057 Split legal page components into separate modules 2023-11-10 03:20:59 +00:00
Mononaut
ae02ff5b0d Split About component into separate module 2023-11-10 03:20:59 +00:00
Mononaut
0cf898a19f Split transaction components into separate module 2023-11-10 03:20:57 +00:00
Mononaut
b5a8687b6a Split Block component into separate module 2023-11-10 03:20:32 +00:00
wiz
27077dcd6c Merge pull request #4280 from mempool/mononaut/standalone-visualizations
Standalone block visualizations
2023-11-09 20:06:28 +09:00
wiz
80ecf77270 Merge branch 'master' into mononaut/standalone-visualizations 2023-11-09 19:52:32 +09:00
wiz
8d6225d6c5 Merge pull request #4309 from mempool/knorrium/unfurler_config
Configurable unfurler config
2023-11-09 19:50:58 +09:00
wiz
8dcd372b99 Merge pull request #4312 from mempool/mononaut/fix-group-channel-count
Fix node group map channel count
2023-11-09 19:26:08 +09:00
wiz
c4d37392dc Merge branch 'master' into mononaut/fix-group-channel-count 2023-11-09 18:46:41 +09:00
wiz
4ed3b65d12 Merge pull request #4323 from mempool/mononaut/hide-mempool-count-line
Hide mempool graph count line by default
2023-11-09 18:46:33 +09:00
wiz
86458927d6 Merge branch 'master' into mononaut/hide-mempool-count-line 2023-11-09 18:38:11 +09:00
wiz
49f189f257 Merge pull request #4343 from erikarvstedt/add-distro-nix-bitcoin
README: add `nix-bitcoin` to node distros
2023-11-09 18:37:20 +09:00
softsimon
9cc0aaeac2 Merge pull request #4345 from mempool/mononaut/rebundle
Shake the echarts tree
2023-11-09 18:25:26 +09:00
wiz
2df99ef7ed Merge branch 'master' into mononaut/rebundle 2023-11-09 18:06:19 +09:00
softsimon
450bda7d04 Merge pull request #4328 from mempool/mononaut/purging-min-fee
Enforce purging rate minimum on recommended fees
2023-11-09 14:58:48 +09:00
dependabot[bot]
d18b8881d0 Bump axios from 1.5.0 to 1.6.1 in /backend
Bumps [axios](https://github.com/axios/axios) from 1.5.0 to 1.6.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.5.0...v1.6.1)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-09 02:16:55 +00:00
wiz
1b3ceed707 Merge pull request #4325 from fanquake/bitcoin_core_25_1
Upgrade bitcoin core to v25.1
2023-11-09 01:39:01 +09:00
Mononaut
a33dc74c88 Shake the echarts tree 2023-11-07 23:35:33 +00:00
softsimon
79fb0a34dc Merge pull request #4331 from mempool/dependabot/npm_and_yarn/frontend/browserify-sign-4.2.2
Bump browserify-sign from 4.2.1 to 4.2.2 in /frontend
2023-11-07 11:46:35 +09:00
softsimon
40f79e64b3 Merge pull request #4329 from mempool/dependabot/npm_and_yarn/backend/crypto-js-4.2.0
Bump crypto-js from 4.1.1 to 4.2.0 in /backend
2023-11-07 11:46:17 +09:00
dependabot[bot]
5f034d34b3 Bump browserify-sign from 4.2.1 to 4.2.2 in /frontend
Bumps [browserify-sign](https://github.com/crypto-browserify/browserify-sign) from 4.2.1 to 4.2.2.
- [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md)
- [Commits](https://github.com/crypto-browserify/browserify-sign/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: browserify-sign
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-07 01:45:30 +00:00
softsimon
6d336c010c Merge pull request #4322 from mempool/dependabot/npm_and_yarn/frontend/babel/traverse-7.23.2
Bump @babel/traverse from 7.22.8 to 7.23.2 in /frontend
2023-11-07 10:44:36 +09:00
dependabot[bot]
14c87e2f03 Bump crypto-js from 4.1.1 to 4.2.0 in /backend
Bumps [crypto-js](https://github.com/brix/crypto-js) from 4.1.1 to 4.2.0.
- [Commits](https://github.com/brix/crypto-js/compare/4.1.1...4.2.0)

---
updated-dependencies:
- dependency-name: crypto-js
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-07 01:44:00 +00:00
softsimon
6ef15bddcd Merge pull request #4314 from mempool/dependabot/npm_and_yarn/backend/babel/core-7.23.2
Bump @babel/core from 7.21.4 to 7.23.2 in /backend
2023-11-07 10:43:03 +09:00
softsimon
fbc6c078ef Merge pull request #4302 from mempool/simon/liquid-blocks-api
Fix block pagination for liquid
2023-11-07 10:42:26 +09:00
softsimon
717601342f Merge pull request #4327 from mempool/orangesurf/primal-logo
Add primal.net logo to footer
2023-11-07 10:41:45 +09:00
Erik Arvstedt
939fe951d4 README: add nix-bitcoin to node distros 2023-11-05 13:47:23 +01:00
nymkappa
a9a3623539 Merge pull request #4341 from mempool/nymkappa/hide-accelerate-cta-loading
[accelerator] hide cta while the tx page is loading
2023-11-02 10:21:46 +09:00
nymkappa
27966ad8ec [accelerator] hide cta while the tx page is loading 2023-11-02 10:21:15 +09:00
nymkappa
5d1ebc6d31 Merge pull request #4340 from mempool/nymkappa/fix-search-align-issue
[CSS] fix search align issue when hamburger icon is showing
2023-11-01 17:49:26 +09:00
nymkappa
a68c2a2be6 [css] fix search bar align issue when hamburger icon is showing 2023-11-01 17:47:20 +09:00
softsimon
7145856d98 Merge pull request #4326 from TKone7/patch-1
Fix memory cache cleanup logic
2023-10-30 20:51:42 +08:00
softsimon
f305dba50c Merge pull request #4332 from mempool/mononaut/fix-docker-pid-config
Fix stray comma in docker backend config
2023-10-29 15:55:47 +08:00
Mononaut
5523c77a04 Fix stray , in docker backend config 2023-10-28 21:06:33 +00:00
Mononaut
83fde600f1 Enforce purging rate minimum on recommended fees 2023-10-25 17:46:04 +00:00
orangesurf
d7c60d9b11 Merge pull request #4324 from orangesurf/master
Add primal.net logo to footer
2023-10-23 19:14:08 +01:00
TKone7
4ca273c8c1 Agree to Contributor License Agreement 2023-10-23 15:56:07 +02:00
TKone7
59a92d0363 Fix cleanup logic
Keep only cache entries with an expiry in the future.
2023-10-23 15:49:34 +02:00
fanquake
26f5776d6d Upgrade bitcoin core to v25.1 2023-10-23 14:44:21 +01:00
fanquake
abee175f4f contrib: add fanquake CLA 2023-10-23 14:44:21 +01:00
orangesurf
9ca41a7608 Merge branch 'master' into master 2023-10-22 17:25:20 +01:00
Mononaut
6efeeb1d64 Hide mempool count line by default 2023-10-20 15:10:40 +00:00
Boris Nagaev
2bc3352785 [lightning] add taproot-channels to node features
Update from https://github.com/lightningnetwork/lnd/blob/master/lnwire/features.go
2023-10-20 04:49:14 +02:00
Boris Nagaev
50460d4025 contributer license 2023-10-20 04:48:34 +02:00
dependabot[bot]
1bc02fd216 Bump @babel/traverse from 7.22.8 to 7.23.2 in /frontend
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.8 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 11:23:40 +00:00
softsimon
413941f5ac Merge pull request #4154 from mempool/mononaut/record-purge-rates
Record purging rate in statistics
2023-10-15 00:25:10 +07:00
softsimon
68854d56cc Merge branch 'master' into mononaut/record-purge-rates 2023-10-14 15:07:03 +07:00
softsimon
a78376a1c5 Merge pull request #4217 from mempool/mononaut/pid-file
Implement pid file & checks
2023-10-14 15:06:14 +07:00
softsimon
a95f1e583d Merge pull request #3923 from pfoytik/pfoytik/incomingTxMA
added moving average to Transactions vBytes per second (vB/s)
2023-10-13 17:40:41 +07:00
dependabot[bot]
0783507821 Bump @babel/core from 7.21.4 to 7.23.2 in /backend
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.21.4 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/@babel/core@7.23.2/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-12 02:38:59 +00:00
Peter
76621464f1 ma vbytes 2023-10-11 08:09:06 -04:00
Felipe Knorr Kuhn
e9e507af69 Fix default config path 2023-10-10 19:53:57 -07:00
Mononaut
af3d6eccfb Fix node group map channel count 2023-10-11 01:09:10 +00:00
orangesurf
21ede8671d Update global-footer.component.html 2023-10-09 19:01:48 +00:00
orangesurf
e27cf33981 Improve footer formatting for small screens 2023-10-08 17:52:03 +01:00
orangesurf
02c892aa07 Merge branch 'mempool:master' into master 2023-10-08 17:39:47 +01:00
Felipe Knorr Kuhn
a35c8be25c Configurable unfurler config 2023-10-08 09:03:22 -07:00
wiz
5302b27d55 Merge pull request #4307 from fubz/fubz/electrs-crontab 2023-10-07 09:22:36 +09:00
fubz
5b357eb6b5 fix: configure crontab for electrs single script 2023-10-06 12:48:46 -04:00
nymkappa
7d3f82eca0 [footer] remove "Sign-up" label 2023-10-05 11:16:01 +02:00
nymkappa
20026f974f Merge remote-tracking branch 'origin/nymkappa/accel-button' into nymkappa/mega-branch 2023-10-04 12:11:10 +02:00
nymkappa
3d964fcdfa Merge branch 'nymkappa/about-page-profile-image' into nymkappa/mega-branch 2023-10-04 12:11:05 +02:00
nymkappa
9e8b2957d0 Merge branch 'nymkappa/menu' into nymkappa/mega-branch 2023-10-04 12:10:58 +02:00
nymkappa
c04e92a686 Merge branch 'nymkappa/accelerate-preview-login-cta' into nymkappa/mega-branch 2023-10-04 12:10:46 +02:00
nymkappa
2dd6dd9233 Merge branch 'nymkappa/polish-accelerate-cta' into nymkappa/mega-branch 2023-10-04 12:10:39 +02:00
nymkappa
e9b72776ed Merge remote-tracking branch 'origin/nymkappa/fix-menu-scroll' into nymkappa/mega-branch 2023-10-04 12:10:28 +02:00
nymkappa
23df1f012c Merge remote-tracking branch 'origin/nymkappa/sticky-header-non-bitcoin' into nymkappa/mega-branch 2023-10-04 12:10:17 +02:00
softsimon
10be2c8176 Fix block pagination for liquid 2023-10-04 01:41:49 +04:00
softsimon
e25e99456c Merge pull request #4033 from mempool/nymkappa/no-db-blocks-list
[block list] improve block list when db = false
2023-10-03 20:59:53 +04:00
softsimon
e6236d8cfd Merge branch 'master' into nymkappa/no-db-blocks-list 2023-10-02 21:53:44 +04:00
Mononaut
75c50416f5 Fix PID docker config 2023-10-01 16:43:21 +01:00
Mononaut
0808640ec0 Check database enabled before releasing PID lock file 2023-10-01 16:38:45 +01:00
Mononaut
7dad00523f Implement pid file & checks 2023-10-01 16:37:28 +01:00
softsimon
63a4810b11 Merge pull request #4299 from mempool/knorrium/update_node_matrix
Reduce the test matrix to node v18 and v20
2023-10-01 12:24:22 +04:00
softsimon
0e69f28e58 Merge pull request #4290 from mempool/dependabot/npm_and_yarn/frontend/cypress-13.3.0
Bump cypress from 13.2.0 to 13.3.0 in /frontend
2023-10-01 12:24:09 +04:00
Felipe Knorr Kuhn
77f8999f1e Merge branch 'master' into knorrium/update_node_matrix 2023-09-30 08:59:25 -07:00
Felipe Knorr Kuhn
0e4e0bff78 Reduce the test matrix to node v18 and v20 2023-09-30 08:57:57 -07:00
Felipe Knorr Kuhn
504840c15a Merge branch 'master' into dependabot/npm_and_yarn/frontend/cypress-13.3.0 2023-09-30 08:48:00 -07:00
wiz
b7919afd2f Merge pull request #4294 from mempool/knorrium/docker_updates
Docker updates
2023-09-30 18:53:17 +09:00
Felipe Knorr Kuhn
7c09dd1b70 Set REDIS as disabled by default 2023-09-29 22:14:29 -07:00
Felipe Knorr Kuhn
679e967241 Add missing ACCELERATOR variable 2023-09-29 20:14:40 -07:00
Felipe Knorr Kuhn
f21a31ce86 Remove x86 2023-09-29 19:32:38 -07:00
Felipe Knorr Kuhn
003f3cf8b1 Replace armv7 with x86 2023-09-29 19:30:56 -07:00
Felipe Knorr Kuhn
3ec8a6955c Update Docker GHA 2023-09-29 19:23:38 -07:00
Felipe Knorr Kuhn
fba4759ba1 Update node base images to 20.8.0 2023-09-29 19:16:06 -07:00
Felipe Knorr Kuhn
ea2f39b18a Update mariadb base image 2023-09-29 19:04:54 -07:00
Felipe Knorr Kuhn
ad77b3a6c9 Update the frontend base and ngnix images 2023-09-29 19:04:37 -07:00
Felipe Knorr Kuhn
097db4edcd Update backend base images 2023-09-29 19:03:53 -07:00
Felipe Knorr Kuhn
e9e2c2f7b5 Remove unused files 2023-09-29 19:03:29 -07:00
Mononaut
420fbf3d6f Hide the blockchain arrow when transaction is replaced 2023-09-29 00:02:01 +01:00
dependabot[bot]
7a1cd0ff6a Bump cypress from 13.2.0 to 13.3.0 in /frontend
Bumps [cypress](https://github.com/cypress-io/cypress) from 13.2.0 to 13.3.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v13.2.0...v13.3.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-28 02:23:46 +00:00
wiz
f83fed62ce Merge pull request #4286 from mempool/wiz/bump-nodejs-v20.7.0
Bump NodeJS version to v20.7.0
2023-09-27 14:39:04 +09:00
wiz
72fdcb749f Bump NodeJS version to v20.7.0 2023-09-27 14:23:07 +09:00
wiz
21a78e37d1 Merge pull request #4112 from Emzy/ops/nginx-buffer-size
Fixing proxy_buffer_size error nginx.conf
2023-09-27 12:10:42 +09:00
wiz
feed25b641 Merge branch 'master' into ops/nginx-buffer-size 2023-09-27 12:10:25 +09:00
softsimon
5e95d8d6ce Merge pull request #4281 from mempool/nymkappa/fix-blockchain-width-liquid
[ui] don't add 120px to blockchain component on liquid
2023-09-26 00:28:48 +04:00
orangesurf
6de8cbe9b9 Add primal.net logo to footer 2023-09-25 19:57:52 +01:00
softsimon
9cf2db77b4 Merge pull request #4279 from mempool/knorrium/hardened_sync_assets
Fixes to sync-assets
2023-09-24 22:40:33 +04:00
Felipe Knorr Kuhn
372fb38722 Skip syncing Liquid assets if BASE_MODULE is not set to liquid 2023-09-24 10:31:14 -07:00
Felipe Knorr Kuhn
c35f8a3f08 Add SKIP_SYNC and verbosity from previous PR 2023-09-23 15:39:00 -07:00
Mononaut
6773af92ed Add standalone mempool block visualization page 2023-09-23 23:09:11 +01:00
Felipe Knorr Kuhn
4ed629a8ea Minor improvements to sync-assets 2023-09-23 14:43:54 -07:00
Felipe Knorr Kuhn
67b2aa2ff0 Add trailing slash to the sync-assets script 2023-09-23 14:42:54 -07:00
Mononaut
72750267d0 Enable navigation from standalone block page 2023-09-23 22:26:21 +01:00
Felipe Knorr Kuhn
24b3ca559d Add block delta to the logs 2023-09-23 13:32:12 -07:00
Felipe Knorr Kuhn
5edd83d496 Merge branch 'master' into knorrium/add_sync_check_script 2023-09-23 13:20:42 -07:00
softsimon
36dc5e9a9b Merge pull request #4215 from mempool/dependabot/npm_and_yarn/backend/axios-1.5.0
Bump axios from 1.4.0 to 1.5.0 in /backend
2023-09-24 00:02:02 +04:00
Felipe Knorr Kuhn
693b845c45 Add block height workflow 2023-09-23 11:57:20 -07:00
dependabot[bot]
928d3282a2 Bump axios from 1.4.0 to 1.5.0 in /backend
Bumps [axios](https://github.com/axios/axios) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.4.0...v1.5.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-23 15:20:54 +00:00
softsimon
a567f44b3c Merge pull request #4276 from mempool/knorrium/print_backend_sha_workflow
ops: Add workflow to print the backend info on all servers
2023-09-23 19:20:34 +04:00
softsimon
363b9f5be2 Merge pull request #4275 from mempool/knorrium/update_cypress_deps
Update Cypress to v13 and other test deps
2023-09-23 19:20:05 +04:00
Felipe Knorr Kuhn
52725df296 Add workflow to run the backend info script 2023-09-23 07:58:09 -07:00
Felipe Knorr Kuhn
e3cd7dbf34 Add script to print the backend info on all servers 2023-09-23 07:57:49 -07:00
Felipe Knorr Kuhn
593e72f905 Update Cypress to v13 and other test deps 2023-09-22 18:51:29 -07:00
Mononaut
80afcae645 Fix faq blockchain positioning 2023-09-23 00:40:47 +01:00
Mononaut
f3fc774c2d Add standalone block visualization page 2023-09-21 21:57:54 +01:00
softsimon
8c2d72ad58 Merge branch 'master' into nymkappa/no-db-blocks-list 2023-09-21 20:45:26 +04:00
softsimon
d0696628b2 Merge pull request #4200 from mempool/mononaut/canonical-blocks
Update canonical link with block hash
2023-09-21 12:45:21 +04:00
Mononaut
368ab1dc66 Update canonical link with block hash 2023-09-21 12:31:38 +04:00
softsimon
b6f66a6a28 Merge pull request #4236 from mempool/mononaut/mempool-count-graph
Add mempool transaction count line to graph
2023-09-20 20:26:25 +04:00
softsimon
bda361cf57 Merge pull request #4269 from mempool/mononaut/reduce-blockchain-jumping
Reduce blockchain jumping
2023-09-20 18:20:34 +04:00
Mononaut
1a6a0c12ec Fix blockchain scroll jumping 2023-09-20 03:55:06 +00:00
Mononaut
b645ad3fd8 Reduce thrashing while initializing blockchain scroll position 2023-09-19 22:55:57 +00:00
wiz
b979594a04 Merge pull request #4262 from mempool/wiz/add-va1-mempoolspace-lightning-nodes
Add VA1 mempool.space lightning node pubkeys
2023-09-18 17:43:40 -04:00
wiz
6aceb898df Merge pull request #4248 from orangesurf/master
Add orangesurf contributor declaration & update trademark to registered trademark
2023-09-18 17:27:50 -04:00
Mononaut
c80201e3db hide mempool count line before start of data 2023-09-18 21:13:11 +00:00
Mononaut
ef5d2606b7 Add missing count data to longer statistics timespans 2023-09-18 21:07:24 +00:00
softsimon
1e648a2dce Merge pull request #4265 from mempool/nymkappa/fix-js-error-when-no-geolocation
[lightning] fix js error when there is no geolocation available
2023-09-18 17:23:23 +04:00
softsimon
11058b469c Merge pull request #4209 from mempool/mononaut/address-page-rbf
Notify address page of removed transactions
2023-09-18 17:04:31 +04:00
nymkappa
e79c32010d [lightning] fix js error when there is no geolocation available 2023-09-18 09:44:22 +02:00
wiz
5e4742e51b Merge branch 'master' into master 2023-09-18 00:51:38 -04:00
wiz
38d30d23e5 Add VA1 mempool.space lightning node pubkeys 2023-09-17 20:57:47 -04:00
wiz
47dd2cbd5d ops: Add VA1 servers to prod config 2023-09-17 19:56:33 -04:00
nymkappa
6b8db33a9c [ui] don't add 120px to blockchain component on liquid 2023-09-15 17:11:52 +02:00
nymkappa
14a41b3108 [bisq] sticky header 2023-09-15 16:05:10 +02:00
nymkappa
81d1a809d2 [liquid] sticky header 2023-09-15 16:02:39 +02:00
Mononaut
441b505aa3 Send correct tx conf status in websocket msgs 2023-09-14 23:27:40 +00:00
Mononaut
9b17c16325 Notify address page of removed transactions 2023-09-14 23:25:21 +00:00
Mononaut
c1f0eac8f8 Add REQUEST_TIMEOUT and FALLBACK_TIMEOUT esplora config options 2023-09-14 22:57:37 +00:00
softsimon
83c285e17d Merge pull request #4199 from mempool/mononaut/fix-diff-skeleton-mouseover
Fix js error on mouseover on difficulty skeleton
2023-09-13 13:26:10 +04:00
softsimon
5fabf892ba Merge branch 'master' into mononaut/fix-diff-skeleton-mouseover 2023-09-13 13:22:19 +04:00
nymkappa
a000438277 [UI] menu username ellipsis 2023-09-13 09:30:11 +02:00
nymkappa
e3fffd8fb2 [UI] fix menu scroll issue 2023-09-13 09:21:31 +02:00
orangesurf
0ba4e98f52 Replace other instances of tm use for The Mempool Open Source Project 2023-09-12 19:55:00 +01:00
orangesurf
a1b75c3772 Update to reflect registered trademark 2023-09-12 19:45:18 +01:00
orangesurf
0712195de4 Add orangesurf contributor declaration 2023-09-12 19:29:33 +01:00
nymkappa
a133fa8d41 Merge branch 'master' into nymkappa/tx-overflow 2023-09-12 15:12:27 +02:00
nymkappa
4d6c5a7ce7 Merge branch 'master' into nymkappa/no-db-blocks-list 2023-09-12 15:11:59 +02:00
nymkappa
5dfd1a495e Merge branch 'master' into nymkappa/about-page-profile-image 2023-09-12 14:34:34 +02:00
nymkappa
a463fc289f Merge branch 'master' into nymkappa/menu 2023-09-12 14:34:28 +02:00
nymkappa
a8e6d9b4b9 Merge branch 'master' into nymkappa/accelerate-preview-login-cta 2023-09-12 14:34:22 +02:00
nymkappa
9ed7e80c44 fix typo post merge 2023-09-12 14:15:29 +02:00
nymkappa
596d55e413 Merge branch 'master' into nymkappa/accel-button 2023-09-12 14:05:56 +02:00
Mononaut
71d4aa9ddd Add mempool count line to graph 2023-09-08 01:35:02 +09:00
hunicus
fc2df35a42 Merge branch 'master' into hunicus/enterprise-cta-docs 2023-09-07 02:30:12 +09:00
hunicus
d02838fb59 Implement enterprise cta in docs [mobile] 2023-09-07 02:26:41 +09:00
hunicus
572f6bdbac Fix mining dashboard meta description not showing 2023-09-06 22:42:58 +09:00
hunicus
42a222338b Add missing meta descriptions 2023-09-06 22:42:33 +09:00
hunicus
d630e7217a Make enterprise links not relative 2023-09-06 01:42:19 +09:00
nymkappa
0e1a9d8619 [accelerator] blinking cta, polish accel preview 2023-09-03 16:05:12 +03:00
nymkappa
d09668aaa6 [accelerator] login CTA with redirection 2023-09-03 12:20:30 +03:00
wiz
827b0f6ad1 ops: Make install script wait longer for mysql to start 2023-08-31 16:52:56 +09:00
wiz
e8d85613b4 Merge pull request #4224 from mempool/mononaut/failover-timeout
Bump failover timeout to 5s
2023-08-31 02:38:10 +09:00
wiz
ce3b599bab ops: Add /api/v1/services route for new backend 2023-08-31 02:36:22 +09:00
Mononaut
47a7564cfc Bump failover timeout to 5s 2023-08-31 02:25:28 +09:00
wiz
93aa08b60d Merge branch 'master' into nymkappa/menu 2023-08-31 02:02:50 +09:00
nymkappa
4664e55513 [footer] fix positioning when menu component is not loaded 2023-08-30 18:58:21 +02:00
wiz
7744146ef7 Merge pull request #4188 from mempool/nymkappa/menu
User menu + integrated accelerator if available
2023-08-31 01:55:52 +09:00
wiz
9cb72cff31 Set apple-mobile-web-app-capable to yes 2023-08-31 01:35:10 +09:00
nymkappa
98119b3e54 Merge remote-tracking branch 'origin/nymkappa/menu' into nymkappa/menu 2023-08-30 18:32:56 +02:00
nymkappa
f5a3e78cbe [css] fix spacing at the top x2 2023-08-30 18:32:14 +02:00
wiz
515d2656e7 Set apple-mobile-web-app-status-bar-style to black 2023-08-31 01:23:07 +09:00
wiz
339a21caaa Merge branch 'master' into nymkappa/menu 2023-08-31 01:01:00 +09:00
wiz
a7c0d33de8 Merge pull request #4219 from mempool/mononaut/accelerator-preview-concept
Accelerator preview concept
2023-08-31 00:58:24 +09:00
Mononaut
d1ef1afc9c Fix default min/max/default userbid 2023-08-31 00:32:54 +09:00
wiz
bf4a1fcd7a Merge pull request #4221 from hunicus/add-meta-descriptions
Add meta descriptions
2023-08-31 00:29:46 +09:00
Mononaut
d6044331e1 Hide balance unless insufficient for max cost 2023-08-31 00:15:09 +09:00
wiz
9fdb164b64 Merge branch 'master' into add-meta-descriptions 2023-08-31 00:09:57 +09:00
hunicus
d691bf2714 Add meta titles+descriptions to pages missing them 2023-08-30 23:59:51 +09:00
hunicus
cd366177ba Add meta descriptions for mempool and liquid 2023-08-30 21:10:59 +09:00
hunicus
6312884234 Add meta descriptions for bisq 2023-08-30 20:47:57 +09:00
hunicus
d1f26f0491 Add meta descriptions to docs page
Also move all meta tag setting to ngDoCheck()
because page titles were not updating when
user switched docs tabs.
2023-08-30 20:47:57 +09:00
Mononaut
ed12e30517 Hide fee diagram on mobile 2023-08-30 17:16:39 +09:00
Mononaut
cb363aca23 Simplify acceleration quote 2023-08-30 16:55:24 +09:00
Mononaut
c753a8e92a Accelerator fee diagram concept 2023-08-30 16:55:24 +09:00
nymkappa
c44276027c [auto scroll] fix documention anchor scrolling 2023-08-29 15:51:17 +02:00
nymkappa
91fbd0864b [css] fix footer position 2023-08-29 14:34:56 +02:00
nymkappa
c2c4047ffd [css] fix spacing at the top 2023-08-29 14:19:02 +02:00
nymkappa
9427ba96a2 Merge branch 'master' into nymkappa/menu 2023-08-29 10:53:09 +02:00
nymkappa
7c11f0a3da [tx] fix eta css 2023-08-29 10:50:13 +02:00
softsimon
6780ba82d0 Merge pull request #4213 from mempool/mononaut/live-cpfp-updates
Send cpfp/effective fee rate changes to subscribed websocket clients
2023-08-29 10:17:33 +02:00
softsimon
6d643604d0 Merge branch 'master' into mononaut/live-cpfp-updates 2023-08-29 10:12:55 +02:00
nymkappa
7ae4b451e4 [auth] remove auto logout when imageMd5 no in localstorage 2023-08-29 09:31:18 +02:00
nymkappa
bbd1f088d1 [footer] only show cta if official && ACCELERATOR 2023-08-28 16:20:30 +02:00
nymkappa
3060aecddb [status badge] reposition a bit higher 2023-08-28 15:57:06 +02:00
nymkappa
7a765cecd9 [footer] only show cta if official 2023-08-28 15:41:45 +02:00
nymkappa
03e9592c79 Merge pull request #4216 from mempool/mononaut/fix-menu-blockchain-offset
Fix bad blockchain offset after services -> dash
2023-08-28 10:56:18 +02:00
Mononaut
c7b89f31dd Fix bad blockchain offset after services -> dash 2023-08-28 17:42:32 +09:00
nymkappa
899b230760 Merge remote-tracking branch 'origin/nymkappa/menu' into nymkappa/menu 2023-08-28 10:24:52 +02:00
nymkappa
d787ef99c4 [typo] the Mempool Accelerator -> Mempool Accelerator 2023-08-28 10:24:44 +02:00
wiz
043ab008db Merge branch 'master' into nymkappa/menu 2023-08-28 16:43:03 +09:00
nymkappa
4abc4e96a8 [typo] satss -> sats 2023-08-28 09:34:50 +02:00
nymkappa
7fd8790750 [auth] fix blinking profile picture 2023-08-28 09:29:13 +02:00
nymkappa
8ba4a7b421 [ui] polish x2 2023-08-27 19:17:03 +02:00
nymkappa
78ea9cbd16 [ui] polish x1 2023-08-27 12:52:58 +02:00
softsimon
727937b8ae Merge pull request #4135 from mempool/hunicus/citadel-link
Change citadel link on about page
2023-08-27 11:42:52 +02:00
nymkappa
5f4add3e22 [tx] fix css when accel not available 2023-08-27 09:07:47 +02:00
wiz
c4f8afbaf7 Merge pull request #4195 from mempool/junderw/rusttoolchain 2023-08-27 13:19:15 +09:00
Mononaut
528877f43f Send cpfp/effective fee rate changes to subscribed ws clients 2023-08-27 00:30:55 +09:00
nymkappa
a3d61fa525 [accelerator] show payment preview when not logged in 2023-08-26 15:07:05 +02:00
nymkappa
c0308fbc0d Merge branch 'master' into nymkappa/menu 2023-08-26 14:01:07 +02:00
softsimon
24696d0408 Merge pull request #4183 from mempool/mononaut/attitude-adjustment
Don't overload core with mempool tx requests
2023-08-26 12:28:26 +02:00
nymkappa
b9838fda8d Merge branch 'master' into mononaut/attitude-adjustment 2023-08-26 11:48:21 +02:00
nymkappa
726bd51abb [debug] update versioning print 2023-08-26 11:27:45 +02:00
nymkappa
1fe08d1234 [accelerator] fix overflow in tx page integrated accel 2023-08-26 10:05:04 +02:00
nymkappa
1ca136fa75 Merge pull request #4212 from mempool/nymkappa/accelerate-preview
Nymkappa/accelerate preview
2023-08-26 09:53:29 +02:00
nymkappa
fcecbe4967 [tx] integrated accelerator 2023-08-26 09:52:55 +02:00
hunicus
d42a3f74ec Add description to index html and seo service 2023-08-26 14:18:55 +09:00
wiz
dc44f1b618 ops: Fix WebGL for unfurler 2023-08-26 04:40:12 +09:00
wiz
0fde6dd908 ops: Bump prod NodeJS version to v20.5.1 2023-08-25 23:34:50 +09:00
wiz
4eb494baec ops: Increase FreeBSD bitcoin node shutdown timeout to 600 2023-08-25 23:29:03 +09:00
wiz
c1b2f1f2c7 ops: Disable tor in prod install script 2023-08-25 23:24:51 +09:00
wiz
a6d2887847 Merge branch 'master' into nymkappa/menu 2023-08-25 23:13:32 +09:00
nymkappa
f9895a492c Merge branch 'nymkappa/menu' into nymkappa/accelerate-preview 2023-08-24 18:23:30 +02:00
nymkappa
ac56f70f6f Merge pull request #4176 from mempool/nymkappa/fix-eta
[tx] fix eta css with accelerate button
2023-08-24 18:21:27 +02:00
Mononaut
f295392dca Record purging rate in statistics 2023-08-24 22:04:41 +09:00
nymkappa
c89e283c8e [tx] start adding acceleration preview 2023-08-24 14:17:31 +02:00
nymkappa
3aa938a94b Merge pull request #4202 from mempool/mononaut/dynamic-width-chain
Dynamic width chain
2023-08-24 10:42:46 +02:00
Mononaut
20fff97804 restore window resize listener 2023-08-24 17:28:21 +09:00
Mononaut
d1f7026804 hambuger 2023-08-24 17:28:19 +09:00
Mononaut
2da31c4d4a Slide blockchain to compensate for menu 2023-08-24 17:27:31 +09:00
Mononaut
975ba653a2 Dynamically resize blockchain to fit container 2023-08-24 17:27:31 +09:00
softsimon
f12fabe030 Merge pull request #4206 from mempool/dependabot/npm_and_yarn/frontend/frontend-angular-dependencies-f1c021e5b3
Bump the frontend-angular-dependencies group in /frontend with 12 updates
2023-08-24 10:17:12 +02:00
dependabot[bot]
25d75efa09 Bump the frontend-angular-dependencies group
Bumps the frontend-angular-dependencies group in /frontend with 12 updates:

| Package | From | To |
| --- | --- | --- |
| [@angular-devkit/build-angular](https://github.com/angular/angular-cli) | `16.1.4` | `16.2.0` |
| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `16.1.5` | `16.2.2` |
| [@angular/cli](https://github.com/angular/angular-cli) | `16.1.4` | `16.2.0` |
| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `16.1.5` | `16.2.2` |
| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `16.1.5` | `16.2.2` |
| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `16.1.5` | `16.2.2` |
| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `16.1.5` | `16.2.2` |
| [@angular/localize](https://github.com/angular/angular) | `16.1.5` | `16.2.2` |
| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `16.1.5` | `16.2.2` |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `16.1.5` | `16.2.2` |
| [@angular/platform-server](https://github.com/angular/angular/tree/HEAD/packages/platform-server) | `16.1.5` | `16.2.2` |
| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `16.1.5` | `16.2.2` |


Updates `@angular-devkit/build-angular` from 16.1.4 to 16.2.0
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/16.1.4...16.2.0)

Updates `@angular/animations` from 16.1.5 to 16.2.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/16.2.2/packages/animations)

Updates `@angular/cli` from 16.1.4 to 16.2.0
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/16.1.4...16.2.0)

Updates `@angular/common` from 16.1.5 to 16.2.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/16.2.2/packages/common)

Updates `@angular/compiler` from 16.1.5 to 16.2.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/16.2.2/packages/compiler)

Updates `@angular/core` from 16.1.5 to 16.2.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/16.2.2/packages/core)

Updates `@angular/forms` from 16.1.5 to 16.2.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/16.2.2/packages/forms)

Updates `@angular/localize` from 16.1.5 to 16.2.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/compare/16.1.5...16.2.2)

Updates `@angular/platform-browser` from 16.1.5 to 16.2.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/16.2.2/packages/platform-browser)

Updates `@angular/platform-browser-dynamic` from 16.1.5 to 16.2.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/16.2.2/packages/platform-browser-dynamic)

Updates `@angular/platform-server` from 16.1.5 to 16.2.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/16.2.2/packages/platform-server)

Updates `@angular/router` from 16.1.5 to 16.2.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/16.2.2/packages/router)

---
updated-dependencies:
- dependency-name: "@angular-devkit/build-angular"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/animations"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/cli"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/common"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/compiler"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/forms"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/localize"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/platform-browser"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/platform-browser-dynamic"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/platform-server"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
- dependency-name: "@angular/router"
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: frontend-angular-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-24 02:53:59 +00:00
nymkappa
c8100712e8 [footer] polish breakpoints in /services/* 2023-08-23 16:17:07 +02:00
nymkappa
a7b2c39f51 [footer] re-add missing tagline 2023-08-23 15:02:36 +02:00
nymkappa
3d9fa5076b Merge remote-tracking branch 'origin/nymkappa/menu' into nymkappa/menu 2023-08-23 14:40:29 +02:00
nymkappa
9fa715e403 [footer] re-add main CTA with better design 2023-08-23 14:40:16 +02:00
nymkappa
9ee11b64e9 [menu] disable hamburger icon when not logged in 2023-08-23 14:39:58 +02:00
nymkappa
8c90d4ba98 Merge branch 'master' into nymkappa/menu 2023-08-23 12:21:23 +02:00
nymkappa
b333c211f7 [menu] fix non clickable hamburger when logged out 2023-08-23 11:50:47 +02:00
Mononaut
ab8386adea Set no-cache on unfurl failure fallback response 2023-08-23 02:10:57 +09:00
wiz
b180fe694f ops: Tweak nginx config for gone paths and render expires 2023-08-23 01:09:11 +09:00
Mononaut
b7474b29e4 Use symlink to avoid duplicate fallback images 2023-08-23 00:34:55 +09:00
wiz
6c7d33f681 Merge pull request #4203 from mempool/mononaut/fix-unfurl-fallbacks
Fix unfurl fallback img routes
2023-08-23 00:31:48 +09:00
Mononaut
6946bc9da9 Fix unfurl fallback img routes 2023-08-23 00:11:24 +09:00
nymkappa
8fb566858f [css] make sure <main> cannot be larger than viewport 2023-08-22 15:44:32 +02:00
nymkappa
379e1470fd [menu] fix menu close trigger, fix menu scroll on mobile safari 2023-08-22 14:59:23 +02:00
nymkappa
c5f0608b46 [debug] footer version same color, inline version in about page 2023-08-22 14:51:05 +02:00
wiz
063d7e96a1 Merge pull request #4198 from mempool/mononaut/unfurler-fixes
More unfurler fixes
2023-08-22 20:26:03 +09:00
nymkappa
7544357826 [ui] redesign UX for navbar using sticky 2023-08-22 08:35:10 +02:00
nymkappa
5005817529 [ui] tweak profile image 2023-08-21 23:18:55 +02:00
nymkappa
bfc3fbe397 [ui] hide the navbar on scroll 2023-08-21 22:19:05 +02:00
nymkappa
30be7e0f7a [ui] redesign UX for navbar 2023-08-21 22:08:25 +02:00
junderw
18eb6600b0 Fix README to include workaround for legacy versions of npm 2023-08-21 12:53:20 -07:00
junderw
88c0d04c18 Match CI toolchain with rust-toolchain 2023-08-21 12:53:20 -07:00
Mononaut
8ea7bb907c Fix js error on mouseover on difficulty skeleton 2023-08-22 02:40:00 +09:00
Mononaut
0d2df72621 Proxy unfurler resources to local instance 2023-08-22 02:16:46 +09:00
Mononaut
91c0a3e689 More unfurler logging 2023-08-22 02:16:36 +09:00
junderw
b595002c25 Revert "Add a missing [workspace] tag in rust-gbt Cargo to build in git"
This reverts commit fadc46f3b5.
2023-08-21 10:01:40 -07:00
Mononaut
9ba7ab9975 More robust webgl handling 2023-08-22 00:07:44 +09:00
softsimon
7674bee5ad Animating menu 2023-08-21 17:06:12 +02:00
nymkappa
0ee28a335f [header] show anon image if user did not set a picture (to improve later) 2023-08-21 17:04:17 +02:00
nymkappa
285485c69e [about page] /api/v1/about-page -> /api/v1/services/sponsors 2023-08-21 15:27:55 +02:00
nymkappa
b8222bff43 [auth] fix auth not being cleared after logout 2023-08-21 15:01:31 +02:00
nymkappa
3321ae0f1f [debug] always show git hashes in footer 2023-08-21 11:36:40 +02:00
nymkappa
4010047344 Merge remote-tracking branch 'origin/nymkappa/menu' into nymkappa/menu 2023-08-21 11:20:20 +02:00
nymkappa
ce290a449c [debug] show more git hashes in about and footer 2023-08-21 11:19:54 +02:00
Jonathan Underwood
b9c151f549 Update rust-toolchain 2023-08-21 17:47:58 +09:00
nymkappa
2ff3e4acb9 Merge branch 'master' into nymkappa/menu 2023-08-21 09:14:24 +02:00
wiz
ead32a4a65 Merge pull request #4194 from TheBlueMatt/msrv
Drop MSRV to 1.63
2023-08-21 16:06:13 +09:00
nymkappa
a1e2d2fd74 [debug] SERVICES -> GIT_COMMIT_HASH_MEMPOOL_SPACE in env 2023-08-21 08:57:27 +02:00
Matt Corallo
122a721d7a sign cla 2023-08-21 05:04:33 +00:00
Matt Corallo
6088fffc09 Drop MSRV to 1.63
Debian bookworm ships with 1.63, and since the change is trivial,
there's little reason to not support people running mempool on
Debian.
2023-08-21 04:03:37 +00:00
Matt Corallo
fadc46f3b5 Add a missing [workspace] tag in rust-gbt Cargo to build in git
If cargo detects its being run in a git tree, it looks for a
top-level `Cargo.toml`. When failing to find one, it errors out,
saying "current package believes it's in a workspace when it's not."

Instead, we add a `[workspace]` tag to let cargo know that rust-gbt
is not, in fact, in a rust workspace.
2023-08-21 04:00:52 +00:00
nymkappa
e82b43e340 [footer] fix footer sizing in /services 2023-08-20 22:54:12 +02:00
nymkappa
22886cb32d [debug] show services backend version in /services global footer, show services global frontend build in /about 2023-08-20 22:53:33 +02:00
nymkappa
ef554ad67b Merge branch 'master' into nymkappa/menu 2023-08-20 08:21:38 +02:00
nymkappa
b64b6fb3c7 [menu] fix json.parse on missing auth in localstorage 2023-08-20 08:11:55 +02:00
wiz
8e73e76312 ops: Tweak proxy_cache_valid time for unfurler/slurper cache 2023-08-20 02:36:34 +09:00
wiz
9d978ead6d ops: Set expires headers for unfurler/slurper responses 2023-08-20 00:01:22 +09:00
wiz
655eb31107 ops: Tweak nginx cache valid time for unfurler/slurper 2023-08-19 23:27:08 +09:00
wiz
15bd7bc068 Merge pull request #4187 from mempool/mononaut/unfurler-debugging
Unfurler debugging
2023-08-19 23:23:53 +09:00
wiz
65847547b9 ops: Tweak nginx cache for slurper 2023-08-19 23:23:28 +09:00
Mononaut
ed9d31686e Add cluster/tab to unfurler logs 2023-08-19 21:07:10 +09:00
Mononaut
7f2a459575 Fix SSR puppeteer page initialization 2023-08-19 21:05:28 +09:00
Mononaut
126e87a746 More more verbose unfurler logs 2023-08-19 19:35:52 +09:00
Mononaut
2819cea509 Reduce core mempool tx sync to 8 concurrent requests 2023-08-19 19:02:30 +09:00
junderw
2a8a403da7 Use p-limit to limit concurrent requests 2023-08-19 18:53:32 +09:00
Mononaut
3bda5537d7 More verbose unfurler logs 2023-08-19 18:50:57 +09:00
Mononaut
df8b6cd53c Fix unfurler resource proxying 2023-08-19 18:40:11 +09:00
Mononaut
e4fcadf39b More verbose comments on $getMempoolTransactionsExtended 2023-08-19 04:47:19 +09:00
nymkappa
c4f2f4ca66 [menu] handle logout without reload, show signin in sidebar when not logged in 2023-08-18 18:33:09 +02:00
nymkappa
0c1221dc07 [menu] only show on official mainnet with accelerator enabled 2023-08-18 18:12:45 +02:00
nymkappa
d1c9e8b56e [menu] show username at the top of the menu 2023-08-18 18:04:40 +02:00
Mononaut
1b2122cd35 Don't overload core with mempool tx requests 2023-08-19 01:02:27 +09:00
nymkappa
5aff2c74e6 [menu] show hamburger when logged out, fix menu scrolling on small screen 2023-08-18 17:56:07 +02:00
softsimon
f36ee36576 Merge pull request #4180 from mempool/junderw/fix-nbits-calculations
Fix: calcBitsDifference regtest fix
2023-08-18 17:27:25 +02:00
junderw
08a09bf371 Fix: calcBitsDifference regtest fix 2023-08-17 23:57:20 -07:00
nymkappa
1bdbb1b908 [menu] logout is a special item 2023-08-17 22:13:06 +02:00
wiz
f1f97320df ops: Fix install script crash for removed electrs-start-liquidtestnet 2023-08-18 03:51:09 +09:00
softsimon
52cc3022c6 Merge pull request #4146 from mempool/mononaut/fix-mempool-blocks-stacking
Fix stacked mempool blocks layout & width
2023-08-17 19:17:19 +02:00
nymkappa
91e3943a74 [menu] call services api to fetch user menu 2023-08-17 18:59:27 +02:00
nymkappa
23b871631a [menu] write menu component with hardcoded values 2023-08-17 18:51:39 +02:00
wiz
e975bacaa1 Merge branch 'master' into mononaut/fix-mempool-blocks-stacking 2023-08-17 23:21:00 +09:00
nymkappa
ab911d5c9e [tx] fix eta css with accelerate button 2023-08-17 14:28:33 +02:00
wiz
2c9e20dd87 ops: Always start xorg for unfurler even if no GPU detected 2023-08-17 18:38:17 +09:00
wiz
487d5de0ef Merge pull request #4152 from mempool/mononaut/unfurler-mode-headers
Select unfurl mode with route prefix
2023-08-17 16:48:26 +09:00
wiz
1653f003bc Merge branch 'master' into mononaut/unfurler-mode-headers 2023-08-17 16:39:30 +09:00
softsimon
21ea6f82fc Merge pull request #4134 from mempool/knorrium/dependabot_frontend_groups
Add frontend dependency groups to dependabot
2023-08-17 06:22:11 +02:00
softsimon
ca682d5879 Merge pull request #4164 from mempool/knorrium/fix_docker_start
Fix Docker start script and unit test
2023-08-17 06:20:39 +02:00
Felipe Knorr Kuhn
cd3b11407b Merge branch 'master' into knorrium/dependabot_frontend_groups 2023-08-16 21:15:28 -07:00
Felipe Knorr Kuhn
004208e9c8 Fix linting 2023-08-16 16:16:04 -07:00
Felipe Knorr Kuhn
44d2ea1263 Fix Docker config unit test to work with array values 2023-08-16 16:08:45 -07:00
Felipe Knorr Kuhn
27797b8f1d Add missing ESPLORA FALLBACK vars to the start script 2023-08-16 16:08:01 -07:00
Felipe Knorr Kuhn
9aedccdb32 Remove trailing comma on the Docker JSON 2023-08-16 16:07:27 -07:00
Mononaut
b1e1601ccf Switch unfurl proxy header to url prefix 2023-08-16 21:55:03 +09:00
hunicus
1dd66e6695 Add bimi svg 2023-08-16 12:43:36 +09:00
wiz
681d4bffd7 Merge branch 'master' into mononaut/unfurler-mode-headers 2023-08-16 04:07:35 +09:00
wiz
8f2a2d1c81 ops: Add delay before warm cache loop begins 2023-08-16 04:03:17 +09:00
wiz
0bfd01e732 ops: Add unfurl/slurp queries to nginx warm cache script 2023-08-16 03:51:10 +09:00
wiz
83a92a7e3a ops: Add nginx config for /unfurler and /slurper prefixes 2023-08-16 03:27:09 +09:00
softsimon
dbdbe29281 Merge pull request #4153 from mempool/hunicus/rm-luminex
Remove luminex from about page
2023-08-14 21:30:44 +01:00
hunicus
a2f67990b5 Remove luminex from about page 2023-08-15 04:24:34 +09:00
Mononaut
5511795fbb Fix mempool slide on page change 2023-08-14 19:34:31 +09:00
Mononaut
13f6f9f9e5 Select unfurl mode with X-Unfurl-Type header 2023-08-14 18:05:09 +09:00
Mononaut
8c21d106fc Fix stacked mempool blocks layout & width 2023-08-14 02:37:46 +09:00
wiz
e9165e5dd8 Merge pull request #4107 from mempool/mononaut/unfurler-fixes
Quick fixes for unfurler/seo renderer
2023-08-13 15:40:22 +09:00
hunicus
0a918b8fa8 Add enterprise note to backend readme 2023-08-13 13:04:58 +09:00
hunicus
102579baa9 Add enterprise note to production readme 2023-08-13 13:00:47 +09:00
hunicus
b3f90e2981 Add mempool enterprise note to top-level readme 2023-08-13 12:55:14 +09:00
wiz
2e8a9c75ee Merge pull request #4138 from mempool/mononaut/accelerate-mainnet-only
Hide accelerate CTA on non-mainnet networks
2023-08-12 17:19:46 +09:00
hunicus
a23881e62c Implement enterprise cta in docs [desktop] 2023-08-11 17:11:05 +09:00
Mononaut
e8e245cc75 Hide accelerate CTA on non-mainnet networks 2023-08-10 20:27:49 +09:00
nymkappa
6199216c54 use new services api to fetch chads profile image as well 2023-08-10 18:08:30 +09:00
nymkappa
b988a4c526 use new services api to fetch chad/whale profile image 2023-08-10 18:01:05 +09:00
hunicus
45ba50e82c Change citadel link on about page 2023-08-10 16:26:07 +09:00
wiz
b6da116dfc Merge branch 'master' into mononaut/unfurler-fixes 2023-08-10 16:02:48 +09:00
wiz
a9e92d0593 Merge pull request #4121 from mempool/hunicus/footer-refinement-exp
Refine footer design/layout
2023-08-10 16:02:20 +09:00
wiz
db90e77a32 Merge branch 'master' into hunicus/footer-refinement-exp 2023-08-10 15:51:07 +09:00
Felipe Knorr Kuhn
c2cad416e2 Add frontend dependency groups to dependabot 2023-08-09 22:33:59 -07:00
wiz
7191ca6915 Merge pull request #4133 from mempool/knorrium/dependabot_tweak 2023-08-10 13:59:19 +09:00
Felipe Knorr Kuhn
fb3cb127b0 Set dependabot to fix the package.json file in addition to the lock file 2023-08-09 21:51:11 -07:00
wiz
9f007d78f8 ops: Fix fonts config from installer 2023-08-09 23:44:03 +09:00
wiz
c5bdcec164 ops: Add delay before starting bitcoind/elementsd/electrs 2023-08-09 23:43:49 +09:00
hunicus
d4f9600ff1 Make footer refinements responsive 2023-08-09 16:42:16 +09:00
softsimon
8b260ce21c Merge pull request #4108 from mempool/simon/disable-historical-testnets
Handle historical price API calls when using any testnet
2023-08-09 10:51:58 +04:00
nymkappa
89be841e64 [accelerator] hide accelerate button if already accelerating 2023-08-08 17:10:59 +09:00
Stephan Oeste
fc73dcc344 Fixing proxy_buffer_size error nginx.conf 2023-08-07 20:08:30 +02:00
softsimon
8d7c04bcda Merge pull request #4111 from mempool/nymkappa/mining-pool-api
[mining] add /api/v1/pools API to list mining pools
2023-08-07 14:33:58 +09:00
nymkappa
e4c17e5011 [mining] add /api/v1/mining/pools API to list mining pools 2023-08-07 12:16:01 +09:00
softsimon
b03c3745a2 Merge pull request #4110 from mempool/knorrium/backend_unit_test_tweaks
Backend unit test tweaks
2023-08-07 12:14:01 +09:00
softsimon
41eecfa7df Merge pull request #4095 from mempool/mononaut/refactor-address-tracking
Refactor websocket address tracking
2023-08-07 12:13:07 +09:00
Mononaut
38e9021e8c simplify scriptpubkey tracking 2023-08-07 10:43:42 +09:00
Felipe Knorr Kuhn
adc46b6ae5 Update Github workflow to run with the CI flag 2023-08-06 08:01:28 -07:00
Felipe Knorr Kuhn
8912bac0ac Add test:ci task 2023-08-06 08:00:49 -07:00
Felipe Knorr Kuhn
e4fca3c2b7 Log verbose Docker checks only when running on CI 2023-08-06 08:00:30 -07:00
hunicus
2855fff702 Make basic footer refinement
TODO: responsiveness
2023-08-06 16:16:16 +09:00
Mononaut
8dbf9f29cf Send unfurler fallback imgs directly 2023-08-06 15:49:11 +09:00
softsimon
cbebbd40f1 Handle price API in the frontend when testnet 2023-08-06 15:41:57 +09:00
Mononaut
9aa778e44e reboot unfurler periodically 2023-08-06 13:47:38 +09:00
Mononaut
6fc645a454 Remove unfurler soft404 debug spam 2023-08-06 13:47:20 +09:00
softsimon
b977c4332f Merge pull request #4076 from mempool/knorrium/update_cypress_deps
Update Cypress deps
2023-08-06 13:06:46 +09:00
Felipe Knorr Kuhn
a79e214a6a Merge branch 'master' into knorrium/update_cypress_deps 2023-08-05 14:24:24 -07:00
wiz
6f11defea2 Merge pull request #4103 from mempool/ops/enable-prod-replication
Enable audit replication for production
2023-08-05 22:10:10 +09:00
wiz
53ba48de9f ops: Enable replication for production 2023-08-05 21:57:43 +09:00
wiz
3fb097bfff Merge pull request #4099 from mempool/mononaut/esplora-failover
new health-check based esplora failover mechanism
2023-08-05 20:59:30 +09:00
Mononaut
9138c3b676 always switch back to local if available 2023-08-05 20:39:02 +09:00
softsimon
2ceafcacc6 Disable historical prices on testnets 2023-08-05 20:29:00 +09:00
Mononaut
85935d8f90 allow protocol, port & path in fallback urls 2023-08-05 20:06:19 +09:00
Mononaut
ae5e1e6d29 Fix failover debug prints 2023-08-05 19:55:33 +09:00
softsimon
bcfc704f7a Merge pull request #4102 from mempool/hunicus/footer-space
Add space below logo in footer
2023-08-05 19:37:41 +09:00
Mononaut
e512feef74 Add debug prints, fix POST request 2023-08-05 19:25:00 +09:00
softsimon
b11e31e54b Merge branch 'master' into knorrium/update_cypress_deps 2023-08-05 19:13:19 +09:00
hunicus
b1ed05e95e Add space below logo in footer 2023-08-05 19:06:25 +09:00
Mononaut
2095f90262 new health-check based esplora failover mechanism 2023-08-05 19:02:46 +09:00
wiz
794a4ded9c Merge pull request #3169 from mempool/mononaut/seo-ssr
dynamically render search crawler requests
2023-08-05 18:34:45 +09:00
wiz
cf4f779e59 Merge remote-tracking branch 'origin/master' into mononaut/seo-ssr 2023-08-05 18:23:12 +09:00
softsimon
c1c69d7272 Merge pull request #4096 from mempool/mononaut/speed-up-rbf-detection
Speed up RBF detection
2023-08-05 17:37:50 +09:00
softsimon
a4e7219214 Adding RBF tests 2023-08-05 17:20:07 +09:00
softsimon
af8e5b60ee Merge pull request #4098 from mempool/fix/liquid-bits-calc
Fix: Difficulty calculations for Liquid networks must be NaN
2023-08-05 17:10:08 +09:00
Jonathan Underwood
6ff7a59bfb Merge branch 'master' into fix/liquid-bits-calc 2023-08-05 00:00:02 -07:00
softsimon
95341806c3 Merge pull request #4100 from mempool/feat/rust-build-revert
Feature: Build Rust during build script AND install
2023-08-05 15:58:16 +09:00
junderw
e994aac162 Feature: Build Rust during build script AND install 2023-08-04 23:40:10 -07:00
junderw
ea926660fe Fix: Difficulty calculations for Liquid networks must be NaN 2023-08-04 20:42:14 -07:00
nymkappa
223f6df371 fix 'large' class trigger 2023-08-05 10:52:11 +09:00
nymkappa
869a879676 Merge branch 'master' into nymkappa/tx-overflow 2023-08-05 10:10:01 +09:00
nymkappa
5959c426f3 Merge branch 'master' into nymkappa/tx-overflow 2023-08-05 10:09:22 +09:00
Felipe Knorr Kuhn
33a6f81265 Merge branch 'master' into knorrium/update_cypress_deps 2023-08-04 08:51:00 -07:00
Felipe Knorr Kuhn
367bcbda83 Update cypress action to node 18 2023-08-04 08:40:15 -07:00
Felipe Knorr Kuhn
e3114144e1 Tweak imports again 2023-08-04 08:36:05 -07:00
Felipe Knorr Kuhn
da4f891e2f Use full path for import 2023-08-04 08:23:29 -07:00
Felipe Knorr Kuhn
e4a43fcca5 Update tsconfig for the tests 2023-08-04 08:19:19 -07:00
Mononaut
3ec676ca90 Speed up RBF detection 2023-08-04 19:11:49 +09:00
softsimon
9da9c2750d Merge pull request #4064 from mempool/mononaut/better-mobile-difficulty-tooltip
Improve difficulty tooltip display on mobile
2023-08-04 18:41:07 +09:00
softsimon
d2641cc927 Merge pull request #4085 from mempool/mononaut/fast-mempool-sync
use bulk mempool post api to batch mempool update requests
2023-08-04 17:26:01 +09:00
softsimon
b026f5a481 Removing console log 2023-08-04 15:55:22 +09:00
softsimon
45ddab519d Merge pull request #4093 from mempool/fix/packaging-rust-gbt
Fix: Rust-GBT packaging needs fixing
2023-08-04 15:52:20 +09:00
junderw
0535e8c5f9 Fix: Rust-GBT packaging needs fixing 2023-08-04 15:45:34 +09:00
softsimon
b4ec69ce7a Merge pull request #4058 from mempool/mononaut/prices-api
Current fiat prices API
2023-08-04 15:39:35 +09:00
wiz
989e4832cc Merge pull request #3995 from mempool/mononaut/acceleration-viz
Acceleration visualization
2023-08-04 15:34:02 +09:00
softsimon
0d777c24c5 Merge pull request #4090 from mempool/mononaut/missing-latest-replacements
resume tracking subscriptions after websocket reconnect
2023-08-04 15:33:33 +09:00
mononaut
101de3bac7 Fix PRICE_UPDATES_PER_HOUR docker default
Co-authored-by: nymkappa <9780671+nymkappa@users.noreply.github.com>
2023-08-04 15:23:55 +09:00
wiz
c3f83f74ce Merge branch 'master' into mononaut/acceleration-viz 2023-08-04 15:10:02 +09:00
wiz
39e36936bc Merge pull request #3795 from mempool/nymkappa/accelerator-soft-launch
[accelerator] prepare soft launch
2023-08-04 14:31:39 +09:00
nymkappa
11248821c5 hide sponsor buttons 2023-08-04 14:30:40 +09:00
Mononaut
3074d814e7 precompute address transactions for websocket msg loop 2023-08-04 13:59:49 +09:00
softsimon
22aa45f055 Merge pull request #4094 from mempool/dependabot/npm_and_yarn/backend/mysql2-3.6.0
Bump mysql2 from 3.5.2 to 3.6.0 in /backend
2023-08-04 13:56:27 +09:00
softsimon
07f95acc29 Base expiry on update frequency 2023-08-04 13:26:19 +09:00
softsimon
2892bfa1d8 Fixing cycle reset at top of the hour 2023-08-04 13:23:09 +09:00
dependabot[bot]
356ab9c6ae Bump mysql2 from 3.5.2 to 3.6.0 in /backend
Bumps [mysql2](https://github.com/sidorares/node-mysql2) from 3.5.2 to 3.6.0.
- [Release notes](https://github.com/sidorares/node-mysql2/releases)
- [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md)
- [Commits](https://github.com/sidorares/node-mysql2/compare/v3.5.2...v3.6.0)

---
updated-dependencies:
- dependency-name: mysql2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-04 02:40:58 +00:00
nymkappa
851d030878 [about] re-enable two sponsor buttons 2023-08-04 10:23:15 +09:00
dni ⚡
f7ec5ca82e Update liquid-master-page.component.html
ngIf for BISQ_ENABLED was missing
2023-08-03 17:47:30 +02:00
softsimon
813f3dc09d Updating config sample 2023-08-03 18:26:24 +09:00
softsimon
172c77328b Changing setting to per hour 2023-08-03 18:22:52 +09:00
softsimon
b213f43a91 Erasing unused PRICE_DATA_SERVER from readme 2023-08-03 17:43:03 +09:00
softsimon
284d39baa8 Update price at least every hour 2023-08-03 17:43:02 +09:00
softsimon
af4d0b4d3f Allow priceUpdater to run without storing to database 2023-08-03 17:43:02 +09:00
softsimon
83a487ecae Setting fixture to fixed number 2023-08-03 17:43:02 +09:00
softsimon
bcb3b39bd8 Updating start.sh and README 2023-08-03 17:43:02 +09:00
softsimon
ae59f95ba9 Refactoring price update config. Fixing last price time. 2023-08-03 17:43:02 +09:00
softsimon
b2d4000b2d Update backend/src/api/prices/prices.routes.ts 2023-08-03 17:43:02 +09:00
softsimon
864d9239ce Update backend/src/__fixtures__/mempool-config.template.json 2023-08-03 17:43:02 +09:00
Mononaut
09c23b1241 configurable price update frequency 2023-08-03 17:43:02 +09:00
Mononaut
22665f149b add /prices api endpoint 2023-08-03 17:43:01 +09:00
nymkappa
683d775c7e Merge branch 'master' into nymkappa/no-db-blocks-list 2023-08-03 16:50:19 +09:00
Mononaut
cb5b96485c resume tracking subscriptions after websocket reconnect 2023-08-03 16:17:17 +09:00
nymkappa
4ee703325a [footer] polish cta using update footer with logo 2023-08-03 16:12:59 +09:00
Mononaut
3d6a8a501d limit mouse events to difficulty bar 2023-08-03 15:51:09 +09:00
nymkappa
0111d8806b Merge branch 'mononaut/acceleration-viz' into nymkappa/accelerator-soft-launch 2023-08-03 15:43:28 +09:00
Mononaut
d06fe83bd9 Improve difficulty tooltip display on mobile 2023-08-03 15:36:36 +09:00
nymkappa
8936273aeb Merge branch 'master' into mononaut/acceleration-viz 2023-08-03 15:28:56 +09:00
nymkappa
99a60ab22a add ACCELERATOR frontend setting 2023-08-03 15:20:48 +09:00
nymkappa
7ec5d8265f toggle header visibility in master page component 2023-08-03 15:20:48 +09:00
nymkappa
1458e89f3a [footer] main cta points to /accelerator 2023-08-03 15:20:48 +09:00
nymkappa
5846862d55 [footer] dynamic CTA button based on login status 2023-08-03 15:20:48 +09:00
nymkappa
727d170c9c [tx] add accel shortcut into transaction component 2023-08-03 15:20:47 +09:00
nymkappa
6c2c62ba2e [lightning] claim your node button 2023-08-03 15:20:47 +09:00
nymkappa
f2ae858097 [sponsors] show profile by tiers on about page 2023-08-03 15:20:19 +09:00
nymkappa
d236d89717 [mining] send pool unique id in /pools API 2023-08-03 15:08:14 +09:00
softsimon
cac2a984ab Merge pull request #4089 from andrewtoth/andrewtoth/sig
Accept CLA
2023-08-03 12:59:18 +09:00
andrewtoth
e0b2ffa527 Accept CLA 2023-08-03 03:46:15 +00:00
softsimon
2c7919ace6 Merge pull request #4065 from mempool/mononaut/log-scale-fee-graph
Use log10 scale for projected block fee graph
2023-08-02 18:35:46 +09:00
wiz
e9cd41722b Merge pull request #4081 from mempool/mononaut/fix-null-coinbase-fee
fix null coinbase fees in block summary
2023-08-02 16:05:09 +09:00
Mononaut
ca0c6b5e6e use bulk mempool/txs post api to batch mempool update requests 2023-08-02 15:05:27 +09:00
softsimon
b1d5ba890f Merge pull request #4084 from mempool/hunicus/30-footer-yacht
Show tool list when no other networks available in footer
2023-08-02 14:44:19 +09:00
softsimon
9373fb3dd1 Minor ngIf else template optimization 2023-08-02 14:34:59 +09:00
softsimon
f8ca53fdf0 Merge pull request #4078 from mempool/fix/difficulty-calc
Fix: Use bits to calculate difficulty instead of floating points
2023-08-02 13:08:55 +09:00
hunicus
ddd5baf44e Show tool list when no other networks available 2023-08-02 12:46:59 +09:00
mononaut
b365ad3ba4 Merge branch 'master' into fix/difficulty-calc 2023-08-02 11:00:32 +09:00
softsimon
63993b01aa Merge pull request #4083 from mempool/mononaut/fix-partial-index-difficulty
fix partially indexed difficulty bug
2023-08-01 18:49:45 +09:00
Mononaut
ab784cede2 fix partially indexed difficulty bug 2023-08-01 18:41:48 +09:00
wiz
648a732352 Merge pull request #3853 from mempool/hunicus/accelerate-disclaimer
Replace disclaimer text regarding tx acceleration
2023-08-01 18:36:41 +09:00
wiz
e5b8b73077 Merge pull request #4080 from mempool/hunicus/30-footer
Add graphic to footer + simplify left footer column
2023-08-01 18:34:17 +09:00
hunicus
8fe78fa12b Improve conditions for showing network links 2023-08-01 18:08:49 +09:00
hunicus
f166cb7974 Remove commented/inactive social links 2023-08-01 17:54:09 +09:00
hunicus
d3532eb734 Improve show conditions for explore links 2023-08-01 17:54:09 +09:00
hunicus
4cb379bb0f Change more networks to networks 2023-08-01 17:54:09 +09:00
hunicus
316028fe66 Add space below tagline 2023-08-01 17:54:09 +09:00
Mononaut
543357f1db fix null coinbase fees in block summary 2023-08-01 17:33:03 +09:00
wiz
c93f52f3a8 Merge branch 'master' into hunicus/30-footer 2023-08-01 16:54:48 +09:00
junderw
9bf334a22d Fix: Use bits to calculate difficulty instead of floating points 2023-08-01 00:52:45 -07:00
softsimon
22e57ae95c Merge pull request #4079 from mempool/simon/mempool-break-poll-limit
Base mempool break limit of current poll rate
2023-08-01 16:00:42 +09:00
hunicus
a1af41804a Implement wiz footer suggestions 2023-08-01 16:00:16 +09:00
softsimon
b0080a5859 Base mempool break limit of current poll rate 2023-08-01 15:55:03 +09:00
wiz
5c36692799 Merge pull request #3973 from mempool/ops/move-electrs-scripts-to-electrs-repo
ops: Move electrs scripts to mempool/electrs repo
2023-08-01 15:38:46 +09:00
wiz
97877053bf Merge pull request #4068 from mempool/mononaut/electrs-blocks
Get blocks from electrs again
2023-08-01 15:33:13 +09:00
softsimon
f9a44a5fbb Merge pull request #4074 from mempool/fix_rust_gbt_typo
Fix rust gbt docker  typo
2023-08-01 14:14:56 +09:00
softsimon
6b5bcaa279 Merge pull request #4077 from bguillaumat/patch-1
Add bguillaumat.txt to contributors
2023-08-01 14:07:18 +09:00
wiz
8c396978a8 Merge branch 'master' into mononaut/electrs-blocks 2023-08-01 13:54:05 +09:00
wiz
a51d2a6aec Merge pull request #4071 from mempool/mononaut/fast-indexing
Fast indexing
2023-08-01 13:53:56 +09:00
Mononaut
a863c17408 Fix difficulty indexing db queries to return bits 2023-08-01 13:28:56 +09:00
Mononaut
0924bb6ac0 Use bits to detect difficulty adjustments, not difficulty 2023-08-01 13:28:56 +09:00
Mononaut
910e67ff36 Get blocks from electrs again 2023-08-01 13:28:56 +09:00
Bastien Guillaumat
aa17f8203c Add bguillaumat.txt to contributors 2023-08-01 03:13:58 +02:00
Felipe Knorr Kuhn
a23cd5ad29 Update Cypress deps 2023-07-31 14:44:59 -07:00
Felipe Knorr Kuhn
b7b6548cce Fix RUST GBT Docker override 2023-07-31 14:11:31 -07:00
Felipe Knorr Kuhn
17f1cb8648 Fix config unit test that was returning early 2023-07-31 14:10:49 -07:00
softsimon
d5dca95fbe Merge pull request #4072 from mempool/simon/electrum-scripthash-fix
Fix scripthash lookup for Electrum*
2023-07-31 21:10:59 +09:00
softsimon
bed7c1b283 Fix scripthash lookup for Electrum* 2023-07-31 18:29:40 +09:00
Mononaut
0d25ef0b5b Get block txs from esplora, index CPFP together with summaries 2023-07-31 18:13:16 +09:00
Mononaut
6b7d8d95f7 reduce mempool poll rate while indexing 2023-07-31 18:13:16 +09:00
Mononaut
bafc0bd9cf fix indexing log prints 2023-07-31 18:13:11 +09:00
softsimon
7a87f74b22 Merge pull request #4070 from mempool/mononaut/redis-fixes
Misc Redis fixes
2023-07-31 17:28:54 +09:00
Mononaut
49db63d888 Faster Redis tx deletion, fix debug log level 2023-07-31 16:38:18 +09:00
Mononaut
363fc1b00b Get blocks from electrs again 2023-07-31 15:39:02 +09:00
wiz
36a26fc2ce Merge pull request #4063 from mempool/mononaut/simple-redis
Simple Redis
2023-07-31 15:34:08 +09:00
softsimon
73b71c4914 Fixing docker config and tests 2023-07-31 14:28:56 +09:00
Mononaut
dcfab218fb Improve Redis logging 2023-07-31 12:21:28 +09:00
Mononaut
c79a597c96 switch from redis-json to simple key-value redis entries 2023-07-31 12:16:37 +09:00
Mononaut
a393f42b5e strip non-essential data from redis cache txs 2023-07-31 12:16:36 +09:00
Mononaut
6ac58f2da7 store redis mempool in sharded json object 2023-07-31 12:16:36 +09:00
Mononaut
a9f8bbbcce Add network and schema versioning to redis cache 2023-07-31 12:16:34 +09:00
Mononaut
d65bddd30b Add transactions to Redis cache in manageable batches 2023-07-31 12:16:34 +09:00
Mononaut
b6cb539470 Fix redis feature merge conflicts 2023-07-31 12:16:34 +09:00
Mononaut
aea2b1ec6b Add RBF data to Redis cache 2023-07-31 12:16:33 +09:00
Mononaut
5138f9a254 Implement Redis cache for block and mempool data 2023-07-31 12:16:33 +09:00
wiz
8cfa4ef1a1 Merge pull request #4066 from mempool/wiz/update-preview-image
Remove text from mempool.space preview image
2023-07-31 11:24:17 +09:00
wiz
16401044f6 Remove text from mempool.space preview image 2023-07-31 11:16:43 +09:00
wiz
c88b7ddc77 ops: Use TK7 for unfurler 2023-07-31 11:12:54 +09:00
Mononaut
945a8ce92e Use log10 scale for projected block fee graph 2023-07-30 18:56:57 +09:00
softsimon
8b012a96f3 Merge pull request #4034 from mempool/mononaut/mobile-difficulty-tooltips
Fix difficulty tooltip position
2023-07-30 14:26:36 +09:00
softsimon
8b6bb54efb Merge pull request #4062 from fiatjaf/patch-1
Create fiatjaf.txt
2023-07-29 23:52:32 +09:00
fiatjaf_
2670589293 Create fiatjaf.txt 2023-07-29 09:27:12 -03:00
softsimon
91eef1c4d9 Merge pull request #4061 from rishkwal/master
rishkwal contributor license agreement added
2023-07-29 21:14:02 +09:00
Rishabh
562a5f6878 rishkwal contributor license agreement added 2023-07-29 15:54:34 +05:30
softsimon
5c20fd71e1 Merge pull request #3905 from mempool/hunicus/msop-r
Update mosp strings from tm to r
2023-07-29 18:34:31 +09:00
softsimon
adf093eca5 Merge pull request #4026 from mempool/nymkappa/charts-landscape-mobile
[graphs] fix min height in mobile landscape
2023-07-29 18:11:33 +09:00
softsimon
d14d286f24 Merge pull request #4057 from dni/patch-1
[BUG]: Update frontend entrypoint.sh
2023-07-29 17:50:58 +09:00
softsimon
ecd80aad6a Merge pull request #4056 from mempool/mononaut/compressed-p2pk
Add support for compressed p2pk addresses
2023-07-29 17:48:26 +09:00
softsimon
1b248c24f1 Merge pull request #4050 from mempool/mononaut/retry-block-txs
Handle failures while fetching block transactions
2023-07-29 17:12:34 +09:00
softsimon
f35f630695 Merge pull request #4060 from Czino/add-contributor-license-agreement
Add contributor license agreement
2023-07-29 17:09:30 +09:00
softsimon
8172ec9245 Merge pull request #4053 from mempool/nymkappa/pool-logo
[mining] use .slug to load pool logo
2023-07-29 17:07:06 +09:00
softsimon
14c86b84b8 Merge pull request #4059 from mempool/mononaut/connection-state
fix websocket connection state observable
2023-07-29 17:05:17 +09:00
Czino
1f8f40011a Update date 2023-07-29 09:57:40 +02:00
Czino
2719be9075 Add contributor license agreement 2023-07-29 09:53:47 +02:00
Mononaut
354c119e99 fix websocket connection state observable 2023-07-29 15:22:15 +09:00
nymkappa
f8faccd502 Merge branch 'master' into mononaut/acceleration-viz 2023-07-29 13:51:49 +09:00
dni ⚡
cc27c0159e [BUG]: Update frontend entrypoint.sh
Typo of variable LIQUID_ENABLED
2023-07-28 23:04:44 +02:00
wiz
b1bdb52851 ops: Fix a classic typo in mempool clear protection log print 2023-07-28 23:40:06 +09:00
softsimon
d52e2cd585 Merge pull request #4054 from mempool/mononaut/mined-address-txs
Show new mined transactions on the address page
2023-07-28 20:43:22 +09:00
Mononaut
2c613195cc Add support for compressed p2pk addresses 2023-07-28 19:17:52 +09:00
wiz
1ca99e9967 Merge branch 'master' into hunicus/msop-r 2023-07-28 17:29:25 +09:00
softsimon
f9ddc3cc5f Merge pull request #4049 from mempool/mononaut/p2pk-websocket-subscription
Support p2pk track-address websocket subscriptions
2023-07-28 17:03:24 +09:00
Mononaut
63ccecf410 remove unused calcScriptHash function 2023-07-28 16:14:28 +09:00
Mononaut
5b2470955d track p2pk addresses by scriptpubkey not scripthash 2023-07-28 16:09:39 +09:00
Mononaut
74b87b6006 Support p2pk track-address websocket subscriptions 2023-07-28 16:09:39 +09:00
Mononaut
9b65fbd98c Show new mined transactions on the address page 2023-07-28 15:56:55 +09:00
nymkappa
3f3f0db2f2 [mining] use .slug to load pool logo 2023-07-28 13:45:04 +09:00
nymkappa
48e3be875d Merge branch 'master' into nymkappa/no-db-blocks-list 2023-07-28 09:37:55 +09:00
nymkappa
c993ee51cc Merge branch 'master' into nymkappa/charts-landscape-mobile 2023-07-28 09:37:45 +09:00
softsimon
395f47516a Merge pull request #4048 from mempool/mononaut/fix-key-event-leak
Fix key navigation subscription leak
2023-07-27 17:20:30 +09:00
Mononaut
589adb95c3 remove stray debugging log 2023-07-27 14:49:21 +09:00
Mononaut
1fd5b975f1 Handle failures while fetching block transactions 2023-07-27 11:45:16 +09:00
nymkappa
67cff804a6 /accelerations -> /accelerator/accelerations 2023-07-26 15:08:35 +09:00
Mononaut
cde4af5930 fix mismatched use of gbt implementations 2023-07-26 15:08:35 +09:00
Mononaut
928a8be846 fix pool-dependent accelerated audit handling 2023-07-26 15:08:34 +09:00
Mononaut
7c641544b2 check in missing rust-gbt file 2023-07-26 15:08:34 +09:00
Mononaut
2a2aee21fb fix audit highlightning and fee ranges 2023-07-26 15:08:34 +09:00
Mononaut
3838d947b1 fix tests 2023-07-26 15:08:34 +09:00
Mononaut
ffc2b6c53c Add acceleration support to rust gbt 2023-07-26 15:08:34 +09:00
Mononaut
6494f890fe include per-tx pools in /accelerations endpoint 2023-07-26 15:08:34 +09:00
Mononaut
ba54bc9d15 support for acceleration mempool blocks animation 2023-07-26 15:08:33 +09:00
Mononaut
083bfdba06 Refactor accelerated audits 2023-07-26 15:08:33 +09:00
Mononaut
20b3ceab1e Implement accelerations API & config setting 2023-07-26 15:08:33 +09:00
Mononaut
c246db1cf9 Refactor acceleration tracking 2023-07-26 15:08:33 +09:00
Mononaut
aa24f6a84d use accelerated rates for block templates & show in viz 2023-07-26 15:08:33 +09:00
Mononaut
e489f713eb include accelerated tx data in block audits 2023-07-26 15:08:26 +09:00
softsimon
7edd40246c Merge branch 'master' into nymkappa/charts-landscape-mobile 2023-07-25 21:37:35 +09:00
Mononaut
e15c0c6c7a Fix key navigation subscription leak 2023-07-25 21:18:19 +09:00
softsimon
a13c424869 Merge pull request #4046 from mempool/mononaut/audit-exclude-conflicts
Exclude all conflicting transactions from audit score
2023-07-25 20:22:37 +09:00
softsimon
8ee9f52634 Merge pull request #4028 from mempool/nymkappa/search-autofocus
[search bar] only autofocus when in `/`, `/mining` and `/lightning`
2023-07-25 18:19:17 +09:00
softsimon
b58abe4779 Merge pull request #4045 from mempool/mononaut/fast-blocks
Faster blocks
2023-07-25 16:07:52 +09:00
nymkappa
6d5be78dd0 [search bar] use afterviewinit instead of afterviewchecked 2023-07-25 15:03:39 +09:00
softsimon
07b0f24cf1 Update frontend/src/app/shared/pipes/bytes-pipe/utils.ts 2023-07-25 14:26:43 +09:00
Mononaut
d7b874ac49 Exclude all conflicting transactions from audit score 2023-07-25 14:17:02 +09:00
nymkappa
0a0978f7d7 Merge branch 'master' into nymkappa/search-autofocus 2023-07-25 13:31:15 +09:00
Mononaut
25925751eb refactor $getTransactionsExtended to optimise API requests 2023-07-25 12:09:13 +09:00
Mononaut
0ebfd6f017 Fetch block txs from mempool/electrs in bulk 2023-07-25 10:27:43 +09:00
wiz
81d1c0a4d5 Merge pull request #4043 from mempool/mononaut/mempool-sync-status
Mempool inSync status
2023-07-24 19:39:17 +09:00
Mononaut
36fe5627c7 fix mempool sync skeleton loaders on Core backend 2023-07-24 17:49:34 +09:00
nymkappa
9e43dadad8 Merge branch 'master' into nymkappa/search-autofocus 2023-07-24 17:28:47 +09:00
Mononaut
2d463326e0 fix gbt mempool size mismatch bug 2023-07-24 17:22:38 +09:00
Mononaut
a6edfcc272 show mempool skeleton while not inSync 2023-07-24 16:22:35 +09:00
Mononaut
de4265a6d1 More conservative mempool inSync status 2023-07-24 16:22:22 +09:00
softsimon
dc43a81899 Merge pull request #4035 from mempool/mononaut/lightning-balance-bars
Lightning channel balance progress bars
2023-07-24 16:22:20 +09:00
Mononaut
e59c961f25 Add electrs sync progress updates 2023-07-24 14:59:51 +09:00
Mononaut
db715a1dba Switch to batch mempool/txs/:txid endpoint 2023-07-24 14:44:43 +09:00
Mononaut
202d4122b4 load mempool txs in bulk from esplora 2023-07-24 14:44:42 +09:00
nymkappa
f62f2341f4 Merge branch 'master' into nymkappa/search-autofocus 2023-07-24 13:39:17 +09:00
softsimon
e2fdacfddd Merge pull request #4041 from mempool/simon/sanitize-lightning-channel-id
Sanitize channel id search
2023-07-24 13:26:20 +09:00
softsimon
c84a444f79 Merge pull request #4039 from mempool/mononaut/fix-sigops
Fix missing sigops
2023-07-24 13:26:13 +09:00
softsimon
ee2d8f8c5a Sanitize channel id search 2023-07-24 13:21:06 +09:00
nymkappa
7db391d762 [search bar] add missing autofocus on lightning dashboard 2023-07-24 11:51:15 +09:00
nymkappa
da4a20cb85 [search bar] dont auto focus if touch screen 2023-07-24 11:35:46 +09:00
Mononaut
44f2217a68 Fix typo which skips sigop calculation 2023-07-24 10:49:29 +09:00
nymkappa
6ce3c1d75d [search bar] auto focus only in dashboards 2023-07-24 10:18:00 +09:00
wiz
caa8cfbc0e Another hotfix for CLN crash 2023-07-23 22:35:32 +09:00
wiz
02f361af73 Hotfix for CLN crash 2023-07-23 22:21:53 +09:00
Mononaut
a1e05c0c37 Lightning channel balance progress bars 2023-07-23 18:00:24 +09:00
Mononaut
05affa5ad4 Fix difficulty tooltip position 2023-07-23 16:19:48 +09:00
softsimon
5e91af168b Merge pull request #4027 from mempool/mononaut/p2pk
Support P2PK address types
2023-07-23 15:06:04 +09:00
softsimon
ae183210e0 Updating pubkey width on mobile and desktop 2023-07-23 14:43:43 +09:00
Mononaut
56127dce6a Add P2PK support to search bar 2023-07-23 14:05:04 +09:00
Mononaut
0376467e6c highlight matching P2PK inputs 2023-07-23 14:01:31 +09:00
Mononaut
48b55eed46 improve script hex parsing validation 2023-07-23 14:01:31 +09:00
Mononaut
0ce043cca9 Fix esplora error messages 2023-07-23 14:01:31 +09:00
Mononaut
65dbafd2ec Support P2PK address types 2023-07-23 14:01:31 +09:00
nymkappa
597073c9b6 [block list] re-enable block fee if !auditAvailable in widget 2023-07-23 12:18:21 +09:00
nymkappa
d7ac326f92 [block list] improve block list when db = false 2023-07-23 12:02:04 +09:00
softsimon
3f36a30d1d Merge pull request #4031 from knorrium/es2022_fixes
Es2022 fixes
2023-07-23 11:56:04 +09:00
softsimon
b021746e9e Merge pull request #4030 from mempool/fix/CI-Rust
Use more reliable Github Action for Rust toolchain install
2023-07-23 11:50:00 +09:00
junderw
975ec772fa Use more reliable Github Action for Rust toolchain install. 2023-07-22 19:41:36 -07:00
Felipe Knorr Kuhn
442a4ff6e0 Fix tsconfig settigns for ES2022 2023-07-23 11:06:21 +09:00
Felipe Knorr Kuhn
cea218b81a Reset the supported browsers list 2023-07-23 11:05:49 +09:00
nymkappa
7970df27ad [graphs] fix min height in mobile landscape 2023-07-22 17:42:02 +09:00
softsimon
a24d2ce547 Merge pull request #4021 from mempool/mononaut/blockchain-scroll
apply blockchain scroll offset as soon as element is ready
2023-07-22 14:32:42 +09:00
softsimon
95707de8ec Merge pull request #4013 from mempool/simon/css-fix-fa-icons
Fix some icon css color changes
2023-07-22 13:53:55 +09:00
softsimon
eb37066d5d Merge pull request #4024 from devinbileck/patch-1
Accept CLA
2023-07-22 13:53:45 +09:00
Devin Bileck
f0983844c1 Accept CLA 2023-07-21 15:13:10 -07:00
softsimon
a0bd4e0f63 Merge branch 'master' into mononaut/blockchain-scroll 2023-07-21 21:12:11 +09:00
softsimon
141ab8076f Merge pull request #4014 from mempool/mononaut/fix-blocks-list
Fix blocks list observable
2023-07-21 21:12:03 +09:00
softsimon
267f3d4877 Merge pull request #4020 from knorrium/fix_rate_limiting
Fix rate limiting when syncing assets on CI
2023-07-21 21:11:41 +09:00
softsimon
460a41644d Merge pull request #4015 from pedromvpg/patch-1
sign contributor agreement
2023-07-21 21:04:31 +09:00
Felipe Knorr Kuhn
ca69d19bf7 Use the GITHUB_SECRET to authenticate with the API
Fix the environment variable

Add extra logging when using the authentication

Use the GITHUB_TOKEN on the frontend build step
2023-07-21 18:14:32 +09:00
Mononaut
d91fa5c6ef null => of([]) 2023-07-21 18:10:13 +09:00
wiz
3610aa2e20 Merge pull request #3999 from mempool/mononaut/fix-liquid-fees
Fix fee handling on Liquid
2023-07-21 17:49:48 +09:00
wiz
7a6da07a61 Merge branch 'master' into mononaut/fix-liquid-fees 2023-07-21 17:38:47 +09:00
Mononaut
0f77fb88bf handle missing block.extras on liquid 2023-07-21 17:18:45 +09:00
Mononaut
1bd19e1d8d apply blockchain scroll offset when element is ready 2023-07-21 17:10:58 +09:00
Felipe Knorr Kuhn
61eeb82694 Expose the GITHUB_SECRET to the frontend build step 2023-07-21 17:09:57 +09:00
softsimon
135adfecbd Merge pull request #3934 from mempool/junderw/fix-armv7-docker
Fix backend docker build for armv7
2023-07-21 10:19:20 +09:00
softsimon
20b2017908 Merge pull request #4016 from knorrium/tweak_dependabot
Tweak dependabot settings
2023-07-21 10:18:58 +09:00
Felipe Knorr Kuhn
b1345038bd Tweak dependabot settings 2023-07-20 18:09:36 -07:00
Felipe Knorr Kuhn
7ba627e243 Merge branch 'master' into junderw/fix-armv7-docker 2023-07-20 17:31:17 -07:00
Pedro
6b453ef018 sign contributor agreement 2023-07-20 17:24:13 +01:00
Mononaut
943dc6f5e6 Fix blocks list observable 2023-07-20 17:30:26 +09:00
softsimon
4192869593 Fix some icon css color changes 2023-07-20 16:02:04 +09:00
softsimon
e066bb1e9d Merge pull request #4002 from mempool/nymkappa/mining-pool-summary
[mining] add missing empty td at the bottom of pool ranking
2023-07-20 15:10:32 +09:00
softsimon
6cdc97848f Merge pull request #3773 from mempool/nymkappa/search-bar-align
[search bar] fix alignment issue
2023-07-20 14:59:54 +09:00
nymkappa
ade7908229 [mining] add missing empty col at the bottom of pool ranking 2023-07-20 10:36:26 +09:00
nymkappa
9a2ab7fe21 [search bar] chrome - fix flex-auto 2023-07-20 09:57:04 +09:00
softsimon
213800f563 Merge error fix 2023-07-19 16:46:02 +09:00
junderw
2c59992d3f Fix E2E error 2023-07-19 16:28:06 +09:00
Mononaut
87e39b8389 Fix liquid blockchain bar 2023-07-19 16:24:05 +09:00
junderw
d825143b35 Search for full address in separate network if matches 2023-07-19 16:15:43 +09:00
junderw
3d900a3849 Fix: Prevent regex clash with channel IDs 2023-07-19 16:10:25 +09:00
junderw
0a51b752e6 Improve types and add liquidtestnet for regex 2023-07-19 16:10:25 +09:00
junderw
c0d3f295ee Finished Regex portion 2023-07-19 16:10:24 +09:00
junderw
1339b98281 Feature: Readable RegExp constructor 2023-07-19 16:09:15 +09:00
softsimon
bc508b6621 Merge pull request #3949 from knorrium/node_v20_to_matrix
Add node v20 to the test matrix
2023-07-19 15:56:31 +09:00
Mononaut
709783280a Fix liquid fees & remove minimum fee rate 2023-07-19 15:42:02 +09:00
softsimon
09b7c4021a Merge branch 'master' into nymkappa/tx-overflow 2023-07-19 15:18:23 +09:00
softsimon
f9aa1b5b35 Merge pull request #3194 from mempool/hunicus/manual-deployment-enterprise
Specify manual deployment support for enterprise sponsors
2023-07-19 14:25:02 +09:00
softsimon
2fffd8b43c Merge branch 'master' into hunicus/manual-deployment-enterprise 2023-07-19 14:19:03 +09:00
softsimon
741571a93a Merge pull request #3607 from mempool/nymkappa/clip-label-overflow
Clip overflowing labels in pool component on mobile
2023-07-19 14:05:31 +09:00
softsimon
07a424e6f1 Merge pull request #3997 from mempool/mononaut/liquid-latest-blocks
restore latest blocks on liquid
2023-07-19 14:03:58 +09:00
Mononaut
943d05f680 restore latest blocks on liquid 2023-07-19 12:09:46 +09:00
softsimon
57aa2c69ac Merge branch 'master' into nymkappa/clip-label-overflow 2023-07-19 11:31:01 +09:00
softsimon
61e28a33e0 Merge pull request #3996 from mempool/simon/zero-zat-minimum-fee-fix
Fix for 0 sat minimum fee
2023-07-19 11:15:53 +09:00
softsimon
4055128d7f Fix for 0 sat minimum fee 2023-07-19 11:06:28 +09:00
Felipe Knorr Kuhn
7c29e51bbb Merge branch 'master' into junderw/fix-armv7-docker 2023-07-18 14:30:20 -07:00
softsimon
fabd420586 Merge branch 'master' into node_v20_to_matrix 2023-07-18 18:56:00 +09:00
softsimon
a12316f4dc Updating default mining pool icon 2023-07-18 18:16:21 +09:00
softsimon
548611f13a Merge branch 'master' into nymkappa/search-bar-align 2023-07-18 18:02:44 +09:00
softsimon
3397edecb4 Merge pull request #3659 from nothing0012/zz/add-cla
Add cla
2023-07-18 17:42:00 +09:00
softsimon
b041a145b1 Merge pull request #3654 from learntheropes/patch-1
sign cla
2023-07-18 17:41:49 +09:00
softsimon
7046c3d6c3 Merge pull request #3935 from mempool/mononaut/lightning-justice
Add lightning justice page
2023-07-18 17:24:26 +09:00
softsimon
67f58a4491 Sorting by closing date descending 2023-07-18 17:19:14 +09:00
softsimon
d74e4b1876 Replacing loading text with spinner 2023-07-18 17:15:54 +09:00
softsimon
e757b74c87 Merge pull request #3990 from mempool/simon/removing-unused-fullrbf-code
Removing unused rbf frontend code
2023-07-18 17:06:01 +09:00
wiz
4b41730636 Merge branch 'master' into mononaut/lightning-justice 2023-07-18 16:49:49 +09:00
wiz
23ecf9cf41 Merge pull request #3993 from mempool/simon/backend-deps-18-07
Bumping backend deps
2023-07-18 16:19:28 +09:00
wiz
f8cfa35552 Merge pull request #3965 from mempool/nymkappa/network-switch-align
[network selection] fix some align issues
2023-07-18 15:53:41 +09:00
wiz
c1d0e802d9 Merge branch 'master' into nymkappa/network-switch-align 2023-07-18 15:40:57 +09:00
softsimon
bde7fad1c4 Bumping backend deps 2023-07-18 15:36:30 +09:00
softsimon
8007f5a3d3 Merge pull request #3992 from mempool/simon/angular-16
Angular 16
2023-07-18 15:10:49 +09:00
softsimon
83f955e469 Merge pull request #3969 from mempool/mononaut/ancestors-undefined
Fix tx.ancestors undefined bug
2023-07-18 15:10:17 +09:00
nymkappa
29c53a7852 [search bar] fix alignment issue 2023-07-18 15:01:30 +09:00
softsimon
3825a1c359 Trying downgrading cypress wait 2023-07-18 13:45:24 +09:00
softsimon
ac82a25fa2 Angular 16 2023-07-18 13:38:33 +09:00
softsimon
85e071049c Removing unused rbf frontend code 2023-07-18 11:42:13 +09:00
softsimon
ae22b7b444 Merge pull request #3989 from mempool/mononaut/fullrbf-list-toggle
Remove frontend FULL_RBF_ENABLED flag
2023-07-18 11:36:46 +09:00
softsimon
9aba4d4357 Merge pull request #3988 from mempool/mononaut/clock-width-fix
Fix clock horizontal scroll bug
2023-07-18 11:03:11 +09:00
Mononaut
17866f80bd Remove frontend FULL_RBF_ENABLED flag 2023-07-18 11:01:35 +09:00
Mononaut
5e46176c4e Fix clock horizontal scroll bug 2023-07-18 10:52:47 +09:00
wiz
fa48c6f025 ops: Use NodeJS v18 to build, v20 to run backend 2023-07-18 08:52:51 +09:00
Felipe Knorr Kuhn
69c54d7207 Merge branch 'master' into node_v20_to_matrix 2023-07-17 15:53:34 -07:00
wiz
7e06c97f51 ops: Bump NodeJS to v20.4.0 2023-07-18 07:50:14 +09:00
wiz
c02eef352b ops: Increase bitcoin.conf maxconnections 42 -> 100 2023-07-17 22:56:16 +09:00
wiz
924782a4d1 Merge pull request #3867 from mempool/simon/enable-mempoolfullrbf
It's time (Enable fullrbf)
2023-07-17 21:48:46 +09:00
softsimon
5c6e3dfd5c Merge pull request #3983 from mempool/mononaut/hide-unknown-conf-badge
Hide confirmations badge if height unknown
2023-07-17 21:48:08 +09:00
softsimon
89dac1a77c Merge pull request #3979 from mempool/mononaut/new-block-race-condition
get chain tip direct from Bitcoin Core to avoid race conditions
2023-07-17 21:38:35 +09:00
Mononaut
6a16759e20 Hide confirmations badge if height unknown 2023-07-17 19:23:09 +09:00
softsimon
c355602924 Merge pull request #3981 from mempool/mononaut/fix-websocket-null-data
Fix websocket null data for undefined rbfSummary
2023-07-17 19:10:05 +09:00
softsimon
08ad81f4b5 Merge pull request #3982 from mempool/mononaut/faster-mempoll
Fix mempool update poll delay
2023-07-17 18:59:07 +09:00
Mononaut
2c1b9b9095 Fix mempool update poll delay 2023-07-17 18:21:44 +09:00
softsimon
965270dc7f Merge pull request #3933 from mempool/nymkappa/feature-bits
Show raw and decoded lightning node features
2023-07-17 17:58:22 +09:00
Mononaut
4309bfd519 Fix websocket null data for undefined rbfSummary 2023-07-17 17:53:26 +09:00
softsimon
6ab3b89884 Change to a Details-button 2023-07-17 17:41:38 +09:00
Mononaut
7a059ba294 get chain tip direct from Bitcoin Core to avoid race conditions 2023-07-17 15:21:52 +09:00
wiz
8af64900d9 Merge pull request #3959 from mempool/simon/load-more-mempool-txs
Load more mempool transactions
2023-07-17 14:56:18 +09:00
wiz
a59a7fe25e Merge branch 'master' into simon/load-more-mempool-txs 2023-07-17 14:17:52 +09:00
softsimon
2fc8e2997d Merge pull request #3978 from mempool/mononaut/fix-pool-blocks
unbork mining pool blocks list
2023-07-17 14:03:01 +09:00
wiz
ede961a34a Merge branch 'master' into simon/load-more-mempool-txs 2023-07-17 14:02:32 +09:00
softsimon
77764e1c77 Merge pull request #3882 from mempool/mononaut/audit-replication
Audit data synchronization
2023-07-17 12:51:34 +09:00
softsimon
8e114917a1 Merge pull request #3976 from mempool/mononaut/six-latest-transactions
always send 6 latest transactions to websocket clients
2023-07-17 12:03:06 +09:00
softsimon
be599ca624 Merge pull request #3971 from mempool/mononaut/audit-recently-cpfpd
Add "recently cpfpd" exception to audits
2023-07-17 11:51:06 +09:00
Mononaut
2c39e1e203 unbork mining pool blocks list 2023-07-17 11:15:55 +09:00
Mononaut
bf5a16b043 always send 6 latest transactions to websocket clients 2023-07-17 11:02:28 +09:00
wiz
a7ec9138c3 ops: Bump elements tag to 22.1.1 2023-07-17 01:14:52 +09:00
wiz
c0f33e6b52 Merge pull request #3974 from mempool/mononaut/missing-socket-init-data
Set missing websocket init data
2023-07-16 19:55:12 +09:00
Mononaut
565336df21 Set missing websocket init data 2023-07-16 18:39:51 +09:00
nymkappa
6fe32cdd19 [lightning] fix issue during initial node.features indexing 2023-07-16 18:24:42 +09:00
nymkappa
8fb67a914c [lightning] fix node features binary conversion 2023-07-16 18:17:49 +09:00
nymkappa
6336c529ed [lightning] show decoded features in node page 2023-07-16 18:17:49 +09:00
nymkappa
556eb65320 [lightning] start integrating features bits in the node page 2023-07-16 18:17:49 +09:00
nymkappa
4d41d36fe7 [lightning] save feature bit number when using lnd describegraph 2023-07-16 18:17:49 +09:00
nymkappa
32d46ad7ac [lightning] save bit number when converting features from clightning 2023-07-16 18:17:48 +09:00
nymkappa
1f003cc292 [lightning] save node features as stringified json array in db 2023-07-16 18:17:48 +09:00
wiz
2d4bc9dbd6 ops: Move electrs scripts to mempool/electrs repo 2023-07-16 17:50:36 +09:00
Mononaut
b33ea4679d Add "recently cpfpd" exception to audits 2023-07-16 13:51:30 +09:00
Mononaut
b6a6fcd4e2 Fix tx.ancestors undefined bug 2023-07-16 12:53:55 +09:00
softsimon
b03f2185ce Merge pull request #3964 from mempool/simon/calculator-validation-improvements
Calculator validation improvements
2023-07-15 20:15:31 +09:00
softsimon
a52d5faf4f Merge pull request #3967 from mempool/nymkappa/update-price-timestamp-websocket
[price updater] update latestPrices timestamp before pushing to websocket
2023-07-15 20:15:10 +09:00
softsimon
b39f01471a Select all input box text on click 2023-07-15 17:47:36 +09:00
nymkappa
73d9b4ef28 [price updater] update latestPrices timestamp before pushing to websocket 2023-07-15 17:29:29 +09:00
nymkappa
cda6567c4c [network selector] fix rtl issue 2023-07-15 16:50:18 +09:00
nymkappa
a372b479b4 [network selector] improve align 2023-07-15 16:26:25 +09:00
softsimon
992196c91f Calculator validation improvements 2023-07-15 15:09:41 +09:00
softsimon
9ffd4cc38d Calculator mobile margin 2023-07-15 12:18:55 +09:00
softsimon
0bcaa5209c Merge pull request #3875 from mempool/simon/calculator
Bitcoin-Fiat calculator tool
2023-07-15 11:24:17 +09:00
softsimon
23dffb4ca2 Slight margin fix 2023-07-15 11:18:36 +09:00
softsimon
98be07f5ef Removing logos 2023-07-15 10:52:59 +09:00
softsimon
120c27d120 Calculator visual results 2023-07-15 10:52:59 +09:00
softsimon
67a998c69f Working fiat/btc calculator 2023-07-15 10:52:33 +09:00
wiz
e3ddde9c90 Merge branch 'master' into simon/load-more-mempool-txs 2023-07-14 19:30:15 +09:00
wiz
0ec98d03e5 Merge pull request #3621 from mempool/mononaut/sharper-blocks
Pixel-aligned grids for sharper block visualizations
2023-07-14 18:58:09 +09:00
wiz
8680e5f06e Merge branch 'master' into mononaut/sharper-blocks 2023-07-14 18:45:55 +09:00
wiz
23151ec3db Bump version to 3.0.0-dev
- Now requires mempool/electrs
- Mempool Accelerator integration
- Rust GBT integration
- And more!
2023-07-14 18:39:35 +09:00
Mononaut
7f0218e343 add margin between mobile audit tabs & visualization 2023-07-14 18:39:28 +09:00
softsimon
f8fc0439f8 Merge pull request #3962 from mempool/mononaut/latest-replacements
Switch "Latest blocks" to "Latest replacements"
2023-07-14 18:30:25 +09:00
Mononaut
1abd2a23cc Add audit replication success logging 2023-07-14 16:54:36 +09:00
Mononaut
e59a9d38ff fix audit replication merge conflicts 2023-07-14 16:54:32 +09:00
Mononaut
bccc6b3680 Add missing replication docker config 2023-07-14 16:43:07 +09:00
Mononaut
7f6d17fc0e Fix audit sync progress logging 2023-07-14 16:43:07 +09:00
Mononaut
736b997104 Add missing audit data to cached blocks 2023-07-14 16:43:07 +09:00
Mononaut
69e6b164b9 Add audit data replication service 2023-07-14 16:43:05 +09:00
Mononaut
fa48791c59 reduce latest rbf websocket data 2023-07-14 16:15:03 +09:00
Mononaut
9a6565cd92 tweak default sizes & resolutions 2023-07-14 15:35:52 +09:00
Mononaut
3cca6f6b8b Pixel-aligned grids for sharper block visualizations 2023-07-14 15:33:28 +09:00
softsimon
f15f0570d4 Merge pull request #3951 from mempool/mononaut/tx-highlight
Highlight searched transactions in the block visualizations
2023-07-14 15:10:12 +09:00
Mononaut
240afbed95 adjust latest replacements labels & layout 2023-07-14 12:25:45 +09:00
softsimon
548ea0f4b4 Merge pull request #3912 from bennyhodl/bennyhodl-contributor-agreement
bennyhodl contributor agreement
2023-07-14 12:20:49 +09:00
Mononaut
756fac7270 Switch "latest blocks" to "latest replacements" 2023-07-14 11:52:07 +09:00
softsimon
ba6f41fa1b Merge pull request #3961 from mempool/mononaut/fix-difficulty-chart
Fix difficulty chart off-by-one bug
2023-07-14 11:31:01 +09:00
Mononaut
d60709deff Fix scene null check on visualization load 2023-07-14 11:22:09 +09:00
Mononaut
e9c618849d Highlight matching transactions in the block visualizations 2023-07-14 11:22:09 +09:00
Mononaut
8477600859 Fix difficulty chart bug 2023-07-14 11:05:09 +09:00
softsimon
15a8c8d420 Support for romanz/electrs 2023-07-13 17:59:02 +09:00
softsimon
5ef592f53e Load more mempool transactions 2023-07-13 16:57:36 +09:00
wiz
cff2022baf Merge pull request #3952 from mempool/simon/connectivity-ranking-title-fix
Connectivity ranking title fix
2023-07-13 15:58:26 +09:00
wiz
a6dc4fa38c Merge branch 'master' into simon/connectivity-ranking-title-fix 2023-07-13 15:44:31 +09:00
wiz
8b681f3ba0 Merge pull request #3670 from mempool/junderw/pushtxantidos
Push TX: Include validation to prevent DoS
2023-07-13 15:44:18 +09:00
softsimon
5575a37f9b Merge pull request #3957 from mempool/mononaut/full-rbf-highlight
highlight & tag fullrbf replacements in RBF timeline
2023-07-13 15:34:19 +09:00
wiz
15e58035e5 ops: Remove 2 electrs patches from prod installer 2023-07-13 15:06:00 +09:00
wiz
da4f7a3aba Merge branch 'master' into junderw/pushtxantidos 2023-07-13 14:18:19 +09:00
wiz
7542d95bc5 Merge pull request #3940 from mempool/mononaut/null-miner-health
Unknown avg miner health
2023-07-13 14:17:39 +09:00
wiz
6a2a9bda06 Merge branch 'master' into mononaut/full-rbf-highlight 2023-07-13 14:16:33 +09:00
junderw
222b34993b Fix: Add new configs to all config instances properly. 2023-07-13 14:06:46 +09:00
junderw
df70ea05c6 Fix: Leaf version validation 2023-07-13 13:50:54 +09:00
junderw
43d41fca95 Fix: Allow detection of 1 byte annexes 2023-07-13 13:31:57 +09:00
junderw
95a8752a0a Fix: Tests for config 2023-07-13 13:26:18 +09:00
junderw
21a47a7b4b Push TX: Include validation to prevent DoS 2023-07-13 13:24:46 +09:00
softsimon
31336d47e2 Merge pull request #3948 from mempool/mononaut/loading-transaction
show "loading" message while checking for cached txs
2023-07-13 12:32:20 +09:00
Mononaut
3287c62f91 highlight & tag fullrbf replacements in RBF timeline 2023-07-13 12:28:33 +09:00
softsimon
cf13c43637 Merge pull request #3937 from mempool/mononaut/replace-stale-blocks
Replace client-side stale blocks
2023-07-13 12:08:24 +09:00
Mononaut
eccbcbe53b Add missing this.block null check 2023-07-13 11:58:29 +09:00
softsimon
04bc43e188 Merge pull request #3943 from mempool/mononaut/missing-fiat-alignment
Add spacer for missing fiat values
2023-07-13 11:10:46 +09:00
Mononaut
1e69ea2f1d Fix merge conflicts 2023-07-13 11:06:02 +09:00
Mononaut
886a099a2f Detect stale blocks from client blockchain cache 2023-07-13 10:45:48 +09:00
Mononaut
7230b65dc3 remove console.log, fix null blocks 2023-07-13 10:45:46 +09:00
Mononaut
842ac8ce39 Add stale block banner immediately on reorg 2023-07-13 10:43:18 +09:00
Mononaut
e8c703fdbc replace client recent blocks on reorg 2023-07-13 10:43:18 +09:00
wiz
9cf961c667 Merge pull request #3693 from mempool/mononaut/preview-table-overflows
prevent table overflow in unfurl previews
2023-07-12 18:32:47 +09:00
wiz
93b1c64482 Merge branch 'master' into mononaut/preview-table-overflows 2023-07-12 18:17:06 +09:00
wiz
faf85d0c82 Merge pull request #3620 from mempool/mononaut/fix-rtl-unfurls
Fix RTL locale unfurls
2023-07-12 18:17:01 +09:00
wiz
d01fa85927 Merge branch 'master' into mononaut/fix-rtl-unfurls 2023-07-12 17:54:21 +09:00
softsimon
7ad1ace8dc Merge pull request #3941 from mempool/mononaut/reset-latest-txs
reset blocks$ and transactions$ observables when network changes
2023-07-12 17:52:06 +09:00
Mononaut
132923e7db Show skeleton loader instead of "Loading transaction..." 2023-07-12 17:44:38 +09:00
Mononaut
55cc3a0c07 fix loading transaction i18n tag 2023-07-12 17:44:37 +09:00
Mononaut
415b70da14 show "loading" message while checking for cached txs 2023-07-12 17:44:37 +09:00
wiz
243fd5e9dd Merge pull request #3953 from mempool/mononaut/difficulty-updates
always show latest difficulty on hashrate chart
2023-07-12 17:33:22 +09:00
wiz
7c1c8e877e Merge pull request #3955 from mempool/wiz/fix-prod-rust-gbt-build
Fix production rust GBT build
2023-07-12 17:25:03 +09:00
wiz
95e50ddf02 Fix production rust GBT build 2023-07-12 17:16:40 +09:00
softsimon
b6b9ab1a87 Merge pull request #3945 from mempool/mononaut/fix-mined-rbf-conflicts
Fix mined rbf conflict prevention
2023-07-12 17:06:53 +09:00
wiz
4144746e14 Merge branch 'master' into mononaut/difficulty-updates 2023-07-12 16:45:03 +09:00
wiz
f871300bfb Merge branch 'master' into mononaut/fix-mined-rbf-conflicts 2023-07-12 16:17:47 +09:00
wiz
2b559ffcce Merge pull request #3598 from mempool/nymkappa/scan-closed-channel-no-mempool
Make sure to scan closed channels even if config.MEMPOOL.ENABLE = false
2023-07-12 16:17:38 +09:00
softsimon
ef771beb28 Merge pull request #3669 from TechMiX/hotfix/rtlIssue
Fix RTL issues
2023-07-12 16:06:35 +09:00
wiz
09b966e507 Merge branch 'master' into nymkappa/scan-closed-channel-no-mempool 2023-07-12 16:00:52 +09:00
wiz
4b9d0d1d31 Merge pull request #3947 from mempool/mononaut/fix-testnet-price-updater
fix price updater loop on testnet/signet
2023-07-12 16:00:39 +09:00
wiz
3ece5acd59 Merge branch 'master' into mononaut/fix-testnet-price-updater 2023-07-12 15:38:17 +09:00
Mononaut
0dd9867a1f always show latest difficulty on hashrate chart 2023-07-12 12:58:48 +09:00
softsimon
ffca2f174d Connectivity ranking title fix 2023-07-12 12:24:45 +09:00
softsimon
00282b79b8 Merge pull request #3862 from secondl1ght/patch-1
update frontend local instructions
2023-07-12 11:02:58 +09:00
softsimon
e66f14a5c3 Merge pull request #3870 from pfoytik/master
the last two docker-compose overrides need MEMPOOL_ in front
2023-07-12 11:02:36 +09:00
softsimon
05f85c5201 Merge branch 'master' into nymkappa/clip-label-overflow 2023-07-12 10:57:11 +09:00
Felipe Knorr Kuhn
2570357bec Add node v20 to the test matrix 2023-07-11 00:21:00 -07:00
Mononaut
ca2830d6d8 fix price updater loop on testnet/signet 2023-07-11 16:03:44 +09:00
wiz
795e6753eb Merge pull request #3879 from mempool/mononaut/audit-exclude-fullrbf
exclude fullrbf txs from audit and label in visualization
2023-07-11 15:29:32 +09:00
wiz
ad0a007e8c Merge pull request #3946 from mempool/mononaut/bitcoin-core-v25
Upgrade bitcoin core to v25.0
2023-07-11 15:28:36 +09:00
softsimon
168cc9c1bf Merge pull request #3932 from mempool/mononaut/stale-blocks
Stale blocks
2023-07-11 14:47:44 +09:00
Mononaut
11d1a68f78 Upgrade bitcoin core to v25.0 2023-07-11 14:36:42 +09:00
Mononaut
a01336d8ac Fix mined rbf conflict prevention 2023-07-11 11:44:30 +09:00
Mononaut
01bd9dd957 Add spacer for missing fiat values 2023-07-11 11:18:17 +09:00
Mononaut
94c0222efe reset blocks$ and transactions$ observables when network changes 2023-07-11 10:50:25 +09:00
softsimon
ad9d9c839b Merge pull request #3869 from mempool/mononaut/vb-wu-preference
Weight unit preference
2023-07-11 10:10:43 +09:00
Mononaut
5b9d43032c Switch remaining vb fields according to unit preference 2023-07-11 10:04:38 +09:00
Mononaut
bde8fbac98 Implement only-vsize and only-weight directives 2023-07-11 10:00:41 +09:00
Mononaut
013ad803d0 Switch all direct sat/vb fields to new rate component 2023-07-11 10:00:41 +09:00
Mononaut
c29558db20 Add fee rate display component 2023-07-11 10:00:40 +09:00
Mononaut
a45f1fde1c Add fee rate unit preference & dropdown 2023-07-11 10:00:40 +09:00
Mononaut
e81839e7ed Return null for avg of zero matching health scores 2023-07-11 09:54:03 +09:00
Mononaut
6942a6fd6a Show alert banner on stale blocks 2023-07-10 16:14:02 +09:00
Mononaut
385cb087d3 Replace cached blocks on reorg, serve stale blocks 2023-07-10 16:14:02 +09:00
Mononaut
f1966768a7 exclude fullrbf txs from audit and label in visualization 2023-07-10 15:34:22 +09:00
Mononaut
4ba552fe1b Add basic lightning justice page 2023-07-09 03:03:35 -04:00
junderw
ec918d57b2 Fix backend docker build for armv7 2023-07-08 23:03:03 -07:00
wiz
408c86963b Merge pull request #3889 from mempool/mononaut/rust-gbt
Rust GBT
2023-07-09 13:27:52 +09:00
Jonathan Underwood
f8e910f0a4 Merge branch 'master' into mononaut/rust-gbt 2023-07-07 18:56:04 -07:00
softsimon
8ad4b952ea Merge pull request #3915 from mempool/mononaut/block-time-precision
More precise relative block times
2023-07-07 19:06:08 +02:00
junderw
925ebf08d4 Fix Docker build for using napi-rs 2023-07-06 18:05:21 -07:00
junderw
eae5f6078e Move N-API CLI to dependencies 2023-07-06 15:49:54 -07:00
Jonathan Underwood
464587cec5 Add period 2023-07-05 19:35:36 -07:00
junderw
0c7c1dd0a8 Merge remote-tracking branch 'origin/master' into mononaut/rust-gbt 2023-07-05 08:39:48 -07:00
junderw
22d357c53c Faster txid to u32 parsing 2023-07-05 08:39:01 -07:00
Mononaut
cc695dc910 match higher precision time in block page details 2023-07-05 11:02:32 -04:00
Mononaut
850752e0ea More precise relative block times 2023-07-05 10:50:46 -04:00
softsimon
7b01f54fc6 Merge pull request #3919 from joostjager/pool-fees
Add average fee delta to pool ranking
2023-07-05 15:30:15 +02:00
wiz
9f2e94d9cd Merge pull request #3863 from mempool/mononaut/scrollable-mempool
scroll to see all mempool blocks
2023-07-05 09:57:17 +09:00
wiz
824c6f97e4 ops: Use mempool/electrs for liquid instances 2023-07-05 09:33:33 +09:00
junderw
390c4a7706 Use ManuallyDrop 2023-07-04 17:19:41 -07:00
wiz
efcb58a4a6 Merge branch 'master' into mononaut/scrollable-mempool 2023-07-05 07:58:50 +09:00
Joost Jager
9e5d10b15f Add average fee delta to pool ranking
Co-authored-by: mononaut <83316221+mononaut@users.noreply.github.com>
2023-07-04 11:25:39 +00:00
Mononaut
8fdc44aa89 replace audit_pool hashmap with a vec 2023-07-03 22:16:35 -04:00
Mononaut
cfa2363743 only return rates changed since last update 2023-07-03 12:01:49 -04:00
Mononaut
897c667f17 return sigop-adjusted effective fee rates 2023-07-03 12:01:06 -04:00
Mononaut
078bc1d914 fix and consolidate tx ordering logic 2023-07-03 11:57:12 -04:00
mononaut
d16d961cb2 Apply suggestions from code review
avoid regex in partial txid ordering conversion

Co-authored-by: Jonathan Underwood <jonathan.underwood4649@gmail.com>
2023-07-03 11:55:43 -04:00
Mononaut
23d487b904 Mimic Core's ordering for equal-score transactions 2023-07-03 10:28:32 -04:00
Mononaut
af6de9b72c more misc JS-side gbt performance optimizations 2023-07-03 10:20:08 -04:00
junderw
0ddfa94b59 Ran cargo fmt 2023-07-03 10:18:22 -04:00
Mononaut
ccbed8ec58 Use min(feerate,ancestor_feerate) for ancestor score 2023-07-03 10:18:22 -04:00
junderw
552818607a Better initial capacity 2023-07-03 10:18:22 -04:00
Mononaut
db8c34ae61 misc JS-side gbt performance optimizations 2023-07-03 10:18:22 -04:00
Mononaut
0886e850f9 Pass gbt mempool data directly without serialization 2023-07-03 10:18:21 -04:00
Mononaut
5065fa42d0 calculate total block weights inside rust gbt 2023-07-03 10:18:21 -04:00
junderw
2838b068f7 Increased performance 2023-07-03 10:18:21 -04:00
junderw
77c83a6a13 Fix CI for Rust test 2023-07-03 10:18:21 -04:00
Mononaut
79a10ee833 vsize -> sigop_adjusted_vsize 2023-07-03 10:18:21 -04:00
Mononaut
10beb76585 conform to core's gbt quirks 2023-07-03 10:18:21 -04:00
Mononaut
71f150b587 Add end-to-end test of rust gbt against results from Core 2023-07-03 10:18:21 -04:00
junderw
6650541b2d Added Logging and refactored a bit 2023-07-03 10:18:20 -04:00
Mononaut
702c4c123e remove unnecessary option wrapper from gbt return value 2023-07-03 10:18:20 -04:00
Mononaut
1688b7d24e fix handling of used txs at top of mempool stack 2023-07-03 10:18:20 -04:00
Mononaut
75fd4ff5e1 swap mempool_array deque for a mempool_stack vec 2023-07-03 10:18:20 -04:00
Mononaut
ac8f88da38 protect ancestor data from outside assignments 2023-07-03 10:18:20 -04:00
Mononaut
7873f1c26a fix rust gbt cpfp cluster construction 2023-07-03 10:18:20 -04:00
Mononaut
a66c0c88ce fix rust gbt priority queue handling 2023-07-03 10:18:20 -04:00
Mononaut
f5e0662517 Fix mempool-blocks linter issues 2023-07-03 10:18:19 -04:00
junderw
4334b9eac1 Fix README and publish = false in Cargo.toml 2023-07-03 10:18:19 -04:00
junderw
6e7a525d12 Fix: napi macro breaks rust-analyzer
See issue: https://github.com/napi-rs/napi-rs/issues/944#issuecomment-1013002760
This will ignore expanding the napi macro for rust-analyzer, letting auto-complete
work inside the napi impl blocks.
2023-07-03 10:18:19 -04:00
Mononaut
4a15cd7abe clearer uint32 uid overflow check 2023-07-03 10:18:19 -04:00
junderw
5d48ae1eec Use U32HasherState for HashSet 2023-07-03 10:18:19 -04:00
Mononaut
a71f931d9f Add sanity checks for GBT cache de-sync 2023-07-03 10:18:19 -04:00
Mononaut
6829e67e15 Add sanity check for uint32 uid overflow 2023-07-03 10:18:19 -04:00
Mononaut
fc504012d5 Enforce Rust GBT instance lifecycle 2023-07-03 10:18:18 -04:00
Mononaut
8f675c7062 Add Rust GBT config flag 2023-07-03 10:18:18 -04:00
junderw
1ed0f86ed9 calc_new_score can be private 2023-07-03 10:18:18 -04:00
junderw
2dfef5a003 Fix Rust version of compiler to prevent breakage 2023-07-03 10:18:18 -04:00
junderw
609df31e0c Fix clippy pedantic and nursery lints as well 2023-07-03 10:18:18 -04:00
junderw
e61ae59e53 Add safety comments 2023-07-03 10:18:18 -04:00
junderw
e3f4c33f03 Protect score from outside assignment and document the requirements 2023-07-03 10:18:17 -04:00
junderw
af4919a98b Use u32hasher with PriorityQueue as well 2023-07-03 10:18:17 -04:00
junderw
939d2230d2 Use bytemuck instead of unsafe Rust 2023-07-03 10:18:17 -04:00
junderw
59b19eefe3 Move u32hasher into its own module, don't expose the Hasher for use. 2023-07-03 10:18:17 -04:00
junderw
3c652bdcbc Optimize audit_pool key hashing as well. Use a const for starting capacity for tx related lists. 2023-07-03 10:18:17 -04:00
junderw
ded2352cf8 Use a class to hold state for Rust GbtGenerator 2023-07-03 10:18:17 -04:00
junderw
8cfda1a546 Use tokio async/await instead of callbacks 2023-07-03 10:18:17 -04:00
junderw
5f161e73c7 Check callback status in thread 2023-07-03 10:18:16 -04:00
junderw
dfe24ed9d7 Remove all unwrap() calls 2023-07-03 10:18:16 -04:00
junderw
4661bea2f0 Use N-API ThreadsafeFunction 2023-07-03 10:18:16 -04:00
junderw
152d2c364b Update TS side 2023-07-03 10:18:16 -04:00
junderw
2d4963c2df Feature: Use napi-rs instead of neon 2023-07-03 10:18:16 -04:00
junderw
0f1f151d65 Remove empty function 2023-07-03 10:18:16 -04:00
junderw
d2a47b92c8 Move conversion logic to struct file 2023-07-03 10:18:16 -04:00
junderw
920232be4c Use Cargo workspace
Cargo workspace in the root will help make the IDE experience universal.
Cargo.lock and the target directory for build artifacts will be in the root
of the mempool repository (with ./target ignored by git).
2023-07-03 10:18:15 -04:00
junderw
83bf9229e7 Fix: Some of the clippy pedantic lints 2023-07-03 10:18:15 -04:00
mononaut
178bb960e9 Remove redundant gbt function
Co-authored-by: Jonathan Underwood <jonathan.underwood4649@gmail.com>
2023-07-03 10:18:15 -04:00
Mononaut
891acf30bf Fix vscode rust-analyzer config 2023-07-03 10:18:15 -04:00
Mononaut
0e00881826 Refactor rust code for style 2023-07-03 10:18:15 -04:00
Mononaut
1d51b01bd1 Implement rust gbt updateBlockTemplates 2023-07-03 10:18:15 -04:00
Mononaut
52bb8b4a4d Rust GBT proof of concept 2023-07-03 10:18:14 -04:00
softsimon
3d33233e51 Merge pull request #3891 from 0xFlicker/master
sign contributor agreement
2023-07-03 10:11:51 +02:00
softsimon
4cd7561af8 Merge pull request #3906 from mempool/simon/mempool-break-limit
Lowering mempool loop break limit
2023-07-03 10:08:17 +02:00
softsimon
52c813bcc7 Merge branch 'master' into simon/mempool-break-limit 2023-07-03 09:59:21 +02:00
softsimon
c20c7ae11f Merge pull request #3917 from mempool/mononaut/effective-rate-templates
Save effective rates to templates & summaries
2023-07-02 18:40:40 +02:00
softsimon
5f582195ad Merge branch 'master' into mononaut/effective-rate-templates 2023-07-02 18:11:28 +02:00
softsimon
a567a28c5c Update backend/src/api/mempool.ts
Co-authored-by: mononaut <83316221+mononaut@users.noreply.github.com>
2023-07-02 18:10:14 +02:00
softsimon
59713e2132 Update backend/src/api/mempool.ts
Co-authored-by: mononaut <83316221+mononaut@users.noreply.github.com>
2023-07-02 18:10:08 +02:00
softsimon
1e83a99bae Update backend/src/api/mempool.ts
Co-authored-by: mononaut <83316221+mononaut@users.noreply.github.com>
2023-07-02 18:10:02 +02:00
softsimon
b5fdb6d64f Merge pull request #3843 from mempool/mononaut/projected-fee-graph
Better projected fee graph
2023-07-02 17:44:12 +02:00
softsimon
1411b701f9 Merge pull request #3887 from mempool/mononaut/atomic-cpfp
Atomic CPFP database operations
2023-07-02 17:29:42 +02:00
softsimon
f80257c5ea Merge branch 'master' into mononaut/atomic-cpfp 2023-07-01 22:04:14 +02:00
softsimon
23cd063402 Merge pull request #3883 from mempool/hunicus/ronindojo-link
Update ronindojo link on about page
2023-07-01 22:03:43 +02:00
softsimon
2bda12e5f9 Merge pull request #3881 from mempool/mononaut/separate-audit-api
Separate summary and audit-summary API endpoints
2023-07-01 19:43:20 +02:00
softsimon
2e285c8d86 Merge pull request #3878 from mempool/mononaut/full-mempool-graph
Add 'all time' option for mempool graph
2023-07-01 17:23:03 +02:00
softsimon
70854de6ec Merge pull request #3855 from mempool/mononaut/websocket-responses
Fix inconsistent websocket responses
2023-07-01 17:19:22 +02:00
softsimon
f5cf5c7cc3 Merge pull request #3916 from mempool/mononaut/fix-transaction-eta
Fix transaction component ETA
2023-07-01 16:21:18 +02:00
nymkappa
d939391e62 ALL -> all (no caps needed, match the url parameters as well) 2023-06-30 19:52:06 -04:00
nymkappa
85e33e689d break graph toggles into another line earlier 2023-06-30 19:52:05 -04:00
Mononaut
ca1a1228a9 break graph toggles into two rows on small screens 2023-06-30 19:52:05 -04:00
Mononaut
d4ed238ae1 Add statistics/all to cache warmer, change query keyword 2023-06-30 19:52:05 -04:00
Mononaut
22baf4186e Add 'all time' option for mempool graph 2023-06-30 19:52:05 -04:00
Mononaut
58b8052530 don't reset blockchain position on every mempool update 2023-06-30 19:45:53 -04:00
Mononaut
9d606d0006 scroll selected mempool block into view 2023-06-30 19:45:53 -04:00
Mononaut
d848ab4bef scroll to see all mempool blocks 2023-06-30 19:45:53 -04:00
Mononaut
eaad63a082 frontend resync recent blocks when necessary 2023-06-30 19:43:04 -04:00
Mononaut
ca6ddd609d clean up backend websocket logic 2023-06-30 19:43:04 -04:00
Mononaut
eca40f94c9 use power-of-ten formatting for large fee rates 2023-06-30 19:41:12 -04:00
Mononaut
86f51e3902 fix fee graph for underfilled blocks 2023-06-30 19:27:31 -04:00
Mononaut
9f2b98b246 Handle stack-of-N-blocks in new fee graph 2023-06-30 19:27:31 -04:00
Mononaut
e4f3642082 Redesign mempool block fee distribution graph 2023-06-30 19:27:30 -04:00
Mononaut
48d62a1396 Save effective fee rates to block templates & summaries 2023-06-29 19:24:19 -04:00
Mononaut
d9ed02a033 Fix transaction component ETA 2023-06-29 11:39:13 -04:00
bennyhodl
f87bf4df77 bennyhodl contributor agreement 2023-06-28 18:40:57 -04:00
softsimon
31ae382f75 Lowering mempool loop break limit 2023-06-27 18:46:28 +02:00
hunicus
c89b15fdbc Update mosp strings from tm to r 2023-06-27 12:37:04 -04:00
softsimon
5f787db30d Merge pull request #3762 from knorrium/update_node_matrix
Update node CI test matrix
2023-06-26 18:08:53 +02:00
softsimon
da3c39c7d0 Merge pull request #3861 from mempool/hunicus/add-luminex-sponsor
Add luminex as enterprise sponsor
2023-06-26 12:31:03 +02:00
0xflick
dbf759fc76 sign contributor agreement 2023-06-24 16:30:29 -05:00
wiz
e88cf70719 Merge pull request #3886 from mempool/mononaut/hotfix-undefined-cpfp-cluster
Hotfix for undefined cpfp cluster bug
2023-06-23 19:08:27 +09:00
Mononaut
1f442b9ea6 Make cpfp db save operations atomic 2023-06-22 12:08:47 -04:00
Mononaut
9ff5ce0d37 Change order of cpfp db operations 2023-06-21 19:57:18 -04:00
Mononaut
329c635da5 Fix getCpfpInfo error handling 2023-06-21 19:57:09 -04:00
Mononaut
e18f3800be Hotfix for undefined cpfp cluster bug 2023-06-21 19:07:00 -04:00
hunicus
9bfc2c9413 Update ronindojo link on about page 2023-06-20 22:36:29 -04:00
Mononaut
4fbab08586 Separate summary and audit-summary API endpoints 2023-06-20 15:13:52 -04:00
Peter Foytik
32490bfdb7 Merge branch 'mempool:master' into master 2023-06-20 13:09:08 -04:00
Antoni Spaanderman
0d69ad43ab fix config issues 2023-06-18 20:34:56 +02:00
Antoni Spaanderman
dc491a5984 change default cookie path to /bitcoin/.cookie 2023-06-18 19:16:09 +02:00
Antoni Spaanderman
e9386ec003 Add Bitcoin Core RPC cookie authentication option 2023-06-18 19:16:07 +02:00
softsimon
e5efc2957a Merge pull request #3871 from mempool/mononaut/rbf-removed-not-mined
Change RBF status badges
2023-06-17 15:05:12 +02:00
softsimon
20d7e56de2 Update i18n 2023-06-17 15:04:46 +02:00
softsimon
0586e04d67 Merge pull request #3873 from mempool/simon/sanitize-pubkey-search
Sanitize node pubkey search
2023-06-17 11:22:28 +02:00
wiz
39bde61538 ops: Set cache time for /api/v1 endpoints to 2 sec 2023-06-16 17:15:41 -07:00
softsimon
0fb92e6ebb Merge pull request #3872 from mempool/simon/mempool-loop-timeout
Reinstate the mempool loop time limit
2023-06-17 00:56:00 +02:00
softsimon
c8d3653ef3 Updating tests 2023-06-17 00:32:58 +02:00
softsimon
a5575c0876 Sanitize node pubkey search 2023-06-16 23:42:57 +02:00
Mononaut
1872e5d12f change "removed" and "replaced" badges to yellow 2023-06-16 17:35:07 -04:00
softsimon
176f5e1377 Reinstate the mempool loop time limit 2023-06-16 20:42:31 +02:00
Mononaut
c0e235c01a Mark RBF transactions as removed if earlier version is mined 2023-06-16 13:47:09 -04:00
softsimon
2faeb1071e Merge pull request #3864 from mempool/mononaut/blocks-api-calls
remove redundant audit score api calls from blocks list
2023-06-16 19:37:48 +02:00
Peter
e8aea38320 contributer license 2023-06-15 21:46:09 -04:00
Peter
5f3fd85834 the last two docker-compose overrides need MEMPOOL_ in front 2023-06-15 21:39:51 -04:00
Mononaut
618ba56c42 remove redundant audit score api calls from blocks list 2023-06-15 12:57:20 -04:00
softsimon
d955dbff55 Merge pull request #3842 from mempool/mononaut/consistent-fee-ranges
Fix fee range inconsistencies
2023-06-15 16:49:07 +02:00
Mononaut
ee39283241 precompute block fee spans 2023-06-15 09:54:08 -04:00
wiz
c42670259e ops: Fix crash while building electrs in install script 2023-06-15 02:37:30 -07:00
secondl1ght
fe6da62dab create secondl1ght.txt contributor file 2023-06-14 21:55:17 -06:00
secondl1ght
22a491717a update frontend local instructions 2023-06-14 21:48:36 -06:00
hunicus
816f410855 Make luminex css class unique 2023-06-14 22:17:05 -04:00
Mononaut
bb61ff97fa continue to skip first rate in simple fee ranges 2023-06-14 19:04:09 -04:00
hunicus
73d629d319 Add luminex as enterprise sponsor on about page 2023-06-14 18:58:49 -04:00
softsimon
c630d705df Merge pull request #3839 from mempool/mononaut/clean-up-legacy-cpfp
Clean up legacy CPFP calculations
2023-06-14 23:14:07 +02:00
softsimon
c5bf167e36 Merge pull request #3846 from mempool/mononaut/audit-details
Add expected vs actual audit details comparison table
2023-06-14 23:05:07 +02:00
softsimon
e8420853e2 Merge pull request #3838 from mempool/mononaut/dependent-rate-indexing
calculate & index ancestor-dependent effective rates
2023-06-14 23:02:25 +02:00
softsimon
a8a5b733e5 Merge pull request #3860 from mempool/simon/disable-liquid-tests
Disabling Liquid tests for now
2023-06-14 22:28:08 +02:00
Mononaut
30f8d5cf96 add missing markForChecks in blocks list 2023-06-14 16:23:57 -04:00
softsimon
f09939a201 Disabling Liquid tests for now 2023-06-14 22:20:18 +02:00
softsimon
a99515e94a Merge pull request #3834 from mempool/mononaut/fix-double-mined-rbf
Fix multiple mined RBF replacements of the same tx
2023-06-14 22:15:53 +02:00
Mononaut
c4f7b99978 add backfilled audit stats to cached blocks 2023-06-14 16:15:33 -04:00
softsimon
dcf73ec3f3 Merge pull request #3831 from mempool/mononaut/clock
Interactive clock
2023-06-14 22:14:26 +02:00
softsimon
bbe0579cdd Changing default clock to mempool 2023-06-14 21:53:51 +02:00
softsimon
4390ffe3b6 Merge pull request #3820 from mempool/nymkappa/reindexing-pools-update
Mining pool update / re-indexer improvment
2023-06-14 19:16:08 +02:00
Mononaut
6b93e61b56 minor audit details fixes 2023-06-14 11:28:39 -04:00
softsimon
c79d031c86 Merge pull request #3668 from mempool/simon/ignore-existing-mining-pools
Skip existing mining pool logos when syncing assets
2023-06-13 11:15:02 +02:00
Felipe Knorr Kuhn
048399574e Merge branch 'master' into update_node_matrix 2023-06-12 22:42:21 -07:00
Mononaut
ae5a0312be change audit detail labels 2023-06-12 12:40:19 -04:00
softsimon
0b2ffb3e91 Merge branch 'master' into nymkappa/reindexing-pools-update 2023-06-12 15:53:46 +02:00
softsimon
d009edbbf3 Merge pull request #3822 from mempool/nymkappa/fix-possible-crash
fix possible backend crash
2023-06-12 15:52:47 +02:00
softsimon
1fbdf97639 Merge branch 'master' into nymkappa/fix-possible-crash 2023-06-12 15:45:02 +02:00
softsimon
a36303e1fb Merge branch 'master' into simon/ignore-existing-mining-pools 2023-06-12 14:29:40 +02:00
hunicus
ce950d63cb Replace disclaimer text regarding tx acceleration 2023-06-12 07:07:15 -04:00
softsimon
27a3a1575d Merge pull request #3849 from mempool/mononaut/icon-reset-scroll
Reset blockchain scroll on logo click
2023-06-11 18:43:44 +02:00
Mononaut
93d24d1cf7 Add expected fee % diff to blocks list page 2023-06-10 12:35:15 -04:00
Mononaut
bfb842d7ea Add % difference to weight and tx count in audit details 2023-06-10 12:35:13 -04:00
Mononaut
5b62966863 Add indexer task to backfill audit fee/weight stats 2023-06-10 12:34:16 -04:00
Mononaut
3013386ca5 Add expected weight to audit table 2023-06-10 12:32:53 -04:00
Mononaut
aedaf53137 Merge branch 'master' into merged-expected-block-fees 2023-06-10 12:15:29 -04:00
Joost Jager
7157efcf79 Add CLA for joostjager
Signed-off-by: Joost Jager <joost.jager@gmail.com>
2023-06-10 11:10:05 +02:00
Mononaut
57ac1486a0 Reset blockchain scroll on logo click 2023-06-09 19:03:47 -04:00
softsimon
9a99ee6486 Merge pull request #3772 from mempool/nymkappa/dont-rethrow-block-summaries
[audit] warn if we cannot save templates and remove exception re-throw
2023-06-07 18:31:59 +02:00
nymkappa
fd30bff9c6 don't throw when BlocksAuditRepositories.$saveAudit fails 2023-06-07 18:04:21 +02:00
Mononaut
3c022ad755 Fix fee range inconsistencies 2023-06-07 11:59:31 -04:00
Mononaut
ca9b48283d calculate & index ancestor-dependent effective rates 2023-06-06 18:23:06 -04:00
Mononaut
c8fc416c88 Remove legacy mined block cpfp loop, reset stale ancestors 2023-06-06 14:19:30 -04:00
softsimon
804640216f Merge pull request #3830 from mempool/fix/p2tr-annex-parse
Fix: Annex parsing for p2tr on bitcoind/romanz backends
2023-06-06 20:27:03 +04:00
softsimon
2191bf2a22 Merge pull request #3826 from mempool/mononaut/fix-firstseen
fix firstSeen reset migration bug
2023-06-06 20:18:35 +04:00
softsimon
7d92cdf015 Merge pull request #3811 from mempool/mononaut/fix-median-fee-bug
Fix missing fees in $updateBlocks without esplora
2023-06-06 19:35:45 +04:00
Mononaut
386037d1db Fix missing fees in $updateBlocks without esplora 2023-06-06 17:34:22 +02:00
softsimon
f2e216b9ac Merge pull request #3804 from mempool/mononaut/split-summaries-table
Break block templates into their own db table
2023-06-06 19:30:28 +04:00
Mononaut
35d80eec1c Fix multiple mined RBF replacements of the same tx 2023-06-06 11:01:01 -04:00
softsimon
eb8c38e4e8 Merge pull request #3832 from mempool/mononaut/fix-graph-filter-colors
fix graph filter dropdown colors
2023-06-06 17:53:56 +04:00
Joost Jager
74b2014dff Show expected fees in blocks list 2023-06-06 08:52:29 +02:00
Mononaut
689319437a fix graph filter dropdown colors 2023-06-05 14:23:37 -04:00
Mononaut
9883e59f12 fix graph page links layout 2023-06-05 14:09:02 -04:00
Mononaut
30396c5dca Add link to clock from graph page 2023-06-05 13:28:00 -04:00
Mononaut
ec0d5e0c23 Polish clocks, fix urls, make interactive 2023-06-05 13:27:17 -04:00
junderw
9e1de656c1 Fix: Annex parsing for p2tr on bitcoind/romanz backends 2023-06-05 07:21:55 -07:00
Joost Jager
3c0bb11208 Add expected total fees audit 2023-06-05 14:19:16 +02:00
Mononaut
37dd95a4a0 fix firstSeen reset bug 2023-06-04 12:47:04 -04:00
softsimon
6076eeed46 Merge pull request #3825 from mempool/mononaut/fix-negative-confs
Fix negative confirmations
2023-06-04 20:23:35 +04:00
Mononaut
8b1dff6d15 fix txConfirmed type 2023-06-04 11:47:46 -04:00
softsimon
9d4b58604b Optimize change detection 2023-06-04 10:32:24 +04:00
Mononaut
c49626aefc Confirmation badge component, fix negative confirmations 2023-06-03 16:20:32 -04:00
softsimon
baeb200e8b Merge pull request #3815 from mempool/hunicus/unmute-promo
Unmute about promo video on click
2023-06-03 15:35:31 +04:00
softsimon
11669849ab Merge pull request #3818 from mempool/mononaut/calculate-sigops
Count sigops and use adjusted vsizes
2023-06-01 09:49:54 +07:00
Mononaut
b171ed6dd0 Break block templates into their own db table 2023-05-31 13:43:48 -04:00
nymkappa
0b74cf1d89 fix possible backend crash x2, remove dead code, improve log 2023-05-31 09:58:29 -07:00
nymkappa
c558c85f36 fix possible backend crash 2023-05-31 09:48:44 -07:00
Mononaut
0ac76e12c4 Fix frontend logic for displaying effective fee rate 2023-05-31 12:11:56 -04:00
Mononaut
ee1ec414ed use fractional base vsize in adjusted vsize 2023-05-31 11:45:47 -04:00
Mononaut
0e5dc21854 Fix mined rbf / calculate sigop merge conflicts 2023-05-31 11:37:13 -04:00
Mononaut
bf7df08305 Enforce block sigop limits in GBT algorithm 2023-05-31 11:29:58 -04:00
Mononaut
ec63c822db Display sigops & adjusted vsize in transaction page details 2023-05-31 11:29:58 -04:00
Mononaut
09e4e44e88 Count sigops & use adjusted vsizes in mempool projections 2023-05-31 11:29:56 -04:00
Mononaut
c5e6821ad4 show fee rating badge either on rate or effective rate 2023-05-31 11:27:04 -04:00
Mononaut
70fa78b987 Fix effective fee rates for non-cpfp dependents 2023-05-31 11:27:04 -04:00
softsimon
8c78e35063 Use native angular way of accessing HTML elements 2023-05-31 14:39:19 +07:00
nymkappa
ea51ab8d0b [indexer] show github sha when successufly updated pools json 2023-05-30 10:42:41 -07:00
nymkappa
62169cee3f [indexer] oldest known mining pool block per network 2023-05-30 10:25:41 -07:00
nymkappa
e7e7b30807 fix log 2023-05-30 10:16:56 -07:00
nymkappa
107bdbc209 [indexer] show indexer progress in /status component 2023-05-30 10:13:07 -07:00
nymkappa
0b4615cbf0 [indexer] reindex diff adjustments and hashrates upon mining pool update 2023-05-30 10:05:10 -07:00
wiz
126a75ed45 ops: Use mempool/electrs fork of blockstream/electrs 2023-05-30 12:53:38 -03:00
softsimon
0703690190 Merge pull request #3785 from mempool/mononaut/mined-block-rbf
Detect RBF by mined transactions
2023-05-30 14:50:07 +07:00
wiz
7f56f0295b Merge pull request #3817 from mempool/ops/add-backend-reindex-macros
ops: Add npm run scripts for backend reindexing
2023-05-29 14:21:01 -03:00
wiz
27154da191 ops: Add npm run scripts for backend reindexing 2023-05-29 14:09:28 -03:00
hunicus
0fb61fded3 Add touch event for touchscreens 2023-05-27 13:20:55 -04:00
hunicus
ce00814bbf Unmute about promo video on click 2023-05-28 01:40:30 +09:00
wiz
c758a3538b Merge pull request #3806 from mempool/dependabot/npm_and_yarn/backend/bitcoinjs-lib-6.1.1 2023-05-27 12:16:29 -03:00
Felipe Knorr Kuhn
60fd2df4e6 Merge branch 'master' into dependabot/npm_and_yarn/backend/bitcoinjs-lib-6.1.1 2023-05-27 08:13:46 -07:00
wiz
05e38b43b9 Merge pull request #3809 from mempool/hunicus/tm-r
Switch tm to r for registered trademarks
2023-05-26 23:50:35 -03:00
hunicus
9fa1eebc02 Switch tm to r for registered trademarks 2023-05-27 06:46:18 +09:00
wiz
79ea1ee257 Merge pull request #3797 from mempool/hunicus/add-bullbit
Add bull bitcoin as enterprise sponsor
2023-05-26 11:34:40 -03:00
wiz
add405481e Merge pull request #3776 from knorrium/docker_vars_test
Docker vars tests
2023-05-26 11:33:48 -03:00
Felipe Knorr Kuhn
c382e03e4a Merge branch 'master' into docker_vars_test 2023-05-26 07:16:29 -07:00
dependabot[bot]
ac73de31b5 Bump bitcoinjs-lib from 6.1.0 to 6.1.1 in /backend
Bumps [bitcoinjs-lib](https://github.com/bitcoinjs/bitcoinjs-lib) from 6.1.0 to 6.1.1.
- [Changelog](https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bitcoinjs/bitcoinjs-lib/compare/v6.1.0...v6.1.1)

---
updated-dependencies:
- dependency-name: bitcoinjs-lib
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-26 02:56:38 +00:00
wiz
ccd403b771 Merge branch 'master' into hunicus/add-bullbit 2023-05-25 19:18:00 -03:00
wiz
f28c460bb4 Merge pull request #3796 from mempool/hunicus/fka-embassyos
Change embassyos to startos
2023-05-25 19:17:53 -03:00
hunicus
5711c939d7 Make svg pretty 2023-05-25 15:58:48 -04:00
wiz
ef3ce6d187 Merge pull request #3799 from Emzy/ops/nginx-json-match 2023-05-25 14:58:45 -03:00
wiz
410e604dce Merge pull request #3801 from mempool/nymkappa/reindexing
Always re-indexing blocks when updating mining pools
2023-05-25 13:10:10 -03:00
nymkappa
8ffe2f3156 Always re-indexing blocks when updating mining pools 2023-05-25 09:08:51 -07:00
wiz
d27febf878 Merge pull request #3800 from mempool/simon/dont-wipe-mempool-cache
Don't wipe mempool cache in pools updater
2023-05-25 12:37:51 -03:00
softsimon
038f9659bb Save new disk cache after ignoring blocks 2023-05-25 19:19:14 +04:00
softsimon
aeb896e200 Don't wipe mempool cache in pools updater 2023-05-25 19:07:51 +04:00
softsimon
349ba613dd Revert "Don't wipe mempool cache in pools updater"
This reverts commit 714208a366.
2023-05-25 19:06:45 +04:00
softsimon
714208a366 Don't wipe mempool cache in pools updater 2023-05-25 19:05:29 +04:00
Stephan Oeste
ad4c7d7c0b Fix exact match of .js files. Was also matching .json before. 2023-05-25 16:50:56 +02:00
hunicus
264c02eca1 Add bull bitcoin as enterprise sponsor 2023-05-25 01:29:55 -04:00
hunicus
ea42077320 Change embassyos to startos 2023-05-25 00:31:44 -04:00
Mononaut
125b9e4525 Restore liquid max block weight to defaults 2023-05-24 15:49:35 -04:00
softsimon
92ffb441a1 Merge pull request #3791 from mempool/simon/pool-detection-addresses-fix
Fix for pool output address matching
2023-05-24 19:49:41 +04:00
wiz
725526d733 Merge pull request #3637 from mempool/ops/installer-fix-cln-folder-creation
ops: Fix installer creation of CLN folders
2023-05-23 18:34:28 -03:00
softsimon
31ea2e1d4b Fix for pool output address matching
fixes #3782
2023-05-24 01:22:01 +04:00
wiz
c81509d762 ops: Start mysql-server using onestart from install 2023-05-23 17:57:27 -03:00
wiz
07f16165ff ops: Disable buggy CLN crontab job in install 2023-05-23 17:23:51 -03:00
softsimon
536f29eb0d Merge pull request #3783 from mempool/mononaut/high-sigop-audit
Omit possible high-sigop txs from block health score
2023-05-21 19:32:26 -04:00
softsimon
e88e56421b Enable fullrbf 2023-05-20 18:00:22 -04:00
Mononaut
369db7a63c Detect RBF by mined transactions 2023-05-18 09:51:41 -04:00
Mononaut
81ec54fcb3 Omit possible high-sigop txs from block health score 2023-05-17 11:46:50 -04:00
softsimon
64d6bda728 Merge pull request #3780 from mempool/mononaut/fix-graph-filter
Fix mempool graph fee filtering
2023-05-16 23:37:12 -04:00
Mononaut
7ab05d815d Fix mempool graph fee filtering 2023-05-16 16:25:38 -06:00
Felipe Knorr Kuhn
50a865e54e Merge branch 'master' into docker_vars_test 2023-05-15 13:09:46 -07:00
softsimon
2156fb2a83 Merge pull request #3406 from mempool/nymkappa/block-health-history-i18n
Rename block prediction to block health
2023-05-14 16:39:43 -05:00
Felipe Knorr Kuhn
4e1087801a Merge branch 'master' into docker_vars_test 2023-05-14 14:34:47 -07:00
nymkappa
4dec152df0 Blocks Health -> Block Health 2023-05-14 16:32:11 -05:00
nymkappa
720c2b8807 Block prediction -> Block health - Fix wrong chart download name 2023-05-14 16:32:11 -05:00
Felipe Knorr Kuhn
b00e0b6a73 Fix Docker config file to use the correct types 2023-05-14 14:26:38 -07:00
Felipe Knorr Kuhn
6333f3aa47 Update the backend config fixture 2023-05-14 14:25:23 -07:00
softsimon
7b127ebe8b Merge pull request #3653 from mempool/mononaut/fix-mempool-block-skeleton
Fix mempool block skeleton loaders
2023-05-14 16:20:24 -05:00
softsimon
585309f9f0 Merge branch 'master' into mononaut/fix-mempool-block-skeleton 2023-05-14 16:18:37 -05:00
Felipe Knorr Kuhn
184ca3c662 Add a test to check that the docker json is in sync with the template 2023-05-14 14:17:53 -07:00
softsimon
bfea535df1 Merge pull request #3716 from mempool/mononaut/skeleton-fee
display fee box skeleton while mempool not in sync
2023-05-14 16:16:02 -05:00
softsimon
65189d6f3e Merge branch 'master' into mononaut/skeleton-fee 2023-05-14 16:10:39 -05:00
Felipe Knorr Kuhn
de434bb398 Add missing Lightning config 2023-05-14 13:26:35 -07:00
Felipe Knorr Kuhn
804485a526 Add missing DATABASE_TIMEOUT config 2023-05-14 13:20:18 -07:00
Felipe Knorr Kuhn
3f8fefcb0e Add a test to check if all the vars are on the Docker script 2023-05-14 13:14:44 -07:00
Felipe Knorr Kuhn
178da3df26 Use the same delimiter for all substitutions 2023-05-14 13:13:37 -07:00
softsimon
aa9fd845ef Path fix 2023-05-14 14:21:41 -05:00
softsimon
e41ce16bbb Merge branch 'master' into simon/ignore-existing-mining-pools 2023-05-14 13:19:22 -05:00
softsimon
f12403747d Adding video to sha1 check and chaining requests in promises. 2023-05-14 12:45:42 -05:00
Felipe Knorr Kuhn
68e9fb0882 Merge branch 'master' into update_node_matrix 2023-05-13 14:27:45 -07:00
softsimon
da3c3e8f5c Re-use variable fix 2023-05-13 13:24:44 -05:00
softsimon
a447887901 Adding missing slash 2023-05-13 13:23:27 -05:00
softsimon
02b5fadf44 Merge pull request #3774 from mempool/mononaut/fix-clock-fee
Remove clock fee debugging adjustment
2023-05-13 12:16:32 -05:00
Mononaut
ea52d40a10 Remove clock fee debugging adjustment 2023-05-13 09:33:15 -06:00
softsimon
cbd4ea1aa8 Merge pull request #3771 from mempool/mononaut/clock-mempool-subscription
Add missing clock websocket subscriptions
2023-05-13 08:35:05 -05:00
nymkappa
f95c16a78e [audit] warn if we cannot save templates and remove exception re-throw 2023-05-13 15:28:29 +02:00
softsimon
fa1cf7abb9 Merge pull request #3768 from mempool/hunicus/tm-symbol
Add trademark symbol to trademarks in footer
2023-05-13 08:04:55 -05:00
Mononaut
6a5afd7f95 Add missing clock websocket subscriptions 2023-05-12 21:08:12 -06:00
softsimon
d3bd434255 Use sha hashes to compare before downloading 2023-05-12 16:01:45 -05:00
hunicus
0ddd9b2487 Turn generic project text into trademark 2023-05-12 15:54:35 -04:00
hunicus
ee1e75f978 Add trademark symbol to trademarks in footer 2023-05-12 12:55:51 -04:00
wiz
6e83bee23f ops: Disable mempool loop for lightning backends 2023-05-12 11:38:28 -05:00
softsimon
49e057e726 Fixing trailing slash issue 2023-05-12 11:05:20 -05:00
softsimon
7f3e4eb534 Skip existing mining pool logos when syncing assets 2023-05-12 11:05:19 -05:00
softsimon
97c8ace8f7 Merge pull request #3749 from mempool/nymkappa/fix-3747
[mempool graph] show horizontal guide line
2023-05-12 10:54:05 -05:00
softsimon
a3ca79e995 Temporarily hide sign in 2023-05-12 10:53:42 -05:00
softsimon
50a96ce340 Merge branch 'master' into update_node_matrix 2023-05-12 10:37:23 -05:00
softsimon
962c9543d0 Merge pull request #3752 from mempool/simon/global-footer-fixes
Global footer fixes
2023-05-12 10:35:01 -05:00
softsimon
52bcef54be Only show sign in on mempool base module 2023-05-12 10:34:32 -05:00
softsimon
22030027b4 Merge pull request #3755 from mempool/mononaut/better-precise-durations
smarter time duration unit selection
2023-05-12 10:31:16 -05:00
hunicus
53a9093a70 Center left footer panel vertically 2023-05-12 11:29:17 -04:00
softsimon
6ef793f202 Merge pull request #3760 from knorrium/fix_rbf_test
Update mocks and fix RBF tests
2023-05-12 10:29:07 -05:00
softsimon
b227ff8e1b Update websocket RBF fixture 2023-05-12 10:14:21 -05:00
Felipe Knorr Kuhn
38162e1af2 Merge branch 'master' into update_node_matrix 2023-05-12 07:44:07 -07:00
Felipe Knorr Kuhn
db6b9ffa6e Merge branch 'master' into fix_rbf_test 2023-05-12 07:43:54 -07:00
softsimon
5a0c809fa7 Fix linting 2023-05-12 09:37:19 -05:00
softsimon
f6caed3ffd Hide sign in on non official 2023-05-12 09:31:12 -05:00
softsimon
6141516eb2 Merge pull request #3753 from mempool/mononaut/fix-difficulty-estimate
Fix difficulty estimate
2023-05-12 09:21:06 -05:00
Felipe Knorr Kuhn
b0478f6604 Remove node 19 and 20 due to Angular incompatibility 2023-05-11 22:15:29 -07:00
Felipe Knorr Kuhn
6cae3256a9 Update node CI test matrix 2023-05-11 21:42:19 -07:00
Felipe Knorr Kuhn
3b295b5482 Update mocks and fix RBF tests 2023-05-11 21:33:47 -07:00
softsimon
adc395fc3d Merge pull request #3743 from mempool/mononaut/full-stack-fee-stats
stack-of-n-blocks fee statistics
2023-05-11 19:48:02 -05:00
hunicus
0c52898010 Add spacing to compensate for links under button 2023-05-11 20:43:57 -04:00
hunicus
4fe6a74d20 Vary network urls according to base module 2023-05-11 20:37:11 -04:00
softsimon
7fca18d7be Merge pull request #3751 from mempool/mononaut/fix-rbf-times
Fix RBF timestamps to always use seconds
2023-05-11 19:35:29 -05:00
hunicus
208756bdd2 Show explorer links conditionally 2023-05-11 19:31:22 -04:00
hunicus
82a072bd87 Remove footer from bisq docs 2023-05-11 19:04:24 -04:00
softsimon
6d76d11837 Merge pull request #3742 from vostrnad/empty-witness-items
Display empty witness items
2023-05-11 17:51:44 -05:00
hunicus
982f1e007a Fix bisq quirks 2023-05-11 18:48:53 -04:00
hunicus
a4bf545993 Fix footer on bisq 2023-05-11 18:44:42 -04:00
softsimon
fe51f6a504 Merge pull request #3745 from mempool/mononaut/address-false-positive
Fix txids interpreted as addresses in search bar
2023-05-11 17:34:19 -05:00
softsimon
f5d311ca44 Fixes for Liquid 2023-05-11 17:14:16 -05:00
hunicus
b81dd99825 Remove social icons and version from about page 2023-05-11 17:57:04 -04:00
hunicus
f08457aba7 Improve responsiveness and add social icons 2023-05-11 17:46:38 -04:00
Mononaut
c601e5dcb4 smarter time duration unit selection 2023-05-11 13:33:38 -06:00
hunicus
11b82b3459 Remove third column on footer 2023-05-11 15:31:48 -04:00
Mononaut
d322665789 update difficulty tests 2023-05-11 11:39:18 -06:00
Mononaut
49529627f8 Fix difficulty adjustment calculation 2023-05-11 11:18:58 -06:00
softsimon
107746feec Global footer fixes 2023-05-11 11:38:57 -05:00
wiz
cb9d09a930 Merge branch 'master' into nymkappa/scan-closed-channel-no-mempool 2023-05-11 11:04:19 -05:00
Mononaut
e5bef55d47 Fix RBF timestamps to always use seconds 2023-05-11 09:21:48 -06:00
wiz
17dd02ed4e Merge pull request #3736 from mempool/mononaut/optimize-websocket-updates
Optimize websocket updates
2023-05-11 09:57:08 -05:00
nymkappa
7bb34fe090 [mempool graph] show horizontal guide line 2023-05-11 14:30:57 +02:00
Mononaut
abbaee0274 Fix txids interpreted as addresses in search 2023-05-10 19:57:58 -06:00
Mononaut
3d1cd3193a online calculation of stack-of-n-blocks fee statistics 2023-05-10 17:34:20 -06:00
Vojtěch Strnad
be53cd8b48 Display empty witness items 2023-05-11 00:11:23 +02:00
Vojtěch Strnad
4b20ea7232 Accept the CLA for @vostrnad 2023-05-11 00:10:57 +02:00
Mononaut
ffd7831efc optimize websocket init data 2023-05-10 08:05:39 -06:00
Mononaut
f8636d20c2 optimize batch client websocket updates 2023-05-10 08:05:39 -06:00
wiz
3b4dd7e633 Merge pull request #3724 from mempool/hunicus/big-footer
Add big footer
2023-05-09 13:45:43 -05:00
wiz
ea101e65bb Merge branch 'master' into hunicus/big-footer 2023-05-09 13:31:58 -05:00
wiz
8a713c3880 Merge pull request #3732 from mempool/mononaut/more-fee-bands
Increase displayed fee bands
2023-05-09 13:31:50 -05:00
wiz
42d5650bc0 Merge branch 'master' into mononaut/more-fee-bands 2023-05-09 13:20:04 -05:00
wiz
ee2bc2282a Merge pull request #3731 from mempool/mononaut/clocktower
Mempool clocks
2023-05-09 12:51:01 -05:00
wiz
34565dc675 Merge branch 'master' into mononaut/clocktower 2023-05-09 12:36:58 -05:00
wiz
6e57de3220 Merge pull request #3735 from mempool/mononaut/optimize-gbt-main-thread
Optimize main thread processing of GBT updates
2023-05-10 00:13:32 +09:00
Mononaut
033e78c0a7 Optimize main thread processing of GBT updates 2023-05-08 23:01:17 -06:00
Mononaut
5257716e1a Dynamic fee ranges & legend in mempool graph 2023-05-08 12:53:37 -06:00
Mononaut
47b95af8ae increase range of fee colors 2023-05-08 12:44:14 -06:00
Mononaut
f20bfb025b fix clock merge conflicts 2023-05-08 09:11:30 -06:00
Mononaut
9671259f5c clock selected block arrow 2023-05-08 08:48:56 -06:00
Mononaut
07dddd857b resize clock labels 2023-05-08 08:48:56 -06:00
Mononaut
19353fc1d0 rename clock components 2023-05-08 08:48:56 -06:00
Mononaut
1fccd70379 clock size query params 2023-05-08 08:48:55 -06:00
Mononaut
fdb0cf509d query param toggle for clock stats 2023-05-08 08:48:55 -06:00
Mononaut
056d61a28d clock i18n 2023-05-08 08:48:55 -06:00
Mononaut
d3a7950e78 Add clock statistics 2023-05-08 08:48:55 -06:00
Mononaut
3ddd51d4cb implement clock face & dial 2023-05-08 08:48:55 -06:00
Mononaut
f879a34021 responsive clock, fix blockchain 2023-05-08 08:48:55 -06:00
Mononaut
61531171c9 clocktower top blocks & layout adjustment 2023-05-08 08:48:53 -06:00
Mononaut
3b459b6857 hourly blocks clock faces 2023-05-08 08:46:18 -06:00
softsimon
be5882edb3 Merge pull request #3710 from mempool/mononaut/optimize-gbt-data
Mononaut/optimize gbt data
2023-05-07 23:55:27 +04:00
Mononaut
428d4fc6ab optimize data structures for advanced GBT algorithm 2023-05-07 11:54:23 -06:00
softsimon
07d9315bbe Merge pull request #3727 from mempool/simon/rapid-mempool-sync
Rapid mempool sync
2023-05-07 20:22:10 +04:00
softsimon
ee05a6852e Rapid mempool sync 2023-05-07 20:21:02 +04:00
softsimon
64b3e7ad50 Merge pull request #3655 from mempool/mononaut/mempool-delete-race-condition
Fix new block mempool eviction race condition
2023-05-07 20:18:36 +04:00
hunicus
822934828a Add initial content to big footer 2023-05-06 04:10:17 -04:00
softsimon
8866923efa Merge pull request #3721 from mempool/mononaut/fix-first-seen
Restore transaction first seen field
2023-05-06 03:05:35 +04:00
Mononaut
06ef114395 Restore transaction first seen field 2023-05-05 15:12:05 -07:00
softsimon
918a3ef115 Merge pull request #3677 from mempool/mononaut/duration-precision
More precise durations in difficulty components
2023-05-06 01:58:16 +04:00
softsimon
5e9e570b99 Merge branch 'master' into mononaut/duration-precision 2023-05-06 01:39:50 +04:00
softsimon
3e6c672a1e Merge pull request #3676 from mempool/mononaut/better-durations
Improve unit selection for duration formatting
2023-05-06 01:39:37 +04:00
Mononaut
387a38a1c8 Increase precision of some formatted durations 2023-05-05 14:35:57 -07:00
Mononaut
78e86c7c55 Improve unit selection for duration formatting 2023-05-05 14:30:03 -07:00
softsimon
de1e6d3b27 Merge pull request #3672 from mempool/hunicus/unchained-icon
Update unchained icon on about page
2023-05-06 01:18:53 +04:00
softsimon
9c9837d722 Merge pull request #3720 from mempool/simon/fix-global-footer-graph-pages
Fix height on graphs pages with footer
2023-05-06 00:55:56 +04:00
softsimon
494ceca44e Correcting graph widget bottom padding 2023-05-06 00:55:25 +04:00
softsimon
cb324733bf Removing weird bottom padding 2023-05-06 00:31:08 +04:00
softsimon
ad6d817f32 Adding bottom margin on some graph list pages 2023-05-06 00:20:56 +04:00
softsimon
e5ae2f6ef6 Fixing header margin and Lightning charts 2023-05-06 00:08:26 +04:00
softsimon
3425f2e390 Fix height on graphs pages with footer 2023-05-05 23:38:35 +04:00
Mononaut
3d0f7d6855 add missing rbf eviction 2023-05-05 10:20:17 -07:00
Mononaut
d322c6b5b5 Fix new block mempool deletion race condition 2023-05-05 10:19:11 -07:00
softsimon
a7dff0effe Merge pull request #3719 from mempool/mononaut/fix-rbf-cache-eviction
fix rbf cache eviction logic
2023-05-05 14:27:56 +04:00
Mononaut
f456912679 fix rbf cache eviction logic 2023-05-04 23:30:11 -04:00
softsimon
0d204426e6 Merge pull request #3564 from mempool/simon/global-footer
Global footer
2023-05-05 02:14:36 +04:00
softsimon
4c5ece8249 Fixing navbar overflowing footer 2023-05-05 02:06:48 +04:00
softsimon
e7ae9049bb Enabling footer on about page 2023-05-05 01:49:11 +04:00
softsimon
d40344aa92 Global footer component that fixes Liquid 2023-05-05 01:38:58 +04:00
softsimon
e3e273a688 Fixing position on mobile view 2023-05-05 00:53:21 +04:00
softsimon
e9a0be4941 Remove logger
Co-authored-by: Bufo <32884105+bufo24@users.noreply.github.com>
2023-05-05 00:53:21 +04:00
softsimon
9ca9ab63f5 Bottom padding for mobile 2023-05-05 00:53:20 +04:00
softsimon
261241fcc8 Global footer 2023-05-05 00:53:20 +04:00
softsimon
3c108a271d Merge pull request #3703 from mempool/mononaut/delayed-disk-cache
delay writing disk cache until block handler completes
2023-05-04 18:15:11 +04:00
Mononaut
e5f97ace8b delay writing disk cache until block handler completes 2023-05-03 15:53:47 -06:00
softsimon
e807b3ca74 Merge pull request #3705 from mempool/mononaut/increase-websocket-timeout
Increase client websocket timeout
2023-05-04 01:35:16 +04:00
softsimon
90154aec83 Merge pull request #3380 from mempool/mononaut/mempool-effective-rates
Use effective fee rates in mempool block visualizations & tooltips
2023-05-04 01:19:40 +04:00
Mononaut
d7333ec858 display fee box skeleton while mempool not in sync 2023-05-03 15:01:07 -06:00
softsimon
e6e90799ef Merge branch 'master' into mononaut/mempool-effective-rates 2023-05-04 00:58:49 +04:00
softsimon
8fd9c1a292 Merge pull request #3673 from mempool/mononaut/stable-mempool-positions
Improve stability of the mempool transaction marker arrow
2023-05-04 00:55:35 +04:00
Mononaut
489470639a remove mempool marker on tx confirmation 2023-05-03 14:18:07 -06:00
Mononaut
b79377d5a1 Use new mempool position data for transaction ETA 2023-05-03 14:18:07 -06:00
Mononaut
a22703d547 Add mempool position improvements to updateMempoolBlocks 2023-05-03 14:18:07 -06:00
Mononaut
3b8bcc4da5 Improve stability of mempool tx position arrow 2023-05-03 14:18:06 -06:00
softsimon
a5b764fb66 Merge pull request #3714 from mempool/mononaut/fix-tx-eta
Fix transaction ETA calculation
2023-05-04 00:17:09 +04:00
Mononaut
9bd968f6c3 fix tx page mempool blocks subscription leak 2023-05-03 13:58:08 -06:00
Mononaut
e3f1fced99 keep ETA relative time basis updated 2023-05-03 13:55:26 -06:00
softsimon
12ae940ed6 Merge pull request #2847 from mempool/mononaut/rbf-timeline
RBF Timelines
2023-05-03 23:48:57 +04:00
Mononaut
b325f8c524 Fix import path 2023-05-03 13:16:27 -06:00
Mononaut
ca7c8906a5 Fix missing null checks in tx component 2023-05-03 13:00:23 -06:00
Mononaut
a3b0c56182 Improve RBF diagram state visibility 2023-05-03 13:00:23 -06:00
Mononaut
f29a56f3fe Don't show RBF replaced alert banner after confirmation 2023-05-03 13:00:23 -06:00
Mononaut
36c7697c2b Update rbf disk caching for new method 2023-05-03 13:00:23 -06:00
Mononaut
3355419761 fix missing FULL_RBF_ENABLED config entries 2023-05-03 13:00:22 -06:00
Mononaut
3cb96b32a6 fix rbf e2e test 2023-05-03 13:00:22 -06:00
Mononaut
8d57aa1f06 scroll selected rbf node into view 2023-05-03 13:00:22 -06:00
Mononaut
f2749c67f3 change rbf subheading, fix interval alignment 2023-05-03 13:00:22 -06:00
Mononaut
f95da34fd1 change rbf tooltip to standard two-column table design 2023-05-03 13:00:22 -06:00
Mononaut
7e9cfa0858 Persist RBF cache to disk 2023-05-03 13:00:20 -06:00
Mononaut
6fb4adc27d fixes for non-dual-node rbf feature 2023-05-03 12:53:56 -06:00
Mononaut
723212c918 add mouseover tooltips to rbf timelines 2023-05-03 12:53:56 -06:00
Mononaut
086b41d958 support trees of RBF replacements 2023-05-03 12:53:56 -06:00
Mononaut
c064ef6ace remove 'replaces' alert on transaction page 2023-05-03 12:53:56 -06:00
Mononaut
f46296a2bb new page listing recent RBF events 2023-05-03 12:53:53 -06:00
Mononaut
7b2a1cfd10 update RBF timeline over websocket 2023-05-03 12:52:21 -06:00
Mononaut
1b843da785 Timeline of replacements for RBF-d transactions 2023-05-03 12:52:20 -06:00
softsimon
8db7326a5a Merge pull request #3709 from mempool/mononaut/optimize-new-block-gbt
skip unnecessary makeBlockTemplates call
2023-05-03 21:56:07 +04:00
Mononaut
3f49944c05 Fix transaction ETA calculation 2023-05-03 10:02:03 -06:00
softsimon
2f0d4d6068 Merge pull request #3712 from mempool/revert-3694-simon/revert-tcp-socket-fallback
Revert "Revert TCP socket fallback"
2023-05-03 10:12:59 +04:00
softsimon
dd68572603 Revert "Revert TCP socket fallback" 2023-05-03 10:11:44 +04:00
Mononaut
03ee5c7c31 skip unnecessary makeBlockTemplates 2023-05-02 18:47:34 -06:00
softsimon
4d5662fee4 Merge pull request #3708 from mempool/simon/change-forensics-logging-to-debug
Change forensic logging to debug
2023-05-02 18:08:26 +04:00
softsimon
565aa9616b Change forensic logging to debug 2023-05-02 17:39:02 +04:00
softsimon
62ef1768ec Merge pull request #3707 from mempool/simon/audit-optimization-dead-code
Removing dead code causing slowdown
2023-05-02 16:37:54 +04:00
softsimon
c659adb4be Removing dead code causing slowdown 2023-05-02 15:40:16 +04:00
Mononaut
3691ba8242 Increase client websocket timeout 2023-05-01 18:13:53 -06:00
softsimon
32c39f7af9 Merge pull request #3702 from mempool/mononaut/websocket-logs
Log websocket statistics
2023-05-02 00:55:13 +04:00
Mononaut
3748102bb0 Log websocket statistics 2023-05-01 13:08:29 -06:00
softsimon
a87b604153 Merge pull request #3700 from mempool/mononaut/fix-async-cache-load
await for mempool change handler after loading disk cache
2023-05-01 01:54:33 +04:00
Mononaut
4597bfa5d7 use $ naming convention for async function names 2023-04-30 15:52:44 -06:00
Mononaut
f30cf70226 await for mempool change handler after loading disk cache 2023-04-30 15:51:26 -06:00
softsimon
ba4253da79 Merge pull request #3689 from mempool/mononaut/debug-main-loop-stall
detect and log stalls in the main loop
2023-05-01 00:17:57 +04:00
softsimon
58b08f2c33 Add end quotes 2023-05-01 00:16:23 +04:00
softsimon
ac240398ef Merge branch 'master' into mononaut/debug-main-loop-stall 2023-04-30 22:53:06 +04:00
softsimon
1f2d05c5a4 Merge pull request #3696 from mempool/mononaut/mysql-timeout
Add explicit timeout to mysql DB queries
2023-04-30 22:09:02 +04:00
Mononaut
e05f2198d5 Add explicit timeout to mysql DB queries 2023-04-28 19:21:03 -06:00
Mononaut
95df317f56 detect and log stall in main loop 2023-04-28 19:17:58 -06:00
softsimon
f61f520a4b Merge pull request #3687 from mempool/simon/backend-block-tip-height-endpoint
Backend block tip height endpoint
2023-04-28 13:41:49 +04:00
wiz
864225a0dc Merge branch 'master' into simon/backend-block-tip-height-endpoint 2023-04-28 18:25:13 +09:00
softsimon
5628da2f80 Merge pull request #3694 from mempool/simon/revert-tcp-socket-fallback
Revert TCP socket fallback
2023-04-28 12:16:02 +04:00
softsimon
000c46bf57 Revert TCP socket fallback 2023-04-28 12:06:49 +04:00
softsimon
66919a1aba Backend block tip height endpoint 2023-04-26 13:49:01 +04:00
Mononaut
7b9fd8ac63 prevent table overflow in unfurl previews 2023-04-26 05:15:38 +09:00
nymkappa
6ac1a43d44 Merge branch 'master' into nymkappa/tx-overflow 2023-04-22 20:11:45 +02:00
nymkappa
99af881cdd Merge branch 'master' into nymkappa/clip-label-overflow 2023-04-22 20:10:27 +02:00
hunicus
008ec104b6 Fix clashing class in unchained svg 2023-04-19 22:52:53 -04:00
hunicus
b0859f91b2 Update unchained icon on about page 2023-04-19 22:00:09 -04:00
TechMiX
22ee9916dd fix change component and audit button position in RTL mode 2023-04-19 12:15:09 +02:00
softsimon
1df2c89cdb Merge branch 'master' into mononaut/fix-mempool-block-skeleton 2023-04-12 00:11:51 +08:00
softsimon
2fbe2b2fa6 Merge pull request #3652 from mempool/mononaut/fix-flying-mempool-blocks
Disable mempool block animations except when new block is mined
2023-04-08 23:09:53 +08:00
Giovanni La Perna
71935e29c8 Update and rename giovannilaperna.txt to learntheropes.txt
change github username
2023-04-08 11:19:04 +02:00
softsimon
d293d637b5 Merge pull request #3633 from mempool/mononaut/right-click-scroll
Disable blockchain drag for middle/right click
2023-04-08 17:00:25 +08:00
softsimon
04a8249883 Merge pull request #3644 from mempool/mononaut/full-mempool-cpfp
Perform full cpfp calculations for the entire mempool
2023-04-08 16:50:57 +08:00
Rex
123b853205 Add cla 2023-04-08 11:43:26 +08:00
softsimon
a196c276c9 Merge pull request #3656 from mempool/nymkappa/update-tests
[config] add missing RETRY_UNIX_SOCKET_AFTER
2023-04-08 10:22:08 +08:00
nymkappa
dfe2cf631f [config] fix docker esplora config and template 2023-04-08 10:42:08 +09:00
nymkappa
d6913b6439 [config] add missing RETRY_UNIX_SOCKET_AFTER 2023-04-07 13:28:32 +09:00
Giovanni La Perna
bad73c1805 Create giovannilaperna.txt 2023-04-07 01:04:23 +02:00
Mononaut
6602bddb2b Fit mempool block skeleton loaders to screen 2023-04-07 03:25:02 +09:00
Mononaut
32cd8bb3cb Prevent mempool block animations except when new block mined 2023-04-07 02:18:33 +09:00
Mononaut
5950034f53 Perform full cpfp calculations for the entire mempool 2023-04-07 00:25:45 +09:00
wiz
d18ebdfc59 ops: Update hard-coded path for liquid asset icons 2023-04-06 19:19:30 +09:00
wiz
604c3ba266 ops: Tweak boot-time delays for all daemons 2023-04-06 19:19:28 +09:00
wiz
b8d063a4f7 Merge pull request #3649 from mempool/nymkappa/indexing-error
Fix indexing error
2023-04-06 17:52:58 +09:00
wiz
3c30415982 ops: Add fallback TCP socket for esplora backends 2023-04-06 17:52:17 +09:00
nymkappa
c5252dc27d [indexing] delete dead code 2023-04-06 11:55:25 +09:00
nymkappa
6016db2533 [indexing] save missing fee_percentiles and median_fee_amt when indexing on the fly 2023-04-06 11:55:17 +09:00
nymkappa
b23f14b798 [indexing] fix typescript issue, reading invalid field 2023-04-06 11:54:22 +09:00
wiz
09d52f9fbe Merge pull request #3643 from mempool/nymkappa/esplora-socket-fallback
[esplora] fallback to tcp socket if unix socket fails
2023-04-05 22:58:34 +09:00
nymkappa
c23e529f0a [main loop] retry every seconds upon exception - warn after 5 attempts 2023-04-05 22:44:01 +09:00
nymkappa
ab7cb5f681 [esplora] reset timeout variable when retrying unix socket 2023-04-05 17:05:23 +09:00
nymkappa
db27e5a92c [esplora] print log when retrying unix socket - don't fallback to tcp socket on ETIMEDOUT 2023-04-05 17:00:53 +09:00
wiz
66109afb0d ops: Enable unix socket for esplora on mainnet-lightning 2023-04-05 16:48:26 +09:00
nymkappa
b6f1fd5a4a [esplora] initialize default socket config to axiosConfigWithUnixSocket 2023-04-05 16:38:37 +09:00
nymkappa
44a0913b81 [esplora] fallback to tcp socket if unix socket fails 2023-04-05 16:27:13 +09:00
Mononaut
4c569c0ded Send mempool effective fee rate changes to frontend & apply 2023-04-05 08:42:01 +09:00
Mononaut
3d5c156776 Use effective fee rates in mempool block visualizations & tooltips 2023-04-05 08:42:01 +09:00
wiz
6c81dcdc76 Merge pull request #3640 from mempool/ops/use-unix-sockets-for-mysql
ops: Use unix sockets for MySQL
2023-04-04 21:52:26 +09:00
wiz
906f24f0ee ops: Use unix sockets for MySQL 2023-04-04 21:48:42 +09:00
wiz
bca35600ff ops: Fix installer creation of CLN folders 2023-04-04 20:18:46 +09:00
wiz
a9dc5e9be4 Merge pull request #3634 from mempool/nymkappa/fiat-component-custom-color
Make fiat component color class customizable
2023-04-04 14:11:58 +09:00
nymkappa
90fa4a8f77 Make fiat component color class customizable 2023-04-04 11:42:06 +09:00
Mononaut
d325734c16 Disable blockchain drag for middle/right click 2023-04-04 08:25:40 +09:00
Mononaut
aa882aa36a Fix RTL locale unfurls 2023-04-04 07:55:55 +09:00
wiz
bdbb1dcf8e Merge pull request #3631 from mempool/simon/improved-warning-message
Redesigned testnet alert
2023-04-03 22:09:52 +09:00
wiz
2ada9dcd40 Merge branch 'master' into simon/improved-warning-message 2023-04-03 21:58:09 +09:00
wiz
95cc74c076 Merge pull request #3630 from mempool/hunicus/phx-dark-icon
Switch phoenix wallet logo to dark mode
2023-04-03 21:57:56 +09:00
softsimon
d59a31a65a Merge branch 'master' into simon/improved-warning-message 2023-04-03 20:03:04 +09:00
softsimon
38e4832b6a Restoring missing tx index attribute for cypress 2023-04-03 20:02:39 +09:00
softsimon
6b6dc9fb24 Merge pull request #3622 from mempool/mononaut/shift-click
Key modifiers to open transaction in new tab from visualization
2023-04-03 19:05:08 +09:00
softsimon
a1b6fc5a7b Redesigned testnet alert
fixes #3625
2023-04-03 18:30:06 +09:00
wiz
6ac0e887f7 Merge pull request #3247 from mempool/ops/esplora-unix-sockets
ops: Use unix sockets to query esplora from nginx
2023-04-03 16:07:05 +09:00
wiz
bdb7e62921 Merge branch 'master' into ops/esplora-unix-sockets 2023-04-03 15:34:47 +09:00
hunicus
445e376675 Switch phoenix wallet logo to dark mode 2023-04-03 02:07:56 -04:00
wiz
bedbd9c5d5 Merge pull request #3587 from mempool/hunicus/mynode-casing
Update mynode profile on about page
2023-04-03 15:00:13 +09:00
wiz
34236fca7c Remove unused mynodebtc.jpg 2023-04-03 14:59:39 +09:00
wiz
f74d651b85 Merge branch 'master' into hunicus/mynode-casing 2023-04-03 14:51:28 +09:00
softsimon
41a93af89e Merge pull request #3601 from mempool/mononaut/fix-liquid-asset-diagram
Fix broken tx diagram for non-LBTC liquid assets
2023-04-03 14:39:38 +09:00
wiz
e5b1615c61 Merge branch 'master' into mononaut/fix-liquid-asset-diagram 2023-04-03 12:27:32 +09:00
softsimon
2ef340712f Merge pull request #3442 from mempool/nymkappa/reorg-keep-templates
When a re-org happens, keep the block templates for audit
2023-04-03 12:24:05 +09:00
wiz
3841d1e7b8 Merge pull request #3600 from mempool/mononaut/fix-unfurl-cpfp-badge
Fix unfurl cpfp badge
2023-04-03 11:50:11 +09:00
wiz
675ecc608c Merge branch 'master' into mononaut/fix-unfurl-cpfp-badge 2023-04-03 11:40:47 +09:00
wiz
3625e41e97 Merge pull request #3599 from mempool/mononaut/fix-ln-node-unfurl
Fix node unfurl row overflow
2023-04-03 11:40:39 +09:00
wiz
ff8fecbd05 Merge branch 'master' into mononaut/fix-ln-node-unfurl 2023-04-03 11:31:20 +09:00
Mononaut
a91a8d2a4b Key modifiers to open tx in new tab from visualization 2023-04-02 07:46:32 +09:00
softsimon
83c03474a9 Merge pull request #3586 from mempool/nymkappa/fix-price-undefined
Add missing sanity check when fetching single price datapoint
2023-04-01 18:04:32 +09:00
softsimon
f55aac46f1 Merge pull request #3568 from mempool/hunicus/fix-memfaq-mobile
Fix anchor link expand on mobile for mempool faq
2023-04-01 18:03:17 +09:00
softsimon
f1b5ee2a5f Merge pull request #3404 from mempool/nymkappa/bugfix/wrong-percentage-heap-log
Fix % on heap limit warn
2023-04-01 16:56:50 +09:00
softsimon
97008b9caa Merge pull request #3326 from mempool/nymkappa/warning-testnet-signet
Show warning on testnet/signet
2023-04-01 16:53:17 +09:00
softsimon
b3038e557c Merge pull request #3618 from mempool/nymkappa/ln-stats-import-trycatch
Wrap lightning stats importer into try/catch
2023-04-01 15:21:55 +09:00
softsimon
61e29bcff9 Merge pull request #3608 from mempool/nymkappa/fix-default-graph-preference
Use window.location object instead of angular router for default graph window preference setting
2023-04-01 15:18:10 +09:00
nymkappa
a512884b65 Wrap lightning stats importer into try/catch 2023-04-01 14:56:18 +09:00
softsimon
46fbd6aa49 Merge pull request #3443 from mempool/simon/update-backend-libs-2023-03
Update backend NPM deps
2023-04-01 12:25:40 +09:00
softsimon
fc29943d0f Upgrading deps 2023-04-01 12:16:59 +09:00
softsimon
482a609d84 Update backend NPM libs 2023-04-01 12:15:32 +09:00
softsimon
b7d869ad23 Merge pull request #3375 from mempool/nymkappa/log-update
Update some logs
2023-04-01 12:07:53 +09:00
nymkappa
321161ede9 Cleanup some log 2023-04-01 12:00:54 +09:00
softsimon
b5ad0895ac Merge pull request #3610 from mempool/nymkappa/fix-search-wiz-test
Fix search 1wizS test
2023-03-31 22:32:40 +09:00
softsimon
427cef9f9d Merge pull request #3611 from mempool/nymkappa/fix-transaction-list-infinite-scroll
Fix infinite scroll transaction list component
2023-03-31 19:23:36 +09:00
nymkappa
816fb3bf01 Don't delete transactions when checking if the current chain is valid 2023-03-31 12:22:26 +09:00
nymkappa
44bbb472d3 Keep re-org'ed block summaries in the database 2023-03-31 12:08:05 +09:00
nymkappa
aba49897f9 Fix infinite scroll transaction list component 2023-03-30 17:07:34 +09:00
nymkappa
96121a86f8 Fix search 1wizS test 2023-03-29 17:35:49 +09:00
nymkappa
ea2193a42d Add missing sanity check when fetching single price datapoint 2023-03-29 17:33:07 +09:00
nymkappa
3db1486bfb Fix transaction amount overflow 2023-03-29 17:32:39 +09:00
nymkappa
9e4fe40ca3 When a re-org happens, keep the block templates for audit 2023-03-29 17:32:17 +09:00
nymkappa
d9b4ad64bb Fix % on heap limit warn 2023-03-29 17:30:32 +09:00
nymkappa
7562407a0c Show warning on testnet/signet 2023-03-29 17:27:33 +09:00
nymkappa
0bc244b9f1 Use window.location object instead of angular router for default graph window preference setting 2023-03-29 15:10:59 +09:00
nymkappa
7ab373ecac Clip overflowing labels in pool component on mobile 2023-03-29 15:09:38 +09:00
Mononaut
14e0d80042 Fix broken tx diagram for non-lBTC liquid assets 2023-03-29 07:54:58 +09:00
Mononaut
5555916de3 Fix unfurl cpfp badge 2023-03-29 05:45:49 +09:00
Mononaut
ef09912d1b Fix node unfurl row overflow 2023-03-29 03:15:01 +09:00
nymkappa
c675d1c498 Make sure to scan closed channels even if config.MEMPOOL.ENABLE = false 2023-03-28 23:07:50 +09:00
softsimon
5977251a20 Merge pull request #3316 from mempool/mononaut/projected-median-fee
New median fee calculation for mempool blocks
2023-03-28 17:22:20 +09:00
Mononaut
a4c027dc48 clean up unused vars in mempool-blocks.ts 2023-03-28 17:02:37 +09:00
Mononaut
9f40cba914 use new median fee calculation for mempool blocks 2023-03-28 17:02:37 +09:00
softsimon
5ba2c181b0 Merge pull request #3315 from mempool/mononaut/effective-fee-rates
Use effective fee rate heuristics for block fee span
2023-03-28 16:57:22 +09:00
Mononaut
2fc404a55c refactor effective rate calculation 2023-03-28 16:20:20 +09:00
Mononaut
2baa10dcef Use effective fee rate heuristics for block fee span 2023-03-28 16:19:06 +09:00
softsimon
d08a318a2c Merge pull request #3584 from mempool/release/v2.5.0
Release v2.5.0
2023-03-28 14:26:18 +09:00
wiz
96f3218ec6 Bump version to v2.6.0-dev 2023-03-28 14:25:05 +09:00
wiz
57eddac7f0 Release v2.5.0 2023-03-28 12:14:31 +09:00
wiz
af115b49aa Merge pull request #3585 from mempool/nymkappa/fix-db-state
Reset pools sha db state
2023-03-28 12:12:04 +09:00
softsimon
332f9a2f5e Pull from transifex (Vietnamese) 2023-03-28 12:11:27 +09:00
hunicus
2b3d132db6 Update mynode logo 2023-03-27 07:26:06 -04:00
hunicus
f1361a698d Switch mynode capitalization to match branding 2023-03-27 06:50:30 -04:00
nymkappa
34eef3553b Reset pools sha db state 2023-03-27 19:39:50 +09:00
softsimon
9e4ce42b6a Pull from transifex (Hebrew) 2023-03-27 16:31:02 +09:00
softsimon
4c4a91ae95 Merge pull request #3560 from mempool/mononaut/missing-tx-bug
Fix thread inconsistency / lazy deletion race condition bugs
2023-03-27 15:33:34 +09:00
softsimon
93d46d5c5b Pull from transifex 2023-03-27 15:12:23 +09:00
softsimon
8788d4f898 Pull from transifex 2023-03-27 15:10:17 +09:00
wiz
e28650c46c Merge pull request #3581 from mempool/simon/enable-lightning-mempool-prod 2023-03-27 14:53:46 +09:00
softsimon
855c11f02c Enabling mempool in lightning prod
fixes #3579
2023-03-27 14:51:34 +09:00
softsimon
3f8e91bd46 Merge pull request #3578 from mempool/nymkappa/revert-undocumented-fast-forward
Revert regression introduced in #1320
2023-03-26 22:10:23 +09:00
softsimon
6722e45109 Merge pull request #3576 from mempool/mononaut/fix-difficulty-adjustment
Fix difficulty adjustment bugs
2023-03-26 18:02:30 +09:00
nymkappa
414383638d Revert regression introduced in #1320 2023-03-26 17:54:24 +09:00
nymkappa
2575b79c05 Merge branch 'master' into mononaut/fix-difficulty-adjustment 2023-03-26 17:02:41 +09:00
nymkappa
c7cab4c877 Remove difficulty adjustment calculation lag in the backend 2023-03-26 17:01:04 +09:00
softsimon
85c2f0ba30 Pull from transifex 2023-03-26 16:46:20 +09:00
Mononaut
edfbede704 Don't send back difficulty adjustment info 2023-03-26 09:05:41 +09:00
Mononaut
5f60cb821a Fix difficulty adjustment start-of-epoch edge cases 2023-03-26 07:27:11 +09:00
Mononaut
8486c1117d log warnings for unexpectedly missing txs 2023-03-26 05:41:31 +09:00
hunicus
ad3785ff41 Fix anchor link expand on mobile for mempool faq 2023-03-24 21:22:49 -04:00
Mononaut
61f24562fd tighten sanity checks in block audit 2023-03-24 09:49:02 +09:00
Mononaut
28de93d0ff move lazy tx deletion into main loop 2023-03-24 09:48:08 +09:00
Mononaut
1fd85b729d handle stale transactions in block templates 2023-03-24 09:47:08 +09:00
softsimon
5681ae3f5c Pull from transifex 2023-03-23 22:45:07 +09:00
softsimon
9d9e0976ae Pull from transifex 2023-03-23 17:41:24 +09:00
wiz
6180837636 Merge pull request #3557 from mempool/nymkappa/hotfix-infinite-scroll
Hotfix infinite scroll (need to apply a real fix for 2.5.1)
2023-03-23 17:36:08 +09:00
wiz
17beaf7d4f Merge pull request #3555 from mempool/hunicus/raspiblitz-logo
Change raspibolt logo to raspiblitz logo
2023-03-23 17:34:01 +09:00
wiz
ce8f471b27 Merge pull request #3554 from mempool/simon/bumping-electrum-client
Bumping electrum-client
2023-03-23 17:27:31 +09:00
nymkappa
b3e36fdd99 Hotfix infinite scroll (need to apply a real fix) 2023-03-23 17:23:32 +09:00
wiz
f971ddf1fa Merge branch 'master' into hunicus/raspiblitz-logo 2023-03-23 17:22:18 +09:00
hunicus
c0c37922c3 Change raspibolt logo to raspiblitz logo 2023-03-23 03:12:44 -04:00
wiz
1eb9e58331 Merge branch 'master' into simon/bumping-electrum-client 2023-03-23 15:58:44 +09:00
wiz
f8a35a110c Merge pull request #3553 from mempool/nymkappa/electrum-retry
Reconnect to electrum an unlimited amount of times every 1 seconds upon disconnection
2023-03-23 15:58:37 +09:00
softsimon
c4d13fb5b7 Bumping electrum-client 2023-03-23 15:56:30 +09:00
nymkappa
53a44853b3 Reconnect to electrum an unlimited amount of times every 1 seconds up disconnection 2023-03-23 15:18:48 +09:00
softsimon
29aa3617d8 Crediting Lithuanian and Danish translator 2023-03-23 14:43:03 +09:00
wiz
addf3e2521 Merge pull request #3548 from mempool/simon/updating-node-map-loading
Update channels map indexing indicator
2023-03-23 13:46:34 +09:00
softsimon
5826f8fa1e Pull from transifex 2023-03-23 00:28:17 +09:00
wiz
965d89fd91 Merge branch 'master' into simon/updating-node-map-loading 2023-03-22 17:48:09 +09:00
nymkappa
ed69591bcf Show "No data to display yet" in "Fee distribution" chart on node page when there are no channels yet 2023-03-22 14:09:30 +09:00
nymkappa
f1f6c48128 Show "No data to display yet" until we have at least two points for node stats charts 2023-03-22 13:45:27 +09:00
softsimon
f8bd062aa2 Pull from transifex 2023-03-22 13:35:16 +09:00
softsimon
77835bcb9d Restoring Preview component behavior 2023-03-22 13:20:22 +09:00
softsimon
bf5821c8c8 Remove indexing indicator 2023-03-21 23:17:09 +09:00
softsimon
a2e23014f4 Update channels map indexing indicator 2023-03-21 23:14:45 +09:00
wiz
811c14a6bd Merge pull request #3547 from mempool/simon/node-fee-chart-loading-d
Removing "d" from node fee chart loading
2023-03-21 23:10:47 +09:00
wiz
a34d87148b Merge branch 'master' into simon/node-fee-chart-loading-d 2023-03-21 23:01:19 +09:00
wiz
a45a8db479 Merge pull request #3494 from mempool/simon/difficulty-mining-css-updates
Difficulty mining css updates
2023-03-21 23:00:54 +09:00
softsimon
672f71c515 Removing "d" from node fee chart loading 2023-03-21 22:48:40 +09:00
softsimon
2c16bbb0e9 Fixing sub text height 2023-03-21 22:26:18 +09:00
softsimon
63f7709e82 Restoring size of current change 2023-03-21 22:20:14 +09:00
wiz
15b13ef4a4 Merge branch 'master' into simon/difficulty-mining-css-updates 2023-03-21 22:03:46 +09:00
wiz
75303c7a34 docker: Minor tweak to frontend entrypoint LND detection 2023-03-21 21:50:46 +09:00
softsimon
1a6048f0ab Difficulty mining css updates 2023-03-21 21:25:37 +09:00
wiz
ae6a408c05 Merge pull request #3493 from mempool/simon/update-softsimon-profile
Update softsimon profile photo
2023-03-21 20:58:11 +09:00
wiz
1015cbfa94 Merge pull request #3492 from mempool/simon/lightning-indexing-status
Lightning indexing indicators
2023-03-21 20:56:47 +09:00
wiz
876feef53f Fix frontend docker entrypoint umbrel LND detection 2023-03-21 18:11:10 +09:00
softsimon
f5f0329d39 Update softsimon profile photo 2023-03-21 18:03:19 +09:00
wiz
80a7b6d8d5 Merge branch 'master' into simon/lightning-indexing-status 2023-03-21 18:02:28 +09:00
wiz
f72e17c12e Merge pull request #3491 from mempool/simon/audit-off-hide-health
Audit disabled related UX fixes
2023-03-21 18:02:24 +09:00
wiz
f570b2762f Merge branch 'master' into simon/audit-off-hide-health 2023-03-21 17:43:56 +09:00
wiz
e2fda99578 Merge pull request #3490 from mempool/simon/auto-disable-ln-on-macaroon-fail
Auto disable LN on macaroon fail
2023-03-21 17:43:12 +09:00
softsimon
d7d45146c8 Lightning indexing indicators
refs  #2647
2023-03-21 17:33:14 +09:00
softsimon
45dbc6c6f6 Update logger network after modifying config 2023-03-21 16:21:11 +09:00
softsimon
d76e3a5939 Audit disabled related UX fixes 2023-03-21 16:02:46 +09:00
wiz
cb8fdb5e8d Hack docker frontend entrypoint to auto-enable lightning 2023-03-21 15:57:22 +09:00
softsimon
d337bf3ee2 Turn off LN if Macaroon is missing 2023-03-21 15:52:41 +09:00
softsimon
758e4d4f4c Disable LN on macaroon fail 2023-03-21 15:49:38 +09:00
wiz
ccab8b16bf Merge branch 'master' into ops/esplora-unix-sockets 2023-03-21 14:29:06 +09:00
softsimon
cd2bda4b49 Pull russian from transifex 2023-03-20 21:44:47 +09:00
wiz
493ea0641d Merge pull request #3487 from mempool/simon/catch-unhandled-lnd-axios-request
Catch exeptions in Lightning stats
2023-03-20 21:42:47 +09:00
wiz
ca1b6553c9 Merge branch 'master' into simon/catch-unhandled-lnd-axios-request 2023-03-20 20:53:41 +09:00
wiz
d479715d8e Merge pull request #3450 from mempool/nymkappa/configurable-timeout
Make core and lnd rpc calls timeout configurable
2023-03-20 20:50:51 +09:00
softsimon
e3109a8fec Catch exeptions in Lightning stats
fixes #3486
2023-03-20 20:46:11 +09:00
softsimon
e6bc5bef33 Updating russian i18n 2023-03-20 18:50:20 +09:00
softsimon
d82a7169b7 Pull from transifex 2023-03-20 18:28:15 +09:00
wiz
ba48b6f7ce Merge branch 'master' into nymkappa/configurable-timeout 2023-03-20 18:26:04 +09:00
wiz
8e1cf997f7 Merge pull request #3451 from mempool/simon/mining-difficulty-overflow-fix
Difficulty mining ellipsis fix
2023-03-20 18:25:51 +09:00
wiz
70d8548c92 Merge branch 'master' into simon/mining-difficulty-overflow-fix 2023-03-20 17:45:27 +09:00
wiz
cce7dd917f Merge branch 'master' into nymkappa/configurable-timeout 2023-03-20 17:38:40 +09:00
wiz
3dafb284a9 Merge pull request #3447 from mempool/hunicus/readme-video-poster
Add poster image for readme video
2023-03-20 17:37:21 +09:00
wiz
6a599a9a30 Merge pull request #3448 from mempool/simon/fix-missing-temp-cache-disk-cache
Fix missing temp cache in disk cache
2023-03-20 17:33:41 +09:00
softsimon
74fb292633 Difficulty mining ellipsis fix 2023-03-20 17:21:34 +09:00
nymkappa
c6e063ea2f Make lnd timeout configurable 2023-03-20 16:35:44 +09:00
nymkappa
81d563381a Make bitcoin core timeout configurable 2023-03-20 16:15:40 +09:00
softsimon
870e895144 Correcting docker disk cache config variable 2023-03-20 16:12:56 +09:00
softsimon
343d1345e2 Merge pull request #3445 from mempool/simon/liquid-blinding-tests-failing
Fixing broken liquid blinding tests
2023-03-20 15:46:41 +09:00
softsimon
517cf613c1 Removing Sigterm. Cache write block interval configuration. 2023-03-20 15:46:05 +09:00
softsimon
d54bcc898b Fix missing temp cache in disk cache 2023-03-20 15:44:55 +09:00
wiz
704e1741ed Merge pull request #3449 from mempool/nymkappa/fix-tests 2023-03-20 14:22:01 +09:00
nymkappa
ad5ce6dba4 Fix maxmind tests 2023-03-20 14:02:31 +09:00
hunicus
1ed20a95df Add poster image for readme video
Also add line-break after video and remove screenshot.
2023-03-19 22:58:39 -04:00
wiz
1718ddd4c3 Merge pull request #3444 from mempool/nymkappa/missing-docker
Update docker configs
2023-03-19 18:56:06 +09:00
wiz
32c2db2153 Fix backend docker config path for GeoIP data 2023-03-19 18:42:38 +09:00
wiz
0abb9cbb7c Fix boolean configuration option in docker backend config 2023-03-19 17:49:37 +09:00
wiz
e2e71c7a46 Add Maxmind GeoIP Lite download to Docker build 2023-03-19 17:49:08 +09:00
softsimon
e27bdd3e2b Fixing broken liquid blinding tests 2023-03-19 17:30:06 +09:00
softsimon
5839ed428e Merge pull request #3378 from mempool/nymkappa/responsive
Fix block list component responsive
2023-03-19 16:48:47 +09:00
nymkappa
af6d115dbb Add missing MAXMIND in docker configs - Remove duplicated __MEMPOOL_INDEXING_BLOCKS_AMOUNT__ 2023-03-19 15:39:17 +09:00
nymkappa
194968d16f Fix block list component responsive 2023-03-19 15:23:00 +09:00
softsimon
30686bd322 Updating korean translation 2023-03-19 12:32:07 +09:00
softsimon
175c645777 Crediting korean translator 2023-03-19 12:05:13 +09:00
wiz
587a259843 Merge pull request #3440 from mempool/ops/bump-elements-v22.1
ops: Bump elementsd to v22.1
2023-03-18 20:06:53 +09:00
softsimon
64749ca726 Pull from transifex 2023-03-18 19:39:07 +09:00
wiz
8f2493dadb ops: Use old elements RPC port 7040 2023-03-18 18:48:37 +09:00
softsimon
7d8ea075d9 Merge pull request #3405 from mempool/nymkappa/pool-health
Show block health in pool block list
2023-03-18 18:48:10 +09:00
wiz
328327e5dc Merge pull request #3104 from mempool/mononaut/liquid-tooltip-fees
Fix missing fees in liquid block tooltips
2023-03-18 18:33:17 +09:00
wiz
fd1816d451 Merge pull request #3402 from mempool/hunicus/promo-subtitles
Add subtitles for promo video
2023-03-18 18:27:35 +09:00
hunicus
72f25b873c Add zh subtitles for promo video 2023-03-18 05:17:23 -04:00
hunicus
994656953c Fix promo video subtitles for sv 2023-03-18 05:15:48 -04:00
Mononaut
ed46232b83 Fix missing fees in liquid block tooltips 2023-03-18 18:11:10 +09:00
wiz
dca18a1c66 Merge branch 'master' into hunicus/promo-subtitles 2023-03-18 17:59:03 +09:00
wiz
c291ee1789 Merge pull request #3407 from mempool/hunicus/mempool-size-faq
Add faqs on mempool size and memory usage
2023-03-18 17:58:56 +09:00
hunicus
caf15351f7 Merge branch 'master' into hunicus/promo-subtitles 2023-03-18 17:58:29 +09:00
hunicus
6be9f23790 Add more languages for promo captions 2023-03-18 04:57:20 -04:00
nymkappa
adc51f6217 Update i18n 2023-03-18 16:40:30 +09:00
softsimon
ec8a46ede6 Pulling from transifex 2023-03-18 15:33:57 +09:00
softsimon
b78fdf5a23 Merge pull request #3353 from mempool/mononaut/mempool-block-animations
Improve mempool block animations
2023-03-18 12:46:20 +09:00
wiz
7c2493f3fa ops: Bump elementsd to v22.1 2023-03-17 22:07:48 +09:00
hunicus
b0a0ad11b4 Show mempool.space memory usage faq on official 2023-03-17 21:25:28 +09:00
hunicus
377f71eb52 Integrate feedback to memory usage faqs 2023-03-17 21:25:28 +09:00
hunicus
eefe343973 Add faqs on mempool size and memory usage 2023-03-17 21:25:28 +09:00
softsimon
41a6674fad Merge pull request #3379 from mempool/nymkappa/testnet-signet-price-zero
Don't fetch prices on signet/testnet, always show 0
2023-03-17 16:40:09 +09:00
softsimon
effba92729 Merge pull request #3381 from mempool/mononaut/network-special-blocks
Limit special blocks by network, add future halvings
2023-03-17 16:39:54 +09:00
wiz
c9f4bdda17 Merge pull request #3408 from knorrium/gha_docker_digest
Docker digest GHA
2023-03-17 14:49:19 +09:00
softsimon
ef54385068 Merge pull request #3413 from mempool/simon/pull-from-transifex-2023-03-17
Pull from transifex
2023-03-17 14:02:08 +09:00
softsimon
b8f77c4be4 Pull from transifex 2023-03-17 14:01:36 +09:00
Mononaut
b5c2073414 Fix getSimilarity error on empty mempool 2023-03-16 22:16:40 +09:00
Mononaut
25aacb5046 Calculate similarity score with audit disabled 2023-03-16 22:16:40 +09:00
Mononaut
c24724dcdf animate mempool blocks conditional on mined block similarity 2023-03-16 22:16:40 +09:00
Mononaut
64ab14f995 mempool block entry animation 2023-03-16 22:16:40 +09:00
nymkappa
4a64c0dfa5 Fix skeleton 2023-03-16 16:35:59 +09:00
nymkappa
0ebe0a5dc9 Add new stats in mining pool page 2023-03-16 16:13:11 +09:00
hunicus
c683a52a01 Show captions for non-english locales 2023-03-16 02:29:33 -04:00
Felipe Knorr Kuhn
5fbdd0bb2a Remove push trigger 2023-03-15 22:48:28 -07:00
Felipe Knorr Kuhn
599881366b Add GHA for Docker digest 2023-03-15 22:43:41 -07:00
hunicus
4c294b010d Make subtitles default to current locale 2023-03-15 23:06:10 -04:00
hunicus
418c32e334 Make git ignore mp4 and vtt files in /resources 2023-03-15 23:06:10 -04:00
hunicus
12b605e5cc Fetch subtitles files from github
For en, sv, and ja.
2023-03-15 23:06:10 -04:00
softsimon
870a7e51b1 Merge pull request #3373 from mempool/mononaut/fix-testnet-signet-features
Network-specific activation heights for transaction feature badges
2023-03-15 18:35:40 +09:00
hunicus
cdfde05452 Make new folder for promo video assets
Video, cover image, and subtitle files.
2023-03-15 02:50:17 -04:00
softsimon
ce24b8bb0a Merge pull request #3331 from mempool/mononaut/disk-cache-network-version
Add network versioning to disk cache
2023-03-15 14:32:28 +09:00
softsimon
1b2810ec0e Merge branch 'master' into mononaut/disk-cache-network-version 2023-03-14 21:05:16 +09:00
softsimon
c8e84ec056 Merge pull request #3329 from mempool/mutiny-integration
Add mutiny as community integration
2023-03-14 19:59:43 +09:00
Mononaut
7bf8fea9f2 Limit special blocks by network, add future halvings 2023-03-14 16:58:02 +09:00
softsimon
3458c5af71 Merge branch 'master' into mononaut/fix-testnet-signet-features 2023-03-14 16:50:06 +09:00
softsimon
3e46dabf7b Merge pull request #3345 from mempool/mononaut/hide-empty-features
Hide features row if tx has no features
2023-03-14 16:48:56 +09:00
nymkappa
a5dd141934 Don't fetch prices on signet/testnet, always show 0 2023-03-14 15:39:15 +09:00
softsimon
881af309ab Pull from transifex 2023-03-14 14:54:49 +09:00
softsimon
374ff50a62 Merge pull request #3376 from mempool/i18n/enable-danish
i18n: Enable Danish
2023-03-14 14:53:00 +09:00
wiz
2b9e63dbc5 i18n: Enable Danish 2023-03-14 14:31:20 +09:00
Mononaut
9f453deceb Use network-specific feature activation dates 2023-03-14 13:02:50 +09:00
softsimon
0b88d94573 Fix channels i18n string on world map
fixes #3336
2023-03-13 18:42:43 +09:00
wiz
536114853c Merge pull request #3351 from mempool/nymkappa/disable-pool-updater-no-mempool
Disable pool update when running lightning only
2023-03-13 18:16:29 +09:00
wiz
4d281277d6 Merge branch 'master' into nymkappa/disable-pool-updater-no-mempool 2023-03-13 18:02:03 +09:00
wiz
c97a722a3b Merge pull request #3350 from mempool/simon/video-height-fix
Correct video height on mobile
2023-03-13 18:01:17 +09:00
softsimon
adacb42d1a Merge branch 'master' into simon/video-height-fix 2023-03-13 17:41:45 +09:00
softsimon
b6427d6f67 Merge branch 'master' into nymkappa/disable-pool-updater-no-mempool 2023-03-13 17:41:04 +09:00
softsimon
433acb7b1d Merge pull request #3352 from mempool/simon/i18n-string-error-fix
Fixes i18n string error
2023-03-13 17:40:52 +09:00
softsimon
d015ee7824 Fixes i18n string error 2023-03-13 17:40:17 +09:00
nymkappa
ecfb980e75 Disable pool update when running lightning only 2023-03-13 17:24:23 +09:00
softsimon
cfdbd30956 Correct video height on mobile
#3342
2023-03-13 17:18:09 +09:00
softsimon
7acfec2406 Merge pull request #3349 from mempool/simon/update-missing-i18n-strings
Fixing more missing i18n keys
2023-03-13 17:08:50 +09:00
softsimon
070ee10fb0 Fixing more missing i18n keys
fixes #3339
fixes #3337
2023-03-13 17:08:27 +09:00
wiz
7970f4ae88 ops: Use unix sockets to query esplora from nginx 2023-03-13 16:35:27 +09:00
Mononaut
96a41400f4 Add axios support for esplora unix sockets 2023-03-13 14:53:44 +09:00
softsimon
446b0de8f3 Merge pull request #3347 from mempool/simon/ninja-i18n-pull
Ninja i18n pull
2023-03-13 13:04:13 +09:00
softsimon
99b7fc8814 Ninja i18n pull 2023-03-13 13:03:57 +09:00
softsimon
defb88a474 Merge pull request #3346 from mempool/simon/i18n-extract-2023-03-13
i18n extract
2023-03-13 12:58:48 +09:00
softsimon
7392535182 i18n extract 2023-03-13 12:58:35 +09:00
Mononaut
130ae8c3a5 Hide features row if tx has no features 2023-03-13 12:48:01 +09:00
softsimon
f4f8b2b271 Merge pull request #3344 from mempool/simon/pull-from-transifex-2023-03-13
Pull from transifex
2023-03-13 12:36:13 +09:00
softsimon
477d09412b Pull from transifex 2023-03-13 12:36:00 +09:00
softsimon
87bc7917d8 Merge pull request #3341 from mempool/mononaut/difficulty-skeleton-width
Fix difficulty skeleton width on firefox
2023-03-13 11:23:17 +09:00
Mononaut
9030d95207 Fix difficulty skeleton width on firefox 2023-03-13 10:28:26 +09:00
softsimon
5e4131b474 Merge pull request #3330 from mempool/mononaut/reduce-disk-cache-frequency
Save cache to disk every 6 blocks
2023-03-12 21:06:19 +09:00
Mononaut
3bf96dafde Add network versioning to disk cache 2023-03-12 19:20:29 +09:00
softsimon
2f4dba895c Merge pull request #3327 from mempool/nymkappa/bugfix/show-total-fee-last-mempool-block
Show cumulated fee on last mempool block
2023-03-12 19:17:57 +09:00
hunicus
a5e281706f Make community integration rows symmetric and full 2023-03-12 06:17:50 -04:00
nymkappa
eba0e1c25a Show cumulated fee on last mempool block 2023-03-12 19:13:39 +09:00
hunicus
97d82042c0 Add mutiny to community integrations 2023-03-12 06:03:23 -04:00
Mononaut
8bd05987e5 Save cache to disk every 6 blocks 2023-03-12 19:03:19 +09:00
wiz
7e676dbaf0 Merge pull request #3325 from mempool/mononaut/fix-liquid-asset-tooltips
Fix units in flow diagram tooltips for liquid assets
2023-03-12 18:31:49 +09:00
softsimon
760f3193d9 Merge pull request #3324 from mempool/hunicus/add-integrations-032023
Add 4 community integrations to about page
2023-03-12 18:15:02 +09:00
wiz
72663b30df Merge branch 'master' into mononaut/fix-liquid-asset-tooltips 2023-03-12 18:14:25 +09:00
hunicus
8995283a58 Remove trailing slash 2023-03-12 05:12:25 -04:00
Mononaut
a8ac6aedf7 Fix units in flow diagram tooltips for liquid assets 2023-03-12 18:07:31 +09:00
wiz
9613247283 Merge branch 'master' into hunicus/add-integrations-032023 2023-03-12 18:03:49 +09:00
hunicus
ab96a17e80 Make non-rounded icons smaller 2023-03-12 04:59:37 -04:00
hunicus
3b080ee5fb Add galoy and boltz to community integrations 2023-03-12 04:52:15 -04:00
hunicus
24a8cca758 Add bitcoin-s and edge to community integrations 2023-03-12 04:51:59 -04:00
softsimon
dbad3af8ba Merge pull request #3322 from mempool/mononaut/fix-new-block-animations
Fix new block animations
2023-03-12 17:42:33 +09:00
hunicus
6cc2f20638 Use href for enterprise links 2023-03-12 04:39:57 -04:00
softsimon
cdddf3a8b2 Merge pull request #3319 from mempool/mononaut/more-fee-ratings
Show tx fee ratings for older blocks
2023-03-12 17:10:47 +09:00
Mononaut
b675bd8d55 Fix transaction confirmed arrow animation 2023-03-12 17:00:36 +09:00
wiz
730c1ae2d7 Merge branch 'master' into hunicus/manual-deployment-enterprise 2023-03-12 16:57:49 +09:00
wiz
cb04d67d07 Merge branch 'master' into mononaut/more-fee-ratings 2023-03-12 16:56:18 +09:00
wiz
b1c6c5cbb6 Merge pull request #3248 from mempool/hunicus/add-yt-pt
Add youtube and peertube links to about page
2023-03-12 16:54:59 +09:00
wiz
7f8f72e9d6 Merge pull request #3306 from mempool/simon/fix-use-same-fee-span-calc
Display same fee span on blocks
2023-03-12 16:52:55 +09:00
wiz
a1ea77ee50 Merge pull request #3311 from mempool/simon/lightning-stats-truncation
Lightning dashboard overflow titles fixes
2023-03-12 16:51:38 +09:00
wiz
19e2d687d0 Use correct BitcoinTV logo 2023-03-12 16:48:23 +09:00
Mononaut
4be8016eb1 Fix repeated new block animation on page navigation 2023-03-12 16:42:58 +09:00
wiz
627c913d5e Merge branch 'master' into simon/fix-use-same-fee-span-calc 2023-03-12 16:17:51 +09:00
wiz
3c5165603b Merge branch 'master' into simon/lightning-stats-truncation 2023-03-12 16:17:22 +09:00
hunicus
513277cef7 Replace peertube logo with bitcointv logo 2023-03-12 16:09:06 +09:00
hunicus
72a9b71901 Add youtube and peertube links to about page 2023-03-12 16:09:06 +09:00
Mononaut
60bef0eeb6 show tx fee ratings for older blocks 2023-03-12 15:54:39 +09:00
softsimon
eeb97bdb81 Merge pull request #3318 from mempool/simon/pull-transifex-2023-03-12
Pull from transifex
2023-03-12 15:45:44 +09:00
softsimon
8407c07b88 Pull from transifex 2023-03-12 15:44:49 +09:00
softsimon
951cf2daf9 Merge pull request #3314 from mempool/nymkappa/fix-node-distance-overflow
Fix some responsive issue on the node component
2023-03-12 14:37:27 +09:00
nymkappa
31cfbf6625 Fix some responsive issue on the node component 2023-03-12 10:16:49 +09:00
wiz
5dc52250e6 Merge pull request #3312 from mempool/mononaut/difficulty-widget-redesign
Fix epoch length in new difficulty widget
2023-03-11 19:49:07 +09:00
wiz
6b544ac179 Merge branch 'master' into mononaut/difficulty-widget-redesign 2023-03-11 19:38:15 +09:00
wiz
2ad9bf57f7 Merge pull request #3288 from mempool/nymkappa/esplora-warning
Log a warn if there are lot of 404 from esplora tx api while updating nodejs backend mempool
2023-03-11 19:36:51 +09:00
Mononaut
e0e97f0d5e Fix epoch length in difficulty widget 2023-03-11 19:32:59 +09:00
softsimon
c72024b4e3 Lightning dashboard overflow titles fixes
fixes #3127
2023-03-11 19:31:49 +09:00
wiz
093469c164 Merge pull request #3303 from mempool/mononaut/batch-address-outspend-lookup
batch address outspend lookups into <50 txids per request
2023-03-11 19:27:50 +09:00
wiz
24d9977919 Merge branch 'master' into nymkappa/esplora-warning 2023-03-11 18:36:22 +09:00
softsimon
7b2ea9c4c8 Merge pull request #3310 from mempool/simon/next-block-lower-case-css-fix
next block lower case css fix
2023-03-11 18:35:08 +09:00
softsimon
6b4650f3cd next block lower case css fix 2023-03-11 18:34:51 +09:00
softsimon
e971846b7e Merge pull request #3309 from mempool/simon/fix-i18n-duplicate-warning
Fixes i18n duplicate warning
2023-03-11 18:33:08 +09:00
softsimon
23ea5d582b Fixes i18n duplicate warning 2023-03-11 18:32:47 +09:00
softsimon
6196860387 Merge pull request #3296 from mempool/nymkappa/order-isp
Sort asn numerically - add few more top 10 isp in warm cache
2023-03-11 18:22:39 +09:00
softsimon
368f858ff2 Merge pull request #3258 from mempool/mononaut/difficulty-widget-redesign
Redesign difficulty adjustment dashboard widget
2023-03-11 18:11:34 +09:00
softsimon
ef0cc9d2db Changing interval to block time 2023-03-11 18:04:06 +09:00
Mononaut
39051e94e3 Redesign difficulty adjustment dashboard widget 2023-03-11 17:53:18 +09:00
softsimon
e1f0bb9901 Merge pull request #3308 from mempool/simon/pull-from-transifex-2023-03-11
Pull from transifex 2023-03-11
2023-03-11 17:26:50 +09:00
softsimon
097eed0baa Pull from transifex 2023-03-11 2023-03-11 17:26:33 +09:00
softsimon
25c7c84705 Merge pull request #3297 from mempool/nymkappa/duplicate-block
Fixes duplicate block in latest block component
2023-03-11 16:09:40 +09:00
wiz
7e873e6637 Merge branch 'master' into nymkappa/order-isp 2023-03-11 15:50:31 +09:00
wiz
36e1777b96 Merge branch 'master' into mononaut/batch-address-outspend-lookup 2023-03-11 15:16:59 +09:00
wiz
35a05a420d Merge branch 'master' into nymkappa/duplicate-block 2023-03-11 15:15:56 +09:00
softsimon
1be5c6ec53 Merge pull request #3307 from mempool/nymkappa/update-regtest-examples
Updated regtest example
2023-03-11 11:37:15 +09:00
softsimon
e4aa3c2091 Merge pull request #3304 from mempool/simon/fix-confirmation-arrow-bug
Fixes arrow position on confirmed blocks
2023-03-11 11:31:30 +09:00
nymkappa
4263977d99 Updated regtest example 2023-03-11 10:52:15 +09:00
softsimon
5bd9be7ab1 Display same fee span on blocks
fixes #3282
2023-03-11 10:14:35 +09:00
softsimon
74c95bfdf5 Merge pull request #3300 from mempool/simon/fix-transaction-expression-changed-error
Fixes changed after checked error in transaction page
2023-03-11 10:01:58 +09:00
softsimon
a1c0a58b9d Merge pull request #3305 from mempool/simon/remove-search-bar-border
Remove search bar focus border
2023-03-11 09:56:27 +09:00
softsimon
d3d67627f3 Remove search bar focus border 2023-03-10 20:19:37 +09:00
softsimon
4a0d9cb66f Fixes arrow position on confirmed blocks
fixes #3294
2023-03-10 18:35:26 +09:00
Mononaut
a2d673f9ed batch address outspend lookups into <50 txids per request 2023-03-10 00:27:22 -06:00
softsimon
8dccaee0b0 Merge pull request #3299 from mempool/mononaut/persist-cache-on-exit
Save cache to disk on SIGTERM/SIGINT
2023-03-10 14:27:00 +09:00
softsimon
ccc413a800 Merge pull request #3301 from mempool/mononaut/flow-diagram-alignment
pixel-perfect flow diagrams (again)
2023-03-10 13:38:56 +09:00
softsimon
4d7e23064c Merge pull request #3298 from mempool/mononaut/missing-fee-rating
fix missing cpfp fee ratings on mobile
2023-03-10 13:28:14 +09:00
Mononaut
a22a62836e pixel-perfect flow diagrams 2023-03-09 22:20:54 -06:00
softsimon
dd01371b61 Fixes changed after checked error in transaction page 2023-03-10 12:37:55 +09:00
Mononaut
46d89ac837 prevent disk cache file write corruption 2023-03-09 20:19:22 -06:00
Mononaut
796566e7ae Save cache to disk on SIGTERM/SIGINT 2023-03-09 19:47:54 -06:00
Mononaut
3f234431fb fix missing fee rating on mobile 2023-03-09 19:31:53 -06:00
nymkappa
778e2f9b64 Fixes #3217 2023-03-10 10:26:30 +09:00
nymkappa
6327ce7c89 Sort asn numerically - add few more top 10 isp in warm cache 2023-03-10 09:21:44 +09:00
softsimon
cec8445223 Merge pull request #3293 from mempool/nymkappa/search-autofocus
Autofocus search input when we load the app for the first time
2023-03-09 19:04:03 +09:00
nymkappa
548a6ea664 Autofocus search input when we load the app for the first time 2023-03-09 18:53:29 +09:00
softsimon
9cef9b67c1 Merge pull request #3291 from mempool/revert-3290-nymkappa/bump-axios
Revert "Bump axios from 0.27.2 -> 1.3.4"
2023-03-09 17:46:19 +09:00
softsimon
42228dc70f Revert "Bump axios from 0.27.2 -> 1.3.4" 2023-03-09 17:46:09 +09:00
nymkappa
63dd9fd09e Log a warn if there are lot of 404 from esplora tx api 2023-03-09 17:45:08 +09:00
softsimon
cd3c1ed82e Merge pull request #3290 from mempool/nymkappa/bump-axios
Bump axios from 0.27.2 -> 1.3.4
2023-03-09 17:35:35 +09:00
Mononaut
105cccf9b0 convert soft 404s to hard 404s in unfurler ssr 2023-03-09 02:34:21 -06:00
nymkappa
304089b3d0 Bump axios from 0.27.2 -> 1.3.4 2023-03-09 17:27:19 +09:00
softsimon
c60903565e Merge pull request #3286 from mempool/simon/some-missing-ln-i18n-strings
Fixing Channels and Capacity i18n strings
2023-03-09 15:30:23 +09:00
softsimon
37e94249df Fixing Channels and Capacity i18n strings 2023-03-09 15:30:04 +09:00
Mononaut
2f3e498906 fix canonical/meta tags in unfurler 2023-03-09 00:26:28 -06:00
softsimon
d2337ae4e8 Merge pull request #3285 from mempool/wiz/add-old-special-block-events
Add old special block events to app constants
2023-03-09 15:14:11 +09:00
softsimon
7557c47502 Merge pull request #3264 from mempool/mononaut/fix-mining-dashboard-updates
Fix stale mining dashboard data
2023-03-09 14:42:28 +09:00
wiz
a8214bcbbd Add old special block events to app constants 2023-03-09 14:30:55 +09:00
softsimon
fcf51e2af8 Merge pull request #3284 from mempool/simon/pull-transifex-2023-03-09
Pull from transifex
2023-03-09 13:19:40 +09:00
softsimon
c657e622eb Merge pull request #3277 from mempool/i18n/enable-danish-disable-catalan
i18n: Enable Danish, disable Catalan
2023-03-09 13:08:02 +09:00
softsimon
526e46b8e4 Pull from transifex 2023-03-09 11:49:26 +09:00
wiz
ead7a13ff0 i18n: Enable Danish, disable Catalan 2023-03-08 21:14:46 +09:00
Mononaut
c3c0696844 Update hashrate estimate when new blocks arrive 2023-03-08 02:37:19 -06:00
Mononaut
2907054a01 Update pool ranking block count when new blocks arrive 2023-03-08 02:33:16 -06:00
wiz
64408bfd16 Merge pull request #3241 from mempool/simon/fiat-space-fix
Remove fiat plus space
2023-03-08 17:02:19 +09:00
wiz
ca690bf123 Merge branch 'master' into simon/fiat-space-fix 2023-03-08 16:47:36 +09:00
Mononaut
82a808529b clean up unfurler meta html template 2023-03-08 01:47:35 -06:00
softsimon
0243428fe9 Merge pull request #3262 from mempool/simon/pull-from-transifex-2023-03-08
Pull from transifex 8/3
2023-03-08 16:27:12 +09:00
softsimon
901d32d8f7 Pull from transifex 8/3 2023-03-08 16:26:56 +09:00
wiz
8adacd4a0e ops: Add missing unfurl route in nginx/server-common.conf 2023-03-08 16:14:43 +09:00
Mononaut
477f3bd70a add applebot & bingbot to seo user-agent detection 2023-03-08 01:11:54 -06:00
wiz
a874cdfb56 Merge branch 'master' into mononaut/seo-ssr 2023-03-08 15:29:18 +09:00
wiz
b8a3c15ed2 Merge pull request #3259 from mempool/mononaut/fix-cpfp-memory-bug
Fix memory-intensive getCPFPUnindexedBlocks mysql query
2023-03-08 15:10:31 +09:00
wiz
3e31e68a19 Merge branch 'master' into mononaut/fix-cpfp-memory-bug 2023-03-08 14:31:46 +09:00
wiz
626b395ab7 Merge pull request #3227 from mempool/simon/add-4y
Adding 4 year button to mempool graph
2023-03-08 14:31:39 +09:00
Mononaut
5eae84bb75 Fix memory-intensive getCPFPUnindexedBlocks mysql query 2023-03-07 21:01:54 -06:00
softsimon
c5a01135b3 Merge pull request #3249 from knorrium/fix_typo_in_bulk_config
Fix typo in bulk config variable
2023-03-08 11:05:58 +09:00
Felipe Knorr Kuhn
1a4f3b105e Fix typo in bulk config variable 2023-03-07 12:29:00 -08:00
wiz
ae1e2dcb50 Merge branch 'master' into simon/add-4y 2023-03-07 19:00:27 +09:00
softsimon
da25577ea7 Merge pull request #3244 from mempool/mononaut/fix-ln-rtl
Fix miscellaneous RTL layout bugs
2023-03-07 17:00:11 +09:00
Mononaut
5937e959c3 Fix miscellaneous RTL layout bugs 2023-03-06 20:25:27 -06:00
softsimon
6360913e84 Merge pull request #3243 from mempool/simon/pull-from-transifex-2023-03-07
Pull from transifex
2023-03-07 11:11:21 +09:00
softsimon
fb71136dae Pull from transifex 2023-03-07 11:11:02 +09:00
softsimon
3739e5be0d Merge pull request #3238 from mempool/mononaut/fix-404s
Fix unnecessary cpfp/rbf 404 responses
2023-03-06 18:40:32 +09:00
softsimon
ebfd0b9ddd Merge pull request #3225 from mempool/hunicus/responsive-disclaimer
Make faq disclaimer responsive
2023-03-06 16:50:03 +09:00
softsimon
355acfd338 Merge pull request #3239 from mempool/mononaut/fix-cached-rbf-error
don't cache tx data for rbf replacements
2023-03-06 16:45:36 +09:00
softsimon
5a5ebe8435 Remove fiat plus space
fixes #3240
2023-03-06 16:16:52 +09:00
Mononaut
43b2fe2f9a don't cache tx data for rbf replacements 2023-03-06 00:19:12 -06:00
Mononaut
182cb16695 Fix unnecessary cpfp 404 responses 2023-03-06 00:02:21 -06:00
softsimon
5a09e3099c Merge pull request #3237 from mempool/mononaut/unify-time-components
unify time rendering components
2023-03-06 12:24:00 +09:00
Mononaut
7f78fefb21 revert time localization strings 2023-03-05 21:09:22 -06:00
Mononaut
ac932c641c unify time rendering components 2023-03-05 19:26:32 -06:00
softsimon
4f297f0a7a Merge pull request #3234 from mempool/nymkappa/bugfix/ln-world-map-full-height
Show ln channel world map using 100% height
2023-03-05 19:20:28 +09:00
nymkappa
c28d1c4610 Show ln channel world map using 100% height 2023-03-05 17:43:59 +09:00
softsimon
1ad4ff0683 Merge pull request #3235 from mempool/simon/extract-i18n-clearnet
Update clearnet i18n string
2023-03-05 17:37:32 +09:00
softsimon
c50f5d45e1 Update clearnet i18n string 2023-03-05 17:37:15 +09:00
wiz
226a4e9bde Fix two more strings for "Clearnet Only" 2023-03-05 17:34:30 +09:00
wiz
154e65d470 Fix string for "Clearnet Only" 2023-03-05 17:30:32 +09:00
softsimon
a895d21179 Merge pull request #3231 from mempool/simon/i18n-fixes-extract
I18n extract. Some minor fixes.
2023-03-05 17:08:52 +09:00
softsimon
d5ea2aec25 I18n extract. Some minor fixes. 2023-03-05 17:08:35 +09:00
wiz
07271f56d7 Merge pull request #3230 from mempool/mononaut/heap-monitor
Monitor heap memory usage
2023-03-05 15:47:06 +09:00
wiz
f37946118c Change heap size warning to 80% utilization 2023-03-05 15:45:28 +09:00
softsimon
fdbcef29e5 Merge pull request #3212 from mempool/nymkappa/bugfix/initial-pool-download
Fix initial pool update when db is empty
2023-03-05 15:44:14 +09:00
wiz
9eeaf76369 Merge branch 'master' into mononaut/heap-monitor 2023-03-05 15:35:00 +09:00
wiz
a9a2ff0347 Merge pull request #3215 from mempool/nymkappa/bugfix/price
Handle missing price (show 0)
2023-03-05 15:34:31 +09:00
softsimon
aae61bcb45 Merge pull request #3125 from mempool/nymkappa/feature/update-mining-indexer-log
Update some mining indexer log
2023-03-05 15:19:50 +09:00
Mononaut
43bed7cf56 Monitor heap memory usage 2023-03-04 23:13:55 -06:00
wiz
fca813147d Merge branch 'master' into nymkappa/bugfix/price 2023-03-05 14:13:51 +09:00
nymkappa
62ef1d4439 Fix log typo 2023-03-05 08:27:31 +09:00
nymkappa
ff7c85180d Fix initial pool update when db is empty 2023-03-05 08:27:30 +09:00
nymkappa
001be82f5a Move some notice into info 2023-03-05 08:23:05 +09:00
nymkappa
32a260473a Update some mining indexing logs 2023-03-05 08:23:04 +09:00
nymkappa
2e74d7fa4a Remove mining db stats - replaced by runtime state variable 2023-03-05 08:23:04 +09:00
softsimon
4e39c27c75 Adding 4 year button to mempool graph
fixes #3218
2023-03-04 18:48:16 +09:00
hunicus
f493da4eac Generalize faq from linux to any server 2023-03-04 18:24:02 +09:00
hunicus
e7ad857cc9 Specify manual deployment support for enterprise sponsors [readme] 2023-03-04 18:24:02 +09:00
hunicus
f968faeaf9 Specify manual deployment support for enterprise sponsors [faq] 2023-03-04 18:24:02 +09:00
softsimon
aef26097ec Merge pull request #3223 from mempool/mononaut/fix-cpfp-table-widths
Fix overlapping columns in cpfp table on small screens
2023-03-04 17:56:35 +09:00
hunicus
7b24b124c2 Use svg component for warning svg 2023-03-04 17:40:39 +09:00
hunicus
82b0844928 Make faq disclaimer more responsive 2023-03-04 17:40:39 +09:00
softsimon
2ed4e5bb6e Merge pull request #3222 from mempool/simon/incoming-transactions-progress-color
Correct incoming transaction progress colors
2023-03-04 16:55:44 +09:00
softsimon
fdcf4ce501 Merge pull request #3220 from mempool/mononaut/fiat-decimals
drop decimal places from large fiat values
2023-03-04 16:55:05 +09:00
wiz
0223846f91 Merge pull request #3122 from mempool/nymkappa/bugfix/cleanup-mining-states
Remove mining db stats - replaced by runtime state variable
2023-03-04 16:54:10 +09:00
wiz
1192d4fbd4 Merge branch 'master' into nymkappa/bugfix/cleanup-mining-states 2023-03-04 16:46:44 +09:00
wiz
027603acf7 Merge pull request #2995 from mempool/simon/bisq-search-bar-fix
Bisq markets search bar fix
2023-03-04 16:22:04 +09:00
wiz
152b8e8a7d Merge branch 'master' into simon/bisq-search-bar-fix 2023-03-04 16:06:46 +09:00
softsimon
375219242c Merge pull request #3224 from mempool/ops/fix-bisq-address-prefix-api
ops: Add missing /api/address-prefix nginx route for bisq
2023-03-04 16:06:23 +09:00
wiz
5fb4eac4b7 ops: Add missing /api/address-prefix nginx route for bisq 2023-03-04 15:53:49 +09:00
softsimon
f8624020e8 Bisq markets search bar fix
fixes #2986
2023-03-04 15:35:08 +09:00
Mononaut
269dcb2b16 Fix overlapping columns in cpfp table on small screens 2023-03-04 00:22:50 -06:00
softsimon
ec2e7a46eb Correct incoming transaction progress colors
fixes #3216
2023-03-04 15:19:56 +09:00
Mononaut
a37bcfec65 drop decimal places from large fiat values 2023-03-04 00:10:47 -06:00
softsimon
0c8636c803 Merge pull request #3219 from mempool/mononaut/momentum-scrolling
blockchain momentum scrolling
2023-03-04 15:09:14 +09:00
Mononaut
059139689d Fix blockchain scrolling on high refresh-rate devices 2023-03-03 23:39:01 -06:00
Mononaut
4e68498979 blockchain momentum scrolling 2023-03-03 22:45:11 -06:00
wiz
9024e21868 Merge pull request #3202 from mempool/nymkappa/use-core-again-because-esplora-is-lol
Use core to fetch block because esplora/electrs still return integer difficulty
2023-03-04 13:34:15 +09:00
nymkappa
e0c3c732d1 Fix incorrect db schema version in db migration script 2023-03-04 10:55:27 +09:00
nymkappa
622929831e Merge branch 'master' into nymkappa/bugfix/cleanup-mining-states 2023-03-04 10:54:02 +09:00
nymkappa
d483362a9b Handle missing price (show 0) 2023-03-04 10:51:13 +09:00
softsimon
32466f4d46 Merge pull request #3072 from mempool/mononaut/optimize-mempool-block-7
Optimize mempool block 7 data
2023-03-04 10:46:18 +09:00
softsimon
b21fd0d37d Merge branch 'master' into mononaut/optimize-mempool-block-7 2023-03-04 10:34:46 +09:00
softsimon
a2688f1ca5 Merge pull request #3213 from mempool/mononaut/btc-tooltip-amount
Always show BTC amount in block tooltips
2023-03-04 10:23:52 +09:00
softsimon
51d50292e6 Merge pull request #3203 from knorrium/db_migration_owners
Define owners for the DB migration file
2023-03-03 21:04:16 +09:00
softsimon
f90a23bde6 Merge pull request #3211 from mempool/mononaut/fix-ios-block-scrolling
Fix blockchain scrolling on iOS devices
2023-03-03 18:30:05 +09:00
Mononaut
6a66d06208 Always show BTC amount in block tooltips 2023-03-03 02:55:48 -06:00
Mononaut
27cf23f9b0 Fix blockchain scrolling on iOS devices 2023-03-03 02:43:44 -06:00
wiz
d16bda0630 Merge branch 'master' into nymkappa/use-core-again-because-esplora-is-lol 2023-03-03 17:39:55 +09:00
softsimon
fa77161379 Merge pull request #3209 from mempool/nymkappa/wipe-cache-always
Wipe nodejs backend cache for any mining pool change - Update pools before loading disk cache
2023-03-03 17:37:58 +09:00
nymkappa
d76d14253a Update mining pools before loading the disk cache since we may need to wipe that cache 2023-03-03 17:29:46 +09:00
nymkappa
ad7d3d97de Wipe nodejs backend cache for any mining pool change 2023-03-03 16:58:40 +09:00
softsimon
3e27f684d1 Merge pull request #3206 from knorrium/update_cypress_v12_7_0
Update Cypress to v12.7.0
2023-03-03 16:58:18 +09:00
Felipe Knorr Kuhn
c3c44713ef Merge branch 'master' into mononaut/seo-ssr 2023-03-02 23:53:40 -08:00
Felipe Knorr Kuhn
2cadb75163 Merge branch 'master' into update_cypress_v12_7_0 2023-03-02 23:51:12 -08:00
Felipe Knorr Kuhn
0e338a2c64 Fix linting on more specs 2023-03-02 23:33:12 -08:00
softsimon
ab88a51e01 Merge pull request #3204 from mempool/simon/vscode-default-relative-imports
Default relative paths in VsCode
2023-03-03 16:29:22 +09:00
softsimon
cffb41b54d Merge pull request #3208 from mempool/nymkappa/fix-paths
Fix import paths
2023-03-03 16:29:07 +09:00
nymkappa
fdd66a685a Fix import paths 2023-03-03 16:28:05 +09:00
Felipe Knorr Kuhn
98e9a91058 Merge branch 'master' into simon/vscode-default-relative-imports 2023-03-02 23:26:37 -08:00
wiz
5a8270a12d Merge branch 'master' into nymkappa/use-core-again-because-esplora-is-lol 2023-03-03 16:25:12 +09:00
Felipe Knorr Kuhn
5d976eff75 Fix linting on bisq spec 2023-03-02 23:17:48 -08:00
Felipe Knorr Kuhn
d87fd95523 Bump Cypress to v12.7.0 2023-03-02 23:17:26 -08:00
Felipe Knorr Kuhn
545b5be7d4 Remove the deprecated plugins file 2023-03-02 23:17:08 -08:00
softsimon
1ac8e5004f Merge pull request #3148 from mempool/nymkappa/bugfix/wipe-cache-reindexing
When we re-index blocks due to mining pools change, wipe the nodejs backend cache
2023-03-03 15:34:54 +09:00
Felipe Knorr Kuhn
dd7c56eb53 Define owners for the DB migration file 2023-03-02 22:01:50 -08:00
softsimon
c18dc44f4d Default relative paths in VsCode 2023-03-03 14:58:25 +09:00
softsimon
0f077afef2 Merge pull request #3198 from mempool/simon/about-video-fixes
About page video improvements
2023-03-03 14:48:38 +09:00
nymkappa
7ea2d3b808 Use core to fetch block because esplora/electrs still return integer difficulty 2023-03-03 13:59:17 +09:00
softsimon
0b77000aab Merge pull request #3199 from mempool/simon/pull-nl-translations-transifex
Pull transifex (nl)
2023-03-03 11:35:34 +09:00
softsimon
bc94560636 Pull transifex (nl) 2023-03-03 11:33:57 +09:00
softsimon
c404895b1b Merge branch 'master' into nymkappa/bugfix/wipe-cache-reindexing 2023-03-03 11:09:31 +09:00
softsimon
0846f346ee About page video improvements 2023-03-03 10:58:02 +09:00
wiz
0382f11052 Merge pull request #3196 from mempool/hunicus/electrum-responsive
Only show electrum tab on desktop
2023-03-02 23:46:34 +09:00
hunicus
89d9c1d78d Only show electrum tab on desktop 2023-03-02 23:38:47 +09:00
wiz
decc96d293 Merge pull request #3195 from mempool/hunicus/about-video
Add promo video to about page
2023-03-02 23:21:34 +09:00
hunicus
4f689885e6 Remove margin from about video 2023-03-02 23:02:35 +09:00
wiz
210843916e Add mempool promo video (via GitHub) in README 2023-03-02 22:45:51 +09:00
wiz
bc2d8dd7c3 Add mempool promo video (via YouTube) in README 2023-03-02 22:42:56 +09:00
hunicus
9b871dbfcc Make about video responsive 2023-03-02 22:41:04 +09:00
wiz
b1e7bbcc3e Merge branch 'master' into hunicus/about-video 2023-03-02 22:17:41 +09:00
softsimon
488693804c Merge pull request #3175 from mempool/hunicus/about-anchor
Add anchor links for about page sections
2023-03-02 22:01:09 +09:00
hunicus
a54684ad74 Add promo video to about page 2023-03-02 07:51:30 -05:00
softsimon
7b01286ed2 Run the go to anchor whenever data is loaded 2023-03-02 21:50:09 +09:00
softsimon
b4b08a8531 Merge pull request #3174 from mempool/hunicus/api-limit-note
Link API rate limit note to /enterprise
2023-03-02 21:33:28 +09:00
softsimon
96ddf98159 Merge pull request #3172 from mempool/hunicus/network-labels
Specify networks in lightning network graph labels
2023-03-02 21:30:06 +09:00
wiz
ec0d8b7c48 ops: Remove fork repos from upgrade script 2023-03-02 19:30:02 +09:00
softsimon
dfcbaabeda Merge pull request #3157 from hunicus/bulk-block-api
Add api documentation for blocks-bulk
2023-03-02 17:20:55 +09:00
softsimon
29498e136b Merge pull request #3185 from mempool/nymkappa/historical-frontend-price-flag
Add frontend config flag to toggle historical price fetching
2023-03-02 15:32:57 +09:00
softsimon
13db2626b0 Merge pull request #3181 from mempool/nymkappa/run-forensics-last
Run ln forensics last
2023-03-02 14:21:25 +09:00
softsimon
3d01ecd1a6 Merge pull request #3191 from mempool/nymkappa/remove-trigger-review-request
Don't run CI on "review_requested" event
2023-03-02 13:56:11 +09:00
softsimon
b14d6bc850 Merge pull request #3190 from mempool/nymkappa/cleanup-get-blocks
Remove useless code
2023-03-02 13:55:46 +09:00
Felipe Knorr Kuhn
743f15e08e Merge branch 'master' into nymkappa/remove-trigger-review-request 2023-03-01 18:09:18 -08:00
nymkappa
5129116fe4 Don't run CI on "review_requested" event 2023-03-02 10:45:14 +09:00
wiz
746e1bb3da Merge pull request #3189 from mempool/mononaut/cpfp-db-disabled
Don't try to fetch cpfp when database is disabled
2023-03-02 10:34:45 +09:00
nymkappa
be4bd691ee Remove useless code 2023-03-02 10:08:40 +09:00
Mononaut
2309a769cd Don't try to fetch cpfp if database disabled 2023-03-01 11:36:26 -06:00
wiz
4efabe18b1 Merge pull request #3166 from mempool/nymkappa/unify-blocks-apis 2023-03-01 19:56:02 +09:00
wiz
5e484d3eca Merge branch 'master' into nymkappa/unify-blocks-apis 2023-03-01 19:20:33 +09:00
wiz
9d290562cd Merge pull request #3186 from mempool/nymkappa/ignore-nega-usd-price
Ignore negative USD prices
2023-03-01 19:20:12 +09:00
softsimon
5fe8f42489 Merge pull request #3187 from mempool/simon/pull-from-transifex-03-01
Pull from transifex 1/3
2023-03-01 14:15:08 +04:00
softsimon
3265b32a56 Pull from transifex 1/3 2023-03-01 19:14:54 +09:00
wiz
2c55182cf0 Merge branch 'master' into nymkappa/ignore-nega-usd-price 2023-03-01 19:11:52 +09:00
nymkappa
9043d23a03 Ignore negative USD prices 2023-03-01 19:11:03 +09:00
wiz
e2ef8721d7 Merge branch 'master' into nymkappa/unify-blocks-apis 2023-03-01 18:19:45 +09:00
wiz
c27e165434 Merge pull request #3184 from mempool/nymkappa/bugfix/db-migration
Only run migration 57 if bitcoin
2023-03-01 18:18:54 +09:00
wiz
88913b1a89 Merge branch 'master' into nymkappa/bugfix/db-migration 2023-03-01 17:38:02 +09:00
wiz
7acfa6e13f Merge pull request #3160 from knorrium/run_tests_on_merge
Run Cypress tests on master after merging
2023-03-01 17:34:27 +09:00
nymkappa
9c5a9f2eba Only run migration 57 if bitcoin 2023-03-01 17:33:37 +09:00
nymkappa
d5342a4e9a Add frontend config flag to toggle historical price fetching 2023-03-01 17:26:53 +09:00
wiz
6c271ab6ee Merge branch 'master' into nymkappa/unify-blocks-apis 2023-03-01 17:05:57 +09:00
nymkappa
87d678e268 Run ln forensics last 2023-03-01 16:52:24 +09:00
nymkappa
8aebcf3e57 Remove mining db stats - replaced by runtime state variable 2023-03-01 16:42:26 +09:00
Felipe Knorr Kuhn
40c250502e Merge branch 'master' into run_tests_on_merge 2023-02-28 21:45:24 -08:00
softsimon
d673365a0e Merge pull request #3116 from mempool/nymkappa/feature/align-dashboards
Align dashboards
2023-03-01 09:34:21 +04:00
softsimon
43e0c7e0d8 Merge pull request #3179 from mempool/mononaut/center-scroll
Center-align blockchain when resetting scroll position
2023-03-01 09:16:57 +04:00
softsimon
7875829370 Merge pull request #3178 from mempool/mononaut/clear-block-cache
Reset scrolling blockchain cache when network changes
2023-03-01 09:12:37 +04:00
nymkappa
a67656389e Fix chain divergence detection upon new block (use the new interface) 2023-03-01 13:50:15 +09:00
Felipe Knorr Kuhn
1d5e4aa410 Merge branch 'master' into run_tests_on_merge 2023-02-28 20:09:30 -08:00
Mononaut
af2e3cb42a Center-align blockchain after resetting scroll 2023-02-28 21:36:16 -06:00
Mononaut
f09a2aab24 Reset scrolling blockchain cache when network changes 2023-02-28 21:30:20 -06:00
softsimon
0929d53c56 Merge branch 'master' into nymkappa/feature/align-dashboards 2023-03-01 06:31:25 +04:00
softsimon
ec7f0d1143 Merge pull request #3040 from mempool/nymkappa/bugfix/ignore-too-low-lightning-timestamps
[LND] Nullify zeroed timestamps
2023-03-01 06:26:49 +04:00
softsimon
a5acb81def Merge branch 'master' into nymkappa/bugfix/ignore-too-low-lightning-timestamps 2023-03-01 06:20:56 +04:00
softsimon
792cb12755 Merge pull request #3044 from mempool/nymkappa/bugfix/node-sockets-lnd
Fix node socket parsing with LND
2023-03-01 06:14:13 +04:00
softsimon
8630ae0682 Merge branch 'master' into nymkappa/bugfix/node-sockets-lnd 2023-03-01 06:08:44 +04:00
nymkappa
7316d7d7e8 Merge branch 'master' into nymkappa/bugfix/ignore-too-low-lightning-timestamps 2023-03-01 11:08:43 +09:00
mononaut
f6cae729a7 revert capitalization in title tag
Co-authored-by: wiz <j@wiz.biz>
2023-02-28 18:40:59 -06:00
hunicus
7e093d912b Remove special availability note mechanism 2023-02-28 05:02:17 -05:00
hunicus
54f7e59978 Correct number of blocks returned for bulk-blocks 2023-02-28 05:02:10 -05:00
hunicus
852513500a Add example responses for blocks-bulk 2023-02-28 05:02:01 -05:00
hunicus
f057b07021 Add note for special availability
Indicating that api endpoint is only available for
enterprise sponsors.
2023-02-28 05:01:53 -05:00
hunicus
73b90fcd25 Add skeleton for blocks-bulk endpoint 2023-02-28 05:01:43 -05:00
hunicus
4bdad54bb2 Link api rate limit note to /enterprise 2023-02-28 04:54:31 -05:00
hunicus
174758bdd9 Specify networks in lightning network graph labels 2023-02-28 00:20:30 -05:00
wiz
b585a90abd Merge pull request #3171 from mempool/nymkappa/relative-path
Use relative path to import price service
2023-02-28 11:06:06 +09:00
nymkappa
7d8875eb73 Use relative path to import price service 2023-02-28 10:59:39 +09:00
softsimon
143344cb7e Merge pull request #3170 from mempool/simon/transifex-pull-2-27-02
Transifex pull (2)
2023-02-27 23:09:31 +04:00
softsimon
f471a85d1d Transifex pull (2) 2023-02-27 23:09:11 +04:00
Mononaut
b1e32ed55f Fix googlebot user-agent detection 2023-02-27 10:48:13 -06:00
nymkappa
76ae9d4ccb Wipe the disk cache since we have a new block structure 2023-02-27 19:06:46 +09:00
nymkappa
01d699e454 Add missing match rate to the block returned from the database 2023-02-27 18:39:02 +09:00
nymkappa
0aff276a5c Enforce BlockExtended use for block indexing - Unify /api/v1/block(s) API(s) response format 2023-02-27 18:00:00 +09:00
nymkappa
5792dee553 Use bitcoinApiFactory when we don't need verbose blocks or confirmation number 2023-02-27 11:46:37 +09:00
wiz
416ba77394 Merge pull request #3158 from mempool/nymkappa/bugfix/truncate-coinbase
Truncate `coinbase_signature` and `coinbase_signature_ascii` before insertion if needed
2023-02-27 10:09:21 +09:00
Felipe Knorr Kuhn
4cc0f9b5c7 Reorder triggers 2023-02-26 09:16:33 -08:00
Mononaut
2f27d9279d extend unfurler to dynamically render search crawler requests 2023-02-26 10:56:32 -06:00
Felipe Knorr Kuhn
0ce4c5fa4d Run Cypress tests on master after merging 2023-02-26 08:23:44 -08:00
softsimon
321499da88 Merge pull request #3130 from mempool/nymkappa/bugfix/lightning-channel-404
Improve error handling on channel component
2023-02-26 15:02:27 +04:00
nymkappa
5fba448dca Truncate coinbase data if it's too long 2023-02-26 18:24:08 +09:00
softsimon
32a0f4f6e0 Merge pull request #3102 from mempool/mononaut/block-health-calculation
Ignore coinbase transaction in block health calculation
2023-02-26 13:08:31 +04:00
wiz
86a0488bba Merge branch 'master' into mononaut/block-health-calculation 2023-02-26 17:39:50 +09:00
wiz
75faa2b45a Merge pull request #3150 from mempool/ops/update-warm-cache-new-pool-slugs
ops: Update nginx-cache-warmer for new pool slugs API
2023-02-26 16:20:51 +09:00
wiz
91dfd06015 Merge pull request #3154 from mempool/nymkappa/feature/new-reindex-command
Replace `--reindex=xxx,xxx` command line with `--reindex-blocks`
2023-02-26 15:55:49 +09:00
wiz
0b92b692c4 Merge pull request #3153 from mempool/simon/enable-advanced-gbt-mempool-production-config
Enable GBT mempool in all production configs
2023-02-26 15:54:54 +09:00
wiz
f1863596d8 Merge pull request #3149 from mempool/nymkappa/bugfix/update-missing-pools-config
Update missing "pools.json" -> "pools-v2.json"
2023-02-26 15:54:35 +09:00
wiz
a7f17f4299 Merge pull request #3155 from mempool/nymkappa/bugfix/fix-wrong-config-sample
AUTOMATIC_BLOCK_REINDEXING is `false` by default
2023-02-26 15:43:53 +09:00
nymkappa
955e216037 AUTOMATIC_BLOCK_REINDEXING is false by default 2023-02-26 15:41:55 +09:00
nymkappa
d938448fe9 Replace --reindex=xxx,xxx command line with --reindex-blocks 2023-02-26 15:28:50 +09:00
softsimon
bc3400ce75 Enable GBT mempool in all production configs 2023-02-26 10:13:25 +04:00
softsimon
c731eeba87 Merge pull request #3152 from mempool/simon/transifex-pull-26-02
Transifex pull 26/2
2023-02-26 09:46:38 +04:00
softsimon
51bc749415 Transifex pull 26/2 2023-02-26 09:46:21 +04:00
wiz
200da478d2 Merge pull request #3077 from mempool/nymkappa/feature/fix-mining-pool-auto-update
Log warning when pools are out of date
2023-02-26 14:29:49 +09:00
nymkappa
d0d2303513 Document --update-pools - Added some logs 2023-02-26 14:19:10 +09:00
wiz
25186ae6fa Merge pull request #3151 from knorrium/remove_node19_from_ci
Remove node 19 from the CI test matrix
2023-02-26 14:13:39 +09:00
Felipe Knorr Kuhn
7519eaf5d8 Remove node 19 from the CI test matrix 2023-02-25 21:06:34 -08:00
wiz
7ad207766b ops: Update nginx-cache-warmer for new pool slugs API 2023-02-26 13:54:45 +09:00
nymkappa
57fb305452 Update missing "pools.json" -> "pools-v2.json" 2023-02-26 13:54:43 +09:00
wiz
5981e52534 Merge branch 'master' into nymkappa/feature/align-dashboards 2023-02-26 13:07:35 +09:00
nymkappa
9a4a5ad94e Silence ENOENT exception when we wipe the nodejs backend cache 2023-02-26 11:37:57 +09:00
nymkappa
32733a3023 When we re-index blocks due to mining pools change, wipe the nodejs backend cache 2023-02-26 11:30:12 +09:00
softsimon
b6c7c02a2d Merge pull request #3143 from mempool/simon/missing-ln-i18n-strings
Fixing some i18n strings.
2023-02-25 17:14:30 +04:00
softsimon
f2e7dd51af Fixing some i18n strings. 2023-02-25 17:14:11 +04:00
softsimon
a721761d49 Merge pull request #3138 from mempool/simon/fix-duplicate-i18n-string-11
Fix for duplicate i18n strings
2023-02-25 14:28:32 +04:00
softsimon
6b49096fa9 Fix for duplicate i18n strings 2023-02-25 14:28:04 +04:00
softsimon
303f123c17 Merge pull request #3137 from mempool/simon/extract-i18n-feb-25
Extracting i18n with new faq disclaimer
2023-02-25 14:24:11 +04:00
softsimon
0b9c64483c Extracting i18n with new faq disclaimer 2023-02-25 14:23:54 +04:00
softsimon
a4b9397286 Merge pull request #3134 from hunicus/i18n-faq-disclaimer
Add i18n tag for big faq disclaimer
2023-02-25 14:22:39 +04:00
softsimon
c1faefe74e Merge pull request #3133 from mempool/simon/localizing-search-box-strings
Localizing search box strings
2023-02-25 14:19:31 +04:00
hunicus
ba1cc05979 Add i18n tag for big faq disclaimer 2023-02-25 05:04:28 -05:00
softsimon
d3b681dca2 Localizing search box strings, channel tags
fixes #3124
fixes #3128
fixes #3083
2023-02-25 13:50:41 +04:00
hunicus
b7425dc339 Add anchor links for about page sections 2023-02-25 04:37:30 -05:00
wiz
619c4fdfb1 Merge pull request #3132 from hunicus/copyright-2023 2023-02-25 18:36:13 +09:00
hunicus
333aef5e94 Update legal notices for 2023 2023-02-25 04:34:09 -05:00
nymkappa
6d1e6a92ad [LND] Nullify zeroed timestamps 2023-02-25 18:30:29 +09:00
wiz
b7e6b6da13 Merge pull request #2869 from mempool/nymkappa/feature/rewrite-pool-parser
Rewrite mining pools parser
2023-02-25 17:50:19 +09:00
nymkappa
9395a5031e Log the whole exception in pool parser 2023-02-25 17:12:50 +09:00
nymkappa
2363a397f1 Remove duplicated db transaction 2023-02-25 17:05:58 +09:00
nymkappa
3d38064dbb Increase db schema version to 56 2023-02-25 16:48:11 +09:00
nymkappa
ad9e42db26 Use regexes instead of tags 2023-02-25 16:32:03 +09:00
nymkappa
c2f5cb9529 Update pool parser to work with no database 2023-02-25 16:32:03 +09:00
nymkappa
6cd42cfc73 Update missing POOLS_JSON_URL config 2023-02-25 16:32:03 +09:00
nymkappa
117aa1375d Disable mining pools update if AUTOMATIC_BLOCK_REINDEXING is not set - Re-index unknown blocks when a new pool is added 2023-02-25 16:32:03 +09:00
nymkappa
d87fb04a92 Point to the new mining pool files pools-v2.json 2023-02-25 16:32:02 +09:00
nymkappa
d3fdef256c Rewrite mining pools parser - Re-index blocks table 2023-02-25 16:31:47 +09:00
wiz
e8ffd4335f Merge pull request #3070 from mempool/nymkappa/feature/new-blocks-api
Index coinstatsindex - Add bulk block query api
2023-02-25 16:12:07 +09:00
nymkappa
210f939e65 Add missing truncate blocks table 2023-02-25 14:22:17 +09:00
nymkappa
8d9568016e Remove duplicated entry in backend/src/__fixtures__/mempool-config.template.json 2023-02-25 14:22:17 +09:00
nymkappa
5d7c9f9315 Add config.MEMPOOOL.MAX_BLOCKS_BULK_QUERY parameter (default to 0, API disable) 2023-02-25 14:22:17 +09:00
nymkappa
ad4cbd60d5 Do not download orphaned block if headers-only 2023-02-25 14:22:17 +09:00
nymkappa
822362c105 Increase cache schema version 2023-02-25 14:22:16 +09:00
nymkappa
6c3a273e75 Enabled coinstatsindex=1 2023-02-25 14:22:16 +09:00
nymkappa
ed8cf89fee Format percentiles in a more verbose way 2023-02-25 14:22:16 +09:00
nymkappa
e19db4ae35 Add missing coinbase_signature_ascii 2023-02-25 14:22:16 +09:00
nymkappa
aa1114926c previousblockhash -> previous_block_hash 2023-02-25 14:22:15 +09:00
nymkappa
0bf4d52183 Return zeroed out fee_amt_percentiles if there is no transaction 2023-02-25 14:22:15 +09:00
nymkappa
a0488dba76 Cleanup block before sending response in /blocks-bulk API
Remove block_time
Index summaries on the fly
2023-02-25 14:22:15 +09:00
nymkappa
086ee68b52 Remove block_time from indexed fields 2023-02-25 14:22:15 +09:00
nymkappa
75a99568bf Index coinbase signature in ascii 2023-02-25 14:22:14 +09:00
nymkappa
b2eaa7efb1 Fix fee percentiles indexing 2023-02-25 14:22:14 +09:00
nymkappa
eceedf0bdf Dont compute fee percentile / median fee when indexing is disabled because we need summaries 2023-02-25 14:22:14 +09:00
nymkappa
6965c8f41b Fix median time indexing 2023-02-25 14:22:14 +09:00
nymkappa
e2fe39f241 Wrap orphaned blocks updater into try/catch 2023-02-25 14:22:13 +09:00
nymkappa
281899f551 List orphaned blocks in the new blocks-bulk API 2023-02-25 14:22:13 +09:00
nymkappa
458f24c9f2 Compute median fee and fee percentiles in sats 2023-02-25 14:22:13 +09:00
nymkappa
8f716a1d8c Fix median timestamp field - Fix reponse format when block is indexed on the fly 2023-02-25 14:22:13 +09:00
nymkappa
8612dd2d73 Remove unescessary data from the blocks-bulk API 2023-02-25 14:22:12 +09:00
nymkappa
73f76474dd Implemented coinstatsindex indexing 2023-02-25 14:22:12 +09:00
nymkappa
c44896f53e Get blocks data set by bulk (non indexed) 2023-02-25 14:22:11 +09:00
nymkappa
9a246c68de Center wrapping error message on mobile 2023-02-25 13:43:48 +09:00
nymkappa
8df2476266 Improve error handling on channel component 2023-02-25 13:38:09 +09:00
nymkappa
80e0ef8970 Improve responsiveness on single column layout 2023-02-25 13:20:49 +09:00
wiz
58eb6ccc8e Merge pull request #3126 from mempool/ops/enable-cpfp-indexing
ops: Enable CPFP indexing for mainnet
2023-02-25 12:14:49 +09:00
wiz
b50e973573 ops: Enable CPFP indexing for mainnet 2023-02-25 12:14:07 +09:00
softsimon
56789532ed Merge pull request #3025 from mempool/mononaut/offline-loading-blocks
Handling for network interruptions in scrollable blockchain
2023-02-24 17:32:27 +04:00
nymkappa
92862939da Make sure we don't show more than 6 rows in channel ranking widget 2023-02-24 20:25:28 +09:00
nymkappa
98e709b739 Remove monospace from fiat amount 2023-02-24 17:49:06 +09:00
nymkappa
7cee6df369 Remove console.log 2023-02-24 17:47:33 +09:00
wiz
ab6219a828 Merge branch 'master' into nymkappa/feature/align-dashboards 2023-02-24 17:10:57 +09:00
wiz
7d3c7c3f45 Merge pull request #3119 from mempool/nymkappa/bugfix/historical-price-bitcoin-only
Only query historical price if we're running mempool BASE_MODULE
2023-02-24 17:10:22 +09:00
wiz
20404cf6a0 Merge branch 'master' into nymkappa/bugfix/historical-price-bitcoin-only 2023-02-24 16:29:42 +09:00
softsimon
ddd8109187 Merge pull request #3109 from mempool/nymkappa/bugfix/qr-code-border
Add border to qr code because it's a best practice
2023-02-24 10:57:06 +04:00
nymkappa
a26dc977ba Hide new columns when screen width is too small 2023-02-24 14:20:16 +09:00
wiz
4921ea1a2b Merge pull request #3118 from mempool/wiz/fix-db-migration-54-liquid
Fix DB migration 54 breaking liquid
2023-02-24 13:56:56 +09:00
nymkappa
b4d0e20d75 Only query historical price if we're running mempool BASE_MODULE 2023-02-24 12:12:50 +09:00
nymkappa
4d7c69dd73 Fix DB migration 54 breaking liquid 2023-02-24 10:41:17 +09:00
nymkappa
6f68c1666f Add border input in the qr code component 2023-02-24 09:55:48 +09:00
Mononaut
c65674479a fix gaps in loading blockchain 2023-02-23 14:31:01 -06:00
Mononaut
ee265be55e Show skeleton loader for all blocks while offline 2023-02-23 13:54:06 -06:00
Mononaut
8eca1e5f7e Handle network interruptions in scrollable blockchain 2023-02-23 13:52:08 -06:00
wiz
da3446f522 Merge pull request #3084 from knorrium/update_ci_node
Update node v16, LTS and current for CI
2023-02-23 22:31:33 +09:00
wiz
676f6ff2ef Merge pull request #3117 from hunicus/translator-imgs
Fit translator avatars neatly on 2 lines
2023-02-23 22:15:47 +09:00
wiz
de93a0c53e Merge branch 'master' into translator-imgs 2023-02-23 21:53:37 +09:00
wiz
d74429e359 Merge pull request #3111 from mempool/nymkappa/bugfix/optimize-price-frontend
Redo/Fix completely failed PR #3092 + add PR #3105
2023-02-23 21:49:56 +09:00
hunicus
bb5fd4b1b1 Fit translator avatars neatly on 2 lines 2023-02-23 07:39:57 -05:00
wiz
d2ea9215f0 Merge branch 'master' into nymkappa/bugfix/optimize-price-frontend 2023-02-23 21:32:58 +09:00
wiz
7cc0622702 Merge pull request #3115 from mempool/nymkappa/bugfix/fix-ln-label-y
Fix lightning widgets layout
2023-02-23 21:32:34 +09:00
wiz
b147898823 Merge branch 'master' into nymkappa/bugfix/fix-ln-label-y 2023-02-23 20:44:54 +09:00
softsimon
a7fb62ce4a Merge pull request #3007 from mempool/mononaut/mobile-chain-jumping
Fix blockchain scroll jumping on resize on mobile
2023-02-23 15:09:10 +04:00
softsimon
0147af1325 Merge branch 'master' into mononaut/mobile-chain-jumping 2023-02-23 14:55:41 +04:00
softsimon
aa9ebc277d Merge pull request #3113 from mempool/nymkappa/bugfix/usd-charts-only
Show only USD in block fees/rewards charts
2023-02-23 14:50:32 +04:00
wiz
4e55f5323e Merge branch 'master' into nymkappa/feature/align-dashboards 2023-02-23 19:18:09 +09:00
wiz
6cd946c8bb Merge pull request #3101 from mempool/mononaut/flow-diagram-alignment
pixel perfect flow diagrams
2023-02-23 19:17:55 +09:00
nymkappa
7e913e4d34 Show geolocation in node channels ranking widget 2023-02-23 18:57:55 +09:00
nymkappa
f9fe096669 Unsubscribe priceSubscription onDestroy 2023-02-23 18:43:32 +09:00
nymkappa
58f886b337 If we don't have a price for "single price" query then return empty price 2023-02-23 18:40:13 +09:00
nymkappa
50c3f83484 Fix design for node channels ranking 2023-02-23 18:36:13 +09:00
nymkappa
51ac04f207 Fix design for node liquidity ranking 2023-02-23 18:19:47 +09:00
wiz
aa561773ee Merge branch 'master' into mononaut/flow-diagram-alignment 2023-02-23 16:12:01 +09:00
nymkappa
ffe02c2509 Fix lightning chart widget layout 2023-02-23 16:01:56 +09:00
wiz
7929500dd2 Merge branch 'master' into mononaut/block-health-calculation 2023-02-23 15:27:04 +09:00
wiz
1b92099004 Merge pull request #3068 from mempool/mononaut/raise-memory-limits
Raise production memory limits
2023-02-23 15:26:53 +09:00
nymkappa
ee54e782f8 Only display reward and block fee charts in USD due to missing historical data 2023-02-23 15:13:30 +09:00
nymkappa
2d03332333 Add missing db schema incrementation 2023-02-23 14:52:29 +09:00
nymkappa
3f95d094a3 Merge branch 'master' into nymkappa/bugfix/optimize-price-frontend 2023-02-23 14:51:46 +09:00
nymkappa
5cfd715d4a Add database migration to re-index prices with negative values support 2023-02-23 14:50:20 +09:00
wiz
d487c78ae1 Merge pull request #3100 from mempool/simon/alias-search-syntax-error
Fixes a syntax error with certain keywords
2023-02-23 13:45:31 +09:00
wiz
10bfb51215 Add simon's comment to $searchNodeByPublicKeyOrAlias() 2023-02-23 13:42:54 +09:00
nymkappa
5b5de95828 Show historical price on block overview graph 2023-02-23 13:34:48 +09:00
wiz
03be3ab561 Merge branch 'master' into simon/alias-search-syntax-error 2023-02-23 13:20:35 +09:00
wiz
0851dad0b2 Merge pull request #3103 from mempool/mononaut/db-stats-overflow
increase size of mempool_byte_weight db column
2023-02-23 13:20:22 +09:00
nymkappa
5749820999 Optimize price API response size reduce the number of query to that API 2023-02-23 13:13:20 +09:00
wiz
ba2aa0456c Merge branch 'master' into mononaut/block-health-calculation 2023-02-23 13:11:00 +09:00
wiz
0ef259d408 Merge branch 'master' into mononaut/db-stats-overflow 2023-02-23 13:09:38 +09:00
wiz
22ad06a94c Merge pull request #3106 from mempool/nymkappa/bugfix/unknown-pool-yellow
Unknown pool color #FDD835
2023-02-23 12:55:28 +09:00
wiz
ea74a737ff Merge branch 'master' into nymkappa/bugfix/unknown-pool-yellow 2023-02-23 12:25:33 +09:00
nymkappa
f6c7839524 Show historical price on transaction bowtie chart 2023-02-23 10:46:18 +09:00
nymkappa
62e1fa03c1 Cache price API for 5 minutes 2023-02-23 10:04:31 +09:00
nymkappa
f44eacd5d5 Redo/Fix completely failed PR #3092 + add PR #3105 2023-02-23 09:50:34 +09:00
softsimon
6e7ed29caa Merge pull request #3110 from mempool/nymkappa/bugfix/missing-price-unconfirmed-tx
Fix 'NaN' price for unconfirmed transaction since we have no block timestamp
2023-02-22 15:48:05 +04:00
nymkappa
2246a6f3ce Fix 'NaN' price for unconfirmed transaction since we have no block timestamp 2023-02-22 20:42:32 +09:00
wiz
4b2083e756 Merge branch 'master' into simon/alias-search-syntax-error 2023-02-22 15:43:50 +09:00
wiz
4203972a49 Merge branch 'master' into mononaut/raise-memory-limits 2023-02-22 15:29:17 +09:00
softsimon
b6792784e8 Adding regex comments. 2023-02-22 10:19:32 +04:00
nymkappa
437350aaff Unknown pool color #FDD835 2023-02-22 14:06:08 +09:00
Mononaut
32b38e6cd1 increase size of mempool_byte_weight db column 2023-02-21 22:07:12 -06:00
Mononaut
2ff930ef3e Ignore coinbase tx in block health calculation 2023-02-21 22:01:30 -06:00
Mononaut
e8d54f254b pixel-perfect flow diagrams 2023-02-21 21:59:31 -06:00
wiz
00cbb5d0d8 Merge pull request #3076 from mempool/nymkappa/bugfix/channel-geo
Fix map not being updated when switching between channel pages
2023-02-22 10:42:38 +09:00
wiz
ef8a1c7393 Merge branch 'master' into nymkappa/bugfix/channel-geo 2023-02-22 10:32:52 +09:00
wiz
c1a3b5f045 Merge branch 'master' into simon/alias-search-syntax-error 2023-02-22 10:13:44 +09:00
wiz
e3603d9ce9 Merge pull request #3099 from mempool/nymkappa/bugfix/chart-all
Fix timespan UX in mining charts
2023-02-22 10:12:55 +09:00
wiz
680f7d39cf Merge branch 'master' into nymkappa/bugfix/chart-all 2023-02-22 09:58:33 +09:00
wiz
70113d9c91 Merge pull request #3092 from mempool/nymkappa/feature/historical-price
Use historical price in older blocks / transactions
2023-02-22 09:58:25 +09:00
wiz
70d96583fb Merge branch 'master' into nymkappa/feature/historical-price 2023-02-22 08:23:36 +09:00
wiz
6beab1f8c1 Merge pull request #3098 from mempool/nymkappa/bugfix/pool-hashrate-history-colors
Use mempool chart color palette on hashrate history
2023-02-22 08:23:11 +09:00
wiz
2bfe192324 Merge branch 'master' into nymkappa/bugfix/pool-hashrate-history-colors 2023-02-22 08:05:48 +09:00
softsimon
8f51e20b2e Fixes a syntax error with certain keywords 2023-02-21 17:14:51 +04:00
nymkappa
05594675c0 Disable timespan controls while isLoading 2023-02-21 18:48:09 +09:00
nymkappa
cf1bf9f0c5 Add missing formControl name 2023-02-21 18:47:27 +09:00
wiz
5bcd54b808 Merge pull request #3097 from mempool/ops/smooth-out-warm-cache-requests
ops: Add 250ms delay between warm cache requests
2023-02-21 18:42:28 +09:00
wiz
952e540d65 ops: Add 250ms delay between warm cache requests 2023-02-21 18:41:12 +09:00
wiz
0e5a4df978 Merge pull request #3096 from mempool/nymkappa/bugfix/liquid-scroll
Fix liquid infinite scrolling
2023-02-21 18:23:36 +09:00
nymkappa
b2162130d9 Keep block alignment if fee/fee-range is missing 2023-02-21 18:09:41 +09:00
nymkappa
de117e30f2 Use mempool chart color palette on hashrate history 2023-02-21 17:51:46 +09:00
nymkappa
c949fee49f Fix liquid infinite scrolling 2023-02-21 17:25:39 +09:00
nymkappa
3c94755a69 Use historical price for older blocks and transactions 2023-02-21 12:37:27 +09:00
wiz
994b31527b Merge pull request #3091 from mempool/nymkappa/feature/avg-block-health-pool
Show average block health in pool ranking
2023-02-20 18:33:33 +09:00
nymkappa
14be0fc547 Hide pool share on mobile in pool ranking 2023-02-20 18:14:12 +09:00
nymkappa
0dc2a598c3 Show avg block heath in pool ranking pie chart 2023-02-20 18:14:12 +09:00
nymkappa
e3e7271c9d Add avg mining pool block mathrate in pools stats API 2023-02-20 18:14:12 +09:00
wiz
e2585da7aa Merge pull request #3081 from mempool/simon/remove-included-in-block
Remove included in block
2023-02-20 17:45:54 +09:00
wiz
df578f64ee Merge branch 'master' into simon/remove-included-in-block 2023-02-20 17:28:05 +09:00
wiz
ac22a10e06 Merge pull request #3090 from mempool/ops/fix-typo-in-mainnet-lightning-backend-config
ops: Fix typo in mainnet lightning backend config
2023-02-20 16:10:24 +09:00
wiz
85251fcd5c ops: Fix typo in mainnet lightning backend config 2023-02-20 16:09:40 +09:00
wiz
f3ef1e7a53 Merge pull request #3089 from mempool/ops/fix-build-script-credentials-typo
ops: Fix another typo in build script credentials sed
2023-02-20 15:59:08 +09:00
wiz
ca15887e4b ops: Fix another typo in build script credentials sed 2023-02-20 15:58:07 +09:00
Felipe Knorr Kuhn
0e0acff00f Merge branch 'master' into mononaut/mobile-chain-jumping 2023-02-19 14:00:10 -08:00
Felipe Knorr Kuhn
89319d9117 Merge branch 'master' into nymkappa/bugfix/node-sockets-lnd 2023-02-19 13:56:48 -08:00
Felipe Knorr Kuhn
c260b4f0f2 Merge branch 'master' into mononaut/raise-memory-limits 2023-02-19 13:56:28 -08:00
Felipe Knorr Kuhn
6a285064af Merge branch 'master' into mononaut/optimize-mempool-block-7 2023-02-19 13:56:18 -08:00
Felipe Knorr Kuhn
250f07732f Merge branch 'master' into nymkappa/bugfix/channel-geo 2023-02-19 13:56:11 -08:00
Felipe Knorr Kuhn
e0f149550a Update node v16, LTS and current for CI 2023-02-19 13:50:12 -08:00
softsimon
ee6bdeec66 Merge pull request #3080 from mempool/nymkappa/bugfix/invalid-db-use
Fix database usage when database is disabled
2023-02-19 21:08:40 +07:00
softsimon
209d5a57c7 Merge pull request #3079 from mempool/nymkappa/bugfix/layout-fix
Only add clearfix on block list widget
2023-02-19 20:41:15 +07:00
nymkappa
66d52c9773 Update blocks-list.component.html 2023-02-19 20:43:51 +09:00
nymkappa
c1fc60e61e Wrap duplicate ngIf into a ng-template 2023-02-19 19:30:55 +09:00
softsimon
44865d18ae Remove included in block 2023-02-19 17:24:43 +07:00
nymkappa
761edbce9a Fix database usage when database is disabled 2023-02-19 19:08:29 +09:00
softsimon
f6800b848a Merge pull request #3048 from knorrium/update_mainnet_tests
Update mainnet tests
2023-02-19 16:44:40 +07:00
wiz
5a5e81c731 Merge pull request #3078 from mempool/nymkappa/bugfix/pegapool-color
Remove hardcoded mining pools colors as it's not relevant
2023-02-19 18:27:54 +09:00
wiz
9c02d6a276 Merge branch 'master' into update_mainnet_tests 2023-02-19 18:26:11 +09:00
nymkappa
6229708dfd Fixes #3034 2023-02-19 17:36:09 +09:00
nymkappa
e2eccf6e85 Remove hardcoded mining pools colors as it's not relevant 2023-02-19 17:14:49 +09:00
wiz
b2621e7c27 Merge pull request #3064 from mempool/nymkappa/bugfix/remove-unused-config-setting
Remove `config.MEMPOOL.PRICE_FEED_UPDATE_INTERVAL`
2023-02-19 16:28:39 +09:00
Felipe Knorr Kuhn
3d1d29bd3b Merge branch 'master' into nymkappa/bugfix/remove-unused-config-setting 2023-02-18 18:43:04 -08:00
wiz
bc4d21577d Merge pull request #3041 from mempool/nymkappa/update-readme
Add `--reindex` doc to backend README
2023-02-19 10:23:59 +09:00
Felipe Knorr Kuhn
95b029ee7b Merge branch 'master' into update_mainnet_tests 2023-02-18 15:36:20 -08:00
softsimon
330aba0985 Merge pull request #3066 from antonilol/sizeperweight-graph
Add size per weight graph and ts type for `getHistoricalBlockSizesAndWeights`
2023-02-18 23:57:06 +07:00
softsimon
83c248e4b6 Merge pull request #3022 from mempool/mononaut/esplora-keepalive
Reuse HTTP connections for esplora backend requests
2023-02-18 21:34:28 +07:00
Mononaut
7f54e30a26 Reuse HTTP connections to esplora backend 2023-02-18 21:34:09 +07:00
softsimon
65875c3ced Merge pull request #3009 from mempool/update-cpfp-faq-mined
Update cpfp faq for stored relationships
2023-02-18 20:44:15 +07:00
softsimon
83e80b90d7 Merge branch 'master' into update_mainnet_tests 2023-02-18 19:45:50 +07:00
softsimon
9b6537eb4e Merge pull request #3063 from mempool/mononaut/liquid-address-table
fix liquid address table overflow
2023-02-18 19:41:43 +07:00
nymkappa
224613e5ee Fix channel map not being updated (racing condition) 2023-02-18 21:20:22 +09:00
wiz
177fba2178 Merge branch 'master' into mononaut/liquid-address-table 2023-02-18 20:34:59 +09:00
softsimon
83fc60d6ee Merge pull request #2770 from mempool/nymkappa/bugfix/price-update-invalid-response
Make sure exchange API response format is valid before using it
2023-02-18 17:05:48 +07:00
softsimon
71b373463b Merge branch 'master' into nymkappa/bugfix/price-update-invalid-response 2023-02-18 16:59:11 +07:00
softsimon
3f0bcbe64c Merge pull request #3043 from mempool/nymkappa/bugfix/blocks-api
Fixes blocks api (missing fee range)
2023-02-18 15:26:08 +07:00
wiz
17c16ba4d5 Merge pull request #3075 from mempool/wiz/fix-mempool-build-script-lightning-variables
ops: Fix mempool build script lightning variables
2023-02-18 15:26:29 +09:00
wiz
e7a19dfe2f ops: Fix mempool build script lightning variables 2023-02-18 15:23:02 +09:00
wiz
508f8119d3 Merge pull request #3074 from mempool/ops/fix-lightning-mysql-credentials
ops: Fix lightning mysql credentials usage
2023-02-18 12:39:02 +09:00
wiz
87cda325a5 ops: Fix lightning mysql credentials usage 2023-02-18 12:37:06 +09:00
wiz
8e2ff1242c Merge pull request #3073 from mempool/simon/transifex-migration
Migrated transifex and fetched latest translations
2023-02-18 12:25:36 +09:00
softsimon
2993a286b8 Migrated transifex and fetched latest translations 2023-02-18 09:39:32 +07:00
Mononaut
59f08247ef Reduce data sent to mempool block 7 subscription 2023-02-17 19:11:12 -06:00
Mononaut
77686821ba Raise production memory limits
Increases maxmempool production bitcoin.conf setting to 2GB,
and raises `npm run start-production` nodejs memory limit to 8GB
2023-02-17 10:12:33 -06:00
Antoni Spaanderman
04d8926ef5 fix missing quote 2023-02-17 15:47:32 +01:00
Antoni Spaanderman
565e572b88 Update frontend/src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts
change size per weight graph color

Co-authored-by: nymkappa <9780671+nymkappa@users.noreply.github.com>
2023-02-17 15:45:15 +01:00
Antoni Spaanderman
a897aebbc1 add size per weight graph and ts type for getHistoricalBlockSizesAndWeights 2023-02-16 15:39:09 +01:00
nymkappa
ce012b7d55 Remove config.MEMPOOL.PRICE_FEED_UPDATE_INTERVAL 2023-02-16 09:44:52 +09:00
wiz
f040c85fe9 Merge branch 'master' into mononaut/liquid-address-table 2023-02-16 05:20:41 +09:00
wiz
ae9f98f26c Merge pull request #3059 from hunicus/shrink-og-avatar
Shrink og avators to make group more square
2023-02-16 05:04:37 +09:00
wiz
40decd1556 Merge branch 'master' into shrink-og-avatar 2023-02-16 04:56:04 +09:00
Mononaut
cc5873f995 fix liquid address table overflow 2023-02-15 09:26:12 -06:00
wiz
2845a226f2 Merge pull request #3062 from mempool/nymkappa/bugfix/bisq-no-db-price
Fix database usage when database is disabled
2023-02-15 18:21:26 +09:00
wiz
1eb68962d8 Merge branch 'master' into nymkappa/bugfix/bisq-no-db-price 2023-02-15 18:09:20 +09:00
nymkappa
408b0a23ce Disable fiat display on pools blocks and ln channel component 2023-02-15 18:06:22 +09:00
nymkappa
9734052477 Fix database used when database disabled 2023-02-15 17:45:29 +09:00
nymkappa
5e10b75b87 Fix lightning dashboard btc/fiat UI issue 2023-02-15 17:33:30 +09:00
nymkappa
3beb85dd4a Add footer to all dashboards 2023-02-15 16:41:09 +09:00
hunicus
774f7630ce Remove colon from block overview table 2023-02-15 16:28:29 +09:00
hunicus
215e92d33e Switch audit faq conditions to env.audit
From OFFICIAL_MEMPOOL_SPACE.
2023-02-15 16:28:29 +09:00
Mononaut
c923a4bc22 simplify audit availability logic 2023-02-15 16:28:29 +09:00
Mononaut
2363631326 Add audit / block health config feature flag 2023-02-15 16:28:29 +09:00
nymkappa
28bd813fb8 Show correct currency label in 'Latest transactions' widget 2023-02-15 16:22:06 +09:00
nymkappa
6c0dc34dd6 Run database migration before running any business logic 2023-02-15 16:13:10 +09:00
nymkappa
32aa7aaff1 Remove bisq price fetch and replace it with our in house price index 2023-02-15 16:05:14 +09:00
hunicus
6f650e936d Shrink og avators to make group more square 2023-02-15 01:49:11 -05:00
wiz
b3a5d1a8fc Merge pull request #3058 from hunicus/remove-colon
Remove colon from block overview table
2023-02-15 15:39:05 +09:00
wiz
1b51193cdf Merge pull request #3039 from mempool/mononaut/audit-feature-flag
Add audit / block health config feature flag
2023-02-15 15:36:54 +09:00
hunicus
27a9622875 Switch audit faq conditions to env.audit
From OFFICIAL_MEMPOOL_SPACE.
2023-02-15 01:27:43 -05:00
nymkappa
fddbf51084 Only show supported currencies - Tweak UI 2023-02-15 15:01:07 +09:00
hunicus
9f1a6ad31d Remove colon from block overview table 2023-02-15 00:56:02 -05:00
wiz
fc216819d1 Merge branch 'master' into update_mainnet_tests 2023-02-15 12:15:21 +09:00
wiz
e009c78c3e Merge branch 'master' into mononaut/fiat-selector 2023-02-15 12:10:07 +09:00
Mononaut
b4c30cad5c simplify audit availability logic 2023-02-14 12:32:30 -06:00
Mononaut
8f2255a7a2 Add audit / block health config feature flag 2023-02-14 12:32:30 -06:00
nymkappa
56dad33fce Always return fully extended block in blocks API even if indexing is disabled 2023-02-14 22:14:28 +09:00
softsimon
14a794d9cc Merge pull request #3055 from mempool/simon/correcting-i18n-strings-health
Updating a few i18n strings
2023-02-14 17:25:12 +07:00
softsimon
014113bb33 Updating a few i18n strings 2023-02-14 17:24:48 +07:00
softsimon
bba9cb4a58 Merge pull request #3054 from mempool/simon/extracting-i18n-14-02
Extracting i18n
2023-02-14 17:20:27 +07:00
softsimon
763b59ce9e Extracting i18n 2023-02-14 17:20:01 +07:00
wiz
49754745d8 Merge pull request #3053 from hunicus/info-icon-audit
Add info icon on audit linking to audit faq
2023-02-14 18:42:10 +09:00
wiz
746b44d973 Merge branch 'master' into info-icon-audit 2023-02-14 18:33:55 +09:00
hunicus
b0b7546332 Make audit info icon look better 2023-02-14 04:32:15 -05:00
wiz
bc22098679 Merge branch 'master' into update_mainnet_tests 2023-02-14 17:46:05 +09:00
wiz
2b60ba0f38 Merge pull request #3049 from knorrium/update_staging_hosts
Update staging hosts to fra
2023-02-14 17:42:14 +09:00
wiz
b2329df81a Merge pull request #3047 from hunicus/projected-to-expected
Change 'projected' to 'expected' for block audit label
2023-02-14 17:41:50 +09:00
hunicus
491f2c6280 Add info icon on audit linking to audit faq 2023-02-14 03:40:00 -05:00
wiz
cbbb36b030 Merge branch 'master' into projected-to-expected 2023-02-14 17:34:18 +09:00
softsimon
52824abf00 Merge pull request #3045 from hunicus/health-audit-faq
Add block audit faq
2023-02-14 15:15:11 +07:00
hunicus
7aca045080 Fix error in logic for official_mempool_space 2023-02-14 03:01:37 -05:00
hunicus
33d7a0af60 Edit i18n attributes 2023-02-14 02:07:44 -05:00
softsimon
0e4bebb870 Merge pull request #3016 from Arooba-git/fix-subscription-memory-leak
Fix subscription memory leak
2023-02-14 13:37:00 +07:00
Felipe Knorr Kuhn
b817ee9e5c Update staging hosts to fra 2023-02-13 18:22:53 -08:00
hunicus
d8ebc5a92c Only show audit and health faqs on official 2023-02-13 20:22:51 -05:00
Felipe Knorr Kuhn
635fadd13f Update mainnet tests: increase blocks to 22, update locators and skip a test 2023-02-13 16:58:25 -08:00
Felipe Knorr Kuhn
771825f224 Add offset to blockchain blocks classes and locators 2023-02-13 16:57:39 -08:00
hunicus
38ce8b8dc1 Add note about audit/health availability
Not available on non-official instances.
2023-02-13 19:39:46 -05:00
hunicus
1c7698eb36 Remove repeated line 2023-02-13 18:45:29 -05:00
hunicus
610597b687 Change 'projected' to 'expected' for block audit 2023-02-13 18:34:09 -05:00
hunicus
198f85af2d Add block audit faq 2023-02-13 06:31:25 -05:00
softsimon
2b5442783e Merge branch 'master' into nymkappa/bugfix/blocks-api 2023-02-13 16:37:13 +07:00
softsimon
0148a5f489 Merge pull request #3038 from mempool/mononaut/reset-block-scroll
Fix firefox blockchain scroll reset bug
2023-02-13 16:35:09 +07:00
nymkappa
1fc6e13bf8 Fix node socket parsing with LND 2023-02-13 18:01:15 +09:00
nymkappa
cf720c4bef Fix missing fee range in blocks api when querying non indexed blocks 2023-02-13 15:50:22 +09:00
nymkappa
0176afa394 Add --reindex doc to backend README 2023-02-13 14:58:35 +09:00
Mononaut
c85d8cd29d Fix firefox blockchain scroll reset bug 2023-02-12 21:42:33 -06:00
softsimon
cf0897e27c Merge pull request #3028 from AlexLloyd0/patch-1
Add contributor agreement for AlexLloyd0
2023-02-11 20:36:17 +07:00
wiz
fd16f5c4c3 Merge pull request #3030 from mempool/mononaut/hotfix-gbt-mempool-clone
safer mempool cloning for different GBT algorithms
2023-02-11 11:31:48 +09:00
Mononaut
8f3b8276c5 safer mempool cloning for different GBT algorithms 2023-02-10 07:43:39 -06:00
Alex Lloyd
133044ab8e Create AlexLloyd0.txt
Contributing in https://github.com/mempool/mempool.js/pull/79
2023-02-09 16:27:36 +01:00
Aroooba
d66921938c Unsubscribe subscription in component destructor to avoid memory leak 2023-02-07 05:14:07 +09:00
Aroooba
a67a074eaf Add contributor license agreement 2023-02-07 05:14:00 +09:00
softsimon
241850beca Merge pull request #3010 from mempool/mononaut/cpfp-error-handling
More robust error checking & handling in CPFP repositories
2023-02-04 09:18:10 +07:00
softsimon
8d2856dc84 Merge pull request #2999 from mempool/mononaut/next-block-drift
fix block visualization getting out of sync
2023-02-04 07:39:38 +07:00
wiz
74c5e4af90 Merge branch 'master' into mononaut/next-block-drift 2023-02-04 00:03:16 +09:00
Mononaut
900e66aef7 More robust error checking & handling in CPFP repositories 2023-02-02 17:37:32 -06:00
hunicus
b269e99cfb Update cpfp faq for stored relationships 2023-02-02 14:23:08 -05:00
Mononaut
9f15e9a1d7 Fix blockchain scroll jumping on resize on mobile 2023-02-01 11:52:00 -06:00
Mononaut
368041e7d4 Use selected currency in app-amount component 2023-02-01 10:25:01 -06:00
Mononaut
d06dcdccb4 Display fiat mining graphs in selected currency 2023-02-01 10:25:00 -06:00
Mononaut
c2ff6a996a Multi-currency fiat formatting pipes & components 2023-02-01 10:25:00 -06:00
Mononaut
02655d757e Add currency preference to dashboard 2023-02-01 10:24:57 -06:00
Mononaut
aa8a3e60c2 expose other currencies in charts APIs 2023-02-01 10:23:55 -06:00
wiz
69f5d483ee Merge pull request #2993 from mempool/simon/credit-nepalese-translator
Credit nepalese translator
2023-02-01 16:51:57 +09:00
wiz
c45bc0a9eb Merge pull request #3001 from mempool/hunicus/block-health-faq
Add block health faq
2023-02-01 15:34:46 +09:00
hunicus
3f0cbcab63 Add 'removed' so meaning of r is more clear 2023-01-31 10:50:16 -05:00
hunicus
e3c1343a24 Remove merge conflict cruft 2023-01-31 10:30:16 -05:00
hunicus
7ce67f7ca5 Merge branch 'master' into hunicus/block-health-faq 2023-02-01 00:19:28 +09:00
wiz
b2251d99c9 Merge branch 'master' into mononaut/next-block-drift 2023-01-31 20:18:35 +09:00
wiz
e1c0f0a529 Merge pull request #2908 from mempool/simon/remove-beta
Removing Lightning Beta tag
2023-01-31 20:18:18 +09:00
softsimon
b1addfb45a Moving beta tag to Block Audit 2023-01-31 15:51:15 +07:00
softsimon
b867e9f00f Removing Lightning Beta tag 2023-01-31 15:37:39 +07:00
hunicus
ff3af3a159 Add link to faq next to block health metric 2023-01-31 02:24:08 -05:00
hunicus
573fe3515a Add block health faq 2023-01-31 02:24:08 -05:00
Mononaut
e8c3273541 fix drift in next block viz with mixed template algos 2023-01-30 16:26:37 -06:00
wiz
0293ed2b41 Merge pull request #2996 from mempool/simon/block-health-string-update
Block health string update
2023-01-30 19:17:37 +09:00
softsimon
e858408c4c Block health string update 2023-01-29 23:54:28 +04:00
softsimon
bc1735a5d0 Merge pull request #2992 from mempool/simon/audit-status-tooltip-badges
More prominent audit status badges
2023-01-29 20:27:41 +04:00
softsimon
f9026b8f35 Credit nepalese translator 2023-01-29 16:23:35 +04:00
softsimon
35d873e7a6 More prominent audit status badges 2023-01-29 13:09:11 +04:00
softsimon
150f16ea92 Merge pull request #2987 from mempool/mononaut/fix-liquid-scroll-blocks
Fix blockchain gaps when KEEP_BLOCKS_AMOUNT > INITIAL_BLOCKS_AMOUNT
2023-01-28 17:11:45 +04:00
wiz
922dc5bdbf Merge branch 'master' into mononaut/fix-liquid-scroll-blocks 2023-01-28 21:42:06 +09:00
softsimon
74eb5ea11b Merge pull request #2988 from mempool/mononaut/fix-liquid-block-error
Fix navigation-breaking JS error on liquid block page
2023-01-28 16:19:59 +04:00
Mononaut
05e23b058c Fix navigation-breaking js error on liquid block page 2023-01-27 20:01:31 -06:00
Mononaut
92352e1453 Fix blockchain gaps when KEEP_BLOCKS_AMOUNT > INITIAL_BLOCKS_AMOUNT 2023-01-27 19:52:57 -06:00
softsimon
22cd20bef2 Merge pull request #2973 from mempool/mononaut/back-to-tip
Add button to scroll back to tip of blockchain
2023-01-27 16:25:15 +04:00
softsimon
bb7b0d4595 Merge pull request #2978 from mempool/mononaut/audit-highlighting
Only show block audit highlighting when audit is enabled
2023-01-27 16:20:11 +04:00
softsimon
b82f76f9e2 Merge branch 'master' into mononaut/audit-highlighting 2023-01-27 16:11:03 +04:00
wiz
93bbf61180 Merge pull request #2981 from mempool/simon/audit-available-block-height-fix
Fix for disabling block audit below block height
2023-01-27 19:43:11 +09:00
softsimon
2c2003af5a Fix for disabling block audit below block height 2023-01-27 14:18:50 +04:00
softsimon
dd3d047aa8 Merge pull request #2899 from mempool/mononaut/audit-toggle
toggle to enable/disable block audits
2023-01-27 12:37:33 +04:00
Mononaut
d8737ef6e1 Only show audit-related tooltip info when audit enabled 2023-01-26 19:14:40 -06:00
Mononaut
3c3814910a Only show block audit highlighting when audit enabled 2023-01-26 18:58:41 -06:00
wiz
687451e5ee Merge pull request #2974 from mempool/simon/node-chart-legend-error-fix
Fix node chart legend position error
2023-01-27 04:43:19 +09:00
softsimon
1cf3e1814b Fix node chart legend position error 2023-01-26 23:18:12 +04:00
wiz
f6be04dafd Merge pull request #2951 from mempool/mononaut/fix-mobile-bottom-nav
Fix page elements obscured by bottom navbar on mobile
2023-01-27 04:06:18 +09:00
wiz
2e7a701ca7 Merge branch 'master' into mononaut/fix-mobile-bottom-nav 2023-01-27 03:49:07 +09:00
Mononaut
da51557960 Add button to scroll back to tip of blockchain 2023-01-26 11:55:26 -06:00
Mononaut
714700d8f1 change audit toggle to bootstrap button 2023-01-26 11:10:55 -06:00
Mononaut
d3b59bc459 Remove extra space after block details when audit disabled 2023-01-26 10:50:00 -06:00
Mononaut
2ed49cf944 add toggle to enable/disable block audits 2023-01-26 10:42:38 -06:00
softsimon
94add379d0 Merge pull request #2958 from mempool/mononaut/ln-mobile-css-fixes
Assorted mobile/tablet CSS fixes
2023-01-26 19:54:44 +04:00
softsimon
931abb7d59 Merge pull request #2833 from mempool/hunicus/doc-nav-fix
Fix routing for top-nav doc button
2023-01-26 17:46:08 +04:00
softsimon
f1188efb40 Merge pull request #2857 from Piterden/patch-1
Added syntax highlight
2023-01-26 17:38:38 +04:00
softsimon
5e0ad1da5c Merge pull request #2808 from mempool/hex-rendering
Fix hexadecimal conversion to show leading zeros
2023-01-26 17:36:53 +04:00
softsimon
5dc2d0ba98 Merge pull request #2802 from mempool/nymkappa/bugfix/tx-fetcher-crash
Fix crash when channel short id is not valid
2023-01-26 17:13:56 +04:00
softsimon
4407b42aab Merge branch 'master' into nymkappa/bugfix/tx-fetcher-crash 2023-01-26 17:02:35 +04:00
softsimon
34b90e77c2 Merge pull request #2972 from mempool/simon/adding-nepalese-i18n
i18n: adding nepalese
2023-01-26 15:54:27 +04:00
softsimon
c191bbe5be i18n: adding nepalese 2023-01-26 15:54:07 +04:00
softsimon
6ed4e24f86 Merge pull request #2950 from mempool/mononaut/fix-cpfp-table-drops
Correctly drop legacy cpfp db tables
2023-01-26 13:39:35 +04:00
softsimon
ee0ec8421f Merge pull request #2969 from mempool/simon/transifex-extract-0126
Extracting i18n strings
2023-01-26 03:31:46 +04:00
softsimon
6f3303315b Extracting i18n strings 2023-01-26 03:31:25 +04:00
softsimon
59eb271782 Merge pull request #2824 from mempool/mononaut/more-rbf-info
cache, serve & display more comprehensive RBF info
2023-01-25 17:29:21 +04:00
softsimon
e4fcac93f2 Using truncate component for replaced tx link 2023-01-25 17:24:00 +04:00
softsimon
42b3144a22 Merge pull request #2964 from mempool/mononaut/fit-witnesses
better frontend handling for very large witnesses
2023-01-25 15:30:00 +04:00
softsimon
15c590a63f Merge pull request #2966 from mempool/simon/fixing-absolute-path-import
Removing absolute path import
2023-01-25 01:14:22 +04:00
softsimon
d8e4d7054b Removing absolute path import 2023-01-25 01:13:58 +04:00
softsimon
78e4788ab3 Merge pull request #2960 from mempool/mononaut/fix-mempool-gradients
Fix mempool block gradients
2023-01-24 00:28:55 +04:00
Mononaut
a8b162387b better frontend handling for very large witnesses 2023-01-23 11:37:22 -06:00
softsimon
b401284eb3 Merge pull request #2959 from mempool/mononaut/subtler-marginal-audit-txs
reduce prominence of marginal fee rate audit txs
2023-01-21 17:47:16 +04:00
Mononaut
fc0af50ab5 Fix bugged mempool block gradients 2023-01-19 11:09:03 -06:00
Mononaut
ec6c96c997 make marginal fee audit txs less prominent 2023-01-18 17:10:57 -06:00
Mononaut
402d9496c3 fix misaligned channel id 2023-01-18 16:44:37 -06:00
Mononaut
c3ae46795b fix cramped/overflowing node ranking pages 2023-01-18 16:37:12 -06:00
Mononaut
d89b313db8 fix overflowing node ranking widgets 2023-01-18 16:35:14 -06:00
Mononaut
e842aa814e fix overlapping legend on block fee rates chart 2023-01-18 15:54:56 -06:00
Mononaut
c5f9682b5b fix overflowing tables on ln nodes-per-x chart pages 2023-01-18 15:48:01 -06:00
Mononaut
7da308c1e1 fix RBF detection 2023-01-17 19:25:00 -06:00
Mononaut
d778530620 keep cached RBF info for 24 hours after tx leaves the mempool 2023-01-17 19:24:57 -06:00
Mononaut
0481f57304 cache, serve & display more comprehensive RBF info 2023-01-17 16:09:16 -06:00
softsimon
47d2a6d5c7 Merge pull request #2957 from mempool/mononaut/improve-truncated-links
Support inner links in truncated string component
2023-01-17 03:22:30 +04:00
softsimon
8e954d59db Use OnPush change detection 2023-01-17 03:22:18 +04:00
softsimon
92b0b23765 Merge pull request #2956 from mempool/mononaut/fix-missing-clipboard
Fix missing clipboard buttons
2023-01-17 02:59:19 +04:00
Mononaut
73f2d54a26 support inner links in truncated string component 2023-01-16 16:47:05 -06:00
Mononaut
dfd1de67b2 Fix hidden clipboard toast on transactions page 2023-01-16 16:46:28 -06:00
softsimon
c46464b57b Merge pull request #2955 from mempool/mononaut/fix-missing-cpfp-button
Fix cpfp observable error
2023-01-17 01:45:37 +04:00
Mononaut
ce7e2e8801 fix missing clipboard icons 2023-01-16 15:29:17 -06:00
Mononaut
f81e11e313 Fix cpfp observable error 2023-01-16 12:04:24 -06:00
Mononaut
05d7ca2cd3 Fix lightning page elements obscured by bottom nav 2023-01-16 10:25:48 -06:00
softsimon
9b61e2bcb0 Merge pull request #2914 from mempool/mononaut/string-truncation
dynamic CSS text truncation component
2023-01-16 17:47:40 +04:00
softsimon
0202fb68a0 Merge pull request #2917 from mempool/nymkappa/feature/update-mining-stats
Show `Avg fees per block` instead of `Reward Per Tx`
2023-01-16 17:44:19 +04:00
wiz
b870e7fcaa Merge branch 'master' into mononaut/fix-mobile-bottom-nav 2023-01-16 15:31:38 +09:00
wiz
649dba940d Merge pull request #2943 from mempool/simon/node-as-overflow-fix
Node AS table overflow fix
2023-01-16 15:31:13 +09:00
softsimon
73dd34af6f Merge pull request #2953 from mempool/simon/pulled-from-transifex-0115
Pull from transifex 01-15
2023-01-15 23:11:50 +04:00
softsimon
2284772f6a Pull from transifex 01-15 2023-01-15 23:11:01 +04:00
Mononaut
c69f2f2bc2 tweak latest transactions txid truncation point 2023-01-13 17:03:02 -06:00
Mononaut
eead4d0af8 Correctly drop legacy cpfp db tables 2023-01-13 16:34:04 -06:00
Mononaut
fbd8e0588c Fix page elements obscured by bottom nav bar on mobile 2023-01-13 11:52:36 -06:00
softsimon
43e7328f6f Merge pull request #2887 from mempool/simon/backend-dependencies-29-12
Updating backend dependencies to please dependabot
2023-01-13 13:17:24 +04:00
softsimon
9fa19e7b26 Updating patch releases 2023-01-13 13:16:50 +04:00
softsimon
f685a23ead Merge pull request #2886 from mempool/simon/frontend-packages-29-12
Update frontend packages to please dependabot
2023-01-13 13:13:37 +04:00
softsimon
a2d241c687 Updating packages to please dependabot 2023-01-13 13:12:46 +04:00
softsimon
5bf00b565e Merge pull request #2946 from knorrium/tweak_dependabot_again
Dependabot: Monitor only production dependencies and add frontend Docker dir
2023-01-13 13:07:29 +04:00
Felipe Knorr Kuhn
8c58fbfacc Merge branch 'master' into tweak_dependabot_again 2023-01-12 23:45:01 -08:00
wiz
fd912c5284 Merge pull request #2947 from knorrium/fix_missing_audit_config
Fix missing audit Docker config
2023-01-13 16:43:27 +09:00
Felipe Knorr Kuhn
fd53d7ec30 Fix missing audit Docker config 2023-01-12 23:39:09 -08:00
Felipe Knorr Kuhn
04f00ca521 Merge branch 'master' into simon/backend-dependencies-29-12 2023-01-12 22:27:10 -08:00
Felipe Knorr Kuhn
2b9975ded9 Merge branch 'master' into simon/frontend-packages-29-12 2023-01-12 22:27:00 -08:00
Felipe Knorr Kuhn
a61106377c Merge branch 'master' into hunicus/doc-nav-fix 2023-01-12 22:26:20 -08:00
Felipe Knorr Kuhn
15ea4d3288 Dependabot: Monitor only production dependencies and add frontend Docker dir 2023-01-12 22:15:18 -08:00
softsimon
2187d96c25 Node AS table overflow fix 2023-01-12 20:48:16 +04:00
wiz
d7767a053a Merge branch 'master' into mononaut/string-truncation 2023-01-12 22:47:03 +09:00
wiz
646999eb56 Merge pull request #2922 from knorrium/fix_package_lock
Remove Cypress from the toplevel package-lock.json deps
2023-01-12 22:46:42 +09:00
wiz
fd105c9c99 Merge pull request #2885 from mempool/mononaut/empty-block-info
Add FAQ link to empty blocks
2023-01-12 22:46:12 +09:00
wiz
ab3186a99d Merge branch 'master' into mononaut/empty-block-info 2023-01-12 22:36:50 +09:00
softsimon
c15d5920d8 Merge pull request #2852 from mempool/nymkappa/feature/pools-json-frontend-cleanup
Remove pools.json download from the frontend
2023-01-12 17:36:39 +04:00
softsimon
500f94227a Merge pull request #2884 from mempool/mononaut/scrollable-blockchain
Infinitely scrolling blockchain
2023-01-12 17:35:49 +04:00
wiz
b2b8911030 Merge branch 'master' into mononaut/scrollable-blockchain 2023-01-12 22:01:45 +09:00
wiz
fc56c371ec Merge pull request #2865 from mempool/mononaut/document-backend-config
Add missing vars to docker config & readme
2023-01-12 22:00:17 +09:00
wiz
3b8802d39e Merge branch 'master' into mononaut/document-backend-config 2023-01-12 21:32:28 +09:00
wiz
01a46344b9 Merge pull request #2939 from mempool/mononaut/cpfp-optimizations
CPFP Optimizations
2023-01-12 21:28:55 +09:00
Felipe Knorr Kuhn
7f6d6b86a4 Merge branch 'master' into nymkappa/feature/pools-json-frontend-cleanup 2023-01-11 21:38:33 -08:00
Mononaut
2548d2a5e9 fix frontend js error on unconfirmed non-cpfp transactions 2023-01-11 08:44:11 -06:00
Mononaut
bd30f2eb12 migrate cpfp data from old to new schemas 2023-01-11 08:44:11 -06:00
Mononaut
f0d3bb87c6 handle gaps in indexed CPFP data 2023-01-11 08:44:11 -06:00
Mononaut
8de3fd0988 batch db inserts for cpfp data 2023-01-11 08:44:11 -06:00
Mononaut
fcd047f302 remove redundant fields from CPFP interfaces 2023-01-11 08:44:11 -06:00
Mononaut
01c96f80f9 add cpfp progress marker to avoid reindexing early blocks 2023-01-11 08:44:10 -06:00
Mononaut
b50936f001 compact schemas for cpfp tables 2023-01-11 08:44:10 -06:00
Mononaut
7793eaecbc fix cpfp indexing rate calculation 2023-01-11 08:44:10 -06:00
Mononaut
ee95d033ac remove slow cpfp indexing path 2023-01-11 08:44:10 -06:00
Mononaut
0d921cf7a6 don't rely on blocks table for cpfp indexing progress 2023-01-11 08:44:10 -06:00
wiz
b2dbb09ddb Merge pull request #2941 from mempool/simon/dark-mode-inputs
Dark mode inputs
2023-01-11 19:37:53 +09:00
softsimon
2e5d4a6df9 Dark mode inputs 2023-01-11 13:37:49 +04:00
softsimon
b4bac7ea09 Merge pull request #2940 from knorrium/augment_backend_info
Expose whether Lightning is enabled on the backend
2023-01-11 13:31:52 +04:00
Felipe Knorr Kuhn
5379ec0f30 Expose whether Lightning is enabled on the backend 2023-01-10 21:54:34 -08:00
softsimon
5f87d6c4f1 Merge pull request #2923 from mempool/nymkappa/bugfix/ignore-pools-logo-failure
Ignore pool logo download failure as it's not a critical error
2023-01-11 00:13:08 +04:00
softsimon
87fd6dc256 Merge pull request #2937 from mempool/simon/ln-alias-fallback
Fallback alias name to pubkey
2023-01-10 23:42:34 +04:00
softsimon
8ebe04baa7 Fallback alias name to pubkey
fixes #2935
2023-01-10 21:27:26 +04:00
wiz
549d61b41e Merge pull request #2933 from mempool/nymkappa/feature/add-more-mempool-nodes
Add new mempool lightning nodes and format the array so it's human readable
2023-01-11 02:03:36 +09:00
nymkappa
fcd34eb876 Add new mempool lightning nodes and format the array so it's human readable 2023-01-10 16:13:16 +01:00
Mononaut
649d14011e Remove cpfp_indexing=true from mainnet prod config 2023-01-09 10:36:08 -06:00
Mononaut
f5922b7b71 Swap TRANSACTION_INDEXING for CPFP_INDEXING in docker config 2023-01-09 10:36:08 -06:00
Mononaut
2e45dab4b7 Rename TRANSACTION_INDEXING to CPFP_INDEXING and add to mainnet prod config 2023-01-09 10:36:08 -06:00
Mononaut
7f903b0331 Add missing vars to docker config & readme 2023-01-09 10:36:08 -06:00
softsimon
0d7c52817e Merge pull request #2916 from mempool/nymkappa/bugfix/esplora-coinbase-tx
Fetch coinbase tx with core when esplora fails to do so
2023-01-08 16:53:44 +04:00
nymkappa
73c55c450c Ignore pool logo download failure as it's not a critical error 2023-01-08 11:43:18 +01:00
nymkappa
71d1c3de04 Update bitcoin-api-factory so we can use core only if needed 2023-01-08 11:24:23 +01:00
wiz
e3a82dae83 Merge pull request #2921 from mempool/ops/add-mempool-reset-script
ops: fix wildcards in mempool-reset-all script
2023-01-08 14:22:16 +09:00
Felipe Knorr Kuhn
333593c166 Remove Cypress from the toplevel package-lock.json deps 2023-01-07 20:51:55 -08:00
wiz
5a8d1795a6 ops: fix wildcards in mempool-reset-all script 2023-01-08 13:11:59 +09:00
wiz
0fdb5099e1 Merge pull request #2920 from mempool/ops/add-mempool-reset-script
ops: add mempool-reset-all script with ./reset symlink
2023-01-08 13:09:47 +09:00
wiz
31d732172c Merge pull request #2919 from mempool/ops/add-tk7-nodes-to-bitcoin.conf
ops: add tk7 nodes to prod bitcoin.conf
2023-01-08 13:06:17 +09:00
wiz
33d6892aa4 ops: add mempool-reset-all script with ./reset symlink 2023-01-08 13:05:50 +09:00
wiz
472d00a067 ops: add tk7 nodes to prod bitcoin.conf 2023-01-08 13:01:05 +09:00
wiz
98fbd524fc Merge pull request #2918 from mempool/ops/fix-mysql-credentials-path
ops: fix mysql_credentials path in install/build scripts
2023-01-08 12:59:55 +09:00
wiz
d987669b1e ops: fix mysql_credentials path in install/build scripts 2023-01-08 12:56:27 +09:00
nymkappa
8a3bcd3b28 Show Avg fees per block instead of Reward Per Tx 2023-01-07 20:55:59 +01:00
nymkappa
9f4107319f Fetch coinbase tx with core when esplora fails to do so 2023-01-07 11:17:30 +01:00
Mononaut
6d95cfadac Add FAQ link to empty blocks 2023-01-06 10:14:18 -06:00
Mononaut
bf941b0227 load block/tx pages at correct blockchain scroll position 2023-01-06 10:13:53 -06:00
Mononaut
32bf30872d improve block scrolling & new block animation 2023-01-06 10:13:53 -06:00
Mononaut
7be3ed416e create separate service for short term tx & block caching 2023-01-06 10:13:53 -06:00
Mononaut
befafaa60c add paginated virtual scrolling to blockchain blocks bar 2023-01-06 10:13:53 -06:00
wiz
5905eebaa6 Merge pull request #2910 from knorrium/add_missing_config_overrides
Add the missing block audit variables to the Docker script
2023-01-07 00:47:26 +09:00
wiz
f99aa8f1f0 Merge pull request #2909 from knorrium/fix_docker_gha_again
Fix Docker GHA again. Update deps and increase swap size
2023-01-07 00:46:56 +09:00
Felipe Knorr Kuhn
3e99605870 Add the missing block audit variables to the Docker script 2023-01-05 16:36:38 -08:00
Felipe Knorr Kuhn
05c4440680 Fix Docker GHA again. Update deps and increase swap size 2023-01-05 15:39:33 -08:00
softsimon
238a2e75b1 Merge pull request #2907 from mempool/wiz/enable-lightning-on-prod-frontend
Set `LIGHTNING: true` in prod frontend config
2023-01-06 01:58:09 +04:00
Mononaut
6448ad0ac7 proper truncation in RTL locales 2023-01-05 11:16:14 -06:00
Mononaut
42a39c1f7c migrate old text truncation implementations to new component 2023-01-05 11:01:46 -06:00
Mononaut
44147f5976 Add text truncation component 2023-01-05 11:00:08 -06:00
wiz
667fc4ea18 Set LIGHTNING: true in prod frontend config 2023-01-05 23:35:53 +09:00
softsimon
05a8154db0 Merge pull request #2851 from mempool/nymkappa/bugfix/error-500-blocks-list
Fix error 500 when querying /blocks using `"INDEXING_BLOCKS_AMOUNT": 0`
2023-01-05 01:16:09 +04:00
softsimon
68642aeb5f Merge pull request #2339 from mempool/nymkappa/bugfix/cleanup-logs
Logs cleanup
2023-01-05 01:11:00 +04:00
softsimon
dcc8b81ca6 Merge branch 'master' into nymkappa/bugfix/cleanup-logs 2023-01-05 00:46:21 +04:00
wiz
7e42d2d792 Merge branch 'master' into simon/frontend-packages-29-12 2023-01-04 23:12:53 +09:00
softsimon
2ca12a72f8 Updating dependencies to please dependabot 2022-12-30 16:28:48 +04:00
softsimon
26a92cda45 Merge pull request #2876 from mempool/simon/add-lithuanian
Adding Lithuanian
2022-12-30 15:36:35 +04:00
softsimon
2f7e74a2a6 Update frontend packages to please dependabot 2022-12-29 15:03:52 +04:00
softsimon
a51b4e88d8 Merge pull request #2883 from mempool/nymkappa/bugfix/empty-topology-folder
Don't try to import LN historical stats if no topology folder is set
2022-12-29 12:02:21 +04:00
nymkappa
a975936d3c Don't try to import LN historical stats if no topology folder is set 2022-12-28 12:13:41 +01:00
softsimon
fbbd86d8e0 Updating nginx to support lithuanian 2022-12-26 22:45:25 +04:00
softsimon
8ccfa5b038 Adding Lithuanian 2022-12-26 22:39:42 +04:00
wiz
04006b8c98 Merge pull request #2875 from mempool/simon/go-to-block-optimization
Go to block optimization
2022-12-26 22:51:03 +09:00
wiz
3317f5e6db Merge branch 'master' into simon/go-to-block-optimization 2022-12-26 22:36:12 +09:00
wiz
79e1beb2ca Merge pull request #2874 from mempool/simon/updating-vn-translator
Updating VN translator
2022-12-26 22:35:14 +09:00
wiz
811d0c824f Merge pull request #2867 from mempool/mononaut/block-page-layouts
refactor block page html
2022-12-26 22:31:57 +09:00
wiz
f3adab7d26 Merge branch 'master' into mononaut/block-page-layouts 2022-12-26 22:09:04 +09:00
softsimon
d730366ea7 Go to block optimization 2022-12-26 16:30:10 +04:00
softsimon
7e60526887 Updating VN translator 2022-12-26 16:15:30 +04:00
wiz
ab69c03d8d Merge pull request #2714 from Emzy/ops/cln-bitcoin-link
Add symlink to bitcoin config for user cln in prod install
2022-12-26 21:07:38 +09:00
wiz
efa352821a Merge pull request #2713 from Emzy/ops/cln-crontab
Add comandline options to cln on FreeBSD in prod install
2022-12-26 21:07:21 +09:00
wiz
1dcf6ab599 Merge branch 'master' into mononaut/block-page-layouts 2022-12-26 21:00:19 +09:00
wiz
869d7df844 Merge pull request #2859 from mempool/mononaut/block-health-ux
display block health as badge & add loaders
2022-12-26 20:51:47 +09:00
softsimon
597536efaf Changing Health to text-right in column 2022-12-26 15:31:07 +04:00
wiz
1f5754943a Merge branch 'master' into mononaut/block-health-ux 2022-12-26 20:29:35 +09:00
wiz
e98d03431c Merge pull request #2809 from mempool/mononaut/preview-miner-tag-style
fix unstable miner tag styles in block preview
2022-12-26 20:29:32 +09:00
wiz
39d92f57fa Merge branch 'master' into mononaut/preview-miner-tag-style 2022-12-26 20:17:15 +09:00
wiz
313df79e33 Merge pull request #2804 from mempool/mononaut/zero-value-tx-diagrams
Handle zero-value flow diagram edge case
2022-12-26 20:16:56 +09:00
wiz
13ceb368e2 Merge branch 'master' into mononaut/zero-value-tx-diagrams 2022-12-26 20:06:27 +09:00
wiz
4bcb4e37e8 Merge branch 'master' into nymkappa/bugfix/price-update-invalid-response 2022-12-26 13:13:30 +09:00
wiz
72e6e36cbb Merge pull request #2769 from mempool/simon/pull-from-transifex
Pull from transifex
2022-12-26 13:13:12 +09:00
wiz
729f2aff3e Merge pull request #2771 from mempool/simon/fix-javascript-errors-block-nav
Fix for javascript errors when navigating blocks
2022-12-26 13:12:16 +09:00
wiz
1348e2318d Merge branch 'master' into mononaut/zero-value-tx-diagrams 2022-12-26 12:24:09 +09:00
wiz
731443f670 Merge pull request #2810 from mempool/mononaut/cpfp-indexer-fixes
Fix & reenable cpfp indexer optimized path
2022-12-26 12:21:54 +09:00
wiz
fc2edbf1d1 Merge pull request #2872 from mempool/simon/indexing-spelling-fix 2022-12-26 07:30:16 +09:00
softsimon
8ac514733a Fix for spelling error in indexing status 2022-12-25 23:17:04 +04:00
wiz
e986aaf1d9 Merge branch 'master' into mononaut/cpfp-indexer-fixes 2022-12-25 22:41:39 +09:00
softsimon
606e6df834 Merge pull request #2793 from mempool/mononaut/gbt-thread-optimization
Refactor advanced GBT implementation to minimize inter-thread data transfer
2022-12-23 00:02:56 +04:00
Mononaut
743f2a1cd4 refactor block page html 2022-12-22 07:49:12 -06:00
wiz
5e633344c5 Merge branch 'master' into mononaut/gbt-thread-optimization 2022-12-22 09:20:15 +09:00
Mononaut
c4d5ea971e display block health as badge 2022-12-19 19:02:50 -06:00
wiz
04fec6c894 Merge branch 'master' into mononaut/cpfp-indexer-fixes 2022-12-19 08:23:30 +09:00
Denis Efremov
f4b70fa886 Added license agreement 2022-12-17 22:08:04 +03:00
Denis Efremov
1b9056298a Added syntax highlight 2022-12-17 21:59:39 +03:00
wiz
343a48818b Merge pull request #2656 from knorrium/update_gha
Update Cypress GHA to use newer checkout and setup-node actions
2022-12-17 13:15:26 +09:00
Felipe Knorr Kuhn
028a26f574 Merge branch 'master' into update_gha 2022-12-16 18:46:59 -08:00
wiz
dcd0a53fba Merge pull request #2853 from knorrium/update_cypress_deps 2022-12-17 09:56:51 +09:00
Felipe Knorr Kuhn
ea5ec7bc32 Update Cypress dependencies 2022-12-16 16:32:58 -08:00
nymkappa
908b92af71 Remove pools.json download from the frontend 2022-12-16 18:01:04 +01:00
nymkappa
db4bf52596 Fix error 500 when querying /blocks using "INDEXING_BLOCKS_AMOUNT": 0 2022-12-16 17:43:37 +01:00
wiz
1513c61cd5 Merge branch 'master' into mononaut/cpfp-indexer-fixes 2022-12-13 10:37:35 +09:00
hunicus
713ac64636 Fix routing for top-nav doc button 2022-12-12 01:42:01 -05:00
wiz
f18ea6a7a3 Merge pull request #2825 from knorrium/fix_dependabot_ignore 2022-12-10 14:55:59 +09:00
Felipe Knorr Kuhn
35ee58befb Merge branch 'master' into mononaut/preview-miner-tag-style 2022-12-09 21:03:08 -08:00
Felipe Knorr Kuhn
79f79b0e3b Fix the dependabot ignore settings - RTFM 2022-12-09 20:58:52 -08:00
Felipe Knorr Kuhn
250df0d56c Merge branch 'master' into update_gha 2022-12-07 19:06:48 -08:00
wiz
a210a3faf2 Merge pull request #2801 from knorrium/use_fra_for_bisq 2022-12-08 11:57:12 +09:00
Felipe Knorr Kuhn
b8edcbadf4 Merge branch 'master' into use_fra_for_bisq 2022-12-07 18:12:52 -08:00
Mononaut
fb137e6247 Fix & reenable cpfp indexer optimized path 2022-12-07 18:58:03 -06:00
Mononaut
1a4f699c95 fix unstable miner tag styles in block preview 2022-12-07 15:17:10 -06:00
Mononaut
56b6f79f97 improve thread error handling 2022-12-07 14:52:02 -06:00
Mononaut
4d0637768d Refactor advanced gbt to minimize inter-thread comms 2022-12-07 14:52:01 -06:00
softsimon
07987ff4b6 Merge pull request #2790 from mempool/nymkappa/bugfix/sql-query
Handle ISP with no nodes
2022-12-07 17:40:36 +04:00
softsimon
e7e0a64ca2 Merge pull request #2773 from knorrium/update_dependabot
Update ignore rules and frequency of dependabot updates
2022-12-07 17:23:27 +04:00
softsimon
484c503f6d Merge pull request #2779 from mempool/mononaut/fix-block-summaries-repo
Fix block summaries repo upsert race condition
2022-12-07 17:23:00 +04:00
softsimon
c59ab2a129 Merge pull request #2778 from mempool/mononaut/advanced-gbt-fixes
Fix bugs related to advanced GBT transaction selection
2022-12-07 16:13:16 +04:00
softsimon
8e668be703 Merge pull request #2777 from mempool/mononaut/ln-scan-throttle-config
Make forensics node backend call rate limiting configurable
2022-12-07 15:24:42 +04:00
hunicus
c62059c0f4 Fix hexadecimal conversion to show leading zeros.
Fixes #2805.
2022-12-07 00:06:06 -05:00
Mononaut
28c21b3770 Handle zero-value tx flow diagram edge case 2022-12-06 17:45:04 -06:00
nymkappa
3a7dffbe09 Fix crash when channel short id is not valid 2022-12-06 10:51:01 +01:00
Felipe Knorr Kuhn
7a7172bb64 Change Bisq staging host to fra so tests can pass 2022-12-05 22:00:31 -08:00
Felipe Knorr Kuhn
5658e053d0 Update Cypress GHA to v5 2022-12-05 20:22:53 -08:00
Felipe Knorr Kuhn
d17ccbc5ae Merge branch 'master' into update_gha 2022-12-05 20:15:14 -08:00
nymkappa
685433fe4c Handle ISP with no nodes 2022-12-05 08:11:46 +01:00
Mononaut
79f6ae3b6f fix post-block advanced gbt call 2022-12-03 12:11:21 +09:00
Mononaut
e54e896e56 fix skipped descendant updates on tx inclusion 2022-12-03 12:10:54 +09:00
Mononaut
3126a559a0 Make forensics backend call rate limiting configurable 2022-12-03 11:17:53 +09:00
Mononaut
132e848fdc Fix block summaries repo upsert race condition 2022-12-03 10:49:10 +09:00
softsimon
ade3c09b2a Pull from transifex 2022-12-02 15:40:22 +09:00
Felipe Knorr Kuhn
0d92779971 Update ignore rules and frequency of dependabot updates 2022-12-01 08:14:10 -08:00
nymkappa
efb48271f9 Cleanup logs 2022-12-01 15:52:06 +01:00
softsimon
3572ba837d Fix for javascript errors when navigating blocks 2022-12-01 23:12:02 +09:00
wiz
5ff5275b36 Merge pull request #2768 from mempool/simon/block-component-loader 2022-12-01 21:38:09 +09:00
softsimon
534f2e2781 Set auditDataMissing as soon as we know the block height 2022-12-01 20:23:45 +09:00
nymkappa
a671bfc226 Make sure exchange API response format is valid before using it 2022-12-01 12:05:23 +01:00
softsimon
2cd98c7c04 Add separate config for mainnet, testnet and signet. 2022-12-01 19:48:57 +09:00
softsimon
75459729ad Block page audit fallback 2022-12-01 19:17:59 +09:00
wiz
2b411aad0a Merge pull request #2730 from mempool/nymkappa/bugfix/node-map
Don't select nodes which do not have country info
2022-12-01 17:13:12 +09:00
softsimon
229dd7718a Merge pull request #2764 from mempool/simon/update-backend-packages
Update backend npm modules
2022-12-01 17:09:49 +09:00
wiz
13b52c427c Merge branch 'master' into nymkappa/bugfix/node-map 2022-12-01 16:55:22 +09:00
wiz
fc778e1e25 Merge branch 'master' into simon/update-backend-packages 2022-12-01 16:33:31 +09:00
wiz
f6813f1d1c Merge pull request #2766 from mempool/simon/update-few-more-frontend-deps
Update a few more frontend deps
2022-12-01 16:31:52 +09:00
softsimon
1db11d1d67 Downgrading axios to latest 0.27.x release 2022-12-01 16:15:19 +09:00
wiz
12b130cfdc Merge branch 'master' into simon/update-few-more-frontend-deps 2022-12-01 16:12:15 +09:00
wiz
175bcf7467 Merge branch 'master' into simon/update-backend-packages 2022-12-01 16:01:42 +09:00
wiz
0b54035e80 Merge pull request #2763 from mempool/mononaut/fix-tx-unfurler
Fix broken transaction preview unfurler page
2022-12-01 16:01:08 +09:00
wiz
92807dbdde Merge branch 'master' into mononaut/fix-tx-unfurler 2022-12-01 15:38:10 +09:00
wiz
059d5a94a9 Merge pull request #2712 from Emzy/ops/mysql-fix
Mysql user creation fix in prod install
2022-12-01 15:37:53 +09:00
wiz
501ca1832b Merge pull request #2765 from mempool/simon/synchronous-schema-update
Run schema update synchronously
2022-12-01 15:37:38 +09:00
softsimon
ddc7de0d4a Update a few more frontend deps 2022-12-01 15:36:19 +09:00
softsimon
59f1b031c8 Run schema update synchronously 2022-12-01 14:41:37 +09:00
softsimon
3d45054e38 Update backend npm modules 2022-12-01 14:24:41 +09:00
Mononaut
38c890626b fix CPFP handling in transaction preview 2022-12-01 12:41:04 +09:00
Mononaut
c7d61a3be4 only retry fetch CPFP for unconfirmed txs 2022-12-01 11:34:11 +09:00
wiz
0b37a02435 Merge pull request #2731 from mempool/mononaut/fix-db-migration-versions
save db schema version after each successful migration
2022-11-30 23:19:45 +09:00
Mononaut
03a3320e45 block audit truncation in separate db migrations. bump timeout to 1 hour. 2022-11-30 23:03:51 +09:00
wiz
6d075842f4 Merge pull request #2751 from hunicus/about-widths
Revert community integration icon size increase
2022-11-30 22:58:23 +09:00
Mononaut
ead60aaa21 save db schema version after each successful migration 2022-11-30 22:58:01 +09:00
wiz
0fd672a741 Merge branch 'master' into about-widths 2022-11-30 22:50:50 +09:00
wiz
6741a2b226 Merge pull request #2753 from mempool/simon/remove-console-log
Remove annoying frontend console log
2022-11-30 22:50:23 +09:00
wiz
100c1b292a Merge pull request #2750 from mempool/ops/increase-nginx-max-concurrent-streams
[ops] Increase nginx max concurrent streams
2022-11-30 22:49:48 +09:00
wiz
7e5c0a4c46 Merge pull request #2749 from mempool/simon/mempool-gbt-config
Mempool GBT config
2022-11-30 22:39:00 +09:00
softsimon
8117b9799c Adding production config to enable gbt audit. 2022-11-30 22:14:41 +09:00
softsimon
afc5c6786b Remove annoying frontend console log 2022-11-30 22:07:47 +09:00
wiz
c7cca500fa Merge branch 'master' into simon/mempool-gbt-config 2022-11-30 21:45:25 +09:00
wiz
5f1a71cc9b Merge pull request #2683 from mononaut/ln-forensics-output-attribution
Lightning linked channel forensics
2022-11-30 20:58:25 +09:00
hunicus
734c953714 Revert community integration icon size increase
From #2700. Narrow column instead.
2022-11-30 04:36:55 -05:00
Mononaut
ba10df69b7 improve precision of output attribution for mutual closes 2022-11-30 18:24:00 +09:00
Mononaut
ded11892f5 merge forensics columns into main channels table 2022-11-30 18:24:00 +09:00
Mononaut
609f68eb24 move linked channel scan into forensics task, add backend throttling 2022-11-30 18:24:00 +09:00
Mononaut
5e1f54e862 hide closing balances if channel still open 2022-11-30 18:24:00 +09:00
Mononaut
dc7d5bc94d handle batched channel opens. infer funding balances in both directions. 2022-11-30 18:24:00 +09:00
Mononaut
35ae672177 break long-running forensics tasks 2022-11-30 18:24:00 +09:00
Mononaut
8f0830f6d1 detect channels opened from change outputs 2022-11-30 18:24:00 +09:00
Mononaut
0c96a11150 display channel close forensics results 2022-11-30 18:23:59 +09:00
Mononaut
cf89ded14d detect links between channel close and open txs 2022-11-30 18:23:59 +09:00
wiz
a9e766046f [ops] Increase nginx max concurrent streams 2022-11-30 18:10:47 +09:00
softsimon
030889250f Mempool GBT config 2022-11-30 17:56:53 +09:00
wiz
50993d3b95 Merge pull request #2748 from mempool/simon/upgrade-frontend-packages
Upgrading some more frontend packages
2022-11-30 15:44:47 +09:00
Felipe Knorr Kuhn
33775f32e2 Merge branch 'master' into update_gha 2022-11-29 20:06:44 -08:00
softsimon
95e8789ba9 Upgrading some more frontend packages 2022-11-30 12:56:07 +09:00
wiz
194e4b4c80 Merge pull request #2737 from mempool/mononaut/index-cpfp-info
show CPFP info for mined transactions
2022-11-30 00:05:49 +09:00
wiz
272b6d2437 Disable optimization in CPFP indexing when block summaries indexing is enabled 2022-11-29 23:47:43 +09:00
wiz
89293b4358 Merge branch 'master' into mononaut/index-cpfp-info 2022-11-29 16:41:12 +09:00
wiz
c682a8e3ff Merge pull request #2743 from mempool/nymkappa/bugfix/block-timestamp
Disable ON UPDATE for blocks.blockTimestamp field
2022-11-29 16:39:53 +09:00
wiz
cc30da0b4d Merge branch 'master' into nymkappa/bugfix/block-timestamp 2022-11-29 14:25:45 +09:00
Mononaut
6d6dd09d11 get blocks from esplora for cpfp indexer 2022-11-29 11:42:08 +09:00
Mononaut
f2ad184d1f optimize cpfp indexing 2022-11-29 11:42:08 +09:00
Mononaut
ab5308e1c8 adjust database migration compatibility 2022-11-29 11:42:08 +09:00
Mononaut
205d832d31 return more complete cpfp data for mempool transactions 2022-11-29 11:42:08 +09:00
Mononaut
3e7270d1c5 show cpfp badges on non-mempool tx previews 2022-11-29 11:42:07 +09:00
Mononaut
fa515402bf display indexed cpfp info on non-mempool txs 2022-11-29 11:42:07 +09:00
Mononaut
9b6a012476 calculate & index cpfp packages 2022-11-29 11:42:07 +09:00
wiz
3406758fd2 Merge pull request #2742 from mempool/simon/angular-15
Upgrade to Angular 14
2022-11-28 21:41:58 +09:00
wiz
cc93674591 Merge branch 'master' into simon/angular-15 2022-11-28 19:02:14 +09:00
wiz
c9fc77490f Merge pull request #2744 from mempool/mononaut/liquid-no-extras
don't use block.extras on liquid
2022-11-28 19:01:42 +09:00
Mononaut
ddb4fbac5c don't use block.extras on liquid 2022-11-28 18:37:13 +09:00
nymkappa
3eb4ea9048 Disable ON UPDATE for blocks.blockTimestamp field 2022-11-28 17:33:07 +09:00
softsimon
6d99d0a9ce Removing SSR 2022-11-28 16:53:18 +09:00
softsimon
d43a9cc5ea ngBootstrap UX fix 2022-11-28 16:53:18 +09:00
softsimon
a3a2adac02 Upgrading more libs 2022-11-28 16:53:18 +09:00
softsimon
c8aea18c5e Refactored ngb components 2022-11-28 16:53:17 +09:00
softsimon
c2f45f9bc1 Upgrade to Angular 14 2022-11-28 16:53:17 +09:00
wiz
208946a8bf Merge pull request #2740 from mempool/mononaut/update-proxy-staging
update proxy.conf.staging target
2022-11-28 15:09:22 +09:00
Mononaut
0e8e5dc3a9 update proxy.conf.staging target 2022-11-28 15:01:30 +09:00
wiz
f1122384dd Merge pull request #2739 from mempool/mononaut/fix-liquid-tests
Fix broken tests on liquid
2022-11-28 14:57:45 +09:00
Mononaut
2290f98011 only query blocks_audits on bitcoin networks 2022-11-28 14:26:28 +09:00
wiz
b0e3022ddb Merge pull request #2726 from mempool/mononaut/fix-loading-block-title
Fix incorrect "Genesis" heading while loading the block page
2022-11-27 01:59:40 +09:00
wiz
acd633530f Merge branch 'master' into mononaut/fix-loading-block-title 2022-11-27 01:12:19 +09:00
wiz
f73dc59f49 Merge pull request #2734 from mempool/mononaut/block-page-fixes
Fix bugs on the new block page
2022-11-25 19:57:14 +09:00
Mononaut
e627122239 move block audit endpoint from mining to bitcoin routes 2022-11-25 19:32:50 +09:00
Mononaut
201b32bdcd better fallbacks for missing block summaries data 2022-11-25 10:16:58 +09:00
Mononaut
6ec9c2f816 fix 'unavailable' msg on block page on mobile 2022-11-25 10:16:06 +09:00
Mononaut
de04914851 optimize block audit scores db query 2022-11-24 17:11:45 +09:00
Mononaut
5fc3b8b70c merge block-audit and block pages 2022-11-24 17:10:53 +09:00
Mononaut
276470474d save 'fresh' transactions in block audit repository 2022-11-24 17:10:53 +09:00
nymkappa
1461cb1b17 Don't select nodes which do not have country info 2022-11-24 16:56:13 +09:00
softsimon
c43e4bb71b Merge pull request #2722 from mempool/mononaut/ln-penalty-scan-optimization
Optimize force close penalty scans
2022-11-24 16:06:39 +09:00
wiz
92538b1a48 Merge branch 'master' into mononaut/ln-penalty-scan-optimization 2022-11-24 15:55:33 +09:00
wiz
fa519a0d8f Merge pull request #2728 from mempool/simon/relative-import-fix
Change imports to relative paths
2022-11-24 14:47:29 +09:00
softsimon
da10b36524 Change imports to relative paths 2022-11-24 12:19:19 +09:00
Mononaut
c2b6316c8b Fix "Genesis" header while block page loading 2022-11-23 19:45:13 +09:00
Mononaut
6ada839282 reduce forensics throttle delay from 100ms to 20ms 2022-11-23 19:32:14 +09:00
softsimon
7de068368c Update backend/src/tasks/lightning/forensics.service.ts 2022-11-23 19:24:41 +09:00
wiz
0d797ff7fd Merge branch 'master' into mononaut/ln-penalty-scan-optimization 2022-11-23 19:14:20 +09:00
wiz
fe8cdb5867 Merge pull request #2514 from mempool/junderw/psbt-complete-inputs
Feature: Add endpoint for PSBT nonWitnessUtxo inclusion
2022-11-23 19:13:20 +09:00
softsimon
74dbd6cee1 Add support for application/base64 content type 2022-11-23 18:43:37 +09:00
softsimon
0b7182715f Merge pull request #2723 from mempool/ops/fix-nginx-redirects-liquid
Fix nginx redirects for /liquid etc.
2022-11-23 14:11:37 +09:00
wiz
e08902b85b Fix nginx redirects for /liquid etc. 2022-11-23 14:09:54 +09:00
Mononaut
7d3ec63335 move long-running forensics scans to separate service, throttle backend calls 2022-11-23 10:38:24 +09:00
softsimon
584f443f56 Adding new getTransactionHex api 2022-11-22 21:45:05 +09:00
softsimon
4f3296566a Make api available on all backends 2022-11-22 19:08:09 +09:00
wiz
1309a63430 Merge branch 'master' into junderw/psbt-complete-inputs 2022-11-22 18:57:36 +09:00
wiz
ca33a629cf Merge pull request #2721 from mononaut/fix-squashed-flow-diagram
fix squashed tx flow diagram
2022-11-22 18:57:22 +09:00
wiz
311774103e Merge branch 'master' into fix-squashed-flow-diagram 2022-11-22 18:39:48 +09:00
wiz
e72cdb42e8 Merge pull request #2679 from mononaut/limit-transaction-list-rows
"show more" instead of "show all"  button for transaction inputs/outputs
2022-11-22 18:39:42 +09:00
wiz
6f807b7a2c Merge branch 'master' into limit-transaction-list-rows 2022-11-22 18:24:01 +09:00
wiz
7f83b4be28 Merge pull request #2711 from mempool/nymkappa/bugfix/404-ftx-not-found
Remove FTX from the price feeds
2022-11-22 18:23:49 +09:00
wiz
802d38c363 Merge branch 'master' into nymkappa/bugfix/404-ftx-not-found 2022-11-22 18:18:14 +09:00
wiz
38311e191b Merge pull request #2686 from hunicus/add-advanced-and-2q
Add new faqs (timestamps and fee ranges)
2022-11-22 18:18:06 +09:00
wiz
a1c5769d0d Merge branch 'master' into add-advanced-and-2q 2022-11-22 18:08:50 +09:00
Mononaut
01a727a344 fix stray space, automatically show more outputs if <5 remaining 2022-11-22 18:08:47 +09:00
Mononaut
6cd1f9e870 Fix load more inputs for non-esplora backends 2022-11-22 18:08:01 +09:00
Mononaut
d107286344 Load 1000 more inputs/outputs per click. Fix label i18n. 2022-11-22 18:08:01 +09:00
Mononaut
330ab9682b "show more" instead of "show all" txos in lists 2022-11-22 18:08:01 +09:00
wiz
2b94849881 Merge branch 'master' into junderw/psbt-complete-inputs 2022-11-22 17:59:50 +09:00
wiz
37bf67aa38 Merge pull request #2654 from mempool/nymkappa/bugfix/node-count
Only show active nodes is isp page
2022-11-22 17:42:24 +09:00
wiz
28d5ec34b3 Merge branch 'master' into nymkappa/bugfix/node-count 2022-11-22 17:25:23 +09:00
wiz
eeea6cd9c8 Merge pull request #2708 from mempool/simon/support-maxmind-lite
Support Maxmind Lite
2022-11-22 17:25:09 +09:00
Mononaut
7bafeefa95 fix squashed tx flow diagram 2022-11-22 17:07:03 +09:00
wiz
dc86f41e03 Merge branch 'master' into simon/support-maxmind-lite 2022-11-22 17:02:19 +09:00
wiz
2f7aacaf3b Merge pull request #2716 from mononaut/rtl-flow-diagram
Reverse the direction of the flow diagram for RTL locales
2022-11-22 17:02:09 +09:00
wiz
446d76980a Merge branch 'master' into rtl-flow-diagram 2022-11-22 16:44:29 +09:00
wiz
92dbba64e6 Merge pull request #2706 from mononaut/fix-tx-preview-alignment
Fix tx preview alignment
2022-11-22 16:44:10 +09:00
Mononaut
43bb3aa50b align elements of tx preview 2022-11-22 16:32:09 +09:00
Mononaut
5198cc51dc ellipsis for long op_return messages in tx preview 2022-11-22 16:32:09 +09:00
wiz
56e00d7ea9 Merge pull request #2705 from mononaut/flow-diagram-zero-value
better representation of zero-value outputs in flow diagram
2022-11-22 16:27:43 +09:00
softsimon
5e72ecfdc9 Support Maxmind Lite
fixes #2553
2022-11-22 16:13:27 +09:00
Mononaut
6c1457e257 Reverse tx flow diagram for RTL locales 2022-11-22 16:00:19 +09:00
Mononaut
7e01a22265 fix rendering of many zero value outputs 2022-11-22 15:56:55 +09:00
Mononaut
cb7e25d646 disconnect zero value outputs from flow diagram 2022-11-22 15:56:55 +09:00
wiz
2653e7bf39 Merge pull request #2700 from hunicus/add-nunchuk
Add nunchuk to community integrations
2022-11-22 15:23:20 +09:00
wiz
d8d8a52445 Merge branch 'master' into add-nunchuk 2022-11-22 15:16:27 +09:00
wiz
3e50941351 Merge pull request #2698 from mononaut/tx-selection-threading
enable new tx selection algorithm in own thread with config setting
2022-11-22 15:16:11 +09:00
Mononaut
b9a761fb88 add ADVANCED_TRANSACTION_SELECTION default to config test 2022-11-22 15:10:24 +09:00
Mononaut
b1d490972b refactor async mempool/block update callbacks 2022-11-22 14:43:58 +09:00
Mononaut
786d73625a guard new tx selection algo behind config setting 2022-11-22 14:43:58 +09:00
Mononaut
08ad6a0da3 move new tx selection algorithm into thread worker 2022-11-22 14:43:55 +09:00
wiz
38cb45e026 Merge pull request #2664 from mononaut/block-audit-db-migration
db migration to clear obsolete block audit data
2022-11-22 14:40:33 +09:00
Mononaut
24dba5a2ef Bump db migration query timeout to 900s 2022-11-22 14:25:57 +09:00
Mononaut
a32f960c4a db migration to clear obsolete audit data 2022-11-22 14:07:29 +09:00
wiz
9345b1609f Merge pull request #2649 from mononaut/flow-diagram-spent-connectors
Extend flow diagram to differentiate spent and unspent TXOs
2022-11-22 13:52:22 +09:00
wiz
4abd77fe31 Merge branch 'master' into flow-diagram-spent-connectors 2022-11-22 13:42:33 +09:00
wiz
a9760326f2 Merge pull request #2694 from mononaut/ln-channel-distance
calculate & show avg channel distance on node page
2022-11-22 12:14:04 +09:00
Mononaut
ed184824d4 calculate & show avg channel distance on node page 2022-11-22 11:59:15 +09:00
nymkappa
9d5717f30d Make sure we handle all isp id in the queried list 2022-11-22 11:58:16 +09:00
wiz
547b60fce7 Merge pull request #2689 from mononaut/fix-block-viz-resize
resize block visualization instantly on window zoom and resize
2022-11-22 11:51:51 +09:00
wiz
b7bf2ec666 Merge branch 'master' into fix-block-viz-resize 2022-11-22 11:40:53 +09:00
wiz
9b5d8fdad6 Merge pull request #2687 from hunicus/add-big-disclaimer
Add general-purpose disclaimer to top of faq
2022-11-22 11:40:47 +09:00
wiz
782d4b391b Merge branch 'master' into add-big-disclaimer 2022-11-22 11:29:38 +09:00
wiz
19e778c4b5 Merge pull request #2684 from hunicus/fix-python-tab
Only show python example tab on ws tab
2022-11-22 11:29:29 +09:00
wiz
4bc5de306a Merge branch 'master' into fix-python-tab 2022-11-22 11:14:45 +09:00
wiz
47c61842f5 Merge pull request #2681 from mempool/nymkappa/feature/rename-mining-pool
Add support for renaming a mining pool without changing regex or address
2022-11-22 11:10:52 +09:00
nymkappa
672001af72 Update mining pool color 2022-11-22 11:03:28 +09:00
wiz
5da8f2b6dc Merge branch 'master' into nymkappa/feature/rename-mining-pool 2022-11-22 10:54:20 +09:00
Mononaut
9df0e602d3 longer input/output connectors on flow diagram & new nav logic 2022-11-22 10:40:41 +09:00
wiz
8a367fc6fd Merge pull request #2675 from knorrium/update_docker_action
Update Docker GHA dependencies
2022-11-22 10:38:59 +09:00
wiz
a33562a47a Merge pull request #2678 from mononaut/fix-tx-navigation-bug
fix error when navigating to huge transactions
2022-11-22 10:38:42 +09:00
wiz
fc7024351e Merge branch 'master' into fix-tx-navigation-bug 2022-11-22 10:28:54 +09:00
wiz
d3d4f93f85 Merge branch 'master' into update_docker_action 2022-11-22 10:26:47 +09:00
Mononaut
14ec427f5e Mouse events for flow diagram endcaps & connectors 2022-11-22 10:11:55 +09:00
Mononaut
2c1f38aa9d Fix clash w/ liquid unblinding and vin/vout syntax 2022-11-22 10:11:54 +09:00
Mononaut
eb2abefabc Add shapes to flow diagram to indicate spent txos 2022-11-22 10:11:54 +09:00
wiz
90912af62d Merge pull request #2671 from mononaut/fix-block-summary-vsize
Fix rounded vsize in block summaries
2022-11-21 21:29:13 +09:00
wiz
adcc1ba4f0 Merge branch 'master' into fix-block-summary-vsize 2022-11-21 21:03:45 +09:00
wiz
a0b6719105 Merge pull request #2670 from mononaut/expose-node-tlv-data
Show node tlv data & liquidity ads
2022-11-21 21:03:29 +09:00
Mononaut
c2ab0bc715 Parse & display liquidity ads on node page 2022-11-21 20:27:05 +09:00
Mononaut
010e9f2bb1 Display extension TLV data on node page 2022-11-21 20:27:05 +09:00
Mononaut
373e02a5b0 Store & expose node extension TLV data in backend 2022-11-21 20:27:03 +09:00
wiz
d36b239dbe Merge pull request #2667 from mononaut/scan-for-penalty-txs
Rescan unresolved LN channel force closes
2022-11-21 20:19:05 +09:00
wiz
eb03fc18ad Merge branch 'master' into scan-for-penalty-txs 2022-11-21 19:19:22 +09:00
wiz
a7c511fc1c Merge pull request #2663 from mononaut/block-audit-tweaks
Block audit tweaks
2022-11-21 19:17:54 +09:00
Mononaut
5b6f713ef3 Fetch missing block audit scores 2022-11-21 18:45:34 +09:00
Mononaut
1b3bc0ef4e Handle block height or hash in audit page 2022-11-21 18:43:52 +09:00
Mononaut
2022d3f6d5 Block audit UX adjustments 2022-11-21 18:43:52 +09:00
Mononaut
695d81a3f6 Fix block audit skeleton loaders 2022-11-21 18:43:52 +09:00
Mononaut
29f7c89c53 Tweak block audit algo to reduce false positives 2022-11-21 18:43:52 +09:00
wiz
7232c4755d Merge branch 'master' into nymkappa/bugfix/node-count 2022-11-21 18:19:53 +09:00
wiz
88fa6bffb5 Merge pull request #2617 from knorrium/frontend_runtime_config
Initial frontend runtime config support
2022-11-21 18:04:03 +09:00
wiz
235ac204b4 Merge branch 'master' into frontend_runtime_config 2022-11-21 17:46:02 +09:00
wiz
e051758ca7 Merge pull request #2564 from mempool/junderw/search-blocktime
[Feature] Search for block by timestamp
2022-11-21 17:45:02 +09:00
wiz
be3acf8694 Merge branch 'master' into junderw/psbt-complete-inputs 2022-11-21 17:34:26 +09:00
wiz
2020cd74e9 Merge pull request #2378 from mempool/simon/disable-mempool-config
Disable mempool config
2022-11-21 17:31:09 +09:00
softsimon
67cbbda04b Set mempool enabled to false in production. 2022-11-21 17:26:56 +09:00
wiz
5957b71774 Merge branch 'master' into simon/disable-mempool-config 2022-11-21 17:23:34 +09:00
wiz
b0198de7e8 Merge pull request #2337 from mempool/simon/updated-mempool-debug-output
Updated mempool debug log
2022-11-21 17:21:52 +09:00
wiz
8cc252642b Merge branch 'master' into simon/updated-mempool-debug-output 2022-11-21 17:12:07 +09:00
wiz
5e5daca600 Merge pull request #2547 from mempool/simon/search-bar-click-outside
Click to close search dropdown
2022-11-21 16:58:17 +09:00
wiz
cfb4fdb7a4 Merge branch 'master' into simon/search-bar-click-outside 2022-11-21 16:47:21 +09:00
Stephan Oeste
5d95eb475e Add symlink to bitcoin config for user cln in prod install 2022-11-20 14:55:00 +01:00
Stephan Oeste
c57542c8ae Add comandline options to cln on FreeBSD in pro install 2022-11-20 14:39:17 +01:00
Stephan Oeste
dbc2d752bc Mysql user creation fix in prod install 2022-11-20 12:48:55 +01:00
nymkappa
7c7273b696 Remove FTX from the price feeds 2022-11-20 19:23:51 +09:00
softsimon
34500f7d47 Merge pull request #2703 from mempool/simon/local-esplora-proxy
Proxy config for running esplora locally
2022-11-20 15:09:30 +09:00
softsimon
f18226bd01 Proxy config for running esplora locally 2022-11-20 12:35:32 +09:00
Mononaut
c1e741a025 Rescan unresolved LN channel force closes 2022-11-19 17:30:56 +09:00
hunicus
2a6ac4a5da Adjust image sizes to avoid dangling image 2022-11-16 23:53:01 -05:00
hunicus
34d5a2f9c0 Add nunchuk to community integrations 2022-11-16 23:39:58 -05:00
Mononaut
3654178c83 resize block visualization instantly on zoom 2022-11-14 12:11:21 -06:00
hunicus
5df54b6b3e Add general-purpose disclaimer to top of faq 2022-11-14 00:57:39 -05:00
hunicus
8bd3e14652 Add faq: why block fee ranges don't match tx fees 2022-11-13 22:38:36 -05:00
hunicus
ddcd387848 Add faq: why timestamps don't always increase 2022-11-13 22:36:46 -05:00
hunicus
ef27aca6e4 Update faq: what is full mempool 2022-11-13 22:34:15 -05:00
hunicus
997e8a4624 Create "advanced" + "self-hosted" faq categories
And re-arrange questions: move all old "advanced"
questions to "self-hosted", and move some "basic"
questions to "advanced".
2022-11-13 22:30:05 -05:00
hunicus
d65f267122 Only show python example tab on ws tab 2022-11-11 18:12:35 -05:00
nymkappa
d32d97fbaf Add support for renaming a mining pool without changing regex or addresses 2022-11-09 06:43:46 +01:00
Mononaut
65bfe8163c fix error when navigating to huge transactions 2022-11-07 20:05:33 -06:00
Felipe Knorr Kuhn
b069196c27 Merge branch 'master' into junderw/psbt-complete-inputs 2022-11-07 07:21:24 -08:00
Felipe Knorr Kuhn
38255a5452 Merge branch 'master' into simon/search-bar-click-outside 2022-11-07 07:21:19 -08:00
Felipe Knorr Kuhn
48e2df3f7a Merge branch 'master' into junderw/search-blocktime 2022-11-07 07:21:14 -08:00
Felipe Knorr Kuhn
4fc355a05d Merge branch 'master' into frontend_runtime_config 2022-11-07 07:11:45 -08:00
Felipe Knorr Kuhn
7c6349f2ba Merge branch 'master' into update_docker_action 2022-11-07 07:11:26 -08:00
Felipe Knorr Kuhn
899d6558ec Merge branch 'master' into fix-block-summary-vsize 2022-11-07 07:11:22 -08:00
Felipe Knorr Kuhn
dd5a1847d0 Merge branch 'master' into update_gha 2022-11-07 07:11:00 -08:00
softsimon
02820b0e68 Merge pull request #2674 from knorrium/update_staging_hosts
Update staging hosts for testing
2022-11-07 18:37:11 +04:00
wiz
4bb6a3800c Merge pull request #2676 from mempool/ops/fix-nvidia-package-name
[ops] Fix nvidia-driver package name
2022-11-07 15:45:25 +09:00
wiz
b6d4e6b993 [ops] Fix nvidia-driver package name 2022-11-07 15:44:25 +09:00
Felipe Knorr Kuhn
de46f7c10e Update Docker GHA dependencies 2022-11-06 21:06:16 -08:00
Felipe Knorr Kuhn
69a36e17a8 Update staging hosts for testing 2022-11-06 20:30:38 -08:00
Felipe Knorr Kuhn
06eeaf68e8 Merge branch 'master' into frontend_runtime_config 2022-11-06 18:18:11 -08:00
softsimon
f789334d47 Merge pull request #2673 from mempool/simon/use-relative-paths-import
Use relative import paths in the frontend
2022-11-07 04:30:42 +04:00
softsimon
387a51d87e Use relative import paths in the frontend 2022-11-07 04:28:23 +04:00
wiz
64426fa9c9 Merge pull request #2646 from Emzy/ops/zero-base-fee
Configure zero base fee as default for core lighting
2022-11-06 20:36:45 +09:00
Mononaut
9c6799e193 Fix rounded vsize in block summaries 2022-11-04 10:37:14 -06:00
wiz
8d6a0f867b Merge branch 'master' into frontend_runtime_config 2022-10-31 15:08:18 +09:00
wiz
057456504c Merge pull request #2662 from mononaut/block-audit-feature
Block audit feature
2022-10-31 15:07:35 +09:00
wiz
45273f9309 Merge branch 'master' into block-audit-feature 2022-10-31 14:46:05 +09:00
wiz
2cbb7231a7 Merge pull request #2621 from mononaut/projected-block-templates
WIP: new transaction selection algorithm & scoring for block audits
2022-10-31 14:44:55 +09:00
wiz
bee573fdb8 Merge branch 'master' into projected-block-templates 2022-10-31 13:04:25 +09:00
wiz
12bd89dade Merge pull request #2659 from hunicus/add-electrum-docs
Add electrum rpc doc tab for official instance
2022-10-31 13:04:02 +09:00
wiz
e24fd8e275 Merge branch 'master' into add-electrum-docs 2022-10-31 11:35:42 +09:00
wiz
8c4a8f3a71 Merge pull request #2652 from mononaut/fix-unfurler-stray-slashes
tolerate trailing slash in unfurler requests
2022-10-31 11:15:57 +09:00
hunicus
38ec5ef957 Position docs footer on bottom
For short docs pages (like electrum rpc).
2022-10-30 13:08:26 -04:00
hunicus
dbb6f267f4 Add electrum rpc port numbers and update note 2022-10-30 12:39:20 -04:00
wiz
23a4ab461e Merge branch 'master' into fix-unfurler-stray-slashes 2022-10-30 02:05:17 +09:00
Mononaut
b657eb4e7d Add match rate to blocks list page 2022-10-28 19:02:36 -06:00
Mononaut
f3eb403c17 Add match rate to block page 2022-10-28 18:49:29 -06:00
Mononaut
b6343ddc2d Clean up block audit page & tweak color scheme 2022-10-28 18:49:28 -06:00
Mononaut
d86f045150 differentiate censored/missing txs in block audit 2022-10-28 18:49:28 -06:00
Mononaut
e2e50ac6bf Fix block audit mobile toggle buttons 2022-10-28 18:48:47 -06:00
Mononaut
6d28259515 disable block audits unless indexing is enabled 2022-10-28 15:16:03 -06:00
Mononaut
968d7b827b Optimize makeBlockTemplates 2022-10-27 10:25:16 -06:00
Mononaut
832ccdac46 improve audit analysis and scoring 2022-10-27 10:25:15 -06:00
Mononaut
39afa4cda1 Fix errors in block audit tx selection algorithm 2022-10-27 10:25:15 -06:00
Mononaut
702ff2796a New projected block transaction selection algo 2022-10-27 10:25:15 -06:00
hunicus
cb576ce601 Add electrum rpc doc tab for official instance 2022-10-26 12:33:13 -04:00
softsimon
e14fff45d6 Merge pull request #2655 from mononaut/fix-tv-ltr
Fix mirrored blocks in TV view in LTR time mode
2022-10-23 23:05:33 +04:00
Felipe Knorr Kuhn
a28544d046 Update Cypress GHA to use newer checkout and setup-node actions 2022-10-22 13:20:16 -07:00
Felipe Knorr Kuhn
847aa1ba13 Merge branch 'master' into frontend_runtime_config 2022-10-22 10:28:35 -07:00
Mononaut
58371bbd7d Fix mirrored blocks in TV view in LTR time mode 2022-10-22 16:16:32 +00:00
softsimon
f3faf99c15 Merge pull request #2651 from mononaut/fix-close-channel-id
Fix lightning channel close classification logic
2022-10-21 23:58:00 +04:00
softsimon
a5c4f8e2f3 Adding migration to force rescan of closed channels 2022-10-21 23:42:37 +04:00
nymkappa
27c39ef557 Only show active nodes is isp page 2022-10-21 20:09:20 +02:00
softsimon
9e0a91efd2 Updating Docker README 2022-10-21 21:08:48 +04:00
softsimon
601a559784 Adding MEMPOOL.ENABLED config to Docker 2022-10-21 21:08:48 +04:00
softsimon
0e0ac363cf Updating unit test 2022-10-21 21:08:48 +04:00
softsimon
b31642e554 Disable mempool config
fixes #2090
2022-10-21 21:08:48 +04:00
softsimon
5f87cc6d37 Merge pull request #2650 from mononaut/fix-negative-taproot-savings
Fix negative potential taproot savings handling
2022-10-21 18:40:47 +04:00
softsimon
b89d526379 Update frontend/src/app/components/tx-features/tx-features.component.html 2022-10-21 18:37:31 +04:00
softsimon
67429d83b5 Merge pull request #2645 from mempool/simon/transifex-pull
Pulled from transifex
2022-10-21 18:22:18 +04:00
softsimon
5c6060780b Merge pull request #2627 from mononaut/fix-coinbase-flow-nav
Fix flow diagram navigation for coinbases & peg-ins
2022-10-21 16:56:04 +04:00
Mononaut
06a89bc1a7 tolerate extra '/'s in unfurler requests 2022-10-20 21:13:13 +00:00
Mononaut
022785a555 Fix ln close classification logic 2022-10-20 17:59:36 +00:00
softsimon
69baf97445 Pulled from transifex 2022-10-20 14:42:12 +04:00
Mononaut
04fa08085d Fix negative potential taproot savings tooltip 2022-10-19 21:26:35 +00:00
softsimon
9bb897307f Update README.md 2022-10-18 03:00:17 +04:00
Stephan Oeste
f3c947685a Configure zero base fee as default for core lighting 2022-10-17 18:53:46 +02:00
softsimon
dffe9fa4e6 Merge pull request #2587 from mempool/simon/network-match-ending-fix
Handle network url ending matching better
2022-10-17 12:55:29 +04:00
Mononaut
20bef70390 Fix flow diagram navigation for coinbases & pegins 2022-10-16 22:44:48 +00:00
Mononaut
ae9439a991 vin/vout selection syntax via url fragments 2022-10-16 22:42:38 +00:00
Felipe Knorr Kuhn
9964f1ab14 Stop using the cache busting config loader 2022-10-16 15:19:44 -07:00
Felipe Knorr Kuhn
f27abb1421 Change ownership of /var/www/mempool to the Docker user 2022-10-16 14:41:39 -07:00
wiz
ee6766e34c Merge pull request #2599 from mempool/nymkappa/bugfix/log-counter
Increment log counter in `Building partial channels` log
2022-10-17 04:35:09 +09:00
wiz
76764936f9 Merge branch 'master' into nymkappa/bugfix/log-counter 2022-10-17 04:25:27 +09:00
wiz
596c7afecb Merge pull request #2639 from mempool/simon/instant-search-results
Handle instant block, txid and address search
2022-10-17 04:22:10 +09:00
wiz
ffad5e2a30 Merge branch 'master' into simon/instant-search-results 2022-10-17 03:48:35 +09:00
wiz
8da476c48c Merge pull request #2626 from mononaut/save-flow-preference
Save flow diagram display preference to localStorage
2022-10-17 03:47:07 +09:00
Felipe Knorr Kuhn
5bfc8a9d58 Use a single command to find the config path 2022-10-16 08:40:22 -07:00
Felipe Knorr Kuhn
670f85b1f5 Copy the sample config before building the frontend 2022-10-16 08:39:44 -07:00
softsimon
82a4212b72 Click to close search dropdown 2022-10-16 12:54:29 +04:00
Felipe Knorr Kuhn
cfa8a9a7d6 Update the Docker frontend startup script to read and replace runtime config values 2022-10-15 19:46:30 -07:00
Felipe Knorr Kuhn
b77fe0dca2 Change template keys in generate-config script 2022-10-15 19:45:15 -07:00
Felipe Knorr Kuhn
81d35d9401 Update nginx cache settings for the frontend config files 2022-10-15 19:44:34 -07:00
wiz
2742acf6ee Merge branch 'master' into save-flow-preference 2022-10-16 08:11:03 +09:00
softsimon
8a2b144e29 Altering bc1 regex matching to correctly require 39 characters 2022-10-16 02:46:04 +04:00
softsimon
3e66e4d6db Handle instant block, txid and address search
fixes #2619
2022-10-16 02:46:04 +04:00
wiz
61e8892204 Merge pull request #2629 from mononaut/fix-preview-flow-highlight-bug
Fix transaction preview flow diagram highlight bug
2022-10-16 07:38:49 +09:00
wiz
543c4feaf9 Merge branch 'master' into fix-preview-flow-highlight-bug 2022-10-16 07:29:50 +09:00
wiz
992ea6da3c Merge pull request #2631 from mononaut/subnet-navigation
Maintain routing when switching network
2022-10-16 07:29:39 +09:00
wiz
f3cfc7f80b Merge branch 'master' into subnet-navigation 2022-10-16 07:13:24 +09:00
wiz
4c170b08f4 Merge pull request #2642 from mononaut/ln-fee-distribution
Add incoming/outgoing fee histogram to node page
2022-10-16 07:12:45 +09:00
wiz
d3b3c7df21 Merge branch 'master' into subnet-navigation 2022-10-16 06:55:04 +09:00
Mononaut
893aa03622 Add fee histogram chart to the node page 2022-10-15 01:19:45 +00:00
Mononaut
f4df51dd21 API method for node fee histogram data 2022-10-15 00:57:34 +00:00
wiz
3e41e512ad Merge branch 'master' into frontend_runtime_config 2022-10-15 04:28:56 +09:00
softsimon
7bdde13b40 Merge pull request #2625 from mononaut/fix-conf-badge-alignment
Fix tx confirmation badge alignment regression
2022-10-13 18:31:22 +04:00
softsimon
7ec0e3ac86 Merge pull request #2636 from mempool/ln-i18n-take-5
More Lightning i18n fixes (4)
2022-10-13 18:13:21 +04:00
softsimon
02340d57dd More Lightning i18n fixes (4) 2022-10-13 18:12:29 +04:00
softsimon
1e6ea0b5f5 Merge pull request #2635 from mempool/simon/ln-i18n-take-4
Lightning pie chart i18n tooltip fix
2022-10-13 18:10:17 +04:00
softsimon
5d9bcce5cd Lightning pie chart i18n tooltip fix 2022-10-13 18:09:56 +04:00
softsimon
39dd8ebe07 Merge pull request #2634 from mempool/simon/lightning-i18n-3rd-fix
More Lightning i18n fixes (2)
2022-10-13 17:51:51 +04:00
softsimon
e5ec152002 More Lightning i18n fixes (2) 2022-10-13 17:51:28 +04:00
softsimon
e77f48abd4 Merge pull request #2633 from mempool/simon/more-i18n-fixes
More Lightning i18n fixes
2022-10-13 17:40:34 +04:00
softsimon
3b692d05bc More Lightning i18n fixes 2022-10-13 17:40:13 +04:00
softsimon
6895eb0b05 Merge pull request #2632 from mempool/simon/i18n-corrections
Correcting i18n strings related to Lightning explorer
2022-10-13 17:15:40 +04:00
softsimon
61333b2286 Correcting i18n strings related to Lightning explorer 2022-10-13 17:15:17 +04:00
softsimon
1240a3f115 Merge pull request #2614 from mempool/simon/lightning-i18n
Correcting all Lightning explorer i18n and extract
2022-10-13 14:42:22 +04:00
Mononaut
f70ff9b402 Maintain page when switching networks 2022-10-12 23:04:47 +00:00
Mononaut
5cdb0c5ce9 Fix tx preview flow diagram highlight bug 2022-10-11 23:06:46 +00:00
Mononaut
3971814710 Save flow diagram preference to localStorage 2022-10-11 17:02:35 +00:00
Mononaut
c5d4e86e0e Fix tx confirmation badge alignment regression 2022-10-11 16:17:17 +00:00
Felipe Knorr Kuhn
ad7e7795f9 Update index files to read the new config file 2022-10-08 14:58:09 -07:00
Felipe Knorr Kuhn
71e00f66c9 Update config generator to output the template and new config file 2022-10-08 14:51:32 -07:00
Felipe Knorr Kuhn
5d21a61840 Serve the frontend config from resources, stop bundling the generated file 2022-10-08 13:48:29 -07:00
Felipe Knorr Kuhn
8ef88e9f39 Ignore the new config files 2022-10-08 13:47:33 -07:00
wiz
ddb1e97ce0 Merge pull request #2612 from mempool/simon/show-ln-capacity-on-mobile
Display LN capacity on mobile
2022-10-09 02:47:05 +09:00
wiz
b638719e72 Merge branch 'master' into simon/show-ln-capacity-on-mobile 2022-10-09 02:38:26 +09:00
wiz
4fee471992 Merge pull request #2615 from mempool/simon/lightning-inverting-avg-toggles
Inverting med/avg toggle
2022-10-09 02:38:21 +09:00
wiz
5365f61121 Merge branch 'master' into simon/lightning-inverting-avg-toggles 2022-10-09 02:30:45 +09:00
wiz
4924c521a4 Merge pull request #2616 from mononaut/detailed-unfurler-logs
More detailed unfurler error logs
2022-10-09 02:30:38 +09:00
wiz
43d56a2121 Merge branch 'master' into detailed-unfurler-logs 2022-10-09 02:23:06 +09:00
wiz
bede502f2d Merge pull request #2601 from mononaut/fix-tx-marker
Fix transaction marker boundary condition
2022-10-09 02:23:01 +09:00
wiz
6005bbea49 Merge branch 'master' into fix-tx-marker 2022-10-09 02:05:55 +09:00
wiz
3653e75810 Merge pull request #2603 from mononaut/rtl-language-time-default
Reverse time by default for RTL languages
2022-10-09 02:05:49 +09:00
wiz
66c99e2f3b Merge branch 'master' into rtl-language-time-default 2022-10-09 01:56:32 +09:00
wiz
9876805bc3 Merge pull request #2606 from mononaut/flow-toggle-labels
Shorten transaction diagram toggle labels
2022-10-09 01:56:24 +09:00
wiz
d08e5e293c Merge branch 'master' into flow-toggle-labels 2022-10-09 01:46:53 +09:00
wiz
6635238934 Merge pull request #2607 from mononaut/fix-conf-badge-css
Fix transaction confirmation badge layout bug
2022-10-09 01:46:47 +09:00
wiz
001f7a4fd7 Merge branch 'master' into fix-conf-badge-css 2022-10-09 01:37:25 +09:00
wiz
3ba4fd454e Merge pull request #2611 from mempool/simon/time-toggle-ux-size
Updating time toggle size
2022-10-09 01:37:18 +09:00
wiz
52b2ee4f35 Merge branch 'master' into simon/time-toggle-ux-size 2022-10-09 01:29:29 +09:00
wiz
bfac856eb2 Merge pull request #2605 from mononaut/flow-diagram-interactivity
Transaction diagram interactivity & navigation
2022-10-09 01:28:39 +09:00
wiz
42dec95738 Merge branch 'master' into flow-diagram-interactivity 2022-10-09 01:04:00 +09:00
wiz
6eacbf80d8 Merge pull request #2602 from mononaut/fix-reverse-time-scrollability
Enable block scrolling in LTR time mode
2022-10-09 01:02:58 +09:00
Mononaut
be7e2c2c80 Add requested url to unfurler error logs 2022-10-07 16:50:26 +00:00
softsimon
e428565d50 Inverting med/avg toggle 2022-10-07 01:20:32 +04:00
softsimon
50cc424679 Correcting all Lightning explorer i18n and extract
fixes  #2533
2022-10-07 00:54:33 +04:00
softsimon
d288da1e18 Display LN capacity on mobile
fixes #2610
2022-10-06 21:12:23 +04:00
softsimon
0c1993e264 Updating time toggle size 2022-10-06 20:33:54 +04:00
Mononaut
75fd036ec2 Highlight url input/output in tx diagram & list 2022-10-04 23:49:26 +00:00
Mononaut
626a1a2977 Navigate to vin/vout page on diagram click 2022-10-04 23:36:36 +00:00
Mononaut
d1cedbb981 Fix tx confirmation badge layout bug 2022-10-04 22:09:32 +00:00
Mononaut
0df796f873 Shorten tx diagram toggle labels 2022-10-04 21:14:54 +00:00
Mononaut
c10ace8fb5 Scroll to input/output when clicked in tx diagram 2022-10-04 21:04:52 +00:00
Mononaut
5d3ee50bca Reverse time by default for RTL languages 2022-10-03 22:07:59 +00:00
Mononaut
be2b72eea7 Enable block scrolling in ltr time mode 2022-10-03 21:44:55 +00:00
Mononaut
1af38456f3 Fix tx marker boundary condition 2022-10-03 16:57:15 +00:00
nymkappa
0a4c1c24af Fixes #2592 2022-09-30 19:10:11 +02:00
wiz
54c44565fb Merge pull request #2596 from mempool/simon/flip-icon-change
Updating flip icon
2022-09-30 19:09:10 +09:00
softsimon
b86d8bd836 Updating flip icon 2022-09-30 13:57:34 +04:00
wiz
5610afde36 Merge pull request #2589 from mononaut/node-group-preview
Add preview for lightning group pages
2022-09-30 18:51:58 +09:00
wiz
d88e12fc6e Merge pull request #2590 from mononaut/pool-preview-logo
Move logo to LHS on mining pool preview
2022-09-30 18:49:07 +09:00
wiz
95156eebd1 Merge pull request #2591 from mononaut/collapse-flow-param
Toggle option for transaction flow diagram with query param
2022-09-30 18:44:16 +09:00
wiz
8f0a9a9dd2 Merge pull request #2595 from mempool/simon/add-class-js-error-fix
Fix for add class js error
2022-09-30 18:42:23 +09:00
wiz
42189ec1a5 Merge pull request #2593 from mempool/simon/revert-btn-info-color
Revert "New button light color"
2022-09-30 18:33:13 +09:00
softsimon
f2889fc05c Fix for add class js error 2022-09-30 11:14:07 +04:00
wiz
6e235924d8 Merge pull request #2594 from mononaut/turn-back-time
Add a time turner toggle
2022-09-30 15:47:46 +09:00
Mononaut
15caef10d6 Fix liquid block divider position 2022-09-30 02:01:59 +00:00
Mononaut
21db64b2a5 Animate mempool block viz reversal 2022-09-30 00:54:30 +00:00
Mononaut
d07bf30737 Reversible blockchain components 2022-09-30 00:54:29 +00:00
Mononaut
135fbfc4f3 Reversible mempool block visualization 2022-09-30 00:54:29 +00:00
Mononaut
03c6a7c54f Reversible block arrows & key navigation 2022-09-30 00:54:20 +00:00
softsimon
9d3d3ed5f8 Revert "New button light color"
This reverts commit c79c1d9958.

# Conflicts:
#	frontend/src/styles.scss
2022-09-30 04:02:52 +04:00
Mononaut
619a6bd34d Toggle option for tx flow diagram w/ query param 2022-09-29 15:41:14 +00:00
Mononaut
d9c967b529 Move logo to LHS on mining pool preview 2022-09-29 15:36:38 +00:00
Mononaut
0e716165e5 Add preview for lightning group pages 2022-09-29 15:29:59 +00:00
softsimon
4154d3081d Handle network url ending matching better 2022-09-29 13:45:03 +04:00
wiz
678977a2a0 Merge pull request #2585 from mempool/simon/search-bar-placeholder-update
Updating search bar placeholder
2022-09-28 19:15:54 +09:00
softsimon
f7548a6154 Updating search bar placeholder 2022-09-28 14:14:08 +04:00
wiz
b1cb3f3798 Merge pull request #2582 from mempool/simon/sync-assets-path-argv
Require the resources path as input to sync assets
2022-09-27 19:33:47 +09:00
softsimon
611d86f3f7 Require the resources path as input to sync assets 2022-09-27 01:14:29 +04:00
wiz
e402be1dd2 Merge pull request #2385 from mempool/nymkappa/bugfix/incorrect-log
Log correct maxmind mysql updates - fix stats import processed files counter
2022-09-25 08:10:52 +09:00
wiz
cc79b2b2a2 Merge branch 'master' into nymkappa/bugfix/incorrect-log 2022-09-25 08:03:40 +09:00
wiz
34d5f97c79 Merge pull request #2578 from mempool/simon/revert-info-button-color-change
Revert info button color change
2022-09-25 08:03:12 +09:00
wiz
16cb3de211 Merge branch 'master' into simon/revert-info-button-color-change 2022-09-25 07:50:37 +09:00
wiz
788377d174 Merge pull request #2550 from hunicus/add-py-ws-eg
Add python example for websocket api docs
2022-09-25 07:50:30 +09:00
wiz
666a03baf9 Merge branch 'master' into add-py-ws-eg 2022-09-25 07:39:11 +09:00
wiz
6235dc97a3 Merge pull request #2551 from hunicus/js-template-formatting
Fix spacing on websocket api examples
2022-09-25 07:38:59 +09:00
wiz
fd8d61e742 Merge pull request #2519 from mempool/nymkappa/bugfix/show-hybrid-nodes-chart
Show tor+clearnet node series in chart
2022-09-25 07:37:24 +09:00
wiz
cce82c12f0 Merge branch 'master' into nymkappa/bugfix/show-hybrid-nodes-chart 2022-09-25 07:13:47 +09:00
wiz
b3a5a52432 Merge pull request #2574 from mempool/nymkappa/bugfix/node-tor-badge
Only show tor badge in node page if actually running on tor only
2022-09-25 07:13:03 +09:00
wiz
bf08498b72 Merge branch 'master' into nymkappa/bugfix/node-tor-badge 2022-09-25 06:57:49 +09:00
wiz
ea461ad592 Merge pull request #2575 from mononaut/tx-flow-diagram-algo
Improve transaction flow diagram drawing algorithm
2022-09-25 06:57:25 +09:00
softsimon
96870bf934 Revert info button color change 2022-09-25 01:57:16 +04:00
wiz
ea52e4df35 Merge branch 'master' into tx-flow-diagram-algo 2022-09-25 05:26:41 +09:00
wiz
c4760578a4 Merge pull request #2569 from mempool/simon/clipboard-button-fix
Clipboard buttons fix
2022-09-25 05:25:30 +09:00
softsimon
b5027cd646 Merge pull request #2577 from mempool/simon/new-button-color
New button light color
2022-09-24 02:39:43 +02:00
softsimon
c79c1d9958 New button light color 2022-09-24 02:39:27 +02:00
softsimon
b496f075a8 Merge pull request #2576 from mempool/simon/new-button-colors
Updating info button styling
2022-09-24 02:31:24 +02:00
softsimon
eb28fd90e5 Updating info button styling 2022-09-24 02:30:36 +02:00
Mononaut
409e5a335f Improve tx flow diagram drawing algorithm 2022-09-23 21:25:41 +00:00
wiz
7c13f5d8de Merge branch 'master' into simon/clipboard-button-fix 2022-09-23 15:16:08 +09:00
wiz
29118dc0e8 Merge pull request #2568 from mempool/simon/svg-logo-bug-fix
Mempool svg logo bug fix
2022-09-23 15:16:00 +09:00
wiz
0dab6e4ab1 Merge branch 'master' into simon/svg-logo-bug-fix 2022-09-23 14:36:08 +09:00
nymkappa
6df731af58 Only show tor badge in node page if actually running on tor only 2022-09-22 18:35:16 +02:00
softsimon
63417c9179 Merge pull request #2573 from mempool/nymkappa/bugfix/ranking-page-tor
Fix "undefined" location in node ranking
2022-09-22 18:17:01 +02:00
softsimon
ab2adc48a3 Merge pull request #2510 from mempool/nymkappa/feature/zero-base-fee-tag
Show zero base fee tag on channels
2022-09-22 18:10:41 +02:00
softsimon
2c370ffccd Merge branch 'master' into nymkappa/feature/zero-base-fee-tag 2022-09-22 17:55:41 +02:00
nymkappa
575a79145e Show "Non-zero base fee" and fix base fee rounding issue 2022-09-22 16:39:57 +02:00
nymkappa
b7b1dfdeb5 Change naming in networks line chart + Fix y axis scaling 2022-09-22 16:09:26 +02:00
nymkappa
0f218ced47 Fix legend 2022-09-22 15:23:51 +02:00
nymkappa
1ead34d42d Show tor+clearnet node series in chart 2022-09-22 15:23:50 +02:00
nymkappa
387cebeb50 Fix "undefined" location in node ranking 2022-09-22 15:12:28 +02:00
wiz
2e0afefe63 Merge pull request #2572 from mempool/simon/adding-shared-app-module
Adding MempoolSharedModule
2022-09-22 07:52:14 +09:00
wiz
65c3a40039 Merge branch 'master' into simon/adding-shared-app-module 2022-09-22 07:42:08 +09:00
wiz
c34cb939b7 Merge pull request #2571 from mempool/simon/relative-path-imports
Use relative import paths
2022-09-22 07:41:52 +09:00
softsimon
e3abd3d5ef Adding MempoolSharedModule 2022-09-21 18:27:05 +02:00
softsimon
fa11cb0619 Use relative import paths 2022-09-21 17:23:45 +02:00
softsimon
7cbc87d3df Clipboard buttons fix
fixes #2566
2022-09-19 18:21:31 +02:00
softsimon
bc0af68d97 Mempool svg logo bug fix
fixes #2505
2022-09-19 13:27:30 +02:00
junderw
5d1c5b51dd Fix: Add hash and reverse search order 2022-09-19 16:44:53 +09:00
wiz
72bed3b062 Merge pull request #2548 from mempool/simon/block-search-result
Suggest block height in search result
2022-09-19 06:24:42 +09:00
wiz
59931afd62 Merge pull request #2558 from mempool/simon/mempool-node-group-page
Mempool node group page
2022-09-19 06:14:22 +09:00
softsimon
ad30ba9602 Updated mempool group page 2022-09-18 23:05:11 +02:00
wiz
1b2e7090c3 Merge branch 'master' into simon/mempool-node-group-page 2022-09-19 05:39:43 +09:00
wiz
05e8811fe9 Merge pull request #2563 from mononaut/mining-pool-preview
Add mining pool preview
2022-09-19 05:39:36 +09:00
wiz
04ed24feae Merge branch 'master' into mining-pool-preview 2022-09-19 05:29:29 +09:00
wiz
5c8d28bf1d Merge pull request #2562 from mononaut/tx-page-diagram
Tx page diagram
2022-09-19 05:29:18 +09:00
wiz
78cc33ab01 Merge branch 'master' into tx-page-diagram 2022-09-19 05:11:31 +09:00
wiz
da2260a62e Merge pull request #2561 from mononaut/optimize-tx-diagram
Optimize transaction diagram component
2022-09-19 05:11:24 +09:00
wiz
287756ea19 Merge branch 'master' into optimize-tx-diagram 2022-09-19 04:59:01 +09:00
wiz
691f9aade1 Merge pull request #2565 from mempool/simon/address-label-overflow-fix
Allow address label to overflow without pushing UI
2022-09-19 04:04:16 +09:00
softsimon
b255f68a83 Allow address label to overflow without pushing UI
fixes #2544
2022-09-18 20:50:07 +02:00
junderw
19467de809 Backend: Add block height from timestamp endpoint 2022-09-18 22:30:09 +09:00
Mononaut
f7cd401e7a Add mining pool preview 2022-09-17 22:27:37 +00:00
Mononaut
0ca33f7b5b Handle special input/output types in tx diagram 2022-09-17 17:23:44 +00:00
softsimon
a43f0454f9 Mempool node group page 2022-09-17 11:06:49 +02:00
Mononaut
64f3a597a2 Add interactivity to tx sankey diagram 2022-09-17 01:20:08 +00:00
Mononaut
1e5cef4a62 Add sankey diagram to main tx page 2022-09-16 20:50:12 +00:00
Mononaut
5e1ca44a7f limit number of lines in tx svg diagram 2022-09-16 20:49:31 +00:00
wiz
0694e71b14 Merge pull request #2554 from mononaut/unfurler-logging
Add logging & syslog support to unfurler
2022-09-16 10:38:08 +09:00
Mononaut
b1aa7965d7 Handle unfurler puppeteer page init exception 2022-09-16 01:09:59 +00:00
Mononaut
25cc038dd3 Fix bisq unfurler crash loop 2022-09-16 00:49:07 +00:00
Mononaut
65b677238c Add logging & syslog support to unfurler 2022-09-15 18:35:37 +00:00
hunicus
7014ac2335 Fix spacing on ws esmodule api example 2022-09-13 07:38:17 -04:00
hunicus
19a86cbd59 Fix spacing on ws commonjs api example 2022-09-13 07:14:03 -04:00
hunicus
fc57effd5c Add python example for websocket api docs 2022-09-13 06:44:34 -04:00
softsimon
b6296fcbeb Suggest block height in search result 2022-09-12 19:20:22 +02:00
wiz
0a645431ae Merge pull request #2509 from mempool/nymkappa/bugfix/location-hover
Show tooltip on location is truncated
2022-09-12 05:17:10 +09:00
wiz
2d0b4f868e Merge pull request #2486 from WesVleuten/master
Add docker lightning backend config
2022-09-12 05:12:04 +09:00
wiz
23efacad70 Merge pull request #2543 from mononaut/block-preview-title-layout
Adjust block preview layout
2022-09-12 05:08:32 +09:00
wiz
deae7b28e6 Merge branch 'master' into block-preview-title-layout 2022-09-12 04:56:25 +09:00
wiz
dd5d85cc7a Merge pull request #2541 from mononaut/refactor-preview-routing
Refactor preview routes into separate module
2022-09-12 04:56:12 +09:00
wiz
da8044c073 Merge branch 'master' into refactor-preview-routing 2022-09-12 04:18:14 +09:00
wiz
33334fd94c Merge pull request #2542 from mononaut/isp-preview
Add Lightning ISP preview
2022-09-12 04:16:48 +09:00
wiz
047843b19a Merge branch 'master' into isp-preview 2022-09-12 03:09:30 +09:00
Mononaut
a74811cb7e improve preview block hash truncation 2022-09-11 01:17:46 +00:00
softsimon
ce530e24e2 Merge pull request #2540 from mempool/simon/dashboard-stats-skeleton-fix
Dashboard node statistics skeleton loader fix
2022-09-10 18:56:30 +02:00
Mononaut
0ac3352835 tweak block preview (height & hash side by side) 2022-09-10 16:11:08 +00:00
Mononaut
7d367572dc Add lighting ISP preview 2022-09-10 14:53:52 +00:00
junderw
bd4cf980bd Spelling fix 2022-09-10 16:09:43 +09:00
junderw
9b1fc1e000 Fix response codes for various error states 2022-09-10 16:03:31 +09:00
Felipe Knorr Kuhn
e63096239e Merge branch 'master' into master 2022-09-09 23:39:25 -07:00
Felipe Knorr Kuhn
b53bd5149e Merge branch 'master' into nymkappa/bugfix/location-hover 2022-09-09 23:26:09 -07:00
Felipe Knorr Kuhn
90db8c15f2 Merge branch 'master' into junderw/psbt-complete-inputs 2022-09-09 21:23:14 -07:00
Felipe Knorr Kuhn
1b08f94497 Merge branch 'master' into simon/dashboard-stats-skeleton-fix 2022-09-09 21:22:48 -07:00
Mononaut
9a5844bbdc Refactor preview routes into separate module 2022-09-10 01:00:45 +00:00
wiz
9a87b357fc Merge pull request #2539 from mempool/wiz/fix-unfurler-config-liquid
Fix unfurler config set network to liquid
2022-09-10 05:40:19 +09:00
softsimon
67675e1f79 Dashboard node statistics skeleton loader fix 2022-09-09 22:39:10 +02:00
wiz
1eda695630 Fix unfurler config set network to liquid 2022-09-10 05:39:03 +09:00
wiz
9591be6401 Merge pull request #2538 from mononaut/disable-spinners-in-previews
Disable block viz/map loading spinners on previews
2022-09-10 04:29:38 +09:00
wiz
4089e4e8d1 Merge branch 'master' into disable-spinners-in-previews 2022-09-10 04:06:11 +09:00
wiz
cbb8997d5c Merge pull request #2535 from mononaut/preview-header-tweaks
Add network to preview headers & inc font size
2022-09-10 04:06:00 +09:00
Mononaut
f8fbef78bf Disable block viz/map loading spinners on previews 2022-09-09 19:01:32 +00:00
Mononaut
4fb77a9a45 Add network to preview headers & inc font size 2022-09-09 18:15:36 +00:00
wiz
1a8102f91c Merge pull request #2534 from mempool/simon/removing-double-row
Removing extra capacity row
2022-09-09 19:51:32 +02:00
softsimon
a8188a3536 Removing extra capacity row 2022-09-09 19:42:44 +02:00
wiz
0e090f940a Merge pull request #2367 from mempool/simon/eslint-triple-equals
Tooling: Eslint force triple equals
2022-09-09 19:20:03 +02:00
wiz
dd9ba701ad Merge pull request #2506 from knorrium/knorrium/fix_docker_start_script
Fix sed command for the pools json urls
2022-09-09 19:18:55 +02:00
wiz
dbfb886475 Merge pull request #2516 from mempool/nymkappa/feature/show-tor-node-page
Show that we don't know where a node is because it's running on tor
2022-09-09 19:16:49 +02:00
wiz
1a2e336c18 Change "Running on Tor" to "Exclusively on Tor" 2022-09-10 02:16:06 +09:00
wiz
e6bc15a9e1 Merge branch 'master' into nymkappa/feature/show-tor-node-page 2022-09-09 18:37:35 +02:00
wiz
6d75a2284e Merge pull request #2507 from mempool/nymkappa/feature/cltv
When using clightning, use listchannels.delay as cltv_delta
2022-09-09 18:27:28 +02:00
wiz
3a63375499 Merge branch 'master' into nymkappa/feature/cltv 2022-09-09 18:14:34 +02:00
wiz
d6d0c42691 Merge pull request #2521 from mononaut/fix-liquid-cb-previews
Fix preview tx diagram for zero value transactions
2022-09-09 18:13:59 +02:00
wiz
b30483572d Merge branch 'master' into nymkappa/feature/cltv 2022-09-09 18:06:44 +02:00
wiz
c92fcd20f7 Merge branch 'master' into fix-liquid-cb-previews 2022-09-09 18:04:40 +02:00
wiz
ffbb4e0b9e Merge pull request #2520 from mempool/nymkappa/bugfix/skeleton-label
Fix wrong skeleton labels
2022-09-09 18:03:37 +02:00
wiz
c98e95751f Merge branch 'master' into nymkappa/bugfix/skeleton-label 2022-09-09 17:33:14 +02:00
wiz
5e1f891f02 Merge pull request #2526 from mempool/nymkappa/bugfix/i18n
Lightning dashboard -> Lightning network
2022-09-09 17:33:10 +02:00
wiz
2aeccd72e9 Merge pull request #2527 from mempool/nymkappa/feature/isp-country-map-stats
ISP and Country node lists header
2022-09-09 17:32:56 +02:00
wiz
478d8ce70d Merge branch 'master' into nymkappa/feature/isp-country-map-stats 2022-09-09 17:04:24 +02:00
wiz
7087f7a78c Merge pull request #2524 from mempool/nymkappa/bugfix/isp-chart-color
Update ISP pie chart colors
2022-09-09 17:03:57 +02:00
wiz
91c607b0e8 Merge branch 'master' into nymkappa/bugfix/isp-chart-color 2022-09-09 16:19:43 +02:00
wiz
9c025e79ca Merge pull request #2532 from mempool/wiz/add-more-community-integrations-about-page 2022-09-09 16:02:53 +02:00
nymkappa
faec398cf0 Log correct maxmind mysql updates - fix stats import processed files counter 2022-09-09 14:59:49 +02:00
nymkappa
dcfcac2cc6 Show summary stats and world map in isp and country node list page 2022-09-09 14:56:18 +02:00
wiz
769ca5794a Merge branch 'master' into wiz/add-more-community-integrations-about-page 2022-09-09 14:53:52 +02:00
nymkappa
004768132b Show clearnet nodes on world map 2022-09-09 14:53:33 +02:00
wiz
12c188266a Merge pull request #2078 from erikarvstedt/shrink-frontend-size
frontend: Don't copy `resources`, shrink static size
2022-09-09 14:52:39 +02:00
Erik Arvstedt
22def9b01c frontend: Don't copy resources to language dirs
Since 355e89ce5, the frontend references resources via root-relative URLs.
This means that `resources` dirs in the language dirs are no longer
accessed and can be removed.

Achieve this by defining a specific `assets` production config that
doesn't include `src/resources`.

As of fd35c8f4a, this shrinks the frontend size by 55% (279M -> 124M).

Also, the nginx location configs now can be simplified.
2022-09-09 14:42:55 +02:00
wiz
2d2b7d3a9f Add more Community Integrations on About page 2022-09-09 19:25:25 +09:00
Felipe Knorr Kuhn
aa51484b0b Merge branch 'master' into master 2022-09-08 10:03:36 -07:00
nymkappa
aa1519c18e Show zero base fee tag on channels 2022-09-08 18:57:12 +02:00
softsimon
249a65bb57 Merge pull request #2518 from mempool/nymkappa/feature/only-scan-closed-chan-new-block
Only scan for closed channels when there is a new block
2022-09-08 17:44:10 +02:00
softsimon
b5f6fdecbf Merge pull request #2517 from mempool/nymkappa/bugfix/missing-loaders
Add skeleton loader in node per isp/country lists
2022-09-08 15:59:21 +02:00
softsimon
f015b165ee Merge pull request #2512 from mempool/nymkappa/feature/closed-channel-info
If a channel is closed, show closing date instead of last update
2022-09-08 15:49:39 +02:00
softsimon
4cb6418f83 Merge pull request #2504 from mempool/nymkappa/bugfix/placeholder-channel-page
Show '-' when value is not defined in channel page
2022-09-08 15:39:15 +02:00
nymkappa
5a0ffee58b Fix missing space between value and label 2022-09-08 14:33:46 +02:00
wiz
22091e05ac Merge pull request #2529 from mempool/nymkappa/special-feature-for-wiz-because-its-cool/change-isp-threshold
Change isp pie chart threshold from 0.5% to 0.4%
2022-09-07 22:16:27 +02:00
nymkappa
3a1da0eb4a Change isp pie chart threshold from 0.5% to 0.4% 2022-09-07 21:53:42 +02:00
nymkappa
1a2c0b7843 Lightning dashboard -> Lightning network 2022-09-07 15:38:48 +02:00
wiz
24c8ae2002 Merge pull request #2523 from mempool/nymkappa/bugfix/fix-ln-seo
Fix missing seo in lightning pages
2022-09-07 15:37:30 +02:00
nymkappa
51bf4f769f Fix missing seo in lightning pages 2022-09-07 15:25:03 +02:00
wiz
eaa5c0fb33 Merge pull request #2522 from mempool/nymkappa/feature/node-world-map
Show clearnet nodes on world map
2022-09-07 15:23:34 +02:00
wiz
d0b4d1da4a Merge branch 'master' into nymkappa/feature/node-world-map 2022-09-07 15:03:46 +02:00
wiz
07978bc3d4 Merge pull request #2454 from Emzy/ops/cahnge-restart
Remove the mempool restart script in prod install
2022-09-07 15:02:34 +02:00
wiz
11d6b372ba Merge pull request #2096 from erikarvstedt/backend-packaging
Simplify packaging for backend
2022-09-07 15:01:18 +02:00
wiz
04b4c61f83 Merge pull request #2500 from mempool/nymkappa/bugfix/node-list-location-label
Renamed "City" to "Location"
2022-09-07 15:00:23 +02:00
nymkappa
d9483dbd7a Update ISP pie chart colors 2022-09-07 10:10:25 +02:00
wiz
01588305fc Merge branch 'master' into nymkappa/bugfix/node-list-location-label 2022-09-06 22:58:59 +02:00
wiz
4fe3c308fe Merge pull request #2502 from mempool/nymkappa/bugfix/node-per-country
Show 0 sats when country has no liquidity
2022-09-06 22:58:27 +02:00
wiz
bdf60b2b68 Merge branch 'master' into nymkappa/bugfix/node-per-country 2022-09-06 22:47:07 +02:00
wiz
c57e9706cd Merge pull request #2501 from mempool/nymkappa/bugfix/capacity-liquidity
Renamed capacity to liquidity
2022-09-06 22:40:52 +02:00
nymkappa
367c06dca6 Show clearnet nodes on world map 2022-09-06 19:33:07 +02:00
softsimon
e3f6767259 Merge pull request #2472 from hunicus/lightning-api-docs
Add lightning api docs
2022-09-06 20:11:56 +03:00
Mononaut
b608b66823 Fix tx diagram for zero value transactions 2022-09-06 17:03:41 +00:00
softsimon
a1895a66b3 Merge pull request #2469 from mempool/nymkappa/bugfix/only-show-active-channels-in-map
Only show active channels on world map
2022-09-06 20:01:44 +03:00
nymkappa
2d52dcd867 Fix wrong skeleton labels 2022-09-06 16:43:22 +02:00
hunicus
5d986e86de Add signet lightning api docs 2022-09-06 10:29:04 -04:00
hunicus
25ee1acde9 Add testnet lightning api docs 2022-09-06 10:28:56 -04:00
hunicus
50b9644bd0 Add mainnet lightning api docs 2022-09-06 10:28:43 -04:00
softsimon
474b94f9af Merge pull request #2485 from mononaut/restyle-lightning-previews
Restyle lightning preview titles to match main pages
2022-09-06 15:03:52 +03:00
nymkappa
eb18625802 Only scan for closed channels when there is a new block 2022-09-06 11:42:19 +02:00
nymkappa
d536d63d69 Add skeleton loader in node per isp/country lists 2022-09-06 11:01:46 +02:00
nymkappa
efb18c7548 Show that we don't know where a node is because it's running on tor 2022-09-06 10:51:14 +02:00
Wes van der Vleuten
5eab47674c Fixed forgotten CLN instance 2022-09-05 19:35:55 +02:00
Wes van der Vleuten
50ae075b1f Fixed CLN to CLIGHTNING 2022-09-05 19:02:36 +02:00
junderw
f062132636 Feature: Add endpoint for PSBT nonWitnessUtxo inclusion 2022-09-05 23:13:45 +09:00
nymkappa
5389928c49 Show closing date in closed channel list 2022-09-04 19:39:28 +02:00
nymkappa
5086f132f8 If a channel is closed, show closing date instead of last update 2022-09-04 19:12:01 +02:00
nymkappa
206edb7613 Show tooltip on location is truncated 2022-09-04 12:02:40 +02:00
nymkappa
a75262d79e Only show active channels on world map 2022-09-04 09:35:31 +02:00
nymkappa
dac3a43c1b When using clightning, use listchannels.delay as cltv_delta 2022-09-04 09:23:49 +02:00
Felipe Knorr Kuhn
a2dd0baaf6 Fix sed command for the pools json urls 2022-09-03 09:23:55 -07:00
nymkappa
3801f988ba Show '-' when value is not defined in channel page 2022-09-02 16:17:48 +02:00
Erik Arvstedt
34c8ad614a backend: Rename build variable DOCKER_COMMIT_HASH -> MEMPOOL_COMMIT_HASH
This var is useful for all build methods, not only Docker.

This is an internal renaming that doesn't change the public Docker
backend image API.
2022-09-02 12:50:44 +02:00
Erik Arvstedt
19bb8988f8 docker/init.sh: Remove unused code
This code has no effect because string `master` does not exist in `api/backend-info.ts`.
2022-09-02 12:50:44 +02:00
Erik Arvstedt
be72c5109a backend: Create npm script package
This script creates a directory `backend/package` which only contains the
files required by the backend at runtime:
- The contents of `dist`
- `node_modules` minus `typescript` and `@typescript-eslint`.
  These packages are build-only and are larger than the remaining whole package.

By using only `backend/package` in the Docker image,
the backend content size in the image is decreased by 70% to 31M.
This, along with the improved copying in the Dockerfile, reduces the
backend image size by 44% to 200M.
(Step `RUN chown -R 1000:1000 /backend ...` created a layer that effectively
duplicated the backend.)
2022-09-02 12:50:43 +02:00
Erik Arvstedt
d591f7c456 backend: Fetch package version at build time
Extract `fetch-version.ts` which is called at build time to create
file `dist/api/version.json`.
This file is read by `backend-info.ts` at runtime.

This also fixes handing over the Git commit hash to the backend app
in the Docker backend image, which was broken as of 2022-07-12.
(Reason: The commit hash was previously required at runtime, but was
only provided at build time.)
2022-09-02 12:50:43 +02:00
Erik Arvstedt
5683f639ed backend: Read mtgox-weekly.json from dist 2022-09-02 11:10:47 +02:00
Erik Arvstedt
8f0fc3af57 backend: Add config file env var 2022-09-02 11:08:42 +02:00
nymkappa
dcd55d9757 Fixes #2495 2022-09-02 10:28:54 +02:00
nymkappa
83df23a902 Renamed capacity to liquidity 2022-09-02 10:23:02 +02:00
nymkappa
ee23d1695d Use shared component in node ranking list 2022-09-02 10:08:25 +02:00
nymkappa
88a36f4378 Renamed "City" to "Location" 2022-09-02 09:30:07 +02:00
Felipe Knorr Kuhn
1aad4f2926 Merge branch 'master' into simon/eslint-triple-equals 2022-09-01 22:51:07 -07:00
Mononaut
2a28ccc758 Update block, address & tx preview layouts 2022-09-01 17:01:31 +00:00
Mononaut
4ee5ef336c Move lightning preview headers to top bar 2022-09-01 15:49:15 +00:00
Mononaut
3da76892d5 Restyle ln preview titles to match main pages 2022-09-01 15:49:12 +00:00
wiz
9047cb5998 Merge pull request #2484 from mononaut/new-default-preview-img
Use new mempool preview image as default
2022-09-01 11:09:21 +02:00
wiz
869cff89c6 Merge pull request #2483 from mononaut/fix-unfurler-race-condition-again
Fix unfurler race condition again
2022-09-01 10:18:59 +02:00
Wes van der Vleuten
95cd01d1fa Accept the CLA for @WesVleuten 2022-09-01 07:51:18 +02:00
Wes van der Vleuten
ad753b9d16 Added missing backend docker config 2022-09-01 06:50:42 +02:00
Mononaut
c155598c08 Use new mempool preview image as default 2022-08-31 20:40:24 +00:00
Mononaut
80dfa0e937 Fix null timestamps on transaction previews 2022-08-31 18:21:24 +00:00
Mononaut
5922ff0f40 Better fix for unfurler race condition 2022-08-31 17:24:56 +00:00
wiz
10bca8f665 Merge pull request #2480 from mempool/simon/node-alias-ellipsis
Node aliase ellipsis
2022-08-31 15:35:17 +02:00
softsimon
0bc310243f Node aliase ellipsis
fixes #2455
2022-08-31 16:21:16 +03:00
wiz
8a2925ab0c Merge pull request #2474 from mempool/simon/search-results-greyed
Grey out inactive search results
2022-08-31 14:55:40 +02:00
wiz
3f750fb8d4 Merge pull request #2478 from mempool/nymkappa/bugfix/mysql-inject
Fixes possible mysql injectin in channels.api
2022-08-31 14:52:14 +02:00
wiz
38324575e8 Merge branch 'master' into simon/search-results-greyed 2022-08-31 14:45:04 +02:00
wiz
1a10acf8ce Merge branch 'master' into nymkappa/bugfix/mysql-inject 2022-08-31 14:41:56 +02:00
wiz
799e8d9e23 Merge pull request #2475 from mempool/simon/channel-tx-details-button
Channel txs details buttons
2022-08-31 14:41:25 +02:00
wiz
454166dbca Merge pull request #2477 from mempool/nymkappa/bugfix/node-header-layout
Fix node header layout
2022-08-31 14:38:11 +02:00
wiz
c9343f56d6 Merge pull request #2476 from mempool/nymkappa/feature/closed-channels-sort
Sort closed channels by closing_date, updated_at
2022-08-31 14:34:17 +02:00
wiz
b389457092 Merge branch 'master' into simon/channel-tx-details-button 2022-08-31 14:27:18 +02:00
wiz
d5f8ce00b7 Merge branch 'master' into nymkappa/bugfix/node-header-layout 2022-08-31 14:23:14 +02:00
wiz
78298d16d7 Merge branch 'master' into nymkappa/feature/closed-channels-sort 2022-08-31 14:22:25 +02:00
wiz
4f8c36df35 Merge pull request #2448 from mempool/simon/search-improvements
Typeahead loading spinner and regex fixes
2022-08-31 14:21:31 +02:00
wiz
e65d2a522f Merge pull request #2470 from mempool/nymkappa/bugfix/node-update
Consider channels updates as well for node updated at field
2022-08-31 14:16:05 +02:00
wiz
e357a75b70 Merge branch 'master' into simon/search-improvements 2022-08-31 13:56:06 +02:00
nymkappa
ff1aae853e Save latest node channel update in node.updated_at field in db 2022-08-31 09:37:19 +02:00
nymkappa
08833b08a0 Fix possible mysql injectin in channels.api 2022-08-31 08:53:21 +02:00
nymkappa
e8151e8393 Fix node header layout 2022-08-31 08:17:42 +02:00
nymkappa
434963e8a0 Sort closed channels by closing_date, updated_at 2022-08-31 07:44:18 +02:00
softsimon
48a7f8a3ee Channel txs details buttons 2022-08-31 01:52:32 +02:00
wiz
9131521e7d Merge pull request #2473 from mononaut/hotfix-unfurler
hotfix to rollback broken unfurler
2022-08-31 00:01:21 +02:00
softsimon
c593ded864 Grey out inactive search results 2022-08-30 23:58:58 +02:00
Mononaut
9dc45d9db3 hotfix to rollback broken unfurler 2022-08-30 21:53:52 +00:00
wiz
8f060d3d65 Merge pull request #2466 from mononaut/unfurler-config-semantics
Change unfurler puppeteer config toggle to ENABLED
2022-08-30 23:31:30 +02:00
wiz
4d7ae95d4f Merge pull request #2467 from mononaut/fix-unfurler-race-condition
Fix unfurler navigation race condition
2022-08-30 23:29:39 +02:00
softsimon
a2e6b265d3 Search bar fixes. 2022-08-30 22:36:13 +02:00
wiz
ffc9081e1a Merge pull request #2435 from mempool/simon/svg-logos
Replacing all PNGs with inline SVG
2022-08-30 22:29:38 +02:00
wiz
a0c54531c0 Merge branch 'master' into simon/svg-logos 2022-08-30 22:07:02 +02:00
softsimon
0dfda66578 Typeahead loading spinner and regex fixes 2022-08-30 21:29:44 +02:00
wiz
70eb0abb7e Merge branch 'master' into fix-unfurler-race-condition 2022-08-30 21:09:58 +02:00
wiz
91355c0936 Merge pull request #2468 from mempool/nymkappa/bugfix/ipv6-cln
CLN - Add brakets around ipv6
2022-08-30 21:09:18 +02:00
wiz
b690dcaabc Merge branch 'master' into nymkappa/bugfix/ipv6-cln 2022-08-30 20:58:06 +02:00
wiz
a5e532d485 Merge pull request #2433 from mempool/simon/lightning-node-channel-skeleton-loaders
Node and Channel page skeleton loaders
2022-08-30 20:57:50 +02:00
nymkappa
c150129d74 CLN - Add brakets around ipv6 2022-08-30 20:31:04 +02:00
Mononaut
313d8d6a53 Fix unfurler navigation race condition 2022-08-30 18:21:18 +00:00
Mononaut
5a339c382f Change unfurler puppeteer config toggle to ENABLED 2022-08-30 18:20:52 +00:00
wiz
ef16f3bd68 Merge branch 'master' into simon/lightning-node-channel-skeleton-loaders 2022-08-30 20:10:10 +02:00
wiz
c289f821e4 Merge pull request #2460 from mempool/nymkappa/bugfix/asn-mapping
Harcode lunanode, FDCservers and cogent asn
2022-08-30 20:09:31 +02:00
wiz
51d35ec7d2 Merge branch 'master' into nymkappa/bugfix/asn-mapping 2022-08-30 19:45:31 +02:00
wiz
b36a7a2bcf Merge pull request #2403 from mempool/simon/da-api-handle-error
Fix for difficulty adjustment throwing error before in sync
2022-08-30 19:43:10 +02:00
wiz
d9320574d8 Merge branch 'master' into simon/da-api-handle-error 2022-08-30 19:35:57 +02:00
wiz
abb2ce5146 Merge pull request #2462 from mempool/nymkappa/bugfix/cant-click
Fix: `Can't click on channel in the box view` #2459
2022-08-30 18:21:48 +02:00
wiz
64a1ba3ac3 Merge branch 'master' into nymkappa/bugfix/cant-click 2022-08-30 17:50:54 +02:00
nymkappa
b6bebad14d Fix: Can't click on channel in the box view #2459 2022-08-30 17:33:13 +02:00
wiz
b30c6a6147 Merge pull request #2461 from pedromvpg/master
Replace logo with stacked version for open graph images
2022-08-30 17:26:52 +02:00
Pedro
a62dfe55cf Replace logo with stacked version for open graph images 2022-08-30 16:15:35 +01:00
nymkappa
cd2ef20d5c Harcode lunanode, FDCservers and cogent asn 2022-08-30 17:06:48 +02:00
wiz
7f2e68dae4 Merge pull request #2458 from mempool/wiz/add-missing-unfurler-nginx-route
[ops] Add missing unfurl nginx route
2022-08-30 16:55:26 +02:00
wiz
dc8256489b Merge pull request #2457 from pedromvpg/master
Open graph image updates
2022-08-30 16:51:05 +02:00
wiz
4a2c35c81b [ops] Add missing unfurl nginx route 2022-08-30 16:50:31 +02:00
Pedro
8094965a2c Update open graph images 2022-08-30 15:45:33 +01:00
Pedro
dfb35315e0 Merge branch 'master' of https://github.com/pedromvpg/mempool 2022-08-30 15:44:06 +01:00
Pedro
0aa5dff450 Update open graph images 2022-08-30 15:40:36 +01:00
Pedro
d1d4d0e5c4 Update open graph images 2022-08-30 15:38:10 +01:00
wiz
868136bb38 Merge pull request #2443 from mempool/nymkappa/feature/channel-map-color
Update channel map color
2022-08-30 15:54:07 +02:00
wiz
9bc1393981 Merge branch 'master' into nymkappa/feature/channel-map-color 2022-08-30 15:53:32 +02:00
wiz
af805f15c7 Merge pull request #2441 from mempool/nymkappa/feature/ip-check
Fix wrong ASN for Lunanode ip ranges
2022-08-30 15:53:19 +02:00
Stephan Oeste
f489ec6cee Remove the mempool restart script in prod install 2022-08-30 15:40:13 +02:00
wiz
56ec8b900c Merge branch 'master' into nymkappa/feature/channel-map-color 2022-08-30 15:35:18 +02:00
wiz
2f42dc9898 Merge pull request #2451 from Emzy/ops/unfurler-gpu
Install nvidia-driver, xorg and chromium if GPU is pressent on prod install
2022-08-30 15:35:01 +02:00
wiz
b9d56e8882 Merge pull request #2453 from hunicus/isp-typo-fix
Improve title for ISP map
2022-08-30 15:31:59 +02:00
Stephan Oeste
b0492f52a4 Install nvidia-driver, xorg and chromium if GPU is pressent on prod install 2022-08-30 15:27:47 +02:00
hunicus
a98c7a4b32 Improve title for ISP map 2022-08-30 09:10:15 -04:00
wiz
daeac2f894 Merge pull request #2425 from mononaut/unfurler-refactor
Unfurler fallback images & bisq support
2022-08-30 14:42:18 +02:00
wiz
0f5e4d3a15 Use config.SERVER.HOST instead of this.mempoolHost for fallbackImg 2022-08-30 14:30:32 +02:00
wiz
25c5ca731d Merge branch 'master' into unfurler-refactor 2022-08-30 13:49:02 +02:00
softsimon
8435c775ec Fixed dashboard skeleton loader text 2022-08-30 13:44:59 +02:00
softsimon
89f93d23b6 Merge pull request #2445 from mempool/nymkappa/bugfix/dashboard-percentages
When there is no stats for the past 7 days, don't show % changes
2022-08-30 13:39:43 +02:00
wiz
f97d3f57af Merge branch 'master' into unfurler-refactor 2022-08-30 13:22:38 +02:00
wiz
8e236e6594 Merge pull request #2450 from Emzy/ops/nginx-freebsd
No nginx configuration for FreeBSD
2022-08-30 13:22:18 +02:00
wiz
e1c98ceaa2 Merge pull request #2442 from mononaut/unfurler-optional-puppeteer
Option to disable puppeteer in unfurler
2022-08-30 13:21:12 +02:00
wiz
10e49fd77f Merge pull request #2449 from mempool/wiz/update-meta-description
Explore the full Bitcoin ecosystem with mempool.space
2022-08-30 13:17:30 +02:00
Stephan Oeste
e27b97f0f4 No nginx configuration for FreeBSD 2022-08-30 13:10:22 +02:00
wiz
32ee0ae908 Explore the full Bitcoin ecosystem with mempool.space 2022-08-30 12:57:21 +02:00
softsimon
3573912d8b Replacing Liquid Network and Bisq Markets with SVG. 2022-08-30 12:52:36 +02:00
wiz
2b333d513c Merge pull request #2438 from Emzy/ops/clone-lightning 2022-08-30 12:17:59 +02:00
wiz
bd690951e7 Merge pull request #2446 from Emzy/ops/cln-dirs 2022-08-30 12:13:45 +02:00
wiz
034b7fb516 Merge branch 'master' into unfurler-optional-puppeteer 2022-08-30 11:57:00 +02:00
wiz
b0fb93f7be Merge pull request #2447 from mempool/ops/setup-3-unfurlers
Add unfurler configs for 3 sites
2022-08-30 11:47:58 +02:00
wiz
0b4f17c129 Add unfurler configs for 3 sites 2022-08-30 11:28:25 +02:00
wiz
916042faab Merge pull request #2444 from mempool/nymkappa/bugfix/infinite-loading-no-channel
Fix infinite loading spinner in channel map when no active channel exists
2022-08-30 11:08:11 +02:00
softsimon
dd9ff41fde Skeleton loader updates 2022-08-30 10:54:05 +02:00
softsimon
0c71d505f2 Node and Channel page skeleton loaders 2022-08-30 10:53:11 +02:00
softsimon
948375f0e9 Merge pull request #2436 from mempool/nymkappa/bugfix/align-button
Align charts timestamp selector with charts menus
2022-08-30 10:51:04 +02:00
softsimon
b8f73b9495 Merge pull request #2439 from mempool/nymkappa/bugfix/loading-spinner-open-close-channels
Add loading animation for channel list
2022-08-30 10:47:04 +02:00
wiz
2debea28c8 Merge branch 'master' into unfurler-optional-puppeteer 2022-08-30 10:35:35 +02:00
wiz
f4f60a6b2e Merge branch 'master' into nymkappa/bugfix/infinite-loading-no-channel 2022-08-30 10:24:21 +02:00
wiz
c93334a849 Merge pull request #2423 from mempool/nymkappa/bugfix/historical-node-decoding
Save proper node socket format into db
2022-08-30 10:24:05 +02:00
Stephan Oeste
31c21137b0 Add mempool user to cln group and set data dirs rights on prod install 2022-08-30 10:22:05 +02:00
nymkappa
aec6d57fc3 When there is no stats for the past 7 days, don't show % changes 2022-08-30 09:08:34 +02:00
nymkappa
36663f0aa6 Fix infinite loading spinner in channel map when no active channel exists 2022-08-30 08:18:14 +02:00
nymkappa
6b248fb46d Change lightning channel map world color 2022-08-30 08:09:14 +02:00
Mononaut
c4e656e275 Option to disable puppeteer in unfurler 2022-08-29 23:30:10 +00:00
nymkappa
1d571c284c Fix wrong ASN for Lunanode ip ranges 2022-08-29 23:36:18 +02:00
wiz
1a5ee32565 Merge branch 'master' into nymkappa/bugfix/historical-node-decoding 2022-08-29 23:05:30 +02:00
wiz
feff3c52ef Merge pull request #2440 from Emzy/ops/change-crontab
Remove cache warmer from crontab. Now part of ./start script.
2022-08-29 22:33:20 +02:00
nymkappa
90c0ece93f Add loading animation for channel list 2022-08-29 22:25:43 +02:00
Stephan Oeste
45f2b016e1 Remove cache warmer from crontab. Now part of ./start script. 2022-08-29 22:25:35 +02:00
softsimon
f2377a5f92 Merge pull request #2437 from mempool/nymkappa/bugfix/channel-status-align
Fix open/close channel list button alignment
2022-08-29 22:16:04 +02:00
softsimon
d1c7105a84 Merge pull request #2430 from mempool/nymkappa/bugfix/mobile-addr-monospace
Use monospace font for addresses on mobile
2022-08-29 22:15:47 +02:00
Stephan Oeste
d36ae1476b Add mempool lighting explorer to the prod installer 2022-08-29 22:03:12 +02:00
softsimon
19d78ca519 Reducing size between table and header/toggle 2022-08-29 21:51:42 +02:00
nymkappa
676e83a872 Fix open/close channel list button alignment 2022-08-29 19:26:32 +02:00
nymkappa
70fd94dc1f Align charts timestamp selector with charts menus 2022-08-29 19:14:06 +02:00
softsimon
70d8a664e5 Replacing all PNGs with inline SVG 2022-08-29 19:13:47 +02:00
wiz
dcfaa9b474 Merge pull request #2432 from mempool/ops/always-return-true-stop-script
[ops] Set kill script to always return true
2022-08-29 12:45:31 +02:00
wiz
9c606a6240 [ops] Set kill script to always return true 2022-08-29 12:45:02 +02:00
wiz
586473a4e8 Merge pull request #2431 from mempool/nymkappa/feature/ln-chart-no-smooth 2022-08-29 11:59:27 +02:00
nymkappa
0ad8dc8529 Disable smooth flag for LN lines charts 2022-08-29 11:34:01 +02:00
nymkappa
680c85eee7 Use monospace font for addresses on mobile 2022-08-29 11:29:59 +02:00
wiz
c3604b5495 Merge pull request #2428 from mempool/ops/use-mainnet-cache-warmer
Use mainnet repo for nginx cache warmer script
2022-08-29 10:58:34 +02:00
wiz
73bf52dc58 Use mainnet repo for nginx cache warmer script 2022-08-29 10:58:07 +02:00
wiz
c8cde11ff1 Merge pull request #2427 from mempool/nymkappa/feature/update-warm-cache
Add new lightning endpoints to warm cache
2022-08-29 10:57:08 +02:00
wiz
e89d466827 Merge branch 'master' into nymkappa/feature/update-warm-cache 2022-08-29 10:42:52 +02:00
wiz
71a6b85b04 Merge pull request #2420 from mempool/simon/custom-lazy-loading-strategy
Custom lazy loading strategy
2022-08-29 10:42:37 +02:00
nymkappa
80d6ec580d Add new lightning endpoints to warm cache 2022-08-29 09:46:23 +02:00
nymkappa
0847e15d07 Update node sockets during historical import so we don't have to truncate 2022-08-29 09:01:07 +02:00
nymkappa
f25ec08f5e Format historical node sockets with update topology outputs 2022-08-29 08:43:26 +02:00
Mononaut
a5db46240e refactor unfurler routing & add fallback imgs 2022-08-29 01:23:20 +00:00
softsimon
b7662347c9 Trying 1500ms pre-load delay 2022-08-28 20:52:48 +02:00
softsimon
448d073bf2 Trying 800ms pre-load delay 2022-08-28 20:28:30 +02:00
softsimon
59c11379b2 Pre-load Docs 2022-08-28 20:06:15 +02:00
softsimon
2979f286cf Merge pull request #2424 from mempool/simon/transactions-list-fix-attempt
Possible fix for failing test
2022-08-28 18:26:28 +02:00
softsimon
1ca1d0b109 Possible fix for failing test 2022-08-28 17:48:51 +02:00
wiz
7e1ab55c01 Merge branch 'master' into simon/custom-lazy-loading-strategy 2022-08-28 17:25:26 +02:00
wiz
5878def72c Merge pull request #2409 from mempool/simon/channel-closing-type-header
Add closing type badge to channel header
2022-08-28 17:25:17 +02:00
wiz
0992258222 Merge branch 'master' into simon/channel-closing-type-header 2022-08-28 17:06:53 +02:00
wiz
6d027dd7ce Merge pull request #2416 from mempool/nymkappa/feature/ln-logger-tag
Update <lightning> log tag to show the network if non mainnet
2022-08-28 17:06:46 +02:00
wiz
622636e35f Merge branch 'master' into simon/channel-closing-type-header 2022-08-28 17:06:03 +02:00
wiz
3b8dc89b53 Merge pull request #2415 from mempool/nymkappa/bugfix/disable-ln-import-testsignet
Disable LN historical import if not mainnet
2022-08-28 17:05:28 +02:00
softsimon
5896ba9cf5 Merge pull request #2421 from hunicus/clipboard-fix
Fix clipboard for node pubkey on channel page
2022-08-28 16:49:55 +02:00
wiz
01e745e389 Merge branch 'master' into nymkappa/feature/ln-logger-tag 2022-08-28 16:46:05 +02:00
wiz
9377df9646 Merge pull request #2417 from mempool/nymkappa/bugfix/node-page-name-length
Truncate node alias if it's too long
2022-08-28 16:45:59 +02:00
softsimon
530cae3cdb Only pre-load Lightning if it's enabled by config 2022-08-28 16:36:42 +02:00
wiz
22f6bf60c0 Merge branch 'master' into nymkappa/bugfix/node-page-name-length 2022-08-28 16:33:20 +02:00
wiz
49813c9629 Merge pull request #2418 from mempool/nymkappa/bugfix/node-page-js-error
Fix js crash in node page and add loading spinner to channel tree chart
2022-08-28 16:33:12 +02:00
wiz
add01f547b Merge pull request #2422 from mempool/wiz/fix-typo-in-build-script
[ops] Fix typo in build script
2022-08-28 16:26:32 +02:00
wiz
f50bba1d39 [ops] Fix typo in build script 2022-08-28 16:26:06 +02:00
wiz
8d3a1c2daa Merge branch 'master' into nymkappa/bugfix/node-page-js-error 2022-08-28 16:20:53 +02:00
wiz
28b9205e95 Merge branch 'master' into nymkappa/bugfix/disable-ln-import-testsignet 2022-08-28 16:17:28 +02:00
wiz
38fa8f58b7 Merge pull request #2406 from Emzy/ops/fix-upgrade-script
Only source mysql_credentials if present in prod install
2022-08-28 16:17:21 +02:00
wiz
0018c865bd Merge pull request #2360 from mononaut/alt-tx-unfurls
Alternative transaction unfurl design
2022-08-28 16:17:07 +02:00
hunicus
bf0244f9dc Fix clipboard for node pubkey on channel page 2022-08-28 10:05:44 -04:00
softsimon
9c09c00fab Updated mempool debug log 2022-08-28 15:56:57 +02:00
wiz
6ae05842d9 Merge branch 'master' into alt-tx-unfurls 2022-08-28 15:56:54 +02:00
wiz
9cd61944d9 Merge pull request #2413 from mononaut/locale-preview-network-regex
Handle locale & preview in network detection regex
2022-08-28 15:56:36 +02:00
wiz
e7aa862e43 Merge branch 'master' into locale-preview-network-regex 2022-08-28 14:32:12 +02:00
wiz
5d0547af48 Merge pull request #2407 from Emzy/ops/late-start-cln
Start cln after Bitcoind in prod installer
2022-08-28 14:31:54 +02:00
wiz
a83b2ddeea Merge pull request #2414 from mononaut/fix-ln-map-unfurls
Fix unfurls for lightning pages with no geodata
2022-08-28 14:31:12 +02:00
wiz
1cd0796428 Merge branch 'master' into nymkappa/bugfix/disable-ln-import-testsignet 2022-08-28 14:24:05 +02:00
wiz
a2e4da840e Merge branch 'master' into fix-ln-map-unfurls 2022-08-28 14:15:37 +02:00
wiz
b7bf4ba010 Merge pull request #2419 from mempool/wiz/add-unfurl-to-ops-scripts
[ops] Update prod scripts for unfurler and cache warmer
2022-08-28 14:01:36 +02:00
wiz
8ec61dd603 Update ops scripts for unfurler and cache warmer 2022-08-28 14:00:20 +02:00
softsimon
3f16b53159 Custom lazy loading strategy 2022-08-28 13:43:57 +02:00
wiz
1eef5d40a5 Merge pull request #2387 from mempool/nymkappa/feature/ignore-invalid-gossip
Hardcode some condition to invalidate imported topology files
2022-08-28 13:17:43 +02:00
wiz
0b7aa8a83c Merge branch 'master' into alt-tx-unfurls 2022-08-28 12:45:41 +02:00
nymkappa
d8e87bccab Fix js crash in node page and add loading spinner to channel tree chart 2022-08-28 11:11:53 +02:00
nymkappa
930f1e4f09 Truncate node alias if it's too long 2022-08-28 08:58:41 +02:00
nymkappa
a65d54c549 Update <lightning> log tag to show the network if non mainnet 2022-08-28 08:37:25 +02:00
nymkappa
35de1d4d9a Disable LN historical import if not mainnet 2022-08-28 08:24:29 +02:00
nymkappa
6b049f2c33 Manually delete some lightning_stats rows once the topology import is completed 2022-08-28 07:59:23 +02:00
nymkappa
7ba8a3da84 Hardcode some condition to invalidate imported topology files 2022-08-28 07:59:23 +02:00
Mononaut
626b4e61cd Restyle transaction preview diagram 2022-08-27 21:23:23 +00:00
Mononaut
141789b034 handle locale & preview in network detection regex 2022-08-27 21:02:28 +00:00
softsimon
f19978345e Merge pull request #2412 from mempool/simon/missing-channel-inputs
Fixing missing channel openings
2022-08-27 22:33:27 +02:00
softsimon
be10cc65f4 Fixing missing channel openings 2022-08-27 22:32:56 +02:00
Mononaut
4ca87e730c Fix unfurls for lightning pages with no geodata 2022-08-27 19:02:22 +00:00
softsimon
d931ddc731 Merge pull request #2408 from mempool/simon/transactions-list-data-fetch-fix
Fixes multiple bugs with outspends and channels
2022-08-27 19:14:34 +02:00
wiz
54c3b2ba4a Merge pull request #2410 from mempool/wiz/add-prod-lightning-configs
[ops] Add production lightning backend configurations
2022-08-27 18:58:51 +02:00
wiz
6f87fd9c89 [ops] Add production lightning backend configurations 2022-08-27 18:57:59 +02:00
softsimon
88e6afadb2 Add closing type badge to channel header 2022-08-27 16:34:56 +02:00
softsimon
40dc476460 Fixes multiple bugs with outspends and channels
fixes #412
2022-08-27 16:01:08 +02:00
Stephan Oeste
c2c7448c45 Start cln after Bitcoind in prod installer 2022-08-27 15:58:01 +02:00
Stephan Oeste
3b2061bb5c Only source mysql_credentials if present in prod install 2022-08-27 15:52:42 +02:00
wiz
1a756c5fa9 Merge pull request #2405 from mempool/wiz/add-nginx-unfurl-entrypoints
[ops] Add nginx entrypoints for unfurler daemon
2022-08-27 14:17:56 +02:00
wiz
004dcebc19 [ops] Add nginx entrypoints for unfurler daemon 2022-08-27 14:17:17 +02:00
wiz
6d535441c0 Merge pull request #2404 from mempool/wiz/add-nginx-unfurl-placeholder
[ops] Add nginx placeholders for unfurlbot configuration
2022-08-27 13:57:19 +02:00
wiz
119de111e4 Merge pull request #2402 from mempool/simon/fix-broken-nodes-on-isp
Fix for broken SQL to load Lightning nodes on ISP page
2022-08-27 13:56:45 +02:00
wiz
bba9f2608a [ops] Add nginx placeholders for unfurlbot configuration 2022-08-27 13:55:30 +02:00
softsimon
936921781e Fix for difficulty adjustment throwing error before in sync 2022-08-27 10:25:24 +02:00
softsimon
d051538c6a Fix for broken SQL to load Lightning nodes on ISP page 2022-08-27 09:54:16 +02:00
wiz
69d4ba18d5 Merge pull request #2333 from mempool/fix/difficulty-api
Fix: Difficulty API (REST) with frontend fixes
2022-08-27 09:47:10 +02:00
wiz
738d1f8007 Merge branch 'master' into fix/difficulty-api 2022-08-27 09:35:53 +02:00
wiz
6092a7d9ed Merge pull request #2399 from mempool/simon/node-index-capacity-channels
Store capacity and channels in nodes table
2022-08-26 22:22:20 +02:00
softsimon
ba7b65a978 Fetch capacity and channels from nodes table 2022-08-26 16:35:24 +04:00
softsimon
85c428be25 Store capacity and channels in nodes table 2022-08-26 02:31:14 +04:00
wiz
beac979c32 Merge pull request #2397 from mempool/simon/rename-search-placeholder
Search bar placeholder text update
2022-08-26 00:37:35 +09:00
wiz
62be755fc4 Merge branch 'master' into simon/rename-search-placeholder 2022-08-26 00:30:35 +09:00
softsimon
cfb5f2f3b5 Search bar placeholder text update 2022-08-25 19:29:21 +04:00
wiz
a48f116bcd Merge pull request #2388 from Emzy/Fix-syslog-path
Fix path for newsyslog configs in prod installer
2022-08-26 00:28:56 +09:00
wiz
d045f2750b Merge pull request #2392 from mempool/simon/node-alias-search-numbers
Numbers not included in node alias search
2022-08-26 00:22:57 +09:00
wiz
686cfb6d2f Merge branch 'master' into simon/node-alias-search-numbers 2022-08-26 00:12:15 +09:00
wiz
dda8c7fb14 Merge pull request #2394 from mempool/simon/empty-tx-value-fix
Fix for empty tx value
2022-08-26 00:11:28 +09:00
wiz
5eac69b6df Merge branch 'master' into simon/empty-tx-value-fix 2022-08-25 23:53:29 +09:00
wiz
144eb558c4 Merge pull request #2381 from mempool/nymkappa/bugfix/useless-mysql-query-channel-tree
Do not fetch node stats for channel tree graph
2022-08-25 23:51:15 +09:00
wiz
a9e1ce42df Merge branch 'master' into nymkappa/bugfix/useless-mysql-query-channel-tree 2022-08-25 23:32:18 +09:00
wiz
5d3ad78611 Merge pull request #2377 from mempool/nymkappa/bugfix/missing-node-location
Node history chart full width if we can't display channel map
2022-08-25 23:32:06 +09:00
wiz
0add42c53b Merge branch 'master' into nymkappa/bugfix/missing-node-location 2022-08-25 23:09:34 +09:00
wiz
865b25d8df Merge pull request #2383 from mempool/nymkappa/feature/import-historical-nodes
Import historical nodes
2022-08-25 23:08:50 +09:00
softsimon
a5410178c8 Fix for empty tx value
fixes #2263
2022-08-25 17:24:42 +04:00
softsimon
b6bea12bca Numbers not included in node alias search 2022-08-25 15:14:54 +04:00
Mononaut
fafe40cef0 Alternative transaction unfurl design 2022-08-24 17:19:41 +00:00
wiz
1971d5d6b6 Merge pull request #2375 from mempool/nymkappa/bugfix/loading-spinner
Fix infitinite loading spinner and positioning
2022-08-25 01:18:31 +09:00
Stephan Oeste
dc4cd96fc0 Fix path for newsyslog configs in prod installer 2022-08-24 17:49:56 +02:00
wiz
cd57cfc861 Merge branch 'master' into nymkappa/bugfix/loading-spinner 2022-08-25 00:39:07 +09:00
wiz
ca6edb4bc4 Merge pull request #2373 from mempool/nymkappa/feature/title-update
Open/closed channel title updating based on selected mode
2022-08-25 00:38:46 +09:00
wiz
f51a4b4416 Merge branch 'master' into nymkappa/feature/title-update 2022-08-25 00:14:05 +09:00
wiz
f888011191 Merge pull request #2386 from mempool/wiz/dont-alert-for-warnings
[ops] Change keybase notifications to ERR or higher priority
2022-08-25 00:11:25 +09:00
wiz
d575f554ad Merge pull request #2389 from Emzy/small-fixes
Add .local/bin to cln's path and install git-lfs in prod install
2022-08-25 00:10:56 +09:00
wiz
b1b84c1e50 Merge pull request #2372 from mempool/nymkappa/bugfix/ln-network-history-chart
Hide subtitle if not widget
2022-08-24 23:22:44 +09:00
Stephan Oeste
fd8ed4bbdf Add .local/bin to cln's path and install git-lfs in prod install 2022-08-24 16:21:36 +02:00
wiz
c23aa67b0c Merge branch 'master' into nymkappa/bugfix/ln-network-history-chart 2022-08-24 22:56:03 +09:00
Jonathan Underwood
52ba1b7910 Merge branch 'master' into fix/difficulty-api 2022-08-24 22:48:37 +09:00
wiz
0afdaf116e Merge pull request #2370 from mononaut/fix-ln-preview-graphs
Fix lightning map heights on preview pages
2022-08-24 22:47:30 +09:00
Mononaut
8dd8c01aab Fix lightning graph heights on preview pages 2022-08-24 13:06:46 +00:00
wiz
71002ee119 [ops] Change keybase notifications to ERR or higher priority 2022-08-24 21:59:05 +09:00
wiz
5ad9572166 Merge pull request #2374 from mempool/nymkappa/bugfix/missing-closing-div
Add missing closing div
2022-08-24 20:13:18 +09:00
wiz
9fc753630a Merge branch 'master' into nymkappa/bugfix/missing-closing-div 2022-08-24 20:03:35 +09:00
wiz
00bd61e1d3 Merge branch 'master' into fix/difficulty-api 2022-08-24 20:01:52 +09:00
nymkappa
a151a90d2f Import historical nodes 2022-08-24 12:12:16 +02:00
nymkappa
4e9bc955e6 Fix channel map loading spinners 2022-08-24 10:04:48 +02:00
wiz
b121e46bcc Merge pull request #2362 from mempool/nymkappa/bugfix/db-deadlock
Await mysql queries in order to avoid deadlock
2022-08-24 15:59:33 +09:00
nymkappa
43cc9499b1 Check query input before running the mysql query 2022-08-24 08:35:02 +02:00
nymkappa
35512bef8d Do not fetch node stats for channel tree graph 2022-08-23 22:47:18 +02:00
nymkappa
755ac276f7 Node history chart full width if we can't display channel map 2022-08-23 18:00:40 +02:00
nymkappa
1fa882d59e Add missing closing div 2022-08-23 17:31:44 +02:00
wiz
23fab65216 Merge branch 'master' into nymkappa/bugfix/db-deadlock 2022-08-24 00:08:17 +09:00
nymkappa
4cceb008ea Open/closed channel title updating based on selected mode 2022-08-23 17:03:04 +02:00
wiz
7995058d86 Merge pull request #2371 from mempool/nymkappa/feature/node-page-layout
Update node page layout
2022-08-23 23:56:07 +09:00
wiz
e0c097e0dd Merge branch 'master' into nymkappa/feature/node-page-layout 2022-08-23 23:41:19 +09:00
wiz
9d9ead60a6 Merge pull request #2363 from mempool/nymkappa/bugfix/handle-esplora-error
Wrap esplora call into try/catch when scanning channel forensics
2022-08-23 23:40:31 +09:00
nymkappa
0a8b8cc75a Hide subtitle if not widget 2022-08-23 16:36:41 +02:00
nymkappa
c4914c2ced Update node page layout 2022-08-23 16:32:10 +02:00
wiz
a30bb4e6c0 Merge branch 'master' into nymkappa/bugfix/handle-esplora-error 2022-08-23 23:08:13 +09:00
wiz
7babc82f5d Merge pull request #2366 from mempool/nymkappa/feature/channel-tree-map
Create active channel tree map component
2022-08-23 23:06:56 +09:00
nymkappa
7d5ed66db1 Wrap esplora call into try/catch when scanning channel forensics 2022-08-23 15:53:15 +02:00
wiz
8c885e87d4 Merge branch 'master' into nymkappa/feature/channel-tree-map 2022-08-23 22:42:32 +09:00
wiz
4f009e0320 Merge branch 'master' into nymkappa/bugfix/db-deadlock 2022-08-23 22:36:07 +09:00
wiz
13c5e05044 Merge pull request #2361 from mempool/nymkappa/bugfix/cannot-update-channel-list
Fix "cannot update channel list" error
2022-08-23 22:14:49 +09:00
softsimon
2104570889 Tooling: Eslint force triple equals 2022-08-23 17:05:23 +04:00
wiz
f24d4124fb Merge branch 'master' into nymkappa/bugfix/cannot-update-channel-list 2022-08-23 21:32:14 +09:00
wiz
fc5525ec4a Merge pull request #2354 from mempool/nymkappa/feature/channe-map-trim
Improve channels world map performances
2022-08-23 21:31:57 +09:00
nymkappa
08b04c3264 Create active channel tree map component 2022-08-23 11:26:00 +02:00
nymkappa
b3735328b7 Await mysql queries in order to avoid deadlock 2022-08-22 22:31:21 +02:00
nymkappa
73d2930230 Fix "cannot update channel list" error 2022-08-22 22:15:15 +02:00
nymkappa
fd46ea82bf Fix channel map size 2022-08-22 22:06:31 +02:00
nymkappa
bd1d9573d6 Reduce api size for channel world map in ln dashboard - added spinner - update cache warmer 2022-08-22 21:36:02 +02:00
wiz
7fe9029a4e Merge pull request #2356 from mempool/nymkappa/feature/update-ranking-naming
Update node ranking naming convention and layout
2022-08-23 04:31:12 +09:00
wiz
0b3e8c3fef Merge branch 'master' into nymkappa/feature/update-ranking-naming 2022-08-23 04:13:35 +09:00
wiz
7ad1c15245 Merge pull request #2353 from mempool/nymkappa/feature/beta-tag-ln
Add "beta" tag next to lightning menu
2022-08-23 01:01:44 +09:00
wiz
29dd842404 Merge branch 'master' into nymkappa/feature/beta-tag-ln 2022-08-23 00:52:16 +09:00
wiz
6c4ad94b59 Merge pull request #2352 from mempool/nymkappa/feature/channel-node-page-title
Add "Lightning node" and "Lighning channel" page title
2022-08-23 00:52:06 +09:00
wiz
8fa65f170d Merge branch 'master' into nymkappa/feature/channel-node-page-title 2022-08-23 00:43:57 +09:00
wiz
9692ae5cdd Merge pull request #2351 from mempool/nymkappa/bugfix/useless-api-call
Remove useless api call in channel page
2022-08-23 00:43:46 +09:00
wiz
c780962892 Merge branch 'master' into nymkappa/bugfix/useless-api-call 2022-08-23 00:15:08 +09:00
wiz
f0283a3e17 Merge pull request #2343 from mempool/simon/channel-closing-reason
Fix for missing closing reason in channels list
2022-08-23 00:14:47 +09:00
nymkappa
0f6aec31fd Update node ranking naming convention
Matches ln dashboard layout with mining dashboard
2022-08-22 16:55:54 +02:00
wiz
6110d89bb4 Merge branch 'master' into simon/channel-closing-reason 2022-08-22 23:53:21 +09:00
wiz
713c0ef216 Merge pull request #2355 from mempool/simon/network-regex-matching-fix
Fix network regex matching
2022-08-22 23:53:00 +09:00
softsimon
63404edeec Fix for closing missing closing reason in channels list 2022-08-22 18:18:17 +04:00
softsimon
9af2d478c8 Fix network regex matching 2022-08-22 18:10:09 +04:00
nymkappa
0ea9b47604 Add "beta" tag next to lightning menu 2022-08-22 10:56:27 +02:00
nymkappa
2a26d532df Add "Lightning node" and "Lighning channel" page title 2022-08-22 09:17:23 +02:00
nymkappa
f7d475aa75 Remove useless api call in channel page 2022-08-22 09:07:09 +02:00
wiz
766dcddd36 Merge pull request #2345 from mempool/simon/node-alias-fulltext-search
Node alias fulltext search
2022-08-21 22:59:50 +09:00
wiz
4727b4bade Merge branch 'master' into simon/node-alias-fulltext-search 2022-08-21 22:29:18 +09:00
wiz
f48460687b Merge pull request #2338 from mempool/nymkappa/bugfix/missing-variable-ln
Add missing lightning configuration variables where needed
2022-08-21 22:28:56 +09:00
wiz
14bf256ab8 Merge branch 'master' into nymkappa/bugfix/missing-variable-ln 2022-08-21 22:18:09 +09:00
wiz
3201caf54e Merge pull request #2336 from mempool/nymkappa/feature/stop-updating-closed-channels
If a channel is closed, stop updating it
2022-08-21 22:17:08 +09:00
wiz
7c25fd61da Merge branch 'master' into nymkappa/feature/stop-updating-closed-channels 2022-08-21 22:05:52 +09:00
wiz
330ba7cb71 Merge pull request #2326 from mempool/nymkappa/feature/hide-map-if-no-geoloc
Hide map if there is not geolocation data available
2022-08-21 22:05:00 +09:00
wiz
3a02df28af Merge branch 'master' into nymkappa/feature/hide-map-if-no-geoloc 2022-08-21 21:48:34 +09:00
wiz
b66cfa23a8 Merge pull request #2325 from mempool/nymkappa/bugfix/isp-chart-ids
Fix missing isp ids on isp pie chart
2022-08-21 21:48:24 +09:00
wiz
9fd4adecb3 Merge branch 'master' into nymkappa/bugfix/isp-chart-ids 2022-08-21 21:12:31 +09:00
wiz
7c1e35ae3b Merge pull request #2324 from mempool/nymkappa/feature/improve-location
Create geolocation component to format geolocation data
2022-08-21 21:12:04 +09:00
wiz
8c9ac01123 Merge branch 'master' into nymkappa/feature/improve-location 2022-08-21 18:51:06 +09:00
wiz
c75ea29d26 Merge pull request #2323 from mempool/nymkappa/bugfix/node-size-map
Increase node size in channel map on node/channel pages
2022-08-21 18:50:43 +09:00
wiz
998dcc6f89 Merge branch 'master' into nymkappa/bugfix/node-size-map 2022-08-21 18:01:56 +09:00
wiz
daa5ebbcff Merge pull request #2322 from mempool/nymkappa/bugfix/indexing-message
Fix "indexing in progress" message in ln dashboard
2022-08-21 17:59:34 +09:00
wiz
454414179b Merge branch 'master' into nymkappa/bugfix/indexing-message 2022-08-21 17:13:02 +09:00
wiz
ad33890dea Merge pull request #2320 from mempool/nymkappa/bugfix/isp-chart-perc
Fix wrong tooltip % in isp pie chart
2022-08-21 17:11:44 +09:00
wiz
fe139651f5 Merge branch 'master' into nymkappa/bugfix/isp-chart-perc 2022-08-21 16:55:39 +09:00
softsimon
de3e89ac33 Node alias fulltext search
fixes #2238
2022-08-20 22:10:25 +04:00
wiz
13bac763a1 Merge pull request #2342 from mempool/simon/display-opening-closing-transactions 2022-08-20 21:05:14 +09:00
wiz
ffd8a527f2 Merge branch 'master' into simon/display-opening-closing-transactions 2022-08-20 20:40:46 +09:00
wiz
6b0d89e920 Merge pull request #2314 from mempool/nymkappa/bugfix/channel-list-pagination
Fix node channel list pagination
2022-08-20 20:39:00 +09:00
softsimon
13dca97505 Reduce default rows and optimize requests for lightning. 2022-08-20 15:37:56 +04:00
softsimon
fa83c2a26d Display opening and closing transactions on channel page
fixes #2340
2022-08-20 15:37:56 +04:00
wiz
ea931da38b Merge branch 'master' into nymkappa/bugfix/channel-list-pagination 2022-08-20 20:19:55 +09:00
wiz
406a65cfb6 Merge pull request #2335 from mempool/nymkappa/bugfix/most-connected-node-undefined
Fix undefined public_key
2022-08-20 20:18:30 +09:00
wiz
dd2c226354 Merge pull request #2311 from mempool/nymkappa/feature/closed-channel-import
Import historical channels
2022-08-20 19:09:16 +09:00
junderw
3a4982c5e6 Refactor Difficulty API logic 2022-08-20 13:02:22 +09:00
junderw
87c9f881c0 Refactor difficulty API logic 2022-08-20 11:24:48 +09:00
junderw
d700b5f145 Fix test setup 2022-08-20 09:53:02 +09:00
junderw
1bc2c18167 Fix tests 2022-08-20 09:53:02 +09:00
junderw
a00eb2736b Refactor Difficulty Adjustment calc + unit test it 2022-08-20 09:53:02 +09:00
junderw
bb1adf41e7 Update API docs for Difficulty API (REST) 2022-08-20 09:53:02 +09:00
junderw
772765959b Fix Difficulty API (REST) 2022-08-20 09:53:02 +09:00
nymkappa
2435d12181 Add missing lightning configuration variables where needed 2022-08-19 22:08:36 +02:00
nymkappa
5b9b717a93 Fix LN stats importer with new data "cleanupTopology" structure 2022-08-19 18:07:26 +02:00
wiz
64c5f1ce02 Merge branch 'master' into nymkappa/feature/closed-channel-import 2022-08-20 00:12:08 +09:00
wiz
b2d07d2d44 Merge pull request #2331 from mempool/nymkappa/bugfix/stats-timestamp
Use timestamp instead of date in stats tables
2022-08-20 00:11:46 +09:00
wiz
e46636f573 Merge branch 'master' into nymkappa/bugfix/stats-timestamp 2022-08-19 23:57:14 +09:00
wiz
4cf4efd3f2 Merge pull request #2319 from mempool/nymkappa/feature/import-json-topology
Import json topology
2022-08-19 23:57:03 +09:00
nymkappa
48dcf01199 If a channel is closed, stop updating it 2022-08-19 16:43:37 +02:00
nymkappa
64c07cf2d2 Fix undefined public_key 2022-08-19 16:38:16 +02:00
wiz
4e7b0b8650 Merge pull request #2334 from mempool/wiz/unpublish-github-sponsor
Unpublish the Github Sponsor links
2022-08-19 22:38:57 +09:00
wiz
59f0e2d345 Unpublish the Github Sponsor links 2022-08-19 22:38:18 +09:00
nymkappa
e7d99e9653 Insert channels from historical data 2022-08-19 12:34:38 +02:00
nymkappa
1ef4485a26 Use timestamp instead of date in stats table 2022-08-19 12:09:58 +02:00
wiz
c9a8b91c0b Merge branch 'master' into nymkappa/feature/import-json-topology 2022-08-19 18:54:03 +09:00
wiz
0dc950ab95 Merge pull request #2329 from mempool/nymkappa/bugfix/revert-2300
Reverted wrong fix in 2300
2022-08-19 17:46:49 +09:00
nymkappa
298edb6430 Reverted wrong fix in 2300 2022-08-19 08:55:45 +02:00
wiz
558ddec0a1 Merge pull request #2304 from mononaut/fix-sticky-block-error
Fix sticky error state on block page
2022-08-19 05:46:32 +09:00
wiz
9fca8de52f Merge pull request #2300 from slaninas/master
Fix difficulty adjustment
2022-08-19 05:46:14 +09:00
wiz
f4ee983807 Merge pull request #2328 from mempool/simon/remove-taproot-privacy-claims
Removing taproot privacy claims
2022-08-19 04:52:24 +09:00
softsimon
78f28c4bc3 Remove taproot privacy claims 2022-08-18 23:34:24 +04:00
wiz
cbd8936872 Merge pull request #2327 from mempool/simon/hide-features-before-activation
Hide features before feature activated
2022-08-19 04:32:59 +09:00
wiz
60fb61f70a Merge branch 'master' into simon/hide-features-before-activation 2022-08-19 04:12:22 +09:00
wiz
c767f39619 Merge pull request #2316 from mempool/nymkappa/feature/node-ranking-page
Create node rankings dashboard
2022-08-19 04:10:38 +09:00
wiz
daf3e269f4 Merge branch 'master' into nymkappa/feature/node-ranking-page 2022-08-19 03:51:55 +09:00
wiz
d2240532c1 Merge pull request #2315 from mempool/nykappa/feature/node-ranking
Refactor top nodes widgets, create related top 100 nodes pages
2022-08-19 03:51:31 +09:00
softsimon
e2f60a6761 Hide features before feature activated 2022-08-18 22:44:31 +04:00
nymkappa
eb1d6a4a78 Hide map if there is not geolocation data available 2022-08-18 18:29:11 +02:00
junderw
5ab05e4e12 Add contributors/junderw.txt 2022-08-19 01:14:54 +09:00
junderw
5d22023d19 Fix times
Co-authored-by: slaninas <slaninas@pm.me>
2022-08-19 01:14:54 +09:00
nymkappa
0e3e62fee8 Fix missing isp ids on isp pie chart 2022-08-18 17:15:05 +02:00
nymkappa
e437f2125d Create geolocation component to format geolocation data 2022-08-18 17:14:09 +02:00
nymkappa
64443d4b1b Increase node size in channel map on node/channel pages 2022-08-18 15:25:11 +02:00
nymkappa
42604cc6be Fix "indexing in progress" message in ln dashboard 2022-08-18 15:09:03 +02:00
nymkappa
9f60d787fe Fix wrong tooltip % in isp pie chart 2022-08-18 13:58:07 +02:00
nymkappa
0243769a02 Improve error logging in ln import 2022-08-18 11:14:34 +02:00
nymkappa
57e0980134 Import json topology 2022-08-18 11:06:20 +02:00
nymkappa
c37b4cadb1 Wrap LN importer into try/catch 2022-08-18 07:48:58 +02:00
nymkappa
350aedd934 Create top 100 oldest nodes full page 2022-08-17 21:29:04 +02:00
nymkappa
9c8fd6431e Create node rankings page with 3 different rankings 2022-08-17 21:20:11 +02:00
wiz
50d99634f7 Merge pull request #2306 from mempool/nymkappa/bugfix/stats-import
Refactor LN stats import
2022-08-18 02:35:16 +09:00
wiz
b1e8d0aab6 Merge branch 'master' into nymkappa/bugfix/stats-import 2022-08-18 00:35:48 +09:00
wiz
86e5048566 Merge pull request #2305 from mempool/nymkappa/bugfix/isp-chart-fix
Refactor ISP pie chart to make it more consitent
2022-08-18 00:35:27 +09:00
nymkappa
6421bc82f2 Create top 100 node per channel count component 2022-08-17 16:19:01 +02:00
nymkappa
2359e44b16 Create top 100 node per capacity component 2022-08-17 16:00:30 +02:00
nymkappa
7520e3beba Refactor top nodes widgets 2022-08-17 12:53:26 +02:00
nymkappa
44cf47b86d Fix node channel list pagination 2022-08-17 10:23:14 +02:00
nymkappa
8dc41257ce Remove xml parser - Read only .topology file and assume json format 2022-08-16 21:47:52 +02:00
nymkappa
a71262f538 Assume topology file are in .json - trim log 2022-08-16 19:29:00 +02:00
nymkappa
264ce1222a Remove "invalid data skipping fix" from stats importer 2022-08-16 19:00:08 +02:00
nymkappa
82f8bf6bb4 Refactor ISP pie chart to make it more consitent 2022-08-16 18:47:45 +02:00
Mononaut
54451c9a8c Fix sticky error state on block page 2022-08-16 16:35:24 +00:00
wiz
7f48416dc3 Merge pull request #2301 from mononaut/tx-unfurls
Add basic transaction link previews
2022-08-16 14:12:37 +09:00
Mononaut
e0ea47b8ee Add basic transaction link previews 2022-08-15 23:14:34 +00:00
wiz
a6b1d4059f Merge pull request #2299 from mempool/simon/translators-size-fix
Fix wrong size of translators avatars
2022-08-15 11:32:04 +09:00
softsimon
238008010d Fix wrong size of translators avatars 2022-08-14 13:24:54 +04:00
wiz
c895bc2681 Merge pull request #2184 from mempool/dependabot/npm_and_yarn/backend/bitcoinjs-lib-6.0.2
Bump bitcoinjs-lib from 6.0.1 to 6.0.2 in /backend
2022-08-14 14:27:10 +09:00
wiz
3684ee1e6c Merge branch 'master' into dependabot/npm_and_yarn/backend/bitcoinjs-lib-6.0.2 2022-08-14 13:51:53 +09:00
wiz
097a763e6e Merge pull request #2283 from mononaut/lightning-unfurls
Lightning unfurls
2022-08-14 13:11:46 +09:00
Mononaut
50d39295a5 Update error handling for lightning previews 2022-08-13 15:32:41 +00:00
Mononaut
d667b8d455 tweak lightning unfurl layouts 2022-08-13 15:32:40 +00:00
Mononaut
9216936a71 Add lightning channel link previews 2022-08-13 15:32:40 +00:00
Mononaut
18d18fa234 Add lightning node link previews 2022-08-13 15:32:36 +00:00
wiz
67ce4a956f Merge pull request #2284 from mempool/simon/remove-sponsor
Removing sponsor. Link to Enterprise sponsor
2022-08-13 20:59:55 +09:00
wiz
ca51d15f86 Hide the Enterprise Sponsor button for now 2022-08-13 20:47:28 +09:00
wiz
d0dd78c47c Merge branch 'master' into simon/remove-sponsor 2022-08-13 20:16:40 +09:00
wiz
c0773afb68 Merge pull request #2289 from knorrium/knorrium/fix_docker_startup_vars
Fix the latest backend Docker startup vars
2022-08-13 20:16:33 +09:00
wiz
8200d54c20 Merge branch 'master' into simon/remove-sponsor 2022-08-13 20:16:17 +09:00
dependabot[bot]
53bc616b1b Bump bitcoinjs-lib from 6.0.1 to 6.0.2 in /backend
Bumps [bitcoinjs-lib](https://github.com/bitcoinjs/bitcoinjs-lib) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/bitcoinjs/bitcoinjs-lib/releases)
- [Changelog](https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bitcoinjs/bitcoinjs-lib/compare/v6.0.1...v6.0.2)

---
updated-dependencies:
- dependency-name: bitcoinjs-lib
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 11:05:43 +00:00
wiz
b9b1265b78 Merge branch 'master' into knorrium/fix_docker_startup_vars 2022-08-13 20:04:58 +09:00
wiz
927a54e4d9 Merge pull request #2019 from knorrium/knorrium/backend_unit_tests
Start adding unit tests to the backend
2022-08-13 20:04:45 +09:00
wiz
f855173b9b Merge branch 'master' into knorrium/backend_unit_tests 2022-08-13 19:54:10 +09:00
wiz
f618f12515 Merge pull request #2281 from knorrium/knorrium/fix_docker_gha_oom
Fix the OOM issue when building the frontend docker image for armv7
2022-08-13 19:53:45 +09:00
wiz
d902e2b838 Merge branch 'master' into knorrium/fix_docker_gha_oom 2022-08-13 19:47:36 +09:00
wiz
80f4a98ea7 Merge pull request #2295 from mempool/nymkappa/feature/show-more-mining-pool-pie
Reduce pool ranking pie chart min slice
2022-08-13 19:47:13 +09:00
wiz
b870cd69de Merge branch 'master' into nymkappa/feature/show-more-mining-pool-pie 2022-08-13 19:35:31 +09:00
wiz
0f4b11e455 Merge pull request #2294 from mempool/nymkappa/feature/split-node-sockets
Create and populate nodes_socket table
2022-08-13 19:35:24 +09:00
nymkappa
ebb119aa90 Add 'websocket' type to nodes sockets 2022-08-13 11:01:46 +02:00
nymkappa
3e9543f0b6 Create and populate nodes_socket table 2022-08-13 11:01:46 +02:00
wiz
f55cbe11af Merge pull request #2247 from mononaut/gotta-unfurl-fast
Faster unfurls
2022-08-13 17:44:22 +09:00
nymkappa
bd6831fd48 Reduce pool ranking pie chart min slice 2022-08-13 10:40:46 +02:00
wiz
e60bd52e8b Merge branch 'master' into gotta-unfurl-fast 2022-08-13 16:25:04 +09:00
Felipe Knorr Kuhn
ce1a8053c8 Fix the latest backend Docker startup vars 2022-08-12 23:08:05 -07:00
Felipe Knorr Kuhn
fad66c7266 Update tests to include the POOLS_JSON_TREE_URL and POOLS_JSON_URL fields 2022-08-12 22:53:37 -07:00
Felipe Knorr Kuhn
240394817f Merge branch 'master' into knorrium/backend_unit_tests 2022-08-12 22:46:35 -07:00
Felipe Knorr Kuhn
d037ae2faf Update config unit tests 2022-08-12 22:44:13 -07:00
Felipe Knorr Kuhn
53d1497ce8 Update backend config fixture to include automatic block reindexing 2022-08-12 22:44:05 -07:00
Felipe Knorr Kuhn
b7a8ac8343 Fix merge conflicts on package-lock 2022-08-12 22:37:15 -07:00
Felipe Knorr Kuhn
9a3929554b Fix merge conflicts on gitignore 2022-08-12 22:35:50 -07:00
Felipe Knorr Kuhn
b082d81924 Merge branch 'master' into knorrium/fix_docker_gha_oom 2022-08-12 20:33:32 -07:00
Felipe Knorr Kuhn
927141fb13 Remove dependency on TTP GHA 2022-08-12 20:31:59 -07:00
Mononaut
1a903d3efb Unbork unfurler concurrency implementation 2022-08-12 16:49:56 +00:00
Mononaut
0631f357b6 Improve unfurler client-side error handling 2022-08-12 16:49:43 +00:00
wiz
04242b686e Merge pull request #2279 from hunicus/remove-link-cpfp
Avoid linking cpfp link api examples
2022-08-13 00:21:17 +09:00
wiz
b0015dfe5c Merge branch 'master' into remove-link-cpfp 2022-08-13 00:10:36 +09:00
wiz
2fc15f3be8 Merge pull request #2287 from mempool/nymkappa/feature/update-ln-dashboard
Show two LN network stats charts on dashboard
2022-08-13 00:10:00 +09:00
wiz
8edbd60bbf Merge branch 'master' into nymkappa/feature/update-ln-dashboard 2022-08-12 23:52:35 +09:00
wiz
4249270e30 Merge pull request #2286 from mempool/nymkappa/bugfix/lnd-node-networks
Fix LN stats node per network count
2022-08-12 23:52:19 +09:00
wiz
ffe8e52095 Merge branch 'master' into nymkappa/bugfix/lnd-node-networks 2022-08-12 23:43:26 +09:00
nymkappa
0c13d9f585 Update yaxis scale and view more link 2022-08-12 15:40:19 +02:00
nymkappa
39549c8ca9 Show two LN network stats charts on dashboard 2022-08-12 15:35:00 +02:00
wiz
54355b61d6 Merge branch 'master' into gotta-unfurl-fast 2022-08-12 21:30:11 +09:00
wiz
ed2f1b4603 Merge pull request #2285 from mempool/simon/matomo-networks-fix
Fixing broken Matomo och bisq and liquid
2022-08-12 21:26:56 +09:00
softsimon
576400414f Adding staging matomo sites 2022-08-12 16:11:38 +04:00
nymkappa
06453edc7c Fix LN stats node per network count 2022-08-12 12:12:34 +02:00
softsimon
329e9aa034 Fixing broken Matomo och bisq and liquid 2022-08-12 13:27:43 +04:00
wiz
6cba4a8492 Merge pull request #2282 from mempool/nymkappa/bugfix/remove-extra-call-leak
Fix recursive call in LN network updater
2022-08-12 13:46:39 +09:00
wiz
4f1ebc2545 Merge branch 'master' into nymkappa/bugfix/remove-extra-call-leak 2022-08-12 11:37:31 +09:00
softsimon
1008ab6222 Removing sponsor. Link to Enterprise sponsor 2022-08-12 03:44:58 +04:00
Mononaut
bbf04648f9 Handle missing blocks/addresses in preview 2022-08-11 17:43:28 +00:00
Mononaut
31ced9e23c don't use puppeteer to render unfurl meta tags 2022-08-11 17:43:27 +00:00
Mononaut
94d1aeb287 Fix unfurler language support 2022-08-11 17:43:26 +00:00
Mononaut
06f232fdd8 handle SIGTERM gracefully in unfurler 2022-08-11 17:43:26 +00:00
Mononaut
e4342113fa Improve unfurl layout & resize to 1200x600 2022-08-11 17:43:25 +00:00
Mononaut
578a1b6d19 Speed up unfurls by reusing puppeteer sessions 2022-08-11 17:43:24 +00:00
softsimon
251de2be11 Merge pull request #2280 from hunicus/remove-listener
Remove doc scroll listener after navigating away
2022-08-11 21:23:40 +04:00
hunicus
786cd85c74 Avoid linking cpfp link api examples 2022-08-11 12:43:30 -04:00
nymkappa
7e356ef0a0 Fix recursive call in LN network updater 2022-08-11 16:51:09 +02:00
wiz
e48eab403c Merge pull request #2274 from mempool/nymkappa/bugfix/channel-map-disable-highlight
Disable country highlight - Update node styling
2022-08-11 21:38:12 +09:00
wiz
e0c61f7299 Merge branch 'master' into remove-listener 2022-08-11 20:42:12 +09:00
wiz
b24256a83e Merge pull request #2278 from hunicus/nofollow-api-links
Add nofollow to all api link examples
2022-08-11 20:41:11 +09:00
wiz
631de8d85f Merge branch 'master' into nofollow-api-links 2022-08-11 20:09:12 +09:00
wiz
c1ebbc556b Merge pull request #2275 from mempool/nymkappa/bugfix/channel-map-rendering
Fix channel rendering issue
2022-08-11 20:08:44 +09:00
wiz
73285ae776 Merge branch 'master' into nymkappa/bugfix/channel-map-rendering 2022-08-11 19:47:34 +09:00
wiz
2d692c3f20 Merge pull request #2265 from mempool/nymkappa/bugfix/clightning-wrong-channel-id
Convert short_id to integer id with clightning backend before returning the graph
2022-08-11 19:47:19 +09:00
wiz
0f4b127275 Merge branch 'master' into nymkappa/bugfix/channel-map-rendering 2022-08-11 18:49:01 +09:00
wiz
c85b6d53c5 Merge branch 'master' into nymkappa/bugfix/clightning-wrong-channel-id 2022-08-11 18:38:11 +09:00
wiz
8ed1644081 Merge pull request #2277 from mempool/nymkappa/feature/update-dashboard
Add ISP chart in the dashboard - Fix mobile layout - Start polishing
2022-08-11 18:12:03 +09:00
nymkappa
1d71e26a12 Add ISP chart in the dashboard - Fix mobile layout - Start polishing 2022-08-11 10:19:13 +02:00
Felipe Knorr Kuhn
bb2e4a4fb3 Fix the OOM issue when building the frontend docker image for armv7 2022-08-10 22:11:49 -07:00
hunicus
5b4d394039 Remove doc scroll listener after navigating away 2022-08-10 15:17:47 -04:00
hunicus
2aaa392bf5 Add nofollow to all api link examples 2022-08-10 12:33:22 -04:00
nymkappa
8919cbcdc1 Fix channel rendering issue 2022-08-10 17:03:11 +02:00
nymkappa
dc7231537f Refactor channel id conversion utils 2022-08-10 16:58:29 +02:00
nymkappa
b31a82d27e Disable country highlight - Update node styling 2022-08-10 16:42:01 +02:00
wiz
7fecea9cca Merge pull request #2273 from mempool/nymkappa/feature/channel-page-map
Show channel on the map in channel page
2022-08-10 23:24:31 +09:00
wiz
b0d4c9eac8 Merge branch 'master' into nymkappa/feature/channel-page-map 2022-08-10 23:10:44 +09:00
nymkappa
db41aed44b Show channel on the map in channel page 2022-08-10 16:00:12 +02:00
wiz
ff370684f1 Merge pull request #2268 from mempool/nymkappa/feature/config-pools-json
Make mining pools url configurable
2022-08-10 22:52:26 +09:00
wiz
8c21cc56d4 Merge branch 'master' into nymkappa/feature/config-pools-json 2022-08-10 22:40:04 +09:00
wiz
49d8b3bacd Merge pull request #2262 from Emzy/ops/add-core-lightning
Add Core Lighting for FreeBSD in prod installer
2022-08-10 22:39:19 +09:00
wiz
e0d677b01c Merge branch 'master' into ops/add-core-lightning 2022-08-10 22:38:36 +09:00
wiz
2b2c40f65a [ops] Fix minor issue for /cln/.zshrc in prod installer 2022-08-10 22:37:22 +09:00
wiz
4e61f1ff36 Merge pull request #2086 from mempool/nymkappa/bugfix/index-blocks-prices-often
Missing blocks prices
2022-08-10 22:34:20 +09:00
wiz
33cf69872b Merge branch 'master' into nymkappa/bugfix/index-blocks-prices-often 2022-08-10 22:23:35 +09:00
nymkappa
48a0a6c7e3 Convert short_id to integer id with clightning backend before returning the graph 2022-08-10 15:09:34 +02:00
wiz
7012a480e8 Merge pull request #2267 from mempool/nymkappa/feature/node-status
Add `nodes.status` field
2022-08-10 22:00:50 +09:00
wiz
88e6305b9a Merge branch 'master' into nymkappa/feature/node-status 2022-08-10 21:26:07 +09:00
wiz
b479136688 Merge pull request #2270 from mempool/nymkappa/feature/rewrite-map-component
Rewrite channels map component using native echart
2022-08-10 19:46:13 +09:00
nymkappa
d6a42cdf6b Rewrite channels map component using native echart 2022-08-10 11:28:54 +02:00
nymkappa
aed37afb3e Add missing config in docker script and sample 2022-08-09 17:26:14 +02:00
nymkappa
a64cb4bbad Make mining pools url configurable 2022-08-09 15:52:24 +02:00
nymkappa
9b974dfbd9 Add nodes.status db field to mark nodes as inactive if needed 2022-08-09 11:17:37 +02:00
nymkappa
61e512b8f7 Refactor the LN backend and add more logs 2022-08-09 11:12:05 +02:00
nymkappa
2a6f48d8c8 Handle core timeout during closed channel scan, using correct config variable 2022-08-09 11:07:13 +02:00
nymkappa
6a52725b63 Make sure we work with integer in the stats importer 2022-08-09 10:28:40 +02:00
nymkappa
abb078f7ee Convert to short_id before fetching the funding tx 2022-08-09 09:21:31 +02:00
nymkappa
47363b477e Refactor the LN backend and add more logs 2022-08-09 09:20:25 +02:00
wiz
c0e6b7af58 Merge pull request #2251 from mempool/nymkappa/bugfix/clightning-crash
Don't throw an exception when cln connection is down
2022-08-08 17:28:50 +09:00
wiz
bd822998a5 Merge pull request #2260 from mempool/nymkappa/bugfix/missing-last-data-charts
Don't insert stats in the future
2022-08-08 17:10:59 +09:00
wiz
771d21e410 Merge branch 'master' into nymkappa/bugfix/missing-last-data-charts 2022-08-08 15:59:34 +09:00
wiz
3b1d4ffe43 Merge pull request #2259 from mempool/nymkappa/bugfix/unique-lightning-stats
Make sure lightning stats are not duplicated in db
2022-08-08 15:58:59 +09:00
wiz
78d1ef9b1c Merge branch 'master' into nymkappa/bugfix/unique-lightning-stats 2022-08-08 15:40:46 +09:00
wiz
632da54146 Merge pull request #2252 from mempool/nymkappa/bugfix/cln-channel-id
Fix CLN channel short_id conversion
2022-08-08 15:40:28 +09:00
wiz
b725fc8d26 Merge branch 'master' into nymkappa/bugfix/cln-channel-id 2022-08-08 15:25:20 +09:00
wiz
03c6c0567a Merge pull request #2264 from mempool/simon/right-align-logo
Right align mempool logo on mobile with dual logos
2022-08-08 15:25:00 +09:00
nymkappa
1d106a9851 Fix CLN channel short_id conversion 2022-08-08 07:50:50 +02:00
softsimon
5612a033d5 Right align mempool logo on mobile with dual logos 2022-08-06 04:25:21 +04:00
Stephan Oeste
cacd4abd9d Add Core Lighting for FreeBSD in prod installer 2022-08-05 16:41:00 +02:00
nymkappa
c01c610bb3 Don't insert stats in the future 2022-08-05 12:43:26 +02:00
wiz
82bcac7c74 Merge pull request #2254 from mempool/nymkappa/feature/channels-map-node-page 2022-08-05 10:37:34 +00:00
nymkappa
5a50a0d973 Make sure lightning stats are not duplicated in db 2022-08-05 12:32:20 +02:00
nymkappa
5d81a13a80 Always show channels map in node page - auto zoom on the node 2022-08-05 10:11:29 +02:00
wiz
0f9941f0d1 Merge pull request #2250 from mempool/nymkappa/bugfix/missing-data-node-page
Fix node page and display real time data
2022-08-05 08:05:15 +00:00
wiz
f7cbe30a16 Merge branch 'master' into nymkappa/bugfix/missing-data-node-page 2022-08-05 07:55:11 +00:00
wiz
76f261eb38 Merge pull request #2255 from mempool/nymkappa/feature/update-node-stats-often
Update latest stats every 10 minutes
2022-08-05 07:54:14 +00:00
wiz
fad73cf3f5 Merge branch 'master' into nymkappa/feature/update-node-stats-often 2022-08-05 07:42:36 +00:00
wiz
6796bb94cc Merge pull request #2244 from mempool/nymkappa/bugfix/daily-stats-crash
Fix daily LN stats crash
2022-08-05 07:42:25 +00:00
nymkappa
54669281de Run node stats every 10 minutes, only keep the latest entry per day 2022-08-04 18:27:36 +02:00
nymkappa
d647edcae3 Re-applied missing fix from https://github.com/mempool/mempool/pull/2233 2022-08-04 17:50:49 +02:00
softsimon
ab985afe01 Merge pull request #2253 from mempool/nymkappa/bugfix/fix-reverted-code
Re-applied missing fix from https://github.com/mempool/mempool/pull/2233
2022-08-04 13:24:57 +02:00
nymkappa
f60ef05223 Re-applied missing fix from https://github.com/mempool/mempool/pull/2233 2022-08-04 13:11:24 +02:00
nymkappa
f6d6ea5d31 Gracefully attempt to reconnect to cln upon error 2022-08-04 13:05:15 +02:00
nymkappa
3bf7bf5563 Add missing file 2022-08-04 12:49:07 +02:00
nymkappa
3c2e27f778 Fix node page and display real time data 2022-08-04 11:30:32 +02:00
nymkappa
99379d53bf When LN backend crashed, catch the error and restart after 1 minute 2022-08-03 12:43:41 +02:00
nymkappa
6be2985b40 Fix daily LN stats crash 2022-08-03 12:13:55 +02:00
wiz
faa59f59bd Merge pull request #2236 from mempool/wiz/fix-syslog-perms
[ops] Fix syslog permissions for /var/log/mempool
2022-08-03 00:24:10 +00:00
wiz
5147b0dbc4 Merge pull request #2237 from mempool/ops/fix-liquid-assets-sync
[ops] Fix cron jobs to update liquid assets hourly
2022-08-03 00:24:00 +00:00
wiz
db779578d2 Merge pull request #2241 from mempool/nymkappa/bugfix/top-nodes-queries
Rewrite queries to get top nodes by channels and capacity
2022-08-03 00:23:50 +00:00
wiz
76600af698 Merge branch 'master' into nymkappa/bugfix/top-nodes-queries 2022-08-02 23:53:03 +00:00
wiz
a43a65df2c Merge pull request #2240 from mempool/nymkappa/feature/clightning
Add clightning support to the lightning backend
2022-08-02 23:52:53 +00:00
wiz
215df5efed Merge branch 'master' into nymkappa/feature/clightning 2022-08-02 22:57:25 +00:00
wiz
feda827860 Merge pull request #2231 from mempool/nymkappa/feature/ln-historical-import
Import LN historical statistics (network wide + per node)
2022-08-02 22:56:48 +00:00
wiz
33f3b0006b Move fast-xml-parser from devDeps to deps 2022-08-02 21:49:53 +02:00
nymkappa
a25af16f7c Fetch funding tx for clightning channels 2022-08-02 18:34:20 +02:00
nymkappa
00cd3ee9bf Don't run the ln network update if the graph is emtpy 2022-08-02 18:34:19 +02:00
nymkappa
80f1ee45b5 Rebased using the update lightning interfaces 2022-08-02 18:34:19 +02:00
nymkappa
eb90434c28 Delete historical generation code 2022-08-02 18:34:19 +02:00
nymkappa
a94403b3a1 Wrote some utility functions to convert clightning output to our db schema 2022-08-02 18:34:19 +02:00
nymkappa
3f83e517f0 Create CLightningClient class 2022-08-02 18:34:18 +02:00
nymkappa
82cef095fc Rewrite queries to get top nodes by channels and capacity 2022-08-02 18:26:07 +02:00
nymkappa
b6ba3c5781 Ignore channels fee rate > 5000ppm or base fee > 5000 in stats 2022-08-02 18:15:34 +02:00
nymkappa
5b521cfc7c Don't insert gapped gossip data upon restart 2022-08-02 17:56:46 +02:00
nymkappa
d7f2f4136c Small cleanup 2022-08-02 16:00:40 +02:00
nymkappa
5d7e42195f Reduce massive gaps in the imported historical LN data 2022-08-02 16:00:40 +02:00
nymkappa
7fdf95ad34 Remove buggy tx vout value fetching and improve performances 2022-08-02 16:00:40 +02:00
nymkappa
5287490894 Make sure to not count channels twice 2022-08-02 16:00:40 +02:00
nymkappa
b246c6f4c3 We don't need a synced node to import historical data 2022-08-02 16:00:39 +02:00
nymkappa
2daf94f65a Re-use LN stats importer code to log daily LN stats 2022-08-02 16:00:39 +02:00
nymkappa
91ada9ce75 Integrate LN stats importer into the main process 2022-08-02 16:00:39 +02:00
nymkappa
4ea1e98547 Import LN historical statistics (network wide + per node) 2022-08-02 16:00:38 +02:00
wiz
82f9814438 [ops] Fix cron jobs to update liquid assets hourly 2022-08-02 01:00:06 +02:00
wiz
b8c82c8f2c [ops] Fix syslog permissions for /var/log/mempool 2022-08-02 00:08:02 +02:00
wiz
55966e601a Merge pull request #2235 from mempool/simon/limit-matomo
Limit matomo to mempool.space
2022-08-01 18:26:58 +00:00
wiz
886498fe01 Merge pull request #2234 from mempool/nymkappa/bugfix/world-map-ux
Fix UX interaction with channels map
2022-08-01 18:25:05 +00:00
softsimon
54eb11a2a7 Limit matomo to mempool.space 2022-08-01 20:08:53 +02:00
wiz
73c9ec20e8 Merge branch 'master' into nymkappa/bugfix/world-map-ux 2022-08-01 17:50:46 +00:00
wiz
c4f125b2d8 Merge pull request #2233 from mempool/nymkappa/bugfix/missing-alias-fallback-pubkey
Set default values when pubkey, capacity and channels are missing from top nodes
2022-08-01 17:50:37 +00:00
wiz
03dfca3bee Merge branch 'master' into nymkappa/bugfix/missing-alias-fallback-pubkey 2022-08-01 17:41:33 +00:00
nymkappa
04d7265a86 Fix UX interaction with channels map 2022-08-01 18:55:35 +02:00
nymkappa
4335ee8157 Set default values when pubkey, capacity and channels are missing from top nodes 2022-08-01 18:41:31 +02:00
wiz
6ba8b0ec58 Merge pull request #2227 from mempool/nymkappa/bugfix/re-enable-ln-map-click
Re-enabled channels world map click event
2022-08-01 16:35:06 +00:00
wiz
fc463a9561 Merge branch 'master' into nymkappa/bugfix/re-enable-ln-map-click 2022-08-01 16:19:01 +00:00
wiz
a80c79bd70 Merge pull request #2226 from mempool/nymkappa/bugfix/node-null-link
Fix missing pub key, capacity and channel count for node lists
2022-08-01 16:17:52 +00:00
wiz
3fd8af0c78 Merge branch 'master' into nymkappa/bugfix/node-null-link 2022-08-01 15:33:47 +00:00
wiz
474f2d2e7d Merge pull request #2221 from antonilol/lnd-rest-api
use lnd rest api
2022-08-01 15:32:15 +00:00
nymkappa
b61ef6814b Re-enabled channels world map click event 2022-08-01 10:07:15 +02:00
nymkappa
f4670156a5 Fix missing pub key, capacity and channel count for node lists 2022-08-01 09:59:20 +02:00
wiz
2a3111af6d Merge branch 'master' into lnd-rest-api 2022-07-31 22:01:50 +00:00
wiz
573168f647 Merge pull request #2224 from mempool/simon/redirect-with-path
Redirect with path
2022-07-31 22:01:35 +00:00
softsimon
7570603b37 Redirect with path 2022-07-31 23:25:28 +02:00
Antoni Spaanderman
887fb13f34 use lnd rest api 2022-07-30 21:52:58 +02:00
wiz
1a761e79ad Merge pull request #2222 from Emzy/ops/fix-tor-freebsd
Fix tor config for FreeBSD on prod installer
2022-07-30 13:35:26 +00:00
wiz
8d1624476f Remove TOR_HOME variable in prod/install 2022-07-30 15:32:51 +02:00
wiz
8f183945c0 Fix FreeBSD path for torrc 2022-07-30 15:30:55 +02:00
wiz
5d704b0e43 Merge branch 'master' into ops/fix-tor-freebsd 2022-07-30 13:29:19 +00:00
wiz
0c6ceaefa2 Merge pull request #2220 from Emzy/ops/add-unfurl-install
Add Unfurl to the prod installer
2022-07-30 13:29:11 +00:00
wiz
a413c6ebb8 Separate electrs into bitcoin electrs and elements electrs 2022-07-30 15:25:16 +02:00
wiz
2e891eb926 Merge branch 'master' into ops/add-unfurl-install 2022-07-30 13:14:02 +00:00
Stephan Oeste
21b6c6158a Fix tor config for FreeBSD on prod installer 2022-07-30 14:01:40 +02:00
Stephan Oeste
eaf7da9acb Add Unfurl to the prod installer 2022-07-29 20:13:48 +02:00
wiz
63a22082bc Merge pull request #2217 from Emzy/ops/pats-dialog
Add options for components to be installed in prod install script
2022-07-29 16:31:53 +00:00
Stephan Oeste
6e38caee63 Add options for components to be installed in prod install script 2022-07-29 13:08:07 +02:00
wiz
cfa2690549 Merge pull request #2212 from mempool/nymkappa/feature/node-network-stack
Convert nodes per network chart to stack style
2022-07-28 23:26:59 +00:00
wiz
c097db2c3c Merge branch 'master' into nymkappa/feature/node-network-stack 2022-07-28 23:17:24 +00:00
wiz
2a96d3d213 Merge pull request #2209 from mempool/nymkappa/bugfix/remove-dead-view-more-links
Remove useless view more links that does not link to anywhere
2022-07-28 23:17:12 +00:00
wiz
01a5748c02 Merge branch 'master' into nymkappa/bugfix/remove-dead-view-more-links 2022-07-28 23:16:39 +00:00
wiz
61e8e2fb2a Merge pull request #2208 from mempool/nymkappa/feature/ln-dashboard-map-click
Update mouse UX on LN map in dashboard
2022-07-28 23:16:24 +00:00
wiz
d7fe92765c Merge branch 'master' into nymkappa/feature/ln-dashboard-map-click 2022-07-28 22:23:31 +00:00
wiz
bc0c3a1eed Merge pull request #2207 from mempool/nymkappa/bugfix/mobile-menus
Reduce mobile menus padding
2022-07-28 22:23:21 +00:00
nymkappa
98e5f78d5f Convert nodes per network chart to stack style 2022-07-28 10:01:04 +02:00
nymkappa
6714533ed4 Remove useless view more links that does not link to anywhere 2022-07-28 07:50:58 +02:00
nymkappa
94a536af28 Update mouse UX on LN map in dashboard (wip) 2022-07-28 07:45:37 +02:00
nymkappa
c3780adab2 Reduce mobile menus padding 2022-07-28 06:52:08 +02:00
wiz
bdb76b3d4b Merge pull request #2206 from mononaut/address-unfurls
Address unfurls
2022-07-28 01:59:29 +00:00
wiz
80ee890a9f Merge branch 'master' into address-unfurls 2022-07-28 01:48:59 +00:00
wiz
b0a232806b Merge pull request #2205 from mononaut/better-block-unfurls
Better block unfurls
2022-07-28 01:48:36 +00:00
wiz
9c44bf171c Merge branch 'master' into better-block-unfurls 2022-07-28 01:36:10 +00:00
wiz
5d88dfd00b Merge pull request #2173 from mononaut/unfurl-daemon
Open Graph link unfurler service
2022-07-28 01:35:58 +00:00
wiz
fc14dc95df Update git URL in unfurl/package.json 2022-07-28 03:34:14 +02:00
wiz
51bdbc5d4a Add linux deps to unfurler README 2022-07-28 03:32:08 +02:00
wiz
b2e6573743 Merge pull request #2181 from oleonardolima/feature/add-get-block-raw-route
feature: add /block/:hash/raw api route
2022-07-27 22:47:03 +00:00
wiz
d66cc8a213 Merge branch 'master' into feature/add-get-block-raw-route 2022-07-27 22:35:22 +00:00
wiz
a6663d7869 Merge pull request #2204 from mempool/nymkappa/bugfix/silence-ln-db-migration
Silence LN db migration is CONFIG.LIGHTNING.ENABLED = false
2022-07-27 22:35:02 +00:00
softsimon
b0fe879503 Update backend/src/api/bitcoin/bitcoin.routes.ts 2022-07-27 23:33:18 +02:00
nymkappa
f610699ef4 Remove useless notice message content 2022-07-27 23:01:57 +02:00
nymkappa
d2ece2993e Silence LN db truncation messages is CONFIG.LIGHTNING.ENABLED = false 2022-07-27 22:53:09 +02:00
Leonardo Lima
a9248a5f13 feat: parse rpc full block from hex to binary representation 2022-07-27 17:12:33 -03:00
wiz
3e2cf5c058 Merge pull request #2203 from mempool/nymkappa/bugfix/channels-update-status
Don't set all channels to inactive when the updater runs
2022-07-27 19:16:54 +00:00
wiz
48496abbf4 Merge branch 'master' into nymkappa/bugfix/channels-update-status 2022-07-27 18:53:29 +00:00
wiz
88648da890 Merge pull request #2202 from mempool/nymkappa/bugfix/only-user-active-channel-for-stats
Ony consider channel stats = 1 for stats calculation
2022-07-27 18:53:18 +00:00
wiz
929491ce3d Merge pull request #2201 from mempool/nymkappa/feature/ln-pie-charts-toggle
Add capacity/nodes, include/exclude Tor from ISP chart
2022-07-27 18:40:06 +00:00
wiz
512739ae90 Merge branch 'master' into nymkappa/feature/ln-pie-charts-toggle 2022-07-27 18:26:06 +00:00
wiz
69930ef698 Merge pull request #2200 from mempool/nymkappa/feature/create-toggle-component
Create shared toggle component to re-use
2022-07-27 18:25:41 +00:00
Mononaut
5854931430 Add address link previews 2022-07-27 18:13:37 +00:00
nymkappa
f57fa1286c Don't mark closed channels as inactive 2022-07-27 17:24:31 +02:00
nymkappa
edfa0d6074 Don't set all channels to inactive when the updater runs 2022-07-27 17:21:24 +02:00
nymkappa
d6e9500bee [LN stats] Ony consider channel stats = 1 for stats calculation 2022-07-27 16:19:47 +02:00
nymkappa
f30883a018 [LN ISP chart] Only show "Tor node excluded" when appropriate 2022-07-27 15:33:25 +02:00
nymkappa
12eea0e4cc [LN ISP chart] Adds toogle to order by nodes/capacity and show/hide Tor 2022-07-27 13:20:54 +02:00
nymkappa
16db740986 Create shared toggle component to re-use 2022-07-27 10:48:27 +02:00
Mononaut
d1ad9efe64 Add open graph link titles 2022-07-27 01:26:14 +00:00
wiz
1b3faa1203 Merge pull request #2183 from mempool/simon/new-eslint-rules
A couple of new eslint rules
2022-07-26 23:16:22 +00:00
wiz
ce9a4024b3 Merge branch 'master' into simon/new-eslint-rules 2022-07-26 23:15:52 +00:00
wiz
16e79a3662 Merge pull request #2192 from mempool/simon/logo-vertical-center-fix
Fix for mempool logo not being centered vertically
2022-07-26 23:15:41 +00:00
Mononaut
a67c0b166c Improve block link preview legibility 2022-07-26 23:10:21 +00:00
Mononaut
fbf15f05ed Add block link previews for other networks 2022-07-26 23:09:37 +00:00
Mononaut
d1e2ead13e Set opengraph tags directly in the front end 2022-07-26 23:09:34 +00:00
wiz
9bf04b0af4 Merge branch 'master' into simon/logo-vertical-center-fix 2022-07-26 23:06:58 +00:00
wiz
d6ff8753e2 Merge pull request #2190 from mempool/nymkappa/feature/order-by-date-not-by-id
[LN stats] Order lightning_stats by added timestamp instead of id
2022-07-26 23:06:47 +00:00
wiz
3207e2a285 Merge pull request #2193 from Emzy/ops/mysql-pw
Add random generated mysql passwords on prod install
2022-07-26 22:57:43 +00:00
wiz
a30808a972 Merge pull request #2194 from mempool/ops/fix-prod-bitcoin-conf-zmq
Fix zmq ports in prod bitcoin.conf
2022-07-26 22:55:32 +00:00
wiz
a49cb2d611 Merge branch 'master' into nymkappa/feature/order-by-date-not-by-id 2022-07-26 22:54:31 +00:00
wiz
7933a51994 Merge pull request #2187 from mempool/nymkappa/feature/timespan-dashboard
[LN Dashboard] - Show 3y charts instead of 1y
2022-07-26 22:54:21 +00:00
wiz
fbef2157ec Merge branch 'master' into nymkappa/feature/timespan-dashboard 2022-07-26 22:53:50 +00:00
wiz
b2321495d8 Merge pull request #2186 from mempool/nymkappa/bugfix/remove-1mb-node-capacity
[Node page] Remove node chart 1mb line and fix y axis
2022-07-26 22:53:36 +00:00
wiz
7e504e783f Fix zmq ports in prod bitcoin.conf 2022-07-27 00:47:46 +02:00
wiz
a14565e288 Merge branch 'master' into nymkappa/bugfix/remove-1mb-node-capacity 2022-07-26 22:44:54 +00:00
wiz
9e6dd65e57 Merge pull request #2185 from mempool/nymkappa/feature/link-country-isp-node-page
[Node page] Add link to node list per country/isp in node page
2022-07-26 22:43:30 +00:00
wiz
898fef19cc Merge branch 'master' into nymkappa/feature/link-country-isp-node-page 2022-07-26 21:01:56 +00:00
wiz
a9469f7e2b Merge pull request #2188 from antonilol/taproot-fee-tooltip-2
Address @Xekyo's comments on #2167
2022-07-26 21:01:30 +00:00
Stephan Oeste
412a0ee577 Add random generated mysql passwords on prod install 2022-07-26 22:07:46 +02:00
softsimon
d8b3c21a6c Fix for mempool logo not being centered vertically 2022-07-26 21:35:19 +02:00
nymkappa
68f288f69c Order lightning_stats by added timestamp instead of id 2022-07-26 17:32:43 +02:00
Antoni Spaanderman
3ba37aaa5a Address @Xekyo's comments on https://github.com/mempool/mempool/pull/2167
+ minor fixes, variable name consistency and ts types
2022-07-26 16:29:42 +02:00
nymkappa
b69a7a5031 Show 3y charts by default on dashboard to get more interesting charts 2022-07-26 15:18:42 +02:00
nymkappa
2acaa45e0a Remove node chart 1mb line and fix y axis 2022-07-26 14:10:09 +02:00
nymkappa
6341839de4 [Node page] Add link to node list per country/isp in node page 2022-07-26 12:26:44 +02:00
softsimon
bc132e4337 A couple of new eslint rules 2022-07-26 02:38:23 +02:00
Leonardo Lima
46e63ca6cf feat: add /block/:hash/raw api route 2022-07-25 17:08:42 -03:00
Leonardo Lima
6ae05c2023 chore: accept the CLA for @oleonardolima 2022-07-25 17:08:33 -03:00
wiz
65cd708295 Merge pull request #2172 from mempool/simon/jumping-logo-fix
Fix for mempool logo jumping with various sizes of enterprise logo
2022-07-25 00:42:29 +02:00
Mononaut
9656ee92b7 Add Open Graph link unfurler service 2022-07-24 21:16:57 +00:00
softsimon
9ff8487feb Fix for mempool logo jumping with various sizes of enterprise logo 2022-07-24 23:01:31 +02:00
wiz
fbdf6da314 Merge pull request #2167 from antonilol/taproot-fee-tooltip
Add Taproot transaction feature tooltip with fee saving information
2022-07-24 21:51:17 +02:00
Antoni Spaanderman
46bce30a64 add taproot badge with only privacy tooltip if no fees can be saved 2022-07-24 19:39:13 +02:00
Antoni Spaanderman
b875bc2552 Update frontend/src/app/bitcoin.utils.ts
triple equals

Co-authored-by: softsimon <softsimon@users.noreply.github.com>
2022-07-24 18:44:53 +02:00
Antoni Spaanderman
37fd1fb76d move parseMultisigScript to bitcoin.util.ts 2022-07-24 18:44:27 +02:00
wiz
777a1bb4c1 Merge branch 'master' into taproot-fee-tooltip 2022-07-24 17:42:39 +02:00
wiz
b484852a62 Merge pull request #2111 from mempool/translations_frontend-src-locale-messages-xlf--master_pl
Translate '/frontend/src/locale/messages.xlf' in 'pl'
2022-07-24 17:42:16 +02:00
wiz
12e516c366 Merge pull request #2171 from mempool/nymkappa/bugfix/remove-duplicated-node-map
Remove duplicated nodes from the world map
2022-07-24 17:41:29 +02:00
wiz
441a5fa2b4 Merge branch 'master' into nymkappa/bugfix/remove-duplicated-node-map 2022-07-24 16:48:20 +02:00
wiz
a5b502db4a Merge pull request #2170 from mempool/feature/nymkappa/node-does-not-exists
[Node page] Handle non existing node
2022-07-24 16:48:14 +02:00
wiz
0b2b8fc56c Merge branch 'master' into feature/nymkappa/node-does-not-exists 2022-07-24 16:39:32 +02:00
wiz
d3e24914cd Merge pull request #2169 from mempool/nymkappa/feature/empty-channels-list
[Node page] Handle empty channels list
2022-07-24 16:39:23 +02:00
wiz
1438391515 Merge branch 'master' into nymkappa/feature/empty-channels-list 2022-07-24 16:27:06 +02:00
wiz
8316c37a0e Merge pull request #2168 from mempool/nymkappa/feature/node-channels-list-count
[Node page] Update channels count when switching between open/closed
2022-07-24 16:26:39 +02:00
nymkappa
44725d9b29 Remove duplicated nodes from the world map 2022-07-24 15:08:48 +02:00
nymkappa
d9e85fdcb6 Show error message when the node public key does not exist 2022-07-24 12:34:50 +02:00
nymkappa
886e7e6638 [Node page] Show message if there is no channels in the list to display 2022-07-24 12:05:09 +02:00
nymkappa
479f635754 [Node page] Update channels count when switching between open/closed 2022-07-24 11:51:05 +02:00
wiz
75cd5a15b7 Merge branch 'master' into taproot-fee-tooltip 2022-07-24 00:15:32 +02:00
wiz
0f91778970 Merge pull request #2166 from mempool/nymkappa/feature/isp-maxmind
Integrate GeoIP2 ISP database
2022-07-24 00:14:21 +02:00
Antoni Spaanderman
eb9c6f2231 Add Taproot transaction feature tooltip with fee saving information 2022-07-24 00:08:53 +02:00
wiz
ad9e989598 Correct maxmind geoip-db GEOLITE2_ISP to GEOIP2_ISP 2022-07-23 23:53:28 +02:00
nymkappa
ffe22399d5 Integrate GeoIP2 ISP database 2022-07-23 23:33:13 +02:00
wiz
300b9e4e05 Merge pull request #2157 from mempool/nymkappa/feature/ln-map-single-node
Add channels map to the node page
2022-07-23 19:37:29 +02:00
nymkappa
89f7f99720 Rebased on top of master 2022-07-23 19:03:12 +02:00
wiz
b139423eb9 Merge pull request #2155 from mempool/nymkappa/feature/clickable-flags
Make flags clickable
2022-07-23 18:45:40 +02:00
nymkappa
40f2b97075 Add channels map to the node page 2022-07-23 18:43:08 +02:00
wiz
8de89a9f26 Merge branch 'master' into nymkappa/feature/clickable-flags 2022-07-23 18:31:30 +02:00
wiz
33776b2b09 Merge pull request #2158 from mempool/nymkappa/feature/ln-map-dashboard
Show LN map on the LN dashboard
2022-07-23 18:30:18 +02:00
nymkappa
e0d189b70a Remove horizontal scroll on ln dashboad 2022-07-23 16:14:32 +02:00
wiz
2e210e7aa4 Merge pull request #2154 from mempool/nymkappa/bugfix/wrong-i18n-string
Fix wrong i18n key
2022-07-23 16:13:29 +02:00
nymkappa
f96b7e7004 Show LN map on the LN dashboard 2022-07-23 14:23:47 +02:00
nymkappa
0508ac1a5d Make flags clickable 2022-07-23 10:18:36 +02:00
nymkappa
ae34225f66 Fix wrong i18n key 2022-07-23 09:57:30 +02:00
Felipe Knorr Kuhn
c509a69f1d Merge branch 'master' into translations_frontend-src-locale-messages-xlf--master_pl 2022-07-22 21:17:38 -07:00
wiz
6635f2ce8f Merge pull request #2152 from mononaut/open-graph-previews
Draft: Open Graph link previews
2022-07-22 23:04:35 +02:00
Mononaut
37c28940bf Add open graph block preview page 2022-07-22 19:45:59 +00:00
Felipe Knorr Kuhn
51b832335b Merge branch 'master' into nymkappa/bugfix/index-blocks-prices-often 2022-07-22 08:06:44 -07:00
wiz
0aec1a5d68 Merge pull request #2150 from knorrium/knorrium/refactor_cypress_gha
Refactor Cypress GHA
2022-07-22 16:26:22 +02:00
wiz
1244eac03c Merge branch 'master' into knorrium/refactor_cypress_gha 2022-07-22 16:09:45 +02:00
wiz
ce940d7c50 Merge pull request #2149 from knorrium/knorrium/fix_cypress_tv_test
Fix Cypress TV tests
2022-07-22 16:09:38 +02:00
wiz
d0ff377086 Merge pull request #2151 from mempool/simon/navbar-logos-fixes
Navbar logos fix
2022-07-22 16:09:02 +02:00
softsimon
773e43e0cf Navbar logos fix 2022-07-22 14:28:18 +02:00
Felipe Knorr Kuhn
68f63683f1 Remove wrong path setting 2022-07-21 23:10:41 -07:00
Felipe Knorr Kuhn
b5072f823c Fix wrong browser var 2022-07-21 23:04:10 -07:00
Felipe Knorr Kuhn
3d75022a6c Simplify Cypress GHA 2022-07-21 23:02:26 -07:00
Felipe Knorr Kuhn
a030fbedb4 Skip TV tests on signet 2022-07-21 22:32:15 -07:00
Felipe Knorr Kuhn
310bb3cf24 Comment out unused interceptors 2022-07-21 22:22:34 -07:00
Felipe Knorr Kuhn
fa18796109 Update interceptors 2022-07-21 22:07:01 -07:00
Felipe Knorr Kuhn
41bd89521d Fix tests trying to click on the TV button on the navbar 2022-07-21 21:41:33 -07:00
Felipe Knorr Kuhn
29f36d7f9e Add an id to the new tv button 2022-07-21 21:41:03 -07:00
Felipe Knorr Kuhn
2dc875bb33 Merge branch 'master' into nymkappa/bugfix/index-blocks-prices-often 2022-07-21 16:29:24 -07:00
wiz
e7e907d535 Merge pull request #2148 from mempool/simon/enterprise-logo-container
Enterprise logo container
2022-07-22 01:28:11 +02:00
softsimon
a705e44c09 Removing dead code 2022-07-22 01:13:13 +02:00
wiz
72ec4c0d7b Merge branch 'master' into simon/enterprise-logo-container 2022-07-22 01:08:18 +02:00
wiz
7f405ffcdd Merge pull request #2141 from mempool/simon/taproot-button
Always show taproot button
2022-07-22 01:07:40 +02:00
softsimon
dfe50d4355 Enterprise logo container 2022-07-22 01:07:19 +02:00
wiz
181c13025d Merge pull request #2109 from mempool/nymkappa/bugfix/block-audit-code-refactor
Block audit code refactor
2022-07-22 01:07:02 +02:00
wiz
219694db8b Merge pull request #2138 from mempool/nymkappa/bugfix/prediction-lablels
Fix block predition graph x axis labels
2022-07-22 01:06:01 +02:00
wiz
7b3f5c378d Merge pull request #2140 from mempool/simon/correct-gitignore-json-wildcard
Remove gitignore json wildcard
2022-07-22 01:05:37 +02:00
wiz
621789b20c Merge pull request #2147 from mempool/nymkappa/feature/ln-nodes-map-channels
Create world map of clearnet LN nodes and channels
2022-07-22 00:04:58 +02:00
wiz
7bbfc7872b Fix log msg in channels.api.ts
Co-authored-by: softsimon <softsimon@users.noreply.github.com>
2022-07-22 00:04:02 +02:00
wiz
9698339488 Merge branch 'master' into nymkappa/feature/ln-nodes-map-channels 2022-07-21 23:03:18 +02:00
nymkappa
8503fd2fc0 Remove custom environment background 2022-07-21 22:54:19 +02:00
nymkappa
c839abb479 Create world map of clearnet LN nodes and channels 2022-07-21 22:43:12 +02:00
wiz
fd70a51489 Merge pull request #2146 from mempool/simon/subdomain-logo
Subdomain enterprise logo
2022-07-21 22:41:13 +02:00
softsimon
b1b4bdf575 Subdomain enterprise support 2022-07-21 22:02:26 +02:00
wiz
b52a8c58ab Merge pull request #2145 from mempool/ops/route-new-apis-to-services-backend
Route new APIs to services backend
2022-07-21 11:25:24 -05:00
wiz
58b60c1f68 Route new APIs to services backend 2022-07-21 18:07:28 +02:00
Felipe Knorr Kuhn
f4bb927dbd Merge branch 'master' into nymkappa/bugfix/index-blocks-prices-often 2022-07-20 20:59:27 -07:00
Felipe Knorr Kuhn
76b6d2a21b Merge branch 'master' into nymkappa/bugfix/block-audit-code-refactor 2022-07-20 20:59:11 -07:00
Felipe Knorr Kuhn
93aef078cf Merge branch 'master' into nymkappa/bugfix/prediction-lablels 2022-07-20 20:55:47 -07:00
softsimon
a5f1ba92e4 Always show taproot button
refs #2107
2022-07-20 19:30:00 +02:00
softsimon
3e1e47c49a Remove gitignore json wildcard 2022-07-20 18:29:19 +02:00
wiz
c7909a1ca8 Merge pull request #2139 from mempool/nymkappa/feature/ln-nodes-map
Create lightning nodes world heat map (clearnet)
2022-07-20 09:47:27 -05:00
wiz
e0cc58bc6e Fix typo in kappa's PR 2139 2022-07-20 09:39:11 -05:00
wiz
ddb0272d60 Add worldmap.json from apache/echarts
Source: https://github.com/apache/echarts/blob/master/test/data/map/json/world.json
License: Apache
2022-07-20 09:36:15 -05:00
nymkappa
59f84e82b4 Create lightning nodes world heat map (clearnet) 2022-07-20 11:39:51 +02:00
nymkappa
3dc37dc34d Fix block predition graph x axis labels 2022-07-19 08:00:11 +02:00
wiz
88febf6262 Merge pull request #2131 from mempool/ops/reduce-nginx-cache-time-for-homepage
Reduce nginx cache time for production homepage
2022-07-18 17:56:55 -05:00
wiz
29b8660602 Merge pull request #2130 from mempool/simon/disable-pyro-css
Removing randomness in Fireworks scss
2022-07-18 17:49:59 -05:00
wiz
92da3988da Reduce nginx cache time for production homepage 2022-07-18 17:47:33 -05:00
softsimon
8b1fa82c0c Remove random scss calculation 2022-07-19 02:41:03 +04:00
wiz
d2f13eced1 Merge pull request #2110 from mempool/nymkappa/bugfix/block-prediction-chart-no-data
Fix block prediction chart when there is few or no data available
2022-07-17 19:01:19 -05:00
wiz
d373fd1424 Merge branch 'master' into nymkappa/bugfix/block-prediction-chart-no-data 2022-07-17 18:40:33 -05:00
wiz
d5f5fffd7d Merge pull request #2119 from mempool/nymkappa/bugfix/nodes-per-as-css
Fix node per as table css
2022-07-17 18:40:00 -05:00
wiz
cc8c52e848 Merge branch 'master' into nymkappa/bugfix/nodes-per-as-css 2022-07-17 18:30:43 -05:00
wiz
c41bfe755e Merge pull request #2117 from mempool/nymkappa/bugfix/ln-per-network-text
Fix nodes per network chart localization
2022-07-17 18:29:49 -05:00
wiz
8c667a76a7 Merge pull request #2112 from mempool/nymkappa/bugfix/price-updater-incorrect-log
Ignore Kraken historical price without USD
2022-07-17 18:29:16 -05:00
wiz
57e033a32c Merge pull request #2085 from mempool/nymkappa/bugfix/hashrate-no-difficulty
[Hashrate chart] Fix javascript error if difficulty array is empty
2022-07-17 18:28:51 -05:00
wiz
b776b935a0 Merge pull request #2123 from mempool/nymkappa/feature/ln-per-country-chart
Fix error 500 for `Isle of Man` nodes list
2022-07-17 18:27:26 -05:00
wiz
3633d36b28 Merge branch 'master' into nymkappa/feature/ln-per-country-chart 2022-07-17 18:18:14 -05:00
wiz
b4c6c9c86c Merge pull request #2113 from mempool/nymkappa/feature/tv-to-graph
Move TV button to `/graphs/mempool` graph page
2022-07-17 18:17:58 -05:00
nymkappa
681d9db900 Fix error 500 for Isle of Man nodes list 2022-07-18 01:11:20 +02:00
wiz
0137d29cd2 Merge branch 'master' into nymkappa/feature/tv-to-graph 2022-07-17 18:06:28 -05:00
wiz
36412bedd1 Merge pull request #2118 from mempool/nymkappa/feature/ln-per-country-chart
LN nodes per country pie chart
2022-07-17 18:06:07 -05:00
nymkappa
ccdeb108ee Show country flag emoji 2022-07-18 00:55:47 +02:00
nymkappa
f16076b401 Keep county ISO code in lower case in url 2022-07-18 00:06:48 +02:00
nymkappa
ac611a4518 Fix node per as table css 2022-07-17 23:54:17 +02:00
nymkappa
420ff16c2b Make sure "other" is not clickable 2022-07-17 23:48:58 +02:00
nymkappa
b4bcd84a53 Add link to nodes per country list component 2022-07-17 23:48:58 +02:00
nymkappa
63ebace378 Add LN node per country graph 2022-07-17 23:48:57 +02:00
wiz
75f1b52a2a Merge pull request #2120 from mempool/nymkappa/bugfix/fix-as-isp-naming-convention
Fix naming convention "as" => "isp"
2022-07-17 16:47:13 -05:00
nymkappa
d7f0dc4c05 Fix naming convention "as" => "isp" 2022-07-17 23:29:40 +02:00
wiz
09171c749a Merge pull request #2121 from mempool/nymkappa/feature/ln-nodes-per-as-list
Nodes list per ISP
2022-07-17 16:28:34 -05:00
wiz
971f402ced Merge branch 'master' into nymkappa/feature/ln-nodes-per-as-list 2022-07-17 16:09:13 -05:00
wiz
3768c28b01 Merge pull request #2098 from mempool/nymkappa/feature/ln-nodes-per-country
Add nodes per country table page
2022-07-17 16:09:00 -05:00
nymkappa
dbf60dd4d9 Nodes per ISP list component 2022-07-17 22:57:29 +02:00
nymkappa
683190eaa3 Fix nodes per network chart localization 2022-07-17 10:06:08 +02:00
nymkappa
93e93d44f4 Use country iso code in ln nodes per country page url 2022-07-17 09:53:02 +02:00
nymkappa
0902015264 Use correct country name in component title 2022-07-16 23:25:44 +02:00
nymkappa
b11fb44461 Rename "Nodes" to "Lightning nodes" 2022-07-16 23:23:13 +02:00
nymkappa
376484a937 Nodes per country list component 2022-07-16 23:23:13 +02:00
nymkappa
fc5fd244d0 Get nodes per country list with /lightning/nodes/country/:country API 2022-07-16 23:22:53 +02:00
wiz
561d75c694 Merge pull request #2097 from mempool/nymkappa/feature/ln-nodes-per-as
Add nodes per AS chart
2022-07-16 16:19:39 -05:00
nymkappa
82c0987e7b Update naming convention 2022-07-16 23:12:16 +02:00
wiz
c75138ee50 Merge pull request #2114 from mempool/nymkappa/bugfix/graph-download-button-no-wrap
Fix graph titles layout and text
2022-07-16 15:30:12 -05:00
nymkappa
d40545bd52 Apply fix from PR #2114 2022-07-16 21:43:16 +02:00
nymkappa
4093cc0cbf Fix graph title & download button on mobile
Fix wrong graph title on LN channels & capacity chart
2022-07-16 21:37:45 +02:00
nymkappa
0c71e11cda Move TV button to /graphs/mempool graph page 2022-07-16 21:00:32 +02:00
nymkappa
3edd6f23a5 Add capacity per AS 2022-07-16 11:32:48 +02:00
nymkappa
28cf0f71eb Add nodes AS share chart and table component 2022-07-16 10:44:05 +02:00
nymkappa
2fd34cbd91 Get nodes count per AS by calling /lightning/nodes/asShare API 2022-07-16 09:34:45 +02:00
nymkappa
d6158060e7 Ignore Kraken historical price without USD 2022-07-16 09:27:07 +02:00
nymkappa
e0952a4c1d Wait for the price updater to complete before saving blocks prices 2022-07-16 09:22:45 +02:00
nymkappa
2872d2e299 Refactor BlocksSummariesRepository::$saveSummary 2022-07-15 21:48:39 +02:00
wiz
d8a1c0ac1b Merge pull request #2068 from mempool/feature/nymkappa/block-audit-page
Block audit page
2022-07-15 12:02:30 -05:00
transifex-integration[bot]
058d15e67f Translate /frontend/src/locale/messages.xlf in pl
review completed for the source file '/frontend/src/locale/messages.xlf'
on the 'pl' language.
2022-07-15 14:25:36 +00:00
nymkappa
16c6f030db Fix block prediction chart when no or few data is available 2022-07-15 12:01:21 +02:00
nymkappa
1be7c953ea Save current progress on the block audit page 2022-07-14 20:41:50 +02:00
softsimon
c6f33310e5 Merge pull request #2094 from mempool/nymkappa/debug/insert-once-channels-stats-init
Make sure we have initial channel stats to display after fresh run
2022-07-14 18:51:26 +02:00
softsimon
68205ddb9d Merge pull request #2093 from mempool/nymkappa/bugfix/ln-network-stats-layout
Fix LN dashboard layout during indexing
2022-07-14 18:30:42 +02:00
softsimon
dd683094da Merge pull request #2099 from mempool/nymkappa/bugfix/missing-migration
Re-add missing migration that was dropped during merge conflict
2022-07-14 18:00:12 +02:00
nymkappa
681708ffa0 Re-add missing migration that was dropped during merge conflict 2022-07-13 07:56:17 +02:00
wiz
9a29b4adf3 Merge pull request #1817 from mempool/nymkappa/feature/block-fee-usd-chart 2022-07-12 23:35:35 +02:00
wiz
ee058deb74 Merge branch 'master' into nymkappa/feature/block-fee-usd-chart 2022-07-12 23:24:31 +02:00
wiz
2f0c8d94b0 Merge pull request #2095 from mempool/nymkappa/feature/ln-nodes-maxmind
Show maxming data when available is nodes page
2022-07-12 21:40:10 +02:00
nymkappa
6e09a1c96b Show division and ASN number 2022-07-12 21:28:02 +02:00
nymkappa
f2983e28a3 Show city, country and AS name in node page when available 2022-07-12 21:07:38 +02:00
nymkappa
c6fa8c6172 Format mysql query so I can actually update it 2022-07-12 20:18:41 +02:00
nymkappa
1988971290 Make sure we have initial channel stats to display after fresh run 2022-07-12 19:59:37 +02:00
nymkappa
6ef200ae7f Fix LN dashboard layout during indexing 2022-07-12 19:14:43 +02:00
nymkappa
908635b3dd Fix mysql syntax error 2022-07-12 19:10:57 +02:00
wiz
a4946de028 Merge remote-tracking branch 'origin/master' into nymkappa/feature/block-fee-usd-chart 2022-07-12 14:55:47 +02:00
wiz
54931cb23e Merge pull request #2088 from mempool/nymkappa/feature/as_organization
[LN] Add `as_organization` in nodes table
2022-07-12 14:15:19 +02:00
nymkappa
3d2ff7ef62 Store AS organization in geo_names 2022-07-12 12:12:10 +02:00
nymkappa
89b2e11083 [Hashrate chart] Fix javascript error if difficulty array is empty 2022-07-12 09:03:39 +02:00
nymkappa
5ac9b5674e Show "indexing in progress" in fee/reward charts during block indexing 2022-07-12 08:50:07 +02:00
nymkappa
a97675c538 Add daily historical price - show USD in block fee reward charts 2022-07-11 23:16:48 +02:00
nymkappa
40634a0eb8 [Indexing] Link blocks to their closest known price 2022-07-11 22:14:59 +02:00
nymkappa
80b3b91a82 Add USD serie in block fee/reward charts 2022-07-11 22:10:25 +02:00
wiz
47ad5fffc8 Merge pull request #2077 from erikarvstedt/contributors-require-signing 2022-07-11 21:21:13 +02:00
wiz
75bb586f38 Merge pull request #2076 from mempool/simon/backend-routes-refactor 2022-07-11 21:20:43 +02:00
Erik Arvstedt
c743381d33 CONTRIBUTING.md: Ask contributors to sign their commits 2022-07-11 19:42:56 +02:00
softsimon
2253dd570d Refactoring backend routes code 2022-07-11 19:15:28 +02:00
wiz
97046a7dc4 Merge pull request #2069 from mempool/nymkappa/bugfix/update-log-indexer
[Indexer] Set log level accordingly - Remove indexing ETAs
2022-07-11 18:43:42 +02:00
wiz
475bb11991 Merge branch 'master' into nymkappa/bugfix/update-log-indexer 2022-07-11 18:18:20 +02:00
wiz
fd35c8f4ad Merge pull request #2075 from mempool/simon/logger-lightning
Add lightning to logger
2022-07-11 18:18:11 +02:00
wiz
929a4b955c Merge pull request #2074 from mempool/simon/maxmind
Use maxmind to store node locations
2022-07-11 18:18:00 +02:00
softsimon
ca86364c35 Add lightning to logger 2022-07-11 18:02:54 +02:00
wiz
c888d59368 Merge branch 'master' into nymkappa/bugfix/update-log-indexer 2022-07-11 18:01:15 +02:00
wiz
495cd26219 Merge pull request #2070 from erikarvstedt/fix-resources-access
frontend: Always reference `resources` relative to root
2022-07-11 18:01:05 +02:00
softsimon
519494668b Use maxmind to store node locations 2022-07-11 17:52:38 +02:00
wiz
73b2be0a97 Merge branch 'master' into fix-resources-access 2022-07-11 17:12:24 +02:00
wiz
9fce787105 Merge pull request #2073 from mempool/simon/populate-historical-node-data
Populate historical node data
2022-07-11 17:08:28 +02:00
wiz
8c5460c319 Merge pull request #2071 from mempool/wiz/add-maxmind-geoipdb
Add maxmind geoip-db update utility to prod installer
2022-07-11 16:42:24 +02:00
wiz
bd796ae8cc Merge branch 'master' into simon/populate-historical-node-data 2022-07-11 16:42:04 +02:00
wiz
97c05facdb Merge pull request #2072 from erikarvstedt/nxinx-gixy-fixes
nginx: Fix errors found by gixy (nginx conf static analyzer)
2022-07-11 16:41:56 +02:00
wiz
46bed0be29 Merge branch 'master' into simon/populate-historical-node-data 2022-07-11 15:58:58 +02:00
Erik Arvstedt
81bc449043 nginx: Fix gixy test host_spoofing
This patch was generated by replacing:
`proxy_set_header Host $http_host` ->
`proxy_set_header Host $host`

Script:
find . -type f -exec sed -i 's|proxy_set_header Host \$http_host|proxy_set_header Host \$host|g' {} \;

Fixes test error:
```
>> Problem: [host_spoofing] The proxied Host header may be spoofed.
Description: In most cases "$host" variable are more appropriate, just use it.
Additional info: https://github.com/yandex/gixy/blob/master/docs/en/plugins/hostspoofing.md
```

`proxy_set_header Host $host` is indeed the recommended default proxy header setting.
2022-07-11 15:32:37 +02:00
Erik Arvstedt
eec82e1bf9 nginx: Fix gixy test http_splitting
Fixes test error:
```
>> Problem: [http_splitting] Possible HTTP-Splitting vulnerability.
Description: Using variables that can contain "\n" or "\r" may lead to http injection.
```

Summary: `$uri` should never be used in `return` statements.
See: https://github.com/yandex/gixy/blob/master/docs/en/plugins/httpsplitting.md

In this case, `$uri` always equals `/`, so just replace it.
2022-07-11 15:25:42 +02:00
softsimon
1c86273059 Run daily stats at midnight and backfill first launch 2022-07-11 14:45:25 +02:00
wiz
7320fadec9 Add maxmind geoip-db update utility to prod installer 2022-07-11 14:32:38 +02:00
Erik Arvstedt
355e89ce55 frontend URLs: ./resources -> /resources
This patch was created by:
find ./frontend -type f -exec sed -i 's|\./resources|/resources|g' {} \;
2022-07-11 13:33:25 +02:00
Erik Arvstedt
90b9c5fe8a frontend URLs: *../resources -> /resources 2022-07-11 13:32:23 +02:00
wiz
a458cf8ee3 Merge branch 'master' into nymkappa/bugfix/update-log-indexer 2022-07-11 11:31:39 +02:00
wiz
4b3cc7396c Merge pull request #2067 from mempool/nymkappa/feature/block-api-dynamic-caching
Set /block API cache duration according to block age
2022-07-11 11:30:45 +02:00
wiz
e86c5987e3 Merge branch 'master' into nymkappa/feature/block-api-dynamic-caching 2022-07-11 11:19:03 +02:00
wiz
65ce49817c Merge pull request #2066 from mempool/nymkappa/bugfix/graph-buttons
Fix graphs button layout
2022-07-11 11:18:01 +02:00
nymkappa
38ac38849e [Indexer] Set log level accordingly - Remove indexing ETAs 2022-07-11 11:07:41 +02:00
wiz
960c31a3c7 Merge branch 'master' into nymkappa/bugfix/graph-buttons 2022-07-11 10:57:33 +02:00
wiz
38fa8de01f Merge pull request #2065 from mempool/nymkappa/bugfix/liquid-block-api
Liquid always uses esplora (regression of #2039)
2022-07-11 10:56:42 +02:00
nymkappa
a4641b8480 Set /block API cache duration according to block age 2022-07-11 09:53:32 +02:00
nymkappa
f2e703e928 Fix graphs button layout 2022-07-11 09:36:42 +02:00
nymkappa
0093eab269 Liquid always uses esplora (regression of #2039) 2022-07-11 08:41:28 +02:00
wiz
b8b50b552e Merge pull request #2026 from mempool/dependabot/npm_and_yarn/frontend/tinyify-3.1.0
Bump tinyify from 3.0.0 to 3.1.0 in /frontend
2022-07-10 19:35:00 +02:00
softsimon
665d85204b Backfill node_stats 2022-07-10 19:28:21 +02:00
wiz
291277f299 Merge branch 'master' into dependabot/npm_and_yarn/frontend/tinyify-3.1.0 2022-07-10 19:24:39 +02:00
wiz
8c94ef4a03 Merge pull request #1981 from mempool/nymkappa/feature/ln-chart-in-graph-component
Add LN charts into `/graphs` and add timespan selection
2022-07-10 19:17:42 +02:00
nymkappa
ed3aa7f516 Add Lightning charts in /graph 2022-07-10 19:03:50 +02:00
wiz
37f731d21c Merge pull request #1980 from mempool/nymkappa/feature/channels-stats-widget
Index LN channels stats and show them in dashboard widget
2022-07-10 17:52:31 +02:00
softsimon
4ccaafcd63 Removing empty column 2022-07-10 17:40:46 +02:00
wiz
c8e090149a Fix kappa's accidental search and replace 2022-07-10 17:28:47 +02:00
wiz
9c6a28d9b0 Fix number of arguments in SQL query 2022-07-10 17:24:43 +02:00
nymkappa
9000b6b18e Index daily channel stats and show in dashboard widget 2022-07-10 17:09:01 +02:00
wiz
4009a066e0 Merge pull request #1978 from mempool/nymkappa/feature/ln-nodes-networks
Add nodes per network chart component
2022-07-10 16:42:09 +02:00
nymkappa
d2135a374a Add nodes per network chart component 2022-07-10 16:22:53 +02:00
wiz
e8a3b104f8 Merge pull request #2059 from mempool/nymkappa/bugfix/diff-rounding
Don't round signet difficulty in table and chart
2022-07-10 16:17:00 +02:00
wiz
5437beedef Merge branch 'master' into nymkappa/bugfix/diff-rounding 2022-07-10 15:08:50 +02:00
wiz
b7709ac3d0 Merge pull request #1976 from mempool/simon/lightning-pr
Lightning
2022-07-10 15:08:37 +02:00
wiz
a638369a57 Bump version to v2.5.0-dev 2022-07-10 14:53:57 +02:00
wiz
22bd8c4bf8 Fix HTTP 501 -> HTTP 400 suggestions in PR review 2022-07-10 14:51:09 +02:00
nymkappa
eb71276948 Don't round signet difficulty in table and chart 2022-07-10 14:32:15 +02:00
softsimon
18030ba33e Updating backend package-lock 2022-07-10 14:23:12 +02:00
softsimon
2129146838 Revert "Updating package lock"
This reverts commit bd89bf885d.
2022-07-10 14:21:33 +02:00
softsimon
b6a113f05c Fixing titles. 2022-07-10 14:07:53 +02:00
softsimon
bd89bf885d Updating package lock 2022-07-10 14:03:49 +02:00
wiz
7d3c105b29 Merge branch 'master' into simon/lightning-pr 2022-07-10 14:00:02 +02:00
wiz
a99b52a735 Merge pull request #2057 from mempool/simon/transifex-pull-0710
Pull from transifex
2022-07-10 13:57:58 +02:00
wiz
e58b71fd4f Merge pull request #2052 from mempool/nymkappa/bugfix/blocks-list-pagination-error
Fix pagination issue in blocks list
2022-07-10 13:56:38 +02:00
wiz
59d10fd3c6 Merge pull request #2051 from mempool/nymkappa/bugfix/diff-adj-table-raw-db-data
Fix diff adj table using raw db value
2022-07-10 13:14:56 +02:00
wiz
30e8b134bc Merge branch 'master' into nymkappa/bugfix/diff-adj-table-raw-db-data 2022-07-10 12:56:30 +02:00
nymkappa
cdf0fe0335 Fix first diff adjustmeent if INDEXING_BLOCK_AMOUNT is not -1 2022-07-10 12:39:22 +02:00
nymkappa
f4667c0892 Use raw diff adjustment for diff adj table widget 2022-07-10 12:39:21 +02:00
wiz
ac257b4165 Merge branch 'master' into nymkappa/bugfix/blocks-list-pagination-error 2022-07-10 12:37:51 +02:00
wiz
75ab2bc920 Merge pull request #2054 from mempool/nymkappa/bugfix/dont-insert-price-no-usd
Ignore prices without USD exchange rate
2022-07-10 12:37:43 +02:00
wiz
307c30e33b Merge pull request #2056 from mempool/nymkappa/feature/config-automatic-block-reindex
Disable automatic block re-indexing by default
2022-07-10 12:36:43 +02:00
softsimon
c7835b1326 Pull from transifex 2022-07-10 12:29:19 +02:00
wiz
7e389c8863 Merge branch 'master' into nymkappa/bugfix/dont-insert-price-no-usd 2022-07-10 12:17:08 +02:00
wiz
d697c0c45e Merge branch 'master' into nymkappa/feature/config-automatic-block-reindex 2022-07-10 12:10:38 +02:00
wiz
4fa4088694 Merge pull request #2033 from mempool/nymkappa/bugfix/cleanup-hashrate-indexing
Fix hashrate indexing, log difficulty adjustment progress
2022-07-10 12:06:34 +02:00
nymkappa
07cb4a49bc Index weekly mining pool hashrate only if there are blocks mined 2022-07-09 22:34:18 +02:00
nymkappa
067ee168dd Use oldest consecutive block timestamp as hashrate indexing limit 2022-07-09 22:11:27 +02:00
nymkappa
d8a90cce47 Use raw db hashrate instead of avg for indexing 2022-07-09 22:11:27 +02:00
nymkappa
e303a4c374 Removed hardcoded genesis timestamp
Fix duplicated genesis hashrate attempt
Add log during difficulty adjustment indexing
2022-07-09 22:11:26 +02:00
wiz
c75f485e54 Merge pull request #1999 from mempool/nymkappa/bugfix/schedule-indexing-updates
Run the mining indexer every hour to index missing/updated data
2022-07-09 20:07:21 +02:00
nymkappa
f3f0c688d8 Disable automatic block re-indexing by default 2022-07-09 19:04:35 +02:00
nymkappa
030020ea9e Run the mining indexer every hour to index missing/updated data 2022-07-09 18:25:16 +02:00
Felipe Knorr Kuhn
654e7589a6 Merge branch 'knorrium/backend_unit_tests' of github.com:knorrium/mempool into knorrium/backend_unit_tests 2022-07-09 07:38:52 -07:00
Felipe Knorr Kuhn
de8d3d7e3e Add missing dependencies 2022-07-09 07:38:27 -07:00
Felipe Knorr Kuhn
d2bae2fa8b Merge branch 'master' into knorrium/backend_unit_tests 2022-07-09 16:36:10 +02:00
Felipe Knorr Kuhn
057b1c7569 Merge branch 'master' into dependabot/npm_and_yarn/frontend/tinyify-3.1.0 2022-07-09 16:34:28 +02:00
nymkappa
682682c74a Ignore prices without USD exchange rate 2022-07-09 16:13:01 +02:00
nymkappa
b5daf205a0 Fix pagination issue in blocks list 2022-07-09 16:02:43 +02:00
wiz
1037fbe52b Merge pull request #2041 from Emzy/ops/freebsd-nginx-conf
Install nginx config also for freebsd on prod install
2022-07-09 14:33:24 +02:00
wiz
051d151fb7 Merge pull request #2002 from mempool/nymkappa/feature/automatic-block-reindexing
Automatic block re-indexing upon pools.json update
2022-07-09 13:28:44 +02:00
Felipe Knorr Kuhn
9b6bbaf51c Merge branch 'master' into knorrium/backend_unit_tests 2022-07-09 00:08:49 +02:00
Felipe Knorr Kuhn
735a069b6d Merge branch 'master' into dependabot/npm_and_yarn/frontend/tinyify-3.1.0 2022-07-09 00:04:51 +02:00
Felipe Knorr Kuhn
7ba7440bb6 Merge branch 'master' into nymkappa/feature/automatic-block-reindexing 2022-07-09 00:04:35 +02:00
wiz
dafbd5cc43 Merge branch 'master' into simon/lightning-pr 2022-07-08 18:56:33 +02:00
wiz
81f20e53ea Merge pull request #2043 from mempool/translations_frontend-src-locale-messages-xlf--master_nb
Translate '/frontend/src/locale/messages.xlf' in 'nb'
2022-07-08 18:56:09 +02:00
wiz
05a2c05a9e Merge pull request #2044 from mempool/translations_frontend-src-locale-messages-xlf--master_fr
Translate '/frontend/src/locale/messages.xlf' in 'fr'
2022-07-08 18:55:44 +02:00
softsimon
c6d56f06b2 Import echarts for the lightning module more efficiently 2022-07-08 18:55:35 +02:00
softsimon
73c4a934ce Replacing ln-service library and wait for graph sync. 2022-07-08 18:55:35 +02:00
softsimon
1f2254681a Search result fix when Lightning not enabled 2022-07-08 18:55:26 +02:00
softsimon
850060cc07 Search result click fix. 2022-07-08 18:55:26 +02:00
softsimon
89c4023ddf Fix for search box tests 2022-07-08 18:55:26 +02:00
softsimon
17a6b7fefd Restoring the TV button 2022-07-08 18:55:26 +02:00
softsimon
71b304cafd Renaming config LND_NODE_AUTH to LND 2022-07-08 18:55:26 +02:00
nymkappa
a238420d7f Merge Lightning backend into Mempool backend 2022-07-08 18:55:26 +02:00
softsimon
faafa6db3b Backfill node and capacity 2022-07-08 18:55:26 +02:00
softsimon
1f6008f269 Store channel closing date 2022-07-08 18:55:25 +02:00
softsimon
d32579dfb5 Adding missing *.json files 2022-07-08 18:55:25 +02:00
softsimon
cea7ce140f Making socket configurable 2022-07-08 18:55:25 +02:00
softsimon
3ecce35b11 Minor tls spelling fix 2022-07-08 18:55:25 +02:00
softsimon
a8fd04e2f0 Adding missing migration index key 2022-07-08 18:55:25 +02:00
softsimon
f2e42b17a7 Fix TLS misspelling 2022-07-08 18:55:25 +02:00
softsimon
f46543b264 Node graphs 2022-07-08 18:55:25 +02:00
softsimon
d8a39f2e49 Timestamp component 2022-07-08 18:55:24 +02:00
softsimon
24631116c4 Dashboard stats graph 2022-07-08 18:55:24 +02:00
softsimon
3152effba5 Sats component rounding 2022-07-08 18:55:24 +02:00
softsimon
4d83478e7d Adding TLV to channel details 2022-07-08 18:55:24 +02:00
softsimon
da9834d272 Label channel closes 2022-07-08 18:55:24 +02:00
softsimon
4bb23cf0c8 Closed channels forensics 2022-07-08 18:55:24 +02:00
softsimon
f0ad38dec6 Search fix. Channel update. 2022-07-08 18:55:24 +02:00
softsimon
b87308e14f Merge conflict fix. 2022-07-08 18:55:24 +02:00
softsimon
473cb55dc4 Channel pagination 2022-07-08 18:55:23 +02:00
softsimon
11a7babbc4 Improving channels api with node data 2022-07-08 18:55:23 +02:00
softsimon
9ebc8813e3 Node and Channel pages improvements 2022-07-08 18:55:23 +02:00
softsimon
ac10aafc07 More node info 2022-07-08 18:55:23 +02:00
softsimon
8604869e5e Search bar refactored with Nodes and Channels 2022-07-08 18:55:23 +02:00
softsimon
1ed4c93b94 Search API 2022-07-08 18:55:23 +02:00
softsimon
caadae3f98 Updated migration script with latest database model. 2022-07-08 18:55:23 +02:00
softsimon
67eab93129 Link channels from Transaction page. 2022-07-08 18:55:23 +02:00
softsimon
31d280f729 Adding Lightning wrapper component 2022-07-08 18:55:22 +02:00
softsimon
d23e5d0e87 Node qr code 2022-07-08 18:55:22 +02:00
softsimon
774215a073 Socket selector and copy 2022-07-08 18:55:22 +02:00
softsimon
07821769cd Node stats updates 2022-07-08 18:55:22 +02:00
softsimon
b0b73e6c70 Adding channel id in addition to short id 2022-07-08 18:55:22 +02:00
softsimon
7e1c2f4f40 Find inactive channels with dead nodes. 2022-07-08 18:55:22 +02:00
softsimon
65c731e1ad Channel status 2022-07-08 18:55:22 +02:00
softsimon
795bb6a7a6 Channel component 2022-07-08 18:55:22 +02:00
softsimon
f5325b3a6d Node and channel API 2022-07-08 18:55:21 +02:00
softsimon
8d622e3606 Store and display stats and node top lists 2022-07-08 18:55:21 +02:00
softsimon
3e6af8e87b Store nodes and channels 2022-07-08 18:55:21 +02:00
softsimon
948f905a66 Store network stats 2022-07-08 18:55:21 +02:00
softsimon
93b398a54f Lightning explorer base structure 2022-07-08 18:55:21 +02:00
wiz
44b1daeed2 Merge pull request #2046 from knorrium/knorrium/fix-package-lock
Fix missing dependencies
2022-07-08 18:55:17 +02:00
Felipe Knorr Kuhn
bed266abac Fix missing dependencies 2022-07-08 09:40:14 -07:00
wiz
8487548271 Merge pull request #2045 from mempool/wiz/update-nodejs-v16.16.0
Update to Node.js v16.16.0, use shared zlib for prod
2022-07-08 18:33:06 +02:00
wiz
c5e8a83ebb Update to Node.js v16.16.0, use shared zlib for prod 2022-07-08 17:22:56 +02:00
transifex-integration[bot]
b6f81bc83a Translate /frontend/src/locale/messages.xlf in nb
review completed for the source file '/frontend/src/locale/messages.xlf'
on the 'nb' language.
2022-07-08 15:07:38 +00:00
transifex-integration[bot]
294c278c42 Translate /frontend/src/locale/messages.xlf in fr
review completed for the source file '/frontend/src/locale/messages.xlf'
on the 'fr' language.
2022-07-08 15:07:38 +00:00
wiz
ff88a65936 Merge pull request #2036 from mempool/simon/amount-string-merge
Renaming value -> amount
2022-07-08 17:07:23 +02:00
wiz
76c7508224 Merge pull request #2037 from knorrium/knorrium/node_matrix
Run the CI action on 16 and 18
2022-07-08 17:06:51 +02:00
dependabot[bot]
49723c4d1b Bump tinyify from 3.0.0 to 3.1.0 in /frontend
Bumps [tinyify](https://github.com/browserify/tinyify) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/browserify/tinyify/releases)
- [Changelog](https://github.com/browserify/tinyify/blob/default/CHANGELOG.md)
- [Commits](https://github.com/browserify/tinyify/compare/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: tinyify
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-08 15:05:02 +00:00
wiz
3c02131133 Merge pull request #2042 from mempool/simon/revert-angular-14-upgrade
Revert: Angular 14 upgrade
2022-07-08 17:03:49 +02:00
wiz
c89fd8c39f Merge pull request #2040 from Emzy/ops/disable-dialog
Remove the dialog for now on prod install
2022-07-08 16:55:40 +02:00
wiz
69623d71b2 Merge pull request #2039 from mempool/nymkappa/bugfix/use-core-for-block-list
Use bitcoin core to fetch blocks
2022-07-08 16:50:34 +02:00
softsimon
2d6f4d3bdb Revert: Angular 14 upgrade 2022-07-08 16:45:24 +02:00
nymkappa
97ff1e37aa Use bitcoin core instead of esplore for fetch blocks on bitcoin networks 2022-07-08 16:34:00 +02:00
Stephan Oeste
d0381e7850 Install nginx config also for freebsd on prod install 2022-07-08 15:59:39 +02:00
wiz
c4638f2ac5 Merge pull request #2035 from Emzy/ops/build-mempool
Add mempool build as final step on prod install
2022-07-08 15:34:50 +02:00
wiz
83c383b1ec Print onions on separate lines after prod install 2022-07-08 15:34:10 +02:00
Stephan Oeste
4f22864080 Add mempool build as final step on prod install 2022-07-08 15:29:59 +02:00
Stephan Oeste
92780daa78 Remove the dialog for now on prod install 2022-07-08 15:26:13 +02:00
Felipe Knorr Kuhn
a5e4b09e64 Set fail fast to false on the frontend jobs 2022-07-08 05:13:26 -07:00
Felipe Knorr Kuhn
1501dd23ab Continue running CI jobs if something fails 2022-07-08 04:49:51 -07:00
Felipe Knorr Kuhn
15ab134fa4 Run the CI action on 16 and 18 2022-07-08 04:44:19 -07:00
softsimon
05f0ba72e2 Renaming value -> amount 2022-07-08 13:31:10 +02:00
Felipe Knorr Kuhn
15fcbf18bf Merge branch 'master' into knorrium/backend_unit_tests 2022-07-08 13:14:33 +02:00
wiz
c9c5e8008c Merge pull request #2030 from mempool/simon/angular-14-upgrade
Angular 14 Upgrade
2022-07-08 12:10:10 +02:00
wiz
bdd3af6b6a Merge pull request #2032 from Emzy/ops/fix-elements-service
Fix service name to elements and add elements testnet for prod install
2022-07-08 11:57:36 +02:00
Stephan Oeste
6582c8b36f Fix service name to elements and add elements testnet for prod install 2022-07-08 11:54:26 +02:00
wiz
be838ec313 Merge pull request #2031 from Emzy/ops/fix-echo
Quote echo output in prod install
2022-07-08 11:33:03 +02:00
Stephan Oeste
92eef3a6c1 Quote echo output in prod install 2022-07-08 11:05:45 +02:00
softsimon
63939981c1 Angular 14 Upgrade 2022-07-08 10:44:07 +02:00
Felipe Knorr Kuhn
fc629d7109 Merge branch 'master' into knorrium/backend_unit_tests 2022-07-07 15:57:14 -07:00
wiz
c9f788e3a4 Merge pull request #2012 from Emzy/ops/nginx-linux-patch
Installing Linux nginx config in prod install
2022-07-07 22:52:16 +02:00
wiz
0a866b468a Merge branch 'master' into nymkappa/feature/automatic-block-reindexing 2022-07-07 22:41:26 +02:00
wiz
8f0f755014 Merge pull request #2020 from mempool/nymkappa/bugfix/duplicate-genesis-hashrate-indexing
[Hashrate indexing] - Signet started in 2020 and not in 2009
2022-07-07 22:41:07 +02:00
Felipe Knorr Kuhn
6a802d7e80 Merge branch 'master' into knorrium/backend_unit_tests 2022-07-07 13:08:50 -07:00
nymkappa
5943b88ffe [Hashrate indexing] - Signet started in 2020 and not in 2009 2022-07-07 21:55:28 +02:00
Felipe Knorr Kuhn
7bc3ece5b5 Change @bable/core to the devDependencies 2022-07-07 12:54:47 -07:00
wiz
c5dfe92e60 Merge pull request #2017 from mempool/translations_frontend-src-locale-messages-xlf--master_nb
Translate '/frontend/src/locale/messages.xlf' in 'nb'
2022-07-07 21:52:13 +02:00
wiz
753cf3cbac Merge pull request #2018 from mempool/translations_frontend-src-locale-messages-xlf--master_fr
Translate '/frontend/src/locale/messages.xlf' in 'fr'
2022-07-07 21:52:04 +02:00
Felipe Knorr Kuhn
1b9100a7f7 Reduce the coverage threshold to 1% 2022-07-07 12:49:21 -07:00
Felipe Knorr Kuhn
af27d68add Fix errors while building in prod mode 2022-07-07 12:47:31 -07:00
Felipe Knorr Kuhn
07610c7ed0 Fix backend dependencies again 2022-07-07 12:38:50 -07:00
Felipe Knorr Kuhn
6bb1b8a64c Fix duplicate key in tsconfig 2022-07-07 12:38:16 -07:00
Felipe Knorr Kuhn
90dd78c2ec Update package-lock 2022-07-07 12:35:47 -07:00
Felipe Knorr Kuhn
dc258da6c0 Add missing tsconfig file 2022-07-07 12:33:04 -07:00
Felipe Knorr Kuhn
2c222c36d2 Fix package-lock merge conflicts 2022-07-07 12:30:42 -07:00
Felipe Knorr Kuhn
3c92919359 Enable unit testing on the backend on the CI 2022-07-07 12:23:21 -07:00
Felipe Knorr Kuhn
f36fa62569 Add unit tests for the backend: Config 2022-07-07 12:22:08 -07:00
Felipe Knorr Kuhn
451e36e288 Update gitignore 2022-07-07 12:21:41 -07:00
Felipe Knorr Kuhn
352f0817d9 Add Jest to support backend unit tests 2022-07-07 12:21:30 -07:00
wiz
4a64984d7f Merge pull request #2014 from mempool/wiz/cleanup-package-lock
Remove unused deps from backend/package-lock.json
2022-07-07 21:13:50 +02:00
Stephan Oeste
eeb84e5d42 Installing Linux nginx config in prod install 2022-07-07 21:09:00 +02:00
transifex-integration[bot]
50cd8c80d8 Translate /frontend/src/locale/messages.xlf in fr
review completed for the source file '/frontend/src/locale/messages.xlf'
on the 'fr' language.
2022-07-07 18:55:27 +00:00
wiz
567d4aebbc Merge branch 'master' into nymkappa/feature/automatic-block-reindexing 2022-07-07 20:55:08 +02:00
Felipe Knorr Kuhn
b53cc4c37c Merge branch 'master' into wiz/cleanup-package-lock 2022-07-07 11:41:59 -07:00
wiz
d46e1abd07 Merge pull request #2011 from mempool/wiz/fix-npm-install-no-optional
Fix npm install commands in Dockerfiles and ops scripts
2022-07-07 20:37:34 +02:00
wiz
0b0c0b458f Merge branch 'master' into wiz/fix-npm-install-no-optional 2022-07-07 20:36:58 +02:00
wiz
997b5a1c9d Merge pull request #2015 from mempool/simon/adding-dropdown-component-to-project
Moving ngx-bootrap-multiselect to the project
2022-07-07 20:36:35 +02:00
transifex-integration[bot]
4345661a0b Translate /frontend/src/locale/messages.xlf in nb
review completed for the source file '/frontend/src/locale/messages.xlf'
on the 'nb' language.
2022-07-07 18:30:31 +00:00
softsimon
5867c79a1f Moving ngx-bootrap-multiselect to the project 2022-07-07 20:14:58 +02:00
wiz
41f0619572 Merge pull request #2013 from Emzy/ops/set-user-ulimit
Set ulimit highter for all users in prod install
2022-07-07 19:56:38 +02:00
wiz
96b4ea6b50 Merge pull request #1998 from Emzy/ops/fix-linux-crontab
Make user crontab reliable in prod install script
2022-07-07 19:56:06 +02:00
wiz
8dda51a92a Remove unused deps from backend/package-lock.json 2022-07-07 19:33:43 +02:00
Stephan Oeste
b4bb54212c Set ulimit highter for all users in prod install 2022-07-07 19:22:47 +02:00
wiz
d57193c269 Fix npm install commands in Dockerfiles and ops scripts 2022-07-07 18:53:17 +02:00
wiz
4bc03c2d60 Merge branch 'master' into nymkappa/feature/automatic-block-reindexing 2022-07-07 18:21:04 +02:00
Stephan Oeste
bf969ec8f7 Make user crontab reliable in prod install script 2022-07-07 17:13:09 +02:00
wiz
6ead907e08 Merge pull request #1953 from mononaut/breathe-effect-framerate
limit pulsing blocks animation frame rate to 30FPS
2022-07-07 16:56:18 +02:00
wiz
243168a450 Merge branch 'master' into breathe-effect-framerate 2022-07-07 16:43:03 +02:00
wiz
06d2cf1b88 Merge pull request #2010 from mempool/simon/transifex-pull-0707
Pulled from Transifex
2022-07-07 16:42:24 +02:00
softsimon
d622162f33 Pulled from Transifex 2022-07-07 16:40:18 +02:00
wiz
12807583c2 Merge pull request #2003 from mempool/ops/fix-npm-install-prod
Add `--prod` to `npm install` in ops scripts
2022-07-07 16:36:11 +02:00
wiz
47f3d539c3 Merge pull request #2004 from mempool/nymkappa/bugfix/jumping-pagination
Set pagination font to monospace
2022-07-07 16:35:29 +02:00
wiz
993cd64126 Merge pull request #2008 from mempool/wiz/fix-mononaut-tooltip-width
Increase width of mononaut transaction tooltip
2022-07-07 16:34:56 +02:00
softsimon
a0e32ab0bd Auto resize block overview tooltip 2022-07-07 16:25:26 +02:00
wiz
409763b885 Merge pull request #2009 from mempool/simon/bisq-graphs-resize
Auto resize graphs on window resize
2022-07-07 15:58:55 +02:00
softsimon
e06819fc6f Auto resize graphs on window resize
fixes #1607
2022-07-07 15:46:13 +02:00
wiz
812783f2cd Increase width of mononaut transaction tooltip
Fixes #2007
2022-07-07 15:43:03 +02:00
Felipe Knorr Kuhn
849373a6d3 Merge branch 'master' into breathe-effect-framerate 2022-07-07 06:36:17 -07:00
wiz
0417d3b70d Merge pull request #2006 from mempool/simon/block-predictions-i18n-string
Merging the 3 "block predictions" i18n string into 1
2022-07-07 15:06:40 +02:00
wiz
a55eb653f9 Merge branch 'master' into simon/block-predictions-i18n-string 2022-07-07 14:53:08 +02:00
softsimon
6b05ed764e Renaming Predictions to Prediction 2022-07-07 14:52:26 +02:00
wiz
766eeb2a6f Merge pull request #2001 from Emzy/ops/fix-bitcoin-startup
Fix startup scripts in prod install
2022-07-07 14:39:02 +02:00
softsimon
753e6bd956 Merging the 3 block predictions title into 1 i18n string 2022-07-07 14:33:33 +02:00
wiz
5e6295d79a Merge pull request #2005 from mempool/simon/transifex-0707
Extracting i18n strings
2022-07-07 14:22:32 +02:00
wiz
3b611275d2 Merge pull request #2000 from mempool/knorrium/prettier
Add editorconfig and prettier integration with eslint
2022-07-07 14:21:31 +02:00
wiz
cb4dac3506 Merge remote-tracking branch 'origin/master' into knorrium/prettier 2022-07-07 14:13:06 +02:00
wiz
9a7dc3fa49 Merge pull request #1986 from knorrium/mining_e2e_tests_v2
Mining e2e tests
2022-07-07 14:10:12 +02:00
softsimon
e1c833872e Extracting i18n strings 2022-07-07 14:03:18 +02:00
nymkappa
5de559f5ad Set pagination font to monospace 2022-07-07 14:00:54 +02:00
wiz
bc068a0d9a Add --prod to npm install in ops scripts 2022-07-07 13:59:51 +02:00
wiz
13ccc96e03 Merge branch 'master' into mining_e2e_tests_v2 2022-07-07 13:50:23 +02:00
wiz
bc56878039 Merge pull request #1997 from mempool/knorrium/gha_triggers
Update CI to trigger on PRs and exclude from ops activities
2022-07-07 13:50:10 +02:00
wiz
8cb2149fbd Merge pull request #1996 from mempool/knorrium/clean_be_deps
Remove TSLint from the backend
2022-07-07 13:49:40 +02:00
wiz
7d7c331238 Merge pull request #1994 from mempool/update_cypress
Update Cypress related dependencies
2022-07-07 13:49:07 +02:00
Felipe Knorr Kuhn
a8d58d14ff Merge branch 'master' into mining_e2e_tests_v2 2022-07-07 04:47:31 -07:00
nymkappa
4723a9d41b Re-index related blocks when mining pool.json changes 2022-07-07 13:41:09 +02:00
Stephan Oeste
4ee9a42f3f Fix startup scripts in prod install 2022-07-07 12:19:51 +02:00
Felipe Knorr Kuhn
aae2dec16d Add editorconfig and prettier integration with eslint 2022-07-07 03:02:02 -07:00
Felipe Knorr Kuhn
43e0fe655e Update CI to trigger on PRs and exclude from ops activities 2022-07-06 16:29:38 -07:00
Felipe Knorr Kuhn
958d77ed6c Merge branch 'master' into knorrium/clean_be_deps 2022-07-06 15:11:18 -07:00
wiz
ad32ba8a98 Merge pull request #1991 from mempool/fix_electrum_api
Fix electrum API encoding
2022-07-07 00:10:32 +02:00
Felipe Knorr Kuhn
d7847c7630 Merge branch 'master' into mining_e2e_tests_v2 2022-07-06 15:04:08 -07:00
Felipe Knorr Kuhn
284e6e5720 Merge branch 'master' into fix_electrum_api 2022-07-06 14:58:13 -07:00
Felipe Knorr Kuhn
4223bb2047 Merge branch 'master' into knorrium/clean_be_deps 2022-07-06 14:57:59 -07:00
wiz
0fa18be43e Merge pull request #1995 from erikarvstedt/improve-ci
Minor CI improvements
2022-07-06 23:57:25 +02:00
Felipe Knorr Kuhn
43f2faa077 Merge branch 'master' into improve-ci 2022-07-06 14:47:45 -07:00
wiz
f9dfbf94ef Merge branch 'master' into breathe-effect-framerate 2022-07-06 23:45:29 +02:00
wiz
3424bb9d6a Merge pull request #1952 from antonilol/qrcodes
set error correction level to low for qr codes
2022-07-06 23:45:02 +02:00
Erik Arvstedt
6288bcde51 CI: Add --no-optional flag to prod flavor
This ensures that the packages build successfully even when optional
deps are unavailable.
`--no-optional` currently has no effect on the backend, because
it has no optional packages.
2022-07-06 23:43:09 +02:00
Erik Arvstedt
80476a2b61 CI: Use npm ci instead of npm install
`npm ci` is recommended instead of `npm install` for automated builds.
Its main advantage is the `package-lock.json` consistency check: The
command fails if the lock file doesn't match `package.json`.
2022-07-06 23:38:06 +02:00
Erik Arvstedt
78ee671051 CI/frontend: Add missing install flag for prod flavor
Also restrict linting, which requires dev packages, to the `dev`
flavor.
This makes the frontend build setup indentical to the backend.
2022-07-06 23:38:05 +02:00
Erik Arvstedt
386a2de117 contributors: Add erikarvstedt 2022-07-06 23:38:04 +02:00
Felipe Knorr Kuhn
70b2731b82 Remove TSLint from the backend 2022-07-06 14:36:50 -07:00
Felipe Knorr Kuhn
ae3f8b8bd5 Merge branch 'master' into update_cypress 2022-07-06 14:33:17 -07:00
Felipe Knorr Kuhn
2d888d7c13 Merge branch 'master' into fix_electrum_api 2022-07-06 14:33:02 -07:00
wiz
98db8b1b25 Merge branch 'master' into qrcodes 2022-07-06 23:31:01 +02:00
wiz
f710ffb7d0 Merge pull request #1954 from mempool/simon/block-error-code
Block error status code missing fix
2022-07-06 23:30:55 +02:00
wiz
b702782c27 Merge pull request #1993 from mempool/clean_fe_deps
Remove frontend dependencies and old tests
2022-07-06 23:30:41 +02:00
wiz
5dc7fe6a72 Merge pull request #1949 from mempool/feature/nymkappa/block-audit
Save block predictions results in db and show results in a chart
2022-07-06 23:29:42 +02:00
Felipe Knorr Kuhn
39e8f75e07 Merge branch 'clean_fe_deps' of github.com:mempool/mempool into clean_fe_deps 2022-07-06 13:50:54 -07:00
Felipe Knorr Kuhn
f4e0b1125c Disable Scarf dependency from ngx-infinite-scroll 2022-07-06 13:50:02 -07:00
Felipe Knorr Kuhn
663bd118a5 Merge branch 'master' into fix_electrum_api 2022-07-06 13:36:36 -07:00
Felipe Knorr Kuhn
2a8e2d2d25 Merge branch 'master' into clean_fe_deps 2022-07-06 13:36:11 -07:00
Felipe Knorr Kuhn
83a08b0f74 Merge branch 'master' into update_cypress 2022-07-06 13:35:09 -07:00
nymkappa
0887428066 Save block predictions results in db and show results in a chart 2022-07-06 22:27:45 +02:00
Felipe Knorr Kuhn
1c018d18bd Update Cypress related dependencies 2022-07-06 13:24:04 -07:00
wiz
8040abaec4 Merge pull request #1940 from mempool/nymkappa/feature/price-columns
Replace json `prices.avg_prices` with table columns - update prices logs
2022-07-06 22:22:11 +02:00
Felipe Knorr Kuhn
a2e2b36a76 Remove frontend dependencies and old tests 2022-07-06 13:13:59 -07:00
wiz
f17998cfce Merge branch 'master' into nymkappa/feature/price-columns 2022-07-06 22:13:46 +02:00
wiz
421375ba62 Merge pull request #1947 from hunicus/vb-wu-svb-faq-2
Add faq on vb, wu, and sat/vb
2022-07-06 22:13:40 +02:00
wiz
db1289f985 Merge branch 'master' into nymkappa/feature/price-columns 2022-07-06 22:13:25 +02:00
wiz
f5271bc7b4 Merge pull request #1935 from mempool/nymkappa/bugfix/handle-error-pool-hashrate
Handle pool dominance query error with 0 indexed blocks
2022-07-06 22:02:25 +02:00
wiz
1117324a7b Fix typo in weight units FAQ 2022-07-06 21:58:35 +02:00
wiz
57276b7abd Merge branch 'master' into nymkappa/bugfix/handle-error-pool-hashrate 2022-07-06 21:54:14 +02:00
wiz
b0c334fbe3 Merge pull request #1928 from mempool/nymkappa/feature/hashrate-resolution
Add resolution scaling to hashrate and difficulty chart
2022-07-06 21:52:49 +02:00
nymkappa
7a8fa6e056 Remove debug log 2022-07-06 21:41:12 +02:00
Felipe Knorr Kuhn
72c4ea0065 Fix crypto library usage for the Electrum API 2022-07-06 12:34:54 -07:00
Felipe Knorr Kuhn
1805b74edf Add types for cryptojs 2022-07-06 12:25:30 -07:00
wiz
327b2aa070 Merge branch 'master' into nymkappa/feature/hashrate-resolution 2022-07-06 21:10:18 +02:00
wiz
fdc3e7a95f Merge pull request #1938 from mempool/simon/npm-upgrade-0626
Upgrading npm packages
2022-07-06 21:09:42 +02:00
nymkappa
9ed7b2aad3 Add hashrate & difficulty chart resolution scaling 2022-07-06 21:03:55 +02:00
softsimon
42188dcef5 Upgrade packages - backend 2022-07-06 20:47:10 +02:00
softsimon
2b2f4f05b6 Upgrading frontend npm packages 2022-07-06 20:47:10 +02:00
wiz
f5dab6f215 Merge pull request #1931 from TechMiX/rtlFixes3
fix various RTL layout issues
2022-07-06 20:29:06 +02:00
wiz
2911fbe5e4 Merge branch 'master' into rtlFixes3 2022-07-06 20:09:04 +02:00
wiz
92d7519d8d Merge pull request #1930 from mempool/nymkappa/bugfix/retry-indexing-upon-error
If indexing fails try again in 10 seconds
2022-07-06 20:08:58 +02:00
wiz
e94938d5dd Merge branch 'master' into nymkappa/bugfix/retry-indexing-upon-error 2022-07-06 19:29:31 +02:00
Felipe Knorr Kuhn
950d874b9b Merge branch 'master' into mining_e2e_tests_v2 2022-07-06 10:22:09 -07:00
wiz
81c68620a1 Merge pull request #1985 from Emzy/ops/install-linux-crontab
Add crontab creation for linux and bitcoin-minfee.service in prod install
2022-07-06 19:02:27 +02:00
Felipe Knorr Kuhn
9d832f9bfc Add initial mining dashboard tests 2022-07-06 10:01:05 -07:00
Felipe Knorr Kuhn
460ff68a52 Add test locators to the mining dashboard elements 2022-07-06 10:00:32 -07:00
wiz
96007509b5 Merge pull request #1979 from Emzy/ops/cpu-count
Limit make to max cpus in prod install
2022-07-06 18:51:53 +02:00
wiz
bb74a25adc Merge pull request #1977 from Emzy/ops/fix-shebang-scripts
Disable confirmation prompt for rust and change shebang in scripts to be universal for prod install
2022-07-06 18:51:18 +02:00
wiz
c36cad4619 Merge pull request #1983 from mempool/ops/nginx-refactor-for-lightning
Refactor nginx.conf and other ops scripts for lightning
2022-07-06 18:38:16 +02:00
Stephan Oeste
989c74699f Add crontab creation for linux and bitcoin-minfee.service in prod install 2022-07-06 18:31:31 +02:00
wiz
fa92ba4478 Refactor nginx.conf and other ops scripts for lightning 2022-07-06 17:13:09 +02:00
Stephan Oeste
e8829e21e7 Limit make to max cpus in prod install 2022-07-06 14:41:11 +02:00
TechMiX
d61e599de0 revert right alignments on transaction page 2022-07-06 15:29:52 +04:30
Stephan Oeste
4a6f3e189d Change shebang in scripts to be universal for prod install 2022-07-06 12:11:13 +02:00
Stephan Oeste
7154d755c1 Disable confirmation prompt for rust install in prod install script 2022-07-06 11:46:46 +02:00
nymkappa
307ee50798 Handle gracefuly query to pool dominance when there is no indexed block #1913 2022-07-06 11:00:41 +02:00
nymkappa
e8175a90f4 Replace json prices.avg_prices with table columns - update prices logs 2022-07-06 10:46:00 +02:00
nymkappa
bbc9df486e If any indexing fails | chain of hash invalid, try again in 10 seconds 2022-07-06 10:36:26 +02:00
wiz
c7014fc6c8 Merge branch 'master' into breathe-effect-framerate 2022-07-06 01:24:59 +02:00
wiz
c22aee5e60 Merge pull request #1934 from mempool/nymkappa/bugfix/show-all-timespan
Remove the condition to show `All` timespan on mining charts
2022-07-06 01:23:57 +02:00
wiz
feeb93b298 Merge pull request #1936 from mempool/nymkappa/bugfix/umbrel-electrs-504
Handle electrs error 504
2022-07-06 01:22:35 +02:00
wiz
a74dace594 Merge pull request #1925 from mempool/feature/nymkappa/index-difficulty-adjustments
Index difficulty adjustments
2022-07-06 01:19:53 +02:00
wiz
e0e2a2a626 Merge branch 'master' into rtlFixes3 2022-07-06 00:24:31 +02:00
wiz
7424c65430 Merge branch 'master' into feature/nymkappa/index-difficulty-adjustments 2022-07-06 00:20:39 +02:00
wiz
c17cf308d4 Merge pull request #1969 from mempool/knorrium/eslint
Add eslint to the backend and frontend
2022-07-06 00:20:03 +02:00
wiz
bb3f7fe61f Merge branch 'master' into knorrium/eslint 2022-07-06 00:12:39 +02:00
wiz
f7fcc82933 Merge pull request #1973 from Emzy/ops/linux-no-patch-electrs
Only patch electrs for FreeBSD in prod install script
2022-07-06 00:12:26 +02:00
wiz
351d9864fe Merge branch 'master' into ops/linux-no-patch-electrs 2022-07-06 00:10:19 +02:00
wiz
8148e9a36d Merge pull request #1972 from Emzy/ops/linux-java-install
Ops/linux install java Bitcoin core and Liquid in prod install script
2022-07-06 00:09:32 +02:00
wiz
34195f0e45 Fix typo in prod installer 2022-07-06 00:09:05 +02:00
wiz
9b529d075a Fix typo in prod installer 2022-07-06 00:08:55 +02:00
wiz
38a98f70d9 Fix typo in prod installer 2022-07-06 00:08:47 +02:00
wiz
544ab890b0 Merge branch 'master' into ops/linux-java-install 2022-07-06 00:05:22 +02:00
wiz
d0ad4742c1 Merge pull request #1971 from Emzy/ops/linux-services
Install packages, Bitcoin and Liquid core services in prod install script
2022-07-06 00:05:11 +02:00
wiz
ee5f7600dc Merge branch 'master' into ops/linux-services 2022-07-06 00:04:11 +02:00
wiz
5b400daf3b Merge pull request #1970 from Emzy/ops/linux-packages-fix
Fix Linux packages, usernames and path in prod install script
2022-07-06 00:03:59 +02:00
wiz
58882136a0 Merge pull request #1968 from Emzy/ops/linux-sed-fix
Fix sed command for Linux systems in the prod install script
2022-07-06 00:02:36 +02:00
wiz
1ebf089d37 Merge pull request #1901 from mempool/simon/block-tip-hash-api
Adding missing Block Tip Hash API
2022-07-06 00:01:44 +02:00
wiz
1499eb3ba8 Merge branch 'master' into simon/block-tip-hash-api 2022-07-05 23:48:20 +02:00
wiz
67adf4c310 Merge pull request #1885 from mempool/nymkappa/bugfix/indexer-not-running
Don't run the indexer unless Bitcoin Core is fully synced
2022-07-05 23:48:05 +02:00
wiz
cd4ced8d6d Merge branch 'master' into nymkappa/bugfix/indexer-not-running 2022-07-05 23:02:05 +02:00
nymkappa
acfdc8163b Index difficulty adjustments 2022-07-05 16:52:56 +02:00
Stephan Oeste
df73548f7e Removing commands and enable tor in prod install script 2022-07-05 14:43:01 +02:00
Felipe Knorr Kuhn
f4389e11ba Change the CI GHA to a matrix job 2022-07-05 05:37:17 -07:00
Stephan Oeste
f8c6a7c77b Omit FreeBSD Elecrs patch for Linux on prod install script 2022-07-05 14:20:35 +02:00
Stephan Oeste
9c65ff3e12 Fix Bisq Java install script name for prod install script 2022-07-05 14:09:32 +02:00
Stephan Oeste
79a90aeec2 Install Bitcoin and Liquid core services in prod install script 2022-07-05 13:54:58 +02:00
Felipe Knorr Kuhn
8e8609371f Fix GHA syntax 2022-07-05 04:48:44 -07:00
Felipe Knorr Kuhn
174976ce82 Fix GHA syntax 2022-07-05 04:46:13 -07:00
Felipe Knorr Kuhn
57adce693a Checkout the repo to dev and prod dirs to run different test targets 2022-07-05 04:42:04 -07:00
Stephan Oeste
d9576bb2e4 Fix Linux packages, usernames and path in prod install script 2022-07-05 13:39:29 +02:00
Felipe Knorr Kuhn
97686e1c87 Add working directory to the lint stage on GHA 2022-07-05 04:34:43 -07:00
Felipe Knorr Kuhn
35db3ffbf0 Use absolute paths when running eslint 2022-07-05 04:31:10 -07:00
Felipe Knorr Kuhn
0a747b5609 Enable running eslint on GHA 2022-07-05 04:30:56 -07:00
Felipe Knorr Kuhn
e947f3259e Fix eslint errors 2022-07-05 04:30:05 -07:00
Felipe Knorr Kuhn
a16eb6e804 Add eslint to the frontend 2022-07-05 04:29:46 -07:00
Felipe Knorr Kuhn
54334a1854 Add eslint to the backend 2022-07-05 04:29:11 -07:00
Stephan Oeste
a34eb9ba88 Fix sed command for Linux systems in the prod install script 2022-07-05 13:19:56 +02:00
Antoni Spaanderman
f218efbeb2 set error correction level to low for qr codes 2022-07-05 10:38:31 +02:00
wiz
570d8cfc74 Merge pull request #1948 from hunicus/swp-gitignore
Tell git to ignore .swp files
2022-07-04 19:58:22 +02:00
wiz
d964ccca12 Merge pull request #1942 from hunicus/doc-tab-animation
Remove fade animation when switching docs tabs
2022-07-04 19:56:17 +02:00
wiz
746e205d74 Merge pull request #1944 from hunicus/feerate-tooltip-usually
Add 'usually' to feerate tooltips
2022-07-04 19:55:54 +02:00
wiz
ad29462a6d Merge pull request #1965 from Emzy/ops/linux-dir-creation
Create directories for Linux in prod install
2022-07-04 19:55:09 +02:00
wiz
d6cd17e4c8 Merge pull request #1964 from Emzy/ops/linux-user-creation
User creation for linux in the prod install script
2022-07-04 19:54:34 +02:00
wiz
1383c20703 Merge pull request #1963 from Emzy/ops/freebsd-python-version
Update python version for FreeBSD 13 in prod install
2022-07-04 19:53:36 +02:00
wiz
5fc91fe466 Merge pull request #1958 from Emzy/emzy/fix-dialog-error
Fixed dialog error in production installer
2022-07-04 19:53:14 +02:00
Felipe Knorr Kuhn
77d9cba468 Merge branch 'master' into doc-tab-animation 2022-07-04 09:28:04 -07:00
Felipe Knorr Kuhn
32cd93b689 Merge branch 'master' into simon/block-error-code 2022-07-04 09:21:03 -07:00
Felipe Knorr Kuhn
083634826e Merge branch 'master' into breathe-effect-framerate 2022-07-04 09:10:56 -07:00
Felipe Knorr Kuhn
29557ddd86 Merge branch 'master' into emzy/fix-dialog-error 2022-07-04 09:10:38 -07:00
Stephan Oeste
f80b97af53 Create directories for Linux in prod install 2022-07-04 17:58:36 +02:00
softsimon
543c1cee62 Merge pull request #1946 from knorrium/knorrium/gha_build
Various typing and build fixes to enable CI
2022-07-04 17:57:31 +02:00
Felipe Knorr Kuhn
3c2171efb3 Fix WebSocket type error 2022-07-04 08:37:36 -07:00
Stephan Oeste
a7b28ca8e8 User creation for linux in the prod install script 2022-07-04 16:57:20 +02:00
Stephan Oeste
383e3e55a5 Update python version for FreeBSD 13 in prod install 2022-07-04 16:29:09 +02:00
wiz
8660dc3eba Merge pull request #1962 from knorrium/ops/skip_tests_for_ops
Skip tests if branch name starts with ops
2022-07-04 16:10:53 +02:00
Felipe Knorr Kuhn
00bb09faaa Skip tests if branch name starts with ops 2022-07-04 02:55:21 -07:00
wiz
f13c8b36cd Merge pull request #1960 from mempool/ops/add-lnd-to-prod-installer
Enable zmq for bitcoind, fix ./configure opts
2022-07-04 10:57:43 +02:00
Stephan Oeste
e4ac09ea57 Fixed dialog error in production installer 2022-07-03 17:11:25 +02:00
wiz
72492c9b39 Enable zmq for bitcoind, fix ./configure opts 2022-07-03 16:09:29 +02:00
wiz
39b74a42e5 Merge pull request #1955 from mempool/wiz/upgrade-bitcoin-core-v23
[ops] Upgrade prod install to use Bitcoin v23
2022-07-03 19:41:40 +09:00
wiz
cdd2d9089b Merge branch 'master' into wiz/upgrade-bitcoin-core-v23 2022-07-03 19:34:22 +09:00
wiz
e086daeecb Merge pull request #1923 from knorrium/knorrium/skip_tests_on_ops_tag
Skip tests when the ops label is used
2022-07-03 19:33:15 +09:00
Felipe Knorr Kuhn
7f5ddaf930 Ignore pushes to the ops branches 2022-07-03 03:29:09 -07:00
wiz
0f39b3b7d0 [ops] Upgrade prod install to use Bitcoin v23 2022-07-03 12:31:18 +04:00
softsimon
bae43249b2 Block error status code fix 2022-07-02 18:50:04 +02:00
hunicus
7f01bda06d Tell git to ignore .swp files 2022-06-30 00:29:31 -04:00
Mononaut
2c73153db0 limit pulsing blocks animation frame rate to 30FPS
possibly resolves #1941
2022-06-29 16:09:04 +00:00
hunicus
7e22fe1617 Add faq explaining sat/vb 2022-06-28 22:57:43 -04:00
hunicus
415ec685e6 Add faq explaining vb and wu 2022-06-28 22:57:37 -04:00
Felipe Knorr Kuhn
35f8e06ec4 Merge branch 'master' into nymkappa/bugfix/indexer-not-running 2022-06-28 06:52:04 -07:00
Felipe Knorr Kuhn
431c8c35b9 Merge branch 'master' into simon/block-tip-hash-api 2022-06-28 06:44:41 -07:00
Felipe Knorr Kuhn
57c30da40f Merge branch 'master' into rtlFixes3 2022-06-28 06:43:51 -07:00
Felipe Knorr Kuhn
9ae2cb79c6 Merge branch 'master' into nymkappa/bugfix/show-all-timespan 2022-06-28 06:19:00 -07:00
Felipe Knorr Kuhn
1b2fbfd506 Merge branch 'master' into nymkappa/bugfix/umbrel-electrs-504 2022-06-28 06:18:34 -07:00
Felipe Knorr Kuhn
db73b0f671 Merge branch 'master' into doc-tab-animation 2022-06-28 06:17:34 -07:00
Felipe Knorr Kuhn
044e786379 Merge branch 'master' into feerate-tooltip-usually 2022-06-28 06:17:12 -07:00
wiz
7262f61ca0 Merge pull request #1945 from mempool/nymkappa/bugfix/doc-component-crash 2022-06-28 22:15:40 +09:00
Felipe Knorr Kuhn
19ae01defb Various typing and build fixes to enable CI 2022-06-27 21:28:21 -07:00
hunicus
1c40a22416 Add 'usually' to feerate tooltips 2022-06-27 00:30:27 -04:00
TechMiX
ceb0050ea9 fix block hash on block page in rtl layout 2022-06-27 03:17:40 +04:30
nymkappa
b97ea010cb Fix js crash when loading faq - fix crash when switching tabs with active fragment 2022-06-27 00:15:11 +02:00
wiz
aad94a1af3 Merge branch 'master' into simon/block-tip-hash-api 2022-06-27 00:32:14 +09:00
wiz
c738816cb6 Merge pull request #1922 from mononaut/bugfix/visualization-colors
Fix block visualization color for txs with 0 < feerate < 1 sat/vb
2022-06-27 00:31:29 +09:00
wiz
f5f53c93f7 Merge branch 'master' into bugfix/visualization-colors 2022-06-27 00:08:12 +09:00
wiz
07415d3871 Merge pull request #1929 from mempool/nymkappa/bugfix/minimum-effective-fee-is-zero
Minimum transaction fee is 0
2022-06-27 00:07:52 +09:00
nymkappa
1d2841b2a6 Handle electrs error 504 2022-06-26 10:50:42 +02:00
nymkappa
4ea2a8244a Remove the condition to show All timespan on mining charts 2022-06-26 10:27:07 +02:00
TechMiX
ab0c55b0fa fix various RTL layout issues 2022-06-26 02:20:36 +04:30
nymkappa
d6f594b95a Don't run the indexer unless Bitcoin Core is fully synced 2022-06-25 19:18:32 +02:00
nymkappa
a8de738e9b Fixes the minium tx fee bug introduced in ecbd18087b 2022-06-25 19:06:26 +02:00
Mononaut
61c309cd1d Fix block visualization color for <1 sat/vb txs 2022-06-25 15:15:52 +00:00
hunicus
5b9d6a31e5 Remove fade animation when switching docs tabs 2022-06-25 10:13:18 -04:00
Felipe Knorr Kuhn
8fa0539b5a Update test triggers 2022-06-24 21:56:08 -07:00
Felipe Knorr Kuhn
7262485f3b Skip tests when the ops labeled is used 2022-06-24 21:51:13 -07:00
wiz
24300eeac5 Merge pull request #1920 from hunicus/fix-docker-typo
Fix typo in docker docs
2022-06-25 02:58:33 +09:00
hunicus
2be6c19ba2 Fix typo in docker docs 2022-06-24 13:55:26 -04:00
wiz
001bd1d442 Merge pull request #1918 from mempool/wiz/add-mononaut-repo-to-build-script
[ops] Add mononaut's fork repo to list of trusted repos
2022-06-24 18:03:46 +09:00
wiz
f30d26b83c [ops] Add mononaut's fork repo to list of trusted repos 2022-06-24 17:59:08 +09:00
wiz
198c52fd5f Merge pull request #1917 from mempool/wiz/fix-prod-nginx-perma-cache-patterns
[ops] Fix prod nginx perma-cache URL patterns
2022-06-24 17:57:33 +09:00
wiz
c5e0b0fc74 [ops] Fix prod nginx perma-cache URL patterns
Currently we perma-cache everything matching /api/block, but this
is bad because it also matches /api/block-height and /api/blocks/
API endpoints, which shouldn't be perma-cached. Add a trailing slash
to prevent those from getting matched.
2022-06-24 17:52:34 +09:00
wiz
ecefddf2c3 Merge pull request #1911 from mempool/nymkappa/bugfix/double-api-call-charts
Fix double http query when switching timespan for the first time
2022-06-24 00:26:06 +09:00
wiz
4c8eaac144 Merge branch 'master' into nymkappa/bugfix/double-api-call-charts 2022-06-23 23:53:46 +09:00
wiz
9991d43b3b Merge pull request #1912 from mempool/nymkappa/bugfix/dont-preload-genesis
Don't preload /block APIs for genesis block
2022-06-23 23:52:11 +09:00
wiz
98b9f007c6 Merge branch 'master' into nymkappa/bugfix/dont-preload-genesis 2022-06-23 23:43:29 +09:00
nymkappa
53812c3751 Don't preload /block APIs for genesis block 2022-06-23 16:29:25 +02:00
wiz
3e01207026 Merge pull request #1850 from mempool/nymkappa/feature/price-index
Compute our own price index and save into database every 1 hour
2022-06-23 23:11:17 +09:00
nymkappa
68f72e3074 Implement our own price indexer with historical data 2022-06-23 15:42:42 +02:00
nymkappa
03ade97c0e Fix double http query when switching timespan for the first time 2022-06-23 15:30:42 +02:00
wiz
411e9c2e89 Merge branch 'master' into simon/block-tip-hash-api 2022-06-23 20:50:01 +09:00
wiz
93dab57959 Merge pull request #1895 from mempool/nymkappa/feature/hashrate-moving-average
Add moving average to the hashrate & difficulty chart
2022-06-23 20:38:30 +09:00
wiz
625dba943b Merge branch 'master' into nymkappa/feature/hashrate-moving-average 2022-06-23 19:20:31 +09:00
wiz
b272d1e27e Merge pull request #1908 from mempool/simon/batch-outspends
Batch outspends requests
2022-06-23 19:20:22 +09:00
softsimon
960513c370 Fix for outspends when using esplora 2022-06-23 11:55:56 +02:00
wiz
61afa92d05 Merge branch 'master' into simon/batch-outspends 2022-06-23 18:25:15 +09:00
wiz
fa0373c181 Merge pull request #1905 from mempool/nymkappa/feature/preload-prev-block-summary
Preload the previous block summary
2022-06-23 18:25:00 +09:00
wiz
5373078a30 Merge branch 'master' into nymkappa/feature/preload-prev-block-summary 2022-06-23 18:14:48 +09:00
wiz
17f0222e47 Merge pull request #1907 from mononaut/disable-mined-block-transitions
Disable mined block animations
2022-06-23 18:13:56 +09:00
softsimon
1479039fb5 Batch outspends requests
fixes #1902
2022-06-22 23:42:20 +02:00
nymkappa
da28e7b80e Preload the previous block - Disable 300 ms on block page 2022-06-22 23:17:49 +02:00
Mononaut
f2780e65cd Disable mined block animations 2022-06-22 19:10:31 +00:00
wiz
f9a1f10b99 Merge branch 'master' into nymkappa/feature/hashrate-moving-average 2022-06-23 02:43:40 +09:00
wiz
816263bd54 Merge pull request #1893 from mempool/nymkappa/feature/remove-hide-button
Remove dashboard row collasping feature
2022-06-23 02:43:30 +09:00
wiz
eb169cf58b Merge branch 'master' into nymkappa/feature/remove-hide-button 2022-06-23 02:34:25 +09:00
wiz
2d6fcd6d67 Merge pull request #1896 from mempool/nymkappa/feature/index-block-visualization
Index block summaries in db
2022-06-22 23:28:36 +09:00
wiz
9d1883f925 [ops] Cache /api/block and /api/v1/block for 1 month 2022-06-22 23:26:41 +09:00
softsimon
85e544dc8e Adding missing Block Tip Hash API 2022-06-22 13:15:44 +02:00
nymkappa
aa86885e6b Set block/:hash/summary expiration to 1 month - Support re-org for block summaries 2022-06-20 16:35:10 +02:00
nymkappa
72a603ac37 Index block summaries in db 2022-06-18 16:48:02 +02:00
nymkappa
a5d9d5e575 Add moving average to the hashrate & difficulty chart 2022-06-18 10:22:38 +02:00
wiz
95d645255d Merge pull request #1892 from mononaut/mined-block-visualization 2022-06-18 09:57:52 +09:00
nymkappa
6c0fe3d7a1 Remove dashboard row collasping feature 2022-06-17 11:15:38 +02:00
wiz
071d3e65a3 Merge pull request #1887 from mempool/nymkappa/feature/chart-timespan-url
Add #{timespan} in mining charts urls for easier sharing
2022-06-17 08:30:53 +09:00
wiz
95323ac4cb Merge branch 'master' into nymkappa/feature/chart-timespan-url 2022-06-17 08:19:56 +09:00
wiz
f7b60f3da7 Merge pull request #1882 from mempool/nymkappa/bugfix/pool-ranking
Fix pool ranking layout on small mobile device
2022-06-17 08:19:48 +09:00
wiz
806a30c3d8 Merge branch 'master' into nymkappa/bugfix/pool-ranking 2022-06-17 08:08:37 +09:00
wiz
74570676b5 Merge pull request #1881 from hunicus/fix-anchors-ngfaq
Fix anchor links and typos in faq
2022-06-17 08:08:28 +09:00
wiz
903471ee43 Merge pull request #1883 from mempool/nymkappa/bugfix/remove-bottom-label-charts-dashboard
Hide bottom axis label for mempool and incoming tx charts on widgets
2022-06-17 08:02:19 +09:00
wiz
9a54a94dca Merge branch 'master' into nymkappa/bugfix/remove-bottom-label-charts-dashboard 2022-06-17 07:49:03 +09:00
wiz
532b7a430c Merge pull request #1884 from mempool/nymkappa/feature/widget-title-links
Make `Latest blocks` and `Adjustments` widget title clickable
2022-06-17 07:48:52 +09:00
wiz
7e08058d0a Merge pull request #1889 from hunicus/regtest-formatting
Edit regtest docs formatting
2022-06-17 07:44:04 +09:00
wiz
47d84d4ab6 Merge pull request #1890 from hunicus/docker-video-link
Add k3tan video link to docker readme
2022-06-17 07:43:01 +09:00
Mononaut
288bddcaf2 Add API endpoint for block summary data 2022-06-16 02:46:27 +00:00
Mononaut
2d529bd581 Tooltip-style tx previews in block overview 2022-06-16 02:46:27 +00:00
Mononaut
300f5375c8 Optimize block visualization rendering 2022-06-16 02:46:27 +00:00
Mononaut
7f4c6352ba Add visualization to mined blocks 2022-06-16 02:46:24 +00:00
Mononaut
225decd286 Extract canvas/webgl code to separate component 2022-06-15 19:59:24 +00:00
hunicus
539d41f19e Add k3tan video link to docker readme 2022-06-15 15:51:11 -04:00
hunicus
ca92834493 Edit formatting of regtest docs 2022-06-15 15:27:18 -04:00
nymkappa
d28fe93360 Add #{timespan} in mining charts urls for easier sharing 2022-06-15 11:26:58 +02:00
wiz
6ff69c0fa8 Merge branch 'master' into nymkappa/bugfix/remove-bottom-label-charts-dashboard 2022-06-15 08:29:48 +09:00
wiz
0409c9a9c0 Merge branch 'master' into nymkappa/feature/widget-title-links 2022-06-15 08:09:41 +09:00
wiz
c5bcf76353 Merge pull request #1867 from mempool/nymkappa/feature/add-tooltip-pool-ranking
Only show `(1w)` on `Blocks` in pool ranking widget and add tooltips
2022-06-15 08:09:29 +09:00
nymkappa
20a4b9fb5a Make Latest blocks and Adjustments widget title clickable 2022-06-14 10:35:29 +02:00
nymkappa
9d20637dcb Hide bottom axis label for mempool and incoming tx charts on widgets 2022-06-14 09:58:32 +02:00
nymkappa
da4efdb2d0 Fix pool ranking layout on small mobile device 2022-06-14 09:42:56 +02:00
nymkappa
9fe4cc2d2b Only show (1w) on Blocks in pool ranking widget
Add tooltips to explain `Pools luck`, `Pools count` and `Blocs (1w)`
2022-06-14 08:58:31 +02:00
hunicus
b82abc2827 Make minor faq updates
Add Start9 and capitalize Mempool.
2022-06-13 21:11:57 -04:00
hunicus
8de1fb5289 Fix stray typos from moving faqs to html 2022-06-13 21:08:44 -04:00
hunicus
0031fbf886 Fix anchor links on new ng faq template 2022-06-13 21:03:17 -04:00
wiz
e24efe7528 Merge pull request #1878 from mempool/nymkappa/feature/regtest-notes
Added regtest notes to backend README
2022-06-14 08:32:09 +09:00
wiz
109de73691 Fix typo in backend/README.md 2022-06-14 08:31:48 +09:00
wiz
dc475462d0 Merge pull request #1877 from mempool/nymkappa/bugfix/da-mining-dashboard
Listen for `stats` websocket event in the mining dashboard to get latest DA
2022-06-14 08:30:37 +09:00
wiz
19883c03ad Merge pull request #1876 from mempool/nymkappa/bugfix/cleanup-log
Cleanup some ops logs
2022-06-14 08:29:21 +09:00
wiz
46ae76081d Merge branch 'master' into nymkappa/bugfix/cleanup-log 2022-06-14 07:41:28 +09:00
wiz
63a931a10a Merge branch 'master' into nymkappa/bugfix/da-mining-dashboard 2022-06-14 07:39:17 +09:00
wiz
a15da76566 Merge pull request #1874 from mempool/simon/faq-html-templates
Move FAQ HTML to angular templates
2022-06-14 07:38:21 +09:00
wiz
465053f3ff Merge branch 'master' into simon/faq-html-templates 2022-06-14 07:28:58 +09:00
wiz
bf99407816 Merge pull request #1873 from mononaut/fix-retina-resolution
Fix canvas resolution on high-DPI screens
2022-06-14 07:05:28 +09:00
nymkappa
0493d57b2e Added regtest notes to backend README 2022-06-13 11:28:34 +02:00
nymkappa
947864cff8 Listen for stats websocket event in the mining dashboard to get latest DA 2022-06-13 11:13:00 +02:00
nymkappa
1074d23a90 Cleanup some ops logs 2022-06-13 10:12:27 +02:00
softsimon
24ffc97317 Move FAQ HTML to angular templates
fixes #1783
2022-06-12 22:52:49 +02:00
Mononaut
1f6b59f2f5 Fix canvas resolution on high-DPI screens 2022-06-12 18:26:19 +00:00
wiz
5314eb2d45 Merge pull request #1866 from mempool/nymkappa/bugfix/blocks-list-signet
Fix latest blocks rewards column not large enough to fit high reward
2022-06-12 05:17:38 +09:00
wiz
035b29e70b Merge branch 'master' into nymkappa/bugfix/blocks-list-signet 2022-06-12 05:12:02 +09:00
wiz
68ec7bce12 Merge pull request #1864 from mempool/nymkappa/feature/cleanup-chart-tooltips
Make all mining charts tooltips uniform
2022-06-12 04:56:15 +09:00
wiz
02b34c9811 Merge branch 'master' into nymkappa/feature/cleanup-chart-tooltips 2022-06-12 04:34:58 +09:00
wiz
99fcca3cb7 Merge pull request #1870 from hunicus/fix-anchors-chrome
Fix anchor link scrolling on load (chrome)
2022-06-12 03:34:11 +09:00
wiz
fc2ff27928 Merge pull request #1869 from hunicus/dev-only
Clarify that manual installs are meant for devs
2022-06-12 01:22:48 +09:00
hunicus
abaaef2285 Fix anchor link scrolling on load (chrome) 2022-06-11 12:21:08 -04:00
hunicus
8154a4dd77 Clarify that manual installs are meant for devs 2022-06-11 11:05:53 -04:00
wiz
6bbea198e5 Merge pull request #1863 from mempool/nymkappa/bugfix/i18n-missing
Replace "Indexing in progress" with localized "Indexing blocks"
2022-06-11 06:57:28 +09:00
nymkappa
2d569b8bcf Fix latest blocks rewards column not large enough to fit high reward 2022-06-10 23:53:53 +02:00
nymkappa
da3272df76 Make all mining charts tooltips uniform 2022-06-10 23:34:13 +02:00
nymkappa
3243b1a3cb Replace "Indexing in progress" with localized "Indexing blocks" 2022-06-10 23:29:27 +02:00
wiz
2492bc69ff Merge pull request #1860 from hunicus/npm-install-note
Update npm install command and node.js requirements
2022-06-11 05:23:08 +09:00
wiz
feb1c051e1 Merge pull request #1841 from hunicus/api-limit-note
Add note on rate limits to api docs
2022-06-11 02:11:49 +09:00
wiz
6fb57cb1a9 Merge pull request #1858 from mempool/release/v2.4.0
Release v2.4.0
2022-06-10 22:44:54 +09:00
wiz
b9f0e63341 Bump version numbers to v2.4.1-dev 2022-06-10 22:43:57 +09:00
hunicus
ca41edea22 Update npm install command 2022-06-09 18:15:20 -04:00
wiz
f901f06992 Release v2.4.0 2022-06-09 23:10:18 +09:00
wiz
6038e04ccc Merge pull request #1857 from mempool/i18n/pull-from-transifex-2206092307
Pull from transifex 202206092308
2022-06-09 23:08:42 +09:00
wiz
4e792018ac Pull from transifex 202206092308 2022-06-09 23:08:07 +09:00
wiz
80700fa031 Merge pull request #1855 from mempool/nymkappa/feature/ellipsis
Use ellipsis + tooltip combo to fix layout on long string
2022-06-09 23:07:36 +09:00
nymkappa
aa02170e5c Use ellipsis + tooltip combo to fix layout on long string 2022-06-09 15:58:49 +02:00
wiz
bb7bd1a504 Merge pull request #1856 from mempool/wiz/pull-from-transifex-202206092208
Pull from transifex 202206092208
2022-06-09 22:09:47 +09:00
wiz
04d1b8e7c2 Pull from transifex 202206092208 2022-06-09 22:09:11 +09:00
wiz
435f9358b1 Merge pull request #1854 from mempool/i18n/pull-from-transifex-202206092053
Pull from transifex 202206092024
2022-06-09 20:25:45 +09:00
wiz
0d22bf5cae Pull from transifex 202206092024 2022-06-09 20:24:11 +09:00
wiz
044c233598 Merge pull request #1853 from mempool/i18n/pull-from-transifex-202206091947
Pull from transifex 202206091948
2022-06-09 19:48:44 +09:00
wiz
c160ff9d27 Pull from transifex 202206091948 2022-06-09 19:48:02 +09:00
wiz
915adf6397 Merge pull request #1852 from mempool/i18n/pull-from-transifex-202206091724
Pull from transifex 202206091724
2022-06-09 17:29:18 +09:00
wiz
c7ed2ed59d Pull from transifex 202206091724 2022-06-09 17:24:43 +09:00
wiz
9b91274cf2 Merge pull request #1849 from mempool/simon/transifex-pull-08062
Pull from transifex
2022-06-09 03:23:33 +09:00
softsimon
e5ee6bd6eb Pull from transifex 2022-06-08 20:16:30 +02:00
wiz
e1611d1e18 Merge branch 'master' into api-limit-note 2022-06-08 23:52:08 +09:00
wiz
60c22cbb5d Merge pull request #1844 from mempool/wiz/fix-docker-backend-start-script
Fix one more broken sed substitution in docker/backend/start.sh
2022-06-08 23:38:13 +09:00
wiz
c7dd93275e Merge pull request #1847 from mempool/simon/transifex-pull-806
Transifex pull
2022-06-08 23:37:11 +09:00
softsimon
3f0201df3a Transifex pull 2022-06-08 16:14:36 +02:00
wiz
bce8a58cf8 Fix one more broken sed substitution in docker/backend/start.sh 2022-06-08 22:13:56 +09:00
hunicus
752156281f Show rate limiting note on official instances only
Also fix some styling flaws resulting from hiding
the rate limiting text.
2022-06-07 23:27:35 -04:00
hunicus
0073322758 Make rest api doc section welcomer full sentence 2022-06-07 22:55:29 -04:00
hunicus
ca3ca4557e Add note on api limits 2022-06-07 22:52:08 -04:00
hunicus
056a9980d6 Clean up styling on doc content container 2022-06-07 22:36:17 -04:00
wiz
936964d273 Merge pull request #1839 from mempool/wiz/fix-docker-backend-start-script
Add missing sed substitutions in docker/backend/start.sh
2022-06-08 08:05:41 +09:00
wiz
4d274a3cec Add missing sed substitutions in docker/backend/start.sh
Fixes #1838
2022-06-08 07:50:21 +09:00
wiz
acd342259f Merge pull request #1835 from mempool/simon/transifex-pull-0608
Pulled from Transifex
2022-06-08 05:46:16 +09:00
softsimon
67456c151f Pulled from Transifex 2022-06-08 00:44:04 +04:00
wiz
13ccf55cc8 Merge pull request #1830 from hunicus/faq-projected-mempool
Change "projected block" to "mempool block" in feerate faq
2022-06-08 05:38:48 +09:00
wiz
73bffb5552 Merge pull request #1834 from mempool/nymkappa/bugfix/pools-import
Fix pool import crash
2022-06-08 05:38:38 +09:00
nymkappa
be8ee52af0 Fix pool import crash 2022-06-07 22:18:51 +02:00
hunicus
fbb16d6f22 Change projected to mempool in feerate faq 2022-06-07 14:54:33 -04:00
softsimon
96f8bf4a34 Merge pull request #1829 from mempool/simon/transifex-extract-0607
Extracting i18n
2022-06-07 22:12:44 +04:00
softsimon
2f9a86524a Extracting i18n 2022-06-07 22:11:48 +04:00
softsimon
e617e09ae3 Merge pull request #1827 from hunicus/change-terms
Change 'projected blocks' to 'mempool blocks' in feerate tooltips
2022-06-07 22:09:05 +04:00
wiz
6934aef60b Merge pull request #1828 from mempool/wiz/fix-upgrade-script-exit-code
[ops] Fix upgrade script exit code
2022-06-08 03:08:42 +09:00
hunicus
8f4de39e7b Change 'projected' to 'mempool' in feerate tooltips 2022-06-07 14:06:56 -04:00
wiz
fcb0c51e51 [ops] Fix mempool-build-all script exit code 2022-06-08 03:06:54 +09:00
wiz
ec80eac6b9 Merge pull request #1820 from hunicus/update-feerate-tooltips
Add feerate tooltips
2022-06-08 02:41:02 +09:00
wiz
84e600ac9f Merge branch 'master' into update-feerate-tooltips 2022-06-08 02:26:29 +09:00
wiz
c64d95b0ec Merge pull request #1822 from mempool/nymkappa/bugfix/db-disabled
Add 'db-less' mining pool tagging support
2022-06-08 02:26:02 +09:00
hunicus
3e2ced2e8b Make feerate tooltips appear on top 2022-06-07 13:18:20 -04:00
hunicus
6cc04feda8 Move feerate tooltips to feerate labels 2022-06-07 13:14:30 -04:00
wiz
0b50c17ed0 Merge branch 'master' into nymkappa/bugfix/db-disabled 2022-06-08 01:56:52 +09:00
wiz
81b9153d2b Merge branch 'master' into update-feerate-tooltips 2022-06-08 01:12:38 +09:00
wiz
e7c5307ca4 Merge pull request #1819 from hunicus/update-fee-faq-2
Update fee faq
2022-06-08 01:12:30 +09:00
wiz
8fb377b4eb Merge branch 'master' into update-fee-faq-2 2022-06-08 00:48:43 +09:00
wiz
5642358937 Merge pull request #1824 from hunicus/add-tx-note-1
Add transifex note to issue template
2022-06-08 00:47:39 +09:00
wiz
00cd1386b5 Merge pull request #1825 from hunicus/add-tx-note-2
Add pull request template to discourage tx prs
2022-06-08 00:47:15 +09:00
wiz
da6c72e9b7 Merge pull request #1691 from ayanamitech/cache-static
Handle Error with basic retry while syncing external assets ( Price Data )
2022-06-08 00:46:10 +09:00
hunicus
c318993a79 Add transifex note to issue template 2022-06-07 09:09:38 -04:00
hunicus
87c6e957f0 Remove unnecessary detail in fee faq 2022-06-07 08:56:41 -04:00
hunicus
e133467ea1 Add pull request template to discourage tx prs 2022-06-07 08:41:07 -04:00
hunicus
a0429b243f Make feerate tooltip i18n identifiers unique 2022-06-07 08:32:58 -04:00
nymkappa
21ae1fce2a Fix js crash when sending invalid state to /block page 2022-06-07 12:19:36 +02:00
nymkappa
53bc80e899 Add 'db-less' mining pool tagging support 2022-06-07 11:28:39 +02:00
Ayanami
56dc337672 Temporary disable retries
Until we find out how to sync async
2022-06-07 04:16:37 +09:00
Ayanami
a04bafdb4c Correct the log if the onion address is enabled or not 2022-06-07 04:16:37 +09:00
Ayanami
6ff473ab5d Add an ability to change circuits 2022-06-07 04:16:37 +09:00
Ayanami
40bfc6bff3 Include SocksProxyAgent inside while loop
To address error Socks5 proxy rejected connection - Failure
2022-06-07 04:16:37 +09:00
Ayanami
c610cacee4 Added missing config value
addressing comments from @knorrium
2022-06-07 04:16:36 +09:00
Ayanami
e41a08789a Added configurable user-agent for axios
Will use `mempool/v${backendInfo.getBackendInfo().version}` for default
2022-06-07 04:16:36 +09:00
Ayanami
9d5bbf1f44 Handle Error with basic retry while syncing external assets ( Price Data )
+ Removed unused External Assets value

+ Make static URL dynamic

+ Added config options for syncing pool data

+ Added retry interval & max retry
2022-06-07 04:16:36 +09:00
hunicus
22268b8a33 Add tooltips describing feerate levels 2022-06-06 14:32:16 -04:00
hunicus
0f58ce2322 Show fiat fee tooltip on fiat fee only 2022-06-06 14:17:25 -04:00
hunicus
1aad89ac97 Update fee faq 2022-06-06 13:05:53 -04:00
wiz
e99a684354 Merge pull request #1811 from mempool/simon/reload-mempool-visualizer-on-reconnect
Reload mempool visualization on reconnect
2022-06-06 21:35:05 +09:00
wiz
5360f6dd77 Merge branch 'master' into simon/reload-mempool-visualizer-on-reconnect 2022-06-06 21:23:48 +09:00
wiz
c8d5708155 Merge pull request #1812 from mempool/wiz/fix-foundry-logo-about-page
Use Foundry's dark theme logo on About page
2022-06-06 21:02:06 +09:00
softsimon
ebda00dc74 Send empty list of transactions if data isn't available yet 2022-06-06 14:31:17 +04:00
wiz
789092c76a Update Foundry logo on About page 2022-06-06 06:35:09 +09:00
softsimon
967a2a4461 Reload mempool visualization on reconnect
fixes #1799
2022-06-05 23:40:36 +04:00
wiz
9288628ad7 Merge pull request #1810 from mempool/simon/transifex-pull-0605
Transifex pull
2022-06-06 04:20:12 +09:00
wiz
0384ebb2ff Merge pull request #1745 from antonilol/multisig-label
stricter multisig check + detect bare multisig when spent
2022-06-06 04:19:57 +09:00
wiz
869c40e835 Merge branch 'master' into multisig-label 2022-06-06 04:06:43 +09:00
wiz
579af85544 Merge pull request #1806 from knorrium/cypress10_upgrade
Cypress v10 upgrade
2022-06-06 04:06:24 +09:00
wiz
97f72c1faf Merge branch 'master' into cypress10_upgrade 2022-06-06 03:53:09 +09:00
wiz
262c3af33e Merge pull request #1808 from mempool/nymkappa/bugfix/fix-blocks-list-loading
Make sure blocks list rxjs observable triggers at least once
2022-06-06 03:43:59 +09:00
softsimon
dd7d9b66e5 Transifex pull 2022-06-05 22:39:36 +04:00
wiz
f688da957c Merge branch 'master' into nymkappa/bugfix/fix-blocks-list-loading 2022-06-06 03:37:39 +09:00
wiz
866ac3d5b8 Merge pull request #1809 from mempool/simon/mempool-logo-svg-bugfix
Fix for mempool logo SVG issue
2022-06-06 03:36:41 +09:00
softsimon
63fce2a3ca Fix for mempool logo SVG issue 2022-06-05 22:29:05 +04:00
nymkappa
33e0859847 Make sure blocks list rxjs observable triggers at least once 2022-06-05 17:33:23 +02:00
Felipe Knorr Kuhn
b71922fabf Update Cypress Github Action to v4 2022-06-03 20:59:31 -07:00
Felipe Knorr Kuhn
ce0564a89c Update Cypress Github Action to v4 2022-06-03 20:59:03 -07:00
Felipe Knorr Kuhn
2a287b8d66 Update Cypress triggers back to push and pull request 2022-06-03 20:52:59 -07:00
Felipe Knorr Kuhn
69713ae156 Update to Cypress v10 2022-06-03 20:46:33 -07:00
Antoni Spaanderman
b930b9bf4f stricter multisig check + detect bare multisig when spent 2022-06-03 18:47:44 +02:00
wiz
412f118d22 Merge pull request #1801 from mempool/nymkappa/feature/cache-log
Improve disk cache logging
2022-06-04 01:21:55 +09:00
nymkappa
b60c2a9341 Improve disk cache logging 2022-06-03 18:00:14 +02:00
wiz
1efac916b7 Merge pull request #1800 from mempool/nymkappa/bugfix/missing-cache-version
Re-added missing cache version
2022-06-04 00:25:38 +09:00
wiz
3202629c44 Merge pull request #1772 from mempool/nymkappa/feature/websocket-block-count
Refactor pool ranking rxjs observable
2022-06-04 00:08:24 +09:00
nymkappa
3bc55d80ce Re-added missing cache version 2022-06-03 17:04:52 +02:00
wiz
89699f9b7e Merge branch 'master' into nymkappa/feature/websocket-block-count 2022-06-03 23:56:52 +09:00
wiz
95dd436be5 Merge pull request #1795 from hunicus/blocks-extras-v2
Update /api/blocks docs
2022-06-03 23:56:38 +09:00
wiz
efede07b5c Merge branch 'master' into blocks-extras-v2 2022-06-03 23:47:43 +09:00
wiz
a8123cddf7 Merge pull request #1792 from mempool/wiz/update-v2.4.0-screenshot
Update dashboard screenshot for v2.4.0 release
2022-06-03 23:47:21 +09:00
wiz
7764cceb86 Merge pull request #1797 from mempool/nymkappa/feature/automatic-disk-cache-reset
Skip blocks disk cache loading after db migration
2022-06-03 23:46:59 +09:00
nymkappa
256dbc8c8e Add disk cache versioning 2022-06-03 13:31:45 +02:00
hunicus
9ff006e61e Update /api/blocks in docs (bisq) 2022-06-02 18:08:09 -04:00
hunicus
9de6c716b7 Update /api/blocks in docs (liquid) 2022-06-02 17:51:23 -04:00
hunicus
538a1b1666 Replace blocks-extras with blocks in docs (bitcoin) 2022-06-02 17:29:13 -04:00
nymkappa
56e996c893 Refactor pool block list observable 2022-06-02 22:01:53 +02:00
nymkappa
429b4f2bc6 Refactor pool ranking rxjs observable 2022-06-02 22:01:53 +02:00
softsimon
3196c188f1 Merge pull request #1794 from mempool/simon/transifex-extract-6-2
Extracting i18n strings
2022-06-02 22:42:50 +04:00
softsimon
672833930d Extracting i18n strings 2022-06-02 22:42:27 +04:00
wiz
74ee35e273 Merge pull request #1793 from mempool/wiz/update-about-page-logos-for-v2.4
Update the Enterprise Sponsor logos on About page
2022-06-03 03:35:19 +09:00
wiz
8095a8a5f5 Fix size of Exodus logo on About page 2022-06-03 03:27:00 +09:00
wiz
ed3a614fb7 Change Gemini logo on About page to dark theme 2022-06-03 03:26:42 +09:00
wiz
cabfdcf49c Re-arrange Enterprise Sponsor logos on About page 2022-06-03 03:17:58 +09:00
wiz
69e1474c53 Update Exodus logo on About page 2022-06-03 03:01:12 +09:00
wiz
11f5056871 Merge pull request #1784 from hunicus/node-version-requirement
Make node 16.15 required not recommended
2022-06-03 02:53:55 +09:00
wiz
10ccad16e9 Update dashboard screenshot for v2.4.0 release
Fixes #1778
2022-06-03 02:48:38 +09:00
wiz
18c1be0bd0 Merge pull request #1790 from mempool/nymkappa/feature/fee-redesign-2
Updated new fee widget design
2022-06-03 01:23:58 +09:00
nymkappa
fe32ef75a2 Updated new fee widget design 2022-06-02 17:44:44 +02:00
wiz
a6517ebdc5 Merge pull request #1779 from mempool/simon/projected-block-transactions-fixes
Minor refactor for projected block transactions
2022-06-02 21:30:57 +09:00
hunicus
83660e9cf3 Make node 16.15 required not recommended 2022-06-01 22:54:46 -04:00
softsimon
f0a2ddf57b Minor refactor for projected block transactions 2022-06-02 01:29:03 +04:00
wiz
ddab579111 Merge pull request #1774 from mononaut/projected-block-overview
Feature: Projected block visualization
2022-06-02 05:35:07 +09:00
wiz
82471073c3 Merge branch 'master' into projected-block-overview 2022-06-02 00:35:07 +09:00
wiz
c9b98ed841 Merge pull request #1766 from mempool/nymkappa/feature/fee-redesign
Rewamp the fee widget
2022-06-02 00:34:57 +09:00
Mononaut
57cecee3af Add contributors agreement for mononaut 2022-06-01 13:48:58 +00:00
Mononaut
6cd8c448b4 Projected block loading spinner & WebGL detection 2022-06-01 13:48:58 +00:00
Mononaut
3ffc4956f4 Stream projected block deltas instead of full data 2022-06-01 13:48:58 +00:00
Mononaut
c2802253b7 Smarter update algorithm for projected block viz 2022-06-01 13:48:35 +00:00
Mononaut
1aac96a6f6 Projected block overview mouse events & tx preview 2022-06-01 13:48:34 +00:00
Mononaut
d4c9f6decb Implement WebGL projected block visualization 2022-06-01 13:48:34 +00:00
Mononaut
79dae84363 Data pipeline for projected mempool block overview 2022-06-01 13:48:34 +00:00
nymkappa
34576c0609 Update gradient as soon as we receive the fees 2022-06-01 12:53:36 +02:00
nymkappa
ec24549602 Hide minimum and economy on mobile 2022-06-01 12:28:42 +02:00
wiz
7f8834a2eb Merge branch 'master' into nymkappa/feature/fee-redesign 2022-06-01 17:22:01 +09:00
wiz
ee5cd1cd96 Merge pull request #1769 from mempool/nymkappa/bugfix/divergence-fix
Re-add hash field in the mysql block query
2022-06-01 17:20:38 +09:00
wiz
9ab3b3293a Merge pull request #1765 from mempool/simon/init-data-fees
Send fee info with init data
2022-06-01 17:08:09 +09:00
nymkappa
d860344be4 Re-add hash field in the mysql block query 2022-06-01 10:06:18 +02:00
nymkappa
cefc927b06 Tweaks fee widget 2022-06-01 09:47:00 +02:00
wiz
72cc2e4df0 Merge branch 'master' into nymkappa/feature/fee-redesign 2022-06-01 15:14:56 +09:00
nymkappa
b4fd98f565 Rewamp the fee widget 2022-05-31 22:31:01 +02:00
softsimon
2ee1f197d1 Send fee info with init data 2022-06-01 00:03:25 +04:00
wiz
e629173304 Merge pull request #1642 from mempool/nymkappa/bugfix/bisq-dump-file
If bisq data folder is not ready, retry every 3 minutes instead of exit
2022-06-01 03:58:24 +09:00
wiz
6210936ef4 Merge pull request #1752 from mempool/wiz/use-svg-logo-for-mempool.space
Use inline SVG for mempool.space logo
2022-06-01 03:52:40 +09:00
wiz
de8a51fe9a Merge branch 'master' into nymkappa/bugfix/bisq-dump-file 2022-06-01 03:47:12 +09:00
wiz
260f883d02 Merge pull request #1764 from mempool/nymkappa/bugfix/fx-rate-db-disable
Only attempt to save fx rate if database is enabled
2022-06-01 03:47:05 +09:00
softsimon
e81dfbcc7f Adding missing ngIf check 2022-05-31 22:39:15 +04:00
nymkappa
c7e9b47aa0 Only attempt to save fx rate if database is enabled 2022-05-31 20:29:43 +02:00
wiz
7f6ea58c74 Merge branch 'master' into wiz/use-svg-logo-for-mempool.space 2022-06-01 03:22:52 +09:00
softsimon
5dcde1c702 Store SVG images in a separate component 2022-05-31 22:21:59 +04:00
wiz
4c90d8e811 Merge branch 'master' into nymkappa/bugfix/bisq-dump-file 2022-06-01 03:10:50 +09:00
wiz
dbce727695 Merge pull request #1741 from mempool/nymkappa/feature/remove-fee-calculation-frontend
Remove fee calculation from the frontend
2022-06-01 03:03:09 +09:00
wiz
39f33dded2 Merge branch 'master' into nymkappa/feature/remove-fee-calculation-frontend 2022-06-01 02:44:48 +09:00
wiz
4b445b1191 Merge pull request #1763 from mempool/wiz/fix-backend-starting-syslog-msg
Change backend start syslog message from DEBUG to NOTICE
2022-06-01 02:43:25 +09:00
wiz
a9515f8fc1 Merge pull request #1751 from mempool/simon/handle-nonstandard-inputs
Handle nonstandard inputs
2022-06-01 02:42:57 +09:00
wiz
4ccd786fe9 Change backend start syslog message from DEBUG to NOTICE 2022-06-01 01:09:08 +09:00
wiz
72c3eea863 Merge branch 'master' into nymkappa/bugfix/bisq-dump-file 2022-06-01 00:14:43 +09:00
wiz
6a3df95d4c Merge pull request #1723 from mempool/nymkappa/feature/historical-rates
Save bisq aggregate exchange rates in the database for each new block
2022-06-01 00:14:05 +09:00
wiz
ce49dca7c8 Merge branch 'master' into nymkappa/feature/historical-rates 2022-05-31 23:58:51 +09:00
wiz
f84fee1ba0 Merge pull request #1624 from mempool/dependabot/npm_and_yarn/frontend/clipboard-2.0.11
Bump clipboard from 2.0.10 to 2.0.11 in /frontend
2022-05-31 23:55:07 +09:00
wiz
8c8299ebe0 Merge pull request #1750 from mempool/simon/dropdown-button-links-fix
Changed menu buttons to links
2022-05-31 23:52:47 +09:00
wiz
8d8fe8c528 Merge branch 'master' into simon/dropdown-button-links-fix 2022-05-31 23:15:25 +09:00
wiz
48b051f892 Merge pull request #1742 from mempool/simon/update-packages
Upgrading packages
2022-05-31 19:05:52 +09:00
wiz
44215a2108 Merge branch 'master' into simon/update-packages 2022-05-31 18:54:34 +09:00
wiz
6b2b10960a Merge branch 'master' into nymkappa/feature/remove-fee-calculation-frontend 2022-05-31 18:34:49 +09:00
wiz
cee15020fd Merge pull request #1738 from mempool/nymkappa/feature/additional-fee-tiers
Add `economyFee` field in /api/fees/recommended API
2022-05-31 18:34:32 +09:00
wiz
1cb772da39 Merge branch 'master' into nymkappa/feature/additional-fee-tiers 2022-05-31 18:28:33 +09:00
wiz
9a9be2538a Merge pull request #1739 from mempool/nymkappa/bugfix/block-url-link
Use block hash instead of block height in urls
2022-05-31 18:28:18 +09:00
wiz
260fd030b5 Merge branch 'master' into nymkappa/bugfix/block-url-link 2022-05-31 18:20:47 +09:00
wiz
8dd68728fa Merge pull request #1730 from hunicus/doc-page-titles
Fix doc page titles
2022-05-31 18:20:37 +09:00
nymkappa
c246ed958f Create rates table on all networks 2022-05-31 11:20:31 +02:00
wiz
d182128069 Merge branch 'master' into doc-page-titles 2022-05-31 18:13:27 +09:00
nymkappa
f20cf266b6 Remove frontend fee calculation and read it from the websocket instead 2022-05-31 10:41:43 +02:00
nymkappa
09b2e21fea Add economyFee field in /api/fees/recommended API 2022-05-31 10:40:58 +02:00
wiz
0ecc03e484 Merge branch 'master' into nymkappa/feature/historical-rates 2022-05-31 17:35:54 +09:00
wiz
ac0e430495 Merge pull request #1719 from mempool/nymkappa/bugfix/pool-parser-db-check
Don't try to run pools parser if db is not enabled
2022-05-31 17:35:15 +09:00
wiz
82161d4edf Use SVG logo for mempool.space 2022-05-31 17:31:31 +09:00
wiz
288a96ed43 Merge branch 'master' into nymkappa/bugfix/pool-parser-db-check 2022-05-31 17:09:41 +09:00
wiz
768be0cc70 Merge pull request #1716 from mempool/nymkappa/feature/bitcoind-offline-support
Mining dashboard still runs fine if Bitcoin Core becomes unavailable
2022-05-31 17:09:08 +09:00
wiz
687310f6f0 Merge branch 'master' into nymkappa/feature/bitcoind-offline-support 2022-05-31 16:50:11 +09:00
softsimon
85b17927d6 Handle nonstandard inputs
fixes #1744
2022-05-31 04:13:13 +04:00
softsimon
9ce4057ad4 Changed menu buttons to links
fixes #1073
2022-05-31 03:49:03 +04:00
softsimon
d542671993 Updating some more packages 2022-05-31 02:21:05 +04:00
softsimon
3935aef841 Upgrading packages 2022-05-31 02:21:05 +04:00
wiz
69f06ae257 Merge pull request #1747 from mempool/simon/transifex-pull
Transifex pull
2022-05-30 18:35:16 +09:00
softsimon
7be22b8236 Transifex pull 2022-05-30 13:26:54 +04:00
nymkappa
99902e70c7 Use block hash instead of block height in urls 2022-05-27 20:43:14 +02:00
wiz
fcbf7d9c57 Merge pull request #1733 from mempool/simon/angular-13.3-update
Angular 13.3.10 update
2022-05-27 18:59:20 +09:00
wiz
b63b02b8ad Merge pull request #1736 from hunicus/update-faq-stuck
Adjust stuck tx faqs for angry people
2022-05-27 18:49:41 +09:00
wiz
ec4ea7e732 Merge pull request #1735 from hunicus/remove-keybase
Remove keybase link from about page
2022-05-27 18:46:58 +09:00
wiz
41f0e784e2 Merge branch 'master' into simon/angular-13.3-update 2022-05-27 18:45:52 +09:00
wiz
6718bd7332 Merge pull request #1718 from mempool/nymkappa/feature/block-list-loading
Add loading spinner in /blocks page
2022-05-27 18:45:48 +09:00
wiz
18143a3807 Merge pull request #1728 from hunicus/add-faq-emptyblocks
Add faq on empty blocks
2022-05-27 18:42:57 +09:00
wiz
a8a5313eb4 Merge branch 'master' into nymkappa/feature/block-list-loading 2022-05-27 18:38:36 +09:00
wiz
dd9a704af8 Merge pull request #1717 from mempool/simon/ngb-boostrap-imports
NgBootstrap library import optimization
2022-05-27 18:38:24 +09:00
wiz
dea1e0acca Merge branch 'master' into add-faq-emptyblocks 2022-05-27 18:29:21 +09:00
nymkappa
be3d8b5ed9 Mining dashboard still runs fine if Bitcoin Core becomes unavailable 2022-05-27 11:26:56 +02:00
wiz
4d748eb585 Merge branch 'master' into simon/ngb-boostrap-imports 2022-05-27 18:23:51 +09:00
wiz
1ba0077666 Merge pull request #1714 from hunicus/install-manual
Move manual install notes to separate docs
2022-05-27 18:22:13 +09:00
wiz
36eeb84359 Merge pull request #1699 from mempool/simon/liquid-fixes
Liquid empty miner UX fix
2022-05-27 18:15:03 +09:00
nymkappa
e590759b7b Don't try to run pools parser if db is not enabled 2022-05-27 10:31:49 +02:00
hunicus
b7c918b79d Mention "esplora" value for blockstream/electrs 2022-05-26 22:13:37 -04:00
hunicus
d944362c7d Broaden guidance for hosting frontend 2022-05-26 19:33:54 -04:00
hunicus
28439bff7d Add recommended versions for node and npm 2022-05-26 18:19:58 -04:00
hunicus
c69d0e8148 Add note on mysql install brought up in #1731 2022-05-26 17:57:48 -04:00
hunicus
24e745e85d Add manual frontend setup notes to frontend/ readme 2022-05-26 17:42:15 -04:00
hunicus
3e82e432c6 Add manual backend setup notes to backend/ readme 2022-05-26 17:42:15 -04:00
hunicus
9a45dea52f Caution about manual installs in docker readme 2022-05-26 17:42:14 -04:00
hunicus
24f4644379 Orient stuck tx faqs for normies 2022-05-26 17:27:11 -04:00
softsimon
e5470b9e40 Angular 13.3.10 update 2022-05-26 18:31:11 +04:00
hunicus
68b4b66058 Fix doc page titles 2022-05-25 23:59:48 -04:00
hunicus
b7f4444d14 Remove keybase link from about page 2022-05-25 22:53:22 -04:00
hunicus
f0acff2f42 Add faq on empty blocks 2022-05-25 22:44:26 -04:00
softsimon
63ab2d7c2b Reseting statistics fix 2022-05-25 23:43:31 +04:00
softsimon
36f56de4f1 Liquid UX fixes
fixes #1683
fixes #1681
2022-05-25 23:43:31 +04:00
softsimon
3bdd11ab37 Merge pull request #1727 from mempool/simon/i18n-extract-25-5
i18n extract
2022-05-25 19:03:43 +04:00
softsimon
428401891e i18n extract 2022-05-25 19:03:25 +04:00
softsimon
7a51572082 NgBootstrap library import optimization 2022-05-25 18:56:10 +04:00
wiz
cba9930410 Merge pull request #1687 from mempool/nymkappa/feature/use-block-count-timespan
Replace all oldestIndexedBlockTimestamp with X-total-count header
2022-05-25 20:32:44 +09:00
wiz
2a486a1762 Merge pull request #1701 from hunicus/lighthouse-parents-2
Add role attributes for doc nav elements
2022-05-25 20:30:45 +09:00
wiz
989d5b3263 Merge branch 'master' into lighthouse-parents-2 2022-05-25 20:17:56 +09:00
wiz
df9c9e334d Merge branch 'master' into nymkappa/feature/use-block-count-timespan 2022-05-25 20:16:32 +09:00
wiz
07797d36bc Merge pull request #1712 from mempool/simon/npm-audit-fix-24-5
npm audit fix
2022-05-25 20:16:21 +09:00
wiz
aac92404d2 Merge branch 'master' into simon/npm-audit-fix-24-5 2022-05-25 20:09:34 +09:00
wiz
8372ca1cf0 Merge pull request #1700 from mempool/simon/block-transactions-error-catcher
Block transactions list error handling
2022-05-25 20:09:05 +09:00
wiz
1880e3a59b Merge branch 'master' into simon/block-transactions-error-catcher 2022-05-25 19:22:31 +09:00
wiz
b8463b833b Merge pull request #1696 from mempool/nymkappa/feature/merge-blocks
Merge legacy and mining /blocks components and APIs
2022-05-25 19:22:24 +09:00
nymkappa
f9bcdfb1e5 Update API documentation 2022-05-25 12:10:10 +02:00
nymkappa
c402422682 Remove last trace of legacy oldestIndexedBlockTimestamp 2022-05-25 12:10:09 +02:00
wiz
aac9dda9ef Merge branch 'master' into nymkappa/feature/merge-blocks 2022-05-25 18:55:13 +09:00
wiz
e059b9d379 Merge pull request #1685 from mempool/nymkappa/feature/update-api-case
Update case in some mining API endpoint response
2022-05-25 18:54:47 +09:00
wiz
ce04942803 Merge pull request #1710 from hunicus/add-schildbach
Add schildbach bitcoin wallet to about page
2022-05-25 18:37:46 +09:00
wiz
fae54797e8 Merge branch 'master' into add-schildbach 2022-05-25 18:26:21 +09:00
wiz
b136db933f Merge pull request #1707 from mempool/nymkappa/feature/chart-button-bitcoin-only
Hide graph selection button on non bitcoin networks
2022-05-25 18:26:11 +09:00
wiz
aebeb600a3 Merge pull request #1708 from mempool/nymkappa/bugfix/blocks-list-widget
Fix missing tx column in main dashboard on mobile
2022-05-25 18:18:01 +09:00
nymkappa
875040c329 Save bisq aggregate exchange rates in the database for each new block 2022-05-25 10:51:35 +02:00
wiz
72014eb0b3 Merge branch 'master' into nymkappa/feature/chart-button-bitcoin-only 2022-05-25 17:27:43 +09:00
wiz
c16c7ee0cd Merge branch 'master' into nymkappa/bugfix/blocks-list-widget 2022-05-25 17:13:45 +09:00
hunicus
f55590269e Move manual install docs away from main readme
Replace with links to docker/, frontend/, and /backend.
2022-05-24 12:38:05 -04:00
nymkappa
406d4101c0 Add loading spinner in /blocks page 2022-05-24 11:55:43 +02:00
nymkappa
584fb47de7 Fix widget size mining dashboard 2022-05-24 11:19:09 +02:00
nymkappa
9e0fdec053 Merge branch 'master' into nymkappa/feature/merge-blocks 2022-05-24 10:14:06 +02:00
wiz
b91654886a Merge pull request #1635 from mempool/nymkappa/bugfix/reindex-when-fast-forward 2022-05-24 14:37:13 +09:00
Felipe Knorr Kuhn
9fbd014df9 Merge branch 'master' into nymkappa/bugfix/reindex-when-fast-forward 2022-05-23 21:08:54 -07:00
softsimon
2e9eb46caa npm audit fix 2022-05-24 04:57:08 +04:00
hunicus
f8d6dd7c7b Add schildbach bitcoin wallet to about page 2022-05-23 08:34:04 -04:00
nymkappa
88fba3f506 For non Bitcoin network, run legacy API code, but keep the same endpoint 2022-05-23 13:02:18 +02:00
nymkappa
8f57272ea0 Fix /blocks skeleton on Liquid 2022-05-23 12:08:52 +02:00
nymkappa
dc81f7cfeb Fix missing tx column in main dashboard on mobile 2022-05-23 10:56:12 +02:00
nymkappa
3723380a36 Hide graph selection button on non bitcoin networks 2022-05-23 09:44:09 +02:00
nymkappa
2da7ec2519 Use ngClass to avoid multiple [class] conflict 2022-05-23 09:08:42 +02:00
nymkappa
ffcfa4a659 Setup redirect from /mining/blocks to /blocks - Update router links 2022-05-23 09:08:41 +02:00
nymkappa
8db440f164 Update cache warmer 2022-05-23 09:08:41 +02:00
nymkappa
37b7ea6702 Merge legacy and mining /blocks components and APIs 2022-05-23 09:08:40 +02:00
hunicus
49074cc3df Add role attributes for doc nav elements
To address #1668.
2022-05-21 08:20:35 -04:00
softsimon
a1fb89963c Block transactions list error handling 2022-05-21 02:30:38 +04:00
wiz
f42da0e3ac Merge branch 'master' into nymkappa/feature/update-api-case 2022-05-21 03:18:57 +09:00
wiz
b4beb29f31 Merge pull request #1657 from mempool/nymkappa/bugfix/update-log
Add escaped slug into logs when slug does not match any pool
2022-05-21 03:13:09 +09:00
wiz
6cd3c312dd Merge branch 'master' into nymkappa/bugfix/update-log 2022-05-21 03:03:56 +09:00
wiz
3a6f64b2e3 Merge pull request #1643 from mempool/simon/lazy-load-inputs
Lazy load tx inputs in Bitcoin Core mode
2022-05-21 03:03:35 +09:00
softsimon
521418bd25 Progressbar calculation fix 2022-05-20 21:50:01 +04:00
wiz
dabfa05337 Merge branch 'master' into simon/lazy-load-inputs 2022-05-21 02:47:24 +09:00
wiz
e58b10d552 Merge pull request #1697 from hunicus/fix-ws
Fix websockets tab
2022-05-21 02:36:02 +09:00
softsimon
e092fa6286 Adding fee reveal text 2022-05-20 21:30:01 +04:00
softsimon
fb63817282 Lazy load tx inputs in Bitcoin Core mode
fixes #465
2022-05-20 21:30:01 +04:00
wiz
85ce3ba9af Merge branch 'master' into fix-ws 2022-05-21 02:23:44 +09:00
wiz
2ba506515c Merge pull request #1695 from mempool/simon/round-miners-reward
Round miners reward to full dollar
2022-05-21 02:22:35 +09:00
hunicus
85defd076f Fix websockets tab
Caused by show/hide property for JS examples
introduced in e8ef4a39ec.
2022-05-20 12:46:30 -04:00
softsimon
0ba51a9362 Round miners reward to full dollar 2022-05-20 19:21:20 +04:00
wiz
20301b9e0c Merge pull request #1694 from mempool/simon/reward-stats-i18n-fix
Reward stats i18n fix
2022-05-20 23:57:50 +09:00
wiz
ad9cf2ada3 Merge pull request #1677 from mempool/simon/transifex-pull-19-05
Pull from transifex
2022-05-20 23:56:04 +09:00
softsimon
3d425c366f Reward stats i18n fix 2022-05-20 18:49:14 +04:00
wiz
7962d5a8d8 Merge branch 'master' into simon/transifex-pull-19-05 2022-05-20 23:46:42 +09:00
wiz
774cd98aa2 Merge pull request #1690 from mempool/simon/liquid-routing-fix
Fixes for Liquid module routing
2022-05-20 23:32:55 +09:00
wiz
639364bd60 Merge pull request #1667 from mempool/simon/loading-indicator-ux
Improving loading indicator UX
2022-05-20 23:27:56 +09:00
softsimon
75b3b0fde5 Fixing the /graphs link and make it consistent 2022-05-20 18:22:04 +04:00
softsimon
db1720e3b4 Fixes for Liquid module routing 2022-05-20 17:54:06 +04:00
wiz
159b6ad04b Merge branch 'master' into nymkappa/feature/update-api-case 2022-05-20 21:03:41 +09:00
wiz
55f2cf06af Merge pull request #1688 from mempool/simon/mempool-tx-fee-bug
Fixes broken fee rate calculation for mempool transactions
2022-05-20 21:03:34 +09:00
wiz
7617cedae3 Merge pull request #1686 from mempool/nymkappa/bugfix/mining-blocks-api-expiration
Set /mining/blocks/xxx APIs expiration to 60 seconds instead of 5 min
2022-05-20 21:01:02 +09:00
wiz
b76f20f780 Merge pull request #1680 from hunicus/mining-doc-rev2
Add feedback for mining API docs
2022-05-20 21:00:32 +09:00
wiz
97e0a5092b Merge branch 'master' into simon/mempool-tx-fee-bug 2022-05-20 20:56:57 +09:00
wiz
c872c07b71 Merge pull request #1682 from mempool/simon/lazy-loaded-modules
Moving graphs and mining dashboard to a lazy loaded module
2022-05-20 20:56:40 +09:00
softsimon
062a864a17 Pre-load all lazy loaded modules 2022-05-20 15:08:45 +04:00
softsimon
5028df31ba Fixes broken fee rate calculation for mempool transactions
fixes #1684
2022-05-20 13:41:30 +04:00
nymkappa
018914a4b6 Set /mining/blocks/xxx APIs expiration to 60 seconds instead of 5 minutes 2022-05-20 09:53:24 +02:00
nymkappa
897126d56f Update API documentation for e101c4e2 2022-05-20 09:49:13 +02:00
nymkappa
e101c4e218 Replace all avg_XXX with avgXXX for consistency 2022-05-20 09:44:29 +02:00
nymkappa
cac8c717ad Merge branch 'master' into simon/loading-indicator-ux 2022-05-20 09:16:32 +02:00
softsimon
e6c4b87b8b Moving graphs and mining dashboard to a lazy loaded module 2022-05-20 04:34:41 +04:00
Felipe Knorr Kuhn
449d6b17aa Merge branch 'master' into nymkappa/bugfix/reindex-when-fast-forward 2022-05-19 10:01:06 -07:00
hunicus
a402c5c861 Remove smaller time periods for hashrate endpoints
And clarify real-time hashrate data in /mining/hashrate.
2022-05-19 12:55:20 -04:00
wiz
0f0a46cd5c Merge pull request #1654 from hunicus/mining-api-docs
Add mining api docs
2022-05-20 01:39:53 +09:00
hunicus
5e5ff91280 Make small wording change for reward-stats 2022-05-19 12:21:41 -04:00
softsimon
e531289d46 Pull from transifex 2022-05-19 20:12:21 +04:00
wiz
dae9af7864 Merge branch 'master' into mining-api-docs 2022-05-20 01:05:43 +09:00
wiz
f3c20d91d9 Merge pull request #1676 from mempool/nymkappa/bugfix/duplicate-stats-call
Additional expiration header for mining pool API endpoints
2022-05-20 00:48:15 +09:00
nymkappa
a58d5b84b6 Set expiration to 1 min for /mining/reward-stats/:blockCount and /blocks-extras/:height 2022-05-19 17:20:42 +02:00
nymkappa
2a8314efc5 Move indexing logic into Indexer class 2022-05-19 16:41:14 +02:00
nymkappa
7f8696c88d Make sure to re-index skipped block when backend is offline for too long 2022-05-19 16:41:13 +02:00
wiz
6562a35f14 Merge branch 'master' into mining-api-docs 2022-05-19 20:45:20 +09:00
wiz
ae13f6119e Merge pull request #1674 from mempool/nymkappa/feature/block-api-cache
Cache /block API response for 10 min on user side
2022-05-19 19:38:15 +09:00
wiz
b2775509e2 Merge branch 'master' into nymkappa/feature/block-api-cache 2022-05-19 19:31:32 +09:00
wiz
63890a654f Merge pull request #1673 from mempool/nymkappa/feature/index-block-hash
Index blocks.hash
2022-05-19 19:31:19 +09:00
nymkappa
75dcfdd851 Cache /block API response for 10 min on user side 2022-05-19 12:17:26 +02:00
nymkappa
04bc41df3b Index blocks.hash 2022-05-19 12:13:43 +02:00
wiz
50b040524e Merge pull request #1670 from mempool/wiz/fix-about-page-resource-URLs
Don't prepend apiBasePath for services backend resources
2022-05-19 18:51:43 +09:00
wiz
2176af7ef9 Merge pull request #1672 from knorrium/cypress_961
Upgrade Cypress to v9.6.1
2022-05-19 18:49:36 +09:00
hunicus
ec3e1f9e70 Add testnet and signet for mining api docs 2022-05-19 05:39:35 -04:00
Felipe Knorr Kuhn
1da44cd4a6 Upgrade Cypress to v9.6.1 2022-05-18 22:01:28 -07:00
hunicus
e8ef4a39ec Hide js tabs for mining endpoints 2022-05-18 17:33:52 -04:00
hunicus
455412d2a0 Add mining api docs 2022-05-18 13:48:54 -04:00
wiz
b75f263c7e Don't prepend apiBasePath for services backend resources 2022-05-19 01:54:08 +09:00
wiz
aa08ac6edc Merge pull request #1669 from mempool/wiz/fix-prod-install-script-nodejs-v16.15
[installer] Add base64 to list of OS package deps
2022-05-19 01:31:49 +09:00
wiz
feafe02ac1 [installer] Add base64 to list of OS package deps 2022-05-19 01:30:02 +09:00
nymkappa
f402bfb097 Remove unescessary log 2022-05-18 15:01:24 +02:00
wiz
6f3739feb7 Merge branch 'master' into simon/loading-indicator-ux 2022-05-18 21:37:40 +09:00
wiz
4dd75cd24e Merge pull request #1664 from mempool/simon/i18n-additions
Adding some missing i18n strings
2022-05-18 21:37:24 +09:00
wiz
b7ed45cbe7 Merge branch 'master' into simon/i18n-additions 2022-05-18 21:18:05 +09:00
wiz
cf1ea34dad Merge pull request #1660 from mempool/wiz/fix-prod-install-script-nodejs-v16.15
Production installation fixes
2022-05-18 21:16:35 +09:00
wiz
4d213a89cc Merge pull request #1666 from ayanamitech/fix-nginx
Remove unused config from nginx
2022-05-18 21:13:50 +09:00
wiz
b22cae8da1 Merge pull request #1649 from ayanamitech/fix-poolupdater
pools-updater: Support secure Tor connection to sync data with Github
2022-05-18 21:11:32 +09:00
wiz
82ced490f2 Merge pull request #1637 from mempool/simon/optimize-reconnection
Tweaking the websocket retry timers
2022-05-18 20:52:23 +09:00
wiz
8022cec36b Merge branch 'master' into simon/optimize-reconnection 2022-05-18 20:41:03 +09:00
wiz
bd324fe287 Merge pull request #1632 from mempool/simon/outspends-cache-fix
Reset outspends cache when switching to new tx page.
2022-05-18 20:39:53 +09:00
wiz
a9012234f1 Merge branch 'master' into simon/outspends-cache-fix 2022-05-18 20:28:32 +09:00
wiz
d84ee4b264 Merge pull request #1665 from mempool/simon/getrawtransaction-recursive-fix
Fix for transaction inputs being fetched recursively
2022-05-18 20:26:50 +09:00
wiz
f91d9239e6 Merge branch 'master' into simon/getrawtransaction-recursive-fix 2022-05-18 20:11:20 +09:00
wiz
eadabf6e62 Merge pull request #1661 from mempool/nymkappa/feature/10min-blocktime-after-adjustment
Define avg block time to 10 min until we have at least 146 block in the current epoch
2022-05-18 20:10:08 +09:00
softsimon
b12b7d38d7 Adding some missing i18n strings 2022-05-18 15:06:58 +04:00
softsimon
2dad8ba8ec Fix for transactions being fetched recursively 2022-05-18 15:06:44 +04:00
wiz
dddf83a2d3 Merge branch 'master' into nymkappa/feature/10min-blocktime-after-adjustment 2022-05-18 20:02:29 +09:00
wiz
f42c9e1497 Merge pull request #1659 from mempool/nymkappa/feature/cleanup-mining-api-endpoints
Cleanup mining API endpoints
2022-05-18 20:01:05 +09:00
wiz
3fd2d74f81 Merge branch 'master' into nymkappa/feature/cleanup-mining-api-endpoints 2022-05-18 19:51:38 +09:00
wiz
383addc470 Merge pull request #1658 from mempool/nymkappa/bugfix/passive-listener
Use passive listeners to improve scrolling performance
2022-05-18 19:51:04 +09:00
wiz
25d5b31f1f Merge branch 'master' into nymkappa/bugfix/passive-listener 2022-05-18 19:38:31 +09:00
wiz
39660243b3 Merge pull request #1653 from mempool/nymkappa/feature/ctrlf-addresses
Allow CTRL F an address on the transaction list component
2022-05-18 19:30:07 +09:00
wiz
9c73e5be78 Merge branch 'master' into nymkappa/feature/ctrlf-addresses 2022-05-18 19:15:48 +09:00
wiz
b07826347a Merge pull request #1652 from mempool/nymkappa/bugfix/always-use-btc-mining
Always use BTC unit in blocks list
2022-05-18 19:14:49 +09:00
wiz
6fb8a88fc8 Merge branch 'master' into nymkappa/bugfix/always-use-btc-mining 2022-05-18 19:01:42 +09:00
softsimon
1093efe844 Improving loading indicator UX 2022-05-18 08:43:24 +04:00
Ayanami
fdb035c0d2 Remove unused config from nginx 2022-05-18 11:23:51 +09:00
Ayanami
d1671c4f1b add contributor sign for ayanamidev 2022-05-18 11:20:28 +09:00
Ayanami
0b351b9fcb pools-updater: Support secure Tor connection to sync data with Github
Use Axios instead of native https
2022-05-18 11:20:28 +09:00
softsimon
68116ab055 Merge pull request #1663 from mempool/simon/i18-corrections
Minor i18n corrections
2022-05-17 21:16:56 +04:00
softsimon
c09c694fb1 Minor i18n corrections 2022-05-17 19:27:41 +04:00
wiz
ca418e8c2a Merge pull request #1627 from mempool/simon/i18n-2.4
Correcting and harmonizing i18n strings
2022-05-18 00:01:33 +09:00
wiz
7cf01d6e34 Merge branch 'master' into simon/i18n-2.4 2022-05-17 23:04:38 +09:00
wiz
8af9c1d64f Merge pull request #1662 from mempool/nymkappa/bugfix/remove-useless-log
Delete useless log
2022-05-17 22:59:27 +09:00
nymkappa
5da94fa793 Delete useless log 2022-05-17 15:58:11 +02:00
wiz
1697f6df8e Merge pull request #1629 from mempool/nymkappa/feature/widget-size-align
Polish dashboards second widgets line
2022-05-17 22:33:55 +09:00
wiz
d364a53368 Merge branch 'master' into nymkappa/feature/widget-size-align 2022-05-17 21:58:51 +09:00
wiz
cabf486394 Merge pull request #1625 from knorrium/update_node_version
Update the recommended node version to v16.15.0 (LTS)
2022-05-17 21:57:27 +09:00
nymkappa
47bb073b9a Define avg block time to 10 min until we have at least 146 block in the current epoch 2022-05-17 14:40:18 +02:00
nymkappa
df59c21cfe Cleanup mining API endpoints 2022-05-17 12:02:50 +02:00
nymkappa
4463dae46b Use passive listeners to improve scrolling performance #1605 2022-05-17 11:39:13 +02:00
wiz
ece1cbbaa9 [installer] Fix mempool checkout for bisq instance 2022-05-17 17:43:35 +09:00
wiz
30337095cf [prod] Clarify syslog.conf syntax for priorities to keybase 2022-05-17 17:26:05 +09:00
wiz
5698468fbf [installer] Checkout top-level mempool using master branch 2022-05-17 17:25:31 +09:00
wiz
d2e041ec65 [installer] Fix electrs patch sed pattern typo introduced in #1628 2022-05-17 17:13:17 +09:00
wiz
c505ed5f0b [installer] Configure nvm to install Node.js v16.15.0 / npm v8.5.5 2022-05-17 17:13:03 +09:00
wiz
da3f516388 Merge pull request #1639 from hunicus/add-fullmempool-faqs
Add simple faq on full mempool
2022-05-17 17:08:58 +09:00
wiz
f879887fc5 Merge pull request #1556 from mempool/nymkappa/feature/update-block-api
Update block API
2022-05-17 16:20:11 +09:00
wiz
094257a9df Merge branch 'master' into nymkappa/feature/update-block-api 2022-05-17 15:57:05 +09:00
wiz
2fd0c06092 Merge pull request #1591 from mempool/nymkappa/bugfix/chain-validation-block-height
Skip missing blocks during block hash chain validation
2022-05-17 15:56:27 +09:00
wiz
4e96b1885e Merge pull request #1644 from mempool/nymkappa/feature/img-alt
Added some missing alt tags on some img
2022-05-17 15:55:48 +09:00
nymkappa
9be6f80cb9 Allow CTRL F an address on the transaction list component 2022-05-16 16:50:42 +02:00
nymkappa
fd42b12fcf Always use BTC unit in blocks list 2022-05-16 11:24:38 +02:00
nymkappa
0f39914a60 Added some missing alt tags on some img 2022-05-13 15:34:26 +02:00
nymkappa
7e8e4b1e6c If bisq data folder is not ready, retry every 3 minutes instead of exit 2022-05-13 11:54:52 +02:00
nymkappa
9377faea9c Skip missing blocks during block hash chain validation 2022-05-13 10:34:32 +02:00
wiz
e63aaedbc0 Merge pull request #1640 from knorrium/fix_electrum_tls_enabled_var 2022-05-13 03:12:05 +09:00
Felipe Knorr Kuhn
9f4ef70682 Merge branch 'master' into fix_electrum_tls_enabled_var 2022-05-12 10:21:21 -07:00
Felipe Knorr Kuhn
5d5be6f05d Fix ELECTRUM_TLS_ENABLED Docker variable 2022-05-12 10:17:53 -07:00
hunicus
858ad752c8 Add simple faq on "full" mempool 2022-05-12 11:50:23 -04:00
nymkappa
e59637128e Polish dashboards second widgets line 2022-05-12 17:05:31 +02:00
softsimon
a8d8a360ec Tweaking the websocket retry timers
fixes 1560
2022-05-12 15:21:27 +04:00
wiz
25e497ce2b Merge pull request #1636 from mempool/wiz/fix-minfee-node-bitcoin.conf
Modify minfee node bitcoin.conf to connect to external peers
2022-05-12 19:43:00 +09:00
wiz
4fdcf39639 Modify minfee node bitcoin.conf to connect to external peers 2022-05-12 19:35:58 +09:00
wiz
0b0b37b5aa Merge pull request #1633 from knorrium/fix_socks5_connection
Fix the socks5 connection after updating the socks lib
2022-05-12 16:20:42 +09:00
nymkappa
433bddab1f Remove unused pools.json observable definition 2022-05-12 08:13:42 +02:00
nymkappa
d26b1436b5 Always expose /block/{hash} API in the node backend 2022-05-12 08:13:42 +02:00
nymkappa
6ae44c6f7e Call node backend block API instead of electrs 2022-05-12 08:13:42 +02:00
nymkappa
384c8d17cf Only process mining pools on Bitcoin networks 2022-05-12 08:13:41 +02:00
nymkappa
964bf2671e Delete MinerComponent 2022-05-12 08:13:41 +02:00
nymkappa
ff74e6ea8c If block exists in memory cache, return it directly for /block API 2022-05-12 08:13:41 +02:00
nymkappa
067d160f33 Use block.extras on bitcoin network for fees/subsidy 2022-05-12 08:13:41 +02:00
nymkappa
057b5bd2e1 Update block API to use indexing if available 2022-05-12 08:13:40 +02:00
Felipe Knorr Kuhn
5ca9de5a42 Fix the socks5 connection after updating the socks lib 2022-05-11 19:08:41 -07:00
softsimon
3be67ea023 Reset outspends cache when switching to new tx page.
fixes #1613
fixes #1164
2022-05-12 03:28:34 +04:00
softsimon
9d33270970 Restoring the Confirmed string and re-localized the Multisig tag 2022-05-12 02:42:24 +04:00
softsimon
98c33ab08b Correcting and harmonizing i18n strings 2022-05-11 16:29:45 +04:00
wiz
b50f9b4e2d Merge pull request #1628 from mempool/wiz/reduce-production-electrs-loop-time-1s
[ops] Reduce electrs loop time from 5 seconds to 1 second
2022-05-11 19:01:55 +09:00
wiz
074e484cee Merge pull request #1630 from hunicus/update-issue-templates 2022-05-11 13:03:47 +09:00
hunicus
ec5d2134aa Remove bulb emoji
So users pay max attention to option titles and
pick the right one.
2022-05-10 18:31:42 -04:00
wiz
ab1bbaf8fd Merge pull request #1597 from mempool/nymkappa/feature/block-size-weight
Add block sizes vs weights graph
2022-05-10 23:59:19 +09:00
nymkappa
e9620b7b48 Add block sizes and weights graph 2022-05-10 16:41:40 +02:00
nymkappa
3e90650536 Add /api/v1/mining/blocks/sizes-weights/:interval API 2022-05-10 16:41:23 +02:00
wiz
250978ea91 Merge pull request #1561 from antonilol/recvd-htlcs
detect received lighting HTLC outputs
2022-05-10 23:23:45 +09:00
wiz
b17f882c64 Merge branch 'master' into recvd-htlcs 2022-05-10 23:11:28 +09:00
wiz
61a054b40f Merge pull request #1596 from mempool/nymkappa/feature/indexing-progress
Create indexing progress sticky notification
2022-05-10 23:02:48 +09:00
nymkappa
df177e0ea7 Localize indexing progress notifications 2022-05-10 15:48:21 +02:00
nymkappa
8398c3bcc5 Hide indexing notification in widget mode 2022-05-10 15:48:21 +02:00
nymkappa
de7c4774ec Added indexing progress indicator for hashrates, update logging 2022-05-10 15:48:21 +02:00
nymkappa
802e10e0a9 Create indexing sticky notification that show indexing progress in all mining dashboard related pages 2022-05-10 15:48:20 +02:00
wiz
11cdbb3118 Merge pull request #1601 from mempool/nymkappa/feature/chart-download
Add graph download feature
2022-05-10 22:45:14 +09:00
wiz
b47e4a93b6 Merge branch 'master' into nymkappa/feature/chart-download 2022-05-10 22:41:01 +09:00
wiz
8fb41eed44 [ops] Reduce electrs loop time from 5 seconds to 1 second 2022-05-10 21:52:07 +09:00
wiz
6803562daa Merge pull request #1617 from hunicus/address-lookups-faq
Add faq on address lookups
2022-05-10 21:44:07 +09:00
wiz
1988769c5f Merge branch 'master' into nymkappa/feature/chart-download 2022-05-10 21:43:33 +09:00
nymkappa
271f3c2317 [Chart download] Add .svg to file name, fix chart background colors 2022-05-10 14:32:57 +02:00
nymkappa
c62ed62db6 Change download button position so it's not hidden on mobile 2022-05-10 14:32:57 +02:00
nymkappa
7a487046b9 Add download button on pool ranking and mempool graphs 2022-05-10 14:32:57 +02:00
nymkappa
e8bb18fbc3 Add download feature on mining charts 2022-05-10 14:32:57 +02:00
wiz
7b15b2a475 Merge pull request #1618 from hunicus/remove-fiat-prompts-2
Remove $ from commands in repo docs
2022-05-10 20:48:16 +09:00
Felipe Knorr Kuhn
212cced969 Update the recommended node version to v16.5.0 (LTS) 2022-05-09 21:59:09 -07:00
dependabot[bot]
20db11f9d8 Bump clipboard from 2.0.10 to 2.0.11 in /frontend
Bumps [clipboard](https://github.com/zenorocha/clipboard.js) from 2.0.10 to 2.0.11.
- [Release notes](https://github.com/zenorocha/clipboard.js/releases)
- [Commits](https://github.com/zenorocha/clipboard.js/compare/v2.0.10...v2.0.11)

---
updated-dependencies:
- dependency-name: clipboard
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-10 02:09:37 +00:00
hunicus
8dde4510b5 Remove keybase from issue templates
Also link to #mempool.support instead of #mempool
matrix rooms.
2022-05-09 17:57:43 -04:00
hunicus
7fe425360c Remove keybase link and emphasize matrix link
By using a bolder emoji.
2022-05-09 17:57:43 -04:00
hunicus
0548263213 Make electrum server faq answer a list 2022-05-09 15:04:34 -04:00
Antoni Spaanderman
f61b8bf0fd detect received lighting HTLC outputs 2022-05-09 17:08:59 +02:00
hunicus
9a2043fab2 Remove $ from commands in repo docs 2022-05-09 02:35:03 -04:00
wiz
953f9405fc Merge pull request #1611 from hunicus/refine-prod-readme
Refine production deployment doc
2022-05-09 15:19:49 +09:00
wiz
2b9d9f985b Merge branch 'master' into address-lookups-faq 2022-05-09 15:18:42 +09:00
wiz
2d4401a336 Merge pull request #1594 from mempool/dependabot/npm_and_yarn/backend/express-4.18.1
Bump express from 4.17.1 to 4.18.1 in /backend
2022-05-09 15:17:23 +09:00
wiz
f359e956c1 Merge pull request #1593 from mempool/dependabot/npm_and_yarn/backend/ws-8.6.0
Bump ws from 8.3.0 to 8.6.0 in /backend
2022-05-09 15:09:36 +09:00
hunicus
48ed9fe824 Add faq link to address lookup error 2022-05-09 01:17:59 -04:00
hunicus
c019c7bc76 Add faq on address lookups / electrs issues 2022-05-09 01:17:59 -04:00
hunicus
f8cec63ad3 Add versions for node.js and npm 2022-05-09 01:07:21 -04:00
hunicus
88711b1d54 Remove fiat from commands 2022-05-09 00:57:48 -04:00
wiz
468ee7bcb1 Merge pull request #1585 from mempool/dependabot/npm_and_yarn/backend/typescript-4.6.4
Bump typescript from 4.4.4 to 4.6.4 in /backend
2022-05-09 11:49:35 +09:00
wiz
d5069985ef Merge pull request #1538 from mempool/dependabot/npm_and_yarn/backend/crypto-js-4.1.1
Bump crypto-js from 4.0.0 to 4.1.1 in /backend
2022-05-09 11:48:34 +09:00
dependabot[bot]
072c192d9a Bump ws from 8.3.0 to 8.6.0 in /backend
Bumps [ws](https://github.com/websockets/ws) from 8.3.0 to 8.6.0.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.3.0...8.6.0)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 02:42:41 +00:00
dependabot[bot]
06451f5342 Bump crypto-js from 4.0.0 to 4.1.1 in /backend
Bumps [crypto-js](https://github.com/brix/crypto-js) from 4.0.0 to 4.1.1.
- [Release notes](https://github.com/brix/crypto-js/releases)
- [Commits](https://github.com/brix/crypto-js/compare/4.0.0...4.1.1)

---
updated-dependencies:
- dependency-name: crypto-js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 02:40:04 +00:00
dependabot[bot]
074104e973 Bump typescript from 4.4.4 to 4.6.4 in /backend
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.4.4 to 4.6.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.4.4...v4.6.4)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-09 02:39:48 +00:00
wiz
f13816a5d9 Merge pull request #1598 from antonilol/fix-lightning-csv-delay
fix lightning force close label with CSV delay <= 16
2022-05-09 10:55:18 +09:00
wiz
a892e569a3 Merge pull request #1590 from mempool/nymkappa/feature/hashrate-around-midnight
Run hashrate indexing after midnight
2022-05-09 10:45:24 +09:00
wiz
dd8dc74fe9 Merge pull request #1609 from hunicus/fix-readme-intro 2022-05-08 13:20:16 +09:00
wiz
61e2297f52 Merge pull request #1610 from hunicus/revert-docker-link 2022-05-08 13:19:19 +09:00
hunicus
e3c7dc1e4d Refine production readme 2022-05-07 18:35:17 -04:00
hunicus
015a419bb8 Change faq docker link since docker docs moved 2022-05-07 17:36:54 -04:00
hunicus
57bba2f806 Add back overwritten sentence to main readme 2022-05-07 17:20:58 -04:00
wiz
2b0270042a Merge pull request #1565 from mempool/nymkappa/bugfix/initial-indexing
Update pools table before fetching the first blocks
2022-05-07 15:25:51 +09:00
wiz
5281c48697 Merge branch 'master' into nymkappa/bugfix/initial-indexing 2022-05-07 13:51:24 +09:00
dependabot[bot]
3baf6fdcdc Bump express from 4.17.1 to 4.18.1 in /backend
Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.18.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.1...4.18.1)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-06 06:27:56 +00:00
wiz
da3c7588b8 Merge pull request #1584 from mempool/simon/npm-audit-fix-04-28
Upgrading npm packages and
2022-05-06 15:26:55 +09:00
wiz
5336ba8160 Merge branch 'master' into simon/npm-audit-fix-04-28 2022-05-06 15:11:28 +09:00
wiz
d385924777 Merge pull request #1568 from mempool/simon/docs-module
Moving Docs and Faq to separate lazy loaded module
2022-05-06 15:09:59 +09:00
wiz
023f8222f3 Merge branch 'master' into simon/docs-module 2022-05-06 15:01:51 +09:00
wiz
e00a6aa123 Merge pull request #1587 from knorrium/fix_tiny_typo
Fix datababse typo
2022-05-06 15:01:23 +09:00
wiz
ff57762935 Merge pull request #1600 from hunicus/update-screenshot-2.4.0
Add screenshot for 2.4.0 to readme
2022-05-06 15:00:05 +09:00
wiz
6b7e8f457b Merge branch 'master' into update-screenshot-2.4.0 2022-05-06 14:59:38 +09:00
wiz
7672deef31 Merge pull request #1599 from hunicus/refresh-readme
Revise main readme and docker install docs
2022-05-06 14:58:03 +09:00
wiz
1ff51e60db Merge branch 'master' into nymkappa/bugfix/initial-indexing 2022-05-06 14:55:29 +09:00
wiz
f45dc25a08 Merge pull request #1592 from mempool/nymkappa/feature/realtime-estimated-hashrate
Show current network hashrate and difficulty using core RPC
2022-05-06 14:35:30 +09:00
wiz
ab28c0344c Merge branch 'master' into nymkappa/feature/realtime-estimated-hashrate 2022-05-06 13:40:11 +09:00
wiz
178251370e Merge pull request #1580 from mempool/nymkappa/bugfix/skeleton-titles
Fix reward stats skeleton titles
2022-05-06 13:31:10 +09:00
wiz
452e9277b0 Merge branch 'master' into nymkappa/bugfix/skeleton-titles 2022-05-06 13:23:02 +09:00
hunicus
e27892e597 Clarify dependencies for manual install
h/t to antonilol.
2022-05-04 11:59:23 -04:00
hunicus
0aca907a67 Adjust main readme 2022-05-03 14:08:26 -04:00
hunicus
38b2beb9f7 Edit manual install section 2022-05-03 14:08:26 -04:00
hunicus
9753af1fed Move docker docs to ./docker/readme + edit 2022-05-03 14:08:26 -04:00
hunicus
f92036f8da Edit installation methods list + 1-click section
Remove HA item.
2022-05-03 14:08:26 -04:00
hunicus
a02e443130 Adjust opening readme description 2022-05-03 14:08:26 -04:00
hunicus
2a75aae628 Add screenshot for 2.4.0 to readme 2022-05-03 14:07:14 -04:00
Antoni Spaanderman
222696f859 fix lightning force close label with CSV delay <= 16 2022-05-03 17:26:32 +02:00
softsimon
9dcf421216 Upgrading npm packages and 2022-05-02 20:04:04 +04:00
nymkappa
3972e7b8f0 Show current network hashrate and difficulty even if indexing is in progress 2022-05-02 17:39:03 +09:00
nymkappa
1f4cf1710a Show getnetworkhashps core result in dashboard + update unit formatting 2022-05-02 17:33:52 +09:00
wiz
b6fcf40565 Merge pull request #1579 from mempool/nymkappa/bugfix/bisq-dump-loading
Clean local block cache before loading dump
2022-05-02 11:47:51 +09:00
wiz
0aac410958 Merge branch 'master' into nymkappa/bugfix/bisq-dump-loading 2022-05-02 11:29:05 +09:00
nymkappa
b56f110f28 Run hashrate indexing after midnight 2022-04-30 17:54:49 +09:00
Felipe Knorr Kuhn
0f4e0c7413 Fix datababse typo 2022-04-29 22:01:22 -07:00
nymkappa
540a8da64c Fix reward stats skeleton titles 2022-04-27 17:50:25 +09:00
nymkappa
6565c363f8 Update pools table before fetching the first blocks 2022-04-27 16:57:07 +09:00
nymkappa
6d308fc81c Clean local block cache before loading dump: 2022-04-27 13:06:16 +09:00
softsimon
9b4c6b9e2c Moving Docs and Faq to separate lazy loaded module 2022-04-26 13:02:13 +04:00
wiz
bf314be7eb Merge pull request #1571 from hunicus/docker-faq-link 2022-04-25 23:31:42 +00:00
wiz
14e23831eb Merge pull request #1569 from mempool/nymkappa/bugfix/bisq-dump-loading
Read bisq dump blocks line by line and parse manually
2022-04-25 23:06:03 +00:00
wiz
addfa45548 Merge branch 'master' into nymkappa/bugfix/bisq-dump-loading 2022-04-25 22:55:56 +00:00
wiz
d701bbb2d8 Merge pull request #1564 from mempool/nymkappa/bugfix/binance-regex
Ignore case on coinbase tag regexes
2022-04-25 22:38:49 +00:00
hunicus
a3bbd286d6 Update docker faq 2022-04-24 23:12:35 -04:00
nymkappa
0ad267b07f Read bisq dump blocks line by line and parse manually 2022-04-25 11:49:04 +09:00
wiz
58d361df06 Merge pull request #1563 from mempool/nymkappa/feature/remove-block-extras-loading-indicator
Remove loading indicator for blocks-extras API
2022-04-24 07:25:27 +00:00
wiz
3189525bb6 Merge pull request #1554 from mempool/nymkappa/bugfix/fast-forward-re-org
Validate block hash chain after indexing and for new blocks
2022-04-24 06:53:15 +00:00
wiz
8d279edfe7 Merge branch 'master' into nymkappa/bugfix/fast-forward-re-org 2022-04-24 05:54:42 +00:00
wiz
e15abe6851 Merge pull request #1553 from mempool/nymkappa/bufix/blocks-list-skeleton
Update blocks list skeleton
2022-04-24 04:03:19 +00:00
wiz
97bd7ebbdd Merge branch 'master' into nymkappa/bufix/blocks-list-skeleton 2022-04-24 03:52:18 +00:00
wiz
71334516e2 Merge pull request #1548 from mempool/nymkappa/feature/timespan-selector-update
Use block count instead of oldest block for timespan selection
2022-04-24 03:51:47 +00:00
nymkappa
0803fed0f4 Fix pool component hashrate api response handling 2022-04-23 15:51:00 +09:00
wiz
6ae20ead63 Merge branch 'master' into nymkappa/feature/timespan-selector-update 2022-04-23 06:23:23 +00:00
wiz
369a986714 Merge pull request #1521 from mempool/nymkappa/feature/fee-range-chart
Add block fee rates percentiles chart
2022-04-23 06:08:34 +00:00
wiz
ed495cc019 Merge branch 'master' into nymkappa/feature/fee-range-chart 2022-04-23 04:44:03 +00:00
wiz
aea86e520e Merge pull request #1558 from mempool/nymkappa/bugfix/liquid-icons 2022-04-23 00:51:36 +00:00
nymkappa
c51216f97c Remove hardcoded liquid.network in asset icons url 2022-04-23 08:56:55 +09:00
nymkappa
0565471ecf Wait for external assets file writers to complete 2022-04-22 04:03:08 -04:00
nymkappa
0860e16b2b Ignore case on coinbase tag regexes 2022-04-22 03:25:34 -04:00
nymkappa
77fddc7ed9 Remove loading indicator for blocks-extras API 2022-04-22 00:49:02 -04:00
softsimon
e8d6872620 Merge pull request #1555 from mempool/wiz/add-mercury-wallet
Add mercury wallet in the about page
2022-04-20 14:07:42 +04:00
nymkappa
a68bab2c96 Add Mercury Wallet on About page as Wallet Integration 2022-04-19 22:38:25 +09:00
nymkappa
84b72f8b32 Manually re-index the last 10 blocks when the new block previoushash does not match latest block hash 2022-04-19 15:45:06 +09:00
nymkappa
900e02d9a5 Validate block hash chain after indexing and for new blocks 2022-04-18 17:49:22 +09:00
nymkappa
a2ad69beb1 Update blocks list skeleton 2022-04-18 11:54:52 +09:00
nymkappa
f7d57a2737 Use block count instead of oldest block for timespan selection 2022-04-15 20:43:10 +09:00
nymkappa
d0b27813b0 Save fee rates legend preference - Fix xaxis label 2022-04-15 19:39:27 +09:00
nymkappa
31ded69a4c Update cache warmer 2022-04-15 18:05:58 +09:00
nymkappa
b79fb6265c 24h/3d block fee rates chart is clickable 2022-04-15 16:16:18 +09:00
nymkappa
3ce6e81a39 Add block fee rate percentiles chart 2022-04-15 16:16:15 +09:00
nymkappa
078c7ac228 Add /api/v1/mining/blocks/fee-rates/{interval} API 2022-04-15 16:14:20 +09:00
wiz
653ce3e40c Merge pull request #1546 from mempool/nymkappa/bugfix/liquid-icon 2022-04-15 05:02:54 +00:00
nymkappa
4f4f76f067 Add try/catch liquid icon loading 2022-04-15 13:20:54 +09:00
wiz
ae98c49986 Merge pull request #1433 from knorrium/download_assets_over_tor
Allow syncing external backend assets using Tor
2022-04-14 21:46:55 +00:00
wiz
89d62b7be2 Merge branch 'master' into download_assets_over_tor 2022-04-14 21:35:59 +00:00
wiz
1c3d0363b0 Merge pull request #1341 from naveensrinivasan/naveen/pin-workflow-actions
Pin actions by SHA and set permissions for workflow
2022-04-14 21:34:40 +00:00
wiz
9cb8f64bbd Merge pull request #1518 from mempool/simon/remove-locutus-lib
Breaking out strtotime from locutus lib
2022-04-14 21:33:21 +00:00
wiz
026e66302a Merge branch 'master' into simon/remove-locutus-lib 2022-04-14 21:25:36 +00:00
wiz
3ea854dad2 Merge pull request #1339 from naveensrinivasan/naveensrinivasan/dependabot
Create dependabot.yml
2022-04-14 21:11:48 +00:00
wiz
45cc8b8775 Merge pull request #1505 from mempool/simon/sponsor-page-ux
Sponsor page revamped
2022-04-14 21:05:15 +00:00
wiz
bba4b5d32c Merge branch 'master' into simon/sponsor-page-ux 2022-04-14 20:51:49 +00:00
wiz
417542a217 Merge branch 'master' into simon/remove-locutus-lib 2022-04-14 20:27:58 +00:00
wiz
97f5e5883c Merge pull request #1517 from mempool/nymkappa/feature/refactor-db
Refactor database pool use
2022-04-14 20:12:11 +00:00
wiz
05f58026b0 Merge branch 'master' into nymkappa/feature/refactor-db 2022-04-14 20:11:53 +00:00
softsimon
14f25e7d63 Merge pull request #1499 from mempool/wiz/fix-newsyslog-for-backend
Fix log rotation configuration for mempool backend logs
2022-04-13 18:13:39 +04:00
softsimon
6919393e6c Refactored the DB class into a regular singleton class. 2022-04-13 17:38:42 +04:00
nymkappa
6fb0571b06 Refactor database pool use 2022-04-13 21:46:39 +09:00
softsimon
ec4405b07a Merge pull request #1519 from mempool/nymkappa/feature/cleanup-logs
Cleanup mining related backend logs
2022-04-13 14:58:18 +04:00
nymkappa
bee0dbd400 Cleanup mining related backend logs 2022-04-13 16:30:49 +09:00
softsimon
762c75803a Merge pull request #1473 from hunicus/add-faq
Add faq
2022-04-13 02:34:35 +04:00
hunicus
01f474628a Add websocket service to avoid issues with blocks 2022-04-12 18:06:32 -04:00
hunicus
1348e953a6 Merge branch 'master' into add-faq 2022-04-12 16:03:28 -04:00
hunicus
e50b58b8aa Add live mempool blocks to faq (h/t @softsimon) 2022-04-12 15:58:20 -04:00
hunicus
88c50f7107 Resolve conflict resulting from 315b759 2022-04-12 15:33:24 -04:00
hunicus
039e6bbe77 Add answers, fix accordions, tweak footer styling
Main purpose of this commit is to remove iframes from git
history. This commit squashes several commits that came
after iframes were added.
2022-04-12 15:31:45 -04:00
softsimon
cb894221dd Merge pull request #1502 from antonilol/script-display-2
fix wrong display of other sighash types + p2sh redeemScript when <=4 bytes + consistency with esplora backend + tapscript fixes
2022-04-12 22:32:21 +04:00
softsimon
b273f71d60 Breaking out strtotime from locutus lib 2022-04-12 17:52:30 +04:00
Antoni Spaanderman
b9127538ce Merge branch 'master' into script-display-2 2022-04-11 21:46:06 +02:00
softsimon
dd03629d20 Merge pull request #1495 from mempool/nymkappa/bugfix/fix-z-warning
Set zlevel for all graphs series
2022-04-11 17:18:57 +04:00
softsimon
d97bf332d1 Merge branch 'master' into nymkappa/bugfix/fix-z-warning 2022-04-11 16:54:04 +04:00
softsimon
5633fcb955 Merge pull request #1513 from mempool/nymkappa/feature/block-reward-graph
Add block rewards graph
2022-04-11 16:53:36 +04:00
nymkappa
d8915ad385 Update cache warmer 2022-04-11 21:20:20 +09:00
nymkappa
25c55b53a2 Set zlevel for all graphs series 2022-04-11 21:17:15 +09:00
nymkappa
8fb488a675 Add block rewards chart 2022-04-11 20:57:13 +09:00
softsimon
233af87eb4 Merge pull request #1512 from mempool/nymkappa/feature/reward-fee-graph
Add block fees graph
2022-04-11 15:17:11 +04:00
nymkappa
7dd0173e84 Improve mining graphs timespan selection UX 2022-04-11 18:17:36 +09:00
nymkappa
848e02eca0 Add new api to cache warmer 2022-04-11 15:32:17 +09:00
nymkappa
08e19a612c Add block fees graph 2022-04-11 15:32:16 +09:00
nymkappa
15cc503387 Move graph mining chart link into dropdown 2022-04-11 15:31:39 +09:00
softsimon
4b57dc8833 Merge pull request #1369 from nymkappa/feature/detect-re-org
[Indexing] - Support 10 blocks depth reorgs
2022-04-10 12:48:45 +04:00
softsimon
2abd22778f Merge pull request #1514 from antonilol/fix-address-labels
Fix Lightning HTLC detection with options_anchors
2022-04-10 12:48:12 +04:00
nymkappa
90ca668bcb [Indexing] - Support 10 blocks depth reorgs 2022-04-10 16:28:22 +09:00
Antoni Spaanderman
b4fce5cb00 Fix Lightning HTLC detection with options_anchors
rename `OP_CHECKSEQUENCEVERIFY` to `OP_CSV` in regex
2022-04-10 00:20:19 +02:00
softsimon
ac5749f493 Merge pull request #1506 from TechMiX/rtlFixes2
fix RTL layout issues
2022-04-10 00:32:13 +04:00
softsimon
627ff46541 Merge pull request #1511 from mempool/nymkappa/feature/handle-poolsjson-change
Use github api to fetch and update the pools database, once a week
2022-04-08 14:26:19 +04:00
nymkappa
ba12b10f9d Handle empty pools table error 2022-04-07 18:14:28 +09:00
nymkappa
e451b40084 Catch http request error - Fix 24h retry period 2022-04-07 16:14:43 +09:00
nymkappa
2d29b9ef89 Upon error, re-run the PoolsUpdater within 24h instead of 7d 2022-04-07 14:51:23 +09:00
nymkappa
1969f2a275 Use github api to fetch and update the pools database, once a week 2022-04-07 14:37:16 +09:00
softsimon
4d0f47b2ca Merge pull request #1510 from mempool/simon/fix-broken-npm-start
Npm run start broke
2022-04-06 15:40:48 +04:00
softsimon
bc9063e490 Npm run start broke 2022-04-06 15:40:26 +04:00
softsimon
f5c558e055 Merge pull request #1492 from mempool/nymkappa/bugfix/unknown-miner-tag
If mining dashboard is enabled, set block miner to "Unknown" by default
2022-04-06 14:35:50 +04:00
softsimon
33001ce96c Merge pull request #1503 from mempool/nymkappa/feature/additional-pool-data
Updated pool summary page to display more info on hashrate and blocks
2022-04-06 14:31:53 +04:00
nymkappa
6d876ad219 Update addresses button 2022-04-06 15:02:24 +09:00
TechMiX
9a389cc9cd add contributer signiture for TechMiX 2022-04-05 21:26:17 +02:00
TechMiX
0c3f9c895e fix RTL layout issues 2022-04-05 20:37:18 +02:00
softsimon
1a35c8ce42 Sponsor page revamped 2022-04-05 21:00:36 +04:00
softsimon
cec857eb63 Merge pull request #1504 from mempool/nymkappa/feature/update-link
Update AS142052 link
2022-04-05 12:46:26 +04:00
nymkappa
c733782d04 Update AS142052 link 2022-04-05 01:57:45 +09:00
nymkappa
c4db7ec5f6 Updated pool summary page to display more info on hashrate and blocks 2022-04-05 00:36:00 +09:00
Antoni Spaanderman
53d68a3571 name tapscript by its name + OP_CHECKSIGADD tapscript opcode detection 2022-04-04 17:16:34 +02:00
softsimon
6386f4c68a Merge pull request #1486 from mempool/simon/bitcoin-api-roundings
Rounding bitcoin api satoshis
2022-04-04 13:18:10 +04:00
Antoni Spaanderman
096f2172c6 more direct opcode comparison 2022-04-03 21:58:53 +02:00
Antoni Spaanderman
dfb5ba5c36 Completely rewrote convertScriptSigAsm
it now gives identical output to esplora, tested with the following TXs (testnet):

88710a9a6751827490f260e307757543f533c0f18bcd6865794713d263d5f5a4
446b2aad074de94efa28a1e82d2e6016dcb8a8ca38aca1a5a8eac6ef54e56a2e
4cfc410092e9514c14f48b61e20d2d3baf540ae7e981a821dd8c05dd4b7cd591
4b55dde38173174ab09e5571ebffffca798ba11143d28b9770600ff376dc778a
2022-04-03 21:41:12 +02:00
softsimon
ba92284e44 Merge pull request #1487 from mempool/nymkappa/bugfix/invalid-pool-handling
Send 404 when accessing non existing mining pool
2022-04-03 17:37:09 +04:00
softsimon
effe85f7c0 Merge pull request #1498 from mempool/nymkappa/bugfix/avoid-duplicated-indexing
Avoid parralel hashrate indexing when initial query is too slow
2022-04-03 15:57:43 +04:00
softsimon
ab8d0a02c7 Merge pull request #1501 from mempool/simon/opcode-coloring
Correcting op_code coloring
2022-04-03 15:31:11 +04:00
softsimon
4bd3030322 Correcting op_code coloring 2022-04-03 15:22:35 +04:00
softsimon
e27d80865f Merge pull request #1500 from mempool/simon/opcodes-fixes
Correcting wrong or missing op_codes display
2022-04-03 14:49:15 +04:00
softsimon
3115dcbe52 Correcting wrong or missing op_codes display
fixes #1210
2022-04-03 13:59:26 +04:00
nymkappa
f393cb0839 Wrap initial query in try/catch to reset the flag upon error 2022-04-03 15:47:33 +09:00
nymkappa
2ef2a34766 Avoid parralel hashrate indexing when initial query is too slow 2022-04-03 15:47:29 +09:00
softsimon
8d97351598 Merge pull request #1488 from mempool/nymkappa/feature/testnet-signet-empty-pool-addresses
Return empty pool addresses on testnet and signet
2022-04-03 01:13:35 +04:00
softsimon
f6b7a94b36 Merge pull request #1496 from mempool/nymkappa/bugfix/dont-assume-init-block-count
Mining stats does not depends on the websocket blocks number anymore
2022-04-03 01:08:24 +04:00
softsimon
d2fb80fb2c Merge pull request #1464 from antonilol/lightning-scripts
Detect more lightning scripts
2022-04-03 00:28:18 +04:00
softsimon
c9d4f90c15 Merge pull request #1401 from mempool/nymkappa/bugfix/mobile-ui-mining-dashboard
Fix some mobile UI issues on mining dashboard
2022-04-02 23:02:05 +04:00
nymkappa
2b79d6c935 Fix some mobile UI issues on mining dashboard 2022-04-03 03:19:25 +09:00
wiz
918798aca3 Fix newsyslog configuration for mempool backend 2022-04-02 10:14:22 -04:00
nymkappa
c3a3289fcf Mining stats does not depends on the websocket blocks number anymore 2022-04-01 12:41:25 +09:00
softsimon
2374f98ca8 Merge pull request #1482 from mempool/nymkappa/feature/remove-unused-endpoint
Remove unused `/api/v1/mining/difficulty/{interval}` endpoint
2022-03-31 19:38:24 +04:00
softsimon
94e0416951 Merge pull request #1493 from mempool/nymkappa/bugfix/websocket-graphs
Subscribe to websocket blocks update for all graphs components
2022-03-31 19:36:26 +04:00
nymkappa
52735553dd Subscribe to websocket blocks update for all graphs components 2022-04-01 00:25:46 +09:00
nymkappa
2521661c69 Remove unfiltered using input from log 2022-03-31 18:35:03 +09:00
softsimon
08accbca5d Merge pull request #1491 from hunicus/docs-scrolling
Apply smooth scrolling to docs only
2022-03-31 13:30:13 +04:00
nymkappa
0b5cba15d6 If mining dashboard is enabled, set block miner to "Unknown" by default 2022-03-31 00:14:12 +09:00
softsimon
b89eb58928 Merge pull request #1490 from mempool/nymkappa/bugfix/miner-tag-no-slug
Don't use `slugs` if it's not available in pools.json frontend
2022-03-30 17:48:16 +04:00
hunicus
315b7593bf Apply smooth scrolling to docs only 2022-03-30 09:44:41 -04:00
nymkappa
68f3022420 Don't use slugs if it's not available in pools.json frontend 2022-03-30 22:18:03 +09:00
wiz
ad89d9d9e8 Merge pull request #1475 from mempool/wiz/enable-nginx-warm-caching-for-all-mining-apis
Enable nginx warm cache for all /api/v1/mining API endpoints
2022-03-30 12:26:47 +00:00
wiz
188723cb55 Merge pull request #1483 from mempool/nymkappa/feature/cache-warn-mining
Add missing mining API endpoint to cache warmer
2022-03-30 12:25:50 +00:00
softsimon
0503bc6de8 Merge pull request #1485 from mempool/nymkappa/bugfix/pool-page-label
Update pool detail page label - Fix no data text
2022-03-30 16:24:53 +04:00
softsimon
a79a410859 Merge pull request #1489 from mempool/nymkappa/bugfix/single-call-pool-page
Fix spam call to `/api/v1/mining/pool/{slug}`
2022-03-30 15:42:08 +04:00
nymkappa
d70e183236 Add missing endpoints to cache warmer 2022-03-30 19:52:06 +09:00
nymkappa
12ec6bbf67 /api/v1/mining/difficulty/{interval} is not used 2022-03-30 19:46:17 +09:00
nymkappa
4b2698eee6 Use local block buffer to trigger pagination api call 2022-03-30 19:02:05 +09:00
nymkappa
a20c401c83 Fix spam call to /api/v1/mining/pool/{slug} 2022-03-30 18:43:01 +09:00
nymkappa
84394e13fa Return empty pool addresses on testnet and signet 2022-03-30 16:49:28 +09:00
softsimon
fb0e7ec240 Merge pull request #1484 from mempool/nymkappa/feature/block-reward-all-network
Show block reward on blockchain blocks for all Bitcoin networks
2022-03-30 11:39:36 +04:00
nymkappa
ccafe4a066 Send 404 when accessing non existing mining pool 2022-03-30 16:27:17 +09:00
softsimon
9a4d3817c5 Rounding bitcoin api satoshis
fixes #1466
2022-03-30 11:12:55 +04:00
nymkappa
f3847e483d Update pool detail page label - Fix no data text 2022-03-30 16:11:18 +09:00
nymkappa
1f20a56ae7 Show block reward on blockchain blocks for all Bitcoin networks 2022-03-30 15:47:47 +09:00
wiz
b1749ee6b6 Enable nginx warm cache for all /api/v1/mining API endpoints 2022-03-29 12:07:16 -05:00
wiz
796db0de4b Merge pull request #1474 from mempool/nymkappa/bugfix/cache-warmer-pool-slug
Use slugs in cache warmer
2022-03-29 16:43:00 +00:00
wiz
a33d558294 Fix nginx cache warmer script for url slugs 2022-03-29 11:40:37 -05:00
wiz
0561a207d9 Add jq to production deps in install script 2022-03-29 11:25:25 -05:00
nymkappa
1088655b1f Use slugs in cache warmer 2022-03-30 01:06:42 +09:00
softsimon
021a748e11 Merge pull request #1472 from mempool/nymkappa/feature/pool-chart-timespan
Add data zoom on pool hashrate chart
2022-03-29 19:52:56 +04:00
softsimon
51ddc3a959 Merge branch 'master' into nymkappa/feature/pool-chart-timespan 2022-03-29 19:00:19 +04:00
Antoni Spaanderman
105b67e566 Merge branch 'master' into lightning-scripts 2022-03-29 16:26:20 +02:00
Antoni Spaanderman
493b44d4b9 detect bare multisigs with handleVout 2022-03-29 16:16:20 +02:00
Antoni Spaanderman
b5ef148b82 replace 3 seperate labels with one AddressLabelsComponent.label?: string
+ consistency: move comments in the `if` blocks
2022-03-29 15:47:48 +02:00
softsimon
0965140bd5 Merge pull request #1457 from mempool/nymkappa/feature/address-list-collapse
Pool addresses collapse - Cleanup mobile layout
2022-03-29 15:28:36 +04:00
nymkappa
b465b7abba Add data zoom on pool hashrate chart 2022-03-29 18:20:00 +09:00
softsimon
ae8830d68b Merge branch 'master' into nymkappa/feature/address-list-collapse 2022-03-29 13:08:11 +04:00
softsimon
ec36faf98f Merge pull request #1468 from mempool/nymkappa/feature/blocks-pool-link
Use mining pool slug in block component
2022-03-29 13:07:43 +04:00
softsimon
cbb157a94c Merge pull request #1470 from mempool/nymkappa/bugfix/insert-unknown-pool
Fix query to insert unknown mining pool
2022-03-29 11:45:28 +04:00
nymkappa
7ab950d03c Add slug when we insert a mining pool for the first time 2022-03-29 16:31:26 +09:00
nymkappa
f51ea5b537 Fix query to insert unknown mining pool 2022-03-29 14:37:17 +09:00
nymkappa
8fba450033 Use mining pool slug in block component 2022-03-29 13:34:25 +09:00
wiz
7f7f8a490d Merge pull request #1459 from mempool/simon/about-page-wallets-arrange
Rearrange wallet providers on About page.
2022-03-29 04:24:53 +00:00
wiz
cb1a5ed976 Merge branch 'master' into simon/about-page-wallets-arrange 2022-03-29 04:14:43 +00:00
wiz
d516566f90 Merge pull request #1467 from mempool/nymkappa/bugfix/pool-slug-missing
Use slug instead of id in mining blocks list component
2022-03-29 04:14:33 +00:00
nymkappa
cc27b963d3 Use slug instead of id in mining blocks list component 2022-03-29 12:50:57 +09:00
nymkappa
5d9e8d0177 Fix pool page skeleton 2022-03-29 10:52:50 +09:00
Antoni Spaanderman
56656839b3 Detect more lightning scripts:
- expired htlc
- anchor
- swept anchor

Fix indentation what i messed up in 7565aa7

Add explanation
2022-03-27 16:13:48 +02:00
softsimon
9de8f78b30 Merge pull request #1463 from mempool/simon/3-27-audit-fix
npm audit fix
2022-03-27 14:33:57 +04:00
softsimon
32792f4f74 npm audit fix 2022-03-27 14:26:06 +04:00
hunicus
663cf100d1 Add no-sanitize pipe 2022-03-27 01:19:48 -04:00
hunicus
c6c335921c Finish adding non-graphical faq content 2022-03-26 23:31:49 -04:00
hunicus
ef2c845714 Generalize api-docs components to accommodate faq
Also add chunk of faq content.
2022-03-26 09:09:37 -04:00
softsimon
dc9ef154d4 Merge pull request #1456 from mempool/nymkappa/feature/pool-slug-url
Use mining pool slug in urls
2022-03-26 11:07:48 +04:00
nymkappa
9b04b3bcd6 Merge branch 'master' into nymkappa/feature/pool-slug-url 2022-03-26 12:08:39 +09:00
softsimon
3198feb46d Rearrange wallet providers on About page. 2022-03-25 21:52:00 +04:00
softsimon
b02c690924 Merge pull request #1458 from mempool/nymkappa/bugfix/jumping-tooltip
Disable glitchy angular tooltips animation
2022-03-25 19:15:02 +04:00
softsimon
7f6c8fdbac Merge pull request #1451 from mempool/nymkappa/bugfix/handle-crash-pool-parser
If pool slug does not exist, generate one on the fly, avoid crash
2022-03-25 19:11:46 +04:00
softsimon
fc5b769e2b Merge pull request #1450 from mempool/nymkappa/bugfix/relative-pool-url
Use relative pipe for pie chart click event
2022-03-25 18:27:28 +04:00
softsimon
7e7dd1213e Merge branch 'master' into nymkappa/bugfix/relative-pool-url 2022-03-25 17:20:30 +04:00
nymkappa
0a57f57a93 Disable angular tooltip animation globally 2022-03-25 22:15:16 +09:00
softsimon
acd4ab5357 Merge pull request #1449 from mempool/nymkappa/bugfix/echart-warning
Remove unnecessary echart init option
2022-03-25 16:54:26 +04:00
softsimon
f87da211dc Merge pull request #1428 from mempool/bugfix/blocks-list-css
Fix blocks list mobile layout
2022-03-25 16:52:45 +04:00
softsimon
fcaa6100b7 Merge pull request #1445 from mempool/nymkappa/bugfix/avg-fee-rounding
Fix rounding issue in reward stats
2022-03-25 16:52:08 +04:00
nymkappa
ef49457ec6 Pool addresses collapse - Cleanup mobile layout 2022-03-25 17:48:24 +09:00
nymkappa
352ea950a2 Use mining pool slug in urls 2022-03-25 14:22:22 +09:00
nymkappa
810c335759 If pool slug does not exist, generate one on the fly, avoid crash 2022-03-25 12:31:09 +09:00
nymkappa
c5837ab9df Round using AmountShortenerPipe 2022-03-25 11:39:29 +09:00
nymkappa
b075fedd7c Use relative pipe for pie chart click event 2022-03-25 10:57:34 +09:00
nymkappa
27d2127d46 Remove unnecessary echart init option 2022-03-25 10:08:20 +09:00
wiz
a016d1c071 Merge branch 'master' into nymkappa/bugfix/avg-fee-rounding 2022-03-24 16:30:57 +00:00
wiz
8114ffe1c8 Merge pull request #1446 from mempool/nymkappa/feature/pool-slug
Added slug into `pools` table
2022-03-24 16:29:54 +00:00
hunicus
289ed7b9b3 Make faq tab default when navigating to docs 2022-03-24 10:52:50 -04:00
hunicus
61faf31644 Fix routing for faq tab
Make API links relative + add routing for signet and
testnet.
2022-03-24 10:41:09 -04:00
hunicus
37e2786c5e Add faq tab placeholder 2022-03-24 08:55:20 -04:00
nymkappa
bb0fd78f28 Added slug into pools table 2022-03-24 19:44:22 +09:00
nymkappa
f1bb742341 Fix rounding issue in reward stats 2022-03-24 18:03:12 +09:00
wiz
a384328f50 Merge branch 'master' into bugfix/blocks-list-css 2022-03-24 00:55:36 +00:00
wiz
77df0c524c Merge pull request #1437 from mempool/nymkappa/bugfix/truncate-hashrates
Truncate hashrates after #1435 - Fix hashrate indexing logs
2022-03-24 00:55:15 +00:00
nymkappa
185dddd8c7 Truncate hashrates after #1435 - Fix hashrate indexing logs 2022-03-24 07:40:03 +09:00
wiz
80a103acab Merge pull request #1435 from mempool/simon/last-hashrate-indexing-millisecond-check
Last hashrate indexing check needs to be in milliseconds
2022-03-23 20:34:27 +00:00
softsimon
dcaa7fc4e8 Last hashrate indexing check needs to be in milliseconds 2022-03-24 00:24:17 +04:00
wiz
46405438d3 Merge pull request #1434 from knorrium/fix_git_commit_error
Fix git commit error
2022-03-23 19:49:14 +00:00
wiz
223dc46bd5 Merge branch 'master' into fix_git_commit_error 2022-03-23 19:49:04 +00:00
Felipe Knorr Kuhn
9c3fc9f75a Update frontend git commit hash logic 2022-03-23 12:33:47 -07:00
Felipe Knorr Kuhn
230fbdbc8e Fix empty revision case 2022-03-23 12:33:15 -07:00
Felipe Knorr Kuhn
4bb6f49950 Copy the git commit hash logic to the backend 2022-03-23 12:17:23 -07:00
Felipe Knorr Kuhn
f88af9c3f9 Add the DOCKER_COMMIT_HASH env var to the backend Dockerfile 2022-03-23 12:16:21 -07:00
wiz
3f58145e7b Merge pull request #1424 from mempool/nymkappa/bugfix/hashrate-native-js-timestamp
Set weekly hashrates timestamp to midnight
2022-03-23 18:28:33 +00:00
Felipe Knorr Kuhn
3e2e23417a Allow syncing external backend assets using Tor 2022-03-23 08:11:22 -07:00
nymkappa
fae49ba66e Merge branch 'master' into bugfix/blocks-list-css 2022-03-23 19:10:55 +09:00
nymkappa
a91fa797fa Merge branch 'master' into nymkappa/bugfix/hashrate-native-js-timestamp 2022-03-23 19:10:21 +09:00
softsimon
aaa8945b09 Merge pull request #1427 from mempool/nymkappa/feature/reward-stats-api
More dynamic mining reward
2022-03-23 11:41:57 +04:00
nymkappa
dcd50802e4 Use fee estimation box layout for reward stats and show USD amounts 2022-03-23 12:15:58 +09:00
nymkappa
fb7e81af57 Add more verbose description for stats + i18n 2022-03-23 11:54:36 +09:00
nymkappa
8cc005cb2c Refresh reward stats when a new block is mined 2022-03-23 11:54:36 +09:00
nymkappa
2644f2fb07 Move reward stats to component - Add /api/v1/mining/reward-stats/{blockCount} 2022-03-23 11:54:31 +09:00
wiz
7ace0cfbc0 Merge branch 'master' into nymkappa/bugfix/hashrate-native-js-timestamp 2022-03-23 00:09:55 +00:00
softsimon
5c629dfe98 Merge pull request #1430 from mempool/nymkappa/feature/pool-page-skeleton
Improve skeleton on pool detail page
2022-03-23 01:49:14 +04:00
softsimon
a1c796766e Merge branch 'master' into nymkappa/feature/pool-page-skeleton 2022-03-23 01:34:24 +04:00
softsimon
829ee9f460 Merge pull request #1429 from mempool/nymkappa/feature/format-incoming-vbytes-sec
Format Transaction vBytes per second (vB/s) tooltip value
2022-03-23 01:29:38 +04:00
softsimon
7a88f28a1d Merge branch 'master' into nymkappa/feature/format-incoming-vbytes-sec 2022-03-23 01:07:49 +04:00
softsimon
2ddb23beb5 Merge pull request #1431 from mempool/nymkappa/feature/remove-hover-blocks-dashboard
Don't show coinbase tooltip on mining dashboard
2022-03-22 14:21:01 +04:00
nymkappa
e9b83e6167 Don't show coinbase tooltip on mining dashboard 2022-03-22 18:31:28 +09:00
nymkappa
1566a831ed Improve skeleton on pool detail page 2022-03-22 17:19:34 +09:00
nymkappa
ff77a8ef47 Format Transaction vBytes per second (vB/s) tooltip value 2022-03-22 16:03:54 +09:00
nymkappa
7c1155ec93 Make sure blocks list container is at least 100vh on mobile 2022-03-22 15:43:04 +09:00
nymkappa
e1623b9234 Fix blocks list pagination on mobile 2022-03-22 15:16:15 +09:00
nymkappa
e5fd92b734 Most recent week was missing from indexing - Post merge fixes 2022-03-22 09:20:16 +09:00
nymkappa
74f4a6fcb4 Work using native javascript milliseconds timestamp 2022-03-22 08:44:54 +09:00
wiz
502ef29e54 Merge pull request #1423 from mempool/nymkappa/bugfix/hashrate-indexing
If we have incomplete data for the day/week, don't index hashrate
2022-03-21 22:11:26 +00:00
wiz
e9d8245d26 Merge branch 'master' into nymkappa/bugfix/hashrate-indexing 2022-03-21 22:11:18 +00:00
wiz
0bada4b079 Merge pull request #1425 from mempool/wiz/disable-cluster-for-bisq-backend
Disable cluster mode in prod bisq backend config
2022-03-21 18:15:31 +00:00
wiz
07612a144b Disable cluster mode in prod bisq backend config 2022-03-21 15:03:36 +00:00
nymkappa
077177ecc4 If we have incomplete data for the day/week, don't index hashrate 2022-03-21 20:32:57 +09:00
wiz
4c14278da6 Merge pull request #1422 from mempool/nymkappa/bugfix/halving-calculation
Use 10 minutes avg block time for halving calculation
2022-03-21 03:32:45 +00:00
nymkappa
3e8a34f3fd Use 10 minutes avg block time for halving calculation 2022-03-21 12:16:41 +09:00
wiz
14a4be743a Merge pull request #1420 from mempool/wiz/add-minfee-node-to-install-script
Add minfee node setup to production install script
2022-03-20 23:14:51 +00:00
wiz
46437919f9 Merge pull request #1419 from mempool/wiz/fix-crontab-backup-script-path
Fix path in mempool crontab for daily backup script
2022-03-20 23:14:40 +00:00
wiz
b23fd886aa Merge pull request #1416 from mempool/wiz/enable-full-indexing-all-networks
Enable full block indexing on all Bitcoin networks
2022-03-20 23:14:27 +00:00
wiz
dc54ed5b12 Add minfee node setup to production install script 2022-03-20 23:01:28 +00:00
wiz
5e58db23bb Fix path in mempool crontab for daily backup script 2022-03-20 22:19:03 +00:00
softsimon
69e4e194df Merge pull request #1417 from knorrium/address_highlighting_tests
Address highlighting tests
2022-03-20 13:45:21 +04:00
softsimon
153c63b242 Merge branch 'master' into address_highlighting_tests 2022-03-20 13:34:12 +04:00
softsimon
ebc9894bf7 Merge pull request #1418 from knorrium/cypress_9_5_2
Update Cypress to v9.5.2
2022-03-20 13:33:51 +04:00
Felipe Knorr Kuhn
a69719ad36 Update Cypress to v9.5.2 2022-03-19 22:33:56 -07:00
Felipe Knorr Kuhn
827760cae5 Add tests for the address highlighting feature 2022-03-19 22:16:22 -07:00
Felipe Knorr Kuhn
bbc6b8cfbf Use the new data-cy directive for deterministic tx locators 2022-03-19 22:15:37 -07:00
Felipe Knorr Kuhn
2d4d9d80bd Add new directive for UI tests 2022-03-19 22:14:37 -07:00
Felipe Knorr Kuhn
db4a13389a Update liquid tests to use the new css selector 2022-03-19 22:12:44 -07:00
Felipe Knorr Kuhn
cacbad38cc Change table-vx-* from id to class 2022-03-19 22:11:46 -07:00
wiz
d077098154 Enable full block indexing on all Bitcoin networks 2022-03-20 01:29:01 +01:00
wiz
6123f94785 Merge pull request #1415 from mempool/simon/miner-dashboard-websocket-push-fix
Subscribe to blocks and mempool updates in the mining dashboard
2022-03-19 20:38:21 +00:00
softsimon
4f441d3f30 Subscribe to blocks and mempool updates in the mining dashboard
fixes #1414
2022-03-19 23:32:01 +04:00
wiz
91d55e02d6 Merge pull request #1413 from mempool/wiz/create-zfs-filesystem-for-backups
Create zfs filesystem for /backup and chown to mempool
2022-03-19 16:08:29 +00:00
wiz
d8de9cb934 Create zfs filesystem for /backup and chown to mempool 2022-03-19 16:02:14 +00:00
wiz
cc0fbace18 Merge pull request #1412 from mempool/wiz/install-mempool-crontab
Install mempool crontab from install script
2022-03-19 15:57:26 +00:00
wiz
97e280f876 Install mempool crontab from install script 2022-03-19 15:56:29 +00:00
wiz
51b2f9581d Merge pull request #1411 from mempool/wiz/fix-upgrade-script-for-keybase-alerts
Set build script to notify new location based Keybase channels
2022-03-19 15:55:06 +00:00
wiz
28bd7d059f Merge pull request #1410 from mempool/wiz/configure-syslog-from-install-script
Configure syslog for keybase alerts from install script
2022-03-19 15:54:50 +00:00
wiz
7222198c48 Set build script to notify new location based Keybase channels 2022-03-19 15:44:00 +00:00
wiz
b99eb1d533 Add keybase to install script packages for alerts 2022-03-19 15:31:47 +00:00
wiz
bdc028ecc0 Install syslog and newsyslog configuration for keybase alerts 2022-03-19 15:29:45 +00:00
wiz
58ab9cce46 Merge pull request #1400 from mempool/simon/default-redirect-fix
Don't navigate to root when sub network url is wrong.
2022-03-17 18:57:31 +00:00
wiz
d1ca91985f Merge branch 'master' into simon/default-redirect-fix 2022-03-17 18:47:08 +00:00
softsimon
e700cc36bc Merge pull request #1398 from mempool/nymkappa/feature/blocks-list-link
Show pools in main dashboard in mining dashboard is enabled
2022-03-17 19:23:34 +01:00
nymkappa
a7900f6466 If mining dashboard is enabled, shows pools instead of timestamp 2022-03-17 19:04:12 +01:00
nymkappa
7481e27ec2 If mining dashboard is enabled, opens /mining/blocks instead of /blocks 2022-03-17 19:04:11 +01:00
softsimon
a117e325e8 Don't navigate to root when sub network url is wrong.
fixes #1399
2022-03-17 18:51:59 +01:00
wiz
bdfe31c601 Merge pull request #1390 from mempool/nymkappa/feature/mining-pool-data-ref-update
Use our forked repo of mining pool data
2022-03-17 16:38:36 +00:00
nymkappa
e8e4fd3457 mempool.space/.../pools.json => raw.githubusercontent.com/.../pools.json 2022-03-17 16:07:58 +01:00
nymkappa
84006b2012 Use our forked repo of mining pool data 2022-03-17 14:16:57 +01:00
softsimon
b781b3b065 Merge pull request #1373 from antonilol/difficulty
fix and improve block time predictions
2022-03-17 12:17:27 +01:00
softsimon
18e9fc8717 Merge branch 'master' into difficulty 2022-03-17 11:43:29 +01:00
wiz
9001369eeb Merge pull request #1383 from mempool/nymkappa/bugfix/hashrate-difficulty-crash
Fix javascript crash when disable hashrate/difficulty chart line
2022-03-16 20:30:04 +00:00
nymkappa
07deaa23ef Fix javascript crash when disable hashrate/difficulty chart line 2022-03-16 21:20:42 +01:00
wiz
5bc1dfcfba Merge pull request #1376 from nymkappa/bugfix/blocks-list-pagination
Fix pagination on /mining/blocks
2022-03-16 20:17:54 +00:00
wiz
cf9a258a7b Merge branch 'master' into bugfix/blocks-list-pagination 2022-03-16 20:17:44 +00:00
softsimon
35f9658d3b Merge pull request #1382 from mempool/nymkappa/feature/coinbase-tooltip-style
Apply coinbase style to blocks list tooltip
2022-03-16 21:10:20 +01:00
nymkappa
9252a45971 Fix pagination on /mining/blocks 2022-03-16 21:00:40 +01:00
nymkappa
f8c5584be7 Apply coinbase style to blocks list tooltip 2022-03-16 20:54:32 +01:00
softsimon
5c4aa6efac Merge pull request #1381 from mempool/nymkappa/feature/pool-page-blocks
Updated blocks list in pool details page
2022-03-16 20:43:22 +01:00
nymkappa
41fed984cb Fix pool get blocks API undefined start block behavior 2022-03-16 20:19:39 +01:00
nymkappa
dfff57d204 Fix pool page skeleton 2022-03-16 20:10:01 +01:00
nymkappa
96dc3fb24a Rename ScriptSig to Coinbase Tag 2022-03-16 19:26:56 +01:00
nymkappa
63a47c14d9 Fix duplicated blocks in pool details page 2022-03-16 19:17:33 +01:00
nymkappa
56bf267664 Updated blocks list in /pool/{id} page 2022-03-16 18:12:02 +01:00
softsimon
226b345c0a Merge pull request #1380 from mempool/nymkappa/bugfix/disable-mining-non-bitcoin
Force disable mining dashboard if base_module not mempool
2022-03-16 18:11:25 +01:00
nymkappa
71648bf01e Force disable mining dashboard if base_module not mempool 2022-03-16 17:28:00 +01:00
softsimon
32f3acd2f0 Merge pull request #1379 from mempool/nymkappa/bugfix/hide-mining-charts-non-bitcoin
Hide tabs in /graphs page is mining not available
2022-03-16 15:03:12 +01:00
nymkappa
92142cd531 Hide tabs in /graphs page is mining not available 2022-03-16 14:48:37 +01:00
wiz
4ecacde10b Merge pull request #1375 from nymkappa/feature/index-coinbase-scriptsig
Index asciiScriptSig and display it in /mining/blocks
2022-03-16 11:30:50 +00:00
nymkappa
ffb5db69a8 Store hex in coinbase raw - Improve scripsig parsing 2022-03-16 12:10:18 +01:00
nymkappa
94dbec46cf Index asciiScriptSig and display it in /mining/blocks 2022-03-15 23:33:51 +01:00
wiz
9c60c7ba79 Merge pull request #1374 from nymkappa/feature/improve-rpc-calls
Optimize RPC calls
2022-03-15 20:24:45 +00:00
nymkappa
3cd1505128 Optimize RPC calls 2022-03-15 21:16:02 +01:00
Antoni Spaanderman
dbcc46be5f fix and improve block time predictions
dce775e but then on the backed after refractor #1352
2022-03-15 20:39:25 +01:00
softsimon
53777e84c9 Merge pull request #1371 from mempool/simon/address-amount-fix
Address value did not calculate self transfers
2022-03-15 18:01:57 +01:00
softsimon
7854b6fcb3 Address value did not calculate self transfers 2022-03-15 16:26:49 +01:00
wiz
a292745ea7 Merge pull request #1370 from mempool/simon/merge-rpc-api
Merge node-bitcoin into the project
2022-03-15 15:26:41 +00:00
softsimon
e26beee44c Merge node-bitcoin into the project 2022-03-15 14:44:31 +01:00
wiz
622a003a2a Merge pull request #1354 from hunicus/mobile-refinements
Fix docs navigation on mobile
2022-03-15 09:38:17 +00:00
wiz
d769226061 Merge branch 'master' into mobile-refinements 2022-03-15 09:28:10 +00:00
wiz
32b24b8eeb Merge pull request #1366 from nymkappa/bugfix/hashrate-widget-typo 2022-03-14 21:46:41 +00:00
nymkappa
aac3bd5942 Fix typo in hashrate widget 2022-03-14 21:12:29 +01:00
wiz
b846e9fbda Merge pull request #1361 from hunicus/code-link-labels
Capitalize js package labels in docs
2022-03-14 19:25:21 +00:00
wiz
39598ad4c7 Merge pull request #1362 from nymkappa/feature/update-hashrate-widget
Make the hashrate/difficulty widget simpler
2022-03-14 19:24:16 +00:00
wiz
b3847bcbcb Merge branch 'master' into feature/update-hashrate-widget 2022-03-14 19:12:31 +00:00
wiz
46b0a8da8f Merge pull request #1363 from mempool/simon/double-websocket-fix
Remove duplicate websocket push.
2022-03-14 19:12:11 +00:00
nymkappa
b19d9c1af2 Cleanup hashrate/difficulty widget 2022-03-14 20:00:19 +01:00
softsimon
96ba7f7456 Remove duplicate websocket push. 2022-03-14 19:52:34 +01:00
hunicus
5a58ce0ab3 Fix loose ends
Add space above footer, add better delay for height
adjustment, and add conditions to prevent errors for
websocket endpoint and no endpoint.
2022-03-14 14:41:32 -04:00
wiz
dbd58ca53a Merge pull request #1364 from mempool/simon/websocket-difficulty-mock-data
Updated websocket mock data with difficulty adjustment
2022-03-14 18:39:10 +00:00
softsimon
e3dc90f40f Updated websocket mock data with difficulty adjustment 2022-03-14 19:25:17 +01:00
wiz
d1ecfccfdb Merge pull request #1309 from nymkappa/feature/graphs-reorg
Move all charts into /graphs page
2022-03-14 18:00:53 +00:00
hunicus
4c8ac3a585 Resize docs code templates on open (mobile) 2022-03-14 13:49:16 -04:00
hunicus
838725a862 Implement custom accordion for mobile docs 2022-03-14 13:48:45 -04:00
hunicus
85100a93f8 Remove mobile docs menu 2022-03-14 13:31:46 -04:00
nymkappa
8e61720e09 Add active router links - Disable graph touch scroll 2022-03-14 18:25:16 +01:00
nymkappa
77a99a97cc Move all charts into /graphs page - Fix mining charts layouts 2022-03-14 18:07:35 +01:00
wiz
c4e5e45855 Merge pull request #1352 from mempool/simon/difficulty-adjustment-refactor
Difficulty adjustment refactor
2022-03-14 16:33:55 +00:00
softsimon
8637059119 Difficulty adjustment refactor
fixes #1157
2022-03-14 16:48:59 +01:00
softsimon
8d18a143cb Merge pull request #1342 from hunicus/desktop-refinements
Fix docs navigation on desktop
2022-03-14 16:46:46 +01:00
wiz
ab3f80220c Merge branch 'master' into desktop-refinements 2022-03-14 15:31:57 +00:00
wiz
74e8c18b9d Merge pull request #1304 from mempool/simon/highlight-address
Address page highlight and transfer value
2022-03-14 15:31:23 +00:00
softsimon
f466498988 Address page highlight and transfer value 2022-03-14 16:19:37 +01:00
wiz
822c4256d7 Merge pull request #1358 from mempool/wiz/increase-default-indexing-blocks-amount
Increase default INDEXING_BLOCKS_AMOUNT by 10x to 11000 blocks
2022-03-14 13:15:54 +00:00
wiz
4d9dfaa260 Merge pull request #1360 from dsbaars/feature/backend-unixsocket2
Add support for MySQL connections over UNIX sockets
2022-03-14 13:15:16 +00:00
wiz
2023d36603 Cleanup MySQL unix socket code and add to sample config 2022-03-14 13:11:04 +00:00
Djuri Baars
465529b03f sed and config fix for MySQL socket, accept CLA for @dsbaars 2022-03-14 13:45:50 +01:00
Djuri Baars
7fd9e27cc2 Add MySQL socket support 2022-03-14 13:45:34 +01:00
wiz
1052b19fae Merge pull request #1351 from nymkappa/bugfix/hashrates-indexing-duplicates
Fix duplicate hashrate data points in "difficulty vs hashrate" chart
2022-03-13 23:05:45 +00:00
nymkappa
edddf25917 Remove unnecessary migration version 15 2022-03-13 16:08:33 +01:00
nymkappa
0730053d5d Use bitcoin RPC getblock because esplora returns int for difficulty - Fix some css in mining dashboard 2022-03-13 16:08:33 +01:00
nymkappa
bec3f214b5 Make sure to set avg_hashrate field to double unsigned 2022-03-13 16:08:32 +01:00
nymkappa
ab486bfe6e Use correct url for blocks-extras API - Fix amountShortner pipe 2022-03-13 16:08:32 +01:00
nymkappa
33897b029f Set db connection to UTC - Fix hashrate indexing 2022-03-13 16:08:31 +01:00
wiz
81984e9df5 Increase default INDEXING_BLOCKS_AMOUNT by 10x to 11000 blocks 2022-03-13 13:57:20 +00:00
wiz
456e6a7296 Merge pull request #1357 from mempool/simon/reorg-integrations
Reorganizing community integrations
2022-03-13 13:22:24 +00:00
softsimon
b8e30ad91f Reorganizing community integrations 2022-03-13 13:13:47 +00:00
hunicus
142566f4f9 Rename method
Method scope widened in #1354. Changing its name here to
avoid merge conflicts later.
2022-03-12 16:07:45 -05:00
softsimon
d4cd614bbc Merge pull request #1353 from nymkappa/bugfix/mining-dashboard-font-size
Fix font size in reward stat widget
2022-03-12 18:04:43 +01:00
nymkappa
9f5d64cf4a Fix font size in reward stat widget 2022-03-12 17:56:00 +01:00
softsimon
0dbee1461d Merge pull request #1335 from nymkappa/feature/new-blocks-page
Create new /mining/blocks page
2022-03-12 17:45:50 +01:00
nymkappa
a893e87347 Add more padding to the blocks list page 2022-03-12 17:33:07 +01:00
nymkappa
11de94cf90 Pool icon clickable - blocks list pagination margin 2022-03-12 16:49:16 +01:00
nymkappa
d6a0d84d71 Update mining/blocks in real time 2022-03-12 16:49:16 +01:00
nymkappa
123af53de2 Added latest block on mining dashboard 2022-03-12 16:49:15 +01:00
nymkappa
d8e986996f Add pagination on /mining/blocks 2022-03-12 16:49:15 +01:00
nymkappa
0e0331d8ab Create working template for the new blocks page 2022-03-12 16:49:15 +01:00
softsimon
77334e130d Merge pull request #1336 from nymkappa/feature/fix-empty-diff-adjust
Fix empty diff adjust table
2022-03-12 16:47:13 +01:00
softsimon
fe7f14f9a2 Merge pull request #1340 from nymkappa/bugfix/only-reset-hashrate-state-bitcoin
Fix database migration/typing issues
2022-03-12 15:48:51 +01:00
nymkappa
0dbc725c39 int -> bigint for all satoshis related indexed data 2022-03-12 15:48:22 +01:00
nymkappa
cd12e9bde9 Only insert hashrate states for bitcoin 2022-03-12 15:48:21 +01:00
nymkappa
87405ec4a5 Don't try to reset hashrates states if not bitcoin 2022-03-12 15:48:14 +01:00
wiz
d17a78715a Merge pull request #1347 from mempool/wiz/add-mysql-to-install-script
Add mariadb-server and mysql db creation to install script
2022-03-12 13:16:40 +00:00
wiz
4b9eef5464 Merge pull request #1350 from mempool/wiz/add-symlinks-for-mempool-scripts-to-installer
Create symlinks for mempool scripts in installation script
2022-03-12 12:45:54 +00:00
wiz
6073d4559b Create symlinks for mempool scripts in installation script 2022-03-12 12:41:33 +00:00
wiz
32bbee960c Merge pull request #1349 from mempool/wiz/set-git-to-always-rebase
Set git to always rebase from install script
2022-03-12 12:28:03 +00:00
nymkappa
1ea9c13a26 Fix empty diff adjust table 2022-03-12 13:27:45 +01:00
wiz
03faa18bfc Set git to always rebase from install script 2022-03-12 12:27:24 +00:00
wiz
0daf49b8ad Add mariadb-server and mysql db creation to install script 2022-03-12 12:19:49 +00:00
wiz
800fff1744 Merge pull request #1346 from mempool/wiz/remove-old-mempool-install-script
Remove old install script, merge remaining stuff into upgrade script
2022-03-12 11:59:31 +00:00
wiz
ed488a763d Remove old install script, merge remaining stuff into upgrade script 2022-03-12 11:52:19 +00:00
wiz
d84bf66c35 Merge pull request #1345 from mempool/wiz/add-production-frontend-configurations
Install production backend/frontend configurations from master
2022-03-12 10:55:59 +00:00
wiz
9786f1794f Install production backend/frontend configurations from master 2022-03-12 10:53:37 +00:00
wiz
b3cbe8a60e Merge pull request #1344 from mempool/wiz/add-production-frontend-configurations
Add production frontend configurations
2022-03-12 10:50:41 +00:00
wiz
597c62ede3 Remove INDEXING_BLOCKS_AMOUNT from mainnet frontend configuration 2022-03-12 10:39:28 +00:00
wiz
f8787e525b Add production frontend configurations 2022-03-12 10:34:17 +00:00
Naveen
486f9a126d Merge branch 'master' into naveensrinivasan/dependabot 2022-03-11 18:36:40 -06:00
hunicus
b71df774f5 Fix anchor links when navigating to current anchor 2022-03-11 19:09:42 -05:00
naveensrinivasan
8f8c22b829 Pin actions by SHA and set permissions for workflow
- Pinned dependencies https://github.com/ossf/scorecard/blob/main/docs/checks.md#pinned-dependencies
- Restricting permissions for github actions https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions
2022-03-11 22:48:15 +00:00
Naveen
b456419de7 Create dependabot.yml
Signed-off-by: naveensrinivasan <172697+naveensrinivasan@users.noreply.github.com>
2022-03-11 22:46:44 +00:00
hunicus
2d4b824862 Add smooth scrolling 2022-03-11 16:28:52 -05:00
wiz
dab6dd4a0e Merge pull request #1338 from nymkappa/bugfix/increase-fee-data-type
Make blocks.fees larger data type
2022-03-11 20:39:31 +00:00
nymkappa
afe7a360f7 Make blocks.fees larger data type 2022-03-11 20:42:07 +01:00
softsimon
e4f4a421d7 Merge pull request #1337 from mempool/revert-1327-bugfix/overflow-y
Revert "Always show scrolbar to avoid horizontal jumpy UI"
2022-03-11 20:10:15 +01:00
softsimon
bd55f65714 Revert "Always show scrolbar to avoid horizontal jumpy UI" 2022-03-11 20:09:57 +01:00
wiz
387c51b5e8 Merge pull request #1321 from mempool/wiz/installer2
Add new production installation script and related files
2022-03-11 16:42:31 +00:00
hunicus
6dbc621fef Capitalize js package labels in docs 2022-03-11 11:25:17 -05:00
wiz
6fc0311b8e Merge branch 'master' into wiz/installer2 2022-03-11 16:17:51 +00:00
wiz
e7ab595811 Fix order of operations in install script breaking things 2022-03-11 15:03:14 +00:00
wiz
ca2e29acf8 Install nvm.sh and build NodeJS from install script 2022-03-11 14:51:08 +00:00
wiz
589f3c5bb5 Create $HOME/.zshrc file for all users in install script 2022-03-11 14:35:58 +00:00
wiz
22f1ef9d22 Remove sudoers file modifications from install script 2022-03-11 14:14:45 +00:00
wiz
bee0cf2c65 Fix electrs-start-liquidtestnet configuration in install script 2022-03-11 14:11:38 +00:00
softsimon
9dbfd96249 Merge pull request #1320 from antonilol/regtest-1
regtest fixes
2022-03-11 14:07:58 +01:00
softsimon
5caaa1633a Merge pull request #1330 from nymkappa/feature/index-more-data
Index more data using getblockstats core RPC
2022-03-11 14:05:03 +01:00
nymkappa
9a71c15b49 Fix block indexing log 2022-03-10 14:23:29 +01:00
nymkappa
8ca3f6e72b Index more data using getblockstats core RPC 2022-03-10 14:21:11 +01:00
nymkappa
d82f9c4998 Index more data using getblockstats core RPC 2022-03-10 14:08:01 +01:00
softsimon
e83e1067c1 Merge pull request #1331 from nymkappa/feature/show-indexing-progress
Show current indexing progress in charts without data
2022-03-10 14:07:15 +01:00
nymkappa
609bb15b77 Split difficult adjustment table - Update indexing progress every 60sec 2022-03-10 14:02:43 +01:00
nymkappa
18f3018170 Show current indexing progress in charts without data 2022-03-10 14:02:43 +01:00
softsimon
ba3a737ab9 Merge pull request #1327 from nymkappa/bugfix/overflow-y
Always show scrolbar to avoid horizontal jumpy UI
2022-03-10 13:56:30 +01:00
wiz
a140d28a0e Fix zfs filesystems and permissions in installation script 2022-03-10 12:14:40 +00:00
nymkappa
758381725f Always show scrolbar to avoid horizontal jumpy UI 2022-03-10 13:11:02 +01:00
softsimon
8535599e34 Merge pull request #1326 from nymkappa/bugfix/firefox-pool
Fix pool detail page on Firefox
2022-03-10 12:50:03 +01:00
nymkappa
7957ca8f94 Fix pool detail page on Firefox 2022-03-10 12:42:11 +01:00
softsimon
192c61f9cb Merge pull request #1333 from nymkappa/feature/weekly-hashrate-indexing-monday
Index weekly hashrates using last Monday midnight - Fix charts tooltip
2022-03-10 12:39:31 +01:00
nymkappa
9ccb23f651 Index weekly hashrates using last Monday midnight - Fix charts tooltip 2022-03-10 11:53:49 +01:00
wiz
1bc9f106a1 Add signet and liquidtestnet to install script 2022-03-09 20:59:12 +01:00
softsimon
f62146a649 Merge pull request #1328 from antonilol/testnet-block-estimation
improve testnet block time estimations
2022-03-09 20:38:42 +01:00
softsimon
3f0befc055 Merge pull request #1329 from nymkappa/bugfix/missing-db-version-increment
Increment db version to 10 (26ee4204ac)
2022-03-09 18:53:02 +01:00
nymkappa
643e5ceb7f Increment db version to 10 (26ee4204ac) 2022-03-09 18:51:27 +01:00
Antoni Spaanderman
2cd24624b9 Merge branch 'master' into regtest-1 2022-03-09 17:55:09 +01:00
Antoni Spaanderman
2be18fe179 improve testnet block time estimations 2022-03-09 17:38:37 +01:00
softsimon
fd1514177f Merge pull request #1323 from mempool/simon/unknown-output-support
Display unknown for non standard output types
2022-03-09 16:29:04 +01:00
softsimon
381a310216 Display unknown for non standard output types
fixes #1262
2022-03-09 16:28:26 +01:00
softsimon
211e5ab3fe Merge pull request #1325 from nymkappa/feature/add-plus-sign-diff-adjust
Show `+` sign on positive diff adjust
2022-03-09 13:47:40 +01:00
nymkappa
1995eef37d Show + sign on positive diff adjust 2022-03-09 13:47:10 +01:00
softsimon
18d83b6f3a Merge pull request #1324 from nymkappa/bugfix/difficulty-adj-table-skeleton
Fix skeleton for difficulty adjustment table
2022-03-09 12:19:26 +01:00
nymkappa
47da8c023b Add message if on mining charts if there is no data to display 2022-03-09 12:17:31 +01:00
nymkappa
8d7546d2b5 Fix skeleton for difficulty adjustment table 2022-03-09 12:17:31 +01:00
Antoni Spaanderman
8d42b38234 simplify if statement 2022-03-09 11:51:36 +01:00
wiz
742df00701 Add missing electrs-start-liquid in install script 2022-03-08 21:22:11 +01:00
Antoni Spaanderman
b2f9c7db2d add non null assertion 2022-03-08 20:59:46 +01:00
softsimon
f0f9d33dac Merge pull request #1317 from nymkappa/feature/pool-hashrate
Added pool hashrate chart
2022-03-08 20:52:16 +01:00
wiz
1e87c3857b Add new production installation script and related files 2022-03-08 20:46:58 +01:00
nymkappa
171246f4ef Fix skeleton layout jumping in pool detail page 2022-03-08 20:46:20 +01:00
nymkappa
71d500d750 Fix pool detail page layout - add loading skeleton 2022-03-08 20:46:19 +01:00
nymkappa
f23f7f1cfa Cleanup empty block in api response - Update cache warmer 2022-03-08 20:46:19 +01:00
nymkappa
2b5d972e8d Only show relevant hashrate in the pool page 2022-03-08 20:46:18 +01:00
nymkappa
ad2dcc46e4 Added pool hashrate chart 2022-03-08 20:46:14 +01:00
Antoni Spaanderman
7a1a903599 oops 2022-03-08 20:40:44 +01:00
Antoni Spaanderman
71402f21c6 revert "add network regtest" 1f0ae60 2022-03-08 19:59:18 +01:00
Antoni Spaanderman
d179a563e4 Merge branch 'master' into regtest-1 2022-03-08 19:45:03 +01:00
softsimon
0cc82bbf1d Merge pull request #1318 from mempool/simon/rbf-cache
Replace by fee storage
2022-03-08 19:20:14 +01:00
softsimon
8267344cdc Don't push full RBF-transactions to prevent old states. 2022-03-08 18:54:49 +01:00
softsimon
b15de021f7 Fixing bug where RBF wasn't detected when using bitcoind 2022-03-08 18:39:53 +01:00
softsimon
f85771e03f Replace by fee storage
fixes #1222
2022-03-08 18:39:53 +01:00
softsimon
d504d0ecc0 Merge pull request #1319 from nymkappa/feature/index-blocks-timestamps
Index blocks.blockTimestamp for faster hashrates indexing
2022-03-08 17:23:12 +01:00
nymkappa
26ee4204ac Index blocks.blockTimestamp 2022-03-08 17:10:29 +01:00
wiz
39f1f4c05a Merge pull request #1316 from Bosch-0/zeus 2022-03-08 16:12:59 +09:00
bosch
2ea78566a6 Added new Zeus logo. 2022-03-08 11:09:43 +08:00
softsimon
ba12a75532 Merge pull request #1311 from nymkappa/feature/difficulty-table-update
Replace difficulty adjustment timestamp with block height
2022-03-07 20:46:50 +01:00
nymkappa
b7254e7aca Replace difficulty adjustment timestamp with block height 2022-03-07 20:42:59 +01:00
softsimon
5d16a30cf2 Merge pull request #1312 from nymkappa/feature/shorter-stats
Shorten reward stats
2022-03-07 20:37:06 +01:00
softsimon
9e68b0a597 Merge branch 'master' into feature/shorter-stats 2022-03-07 20:36:53 +01:00
softsimon
5a373f6518 Merge pull request #1313 from nymkappa/bugfix/pie-chart-click-fix
Fix broken navigation when clicking on pie chart
2022-03-07 20:36:03 +01:00
softsimon
81a82b619e Merge branch 'master' into bugfix/pie-chart-click-fix 2022-03-07 20:35:49 +01:00
softsimon
42cd08798c Merge pull request #1315 from nymkappa/feature/mining-dashboard-skeleton
Add skeleton in the mining dashboard page
2022-03-07 20:34:01 +01:00
softsimon
593e82d8f4 Merge branch 'master' into feature/mining-dashboard-skeleton 2022-03-07 20:33:54 +01:00
softsimon
47e46b7996 Merge pull request #1314 from mempool/simon/utxo-tracking-refactor
UTXO spent tracking refactor
2022-03-07 20:07:40 +01:00
nymkappa
2b91ced4d6 Add skeleton in the mining dashboard page 2022-03-07 19:54:17 +01:00
softsimon
6f3443faba UTXO spent tracking refactor
refs #1301
2022-03-07 19:45:09 +01:00
nymkappa
1318c4aa36 Fix broken navigation when clicking on pie chart 2022-03-07 18:42:47 +01:00
nymkappa
2435e7bfe9 Shorten reward stats 2022-03-07 18:19:02 +01:00
softsimon
09e3791cee Merge pull request #1310 from nymkappa/bugfix/auto-refresh-reward-stats
Bugfix/auto refresh reward stats
2022-03-07 17:18:57 +01:00
nymkappa
8837b8c882 Actually use the past 8 blocks for reward stats 2022-03-07 17:17:08 +01:00
softsimon
beae88778b Merge pull request #1308 from nymkappa/bugfix/fix-db-migration
Truncate hashrates table only for bitcoin (db migration v9)
2022-03-07 15:57:20 +01:00
nymkappa
32d66c03c6 Truncate hashrates table only for bitcoin (db migration v9) 2022-03-07 15:56:07 +01:00
softsimon
ecdd9bdf91 Merge pull request #1306 from mempool/simon/liquid-missing-asset-inputs
Handle missing asset registry for inputs
2022-03-07 15:24:47 +01:00
softsimon
8d4bc201ff Merge pull request #1305 from mempool/simon/track-utxos
UTXO spent tracking
2022-03-07 15:12:49 +01:00
softsimon
00ad58c26d Merge branch 'master' into simon/track-utxos 2022-03-07 15:12:36 +01:00
softsimon
d188ab3c09 Handle missing asset registry for inputs
refs #1246
2022-03-07 13:14:34 +01:00
softsimon
641fa91a48 Merge pull request #1303 from nymkappa/feature/update-mining-dashboard
Mining dashboard polishing
2022-03-07 12:03:09 +01:00
nymkappa
05342079b3 Disable mining charts iteration on mobile widgets 2022-03-07 11:51:00 +01:00
nymkappa
bc13393778 Implement temporary reward stats for the mining dashboard 2022-03-07 11:51:00 +01:00
nymkappa
84ef424752 Fix halving calculation 2022-03-07 11:50:59 +01:00
nymkappa
d45f3c32cf Show more stats in pool ranking pie widget 2022-03-07 11:50:59 +01:00
nymkappa
f9e361a9c0 "view more" links - placeholders 2022-03-07 11:50:59 +01:00
nymkappa
cf4336eb2e Move small pie share into "other" - align labels 2022-03-07 11:50:58 +01:00
nymkappa
6cdd41a8f7 Add difficulty adjustment table in mining dashboard 2022-03-07 11:50:58 +01:00
nymkappa
b2dec5e20a Mining dashboard layout matches main dashboard layout 2022-03-07 11:50:57 +01:00
softsimon
16331d1be7 Merge pull request #1302 from nymkappa/bugfix/weekly-pool-hashrate-indexing
Fix hashrate indexing backend logic (split daily/weekly indexing logic, timezone issue, unclosed db connection)
2022-03-06 20:32:17 +01:00
softsimon
059e82a805 UTXO spent tracking
fixes #1301
2022-03-06 18:27:13 +01:00
nymkappa
2570dbfab4 Fix incorrect state naming 2022-03-06 17:06:55 +01:00
nymkappa
3d1a10cdfc Use the latest timestamp in hashrate data ticker 2022-03-06 16:57:40 +01:00
nymkappa
2a170c07d1 Remove unnecessary await 2022-03-06 16:50:59 +01:00
nymkappa
4b859eb4f6 Re-index hashrates because we have different timestamp handling 2022-03-06 16:48:14 +01:00
nymkappa
89411f23d8 Set connection pool timezone to UTC - Close mysql connections upon error 2022-03-06 16:44:09 +01:00
nymkappa
1ced44d970 Remove useless mining function wrapper in backend 2022-03-06 12:52:39 +01:00
nymkappa
8532d13a0d Update hashrate indexing logs 2022-03-06 12:52:39 +01:00
nymkappa
7314582dd1 Split network daily hashrate indexing and weekly pool hashrate indexing 2022-03-06 12:52:38 +01:00
softsimon
3e50e4541b Merge pull request #1185 from antonilol/fee-visibility
fix 0 sat/vB not displaying
2022-03-06 10:28:51 +01:00
softsimon
50cd8e01bd Merge branch 'master' into fee-visibility 2022-03-06 10:28:43 +01:00
softsimon
35f81200d0 Merge pull request #1293 from mempool/simon/shorten-address-prefix-result
Shorten address search with middle ellipsis
2022-03-05 17:09:29 +01:00
softsimon
5de77c7ae4 Merge branch 'master' into simon/shorten-address-prefix-result 2022-03-05 17:09:23 +01:00
softsimon
5ac2c1cf34 Merge pull request #1291 from mempool/simon/address-prefix-bug
Only return unique address prefix autocomplete
2022-03-05 17:08:29 +01:00
softsimon
552c717693 Merge branch 'master' into simon/address-prefix-bug 2022-03-05 17:08:23 +01:00
softsimon
f990d30a22 Merge pull request #1300 from nymkappa/bugfix/stop-block-chunk-indexing-upon-error
Pause block indexing chunk upon error and retry later
2022-03-05 16:30:35 +01:00
softsimon
8b1a0fe706 Merge branch 'master' into bugfix/stop-block-chunk-indexing-upon-error 2022-03-05 16:30:26 +01:00
softsimon
e131ec883b Merge pull request #1298 from nymkappa/feature/fix-hashrate-indexing-try-catch
Make sure to reset hashrates indexing flags upon error
2022-03-05 16:30:12 +01:00
nymkappa
92dc5a78d8 Make sure to reset hashrates indexing flags upon error 2022-03-05 16:25:38 +01:00
nymkappa
773ac4d44b Pause block indexing chunk upon error and retry later 2022-03-05 15:50:48 +01:00
softsimon
c398d164ba Merge pull request #1297 from nymkappa/feature/fix-hashrate-indexing
Only reset hashrate state flag after database migration - Fix weekly …
2022-03-05 14:59:26 +01:00
softsimon
daa7079338 Address search with middle ellipsis mobile fix 2022-03-05 14:19:44 +01:00
nymkappa
5f6c1c6ccf Only reset hashrate state flag after database migration - Fix weekly hashrate indexing bug 2022-03-05 13:54:07 +01:00
Antoni Spaanderman
590170a0df Merge branch 'master' into fee-visibility 2022-02-28 13:10:12 +01:00
Antoni Spaanderman
e2ef58c5dd Merge branch 'master' into regtest-1 2022-02-28 13:09:51 +01:00
softsimon
e5b2440b45 Shorten address search with middle ellipsis 2022-02-27 20:05:32 +03:00
softsimon
056a31fc79 Only return unique address prefix autocomplete
fixes #1290
2022-02-27 15:58:09 +03:00
wiz
5f19b6dd07 Merge pull request #1288 from nymkappa/feature/merge-hashrate-pool-ranking
Merge pool share and dominance into one widget
2022-02-25 21:44:05 +09:00
nymkappa
b427548973 Merge pool pie and dominance into one widget 2022-02-25 21:16:35 +09:00
softsimon
7228d07b52 Merge pull request #1285 from nymkappa/feature/pool-hashrate
Create pools hashrate dominance chart
2022-02-25 13:20:29 +04:00
nymkappa
434b60ef8b Removed debug console.log 2022-02-25 18:17:43 +09:00
nymkappa
88dd956354 Hide 'dot' when hovering charts 2022-02-25 13:06:33 +09:00
nymkappa
c419b7dd1a Add new api endpoint to cache warmer 2022-02-25 10:21:16 +09:00
nymkappa
ec40231f93 warn on re-index - fix hash indexing state issue - cleanup ui mining 2022-02-24 20:21:14 +09:00
nymkappa
54ccfe070e Move pool pie chart at the bottom of the mining dashboard 2022-02-24 20:21:14 +09:00
nymkappa
e358a553c1 Match pool color between pools pie and pools stack 2022-02-24 20:21:13 +09:00
nymkappa
78fa3e33cd Create stacked pools historical hashrates to see dominance over time 2022-02-24 20:21:12 +09:00
nymkappa
a214c5ca20 Disable difficulty adjustment table for now until loadMore is implemented 2022-02-24 20:21:12 +09:00
wiz
4060c05015 Merge pull request #1284 from mempool/simon/update-package-versions
Upgrade frontend deps: Angular 13.2, echarts 5.3, fortawesome
2022-02-24 10:35:40 +00:00
softsimon
204e1c2a84 Npm install 2022-02-23 21:07:49 +04:00
softsimon
ab7b66c9a8 Bumping echarts 2022-02-23 20:52:38 +04:00
wiz
b1d6021406 Merge pull request #1283 from knorrium/update_cypress_to_v9.5.0 2022-02-23 06:53:46 +00:00
wiz
238b398cc0 Merge branch 'master' into update_cypress_to_v9.5.0 2022-02-23 06:30:42 +00:00
wiz
0dfd7ea26b Merge pull request #1282 from knorrium/fix_footer_test 2022-02-23 06:30:34 +00:00
Felipe Knorr Kuhn
30e41007a2 Update Cypress to v9.5.0 2022-02-22 22:14:59 -08:00
Felipe Knorr Kuhn
ac4d54950a Fix status page regex 2022-02-22 22:11:18 -08:00
wiz
b2d591b5bd Merge pull request #1281 from mempool/simon/footer-transactions-bar-fix 2022-02-23 03:35:54 +00:00
wiz
d05d7f1e27 Merge branch 'master' into simon/footer-transactions-bar-fix 2022-02-23 03:19:06 +00:00
wiz
57e6348936 Merge pull request #1280 from mempool/simon/display-unblinded-tx-sum
Show tx value sum if complete unblinding data is provided
2022-02-23 03:18:39 +00:00
wiz
e617e14901 Merge branch 'master' into simon/display-unblinded-tx-sum 2022-02-23 03:09:44 +00:00
wiz
5f0a0c0ac7 Merge pull request #1279 from mempool/simon/liquid-testnet-proxy
Add proxy support for Liquid Testnet
2022-02-23 03:09:34 +00:00
wiz
96ab1aae6e Merge branch 'master' into simon/liquid-testnet-proxy 2022-02-23 03:09:09 +00:00
wiz
e3e6e63a1e Merge pull request #1278 from mempool/simon/liquid-asset-issuance-output
Handle missing asset registry assets
2022-02-23 03:08:59 +00:00
wiz
dd2a52be65 Merge branch 'master' into simon/liquid-asset-issuance-output 2022-02-23 02:55:15 +00:00
wiz
c52f1c6973 Merge pull request #1277 from nymkappa/feature/mempool-show-only-fees
Remove block subsidy from mempool blocks
2022-02-23 02:55:03 +00:00
wiz
6c5253a7c4 Merge branch 'master' into feature/mempool-show-only-fees 2022-02-23 02:19:14 +00:00
wiz
8d1a60028b Merge pull request #1275 from nymkappa/feature/merge-hashrate-difficulty
Merge hashrate and difficulty components - Cleanup mining design overall
2022-02-23 02:19:00 +00:00
nymkappa
c1092adfd9 Add blocks.extras.totalFees and show it in blockchain blocks component 2022-02-22 23:57:54 +09:00
nymkappa
807ef2288a Don't assume two difficulty with the same value is impossible 2022-02-22 22:53:47 +09:00
softsimon
cd7cb56890 Fixed incoming transactions bar on the status page
fixes #1106
2022-02-22 17:37:04 +04:00
nymkappa
8aa1fe48dc Remove debug console.log 2022-02-22 22:04:52 +09:00
softsimon
f11c703e87 Show tx value sum if complete unblinding data is provided
fixes #1174
2022-02-22 16:53:59 +04:00
softsimon
411ac8d019 Add proxy support for Liquid Testnet 2022-02-22 16:39:53 +04:00
softsimon
78c0fe0e04 Handle missing asset registry assets
fixes #1246
2022-02-22 16:32:54 +04:00
nymkappa
201eff593b Remove block subsidy from mempool blocks 2022-02-22 20:37:17 +09:00
nymkappa
38eb8cbcfd Fix tooltip text alignment in mining dashboard 2022-02-22 20:30:14 +09:00
nymkappa
3f0bf81726 Improve hashrate chart and mining dashboard design 2022-02-22 20:16:19 +09:00
nymkappa
dcd84680fc Remove difficulty component 2022-02-22 20:16:19 +09:00
nymkappa
cfbf863a44 Move difficulty adjustment table in the merged hashrate component 2022-02-22 20:16:18 +09:00
nymkappa
83a382a0cb Merge hashrate and difficulty into one chart 2022-02-22 20:16:18 +09:00
wiz
98e0e1e9c1 Merge pull request #1273 from mempool/simon/asset-amount-filter
Display asset circulating amount more nicely fixing overflow
2022-02-22 03:11:42 +00:00
wiz
d750b5ccd3 Merge branch 'master' into simon/asset-amount-filter 2022-02-22 03:11:17 +00:00
wiz
55ca5087e0 Merge pull request #1274 from nymkappa/feature/mempool-blocks-reward
Show block reward in the mining dashboard
2022-02-22 03:11:09 +00:00
wiz
e748775f96 Merge branch 'master' into feature/mempool-blocks-reward 2022-02-22 02:59:08 +00:00
wiz
84cbb0222d Merge pull request #1272 from nymkappa/feature/cleanup-tooltips
Tweak new charts design
2022-02-22 02:57:47 +00:00
nymkappa
d23b9d8cf6 Replace block size => block reward in the mining dashboard 2022-02-22 11:16:18 +09:00
softsimon
3e6dba2d58 Display asset circulating amount more nicely fixing overflow
fixes #1264
2022-02-21 22:33:03 +04:00
nymkappa
e770520f0e Add data zoom to difficulty 2022-02-22 00:26:16 +09:00
nymkappa
7da4187638 Tweak charts color - Apply mempool tooltip style 2022-02-22 00:26:16 +09:00
wiz
3f5a749352 Merge pull request #1269 from nymkappa/feature/hashrate-chart
Created hashrate chart component
2022-02-21 15:08:27 +00:00
nymkappa
976017dbef Update database migration log levels 2022-02-21 23:57:44 +09:00
nymkappa
938a978900 Make sure to try/catch indexing code in case db is not available 2022-02-21 23:46:25 +09:00
nymkappa
b2f872c4cc Show unit in the yaxis for hashrate chart 2022-02-21 18:37:34 +09:00
nymkappa
beeda5fa87 Fix hashrate chart padding 2022-02-21 18:24:24 +09:00
nymkappa
413cf3ccaa Fix 'active' menu when using mining dashboard 2022-02-21 18:19:03 +09:00
nymkappa
6e62c62855 Add /api/v1/mining/hashrate/* apis to the cache warmer 2022-02-21 18:01:09 +09:00
nymkappa
649ad2e859 Hashrates indexing waits for blocks indexing - Batch hashrates I/O ops 2022-02-21 17:34:07 +09:00
nymkappa
537e50c682 Reduce log spam during hashrate indexing 2022-02-21 16:54:43 +09:00
nymkappa
bb1c5d0b31 Add --reindex command line parameter to force full re-indexing 2022-02-21 16:38:18 +09:00
nymkappa
e5907159b8 Refactor power of ten conversion into one wrapper 2022-02-21 15:55:27 +09:00
nymkappa
e4721e8574 Improve hashrate indexing logs 2022-02-21 14:49:00 +09:00
nymkappa
ac118141ce Make hashrate chart more responsive 2022-02-21 14:49:00 +09:00
nymkappa
53a8d5b246 Add network hashrate to mining dashboard 2022-02-21 14:48:59 +09:00
nymkappa
e61df324ea Index new hashrates once every 24 hours 2022-02-21 14:48:59 +09:00
nymkappa
358604ad85 Added hashrate chart 2022-02-21 14:48:58 +09:00
nymkappa
6fe8f6fa1e Generate daily average hashrate data 2022-02-21 14:48:57 +09:00
nymkappa
38b37a3ee7 Re-define sub mining routes properly and use router outlet 2022-02-21 14:48:50 +09:00
softsimon
50f86ba152 Merge pull request #1223 from antonilol/address-labels
detect lightning htlc and unilateral close + fix multisig badge
2022-02-20 20:14:40 +04:00
softsimon
cd00953fa7 Merge branch 'master' into address-labels 2022-02-20 20:12:20 +04:00
wiz
a4db02e1f9 Merge pull request #1268 from mempool/wiz/inline-enterprise-sponsor-logos
Inline all Enterprise Sponsor logos on About page
2022-02-20 11:20:25 +00:00
wiz
3b7d36e9e9 Fix mouseover CSS for inline SVG on About page 2022-02-20 20:11:31 +09:00
wiz
ce41e1e65d Merge branch 'master' into wiz/inline-enterprise-sponsor-logos 2022-02-20 11:09:11 +00:00
softsimon
b70df576d4 Fixing enterprise sponsors margin 2022-02-20 13:33:46 +04:00
wiz
0e037d5c8f Merge pull request #1267 from mempool/wiz/move-sponsor-button-on-about-page 2022-02-20 08:43:56 +00:00
wiz
22087bf6cd Merge branch 'master' into wiz/move-sponsor-button-on-about-page 2022-02-20 08:14:08 +00:00
wiz
1545dad2d2 Merge pull request #1265 from mempool/wiz/add-nixbitcoin-to-community-integrations 2022-02-20 08:13:34 +00:00
wiz
d837bcb791 Merge branch 'master' into wiz/add-nixbitcoin-to-community-integrations 2022-02-20 08:06:00 +00:00
softsimon
aa22aafe1d Merge pull request #1266 from mempool/wiz/tweak-about-page-text
Tweak text on About page so it can be displayed on all networks
2022-02-20 12:01:56 +04:00
wiz
edb8f5ecd1 Inline all Enterprise Sponsor logos on About page 2022-02-20 13:01:02 +09:00
wiz
a37430cc9e Move the Become Sponsor button higher on About page 2022-02-20 11:48:46 +09:00
wiz
6f939e1bad Tweak text on About page so it can be displayed on all networks 2022-02-20 09:19:31 +09:00
wiz
af8d4a8514 Add nix-bitcoin to Community Integrations on About page 2022-02-20 08:43:59 +09:00
wiz
3a0e272aff Merge pull request #1245 from mempool/simon/dashboard-assets
Display top featured assets on Liquid dashboard
2022-02-18 19:11:28 +00:00
softsimon
b111d576b5 Merge branch 'master' into simon/dashboard-assets
# Conflicts:
#	frontend/src/app/app.module.ts
2022-02-18 22:49:32 +04:00
wiz
a6abfd3ca6 Merge pull request #1259 from nymkappa/feature/show-miner-blocks
Show miner tag under blocks in the mining dashboard
2022-02-18 15:37:50 +00:00
wiz
47c88891b6 Merge branch 'master' into feature/show-miner-blocks 2022-02-18 15:25:51 +00:00
nymkappa
008a4b51cc Remove duplicated ChangeDetectorRef in blockchains blocks component 2022-02-18 22:25:31 +09:00
wiz
efada32440 Merge pull request #1261 from knorrium/update_default_loglevel
Update docker default min loglevel to info
2022-02-18 06:11:35 +00:00
Felipe Knorr Kuhn
0740049cbc Update docker default min loglevel to info 2022-02-17 20:51:04 -08:00
softsimon
e816f53637 Flip Liquid dashboard locations 2022-02-18 00:37:37 +04:00
Antoni Spaanderman
3679f197ba Merge branch 'master' into address-labels 2022-02-17 16:05:53 +01:00
Antoni Spaanderman
e32ef6c0df Merge branch 'master' into fee-visibility 2022-02-17 16:05:40 +01:00
Antoni Spaanderman
243055ceae Merge branch 'master' into regtest-1 2022-02-17 16:05:22 +01:00
nymkappa
fb2c0345a7 Show miner tag under blocks in the mining dashboard 2022-02-17 22:57:10 +09:00
wiz
5ab4c0e611 Merge pull request #1258 from nymkappa/feature/truncate-blocks-schema-change
When blocks need re-indexing, truncate the table
2022-02-17 11:19:07 +00:00
wiz
1d26390da7 Merge branch 'master' into feature/truncate-blocks-schema-change 2022-02-17 11:18:54 +00:00
wiz
49dd475b4e Merge pull request #1254 from nymkappa/feature/mining-dashboard
Create mining dashboard page
2022-02-17 11:18:24 +00:00
nymkappa
2e2c144cc9 Fix widgets title in mining dashboard 2022-02-17 18:51:16 +09:00
nymkappa
6d4458db8b Fix difficulty chart xaxis label 2022-02-17 18:30:52 +09:00
nymkappa
9b4e7a5fe1 View more mining dashboard links are centered 2022-02-17 18:10:50 +09:00
nymkappa
b18115f71a Reverts part of 6f25ecd98d9fdf1079dd550ecde4162ebe8d62d5 2022-02-17 18:08:00 +09:00
nymkappa
7761e75d4c Fix routes for /mining - Share blockchain component instances - remove animations 2022-02-17 18:08:00 +09:00
nymkappa
538ae3b757 [mempool | blockchain] position changes between main/mining dashboards 2022-02-17 18:07:59 +09:00
nymkappa
b1bd6f8fdb Database schema version 6 truncate the blocks table 2022-02-17 18:07:59 +09:00
nymkappa
1c575f1c93 Added difficulty chart to mining dashboard 2022-02-17 18:07:58 +09:00
nymkappa
8f9804a996 Fix pools ranking titles 2022-02-17 18:07:57 +09:00
nymkappa
750ea033f2 Renamed /mining/dashboard -> /mining 2022-02-17 18:07:57 +09:00
nymkappa
923a2ce7f6 Create basic layout for mining dashboard page - Show miner in blocks 2022-02-17 18:07:56 +09:00
wiz
86aa45f7e0 Merge branch 'master' into feature/truncate-blocks-schema-change 2022-02-17 09:07:39 +00:00
wiz
4a86699199 Merge pull request #1257 from nymkappa/feature/pool-pie-chart-colors
Change pool ranking pie chart colors
2022-02-17 09:07:28 +00:00
nymkappa
15ba487ee4 When blocks need re-indexing, truncate the table 2022-02-17 18:02:55 +09:00
nymkappa
c131c865ee Change pool ranking pie chart colors 2022-02-17 17:52:12 +09:00
wiz
53ff599ccd Merge pull request #1255 from nymkappa/feature/difficulty-chart
Create difficulty chart component
2022-02-17 02:15:11 +00:00
nymkappa
1630ff717e On mobile, show power of ten difficulty instead of full number 2022-02-17 10:15:41 +09:00
nymkappa
f45103e7e3 Add difficulty chart timespan selection 2022-02-17 09:41:05 +09:00
nymkappa
9fa7e58d82 Show all difficulty adjustment in a table - Need pagination 2022-02-16 22:56:06 +09:00
softsimon
b6f89b1a3e Moving ticker to circulating amount 2022-02-16 17:32:12 +04:00
nymkappa
7270b1ccac Create difficulty chart component 2022-02-16 21:20:28 +09:00
wiz
e2e3546934 Merge pull request #1253 from nymkappa/feature/index-more-data
Index more block data
2022-02-16 11:39:44 +00:00
nymkappa
0c1fa2b4aa Cleanup blocks/pools fields data type - Index more block data 2022-02-16 15:22:55 +09:00
softsimon
0a529ea98a Merge pull request #1242 from nymkappa/feature/pool-stats-page
Created mining pool stats page
2022-02-15 15:56:55 +04:00
nymkappa
5448e8c292 Merge branch 'master' into feature/pool-stats-page 2022-02-15 20:42:06 +09:00
softsimon
afe228f2c3 Merge pull request #1250 from nymkappa/feature/disable-mining
Provide a way to completely disable block indexing and mining menu
2022-02-15 15:23:48 +04:00
nymkappa
ca766bf40d Provide a way to completely disable block indexing and mining menu 2022-02-15 19:51:26 +09:00
nymkappa
fa8607c57d [Pool page] - Parse regexes and addresses in the backend 2022-02-15 18:45:53 +09:00
nymkappa
1e96c93557 Fix rendering issue when clicking on block link from pool page 2022-02-15 18:36:58 +09:00
softsimon
02523f574d Merge pull request #1252 from nymkappa/bugfix/fix-duplicated-tests
Remove duplicated tests
2022-02-15 12:09:40 +04:00
softsimon
a064f2931a Merge branch 'master' into bugfix/fix-duplicated-tests 2022-02-15 12:09:03 +04:00
softsimon
93f872efe5 Merge pull request #1243 from nymkappa/feature/start-indexing-before-mempool-sync
Don't wait for 100% mempool sync before starting block indexing
2022-02-15 12:07:30 +04:00
nymkappa
e9ba38755c Re-apply test updates from bogus commit 73019b485f 2022-02-15 16:19:58 +09:00
nymkappa
1c928582a2 Revert "Update tests - Replace button click blocks -> pools"
This reverts commit 73019b485f.
2022-02-15 15:56:40 +09:00
nymkappa
a88d6d2fca Don't wait for 100% mempool sync before starting block indexing 2022-02-14 17:57:55 +09:00
nymkappa
87170247bd Revert "Merge pull request #1240 from nymkappa/feature/mempool-sync-threshold"
This reverts commit 2f921f4cc7, reversing
changes made to 877be47e5b.
2022-02-14 17:57:03 +09:00
softsimon
820daf377e Merge pull request #1248 from antonilol/api-mempool
implement /api/mempool for home users (romanz/electrs backend)
2022-02-14 12:24:16 +04:00
nymkappa
f381da0f78 Show correct reward in pool stat page 2022-02-14 14:11:55 +09:00
nymkappa
a436d3a173 Fix label width being too small on mobile 2022-02-14 14:08:34 +09:00
nymkappa
09180c4f91 Renamed /mining/pool-blocks/xxx -> /mining/pool/:poolId/blocks 2022-02-14 14:08:34 +09:00
nymkappa
4f02efd7fe Fix block link in pool page - Click on chart slice open pool page 2022-02-14 14:08:33 +09:00
nymkappa
d8e58ee622 Set reward to 0 by default until reward indexing is available 2022-02-14 14:08:33 +09:00
nymkappa
c28f3fd4b6 Disable query logger spam 2022-02-14 14:08:33 +09:00
nymkappa
763ea0ce6f Show pool addresses in a scrollable div with href 2022-02-14 14:08:32 +09:00
nymkappa
9e64592aca Add mining pool logo in the pool stats page 2022-02-14 14:08:32 +09:00
nymkappa
e1f3c662b2 Show block reward in the pool stat page 2022-02-14 14:08:31 +09:00
nymkappa
f2abedfbaa Add timespan switch for pool stats and load more for pool's blocks 2022-02-14 14:08:31 +09:00
nymkappa
3f55aabc53 Mining pool detail page draft PoC 2022-02-14 14:08:30 +09:00
nymkappa
a168a22360 Link PoolRanking page with new pool page 2022-02-14 14:08:11 +09:00
nymkappa
fbda0d8186 Added /mining/pool/:poolId empty page 2022-02-14 14:08:11 +09:00
nymkappa
b854c071d0 Added mining/pool/:poolId and mining/pool/:poolId/:interval APIs 2022-02-14 14:08:10 +09:00
Antoni Spaanderman
3a3392423d set fee_histogram to [] 2022-02-13 16:13:46 +01:00
Antoni Spaanderman
2e1348550e implement /api/mempool 2022-02-13 13:52:04 +01:00
wiz
219c1a8615 Merge branch 'master' into simon/dashboard-assets 2022-02-13 11:21:39 +00:00
softsimon
294d7915e1 Liquid dashboard assets updates 2022-02-13 00:46:42 +04:00
wiz
039a627d1c Merge pull request #1235 from nymkappa/feature/blocks-extras
Added /api/v1/blocks-extras endpoint
2022-02-12 11:30:49 +00:00
Antoni Spaanderman
9796b87975 Merge branch 'master' into address-labels 2022-02-12 12:29:05 +01:00
Antoni Spaanderman
effab583ee Merge branch 'master' into fee-visibility 2022-02-12 12:28:49 +01:00
Antoni Spaanderman
9c992a61c5 Merge branch 'master' into regtest-1 2022-02-12 12:28:37 +01:00
nymkappa
ba36ab3134 Merge branch 'feature/blocks-extras' of github.com:nymkappa/mempool into feature/blocks-extras 2022-02-12 20:18:22 +09:00
nymkappa
b8e40494aa Remove fields that won't be used in the frontend for now 2022-02-12 20:16:51 +09:00
wiz
82350b5331 Merge branch 'master' into feature/blocks-extras 2022-02-12 10:35:57 +00:00
wiz
7e82967444 Merge pull request #1239 from hunicus/refactor-docs-2
Refactor docs
2022-02-12 10:19:45 +00:00
wiz
43e604507d Merge branch 'master' into refactor-docs-2 2022-02-12 10:07:52 +00:00
softsimon
738381702f Display top featured assets on Liquid dashboard 2022-02-12 00:15:13 +04:00
nymkappa
aa0e6b807a Add missing docker configuration variable 2022-02-11 14:22:59 +09:00
hunicus
d7b4e4b698 Use variables for empty code examples 2022-02-10 16:51:12 -05:00
nymkappa
ef43da05c9 Improve block indexing logging 2022-02-10 23:02:12 +09:00
nymkappa
fac49d0b98 Added /api/v1/blocksExtras endpoint 2022-02-10 22:11:10 +09:00
softsimon
2f921f4cc7 Merge pull request #1240 from nymkappa/feature/mempool-sync-threshold
Consider we're synced with the mempool if we cached 99% of pending txs
2022-02-10 16:28:13 +04:00
softsimon
b7f93a5726 Merge branch 'master' into feature/mempool-sync-threshold 2022-02-10 16:28:05 +04:00
softsimon
877be47e5b Merge pull request #1220 from nymkappa/bugfix/fix-duplicate-indexing
Duplicated db blocks insertion attempts are expected
2022-02-10 16:23:07 +04:00
softsimon
98d819b3d2 Merge branch 'master' into bugfix/fix-duplicate-indexing 2022-02-10 16:23:00 +04:00
nymkappa
af02e9b533 Consider we're synced with the mempool if we cached 99% of pending txs 2022-02-10 19:19:54 +09:00
softsimon
11e6602315 Merge pull request #1192 from nymkappa/feature/tv-view-timespan-switch
Allow TV view time span switch through url fragment
2022-02-10 11:52:07 +04:00
nymkappa
055c587351 Fix bug when loading /tv and cleanup Observable flow 2022-02-10 00:24:01 +09:00
nymkappa
cd9eaf816b Refactor TV component subscription 2022-02-10 00:24:01 +09:00
nymkappa
aa77faf314 Use switchMap param instead of re-reading this.route.snapshot.fragment 2022-02-10 00:24:00 +09:00
nymkappa
c9ad316ed5 Allow /tv view timespan to be changed through url fragment 2022-02-10 00:23:55 +09:00
softsimon
4b6ff5e776 Merge pull request #1232 from mempool/bugfix/remove-debug-return
Remove debug return which break the UX the first time we open mempool
2022-02-09 17:13:23 +04:00
softsimon
4e076566db Merge branch 'master' into bugfix/remove-debug-return 2022-02-09 17:13:13 +04:00
Antoni Spaanderman
42fa7c1023 Merge branch 'master' into address-labels 2022-02-09 10:42:41 +01:00
Antoni Spaanderman
8e0394e837 Merge branch 'master' into regtest-1 2022-02-09 10:42:23 +01:00
Antoni Spaanderman
89d811096c Merge branch 'master' into fee-visibility 2022-02-09 10:42:05 +01:00
hunicus
ac21c47540 Fix url for mempool post endpoint 2022-02-08 17:51:19 -05:00
hunicus
bb6a22192c Improve spacing at top of navs 2022-02-08 14:30:18 -05:00
hunicus
22137fef5a Add liquidtestnet endpoints 2022-02-08 13:44:50 -05:00
hunicus
82f70eaefe Show liquid link for liquid endpoint
Error from previous PR.
2022-02-08 13:44:50 -05:00
hunicus
ee8eef2806 Implement 27ce863735 2022-02-08 13:44:50 -05:00
hunicus
4979187468 Implement b1c9334119 2022-02-08 13:44:50 -05:00
hunicus
60160ac0f6 Implement 31c911cb59 2022-02-08 13:44:50 -05:00
hunicus
1a23a9c1c5 Rebase 1036 to master manually 2022-02-08 13:44:50 -05:00
wiz
b232a9b6c2 Merge pull request #1233 from nymkappa/feature/add-mining-pool-logos
sync-assets: Download pool logos from github
2022-02-08 05:53:31 +00:00
wiz
f485c702bd Merge branch 'master' into feature/add-mining-pool-logos 2022-02-08 05:41:22 +00:00
wiz
59530e0f95 Merge pull request #1234 from knorrium/cypress_improvements
Cypress improvements
2022-02-08 05:36:03 +00:00
wiz
ac60ee6857 Merge branch 'master' into feature/add-mining-pool-logos 2022-02-08 05:29:26 +00:00
Felipe Knorr Kuhn
e513b464d8 Add tests status badge to the top level README 2022-02-07 21:24:05 -08:00
Felipe Knorr Kuhn
0c7a907451 Update Cypress event trigers to master and PRs 2022-02-07 21:15:40 -08:00
Felipe Knorr Kuhn
37ba43d0eb Adjust merge messages and add tags for pushes and PRs 2022-02-07 20:50:10 -08:00
nymkappa
c704bfedeb Download pool logos from github 2022-02-08 12:56:26 +09:00
nymkappa
f9a6110c69 Remove debug return which break the UX the first time we open mempool 2022-02-08 11:20:19 +09:00
wiz
4b871468bc Merge branch 'master' into bugfix/fix-duplicate-indexing 2022-02-07 14:55:38 +00:00
wiz
5ede05c67c Merge pull request #1180 from antonilol/log-priority
add log priority option for stdout log
2022-02-07 12:38:31 +00:00
wiz
8868a02716 Merge branch 'master' into log-priority 2022-02-07 12:23:22 +00:00
wiz
e60aff2618 Merge pull request #1230 from mempool/simon/remove-liquidtestnet-asset-test
Disable featured assets test for testnet
2022-02-07 12:23:04 +00:00
softsimon
e36fb27704 Disable featured assets test for testnet 2022-02-07 14:49:14 +04:00
wiz
bd10d3f9b3 Merge branch 'master' into log-priority 2022-02-07 10:36:54 +00:00
softsimon
f260203833 Disable Featured assets on Liquid testnet
fixes #1229
2022-02-07 14:24:18 +04:00
Antoni Spaanderman
62990a95f8 Merge branch 'master' into log-priority
i first forgot to fetch upstream in github, conflicts are fixed
2022-02-07 09:15:42 +01:00
Antoni Spaanderman
5c4f6d6ada Merge branch 'master' into log-priority 2022-02-07 08:59:01 +01:00
wiz
1649cfbde0 Merge pull request #1225 from knorrium/external_assets_defaults
Add EXTERNAL_ASSETS defaults to the Docker start script and the README
2022-02-07 06:35:00 +00:00
wiz
3448d1be2a Merge branch 'master' into external_assets_defaults 2022-02-07 06:34:54 +00:00
wiz
32c6ca5e89 Merge pull request #1224 from mempool/simon/liquid-asset-grouping
Featured assets and asset groups
2022-02-07 03:24:00 +00:00
softsimon
f5193218e5 Mobile responsiveness fixes 2022-02-07 03:34:16 +04:00
softsimon
cd88692d3d Changing Asset proxy redirects to liquid.network 2022-02-07 03:34:16 +04:00
softsimon
99c7d7fac4 Removing /liquid from asset grouping base path. 2022-02-07 03:34:16 +04:00
wiz
01d6f4f737 Fix nginx configuration for liquid assets APIs 2022-02-07 03:34:16 +04:00
softsimon
4c2c6396ba Renaming assets-group to assets/group 2022-02-07 03:34:15 +04:00
wiz
f0398e906d Add nginx configuration for liquid assets APIs 2022-02-07 03:34:15 +04:00
softsimon
b634984ca6 Correcting more tests. 2022-02-07 03:34:15 +04:00
softsimon
1dbae4cd62 Fixing liquidtestnet tests. 2022-02-07 03:34:15 +04:00
softsimon
0863405671 Correcting tests. i18n strings and asset links. 2022-02-07 03:34:15 +04:00
softsimon
ff4c097c48 Mobile layout fixes. 2022-02-07 03:34:15 +04:00
softsimon
91082f27e7 SEO and various render fixes. 2022-02-07 03:34:15 +04:00
softsimon
d33c12cdee Asset search 2022-02-07 03:34:15 +04:00
softsimon
2e5c8bdfd3 Featured assets and asset groups 2022-02-07 03:34:14 +04:00
softsimon
755c1da8b3 Merge pull request #1228 from knorrium/add_staging_targets
Run tests in Staging
2022-02-07 03:33:50 +04:00
Felipe Knorr Kuhn
90784ea1ee Update CI Cypress config to hit staging 2022-02-06 15:13:31 -08:00
Felipe Knorr Kuhn
18a7b13077 Add new targets to run locally hitting the staging backends 2022-02-06 15:12:03 -08:00
Felipe Knorr Kuhn
4af0a75aad Add new proxy config for staging 2022-02-06 15:11:13 -08:00
Felipe Knorr Kuhn
ad38e5fa2d Add mining pools resources route 2022-02-06 15:10:35 -08:00
Antoni Spaanderman
9f3a3bd4d7 also detect uncompressed pubkeys + fix errors 2022-02-06 12:41:37 +01:00
wiz
b383f9fc67 Merge pull request #1213 from knorrium/fetch_conversion_rates_over_tor
Fetch conversion rates over Tor
2022-02-06 08:04:50 +00:00
wiz
aae780de6e Merge branch 'master' into fetch_conversion_rates_over_tor 2022-02-06 07:53:59 +00:00
Felipe Knorr Kuhn
81ee0e39bc Add EXTERNAL_ASSETS defaults to the Docker start script and the README 2022-02-05 21:24:24 -08:00
Felipe Knorr Kuhn
4afeb3998a Change fiat conversion logs to DEBUG 2022-02-05 15:38:03 -08:00
Antoni Spaanderman
bb8bfa0e3a copy paste moment 2022-02-05 17:29:42 +01:00
Antoni Spaanderman
148e340ea6 actually test htlc, fix indentation (again) and detect multisig 2022-02-05 17:26:50 +01:00
Antoni Spaanderman
7565aa7a25 fix indentation + detect htlc with option_anchors 2022-02-05 16:58:41 +01:00
Felipe Knorr Kuhn
6b2900345a Rename PRICENODE to PRICE_DATA_SERVER 2022-02-05 07:58:35 -08:00
Antoni Spaanderman
1f6504898a detect lightning htlc and unilateral close 2022-02-05 16:50:10 +01:00
softsimon
e2bcb82b59 Merge pull request #1218 from mempool/simon/dev-proxy-refactor
Local dev proxy working with all base modules
2022-02-05 13:58:14 +04:00
wiz
46ac307329 Merge branch 'master' into simon/dev-proxy-refactor 2022-02-05 09:47:08 +00:00
wiz
d3969afef5 Merge pull request #1219 from mempool/simon/add-mixed-proxy
Adding a "mixed" dev proxy
2022-02-05 09:13:16 +00:00
softsimon
a45c371e27 Adding a "mixed" dev proxy 2022-02-05 13:05:52 +04:00
softsimon
006ed39bf2 Local dev proxy working with all base modules 2022-02-05 13:02:22 +04:00
Felipe Knorr Kuhn
ee7f8d8d18 Reduce currency rates polling interval from 1 hour to 10 minutes 2022-02-05 00:33:16 -08:00
nymkappa
12b53d9ace Duplicated db blocks insertion attempts are expected 2022-02-05 15:50:57 +09:00
Felipe Knorr Kuhn
452375aaf7 Make the Currency Conversion Service URLs configurable and log when queried 2022-02-04 22:48:16 -08:00
Antoni Spaanderman
20996cfb49 Update docker/backend/mempool-config.json
oops (2)

Co-authored-by: Felipe Knorr Kuhn <100320+knorrium@users.noreply.github.com>
2022-02-04 20:03:36 +01:00
Antoni Spaanderman
30c79a2025 Update docker/backend/start.sh
oops i just copied the line above and forgot that one

Co-authored-by: Felipe Knorr Kuhn <100320+knorrium@users.noreply.github.com>
2022-02-04 20:03:25 +01:00
Antoni Spaanderman
174907cf6a add STDOUT_LOG_MIN_PRIORITY to README and docker config 2022-02-04 19:19:32 +01:00
wiz
1ada92f03e Merge pull request #1212 from nymkappa/feature/blocks-refactoring
Wrap custom blocks fields into a sub object of IEsplora.Blocks
2022-02-04 17:16:11 +00:00
wiz
2c60a81c1e Merge branch 'master' into feature/blocks-refactoring 2022-02-04 16:53:42 +00:00
wiz
c60e355453 Merge pull request #1215 from mempool/simon/fixing-local-proxy-endpoints
Proxy all /api and /api/v1 requests to local nodejs server
2022-02-04 16:52:41 +00:00
Antoni Spaanderman
d08d2a16d3 Merge branch 'master' into regtest-1
for cla bot
2022-02-04 12:34:42 +01:00
Antoni Spaanderman
9e9837133b Merge branch 'master' into log-priority
fix conflicts in backend/src/config.ts and backend/mempool-config.sample.json
2022-02-04 12:32:08 +01:00
Antoni Spaanderman
9fc4297e86 Merge branch 'master' into fee-visibility
for cla bot
2022-02-04 12:26:47 +01:00
nymkappa
456bd5a18e Renamed extra to extras 2022-02-04 19:28:00 +09:00
softsimon
02e15cbea4 Proxy all /api and /api/v1 requests to local nodejs server 2022-02-04 13:47:34 +04:00
Felipe Knorr Kuhn
b1dde4d8b1 Query conversion rates service over clearnet or Tor with mempool User-Agent 2022-02-03 23:23:57 -08:00
Felipe Knorr Kuhn
8a996cedb4 Update README, reference config files and Docker with the new SOCKS config 2022-02-03 23:21:19 -08:00
Felipe Knorr Kuhn
0a954e8bcf Allow synthetic default imports due to the socks library 2022-02-03 23:16:30 -08:00
Felipe Knorr Kuhn
0400deacf2 Add socks-proxy-agent dependency 2022-02-03 23:14:56 -08:00
nymkappa
9f0b09295d Move our custom fields to a BlockExtension sub object of the IEsploraApi.Block interface 2022-02-04 12:51:45 +09:00
softsimon
5c1fc7344d Merge pull request #1160 from antonilol/genesis-outspend
outputs of genesis coinbase are always unspent
2022-02-03 13:48:30 +04:00
softsimon
319f646fe2 Merge branch 'master' into genesis-outspend 2022-02-03 13:48:19 +04:00
wiz
1ae08aff66 Merge pull request #1207 from nymkappa/feature/fix-mining-pool-page-title
Set proper mining pool page title - Rename "Name" to "Pool"
2022-02-02 14:59:32 +00:00
wiz
4b79f09538 Merge branch 'master' into feature/fix-mining-pool-page-title 2022-02-02 14:47:50 +00:00
wiz
5fd05b3602 Merge pull request #1208 from nymkappa/feature/pools-api-endpoint-update
Replaced /mining/pools?interval=X by /mining/pools/X
2022-02-02 14:26:24 +00:00
wiz
77e75d3d8c Merge branch 'master' into feature/pools-api-endpoint-update 2022-02-02 14:26:15 +00:00
wiz
117f3eb99a Merge pull request #1189 from antonilol/cla
sign cla
2022-02-02 14:03:39 +00:00
nymkappa
e48a2f73e4 Replaced /mining/pools?interval=X by /mining/pools/X 2022-02-02 19:03:07 +09:00
nymkappa
ae9afe2f81 Set proper mining pool page title - Rename "Name" to "Pool" 2022-02-02 18:46:06 +09:00
wiz
95c8e72b58 Merge pull request #1200 from mempool/wiz/add-contributor-cla-files
Add staff contributor/{username}.txt files for new CLA bot
2022-01-29 08:23:50 +00:00
wiz
19dda17d50 Add staff contributor/{username}.txt files for CLA bot 2022-01-29 07:48:58 +00:00
wiz
a913a85dea Merge pull request #1199 from mempool/wiz/let-backend-set-its-own-http-cache-time-headers
Let backend set its own HTTP cache time headers for APIs
2022-01-29 04:28:22 +00:00
wiz
f842316636 Let backend set its own HTTP cache time headers for APIs 2022-01-28 13:59:04 +00:00
wiz
05fd433ad7 Merge pull request #1198 from mempool/wiz/enable-nginx-warm-cache-for-mining-pools-data
Enable nginx warm cache for mining pools API data
2022-01-28 13:51:44 +00:00
wiz
55652130a8 Enable nginx warm cache for mining pools API data 2022-01-28 13:33:29 +00:00
wiz
6a8874a9e0 Merge pull request #1193 from mempool/wiz/increase-nginx-timeouts
Increase nginx send_timeout and keepalive_requests
2022-01-28 13:22:21 +00:00
wiz
0afcb53abd Merge pull request #1162 from nymkappa/feature/backend-block-pool-data
Mining dashboard (2/2) - Dashboard PoC
2022-01-28 10:09:17 +00:00
nymkappa
620a7f0718 Fix mining pools wrong default timespan value 2022-01-28 18:49:06 +09:00
nymkappa
9df490373b Fixes post rebase 2022-01-28 15:01:24 +09:00
nymkappa
6ebbc5667d Small improvements on the mining page UX
- INDEXING_BLOCKS_AMOUNT = 0 disable indexing, INDEXING_BLOCKS_AMOUNT = -1 indexes everything
- Show only available timespan in the mining page according to available datas
- Change default INDEXING_BLOCKS_AMOUNT to 1100

Don't use unfiltered mysql user input

Enable http cache header for mining pools (1 min)
2022-01-28 15:01:24 +09:00
nymkappa
d66bc57165 Move block indexing start logic in blocks.ts 2022-01-28 15:01:23 +09:00
nymkappa
73019b485f Update tests - Replace button click blocks -> pools 2022-01-28 15:01:23 +09:00
nymkappa
647f12ffaa Added MEMPOOL.INDEXING_BLOCKS_AMOUNT in the config (default 432 blocks) 2022-01-28 15:01:23 +09:00
nymkappa
a271c39ba8 Wrap block indexing into a try/catch since we don't use async when calling that function 2022-01-28 15:01:22 +09:00
nymkappa
f8f9108ae1 Polish mining page UI
Make sure to wait for all mining pools queries before continuing
2022-01-28 15:01:22 +09:00
nymkappa
40e529ece7 Don't try to identify the mining pool on liquid/bisq 2022-01-28 15:01:21 +09:00
nymkappa
df960ab9ba Import pools file for testnet and signet as well - Added missing express routes 2022-01-28 15:01:21 +09:00
nymkappa
8eaa9b3c7b Add share % in pie chart label 2022-01-28 15:01:21 +09:00
nymkappa
5b32ab6dde DROP -> DROP IF EXISTS 2022-01-28 15:01:20 +09:00
nymkappa
f982f6b4b6 Hide epoch data from the mining page 2022-01-28 15:01:20 +09:00
nymkappa
aa457e316b Drop legacy blocks table during migration - Fix linter issues 2022-01-28 15:01:19 +09:00
nymkappa
b8410f00d9 Fix xxxWindowPreference management 2022-01-28 15:01:19 +09:00
nymkappa
4b9bfd6ca0 Basic block indexing WIP - Default mining pool icon - Only show mining hashrate on 1d scale 2022-01-28 15:01:15 +09:00
nymkappa
b9a047b22d Add difficulty adjustment in mining page + Fix pools table on mobile 2022-01-28 14:52:12 +09:00
nymkappa
091027cc79 When a new blocks is mined, refresh the mining stats 2022-01-28 13:54:59 +09:00
nymkappa
0a267affaf Add pie chart and rewrite the pool ranking component 2022-01-28 13:54:59 +09:00
nymkappa
18a63933fa Increment migration schema version to 3 and re-add pools and blocks table creation queries 2022-01-28 13:53:29 +09:00
nymkappa
bfe9f99c35 Generate mining basic pool ranking (sorted by block found) for a specified timeframe 2022-01-28 13:52:35 +09:00
nymkappa
37031ec913 Refactor blocks.ts and index 10k block headers at launch 2022-01-28 13:51:14 +09:00
nymkappa
031f69a403 Add backend README - Backend watchers setup 2022-01-28 13:50:58 +09:00
nymkappa
1a22923cd8 Migrate pools.json to the database in one command - Updated latest pools.json file from Blockchain-Known-Pools master 2022-01-28 13:50:58 +09:00
wiz
4212a649f1 Merge pull request #1194 from AaronDewes/patch-1
Change Citadel link to core
2022-01-27 09:03:12 +00:00
Aaron Dewes
8a4a003620 Change Citadel link to core 2022-01-27 08:11:18 +01:00
wiz
493dbb1b1a Increase nginx send_timeout and keepalive_requests
Fixes #425
2022-01-27 05:56:38 +00:00
Antoni Spaanderman
2aaa42716a sign cla 2022-01-25 16:50:03 +01:00
wiz
356dda96c8 Merge pull request #1188 from mempool/wiz/add-cla
Add new Contributor License Agreement policy
2022-01-25 10:22:21 +00:00
softsimon
f2a9933d21 Accept the CLA for @softsimon 2022-01-25 13:41:28 +04:00
wiz
bd033541b7 Update copyright years in legal notices 2022-01-25 09:36:02 +00:00
wiz
707ae7be01 Accept the CLA for @wiz 2022-01-25 09:35:48 +00:00
wiz
000dfc4d9e Add new Contributor License Agreement policy 2022-01-25 09:30:11 +00:00
wiz
cba46a82aa Merge pull request #1173 from mempool/simon/liquid-asset-precision-fix
Fixing Liquid asset precision
2022-01-25 08:15:20 +00:00
wiz
1263d05ac8 Merge pull request #1187 from nymkappa/bugfix/mysql-transactions
Remove useless autocommit=0 in db migration script
2022-01-25 07:51:31 +00:00
nymkappa
703b4cc92a Remove useless autocommit=0 in db migration script 2022-01-25 16:45:52 +09:00
wiz
6ad0344ea5 Merge pull request #1163 from nymkappa/feature/pools-migration
Mining dashboard (1/2) - Import mining pools into the database - Increment db schema to 3
2022-01-25 06:27:10 +00:00
Antoni Spaanderman
7902f68ada fix 0 sat/vB not displaying 2022-01-24 21:35:13 +01:00
Antoni Spaanderman
f68ac944ed fix dashboard TXs issue 2022-01-24 20:51:30 +01:00
Antoni Spaanderman
1beafd137b fix dashboard blocks issue 2022-01-24 20:44:05 +01:00
Antoni Spaanderman
f111c006ce fix block height out of range on full page blocks viewer 2022-01-24 20:26:02 +01:00
Antoni Spaanderman
44021a3cb3 prefer const over let 2022-01-24 20:25:22 +01:00
softsimon
eb32b13acb Merge pull request #1182 from nymkappa/bugfix/statistics-db-error-handling
Wrap statistics db ops with try/catch
2022-01-24 17:05:48 +04:00
softsimon
f1400909a8 Merge pull request #1183 from nymkappa/feature/cleanup-master-page
Cleanup master-page template
2022-01-24 17:03:16 +04:00
softsimon
c91b6b473a Merge pull request #1177 from knorrium/fix_broken_bisq_tx_link
Fix broken link on the Bisq transaction page
2022-01-24 13:23:11 +04:00
nymkappa
68320dc117 Cleanup master-page template 2022-01-24 18:22:15 +09:00
nymkappa
a805c86697 Wrap statistics db ops with try/catch 2022-01-24 16:22:38 +09:00
nymkappa
1322298a06 Make sure to wait for all mining pools queries before continuing 2022-01-24 14:34:03 +09:00
Antoni Spaanderman
3ceab1493e add log priority option for stdout log 2022-01-23 12:20:32 +01:00
softsimon
230f563235 Merge pull request #1178 from knorrium/update_e2e_tests
Update e2e tests: new scenarios for Liquid, Bisq and refactor button selectors
2022-01-23 14:25:11 +04:00
softsimon
d1ed3c4b93 Merge pull request #1179 from mempool/simon/frontend-npm-audit-fix
Npm audit fix
2022-01-23 12:58:39 +04:00
softsimon
c1f90e0c26 Npm audit fix 2022-01-23 12:58:16 +04:00
Felipe Knorr Kuhn
0ff6cd19c3 Update tests: use ids for nav bar items and new scenarios for bisq and liquid 2022-01-22 14:23:09 -08:00
Felipe Knorr Kuhn
a5ca0cda14 Add ids to nav bar items, liquid and bisq components 2022-01-22 14:21:46 -08:00
Antoni Spaanderman
30632e9e11 fix error with invalid chaintips 2022-01-22 15:13:10 +01:00
Felipe Knorr Kuhn
0560496154 Fix broken link on the Bisq transaction page 2022-01-21 23:12:18 -08:00
softsimon
e2dfdc0064 Merge pull request #1175 from knorrium/update_to_cypress_931
Update Cypress to v9.3.1
2022-01-21 15:37:54 +04:00
softsimon
a09910522b Merge pull request #1176 from knorrium/update_liquid_tests
Update Liquid tests
2022-01-21 15:37:20 +04:00
wiz
145bdca3af Merge pull request #1172 from mempool/simon/liquid-asset-overflow
Asset name overflow fix
2022-01-21 08:55:50 +00:00
Felipe Knorr Kuhn
af38ef8ee7 Merge branch 'master' into update_liquid_tests 2022-01-20 21:54:23 -08:00
Felipe Knorr Kuhn
7bb95ff177 Update Cypress GHA spec list 2022-01-20 21:43:13 -08:00
Felipe Knorr Kuhn
c885187971 Add an amount class vins and vouts to improve testing 2022-01-20 21:31:14 -08:00
Felipe Knorr Kuhn
6637477ac9 Update Liquid tests 2022-01-20 21:30:22 -08:00
Felipe Knorr Kuhn
cf5cce23f3 Add Liquid Testnet tests 2022-01-20 21:30:03 -08:00
Felipe Knorr Kuhn
9f2d0c5172 Update config script defaults 2022-01-20 21:29:45 -08:00
Felipe Knorr Kuhn
80e4141612 Update Cypress to v9.3.1 2022-01-20 21:27:52 -08:00
softsimon
a8c04624f0 Fixing liqud asset precision
fixes #1166
2022-01-21 01:32:19 +04:00
softsimon
36b4812e93 Asset name overflow fix 2022-01-21 00:16:18 +04:00
softsimon
347c386815 Merge pull request #1171 from knorrium/fix_liquid_proxy
Fix Liquid proxy settings
2022-01-20 23:42:57 +04:00
softsimon
b2fac709f9 Merge pull request #1170 from mempool/simon/liquid-loading-fixes
Liquid asset loading fixes
2022-01-20 23:30:44 +04:00
Felipe Knorr Kuhn
35e69f2e3d Fix Liquid proxy settings 2022-01-20 11:27:50 -08:00
softsimon
88a9e22abe Liquid asset loading fixes 2022-01-20 23:00:43 +04:00
Antoni Spaanderman
e8986e5fdc stop for loop after genesis block
prevHash == undefined for the genesis block
2022-01-20 19:24:30 +01:00
Antoni Spaanderman
e581ef7fe3 add regtest class 2022-01-20 19:10:36 +01:00
Antoni Spaanderman
1f0ae601c5 add network regtest 2022-01-20 17:19:16 +01:00
wiz
2b1367afd8 Merge pull request #1167 from mempool/simon/asset-icons
Display Liquid asset icons
2022-01-20 16:11:12 +00:00
softsimon
a2b167fc07 Display Liquid asset icons 2022-01-20 19:51:02 +04:00
Antoni Spaanderman
4bf167d3e1 fixed arrow not pointing to genesis block 2022-01-20 15:57:53 +01:00
nymkappa
87175869dd Fix typescript miss use 2022-01-20 23:31:32 +09:00
nymkappa
a1a2e9363f Make sure to release all db connections 2022-01-20 23:07:20 +09:00
nymkappa
19a564062b Add pools.json file in default config.ts - Handle file exception - Only import pools for MAINNET 2022-01-20 22:59:10 +09:00
nymkappa
8d1cc40459 Fix add 'Unknown' pool logic 2022-01-20 16:56:25 +09:00
nymkappa
1210643e8e Fix linter issues and typo 2022-01-20 16:34:14 +09:00
nymkappa
979c52d3c4 Add pools.json to EXTERNAL_ASSETS - Now supports updating the table 2022-01-20 13:53:08 +09:00
Antoni Spaanderman
e59f610a75 display genesis block 2022-01-19 17:11:35 +01:00
Antoni Spaanderman
3608fa6f19 load blocks with height under INITIAL_BLOCKS_AMOUNT 2022-01-19 16:58:56 +01:00
nymkappa
2848f56c2b Import mining pools into the database - Increment db schema to 3 2022-01-19 18:50:52 +09:00
softsimon
ab6a0eae09 Merge pull request #1158 from antonilol/coinbase
dont use hardcoded genesis coinbase and block hash
2022-01-19 13:33:45 +04:00
softsimon
bc925a409f Merge pull request #1152 from nymkappa/feature/split-difficulty-component
Move difficulty adjustment code to separate module
2022-01-19 13:19:17 +04:00
Antoni Spaanderman
fac40b1515 rethrow the error if it wasnt the genesis coinbase 2022-01-19 08:27:51 +01:00
Antoni Spaanderman
63939ddbe4 outputs of genesis coinbase are always unspent 2022-01-18 22:25:38 +01:00
Antoni Spaanderman
d4719245f5 dont use hardcoded genesis coinbase and block hash
fixes #1128
2022-01-18 21:55:09 +01:00
wiz
3a67bc6425 Merge pull request #1154 from nymkappa/bugfix/extreme-filter-only-mainnet
Only apply vbytes/sec cap on Bitcoin mainnet - Fix linter issues
2022-01-17 21:06:02 +09:00
nymkappa
08a9cc30ba Only apply vbytes/sec cap on Bitcoin mainnet - Fix linter issues 2022-01-17 20:19:20 +09:00
wiz
9641a00bb4 Merge pull request #1151 from nymkappa/feature/save-zeroed-statistics
Insert zeroed statistics in the database if the mempool is empty
2022-01-17 19:08:35 +09:00
nymkappa
fcca911377 Move difficulty adjustment code to separate module 2022-01-17 13:33:07 +09:00
wiz
274ca33664 Merge pull request #1150 from mempool/release/v2.3.0 2022-01-16 18:56:08 +09:00
nymkappa
a570812d70 Insert zeroed statistics in the database if the mempool is empty 2022-01-16 16:20:45 +09:00
wiz
dbdc87eeae Bump version number to v2.4.0-dev 2022-01-16 15:41:23 +09:00
wiz
b9067ed912 Release v2.3.0 2022-01-16 15:36:48 +09:00
wiz
11cc14f5b0 Merge pull request #1149 from mempool/wiz/20220116-pull-from-transifex
Pull translated strings from Transifex
2022-01-16 15:31:44 +09:00
wiz
4133bf31c6 Merge pull request #1147 from mempool/simon/gettxout
Utilize gettxout to display spent/unspent
2022-01-16 15:29:53 +09:00
wiz
bfeee747c2 Merge pull request #1148 from mempool/simon/liquid-testnet-statuspage
Adding missing Liquid Testnet Status page
2022-01-16 15:00:42 +09:00
wiz
31fb6f70ab Pull translated strings from Transifex 2022-01-16 14:42:25 +09:00
softsimon
cb38258cf7 Adding missing Liquid Testnet Status page 2022-01-15 23:49:08 +04:00
softsimon
2a16dc5a7f Utilize gettxout to display spent/outspent
fixes #1088
2022-01-15 22:09:04 +04:00
softsimon
20476e1366 Merge pull request #1145 from mempool/wiz/fix-html-theme-color
Fix HTML theme color for iOS status bar
2022-01-15 21:00:01 +04:00
wiz
57b0ccee60 Fix HTML theme color for iOS status bar 2022-01-16 00:19:29 +09:00
wiz
80ec15193c Merge pull request #1132 from mempool/simon/translators
Adding translators to About page
2022-01-15 06:49:01 +00:00
wiz
d61eba8c68 Fix translation for Project Translators on About page 2022-01-15 06:47:51 +00:00
wiz
4787b6353a Merge pull request #1142 from mempool/wiz/update-nginx-conf-for-services-apis
Update nginx.conf for mempool.space services APIs
2022-01-15 06:22:44 +00:00
softsimon
debcd1808e Displaying translators as twitter photos 2022-01-15 04:19:50 +04:00
softsimon
85f471ad08 Adding translators to About page 2022-01-15 04:01:53 +04:00
wiz
c7fa785346 Merge pull request #1144 from mempool/wiz/update-nginx-conf-for-resource-caching 2022-01-14 15:06:11 +00:00
wiz
a710934830 Update production nginx.conf resource cache times 2022-01-14 22:35:25 +09:00
wiz
69e006f640 Merge pull request #1143 from mempool/simon/fix-critical-vulnerability
Fixing high vulnerabilities
2022-01-14 12:53:15 +00:00
softsimon
78c32af062 Fixing high vulnerabilities 2022-01-14 16:43:56 +04:00
wiz
9a47191e10 Update nginx.conf for mempool.space services APIs 2022-01-14 20:56:41 +09:00
wiz
ace5da94a4 Merge pull request #1140 from mempool/wiz/fix-newsyslog-owner-and-pidfile
Fix newsyslog.conf owner and pidfile location
2022-01-14 10:54:27 +00:00
wiz
e7f2f75b05 Merge pull request #1141 from nymkappa/feature/remove-unused-data-statistics
Remove unused fields from statistics queries since we don't use them in the front end
2022-01-14 10:39:07 +00:00
nymkappa
5b39ad2130 Remove id, unconfirmed_transactions and tx_per_second from the statistics queries since we don't use them in the front end 2022-01-14 19:21:54 +09:00
wiz
ee1985bb3d Fix newsyslog.conf owner and pidfile location 2022-01-14 19:21:42 +09:00
wiz
9caa57e81d Merge pull request #1139 from nymkappa/feature/improve-statistics-query-perf
Order by native `statistics.added` field for better query performances
2022-01-14 09:30:01 +00:00
nymkappa
8797ef261f Order by native statistics.added field for better query performances 2022-01-14 18:13:34 +09:00
wiz
fb9a548dfc Merge pull request #1136 from mempool/docker_readme_fixes 2022-01-13 13:53:27 +00:00
Felipe Knorr Kuhn
ad4bfefee7 Fix Docker README 2022-01-13 05:51:36 -08:00
wiz
cd9157488f Merge pull request #1135 from mempool/wiz/fix-typo-nginx-cache-warmer
Fix typo in nginx-cache-warmer script
2022-01-13 09:05:33 +00:00
wiz
b501f7228c Fix typo in nginx-cache-warmer script 2022-01-13 17:59:51 +09:00
wiz
11483852da Merge pull request #1120 from knorrium/docker_updates
Updates to the docker-compose setup
2022-01-13 08:52:08 +00:00
wiz
a6fadc840d Merge pull request #1134 from mempool/wiz/add-nginx-cache-warmer 2022-01-13 08:34:48 +00:00
Felipe Knorr Kuhn
af8c8a2088 Fix typos in the JSON keys 2022-01-13 00:08:07 -08:00
wiz
573cb8f993 Merge pull request #1133 from nymkappa/feature/disable-graph-interaction-mobile
Disable graph touch interaction in dashboard on mobile so we can scroll properly
2022-01-13 07:20:58 +00:00
Felipe Knorr Kuhn
d70c610741 Fetch the dereferenced commit from the tag 2022-01-12 22:36:24 -08:00
wiz
985d19778f Merge pull request #1130 from mempool/simon/remove-backend-cache
Removing statistics cache and setting headers
2022-01-13 06:07:36 +00:00
wiz
2cb50c2351 Add nginx cache warmer script for production use 2022-01-13 15:06:13 +09:00
Felipe Knorr Kuhn
359e111ae4 Normalize Docker environment variables and backend JSON keys 2022-01-12 21:20:14 -08:00
wiz
548f38292f Merge pull request #1131 from hunicus/update-liquidtestnet-docs
Update liquidtestnet docs
2022-01-13 04:12:48 +00:00
nymkappa
5f2350b763 Disable graph touch interaction in dashboard on mobile so we can scroll properly 2022-01-13 12:00:49 +09:00
Felipe Knorr Kuhn
831cd580e0 Delete Docker README 2022-01-12 17:18:52 -08:00
Felipe Knorr Kuhn
47a6969dc9 Move Docker instructions to the top level README 2022-01-12 17:18:33 -08:00
softsimon
29581f325f Removing statistics cache and setting headers 2022-01-12 20:57:25 +04:00
hunicus
fbce72b7fc Update transactions endpoints 2022-01-12 11:51:10 -05:00
hunicus
a894fa5bc0 Update mempool endpoints 2022-01-12 11:51:10 -05:00
hunicus
9ac3c420eb Update fees endpoints 2022-01-12 11:51:10 -05:00
hunicus
10df6985fc Update blocks endpoints 2022-01-12 11:51:10 -05:00
hunicus
27ce863735 Fix block-height endpoint across networks 2022-01-12 11:51:10 -05:00
hunicus
d840d79aea Update block and block-header 2022-01-12 11:51:10 -05:00
hunicus
80dfc81900 Make minor grammatical changes to GET Asset Icons 2022-01-12 11:51:10 -05:00
hunicus
31c911cb59 Rename 'GET Assets' to 'GET Asset'
Confusing since it gets information on 1
asset..."asset" should be singular.
2022-01-12 11:51:10 -05:00
hunicus
0d4160b232 Reorder assets nav items to fit content order 2022-01-12 11:51:10 -05:00
hunicus
f0022f6af9 Update assets endpoints
Currently no testnet assets have icons, so those
responses are blank.
2022-01-12 11:51:10 -05:00
hunicus
a16decfb94 Fix urls in code examples 2022-01-12 11:51:10 -05:00
wiz
ea2a2310a0 Merge pull request #1129 from mempool/wiz/nginx-redirects-for-localized-urls
Improve nginx caching and use redirects for i18n
2022-01-12 16:44:11 +00:00
wiz
7f17ade65c Merge pull request #1113 from mempool/simon/network-language-fix
Adding current language to network dropdown links
2022-01-12 16:41:47 +00:00
softsimon
c8d38740cc Minor language service refactor 2022-01-12 19:08:56 +04:00
wiz
efffd1a929 Suggested changes for Simon's PR #1113 2022-01-12 23:52:52 +09:00
wiz
f0c53a4e5b Improve nginx caching and use redirects for i18n 2022-01-12 23:12:49 +09:00
wiz
a9c1dc3726 Merge pull request #1121 from nymkappa/feature/database-migration-update
Wrap migration with transactions
2022-01-12 11:28:14 +00:00
nymkappa
2944f0b805 Added missing log tags 2022-01-12 17:43:32 +09:00
nymkappa
f494bd6d6a Sleep 10 seconds before ending the process after critical error in database migration 2022-01-12 17:26:10 +09:00
nymkappa
ae2cb05dc5 Extract all CREATE commands from transaction 2022-01-12 16:41:27 +09:00
nymkappa
4e322fe006 Print database engine version when migration script starts 2022-01-12 16:06:45 +09:00
hunicus
5d06d02d64 Fix urls
So that /liquidtestnet is in links and link text.
2022-01-12 01:36:26 -05:00
hunicus
7eabbe30e6 Add /liquidtestnet/ to links 2022-01-12 01:36:26 -05:00
hunicus
c232f6a11d Add boilerplate liquidtestnet examples
Also adjust logic to show them. Doing this prevents
compilation errors and will allow for endpoints to
be reviewed as they are modified.
2022-01-12 01:36:26 -05:00
hunicus
04ffa6d7bb Update address-utxo 2022-01-12 01:36:44 -05:00
hunicus
d46655e5f4 Update address-tx-chain and address-tx-mempool 2022-01-12 01:36:37 -05:00
hunicus
1438300763 Update address and address-tx 2022-01-12 01:36:26 -05:00
nymkappa
cce49bdb7e MariaDB 10.2 does not supports CAST as FLOAT -> Replace with CAST as DOUBLE 2022-01-12 14:51:16 +09:00
nymkappa
fc878b696d Only create statistics.index if needed (supports old mariadb) - Make sure all db connections are released - Fix linter issues - Remove .toString() 2022-01-12 14:10:16 +09:00
wiz
c09fdb656f Merge pull request #1111 from mempool/wiz/add-production-torrc
Add production Tor configuration to repo
2022-01-12 03:45:09 +00:00
wiz
9ac9eb9cc8 Merge pull request #1124 from mempool/simon/bump-angular-ngboostrap
Bumping minor Angular version and major ngBootstrap
2022-01-12 03:44:33 +00:00
wiz
ff5367b0e7 Merge pull request #1125 from knorrium/link_to_commit
Link the git commit hash to GitHub on the About page
2022-01-12 03:32:45 +00:00
Felipe Knorr Kuhn
503adc20dc Link the git commit hash to GitHub on the About page 2022-01-11 17:02:48 -08:00
softsimon
2f5cad9d0a Bumping minor Angular version and major ngBootstrap 2022-01-12 02:42:33 +04:00
hunicus
871329e0fd Remove websocket and js tabs
Since npm packages don't work with liquidtestnet yet.
2022-01-11 17:21:35 -05:00
hunicus
7825b8d732 Remove difficulty endpoint from nav 2022-01-11 15:32:35 -05:00
nymkappa
6bfd9da08c Refactor migrations - Wrap with TRANSACTION 2022-01-11 20:43:59 +09:00
Felipe Knorr Kuhn
ce8518ad58 List all environment variables to override in the README 2022-01-10 23:31:05 -08:00
Felipe Knorr Kuhn
865fe488bf Make the RPC user and pass explicit in the example docker-compose file 2022-01-10 23:30:31 -08:00
Felipe Knorr Kuhn
467cac7d4d Remove the troubleshooting section from the Docker README 2022-01-10 22:11:02 -08:00
Felipe Knorr Kuhn
3a0fb2015a Address feedback on the Docker README 2022-01-10 22:06:15 -08:00
Felipe Knorr Kuhn
bfb5abaa71 Update Docker README file 2022-01-10 21:10:58 -08:00
Felipe Knorr Kuhn
6cb2625303 Update the reference docker-compose.yml file 2022-01-10 21:09:06 -08:00
Felipe Knorr Kuhn
2d292e27b9 Add the empty directories needed by docker-compose 2022-01-10 20:31:36 -08:00
wiz
9b6d679739 Merge pull request #1119 from nymkappa/feature/order-statistics-by-added
statistics: `ORDER BY id` => `ORDER BY added`
2022-01-11 03:38:24 +00:00
wiz
8099349dcc Merge pull request #1118 from nymkappa/bugfix/graph-scroll-main-page
Mouse scroll is not captured anymore by graphs in the dashboard page
2022-01-11 03:31:07 +00:00
nymkappa
b1df17d7a3 statistics: ORDER BY id => ORDER BY added 2022-01-11 12:25:45 +09:00
nymkappa
02798db449 Mouse scroll is not capture anymore by graphs in the dashboard page 2022-01-11 12:16:09 +09:00
wiz
4b71cb6e28 Merge pull request #1116 from mempool/wiz/20220111-pull-from-transifex
Pull translated strings from Transifex
2022-01-11 03:09:44 +00:00
wiz
cee52e69f1 Merge pull request #1112 from nymkappa/feature/index-added-field
INDEX 'added' in statistics table
2022-01-11 03:09:20 +00:00
wiz
a4a8fb64b1 Merge pull request #1110 from nymkappa/feature/filter-out-extreme-values
Cap extreme vbytes_per_second values
2022-01-11 03:07:44 +00:00
nymkappa
0e6cc67c0a Only create INDEX 'added' when it does not already exist 2022-01-11 11:47:04 +09:00
wiz
cc621b10ce Update Tor onion hostnames for bisq.markets and liquid.network 2022-01-11 11:18:22 +09:00
wiz
2eaea44182 Pull translated strings from Transifex 2022-01-11 10:07:50 +09:00
wiz
50734bafbf Merge pull request #1114 from mempool/simon/mempool.js-2.3.0
Bumping mempool.js lib to 2.3.0
2022-01-11 00:50:22 +00:00
Felipe Knorr Kuhn
745b7d6f65 Set statistics to enabled by default 2022-01-10 16:10:34 -08:00
softsimon
4ca730697c Adding current language to network dropdown links
fixes  #1094
2022-01-10 18:00:01 +04:00
softsimon
dc06a3f62a Bumping mempool.js lib to 2.3.0 2022-01-10 15:55:18 +04:00
nymkappa
1e78326ee4 INDEX 'added' in statistics table 2022-01-10 19:48:29 +09:00
nymkappa
45542d5f06 Apply AVG() on vbytes_per_second - Cap extreme vbytes_per_second values 2022-01-10 18:52:56 +09:00
wiz
0106f44129 Add production/torrc file to git repo 2022-01-10 18:37:54 +09:00
Felipe Knorr Kuhn
ba895559bf Fix a few sed commands in the Docker backend start script that needed escaping 2022-01-10 00:42:42 -08:00
Felipe Knorr Kuhn
513886f6d2 Fix typo on the docker start script 2022-01-10 00:08:42 -08:00
Felipe Knorr Kuhn
09fe7346bc Make every backend parameter configurable via environment variables 2022-01-09 22:19:04 -08:00
Felipe Knorr Kuhn
4173486f4d Update the template backend mempool-config.json file used by the Docker image 2022-01-09 22:18:29 -08:00
wiz
d809e85dde Merge pull request #1109 from mempool/wiz/20220110-pull-from-transifex
Pull translated strings from Transifex
2022-01-10 04:21:04 +00:00
wiz
6414f0045e Pull translated strings from Transifex 2022-01-10 13:20:39 +09:00
wiz
39c5393e3b Merge pull request #1107 from mempool/wiz/20220109-pull-from-transifex
Pull translated strings from Transifex
2022-01-09 07:27:49 +00:00
wiz
d2cd396c75 Pull translated strings from Transifex 2022-01-09 16:23:47 +09:00
wiz
ccbb28c8a0 Merge pull request #1104 from mempool/simon/remove-local-bisq-liquid
Ending support for /bisq /liquid and /liquidtestnet
2022-01-09 06:29:46 +00:00
softsimon
afbced3f4d Adapting tests 2022-01-08 20:44:45 +04:00
softsimon
08f2287def Ending support for /bisq /liquid and /liquidtestnet 2022-01-08 17:33:37 +04:00
wiz
5175027948 Merge pull request #1103 from mempool/wiz/fix-matomo-for-bisq-markets
Fix matomo hostname for bisq.markets html
2022-01-08 10:17:46 +00:00
wiz
d0cda447c0 Fix matomo hostname for bisq.markets html 2022-01-08 19:05:06 +09:00
wiz
fd288cd106 Merge pull request #1100 from mempool/simon/configurable-network-urls
Making frontend network URLs configurable
2022-01-08 10:01:52 +00:00
wiz
2d0d7df704 Merge pull request #1102 from mempool/simon/bisq-footer-buttons
Bisq: Adding missing privacy policy, locale selector
2022-01-08 09:37:05 +00:00
softsimon
c41ac34978 Bisq: Adding missing privacy policy, locale selector
fixes #1096
2022-01-07 23:38:31 +04:00
softsimon
47307bc755 Making frontend network URLs configurable
fixes #1095
2022-01-07 20:17:14 +04:00
wiz
bfe5d3ae49 Merge pull request #1099 from mempool/simon/transifex-pull 2022-01-07 09:27:52 +00:00
softsimon
a060816e2c Transifex pull 2022-01-07 12:32:23 +04:00
wiz
898ff5da23 Merge pull request #1093 from mempool/simon/transifex-pull
Transifex pull
2022-01-06 08:33:58 +00:00
softsimon
d78d2c0eca Transifex pull 2022-01-06 12:32:08 +04:00
wiz
a08e77ff3e Merge pull request #1092 from mempool/simon/transifex-pull 2022-01-05 20:17:54 +00:00
softsimon
1e39eb0fa5 Transifex pull 2022-01-06 00:04:02 +04:00
wiz
5de133ae6a Merge pull request #1087 from mempool/simon/removing-sql-import-references
Remove all references to SQL tables import
2022-01-05 10:03:36 +00:00
softsimon
d27b125848 Merge branch 'master' into simon/removing-sql-import-references
# Conflicts:
#	production/README.md
2022-01-05 13:51:58 +04:00
wiz
ad36d53bb5 Merge pull request #1081 from mempool/wiz/update-production-configuration-for-v2.3
Update production configurations + README for v2.3
2022-01-05 09:45:57 +00:00
softsimon
24f76f2f37 Remove all references to SQL tables import
fixes #1045
2022-01-05 13:26:36 +04:00
wiz
691bdda523 Merge pull request #1086 from mempool/simon/transifex-pull
Transifex pull
2022-01-05 09:19:03 +00:00
wiz
81bb31090e Use upstream hostnames in production nginx configuration 2022-01-05 18:12:05 +09:00
softsimon
cc0a0719b6 Transifex pull 2022-01-05 13:10:58 +04:00
softsimon
7dca8ae1a0 Merge pull request #1085 from mempool/wiz/add-citadel-to-about-page
Add Citadel as Community Integration on About page
2022-01-05 13:04:50 +04:00
softsimon
84027d5568 Merge pull request #1084 from mempool/wiz/tweak-page-titles-descriptions
Tweak html description meta tags / SEO service page titles
2022-01-05 13:04:09 +04:00
wiz
4116186c1a Add Citadel as Community Integration on About page 2022-01-05 17:15:11 +09:00
wiz
358301020f Tweak html description meta tags / SEO service page titles 2022-01-05 16:57:24 +09:00
wiz
642022bfd8 Merge pull request #1083 from mempool/simon/transifex-pull
Transifex pull
2022-01-05 01:52:26 +00:00
softsimon
70f25b6c9c Transifex pull 2022-01-04 22:43:09 +04:00
wiz
c778e84247 Add missing } at end of nginx/server-common.conf 2022-01-04 17:27:37 +09:00
wiz
4de1d017ad Update production configurations + README for v2.3
* Refactor production nginx configuration files
* Update README for new networks, SQL, etc.
2022-01-04 16:38:12 +09:00
wiz
61851be23a Merge pull request #1079 from mempool/simon/liquid-fee-range-dropdown
Liquid support to the Graph fee filter dropdown
2022-01-04 04:51:10 +00:00
wiz
5de949eaed Merge pull request #1067 from mempool/simon/liquid-testnet-navbar-color
Liquid testnet navbar color
2022-01-04 04:32:12 +00:00
wiz
de6434a5ba Merge pull request #1080 from mempool/simon/liquid-testnet-asset-data
Fixing missing assets data for Liquid Testnet native asset
2022-01-04 04:24:19 +00:00
softsimon
c8639ec71d Fixing missing assets data for Liquid Testnet native asset
fixes #1068
2022-01-04 05:26:46 +04:00
softsimon
e1275c62cc Liquid support to the Graph fee filter dropdown
fixes #1072
2022-01-04 04:42:19 +04:00
softsimon
be45e88056 Liquid testnet navbar color 2022-01-01 13:37:20 +04:00
softsimon
990ab3da5f Merge pull request #1066 from mempool/simon/liquid-backend-detection-refactor
Refactoring the Liquid and LiquidTestnet check to a common function.
2022-01-01 12:54:39 +04:00
wiz
d1d74ebf37 Merge pull request #1065 from mempool/simon/block-navigation-routing-fix
Block navigation routing fix
2021-12-30 22:31:05 +00:00
softsimon
6ab79b3c35 Refactoring the Liquid and LiquidTestnet check to a common function. 2021-12-31 02:28:40 +04:00
softsimon
4f21fc0d87 Block navigation routing fix 2021-12-31 02:21:12 +04:00
wiz
10c4e47091 Merge pull request #1064 from mempool/wiz/add-liquidtestnet-to-upgrade-script
Add missing liquidtestnet backend to upgrade script
2021-12-30 21:59:37 +00:00
wiz
dd49ff0084 Merge pull request #1062 from mempool/simon/liquidtestnet-backend-fix
Fix backend support for 'liquidtestnet' network
2021-12-30 21:56:55 +00:00
wiz
853314ba58 Add missing liquidtestnet backend to upgrade script 2021-12-31 06:55:16 +09:00
wiz
784e2470df Merge pull request #1060 from mempool/simon/coinbase-unknown-fix
Fixing misplaced Unknown text after the Coinbase
2021-12-30 21:30:18 +00:00
softsimon
350b4922da Fix backend support for 'liquidtestnet' network 2021-12-31 01:26:45 +04:00
softsimon
40fb1792f4 Fixing misplaces Unknown text after the Coinbase 2021-12-30 16:55:42 +04:00
wiz
7ce1cc5103 Merge pull request #1052 from mempool/simon/liquid-testnet
Adding Liquid Testnet as frontend option
2021-12-29 23:34:19 +00:00
wiz
71a4e24900 Delete duplicate production/mempool-config.liquid-testnet.json file 2021-12-30 08:25:44 +09:00
softsimon
a48c2c07b0 Display the transaction grapg instead of L-BTC peg for Liquid Testnet 2021-12-30 03:12:35 +04:00
softsimon
d89d7efbe6 Fix issue when switching between testnet and liquid mainnet 2021-12-30 03:07:08 +04:00
softsimon
5ea4b043d9 Use relativeUrl when redirecting from the Searchbar 2021-12-30 02:30:46 +04:00
softsimon
dd4710b602 Handle Liquid native asset issuance transaction. 2021-12-30 02:18:16 +04:00
wiz
832c0cb3cc Merge pull request #1057 from mempool/wiz/remove-hover-effect-on-about-page
Tweak hover effect on profile photos on About page
2021-12-29 22:03:23 +00:00
wiz
04216e952a Tweak hover effect on profile photos on About page 2021-12-30 06:48:40 +09:00
softsimon
951d0f0039 Merge pull request #1056 from mempool/wiz/update-specter-logo-on-about-page
Update Specter logo on About page
2021-12-30 01:33:20 +04:00
wiz
706f4bbc55 Update Specter logo on About page 2021-12-30 06:11:12 +09:00
softsimon
3fd96e412b Merge pull request #1053 from mempool/wiz/add-liquid-testnet-backend
Add support for liquidtestnet in production backend and nginx
2021-12-29 01:07:38 +04:00
softsimon
766803ded1 Liquid testnet asset frontend support 2021-12-29 00:42:34 +04:00
softsimon
504f46cad9 Support for Test Liquid Native Asset 2021-12-29 00:40:55 +04:00
softsimon
fd34761a93 Adding Liquid Testnet as frontend option
fixes #976
2021-12-28 11:16:33 +04:00
wiz
96e8f45e5b Add support for liquidtestnet in production backend and nginx 2021-12-28 15:20:11 +09:00
wiz
195fae670b Merge pull request #1044 from nymkappa/feature/increase-resolution-charts
Increase graphs data resolution
2021-12-28 05:19:20 +00:00
wiz
dd767f9468 Merge pull request #1043 from mempool/simon/transifex-pull
Pulled from transifex
2021-12-26 21:09:07 +00:00
nymkappa
bc8104eeb4 Increase graphs data resolution 2021-12-26 17:51:38 +09:00
softsimon
2c61eb6227 Pulled from transifex 2021-12-26 11:15:19 +04:00
wiz
5d360d4156 Merge pull request #1003 from mempool/simon/database-migration-feature
Automated database creation and migration
2021-12-23 21:50:10 +00:00
softsimon
91e30fbc3c Merge branch 'master' into simon/database-migration-feature
# Conflicts:
#	backend/src/index.ts
2021-12-24 00:26:33 +04:00
wiz
5b22e2a000 Merge pull request #1010 from mempool/simon/liquid-icons-api
Liquid icons api
2021-12-23 12:28:54 +00:00
softsimon
533653e54a Change Asset Icon API example to only show HTML 2021-12-23 15:35:17 +04:00
wiz
3dc0dc13ad Merge pull request #1038 from nymkappa/feature/increase-resolution-24h
Switch the 24h chart to 1 min data ticks
2021-12-22 18:33:32 +00:00
softsimon
e332789afc Bumping mempool.js to 2.3.0-dev1 and removing unused tsc build step 2021-12-22 19:33:10 +04:00
nymkappa
e4a9fd06b4 Switch the 24h chart to 1 min data ticks 2021-12-22 23:01:32 +09:00
softsimon
5845f2380e Adding sync external assets feature. 2021-12-21 02:00:50 +04:00
softsimon
c29311d831 Upgrading mempool-js with separated Liquid and Bisq 2021-12-20 23:48:26 +04:00
softsimon
252db109bc Adding icons.json to .gitignore 2021-12-20 04:01:40 +04:00
softsimon
b1c9334119 Changing API path and updating API Docs for asset icons. 2021-12-20 04:01:04 +04:00
wiz
ab04247726 Merge pull request #1033 from mempool/simon/extract-i18n
Extracting i18n string
2021-12-19 19:06:11 +00:00
softsimon
e94a85b989 Extracting i18n string 2021-12-19 22:57:31 +04:00
softsimon
a4569788f8 Liquid icons api 2021-12-19 22:09:49 +04:00
wiz
b455814e90 Merge pull request #1027 from hunicus/change-docs-layout
Revamp docs layout
2021-12-19 17:48:26 +00:00
softsimon
7afd0f3fe7 Merge pull request #1032 from mempool/wiz/update-about-page-links
Update links on About page
2021-12-19 21:36:10 +04:00
hunicus
a2a85469cf Streamline api-docs-navs conditionals 2021-12-19 12:29:52 -05:00
wiz
94488a6029 Merge pull request #1031 from mempool/wiz/update-issue-templates
Update GitHub issue templates to redirect support requests to chat
2021-12-19 17:02:57 +00:00
wiz
8e4829146a Rename About page section: Project Staff -> Project Members 2021-12-20 01:54:06 +09:00
wiz
08f185525c Update About page chat links: replace telegram with matrix 2021-12-20 01:52:58 +09:00
wiz
d6b00fe39e Update GitHub issue templates to redirect support requests to chat 2021-12-20 01:31:29 +09:00
softsimon
cec3baeaa4 Merge pull request #1024 from nymkappa/feature/blocks-mouse-scroll
User can drag the blockchain blocks horizontally with the mouse
2021-12-19 12:59:04 +04:00
nymkappa
6e59733cac User can drag the blockchain blocks horizontally with the mouse 2021-12-19 15:20:21 +09:00
hunicus
c5b705ede7 Adjust bisq cypress tests 2021-12-17 16:22:16 -05:00
hunicus
2819e24efe Remove unnecessary file change 2021-12-17 15:08:21 -05:00
hunicus
5f9bc4497a Customize mobile nav button appearance point
Since there are different numbers of topics across
bitcoin, liquid, bisq, faq, etc.
2021-12-17 14:42:21 -05:00
hunicus
086b14e816 Add various ux improvements for mobile doc menu 2021-12-17 11:42:54 -05:00
hunicus
958bfe6d25 Separate docs-nav into new component
Since same markup will be needed for desktop
and mobile menus.
2021-12-16 19:11:54 -05:00
hunicus
e01ab449cf Add skeleton for mobile docs nav 2021-12-16 18:44:39 -05:00
softsimon
eeb0f403a3 Merge pull request #1016 from knorrium/add_failing_test_for_liquid_unconfidential_address
Add failing test for Liquid unconfidential address layout issue
2021-12-16 23:01:24 +04:00
hunicus
9a18019d9d Add :before element for space before anchors
@angular-router's `scrollOffset` property seems to be
global, so it might mess up something else, and it also
wasn't taking effect when navigating directly to an
anchor anyway (i.e. from browser's address bar).
2021-12-16 13:20:30 -05:00
Felipe Knorr Kuhn
bcbc60b456 Fix test assertion 2021-12-16 09:31:02 -08:00
Felipe Knorr Kuhn
0d14c30892 Merge remote-tracking branch 'origin/master' into add_failing_test_for_liquid_unconfidential_address 2021-12-16 09:14:46 -08:00
hunicus
5d8c970351 Update anchor links and add on-page links 2021-12-16 11:30:03 -05:00
hunicus
89fede9e48 Fix inconsistencies in api-docs markup 2021-12-16 09:54:07 -05:00
hunicus
f8a54784d0 Improve styling + switch section headings for tags 2021-12-16 09:54:07 -05:00
hunicus
010381aac4 Convert accordions to plain html 2021-12-16 08:46:51 -05:00
wiz
49c30c7237 Merge pull request #1018 from mempool/simon/liquid-address-overflow–fix
UX: Fixing overflowing unconfidential Liquid address
2021-12-16 07:39:26 +00:00
wiz
7ba0055c61 Merge pull request #1019 from mempool/simon/witness-interface-type-fix
Correcting minor interface typing error
2021-12-16 07:38:57 +00:00
wiz
72b631a4dc Merge pull request #1017 from mempool/simon/restoring-fee-distribution-graph
Revert "Remove dead code FeeDistributionGraphComponent"
2021-12-16 07:38:31 +00:00
hunicus
1a8fd23b05 Add links and styling to fixed desktop docs nav 2021-12-16 00:04:47 -05:00
Felipe Knorr Kuhn
b9a2143a5a Merge remote-tracking branch 'origin/master' into add_failing_test_for_liquid_unconfidential_address 2021-12-15 20:16:22 -08:00
hunicus
3ae46e6ba1 Make desktop docs-nav sticky on scroll 2021-12-15 22:57:10 -05:00
softsimon
815fb62e7d Correcting minor interface typing error 2021-12-16 04:53:27 +04:00
softsimon
7a19da560e UX: Fixing overflowing unconfidential Liquid address
fixes #1013
2021-12-16 04:49:24 +04:00
softsimon
43a1af4509 Revert "Remove dead code FeeDistributionGraphComponent"
This reverts commit 37722fe165.
2021-12-15 23:53:12 +04:00
hunicus
40f1949654 Create skeleton layout for desktop docs nav
This includes switching to a 2-column layout
(1 for nav and 1 for content) and moving footer
links to docs component so floats can be cleared
properly.
2021-12-15 13:17:37 -05:00
softsimon
cf1471acca Merge pull request #1015 from knorrium/add_tests_for_rbf_txs
Add tests for RBF txs
2021-12-15 21:28:45 +04:00
Felipe Knorr Kuhn
a2a69e522c Merge remote-tracking branch 'origin/master' into add_failing_test_for_liquid_unconfidential_address 2021-12-15 08:51:08 -08:00
Felipe Knorr Kuhn
4939941c88 Merge remote-tracking branch 'origin/master' into add_tests_for_rbf_txs 2021-12-15 08:50:28 -08:00
softsimon
a643f50016 Merge pull request #1012 from mempool/simon/cpfp-button-overlap-fix
Correcting CPFP button position on mobile
2021-12-15 13:11:04 +04:00
softsimon
836444a1c5 Merge pull request #1011 from mempool/simon/rbf-transaction-ux-bug
Fixing broken RBF alert
2021-12-15 13:10:31 +04:00
Felipe Knorr Kuhn
24d4b643e5 Add failing test for Liquid unconfidential address layout issue 2021-12-15 00:02:21 -08:00
Felipe Knorr Kuhn
7f045ae5b9 Add tests to detect layout issues in RBF transactions 2021-12-14 23:21:59 -08:00
Felipe Knorr Kuhn
96a2c8ab4e Add methods to detect overlapping components 2021-12-14 23:21:40 -08:00
Felipe Knorr Kuhn
47103d85d3 Update mocked ws tests to use the new syntax 2021-12-14 23:19:10 -08:00
Felipe Knorr Kuhn
0af5d733c4 Small refactor to support mocking RBF txs 2021-12-14 23:16:13 -08:00
Felipe Knorr Kuhn
bc7bbf5fe5 Fix formatting 2021-12-14 23:15:33 -08:00
Felipe Knorr Kuhn
4bc141cd67 Add fixture for RBF transactions 2021-12-14 23:14:55 -08:00
softsimon
1c6b3a46c6 Correcting CPFP button position on mobile
fixes #1006
2021-12-15 02:16:45 +04:00
softsimon
b41e32915f Fixing broken RBF alert
fixes #516
2021-12-15 01:15:16 +04:00
wiz
adb5bfe93f Merge pull request #1009 from mempool/wiz/tweak-xaxis-label-timestamp-format
Tweak the graph x-axis label date formatting for better i18n
2021-12-14 09:48:37 +00:00
wiz
f4b7bbc91c Tweak the graph x-axis label date formatting for better i18n 2021-12-14 18:25:48 +09:00
wiz
687b4af272 Merge pull request #1008 from mempool/wiz/blockstream
Add Blockstream as Enterprise Sponsor
2021-12-14 09:04:20 +00:00
wiz
e67f552fbd Merge pull request #1004 from jorisvial/bug/improve-x-axis-intervals
Improve x-axis labels and graph data ticks
2021-12-14 07:50:14 +00:00
nymkappa
28d3f190ff Update graph tick intervals - Hide label in zoom component - Show hour on 1y graphs 2021-12-14 16:33:17 +09:00
softsimon
2281116504 Automated database creation and migration
fixes #1002
2021-12-13 11:32:04 +04:00
nymkappa
92d745168c Doubled the data points for 1W and 3Y to improve resolution 2021-12-13 14:31:34 +09:00
nymkappa
cf0af20947 Hide xaxis label overlapping - Show current day/month/year below the chart for self better self containing overview 2021-12-13 14:27:05 +09:00
nymkappa
aee319ed51 Initialize graphWindowPreference in localstorage properly 2021-12-13 11:56:24 +09:00
wiz
dc5ced416d Add Blockstream as Enterprise Sponsor 2021-12-12 04:24:18 +09:00
nymkappa
c9f5002dc2 Use avg() mysql value for timespan between [24h, 6m] 2021-12-11 19:15:20 +09:00
nymkappa
6e4985602e Increase the number of data to be as close as possible from prod while keeping rounded intervals 2021-12-11 17:27:52 +09:00
nymkappa
11577842a2 Refactor tooltip formatting into common file and switch to native js localization 2021-12-11 17:10:55 +09:00
wiz
1cc8a9469a Merge pull request #1001 from mempool/simon/i18n-extraction
Extracting updated i18n strings
2021-12-11 06:43:39 +00:00
nymkappa
7e7dbdbaf2 Remove test code 2021-12-11 15:43:20 +09:00
nymkappa
fb152b6d7b Merge branch 'master' into bug/improve-x-axis-intervals 2021-12-11 15:32:10 +09:00
nymkappa
9e8a741d97 Apply proper datetime format according to choosen time scale and force 2h windowPreference in the dashboard 2021-12-11 15:26:59 +09:00
nymkappa
2b0d543ce7 Delete unused code 2021-12-11 15:26:14 +09:00
nymkappa
5e729373bb Use date interval so we leave mysql handle the number of days in a month etc 2021-12-11 15:26:02 +09:00
nymkappa
41f3f0ab46 Fix graph data for incoming transaction graphs 2021-12-11 10:38:13 +09:00
nymkappa
37722fe165 Remove dead code FeeDistributionGraphComponent 2021-12-11 00:24:10 +09:00
nymkappa
cbd187d06f Use time for xAxis type and fix the mempool tooltip accordingly 2021-12-11 00:04:20 +09:00
softsimon
833dd3ef9d Extracting updated i18n strings 2021-12-10 11:22:25 +04:00
softsimon
bd19496350 Merge pull request #1000 from knorrium/liquid_peg_tests
Add Liquid peg in and peg out tests
2021-12-10 11:19:28 +04:00
Felipe Knorr Kuhn
ec420d8f3e Disable Chrome security to allow Cypress to navigate out of localhost 2021-12-09 15:49:15 -08:00
Felipe Knorr Kuhn
9510c7d2ea Add tests for Liquid peg in and peg out addresses 2021-12-09 15:48:58 -08:00
wiz
92d2eb9727 Merge pull request #999 from mempool/simon/documentation-i18n-title 2021-12-09 14:22:50 +00:00
softsimon
72f7284311 Documentation i18n title 2021-12-09 17:49:36 +04:00
nymkappa
2b3463519a Format date properly according to the chosen time scale 2021-12-09 22:29:40 +09:00
nymkappa
00352d7e36 Use "natural" intervals for x-axis in charts 2021-12-09 22:04:23 +09:00
wiz
63e799b225 Merge pull request #998 from mempool/simon/transifex-pull
Pulling from Transifex
2021-12-09 13:04:20 +00:00
wiz
3c1e264464 Merge pull request #994 from hunicus/move-api-docs
Move /api to /docs/api
2021-12-09 12:56:46 +00:00
hunicus
ff148f15c4 Exclude websocket tab on bisq 2021-12-09 07:46:06 -05:00
softsimon
a5c7f152aa Pulling from Transifex 2021-12-09 16:42:41 +04:00
hunicus
f0be19409f Fix relative links on docs tabs 2021-12-09 07:11:04 -05:00
hunicus
936a306dc4 Remove extra padding in websocket api docs tab 2021-12-09 07:01:58 -05:00
hunicus
8ff5748368 Make nav url relative to fix non-mainnet links 2021-12-09 07:01:46 -05:00
softsimon
271726bf58 Merge pull request #996 from mempool/wiz/fix-upgrade-script-for-simon
Tweak upgrade script to search for remote origin branches
2021-12-09 14:29:28 +04:00
wiz
65e11c1aa1 Merge pull request #997 from mempool/simon/backend-libs-upgrade
Upgrading backend libraries
2021-12-09 10:27:59 +00:00
softsimon
0ccc992e4b Merge pull request #995 from hunicus/fix-windows-graph
Fix graph issue in #992
2021-12-09 14:17:51 +04:00
wiz
52397cb341 Merge pull request #993 from mempool/simon/angular-13
Upgrading frontend to Angular 13
2021-12-09 10:16:54 +00:00
softsimon
f7a9b691a8 Upgrading backend libraries 2021-12-09 13:24:29 +04:00
wiz
8f8c9c1fbc Merge pull request #986 from mempool/simon/liquid-peg-in-out-links-fix
Fixing broken Liquid peg-in and peg-out links
2021-12-09 09:21:41 +00:00
wiz
9e8ee4fedc Tweak upgrade script to search for remote origin branches 2021-12-09 18:12:06 +09:00
hunicus
30ffc0b56e Fix graph issues in #992 2021-12-08 17:50:02 -05:00
softsimon
053fb4d1b2 Merge pull request #991 from knorrium/add_nvmrc
Add .nvmrc file
2021-12-08 23:06:30 +04:00
softsimon
53cfda533d Merge pull request #989 from knorrium/update_cypress_deps
Update Cypress dependencies
2021-12-08 22:57:50 +04:00
softsimon
2d557195de Merge pull request #988 from knorrium/pin_node_version_on_gha
Pin node version on e2e GHA
2021-12-08 22:57:24 +04:00
softsimon
ed9b46bae0 Upgrading frontend to Angular 13 2021-12-08 22:08:20 +04:00
hunicus
23c9bf489a Move /api to /docs/api
Also make API docs responsive so they can be viewed
on mobile.

REST docs are at /docs/api/rest and WebSocket docs
are at /docs/api/websocket.
2021-12-08 12:37:42 -05:00
softsimon
7c89dde5d4 Merge pull request #983 from mempool/wiz/fix-about-page-staff-string
Fix string for Project Staff on About page
2021-12-08 14:36:20 +04:00
softsimon
87ca5b85d7 Fixing broken Liquid peg-in and peg-out links
fixes #977
2021-12-08 11:50:51 +04:00
Felipe Knorr Kuhn
a2a43f4647 Add .nvmrc to set node to 16.10.0 when changing into the project 2021-12-07 22:55:10 -08:00
Felipe Knorr Kuhn
9ac77f7113 Update Cypress dependencies 2021-12-07 22:25:10 -08:00
Felipe Knorr Kuhn
b6215dd54f Enable dependency caching on e2e GHA 2021-12-07 21:27:22 -08:00
Felipe Knorr Kuhn
69d5cfe98e Use node 16.10.0 on the e2e GHA 2021-12-07 21:22:21 -08:00
wiz
73d9cd7ab7 Merge pull request #981 from mempool/wiz/fix-npm-install-prod
Move npm deps in package.json to fix `npm install --prod`
2021-12-08 04:24:48 +00:00
wiz
84a6d29914 Fix i18n identifier for About Page -> Project Staff string
Co-authored-by: softsimon <softsimon@users.noreply.github.com>
2021-12-08 04:16:34 +00:00
wiz
4633164f99 Merge pull request #984 from mempool/wiz/update-readme-for-v2.3.0
Update README for upcoming v2.3.0 release
2021-12-08 04:15:32 +00:00
wiz
b22b63c9a2 Update README for upcoming v2.3.0 release 2021-12-08 00:04:24 +09:00
wiz
40cd2a1ac3 Fix string for Project Staff on About page 2021-12-07 23:29:17 +09:00
wiz
e28f5cc403 Merge pull request #982 from mempool/simon/core-contributors
Adding Core Contributors on the About page
2021-12-07 14:16:44 +00:00
softsimon
1594fed853 Adding Core Contributors on the About page 2021-12-07 18:00:49 +04:00
wiz
41c61ef506 Move npm deps in package.json to fix npm install --prod 2021-12-07 10:42:06 +00:00
wiz
53b0bc0e48 Merge pull request #980 from knorrium/docker_node_16_10_0
Set Dockerfiles to use Node v16.10.0
2021-12-07 08:04:53 +00:00
Felipe Knorr Kuhn
e00234dfb9 Set Dockerfiles to use Node v16.10.0 2021-12-06 23:52:23 -08:00
wiz
8412e28073 Merge pull request #974 from mempool/simon/taproot-display-missing-script
Display missing taproot inner script
2021-12-07 07:26:29 +00:00
softsimon
10a110e682 Display missing taproot inner script
fixes #973
2021-12-06 00:27:14 +04:00
softsimon
1e40ec4fd0 Merge pull request #970 from mempool/wiz/center-enterprise-sponsor-logos
Center the Enterprise Sponsor logos on About page
2021-12-03 12:08:06 +04:00
wiz
9998a64fa5 Center the Enterprise Sponsor logos on About page 2021-12-03 16:55:56 +09:00
wiz
d1e3c55a28 Merge pull request #967 from mempool/wiz/rename-square-to-spiral 2021-12-03 06:26:35 +00:00
softsimon
047220bd32 Merge pull request #968 from mempool/i18n/20211203-update-from-transifex
Update i18n strings from Transifex
2021-12-03 10:25:19 +04:00
wiz
1ce05a3ac9 Merge pull request #961 from mempool/simon/remodeling-fee-bands
Remodeling how historical fees are stored and presented.
2021-12-03 02:37:33 +00:00
wiz
0271584b69 Update i18n strings from Transifex 2021-12-03 08:54:13 +09:00
wiz
01da46daca Square -> Spiral 🌀 2021-12-03 07:30:24 +09:00
wiz
73f558db6e Merge pull request #963 from mempool/simon/liquid-handle-database-disabled 2021-11-30 10:50:19 +00:00
softsimon
feb8e35ec3 Handle database disabled config when running Liquid
fixes #962
2021-11-30 10:59:10 +04:00
softsimon
79e44479e9 Remodeling how historical fees are stored and presented.
fixes #908
2021-11-29 23:31:01 +04:00
wiz
9a39d3207f Merge pull request #959 from mempool/simon/lbtc-loading-spinner
Adding missing loading spinner to L-BTC peg graph
2021-11-28 12:13:23 +00:00
softsimon
7e55e836fd Adding missing loading spinner to L-BTC peg graph
fixes #955
2021-11-28 15:44:42 +04:00
softsimon
571bf3fa64 Merge pull request #957 from mempool/simon/merging-duplicate-i18n-strings
Merged block header and markets i18n strings
2021-11-28 14:57:43 +04:00
softsimon
0b1cf052a8 Merged block header, markets and genesis i18n strings 2021-11-28 14:55:17 +04:00
wiz
b301840bb8 Merge pull request #956 from mempool/simon/i18n-extract-nov28
Extracting i18n from templates
2021-11-28 09:31:56 +00:00
softsimon
a0e5a79ec4 Extracting i18n from templates 2021-11-28 13:23:27 +04:00
wiz
8da89230c9 Merge pull request #944 from mempool/simon/chart-loading-spinner
Moving chart loading spinner to chart component
2021-11-28 08:19:52 +00:00
wiz
2408e81537 Merge pull request #954 from mempool/simon/transaction-pages-and-loading
Fixing Bisq transactions page and skeleton loaders
2021-11-28 08:16:36 +00:00
softsimon
9377d80dbb Fixing Bisq transactions page and skeleton loaders
fixes #953
2021-11-27 13:06:57 +04:00
softsimon
8c200bc0e4 Merge pull request #950 from MiguelMedeiros/fix-time-span-styles
Fix time span menu styles.
2021-11-23 14:13:33 +04:00
Miguel Medeiros
35ca8c846b fix: time span menu media queries styles. 2021-11-22 20:29:10 -03:00
softsimon
4b1acfc77e Skip the skeleton loader tests 2021-11-20 00:34:59 +04:00
softsimon
8569523b89 Moving chart loading spinner to chart component
fixes #885
2021-11-19 00:10:12 +04:00
wiz
9bef7da210 Merge pull request #881 from mempool/simon/tx-push-endpoint
Post TX API for HTML forms
2021-11-18 22:40:55 +09:00
softsimon
6f6b2a4355 Post TX API for HTML forms 2021-11-18 17:25:48 +04:00
softsimon
783530b3de Merge pull request #943 from mempool/wiz/20211118-update-privacy-policy
Delete nginx logs after 10 days and explain this in our Privacy Policy
2021-11-18 16:37:58 +04:00
wiz
36777a8c5b Clarify webserver logging and analytics in our Privacy Policy 2021-11-18 17:05:34 +09:00
wiz
638d6d896a Update newsyslog-mempool-nginx.conf for all nginx log paths 2021-11-18 15:28:44 +09:00
wiz
2afb9d359f Merge pull request #942 from mempool/i18n/enable-thai
Enable i18n locale Thai (th)
2021-11-18 14:41:04 +09:00
wiz
60a8d0ce6e Update i18n translations for Thai (th) 2021-11-18 14:29:36 +09:00
wiz
e3aeb784ad Merge pull request #935 from MiguelMedeiros/fix-tooltip-opreturn
Fix: op_return tooltip position.
2021-11-17 22:58:29 +09:00
wiz
8124274880 Credit Gusb3ll as Thai translator 2021-11-17 22:18:38 +09:00
wiz
836f0f065d Enable i18n locale Thai (th) 2021-11-17 21:03:35 +09:00
wiz
062fdb3658 Don't change cursor when hovering over OP_RETURN 2021-11-17 20:06:24 +09:00
wiz
7cfbd2c70d Merge pull request #940 from mempool/simon/empty-mempool-block-position
Fix for empty mempool block position
2021-11-17 19:40:16 +09:00
wiz
5b9ae2eaf5 Merge pull request #941 from mempool/simon/hide-early-difficulty-adjustment
Handle recent difficulty adjustment estimate gracefully
2021-11-17 19:29:48 +09:00
softsimon
d534c42c47 Handle recent difficulty adjustment estimate gracefully
fixes #927
2021-11-17 13:46:48 +04:00
softsimon
15a0644bd1 Fix for empty mempool block position
fixes #938
2021-11-17 12:37:40 +04:00
wiz
6ad4e655ea Merge pull request #910 from mempool/simon/liquid-fee-ranges
Display lower <1 s/vB fee rate tiers for Liquid
2021-11-17 17:01:29 +09:00
softsimon
598920d6a9 Merge pull request #928 from knorrium/fix_local_dev_proxy
Fix local dev proxy
2021-11-17 09:38:10 +04:00
Miguel Medeiros
d816e67ce4 fix: op_return tooltip position. 2021-11-16 18:03:43 -03:00
wiz
662aafff57 Merge pull request #930 from mempool/simon/more-transaction-details
Adding version and locktime to transaction details
2021-11-16 06:18:01 +09:00
softsimon
cfec9345c8 Merge pull request #932 from MiguelMedeiros/fix-empty-mempool-blocks
Fix: mempool empty block.
2021-11-16 00:26:15 +04:00
Miguel Medeiros
9cb203f98a ref: remove function to better performance 2021-11-15 17:10:54 -03:00
Miguel Medeiros
3bab50a43b fix: blocksfull variable. 2021-11-15 16:38:28 -03:00
Miguel Medeiros
0639ce9b07 fix: mempool empty block. 2021-11-15 14:16:27 -03:00
softsimon
34c9ca4197 Adding version and locktime to transaction details
fixes #929
2021-11-15 18:05:28 +04:00
Felipe Knorr Kuhn
14d015a904 Set the local target to use the new local proxy config 2021-11-14 15:41:28 -08:00
Felipe Knorr Kuhn
38412753fe Add new local server proxy config 2021-11-14 15:40:45 -08:00
wiz
475f9344a0 Merge pull request #923 from mempool/simon/taproot-activation-countdown
Adding taproot countdown
2021-11-13 15:19:42 +09:00
softsimon
d9cf6a2604 Update frontend/src/app/app.constants.ts
Co-authored-by: Vojtěch Strnad <43024885+vostrnad@users.noreply.github.com>
2021-11-13 10:04:38 +04:00
softsimon
9eb159617f Adding taproot countdown 2021-11-12 21:07:57 +04:00
softsimon
2dc930fad2 Merge pull request #912 from MiguelMedeiros/taproot-activation-fireworks
Add special blocks animation: fireworks.
2021-11-12 13:30:54 +04:00
softsimon
c478478f86 Merge pull request #922 from knorrium/update_test_address
Update mainnet partial address tests
2021-11-12 10:23:35 +04:00
Felipe Knorr Kuhn
7a07f67be5 Update mainnet partial address tests 2021-11-11 21:56:19 -08:00
Miguel Medeiros
a3de75ebf4 Add mempool special block animation. 2021-11-11 16:04:00 -03:00
Miguel Medeiros
46a2854f67 Add taproot activation fireworks. 2021-11-11 16:04:00 -03:00
softsimon
033f066abf Merge pull request #898 from MiguelMedeiros/fix-translations-strings-tooltip-echarts
Localization: Add localize strings at echarts tooltip.
2021-11-11 15:28:49 +04:00
softsimon
97244c7b35 Merge pull request #921 from MiguelMedeiros/fix-button-menu-styles
Fix menu button styles.
2021-11-11 00:02:42 +04:00
Miguel Medeiros
3d92369ed6 fix: menu button styles. 2021-11-10 12:18:29 -03:00
wiz
2bee46951c Merge pull request #920 from mempool/simon/display-transaction-prevout-type
Display previous output types
2021-11-10 23:06:26 +09:00
wiz
61ffcd0065 Merge pull request #918 from mempool/simon/taproot-tag
Adding Taproot transaction tag
2021-11-10 22:58:02 +09:00
wiz
88e79c220f Merge pull request #902 from MiguelMedeiros/fix-nginx-docs
Doc: Fix nginx package name.
2021-11-10 22:33:34 +09:00
Miguel Medeiros
a2c21e9036 Add id to size string. 2021-11-10 10:26:26 -03:00
Miguel Medeiros
8a0316a562 Add localize strings at echarts tooltip. 2021-11-10 10:25:00 -03:00
softsimon
055c1f2aa5 Display previous output types
fixes #917
2021-11-10 16:17:03 +04:00
softsimon
88e48df8a9 Adding Taproot transaction tag
fixes #914
2021-11-10 15:05:45 +04:00
softsimon
b81d296635 Merge pull request #916 from mempool/wiz/enable-autocomplete-for-all-networks
Enable address autocomplete for all networks
2021-11-10 11:43:48 +04:00
wiz
9f68f57d8a Enable address autocomplete for all networks 2021-11-10 07:56:07 +01:00
softsimon
26a540a57c Display lower <1 s/vB fee rate tiers for Liquid
fixes #859
2021-11-10 00:04:58 +04:00
softsimon
ad8398e3d4 Merge pull request #897 from MiguelMedeiros/fix-rtl-menu-mobile
UI/UX: Fix rtl mobile header menu.
2021-11-06 01:50:51 +04:00
softsimon
0fabf8dbc3 Merge pull request #905 from MiguelMedeiros/add-2y-3y-graph-time-span
UI/UX: Add 2y and 3y statistics time span.
2021-11-05 23:09:35 +04:00
softsimon
cd63c6c0c1 Merge pull request #890 from MiguelMedeiros/fix-buttons-graph-page
UI/UX: Fix buttons positions at graphs page.
2021-11-04 13:21:00 +04:00
Miguel Medeiros
c95f75254b Add 2y and 3y statistics time span. 2021-11-01 22:06:10 -03:00
Miguel Medeiros
9e4ad51b79 Fix nginx docs. 2021-11-01 20:57:20 -03:00
Miguel Medeiros
6e35102b3a Fix rtl mobile header menu. 2021-11-01 11:11:50 -03:00
Miguel Medeiros
d1e72c0cc0 Fix loading icon position. 2021-10-29 10:46:16 -03:00
Miguel Medeiros
1925023eb2 fix: check buttons at graphs page 2021-10-29 10:04:30 -03:00
softsimon
377eb0cae5 Merge pull request #892 from MiguelMedeiros/fix-tooltip-echarts-liquid
UI/UX: Fix Liquid.network missing tooltip series name.
2021-10-29 13:28:21 +04:00
softsimon
e33e4b1d71 Merge pull request #873 from MiguelMedeiros/fix-height-title-components
UI/UX: Fix height inconsistencies between components.
2021-10-29 12:14:26 +04:00
softsimon
b8f3c1f124 Merge pull request #884 from mempool/simon/electrs-error-handling
Handle new type of Electrum Server error.
2021-10-29 11:29:49 +04:00
wiz
5333ec0b99 Merge pull request #893 from knorrium/e2e_base_module_cleanup
e2e BASE_MODULE cleanup
2021-10-28 14:30:06 +09:00
wiz
f761c5d966 Merge pull request #894 from knorrium/fe_dev_instructions 2021-10-28 14:13:58 +09:00
Felipe Knorr Kuhn
3b6d07cace Add instructions on how to contribute to the Frontend codebase 2021-10-27 21:50:51 -07:00
Felipe Knorr Kuhn
cbeeef3b2c Remove BASE_MODULE from the GHA env vars as we read from the config now 2021-10-27 20:52:50 -07:00
Felipe Knorr Kuhn
5dab44e6c4 Cleanup Cypress config and commands 2021-10-27 20:49:49 -07:00
Felipe Knorr Kuhn
5139ffb4df Update e2e tests BASE_MODULE resolution 2021-10-27 20:40:44 -07:00
Miguel Medeiros
06706be18f fix: Liquid missing tooltip serie name. 2021-10-27 01:58:54 -03:00
Miguel Medeiros
9264f3cf4f Fix title styles. 2021-10-26 21:47:28 -03:00
Miguel Medeiros
d6a9017267 Fix disable button font-size. 2021-10-26 21:47:27 -03:00
Miguel Medeiros
bad75cfd4e Fix address title styles.
Fix tx title margin right .
2021-10-26 21:47:27 -03:00
Miguel Medeiros
68240e4f5c Fix skeleton css styles. 2021-10-26 21:47:26 -03:00
Miguel Medeiros
9d9ff6ed91 Fix titles height inconsistencies. 2021-10-26 21:47:26 -03:00
softsimon
f19b84090a Merge pull request #887 from knorrium/fix_ws_api_docs
Fix ws api docs
2021-10-25 18:11:40 +04:00
Felipe Knorr Kuhn
85c4574cbd Update HTML template for the WS API examples 2021-10-24 22:47:50 -07:00
Felipe Knorr Kuhn
e2c4e42c81 Fix WS API examples 2021-10-24 22:47:02 -07:00
softsimon
dd6c26b079 Handle new type of Electrum Server error.
fixes #872
2021-10-23 11:46:38 +04:00
Felipe Knorr Kuhn
837992f7ea Route json assets based on the BASE_MODULE 2021-10-22 11:54:28 -07:00
Felipe Knorr Kuhn
40914236d4 Update references to the JS proxy config 2021-10-22 11:52:23 -07:00
Felipe Knorr Kuhn
f52c36093e Remove old json based proxy config 2021-10-22 11:51:52 -07:00
wiz
a9f4418e1a Merge pull request #880 from mempool/simon/transaction-output-id
Add output ID to transaction info
2021-10-20 22:32:31 +09:00
softsimon
1a37c8b116 Add output ID to transaction info
fixes #413
2021-10-20 15:44:43 +04:00
wiz
39d231bb3c Merge pull request #879 from mempool/simon/push-tx-form
Broadcast transaction form
2021-10-19 22:30:03 +09:00
softsimon
4046c3176f Broadcast transaction form
fixes #878
2021-10-19 17:10:30 +04:00
softsimon
c257fbfdcb Merge pull request #874 from MiguelMedeiros/fix-typo
Ref: Fix typo.
2021-10-18 16:26:07 +04:00
Miguel Medeiros
1659be0d9f Fix typo. 2021-10-12 10:54:14 -03:00
softsimon
6f9762d50b Merge pull request #868 from MiguelMedeiros/fix-tooltip-dashboard
UI/UX: Fix mempool chart tooltip at dashboard component.
2021-10-08 22:40:29 +04:00
Miguel Medeiros
9bf475bc97 Fix filter color. 2021-10-08 15:30:26 -03:00
Miguel Medeiros
e59a318cad Fix mempool chart tooltip at dashboard component. 2021-10-08 15:11:59 -03:00
softsimon
57b64f64ad Merge pull request #867 from MiguelMedeiros/fix-tooltip-charts
UI/UX: Fix fee rate tiers on graphs.
2021-10-08 21:54:36 +04:00
Miguel Medeiros
af3af5f099 Fix tooltip ranges. 2021-10-08 12:42:43 -03:00
softsimon
fec603d5c5 Merge pull request #866 from mempool/wiz/fix-ios-top-notch-color
Set the iOS status bar when viewing as progressive web app
2021-10-08 15:36:34 +04:00
softsimon
ed2ebb1c70 Merge pull request #862 from MiguelMedeiros/ui-tooltip-size
UI/UX: Make tooltip looks bigger on mempool fee chart.
2021-10-08 13:59:45 +04:00
wiz
14d2f8dd97 Set the iOS status bar when viewing as progressive web app 2021-10-08 18:23:21 +09:00
wiz
bf563cc195 Merge pull request #847 from MiguelMedeiros/add-filtering-mempool-charts
Add mempool chart filtering.
2021-10-08 09:54:28 +09:00
Miguel Medeiros
f66e0a2c12 Make tooltip style looks bigger 2021-10-07 16:19:57 -03:00
Miguel Medeiros
a43cd48795 Remove unecessary code to controle legends.
Fix order of active and inactive fee ranges.
2021-10-07 16:03:21 -03:00
Miguel Medeiros
44339daedf Add toggle button to dropdown menu.
Revert left margin from tv page.
Change text dropdown filter to icon.
Change dropdown inactive item color.
Revert 500 limit rate.
2021-10-07 14:20:06 -03:00
Miguel Medeiros
14b7b6427a Change dropdown button text. 2021-10-07 14:20:06 -03:00
Miguel Medeiros
a2e866d15a Change filters to dropdown selection menu. 2021-10-07 14:20:05 -03:00
Miguel Medeiros
c2f288a861 Add mempool chart filtering. 2021-10-07 14:20:05 -03:00
wiz
e1c943d0a7 Merge pull request #856 from mempool/simon/mempool-blocks-amount-display-fix
Display correct amount of mempool blocks on mobile
2021-10-07 08:03:42 +09:00
softsimon
fa2d2e60b5 Merge pull request #857 from mempool/wiz/fix-robots-txt
Remove sitemap.xml from robots.txt
2021-10-06 13:21:40 +04:00
wiz
c919980652 Remove sitemap.xml from robots.txt 2021-10-06 17:36:01 +09:00
softsimon
b48389ae7d Display correct amount of mempool blocks on mobile
fixes #854
2021-10-05 15:40:28 +04:00
wiz
2bac7f9987 Merge pull request #855 from mempool/simon/liquid-dashboard-update
Display mempool graph on the Liquid dashboard
2021-10-05 20:16:32 +09:00
softsimon
acf6fd9db5 Display mempool graph on the Liquid dashboard 2021-10-05 15:08:41 +04:00
wiz
74a9b65e81 Merge pull request #853 from mempool/simon/mempool-blocks-config-fix
Use MEMPOOL_BLOCKS_AMOUNT config in the frontend
2021-10-05 10:06:41 +09:00
softsimon
822c840e54 Use MEMPOOL_BLOCKS_AMOUNT config in the frontend
fixes #852
2021-10-05 04:37:24 +04:00
wiz
6e93ef68fe Merge pull request #848 from mempool/simon/update-preview-image
Update README preview image
2021-10-02 05:37:18 +09:00
wiz
3006deae6e Merge pull request #845 from MiguelMedeiros/add-dashed-line
Add mark line to mempool chart.
2021-10-02 05:36:09 +09:00
softsimon
740f5c2003 Update README.md 2021-10-01 21:45:20 +04:00
Miguel Medeiros
5c9d44e9eb Fix dotted line style at tx chart.
Remove dotted line from inverted mempool chart.
2021-10-01 00:35:08 -03:00
wiz
88527b41e7 Merge pull request #846 from MiguelMedeiros/fix-optimize-series-data
Remove vbytesPipe from series data.
2021-10-01 04:44:08 +09:00
Miguel Medeiros
83cce0c3a7 Remove vbytesPipe from series data. 2021-09-29 21:47:39 -03:00
Miguel Medeiros
e144d0c8e5 Add mark line to mempool chart. 2021-09-29 21:44:13 -03:00
wiz
d72dbc1415 Merge pull request #840 from MiguelMedeiros/fix-confirmation-button-position
Fix confirmations button positioning.
2021-09-30 05:46:08 +09:00
Miguel Medeiros
b857a7c37f Fix rtl transaction title. 2021-09-29 17:13:21 -03:00
Miguel Medeiros
c72c287b27 Fix confirmations button positioning. 2021-09-29 16:16:39 -03:00
wiz
18e0a17d26 Merge pull request #843 from MiguelMedeiros/fix-sum-bar-values
Fix total percentage bar value.
2021-09-30 03:59:44 +09:00
Miguel Medeiros
87eeef5d41 Fix total percentage bar value. 2021-09-29 15:12:54 -03:00
softsimon
76a2fdeea7 Merge pull request #839 from MiguelMedeiros/fix-shadowed-variable
Fix lint 'no-shadowed-variable'.
2021-09-29 17:20:39 +04:00
softsimon
792eb3727c Merge pull request #838 from MiguelMedeiros/fix-localized-numbers-mempool-charts
Fix parse numbers localized.
2021-09-29 17:16:48 +04:00
softsimon
2e0845847d Merge pull request #837 from MiguelMedeiros/fix-circle-dots-mempool-charts
Remove circle symbols when hovering the series.
2021-09-29 17:15:18 +04:00
Miguel Medeiros
8f774e55a8 Fix lint 'no-shadowed-variable'. 2021-09-28 21:04:48 -03:00
Miguel Medeiros
28418640bb Fix parse numbers localized. 2021-09-28 21:00:29 -03:00
Miguel Medeiros
8aae5c1c9c Remove circle symbols when hovering the series.
Fix selected index when hovering the series.
2021-09-28 20:13:08 -03:00
wiz
92048964d1 Merge pull request #831 from MiguelMedeiros/fix-sum-column-ui-mempool-chart
Change total sum column to fixed color.
2021-09-29 02:05:15 +09:00
Miguel Medeiros
b2140c2abe Change total sum column to fixed color. 2021-09-28 10:16:27 -03:00
wiz
d0a8509194 Merge pull request #826 from mempool/simon/bisq-transaciton-filter-fix
Fix for stuck Bisq transaction page when filtering
2021-09-27 19:20:28 +09:00
wiz
aa0c3e6fed Merge pull request #825 from MiguelMedeiros/fix-focus-effect-mempool-chart
Fix the focus effect on the mempool graph.
2021-09-27 19:12:49 +09:00
softsimon
f0462114f3 Fix for stuck Bisq transaction page when filtering
fixes #540
2021-09-27 02:37:57 +04:00
Miguel Medeiros
9e0f9840aa Fix the focus effect on the mempool graph. 2021-09-26 16:59:00 -03:00
wiz
d763c30f6a Merge pull request #824 from mempool/simon/lbtc-widget-minor-ux
L-BTC graph: Minor styling update
2021-09-27 04:07:23 +09:00
wiz
92b69657da Merge pull request #814 from mempool/simon/block-transactions-sorting-fix
Sort block transactions first by height and then time
2021-09-27 04:04:46 +09:00
wiz
d9ec0c1a36 Merge pull request #823 from MiguelMedeiros/fix-tooltip-inverted-chart
Fix tooltip mempool chart hover selection.
2021-09-27 04:03:34 +09:00
wiz
4bf9f8b062 Merge pull request #821 from mempool/simon/post-tx-api
Adding POST /tx API to bitcoind mode
2021-09-27 04:03:25 +09:00
softsimon
eefd8104bb L-BTC graph: Minor styling update 2021-09-26 22:57:37 +04:00
wiz
16e807c4b0 Fix API docs curl example for POST /api/tx 2021-09-27 03:49:20 +09:00
Miguel Medeiros
461296e002 Remove uncessary variable check. 2021-09-26 15:47:08 -03:00
softsimon
86c877c8e9 Adding POST /tx API to bitcoind mode
fixes #777
2021-09-26 22:46:23 +04:00
Miguel Medeiros
80fcceef73 Fix size column order when invert mempool chart. 2021-09-26 15:39:37 -03:00
Miguel Medeiros
b0e54818ae Fix mempool chart tooltip hover selection. 2021-09-26 15:24:29 -03:00
Miguel Medeiros
acbd7f0bde Fix inverted tooltip when invert chart. 2021-09-26 15:17:39 -03:00
wiz
9a6efceb34 Merge pull request #820 from MiguelMedeiros/add-inverted-button
UI/UX: Add inverted feature to mempool fee chart.
2021-09-27 01:36:06 +09:00
Miguel Medeiros
5ce7b55441 Add inverted chart feature. 2021-09-26 11:41:55 -03:00
wiz
a3edaf17cc Merge pull request #819 from mempool/simon/lpeg-liquid-test
Check for data to possibly fix Liquid test
2021-09-26 18:51:25 +09:00
softsimon
5695019216 Check for data to possibly fix Liquid test 2021-09-26 13:41:33 +04:00
wiz
7ab1ce8fc4 Merge pull request #813 from mempool/simon/significant-digits-fix
Fix for fee rounding not using locale
2021-09-26 05:25:21 +09:00
wiz
1f8ec2bd8e Merge pull request #812 from mempool/simon/liquid-block-hash-search-fix
Handle search for Liquid block hashes in search bar.
2021-09-26 05:15:06 +09:00
wiz
78b488466e Merge pull request #810 from mempool/simon/liquid-lbtc-dashboard-widget
L-BTC in circulation dashboard widgete
2021-09-26 05:10:47 +09:00
softsimon
66630743f6 L-BTC in circulation dashboard widget
refs #718
2021-09-25 23:45:10 +04:00
softsimon
ffa18bbe71 Sort block transactions first by height and then time
fixes #770
2021-09-25 16:28:11 +04:00
softsimon
8cb1c5c88c Fix for fee rounding not using locale
fixes #796
2021-09-25 15:50:31 +04:00
softsimon
bb07031362 Handle search for Liquid block hashes in search bar.
fixes #797
2021-09-25 14:37:54 +04:00
softsimon
31a0d44543 Merge pull request #809 from mempool/wiz/update-production-backend-configs
Update production backend configuration files
2021-09-24 22:00:12 +04:00
wiz
f90e19c767 Update production backend configuration files
* Set syslog priority to DEBUG since we're not Raspberry Pi
* Add 2nd core RPC configuration stubs for mainnet / liquid
2021-09-25 01:19:33 +09:00
wiz
800625d80e Merge pull request #799 from mempool/simon/liquid-lbtc-widget
Liquid L-BTC widgets (Backend)
2021-09-24 23:54:33 +09:00
wiz
552540f510 Merge pull request #806 from mempool/simon/angular-12-upgrade
Upgrading to Angular 12 and NgBootstrap 10
2021-09-23 05:10:52 +09:00
softsimon
bbee2dcb5b Upgrading to Angular 12 and NgBootstrap 10 2021-09-22 23:57:05 +04:00
softsimon
e4e338b05a Merge pull request #805 from mempool/wiz/update-unchained-url
Update the URL for Unchained Capital to unchained.com
2021-09-22 13:19:19 +04:00
wiz
061a55b236 Update the URL for Unchained Capital to unchained.com 2021-09-22 17:24:11 +09:00
softsimon
9f0f9230fb Merge pull request #804 from mempool/wiz/remove-warden-integration
Remove warden from list of Community Integrations
2021-09-22 11:13:07 +04:00
wiz
40956c0a23 Remove warden from list of Community Integrations 2021-09-22 02:19:48 +09:00
wiz
f29e35b325 Merge pull request #795 from MiguelMedeiros/bugfix-echarts-fixes
UI/UX: Fix charts css styling.
2021-09-22 02:07:43 +09:00
softsimon
d88efb8b0d Merge pull request #803 from mempool/wiz/add-zeus-integration
Add Zeus LN as Community Integration
2021-09-21 19:24:23 +04:00
Miguel Medeiros
b9489525c6 Revert charts margins. 2021-09-21 09:16:59 -03:00
Miguel Medeiros
8ddcd298b0 Fix axis labels css.
Change series smooth to false.
 Make charts margin smaller to match box container.
2021-09-21 09:16:59 -03:00
wiz
69df6e4dcb Add Zeus LN as Community Integration 2021-09-21 19:13:43 +09:00
softsimon
f3c8e2134b Handle errors gracefully. 2021-09-20 01:02:07 +04:00
wiz
0e25c52e67 Merge pull request #801 from mempool/simon/transifex-update 2021-09-20 02:02:12 +09:00
softsimon
60f41d3181 Transifex language fixes to Romanian, Makedonian and Hungarian. 2021-09-19 20:49:27 +04:00
wiz
50c5244abf Merge pull request #800 from mempool/simon/api-docs-hostname-fix
Always use local hostname for API examples.
2021-09-19 18:36:10 +09:00
softsimon
605c1a980c Always use local hostname for API examples. 2021-09-19 13:17:11 +04:00
softsimon
0d67bc36ee Refactoring the MINFEE node configuration into new configs. 2021-09-19 02:40:16 +04:00
softsimon
aa39bbd091 Elements blockchain parser. Save all peg in/out i the database. 2021-09-19 02:26:44 +04:00
softsimon
641d2ad028 Refactoring Bitcoin RPC client implementation 2021-09-18 13:18:47 +04:00
wiz
d602b20f56 Merge pull request #779 from mempool/simon/core-22-compatibility 2021-09-18 17:51:41 +09:00
softsimon
138f6e4e39 Update backend/src/api/bitcoin/bitcoin-api.interface.ts
Co-authored-by: Miguel Medeiros <miguel@miguelmedeiros.com.br>
2021-09-17 19:22:15 +04:00
softsimon
3e788ecbf9 Handle changes to address RPC api in bitcoin core 22
fixes #778
2021-09-17 19:22:15 +04:00
wiz
2236c6d9a6 Merge pull request #794 from mempool/simon/transifex-pull-20200917 2021-09-17 21:42:38 +09:00
softsimon
2a0a1b0213 Pulled from transifex 2021-09-17 16:27:24 +04:00
wiz
e6e49fd5d6 Merge pull request #793 from mempool/simon/credit-romanian-macedonian-translators 2021-09-17 20:49:14 +09:00
softsimon
f6d5f44469 Credit Romanian and Macedonian translators. 2021-09-17 14:19:53 +04:00
softsimon
51e09ff64f Merge pull request #775 from mempool/wiz/fix-canonical-name-for-three-sites
Set canonical URLs for new 3 site structure
2021-09-17 14:14:59 +04:00
softsimon
07ba2f6ecc Merge pull request #792 from mempool/i18n/add-macedonian
Add new locale: Macedonian (mk)
2021-09-17 13:54:03 +04:00
softsimon
bc42552bec Merge pull request #791 from mempool/i18n/add-romanian
Add new locale: Romanian (ro)
2021-09-17 13:53:35 +04:00
wiz
c6b44a3be9 Merge pull request #782 from TechMiX/rtlFixes
Fix RTL issues
2021-09-17 16:23:07 +09:00
wiz
e1f4de0de3 Set canonical URLs for new 3 site structure 2021-09-17 15:13:52 +09:00
wiz
d22dc0888a Add new locale: Macedonian (mk) 2021-09-17 15:03:52 +09:00
wiz
75fb27c690 Add new locale: Romanian (ro) 2021-09-17 15:02:15 +09:00
softsimon
401506a103 Merge pull request #789 from MiguelMedeiros/bugfix-echarts-mobile-mouseover
Disable mouseover legend for mobile users.
fixes #781
2021-09-17 03:24:10 +04:00
Miguel Medeiros
ab27ea28f0 Disable mouseover legend for mobile users. 2021-09-16 17:30:13 -03:00
softsimon
6e579ce0b6 Merge pull request #787 from mempool/wiz/disable-matomo-cookies
Disable matomo cookies - fixes #784
2021-09-16 17:45:37 +04:00
wiz
e7030cca32 Disable matomo cookies - fixes #784 2021-09-16 22:37:09 +09:00
TechMiX
2c496e9a50 add rtl hinting for new graph + move code rtl hints to style file 2021-09-15 12:06:55 +02:00
TechMiX
014d6dee66 fix various rtl issues 2021-09-15 11:02:04 +02:00
wiz
47ae306a75 Merge pull request #738 from MiguelMedeiros/feature-echarts
Feature: New charts library.
2021-09-15 11:08:11 +09:00
Miguel Medeiros
8b8b06e6ab Remove fee tier legends.
Fix tv page css.
2021-09-14 22:35:51 -03:00
Miguel Medeiros
fa7a45421e Fix linting and unclosed html tag.
Fix no shadowed variable tslint warning.
2021-09-14 22:35:51 -03:00
Miguel Medeiros
d376ba1c61 Move total MvB to the top.
Fix yAxis value.
Fix yAxis value.
Make disks smaller and transparent.
Change opacity on mouseover stack bars.
Add 4th column "sum of vsize" to tooltips table.
Add toggle show/hide tier fees.
Make progress active bar inline with text value.
Add a break line to the timestamp text.
Add colored progress bar with number.
2021-09-14 22:35:50 -03:00
Miguel Medeiros
388aa7fbe3 Fix y axis margin left. 2021-09-14 22:35:50 -03:00
Miguel Medeiros
34695146ee Change renderer to svg. 2021-09-14 22:35:50 -03:00
Miguel Medeiros
9020c618f0 Change renderer to svg.
Fix data structure of mempool graph.
Change tooltip total position (top).
Change tooltip visual of partial porcentage.
2021-09-14 22:35:49 -03:00
Miguel Medeiros
584d091d4e Fix indicator border-radius. 2021-09-14 22:35:49 -03:00
Miguel Medeiros
f434e50a2c Invert the tooltip legends order.
Fix default data to title tooltip MM/dd HH:mm.
Add symbol to tx chart tooltip .
Add accumulative total for tooltip information.
Add 3th column to tooltip with a progress bar.
Add and max span zoom span.
Add feeRate limit input to mempool graph component.
Add showZoom option to mempool graph component.
Remove start animation to match the layout for future SSR.
Remove mouse wheel zoom from small template.
Fix small template style.
2021-09-14 22:35:49 -03:00
Miguel Medeiros
1a7decb91d Add default data to title tooltip MM/dd HH:mm.
Add symbol to tx chart tooltip .
2021-09-14 22:35:48 -03:00
Miguel Medeiros
3574f8639e Add total sum to mempool chart.
Add zoom tools.
Add different theme for charts `big` and `small` (default).
Fix date format on mouseover.
Fix animations on graphs page.
Fix overflow tv page.
Remove `crosshair` on mouseover, changed to `line`.
Fix custom tooltip styles.
Remove inverted button (will add in a future PR).
Remove fee range labels (will add in a future PR).
Fix e2e testing.
2021-09-14 22:35:48 -03:00
Miguel Medeiros
9b956ff88d Add new component incoming-transactions-graph;
Refactor component mempool-graph;
Refactor component fee-distribution-graph;
Add incoming-transactions-graph to dashboard;
Add incoming-transactions-graph to statistics;
Add incoming-transactions-graph to television;
Add mempool-graph to dashboard;
Add mempool-graph to statistics;
Add mempool-graph to television;
Remove chartist.component;
2021-09-14 22:35:47 -03:00
Miguel Medeiros
1a98a14541 Add echart module. 2021-09-14 22:35:47 -03:00
wiz
0088e58c14 Merge pull request #776 from mempool/wiz/add-newsyslog-for-nginx 2021-09-11 19:20:30 +09:00
wiz
3fad765269 Add newsyslog.conf for nginx log rotation - delete logs after 90 days 2021-09-11 08:40:58 +09:00
softsimon
2e122a9be1 Merge pull request #771 from mempool/release/v2.2.2
Bump version number to v2.3.0-dev
2021-09-09 11:41:11 +04:00
wiz
2978d16148 Merge pull request #772 from mempool/wiz/fix-api-docs-for-raspberry-pi-users
Fix API docs examples for Raspberry Pi users using romanz/electrs
2021-09-09 14:44:10 +09:00
wiz
fc58bcb3bc Fix API docs examples for Raspberry Pi users using romanz/electrs 2021-09-09 11:11:01 +09:00
wiz
1696623e2f Bump version to v2.3.0-dev after shipping v2.2.2 2021-09-09 07:27:01 +09:00
wiz
251a1af442 Bump version number for v2.2.2 release 2021-09-09 07:23:36 +09:00
wiz
9bdf42530a Merge pull request #769 from mempool/wiz/fix-api-docs-fees-path
Fix api-docs incorrect API path for fees related methods
2021-09-08 07:29:36 +09:00
wiz
8525fbb177 Fix api-docs incorrect API path for fees related methods 2021-09-08 07:13:23 +09:00
wiz
63a3568481 Merge pull request #768 from mempool/simon/liquid-fetch-unconfidential
Liquid: Display unconfidential address and fix tracking
2021-09-08 06:37:24 +09:00
wiz
e4941740de Merge pull request #765 from mempool/simon/address-regex-fix
Updated address regex to handle all types of addresses.
2021-09-08 06:36:42 +09:00
softsimon
25bd33f7da validate-address API should be there both in esplora and bitcoind mode. 2021-09-07 13:13:29 +04:00
softsimon
2d007b9100 Liquid: Display unconfidential address and fix tracking
fixes #761
2021-09-06 10:20:31 +04:00
softsimon
b71330c606 Lowercase Segwit uppercase addresses for tracking matching. 2021-09-05 00:30:24 +04:00
softsimon
844b640c8c Merge pull request #760 from mempool/wiz/rename-keybase-channels
Update syslog.conf and upgrade/restart scripts for new keybase channels
2021-09-04 23:31:28 +04:00
softsimon
1277e58e68 Updated address regex to handle all types of addresses.
fixes #301
fixes #750
2021-09-04 23:21:15 +04:00
wiz
fde6fe324a Merge pull request #764 from mempool/simon/electrum-error-msg-fix
Handle string error messages.
2021-09-04 09:17:46 +09:00
wiz
4ed114a4d5 Merge pull request #762 from mempool/simon/npm-audit-fix-2021-09-03
Npm audit fix.
2021-09-04 09:16:56 +09:00
wiz
8c2dfea6a6 Merge pull request #716 from MiguelMedeiros/documentation-api
Improvements to API documentation and examples
2021-09-04 09:10:59 +09:00
Miguel Medeiros
a0624df06b Change websocket examples. 2021-09-03 20:13:31 -03:00
Miguel Medeiros
1eedcf900b Fix transaction post curl example. 2021-09-03 19:43:28 -03:00
softsimon
0b077d6fda Handle string error messages.
fixes #763
2021-09-04 01:32:36 +04:00
Miguel Medeiros
80047313e7 Remove unused variables. 2021-09-03 16:50:45 -03:00
Miguel Medeiros
71229b94c8 Set default active tab to liquid network. 2021-09-03 16:48:37 -03:00
Miguel Medeiros
c256daf8c8 Fix document location protocol for curl url. 2021-09-03 16:22:39 -03:00
Miguel Medeiros
ba0fb996d2 Fix curl placeholder url depending on base_module.
Fix currencies wrapper url variable name.
2021-09-03 16:02:05 -03:00
Miguel Medeiros
5977e96034 Fix typo variable name. 2021-09-03 14:35:06 -03:00
Miguel Medeiros
a151c5cddd Add template to documentation.
Add support for BASE_MODULE=[mempool, bisq, liquid].
 Add print results do CommonJS examples.
 Add support for custom domains.
 Remove basecurrency from /volume endpoint.
2021-09-03 07:04:19 -03:00
softsimon
0323fd966d Npm audit fix. 2021-09-03 00:44:23 +04:00
wiz
beb834bc30 Update syslog.conf and upgrade/restart scripts for new keybase channels 2021-09-02 19:30:54 +09:00
wiz
ad6503c7b3 Merge pull request #755 from knorrium/fix_dashboard_memory_leak
Add a potential fix for the memory leak on the Dashboard
2021-09-02 19:12:42 +09:00
softsimon
f8c11c8b6b Merge pull request #759 from knorrium/cypress_831
Update Cypress to v8.3.1
2021-09-02 13:45:12 +04:00
Felipe Knorr Kuhn
ba5421e77b Add some search tests (#758) 2021-09-02 13:42:18 +04:00
Felipe Knorr Kuhn
20fa803cee Add a potential fix for the memory leak on the Dashboard
Fix the broken experience after unsubscribing for network changes

Fix the broken experience after unsubscribing for network changes
2021-09-02 00:47:00 -07:00
Felipe Knorr Kuhn
393fa78a43 Increase waitForSkeletonGone timeout to 15s 2021-09-01 21:09:14 -07:00
Felipe Knorr Kuhn
3f290dae06 Upgrade Cypress to v8.3.1 2021-09-01 21:08:10 -07:00
wiz
24d18b9f2f Merge pull request #757 from mempool/wiz/revert-search-input-lowercase-conversion
Revert "Support uppercase addresses when searching."
2021-09-02 01:37:56 +09:00
wiz
79ef8ca371 Revert "Support uppercase addresses when searching."
This reverts commit fc28b06a0f.
2021-09-02 00:57:43 +09:00
softsimon
ec12f21113 Backend: Bumping Typescript version to 4.4.2 (#748)
* Backend: Bumping Typescript version to 4.4.2

* Replacing any types with instanceOf checks.
2021-08-31 15:09:33 +03:00
Priyansh
2e8ecc7277 Made Price feed update configurable (#751) 2021-08-29 22:30:11 +03:00
softsimon
fc28b06a0f Support uppercase addresses when searching.
fixes #301
2021-08-29 15:58:39 +03:00
softsimon
8fdbfdc04c Use block cache when searching or opening a recent block. (#749)
* Use block cache when searching or opening a recent block.

fixes #715

* Fixed linting errors.
2021-08-29 04:55:46 +03:00
Felipe Knorr Kuhn
bdfcfc96a8 Add script to pull digests from docker images (#705) 2021-08-27 19:04:51 +09:00
wiz
bb8649bc81 Merge pull request #747 from knorrium/be_dockerfile_fixes
Fix non-deterministic TypeScript version on Dockerfile
2021-08-27 17:08:04 +09:00
Felipe Knorr Kuhn
777e3d58b7 Fix non-deterministic TypeScript version on Dockerfile 2021-08-27 00:28:05 -07:00
wiz
c552f1aab6 Pull from transifex 2021-08-27 14:28:51 +09:00
softsimon
c0f2fa3042 Merge pull request #746 from MiguelMedeiros/bugfix-difficulty-adjustment-calc
Bugfix: difficulty adjustment calculation.
2021-08-26 03:27:59 +03:00
Miguel Medeiros
05936f82bd Refactor getDifficultyChange endpoint. 2021-08-25 21:14:01 -03:00
Miguel Medeiros
c7db81c97c Refactor difficulty adjustment calculation. 2021-08-25 17:18:30 -03:00
softsimon
bd1a37b8ef Correcting keypress arrow left test. 2021-08-25 18:41:35 +03:00
softsimon
efc4e6a8ed Fix for multiple arrow navigation bugs. (#741)
* Fix for multiple arrow navigation bugs.

fixes #731

* Updating test to handle left arrow navigation.

* Updating test to handle left arrow navigation.

* Arrow right click fix.

* Update frontend/cypress/integration/mainnet/mainnet.spec.ts

Co-authored-by: Felipe Knorr Kuhn <100320+knorrium@users.noreply.github.com>

Co-authored-by: Felipe Knorr Kuhn <100320+knorrium@users.noreply.github.com>
2021-08-25 15:44:55 +03:00
Felipe Knorr Kuhn
dd5d87e91e Add a test for not showing unblinding errors on regular TXs (#737) 2021-08-22 00:34:40 +03:00
wiz
ca6df488c5 Fix missing fetch command in upgrade script 2021-08-21 21:56:42 +09:00
wiz
1e018a6aa5 Fix typo/bug in mempool-logger script 2021-08-21 15:39:15 +09:00
wiz
0a627f96be Tweak production syslog configuration 2021-08-21 15:19:29 +09:00
wiz
17a8e67d8a Modify restart script to log restart events, don't restart services 2021-08-21 15:06:50 +09:00
wiz
815c2c5ad5 Modify upgrade script for PR branch deployment, tweak logging 2021-08-21 14:51:19 +09:00
softsimon
4376de85ff Liquid unblinding: Don't throw error as default for regular liquid transactions. 2021-08-21 03:13:39 +03:00
wiz
7e89de4612 Send deployment notifications to mempool.dev keybase group 2021-08-20 21:52:54 +09:00
wiz
4b72a14706 Merge pull request #735 from mempool/simon/bisq-tx-redirect-fix
Redirect unconfirmed bisq transactions to main website for tracking.
2021-08-20 21:25:13 +09:00
softsimon
b34f6fedb6 Redirect unconfirmed bisq transactions to main website for tracking. 2021-08-20 14:56:12 +03:00
Miguel Medeiros
58af0d78af Bugfix: Fix bisq dashboard tables overflow. (#733)
* Fix bisq dashboard tables overflow.

* Fix nav-item mobile margin.
2021-08-19 17:51:08 +03:00
Priyansh
ca13d9109c Updated mobile view for dropdown (#717)
Dropdown menu with dynamic positioning
2021-08-18 19:18:12 +03:00
Priyansh
e103fb5876 Updated significant digits of transaction fee (#722) 2021-08-18 16:27:35 +03:00
softsimon
58178f4563 Arrow bugfix: Unsubscribe all the observables when leaving view. 2021-08-18 15:59:18 +03:00
wiz
04f1879fd1 Add Unchained Capital as Enterprise Sponsor (#711) 2021-08-18 15:15:31 +03:00
softsimon
f5bc9ced0a Liquid unblinding: Replacing async/await with observable. 2021-08-18 14:05:40 +03:00
softsimon
7fe9993f91 Optimize performance of next/previous block. (#729) 2021-08-18 12:49:42 +03:00
softsimon
7c95339324 Merge pull request #728 from mempool/simon/unblinding-refactor-fix
Unblinding refactor fix
2021-08-18 04:09:53 +03:00
softsimon
006442f9de Merge pull request #727 from knorrium/improve_multisite_testing
Improve multisite testing
2021-08-18 03:35:43 +03:00
softsimon
e20100e437 Unblinding refactor fix 2021-08-18 03:34:17 +03:00
Felipe Knorr Kuhn
d7cf2b37d5 Update Liquid test data 2021-08-17 16:49:34 -07:00
Felipe Knorr Kuhn
278c2b9aae Fix typo on liquid setup 2021-08-17 16:38:51 -07:00
Felipe Knorr Kuhn
944246fcf5 Allow test jobs to run regardless of previous failures 2021-08-17 16:26:19 -07:00
Felipe Knorr Kuhn
03d87f4993 Add the Cypress env vars to the new test configs 2021-08-17 16:14:19 -07:00
Felipe Knorr Kuhn
cf8cab5f77 Temporarily enable cypress debug logs on GHA 2021-08-17 16:08:47 -07:00
Felipe Knorr Kuhn
49d1376647 Update cypress test config 2021-08-17 15:55:00 -07:00
Felipe Knorr Kuhn
de5518d262 update test specs to handle the new multisite setup on CI 2021-08-17 15:53:57 -07:00
Felipe Knorr Kuhn
7e4c51f47f Add new config targets for the multisite setup 2021-08-17 15:49:58 -07:00
softsimon
fe1d153632 Merge pull request #710 from MiguelMedeiros/feature-next-previous-block-arrows
UI/UX: `Next` and `Previous` button arrows for block navigation.
2021-08-18 00:57:39 +03:00
softsimon
a98f9ab80e Updating from transifex. 2021-08-18 00:54:34 +03:00
softsimon
867afaf265 Updating package lock file. 2021-08-18 00:50:18 +03:00
Rishabh
3d2ec64b14 Only display "Load all" if there are at least 3 more items to load (#724)
* Only display Load more if there are at least 3 more items to load

* Load more only if at least 3 more inputs
2021-08-18 00:49:08 +03:00
softsimon
bb407c0b42 Merge pull request #725 from mempool/simon/liquid-unblinding-refactor
Refactored liquid unblinding code into a new file.
2021-08-17 23:52:33 +03:00
softsimon
83c3d901c7 Merge pull request #726 from knorrium/update_devproxy
Update test infra to add initial support for the new multi-site setup.
2021-08-17 23:52:21 +03:00
Felipe Knorr Kuhn
901cee903c Update bisq tests to use the menu navigation 2021-08-17 13:02:24 -07:00
Felipe Knorr Kuhn
250ea09c7e Run generate config before running e2e tests locally 2021-08-17 13:01:36 -07:00
Felipe Knorr Kuhn
648d59631b Update local-prod target to use the new JS dev proxy 2021-08-17 13:01:04 -07:00
Felipe Knorr Kuhn
ed06e3c491 Add a new JS-based dev proxy for the new split up sites 2021-08-17 13:00:46 -07:00
Felipe Knorr Kuhn
3e8d646edd Fix update-config script to parse string values 2021-08-17 12:03:03 -07:00
softsimon
9c2c698575 Refactored liquid unblinding code into a new file. 2021-08-17 20:20:25 +03:00
softsimon
e2b0a286a4 Adding v2.2.1 dashboard screen shot. 2021-08-16 00:31:14 +03:00
softsimon
154809f0f9 Fix navigate to sponsor when base module is not mempool 2021-08-15 20:05:49 +03:00
softsimon
8d9a51a7c4 Readding search field, and fixing search for non-mempool base module sites. 2021-08-14 14:58:58 +03:00
softsimon
b3294369d4 Restoring Bisq Dao nav bar on Bisq module. 2021-08-14 13:25:54 +03:00
softsimon
53730920e3 Bugfix: Mempool block sizes were mixing up vsize and weight. 2021-08-14 03:24:31 +03:00
softsimon
d73b814277 Merge pull request #703 from priyanshiiit/median_fee
Get Median Fee on page reload
2021-08-14 02:25:35 +03:00
softsimon
dd0050c066 Merge pull request #669 from mempool/simon/configurable-main-module
Make base module and index.html file configurable with BASE_MODULE. A…
2021-08-14 02:25:07 +03:00
softsimon
ae51ee3e26 Removing issuance id test and fixing asset id test. 2021-08-14 02:21:38 +03:00
wiz
4b16e5d65f Add some basic title/descriptions for bisq.markets and liquid.network 2021-08-14 07:44:22 +09:00
softsimon
4f73bba132 Hide Mempool project description from non-mempool base module sites. 2021-08-14 01:37:28 +03:00
softsimon
3c229602e4 Use local about page component instead of external link. 2021-08-14 00:42:52 +03:00
softsimon
c74c902ebc Adding new preview images for Liquid and Bisq 2021-08-14 00:36:46 +03:00
wiz
8bfd315ba3 Rewrite production upgrade script to handle all 3 sites 2021-08-14 06:03:30 +09:00
softsimon
9d75c47792 Merge branch 'master' into simon/configurable-main-module
# Conflicts:
#	frontend/src/app/components/api-docs/api-docs.component.ts
#	frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.ts
#	frontend/src/app/components/master-page/master-page.component.html
#	frontend/src/app/components/mempool-blocks/mempool-blocks.component.html
#	frontend/src/app/components/mempool-blocks/mempool-blocks.component.ts
#	frontend/src/app/dashboard/dashboard.component.html
2021-08-13 17:16:14 +03:00
wiz
e183be1a5c Update GitHub sponsor link to mempool.space/sponsor 2021-08-13 08:41:35 +09:00
wiz
7e273ce63d Bump version tags to v2.2.2-dev 2021-08-13 07:56:14 +09:00
Miguel Medeiros
6d070e75b0 Add next and previous arrows to blocks. 2021-08-12 19:49:39 -03:00
wiz
af5e0d7cd6 Bump version to v2.2.1 2021-08-13 07:45:47 +09:00
wiz
a2f1003916 Pull from transifex 2021-08-13 06:22:11 +09:00
wiz
f4f96fd18e Fix typos in site.webmanifest for liquid.network 2021-08-12 20:57:33 +09:00
Miguel Medeiros
f3b470b63e Fix API docs example for POST /tx endpoint (#707)
* Fix post transactions example.
* Fix post tx endpoint.
2021-08-12 20:41:23 +09:00
wiz
398a72c1a6 Pull from transifex 2021-08-12 19:33:22 +09:00
softsimon
ddd6420d9b Updating Bisq markets logo and favicons. 2021-08-11 20:31:05 +03:00
Miguel Medeiros
d76f42296a Add new documentation for Liquid and Bisq. 2021-08-12 01:19:40 +09:00
wiz
45af88774f Pull from transifex 2021-08-12 00:49:33 +09:00
wiz
71c6b0e11d Remove typo'd extra line in nginx-mempool.conf - fixes #706 2021-08-12 00:47:42 +09:00
github2k20
47a6118ffb Get Median Fee on page reload 2021-08-11 00:17:25 +05:30
wiz
994eb378af Update production nginx-mempool.conf for donations API endpoint 2021-08-11 01:00:17 +09:00
wiz
34d46e8ca5 Pull from transifex 2021-08-11 00:29:46 +09:00
wiz
a940f7e3b4 Pull from transifex 2021-08-09 23:48:20 +09:00
softsimon
8c29395533 Resume tx tracking when network goes offline. (#702)
fixes #609
2021-08-09 13:01:29 +03:00
Miguel Medeiros
8208bbf0b7 UI/UX: Fix blockchain-blocks skeleton. (#697)
* Fix blockchain-blocks skeleton.

* Fix blockchain skeleton background.

* Fix mempool blockchain skeleton.

* Add e2e testing.
Add tsconfig.
Fix mempool fit to screen.

* Fix wrong return.
Fix e2e testing.

* Fix blockchainblocks connectionstate.
Add init action to websocket mock.
Add e2e testing for droping websock connection.

* Ref e2e code for websocket connection.
Fix blockchain blocks skeleton.

* Fix state connections.
Remove .only e2e tests.

* Fix mempool blocks skeleton.

* Add fit screen to empty blocks.
2021-08-09 03:43:03 +03:00
softsimon
dbd205b73f Fix: Block fee data wasn't visible unless at least 2 transactions. 2021-08-08 14:17:18 +03:00
softsimon
7ef4be26ed Use BLOCK_WEIGHT_UNITS instead of hard coded block size limit in all occations. 2021-08-08 04:19:54 +03:00
wiz
1223c58a98 Add missing --db-dir option in electrs-start-liquid script 2021-08-08 05:18:11 +09:00
wiz
7d3757676f Enable 'ca' locale for Catalan 2021-08-08 01:05:42 +09:00
wiz
073bd60ed8 Pull from transifex 2021-08-08 01:05:26 +09:00
wiz
18c38fc1c1 Pull strings from transifex 2021-08-08 00:58:58 +09:00
wiz
0eb95447bb Pull strings from transifex 2021-08-07 21:12:26 +09:00
softsimon
c6b1979391 Support Liquid 0.1 sat/vB fees on blocks. 2021-08-07 04:24:46 +03:00
softsimon
0f390e65a4 Assets page design improvements. 2021-08-07 03:25:35 +03:00
softsimon
5dc0f4e270 Use actual MEMPOOL_BLOCKS_AMOUNT value for amount of mempool blocks. 2021-08-07 03:07:32 +03:00
softsimon
223288cc52 Removing extra character. 2021-08-07 03:05:54 +03:00
softsimon
72a35200b3 Pulled from transifex. 2021-08-07 02:27:59 +03:00
softsimon
11817c04f7 Transaction and block header hex external URL should be relative to the network. 2021-08-06 23:45:54 +03:00
Miguel Medeiros
7a8b2db3fb UI/UX: Fix Blockchain skeleton preloader. (#696)
* Fix Blockchain skeleton preloader.

* Fix Mempool Blocks skeleton preloader.

* Add e2e test.

* Add shared command to cyrpress e2e test.
2021-08-06 14:09:47 +03:00
Priyansh
6d910a5e24 changed the order of columns in collapsed view (#695) 2021-08-06 14:08:44 +03:00
softsimon
e1f07884b9 Correcting favicon paths and color. 2021-08-05 19:25:13 +03:00
softsimon
e00e61edfa Updating liquid favicons. 2021-08-05 19:14:48 +03:00
softsimon
4f988e186a Updating liquid network logo. 2021-08-05 18:58:39 +03:00
wiz
1aa54faa35 Fix liquid.network and bisq.markets page titles in SEO services 2021-08-05 22:45:03 +09:00
softsimon
99adccf43c Pulled from transifex. 2021-08-05 14:15:37 +03:00
softsimon
0bb9247609 Handle 0.1 sat/vB base fee on the dashboard and backend. 2021-08-05 02:03:52 +03:00
softsimon
d841933b21 Sync blockstream asset registry when in liquid base module mode. 2021-08-05 01:31:22 +03:00
wiz
bc8b78a01b Update page titles in index.*.html and SEO service 2021-08-05 02:41:52 +09:00
softsimon
b0c708659b Merge pull request #690 from MiguelMedeiros/bugfix-titles-styles
UI: Fix Transaction h1 font-size.
2021-08-04 15:48:39 +03:00
Miguel Medeiros
e31b906084 Import scss from transaction component. 2021-08-04 09:09:28 -03:00
Miguel Medeiros
7249620471 Fix Bisq css page.
Refactor Bisq html page title classes.
2021-08-04 09:08:11 -03:00
Miguel Medeiros
dc9d5d0be3 Fix h1 fontsize. 2021-08-04 09:08:11 -03:00
softsimon
a9009d4de2 npm audit fix. 2021-08-04 14:34:28 +03:00
softsimon
a265787cd4 Bumping mempool.js. 2021-08-04 14:34:05 +03:00
softsimon
c6e72be483 Liquid proxy fix to work locally. 2021-08-04 14:21:15 +03:00
softsimon
4680519d2e Merge pull request #689 from knorrium/e2e_tweaks
e2e tweaks
2021-08-04 13:24:05 +03:00
Felipe Knorr Kuhn
5b17f88de2 disable video recording 2021-08-03 21:26:40 -07:00
Felipe Knorr Kuhn
a6d34ba4f1 remove firefox from test matrix 2021-08-03 21:20:05 -07:00
Felipe Knorr Kuhn
508c8b0be3 make serve:local-prod target not verbose 2021-08-03 21:19:25 -07:00
softsimon
ef7dd6c8fb Merge branch 'master' into simon/configurable-main-module 2021-08-03 18:41:43 +03:00
softsimon
f03249761b Updating i18n from transifex. 2021-08-03 18:38:34 +03:00
softsimon
cb5877ba0a Update i18n. 2021-08-03 18:37:31 +03:00
softsimon
96f14d2781 Flipping Merkle root and Bits location for more table alignment. 2021-08-03 18:35:49 +03:00
softsimon
8eb70416da Removing "raw block". 2021-08-03 18:15:33 +03:00
wiz
b9246a72f2 Add Foundry as Enterprise Sponsor (#685) 2021-08-03 18:00:18 +03:00
Priyansh
43e222b9df Raw Hex of Objects in Details Tab #616 (#682)
* Added Block Hex in Details

* Added Raw Tx in Transaction Details

* Backend Updates
2021-08-03 14:27:02 +03:00
wiz
5548d08a9e Remove debug env var for cypress testsuite runs 2021-08-03 12:20:55 +09:00
wiz
10fa39634e Update our Terms of Service, split Privacy Policy into its own page 2021-08-03 12:20:51 +09:00
wiz
e6b90385b2 Further tweak index.liquid.html metadata text 2021-08-02 21:42:02 +09:00
wiz
61181c6791 Set index.html metadata and SEO service title for liquid.network 2021-08-02 21:30:29 +09:00
wiz
d2cccd2422 Fix liquid favicons 2021-08-02 21:07:48 +09:00
wiz
b05ebe1598 Add missing route for /privacy-policy to liquid explorer routing 2021-08-02 20:59:31 +09:00
softsimon
d92827a411 Upgrade deprecated xi18n command to extract-i18n. 2021-08-02 14:49:02 +03:00
wiz
d061f7589c Update our Terms of Service, split Privacy Policy into its own page 2021-08-02 20:48:10 +09:00
softsimon
1c01094e07 Removing duplicate i18n string. 2021-08-02 14:48:08 +03:00
wiz
f28a85f91b Hush a noisy bisq error message down to info 2021-08-02 16:57:49 +09:00
softsimon
15903faf49 Merge branch 'master' into simon/configurable-main-module
# Conflicts:
#	frontend/src/app/components/blockchain/blockchain.component.ts
2021-08-02 00:24:09 +03:00
softsimon
4895343d4e Perform a blockchain sync check before updating initial difficulty ad… (#677)
* Perform a blockchain sync check before updating initial difficulty adjustment.

fixes #603

* Updating logger messages.
2021-08-01 15:49:26 +03:00
Miguel Medeiros
a0559cbb24 Fix time until component round for week interval. (#679)
* Fix time until component round for week interval.

* Add forceFloorOnTimeIntervals parameter.
2021-08-01 01:25:24 +03:00
Miguel Medeiros
0293ba4a52 Remove feeRange check. (#678) 2021-07-31 20:11:50 +03:00
Miguel Medeiros
8b0d1db776 Fix concurrent asynchronous calls. (#675)
* Fix concurrent asynchronous calls.

* Remove test without mempool info websocket.

* Remove isloading$ variable.
2021-07-31 19:40:15 +03:00
softsimon
1908b1a5a6 Adding configuration for blocks and mempool blocks amount. 2021-07-31 17:56:10 +03:00
softsimon
037f472f8c Make Block Weight Unit configurable in frontend+backend. 2021-07-31 17:30:35 +03:00
softsimon
a32c1f40b1 Restoring About page. Fix for KEEP_BLOCKS_AMOUNT setting. Show up to 2 mempool blocks. 2021-07-30 23:14:45 +03:00
Miguel Medeiros
837e714b1f Fix show blocks on small screen. (#674) 2021-07-30 02:28:43 +03:00
wiz
91a37d8fe8 Add [push, pull_request] to cypress GHA workflow 2021-07-29 23:58:25 +09:00
softsimon
a00aa27ae4 Fix API doc page for Bisq. 2021-07-29 16:14:36 +03:00
Miguel Medeiros
226e72451c Fix colorized unblinded transaction. (#671) 2021-07-29 13:37:17 +03:00
softsimon
544be77bdc Liquid asset search bug fix. 2021-07-29 13:10:06 +03:00
softsimon
b8a110a772 Liquid fixes for latest transactions and API Doc. 2021-07-29 13:06:08 +03:00
wiz
7788a2d6bd Add other domain names to Terms of Service header 2021-07-29 18:38:49 +09:00
softsimon
da17fd16fa Liquid blockchain container position. 2021-07-29 12:36:00 +03:00
softsimon
e670f80fed Liquid dashboard updates. About page link. 2021-07-29 12:32:54 +03:00
wiz
857a5ff6fc Add missing asset_registry_db repo path for liquid electrs backend
Fixes #649
2021-07-29 17:49:42 +09:00
softsimon
2de28b9926 Dynamic dropdown. 2021-07-28 22:32:13 +03:00
softsimon
e6f8cf6cc8 Updating from transifex. 2021-07-27 19:51:38 +03:00
softsimon
d7586af392 Make base module and index.html file configurable with BASE_MODULE. Adding bare Liquid module. 2021-07-27 17:10:38 +03:00
wiz
35881b2457 Add customized index.html for bisq.markets entrypoint 2021-07-27 21:38:13 +09:00
Felipe Knorr Kuhn
59cd80b6d1 remove windows from test matrix (#666) 2021-07-27 02:47:32 +03:00
Miguel Medeiros
735c2ba587 Bugfix: Dashboard preloading skeleton. (#668)
* Change green color.

* Fix dashboard preloading components.
2021-07-27 02:47:08 +03:00
softsimon
be1ef43cd1 Updating i18n messages. 2021-07-26 22:02:24 +03:00
Felipe Knorr Kuhn
34ad88d3d0 update indentation (#664) 2021-07-26 22:00:53 +03:00
Miguel Medeiros
751c7d6e69 Bugfix: Dashboard - Difficulty adjustment component. (#663)
* Add color to previous retarget.
Add absolute number pipe.
Change plus and minus signs to fa icons.
Change Fee Estimate title to Transactions Fees.
Set min and max difficulty adjustments.

* Add projectID to cypress conf.

* Change icon to fa-caret.

* Remove unecessary icons.
2021-07-26 22:00:40 +03:00
Felipe Knorr Kuhn
60d8697b09 Cypress browser matrix (#665)
* use cypress matrix

* fix workflow indentation

* fix workflow job name

* add dummy containers for parallelization
2021-07-27 03:23:35 +09:00
wiz
41aa1248be Pass GITHUB_TOKEN to Cypress workflows, revert back to on "push" 2021-07-27 01:48:53 +09:00
wiz
cedd94c654 Set GitHub Action for Cypress to pull_request instead of push 2021-07-26 15:47:13 +09:00
wiz
bf13994d28 Remove duplicate trademark notice in LICENSE 2021-07-26 15:24:12 +09:00
Felipe Knorr Kuhn
8a44ccc55d small formatting fix to trigger more tests (#660) 2021-07-26 01:49:40 +03:00
softsimon
81df40681f Updating translations. 2021-07-25 21:18:35 +03:00
Felipe Knorr Kuhn
9e46cde9b7 Updates to the e2e suite (#659)
* initial version of the update config script

* fix duplicated content

* update cypress ci settings

* add workflow to run e2e tests when pushing

* record cypress results to the dashboard

* pull the cypress record key and project id from the secrets

* add start-server-and-test to replace concurrently

* replace concurrently with start-server-and-test

* remove concurrently

* add new cypress target to record

* update cypress to 7.7.0

* add tests for signet

* add tests for testnet

* run tests on chrome and firefox

* update test matrix: add edge and run firefox on container

* fix copypasta

* update docker image for firefox

* fix task name again

* fix edge tests task name

* improve bisq tests

* update workflow config

* enable cypress debug logs

* add a manual trigger for the e2e tests

* add config:defaults target

* use more of the GHA options

* fix config command

* add cypress-fail-on-console-error

* upgrade cypress to v8.0.0

* add helper to wait for the loader skeleton to be gone

* use skeleton waiter on the tests

* remove manual test trigger

* fix tv test when only one mempool block is available

* add waiter for pagination

* add extra steps to debug firefox launch issue

* remove whoami step

* Revert "upgrade cypress to v8.0.0"

This reverts commit cb3ff7d906.

* remove userinfo debug step

* enable test retries in run mode

* update proxy config to reduce ECONNRESET errors

* add mock-socket dev dependency

* add helpers to mock websockets and detect page idleness

* stabilize mainnet tests

* fix tv mode test on Liquid

* add basic tests for the mainnet status page

* cleanup mainnet tests

* update bisq tests

* update signet tests

* update testnet tests

* add initial support for parameterized websocket mocks

* move testing dependencies to optionalDependencies

* comment out mempool size check until the live updates are fixed

* comment out tx regex test

* update fixture for the new difficulty adjustment component

* fix the assertions on the status page
2021-07-25 21:03:47 +03:00
softsimon
723034b3d3 Status page wasn't updated due to multiple want events.
fixes #658
2021-07-25 19:43:06 +03:00
wiz
59898f1269 Patch sysconf dep for blockstream/electrs build in start scripts 2021-07-25 15:20:35 +09:00
softsimon
195b9bf542 Bumping the mempool-js lib. 2021-07-25 02:32:31 +03:00
softsimon
0333d91b15 Updating from transfex. 2021-07-25 01:49:35 +03:00
softsimon
f0bd487ea9 Update i18n messages. 2021-07-25 01:35:12 +03:00
Miguel Medeiros
cd8e308870 Add previous adjustment retarget. (#655)
* Add previous adjustment retarget.

* Fix green color.
Add + symbol to difficulty change.

* Add previousRetarget to websocket.

* Add previous retarget.
2021-07-25 01:26:48 +03:00
Miguel Medeiros
f6a889298c Bugfix: Change mempool block time precision. (#650)
* Fix time precision.

* Fix rounding numbers only for minutes range.
Fix reflected avg time to ETA transactions.

* Fix now variable update.
2021-07-25 01:26:29 +03:00
Miguel Medeiros
11f5e99187 Doc: Add new endpoints to api documentation. (#654)
* Add difficulty adjustment api doc.
Change fee tab to general tab.

* Add block header examples.

* Change tab orders.
Add fees tabs.
Change CPFP instructions to Transactions tab.

* Reorder alphabetically.
Fix typo.
2021-07-24 23:00:11 +03:00
wiz
334f9358b0 Add new page for Trademark Policy and Guidelines (#647)
* Add new page for Trademark Policy and Guidelines

* Fix attribution footer at bottom of Trademark Policy

* Add our Trademark Notice and Trademark Policy URL to LICENSE

* Last minute fixes to Trademark Policy and Guidelines page
2021-07-24 22:40:11 +03:00
wiz
820561610a Merge pull request #642 from unruhschuh/patch-2
fixed rsync command for frontent
2021-07-25 04:08:25 +09:00
wiz
2c895e7b03 Merge pull request #643 from mempool/wiz/nginx-cache-lang-updates
Update nginx configuration for cache settings and new locales
2021-07-24 03:21:21 +09:00
wiz
f36f48b11c Add Marina Wallet as Community Integration on About page (#651)
* Add Marina Wallet as Community Integration on About page

* Shift logo for Marina wallet by a few pixels on About page
2021-07-23 21:12:48 +03:00
wiz
f12f1b4a4e Merge pull request #641 from unruhschuh/patch-1 2021-07-23 20:56:19 +09:00
softsimon
037d6a75ea Adding previous difficulty retarget to the difficulty adjustment api. (#652)
refs #640
2021-07-23 14:35:04 +03:00
softsimon
775323de3e Removing angular CLI analytics. 2021-07-22 15:37:40 +03:00
Miguel Medeiros
d91dfa2f41 Check if feeRange is undefined. (#636) 2021-07-21 18:35:27 +03:00
softsimon
3ac06bb983 Updating i18n from transifex. Moving hindi location. 2021-07-20 15:43:01 +03:00
Miguel Medeiros
1ba0075829 Feature: Reflect difficulty estimation into mempool blocks. (#637)
* Add time until to mempool blocks.
Reflect difficulty estimate time.

* Fix estimate calculation.
Turn off the auto refresh.

* Change Math.floor to Math.round.
2021-07-20 15:04:53 +03:00
Miguel Medeiros
95436d398d Fix undefined asset and colored coinbase tx. (#645) 2021-07-19 23:13:34 +03:00
wiz
f2f5749769 Update nginx configuration for cache settings and new locales
* Consolidates add_header statements into single top-level section
* Updates locales to match frontend/src/app/app.constants.ts
* Re-orders locales to match locale selector for easier checking
2021-07-19 18:36:13 +09:00
softsimon
cb90b09a0e Changing block header link to icon. Setting api response header to match electrs. 2021-07-19 02:34:01 +03:00
Rishabh
2e54f4ca94 Added missing block header API (#630)
* header API frontend

* Block Header API endpoint added to Node.js backend

* updated package-lock.json

Co-authored-by: Rishabh <rishabh@Rajeshs-MacBook-Pro.local>
2021-07-19 02:26:16 +03:00
softsimon
853e2fcb8f Minor fixes to difficulty adjustment api. 2021-07-19 00:50:09 +03:00
Priyansh
9e0a5300b0 Expose the difficulty adjustment information in an API #622 (#628)
* Added difficulty adjustment information API

* Added Difficulty API in API docs frontend

* Added link to API

* Updated the API implementation of difficulty-adjustment

* Updated API End Point in frontend

* Updated sample API response in frontend
2021-07-19 00:45:45 +03:00
Thomas Leitz
1b5930887c fixed rsync command for frontent
nginx-mempool.conf has "root /var/www/mempool/browser;"
2021-07-18 23:20:28 +02:00
Thomas Leitz
5b39c018db Fixed 'cp' command for nginx.conf and nginx-mempool.conf
The destination path was a file, should be a directory.
2021-07-18 22:54:47 +02:00
Miguel Medeiros
ad08c3a907 Add min-height to mempool-info-data. (#639) 2021-07-18 16:42:02 +03:00
Miguel Medeiros
08328cbf0f Bugfix: Overflow in difficulty adjustment component. (#638)
* Remove green progress bar.

* Fix itens overflow.
2021-07-18 15:47:47 +03:00
Miguel Medeiros
03ce592ab0 Fix time-span calculation. (#635) 2021-07-18 15:42:59 +03:00
softsimon
21db5a4102 Removing shortened date i18n strings. 2021-07-18 01:02:02 +03:00
softsimon
7234734056 Updated "mins per block" i18n string. 2021-07-17 18:23:50 +03:00
softsimon
7bf9d604b9 Reusing hard coded In~1 min with base date minute i18n string. 2021-07-17 16:36:21 +03:00
softsimon
08fd4a4835 Updating from transifex. 2021-07-17 15:37:34 +03:00
softsimon
9a715871c5 Updating i18n strings. 2021-07-17 14:59:10 +03:00
Miguel Medeiros
d405334109 UI/UX - New component for difficult adjustment. (#602)
* Add next difficulty blocks.
Add next difficulty target date.
Add next difficulty total progress.
Add ajustment difficulty avg min per block.

* Fix typo.

* Trigger difficulty calculation every 5 seconds.

* Add rxjs timer to difficultyEpoch.

* Fix pipe.

* Fix small bar position.

* Change i18n strings.

* Fix typo.

* Add time-until component.

* Speed up difficultyEpoch timer to 1000 ms.

* Fix values to 2 decimal places.

* Add title to fee and difficulty adjustment cards.

* Add title outside the card.

* Fix title to center position.

* Add other titles.

* Add new transalations strings.
Refactor time span component.

* Fix difficulty adjustment i18n string.
Fix duplicated i18n strings.
2021-07-17 14:58:16 +03:00
Miguel Medeiros
38aee1a897 UI/UX - Scroll by clicking on the pagination button. (#613)
* Add scrollIntoView when click on pagination.

* Add padding top.

* Fix access DOM from ViewChild.

* Fix scrolling position.

* Fix chrome and firefox compatibility.
2021-07-16 15:33:22 +03:00
Miguel Medeiros
52aea12f22 UI/UX - Fix arrow position. (#627)
* Fix arrow position.

* Add arrows from font-awesome.

* Add icons to bisq transfers.

* Fix icon size in mobile view.
2021-07-15 23:23:37 +03:00
softsimon
ecbd18087b Effective fee could go below 0 due to rounding error. (#623)
fixes #606
2021-07-14 22:42:48 +03:00
softsimon
d13e18a72a Fix for liquid network redirect in staging proxy. 2021-07-14 14:40:31 +03:00
softsimon
8749b8b0fa Updating @mempool/node-bitcoin to support new methods 2021-07-13 18:43:10 +03:00
softsimon
f2e0a71b01 Only display Trade Mark sign on english language. (#608) 2021-07-13 12:00:05 +03:00
softsimon
b4eea3dc72 Updating from transifex. 2021-07-13 11:49:46 +03:00
softsimon
cdfc03f352 Adding Hindi 2021-07-13 11:49:04 +03:00
Miguel Medeiros
2c5ccab77c UI/UX - Blocks not visible on the TV page. (#626)
* Fix blocks not visible on the TV page.

* Add e2e testing for tv screen.
2021-07-12 17:19:58 +03:00
softsimon
80d76ad1f4 Updating from transifex. 2021-07-11 22:06:14 +03:00
softsimon
9a2428ad79 Update i18n. 2021-07-10 18:20:15 +03:00
Miguel Medeiros
71cf41362f UI/UX - Add skeleton for blocks preload. (#615)
* Add skeleton for blocks preload.

* Add e2e testing for skeleton blocks preloader.

* Fix reduce mempool blocks to fit the screen.

* Fix variable naming.
2021-07-10 16:04:15 +03:00
Miguel Medeiros
652f88770e Fix mouse over tooltip width. (#614) 2021-07-07 22:20:17 +03:00
Miguel Medeiros
7de2cf89f4 Fix table overflow. (#612)
fixes #303
2021-07-07 15:22:25 +03:00
softsimon
d7a827ba7f Update from transifex. 2021-07-06 20:05:59 +03:00
Miguel Medeiros
9dae7020c8 Liquid support for unblinding transactions. (#588)
* Add docker file to generate wallycore wasm js lib.

* Add unblinded liquid transactions.

* Add background to unblided transactions.

* Check liquid network to try to unblind tx.

Ww don't want to try to unblind transactions in other networks.

Co-authored-by: Felipe Knorr Kuhn <100320+knorrium@users.noreply.github.com>

* Delete libwally-core dockerfile.

* Delete wallycore.html.

* Fix validation unblind tx.
Fix lint.
Add errorUnblinded.
Add vin.prevout unblinded tx.

* Add e2e testing to liquids unblinded tx.

* Load libwally.js dynamically.

* Fix table size.

* Add Blockstream License to libwally and wallycore.

Co-authored-by: Felipe Knorr Kuhn <100320+knorrium@users.noreply.github.com>
2021-07-06 19:56:32 +03:00
softsimon
3ae3df6722 Revert "Parse TXID, hash or address strings from search bar and allow searching for TXID:OUTPUT. (#578)" (#610)
This reverts commit 2e2e6aa01f.
2021-07-06 19:55:01 +03:00
softsimon
2e2e6aa01f Parse TXID, hash or address strings from search bar and allow searching for TXID:OUTPUT. (#578)
fixes #450
fixes #415
2021-07-06 19:43:18 +03:00
Miguel Medeiros
1e9f131a2a Fix pagination responsive layout. (#590)
* Fix pagination responsive css.

* Fix css title block transaction alignment.

* Add pagination responsive layout to bisq tx page.

* Add pagination responsive  to bisq blocks page.

* Fix pagination css - bisq txs page.

* Add e2e tests for bisq and mainnet pagination.
2021-07-05 22:28:56 +03:00
wiz
5197a15e31 Merge pull request #596 from knorrium/skip_cypress_on_docker
skip downloading the Cypress binary on Docker
2021-07-04 07:02:05 +09:00
wiz
1d29fad986 Bump version to v2.2.1-dev 2021-07-03 14:49:59 -07:00
wiz
eb6db6caf3 Bump version for v2.2.0 release 2021-07-03 14:36:10 -07:00
wiz
78c44eedbc Update from transifex 2021-07-03 14:34:47 -07:00
softsimon
b48a48a6be Updating from transifex. 2021-06-29 13:12:47 -04:00
softsimon
8e1aae1bbf Updating i18n messages. 2021-06-29 13:11:39 -04:00
Miguel Medeiros
807d4b0327 Fix tv only (#598)
* Remove TV Only container.
2021-06-29 13:10:15 -04:00
Miguel Medeiros
df588695ec Fix iinverse mempool graph also affect the TV view (#580) 2021-06-29 13:08:11 -04:00
softsimon
da13349b14 Reduce titles in Russian language to prevent overflows. 2021-06-27 12:16:59 -04:00
Felipe Knorr Kuhn
f6e4907128 skip downloading the Cypress binary on Docker 2021-06-26 16:48:57 -07:00
softsimon
6be733490f npm audit fix 2021-06-26 15:28:45 -04:00
wiz
fdf15c39a6 Merge pull request #595 from knorrium/fix_docker_builds
Improvements to local and Docker builds
2021-06-27 04:20:09 +09:00
softsimon
3b020046b7 Update i18n from transifex. 2021-06-26 14:45:05 -04:00
Felipe Knorr Kuhn
8574ee6edd push both tag and latest images at the same time 2021-06-26 10:29:08 -07:00
Felipe Knorr Kuhn
f937ea5745 fix missing backslash 2021-06-26 00:38:18 -07:00
Felipe Knorr Kuhn
741a020579 add missing semicolon 2021-06-26 00:29:45 -07:00
Felipe Knorr Kuhn
33d37a9b5b update generate-config to read the short sha from docker 2021-06-25 23:47:40 -07:00
Felipe Knorr Kuhn
446bdfebea update FE Dockerfile to read short sha 2021-06-25 23:47:19 -07:00
Felipe Knorr Kuhn
ca91afe45b update GHA workflow to expose the short sha to docker 2021-06-25 23:46:56 -07:00
softsimon
33a5be5a7d Lower scroll threshold to fix load more not triggering. (#576)
* Lower scroll threshold to fix load more not triggering.

fixes #575
2021-06-24 18:20:20 -04:00
softsimon
6a4eee3711 Updated from transifex. 2021-06-22 13:56:46 -04:00
softsimon
13931ceec6 Updated from transifex. 2021-06-22 10:57:44 -04:00
softsimon
0c418a9e33 Updated from transifex. 2021-06-22 10:57:26 -04:00
softsimon
6f8b95a17f Updating i18n. 2021-06-17 11:59:11 -05:00
softsimon
389c1d794c Updated from transifex. 2021-06-17 11:09:52 -05:00
softsimon
fca66f1b9f Updating i18n. 2021-06-17 11:09:07 -05:00
Felipe Knorr Kuhn
4c7d0cd2e5 Generate config on serve and updated git revision method (#587)
* run generate-config on serve

* write the config file only if settings have changed

* read the git commit hash from the current branch, not master

* git sha is now short by default, no need to trim on the about component
2021-06-16 13:47:05 -05:00
Felipe Knorr Kuhn
1016586992 fix the block viewer for liquid (#584) 2021-06-16 11:48:46 -05:00
wiz
38c8f3acb4 More tweaking of project description on About page 2021-06-16 00:19:56 -05:00
wiz
962023fbc4 Update project description on About page 2021-06-15 23:56:49 -05:00
wiz
b4f8bb2f48 Add trademark symbols and trademark notice to About page 2021-06-15 23:23:26 -05:00
Felipe Knorr Kuhn
c26461fada Route json assets to prod (#585)
* update proxy settings to route json assets to prod
2021-06-15 17:32:36 -05:00
softsimon
1a996e1640 Adding missing space. 2021-06-13 17:56:24 -05:00
softsimon
c80532b420 Bumping mempool.js lib. 2021-06-13 15:39:40 -05:00
wiz
74c49b9ae7 Enable i18n locale for Russian (ru) 2021-06-13 15:05:21 -05:00
softsimon
3f03c9c2b6 Swap location of API doc tabs. 2021-06-12 17:18:59 -05:00
softsimon
f00e727e68 Updating i18n from transifex. 2021-06-11 23:27:29 -05:00
Miguel Medeiros
4338dd6c3f Fix transaction title breaks row on some languages (#570) 2021-06-11 23:16:45 -05:00
Felipe Knorr Kuhn
8385c50605 Update test dependencies (#572)
* move Cypress to the optionalDependencies section

* remove protractor

* remove dead protractor test files
2021-06-11 23:06:55 -05:00
softsimon
93c4b1caf1 Fix for missing overpaid fees tag on confirmed txs
fixes #483
2021-06-11 19:30:33 -05:00
softsimon
49810b6a47 Added new i18n strings 2021-06-11 14:54:57 -05:00
softsimon
28d685a661 Updated i18n from transifex 2021-06-11 10:58:54 -05:00
softsimon
95d3d0feaf Bisq transactions was listed in the wrong order.
fixes #566
2021-06-11 10:55:13 -05:00
softsimon
cbc5d67f62 Update README.md 2021-06-10 16:18:26 -05:00
softsimon
87575bc0a2 Add v2.2.0 screen shot 2021-06-10 16:18:09 -05:00
softsimon
8f74ef58f8 i18n fixes. 2021-06-10 15:38:15 -05:00
softsimon
2475c67d5b Use default proxy config for local proxy conf. 2021-06-10 09:55:19 -05:00
softsimon
bf45bf7b39 Update i18n from transifex 2021-06-10 09:52:13 -05:00
Miguel Medeiros
a1f0417997 Sponsor page (#560)
* Refactor sponsors page layout.
Remove add to t-shirts.

* Remove tshirt promo.

* Refactor sponsors page layout.
Remove add to t-shirts.

* Remove bootstrap classes and inline styles.
Add new classes to thanks page.

Co-authored-by: softsimon <softsimon@protonmail.com>
2021-06-09 18:36:34 -05:00
Miguel Medeiros
237f265aab Refactor about page layout. (#559)
* Refactor about page layout.

* Fix loading sponsors layout.
Fix container margins.
Fix sponsor image src.
2021-06-09 18:35:54 -05:00
softsimon
0087700aa5 Adding missing i18n strings on Bisq. 2021-06-09 14:09:25 -05:00
softsimon
861344ed6d Update i18n from transifex. 2021-06-09 13:35:07 -05:00
softsimon
9e343b346a Update i18n. 2021-06-08 22:44:52 -05:00
softsimon
e857dbc874 I18n space fix. 2021-06-08 22:38:48 -05:00
softsimon
a10cd09ba8 I18n space fix. 2021-06-08 22:37:23 -05:00
softsimon
f30777934f Remove tshirt promo. 2021-06-08 21:42:48 -05:00
Miguel Medeiros
4f6bf297bf Fix loading icon position at graph page. (#558) 2021-06-08 00:29:25 -04:00
Miguel Medeiros
0121052f0b Fix lint errors. (#556) 2021-06-07 15:48:27 -04:00
Felipe Knorr Kuhn
1bd0c40c15 New e2e test suite (#555)
* add @cypress/schematic as a dev dependency

* replace protractor with cypress

* remove the boilerplate test

* add the cypress-wait-until helper library

* add cypress-wait-until to all tests

* add signet to stg proxy config

* add proxy config for production

* add environment configs to angular.json

* update e2e target to use the production proxy

* update serve and start scripts to use the new environment config

* add the concurrently lib to the dev dependencies

* fix missing import

* ignore videos and screenshots saved by the e2e suite

* add fixtures for the tests

* update cypress npm scripts to use concurrently

* add some e2e tests
2021-06-07 10:36:41 -04:00
softsimon
2ee96cae44 Remove duplicate i18n string sponsor 2021-06-06 17:16:39 -04:00
softsimon
28c8d7dba0 Updated i18n 2021-06-06 16:56:08 -04:00
softsimon
9b05ecedc6 Address page: Display load more button on load error. (#542)
fixes #440
2021-06-06 16:07:45 -04:00
softsimon
8fbd273733 Empty Bisq blocks was missing. (#541)
fixes #539
2021-06-06 16:07:26 -04:00
Miguel Medeiros
dec8ae2930 Dashboard layout reviewed. (#550)
* Fix mempool-info-data item margin-bottom.

* Remove unecessary bootstrap classes.

* Fix lint errors.

* Fix and remove css classes.

* Add css class to Terms of Service.
2021-06-06 16:07:04 -04:00
Miguel Medeiros
353b0e8729 New API docummentation. (#544)
* Install hljs package.

* Add highlight.js stylesheet and js to index.html.

* Add new instructions for API documentation.

* Add network value to code-template component.

* Add curl examples.

* Fix tab order of bisq api page.

* Add esmodules instalation instructions.
Add external links to repositories.

* Add self-hosted hljs styles.

* Add response code examples.
Add dynamic networks to curl examples.
Remove reponse code box if not needed.

* Self hosted highlight.min.js.

* Bumping "ws" dependency to fix vulnerability.

* npm audit fix

* npm audit fix

* Remove Hightlight.js dependency.
Add new style to code-template-component.

* Remove hljs css.

* Change NgbModule and NgbAccordionModule  to shared

* Fix NgbAccordionModule import.
2021-06-06 16:06:56 -04:00
softsimon
71bfcea8a6 npm audit fix 2021-05-31 19:03:10 -04:00
softsimon
c54c30209e npm audit fix 2021-05-31 19:02:39 -04:00
softsimon
abc6b1519e Bumping "ws" dependency to fix vulnerability. 2021-05-31 18:49:19 -04:00
Miguel Medeiros
4dcda2cf47 Invert graph legends order. (#532)
* Invert graph legends order.

* Reorder graph legends if inverted-graph is true.
2021-05-23 13:51:29 +04:00
Miguel Medeiros
d055fabfeb Fix innerHTML element of status view component. (#537) 2021-05-23 02:16:23 +04:00
Miguel Medeiros
dbb365f5e3 Align loading component in the center. (#535)
* Align loading component in the center.

* Change height of loading component.
2021-05-22 18:57:15 +04:00
Miguel Medeiros
efb5deda43 Fix missing whitespace linting. (#534) 2021-05-21 19:03:18 +04:00
softsimon
a4cd6450e3 Fix for race condition causing cpfp fetching not working. (#533)
fixes #505
2021-05-21 17:06:53 +04:00
softsimon
edad15da0d Upgrading mempool.js 2021-05-21 03:30:39 +04:00
Miguel Medeiros
e70fd0045d Fix tx-list load is being constantly triggered. (#531) 2021-05-20 02:03:59 +04:00
Miguel Medeiros
794bc99cb6 Change chart-holder width. (#530) 2021-05-20 00:44:21 +04:00
Miguel Medeiros
cd1ec53af0 Align scriptmessage text to the left. (#529)
* Align scriptmessage text to the left.
* Script message box only fills the text width.
2021-05-19 01:16:47 +04:00
Miguel Medeiros
3e435d1394 Fix vertical align Graph. (#528)
* Fix graph component vertical css query.

* Fix chart-holder padding-top.
2021-05-19 01:06:51 +04:00
Miguel Medeiros
50b94f8b72 Fix TV View graph height. (#527)
* Fix graph alignment.
Only show the graph on desktop resolutions.

* Fix mempool-info-chart chart alignment.
2021-05-18 23:59:48 +04:00
softsimon
f6f5b69487 Sponsor t-shirts. 2021-05-18 23:00:07 +04:00
wiz
66b27b9dd0 Merge pull request #524 from mempool/simon/sponsor-page
New separate sponsorship page
2021-05-19 00:50:14 +09:00
Miguel Medeiros
71fa2d67cb Fix rbf alert css. (#525) 2021-05-18 18:56:42 +04:00
Miguel Medeiros
5cd2cfa097 FIX unify the units css. (#499)
* FIX unify the units css.
* Fix units css font-size.
2021-05-18 18:20:17 +04:00
softsimon
cfd13b3655 New separate sponsorship page. 2021-05-18 13:23:39 +04:00
wiz
3ffa60db1f Merge pull request #517 from mempool/simon/bisq-address-prefix-search
Handle the 'B' prefix in the search bar autocomplete on /bisq
2021-05-14 03:42:15 +09:00
softsimon
4442964124 Updated regex to accept bisq-addresses. 2021-05-13 21:56:57 +04:00
wiz
cb034020ef Merge pull request #521 from mempool/simon/bisq-price-coloring
Bisq dashboard: Change color between red/green when price changes
2021-05-14 00:53:15 +09:00
softsimon
5aa57d6df9 Bisq dashboard: Change color between red/green when price changes 2021-05-13 19:23:43 +04:00
softsimon
c1a79e3a33 Handle the 'B' prefix in the search bar autocomplete on /bisq
refs #510
2021-05-13 03:01:47 +04:00
wiz
bbd21c9401 Merge pull request #511 from knorrium/improve_scrolling_between_routes
Improve scrolling between routes
2021-05-13 02:03:14 +09:00
wiz
ad22f9cb46 Merge pull request #515 from mempool/simon/round-up-fee-estimates
Round up fee estimations
2021-05-13 01:42:37 +09:00
softsimon
939955fb84 Round up fee estimations 2021-05-12 20:13:55 +04:00
softsimon
63e67dba38 Bisq markets: Add terms of service 2021-05-12 16:07:25 +04:00
softsimon
8a1230623e Adding missing icon import. 2021-05-12 15:57:46 +04:00
softsimon
f20c73af7b Update fiat price every minute instead of every hour. 2021-05-12 15:09:48 +04:00
softsimon
12c99b86b7 Bisq markets: Display terms of service and language selector (except on official markets).
refs #510
2021-05-12 14:51:55 +04:00
softsimon
934dd67384 Updated i18n from transifex. 2021-05-11 15:31:42 +04:00
softsimon
870bd54b38 Updated i18n. 2021-05-11 15:29:03 +04:00
softsimon
89300dae98 Bisq markets: Fix for graph not updating when changing window
refs #510
2021-05-11 14:55:45 +04:00
softsimon
482a891cec Bisq markets: Swapping price locations 2021-05-11 14:37:25 +04:00
softsimon
098ab7d3a7 Bisq market symlinks fix. 2021-05-11 13:25:16 +04:00
softsimon
147d44d14b npm audit fix 2021-05-11 12:43:19 +04:00
Felipe Knorr Kuhn
8ccdf3973c set toggleShowDetails() to scroll into the viewport using anchors 2021-05-10 22:18:30 -07:00
wiz
c09eb651ef Add production/nginx-bisq.conf for bisq.markets usage 2021-05-11 14:18:25 +09:00
Felipe Knorr Kuhn
ac91d814d6 add anchors to the block component 2021-05-10 22:16:42 -07:00
Felipe Knorr Kuhn
be2f024da1 enable scroll position restoration and anchor scrolling 2021-05-10 22:15:54 -07:00
wiz
f137f45cef Merge pull request #508 from mempool/simon/bisq-new-dashboard
New Bisq Markets Dashboard Design
2021-05-11 13:40:32 +09:00
softsimon
90784deacc New Bisq Markets Dashboard Design
fixes #476
2021-05-11 04:15:11 +04:00
softsimon
8ed664e3a9 Update translations from transifex. 2021-05-08 01:12:57 +04:00
softsimon
17b6916f31 Update i18n messages. 2021-05-08 01:11:05 +04:00
Miguel Medeiros
b778d96910 Fix OP_RETURN truncated text. (#502)
* Fix OP_RETURN truncated text.

* Fix scriptmessage width on desktop media queries
2021-05-08 00:36:35 +04:00
wiz
5b2eb16d1c Merge pull request #498 from MiguelMedeiros/op_return
Fix Coinbase and OP_RETURN truncated text.
2021-05-07 00:00:12 +09:00
wiz
af61357ced Merge pull request #478 from mempool/simon/address-page-error-localization
Localize electrum limit error.
2021-05-06 23:04:01 +09:00
wiz
f281e84396 Disable caching of electrs endpoints in production/nginx.conf 2021-05-06 21:20:13 +09:00
Miguel Medeiros
0dc255edf9 Fix OP_RETURN css width. 2021-05-06 09:00:33 -03:00
Miguel Medeiros
2f8f3ca2e9 New concept for dashboard layout components. (#469)
* New concept for dashboard layout components.

* Align dashboard componentes.

* Add divider to fee box component.

* Remove TV icon from mobile and tablet queries.

* Fix form input overflow.

* Add responsive css to statistic component.

* Add responsive css to about page.

* Add global padding bottom.

* Fix graph page styles.

* Add responsive chart and scrollable table.

* Fix mobile css query for navbar menus.

* Fix pagination responsive css.

* Add CSS animated logo.

* Revert "Add CSS animated logo."

This reverts commit 92af38294c0d4fe815a801b37635cde7f8ee1ced.

* Add extra skeleton to fee-box-component.

* Fix latest-blocks and latest-transactions table css.

* Adapt Bisq pages to responsive layout.

* Remove parenthesis from fiat amout.
Fiat prive break not break on desktop.
Transaction ID align left.
Fee box skeleton width resize.

* Fix mobile table text-size.

* Fix dashboard mempool info mobile alignment.
2021-05-03 17:11:30 +04:00
softsimon
39bb93970b Lower height where taproot signaling cal be visible. 2021-05-01 21:46:49 +04:00
softsimon
72d01a0b67 Improve taproot detection. Only display when detected. 2021-05-01 21:03:01 +04:00
softsimon
0b4da88802 Hide taproot signalling until signalling starts. 2021-05-01 04:06:45 +04:00
softsimon
d2fe000ad0 Display block details and taproot signaling. 2021-05-01 03:55:02 +04:00
softsimon
dcedc8a5ff Localize electrum limit error.
fixes #442
2021-04-27 14:21:33 +04:00
wiz
0d03a9e6cc Send HTTP header Vary: Cookie to prevent localization cache bug
Fixes #477
2021-04-27 19:00:33 +09:00
wiz
24b7acdc60 Merge pull request #475 from mempool/simon/difficulty-adjustment-calc-fix
Fixing incorrect difficulty adjustment call
2021-04-27 17:50:43 +09:00
wiz
1000f4dd4d Merge pull request #474 from mempool/simon/bitcoind-tx-push-break-fix
Fix crash issues related to new unconfirmed transactions in bitcoind …
2021-04-27 17:44:19 +09:00
softsimon
d5dba9128e Fixing incorrect difficulty adjustment call
fixes #471
2021-04-27 12:20:11 +04:00
softsimon
84b0375c0c Fix crash issues related to new unconfirmed transactions in bitcoind mode.
fixes #391
2021-04-27 02:13:48 +04:00
softsimon
bf23a6649c Updating from transifex. 2021-04-26 04:05:55 +04:00
softsimon
aea35d4c86 i18n update 2021-04-26 04:03:33 +04:00
softsimon
52b7efdd53 Updated transifex. 2021-04-26 03:45:14 +04:00
wiz
492abad7a6 Fix a few Bisq strings, update transifex source strings 2021-04-26 07:59:15 +09:00
softsimon
f566eae471 Fixed api docs typo. 2021-04-26 02:40:30 +04:00
wiz
2f2be5c64b Capitalize some strings in Bisq components, update i18n 2021-04-26 07:30:34 +09:00
wiz
5d1af0a86e Merge pull request #381 from mempool/simon/bisq-dashboard
Bisq dashboard
2021-04-26 07:17:03 +09:00
softsimon
5cd5280b21 Updated i18n 2021-04-26 01:49:58 +04:00
softsimon
3a957ece05 Merge branch 'master' into simon/bisq-dashboard
# Conflicts:
#	frontend/src/locale/messages.xlf
2021-04-26 01:41:07 +04:00
wiz
3ead05fa51 Add missing i18n tags for various strings, fixes #473 2021-04-26 06:35:56 +09:00
wiz
8a838cd4dc Credit @maciejsoltysiak as translator for Polish 2021-04-26 06:27:51 +09:00
wiz
b05f731332 Update translated strings from Transifex 2021-04-26 06:17:59 +09:00
wiz
06fd821bf8 Update translated strings from Transifex 2021-04-26 05:44:00 +09:00
wiz
6dbfcc9d1a Enable i18n for Polish language 2021-04-26 05:43:47 +09:00
softsimon
001bddd529 Bisq Markets i18n 2021-04-25 22:52:11 +04:00
softsimon
56518b9655 Updated titles 2021-04-25 19:40:43 +04:00
softsimon
da050ee3dc Swap BTC/Fiat columns. 2021-04-25 19:02:26 +04:00
softsimon
5878a2e631 Unified Bisq config 2021-04-25 02:38:46 +04:00
softsimon
c1fc08196b Add whitespaces to missing data points. 2021-04-25 02:07:29 +04:00
softsimon
95a80157a7 Hide latest altcoin trades when not using official bisq markets. 2021-04-24 20:33:56 +04:00
softsimon
165aa6eee2 Don't hide API docs on mobile. 2021-04-23 15:44:01 +04:00
softsimon
b8fe7b621c Merge branch 'master' into simon/bisq-dashboard
# Conflicts:
#	frontend/package-lock.json
#	frontend/src/app/components/master-page/master-page.component.html
2021-04-23 15:35:35 +04:00
softsimon
04ec5e9564 Sort table by number of trades as default sort option, make other columns sortable 2021-04-23 15:09:51 +04:00
softsimon
2d4dff6de8 Display 100 latest trades. 2021-04-23 03:49:55 +04:00
softsimon
5cb98b9813 Make unique URLs for graph timespans 2021-04-21 22:12:35 +04:00
softsimon
d4508bd876 Add loading spinners. 2021-04-21 20:22:34 +04:00
wiz
6ccac1df79 Merge pull request #467 from knorrium/fix_infinite_scrolling
fix infinite scrolling by not using body as the container
2021-04-20 16:47:50 +09:00
Felipe Knorr Kuhn
b38fc824e6 fix infinite scrolling by not using body as the container 2021-04-19 23:48:33 -07:00
softsimon
cdbe90c182 Only enable statistics service from node master process.
fixes #460
2021-04-19 21:39:30 +04:00
softsimon
6b5b80f866 Update chart colors. 2021-04-19 17:39:47 +04:00
Miguel Medeiros
d74677628b New UI for responsive navbar. (#458)
New UI for responsive navbar.
fixes #458
2021-04-19 17:01:04 +04:00
softsimon
f0d46d6ed8 Don't reload after setting graph preference setting.
refs #365
2021-04-19 10:50:24 +04:00
Felipe Knorr Kuhn
220d9afd97 persist graph window preference between reloads (#456)
Persist graph window preference between reloads
fixes #365
2021-04-19 10:17:16 +04:00
wiz
dfd88a7ff9 Merge pull request #454 from knorrium/fix_ios_native_scrolling
fix native scrolling on iOS devices
2021-04-18 19:26:27 +09:00
wiz
eec36ae4e6 Merge pull request #453 from knorrium/bind_server_address 2021-04-18 08:16:56 +09:00
Felipe Knorr Kuhn
0a07a16650 fix native scrolling on iOS devices 2021-04-17 16:11:34 -07:00
Felipe Knorr Kuhn
e62ee72149 bind the server to 0.0.0.0 to allow it to be reachable by other devices 2021-04-17 15:53:22 -07:00
softsimon
117f5410d7 Merge pull request #452 from knorrium/stg_frontend_config
add new configuration and targets to point the frontend to staging
2021-04-18 02:10:09 +04:00
Felipe Knorr Kuhn
f6ea45b61f add new configuration and targets to point the frontend to staging 2021-04-17 14:52:16 -07:00
wiz
90b06833ba Rename frontend npm dep @mempool/mempool-js to @mempool/mempool.js 2021-04-17 12:58:27 +09:00
wiz
221fccf3bc Merge pull request #449 from mempool/simon/syslog-config
Syslog is now configurable with minimum priority and facility option.
2021-04-16 02:54:22 +09:00
wiz
3740980007 Update Exodus logo with new SVG 2021-04-16 02:29:06 +09:00
softsimon
d1b53f4c3a Syslog priority comparison fix. 2021-04-15 21:16:56 +04:00
wiz
d51ea54ab9 Add production FreeBSD tuning parameters to increase network buffers 2021-04-16 00:12:29 +09:00
wiz
3300f0e8d3 Set production backend config "CLEAR_PROTECTION_MINUTES": 5 2021-04-15 21:44:38 +09:00
softsimon
cd1273981d Syslog is now configurable with minimum priority and facility option.
fixes #135
2021-04-15 16:04:09 +04:00
softsimon
fd0ffd2a39 Upgrading mempool-js to v2.3. 2021-04-15 00:57:10 +04:00
wiz
d60bc10941 Update Square Crypto logo with SVG image 2021-04-14 05:04:02 +09:00
wiz
5085e0c420 Add Exodus as Enterprise Sponsor on About page 2021-04-14 04:55:58 +09:00
softsimon
3dbddedf91 Remove 'v' from version. 2021-04-13 18:12:32 +04:00
softsimon
e255bec7ad Updating versions to v2.2.0-dev 2021-04-13 16:53:42 +04:00
softsimon
cbe79d7051 Show backend info at the bottom. Removing frontend hostname. Re-adding frontend version and commit on top. JS error fix. 2021-04-13 11:51:55 +04:00
softsimon
344d1247bd Updated package.json. 2021-04-13 11:30:53 +04:00
wiz
089bb38e6a Change log priority for 'The mempool is now in sync!' message to NOTICE 2021-04-13 14:03:36 +09:00
wiz
2077126064 Merge pull request #447 from mempool/simon/frontend-commit-hash-hostname
Backend and frontend commit, version and hostname displayed on the about page
2021-04-13 13:58:59 +09:00
softsimon
fcf7955d63 Merge branch 'master' into simon/bisq-dashboard
# Conflicts:
#	frontend/package-lock.json
#	frontend/package.json
2021-04-12 22:22:50 +04:00
softsimon
7a4ad0ee2f Including gitCommit and version in frontend build. Backend now sending a backendInfo object containing commit, version and hostname. All printed on About page. 2021-04-12 22:17:13 +04:00
wiz
4bb68d0163 Update mempool.space og/twitter preview image with 5 block style logo 2021-04-13 00:13:58 +09:00
wiz
f80a11d1f4 Increase section spacing on About page 2021-04-13 00:10:15 +09:00
wiz
f61e3d8cec Merge pull request #445 from mempool/simon/disk-cache-save-error
Only allow one disk cache saving simultaneously, and allow for partia…
2021-04-12 18:40:32 +09:00
softsimon
7fab42baa5 Only allow one disk cache saving simultaneously, and allow for partially written cache files.
fixes #444
2021-04-12 13:21:49 +04:00
softsimon
4ab4581393 Fix for effective fee rate calculation bug. 2021-04-12 13:02:31 +04:00
wiz
4c8d261da0 Merge pull request #441 from knorrium/fix_address_explorer_typo 2021-04-11 13:34:28 +09:00
Felipe Knorr Kuhn
88c9fd0c7b fix typo on 413/405 error message on the address explorer 2021-04-10 21:04:30 -07:00
softsimon
f1c5f83412 Don't round variables in code, only in templates. 2021-04-10 23:23:05 +04:00
softsimon
2d9b9b5c5d When filtering out lower fee parents, compare with effective fee instead of base fee to include a CPFP chain of transactions. 2021-04-10 21:26:05 +04:00
softsimon
c7c4895eab fixes #438 2021-04-10 20:59:27 +04:00
softsimon
979b870c9c Bump mempool-js version to 2.2.1 2021-04-10 18:58:20 +04:00
softsimon
041aa2a163 Build mempool-js as standalone. 2021-04-10 18:51:13 +04:00
wiz
1bb990b796 Merge pull request #436 from MiguelMedeiros/bugfix/project-contributor-alignment
FIX: align project contributor handle text.
2021-04-10 19:44:26 +09:00
wiz
a6e7e1966e Merge pull request #437 from mempool/simon/contributors-proxy
Proxy contributor requests.
2021-04-10 19:39:26 +09:00
softsimon
db263b8db4 Proxy contributor requests. 2021-04-10 11:33:01 +04:00
Miguel Medeiros
0289620262 FIX: align project contributor handle text. 2021-04-09 17:07:11 -03:00
wiz
d8ef0cd3ac Add BlueWallet as Community Integration on About page
Also try to fix sort order of integrations:
* P2P Exchange Networks
* Raspberry Pi distros
* Onchain wallets
* Lightning wallets
* Watch-only wallets
2021-04-10 02:32:27 +09:00
wiz
68be897379 Fix typo in API documentation for /api/block/:hash/raw method 2021-04-09 21:59:21 +09:00
wiz
2016d4bca6 Merge pull request #433 from mempool/simon/build-mempool-js
Build mempool-js to root www folder.
2021-04-09 12:01:30 +09:00
wiz
0c2d88960c Publish mempool-js output as mempool.js instead of .min.js 2021-04-09 12:01:21 +09:00
softsimon
e3e1cddd2f Build mempool-js to root www folder. 2021-04-09 01:22:24 +04:00
wiz
00b564149d Add Square as Enterprise Sponsor on About page 2021-04-08 00:05:11 +09:00
wiz
dee614f6ac Merge pull request #432 from mempool/simon/angular-11-upgrade
Upgrading all front and backend dependencies, including Angular 11.
2021-04-07 23:31:30 +09:00
wiz
896a4cbcfc Set frontend tsconfig to target es2020 2021-04-07 22:40:13 +09:00
softsimon
e731077077 extractCss is deprecated and always defaults to true. 2021-04-07 17:36:20 +04:00
softsimon
4a907f9dc6 Upgrading all front and backend dependencies, including Angular 11.
fixes #429
2021-04-07 16:18:55 +04:00
wiz
b0baf6aa0d Merge pull request #422 from mempool/simon/corerpcminfee-catcher
Catch getMempoolInfo errors gracefully to not break general main loop
2021-04-06 16:08:20 +09:00
softsimon
8dddfe38a9 Updating getMempoolInfo defaults. 2021-04-06 11:07:38 +04:00
wiz
0f9f905fd1 Merge pull request #419 from mempool/simon/cpfp-duplicate-fix
Fix for duplicate cpfp ancestors.
2021-04-06 15:58:58 +09:00
wiz
bc8e3109fa Merge pull request #427 from mempool/simon/cpfp-ancestors-fee-bug
Bugfix: Ancestors are not able to increase fee of descendants
2021-04-06 15:52:46 +09:00
softsimon
56b0eab9b4 Bugfix: Ancestors are not able to increase fee of descendants
fixes #426
2021-04-06 10:41:13 +04:00
softsimon
5914d99283 Bugfix: Ancestors are not able to increase fee of descendants
fixes #426
2021-04-05 23:45:47 +04:00
softsimon
d942cb48a5 Catch getMempoolInfo errors gracefully to not break general main loop
fixes #411
2021-04-02 11:47:13 +04:00
softsimon
4d0429b786 Fix for duplicate cpfp ancestors.
fixes #414
2021-04-02 00:30:51 +04:00
wiz
2b1c511611 Merge pull request #410 from mempool/wiz/dual-license-under-agplv3-and-gplv3
Dual-license mempool under both the GNU AGPLv3 and GPLv3 licenses
2021-04-02 00:15:59 +09:00
wiz
8a86b63693 Tweak margins and layout spacing on About page 2021-04-01 16:42:37 +09:00
softsimon
2a2c1a6291 Increase space between logos and titles. 2021-03-31 22:49:55 +09:00
wiz
ce1860b7d1 Add Gemini as an Enterprise Sponsor on About page 2021-03-31 22:49:51 +09:00
softsimon
37e01c5e91 Always display one decimal on fee rate for consistency. 2021-03-31 15:43:23 +04:00
wiz
0ff05d5551 Update legal notices for dual-licensed AGPLv3 and GPLv3 on About page 2021-03-28 00:07:03 +09:00
wiz
9b428821f6 Dual-license mempool under both the GNU AGPLv3 and GNU GPLv3 licenses
A few weeks ago in #388, we changed the license for the mempool project
from MIT+CC to AGPLv3. This was generally met with very positive
feedback from the Bitcoin community. However, a few very large
enterprise organizations that love the mempool project are now no longer
able to use our code, since apparently some enterprise organizations
have an internal policy of not using AGPL licensed software.

Since the AGPLv3 license is compatible with the GPLv3 license in various
ways, adding the GPLv3 as an alternative second license for the project
seems like a reasonable way to retain most of the copyleft properties of
our current AGPLv3 license, while also keeping the community happy and
allowing them GPLv3 as another choice if they are prohibited from using
the AGPL internally.

Therefore, I propose to add GPLv3 as an alternative license for the
mempool open source project in this PR. If you are okay with this,
please ACK with "I hereby re-license my contributions to the mempool
open source project under both the GNU AGPLv3 and GPLv3 licenses"

- [ ] @softsimon
- [ ] @wiz
- [ ] @bguillaumat
- [ ] @TechMiX
- [ ] @rbrooklyn
- [ ] @junderw
- [ ] @andrerfneves
- [ ] @andrewtoth
- [ ] @6102bitcoin
- [ ] @Czino
- [ ] @devinbileck
- [ ] @knorrium
- [ ] @jambolo
- [ ] @lucasmoten
- [ ] @fiatjaf
- [ ] @pox
- [ ] @RandyMcMillan
- [ ] @timlucmiptev
2021-03-27 20:02:53 +09:00
wiz
21bb879fc1 Add link to Muun Wallet on About page 2021-03-27 13:12:47 +09:00
wiz
8a97880cdb Merge pull request #408 from knorrium/fix_electrum_dockerfile
fixes to the electrum Dockerfile
2021-03-25 12:45:56 +09:00
Felipe Knorr Kuhn
ca267744a6 fixes to the electrum Dockerfile 2021-03-24 16:24:04 -07:00
wiz
a4253301dc Merge pull request #403 from bitcoincore-dev/makefile
docker: add Makefiles for easier docker deploy
2021-03-24 22:37:18 +09:00
randymcmillan
402c5e3444 deploy: add Makefile for easier docker deploy 2021-03-23 19:57:04 -04:00
softsimon
f12eb333d2 Reuse same i18n string for fee warning tooltip. 2021-03-23 05:18:08 +07:00
wiz
a0b50d7735 Merge pull request #404 from mempool/simon/cpfp-frontend
Visualize the CPFP transactions.
2021-03-22 21:30:00 +09:00
softsimon
3967ce0854 Fix: Compare with tx.feePerVsize to determine if modified fee is the same.
refs #401
2021-03-22 18:24:51 +07:00
softsimon
ed55e86a9d Visualize the CPFP transactions.
fixes #401
2021-03-22 18:04:50 +07:00
softsimon
c93adba276 Merge pull request #402 from mempool/simon/mempool-lazy-delete
Flag transactions for lazy deletion.
2021-03-21 14:58:22 +07:00
softsimon
1ae002385d Merge branch 'simon/cpfp-frontend' into simon/bisq-dashboard
* simon/cpfp-frontend: (46 commits)
  Bugfix: Don't extend already extended transactions to not override the firstSeen property. fixes #390
  Shuffle mempool transactions before saving disk cache. (#398)
  Adding missing return after expressjs response.
  CPFP support (#395)
  Round sat/vB in fee rating tooltip. fixes #364
  Add the GNU AGPLv3 logo to About page
  Update package.json license tags
  Add recommended fee percentile config (#394)
  Fix typo in README (#392)
  Fix icon for Specter Wallet on About page
  Add link to Specter Wallet on our About page
  Add link to WARden Portfolio app as Community Integration on About page
  Delete MIT+CC license from Terms of Service, add AGPLv3 to About page
  Change mempool project license to GNU Affero General Public License v3
  Lower volume for sound effects (#385)
  Improve grammar, layout, and formatting of Terms of Service page
  Display all Project Contributors on About page using GitHub API (#382)
  Modify nginx.conf to cache HTML for 10m and static resources for 1h
  Proxy /api/v1/contributors from mempool.space, also fix HTTP headers
  Add link to Bisq's GitHub repo on About page
  ...
2021-03-21 06:12:41 +07:00
softsimon
e05ca7d691 Flag transactions for lazy deletion.
fixes #400
2021-03-21 06:06:03 +07:00
softsimon
dc36bfcfe4 Adding Bisq markets logo. 2021-03-21 02:40:37 +07:00
softsimon
e688948e42 Bugfix: Don't extend already extended transactions to not override the firstSeen property.
fixes #390
2021-03-19 19:10:11 +07:00
softsimon
5148de8f17 Shuffle mempool transactions before saving disk cache. (#398)
fixes #397
2021-03-19 13:47:37 +07:00
softsimon
6f1cdd0c8b Adding missing return after expressjs response. 2021-03-18 23:53:39 +07:00
softsimon
d3c53c7406 CPFP support (#395)
* CPFP support.

fixes #5
fixes #353
fixes #360

* Use effectiveFeePerVsize for mempool statistics.

* Renaming endpoint cpfp-info to just cpfp.

* Renaming decended to BestDescendant.

* Updating language file with new strings.
2021-03-18 23:47:40 +07:00
softsimon
b2d08d69cf Round sat/vB in fee rating tooltip.
fixes #364
2021-03-18 19:18:59 +07:00
wiz
b85c2a6e0f Merge pull request #396 from mempool/wiz/add-agpl-logo-to-about-page
Add the GNU AGPLv3 logo to About page
2021-03-18 17:48:32 +09:00
wiz
f1f847a9f8 Add the GNU AGPLv3 logo to About page 2021-03-18 17:44:25 +09:00
wiz
8b5d3dabe7 Update package.json license tags 2021-03-18 16:30:10 +09:00
andrewtoth
ac4588cdab Add recommended fee percentile config (#394) 2021-03-18 12:52:46 +07:00
andrewtoth
baa75b77a7 Fix typo in README (#392) 2021-03-18 12:46:16 +07:00
wiz
f2a08444fe Fix icon for Specter Wallet on About page 2021-03-18 01:14:25 +09:00
wiz
c866fbf6df Add link to Specter Wallet on our About page 2021-03-17 22:23:29 +09:00
softsimon
da77dbece1 Bisq markets: General trading volume graph. 2021-03-16 01:17:40 +07:00
wiz
6a07eb0d91 Add link to WARden Portfolio app as Community Integration on About page 2021-03-16 01:56:19 +09:00
wiz
057a96001d Merge pull request #388 from mempool/wiz/change-license-to-agplv3
Change mempool project license to GNU Affero General Public License v3
2021-03-15 06:26:09 +09:00
wiz
f173b17b90 Delete MIT+CC license from Terms of Service, add AGPLv3 to About page 2021-03-15 05:45:53 +09:00
softsimon
8e29a4cefd Bisq markets: Titles 2021-03-14 23:24:06 +07:00
wiz
6b47895aec Change mempool project license to GNU Affero General Public License v3
The files contained in this source code repository are currently
released as "open source" under the terms of the [MIT license](https://opensource.org/licenses/MIT),
with the additional protections of the [Commons Clause License Condition v1](https://commonsclause.com/),
in order to restrict monetization of the mempool app, with the
intended result of mempool remaining free software (as in free
beer) for the Bitcoin community.

However, because of the Commons Clause being added to our license terms,
The Mempool Open Source Project cannot formally be considered as [Free
and open-source software (FOSS)](https://en.wikipedia.org/wiki/Free_and_open-source_software),
according to the generally accepted definition of ["What is free
software?"](https://www.gnu.org/philosophy/free-sw.en.html), and this
has drawn some criticism from the Bitcoin open source community.

Therefore, in order to make The Mempool Open Source Project truly FOSS,
I hereby propose to change our project's license to the [GNU Affero
General Public License v3](https://www.gnu.org/licenses/agpl-3.0.html),
which seems most suitable for a web application. While this won't keep
the mempool free as in free beer, it will keep mempool free as in free
speech, which is what actually matters.

Here is [the TL;DR of AGPLv3](https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)):
> The AGPL license differs from the other GNU licenses in that it was
> built for network software. You can distribute modified versions if
> you keep track of the changes and the date you made them. As per usual
> with GNU licenses, you must license derivatives under AGPL. It
> provides the same restrictions and freedoms as the GPLv3 but with an
> additional clause which makes it so that source code must be
> distributed along with web publication. Since web sites and services
> are never distributed in the traditional sense, the AGPL is the GPL of
> the web.

Could all contributors to The Mempool Open Source Project please ACK
this PR?  @softsimon @wiz @bguillaumat @TechMiX @junderw @andrerfneves
@pox @jambolo @6102bitcoin @devinbileck @fiatjaf @timlucmiptev @Czino
@lucasmoten
2021-03-15 00:59:31 +09:00
softsimon
146fcfc16d Bisq markets: Hide altcoins when not in official bisq markets mode 2021-03-14 02:42:14 +07:00
softsimon
308dd2c7ad Bisq markets: Recent trades. Separate Bisq master page. 2021-03-13 18:24:50 +07:00
Jonathan Underwood
4cbf2e0eb4 Lower volume for sound effects (#385)
* Turn down that racket *shakes cane*

* Maybe a little lower

* Maybe 80%?

* 70?

* 30 ok?

* 65 sounds best
2021-03-12 13:20:40 +07:00
softsimon
1d4ed85d50 Bisq markets: Volume and other fixes. 2021-03-10 23:02:55 +07:00
wiz
a530d8b17f Improve grammar, layout, and formatting of Terms of Service page 2021-03-09 14:22:14 +09:00
wiz
e32066affd Display all Project Contributors on About page using GitHub API (#382) 2021-03-09 01:56:41 +07:00
wiz
d5cc558670 Modify nginx.conf to cache HTML for 10m and static resources for 1h
Fixes #61
2021-03-08 18:50:57 +09:00
wiz
a52f98c39d Proxy /api/v1/contributors from mempool.space, also fix HTTP headers
Fixes #366
2021-03-08 18:34:04 +09:00
wiz
7beb832007 Merge pull request #380 from junderw/fixCacheUpdate
Fix bug where legend state is reverted when clicking 1-2 after a 1-minute auto-update.
2021-03-08 16:10:10 +09:00
wiz
3e1c4a7e59 Add link to Bisq's GitHub repo on About page 2021-03-08 12:58:00 +09:00
softsimon
3b8d3221cf Adding enterprise sponsors i18n string. 2021-03-07 21:48:33 +07:00
junderw
b594a9d249 Fix? 2021-03-07 23:45:43 +09:00
softsimon
d20cec4e59 Updating translations from transifex. 2021-03-07 20:13:39 +07:00
softsimon
e5972aa181 Updating transifex. 2021-03-07 20:05:20 +07:00
wiz
b0912064cc Minor tweak of ToS formatting, clarify Bitcoin Only, add 3rd party licenses 2021-03-07 09:37:49 +09:00
wiz
84737bca6e Merge pull request #376 from jambolo/master
Fix mempool-graph legend off-by-one
2021-03-07 03:44:15 +09:00
wiz
14db7e4c8b Update ToS for copyright, mempool.space operator, external link policy (#377)
Update ToS for copyright, mempool.space operator, external link policy
2021-03-05 19:07:31 +07:00
softsimon
d99fd5d59a Bisq markets dashboard: Market backend tracking. WIP. 2021-03-05 15:38:46 +07:00
wiz
9624801716 Add a bit more margin to alliances on About page 2021-03-05 16:33:05 +09:00
John Bolton
904cf62c78 Fixes mempool-graph legend off-by-one
Resolves issue #283.
2021-03-04 23:31:09 -08:00
wiz
92e2df4627 Move the Bisq logo on About page from Integrations to Alliances (#375) 2021-03-05 14:30:08 +07:00
wiz
f157a50952 Update hostname in index.html for stats.mempool.space 2021-03-05 15:19:56 +09:00
wiz
c3927c9f0a Fix community integration links on About page to point to GitHub repos 2021-03-05 13:32:52 +09:00
wiz
45505c86d9 Merge pull request #374 from junderw/showFeeTiles
Show fee tiles on mobile
2021-03-05 11:51:07 +09:00
Jonathan Underwood
4fbab41cc8 Show fee tiles on mobile 2021-03-05 11:28:59 +09:00
softsimon
b2769d2af3 Adding Sparrow wallet to about page. 2021-03-05 02:46:23 +07:00
softsimon
2fca34faaa Bisq markets dashboard: Offers list. WIP. 2021-03-05 02:02:21 +07:00
wiz
8fa672e312 Merge pull request #373 from junderw/betterGraph
Graph hides all fee rates below clicked value
2021-03-04 19:34:30 +09:00
Jonathan Underwood
2c5cf94982 Graph hides all fee rates below clicked value 2021-03-04 19:07:20 +09:00
wiz
72ded16543 Tweak padding/margins on About page logos 2021-03-04 16:27:36 +09:00
wiz
7d67c8ea6e Merge pull request #371 from mempool/wiz/add-stuff-to-about-page
Add community integrations / alliances to About page
2021-03-04 16:12:15 +09:00
wiz
1051919a8a Add BLW and Satpile to About page integrations 2021-03-04 16:07:59 +09:00
wiz
8ca6f06650 Fix i18n tags on new About page titles 2021-03-04 15:47:59 +09:00
wiz
906189c43a Add community integrations / alliances to About page, move us to bottom 2021-03-04 12:46:57 +09:00
wiz
0ba6d651c0 Merge pull request #369 from junderw/hex2utf8
Decode hex into utf8 instead of ascii
2021-03-03 21:37:46 +09:00
Jonathan Underwood
2a7b4f9aed Decode hex into utf8 instead of ascii 2021-03-03 21:29:22 +09:00
wiz
892cebd8f4 Enable sending CORS headers from electrs backend in startup script
Fixes #367
2021-03-03 21:29:18 +09:00
wiz
2e8bd7f32e Put the project title back on the About page 2021-03-03 15:48:55 +09:00
wiz
275895bedd Update index.html <head> metadata, OG tags, twitter tags 2021-03-03 11:55:53 +09:00
wiz
ec699f28fb Update link on About page for mempool Twitter account 2021-03-03 11:21:05 +09:00
softsimon
38e866995f Bisq markets dashboard: 24H Volume. WIP. 2021-02-28 17:18:29 +07:00
wiz
85ad0aaa27 Merge pull request #362 from bguillaumat/update-docker
Update docker part
2021-02-27 14:44:52 +09:00
softsimon
eeb7447988 Bisq markets dashboard. Base views. WIP. 2021-02-27 04:19:56 +07:00
bguillaumat
9e2581d734 Update var from ELECTRS to ELECTRUM for more compatibility 2021-02-26 09:04:14 +01:00
softsimon
be0fd7c582 Credit Hebrew translator 2021-02-25 17:34:21 +07:00
softsimon
26b4bd899b Adding Hebrew language 2021-02-25 17:22:03 +07:00
softsimon
a3d9e87f0e Adding Hebrew language 2021-02-25 17:16:22 +07:00
bguillaumat
4a24a173d3 Update docker README 2021-02-25 10:40:14 +01:00
bguillaumat
05098b1141 Update docker mempool-config 2021-02-25 10:33:04 +01:00
wiz
6a7d5fbe6a Don't start production instances if backend folder doesn't exist 2021-02-25 02:38:38 +09:00
wiz
75b8ec855b Update logo for Liquid network (#359) 2021-02-24 15:16:06 +07:00
wiz
b89630953c Merge pull request #358 from mempool/simon/fee-api-minfee
Send mempoolminfee in fee api.
2021-02-24 16:47:32 +09:00
softsimon
04c42b82f4 Renaming feeApi minimumFee and display as rounded satoshis. 2021-02-24 14:39:34 +07:00
softsimon
6ec07e5315 Re-fixing bug where high priority fee could display as lower than the medium and low fee.
fixes #278
2021-02-24 12:30:40 +07:00
softsimon
ea5dc8738c Send mempoolminfee in fee api.
fixes #357
2021-02-24 12:26:55 +07:00
wiz
619eee9492 Improve production high availability using structured failover and cache 2021-02-23 13:33:52 +09:00
wiz
c9f2bd4029 Update nginx and mempool backend configuration for active failover HA 2021-02-22 20:22:38 +09:00
softsimon
795fb9342a Fix: Double BTC is displayed. 2021-02-21 19:12:50 +07:00
wiz
0b04dbbca2 Merge pull request #352 from mempool/simon/signet-frontend
Signet support in the frontend.
2021-02-21 03:56:46 +09:00
softsimon
55df5dbd35 Signet network color. 2021-02-21 01:45:52 +07:00
wiz
0b79aaaf2f Don't use rust from rustup, use OS package rust instead 2021-02-21 03:44:54 +09:00
wiz
7d858a8abd Modify production startup scripts to support signet 2021-02-21 03:44:33 +09:00
wiz
32af9420dc Update production frontend/backend config to support signet 2021-02-21 03:41:52 +09:00
wiz
7195d6ea31 Update nginx.conf for signet, services, and disable SSR for now 2021-02-21 03:39:19 +09:00
softsimon
a111dc044f Signet should use sBTC not tBTC. 2021-02-21 00:40:47 +07:00
softsimon
563ae8540b Signet support in the frontend. 2021-02-20 23:12:22 +07:00
wiz
279cba5d79 More tweaking of project description on About page 2021-02-18 21:46:16 +09:00
wiz
32c740e572 More tweaking of project description on About page 2021-02-18 21:36:05 +09:00
wiz
28bc08c5a8 Change all usage of <h2> to <h3> on About page 2021-02-18 21:29:15 +09:00
wiz
a0e3468c51 Change 'SNAPSHOT' tag to 'dev' in semver on About page 2021-02-18 21:07:00 +09:00
softsimon
d50e25bed7 Create README.md 2021-02-18 15:40:59 +07:00
wiz
7f8329aa4d Update project name and description on About page (#350) 2021-02-18 15:33:59 +07:00
wiz
6619f92502 Merge pull request #349 from mempool/simon/mempool-space-logo
Updating mempool logo and adding new mempool space logo.
2021-02-18 16:33:00 +09:00
softsimon
edce0d118a Updating mempool logo and adding new mempool space logo. New frontend config OFFICIAL_MEMPOOL_SPACE to enable the latter.
fixes #336
2021-02-18 13:34:05 +07:00
pox
26ba41cb91 a bit of formatting for the docker readme (#348) 2021-02-18 11:11:31 +07:00
Czino
475baf5634 Fix style on block hover (#347)
* Fix style on block hover

* Fix style on block hover

Co-authored-by: Eric Lehmann <eric@machinas.com>
2021-02-18 03:05:39 +07:00
wiz
6866b12e84 Update hard-coded LN node URI for sponsors on About page 2021-02-17 17:16:32 +09:00
softsimon
2743b35ea2 Update from transifex. 2021-02-15 00:15:04 +07:00
softsimon
d39207e097 Adding Telegram group link on about page. 2021-02-14 23:23:03 +07:00
wiz
033d1451d0 Merge pull request #343 from mempool/simon/clear-protection-config
Make clear protection timeout configurable.
2021-02-15 00:26:47 +09:00
wiz
befb192651 Reduce backend heap size setting to 2G since cache memory usage was optimized (#345)
On powerful servers, nodejs automatically sets the limit at 4GB
```
% node -e 'console.log(`node heap limit = ${require("v8").getHeapStatistics().heap_size_limit / (1024 * 1024)} Mb`)'
node heap limit = 4144 Mb
```

On a Raspberry Pi with 8GB RAM, nodejs automatically sets the limit at 1GB
```
% node -e 'console.log(`node heap limit = ${require("v8").getHeapStatistics().heap_size_limit / (1024 * 1024)} Mb`)'
node heap limit = 1048 Mb
```

On a Raspberry Pi with 4GB RAM, nodejs automatically sets the limit at 740MB
```
% node -e 'console.log(`node heap limit = ${require("v8").getHeapStatistics().heap_size_limit / (1024 * 1024)} Mb`)'
node heap limit = 739.4694900512695 Mb
```

After testing with manually setting the limit to 768MB, mempool starts
up fine, but crashes when saving the cache when the mempool is quite
large (over 400MB with custom bitcoin.conf setting).

So it's probably safe to reduce the 4GB limit setting to 2GB for
all devices and and just use the automatically set values, now that the
backend's disk cache memory usage was recently optimized.

However, a new npm script for `npm run start-production` will be added
so we can keep our production mempool.space servers running with a very
large bitcoin.conf mempool
2021-02-14 22:25:29 +07:00
softsimon
7489d3360a Make clear protection timeout configurable.
fixes #335
2021-02-14 20:32:00 +07:00
wiz
2641ae0c8e Merge pull request #342 from mempool/simon/optimize-disk-cache
Optimized cache chunks. Default cache files to cache/ directory.
2021-02-14 22:11:33 +09:00
softsimon
32290d1e0d Apply suggestions from code review
Co-authored-by: wiz <j@wiz.biz>
2021-02-14 20:03:45 +07:00
softsimon
584ef87fc8 Optimized cache chunks. Default cache files to /cache directory.
fixes #341
2021-02-14 19:50:31 +07:00
softsimon
63b52b9d9b Use mempool clear protection feature also when in bitcoind mode.
fixes #335
2021-02-14 01:04:44 +07:00
wiz
5f6b7d94b1 Update URL for RoninRojo repo to their self-hosted GitLab 2021-02-12 16:20:57 +09:00
wiz
95a1c002eb Update README with instructions for various installation methods 2021-02-11 14:57:43 +09:00
wiz
2085833720 Fix docker/README example docker-compose.xml to use latest tag 2021-02-10 22:56:42 +09:00
Bastien Guillaumat
20ff62779d Re-implement Docker workflow using GitHub Actions (#326)
* Recreate a docker dir with all docker files inside and add init.sh
* Add docker/README.md with example docker-compose.xml
* Add mysql vars for mempool-config.json
* Port can be set from env var in docker-compose.xml
* Update docker-compose.xml example to use latest tag
* Remove armv7 architecture from build workflow
* Remove master git-hash file
* Remove useless ':' in sed
2021-02-10 22:51:01 +09:00
softsimon
181cb8e03f Removing lightning htlc matching since it has false positives.
refs #324
2021-02-10 19:55:11 +07:00
wiz
cef6bc8345 Enable our GitHub Sponsors program "Sponsor" button 2021-02-10 21:30:16 +09:00
Devin Bileck
a67d82ea94 Fix BSQ token market cap calculation (#332)
Fixes #331
2021-02-10 19:05:16 +07:00
softsimon
89efd410fb Fix for hard coded sponsor url.
refs #319
2021-02-07 03:00:02 +07:00
softsimon
eb0c20dd92 Removing sponsors code.
Support new sponsor confirmation polling.
fixes #319
2021-02-07 02:20:07 +07:00
softsimon
c733497e52 Adding v2.1 screen shot. 2021-02-04 17:58:23 +07:00
wiz
378a56b2c7 Set production electrs scripts to store db in /electrs 2021-02-04 15:53:08 +09:00
wiz
8e42d573ee Modify production electrs scripts to use relative paths from homedir 2021-02-04 12:17:28 +09:00
wiz
a7adf3a345 Bump version number to v2.2-SNAPSHOT 2021-02-04 12:16:47 +09:00
softsimon
ccdf41c5b6 Don't display multisig tag on lightning/liquid contracts.
refs #324
2021-02-03 19:03:59 +07:00
softsimon
0c979e9440 Only lowercase bech32 addresses in address prefix search.
fixes #327
2021-02-03 17:13:29 +07:00
wiz
de035dc1b5 Merge pull request #325 from bguillaumat/docker-error-backend
Fix missing mempool-config due to gitignore
2021-02-03 18:07:25 +09:00
softsimon
18d08ce4bf Updating from transifex. 2021-02-03 15:57:51 +07:00
Bastien
35f5efaa2e Fix missing mempool-config due to gitignore 2021-02-03 09:52:04 +01:00
softsimon
96b3ca6a0b Updating from transifex. 2021-02-03 15:30:38 +07:00
wiz
4e4f655be4 Rename repos on DockerHub to mempool/frontend and mempool/backend 2021-02-03 17:07:12 +09:00
wiz
985df53af6 Remove mempool-mysql Dockerfile target 2021-02-03 16:41:28 +09:00
wiz
ace480e3c7 Fix name and target tag of GitHub Actions workflow 2021-02-03 16:37:11 +09:00
wiz
e670172979 Disable building mempool-mysql Dockerfile from GitHub Action workflow 2021-02-03 16:30:42 +09:00
wiz
7ddbf5d3df Disable using docker buildkit in GitHub Action workflow 2021-02-03 16:28:37 +09:00
wiz
264bca9c56 Fix space indentation in .github/workflows/on-tag.yml 2021-02-03 16:18:00 +09:00
wiz
b53d364877 Add new GitHub action workflow on-tag to build and push to DockerHub 2021-02-03 16:08:59 +09:00
softsimon
ed17203a5f bitcoind: Parse witness scripts from P2SH transactions.
fixes #323
2021-02-03 13:11:14 +07:00
softsimon
999163d7ad Type fix for contract parsing.
refs #324
2021-02-03 12:51:30 +07:00
fiatjaf
276117fba9 better identification of lightning outputs. (#320)
* better identification of lightning outputs.
* identify liquid pegouts and emergency pegouts.
fixes #324
2021-02-03 12:40:31 +07:00
wiz
448cb8e264 Merge pull request #322 from bguillaumat/update-dockerization
Update dockerization
2021-02-03 13:03:44 +09:00
Bastien
6782229a3d Move docker files in subdir 2021-02-03 02:12:15 +01:00
Bastien
543fe8c735 Set all dir to be dockerized 2021-02-02 23:45:54 +01:00
Bastien
f3e97e2e2d Default dir should be the same than config-mempool.json 2021-02-02 19:25:33 +01:00
wiz
03179e34fb Merge pull request #317 from bguillaumat/add-cache-dir
Add Dockerization of Mempool v2 for Umbrel App Store
2021-02-03 03:21:22 +09:00
Bastien
a36b5c660d Fix ENV_VAR issues 2021-02-02 19:20:05 +01:00
Bastien
2d872bda47 Update package.json && Fix start.sh script 2021-02-02 18:01:23 +01:00
Bastien
91d4017aa6 Update ENV_VARIABLES in scripts && Fix some errors 2021-02-02 17:54:01 +01:00
Bastien Guillaumat
6efe055003 Apply Wiz suggestions
Co-authored-by: wiz <j@wiz.biz>
2021-02-02 16:34:21 +01:00
softsimon
f39d90547e Display P2PK inputs as "P2PK" instead of empty string.
fixes #290
2021-02-02 01:32:15 +07:00
Bastien
c26737ffd6 Update build.sh 2021-02-01 18:17:50 +01:00
softsimon
09f5f552bf Don't display fee rating when block medianFee is empty to fix "overpaid by infinity".
fixes #288
2021-02-02 00:10:57 +07:00
Bastien
feb5e96323 Add docker dir to build mempool containers 2021-02-01 17:25:08 +01:00
Bastien
f7ff6336f2 Add CACHE_DIR var 2021-02-01 15:54:27 +01:00
softsimon
2a5a4ddac0 Hide address received/sent from address page when using electrum API.
fixes #294
2021-02-01 04:52:24 +07:00
softsimon
fd869c732d Detect network from url also when languages are being used.
fixes #287
2021-02-01 04:17:34 +07:00
wiz
d3646aa45e Fix production nginx.conf and backend config to always use unique ports 2021-01-31 01:16:32 +09:00
softsimon
f3c18b152a Moved sponsors cache creation until after diskcache is done.
refs #315
2021-01-30 22:12:22 +07:00
wiz
6a9c4d82ec Rename production syslog notifications channel 2021-01-30 23:40:46 +09:00
softsimon
35521f4871 Refactored when statistics cache from database is created.
refs #315
2021-01-30 21:40:04 +07:00
softsimon
9b9c605cbe Upgrading mysql client lib. 2021-01-30 21:39:23 +07:00
softsimon
21d32dec41 Wait for database connection established before continuing startup.
refs #315
2021-01-30 21:09:30 +07:00
wiz
54a276439d Increase Bisq block height divergence warning to 10 blocks for Tor issues 2021-01-30 23:02:20 +09:00
wiz
42ad068dd2 Configure production backends and nginx for high availability electrs 2021-01-30 23:01:01 +09:00
softsimon
c5c2222b8c Increased database query timeouts
fixes #315
2021-01-30 19:20:52 +07:00
softsimon
9d317082e1 Replacing localhost with 127.0.0.1 2021-01-30 18:43:58 +07:00
wiz
edf8f1fc8a Update production upgrade script notification command 2021-01-30 20:31:47 +09:00
wiz
ad52e7fe7e Update production syslog scripts 2021-01-30 20:09:47 +09:00
softsimon
c94f004425 Adding missing default timeout on all axios requests.
fixes #314
2021-01-30 16:25:22 +07:00
softsimon
371433b2da Fix for fee estimate not being correct when block is almost full with more projected blocks in queue.
fixes #278
2021-01-30 01:34:40 +07:00
softsimon
3256198ab0 Credit Italian translator. 2021-01-29 16:58:04 +07:00
softsimon
da533097d9 Replacing weight with vsize in transactions api to match esplora. 2021-01-28 18:24:02 +07:00
softsimon
47dd1f2d0b Adding Italian language. Updating nginx conf with some missing languages. 2021-01-27 20:24:32 +07:00
softsimon
5f1f06fecf Don't save disk cache on exit. Handle corrupted mempool disk cache.
fixes #304
2021-01-27 01:49:11 +07:00
softsimon
b08225dab5 Readding deleted blocks api endpoint. 2021-01-27 00:33:16 +07:00
softsimon
9d02ab1eb5 Center align offline/reconnection badge on the logo.
fixes #302
2021-01-25 01:29:58 +07:00
softsimon
e86b7c7258 Adding missing basic API endpoints when in bitcoind/electrum mode.
fixes #291
2021-01-25 01:09:42 +07:00
softsimon
c9e175a0cc Always fetch at least the coinbase transaction of blocks, and throw error if failed. 2021-01-24 23:56:51 +07:00
softsimon
cca95bbd66 Increasing clear protection period to 10 minutes. 2021-01-24 19:33:05 +07:00
softsimon
86902d6f33 Updated from transifex. 2021-01-24 18:32:46 +07:00
softsimon
e214eedf23 Center aligning fee box text. 2021-01-24 17:26:14 +07:00
softsimon
39613cc2a2 Updated from transifex. 2021-01-24 14:08:06 +07:00
softsimon
dad122625f Adjusting h5 header font-size. 2021-01-24 13:59:39 +07:00
softsimon
f049e3abc4 Reducing size of dashboard header titles to reduce overflow depending on language. 2021-01-24 11:53:42 +07:00
softsimon
bf28dc1eea Credit hungarian translator. 2021-01-24 11:43:20 +07:00
softsimon
4d47388e25 Updating translations from transifex. 2021-01-24 04:21:07 +07:00
softsimon
6507b5e003 Adding hungarian language. 2021-01-24 04:19:50 +07:00
softsimon
47a449e1d9 Disable support for Electrum TX lookups (require -txindex). 2021-01-24 04:15:06 +07:00
softsimon
5b268794af Correctly error handle getTransaction and set 404 status when not found. 2021-01-24 02:51:22 +07:00
softsimon
fb41f58f7c Corrected Bisq stats calculation.
fixes #280
2021-01-23 19:26:05 +07:00
softsimon
e82c89a985 Only save cache on new block when in sync. 2021-01-22 23:20:39 +07:00
wiz
494119d119 Update translated strings from Transifex 2021-01-21 12:39:53 +09:00
softsimon
9900f4da80 Set backend to out of sync after connection retry interval has exceeded. 2021-01-20 17:16:43 +07:00
softsimon
a158794e2c Bitcoind: Lookup block transactions as long as in sync.
refs #288
2021-01-20 17:15:11 +07:00
softsimon
1a04b088fb Fix: Load mempool cache before checking DB connectivity. 2021-01-20 01:34:21 +07:00
softsimon
17b1325b3f Fix for case-insensitive address prefix search.
fixes #301
2021-01-19 13:01:47 +07:00
wiz
0336c6256a Don't create empty cache.json on startup anymore 2021-01-18 12:20:55 +09:00
softsimon
642e54b057 Adding missing space. 2021-01-16 17:34:58 +07:00
softsimon
23323be24a Updated i18n 2021-01-16 14:56:19 +07:00
softsimon
011f35ec94 Display a red RBF button when RBF is not enabled.
fixes #279
2021-01-16 00:24:23 +07:00
softsimon
9751af096d Adding common styling for dropdown select.
fixes #293
2021-01-16 00:10:23 +07:00
softsimon
1e81355e7d Increased disk cache chunks amount to 10 to fix json string length error. 2021-01-15 23:26:32 +07:00
softsimon
eff4d2c8cd Optionally support second CoreRPC instance as source for the minimum fee. 2021-01-15 22:23:32 +07:00
softsimon
d49c347413 Minimum fee / Purging UX updates. 2021-01-15 21:21:53 +07:00
softsimon
8aa3379ba5 Reduce displayed address length on mobile. 2021-01-13 02:10:04 +07:00
softsimon
ec845a6ac2 Renaming minimum fee to rejecting.
Adding progressbar to mempool size.
refs #171
2021-01-12 20:45:41 +07:00
wiz
46b7e6961e Merge pull request #289 from timlucmiptev/patch-1
README: update mariadb instructions
2021-01-12 20:49:35 +09:00
wiz
fc709058c1 Fix mariadb SQL command to GRANT ALL PRIVILEGES 2021-01-12 20:49:18 +09:00
wiz
627e8e5e9a Possible fix for occasional inability to change language to English
Fixes #275
2021-01-12 18:55:57 +09:00
softsimon
2b55ee1e07 Adding CoreRPC "Minimum fee" to the dashboard
fixes #171
2021-01-12 16:42:07 +07:00
wiz
695da602b8 Bump version string on about page to 2.1-SNAPSHOT 2021-01-12 18:10:48 +09:00
~timluc-miptev
3e09755c47 Update README.md 2021-01-11 20:44:45 +02:00
softsimon
4694a31f55 Fix memory leak by not stacking data in the scan accumulator.
Also handle going from zero to initial graph data on dashboard.
fixes #273
2021-01-12 00:15:52 +07:00
wiz
ab8cb033e6 Update backend/package-lock.json for axios security vulnerability 2021-01-11 23:27:27 +09:00
wiz
beb99bcfc6 Update README instructions and nginx.conf for v2.0 release 2021-01-11 23:14:10 +09:00
wiz
a05af48059 Add missing production/mempool-frontend-config.json 2021-01-11 23:14:08 +09:00
softsimon
f462cb27c6 Removing the term ELECTRS from ELECTRS_ITEMS_PER_PAGE setting. 2021-01-11 21:11:09 +07:00
softsimon
103740ec45 Setting default frontend config ELECTRS_ITEMS_PER_PAGE to 10 to adapt to CORE_RPC backends. 2021-01-11 21:06:47 +07:00
wiz
cc166cab75 Fix resource download path in frontend/sync-assets.js 2021-01-11 22:11:29 +09:00
wiz
29e0c337fe Fix pathname of frontend build output folder in npm run sync-assets 2021-01-11 22:05:39 +09:00
wiz
217666f455 Copy /en-US/resources files into top-level /resources/ after frontend build 2021-01-11 21:46:16 +09:00
softsimon
579ccaf21d Adding missing progressbar styling. 2021-01-11 17:20:52 +07:00
softsimon
4f1049bace npm audit fix 2021-01-11 16:04:16 +07:00
wiz
c31d4e35f6 Merge pull request #281 from mempool/simon/bitcoind
Bitcoind and Electrum Server backend support
2021-01-11 17:46:25 +09:00
wiz
3e2a49c08e Update production/mempool-config.*.json files for new backend config 2021-01-11 17:42:35 +09:00
softsimon
0a0e7fad3a Update backend/package.json
Co-authored-by: wiz <j@wiz.biz>
2021-01-11 15:23:59 +07:00
softsimon
e76ee93bbb Config updates. Renamed BITCOIND to CORE_RPC. 2021-01-11 14:53:18 +07:00
softsimon
27d2f5bd5a Merge branch 'master' into simon/bitcoind
* master:
  Update translated strings from Transifex
2021-01-11 14:42:38 +07:00
softsimon
20406fa522 Moved method $validateAddress 2021-01-11 14:30:58 +07:00
softsimon
905ddbb363 Bitcoind: Use mempool as address index when doing address prefix search. 2021-01-11 01:51:57 +07:00
softsimon
38d534caee Return not implemented error instead of empty array. 2021-01-11 00:26:36 +07:00
softsimon
e36646ac7c Adding missing error output on /blocks page. 2021-01-10 22:41:52 +07:00
softsimon
9689ccf2ac Bitcoind: Display the suggestion message on address page when address lookups is not implemented. 2021-01-10 22:24:36 +07:00
softsimon
c4d1fad853 Cache electrum address history fetch a couple of seconds to prevent double requests on address page load. 2021-01-10 19:58:55 +07:00
softsimon
9a23d2c6b0 Electrum: Sort address transactions correctly by confirmed and unconfirmed. 2021-01-10 17:40:05 +07:00
softsimon
065c21da1f Bitcoind: Push full transactions to address page and RBF mode. 2021-01-10 17:38:59 +07:00
softsimon
6a58717694 Loading progressbar for loading address, block transactions and blocks 2021-01-08 21:44:36 +07:00
wiz
b4e61634bc Update translated strings from Transifex 2021-01-08 00:23:53 +09:00
softsimon
b91516a1c1 Push new conversion rate updates to the clients. 2021-01-06 23:31:33 +07:00
softsimon
dc63fd9428 Config file updates. electrs -> esplora 2021-01-06 22:49:28 +07:00
softsimon
29dd6e5d8d Never run statistics when mempool not in sync. 2021-01-06 03:09:31 +07:00
softsimon
9e1ef1b747 Adding bitcoinJS-lib and parse P2SH and P2WSH scripts. 2021-01-06 01:36:28 +07:00
softsimon
632c243b34 Loading indicator service indicating mempool sync status. 2021-01-05 18:57:06 +07:00
softsimon
f46728080d Inform client when Electrum server limit exceeded 2021-01-05 17:30:53 +07:00
softsimon
1a6c2e79e6 Electrum protocol and tx lookup setting. 2021-01-05 03:06:57 +07:00
softsimon
7729ad8b79 Convert sighash to match esplora. 2021-01-03 22:02:10 +07:00
softsimon
a25125091d Hack to make it possible to load the Coinbase transaction from Bitcoin Core. 2021-01-02 04:40:10 +07:00
softsimon
89b4de2484 Fixed addressTransactions with pagination in electrum API. 2020-12-30 02:27:34 +07:00
softsimon
5390629e41 Improved block fetching performance. 2020-12-30 01:47:07 +07:00
softsimon
62c78f5b08 Adding getBlocks support. 2020-12-29 20:41:16 +07:00
softsimon
ae87694bc3 Use @mempool/electrum-client lib as Electrum Client lib. 2020-12-29 14:14:34 +07:00
softsimon
a3644e23a7 Switching Electrum Client lib supporting auto reconnect. 2020-12-29 00:41:02 +07:00
softsimon
3c0fa71a10 Updates for general transaction and block fetching. 2020-12-28 20:17:32 +07:00
softsimon
bb28a56622 Big refactor of multiple backends handling. 2020-12-28 04:47:22 +07:00
softsimon
8d0db12abe Merge branch 'master' into simon/bitcoind
* master: (22 commits)
  Update translated strings from Transifex
  Rewrite server.ts again to properly add i18n support into SSR mode
  Rewrite server.ts to fix i18n and implement proper HTTP 404 responses
  Update mempool-frontend-config.sample.json for NGINX_HOSTNAME vars
  Fixes after merging master into AU branch, add nginx.conf for SSR
  Adjust build scripts for new AU frontend build output in /browser/
  Always set a value for the locale selector, for /liquid/ etc.
  Correcting merge conflict.
  Route all Angular Universal requests to nginx, remove simon's hacks
  Hack to fix the urls.
  Fix for non matching request URLs.
  Adding ServerTransferStateModule for AU with custom http interceptor for cache transfer.
  removing /api again
  New frontend config for webserver url to fix static asset httpGet. Removed "absolute" from config names.
  Remove ssr prepended url from asset service.
  Don't append /api to electrs backend path for SSR
  Update absolute url config variables.
  Frontend config support for AU. New absolute server url settings. refs #104
  Transaction, address and block page now works.
  Update `og:title` meta tag when changing page title
  ...
2020-12-24 10:38:14 +07:00
wiz
8b1768f745 Update translated strings from Transifex 2020-12-24 04:16:00 +09:00
wiz
8f3db3690c Merge pull request #187 from mempool/simon/angular-universal
Angular Universal Milestone 1
2020-12-24 04:13:17 +09:00
wiz
87fbdc063b Rewrite server.ts again to properly add i18n support into SSR mode 2020-12-23 18:04:30 +09:00
wiz
b261243f85 Rewrite server.ts to fix i18n and implement proper HTTP 404 responses 2020-12-23 13:26:11 +09:00
wiz
2385ec7cde Update mempool-frontend-config.sample.json for NGINX_HOSTNAME vars 2020-12-22 13:11:31 +09:00
wiz
6491d4576a Fixes after merging master into AU branch, add nginx.conf for SSR 2020-12-22 11:31:49 +09:00
softsimon
f84b9e6582 Address page mostly working. 2020-12-22 06:04:31 +07:00
wiz
51ed2a1f31 Merge remote-tracking branch 'origin/master' into simon/angular-universal 2020-12-22 07:17:40 +09:00
wiz
0d50bbdc0a Adjust build scripts for new AU frontend build output in /browser/ 2020-12-22 07:09:45 +09:00
softsimon
df63117088 Merge pull request #274 from mempool/wiz/fix-locale-selector-default-value
Always set a value for the locale selector, for /liquid/ etc.
2020-12-22 05:06:24 +07:00
wiz
de50816990 Always set a value for the locale selector, for /liquid/ etc. 2020-12-22 06:41:56 +09:00
wiz
ff0d1a7589 Merge remote-tracking branch 'origin/master' into simon/angular-universal 2020-12-22 06:14:12 +09:00
softsimon
ecc0f316cc Refactored transaction handling. 2020-12-21 23:08:34 +07:00
softsimon
5dbf6789a7 Basic bitcoind/romanz-electrum support to sync the mempool and blocks. 2020-12-20 22:36:36 +07:00
wiz
5a4a976d55 Update translated strings from Transifex 2020-12-17 12:41:18 +09:00
wiz
1f5af33f14 Add missing websocket subscription for 'blocks' in status-view component 2020-12-15 03:48:07 +09:00
wiz
8f3901b6d4 Update translation strings from Transifex 2020-12-15 00:15:14 +09:00
wiz
6dc10f438a Update translation strings from Transifex 2020-12-14 04:36:05 +09:00
wiz
006e942109 Update translation strings from Transifex 2020-12-13 17:59:54 +09:00
wiz
71c405d8bc Update from Transifex 2020-12-13 01:33:42 +09:00
wiz
73bb712311 Fix formatting of frontend/README.md 2020-12-11 03:13:47 +09:00
wiz
e04c4cfa38 Add list of translators to frontend/README.md 2020-12-11 03:02:58 +09:00
softsimon
cd9f8cbf93 Updating from transifex. 2020-12-10 23:38:50 +07:00
wiz
4b1ac88a5c Remove duplicate locale for 'ka' in app.constants.ts 2020-12-10 23:14:29 +09:00
softsimon
1309bfc56e Merge pull request #268 from TechMiX/fixRTLproblems
add rtl-layout class to base component
2020-12-10 12:16:01 +07:00
softsimon
ecf49c4365 Updated from transifex. 2020-12-10 11:53:16 +07:00
softsimon
d0e0ab7c24 i18n: Enabling Vietnamese 2020-12-10 11:51:27 +07:00
TechMiX
95c9b21149 add left-to-right mark character to blockchain and mempool block components size 2020-12-09 21:47:27 +01:00
TechMiX
306197c6e9 fix blockchain scrolling on mobile mode when RTL layout 2020-12-09 21:46:13 +01:00
softsimon
56556b6c52 Updated strings from transifex. 2020-12-09 23:55:17 +07:00
softsimon
d8e1023848 i18n: Enabling Finnish 2020-12-09 23:20:37 +07:00
softsimon
c9f485a775 i18n: Disabling vietnamese again 2020-12-09 23:20:10 +07:00
TechMiX
e6be450aaa add left-to-right mark character to amount component 2020-12-09 02:33:20 +01:00
TechMiX
c1bcf49f37 reverse all text-aligns in rtl-layout 2020-12-09 02:23:53 +01:00
TechMiX
c4734357c4 add text-align for Details title + swap text-left class with style so that it always remains aligned to left 2020-12-09 02:22:16 +01:00
TechMiX
e0adc505db add rtl-layout class to base component 2020-12-09 01:57:18 +01:00
softsimon
260735665b Status view live data now works again... 2020-12-09 01:37:14 +07:00
softsimon
5b8bcd5b7d i18n: Fixed stacked mempool block issue and enabled vietnamese. 2020-12-09 01:31:49 +07:00
softsimon
0a6f6a14b6 Pulled new strings from transifex. 2020-12-09 01:17:22 +07:00
softsimon
8e5efc47cd i18n: reuse vB/s string 2020-12-08 18:40:00 +07:00
softsimon
eb9aaac0aa i18n: Fixed translations for the footer component. Merged some duplicates. 2020-12-08 18:24:02 +07:00
softsimon
2c1514b6cf Merge pull request #266 from mempool/wiz/enable-korean-locale
Enable 'ko' locale for Korean
2020-12-08 14:00:53 +07:00
wiz
06a0abdb79 Enable 'ko' locale for Korean in app.constants.ts 2020-12-08 15:59:00 +09:00
wiz
29b9fec3b9 Enable 'ko' locale for Korean in angular.json 2020-12-08 15:57:46 +09:00
softsimon
40ac83ee88 Update strings from transifex. 2020-12-08 11:58:43 +07:00
softsimon
5659a8c086 Correcting merge conflict. 2020-12-08 11:57:03 +07:00
softsimon
f9e8dfb079 Merge branch 'master' into simon/angular-universal
* master: (42 commits)
  i18n: Added missing Bisq translations. Minor missing space and character fixes.
  add missing 'sat/vb' string for i18n
  i18n: Removed CR from "In X minutes" translation
  i18n: Updated strings for "x confirmations", "x transactions", "x blocks" and "block ETA". Peg-out, and bisq headers.
  Update translation strings from Transifex
  Enable 'ka' locale for Georgian
  Update translation strings from Transifex
  Disable Vietnamese locale 'vi' until translations are completed
  Update translation strings from Transifex
  add 'sat' string for i18n
  Update translation strings from Transifex
  Update translation strings from Transifex
  i18n update
  Remove extra garbage characters from OP_RETURN tooltip. fixes #254
  Fix for changing locale on other networks than mainnet. fixes #253
  i18n: Asset search box
  Update translation strings from Transifex
  i18n: Added X of X transaction. Flipped collapse/expand
  i18n: Added "miner identification" and updated "navigate to sponsor"
  Update translations from Transifex
  ...

# Conflicts:
#	frontend/src/app/components/app/app.component.ts
#	frontend/src/app/components/mempool-block/mempool-block.component.ts
2020-12-08 00:11:38 +07:00
softsimon
ae886e14b8 i18n: Added missing Bisq translations. Minor missing space and character fixes. 2020-12-07 17:35:05 +07:00
wiz
8d5ccf94f3 Merge pull request #264 from TechMiX/addMissingTranslatableString
add missing 'sat/vB' string for i18n
2020-12-07 10:21:48 +09:00
TechMiX
91cb2adb95 add missing 'sat/vb' string for i18n 2020-12-07 00:07:16 +01:00
softsimon
f70f94fede i18n: Removed CR from "In X minutes" translation 2020-12-07 00:23:13 +07:00
wiz
1006adabce Merge pull request #263 from mempool/simon/i18n-shared
i18n: Updated strings for "x confirmations", "x transactions", "x blo…
2020-12-07 02:04:14 +09:00
softsimon
e2d19a174e i18n: Updated strings for "x confirmations", "x transactions", "x blocks" and "block ETA". Peg-out, and bisq headers. 2020-12-06 23:44:08 +07:00
wiz
c19e21449d Merge pull request #262 from TechMiX/addMissingTranslatableString
add 'sat' string for i18n
2020-12-07 01:07:05 +09:00
wiz
c819ddc64a Update translation strings from Transifex 2020-12-07 00:20:22 +09:00
wiz
a2740aaa02 Enable 'ka' locale for Georgian 2020-12-07 00:20:05 +09:00
wiz
8d565f5c62 Update translation strings from Transifex 2020-12-06 03:44:29 +09:00
wiz
f93e1c460a Disable Vietnamese locale 'vi' until translations are completed 2020-12-06 03:40:04 +09:00
wiz
0247c7137e Update translation strings from Transifex 2020-12-06 01:12:33 +09:00
TechMiX
159d9c71a1 add 'sat' string for i18n 2020-12-05 14:59:08 +01:00
wiz
805636229a Update translation strings from Transifex 2020-12-05 22:42:48 +09:00
wiz
c5cd80ac48 Update translation strings from Transifex 2020-12-05 21:57:51 +09:00
softsimon
94a5e8edae i18n update 2020-12-05 11:58:22 +07:00
softsimon
1af1f7211e Remove extra garbage characters from OP_RETURN tooltip.
fixes #254
2020-12-05 02:32:16 +07:00
softsimon
4d54723472 Fix for changing locale on other networks than mainnet.
fixes #253
2020-12-05 02:08:54 +07:00
softsimon
1fc1b4b86e i18n: Asset search box 2020-12-05 02:01:31 +07:00
wiz
5774b395a7 Update translation strings from Transifex 2020-12-05 02:39:50 +09:00
softsimon
f4c27e4c26 i18n: Added X of X transaction. Flipped collapse/expand 2020-12-05 00:16:23 +07:00
softsimon
336e45a7b1 i18n: Added "miner identification" and updated "navigate to sponsor" 2020-12-04 23:07:53 +07:00
wiz
6acacc7792 Update translations from Transifex 2020-12-05 00:36:00 +09:00
softsimon
10b9778b3c Adding missing Asset page strings. Fixed block title translations. 2020-12-04 22:30:09 +07:00
wiz
9ebb9a5d65 Use --force when running tx pull for Transifex strings 2020-12-05 00:12:08 +09:00
wiz
6476d1e77c Update translations from Transifex 2020-12-05 00:11:40 +09:00
softsimon
67df21fe50 Fixing about-link title translation. 2020-12-04 21:49:03 +07:00
wiz
1e8167212f Merge pull request #251 from mempool/simon/i18n-everything
i18n all the remaining strings.
2020-12-04 23:40:35 +09:00
softsimon
ea496915c4 Updated messages.xlf 2020-12-04 21:38:14 +07:00
softsimon
035f9a4d67 Merge commit '768fbdfbfa8e0064b86e168c59762909f4c1763b' into simon/i18n-everything
* commit '768fbdfbfa8e0064b86e168c59762909f4c1763b':
  Update translated strings from Transifex
  More fixes for RTL
  Always render app-mempool-graph using LTR
  Implement auto RTL support for i18n locales like Arabic, Persian, etc.
  Update extracted i18n strings from source
  Enable 'ar' locale for Arabic
  Update translated strings from Transifex
  Fix incorrectly used 'nn' locale, rename it to 'nb' instead
  Update transifex-client configuration to use master branch

# Conflicts:
#	frontend/src/locale/messages.xlf
2020-12-04 21:30:51 +07:00
softsimon
232fc65af2 i18n correcctions based on feedback. Added even more missing i18n strings. 2020-12-04 21:29:31 +07:00
wiz
768fbdfbfa Update translated strings from Transifex 2020-12-04 23:03:52 +09:00
softsimon
974d89e40b Merge pull request #257 from mempool/wiz/implement-rtl-support-for-i18n
Implement auto RTL support for i18n locales like Arabic, Persian, etc.
2020-12-04 21:00:39 +07:00
wiz
92d163f495 More fixes for RTL 2020-12-04 22:54:09 +09:00
wiz
62363802be Always render app-mempool-graph using LTR 2020-12-04 22:41:58 +09:00
wiz
e49ecd9368 Implement auto RTL support for i18n locales like Arabic, Persian, etc.
Fixes #255
2020-12-04 05:56:40 +09:00
wiz
ea521651fd Update extracted i18n strings from source 2020-12-04 04:11:35 +09:00
wiz
73db9c5023 Enable 'ar' locale for Arabic 2020-12-04 04:11:14 +09:00
wiz
cc451d29ab Update translated strings from Transifex 2020-12-04 04:07:01 +09:00
wiz
a831d04694 Fix incorrectly used 'nn' locale, rename it to 'nb' instead 2020-12-03 22:37:06 +09:00
softsimon
fb11d73751 i18n all the remaining strings. 2020-12-03 18:34:19 +07:00
wiz
9509891abc Update transifex-client configuration to use master branch 2020-12-03 20:09:08 +09:00
wiz
129f122993 Replace nginx.conf try_files for /$lang/index.html with rewrite (fixes #250) 2020-12-03 18:52:03 +09:00
wiz
8875579c08 Update strings from Transifex 2020-12-03 10:16:21 +09:00
wiz
83501cfdbe Enable locale 'vi' for Vietnamese 2020-12-03 10:16:02 +09:00
wiz
2b2bc2fc41 Change nginx.conf Tor HS port from 81 to 80 to fix i18n bug 2020-12-03 09:56:29 +09:00
wiz
6b498b9601 Exempt localhost from nginx rate limits for Tor and AU usage 2020-12-03 09:47:39 +09:00
softsimon
e35eb5aad2 Adding virtual size to transaction details.
fixes #248
2020-12-02 22:22:14 +07:00
softsimon
2bba51e6c1 Merge branch 'master' into simon/angular-universal
* master:
  Update list of supported locales
  Add one more fix to nginx.conf for i18n
  Remove unused i18n tags in frontend/src/index.html
  Update translations from Transifex
  Enable 'fr' locale for French
  Corrected some missing spaces on transactions page and a blank render bug when confirmation time is below 1 minute.
  Implement i18n support in frontend using Angular + Transifex + NGINX

# Conflicts:
#	frontend/src/app/app.constants.ts
#	frontend/sync-assets.js
2020-12-02 20:05:49 +07:00
wiz
d3cb1d607b Update list of supported locales 2020-12-02 21:33:53 +09:00
wiz
352afbc029 Add one more fix to nginx.conf for i18n 2020-12-02 21:21:44 +09:00
softsimon
2ef87603fd Merge pull request #191 from mempool/wiz/i18n
Implement i18n support in frontend using Angular + Transifex + NGINX
2020-12-02 19:07:28 +07:00
wiz
88b702d6d8 Remove unused i18n tags in frontend/src/index.html 2020-12-02 20:35:52 +09:00
wiz
0d2e4000e1 Update translations from Transifex 2020-12-02 20:35:50 +09:00
wiz
9148d30fcc Enable 'fr' locale for French 2020-12-02 20:35:46 +09:00
softsimon
3f990ff706 Corrected some missing spaces on transactions page and a blank render bug when confirmation time is below 1 minute. 2020-12-02 17:03:04 +07:00
wiz
4658b47007 Implement i18n support in frontend using Angular + Transifex + NGINX
This PR adds basic i18n support into the mempool frontend, together with
a smooth workflow for developers and translators to collaborate:

* Using the existing @angular/localize module, developers add i18n
metadata to any frontend strings their new features or changes modify

* Using the new npm script `i18n-extract-from-source`, developers
extract the i18n data from source code into `src/locale/messages.xlf`

* After pushing the updated `src/locale/messages.xlf` to GitHub, the
Transifex service will update its database from the new source data

* Using the Transifex website UI, translators can work together to
translate all the mempool frontend strings into their native languages

* Using the new npm script `i18n-pull-from-transifex`, developers can
pull in completed translations from Transifex, and commit them into git.

This flow requires an API key from Transifex, which can be obtained at
https://www.transifex.com/user/settings/api/ to be used with the python
script installed by `pip install transifex-client` - after preparing
these, run the npm script which will ask you for the API key the first
time. When downloading is complete, you can test building the frontend,
and if successful, commit the new strings files into git.

This PR implements a new locale selector in the footer of the homepage
dashboard, and includes WIP translations for the following languages:

* Czech (cs)
* German (de)
* Japanese (ja)
* Norwegian (nn)
* Spanish (es)
* Swedish (sv)
* Ukrainian (uk)
* Persian (fa)
* Portugese (pt)
* Turkish (tr)
* Dutch (nl)
* French (fr)
* Chinese (zh)
* Slovenian (sl)
* Korean (ko)
* Polish (pl)

The user-agent's `Accept-Language` header is used to automatically
detect their preferred language, which can be manually overriden by the
pull-down selector, which saves their preference to a cookie, which is
used by nginx to serve the correct HTML bundle to the user.

Remaining tasks include adding i18n metadata for strings in the Bisq and
Liquid frontend code, mouseover hover tooltip strings, hard-coded og
metadata inside HTML templates, and many other places. This will be done
in a separate PR.

When upgrading to add i18n support, mempool instance operators must take
care to install the new nginx.conf and nginx-mempool.conf files, and
tweak for their specific site configuration.

Fixes #81
2020-12-02 04:19:33 +09:00
softsimon
f9c2bc1fb5 Merge commit 'f151eb81c812a62d1d5c57ee91620a3dd9ae5068' into simon/angular-universal
* commit 'f151eb81c812a62d1d5c57ee91620a3dd9ae5068':
  Upgrade angular from 10.0.4 to 10.2.3, typescript from 3.9.7 to 4.0.5
  Modify /bisq/api/v1/markets/markets to only return active markets
  Remove unnecessary @types/axios dependency.
  Same npm fix for running `tsc` from `./node_modules` for backend
  Set npm to run `ng` and `tsc` binaries from `./node_modules/` path

# Conflicts:
#	frontend/package-lock.json
#	frontend/package.json
2020-11-28 02:21:12 +07:00
softsimon
f151eb81c8 Merge pull request #195 from mempool/wiz/angular-10.2.3
Upgrade angular from 10.0.4 to 10.2.3, typescript from 3.9.7 to 4.0.5
2020-11-28 02:09:52 +07:00
wiz
9b89d9977f Upgrade angular from 10.0.4 to 10.2.3, typescript from 3.9.7 to 4.0.5 2020-11-28 04:04:45 +09:00
wiz
b6150a3237 Route all Angular Universal requests to nginx, remove simon's hacks 2020-11-27 23:03:48 +09:00
softsimon
dee9fa2d9a Hack to fix the urls. 2020-11-27 20:11:15 +07:00
softsimon
42d1fcbdee Fix for non matching request URLs. 2020-11-27 20:01:25 +07:00
softsimon
d0da875e69 Adding ServerTransferStateModule for AU with custom http interceptor for cache transfer. 2020-11-27 18:41:57 +07:00
softsimon
c7abb7a08a Merge pull request #189 from mempool/only-return-active-bisq-markets
Modify /bisq/api/v1/markets/markets to only return active markets
2020-11-23 22:02:13 +07:00
softsimon
5248fadcea removing /api again 2020-11-23 21:59:30 +07:00
wiz
d613aec395 Modify /bisq/api/v1/markets/markets to only return active markets
As per https://github.com/bisq-network/bisq/issues/4826 and https://github.com/bisq-network/bisq/pull/4831
2020-11-23 22:46:14 +09:00
softsimon
9e716aa913 Remove unnecessary @types/axios dependency. 2020-11-23 18:36:55 +07:00
softsimon
2cbf1474c3 New frontend config for webserver url to fix static asset httpGet.
Removed "absolute" from config names.
2020-11-23 18:22:21 +07:00
wiz
824bc21035 Same npm fix for running tsc from ./node_modules for backend 2020-11-23 17:26:22 +09:00
wiz
e51a4ce028 Set npm to run ng and tsc binaries from ./node_modules/ path 2020-11-23 17:19:16 +09:00
softsimon
2054c951ae Remove ssr prepended url from asset service. 2020-11-23 15:04:41 +07:00
wiz
5a70234370 Don't append /api to electrs backend path for SSR 2020-11-23 16:53:44 +09:00
softsimon
e5959f14bc Update absolute url config variables. 2020-11-23 14:50:28 +07:00
softsimon
aaf9d9be9f Merge branch 'master' into simon/angular-universal
* master:
  correcting merge
  Remove extra space in price server URL
  Modify upgrade script to append repo before tag name
  Merge "getInitData" method from simon/angular-universal.
  Replace opennode usd price source with wiz api. fixes #166
  Display confidential instead of nothing for confidential assets. fixes #110
  Detect confidential assets and display properly. fixes #109
  Allow searching for and viewing assets not in the asset registry. fixes #111

# Conflicts:
#	backend/src/api/websocket-handler.ts
2020-11-23 14:08:50 +07:00
wiz
fdf9cf7977 Merge pull request #186 from mempool/simon/update-pricefeed
Replace opennode usd price source with wiz api.
2020-11-23 16:06:15 +09:00
softsimon
bd67eec777 correcting merge 2020-11-23 11:46:04 +07:00
wiz
2fd559a7e1 Merge pull request #185 from mempool/simon/liquid-fixes
Liquid asset display bug fixes
2020-11-23 10:11:43 +09:00
wiz
9059c0c7e4 Merge remote-tracking branch 'origin/master' into simon/update-pricefeed 2020-11-23 09:56:23 +09:00
wiz
8fab153fb0 Remove extra space in price server URL 2020-11-23 09:48:06 +09:00
wiz
827c5d12a3 Modify upgrade script to append repo before tag name 2020-11-23 09:46:50 +09:00
softsimon
c0d2430a84 Merge "getInitData" method from simon/angular-universal. 2020-11-23 02:38:56 +07:00
softsimon
c36addd8c1 Frontend config support for AU. New absolute server url settings.
refs #104
2020-11-23 02:30:46 +07:00
softsimon
83126b83f1 Transaction, address and block page now works. 2020-11-22 23:47:27 +07:00
softsimon
75726df275 Merge branch 'master' into simon/angular-universal
* master:
  Tweak ASM opcode styling colors
  Add some color and styling to the Bitcoin ASM opcodes
  Correcting title text on graph invert button.
  Modify upgrade script to include "tag @ hash" in notification msg
  Adding a button to invert the graph globally.
  Display P2PK instead of OP_RETURN fixes #161
  Improved utxo script design. fixes #46
  Adding prevout script. Fixed padding. refs #46
  Correcting details button padding on mobile.
  Fix nginx.conf reverse proxy cache URL path for sponsor images
  Add missing "engines" metadata into package-lock.json
  Upgrade backend/package-lock.json to version 2
  Toggle display UTXO details and scripts for transactions fixes #46
  Axios error handle sponsor proxy requests.
  Replacing request.js with axios fixes #153
  Add basic websocket error handler as emergency fix for site crashing

# Conflicts:
#	frontend/src/app/services/storage.service.ts
2020-11-22 20:53:12 +07:00
softsimon
1521d47cc7 Replace opennode usd price source with wiz api.
fixes #166
2020-11-22 16:48:55 +07:00
softsimon
6bc6966019 Display confidential instead of nothing for confidential assets.
fixes #110
2020-11-22 16:30:36 +07:00
softsimon
01689c8433 Detect confidential assets and display properly.
fixes #109
2020-11-22 16:19:57 +07:00
softsimon
11d67cf756 Allow searching for and viewing assets not in the asset registry.
fixes #111
2020-11-22 16:03:23 +07:00
wiz
30fb0bad78 Tweak ASM opcode styling colors 2020-11-21 18:17:29 +09:00
softsimon
742ce7c429 Merge pull request #184 from mempool/wiz/style-asm-opcodes
Add some color and styling to the Bitcoin ASM opcodes
2020-11-21 03:33:54 +07:00
wiz
9e83fdc9f2 Add some color and styling to the Bitcoin ASM opcodes
Fixes #164
2020-11-21 05:29:50 +09:00
softsimon
36022680cb Merge pull request #183 from mempool/wiz/angular-universal
Update `og:title` meta tag when changing page title
2020-11-20 00:46:04 +07:00
wiz
a19ff7d3a7 Update og:title meta tag when changing page title 2020-11-20 00:59:10 +09:00
softsimon
9f9c0b1114 Correcting title text on graph invert button. 2020-11-16 21:58:16 +07:00
wiz
ab6ed227e3 Modify upgrade script to include "tag @ hash" in notification msg 2020-11-16 23:44:32 +09:00
wiz
e029f91d4c Merge pull request #162 from mempool/simon/graph-inverter
Adding a button to invert the graph globally.
2020-11-16 21:37:57 +09:00
softsimon
ca540d902a Adding a button to invert the graph globally. 2020-11-16 19:27:06 +07:00
softsimon
76238f5943 Display P2PK instead of OP_RETURN
fixes #161
2020-11-16 16:21:37 +07:00
softsimon
d9803e3f3d Improved utxo script design.
fixes #46
2020-11-16 02:25:10 +07:00
softsimon
c9e63a723a Adding prevout script. Fixed padding.
refs #46
2020-11-16 02:02:16 +07:00
softsimon
4136e8d332 Correcting details button padding on mobile. 2020-11-16 01:10:07 +07:00
wiz
ffb08e5e01 Fix nginx.conf reverse proxy cache URL path for sponsor images 2020-11-16 00:43:10 +09:00
wiz
c24e44f6fa Merge pull request #158 from mempool/simon/axios
Replacing request.js with axios
2020-11-16 00:37:43 +09:00
wiz
1676a78c13 Merge remote-tracking branch 'origin/master' into simon/axios 2020-11-15 22:17:11 +09:00
wiz
379db7b211 Merge pull request #159 from mempool/simon/utxo-details
Toggle display UTXO details and scripts for transactions
2020-11-15 22:11:44 +09:00
softsimon
e01718db22 Merge pull request #160 from mempool/wiz/upgrade-package-lock-json
Upgrade backend/package-lock.json to version 2
2020-11-15 19:26:18 +07:00
wiz
df81035ebc Add missing "engines" metadata into package-lock.json 2020-11-15 21:17:24 +09:00
wiz
0b35f784c4 Upgrade backend/package-lock.json to version 2 2020-11-15 20:47:36 +09:00
softsimon
ddea10b160 Toggle display UTXO details and scripts for transactions
fixes #46
2020-11-15 17:58:38 +07:00
softsimon
0616b3c3b0 Axios error handle sponsor proxy requests. 2020-11-15 14:31:34 +07:00
softsimon
e7ddedaeb6 Replacing request.js with axios
fixes #153
2020-11-15 14:22:47 +07:00
wiz
12b3ecd078 Add basic websocket error handler as emergency fix for site crashing 2020-11-15 11:44:16 +09:00
softsimon
f8ffd6ec6b Merge branch 'master' into simon/angular-universal
* master:
  Add the Commons Clause License Condition v1.0 to our MIT License
  fix legend bug on resize
  Correcting new chartist import path.
  Flip mempool chart by using patched chartist package by @techmix

# Conflicts:
#	frontend/package-lock.json
2020-11-15 02:51:00 +07:00
softsimon
1e39daafb3 Merge pull request #154 from TechMiX/fixGraphLegendBug
Fix graph legend bug on resize
2020-11-15 00:39:22 +07:00
wiz
c03f5d8393 Merge pull request #155 from mempool/add-commons-clause-license-condition
Add the Commons Clause License Condition v1.0 to our MIT License
2020-11-15 00:15:16 +09:00
wiz
65c29ddff2 Add the Commons Clause License Condition v1.0 to our MIT License 2020-11-14 22:39:03 +09:00
TechMiX
640a77e846 fix legend bug on resize 2020-11-13 01:23:19 +01:00
softsimon
5aa17e001c Correcting new chartist import path. 2020-11-10 21:09:50 +07:00
softsimon
ff8f2fafe8 Flip mempool chart by using patched chartist package by @techmix 2020-11-10 21:05:54 +07:00
softsimon
ea04dfa62f Merge pull request #151 from mempool/wiz/angular-universal
Various fixes (lol)
2020-11-08 00:39:44 +07:00
wiz
0361044352 Various fixes (lol) 2020-11-08 01:16:09 +09:00
softsimon
b39d12f64e Merge branch 'master' into simon/angular-universal
* master:
  Enable nginx reverse proxy cache for sponsor profile images + misc tweaks
  Update Bisq price API: markets.bisq.network -> bisq.markets
2020-11-07 14:03:03 +07:00
softsimon
14c9d0c409 angular universal WIP
refs #104
2020-11-07 04:30:52 +07:00
wiz
b89a549a75 Enable nginx reverse proxy cache for sponsor profile images + misc tweaks 2020-11-06 14:09:04 +09:00
wiz
203374bce2 Update Bisq price API: markets.bisq.network -> bisq.markets 2020-11-05 13:59:58 +09:00
softsimon
d8c4f5a6ac Adding some padding and correcting a bad pixel line. 2020-11-03 18:03:25 +07:00
softsimon
1877b40413 Use actual mempool size instead of mempool vsize.
fixes #150
2020-11-03 16:11:32 +07:00
wiz
6f6d7bc4d2 ❤️ 2020-11-03 17:03:41 +09:00
wiz
f1463b914d Modify index.html metadata to have timestamp for mempool-preview.png URL 2020-11-03 16:44:25 +09:00
softsimon
c03073bddd FIx: Write cache sync on exit. 2020-11-02 22:06:51 +07:00
softsimon
ce582eefc6 Fix for kept block amount when cache already contains more. 2020-11-02 21:28:40 +07:00
softsimon
d46ff35dfb Fix: Split mempool disk cache into 50K txs per file 2020-11-02 19:11:04 +07:00
softsimon
6865e00738 Fix: Reduce red difficulty adjustment progress when nearing end of cycle. 2020-11-02 14:48:48 +07:00
softsimon
73acec23ae Mute websocket parse error. 2020-11-02 01:14:42 +07:00
softsimon
72325b683e Merge pull request #147 from TechMiX/master
Save the legends status in cache
fixes #70
2020-11-01 20:26:38 +07:00
softsimon
8dd257aebd Upgrading social media preview image to new design. 2020-11-01 17:40:45 +07:00
softsimon
b21016efef Removing unnused config MINED_BLOCKS_CACHE. 2020-10-31 18:58:34 +07:00
softsimon
200e68f15a Fix: Wrong variable used to display mempool size. 2020-10-29 07:06:54 +07:00
TechMiX
411b75471c Merge branch 'master' of https://github.com/mempool/mempool 2020-10-28 22:25:33 +01:00
TechMiX
5d7a39a8f2 save the legends active status on a cache 2020-10-28 22:22:07 +01:00
softsimon
fcb51fef20 Calculate tx fees based on segwit tx sizes. 2020-10-28 20:26:48 +07:00
softsimon
5feaff130f Adding missing error cause messages. 2020-10-28 11:00:48 +07:00
softsimon
29ff029b07 Updating lightning node name.
Fixing dashboard button alignment.
2020-10-27 19:27:48 +07:00
softsimon
6494d6daf8 Removing hxpress http compression 2020-10-27 17:42:10 +07:00
softsimon
396ff6a375 Change collapsing dashboard into 3 levels. 2020-10-27 16:34:27 +07:00
softsimon
e61574c630 Add L-BTC sponsor support. 2020-10-27 15:26:37 +07:00
softsimon
edf2d4205d Feature: Add a collapse/show advanced view feature on the Dashboard
fixes #134
2020-10-27 02:58:29 +07:00
softsimon
645772c01a Fix: Segwit-tag is inconsistent when transaction contains segwit and non segwit
fixes #130
2020-10-27 02:07:39 +07:00
softsimon
d260a1ed73 Write cache.json on startup if it doesn't exist.
Write mempool and block data to cache on every new block
fixes #146
2020-10-27 00:05:06 +07:00
softsimon
6a8deff706 Adding form validators for donation form. 2020-10-26 23:23:08 +07:00
softsimon
018e95e648 Fixing missing dashboard graph labels in Firefox. 2020-10-26 23:12:32 +07:00
softsimon
1fc4e9530d Handle weird response body when fetching Bisq price.
fixes #145
2020-10-26 19:33:20 +07:00
wiz
9a94fccf40 Revert "Lock NPM versions."
This reverts commit b544af14e4.
2020-10-26 20:56:55 +09:00
softsimon
99162f5ec9 Sponsor Lightning support. 2020-10-26 18:29:25 +07:00
softsimon
b544af14e4 Lock NPM versions. 2020-10-26 15:59:28 +07:00
wiz
75ce300332 Don't call npm install with --only=prod 2020-10-26 04:24:05 +09:00
softsimon
fb47f5606a npm audit fix 2020-10-26 01:13:36 +07:00
softsimon
9d7b52a104 Removing AVG() from mysql query reducing execution time. Increasing graph data span.
fixes #106
2020-10-26 01:00:21 +07:00
wiz
c5c2d67fce Don't rebuild backend on every restart 2020-10-25 22:22:34 +09:00
softsimon
53bc7725ab Merge pull request #143 from TechMiX/master
update legend state after chart update
2020-10-24 00:27:09 +07:00
TechMiX
0fe32835c9 update legend state after chart update 2020-10-23 19:03:15 +02:00
wiz
aa8d3798ea API Docs: move Fee Estimate APIs to their own tab 2020-10-23 22:15:17 +09:00
softsimon
b4a17693af Only log warning if main update loop has failed more than once. 2020-10-23 16:27:02 +07:00
wiz
c6d0571be8 Merge pull request #138 from lucasmoten/patch-1
Update README with repository checkout guidance
2020-10-20 11:54:32 +09:00
wiz
56b551ea8e Update README to get latest release tag using portable parser 2020-10-20 11:54:04 +09:00
softsimon
bdeac55c97 Fix for statistics enabled config. 2020-10-19 20:24:22 +07:00
wiz
53f7839131 Don't append btc_mainnet/db/ to BISQ_MARKETS.DATA_PATH 2020-10-19 20:58:25 +09:00
wiz
32095cd6b3 Don't rate limit /api/v1/donations URL prefix for sponsor photos 2020-10-19 20:56:46 +09:00
wiz
d8521a9e21 Update production backend configuration files for all 4 instances 2020-10-19 20:40:56 +09:00
softsimon
962c024ecb Use default configs.
refs #141
2020-10-19 18:36:29 +07:00
wiz
4c82e292be Fix typo in previous commit 2020-10-19 19:49:02 +09:00
wiz
eb00b92996 Modify upgrade script to allow reverting to a specific git hash or tag 2020-10-19 19:43:30 +09:00
softsimon
cbef2ae6d0 Limit mempool clear protection to >20K TX mempool
fixes #140
2020-10-19 17:30:47 +07:00
softsimon
45efb604c1 Revamping configuration file.
fixes #141
2020-10-19 11:57:02 +07:00
softsimon
0abe62128e Reducing retry time to max 60 seconds 2020-10-18 22:48:15 +07:00
softsimon
49f70ca28a Slow down retries on Electrs errors in the main mempool loop. 2020-10-18 21:47:47 +07:00
softsimon
2ba7cd9ebd Proxy image requests. 2020-10-18 21:37:27 +07:00
wiz
70da8248cc Remove last paragraph on about page 2020-10-18 20:02:48 +09:00
wiz
716b1235ee Fix typo on about page text 2020-10-18 19:54:48 +09:00
wiz
e732f0f1dc Tweak about page text for project description 2020-10-18 19:28:11 +09:00
softsimon
fff8120daa Backend API to load sponsor profile photos. 2020-10-18 17:14:35 +07:00
wiz
9d4659c3ba Add Terms of Service links with minor tweaks to text formatting 2020-10-18 16:03:03 +09:00
wiz
95bb0fc265 Fix Bisq API docs page from not expanding on load 2020-10-18 13:53:45 +09:00
wiz
2c3f425797 Route /api and /<network/api URLs to HTML for API documentation 2020-10-18 13:11:02 +09:00
wiz
fb9b3202ca Add basic API documentation for all electrs endpoints 2020-10-18 12:56:08 +09:00
softsimon
7bf9810c48 Run Bisq block parse in separate Worker Thread. 2020-10-17 18:13:09 +07:00
softsimon
2715d02cf9 Fix exception handling. Don't save < 0.01 donations to DB.
refs #133
2020-10-17 15:01:58 +07:00
wiz
0fca6f3a3b Tweak about page spacing and text 2020-10-17 16:13:57 +09:00
wiz
2d3ed5f8cb Tag sponsored links with rel=sponsored, don't tag our social media links 2020-10-17 13:31:41 +09:00
wiz
988ed7e8af Add some brief text to our about page, state Bitcoin Only policy 2020-10-17 12:25:44 +09:00
wiz
c22d6e741a Change DB structure for donations: int -> varchar, blob -> mediumblob 2020-10-17 11:32:42 +09:00
softsimon
15fdb69b96 Use Twitter API to fetch profile photos.
fixes #133
2020-10-16 16:29:54 +07:00
softsimon
e7a7b45ad0 Readding "BISQ_ENABLED". Display 'bisq' in logs. 2020-10-15 11:54:21 +07:00
softsimon
d8857f1073 Replacing BISQ_ENABLED with NETWORK === "bisq" 2020-10-15 11:37:25 +07:00
softsimon
b767a0a33e Allow bisq network to be "bisq". 2020-10-15 11:15:04 +07:00
softsimon
472b1d35c2 Improve some logger error messages. 2020-10-15 11:12:33 +07:00
softsimon
86c654f22f New backend config "NETWORK".
Only activate mempool protection.
Log network to
fixes #140
2020-10-15 11:07:53 +07:00
softsimon
372c116283 Input sanitation. Minimum amount fix. Debug log updated. 2020-10-13 19:54:47 +07:00
softsimon
94e06a3a6b Add notice for BTCpay invoices and requests.
refs #135
2020-10-13 18:26:10 +07:00
wiz
3fd5277912 Update mempool-logger and syslog.conf to separate info and notice msgs 2020-10-13 19:58:11 +09:00
wiz
056fe5712d Add newsyslog.conf to rotate mempool logfiles regularly 2020-10-13 19:56:10 +09:00
softsimon
4399c5e8e9 Changing more loggings levels.
refs #135
2020-10-13 17:48:43 +07:00
wiz
cbcfbe5b36 Add mempool-logger script and syslog.conf configuration to log to it 2020-10-13 19:16:09 +09:00
softsimon
b98b979dc8 Changing more loggings levels.
refs #135
2020-10-13 16:58:48 +07:00
softsimon
3d374fd9d9 Changing more loggings levels.
refs #135
2020-10-13 16:43:09 +07:00
softsimon
4a14085908 Use persistent dgram socket client.
refs #135
2020-10-13 16:03:03 +07:00
softsimon
04ac820ed7 Changing common output messages to Debug.
refs #135
2020-10-13 16:00:58 +07:00
softsimon
4dacf292c2 Adding logger wrapper.
Log backend messages to syslog.
fixes #135
2020-10-13 15:27:52 +07:00
softsimon
4c203631db Making order_id (BTCPay invoice id) unique in the database. 2020-10-13 10:10:46 +07:00
Lucas Moten
ed3811bf2c Update README with repository checkout guidance
- Changed repository to clone based on updated organization
- Determine latest release from github api call.  An alternative form being `latestrelease=$(git describe --exact-match --abbrev=0)` to yield the most recent tag name.
2020-10-12 22:51:39 +00:00
softsimon
55646b5732 Handle and don't crash for adress-prefix search error.
fixes #121
2020-10-12 12:57:19 +07:00
wiz
f5e270c770 Use https:// instead of http:// to query mempool.space API 2020-10-12 14:26:01 +09:00
softsimon
e37a9de71d Proxy donation requests to mempool.space when BTCPay Sponsors is disabled. 2020-10-12 10:50:10 +07:00
wiz
7673bf13b9 Update terms of service, add Sponsor Policy for inappropriate profiles 2020-10-12 08:37:56 +09:00
wiz
88cb0d020d Merge pull request #132 from mempool/wiz/terms-of-service
Add new Terms of Service page with links and tweak About page layout for it
2020-10-11 20:58:40 +09:00
wiz
db16dbbc9d Apply suggestions from code review
Co-authored-by: softsimon <softsimon@users.noreply.github.com>
2020-10-11 20:57:52 +09:00
wiz
1d8d39db6b Only show first 8 characters of git commit hash on about page 2020-10-11 20:20:48 +09:00
wiz
024b2d58f7 Move social media icons to bottom, add terms of service links 2020-10-11 20:15:56 +09:00
wiz
bb3842fc10 Add basic Terms of Service page 2020-10-11 19:23:52 +09:00
wiz
8cd98b42fe Fix matomo URL filename 2020-10-10 11:55:27 +09:00
wiz
c8d22dc536 Load self-hosted matomo analytics stats on mempool.space domain 2020-10-10 11:42:32 +09:00
softsimon
a8a1f4e976 About page updates.
refs  #128
2020-10-09 13:56:43 +07:00
wiz
ba315648be Update top-level README screenshot and v2 guide 2020-10-09 06:10:23 +09:00
wiz
761eff62c5 Merge pull request #129 from mempool/donations-fixes
Enhancements to the sponsorship GUI
2020-10-09 04:20:35 +09:00
wiz
0e5f2dd1a4 Use higher resolution profile photos and other minor tweaks 2020-10-09 04:19:32 +09:00
softsimon
dfda0d1890 Bugfix: JS error in transactions.component
fixes #126
2020-10-08 17:53:02 +07:00
softsimon
784f00b725 Enhancements to the sponsorship GUI
fixes  #128
2020-10-08 17:51:10 +07:00
wiz
ad144a34ac Handle btcpay "paid" invoice status for sponsorship donations 2020-10-08 04:46:11 +09:00
wiz
9255f1c007 Merge pull request #125 from mempool/donations
Custom BTCPay donation integration
2020-10-08 02:57:48 +09:00
softsimon
87dc1e5db4 Check and accept both 'complete' and 'confirmed' invoices.
refs #122
2020-10-08 00:51:11 +07:00
softsimon
1f7483687f Don't allow invoices lower than 0.001 and require 0.01 for sponsorship.
refs #122
2020-10-08 00:20:42 +07:00
softsimon
0cbc7e2ab6 Make BTCPay webhook configurable.
refs #122
2020-10-08 00:15:26 +07:00
wiz
c48a151e21 Tweak upgrade script to take PR branch name as argument 2020-10-08 01:35:54 +09:00
softsimon
5b8dbfca74 Addig fronend flag (SPONSORS_ENABLED) to enable Sponsors in the gui.
refs #122
2020-10-07 23:30:45 +07:00
softsimon
b6738dd9e8 Moving API docs to separate /api page. 2020-10-07 23:24:01 +07:00
softsimon
0ee2753100 Only display About page on main Bitcoin network. 2020-10-07 20:27:22 +07:00
softsimon
17dd03682b Set 0.01 BTC as minimum donation limit
refs #122
2020-10-07 20:19:22 +07:00
softsimon
a07a4de255 Custom BTCPay donation integration
fixes #122
2020-10-07 20:15:42 +07:00
softsimon
774893f2fc Bugfix: Incoming transactions not parsed properly. 2020-10-06 13:31:33 +07:00
softsimon
98c398272c Fix for incorrect division in fee estimation.
refs #65
2020-10-05 16:26:39 +07:00
softsimon
beee916658 Updating package lock to fix potential vulns. 2020-10-05 12:31:56 +07:00
softsimon
15bb5a966b Improved empty mempool as well as medium and low fee estimations.
refs #65
2020-10-05 11:42:54 +07:00
softsimon
766bd0d1e0 Adding missing 'irregular' Bisq transaction type.
fixes  #118
2020-10-04 17:51:21 +07:00
wiz
a438ba9fcb Add btcpay donation iframe widget on about page for testing 2020-09-30 22:27:13 +09:00
wiz
5332e4765f Add .github/FUNDING.yml for sponsor button link URL configuration 2020-09-30 22:14:27 +09:00
softsimon
c0ad643d42 DiskCache fix when using clustering. 2020-09-30 00:25:43 +07:00
softsimon
140fc0c5e1 Bugfix: Mempool and blocks disk cache not saved on exit when using cluster. 2020-09-29 23:13:22 +07:00
softsimon
7c6c330b02 Bugfix: Websocket data push stopped working on disconnect, bug caused by 3dedf1e3 2020-09-29 20:52:32 +07:00
softsimon
e8de73cfbc Correct timer to get actual time to update bisq market data. 2020-09-29 19:38:01 +07:00
softsimon
d0b3b240e6 Bugfix for js error on transaction page.
Increase ping-pong timeout.
2020-09-29 18:27:44 +07:00
softsimon
05bea21cc8 Fix: Weight per second should be vBytes per second. 2020-09-29 15:07:04 +07:00
softsimon
0f72030d5e Enhancement: "Load more" is now "Load all"
fixes #117
2020-09-29 15:05:52 +07:00
softsimon
dfaa73803e Bugfix: Liquid asset issuance / circulating / burned amounts are missing decimal point
fixes #112
2020-09-29 03:54:56 +07:00
softsimon
64244228ea Dashboard ux fixes. 2020-09-28 23:05:42 +07:00
softsimon
da5556e3dc Liquid assets display fix. 2020-09-28 16:44:35 +07:00
softsimon
b95efca29d Various bugfixes. 2020-09-28 16:32:48 +07:00
wiz
e9d3b44e97 Set "LIQUID":true in production liquid backend config 2020-09-28 05:00:21 +09:00
softsimon
7848481d8f Dashboard ux fixes. 2020-09-28 02:51:01 +07:00
softsimon
3e3dd83243 Fix: Show fee box on Testnet and Liquid.
Use 0.1 sat/vB as minimum liquid fee.
2020-09-27 18:12:36 +07:00
softsimon
3450de774f Fix for Bisq blocks data watchers stopps working randomly. Restaring watcher when block height has diverged. 2020-09-27 17:21:18 +07:00
softsimon
f4a78a0e78 Fix for double subscribing to stats data. 2020-09-27 13:39:38 +07:00
softsimon
5536e5e77d Minor ux updates to dashboard. 2020-09-27 02:24:50 +07:00
softsimon
dbc2f9e2dd Rearranged dashboard graphs. 2020-09-27 01:31:20 +07:00
softsimon
677cea329c Fixing titles and margins for dashboard. 2020-09-27 00:39:29 +07:00
softsimon
209865d23f Minor dashboard mobile view fixes.
Offline indicator position fix.
2020-09-27 00:18:44 +07:00
softsimon
fe2c9bf49d Revering comment. 2020-09-26 23:48:18 +07:00
softsimon
21ef5054bf Moving fee box into a regular box. 2020-09-26 23:40:26 +07:00
softsimon
3dedf1e3e1 Adding mini-graphs on dashboard. 2020-09-26 22:46:26 +07:00
softsimon
43314c2283 Correct dashboard for mobile. 2020-09-26 11:56:37 +07:00
softsimon
dd31cbfd70 Dashboard design updates based on pedro feedback. 2020-09-26 03:50:32 +07:00
softsimon
f9bbc425d8 Switching order of latest transactions and blocks. 2020-09-26 02:42:39 +07:00
softsimon
d4f768e3b6 Adding latest blocks and transactions to dashboard. 2020-09-26 02:11:30 +07:00
wiz
aa3559e634 Add production script to update local copy of assets registry JSON 2020-09-24 18:42:13 +09:00
wiz
8dddd6e25e Use mempool's fork of Blockstream's Liquid asset registry db repo 2020-09-24 17:12:53 +09:00
wiz
3aff874479 Update production nginx.conf and mempool-config.json for Bisq Markets API 2020-09-23 19:39:46 +09:00
wiz
fa75c1b08d Move backend restart command from upgrade command into its own command 2020-09-23 19:05:28 +09:00
softsimon
ea0edc41e2 Minor ux updates. 2020-09-23 16:48:10 +07:00
softsimon
89533cf76f Improved graph visibility on mobile. 2020-09-23 15:49:07 +07:00
softsimon
007bb30826 Bisq transactions dropdown menu position fix. 2020-09-23 01:43:56 +07:00
softsimon
9e71f1a683 Improved dashboard loading indicators. 2020-09-22 12:50:12 +07:00
softsimon
0464ad4bcf Hide Difficulty Epoch on Liquid. Updated difficulty change calc. 2020-09-22 12:26:54 +07:00
softsimon
bcf68aa074 Menu design updates. 2020-09-22 12:07:08 +07:00
softsimon
b2e0edb919 Menu design updates. 2020-09-22 06:55:45 +07:00
softsimon
ffee91939e Justify menu items center on mobile. 2020-09-22 06:19:14 +07:00
softsimon
9e3fad610c Removing hamburger menu on mobile. Adjusted icon sizes. 2020-09-22 06:13:27 +07:00
softsimon
b67b025dc2 Replacing menu button texts with icons.
Latest blocks is now a separate page.
2020-09-22 05:51:34 +07:00
softsimon
2c3b02a682 NodeJS cluster: Delay child process auto restart 10 seconds on exit.
refs #108
2020-09-22 04:27:08 +07:00
softsimon
6d67fbde84 NodeJS cluster fix: Only save disk cache to disk when master.
fixes #108
2020-09-22 04:07:47 +07:00
softsimon
347ab1e220 NodeJS cluster support. 2020-09-22 03:52:54 +07:00
softsimon
21e985202d Add difficulty percent change indicator. 2020-09-22 03:31:19 +07:00
softsimon
6c1d28a9ac Replacing footer and latest blocks with a stats dashboard. 2020-09-21 19:41:12 +07:00
wiz
8146939f0f Remove unnecessary options from production README's bitcoin.conf 2020-09-20 05:45:29 +09:00
softsimon
508b5c0f4e Markets API: Adding cache for general /ticker requests 2020-09-19 23:02:02 +07:00
softsimon
84f0ebaba6 Market api: /volume api fix. 2020-09-19 15:59:09 +07:00
wiz
04cc1338c0 Set npm dep locutus to dev 2020-09-19 02:25:51 +09:00
wiz
630e3fa863 Update production scripts to only install production npm deps 2020-09-19 02:19:47 +09:00
softsimon
5d2c0d2e0a Markets API: Use file mtime to only parse files that has updated. 2020-09-18 23:43:45 +07:00
wiz
55852bcf62 Update production bisq instance backend config for Bisq Markets data 2020-09-18 22:02:23 +09:00
wiz
91815072d5 Update production scripts to install/load NodeJS/npm using nvm 2020-09-18 21:53:58 +09:00
wiz
07cfdd73aa Fix upgrade script not restarting node due to new command line args 2020-09-18 18:08:59 +09:00
softsimon
059e4d079a Markets api: Add missing "timestamp" parameter for /hloc and /volumes 2020-09-17 15:38:25 +07:00
softsimon
14697a01cc Corrected Offers response data. 2020-09-17 02:45:14 +07:00
softsimon
4d4eaecb87 Market api: Fix memory leak 2020-09-15 23:12:42 +07:00
wiz
344413568d Increase NodeJS max heap to 4GB RAM for backend instance 2020-09-16 00:46:34 +09:00
softsimon
77cbb302ce Bisq market: Fix for missing prices from /trades 2020-09-15 12:37:54 +07:00
wiz
c1c0521ab4 Merge pull request #107 from mempool/bisq-markets
Bisq markets API
2020-09-15 05:28:28 +09:00
softsimon
a11135f358 * /volumes API
* /ticker API
2020-09-15 03:11:52 +07:00
softsimon
bafe2db094 HLOC markets api. 2020-09-13 17:51:53 +07:00
softsimon
98cc81c53d Corrections to parameters handling and sorting. 2020-09-12 01:26:51 +07:00
softsimon
60b1dd15f4 Fix pluralization for "transactions".
Display "genesis block" on block 0
2020-09-10 14:55:49 +07:00
softsimon
88e5b03430 Bisq Markets API. WIP 2020-09-10 14:46:23 +07:00
wiz
9234d23da2 Update production nginx.conf with performance tuning and rate limiting 2020-09-10 14:39:04 +09:00
softsimon
04351e843d Correcting robots.txt 2020-08-26 17:31:59 +07:00
softsimon
0041500e08 Correcting robots.txt 2020-08-26 17:24:40 +07:00
softsimon
4e8908925c Adding robots.txt 2020-08-26 17:05:29 +07:00
softsimon
80fc3df76d bugfix: vbytespersecond display was limited to 1667 2020-08-19 11:33:18 +07:00
softsimon
147de195a9 deleting yarn lock since we rely on NPM package-lock.json 2020-08-19 11:31:50 +07:00
softsimon
5300fb1265 Revert "Display whole fee span on mined blocks."
This reverts commit cb51b71128.
2020-08-13 02:53:52 +07:00
softsimon
71c44d725a Pagination fixes. 2020-08-13 02:35:10 +07:00
softsimon
097e2ba0ea Assets page pagination. 2020-08-13 00:46:44 +07:00
softsimon
b1c8166936 Update title to - "<network> Explorer" 2020-08-12 14:04:04 +07:00
softsimon
2d02ec7092 Return HTTP 503 from Fee Api when mempool is still syncing.
Fix for displaying git commit on About page.
2020-08-12 13:33:58 +07:00
softsimon
dd0b67716f Optimization for bisq transaction table rendering 2020-08-11 00:43:24 +07:00
softsimon
95bab64424 Fixes for bisq pagination and tx type select history 2020-08-11 00:01:22 +07:00
softsimon
b00a9ee938 Bisq Pagination and tx type select history. Increased transactions per page. 2020-08-10 23:47:44 +07:00
softsimon
d2a14e9cb7 Default to 1 sat/vB when mempool is empty. 2020-08-10 22:04:51 +07:00
softsimon
09b1a0d430 Hide "included in block" if block is clearly visible. 2020-08-10 17:48:07 +07:00
softsimon
1b9900ccf8 Add commit hash to the bottom of the about page
fixes #102
2020-08-10 14:59:29 +07:00
softsimon
cb51b71128 Display whole fee span on mined blocks.
fixes #101
2020-08-10 14:48:09 +07:00
softsimon
5411feee36 Default mempool backend to local electrs mock server. 2020-08-10 14:32:16 +07:00
softsimon
912a5dab27 Add proper timestamp to transaction pages. 2020-08-09 10:44:01 +07:00
softsimon
63fb733dc2 Adding OnPush to more components 2020-08-09 10:39:27 +07:00
softsimon
648be481d7 Upgrading bisq transaction type filter with a multiselect dropdown 2020-08-08 22:48:18 +07:00
softsimon
fea79f2ff4 Add pagination history to bisq transactions and blocks page. 2020-08-07 13:11:55 +07:00
softsimon
01b3407a9c Updated fee texts 2020-08-04 00:56:01 +07:00
softsimon
58ec9444a5 Change detection refactoring. 2020-08-02 19:20:38 +07:00
softsimon
bf1101ff66 Add testnet and bisq to local development proxy config. 2020-08-02 18:31:47 +07:00
softsimon
e6fa274aca Changedetection performance improvements. 2020-08-02 16:00:08 +07:00
softsimon
fa2a995de6 Fix for text overflow in footer 2020-08-02 15:30:28 +07:00
softsimon
7443522ed8 Merge pull request #100 from mempool/dependabot/npm_and_yarn/frontend/elliptic-6.5.3
Bump elliptic from 6.5.2 to 6.5.3 in /frontend
2020-08-01 12:35:37 +07:00
dependabot[bot]
dbe5f3bf06 Bump elliptic from 6.5.2 to 6.5.3 in /frontend
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-01 03:52:27 +00:00
softsimon
1f22819e0c Fixed margins. 2020-07-30 21:55:46 +07:00
softsimon
58a6bbd88b Subscription refactoring to increase performance. 2020-07-30 17:01:13 +07:00
softsimon
bb6272469d Refactor to use OnPush 2020-07-30 15:38:55 +07:00
softsimon
c1caaa37aa Refactor footer component to using OnPush. 2020-07-30 13:50:21 +07:00
softsimon
d1c786e2f6 Fee box: Only display on mainnet 2020-07-30 13:24:03 +07:00
softsimon
67dbea3faf Fee box fixes. 2020-07-30 13:13:22 +07:00
softsimon
bc92fb669b Display only the mempool blocks on mobile devices. 2020-07-30 12:43:22 +07:00
softsimon
51bed8e852 Merge pull request #99 from mempool/fees-box
Adding fee estimation component to front page
2020-07-29 21:54:46 +07:00
softsimon
81d7072a95 Fee box: Mobile view 2020-07-29 17:30:30 +07:00
softsimon
36d952b503 Fee block: Fees order fix. 2020-07-29 16:54:08 +07:00
softsimon
266c347292 Fee box: Handle empty mempool. 2020-07-29 15:20:23 +07:00
softsimon
9e0097e7b6 Adding fee estimation component to front page
fixes #98
2020-07-29 15:16:09 +07:00
softsimon
599159ecf0 Fix: Don't build statistics cache when DB is disabled. 2020-07-29 13:57:49 +07:00
softsimon
4c5ff7714e Adding eof new line 2020-07-28 14:27:38 +07:00
softsimon
010aef1e90 Bisq: burntFee should be displayed on asset listing fee tx types 2020-07-28 13:31:25 +07:00
wiz
d7a5ecc4aa Add bisq websocket proxy in production nginx.conf 2020-07-26 00:03:30 +09:00
softsimon
2b4b0d22ab Fix for electrs requests on /bisq 2020-07-25 21:59:52 +07:00
softsimon
24e40b25fd New config that lets frontend connect to a separate Bisq mempool backend. 2020-07-25 21:21:53 +07:00
softsimon
0ded140c72 Address suggestion fixes: Added ellipsis on long addresses. Search on item select. 2020-07-25 17:52:41 +07:00
wiz
7f7c6ef6f8 Minor tweaks to production, use git pull --rebase, only build 1 frontend 2020-07-25 01:46:51 +09:00
softsimon
81d05e23b8 Add typeahead address prefix. 2020-07-24 22:37:35 +07:00
wiz
d2673281f9 Fix .gitattributes for line endings again 2020-07-24 22:42:08 +09:00
softsimon
807b335534 Adding package-lock.json. 2020-07-24 20:16:56 +07:00
wiz
6ded0f54c4 Add production 4th instance for bisq backend 2020-07-24 21:53:57 +09:00
wiz
067540980e Add filesystem notes to production README doc 2020-07-24 21:53:55 +09:00
softsimon
fa88bd7057 Upgraded typescript and tslint version and fixed query type error. 2020-07-24 19:38:39 +07:00
softsimon
adcec33fb9 Remove non existing import. 2020-07-24 18:59:49 +07:00
softsimon
6a4184a413 Bisq types list order. 2020-07-24 18:52:55 +07:00
softsimon
7f71781916 Bisq: Feature to filter transaction types. 2020-07-24 18:41:15 +07:00
softsimon
24182a6fb3 Fixes. 2020-07-24 14:11:49 +07:00
softsimon
959e2b55cb Show prettier empty mempool blocks. 2020-07-24 12:23:49 +07:00
softsimon
0f11642418 Fix for creating empty blocks. 2020-07-24 12:11:05 +07:00
softsimon
c7a09ffbfc Display correct BTC unit depending on network. 2020-07-24 11:49:36 +07:00
softsimon
9980414969 Handle coinbase transactions no longer has undefined fee. 2020-07-24 00:20:59 +07:00
softsimon
9d8c1184ab Re-adding design credits. 2020-07-23 22:21:46 +07:00
softsimon
490223b40a Correced Liquid asset amouts. 2020-07-23 17:55:59 +07:00
softsimon
73d0900343 Display fee correctly on Liquid blocks. 2020-07-23 16:01:28 +07:00
softsimon
23f5e229c9 Fixes to block reward display on Liquid. 2020-07-23 12:10:22 +07:00
softsimon
b6b9001406 Display empty mempool instead of no mempool blocks at all. 2020-07-23 10:53:42 +07:00
softsimon
86c0a5ec7b Add setting to disable database use. 2020-07-23 00:04:29 +07:00
softsimon
251b8cdd8d Fix for block transition when switching networks. 2020-07-22 20:09:02 +07:00
softsimon
0f611ecf8a Adding a global websocket loader observable.
fixes #95
2020-07-22 19:21:40 +07:00
softsimon
6b3e84255a Display transaction fees even if they are zero. 2020-07-22 13:41:50 +07:00
softsimon
a4c49d42af Display "stack of X blocks" instead of "8th block" on the mempool block stack. 2020-07-21 13:20:17 +07:00
softsimon
942e1a7d68 Fix for weird block animation when navigating back to main page. 2020-07-21 12:47:51 +07:00
softsimon
a1b931851a Block text corrections. 2020-07-21 10:26:43 +07:00
softsimon
62d2fc8113 Using two watchers to monitor Bisq data top and sub directory, and added more error handling. 2020-07-21 10:23:21 +07:00
wiz
85d0deb239 Fix .gitattributes for CRLF issue 2020-07-20 18:47:16 +09:00
softsimon
e5c4642af4 Delay restarting of sub watcher to let Bisq recreate the directories. 2020-07-20 16:36:08 +07:00
softsimon
6a2d6d6291 Shorten 'minutes' and 'seconds' on mobile. 2020-07-20 12:21:30 +07:00
softsimon
362a3554f9 Block design corrections 2020-07-20 12:21:08 +07:00
softsimon
7bbfbdb188 Restoring "fee span" on blocks. 2020-07-20 11:03:53 +07:00
softsimon
9fa95ccbe8 Improv: On new block push, simultaneously send new mempool stats. 2020-07-20 10:44:05 +07:00
softsimon
5e16c592cb Bufix: Miner started reloading when switching transaction page 2020-07-20 10:29:38 +07:00
softsimon
eac605f181 Canonical url is now in index.html as default. 2020-07-19 23:55:56 +07:00
softsimon
caf5ae944a Add x-close button to block. 2020-07-19 22:54:31 +07:00
softsimon
b34648389c Restoring dynamic canonical URL. 2020-07-19 22:49:06 +07:00
softsimon
3b380fa4cc Adding X-button to close mempool blocks. 2020-07-19 19:49:27 +07:00
softsimon
8695bb9bb1 Upgrade libs. 2020-07-19 19:34:09 +07:00
wiz
222b7b9dd6 Merge pull request #92 from mempool/bisq
Bisq support
2020-07-19 20:33:16 +09:00
softsimon
621ff8fed5 Fix for responsive bug in medium screen size mode. 2020-07-19 17:55:33 +07:00
softsimon
83d821d80d bisq transaction link fix 2020-07-19 15:36:58 +07:00
softsimon
ee6108ccec Display tx data on bisq transaction page. 2020-07-19 15:28:27 +07:00
softsimon
cca69556d0 Refactored "features" and "fee rating" from transaction into components. 2020-07-19 14:54:42 +07:00
softsimon
c893608a41 Updated api docs. 2020-07-19 13:48:05 +07:00
softsimon
fbb8185c82 Responsiveness fixes. 2020-07-19 13:46:30 +07:00
softsimon
cfb60c0bad Update Bisq API paths to /api/bisq 2020-07-19 12:57:41 +07:00
wiz
4e6ba18f19 Add proxy_pass with rewrite for /bisq/api into nginx.conf 2020-07-18 21:07:36 +09:00
softsimon
5198c3a5af Send correct content-types. 2020-07-18 18:46:33 +07:00
softsimon
66c565a3d7 Adding multiple fs.watch-ers to handle Bisq restarts. 2020-07-18 18:17:24 +07:00
softsimon
3df36cd3b8 Watch for bisq dump recursively. 2020-07-18 13:41:40 +07:00
softsimon
425f4152b6 Handle confirm transactions not present in the bisq database. 2020-07-18 13:09:57 +07:00
softsimon
d22e4a03e6 Adding Bisq API to About page.
Watching partent bisq dump folder.
2020-07-18 12:59:12 +07:00
softsimon
3ff1957f0c Table design and responsiveness updates. 2020-07-18 11:04:04 +07:00
softsimon
74e9eca0d9 Fixed bisq transaction id. 2020-07-16 17:56:40 +07:00
softsimon
ad3c295fd6 Handle errors in block component. 2020-07-16 16:46:10 +07:00
softsimon
d3d3fd0db1 If bisq tx not found, check for regular tx and redirect to /tx/ 2020-07-16 16:18:35 +07:00
softsimon
c5759be3ee Fix responsiveness. 2020-07-16 14:36:02 +07:00
softsimon
87e56e2975 Network menu design updates. 2020-07-16 14:30:27 +07:00
softsimon
40afa7a420 Remove filename check for fs.watch 2020-07-16 00:55:41 +07:00
softsimon
40f7eaf7ba Watch dir instead of json file.
Adding divider to network dropdown.
2020-07-16 00:33:53 +07:00
softsimon
e4a65bd19a Corrected Liquid logo. 2020-07-15 16:19:08 +07:00
softsimon
3333b76c98 Rearange network dropdown.
API for Bisq block height tip.
Loading indicators on transactions/blocks view.
Total sent now correctly display burnt on Pay trade fee txs.
2020-07-15 13:10:13 +07:00
softsimon
3008f99668 Show fiat value of totalRecieved for addresses.
Rename fee to fee burnt.
2020-07-14 23:49:57 +07:00
softsimon
ca0cf23d66 Bisq stats page.
BSQ prices.
2020-07-14 21:26:02 +07:00
softsimon
b7376fbd8d Bisq statistics page. 2020-07-14 14:38:52 +07:00
softsimon
87abfc38cb Display network logo in the top bar.
Allow search for block height.
Hide empty bisq blocks.
2020-07-13 23:22:24 +07:00
softsimon
432fb9cd66 Address index and api.
Address view.
2020-07-13 21:46:25 +07:00
softsimon
db2e293ce5 Bisq module separation.
Transaction view.
Block view.
Blocks list.
2020-07-13 15:16:12 +07:00
softsimon
60e1b9a41e Bisq explorer is now a separate module. 2020-07-11 00:17:13 +07:00
softsimon
8c23eae5fe Auto reload bisq dump file. 2020-07-10 14:13:07 +07:00
softsimon
4ff9663812 merge from master 2020-07-05 23:24:06 +07:00
softsimon
c9c892b4fe Merge pull request #90 from mempool/rename-api-endpoints
Rename API endpoints in frontend and nginx.conf to match blockstream
2020-07-05 22:42:00 +07:00
wiz
4aca806b70 Rename API endpoints in frontend and nginx.conf to match blockstream 2020-07-06 00:15:16 +09:00
wiz
50ccdc424d Add HTTP Link: header for canonical URL reference to mempool.space 2020-07-05 16:34:26 +09:00
wiz
926842d949 Fix HTTP content-security-policy header typo 2020-07-04 18:00:41 +09:00
wiz
ae4eb22db9 Add HTTP security headers to production nginx.conf 2020-07-04 17:57:26 +09:00
softsimon
c21dad88bf WIP: Bisq DAO support. Transactions list and details. 2020-07-03 23:45:19 +07:00
softsimon
2ebdb27dcb Fixing routes to /tv and /status 2020-07-02 22:34:16 +07:00
softsimon
f5260b72e5 enable status view for liquid and testnet 2020-07-02 20:51:55 +07:00
softsimon
2aca447f9e Adding /status-view 2020-07-02 17:56:15 +07:00
wiz
f1a1039dea Merge pull request #89 from 6102bitcoin/master
Remove shadow on Block-Height value
2020-07-01 02:21:18 +09:00
6102bitcoin
953eea7321 Remove shadown on Block-Height value 2020-06-30 18:19:09 +01:00
wiz
c4d4d931f1 Add <noscript> tag in index.html for Tor browser or NoJS users 2020-06-28 22:14:16 +09:00
softsimon
c20ba429b1 Increased frontend auto reload timeout.
Increased time limit on new transaction processing.
2020-06-23 14:49:06 +07:00
softsimon
0a264a7078 Adding support for optional frontend config.
Dropdown network selector is hidden by default, and enabled using config.
fixes #79
2020-06-22 22:10:49 +07:00
softsimon
7e9ba6b983 Bugfix: Latestblock height didn't propagate in the template
Renaming Contributors to About
2020-06-21 14:55:16 +07:00
wiz
c9cc660e54 Update production upgrade script to update main repo, announce hostname 2020-06-21 01:53:24 +09:00
wiz
0609ce91d0 Update production README dependency packages for FreeBSD 2020-06-21 01:53:07 +09:00
softsimon
57029405a7 Removing "blockchain" tab to make medium size display not overlap. 2020-06-20 21:54:42 +07:00
softsimon
ae9f57322b Liquid fee amount fix, network was read to early 2020-06-19 23:57:57 +07:00
softsimon
22813a09e8 Display fees correctly for Liquid blocks. 2020-06-19 23:32:17 +07:00
softsimon
279b79b9b1 Reducing mempool detection sensitivity to 25%
refs #76
2020-06-18 17:10:07 +07:00
softsimon
b92eef8198 Set in sync to false when mempool clear protection is active.
refs #76
2020-06-18 14:34:56 +07:00
softsimon
6688421e39 Prevent mempool from being flushed when restarting bitcoind.
fixes #76
2020-06-18 13:54:54 +07:00
wiz
21e2ce6a85 Remove old unused favicons for apple homescreen 2020-06-17 18:40:16 +09:00
wiz
91c40da8c9 Remove old unused favicons for android homescreen 2020-06-17 18:30:01 +09:00
wiz
d513bd7ea8 Update favicons with transparent icon - fixes #87 2020-06-17 18:28:15 +09:00
softsimon
cc48e0be2c Fix: Don't calculate block fee for Liquid.
Completing interfaces.
2020-06-17 15:01:58 +07:00
softsimon
6eca311147 Display input/output asset transfers
fixes #85
2020-06-12 16:17:52 +07:00
softsimon
56c6612e2e Don't fully animate when tab is deactivated.
refs #47
2020-06-11 01:38:59 +07:00
softsimon
07b543d6bf Disabling new block sound until we have a setting for this.
refs #84
2020-06-11 00:41:39 +07:00
softsimon
43dac03ec0 Bigfix: Don't chime when switching networks.
fixes #84
2020-06-11 00:11:15 +07:00
softsimon
36e46249b5 Transition new blocks from the mempool onto the blockchain.
Chime on new blocks.
fixes #47
fixes #84
2020-06-10 23:52:14 +07:00
softsimon
ea708de9fb Speed up mempool loop. 2020-06-09 02:32:24 +07:00
softsimon
0177224eba Adding types to callback functions. 2020-06-09 02:08:46 +07:00
softsimon
912d45165b Don't call mempoolChanged after disk cache dump. 2020-06-08 19:19:31 +07:00
softsimon
8b6a681614 Detect RBF-transactions and offer to track them.
fixes #78
2020-06-08 18:55:53 +07:00
softsimon
f0b0fc3f4b Push new block and mempool synchronized.
Measure projected block accuracy.
refs #47
2020-06-08 02:08:51 +07:00
softsimon
9bf38da470 Merge pull request #83 from mempool/dependabot/npm_and_yarn/frontend/websocket-extensions-0.1.4
Bump websocket-extensions from 0.1.3 to 0.1.4 in /frontend
2020-06-07 20:39:02 +07:00
dependabot[bot]
cec6bf59f2 Bump websocket-extensions from 0.1.3 to 0.1.4 in /frontend
Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/faye/websocket-extensions-node/releases)
- [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-07 12:14:55 +00:00
softsimon
7ade4c114b Code cleanup. 2020-06-07 17:30:32 +07:00
softsimon
4bef9f9b79 Display coinbase and op return messages all the time. 2020-06-06 23:50:08 +07:00
softsimon
6662bc4646 Display at least one standalone mempool block.
Upgrade some packages to ng 9.
2020-06-04 15:08:24 +07:00
softsimon
e917d40909 Dynamic itemsPerPage on assets list. 2020-06-01 15:56:32 +07:00
softsimon
3cf839e1da Icons to network dropdown. 2020-06-01 15:08:27 +07:00
softsimon
55835b3741 Spread gradient correctly on unfilled blocks. 2020-05-31 18:34:03 +07:00
softsimon
da4ce0855c Block transactions list now use pagination instead of infinite scroll. 2020-05-30 21:18:53 +07:00
softsimon
5e5f048071 Hide horizontal scrollbar. 2020-05-30 18:04:06 +07:00
softsimon
969367c8bb Improved Liquid Assets page with pagination and search filter. 2020-05-30 16:26:39 +07:00
softsimon
235c9b0bdd Mempool gradient update, again. 2020-05-30 10:20:29 +07:00
softsimon
2c24c2de83 Corrected that horrible green color. 2020-05-30 09:56:38 +07:00
softsimon
9ef5c420d9 Change mempool gradient to green-yellow-red 2020-05-29 22:16:20 +07:00
softsimon
3deedada07 Display Segwit and RBF information 2020-05-28 18:39:45 +07:00
softsimon
84e15b133a Mobile responsive fixes. 2020-05-28 15:50:19 +07:00
softsimon
16603e4fc1 Throw error when failing to download json assets. 2020-05-28 01:56:32 +07:00
softsimon
3b546b234f Handle missing assets in search. 2020-05-28 01:01:35 +07:00
softsimon
559a6dd19a Slightly increased gradient span and contrast on mempool blocks 2020-05-27 17:14:02 +07:00
softsimon
8167debbe9 Expose git commit hash to backend info api. 2020-05-27 15:18:04 +07:00
wiz
4d4b6f4831 Add GitHub issue template with info about support requests 2020-05-26 23:15:39 +09:00
wiz
ca9ee0e6ae Add torrc in production README 2020-05-26 23:13:57 +09:00
wiz
b9d9875e98 Remove duplicate npm install and build steps in production scripts 2020-05-26 21:52:50 +09:00
wiz
9af0015c22 Remove uacomment from bitcoin.conf 2020-05-26 21:34:47 +09:00
wiz
c732f2d423 Always run "npm install" when upgrading, only build mainnet frontend 2020-05-26 21:34:45 +09:00
softsimon
68664968da Add backendInfo api endpoint. 2020-05-26 18:06:14 +07:00
softsimon
5b80b43e2a Add hostname to initial websocket data. 2020-05-26 16:34:55 +07:00
wiz
4ece586709 Add missing MySQL grant statements in production README 2020-05-26 13:23:57 +09:00
wiz
01ac06b096 Fix start/upgrade scripts to properly restart the backend processes 2020-05-26 13:23:55 +09:00
wiz
73fb18b929 Ignore line endings for package.json files 2020-05-26 13:23:52 +09:00
softsimon
5cbbf5a186 Crash fix. 2020-05-26 11:02:12 +07:00
softsimon
0b74e6cba8 Bootstrap version update and progressbar fix.
Yellow fee text is now white.
2020-05-25 22:36:50 +07:00
wiz
ecbc3e7580 Add production site setup guide and related install scripts 2020-05-25 20:58:46 +09:00
wiz
003361befb Update misc files used for mempool.space production website 2020-05-25 18:42:00 +09:00
softsimon
2c345426cb Strip attached coinbase transactions to save data. 2020-05-24 22:45:45 +07:00
softsimon
ba007a4b17 Use dynamic gradient based on fee levels on mempool blocks.
fixes #64
2020-05-24 22:23:56 +07:00
softsimon
4d2fcf96c6 Duplicate code fix. 2020-05-24 16:29:30 +07:00
softsimon
f4117df63d Display "in several hours" for transactions over 7 blocks away. 2020-05-24 00:25:04 +07:00
softsimon
b32afac98c Remove arrow when switching to old block. 2020-05-22 14:03:06 +07:00
softsimon
5e3c71e11c Allow blockchain horizontal scrolling. 2020-05-22 13:22:23 +07:00
softsimon
565aa499e5 Reveal coinbase scriptsig and op_return scriptpubkey ascii on hover. 2020-05-22 00:35:45 +07:00
softsimon
58942ec88a Display fees in transaction list 2020-05-21 01:55:46 +07:00
softsimon
7e07e2cd8a Fix address tracking issues. 2020-05-20 17:00:50 +07:00
softsimon
30d2c5de27 Liquid Graph fix.
Key navigation fix.
Addresses overflow fix.
Firefox float fix.
2020-05-17 17:06:09 +07:00
softsimon
afb4f6e70b Fixed keyboard navigation bugs. 2020-05-13 13:03:57 +07:00
softsimon
910696e41c Removing halving event code. 2020-05-12 14:49:29 +07:00
softsimon
422055046e Blink projected halving block. 2020-05-12 01:12:38 +07:00
softsimon
ba3aba918a Network based block progressbar colors. 2020-05-10 21:50:32 +07:00
softsimon
4d53e897b4 Network based blockchain colors. 2020-05-10 21:34:25 +07:00
softsimon
50f98807a3 Graph x-axis date fix. 2020-05-10 17:44:19 +07:00
softsimon
db64abec4e Dropdown color update. 2020-05-10 16:22:35 +07:00
softsimon
91a45aae30 Search box text updated.
BTC ticker fix.
Dropdown color fix.
Miner button tooltip.
2020-05-10 16:03:22 +07:00
softsimon
9b4e5194c1 Allow search and navigate by block height.
fixes #41
2020-05-10 14:32:27 +07:00
softsimon
756caf2c53 Improved network switching. 2020-05-10 12:31:57 +07:00
wiz
e4d54ebb14 Add missing lines at top of nginx.conf for user and pid files 2020-05-10 03:56:48 +09:00
wiz
d92492eba6 Update production nginx.conf to run all 3 sites on same hostname 2020-05-10 03:48:16 +09:00
softsimon
1d542c15e4 Arrow navigation fix.
Liquid native asset notification fix.
2020-05-10 01:34:28 +07:00
softsimon
c08a4c8424 Instant mining pool identification from recent blocks.
refs #59
2020-05-10 00:54:07 +07:00
softsimon
0753b11840 Identify and display mining pool.
fixes #59
2020-05-10 00:35:21 +07:00
softsimon
1feb985bec Liquid and Testnet now accessable from the main site
fixes #35
2020-05-09 20:37:50 +07:00
softsimon
20c7ee98e7 Asset tracking.
Asset caching.
refs #37
2020-05-05 15:26:23 +07:00
softsimon
d662292afb Fixed asset infinite scroll. 2020-05-03 00:56:48 +07:00
softsimon
0d435c9e1a Hide assets on mainnet. 2020-05-02 17:52:26 +07:00
softsimon
6a51162f99 Renaming file assets folder to resources to not confuse with Liquid assets. 2020-05-02 16:59:14 +07:00
softsimon
44d19550e8 Assets list. Native asset updates.
refs #37
2020-05-02 16:29:34 +07:00
softsimon
ac9e718ef1 Sync asset registry on build.
refs #37
2020-05-02 14:04:33 +07:00
softsimon
11b1d9bbd3 Assets support WIP
refs #37
2020-05-02 12:36:35 +07:00
softsimon
b2d2fd225c Basic Liquid Asset support. 2020-04-28 17:10:31 +07:00
softsimon
7e7b536acb Renaming angular project to 'mempool' from 'mempoolspace' 2020-04-28 00:14:29 +07:00
softsimon
9025d4dd54 - Switched the arrow colors for spent/unspent utxos
- Collapse dropdown on search (mobile)
2020-04-14 15:35:20 +07:00
softsimon
e02924e8dd Another bugfix related to the mempool transaction subscription. 2020-04-13 02:43:43 +07:00
softsimon
590f1d2b04 Improvments to the mempool transaction subscription. 2020-04-13 02:06:10 +07:00
softsimon
e2671df4be Wait for an push transactions that hasn't yet appeared in the mempool 2020-04-13 01:26:53 +07:00
softsimon
c5796a8062 Improved websocket tx/address tracking handling when disconnecting . 2020-04-12 03:03:51 +07:00
softsimon
52e2d364dd Changing sats to sat. 2020-04-11 23:23:39 +07:00
softsimon
7c58195d10 Adding countdown timer
refs #50
2020-04-10 01:14:18 +07:00
softsimon
fc7a5c2e28 Adding countdown timer
refs #50
2020-04-10 01:05:21 +07:00
softsimon
38d424f793 Special halvening block and fireworks.
fixes #50
2020-04-09 17:46:30 +07:00
softsimon
53999dbea5 Round medianFee instead of ceil
Minor ui fixes.
2020-04-09 15:23:46 +07:00
softsimon
498df53f25 Format transaction count numbers. 2020-04-07 00:44:22 +07:00
softsimon
eaaf7bedc2 upgrading tslint to v6 2020-04-05 00:00:17 +07:00
softsimon
01c1b22419 Upgrading frontend to angular 9.1 2020-04-04 23:50:10 +07:00
softsimon
d7a7095b8d Prepend network name to title when on testnet or liquid. 2020-04-04 21:47:05 +07:00
softsimon
b082763438 Send empty mempoolInfo responsive instead of undefined on server restart. 2020-04-04 01:11:46 +07:00
softsimon
c6df78815b Added mempool inSync property to backend. Display on frontend when not in sync and on't create statistics when not in sync.
fixes #29
2020-04-01 20:06:44 +07:00
softsimon
03316f99d1 Handle empty and invalid addresses 2020-03-30 14:54:48 +07:00
wiz
0b23e5bcd3 Add instructions for Docker Hub to README 2020-03-30 03:59:03 +09:00
softsimon
8d903c42b9 Corrected canonical url. 2020-03-30 01:53:39 +07:00
softsimon
0bcfdc8028 Set dynamic canonical url 2020-03-30 01:44:22 +07:00
softsimon
9814927849 Merging duplicate mempool graph code. 2020-03-29 23:59:04 +07:00
softsimon
24c23f1ee8 Only display 0-1sat/vB on Liquid. 2020-03-28 19:24:13 +07:00
softsimon
2f83da7ce9 Various bugfixes and removing unfairly cheap joke. 2020-03-28 16:38:28 +07:00
softsimon
3f35671fb5 Color fix for 0-1 sat/vb fees in tv graph 2020-03-28 16:02:21 +07:00
softsimon
18989cf1e4 Display 0-1 sat/vb fees in graph 2020-03-28 13:55:52 +07:00
wiz
630967680f Move sitemap XML files into their own folder, add to .gitignore 2020-03-27 23:04:46 +09:00
wiz
f7381a88e5 Change metadata descriptions to Bitcoin Only 2020-03-27 22:58:21 +09:00
softsimon
f21585782f Adding unfairly cheap for very low fee transactions. 2020-03-27 17:56:42 +07:00
wiz
fccfa202e1 Add production nginx.conf for mempool.space and mempool.ninja hosts 2020-03-27 15:16:17 +09:00
wiz
f78c35bdcf Fix xml header on sitemap, don't gzip every sitemap file 2020-03-27 09:26:54 +09:00
wiz
1823212899 Fix sitemap bugs, reduce blocks per sitemap to 100 2020-03-27 09:00:42 +09:00
wiz
a0d6365c61 Fix sitemap generation lastmod timestamp 2020-03-27 08:33:08 +09:00
wiz
a266ed30b2 Tweak sitemap generation to have 1000 blocks per file 2020-03-27 08:11:07 +09:00
wiz
028bcbf53e Add script to generate sitemap links for each block hash 2020-03-27 07:49:37 +09:00
softsimon
1d0dc5c418 Merge pull request #66 from mempool/dependabot/npm_and_yarn/frontend/acorn-6.4.1
Bump acorn from 6.4.0 to 6.4.1 in /frontend
2020-03-27 03:55:15 +07:00
softsimon
e3bf8d0039 Repointing meta tags to correct domain. 2020-03-27 03:50:10 +07:00
dependabot[bot]
cd0573e0d1 Bump acorn from 6.4.0 to 6.4.1 in /frontend
Bumps [acorn](https://github.com/acornjs/acorn) from 6.4.0 to 6.4.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.4.0...6.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-03-26 20:20:15 +00:00
softsimon
294e6d1667 Adding "load more" for large input/output sets. 2020-03-27 02:34:09 +07:00
softsimon
af86956836 Set outspend fetch limit on transaction level. 2020-03-27 01:33:39 +07:00
softsimon
550a096749 Bugfixes. 2020-03-27 01:29:55 +07:00
softsimon
12546e1096 Liquid: Display BTC as L-BTC. 2020-03-25 21:55:18 +07:00
softsimon
6b96dce478 Liquid: Display block times and amounts correctly. 2020-03-25 21:29:40 +07:00
softsimon
9a8740cbe0 Small fixes. 2020-03-25 18:41:16 +07:00
softsimon
05d4eb7696 Renaming Mempool blocks to "next block" + ux fixes 2020-03-25 03:59:30 +07:00
softsimon
628df1a972 Mobile view design updates. 2020-03-25 02:55:26 +07:00
softsimon
fe216b12d9 Mobile padding improvements. 2020-03-25 00:41:46 +07:00
softsimon
9c532499e8 Refactor address reactive flow. 2020-03-24 21:38:11 +07:00
softsimon
ffa97fedf3 Bugfix: Refetch unconfirmed transaction when returning back online. 2020-03-24 21:01:29 +07:00
softsimon
a244458928 Removing bad code 2020-03-24 01:00:39 +07:00
softsimon
2628dc1271 Update page Title for SEO. 2020-03-24 00:52:08 +07:00
softsimon
93c5f0bd84 Adding ETA, confirmed time, and other ui improvements to transaction page. 2020-03-23 04:07:31 +07:00
softsimon
245af5fa8f Improved how mempool blocks handle updates 2020-03-23 01:43:03 +07:00
softsimon
bd641271a9 Bugfix and inprovments for arrow navigation. 2020-03-22 23:45:16 +07:00
softsimon
78e41fc3d3 Refactord blockchain is rendering, block arrow location propagation and keynavigation. 2020-03-22 17:44:36 +07:00
softsimon
69827843c9 Navigate between blocks using keyboard arrows. 2020-03-21 03:38:18 +07:00
softsimon
4ae5576452 Update fee distribution graph and fix arrow. 2020-03-20 02:11:40 +07:00
softsimon
e84ec7dd86 Fixed sorting issue that caused the median calculation bug. 2020-03-20 02:07:12 +07:00
softsimon
72658c19f6 Adding "mempool block" details. Work in progress! 2020-03-17 21:53:20 +07:00
softsimon
3e6f382c4d Adding mouse over title to fee rate badge. 2020-03-16 02:41:13 +07:00
softsimon
8a5887e890 Only return "initial block amount" on init, and treat high fees in empty blocks as overpaid. 2020-03-16 02:25:14 +07:00
softsimon
abf74c1aaf Adding fee rating to confirmed transactions. 2020-03-16 02:01:03 +07:00
softsimon
dbf8d025e9 Adding median fee to block. 2020-03-15 17:12:09 +07:00
softsimon
9b33baa4c1 TV view didn't request mempool blocks. 2020-03-14 13:48:01 +07:00
softsimon
7c2849b331 Adjusting font-sizes. Logo size. 2020-03-13 22:05:44 +07:00
wiz
5b41ecf6e5 Remove more instances of # before block height number 2020-03-13 23:03:46 +09:00
wiz
79f85ebf47 Tweak projected blocks to match blockchain blocks, tweak font size 2020-03-13 22:22:15 +09:00
wiz
fd4d0123d1 Remove ".space" from mempool logo, fixes #55 2020-03-13 22:01:30 +09:00
wiz
70445ddfa2 Tweak to the block layout, move block height down, only show median fee 2020-03-13 21:33:45 +09:00
wiz
95d15bde2f Remove "#" from block-height number for cleaner look 2020-03-13 20:56:05 +09:00
wiz
e8ba7b7f0c Increase block height font-size from 12px to 18px 2020-03-13 20:29:00 +09:00
softsimon
6c05a25303 Merge branch 'master' of https://github.com/mempool/mempool
* 'master' of https://github.com/mempool/mempool:
  Add new package.json for top-level mempool project
  Update package.json for mempool-frontend
2020-03-13 18:00:44 +07:00
softsimon
e351bcea73 Fix for the websocket DOS bug. 2020-03-13 18:00:34 +07:00
wiz
6af45c86f8 Add new package.json for top-level mempool project 2020-03-13 19:51:25 +09:00
wiz
c8da732771 Update package.json for mempool-frontend 2020-03-13 19:48:10 +09:00
wiz
0bf337b7a6 Update package.json for mempool-backend 2020-03-13 19:44:56 +09:00
softsimon
2f94200a45 Responsive mempool blocks. 2020-03-12 21:56:07 +07:00
softsimon
82ac10af93 Preload latest blocks until it fills the screen on inital load.
closes #42
2020-03-11 18:04:57 +07:00
softsimon
f94007979b Removing latest transactions component. 2020-03-11 16:31:37 +07:00
softsimon
4d5580eabb Replace some spinners with skeleton loaders. 2020-03-11 16:06:11 +07:00
softsimon
c0aa9ff925 Don't lookup transaction times for confirmed transactions 2020-03-10 15:33:58 +07:00
softsimon
3c38aaaf33 Fixes to responsive design. 2020-03-10 15:25:49 +07:00
softsimon
0f41b0d933 Making block, transaction, and address view responsive.
closes #43
2020-03-10 14:46:12 +07:00
wiz
71cd4e1279 Capitalize the B in Bitcoin in metadata 2020-03-10 04:10:31 +09:00
wiz
4096d44688 Tweak that metadata 2020-03-10 04:05:29 +09:00
wiz
7e1b99f726 Moar tweaks to opengraph metadata and twitter card metadata 2020-03-10 03:30:27 +09:00
softsimon
701b8610e5 Reducing size of twitter card image. 2020-03-10 01:29:11 +07:00
wiz
1c883cf150 Shorten opengraph description and twitter card description to fit 2020-03-10 03:19:50 +09:00
wiz
33ffabcd28 Fix page title (accidentally deleted in previous commit) 2020-03-10 03:16:54 +09:00
wiz
7aeb4ef692 Add opengraph metadata + twitter card preview (fixes #38) 2020-03-10 03:11:29 +09:00
softsimon
2296ad69b9 Adding a third connection state and preventing offline indicator from pushing the menu. 2020-03-09 17:53:54 +07:00
softsimon
994c42440d Adding more websocket connection reconnect fail safe.
fixes #44
2020-03-09 01:41:43 +07:00
softsimon
677f99d03b Bugfix for null error when using transaction tracking 2020-03-09 00:23:45 +07:00
softsimon
4574d18ce3 Improved websocket disconnections. 2020-03-06 13:47:04 +07:00
softsimon
a6809e99f1 Adding console log messages to websocket error handling. 2020-03-06 02:27:22 +07:00
softsimon
5d4ce44627 Introduce a websocket ping check that closes the socket if no response. 2020-03-06 02:05:26 +07:00
softsimon
b60d9cdfbc General responsive improvments. 2020-03-05 16:13:46 +07:00
softsimon
9851ae7169 Made decimals more nice and clear. 2020-03-04 15:55:54 +07:00
softsimon
7186426441 Block reward calculation fix. 2020-03-04 15:30:35 +07:00
softsimon
73e24195da Adding miner block reward and fee to block info. 2020-03-04 15:10:30 +07:00
softsimon
f71ac67d24 Responsive latest blocks and transactions tables. 2020-03-04 02:53:31 +07:00
softsimon
c1a8863861 Improvments to responsiveness 2020-03-03 17:47:01 +07:00
softsimon
2fe7af0c22 Handle some cases of api not returning full data. 2020-03-03 16:44:32 +07:00
softsimon
2b9be35afa Fast forward the block fetching if backend has been offline for a while. 2020-03-03 15:11:14 +07:00
softsimon
4ae6b982e0 Template fix. 2020-03-02 17:31:33 +07:00
softsimon
669a5e429d Added fiat balance to address and made fiat balance into a component. 2020-03-02 17:29:00 +07:00
softsimon
d28730787a Removed comment. 2020-03-02 15:07:52 +07:00
softsimon
02373f366c Moving strings to template. 2020-03-01 23:18:03 +07:00
softsimon
2382aa44e1 Write cache to disk on SIGTERM as with SIGINT. 2020-03-01 23:09:33 +07:00
softsimon
4d2ebcede9 Updating to new github url. 2020-03-01 22:56:14 +07:00
softsimon
15e25b447f Address loadmore bugfix. 2020-03-01 18:09:42 +07:00
softsimon
dc775b7ee5 Infinite scroll fixes. 2020-03-01 16:33:18 +07:00
softsimon
90c05ccb51 Infinite scroll replaces "load more" buttons. 2020-03-01 03:32:12 +07:00
softsimon
c9b161423d Send git-commit hash to client on reconnect to force client reload on backend update 2020-03-01 00:42:41 +07:00
softsimon
943d96ee8c Latest block design updates. 2020-02-29 23:42:50 +07:00
softsimon
39394e1178 Also save and load blocks to cache.json for speedy restarts. 2020-02-29 21:52:04 +07:00
softsimon
50b4e1523e Minor UX fixes. 2020-02-28 05:28:23 +07:00
softsimon
ef862e2442 Additional fixes for address transaction fetching. 2020-02-28 04:16:15 +07:00
softsimon
3d3cec2582 Optimized address transaction fetching. 2020-02-28 03:51:59 +07:00
softsimon
4879036216 Added first seen on mempool transactions. 2020-02-28 01:09:07 +07:00
softsimon
23a61a37fd Confirmed address transactions fix. QR Code fix. (take 2) 2020-02-26 23:21:16 +07:00
softsimon
37166e230d Confirmed address transactions fix. QR Code fix. 2020-02-26 21:11:43 +07:00
wiz
f9c03f2a98 Disable nginx cache for electrs reverse proxy 2020-02-26 23:07:48 +09:00
softsimon
7fbc6f1461 Moved websocket handling to its own file and cleaned up index.ts 2020-02-26 17:49:53 +07:00
wiz
ff92ae43a5 Add missing blocks table to SQL schema 2020-02-26 13:59:48 +09:00
softsimon
a122432c24 Address tracking and notification sounds. 2020-02-26 04:29:57 +07:00
wiz
3709b652ae Merge pull request #30 from mempool-space/v2
mempool v2 repo merge
2020-02-26 03:46:02 +09:00
wiz
aa58e62440 Update README with release tag checkout instructions 2020-02-26 03:42:59 +09:00
Simon Lindh
8e52a2ba06 Design updates. 2020-02-26 03:39:22 +09:00
wiz
f744d83b65 Simplify contributor roles on team page 2020-02-26 03:38:30 +09:00
wiz
c8666d4079 Add nginx proxy_pass for /electrs -> localhost port 3000 2020-02-26 03:37:51 +09:00
Simon Lindh
057bff69fc Various fixes and design updates. 2020-02-26 03:37:00 +09:00
Simon Lindh
c5c068a8d4 Empty block fix. 2020-02-26 03:35:46 +09:00
Simon Lindh
32fdb32792 Connection config and proxy updates. 2020-02-26 03:35:08 +09:00
Simon Lindh
d690511a08 Footer and header design updates. 2020-02-26 03:34:20 +09:00
Simon Lindh
c8c1be594b Adding production and deployment files. 2020-02-26 03:33:17 +09:00
Simon Lindh
3453e84889 Basic address tracking. 2020-02-26 03:31:45 +09:00
Simon Lindh
5186f81d56 Track transaction among mempool blocks. 2020-02-26 03:30:51 +09:00
Simon Lindh
f3cfa038d3 Transaction tracking revamped.
Blockchain block arrow.
2020-02-26 03:28:57 +09:00
Simon Lindh
34645908e9 Refactor. API explanations. UX revamp. 2020-02-26 03:26:16 +09:00
Simon Lindh
acd658a0e7 Optimize statistics. 2020-02-26 03:21:21 +09:00
Simon Lindh
ac95c09ea6 New base code for mempool blockchain explorerer 2020-02-26 03:19:26 +09:00
wiz
ca40fc7045 Update README with release tag checkout instructions 2020-02-26 02:34:37 +09:00
1330 changed files with 552815 additions and 21279 deletions

3
.gitattributes vendored Normal file
View File

@@ -0,0 +1,3 @@
# ignore all differences in line endings
package.json eol=crlf -crlf
*/package.json eol=crlf -crlf

1
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1 @@
backend/src/api/database-migration.ts @wiz @softsimon

43
.github/ISSUE_TEMPLATE/00-bug-issue.md vendored Normal file
View File

@@ -0,0 +1,43 @@
---
name: 🐛 Bug Report
about: Report bugs (no support requests, please)
---
<!--
SUPPORT REQUESTS:
This is for reporting bugs in Mempool, not for support requests.
If you have a support request, please reach out on Matrix:
https://matrix.to/#/#mempool.support:bitcoin.kyoto
-->
### Description
<!-- brief description of the bug -->
#### Version
<!-- commit id or version number -->
### Steps to reproduce
<!-- if you can reliably reproduce the bug, list the steps here -->
### Expected behaviour
<!-- description of the expected behavior -->
### Actual behaviour
<!-- explain what happened instead of the expected behaviour -->
### Screenshots
<!-- Screenshots if gui related, drag and drop to add to the issue -->
#### Device or machine
<!-- device/machine used, operating system -->
#### Additional info
<!-- Additional information useful for debugging (e.g. logs) -->

View File

@@ -0,0 +1,27 @@
---
name: ✨ Feature Request
about: Request a feature or suggest other enhancements
---
<!--
SUPPORT REQUESTS:
This is for requesting features in Mempool, not for support requests.
If you have a support request, please reach out on Matrix:
https://matrix.to/#/#mempool.support:bitcoin.kyoto
-->
### Description
<!-- brief description of the feature request -->
### Problem to be solved
<!-- description of the the problem you're having -->
### Proposed solution
<!-- explain how you think we should solve the problem -->
#### Additional info
<!-- Additional information useful for implementing (e.g. docs, links, etc.) -->

8
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: 🙋 Need help? Chat with us on Matrix
url: https://matrix.to/#/#mempool.support:bitcoin.kyoto
about: For support requests or general questions
- name: 🌐 Want to help with translations? Use Transifex
url: https://www.transifex.com/mempool/mempool
about: All translations work is done on Transifex

68
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,68 @@
version: 2
updates:
- package-ecosystem: npm
versioning-strategy: increase
directory: "/backend"
schedule:
interval: daily
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types:
["version-update:semver-major", "version-update:semver-patch"]
allow:
- dependency-type: "production"
- package-ecosystem: npm
directory: "/frontend"
versioning-strategy: increase
groups:
frontend-angular-dependencies:
patterns:
- "@angular*"
- "@ng-*"
- "ngx-*"
frontend-jest-dependencies:
patterns:
- "@types/jest"
- "jest"
frontend-eslint-dependencies:
patterns:
- "@typescript-eslint*"
- "eslint"
schedule:
interval: daily
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types:
["version-update:semver-major", "version-update:semver-patch"]
allow:
- dependency-type: "production"
- package-ecosystem: docker
directory: "/docker/backend"
schedule:
interval: weekly
ignore:
- dependency-name: "*"
update-types:
["version-update:semver-major", "version-update:semver-patch"]
- package-ecosystem: docker
directory: "/docker/frontend"
schedule:
interval: weekly
ignore:
- dependency-name: "*"
update-types:
["version-update:semver-major", "version-update:semver-patch"]
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: weekly
ignore:
- dependency-name: "*"
update-types:
["version-update:semver-major", "version-update:semver-patch"]

6
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,6 @@
<!--
Please do not open pull requests for translations.
All translations work is done on Transifex:
https://www.transifex.com/mempool/mempool
-->

362
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,362 @@
name: CI Pipeline for the Backend and Frontend
on:
pull_request:
types: [opened, review_requested, synchronize]
jobs:
backend:
if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')"
strategy:
matrix:
node: ["20", "21"]
flavor: ["dev", "prod"]
fail-fast: false
runs-on: "ubuntu-latest"
name: Backend (${{ matrix.flavor }}) - node ${{ matrix.node }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: ${{ matrix.node }}/${{ matrix.flavor }}
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
registry-url: "https://registry.npmjs.org"
- name: Read rust-toolchain file from repository
id: gettoolchain
run: echo "::set-output name=toolchain::$(cat ./rust/gbt/rust-toolchain)"
working-directory: ${{ matrix.node }}/${{ matrix.flavor }}
- name: Install ${{ steps.gettoolchain.outputs.toolchain }} Rust toolchain
# Latest version available on this commit is 1.71.1
# Commit date is Aug 3, 2023
uses: dtolnay/rust-toolchain@d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
with:
toolchain: ${{ steps.gettoolchain.outputs.toolchain }}
- name: Install
if: ${{ matrix.flavor == 'dev'}}
run: npm ci
working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend
- name: Install (Prod dependencies only)
if: ${{ matrix.flavor == 'prod'}}
run: npm ci --omit=dev --omit=optional
working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend
- name: Lint
if: ${{ matrix.flavor == 'dev'}}
run: npm run lint
working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend
- name: Unit Tests
if: ${{ matrix.flavor == 'dev'}}
run: npm run test:ci
working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend
- name: Build
run: npm run build
working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/backend
cache:
name: "Cache assets for builds"
runs-on: "ubuntu-latest"
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: assets
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
registry-url: "https://registry.npmjs.org"
- name: Install (Prod dependencies only)
run: npm ci --omit=dev --omit=optional
working-directory: assets/frontend
- name: Restore cached mining pool assets
continue-on-error: true
id: cache-mining-pool-restore
uses: actions/cache/restore@v4
with:
path: |
mining-pool-assets.zip
key: mining-pool-assets-cache
- name: Restore promo video assets
continue-on-error: true
id: cache-promo-video-restore
uses: actions/cache/restore@v4
with:
path: |
promo-video-assets.zip
key: promo-video-assets-cache
- name: Unzip assets before building (src/resources)
continue-on-error: true
run: unzip -o mining-pool-assets.zip -d assets/frontend/src/resources/mining-pools
- name: Unzip assets before building (src/resources)
continue-on-error: true
run: unzip -o promo-video-assets.zip -d assets/frontend/src/resources/promo-video
# - name: Unzip assets before building (dist)
# continue-on-error: true
# run: unzip assets.zip -d assets/frontend/dist/mempool/browser/resources
- name: Sync-assets
run: npm run sync-assets-dev
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MEMPOOL_CDN: 1
VERBOSE: 1
working-directory: assets/frontend
- name: Zip mining-pool assets
run: zip -jrq mining-pool-assets.zip assets/frontend/src/resources/mining-pools/*
- name: Zip promo-video assets
run: zip -jrq promo-video-assets.zip assets/frontend/src/resources/promo-video/*
- name: Upload mining pool assets as artifact
uses: actions/upload-artifact@v4
with:
name: mining-pool-assets
path: mining-pool-assets.zip
- name: Upload promo video assets as artifact
uses: actions/upload-artifact@v4
with:
name: promo-video-assets
path: promo-video-assets.zip
- name: Save mining pool assets cache
id: cache-mining-pool-save
uses: actions/cache/save@v4
with:
path: |
mining-pool-assets.zip
key: mining-pool-assets-cache
- name: Save promo video assets cache
id: cache-promo-video-save
uses: actions/cache/save@v4
with:
path: |
promo-video-assets.zip
key: promo-video-assets-cache
frontend:
needs: cache
if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')"
strategy:
matrix:
node: ["20", "21"]
flavor: ["dev", "prod"]
fail-fast: false
runs-on: "ubuntu-latest"
name: Frontend (${{ matrix.flavor }}) - node ${{ matrix.node }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: ${{ matrix.node }}/${{ matrix.flavor }}
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
registry-url: "https://registry.npmjs.org"
- name: Install (Prod dependencies only)
run: npm ci --omit=dev --omit=optional
if: ${{ matrix.flavor == 'prod'}}
working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/frontend
- name: Install
if: ${{ matrix.flavor == 'dev'}}
run: npm ci
working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/frontend
- name: Lint
if: ${{ matrix.flavor == 'dev'}}
run: npm run lint
working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/frontend
# - name: Test
# run: npm run test
- name: Restore cached mining pool assets
continue-on-error: true
id: cache-mining-pool-restore
uses: actions/cache/restore@v4
with:
path: |
mining-pool-assets.zip
key: mining-pool-assets-cache
- name: Restore promo video assets
continue-on-error: true
id: cache-promo-video-restore
uses: actions/cache/restore@v4
with:
path: |
promo-video-assets.zip
key: promo-video-assets-cache
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: mining-pool-assets
- name: Unzip assets before building (src/resources)
run: unzip -o mining-pool-assets.zip -d ${{ matrix.node }}/${{ matrix.flavor }}/frontend/src/resources/mining-pools
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: promo-video-assets
- name: Unzip assets before building (src/resources)
run: unzip -o promo-video-assets.zip -d ${{ matrix.node }}/${{ matrix.flavor }}/frontend/src/resources/promo-video
# - name: Unzip assets before building (dist)
# run: unzip assets.zip -d ${{ matrix.node }}/${{ matrix.flavor }}/frontend/dist/mempool/browser/resources
- name: Display resulting source tree
run: ls -R
- name: Build
run: npm run build
working-directory: ${{ matrix.node }}/${{ matrix.flavor }}/frontend
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MEMPOOL_CDN: 1
VERBOSE: 1
e2e:
if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')"
runs-on: "ubuntu-latest"
needs: frontend
strategy:
fail-fast: false
matrix:
module: ["mempool", "liquid"]
include:
- module: "mempool"
spec: |
cypress/e2e/mainnet/*.spec.ts
cypress/e2e/signet/*.spec.ts
cypress/e2e/testnet4/*.spec.ts
- module: "liquid"
spec: |
cypress/e2e/liquid/liquid.spec.ts
cypress/e2e/liquidtestnet/liquidtestnet.spec.ts
name: E2E tests for ${{ matrix.module }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: ${{ matrix.module }}
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 20
cache: "npm"
cache-dependency-path: ${{ matrix.module }}/frontend/package-lock.json
- name: Restore cached mining pool assets
continue-on-error: true
id: cache-mining-pool-restore
uses: actions/cache/restore@v4
with:
path: |
mining-pool-assets.zip
key: mining-pool-assets-cache
- name: Restore cached promo video assets
continue-on-error: true
id: cache-promo-video-restore
uses: actions/cache/restore@v4
with:
path: |
promo-video-assets.zip
key: promo-video-assets-cache
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: mining-pool-assets
- name: Unzip assets before building (src/resources)
run: unzip -o mining-pool-assets.zip -d ${{ matrix.module }}/frontend/src/resources/mining-pools
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: promo-video-assets
- name: Unzip assets before building (src/resources)
run: unzip -o promo-video-assets.zip -d ${{ matrix.module }}/frontend/src/resources/promo-video
- name: Chrome browser tests (${{ matrix.module }})
uses: cypress-io/github-action@v5
with:
tag: ${{ github.event_name }}
working-directory: ${{ matrix.module }}/frontend
build: npm run config:defaults:${{ matrix.module }}
start: npm run start:local-staging
wait-on: "http://localhost:4200"
wait-on-timeout: 120
record: true
parallel: true
spec: ${{ matrix.spec }}
group: Tests on Chrome (${{ matrix.module }})
browser: "chrome"
ci-build-id: "${{ github.sha }}-${{ github.workflow }}-${{ github.event_name }}"
env:
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
validate_docker_json:
if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')"
runs-on: "ubuntu-latest"
name: Validate generated backend Docker JSON
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: docker
- name: Install jq
run: sudo apt-get install jq -y
- name: Create new start script to run on CI
run: |
sed '$d' start.sh > start_ci.sh
working-directory: docker/docker/backend
- name: Run the script to generate the sample JSON
run: |
sh start_ci.sh
working-directory: docker/docker/backend
- name: Validate JSON syntax
run: |
cat mempool-config.json | jq
working-directory: docker/docker/backend

View File

@@ -0,0 +1,19 @@
name: 'Check if servers are in sync'
on: [workflow_dispatch]
jobs:
print-backend-sha:
runs-on: 'ubuntu-latest'
name: Get block height
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: repo
- name: Run script
working-directory: repo
run: |
chmod +x ./scripts/get_block_tip_height.sh
sh ./scripts/get_block_tip_height.sh

19
.github/workflows/get_backend_hash.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: 'Print backend hashes'
on: [workflow_dispatch]
jobs:
print-backend-sha:
runs-on: 'ubuntu-latest'
name: Print backend hashes
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: repo
- name: Run script
working-directory: repo
run: |
chmod +x ./scripts/get_backend_hash.sh
sh ./scripts/get_backend_hash.sh

26
.github/workflows/get_image_digest.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: 'Print images digest'
on:
workflow_dispatch:
inputs:
version:
description: 'Image Version'
required: false
default: 'latest'
type: string
jobs:
print-images-sha:
runs-on: 'ubuntu-latest'
name: Print digest for images
steps:
- name: Checkout
uses: actions/checkout@v3
with:
path: digest
- name: Run script
working-directory: digest
run: |
sh ./docker/scripts/get_image_digest.sh $VERSION
env:
VERSION: ${{ github.event.inputs.version }}

107
.github/workflows/on-tag.yml vendored Normal file
View File

@@ -0,0 +1,107 @@
name: Docker build on tag
env:
DOCKER_CLI_EXPERIMENTAL: enabled
TAG_FMT: "^refs/tags/(((.?[0-9]+){3,4}))$"
DOCKER_BUILDKIT: 0
COMPOSE_DOCKER_CLI_BUILD: 0
on:
push:
tags:
- v[0-9]+.[0-9]+.[0-9]+
- v[0-9]+.[0-9]+.[0-9]+-*
permissions:
contents: read
jobs:
build:
strategy:
matrix:
service:
- frontend
- backend
runs-on: ubuntu-latest
timeout-minutes: 120
name: Build and push to DockerHub
steps:
# Workaround based on JonasAlfredsson/docker-on-tmpfs@v1.0.1
- name: Replace the current swap file
shell: bash
run: |
sudo swapoff /mnt/swapfile
sudo rm -v /mnt/swapfile
sudo fallocate -l 13G /mnt/swapfile
sudo chmod 600 /mnt/swapfile
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile
- name: Show current memory and swap status
shell: bash
run: |
sudo free -h
echo
sudo swapon --show
- name: Mount a tmpfs over /var/lib/docker
shell: bash
run: |
if [ ! -d "/var/lib/docker" ]; then
echo "Directory '/var/lib/docker' not found"
exit 1
fi
sudo mount -t tmpfs -o size=10G tmpfs /var/lib/docker
sudo systemctl restart docker
sudo df -h | grep docker
- name: Set env variables
run: echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
- name: Show set environment variables
run: |
printf " TAG: %s\n" "$TAG"
- name: Add SHORT_SHA env property with commit short sha
run: echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV
- name: Login to Docker for building
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
- name: Checkout project
uses: actions/checkout@v4
- name: Init repo for Dockerization
run: docker/init.sh "$TAG"
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
id: qemu
- name: Setup Docker buildx action
uses: docker/setup-buildx-action@v3
id: buildx
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Cache Docker layers
uses: actions/cache@v3
id: cache
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Run Docker buildx for ${{ matrix.service }} against tag
run: |
docker buildx build \
--cache-from "type=local,src=/tmp/.buildx-cache" \
--cache-to "type=local,dest=/tmp/.buildx-cache" \
--platform linux/amd64,linux/arm64 \
--tag ${{ secrets.DOCKER_HUB_USER }}/${{ matrix.service }}:$TAG \
--tag ${{ secrets.DOCKER_HUB_USER }}/${{ matrix.service }}:latest \
--build-context rustgbt=./rust \
--build-context backend=./backend \
--output "type=registry" ./${{ matrix.service }}/ \
--build-arg commitHash=$SHORT_SHA

9
.gitignore vendored Normal file
View File

@@ -0,0 +1,9 @@
sitemap
data
docker-compose.yml
backend/mempool-config.json
*.swp
frontend/src/resources/config.template.js
frontend/src/resources/config.js
target
docker/backend/start_ci.sh

1
.nvmrc Normal file
View File

@@ -0,0 +1 @@
v20.8.0

6
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"editor.tabSize": 2,
"typescript.preferences.importModuleSpecifier": "relative",
"typescript.tsdk": "./backend/node_modules/typescript/lib",
"rust-analyzer.procMacro.ignored": { "napi-derive": ["napi"] }
}

51
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,51 @@
# Contributing to The Mempool Open Source Project
Thank you for contributing to The Mempool Open Source Project managed by Mempool Space K.K. (“Mempool”).
In order to clarify the intellectual property license granted with Contributions from any person or entity, Mempool must have a statement on file from each Contributor indicating their agreement to the Contributor License Agreement (“Agreement”). This license is for your protection as a Contributor as well as the protection of Mempool and its other contributors and users; it does not change your rights to use your own Contributions for any other purpose.
When submitting a pull request for the first time, please create a file with a name like `/contributors/{github_username}.txt`, and in the content of that file indicate your agreement to the Contributor License Agreement terms below. An example of what that file should contain can be seen in wiz's agreement file. (This method of CLA "signing" is borrowed from Medium's open source project.)
Also, please GPG-sign all your commits (`git config commit.gpgsign true`).
# Contributor License Agreement
Last Updated: January 25, 2022
By accepting this Agreement, You agree to the following terms and conditions for Your present and future Contributions submitted to Mempool. Except for the license granted herein to Mempool and recipients of software distributed by Mempool, You reserve all right, title, and interest in and to Your Contributions.
### 1. Definitions
“You” (or “Your”) shall mean the copyright owner or legal entity authorized by the copyright owner that is making this Agreement with Mempool. For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single Contributor. For the purposes of this definition, “control” means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
“Contribution” shall mean any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to Mempool for inclusion in, or documentation of, any of the products owned or managed by Mempool (“Work”). For the purposes of this definition, “submitted” means any form of electronic, verbal, or written communication sent to Mempool or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Mempool for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by You as “Not a Contribution.”
### 2. Grant of Copyright License
Subject to the terms and conditions of this Agreement, You hereby grant to Mempool and to recipients of software distributed by Mempool a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works.
### 3. Grant of Patent License
Subject to the terms and conditions of this Agreement, You hereby grant to Mempool and to recipients of software distributed by Mempool a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted. If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that your Contribution, or the Work to which you have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Agreement for that Contribution or Work shall terminate as of the date such litigation is filed.
### 4. Authority
You represent that you are legally entitled to grant the above license. If your employer(s) has rights to intellectual property that you create that includes your Contributions, you represent that you have received permission to make Contributions on behalf of that employer, that your employer has waived such rights for your Contributions to Mempool, or that your employer has executed a separate Corporate Contributor License Agreement with Mempool.
### 5. Originality
You represent that each of Your Contributions is Your original creation (see section 7 for submissions on behalf of others). You represent that Your Contribution submissions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which you are personally aware, and which are associated with any part of Your Contributions.
### 6. Support
You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your Contributions on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON- INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
### 7. Third Party Contributions
Should You wish to submit work that is not Your original creation, You may submit it to Mempool separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as “Submitted on behalf of a third-party: [named here]”.
### 8. Notifications
You agree to notify Mempool of any facts or circumstances of which you become aware that would make these representations inaccurate in any respect.
EOF

660
COPYING.md Normal file
View File

@@ -0,0 +1,660 @@
### GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc.
<https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
### Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains
free software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing
under this license.
The precise terms and conditions for copying, distribution and
modification follow.
### TERMS AND CONDITIONS
#### 0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public
License.
"Copyright" also means copyright-like laws that apply to other kinds
of works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of
an exact copy. The resulting work is called a "modified version" of
the earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user
through a computer network, with no transfer of a copy, is not
conveying.
An interactive user interface displays "Appropriate Legal Notices" to
the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
#### 1. Source Code.
The "source code" for a work means the preferred form of the work for
making modifications to it. "Object code" means any non-source form of
a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users can
regenerate automatically from other parts of the Corresponding Source.
The Corresponding Source for a work in source code form is that same
work.
#### 2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not convey,
without conditions so long as your license otherwise remains in force.
You may convey covered works to others for the sole purpose of having
them make modifications exclusively for you, or provide you with
facilities for running those works, provided that you comply with the
terms of this License in conveying all material for which you do not
control copyright. Those thus making or running the covered works for
you must do so exclusively on your behalf, under your direction and
control, on terms that prohibit them from making any copies of your
copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under the
conditions stated below. Sublicensing is not allowed; section 10 makes
it unnecessary.
#### 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such
circumvention is effected by exercising rights under this License with
respect to the covered work, and you disclaim any intention to limit
operation or modification of the work as a means of enforcing, against
the work's users, your or third parties' legal rights to forbid
circumvention of technological measures.
#### 4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
#### 5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these
conditions:
- a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
- b) The work must carry prominent notices stating that it is
released under this License and any conditions added under
section 7. This requirement modifies the requirement in section 4
to "keep intact all notices".
- c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
- d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
#### 6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of
sections 4 and 5, provided that you also convey the machine-readable
Corresponding Source under the terms of this License, in one of these
ways:
- a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
- b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the Corresponding
Source from a network server at no charge.
- c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
- d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
- e) Convey the object code using peer-to-peer transmission,
provided you inform other peers where the object code and
Corresponding Source of the work are being offered to the general
public at no charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal,
family, or household purposes, or (2) anything designed or sold for
incorporation into a dwelling. In determining whether a product is a
consumer product, doubtful cases shall be resolved in favor of
coverage. For a particular product received by a particular user,
"normally used" refers to a typical or common use of that class of
product, regardless of the status of the particular user or of the way
in which the particular user actually uses, or expects or is expected
to use, the product. A product is a consumer product regardless of
whether the product has substantial commercial, industrial or
non-consumer uses, unless such uses represent the only significant
mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to
install and execute modified versions of a covered work in that User
Product from a modified version of its Corresponding Source. The
information must suffice to ensure that the continued functioning of
the modified object code is in no case prevented or interfered with
solely because modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or
updates for a work that has been modified or installed by the
recipient, or for the User Product in which it has been modified or
installed. Access to a network may be denied when the modification
itself materially and adversely affects the operation of the network
or violates the rules and protocols for communication across the
network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
#### 7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders
of that material) supplement the terms of this License with terms:
- a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
- b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
- c) Prohibiting misrepresentation of the origin of that material,
or requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
- d) Limiting the use for publicity purposes of names of licensors
or authors of the material; or
- e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
- f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions
of it) with contractual assumptions of liability to the recipient,
for any liability that these contractual assumptions directly
impose on those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions; the
above requirements apply either way.
#### 8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
#### 9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or run
a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
#### 10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
#### 11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims owned
or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within the
scope of its coverage, prohibits the exercise of, or is conditioned on
the non-exercise of one or more of the rights that are specifically
granted under this License. You may not convey a covered work if you
are a party to an arrangement with a third party that is in the
business of distributing software, under which you make payment to the
third party based on the extent of your activity of conveying the
work, and under which the third party grants, to any of the parties
who would receive the covered work from you, a discriminatory patent
license (a) in connection with copies of the covered work conveyed by
you (or copies made from those copies), or (b) primarily for and in
connection with specific products or compilations that contain the
covered work, unless you entered into that arrangement, or that patent
license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
#### 12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under
this License and any other pertinent obligations, then as a
consequence you may not convey it at all. For example, if you agree to
terms that obligate you to collect a royalty for further conveying
from those to whom you convey the Program, the only way you could
satisfy both those terms and this License would be to refrain entirely
from conveying the Program.
#### 13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your
version supports such interaction) an opportunity to receive the
Corresponding Source of your version by providing access to the
Corresponding Source from a network server at no charge, through some
standard or customary means of facilitating copying of software. This
Corresponding Source shall include the Corresponding Source for any
work covered by version 3 of the GNU General Public License that is
incorporated pursuant to the following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
#### 14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Affero General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever
published by the Free Software Foundation.
If the Program specifies that a proxy can decide which future versions
of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
#### 15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
CORRECTION.
#### 16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
#### 17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
### How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively state
the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper
mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for
the specific requirements.
You should also get your employer (if you work as a programmer) or
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. For more information on this, and how to apply and follow
the GNU AGPL, see <https://www.gnu.org/licenses/>.

View File

@@ -1,57 +0,0 @@
FROM alpine:latest
RUN mkdir /mempool.space/
COPY ./backend /mempool.space/backend/
COPY ./frontend /mempool.space/frontend/
COPY ./mariadb-structure.sql /mempool.space/mariadb-structure.sql
RUN apk add mariadb mariadb-client git nginx npm rsync bash
RUN mysql_install_db --user=mysql --datadir=/var/lib/mysql/
RUN /usr/bin/mysqld_safe --datadir='/var/lib/mysql/'& \
sleep 60 && \
mysql -e "create database mempool" && \
mysql -e "grant all privileges on mempool.* to 'mempool'@'localhost' identified by 'mempool'" && \
mysql mempool < /mempool.space/mariadb-structure.sql
RUN sed -i "/^skip-networking/ c#skip-networking" /etc/my.cnf.d/mariadb-server.cnf
RUN export NG_CLI_ANALYTICS=ci && \
npm install -g typescript && \
cd /mempool.space/frontend && \
npm install && \
cd /mempool.space/backend && \
npm install && \
tsc
COPY ./nginx-nossl-docker.conf /etc/nginx/nginx.conf
ENV ENV dev
ENV DB_HOST localhost
ENV DB_PORT 3306
ENV DB_USER mempool
ENV DB_PASSWORD mempool
ENV DB_DATABASE mempool
ENV API_ENDPOINT /api/v1/
ENV CHAT_SSL_ENABLED false
ENV MEMPOOL_REFRESH_RATE_MS 500
ENV INITIAL_BLOCK_AMOUNT 8
ENV DEFAULT_PROJECTED_BLOCKS_AMOUNT 3
ENV KEEP_BLOCK_AMOUNT 24
ENV BITCOIN_NODE_HOST bitcoinhost
ENV BITCOIN_NODE_PORT 8332
ENV BITCOIN_NODE_USER bitcoinuser
ENV BITCOIN_NODE_PASS bitcoinpass
ENV TX_PER_SECOND_SPAN_SECONDS 150
ENV BACKEND_API bitcoind
ENV ELECTRS_API_URL https://mempool.space/api
RUN cd /mempool.space/frontend/ && \
npm run build && \
rsync -av --delete dist/mempool/ /var/www/html/
EXPOSE 80
COPY ./entrypoint.sh /mempool.space/entrypoint.sh
RUN chmod +x /mempool.space/entrypoint.sh
WORKDIR /mempool.space
CMD ["/mempool.space/entrypoint.sh"]

43
LICENSE
View File

@@ -1,21 +1,30 @@
MIT License
The Mempool Open Source Project®
Copyright (c) 2019-2024 Mempool Space K.K. and other shadowy super-coders
Copyright (c) 2019 Simon Lindh
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation, either version 3 of the License or any later version
approved by a proxy statement published on <https://mempool.space/about>.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
However, this copyright license does not include an implied right or license
to use any trademarks, service marks, logos, or trade names of Mempool Space K.K.
or any other contributor to The Mempool Open Source Project.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The Mempool Open Source Project®, Mempool Accelerator™, Mempool Enterprise®,
Mempool Liquidity™, mempool.space®, Be your own explorer™, Explore the full
Bitcoin ecosystem™, Mempool Goggles™, the mempool Logo, the mempool Square Logo,
the mempool block visualization Logo, the mempool Blocks Logo, the mempool
transaction Logo, the mempool Blocks 3 | 2 Logo, the mempool research Logo,
the mempool.space Vertical Logo, and the mempool.space Horizontal Logo are
registered trademarks or trademarks of Mempool Space K.K in Japan,
the United States, and/or other countries.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
See our full Trademark Policy and Guidelines for more details, published on
<https://mempool.space/trademark-policy>.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the full license terms for more details.
You should have received a copy of both the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

218
README.md
View File

@@ -1,208 +1,38 @@
# mempool
## a mempool visualizer and explorer for Bitcoin
# The Mempool Open Source Project® [![mempool](https://img.shields.io/endpoint?url=https://dashboard.cypress.io/badge/simple/ry4br7/master&style=flat-square)](https://dashboard.cypress.io/projects/ry4br7/runs)
![mempool](https://pbs.twimg.com/media/EAETXWCU4AAv2v-?format=jpg&name=4096x4096)
![blockchain](https://pbs.twimg.com/media/EAETXWAU8AAj4IP?format=jpg&name=4096x4096)
https://user-images.githubusercontent.com/93150691/226236121-375ea64f-b4a1-4cc0-8fad-a6fb33226840.mp4
## Pick the right version for your use case
<br>
Mempool V1 has basic explorer functionality and can run from a Bitcoin Core full node on a Raspberry Pi (no pruning, txindex=1).
Mempool is the fully-featured mempool visualizer, explorer, and API service running at [mempool.space](https://mempool.space/).
Mempool V2 is what runs on https://mempool.space and has advanced explorer functionality, but requires a fully synced electrs backend running on powerful server hardware.
It is an open-source project developed and operated for the benefit of the Bitcoin community, with a focus on the emerging transaction fee market that is evolving Bitcoin into a multi-layer ecosystem.
# Mempool V1 using Docker (easy)
# Installation Methods
Install from Docker Hub, passing your Bitcoin Core RPC credentials as environment variables:
Mempool can be self-hosted on a wide variety of your own hardware, ranging from a simple one-click installation on a Raspberry Pi full-node distro all the way to a robust production instance on a powerful FreeBSD server.
```bash
docker pull mempool/mempool:v1.0
docker create -p 80:80 -e BITCOIN_NODE_HOST=192.168.1.102 -e BITCOIN_NODE_USER=foo -e BITCOIN_NODE_PASS=bar --name mempool mempool/mempool:v1.0
docker start mempool
docker logs mempool
```
Most people should use a <a href="#one-click-installation">one-click install method</a>.
You should see mempool starting up, which takes over an hour (needs 8 blocks). When it's ready, visit http://127.0.0.1/ to see your mempool.
Other install methods are meant for developers and others with experience managing servers. If you want support for your own production instance of Mempool, or if you'd like to have your own instance of Mempool run by the mempool.space team on their own global ISP infrastructure—check out <a href="https://mempool.space/enterprise" target="_blank">Mempool Enterprise®</a>.
# Mempool V1 not using Docker (advanced)
<a id="one-click-installation"></a>
## One-Click Installation
## Dependencies
Mempool can be conveniently installed on the following full-node distros:
- [Umbrel](https://github.com/getumbrel/umbrel)
- [RaspiBlitz](https://github.com/rootzoll/raspiblitz)
- [RoninDojo](https://code.samourai.io/ronindojo/RoninDojo)
- [myNode](https://github.com/mynodebtc/mynode)
- [StartOS](https://github.com/Start9Labs/start-os)
- [nix-bitcoin](https://github.com/fort-nix/nix-bitcoin/blob/a1eacce6768ca4894f365af8f79be5bbd594e1c3/examples/configuration.nix#L129)
* Bitcoin (full node required, no pruning, txindex=1)
* NodeJS (official stable LTS)
* MySQL or MariaDB (default config)
* Nginx (use supplied nginx.conf)
**We highly recommend you deploy your own Mempool instance this way.** No matter which option you pick, you'll be able to get your own fully-sovereign instance of Mempool up quickly without needing to fiddle with any settings.
## Checking out release tag
```bash
git clone https://github.com/mempool-space/mempool.space
cd mempool.space
git checkout v1.0.0 # put latest release tag here
```
## Advanced Installation Methods
## Bitcoin Core (bitcoind)
Mempool can be installed in other ways too, but we only recommend doing so if you're a developer, have experience managing servers, or otherwise know what you're doing.
Enable RPC and txindex in bitcoin.conf
```bash
rpcuser=mempool
rpcpassword=71b61986da5b03a5694d7c7d5165ece5
txindex=1
```
## NodeJS
Install dependencies and build code:
```bash
# Install TypeScript Globally
npm install -g typescript
# Frontend
cd frontend
npm install
npm run build
# Backend
cd ../backend/
npm install
npm run build
```
## Mempool Configuration
In the `backend` folder, make a copy of the sample config and modify it to fit your settings.
```bash
cp mempool-config.sample.json mempool-config.json
```
Edit `mempool-config.json` to add your Bitcoin Core node RPC credentials:
```bash
"BITCOIN_NODE_HOST": "192.168.1.5",
"BITCOIN_NODE_PORT": 8332,
"BITCOIN_NODE_USER": "mempool",
"BITCOIN_NODE_PASS": "71b61986da5b03a5694d7c7d5165ece5",
```
## MySQL
Install MariaDB:
```bash
# Linux
apt-get install mariadb-server mariadb-client
# macOS
brew install mariadb
brew services start mariadb
```
Create database and grant privileges:
```bash
MariaDB [(none)]> drop database mempool;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> create database mempool;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on mempool.* to 'mempool' identified by 'mempool';
Query OK, 0 rows affected (0.00 sec)
```
From the root folder, initialize database structure:
```bash
mysql -u mempool -p mempool < mariadb-structure.sql
```
## Running (Backend)
Create an initial empty cache and start the app:
```bash
touch cache.json
npm run start # node dist/index.js
```
After starting you should see:
```bash
Server started on port 8999 :)
New block found (#586498)! 0 of 1986 found in mempool. 1985 not found.
New block found (#586499)! 0 of 1094 found in mempool. 1093 not found.
New block found (#586500)! 0 of 2735 found in mempool. 2734 not found.
New block found (#586501)! 0 of 2675 found in mempool. 2674 not found.
New block found (#586502)! 0 of 975 found in mempool. 974 not found.
New block found (#586503)! 0 of 2130 found in mempool. 2129 not found.
New block found (#586504)! 0 of 2770 found in mempool. 2769 not found.
New block found (#586505)! 0 of 2759 found in mempool. 2758 not found.
Updating mempool
Calculated fee for transaction 1 / 3257
Calculated fee for transaction 2 / 3257
Calculated fee for transaction 3 / 3257
Calculated fee for transaction 4 / 3257
Calculated fee for transaction 5 / 3257
Calculated fee for transaction 6 / 3257
Calculated fee for transaction 7 / 3257
Calculated fee for transaction 8 / 3257
Calculated fee for transaction 9 / 3257
```
You need to wait for at least *8 blocks to be mined*, so please wait ~80 minutes.
The backend also needs to index transactions, calculate fees, etc.
When it's ready you will see output like this:
```bash
Mempool updated in 0.189 seconds
Updating mempool
Mempool updated in 0.096 seconds
Updating mempool
Mempool updated in 0.099 seconds
Updating mempool
Calculated fee for transaction 1 / 10
Calculated fee for transaction 2 / 10
Calculated fee for transaction 3 / 10
Calculated fee for transaction 4 / 10
Calculated fee for transaction 5 / 10
Calculated fee for transaction 6 / 10
Calculated fee for transaction 7 / 10
Calculated fee for transaction 8 / 10
Calculated fee for transaction 9 / 10
Calculated fee for transaction 10 / 10
Mempool updated in 0.243 seconds
Updating mempool
```
## nginx + CertBot (LetsEncrypt)
Setup nginx using the supplied nginx.conf
```bash
# install nginx and certbot
apt-get install -y nginx python-certbot-nginx
# replace example.com with your domain name
certbot --nginx -d example.com
# install the mempool configuration for nginx
cp nginx.conf /etc/nginx/nginx.conf
# edit the installed nginx.conf, and replace all
# instances of example.com with your domain name
```
Make sure you can access https://<your-domain-name>/ in browser before proceeding
## Running (Frontend)
Build the frontend static HTML/CSS/JS, rsync the output into nginx folder:
```bash
cd frontend/
npm run build
sudo rsync -av --delete dist/mempool/ /var/www/html/
```
## Try It Out
If everything went okay you should see the beautiful mempool :grin:
If you get stuck on "loading blocks", this means the websocket can't connect.
Check your nginx proxy setup, firewalls, etc. and open an issue if you need help.
- See the [`docker/`](./docker/) directory for instructions on deploying Mempool with Docker.
- See the [`backend/`](./backend/) and [`frontend/`](./frontend/) directories for manual install instructions oriented for developers.
- See the [`production/`](./production/) directory for guidance on setting up a more serious Mempool instance designed for high performance at scale.

1
backend/.dockerignore Normal file
View File

@@ -0,0 +1 @@
Dockerfile

17
backend/.editorconfig Normal file
View File

@@ -0,0 +1,17 @@
# Editor configuration, see https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.ts]
quote_type = single
[*.md]
max_line_length = off
trim_trailing_whitespace = false

2
backend/.eslintignore Normal file
View File

@@ -0,0 +1,2 @@
node_modules
dist

40
backend/.eslintrc Normal file
View File

@@ -0,0 +1,40 @@
{
"root": true,
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"prettier"
],
"rules": {
"@typescript-eslint/ban-ts-comment": 1,
"@typescript-eslint/ban-types": 1,
"@typescript-eslint/no-empty-function": 1,
"@typescript-eslint/no-explicit-any": 1,
"@typescript-eslint/no-inferrable-types": 0,
"@typescript-eslint/no-namespace": 1,
"@typescript-eslint/no-this-alias": 1,
"@typescript-eslint/no-var-requires": 1,
"@typescript-eslint/explicit-function-return-type": 1,
"@typescript-eslint/no-unused-vars": 1,
"no-console": 1,
"no-constant-condition": 1,
"no-dupe-else-if": 1,
"no-empty": 1,
"no-prototype-builtins": 1,
"no-self-assign": 1,
"no-useless-catch": 1,
"no-var": 1,
"prefer-const": 1,
"prefer-rest-params": 1,
"quotes": [1, "single", { "allowTemplateLiterals": true }],
"semi": 1,
"curly": [1, "all"],
"eqeqeq": 1,
"no-trailing-spaces": 1
}
}

18
backend/.gitignore vendored
View File

@@ -1,7 +1,17 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.
# production config
# production config and external assets
!mempool-config.template.json
!mempool-config.sample.json
mempool-config.json
pools.json
icons.json
# docker
Dockerfile
GeoIP
start.sh
wait-for-it.sh
# compiled output
/dist
@@ -42,4 +52,8 @@ testem.log
.DS_Store
Thumbs.db
cache.json
# package folder (npm run package output)
/package
# Rust GBT folder (We build externally first)
/rust-gbt

2
backend/.prettierignore Normal file
View File

@@ -0,0 +1,2 @@
node_modules
package-lock.json

6
backend/.prettierrc Normal file
View File

@@ -0,0 +1,6 @@
{
"endOfLine": "lf",
"printWidth": 80,
"tabWidth": 2,
"trailingComma": "es5"
}

4
backend/.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"editor.tabSize": 2,
"typescript.tsdk": "../backend/node_modules/typescript/lib"
}

256
backend/README.md Normal file
View File

@@ -0,0 +1,256 @@
# Mempool Backend
These instructions are mostly intended for developers.
If you choose to use these instructions for a production setup, be aware that you will still probably need to do additional configuration for your specific OS, environment, use-case, etc. We do our best here to provide a good starting point, but only proceed if you know what you're doing. Mempool only provides support for custom setups to project sponsors through [Mempool Enterprise®](https://mempool.space/enterprise).
See other ways to set up Mempool on [the main README](/../../#installation-methods).
Jump to a section in this doc:
- [Set Up the Backend](#setup)
- [Development Tips](#development-tips)
## Setup
### 1. Clone Mempool Repository
Get the latest Mempool code:
```
git clone https://github.com/mempool/mempool
cd mempool
```
Check out the latest release:
```
latestrelease=$(curl -s https://api.github.com/repos/mempool/mempool/releases/latest|grep tag_name|head -1|cut -d '"' -f4)
git checkout $latestrelease
```
### 2. Configure Bitcoin Core
Turn on `txindex`, enable RPC, and set RPC credentials in `bitcoin.conf`:
```
txindex=1
server=1
rpcuser=mempool
rpcpassword=mempool
```
### 3. Configure Electrum Server
[Pick an Electrum Server implementation](https://mempool.space/docs/faq#address-lookup-issues), configure it, and make sure it's synced.
**This step is optional.** You can run Mempool without configuring an Electrum Server for it, but address lookups will be disabled.
### 4. Configure MariaDB
_Mempool needs MariaDB v10.5 or later. If you already have MySQL installed, make sure to migrate any existing databases **before** installing MariaDB._
Get MariaDB from your operating system's package manager:
```
# Debian, Ubuntu, etc.
apt-get install mariadb-server mariadb-client
# macOS
brew install mariadb
mysql.server start
```
Create a database and grant privileges:
```
MariaDB [(none)]> drop database mempool;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> create database mempool;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on mempool.* to 'mempool'@'%' identified by 'mempool';
Query OK, 0 rows affected (0.00 sec)
```
### 5. Prepare Mempool Backend
#### Build
_Make sure to use Node.js 16.10 and npm 7._
_The build process requires [Rust](https://www.rust-lang.org/tools/install) to be installed._
Install dependencies with `npm` and build the backend:
```
cd backend
npm install --no-install-links # npm@9.4.2 and later can omit the --no-install-links
npm run build
```
#### Configure
In the backend folder, make a copy of the sample config file:
```
cp mempool-config.sample.json mempool-config.json
```
Edit `mempool-config.json` as needed.
In particular, make sure:
- the correct Bitcoin Core RPC credentials are specified in `CORE_RPC`
- the correct `BACKEND` is specified in `MEMPOOL`:
- "electrum" if you're using [romanz/electrs](https://github.com/romanz/electrs) or [cculianu/Fulcrum](https://github.com/cculianu/Fulcrum)
- "esplora" if you're using [mempool/electrs](https://github.com/mempool/electrs)
- "none" if you're not using any Electrum Server
### 6. Run Mempool Backend
Run the Mempool backend:
```
npm run start
```
You can also set env var `MEMPOOL_CONFIG_FILE` to specify a custom config file location:
```
MEMPOOL_CONFIG_FILE=/path/to/mempool-config.json npm run start
```
When it's running, you should see output like this:
```
Mempool updated in 0.189 seconds
Updating mempool
Mempool updated in 0.096 seconds
Updating mempool
Mempool updated in 0.099 seconds
Updating mempool
Calculated fee for transaction 1 / 10
Calculated fee for transaction 2 / 10
Calculated fee for transaction 3 / 10
Calculated fee for transaction 4 / 10
Calculated fee for transaction 5 / 10
Calculated fee for transaction 6 / 10
Calculated fee for transaction 7 / 10
Calculated fee for transaction 8 / 10
Calculated fee for transaction 9 / 10
Calculated fee for transaction 10 / 10
Mempool updated in 0.243 seconds
Updating mempool
```
### 7. Set Up Mempool Frontend
With the backend configured and running, proceed to set up the [Mempool frontend](../frontend#manual-setup).
## Development Tips
### Set Up Backend Watchers
The Mempool backend is static. TypeScript scripts are compiled into the `dist` folder and served through a Node.js web server.
As a result, for development purposes, you may find it helpful to set up backend watchers to avoid the manual shutdown/recompile/restart command-line cycle.
First, install `nodemon` and `ts-node`:
```
npm install -g ts-node nodemon
```
Then, run the watcher:
```
nodemon src/index.ts --ignore cache/
```
`nodemon` should be in npm's global binary folder. If needed, you can determine where that is with `npm -g bin`.
### Useful Regtest Commands
Helpful link: https://gist.github.com/System-Glitch/cb4e87bf1ae3fec9925725bb3ebe223a
Run bitcoind on regtest:
```
bitcoind -regtest
```
Create a new wallet, if needed:
```
bitcoin-cli -regtest createwallet test
```
Load wallet (this command may take a while if you have a lot of UTXOs):
```
bitcoin-cli -regtest loadwallet test
```
Get a new address:
```
address=$(bitcoin-cli -regtest getnewaddress)
```
Mine blocks to the previously generated address. You need at least 101 blocks before you can spend. This will take some time to execute (~1 min):
```
bitcoin-cli -regtest generatetoaddress 101 $address
```
Send 0.1 BTC at 5 sat/vB to another address:
```
bitcoin-cli -named -regtest sendtoaddress address=$(bitcoin-cli -regtest getnewaddress) amount=0.1 fee_rate=5
```
See more example of `sendtoaddress`:
```
bitcoin-cli sendtoaddress # will print the help
```
Mini script to generate random network activity (random TX count with random tx fee-rate). It's slow so don't expect to use this to test mempool spam, except if you let it run for a long time, or maybe with multiple regtest nodes connected to each other.
```
#!/bin/bash
address=$(bitcoin-cli -regtest getnewaddress)
bitcoin-cli -regtest generatetoaddress 101 $address
for i in {1..1000000}
do
for y in $(seq 1 "$(jot -r 1 1 1000)")
do
bitcoin-cli -regtest -named sendtoaddress address=$address amount=0.01 fee_rate=$(jot -r 1 1 100)
done
bitcoin-cli -regtest generatetoaddress 1 $address
sleep 5
done
```
Generate block at regular interval (every 10 seconds in this example):
```
watch -n 10 "bitcoin-cli -regtest generatetoaddress 1 $address"
```
### Mining pools update
By default, mining pools will be not automatically updated regularly (`config.MEMPOOL.AUTOMATIC_POOLS_UPDATE` is set to `false`).
To manually update your mining pools, you can use the `--update-pools` command line flag when you run the nodejs backend. For example `npm run start --update-pools`. This will trigger the mining pools update and automatically re-index appropriate blocks.
You can enable the automatic mining pools update by settings `config.MEMPOOL.AUTOMATIC_POOLS_UPDATE` to `true` in your `mempool-config.json`.
When a `coinbase tag` or `coinbase address` change is detected, pool assignments for all relevant blocks (tagged to that pool or the `unknown` mining pool, starting from height 130635) are updated using the new criteria.
### Re-index tables
You can manually force the nodejs backend to drop all data from a specified set of tables for future re-index. This is mostly useful for the mining dashboard and the lightning explorer.
Use the `--reindex` command to specify a list of comma separated table which will be truncated at start. Note that a 5 seconds delay will be observed before truncating tables in order to give you a chance to cancel (CTRL+C) in case of misuse of the command.
Usage:
```
npm run start --reindex=blocks,hashrates
```
Example output:
```
Feb 13 14:55:27 [63246] WARN: <lightning> Indexed data for "hashrates" tables will be erased in 5 seconds (using '--reindex')
Feb 13 14:55:32 [63246] NOTICE: <lightning> Table hashrates has been truncated
```
Reference: https://github.com/mempool/mempool/pull/1269

1
backend/cache/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.json

20
backend/jest.config.ts Normal file
View File

@@ -0,0 +1,20 @@
import type { Config } from "@jest/types"
const config: Config.InitialOptions = {
preset: "ts-jest",
testEnvironment: "node",
verbose: true,
automock: false,
collectCoverage: true,
collectCoverageFrom: ["./src/**/**.ts"],
coverageProvider: "babel",
coverageThreshold: {
global: {
lines: 1
}
},
setupFiles: [
"./testSetup.ts",
],
}
export default config;

View File

@@ -1,25 +1,161 @@
{
"ENV": "dev",
"DB_HOST": "localhost",
"DB_PORT": 3306,
"DB_USER": "mempool",
"DB_PASSWORD": "mempool",
"DB_DATABASE": "mempool",
"HTTP_PORT": 3000,
"API_ENDPOINT": "/api/v1/",
"CHAT_SSL_ENABLED": false,
"CHAT_SSL_PRIVKEY": "",
"CHAT_SSL_CERT": "",
"CHAT_SSL_CHAIN": "",
"MEMPOOL_REFRESH_RATE_MS": 500,
"INITIAL_BLOCK_AMOUNT": 8,
"DEFAULT_PROJECTED_BLOCKS_AMOUNT": 3,
"KEEP_BLOCK_AMOUNT": 24,
"BITCOIN_NODE_HOST": "localhost",
"BITCOIN_NODE_PORT": 8332,
"BITCOIN_NODE_USER": "",
"BITCOIN_NODE_PASS": "",
"BACKEND_API": "bitcoind",
"ELECTRS_API_URL": "https://mempool.space/api",
"TX_PER_SECOND_SPAN_SECONDS": 150
"MEMPOOL": {
"OFFICIAL": false,
"NETWORK": "mainnet",
"BACKEND": "electrum",
"ENABLED": true,
"HTTP_PORT": 8999,
"SPAWN_CLUSTER_PROCS": 0,
"API_URL_PREFIX": "/api/v1/",
"POLL_RATE_MS": 2000,
"CACHE_DIR": "./cache",
"CACHE_ENABLED": true,
"CLEAR_PROTECTION_MINUTES": 20,
"RECOMMENDED_FEE_PERCENTILE": 50,
"BLOCK_WEIGHT_UNITS": 4000000,
"INITIAL_BLOCKS_AMOUNT": 8,
"MEMPOOL_BLOCKS_AMOUNT": 8,
"INDEXING_BLOCKS_AMOUNT": 11000,
"BLOCKS_SUMMARIES_INDEXING": false,
"GOGGLES_INDEXING": false,
"USE_SECOND_NODE_FOR_MINFEE": false,
"EXTERNAL_ASSETS": [],
"EXTERNAL_MAX_RETRY": 1,
"EXTERNAL_RETRY_INTERVAL": 0,
"USER_AGENT": "mempool",
"STDOUT_LOG_MIN_PRIORITY": "debug",
"AUTOMATIC_POOLS_UPDATE": false,
"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",
"AUDIT": false,
"RUST_GBT": true,
"LIMIT_GBT": false,
"CPFP_INDEXING": false,
"DISK_CACHE_BLOCK_INTERVAL": 6,
"MAX_PUSH_TX_SIZE_WEIGHT": 4000000,
"ALLOW_UNREACHABLE": true,
"PRICE_UPDATES_PER_HOUR": 1,
"MAX_TRACKED_ADDRESSES": 100,
"UNIX_SOCKET_PATH": ""
},
"CORE_RPC": {
"HOST": "127.0.0.1",
"PORT": 8332,
"USERNAME": "mempool",
"PASSWORD": "mempool",
"TIMEOUT": 60000,
"COOKIE": false,
"COOKIE_PATH": "/path/to/bitcoin/.cookie"
},
"ELECTRUM": {
"HOST": "127.0.0.1",
"PORT": 50002,
"TLS_ENABLED": true
},
"ESPLORA": {
"REST_API_URL": "http://127.0.0.1:3000",
"UNIX_SOCKET_PATH": "/tmp/esplora-bitcoin-mainnet",
"BATCH_QUERY_BASE_SIZE": 1000,
"RETRY_UNIX_SOCKET_AFTER": 30000,
"REQUEST_TIMEOUT": 10000,
"FALLBACK_TIMEOUT": 5000,
"FALLBACK": [],
"MAX_BEHIND_TIP": 2
},
"SECOND_CORE_RPC": {
"HOST": "127.0.0.1",
"PORT": 8332,
"USERNAME": "mempool",
"PASSWORD": "mempool",
"TIMEOUT": 60000,
"COOKIE": false,
"COOKIE_PATH": "/path/to/bitcoin/.cookie"
},
"DATABASE": {
"ENABLED": true,
"HOST": "127.0.0.1",
"PORT": 3306,
"SOCKET": "/var/run/mysql/mysql.sock",
"DATABASE": "mempool",
"USERNAME": "mempool",
"PASSWORD": "mempool",
"TIMEOUT": 180000,
"PID_DIR": ""
},
"SYSLOG": {
"ENABLED": true,
"HOST": "127.0.0.1",
"PORT": 514,
"MIN_PRIORITY": "info",
"FACILITY": "local7"
},
"STATISTICS": {
"ENABLED": true,
"TX_PER_SECOND_SAMPLE_PERIOD": 150
},
"MAXMIND": {
"ENABLED": false,
"GEOLITE2_CITY": "/usr/local/share/GeoIP/GeoLite2-City.mmdb",
"GEOLITE2_ASN": "/usr/local/share/GeoIP/GeoLite2-ASN.mmdb",
"GEOIP2_ISP": "/usr/local/share/GeoIP/GeoIP2-ISP.mmdb"
},
"LIGHTNING": {
"ENABLED": false,
"BACKEND": "lnd",
"STATS_REFRESH_INTERVAL": 600,
"GRAPH_REFRESH_INTERVAL": 600,
"LOGGER_UPDATE_INTERVAL": 30,
"FORENSICS_INTERVAL": 43200,
"FORENSICS_RATE_LIMIT": 20
},
"LND": {
"TLS_CERT_PATH": "tls.cert",
"MACAROON_PATH": "readonly.macaroon",
"REST_API_URL": "https://localhost:8080",
"TIMEOUT": 10000
},
"CLIGHTNING": {
"SOCKET": "lightning-rpc"
},
"SOCKS5PROXY": {
"ENABLED": false,
"USE_ONION": true,
"HOST": "127.0.0.1",
"PORT": 9050,
"USERNAME": "",
"PASSWORD": ""
},
"EXTERNAL_DATA_SERVER": {
"MEMPOOL_API": "https://mempool.space/api/v1",
"MEMPOOL_ONION": "http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion/api/v1",
"LIQUID_API": "https://liquid.network/api/v1",
"LIQUID_ONION": "http://liquidmom47f6s3m53ebfxn47p76a6tlnxib3wp6deux7wuzotdr6cyd.onion/api/v1"
},
"REDIS": {
"ENABLED": false,
"UNIX_SOCKET_PATH": "/tmp/redis.sock",
"BATCH_QUERY_BASE_SIZE": 5000
},
"REPLICATION": {
"ENABLED": false,
"AUDIT": false,
"AUDIT_START_HEIGHT": 774000,
"STATISTICS": false,
"STATISTICS_START_TIME": 1481932800,
"SERVERS": [
"list",
"of",
"trusted",
"servers"
]
},
"MEMPOOL_SERVICES": {
"API": "https://mempool.space/api/v1/services",
"ACCELERATIONS": false
},
"FIAT_PRICE": {
"ENABLED": true,
"PAID": false,
"API_KEY": "your-api-key-from-freecurrencyapi.com"
}
}

17
backend/npm_package.sh Executable file
View File

@@ -0,0 +1,17 @@
#/bin/sh
set -e
# Remove previous dist folder
rm -rf dist
# Build new dist folder
npm run build
# Remove previous package folder
rm -rf package
# Move JS and deps
mv dist package
cp -R node_modules package
# Remove symlink for rust-gbt and insert real folder
rm package/node_modules/rust-gbt
cp -R rust-gbt package/node_modules
# Clean up deps
npm run package-rm-build-deps

View File

@@ -0,0 +1,9 @@
#/bin/sh
set -e
# Cleaning up inside the node_modules folder
cd package/node_modules
rm -rf \
typescript \
@typescript-eslint \
@napi-rs

13408
backend/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,31 +1,74 @@
{
"name": "mempool-backend",
"version": "1.0.0",
"description": "Bitcoin Mempool Visualizer",
"version": "3.0.1",
"description": "Bitcoin mempool visualizer and blockchain explorer backend",
"license": "GNU Affero General Public License v3.0",
"homepage": "https://mempool.space",
"repository": {
"type": "git",
"url": "git+https://github.com/mempool/mempool"
},
"bugs": {
"url": "https://github.com/mempool/mempool/issues"
},
"keywords": [
"bitcoin",
"mempool",
"blockchain",
"explorer",
"liquid",
"lightning"
],
"main": "index.ts",
"scripts": {
"build": "tsc",
"start": "npm run build && node dist/index.js"
"tsc": "./node_modules/typescript/bin/tsc -p tsconfig.build.json",
"build": "npm run tsc && npm run create-resources",
"clean": "rm -rf ./dist/ ./node_modules/ ./package/ ./rust-gbt/",
"create-resources": "cp ./src/tasks/price-feeds/mtgox-weekly.json ./dist/tasks && node dist/api/fetch-version.js",
"package": "./npm_package.sh",
"package-rm-build-deps": "./npm_package_rm_build_deps.sh",
"preinstall": "cd ../rust/gbt && npm run build-release && npm run to-backend",
"start": "node --max-old-space-size=2048 dist/index.js",
"start-production": "node --max-old-space-size=16384 dist/index.js",
"reindex-updated-pools": "npm run start-production --update-pools",
"reindex-all-blocks": "npm run start-production --update-pools --reindex-blocks",
"test": "./node_modules/.bin/jest --coverage",
"test:ci": "CI=true ./node_modules/.bin/jest --coverage",
"lint": "./node_modules/.bin/eslint . --ext .ts",
"lint:fix": "./node_modules/.bin/eslint . --ext .ts --fix",
"prettier": "./node_modules/.bin/prettier --write \"src/**/*.{js,ts}\""
},
"author": {
"name": "Simon Lindh",
"url": "https://github.com/mempool-space/mempool.space"
},
"license": "MIT",
"dependencies": {
"bitcoin": "^3.0.1",
"compression": "^1.7.3",
"express": "^4.16.3",
"mysql2": "^1.6.1",
"request": "^2.88.0",
"ws": "^6.0.0"
"@babel/core": "^7.25.2",
"@mempool/electrum-client": "1.1.9",
"@types/node": "^18.15.3",
"axios": "~1.7.2",
"bitcoinjs-lib": "~6.1.3",
"crypto-js": "~4.2.0",
"express": "~4.19.2",
"maxmind": "~4.3.11",
"mysql2": "~3.11.0",
"rust-gbt": "file:./rust-gbt",
"redis": "^4.7.0",
"socks-proxy-agent": "~7.0.0",
"typescript": "~4.9.3",
"ws": "~8.18.0"
},
"devDependencies": {
"@types/express": "^4.16.0",
"@types/mysql2": "github:types/mysql2",
"@types/request": "^2.48.2",
"@types/ws": "^6.0.1",
"tslint": "^5.11.0",
"typescript": "^3.1.1"
"@babel/code-frame": "^7.18.6",
"@babel/core": "^7.25.2",
"@types/compression": "^1.7.2",
"@types/crypto-js": "^4.1.1",
"@types/express": "^4.17.17",
"@types/jest": "^29.5.0",
"@types/ws": "~8.5.10",
"@typescript-eslint/eslint-plugin": "^5.55.0",
"@typescript-eslint/parser": "^5.55.0",
"eslint": "^8.36.0",
"eslint-config-prettier": "^8.8.0",
"jest": "^29.5.0",
"prettier": "^3.0.0",
"ts-jest": "^29.1.1",
"ts-node": "^10.9.1"
}
}

View File

@@ -0,0 +1,153 @@
{
"MEMPOOL": {
"ENABLED": true,
"OFFICIAL": false,
"NETWORK": "__MEMPOOL_NETWORK__",
"BACKEND": "__MEMPOOL_BACKEND__",
"BLOCKS_SUMMARIES_INDEXING": true,
"GOGGLES_INDEXING": false,
"HTTP_PORT": 1,
"UNIX_SOCKET_PATH": "/mempool/socket/mempool-bitcoin-mainnet",
"SPAWN_CLUSTER_PROCS": 2,
"API_URL_PREFIX": "__MEMPOOL_API_URL_PREFIX__",
"AUTOMATIC_POOLS_UPDATE": false,
"POLL_RATE_MS": 3,
"CACHE_DIR": "__MEMPOOL_CACHE_DIR__",
"CACHE_ENABLED": true,
"CLEAR_PROTECTION_MINUTES": 4,
"RECOMMENDED_FEE_PERCENTILE": 5,
"BLOCK_WEIGHT_UNITS": 6,
"INITIAL_BLOCKS_AMOUNT": 7,
"MEMPOOL_BLOCKS_AMOUNT": 8,
"USE_SECOND_NODE_FOR_MINFEE": 10,
"EXTERNAL_ASSETS": [],
"EXTERNAL_MAX_RETRY": 12,
"EXTERNAL_RETRY_INTERVAL": 13,
"USER_AGENT": "__MEMPOOL_USER_AGENT__",
"STDOUT_LOG_MIN_PRIORITY": "__MEMPOOL_STDOUT_LOG_MIN_PRIORITY__",
"INDEXING_BLOCKS_AMOUNT": 14,
"POOLS_JSON_TREE_URL": "__MEMPOOL_POOLS_JSON_TREE_URL__",
"POOLS_JSON_URL": "__MEMPOOL_POOLS_JSON_URL__",
"AUDIT": true,
"RUST_GBT": false,
"LIMIT_GBT": false,
"CPFP_INDEXING": true,
"MAX_BLOCKS_BULK_QUERY": 999,
"DISK_CACHE_BLOCK_INTERVAL": 999,
"MAX_PUSH_TX_SIZE_WEIGHT": 4000000,
"ALLOW_UNREACHABLE": true,
"PRICE_UPDATES_PER_HOUR": 1,
"MAX_TRACKED_ADDRESSES": 1
},
"CORE_RPC": {
"HOST": "__CORE_RPC_HOST__",
"PORT": 15,
"USERNAME": "__CORE_RPC_USERNAME__",
"PASSWORD": "__CORE_RPC_PASSWORD__",
"TIMEOUT": 1000,
"COOKIE": false,
"COOKIE_PATH": "__CORE_RPC_COOKIE_PATH__"
},
"ELECTRUM": {
"HOST": "__ELECTRUM_HOST__",
"PORT": 16,
"TLS_ENABLED": true
},
"ESPLORA": {
"REST_API_URL": "__ESPLORA_REST_API_URL__",
"UNIX_SOCKET_PATH": "__ESPLORA_UNIX_SOCKET_PATH__",
"BATCH_QUERY_BASE_SIZE": 1000,
"RETRY_UNIX_SOCKET_AFTER": 888,
"REQUEST_TIMEOUT": 10000,
"FALLBACK_TIMEOUT": 5000,
"FALLBACK": [],
"MAX_BEHIND_TIP": 2
},
"SECOND_CORE_RPC": {
"HOST": "__SECOND_CORE_RPC_HOST__",
"PORT": 17,
"USERNAME": "__SECOND_CORE_RPC_USERNAME__",
"PASSWORD": "__SECOND_CORE_RPC_PASSWORD__",
"TIMEOUT": 2000,
"COOKIE": false,
"COOKIE_PATH": "__SECOND_CORE_RPC_COOKIE_PATH__"
},
"DATABASE": {
"ENABLED": false,
"HOST": "__DATABASE_HOST__",
"SOCKET": "__DATABASE_SOCKET__",
"PORT": 18,
"DATABASE": "__DATABASE_DATABASE__",
"USERNAME": "__DATABASE_USERNAME__",
"PASSWORD": "__DATABASE_PASSWORD__",
"PID_DIR": "__DATABASE_PID_FILE__",
"TIMEOUT": 3000,
"POOL_SIZE": 100
},
"SYSLOG": {
"ENABLED": false,
"HOST": "__SYSLOG_HOST__",
"PORT": 19,
"MIN_PRIORITY": "__SYSLOG_MIN_PRIORITY__",
"FACILITY": "__SYSLOG_FACILITY__"
},
"STATISTICS": {
"ENABLED": false,
"TX_PER_SECOND_SAMPLE_PERIOD": 20
},
"SOCKS5PROXY": {
"ENABLED": true,
"USE_ONION": true,
"HOST": "__SOCKS5PROXY_HOST__",
"PORT": "__SOCKS5PROXY_PORT__",
"USERNAME": "__SOCKS5PROXY_USERNAME__",
"PASSWORD": "__SOCKS5PROXY_PASSWORD__"
},
"EXTERNAL_DATA_SERVER": {
"MEMPOOL_API": "__EXTERNAL_DATA_SERVER_MEMPOOL_API__",
"MEMPOOL_ONION": "__EXTERNAL_DATA_SERVER_MEMPOOL_ONION__",
"LIQUID_API": "__EXTERNAL_DATA_SERVER_LIQUID_API__",
"LIQUID_ONION": "__EXTERNAL_DATA_SERVER_LIQUID_ONION__"
},
"LIGHTNING": {
"ENABLED": true,
"BACKEND": "__LIGHTNING_BACKEND__",
"TOPOLOGY_FOLDER": "__LIGHTNING_TOPOLOGY_FOLDER__",
"STATS_REFRESH_INTERVAL": 600,
"GRAPH_REFRESH_INTERVAL": 600,
"LOGGER_UPDATE_INTERVAL": 30,
"FORENSICS_INTERVAL": 43200,
"FORENSICS_RATE_LIMIT": 1234
},
"LND": {
"TLS_CERT_PATH": "",
"MACAROON_PATH": "",
"REST_API_URL": "https://localhost:8080",
"TIMEOUT": 10000
},
"CLIGHTNING": {
"SOCKET": "__CLIGHTNING_SOCKET__"
},
"REPLICATION": {
"ENABLED": false,
"AUDIT": false,
"AUDIT_START_HEIGHT": 774000,
"STATISTICS": false,
"STATISTICS_START_TIME": 1481932800,
"SERVERS": []
},
"MEMPOOL_SERVICES": {
"API": "",
"ACCELERATIONS": false
},
"REDIS": {
"ENABLED": false,
"UNIX_SOCKET_PATH": "/tmp/redis.sock",
"BATCH_QUERY_BASE_SIZE": 5000
},
"FIAT_PRICE": {
"ENABLED": true,
"PAID": false,
"API_KEY": "__MEMPOOL_CURRENCY_API_KEY__"
}
}

View File

@@ -0,0 +1,40 @@
import { Common } from '../../api/common';
import { MempoolTransactionExtended } from '../../mempool.interfaces';
const randomTransactions = require('./test-data/transactions-random.json');
const replacedTransactions = require('./test-data/transactions-replaced.json');
const rbfTransactions = require('./test-data/transactions-rbfs.json');
const nonStandardTransactions = require('./test-data/non-standard-txs.json');
describe('Common', () => {
describe('RBF', () => {
const newTransactions = rbfTransactions.concat(randomTransactions);
test('should detect RBF transactions with fast method', () => {
const result: { [txid: string]: MempoolTransactionExtended[] } = Common.findRbfTransactions(newTransactions, replacedTransactions);
expect(Object.values(result).length).toEqual(2);
expect(result).toHaveProperty('7219d95161f3718335991ac6d967d24eedec370908c9879bb1e192e6d797d0a6');
expect(result).toHaveProperty('5387881d695d4564d397026dc5f740f816f8390b4b2c5ec8c20309122712a875');
});
test('should detect RBF transactions with scalable method', () => {
const result: { [txid: string]: MempoolTransactionExtended[] } = Common.findRbfTransactions(newTransactions, replacedTransactions, true);
expect(Object.values(result).length).toEqual(2);
expect(result).toHaveProperty('7219d95161f3718335991ac6d967d24eedec370908c9879bb1e192e6d797d0a6');
expect(result).toHaveProperty('5387881d695d4564d397026dc5f740f816f8390b4b2c5ec8c20309122712a875');
});
});
describe('Mempool Goggles', () => {
test('should detect nonstandard transactions', () => {
nonStandardTransactions.forEach((tx) => {
expect(Common.isNonStandard(tx)).toEqual(true);
});
});
test('should not misclassify as nonstandard transactions', () => {
randomTransactions.forEach((tx) => {
expect(Common.isNonStandard(tx)).toEqual(false);
});
});
});
});

View File

@@ -0,0 +1,166 @@
import {
calcBitsDifference,
calcDifficultyAdjustment,
DifficultyAdjustment,
} from '../../api/difficulty-adjustment';
describe('Mempool Difficulty Adjustment', () => {
test('should calculate Difficulty Adjustments properly', () => {
const dt = (dtString) => {
return Math.floor(new Date(dtString).getTime() / 1000);
};
const vectors = [
[ // Vector 1 (normal adjustment)
[ // Inputs
dt('2024-02-02T15:42:06.000Z'), // Last DA time (in seconds)
dt('2024-02-08T14:43:05.000Z'), // timestamp of 504 blocks ago (in seconds)
dt('2024-02-11T22:43:01.000Z'), // Current time (now) (in seconds)
830027, // Current block height
7.333505241141637, // Previous retarget % (Passed through)
'mainnet', // Network (if testnet, next value is non-zero)
0, // Latest block timestamp in seconds (only used if difficulty already locked in)
],
{ // Expected Result
progressPercent: 71.97420634920636,
difficultyChange: 8.512745140778843,
estimatedRetargetDate: 1708004001715,
remainingBlocks: 565,
remainingTime: 312620715,
previousRetarget: 7.333505241141637,
previousTime: 1706888526,
nextRetargetHeight: 830592,
timeAvg: 553311,
adjustedTimeAvg: 553311,
timeOffset: 0,
expectedBlocks: 1338.0916666666667,
},
],
[ // Vector 2 (within quarter-epoch overlap)
[ // Inputs
dt('2022-08-18T11:07:00.000Z'), // Last DA time (in seconds)
dt('2022-08-16T03:16:54.000Z'), // timestamp of 504 blocks ago (in seconds)
dt('2022-08-19T14:03:53.000Z'), // Current time (now) (in seconds)
750134, // Current block height
0.6280047707459726, // Previous retarget % (Passed through)
'mainnet', // Network (if testnet, next value is non-zero)
0, // Latest block timestamp in seconds (only used if difficulty already locked in)
],
{ // Expected Result
progressPercent: 9.027777777777777,
difficultyChange: 1.0420538959004633,
estimatedRetargetDate: 1662009048328,
remainingBlocks: 1834,
remainingTime: 1091215328,
previousRetarget: 0.6280047707459726,
previousTime: 1660820820,
nextRetargetHeight: 751968,
timeAvg: 533038,
adjustedTimeAvg: 594992,
timeOffset: 0,
expectedBlocks: 161.68833333333333,
},
],
[ // Vector 3 (testnet)
[ // Inputs
dt('2022-08-18T11:07:00.000Z'), // Last DA time (in seconds)
dt('2022-08-16T03:16:54.000Z'), // timestamp of 504 blocks ago (in seconds)
dt('2022-08-19T14:03:53.000Z'), // Current time (now) (in seconds)
750134, // Current block height
0.6280047707459726, // Previous retarget % (Passed through)
'testnet', // Network
dt('2022-08-19T13:52:46.000Z'), // Latest block timestamp in seconds
],
{ // Expected Result is same other than timeOffset
progressPercent: 9.027777777777777,
difficultyChange: 1.0420538959004633,
estimatedRetargetDate: 1662009048328,
remainingBlocks: 1834,
remainingTime: 1091215328,
previousTime: 1660820820,
previousRetarget: 0.6280047707459726,
nextRetargetHeight: 751968,
timeAvg: 533038,
adjustedTimeAvg: 594992,
timeOffset: -667000, // 11 min 7 seconds since last block (testnet only)
// If we add time avg to abs(timeOffset) it makes exactly 1200000 ms, or 20 minutes
expectedBlocks: 161.68833333333333,
},
],
[ // Vector 4 (mainnet lock-in (epoch ending 788255))
[ // Inputs
dt('2023-04-20T09:57:33.000Z'), // Last DA time (in seconds)
dt('2022-08-16T03:16:54.000Z'), // timestamp of 504 blocks ago (in seconds)
dt('2023-05-04T14:54:09.000Z'), // Current time (now) (in seconds)
788255, // Current block height
1.7220298879531821, // Previous retarget % (Passed through)
'mainnet', // Network (if testnet, next value is non-zero)
dt('2023-05-04T14:54:26.000Z'), // Latest block timestamp in seconds
],
{ // Expected Result
progressPercent: 99.95039682539682,
difficultyChange: -1.4512637555574193,
estimatedRetargetDate: 1683212658129,
remainingBlocks: 1,
remainingTime: 609129,
previousRetarget: 1.7220298879531821,
previousTime: 1681984653,
nextRetargetHeight: 788256,
timeAvg: 609129,
adjustedTimeAvg: 609129,
timeOffset: 0,
expectedBlocks: 2045.66,
},
],
] as [[number, number, number, number, number, string, number], DifficultyAdjustment][];
for (const vector of vectors) {
const result = calcDifficultyAdjustment(...vector[0]);
// previousRetarget is passed through untouched
expect(result.previousRetarget).toStrictEqual(vector[0][4]);
expect(result).toStrictEqual(vector[1]);
}
});
test('should calculate Difficulty change from bits fields of two blocks', () => {
// Check same exponent + check min max for output
expect(calcBitsDifference(0x1d000200, 0x1d000100)).toEqual(100);
expect(calcBitsDifference(0x1d000400, 0x1d000100)).toEqual(300);
expect(calcBitsDifference(0x1d000800, 0x1d000100)).toEqual(300); // Actually 700
expect(calcBitsDifference(0x1d000100, 0x1d000200)).toEqual(-50);
expect(calcBitsDifference(0x1d000100, 0x1d000400)).toEqual(-75);
expect(calcBitsDifference(0x1d000100, 0x1d000800)).toEqual(-75); // Actually -87.5
// Check new higher exponent
expect(calcBitsDifference(0x1c000200, 0x1d000001)).toEqual(100);
expect(calcBitsDifference(0x1c000400, 0x1d000001)).toEqual(300);
expect(calcBitsDifference(0x1c000800, 0x1d000001)).toEqual(300);
expect(calcBitsDifference(0x1c000100, 0x1d000002)).toEqual(-50);
expect(calcBitsDifference(0x1c000100, 0x1d000004)).toEqual(-75);
expect(calcBitsDifference(0x1c000100, 0x1d000008)).toEqual(-75);
// Check new lower exponent
expect(calcBitsDifference(0x1d000002, 0x1c000100)).toEqual(100);
expect(calcBitsDifference(0x1d000004, 0x1c000100)).toEqual(300);
expect(calcBitsDifference(0x1d000008, 0x1c000100)).toEqual(300);
expect(calcBitsDifference(0x1d000001, 0x1c000200)).toEqual(-50);
expect(calcBitsDifference(0x1d000001, 0x1c000400)).toEqual(-75);
expect(calcBitsDifference(0x1d000001, 0x1c000800)).toEqual(-75);
// Check error when exponents are too far apart
expect(() => calcBitsDifference(0x1d000001, 0x1a000800)).toThrow(
/Impossible exponent difference/
);
// Check invalid inputs
expect(() => calcBitsDifference(0x7f000001, 0x1a000800)).toThrow(
/Invalid bits/
);
expect(() => calcBitsDifference(0, 0x1a000800)).toThrow(/Invalid bits/);
expect(() => calcBitsDifference(100.2783, 0x1a000800)).toThrow(
/Invalid bits/
);
expect(() => calcBitsDifference(0x00800000, 0x1a000800)).toThrow(
/Invalid bits/
);
expect(() => calcBitsDifference(0x1c000000, 0x1a000800)).toThrow(
/Invalid bits/
);
});
});

View File

@@ -0,0 +1,52 @@
[
{
"txid": "50136231cb7eeeffb17fc41d1cca213426abe5bf3760e3d6421cad0c0edad367",
"version": 1,
"locktime": 0,
"vin": [
{
"txid": "c7f86fb7b830124057475b282809f3474ef3565daa3de0b599980fb9e84ab019",
"vout": 4217,
"prevout": {
"scriptpubkey": "001466197b5eadd8067ec194a457e1044b6d1fbdd3b3",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 66197b5eadd8067ec194a457e1044b6d1fbdd3b3",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1qvcvhkh4dmqr8asv553t7zpztd50mm5ang4na33",
"value": 106
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"3043021f2af6060a142c6cfd7428adad6a50745d2424813d7ced5c0bbcca85e70de1be022021440ca1c8c3ed49ecd1b64dca6911adcd430c5d3dd60d77ffe0072953999f5b01",
"02ead5c34e3d2c506574b562f857576e11380b6ba15d9f0ad7b7303fdaa9c1513d"
],
"is_coinbase": false,
"sequence": 4294967295
}
],
"vout": [
{
"scriptpubkey": "6a023a29",
"scriptpubkey_asm": "OP_RETURN OP_PUSHBYTES_2 3a29",
"scriptpubkey_type": "op_return",
"value": 0
},
{
"scriptpubkey": "6a036d7648",
"scriptpubkey_asm": "OP_RETURN OP_PUSHBYTES_3 6d7648",
"scriptpubkey_type": "op_return",
"value": 0
}
],
"size": 186,
"weight": 420,
"sigops": 1,
"fee": 106,
"status": {
"confirmed": true,
"block_height": 836361,
"block_hash": "0000000000000000000341cc26cda4af82cd25f7063c448772228cbf2836915b",
"block_time": 1711448028
}
}
]

View File

@@ -0,0 +1,600 @@
[
{
"txid": "13f007241d78e8b0b4e57d2ae3fd37bcfe3226534d7cadeba5a549860d960db0",
"version": 2,
"locktime": 0,
"vin": [
{
"txid": "cb8f206f4e88bec97107089f3e9e61d50cde53d4541992ae19759b71103cf75c",
"vout": 0,
"prevout": {
"scriptpubkey": "0014fd6d15ff832c12f1ff04a5ccd5039f7227b260bd",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 fd6d15ff832c12f1ff04a5ccd5039f7227b260bd",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1ql4k3tlur9sf0rlcy5hxd2qulwgnmyc9akehvth",
"value": 610677
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"304302205c430b36ebd2bb327951d83440af1f58f127871b2baada4c4dde2bc0b6721f56021f3445099f1a40e35baeda32e8e3727b505ffba0d882b11f498c7762f4184e9901",
"0236b5edd4fbbcfb045960e42ec8a9968944084785932e32940e8cd2583b37da67"
],
"is_coinbase": false,
"sequence": 2147483648
}
],
"vout": [
{
"scriptpubkey": "76a9149d32ef812385f3811634e0c0117dd153a5de10a488ac",
"scriptpubkey_asm": "OP_DUP OP_HASH160 OP_PUSHBYTES_20 9d32ef812385f3811634e0c0117dd153a5de10a4 OP_EQUALVERIFY OP_CHECKSIG",
"scriptpubkey_type": "p2pkh",
"scriptpubkey_address": "1FLC7Bag7okAkKPCyZbgZZg3Hh1EuGZ5Rd",
"value": 344697
},
{
"scriptpubkey": "00147dee8a7a38abbfb00dbfba365c8d6712934cc491",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 7dee8a7a38abbfb00dbfba365c8d6712934cc491",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1q0hhg573c4wlmqrdlhgm9ert8z2f5e3y3lf9hvx",
"value": 265396
}
],
"size": 224,
"weight": 572,
"fee": 584,
"status": {
"confirmed": false
},
"order": 2953680397,
"vsize": 143,
"adjustedVsize": 143,
"sigops": 5,
"feePerVsize": 4.083916083916084,
"adjustedFeePerVsize": 4.083916083916084,
"effectiveFeePerVsize": 4.083916083916084,
"firstSeen": 1691222538,
"uid": 526973,
"inputs": [
526728
],
"position": {
"block": 7,
"vsize": 21429708.5
},
"bestDescendant": null,
"cpfpChecked": true
},
{
"txid": "8e89b20f8a7fadb0e4cdbe57a00eee224f5076bac5387fc276916724e7c4a16a",
"version": 2,
"locktime": 800571,
"vin": [
{
"txid": "35e16762459539f3a8e52c5dee6a9ccaa9e9268efed33aa2c6e1b7805e849f24",
"vout": 0,
"prevout": {
"scriptpubkey": "0014d4f16ef275b3e1c4a4ecbef55a164933e0f6460f",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 d4f16ef275b3e1c4a4ecbef55a164933e0f6460f",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1q6nckaun4k0suff8vhm6459jfx0s0v3s0ff4ukl",
"value": 1528924
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"3044022019008b26e885bb43da25a11ffac147a057722072eedb68411f114f6e7eb82ebc02201b618264bb97756b88fc3bbc365b73044ac18b33b1067e31cfd5bcd0f50ed2c701",
"039b71145070bd3e8af28e27fa577f2e12ab6bb4e212d3eeaef08b4bc39e8cbc13"
],
"is_coinbase": false,
"sequence": 4294967293
},
{
"txid": "67c27ed0f767526234bcd5f795a31fab8ec4d0251bf12c68f2746951f4110d90",
"vout": 3,
"prevout": {
"scriptpubkey": "0014a7c3d613b321375054b2ac9b6114367bc034ad6f",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 a7c3d613b321375054b2ac9b6114367bc034ad6f",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1q5lpavyanyym4q49j4jdkz9pk00qrftt0yqzvk3",
"value": 436523
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"304402204e67285fc656bc45ed082499b076d5dba2fa21d0d7e64a0ae52b19d69a11760002200f037d81ee540b74397844513b72b08ed92b06db76bd20b08f7a0a3b36ab13d501",
"02a3ebae85f0225b6fbb5ff060afce683a4683507a57544605a29ee7d287e591b4"
],
"is_coinbase": false,
"sequence": 4294967293
},
{
"txid": "21c38fb9a2521e438c614f53b19ddd7a5594bcc4b77480e762fd4b702fad3374",
"vout": 1,
"prevout": {
"scriptpubkey": "00149660e34ef88106536c816c037b5b28dd64a812e2",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 9660e34ef88106536c816c037b5b28dd64a812e2",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1qjeswxnhcsyr9xmypdsphkkegm4j2syhztgzxv4",
"value": 758149
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"3044022021b556f0aa99329076bcc435338aceaf534963efcab306931b1b2b0461e16e0c02203a78942a3745c4da656bddfd8cf16b85dc04d652904e88682127cdd9ca63339001",
"0298963be4a8f66aca9fcf1c6dc95547aeaa82347543190c91e094c2321142b9f0"
],
"is_coinbase": false,
"sequence": 4294967293
},
{
"txid": "aa998dbae65240a7386bf7d468459551d99c3de8e2f9057ff5f2d38e17daf788",
"vout": 0,
"prevout": {
"scriptpubkey": "00147bb7413a39943b21ded98ad5e6ad7a222d273e17",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 7bb7413a39943b21ded98ad5e6ad7a222d273e17",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1q0wm5zw3ejsajrhke3t27dtt6ygkjw0sh9lltg6",
"value": 1067200
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"304402205e2269f7d4ee0513b34354c38e920aef2dabac6f4350afb2dd105ff3ee43ae7b02202870322f2cb85cb0b2b0e38152f018bfff271dc3ec5aed0515854d0b259aaf3d01",
"03b87320cf3263a644a0d3f89c1b4a7304d9dfda9eb8c891560716abcb73e88b99"
],
"is_coinbase": false,
"sequence": 4294967293
},
{
"txid": "230253d195d779d4688ba16993985cd27b2e7a687d8b889b3bc63f19ece36f20",
"vout": 0,
"prevout": {
"scriptpubkey": "001439647bd997819d12dfc72b0fb9ff9ffcb84946f8",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 39647bd997819d12dfc72b0fb9ff9ffcb84946f8",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1q89j8hkvhsxw39h789v8mnlulljuyj3hc9zve97",
"value": 361950
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"304402204f7ca868bb9b92a07fecdc6b9dd56e4e1d007ca1405952f98ed6bc416345b5f2022055320a97791417abf6628fcf6513ac5785b06c630f854d8595e96ea06c3841d301",
"03a3ffe8e3ef2eea129b227e9658164bae0a6d21c17da6de9973ba34d9e04b21a0"
],
"is_coinbase": false,
"sequence": 4294967293
},
{
"txid": "670771e265a0b62dbd3c1fec2b865177eaf0bafd0ae49dd40a1c9fcd9a847a81",
"vout": 0,
"prevout": {
"scriptpubkey": "0014d45d1b0022c7387e42c5452ced561bdb8fd4b521",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 d45d1b0022c7387e42c5452ced561bdb8fd4b521",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1q63w3kqpzcuu8usk9g5kw64smmw8afdfpxmc2m0",
"value": 453275
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"3044022071312921800441903b2099e723add8702dd0f92ec11526ff87acf6967ec64cbd02203deabe7ed56d5daaa9a95c5a607b1ab705ff1c46bc6984a6dca120e63a91768601",
"0257302ac8d9c4c8f9b1744f19bb432359326b9cc7bdddeeab9202749a6d92be58"
],
"is_coinbase": false,
"sequence": 4294967293
},
{
"txid": "0af82159eee2b69242f2ff032636e410b67ec1ace52e55fb0d20ed814cd64803",
"vout": 0,
"prevout": {
"scriptpubkey": "001459e4d6bfefc6b45f955a69c4aeca26348e9d54ed",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 59e4d6bfefc6b45f955a69c4aeca26348e9d54ed",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1qt8jdd0l0c669l926d8z2aj3xxj8f648dtyn7tc",
"value": 439961
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"3044022027540322e92c23c5513aa2587e7feb56a8ce82f879269d6b3cbd425634b44f8e022045572dee7262b02130bfe32d8aa8abbfaa64e101abfc819bba5380c78876692d01",
"03fe02262d87f4a5289d3dd66e3d9a74cd49fa1cad0249284a7451896a827249a5"
],
"is_coinbase": false,
"sequence": 4294967293
},
{
"txid": "68cf9c784870a4f888f044755f7ce318557f652461db8ef887d279672f186018",
"vout": 0,
"prevout": {
"scriptpubkey": "001454822b2d5d52597a78b630921cf439a41e32f2f9",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 54822b2d5d52597a78b630921cf439a41e32f2f9",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1q2jpzkt2a2fvh579kxzfpeape5s0r9uhewhl5n4",
"value": 227639
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"304402203ad511d6a8730748b8828bc38897d360451adf620ebdc1d229c08c097c80bef202202f50c793d95b5200cf2258e03896a3be7720df0eb3b8c810c86db74341a7e83e01",
"0294992e9f4546e6e119741f908411ae531e9d1ff732d69b4dff8172aaf2a4b216"
],
"is_coinbase": false,
"sequence": 4294967293
},
{
"txid": "793f01dfdb19bf41f958fd917c16d9c4dd5d5e1a5c0434bfdb367212659d1b5b",
"vout": 0,
"prevout": {
"scriptpubkey": "0014f54edf8ae647b5300e2674523254e923d93d169f",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 f54edf8ae647b5300e2674523254e923d93d169f",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1q748dlzhxg76nqr3xw3fry48fy0vn695lvhlkxv",
"value": 227070
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"304402206e807ab616f4f2887ba703ae744d856142d9aca8128698419bbb67fb4fad8177022060fc65c7cd66baa88ad1e1d317a6edd5f6cb52fe8bff6e5405ffa1acf9d945d901",
"02a0ad0167c6e9edf62677404d74d3b80ea276e47e758ffaa6ca17bd65ac79f7aa"
],
"is_coinbase": false,
"sequence": 4294967293
}
],
"vout": [
{
"scriptpubkey": "00148a5c45ccfc29d209940d94525e2edb7743a1ad8a",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 8a5c45ccfc29d209940d94525e2edb7743a1ad8a",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1q3fwytn8u98fqn9qdj3f9utkmwap6rtv2ym33zm",
"value": 5500000
}
],
"size": 1375,
"weight": 2605,
"fee": 691,
"status": {
"confirmed": false
},
"order": 1788986599,
"vsize": 651,
"adjustedVsize": 651.25,
"sigops": 9,
"feePerVsize": 1.0610364683301343,
"adjustedFeePerVsize": 1.0610364683301343,
"effectiveFeePerVsize": 1.0610364683301343,
"firstSeen": 1691163298,
"uid": 120494,
"inputs": [],
"position": {
"block": 7,
"vsize": 93780091.5
},
"bestDescendant": null,
"cpfpChecked": true
},
{
"txid": "20b984492b5264162a4c92c9a34bc7fa08b67d669de7b4c5982ad3cb28aaecf6",
"version": 2,
"locktime": 0,
"vin": [
{
"txid": "3adda6afd547193793c248e667c2b7dbf26d705003de65e3a25e5be698286aef",
"vout": 2,
"prevout": {
"scriptpubkey": "0014989cf12774fc705609610c7b9419f2d1c4807644",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 989cf12774fc705609610c7b9419f2d1c4807644",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1qnzw0zfm5l3c9vztpp3aegx0j68zgqajyffr2r6",
"value": 27619
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"304402205d7f1e0d928982645c2bcc4c730c4545c382d6520c2a14eebc71594702cd06b302200511d452ce51c79017536f50acb115eefe7c04506ad12b9307d2b5d56b999beb01",
"03716cb4f0430fe69c596a12c6680c55803150645989b406772838d548cde7cca5"
],
"is_coinbase": false,
"sequence": 4294967295
}
],
"vout": [
{
"scriptpubkey": "6a5d0614c0a2331441",
"scriptpubkey_asm": "OP_RETURN OP_PUSHNUM_13 OP_PUSHBYTES_6 14c0a2331441",
"scriptpubkey_type": "op_return",
"value": 0
},
{
"scriptpubkey": "5114d71c6c3ea7ba7e6ee477a0bfd82c20c78997882c",
"scriptpubkey_asm": "OP_PUSHNUM_1 OP_PUSHBYTES_20 d71c6c3ea7ba7e6ee477a0bfd82c20c78997882c",
"scriptpubkey_type": "unknown",
"scriptpubkey_address": "bc1p6uwxc048hflxaerh5zlastpqc7ye0zpvq7gq2a",
"value": 546
},
{
"scriptpubkey": "0014989cf12774fc705609610c7b9419f2d1c4807644",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 989cf12774fc705609610c7b9419f2d1c4807644",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1qnzw0zfm5l3c9vztpp3aegx0j68zgqajyffr2r6",
"value": 23073
}
],
"size": 240,
"weight": 633,
"sigops": 1,
"fee": 4000,
"status": {
"confirmed": true,
"block_height": 848136,
"block_hash": "00000000000000000002c69c7a3010fcd596c0c7451c23e7cd1f5e19ebf8ee6d",
"block_time": 1718517071
}
},
{
"txid": "b10c0000004da5a9d1d9b4ae32e09f0b3e62d21a5cce5428d4ad714fb444eb5d",
"version": 1,
"locktime": 1231006505,
"vin": [
{
"txid": "d46a24962c1d7bd6e87d80570c6a53413eaf30d7fde7f52347f13645ae53969b",
"vout": 0,
"prevout": {
"scriptpubkey": "41049434a2dd7c5b82df88f578f8d7fd14e8d36513aaa9c003eb5bd6cb56065e44b7e0227139e8a8e68e7de0a4ed32b8c90edc9673b8a7ea541b52f2a22196f7b8cfac",
"scriptpubkey_asm": "OP_PUSHBYTES_65 049434a2dd7c5b82df88f578f8d7fd14e8d36513aaa9c003eb5bd6cb56065e44b7e0227139e8a8e68e7de0a4ed32b8c90edc9673b8a7ea541b52f2a22196f7b8cf OP_CHECKSIG",
"scriptpubkey_type": "p2pk",
"value": 6102
},
"scriptsig": "473044022004f027ae0b19bb7a7aa8fcdf135f1da769d087342020359ef4099a9f0f0ba4ec02206a83a9b78df3fed89a3b6052e69963e1fb08d8f6d17d945e43b51b5214aa41e601",
"scriptsig_asm": "OP_PUSHBYTES_71 3044022004f027ae0b19bb7a7aa8fcdf135f1da769d087342020359ef4099a9f0f0ba4ec02206a83a9b78df3fed89a3b6052e69963e1fb08d8f6d17d945e43b51b5214aa41e601",
"is_coinbase": false,
"sequence": 20090103
},
{
"txid": "cb9b47ac04023b29fb633a8ef04af351ac9fd74c57c9a2163f683516274767e3",
"vout": 0,
"prevout": {
"scriptpubkey": "76a914bbb1f7d0f7e15ac088af9bafe25aaac1a59832d088ac",
"scriptpubkey_asm": "OP_DUP OP_HASH160 OP_PUSHBYTES_20 bbb1f7d0f7e15ac088af9bafe25aaac1a59832d0 OP_EQUALVERIFY OP_CHECKSIG",
"scriptpubkey_type": "p2pkh",
"scriptpubkey_address": "1J7SZJry7CX4zWdH3P8E8UJjZrhcLEjJ39",
"value": 1913
},
"scriptsig": "46304302204dc2939be89ab6626457fff40aec2cc4e6213e64bcb4d2c43bf6b49358ff638c021f33d2f8fdf6d54a2c82bb7cddc62becc2cbbaca6fd7f3ec927ea975f29ad8510221028b98707adfd6f468d56c1a6067a6f0c7fef43afbacad45384017f8be93a18d40",
"scriptsig_asm": "OP_PUSHBYTES_70 304302204dc2939be89ab6626457fff40aec2cc4e6213e64bcb4d2c43bf6b49358ff638c021f33d2f8fdf6d54a2c82bb7cddc62becc2cbbaca6fd7f3ec927ea975f29ad85102 OP_PUSHBYTES_33 028b98707adfd6f468d56c1a6067a6f0c7fef43afbacad45384017f8be93a18d40",
"is_coinbase": false,
"sequence": 20081031
},
{
"txid": "cb9b47ac04023b29fb633a8ef04af351ac9fd74c57c9a2163f683516274767e3",
"vout": 1,
"prevout": {
"scriptpubkey": "52210304e708d258a632ffb128a62ecf5eebd1904e505497d031619513afc8bca7858f2102b9dc03f1133e7cbc7eb311631acc2dbda908fb0f0fae095da2f4dd427f51308a4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f53ae",
"scriptpubkey_asm": "OP_PUSHNUM_2 OP_PUSHBYTES_33 0304e708d258a632ffb128a62ecf5eebd1904e505497d031619513afc8bca7858f OP_PUSHBYTES_33 02b9dc03f1133e7cbc7eb311631acc2dbda908fb0f0fae095da2f4dd427f51308a OP_PUSHBYTES_65 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f OP_PUSHNUM_3 OP_CHECKMULTISIG",
"scriptpubkey_type": "multisig",
"value": 1971
},
"scriptsig": "00453042021e4f6ff73d7b304a5cbf3bb7738abb5f81a4af6335962134ce27a1cc45fec702201b95e3acb7db93257b20651cdcb79af66bf0bb86a8ae5b4e0a5df4e3f86787e2033b303802153b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63021f34793e2878497561e7616291ebdda3024b681cdacc8b863b5b0804cd30c2a481",
"scriptsig_asm": "OP_0 OP_PUSHBYTES_69 3042021e4f6ff73d7b304a5cbf3bb7738abb5f81a4af6335962134ce27a1cc45fec702201b95e3acb7db93257b20651cdcb79af66bf0bb86a8ae5b4e0a5df4e3f86787e203 OP_PUSHBYTES_59 303802153b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63021f34793e2878497561e7616291ebdda3024b681cdacc8b863b5b0804cd30c2a481",
"is_coinbase": false,
"sequence": 19750504
},
{
"txid": "45e1cb33599acb071810ccc801b71bd7610865f5b899492946ab1bfbcb61cad6",
"vout": 0,
"prevout": {
"scriptpubkey": "a91419f0b86f61606c6eb51b217698ca7e8bff1e398b87",
"scriptpubkey_asm": "OP_HASH160 OP_PUSHBYTES_20 19f0b86f61606c6eb51b217698ca7e8bff1e398b OP_EQUAL",
"scriptpubkey_type": "p2sh",
"scriptpubkey_address": "344BBtYkhaCXgA7oYSXASUfh4bFieiponG",
"value": 2140
},
"scriptsig": "00443041021d1313459a48bd1d0628eec635495f793e970729684394f9b814d2b24012022050be6d9918444e283da0136884f8311ec465d0fed2f8d24b75a8485ebdc13aea013a303702153b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63021e78644ba72eab69fefb5fe50700671bfb91dda699f72ffbb325edc6a3c4ef8239303602153b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63021d2c2db104e70720c39af43b6ba3edd930c26e0818aa59ff9c886281d8ba834ced532103e0a220d36f6f7ed5f3f58c279d055707c454135baf18fd00d798fec3cb52dfbc2103cf689db9313b9f7fc0b984dd9cac750be76041b392919b06f6bf94813da34cd421027f8af2eb6e904deddaa60d5af393d430575eb35e4dfd942a8a5882734b078906410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a34104ae1a62fe09c5f51b13905f07f06b99a2f7159b2225f374cd378d71302fa28414e7aab37397f554a7df5f142c21c1b7303b8a0626f1baded5c72a704f7e6cd84c55ae",
"scriptsig_asm": "OP_0 OP_PUSHBYTES_68 3041021d1313459a48bd1d0628eec635495f793e970729684394f9b814d2b24012022050be6d9918444e283da0136884f8311ec465d0fed2f8d24b75a8485ebdc13aea01 OP_PUSHBYTES_58 303702153b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63021e78644ba72eab69fefb5fe50700671bfb91dda699f72ffbb325edc6a3c4ef82 OP_PUSHBYTES_57 303602153b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63021d2c2db104e70720c39af43b6ba3edd930c26e0818aa59ff9c886281d8ba83 OP_PUSHDATA1 532103e0a220d36f6f7ed5f3f58c279d055707c454135baf18fd00d798fec3cb52dfbc2103cf689db9313b9f7fc0b984dd9cac750be76041b392919b06f6bf94813da34cd421027f8af2eb6e904deddaa60d5af393d430575eb35e4dfd942a8a5882734b078906410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a34104ae1a62fe09c5f51b13905f07f06b99a2f7159b2225f374cd378d71302fa28414e7aab37397f554a7df5f142c21c1b7303b8a0626f1baded5c72a704f7e6cd84c55ae",
"is_coinbase": false,
"sequence": 16,
"inner_redeemscript_asm": "OP_PUSHNUM_3 OP_PUSHBYTES_33 03e0a220d36f6f7ed5f3f58c279d055707c454135baf18fd00d798fec3cb52dfbc OP_PUSHBYTES_33 03cf689db9313b9f7fc0b984dd9cac750be76041b392919b06f6bf94813da34cd4 OP_PUSHBYTES_33 027f8af2eb6e904deddaa60d5af393d430575eb35e4dfd942a8a5882734b078906 OP_PUSHBYTES_65 0411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3 OP_PUSHBYTES_65 04ae1a62fe09c5f51b13905f07f06b99a2f7159b2225f374cd378d71302fa28414e7aab37397f554a7df5f142c21c1b7303b8a0626f1baded5c72a704f7e6cd84c OP_PUSHNUM_5 OP_CHECKMULTISIG"
},
{
"txid": "cb9b47ac04023b29fb633a8ef04af351ac9fd74c57c9a2163f683516274767e3",
"vout": 2,
"prevout": {
"scriptpubkey": "a9143b13a1f71c20c799d86bb624b3898c826d6c82da87",
"scriptpubkey_asm": "OP_HASH160 OP_PUSHBYTES_20 3b13a1f71c20c799d86bb624b3898c826d6c82da OP_EQUAL",
"scriptpubkey_type": "p2sh",
"scriptpubkey_address": "375PJxsKRtAq4WoS6u82jvgZW94R8Wx3iH",
"value": 5139
},
"scriptsig": "1600149b27f072e4b972927c445d1946162a550b0914d8",
"scriptsig_asm": "OP_PUSHBYTES_22 00149b27f072e4b972927c445d1946162a550b0914d8",
"witness": [
"3040021c23902a01d4c5cff2c33c8bdb778a5aadea78a9a0d6d4db60aaa0fba1022069237d9dbf2db8cff9c260ba71250493682d01a746f4a45c5c7ea386e56d2bc902",
"0240187acd3e2fd3d8e1acffefa85907b6550730c24f78dfd3301c829fc4daf3cc"
],
"is_coinbase": false,
"sequence": 141,
"inner_redeemscript_asm": "OP_0 OP_PUSHBYTES_20 9b27f072e4b972927c445d1946162a550b0914d8"
},
{
"txid": "cb9b47ac04023b29fb633a8ef04af351ac9fd74c57c9a2163f683516274767e3",
"vout": 3,
"prevout": {
"scriptpubkey": "a914a3c0698f2300c7b2e8107d4c9c988e642110039087",
"scriptpubkey_asm": "OP_HASH160 OP_PUSHBYTES_20 a3c0698f2300c7b2e8107d4c9c988e6421100390 OP_EQUAL",
"scriptpubkey_type": "p2sh",
"scriptpubkey_address": "3GcrZrbUuvE4UtUdSbKTXcRnTqmfMdyMAC",
"value": 3220
},
"scriptsig": "220020a18160de7291554f349c7d5cbee4ab97fb542e94cf302ce8d7e9747e4188ca75",
"scriptsig_asm": "OP_PUSHBYTES_34 0020a18160de7291554f349c7d5cbee4ab97fb542e94cf302ce8d7e9747e4188ca75",
"witness": [
"303f021c65aee6696e80be6e14545cfd64b44f17b0514c150eefdb090c0f0bd9021f3fef4aa95c252a225622aba99e4d5af5a6fe40d177acd593e64cf2f8557ccc03",
"03b55c6f0749e0f3e2caeca05f68e3699f1b3c62a550730f704985a6a9aae437a1",
"76a914db865fd920959506111079995f1e4017b489bfe38763ac6721024d560f7f5d28aae5e1a8aa2b7ba615d7fc48e4ea27e5d27336e6a8f5fa0f5c8c7c820120876475527c2103443e8834fa7d79d7b5e95e0e9d0847f6b03ac3ea977979858b4104947fca87ca52ae67a91446c3747322b220fdb925c9802f0e949c1feab99988ac6868"
],
"is_coinbase": false,
"sequence": 3735928559,
"inner_redeemscript_asm": "OP_0 OP_PUSHBYTES_32 a18160de7291554f349c7d5cbee4ab97fb542e94cf302ce8d7e9747e4188ca75",
"inner_witnessscript_asm": "OP_DUP OP_HASH160 OP_PUSHBYTES_20 db865fd920959506111079995f1e4017b489bfe3 OP_EQUAL OP_IF OP_CHECKSIG OP_ELSE OP_PUSHBYTES_33 024d560f7f5d28aae5e1a8aa2b7ba615d7fc48e4ea27e5d27336e6a8f5fa0f5c8c OP_SWAP OP_SIZE OP_PUSHBYTES_1 20 OP_EQUAL OP_NOTIF OP_DROP OP_PUSHNUM_2 OP_SWAP OP_PUSHBYTES_33 03443e8834fa7d79d7b5e95e0e9d0847f6b03ac3ea977979858b4104947fca87ca OP_PUSHNUM_2 OP_CHECKMULTISIG OP_ELSE OP_HASH160 OP_PUSHBYTES_20 46c3747322b220fdb925c9802f0e949c1feab999 OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF OP_ENDIF"
},
{
"txid": "cb9b47ac04023b29fb633a8ef04af351ac9fd74c57c9a2163f683516274767e3",
"vout": 4,
"prevout": {
"scriptpubkey": "0014c0ca6e754e65d3ba59112d7abc33e500c00ecfa7",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 c0ca6e754e65d3ba59112d7abc33e500c00ecfa7",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1qcr9xua2wvhfm5kg394atcvl9qrqqana8rrmy8h",
"value": 17144
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"303e021c11f60486afd0f5d6573603fb2076ef2f676455b92ada257d2f25558a021e317719c946f951d49bf4df4285a618629cd9e554fcbf787c319a0c4dd22601",
"032467f24cc31664f0cf34ff8d5cbb590888ddc1dcfec724a32ae3dd5338b8508e"
],
"is_coinbase": false,
"sequence": 21000000
},
{
"txid": "637db3928a8fb1b22b81f92dc738ee7637e5b172d650363d0b327429578bd001",
"vout": 0,
"prevout": {
"scriptpubkey": "0020a9530a167fcada672c142ee636dcd171796e69ef8e37aa1f77f35c58edd7a357",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_32 a9530a167fcada672c142ee636dcd171796e69ef8e37aa1f77f35c58edd7a357",
"scriptpubkey_type": "v0_p2wsh",
"scriptpubkey_address": "bc1q49fs59nletdxwtq59mnrdhx3w9uku6003cm658mh7dw93mwh5dts2w2kht",
"value": 8149
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"303d021c32f9454db85cb1a4ca63a9883d4347c5e13f3654e884ae44e9efa3c8021d62f07fe452c06b084bc3e09afd3aac4039136549a465533bc1ca66967902",
"01",
"632102fd6db4de50399b2aa086edb23f8e140bbc823d6651e024a0eb871288068789cd67012ab27521034134a2bb35c3f83dab2489d96160741888b8b5589bb694dea6e7bc24486e9c6f68ac"
],
"is_coinbase": false,
"sequence": 4190024921,
"inner_witnessscript_asm": "OP_IF OP_PUSHBYTES_33 02fd6db4de50399b2aa086edb23f8e140bbc823d6651e024a0eb871288068789cd OP_ELSE OP_PUSHBYTES_1 2a OP_CSV OP_DROP OP_PUSHBYTES_33 034134a2bb35c3f83dab2489d96160741888b8b5589bb694dea6e7bc24486e9c6f OP_ENDIF OP_CHECKSIG"
},
{
"txid": "0020db02df125062ebae5bacd189ebff22577b2817c1872be79a0d3ba3982c41",
"vout": 0,
"prevout": {
"scriptpubkey": "512071212ded0ff4c9b1b0c505d8012772e2dbe98a3cae7168377b950fb6b866a849",
"scriptpubkey_asm": "OP_PUSHNUM_1 OP_PUSHBYTES_32 71212ded0ff4c9b1b0c505d8012772e2dbe98a3cae7168377b950fb6b866a849",
"scriptpubkey_type": "v1_p2tr",
"scriptpubkey_address": "bc1pwysjmmg07nymrvx9qhvqzfmjutd7nz3u4ecksdmmj58mdwrx4pysq6m68g",
"value": 9001
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"d822f203827852998cad370232e8c57294540a5da51107fa26cf466bdd2b8b0b3d161999cc80aed8de7386a2bd5d5313aea159a231cc26fa53aaa702b7fa21ed"
],
"is_coinbase": false,
"sequence": 341
},
{
"txid": "795741ecf9c431b14b1c8d2dd017d3978fd4f6452e91edf416f31ef9971206b4",
"vout": 0,
"prevout": {
"scriptpubkey": "512089ac120a490eee88db5588112f95f88093284c814f07c3ad943a7faefba2271a",
"scriptpubkey_asm": "OP_PUSHNUM_1 OP_PUSHBYTES_32 89ac120a490eee88db5588112f95f88093284c814f07c3ad943a7faefba2271a",
"scriptpubkey_type": "v1_p2tr",
"scriptpubkey_address": "bc1p3xkpyzjfpmhg3k643qgjl90cszfjsnypfuru8tv58fl6a7azyudqkcu66k",
"value": 19953
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"fe6eb715dceffefc067fdc787d250a9a9116682d216f6356ea38fc1f112bd74995faa90315e81981d2c2260b7eaca3c41a16b280362980f0d8faf4c05ebb82c5",
"e34ad0ad33885a473831f8ba8d9339123cb19d0e642e156d8e0d6e2ab2691aedb30e55a35637a806927225e1aa72223d41e59f92c6579b819e7d331a7ada9d2e01",
"2a4861fb4cb951c791bf6c93859ef65abccd90034f91b9b77abb918e13b6fce75d5fa3e2d2f6eeeae105315178c2cb9db2ef238fe89b282f691c06db43bc71ca02",
"fc97bb2be673c3bf388aaf58178ef14d354caf83c92aca8ef1831d619b8511e928f4f5fdea3962067b11e7cecfe094cd0f66a4ea9af9ec836d70d18f2b37df0281",
"a5781a0adaa80ab7f7f164172dd1a1cb127e523daa0d6949aba074a15c589f12dfb8183182afec9230cb7947b7422a4abc1bb78173550d66274ea19f6c9dd92c82",
"",
"",
"205f4237bd7dae576b34abc8a9c6fa4f0e4787c04234ca963e9e96c8f9b67b56d1ac205f4237bd7f93c69403a30c6b641f27ccf5201090152fcf1596474221307831c3ba205ac8ff25ce63564963d1148b84627f614af1f3c77d7caa23adc61264fa5e4996ba20b210c83e6f5b3f866837112d023d9ae8da2a6412168d54968ab87860ab970690ba20d3ee3b7a8b8149122b3c886330b3241538ba4b935c4040f4a73ddab917241bc5ba20cdfabb9d0e5c8f09a83f19e36e100d8f5e882f1b60aa60dacd9e6d072c117bc0ba20aab038c238e95fb54cdd0a6705dc1b1f8d135a9e9b20ab9c7ff96eef0e9bf545ba559c",
"c0b1674191a88ec5cdd733e4240a81803105dc412d6c6708d53ab94fc248f4f5534a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33bf4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e166f7cf9580f1c2dfb3c4d5d043cdbb128c640e3f20161245aa7372e9666168516a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48dd5d27987d2a3dfc724e359870c6644b40e497bdc0589a033220fe15429d88599e3bf3d07d4b0375638d5f1db5255fe07ba2c4cb067cd81b84ee974b6585fb46829a3efd3ef04f9153d47a990bd7b048a4b2d213daaa5fb8ed670fb85f13bdbcf54e48e5f5c656b26c3bca14a8c95aa583d07ebe84dde3b7dd4a78f4e4186e713d29c9c0e8e4d2a9790922af73f0b8d51f0bd4bb19940d9cf910ead8fbe85bc9bbb41a757f405890fb0f5856228e23b715702d714d59bf2b1feb70d8b2b4e3e089fdbcf0ef9d8d00f66e47917f67cc5d78aec1ac786e2abb8d2facb4e4790aad6cc455ae816e6cdafdb58d54e35d4f46d860047458eacf1c7405dc634631c570d8d31992805518fd62daa3bdd2a5c4fd2cd3054c9b3dca1d78055e9528cff6adc8f907925d2ebe48765103e6845c06f1f2bb77c6adc1cc002865865eb5cfd5c1cb10c007c60e14f9d087e0291d4d0c7869697c6681d979c6639dbd960792b4d4133e794d097969002ee05d336686fc03c9e15a597c1b9827669460fac9879903637777defed8717c581b4c0509329550e344bdc14ac38f71fc050096887e535c8fd456524104a6674693c29946543f8a0befccce5a352bda55ec8559fc630f5f37393096d97bfee8660f4100ffd61874d62f9a65de9fb6acf740c4c386990ef7373be398c4bdc43709db7398106609eea2a7841aaf3a4fa2000dc18184faa2a7eb5a2af5845a8d3796308ff9840e567b14cf6bb158ff26c999e6f9a1f5448f9aa"
],
"is_coinbase": false,
"sequence": 342,
"inner_witnessscript_asm": "OP_PUSHBYTES_32 5f4237bd7dae576b34abc8a9c6fa4f0e4787c04234ca963e9e96c8f9b67b56d1 OP_CHECKSIG OP_PUSHBYTES_32 5f4237bd7f93c69403a30c6b641f27ccf5201090152fcf1596474221307831c3 OP_CHECKSIGADD OP_PUSHBYTES_32 5ac8ff25ce63564963d1148b84627f614af1f3c77d7caa23adc61264fa5e4996 OP_CHECKSIGADD OP_PUSHBYTES_32 b210c83e6f5b3f866837112d023d9ae8da2a6412168d54968ab87860ab970690 OP_CHECKSIGADD OP_PUSHBYTES_32 d3ee3b7a8b8149122b3c886330b3241538ba4b935c4040f4a73ddab917241bc5 OP_CHECKSIGADD OP_PUSHBYTES_32 cdfabb9d0e5c8f09a83f19e36e100d8f5e882f1b60aa60dacd9e6d072c117bc0 OP_CHECKSIGADD OP_PUSHBYTES_32 aab038c238e95fb54cdd0a6705dc1b1f8d135a9e9b20ab9c7ff96eef0e9bf545 OP_CHECKSIGADD OP_PUSHNUM_5 OP_NUMEQUAL"
}
],
"vout": [
{
"scriptpubkey": "210261542eb020b36c1da48e2e607b90a8c1f2ccdbd06eaf5fb4bb0d7cc34293d32aac",
"scriptpubkey_asm": "OP_PUSHBYTES_33 0261542eb020b36c1da48e2e607b90a8c1f2ccdbd06eaf5fb4bb0d7cc34293d32a OP_CHECKSIG",
"scriptpubkey_type": "p2pk",
"value": 576
},
{
"scriptpubkey": "76a9140240539af6c68431e4ce9cc5ef464f12c1741b3c88ac",
"scriptpubkey_asm": "OP_DUP OP_HASH160 OP_PUSHBYTES_20 0240539af6c68431e4ce9cc5ef464f12c1741b3c OP_EQUALVERIFY OP_CHECKSIG",
"scriptpubkey_type": "p2pkh",
"scriptpubkey_address": "1CuQsdrcgcmPvugo3NqEwh1kDcpeEnuFC",
"value": 546
},
{
"scriptpubkey": "5121028b45a50f795be0413680036665d17a3eca099648ea80637bc3a70a7d2b52ae2851ae",
"scriptpubkey_asm": "OP_PUSHNUM_1 OP_PUSHBYTES_33 028b45a50f795be0413680036665d17a3eca099648ea80637bc3a70a7d2b52ae28 OP_PUSHNUM_1 OP_CHECKMULTISIG",
"scriptpubkey_type": "multisig",
"value": 582
},
{
"scriptpubkey": "a91449ed2c96e33b6134408af8484508bcc3248c8dbd87",
"scriptpubkey_asm": "OP_HASH160 OP_PUSHBYTES_20 49ed2c96e33b6134408af8484508bcc3248c8dbd OP_EQUAL",
"scriptpubkey_type": "p2sh",
"scriptpubkey_address": "38RuNhSiZiftB6WVnStu5aUz6jXtCDXQZk",
"value": 540
},
{
"scriptpubkey": "0014c8e51cf6891c0a2101aecea8cd5ce9bbbfaf7bba",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 c8e51cf6891c0a2101aecea8cd5ce9bbbfaf7bba",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1qerj3ea5frs9zzqdwe65v6h8fhwl677a6s0hxhf",
"value": 294
},
{
"scriptpubkey": "0020c485bbb80c4be276e77eac3a983a391cc8b1a1b5f160995a36c3dff18296385a",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_32 c485bbb80c4be276e77eac3a983a391cc8b1a1b5f160995a36c3dff18296385a",
"scriptpubkey_type": "v0_p2wsh",
"scriptpubkey_address": "bc1qcjzmhwqvf038dem74safsw3ernytrgd479sfjk3kc00lrq5k8pdqczl83q",
"value": 330
},
{
"scriptpubkey": "5120a7a42b268957a06c9de4d7260f1df392ce4d6e7b743f5adc27415ce2afceb3b9",
"scriptpubkey_asm": "OP_PUSHNUM_1 OP_PUSHBYTES_32 a7a42b268957a06c9de4d7260f1df392ce4d6e7b743f5adc27415ce2afceb3b9",
"scriptpubkey_type": "v1_p2tr",
"scriptpubkey_address": "bc1p57jzkf5f27sxe80y6unq780njt8y6mnmwsl44hp8g9ww9t7wkwusv7av76",
"value": 330
},
{
"scriptpubkey": "51024e73",
"scriptpubkey_asm": "OP_PUSHNUM_1 OP_PUSHBYTES_2 4e73",
"scriptpubkey_type": "unknown",
"scriptpubkey_address": "bc1pfeessrawgf",
"value": 240
},
{
"scriptpubkey": "6a224e6f7420796f757220696e707574732c206e6f7420796f7572206f7574707574732e005152535455565758595a5b5c5d5e5f60",
"scriptpubkey_asm": "OP_RETURN OP_PUSHBYTES_34 4e6f7420796f757220696e707574732c206e6f7420796f7572206f7574707574732e OP_0 OP_PUSHNUM_1 OP_PUSHNUM_2 OP_PUSHNUM_3 OP_PUSHNUM_4 OP_PUSHNUM_5 OP_PUSHNUM_6 OP_PUSHNUM_7 OP_PUSHNUM_8 OP_PUSHNUM_9 OP_PUSHNUM_10 OP_PUSHNUM_11 OP_PUSHNUM_12 OP_PUSHNUM_13 OP_PUSHNUM_14 OP_PUSHNUM_15 OP_PUSHNUM_16",
"scriptpubkey_type": "op_return",
"value": 0
}
],
"size": 3500,
"weight": 8186,
"sigops": 115,
"fee": 71294,
"status": {
"confirmed": true,
"block_height": 850000,
"block_hash": "00000000000000000002a0b5db2a7f8d9087464c2586b546be7bce8eb53b8187",
"block_time": 1719689674
}
}
]

View File

@@ -0,0 +1,121 @@
[
{
"txid": "7219d95161f3718335991ac6d967d24eedec370908c9879bb1e192e6d797d0a6",
"version": 1,
"locktime": 0,
"vin": [
{
"txid": "d863deb706de5a611028f7547e16ea81d7819e44beb640fb30a9ba30c585140f",
"vout": 0,
"prevout": {
"scriptpubkey": "76a914cd5b6566b455d043558829f6932edaae5d8f0ad388ac",
"scriptpubkey_asm": "OP_DUP OP_HASH160 OP_PUSHBYTES_20 cd5b6566b455d043558829f6932edaae5d8f0ad3 OP_EQUALVERIFY OP_CHECKSIG",
"scriptpubkey_type": "p2pkh",
"scriptpubkey_address": "1Kiq1dyVBzYLWGrBPWjChvKyzB2H95x5RJ",
"value": 799995000
},
"scriptsig": "483045022100aeeddfb9785c5a4b70e90d0445785c68b7a44e28853441134a70ddc4da39527602203dfe1ec1a377aaacb64ae65c7c944caf1398d2dc063f712251b4cf696d44d3cb01210314338e3e191aea3ac9e9292611faeedf0379bbe62c30fd76c7450722a1ac47c6",
"scriptsig_asm": "OP_PUSHBYTES_72 3045022100aeeddfb9785c5a4b70e90d0445785c68b7a44e28853441134a70ddc4da39527602203dfe1ec1a377aaacb64ae65c7c944caf1398d2dc063f712251b4cf696d44d3cb01 OP_PUSHBYTES_33 0314338e3e191aea3ac9e9292611faeedf0379bbe62c30fd76c7450722a1ac47c6",
"is_coinbase": false,
"sequence": 4294967293
}
],
"vout": [
{
"scriptpubkey": "6a4c5058325b8669baa9259e082f064005bc92274b559337ac317798f5d76f2d0577ed5a96042fce8c33d841b6c47a99f9597000ab04a10b34cd419fc19784d9e36f1a33fd7b000c3bce00b6000c1d1e00614b",
"scriptpubkey_asm": "OP_RETURN OP_PUSHDATA1 58325b8669baa9259e082f064005bc92274b559337ac317798f5d76f2d0577ed5a96042fce8c33d841b6c47a99f9597000ab04a10b34cd419fc19784d9e36f1a33fd7b000c3bce00b6000c1d1e00614b",
"scriptpubkey_type": "op_return",
"value": 0
},
{
"scriptpubkey": "a9144890aae025c84cb72a9730b49ca12595d6f6088d87",
"scriptpubkey_asm": "OP_HASH160 OP_PUSHBYTES_20 4890aae025c84cb72a9730b49ca12595d6f6088d OP_EQUAL",
"scriptpubkey_type": "p2sh",
"scriptpubkey_address": "38Jht2bzmJL4EwoFvvyFzejhfEb4J7KxLb",
"value": 155000
},
{
"scriptpubkey": "76a91486e7dad6617303942a448b7f8afe9653e5624a5e88ac",
"scriptpubkey_asm": "OP_DUP OP_HASH160 OP_PUSHBYTES_20 86e7dad6617303942a448b7f8afe9653e5624a5e OP_EQUALVERIFY OP_CHECKSIG",
"scriptpubkey_type": "p2pkh",
"scriptpubkey_address": "1DJKJGApgX4W8BSQ8FRPLqX78UaCskT4r2",
"value": 155000
},
{
"scriptpubkey": "76a914cd5b6566b455d043558829f6932edaae5d8f0ad388ac",
"scriptpubkey_asm": "OP_DUP OP_HASH160 OP_PUSHBYTES_20 cd5b6566b455d043558829f6932edaae5d8f0ad3 OP_EQUALVERIFY OP_CHECKSIG",
"scriptpubkey_type": "p2pkh",
"scriptpubkey_address": "1Kiq1dyVBzYLWGrBPWjChvKyzB2H95x5RJ",
"value": 799675549
}
],
"size": 350,
"weight": 1400,
"fee": 9451,
"status": {
"confirmed": false
},
"order": 2798688215,
"vsize": 350,
"adjustedVsize": 350,
"sigops": 8,
"feePerVsize": 27.002857142857142,
"adjustedFeePerVsize": 27.002857142857142,
"effectiveFeePerVsize": 27.002857142857142,
"firstSeen": 1691218536,
"uid": 513598,
"inputs": [],
"position": {
"block": 0,
"vsize": 22166
},
"bestDescendant": null,
"cpfpChecked": true
},
{
"txid": "5387881d695d4564d397026dc5f740f816f8390b4b2c5ec8c20309122712a875",
"version": 2,
"locktime": 0,
"vin": [
{
"txid": "b50225a04a1d6fbbfa7a2122bc0580396f614027b3957f476229633576f06130",
"vout": 0,
"prevout": {
"scriptpubkey": "0014a24f913f8a9c30a4c302c2c78f2fd7addb08fd07",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 a24f913f8a9c30a4c302c2c78f2fd7addb08fd07",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1q5f8ez0u2nsc2fsczctrc7t7h4hds3lg82ewqhz",
"value": 612917
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"3045022100a0c23953ace5d022b7a6d45d1ae1730bf20a4d594bb5d4fa7aa80e4881b44d320220008f9b144805bb91995fc0f452a56e09f4ad16fa149d71ae9b5d57c742e8e2cc01",
"03dc2c7b687019b40a68d713322675206cc266e34e5340ec982c13ff0222c3b2b6"
],
"is_coinbase": false,
"sequence": 2147483649
}
],
"vout": [
{
"scriptpubkey": "0014199a98f9589364ffe5ef5bbae45ce5dfcbb873bd",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 199a98f9589364ffe5ef5bbae45ce5dfcbb873bd",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1qrxdf372cjdj0le00twawgh89ml9msuaau62gk4",
"value": 611909
}
],
"size": 192,
"weight": 438,
"fee": 1008,
"status": {
"confirmed": false
},
"bestDescendant": null,
"descendants": null,
"adjustedFeePerVsize": 10.2283,
"sigops": 1,
"adjustedVsize": 109.5
}
]

View File

@@ -0,0 +1,139 @@
[
{
"txid": "008592364e21c1e3d62ba9538ac78a81779897b52100af5707ab063df98964f2",
"version": 1,
"locktime": 0,
"vin": [
{
"txid": "d863deb706de5a611028f7547e16ea81d7819e44beb640fb30a9ba30c585140f",
"vout": 0,
"prevout": {
"scriptpubkey": "76a914cd5b6566b455d043558829f6932edaae5d8f0ad388ac",
"scriptpubkey_asm": "OP_DUP OP_HASH160 OP_PUSHBYTES_20 cd5b6566b455d043558829f6932edaae5d8f0ad3 OP_EQUALVERIFY OP_CHECKSIG",
"scriptpubkey_type": "p2pkh",
"scriptpubkey_address": "1Kiq1dyVBzYLWGrBPWjChvKyzB2H95x5RJ",
"value": 799995000
},
"scriptsig": "483045022100c1fb331d155a7d299a0451d14fa1122b328e0e239afc9ba8dc2aff449ddc5a3a02201c1e19030d1efa432f5069cd369d7ad09a67f68501345e4db35f7b799605f55601210314338e3e191aea3ac9e9292611faeedf0379bbe62c30fd76c7450722a1ac47c6",
"scriptsig_asm": "OP_PUSHBYTES_72 3045022100c1fb331d155a7d299a0451d14fa1122b328e0e239afc9ba8dc2aff449ddc5a3a02201c1e19030d1efa432f5069cd369d7ad09a67f68501345e4db35f7b799605f55601 OP_PUSHBYTES_33 0314338e3e191aea3ac9e9292611faeedf0379bbe62c30fd76c7450722a1ac47c6",
"is_coinbase": false,
"sequence": 4294967293
}
],
"vout": [
{
"scriptpubkey": "6a4c5058325b78064160b631b5a15d9078d99c0db066449fb4c59bbfa4d987ba906e2990088b2fce8c33d841b6c47a99f9597000ab04a10b34cd419fc19784d9e36f1a33fd7b000c3bce00b6000c1d1e00614b",
"scriptpubkey_asm": "OP_RETURN OP_PUSHDATA1 58325b78064160b631b5a15d9078d99c0db066449fb4c59bbfa4d987ba906e2990088b2fce8c33d841b6c47a99f9597000ab04a10b34cd419fc19784d9e36f1a33fd7b000c3bce00b6000c1d1e00614b",
"scriptpubkey_type": "op_return",
"value": 0
},
{
"scriptpubkey": "a9144890aae025c84cb72a9730b49ca12595d6f6088d87",
"scriptpubkey_asm": "OP_HASH160 OP_PUSHBYTES_20 4890aae025c84cb72a9730b49ca12595d6f6088d OP_EQUAL",
"scriptpubkey_type": "p2sh",
"scriptpubkey_address": "38Jht2bzmJL4EwoFvvyFzejhfEb4J7KxLb",
"value": 155000
},
{
"scriptpubkey": "76a91486e7dad6617303942a448b7f8afe9653e5624a5e88ac",
"scriptpubkey_asm": "OP_DUP OP_HASH160 OP_PUSHBYTES_20 86e7dad6617303942a448b7f8afe9653e5624a5e OP_EQUALVERIFY OP_CHECKSIG",
"scriptpubkey_type": "p2pkh",
"scriptpubkey_address": "1DJKJGApgX4W8BSQ8FRPLqX78UaCskT4r2",
"value": 155000
},
{
"scriptpubkey": "76a914cd5b6566b455d043558829f6932edaae5d8f0ad388ac",
"scriptpubkey_asm": "OP_DUP OP_HASH160 OP_PUSHBYTES_20 cd5b6566b455d043558829f6932edaae5d8f0ad3 OP_EQUALVERIFY OP_CHECKSIG",
"scriptpubkey_type": "p2pkh",
"scriptpubkey_address": "1Kiq1dyVBzYLWGrBPWjChvKyzB2H95x5RJ",
"value": 799676250
}
],
"size": 350,
"weight": 1400,
"fee": 8750,
"status": {
"confirmed": false
},
"order": 4066675193,
"vsize": 350,
"adjustedVsize": 350,
"sigops": 8,
"feePerVsize": 25,
"adjustedFeePerVsize": 25,
"effectiveFeePerVsize": 25,
"firstSeen": 1691218516,
"uid": 512584,
"inputs": [],
"position": {
"block": 0,
"vsize": 13846
},
"bestDescendant": null,
"cpfpChecked": true
},
{
"txid": "b7981a624e4261c11f1246314d41e74be56af82eb557bcd054a5e0f94c023668",
"version": 2,
"locktime": 0,
"vin": [
{
"txid": "b50225a04a1d6fbbfa7a2122bc0580396f614027b3957f476229633576f06130",
"vout": 0,
"prevout": {
"scriptpubkey": "0014a24f913f8a9c30a4c302c2c78f2fd7addb08fd07",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 a24f913f8a9c30a4c302c2c78f2fd7addb08fd07",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1q5f8ez0u2nsc2fsczctrc7t7h4hds3lg82ewqhz",
"value": 612917
},
"scriptsig": "",
"scriptsig_asm": "",
"witness": [
"304402204dd10f14afa41bc76d8278140ff1ec3d3f87f2c207bbb5418cc76dab30d7f6a402207877cc9c6a2c724b6ea7a1c24ac00022469f194fd1a4bd8030bbca1787d3f5f301",
"03dc2c7b687019b40a68d713322675206cc266e34e5340ec982c13ff0222c3b2b6"
],
"is_coinbase": false,
"sequence": 2147483648
}
],
"vout": [
{
"scriptpubkey": "76a9149d32ef812385f3811634e0c0117dd153a5de10a488ac",
"scriptpubkey_asm": "OP_DUP OP_HASH160 OP_PUSHBYTES_20 9d32ef812385f3811634e0c0117dd153a5de10a4 OP_EQUALVERIFY OP_CHECKSIG",
"scriptpubkey_type": "p2pkh",
"scriptpubkey_address": "1FLC7Bag7okAkKPCyZbgZZg3Hh1EuGZ5Rd",
"value": 344697
},
{
"scriptpubkey": "00144c2671336ca8761863b4c68d64d4672491fec1b9",
"scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 4c2671336ca8761863b4c68d64d4672491fec1b9",
"scriptpubkey_type": "v0_p2wpkh",
"scriptpubkey_address": "bc1qfsn8zvmv4pmpsca5c6xkf4r8yjglasdesrawcx",
"value": 267636
}
],
"size": 225,
"weight": 573,
"fee": 584,
"status": {
"confirmed": false
},
"order": 1748369996,
"vsize": 143,
"adjustedVsize": 143.25,
"sigops": 5,
"feePerVsize": 4.076788830715532,
"adjustedFeePerVsize": 4.076788830715532,
"effectiveFeePerVsize": 4.076788830715532,
"firstSeen": 1691222376,
"uid": 526515,
"inputs": [],
"position": {
"block": 7,
"vsize": 22021095.5
},
"bestDescendant": null,
"cpfpChecked": true
}
]

View File

@@ -0,0 +1,294 @@
import * as fs from 'fs';
describe('Mempool Backend Config', () => {
beforeEach(() => {
jest.resetAllMocks();
jest.resetModules();
});
test('should return defaults when no file is present', () => {
jest.isolateModules(() => {
jest.mock('../../mempool-config.json', () => ({}), { virtual: true });
const config = jest.requireActual('../config').default;
expect(config.MEMPOOL).toStrictEqual({
ENABLED: true,
OFFICIAL: false,
NETWORK: 'mainnet',
BACKEND: 'none',
BLOCKS_SUMMARIES_INDEXING: false,
GOGGLES_INDEXING: false,
HTTP_PORT: 8999,
UNIX_SOCKET_PATH: '',
SPAWN_CLUSTER_PROCS: 0,
API_URL_PREFIX: '/api/v1/',
AUTOMATIC_POOLS_UPDATE: false,
POLL_RATE_MS: 2000,
CACHE_DIR: './cache',
CACHE_ENABLED: true,
CLEAR_PROTECTION_MINUTES: 20,
RECOMMENDED_FEE_PERCENTILE: 50,
BLOCK_WEIGHT_UNITS: 4000000,
INITIAL_BLOCKS_AMOUNT: 8,
MEMPOOL_BLOCKS_AMOUNT: 8,
INDEXING_BLOCKS_AMOUNT: 11000,
USE_SECOND_NODE_FOR_MINFEE: false,
EXTERNAL_ASSETS: [],
EXTERNAL_MAX_RETRY: 1,
EXTERNAL_RETRY_INTERVAL: 0,
USER_AGENT: 'mempool',
STDOUT_LOG_MIN_PRIORITY: 'debug',
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',
AUDIT: false,
RUST_GBT: false,
LIMIT_GBT: false,
CPFP_INDEXING: false,
MAX_BLOCKS_BULK_QUERY: 0,
DISK_CACHE_BLOCK_INTERVAL: 6,
MAX_PUSH_TX_SIZE_WEIGHT: 400000,
ALLOW_UNREACHABLE: true,
PRICE_UPDATES_PER_HOUR: 1,
MAX_TRACKED_ADDRESSES: 1,
});
expect(config.ELECTRUM).toStrictEqual({ HOST: '127.0.0.1', PORT: 3306, TLS_ENABLED: true });
expect(config.ESPLORA).toStrictEqual({
REST_API_URL: 'http://127.0.0.1:3000',
UNIX_SOCKET_PATH: null,
BATCH_QUERY_BASE_SIZE: 1000,
RETRY_UNIX_SOCKET_AFTER: 30000,
REQUEST_TIMEOUT: 10000,
FALLBACK_TIMEOUT: 5000,
FALLBACK: [],
MAX_BEHIND_TIP: 2,
});
expect(config.CORE_RPC).toStrictEqual({
HOST: '127.0.0.1',
PORT: 8332,
USERNAME: 'mempool',
PASSWORD: 'mempool',
TIMEOUT: 60000,
COOKIE: false,
COOKIE_PATH: '/bitcoin/.cookie'
});
expect(config.SECOND_CORE_RPC).toStrictEqual({
HOST: '127.0.0.1',
PORT: 8332,
USERNAME: 'mempool',
PASSWORD: 'mempool',
TIMEOUT: 60000,
COOKIE: false,
COOKIE_PATH: '/bitcoin/.cookie'
});
expect(config.DATABASE).toStrictEqual({
ENABLED: true,
HOST: '127.0.0.1',
SOCKET: '',
PORT: 3306,
DATABASE: 'mempool',
USERNAME: 'mempool',
PASSWORD: 'mempool',
TIMEOUT: 180000,
PID_DIR: '',
POOL_SIZE: 100,
});
expect(config.SYSLOG).toStrictEqual({
ENABLED: true,
HOST: '127.0.0.1',
PORT: 514,
MIN_PRIORITY: 'info',
FACILITY: 'local7'
});
expect(config.STATISTICS).toStrictEqual({ ENABLED: true, TX_PER_SECOND_SAMPLE_PERIOD: 150 });
expect(config.SOCKS5PROXY).toStrictEqual({
ENABLED: false,
USE_ONION: true,
HOST: '127.0.0.1',
PORT: 9050,
USERNAME: '',
PASSWORD: ''
});
expect(config.EXTERNAL_DATA_SERVER).toStrictEqual({
MEMPOOL_API: 'https://mempool.space/api/v1',
MEMPOOL_ONION: 'http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion/api/v1',
LIQUID_API: 'https://liquid.network/api/v1',
LIQUID_ONION: 'http://liquidmom47f6s3m53ebfxn47p76a6tlnxib3wp6deux7wuzotdr6cyd.onion/api/v1'
});
expect(config.MAXMIND).toStrictEqual({
ENABLED: false,
GEOLITE2_CITY: '/usr/local/share/GeoIP/GeoLite2-City.mmdb',
GEOLITE2_ASN: '/usr/local/share/GeoIP/GeoLite2-ASN.mmdb',
GEOIP2_ISP: '/usr/local/share/GeoIP/GeoIP2-ISP.mmdb'
});
expect(config.REPLICATION).toStrictEqual({
ENABLED: false,
AUDIT: false,
AUDIT_START_HEIGHT: 774000,
STATISTICS: false,
STATISTICS_START_TIME: 1481932800,
SERVERS: []
});
expect(config.MEMPOOL_SERVICES).toStrictEqual({
API: "",
ACCELERATIONS: false,
});
expect(config.REDIS).toStrictEqual({
ENABLED: false,
UNIX_SOCKET_PATH: '',
BATCH_QUERY_BASE_SIZE: 5000,
});
expect(config.FIAT_PRICE).toStrictEqual({
ENABLED: true,
PAID: false,
API_KEY: '',
});
});
});
test('should override the default values with the passed values', () => {
jest.isolateModules(() => {
const fixture = JSON.parse(fs.readFileSync(`${__dirname}/../__fixtures__/mempool-config.template.json`, 'utf8'));
jest.mock('../../mempool-config.json', () => (fixture), { virtual: true });
const config = jest.requireActual('../config').default;
expect(config.MEMPOOL).toStrictEqual(fixture.MEMPOOL);
expect(config.ELECTRUM).toStrictEqual(fixture.ELECTRUM);
expect(config.ESPLORA).toStrictEqual(fixture.ESPLORA);
expect(config.CORE_RPC).toStrictEqual(fixture.CORE_RPC);
expect(config.SECOND_CORE_RPC).toStrictEqual(fixture.SECOND_CORE_RPC);
expect(config.DATABASE).toStrictEqual(fixture.DATABASE);
expect(config.SYSLOG).toStrictEqual(fixture.SYSLOG);
expect(config.STATISTICS).toStrictEqual(fixture.STATISTICS);
expect(config.SOCKS5PROXY).toStrictEqual(fixture.SOCKS5PROXY);
expect(config.EXTERNAL_DATA_SERVER).toStrictEqual(fixture.EXTERNAL_DATA_SERVER);
expect(config.MEMPOOL_SERVICES).toStrictEqual(fixture.MEMPOOL_SERVICES);
expect(config.REDIS).toStrictEqual(fixture.REDIS);
});
});
test('should ensure the docker start.sh script has default values', () => {
jest.isolateModules(() => {
const startSh = fs.readFileSync(`${__dirname}/../../../docker/backend/start.sh`, 'utf-8');
const fixture = JSON.parse(fs.readFileSync(`${__dirname}/../__fixtures__/mempool-config.template.json`, 'utf8'));
function parseJson(jsonObj, root?) {
for (const [key, value] of Object.entries(jsonObj)) {
// We have a few cases where we can't follow the pattern
if (root === 'MEMPOOL' && key === 'HTTP_PORT') {
if (process.env.CI) {
console.log('skipping check for MEMPOOL_HTTP_PORT');
}
continue;
}
if (root) {
//The flattened string, i.e, __MEMPOOL_ENABLED__
const replaceStr = `${root ? '__' + root + '_' : '__'}${key}__`;
//The string used as the environment variable, i.e, MEMPOOL_ENABLED
const envVarStr = `${root ? root : ''}_${key}`;
let defaultEntry;
//The string used as the default value, to be checked as a regex, i.e, __MEMPOOL_ENABLED__=${MEMPOOL_ENABLED:=(.*)}
if (Array.isArray(value)) {
defaultEntry = `${replaceStr}=\${${envVarStr}:=[]}`;
if (process.env.CI) {
console.log(`looking for ${defaultEntry} in the start.sh script`);
}
//Regex matching does not work with the array values
expect(startSh).toContain(defaultEntry);
} else {
defaultEntry = replaceStr + '=' + '\\${' + envVarStr + ':=(.*)' + '}';
if (process.env.CI) {
console.log(`looking for ${defaultEntry} in the start.sh script`);
}
const re = new RegExp(defaultEntry);
expect(startSh).toMatch(re);
}
//The string that actually replaces the values in the config file
const sedStr = 'sed -i "s!' + replaceStr + '!${' + replaceStr + '}!g" mempool-config.json';
if (process.env.CI) {
console.log(`looking for ${sedStr} in the start.sh script`);
}
expect(startSh).toContain(sedStr);
}
else {
parseJson(value, key);
}
}
}
parseJson(fixture);
});
});
test('should ensure that the mempool-config.json Docker template has all the keys', () => {
jest.isolateModules(() => {
const fixture = JSON.parse(fs.readFileSync(`${__dirname}/../__fixtures__/mempool-config.template.json`, 'utf8'));
const dockerJson = fs.readFileSync(`${__dirname}/../../../docker/backend/mempool-config.json`, 'utf-8');
function parseJson(jsonObj, root?) {
for (const [key, value] of Object.entries(jsonObj)) {
switch (typeof value) {
case 'object': {
if (Array.isArray(value)) {
// numbers, arrays and booleans won't be enclosed by quotes
const replaceStr = `${root ? '__' + root + '_' : '__'}${key}__`;
expect(dockerJson).toContain(`"${key}": ${replaceStr}`);
break;
} else {
//Check for top level config keys
expect(dockerJson).toContain(`"${key}"`);
parseJson(value, key);
break;
}
}
case 'string': {
// strings should be enclosed by quotes
const replaceStr = `${root ? '__' + root + '_' : '__'}${key}__`;
expect(dockerJson).toContain(`"${key}": "${replaceStr}"`);
break;
}
default: {
// numbers, arrays and booleans won't be enclosed by quotes
const replaceStr = `${root ? '__' + root + '_' : '__'}${key}__`;
expect(dockerJson).toContain(`"${key}": ${replaceStr}`);
break;
}
}
};
}
parseJson(fixture);
});
});
});

View File

@@ -0,0 +1,68 @@
import fs from 'fs';
import { GbtGenerator, ThreadTransaction } from 'rust-gbt';
import path from 'path';
const baseline = require('./test-data/target-template.json');
const testVector = require('./test-data/test-data-ids.json');
const vectorUidMap: Map<number, string> = new Map(testVector.map(x => [x[0], x[1]]));
const vectorTxidMap: Map<string, number> = new Map(testVector.map(x => [x[1], x[0]]));
// Note that this test buffer is specially constructed
// such that uids are assigned in numerical txid order
// so that ties break the same way as in Core's implementation
const vectorBuffer: Buffer = fs.readFileSync(path.join(__dirname, './', './test-data/test-buffer.bin'));
describe('Rust GBT', () => {
test('should produce the same template as getBlockTemplate from Bitcoin Core', async () => {
const rustGbt = new GbtGenerator(4_000_000, 8);
const { mempool, maxUid } = mempoolFromArrayBuffer(vectorBuffer.buffer);
const result = await rustGbt.make(mempool, [], maxUid);
const blocks: [string, number][][] = result.blocks.map(block => {
return block.map(uid => [vectorUidMap.get(uid) || 'missing', uid]);
});
const template = baseline.map(tx => [tx.txid, vectorTxidMap.get(tx.txid)]);
expect(blocks[0].length).toEqual(baseline.length);
expect(blocks[0]).toEqual(template);
});
});
function mempoolFromArrayBuffer(buf: ArrayBuffer): { mempool: ThreadTransaction[], maxUid: number } {
let maxUid = 0;
const view = new DataView(buf);
const count = view.getUint32(0, false);
const txs: ThreadTransaction[] = [];
let offset = 4;
for (let i = 0; i < count; i++) {
const uid = view.getUint32(offset, false);
maxUid = Math.max(maxUid, uid);
const tx: ThreadTransaction = {
uid,
order: txidToOrdering(vectorUidMap.get(uid) as string),
fee: view.getFloat64(offset + 4, false),
weight: view.getUint32(offset + 12, false),
sigops: view.getUint32(offset + 16, false),
// feePerVsize: view.getFloat64(offset + 20, false),
effectiveFeePerVsize: view.getFloat64(offset + 28, false),
inputs: [],
};
const numInputs = view.getUint32(offset + 36, false);
offset += 40;
for (let j = 0; j < numInputs; j++) {
tx.inputs.push(view.getUint32(offset, false));
offset += 4;
}
txs.push(tx);
}
return { mempool: txs, maxUid };
}
function txidToOrdering(txid: string): number {
return parseInt(
txid.substr(62, 2) +
txid.substr(60, 2) +
txid.substr(58, 2) +
txid.substr(56, 2),
16
);
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,87 @@
import { Application } from "express";
import config from "../config";
import axios from "axios";
import logger from "../logger";
class AboutRoutes {
public initRoutes(app: Application) {
app
.get(config.MEMPOOL.API_URL_PREFIX + 'donations', async (req, res) => {
try {
const response = await axios.get(`${config.EXTERNAL_DATA_SERVER.MEMPOOL_API}/donations`, { responseType: 'stream', timeout: 10000 });
response.data.pipe(res);
} catch (e) {
res.status(500).end();
}
})
.get(config.MEMPOOL.API_URL_PREFIX + 'donations/images/:id', async (req, res) => {
try {
const response = await axios.get(`${config.EXTERNAL_DATA_SERVER.MEMPOOL_API}/donations/images/${req.params.id}`, {
responseType: 'stream', timeout: 10000
});
response.data.pipe(res);
} catch (e) {
res.status(500).end();
}
})
.get(config.MEMPOOL.API_URL_PREFIX + 'contributors', async (req, res) => {
try {
const response = await axios.get(`${config.EXTERNAL_DATA_SERVER.MEMPOOL_API}/contributors`, { responseType: 'stream', timeout: 10000 });
response.data.pipe(res);
} catch (e) {
res.status(500).end();
}
})
.get(config.MEMPOOL.API_URL_PREFIX + 'contributors/images/:id', async (req, res) => {
try {
const response = await axios.get(`${config.EXTERNAL_DATA_SERVER.MEMPOOL_API}/contributors/images/${req.params.id}`, {
responseType: 'stream', timeout: 10000
});
response.data.pipe(res);
} catch (e) {
res.status(500).end();
}
})
.get(config.MEMPOOL.API_URL_PREFIX + 'translators', async (req, res) => {
try {
const response = await axios.get(`${config.EXTERNAL_DATA_SERVER.MEMPOOL_API}/translators`, { responseType: 'stream', timeout: 10000 });
response.data.pipe(res);
} catch (e) {
res.status(500).end();
}
})
.get(config.MEMPOOL.API_URL_PREFIX + 'translators/images/:id', async (req, res) => {
try {
const response = await axios.get(`${config.EXTERNAL_DATA_SERVER.MEMPOOL_API}/translators/images/${req.params.id}`, {
responseType: 'stream', timeout: 10000
});
response.data.pipe(res);
} catch (e) {
res.status(500).end();
}
})
.get(config.MEMPOOL.API_URL_PREFIX + 'services/sponsors', async (req, res) => {
const url = `${config.MEMPOOL_SERVICES.API}/${req.originalUrl.replace('/api/v1/services/', '')}`;
try {
const response = await axios.get(url, { responseType: 'stream', timeout: 10000 });
response.data.pipe(res);
} catch (e) {
logger.err(`Unable to fetch sponsors from ${url}. ${e}`, 'About Page');
res.status(500).end();
}
})
.get(config.MEMPOOL.API_URL_PREFIX + 'services/account/images/:username/:md5', async (req, res) => {
const url = `${config.MEMPOOL_SERVICES.API}/${req.originalUrl.replace('/api/v1/services/', '')}`;
try {
const response = await axios.get(url, { responseType: 'stream', timeout: 10000 });
response.data.pipe(res);
} catch (e) {
logger.err(`Unable to fetch sponsor profile image from ${url}. ${e}`, 'About Page');
res.status(500).end();
}
})
;
}
}
export default new AboutRoutes();

View File

@@ -0,0 +1,84 @@
import { Application, Request, Response } from 'express';
import config from '../../config';
import axios from 'axios';
import logger from '../../logger';
import mempool from '../mempool';
import AccelerationRepository from '../../repositories/AccelerationRepository';
class AccelerationRoutes {
private tag = 'Accelerator';
public initRoutes(app: Application): void {
app
.get(config.MEMPOOL.API_URL_PREFIX + 'services/accelerator/accelerations', this.$getAcceleratorAccelerations.bind(this))
.get(config.MEMPOOL.API_URL_PREFIX + 'services/accelerator/accelerations/history', this.$getAcceleratorAccelerationsHistory.bind(this))
.get(config.MEMPOOL.API_URL_PREFIX + 'services/accelerator/accelerations/history/aggregated', this.$getAcceleratorAccelerationsHistoryAggregated.bind(this))
.get(config.MEMPOOL.API_URL_PREFIX + 'services/accelerator/accelerations/stats', this.$getAcceleratorAccelerationsStats.bind(this))
.post(config.MEMPOOL.API_URL_PREFIX + 'services/accelerator/estimate', this.$getAcceleratorEstimate.bind(this))
;
}
private async $getAcceleratorAccelerations(req: Request, res: Response): Promise<void> {
const accelerations = mempool.getAccelerations();
res.status(200).send(Object.values(accelerations));
}
private async $getAcceleratorAccelerationsHistory(req: Request, res: Response): Promise<void> {
const history = await AccelerationRepository.$getAccelerationInfo(null, req.query.blockHeight ? parseInt(req.query.blockHeight as string, 10) : null);
res.status(200).send(history.map(accel => ({
txid: accel.txid,
added: accel.added,
status: 'completed',
effectiveFee: accel.effective_fee,
effectiveVsize: accel.effective_vsize,
boostRate: accel.boost_rate,
boostCost: accel.boost_cost,
blockHeight: accel.height,
pools: [accel.pool],
})));
}
private async $getAcceleratorAccelerationsHistoryAggregated(req: Request, res: Response): Promise<void> {
const url = `${config.MEMPOOL_SERVICES.API}/${req.originalUrl.replace('/api/v1/services/', '')}`;
try {
const response = await axios.get(url, { responseType: 'stream', timeout: 10000 });
for (const key in response.headers) {
res.setHeader(key, response.headers[key]);
}
response.data.pipe(res);
} catch (e) {
logger.err(`Unable to get aggregated acceleration history from ${url} in $getAcceleratorAccelerationsHistoryAggregated(), ${e}`, this.tag);
res.status(500).end();
}
}
private async $getAcceleratorAccelerationsStats(req: Request, res: Response): Promise<void> {
const url = `${config.MEMPOOL_SERVICES.API}/${req.originalUrl.replace('/api/v1/services/', '')}`;
try {
const response = await axios.get(url, { responseType: 'stream', timeout: 10000 });
for (const key in response.headers) {
res.setHeader(key, response.headers[key]);
}
response.data.pipe(res);
} catch (e) {
logger.err(`Unable to get acceleration stats from ${url} in $getAcceleratorAccelerationsStats(), ${e}`, this.tag);
res.status(500).end();
}
}
private async $getAcceleratorEstimate(req: Request, res: Response): Promise<void> {
const url = `${config.MEMPOOL_SERVICES.API}/${req.originalUrl.replace('/api/v1/services/', '')}`;
try {
const response = await axios.post(url, req.body, { responseType: 'stream', timeout: 10000 });
for (const key in response.headers) {
res.setHeader(key, response.headers[key]);
}
response.data.pipe(res);
} catch (e) {
logger.err(`Unable to get acceleration estimate from ${url} in $getAcceleratorEstimate(), ${e}`, this.tag);
res.status(500).end();
}
}
}
export default new AccelerationRoutes();

View File

@@ -0,0 +1,244 @@
import logger from '../../logger';
import { MempoolTransactionExtended } from '../../mempool.interfaces';
import { GraphTx, getSameBlockRelatives, initializeRelatives, makeBlockTemplate, mempoolComparator, removeAncestors, setAncestorScores } from '../mini-miner';
const BLOCK_WEIGHT_UNITS = 4_000_000;
const MAX_RELATIVE_GRAPH_SIZE = 200;
const BID_BOOST_WINDOW = 40_000;
const BID_BOOST_MIN_OFFSET = 10_000;
const BID_BOOST_MAX_OFFSET = 400_000;
export type Acceleration = {
txid: string;
max_bid: number;
};
interface TxSummary {
txid: string; // txid of the current transaction
effectiveVsize: number; // Total vsize of the dependency tree
effectiveFee: number; // Total fee of the dependency tree in sats
ancestorCount: number; // Number of ancestors
}
export interface AccelerationInfo {
txSummary: TxSummary;
targetFeeRate: number; // target fee rate (recommended next block fee, or median fee for mined block)
nextBlockFee: number; // fee in sats required to be in the next block (using recommended next block fee, or median fee for mined block)
cost: number; // additional cost to accelerate ((cost + txSummary.effectiveFee) / txSummary.effectiveVsize) >= targetFeeRate
}
class AccelerationCosts {
/**
* Takes a list of accelerations and verbose block data
* Returns the "fair" boost rate to charge accelerations
*
* @param accelerationsx
* @param verboseBlock
*/
public calculateBoostRate(accelerations: Acceleration[], blockTxs: MempoolTransactionExtended[]): number {
// Run GBT ourselves to calculate accurate effective fee rates
// the list of transactions comes from a mined block, so we already know everything fits within consensus limits
const template = makeBlockTemplate(blockTxs, accelerations, 1, Infinity, Infinity);
// initialize working maps for fast tx lookups
const accMap = {};
const txMap = {};
for (const acceleration of accelerations) {
accMap[acceleration.txid] = acceleration;
}
for (const tx of template) {
txMap[tx.txid] = tx;
}
// Identify and exclude accelerated and otherwise prioritized transactions
const excludeMap = {};
let totalWeight = 0;
let minAcceleratedPackage = Infinity;
let lastEffectiveRate = 0;
// Iterate over the mined template from bottom to top.
// Transactions should appear in ascending order of mining priority.
for (const blockTx of [...blockTxs].reverse()) {
const txid = blockTx.txid;
const tx = txMap[txid];
totalWeight += tx.weight;
const isAccelerated = accMap[txid] != null;
// If a cluster has a in-band effective fee rate than the previous cluster,
// it must have been prioritized out-of-band (in order to have a higher mining priority)
// so exclude from the analysis.
const isPrioritized = tx.effectiveFeePerVsize < lastEffectiveRate;
if (isPrioritized || isAccelerated) {
let packageWeight = 0;
// exclude this whole CPFP cluster
for (const clusterTxid of tx.cluster) {
packageWeight += txMap[clusterTxid].weight;
if (!excludeMap[clusterTxid]) {
excludeMap[clusterTxid] = true;
}
}
// keep track of the smallest accelerated CPFP cluster for later
if (isAccelerated) {
minAcceleratedPackage = Math.min(minAcceleratedPackage, packageWeight);
}
}
if (!isPrioritized) {
if (!isAccelerated) {
lastEffectiveRate = tx.effectiveFeePerVsize;
}
}
}
// The Bid Boost Rate is calculated by disregarding the bottom X weight units of the block,
// where X is the larger of BID_BOOST_MIN_OFFSET or the smallest accelerated package weight (the "offset"),
// then taking the average fee rate of the following BID_BOOST_WINDOW weight units
// (ignoring accelerated transactions and their ancestors).
//
// Transactions within the offset might pay less than the fair rate due to bin-packing effects
// But the average rate paid by the next chunk of non-accelerated transactions provides a good
// upper bound on the "next best rate" of alternatives to including the accelerated transactions
// (since, if there were any better options, they would have been included instead)
const spareWeight = BLOCK_WEIGHT_UNITS - totalWeight;
const windowOffset = Math.min(Math.max(minAcceleratedPackage, BID_BOOST_MIN_OFFSET, spareWeight), BID_BOOST_MAX_OFFSET);
const leftBound = windowOffset;
const rightBound = windowOffset + BID_BOOST_WINDOW;
let totalFeeInWindow = 0;
let totalWeightInWindow = Math.max(0, spareWeight - leftBound);
let txIndex = blockTxs.length - 1;
for (let offset = spareWeight; offset < BLOCK_WEIGHT_UNITS && txIndex >= 0; txIndex--) {
const txid = blockTxs[txIndex].txid;
const tx = txMap[txid];
if (excludeMap[txid]) {
// skip prioritized transactions and their ancestors
continue;
}
const left = offset;
const right = offset + tx.weight;
offset += tx.weight;
if (right < leftBound) {
// not within window yet
continue;
}
if (left > rightBound) {
// past window
break;
}
// count fees for weight units within the window
const overlapLeft = Math.max(leftBound, left);
const overlapRight = Math.min(rightBound, right);
const overlapUnits = overlapRight - overlapLeft;
totalFeeInWindow += (tx.effectiveFeePerVsize * (overlapUnits / 4));
totalWeightInWindow += overlapUnits;
}
if (totalWeightInWindow < BID_BOOST_WINDOW) {
// not enough un-prioritized transactions to calculate a fair rate
// just charge everyone their max bids
return Infinity;
}
// Divide the total fee by the size of the BID_BOOST_WINDOW in vbytes
const averageRate = totalFeeInWindow / (BID_BOOST_WINDOW / 4);
return averageRate;
}
/**
* Takes an accelerated mined txid and a target rate
* Returns the total vsize, fees and acceleration cost (in sats) of the tx and all same-block ancestors
*
* @param txid
* @param medianFeeRate
*/
public getAccelerationInfo(tx: MempoolTransactionExtended, targetFeeRate: number, transactions: MempoolTransactionExtended[]): AccelerationInfo {
// Get same-block transaction ancestors
const allRelatives = getSameBlockRelatives(tx, transactions);
const relativesMap = initializeRelatives(allRelatives);
const rootTx = relativesMap.get(tx.txid) as GraphTx;
// Calculate cost to boost
return this.calculateAccelerationAncestors(rootTx, relativesMap, targetFeeRate);
}
/**
* Given a root transaction, a list of in-mempool ancestors, and a target fee rate,
* Calculate the minimum set of transactions to fee-bump, their total vsize + fees
*
* @param tx
* @param ancestors
*/
private calculateAccelerationAncestors(tx: GraphTx, relatives: Map<string, GraphTx>, targetFeeRate: number): AccelerationInfo {
// add root tx to the ancestor map
relatives.set(tx.txid, tx);
// Check for high-sigop transactions (not supported)
relatives.forEach(entry => {
if (entry.vsize > Math.ceil(entry.weight / 4)) {
throw new Error(`high_sigop_tx`);
}
});
// Initialize individual & ancestor fee rates
relatives.forEach(entry => setAncestorScores(entry));
// Sort by descending ancestor score
let sortedRelatives = Array.from(relatives.values()).sort(mempoolComparator);
let includedInCluster: Map<string, GraphTx> | null = null;
// While highest score >= targetFeeRate
let maxIterations = MAX_RELATIVE_GRAPH_SIZE;
while (sortedRelatives.length && sortedRelatives[0].score && sortedRelatives[0].score >= targetFeeRate && maxIterations > 0) {
maxIterations--;
// Grab the highest scoring entry
const best = sortedRelatives.shift();
if (best) {
const cluster = new Map<string, GraphTx>(best.ancestors?.entries() || []);
if (best.ancestors.has(tx.txid)) {
includedInCluster = cluster;
}
cluster.set(best.txid, best);
// Remove this cluster (it already pays over the target rate, so doesn't need to be boosted)
// and update scores, ancestor totals and dependencies for the survivors
removeAncestors(cluster, relatives);
// re-sort
sortedRelatives = Array.from(relatives.values()).sort(mempoolComparator);
}
}
// sanity check for infinite loops / too many ancestors (should never happen)
if (maxIterations <= 0) {
logger.warn(`acceleration dependency calculation failed: calculateAccelerationAncestors loop exceeded ${MAX_RELATIVE_GRAPH_SIZE} iterations, unable to proceed`);
throw new Error('invalid_tx_dependencies');
}
let totalFee = tx.fees.ancestor;
// transaction is already CPFP-d above the target rate by some descendant
if (includedInCluster) {
let clusterSize = 0;
let clusterFee = 0;
includedInCluster.forEach(entry => {
clusterSize += entry.vsize;
clusterFee += entry.fees.base;
});
const clusterRate = clusterFee / clusterSize;
totalFee = Math.ceil(tx.ancestorsize * clusterRate);
}
// Whatever remains in the accelerated tx's dependencies needs to be boosted to the targetFeeRate
// Cost = (totalVsize * targetFeeRate) - totalFee
return {
txSummary: {
txid: tx.txid,
effectiveVsize: tx.ancestorsize,
effectiveFee: totalFee,
ancestorCount: tx.ancestorcount,
},
cost: Math.max(0, Math.ceil(tx.ancestorsize * targetFeeRate) - totalFee),
targetFeeRate,
nextBlockFee: Math.ceil(tx.ancestorsize * targetFeeRate),
};
}
}
export default new AccelerationCosts;

208
backend/src/api/audit.ts Normal file
View File

@@ -0,0 +1,208 @@
import config from '../config';
import logger from '../logger';
import { MempoolTransactionExtended, MempoolBlockWithTransactions } from '../mempool.interfaces';
import rbfCache from './rbf-cache';
const PROPAGATION_MARGIN = 180; // in seconds, time since a transaction is first seen after which it is assumed to have propagated to all miners
class Audit {
auditBlock(height: number, transactions: MempoolTransactionExtended[], projectedBlocks: MempoolBlockWithTransactions[], mempool: { [txId: string]: MempoolTransactionExtended })
: { unseen: string[], censored: string[], added: string[], prioritized: string[], fresh: string[], sigop: string[], fullrbf: string[], accelerated: string[], score: number, similarity: number } {
if (!projectedBlocks?.[0]?.transactionIds || !mempool) {
return { unseen: [], censored: [], added: [], prioritized: [], fresh: [], sigop: [], fullrbf: [], accelerated: [], score: 1, similarity: 1 };
}
const matches: string[] = []; // present in both mined block and template
const added: string[] = []; // present in mined block, not in template
const unseen: string[] = []; // present in the mined block, not in our mempool
const prioritized: string[] = []; // higher in the block than would be expected by in-band feerate alone
const fresh: string[] = []; // missing, but firstSeen or lastBoosted within PROPAGATION_MARGIN
const rbf: string[] = []; // either missing or present, and either part of a full-rbf replacement, or a conflict with the mined block
const accelerated: string[] = []; // prioritized by the mempool accelerator
const isCensored = {}; // missing, without excuse
const isDisplaced = {};
const isAccelerated = {};
let displacedWeight = 0;
let matchedWeight = 0;
let projectedWeight = 0;
const inBlock = {};
const inTemplate = {};
const now = Math.round((Date.now() / 1000));
for (const tx of transactions) {
inBlock[tx.txid] = tx;
if (mempool[tx.txid] && mempool[tx.txid].acceleration) {
accelerated.push(tx.txid);
isAccelerated[tx.txid] = true;
}
}
// coinbase is always expected
if (transactions[0]) {
inTemplate[transactions[0].txid] = true;
}
// look for transactions that were expected in the template, but missing from the mined block
for (const txid of projectedBlocks[0].transactionIds) {
if (!inBlock[txid]) {
// allow missing transactions which either belong to a full rbf tree, or conflict with any transaction in the mined block
if (rbfCache.has(txid) && (rbfCache.isFullRbf(txid) || rbfCache.anyInSameTree(txid, (tx) => inBlock[tx.txid]))) {
rbf.push(txid);
} else if (mempool[txid]?.firstSeen != null && (now - (mempool[txid]?.firstSeen || 0)) <= PROPAGATION_MARGIN) {
// tx is recent, may have reached the miner too late for inclusion
fresh.push(txid);
} else if (mempool[txid]?.lastBoosted != null && (now - (mempool[txid]?.lastBoosted || 0)) <= PROPAGATION_MARGIN) {
// tx was recently cpfp'd, miner may not have the latest effective rate
fresh.push(txid);
} else {
isCensored[txid] = true;
}
displacedWeight += mempool[txid]?.weight || 0;
} else {
matchedWeight += mempool[txid]?.weight || 0;
}
projectedWeight += mempool[txid]?.weight || 0;
inTemplate[txid] = true;
}
if (transactions[0]) {
displacedWeight += (4000 - transactions[0].weight);
projectedWeight += transactions[0].weight;
matchedWeight += transactions[0].weight;
}
// we can expect an honest miner to include 'displaced' transactions in place of recent arrivals and censored txs
// these displaced transactions should occupy the first N weight units of the next projected block
let displacedWeightRemaining = displacedWeight + 4000;
let index = 0;
let lastFeeRate = Infinity;
let failures = 0;
let blockIndex = 1;
while (projectedBlocks[blockIndex] && failures < 500) {
const txid = projectedBlocks[blockIndex].transactionIds[index];
const tx = mempool[txid];
if (tx) {
const fits = (tx.weight - displacedWeightRemaining) < 4000;
// 0.005 margin of error for any remaining vsize rounding issues
const feeMatches = tx.effectiveFeePerVsize >= (lastFeeRate - 0.005);
if (fits || feeMatches) {
isDisplaced[txid] = true;
if (fits) {
// (tx.effectiveFeePerVsize * tx.vsize) / Math.ceil(tx.vsize) attempts to correct for vsize rounding in the simple non-CPFP case
lastFeeRate = Math.min(lastFeeRate, (tx.effectiveFeePerVsize * tx.vsize) / Math.ceil(tx.vsize));
}
if (tx.firstSeen == null || (now - (tx?.firstSeen || 0)) > PROPAGATION_MARGIN) {
displacedWeightRemaining -= tx.weight;
}
failures = 0;
} else {
failures++;
}
} else {
logger.warn('projected transaction missing from mempool cache');
}
index++;
if (index >= projectedBlocks[blockIndex].transactionIds.length) {
index = 0;
blockIndex++;
}
}
// mark unexpected transactions in the mined block as 'added'
let overflowWeight = 0;
let totalWeight = 0;
for (const tx of transactions) {
if (inTemplate[tx.txid]) {
matches.push(tx.txid);
} else {
if (rbfCache.has(tx.txid)) {
rbf.push(tx.txid);
if (!mempool[tx.txid] && !rbfCache.getReplacedBy(tx.txid)) {
unseen.push(tx.txid);
}
} else {
if (mempool[tx.txid]) {
if (isDisplaced[tx.txid]) {
added.push(tx.txid);
}
} else {
unseen.push(tx.txid);
}
}
overflowWeight += tx.weight;
}
totalWeight += tx.weight;
}
// identify "prioritized" transactions
let lastEffectiveRate = 0;
// Iterate over the mined template from bottom to top (excluding the coinbase)
// Transactions should appear in ascending order of mining priority.
for (let i = transactions.length - 1; i > 0; i--) {
const blockTx = transactions[i];
// If a tx has a lower in-band effective fee rate than the previous tx,
// it must have been prioritized out-of-band (in order to have a higher mining priority)
// so exclude from the analysis.
if ((blockTx.effectiveFeePerVsize || 0) < lastEffectiveRate) {
prioritized.push(blockTx.txid);
// accelerated txs may or may not have their prioritized fee rate applied, so don't use them as a reference
} else if (!isAccelerated[blockTx.txid]) {
lastEffectiveRate = blockTx.effectiveFeePerVsize || 0;
}
}
// transactions missing from near the end of our template are probably not being censored
let overflowWeightRemaining = overflowWeight - (config.MEMPOOL.BLOCK_WEIGHT_UNITS - totalWeight);
let maxOverflowRate = 0;
let rateThreshold = 0;
index = projectedBlocks[0].transactionIds.length - 1;
while (index >= 0) {
const txid = projectedBlocks[0].transactionIds[index];
const tx = mempool[txid];
if (tx) {
if (overflowWeightRemaining > 0) {
if (isCensored[txid]) {
delete isCensored[txid];
}
if (tx.effectiveFeePerVsize > maxOverflowRate) {
maxOverflowRate = tx.effectiveFeePerVsize;
rateThreshold = (Math.ceil(maxOverflowRate * 100) / 100) + 0.005;
}
} else if (tx.effectiveFeePerVsize <= rateThreshold) { // tolerance of 0.01 sat/vb + rounding
if (isCensored[txid]) {
delete isCensored[txid];
}
}
overflowWeightRemaining -= (mempool[txid]?.weight || 0);
} else {
logger.warn('projected transaction missing from mempool cache');
}
index--;
}
const numCensored = Object.keys(isCensored).length;
const numMatches = matches.length - 1; // adjust for coinbase tx
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 {
unseen,
censored: Object.keys(isCensored),
added,
prioritized,
fresh,
sigop: [],
fullrbf: rbf,
accelerated,
score,
similarity,
};
}
}
export default new Audit();

View File

@@ -0,0 +1,41 @@
import fs from 'fs';
import path from 'path';
import os from 'os';
import { IBackendInfo } from '../mempool.interfaces';
import config from '../config';
class BackendInfo {
private backendInfo: IBackendInfo;
constructor() {
// This file is created by ./fetch-version.ts during building
const versionFile = path.join(__dirname, 'version.json');
let versionInfo;
if (fs.existsSync(versionFile)) {
versionInfo = JSON.parse(fs.readFileSync(versionFile).toString());
} else {
// Use dummy values if `versionFile` doesn't exist (e.g., during testing)
versionInfo = {
version: '?',
gitCommit: '?'
};
}
this.backendInfo = {
hostname: os.hostname(),
version: versionInfo.version,
gitCommit: versionInfo.gitCommit,
lightning: config.LIGHTNING.ENABLED,
backend: config.MEMPOOL.BACKEND,
};
}
public getBackendInfo(): IBackendInfo {
return this.backendInfo;
}
public getShortCommitHash(): string {
return this.backendInfo.gitCommit.slice(0, 7);
}
}
export default new BackendInfo();

View File

@@ -1,19 +1,55 @@
import { IMempoolInfo, ITransaction, IBlock } from '../../interfaces';
import { IBitcoinApi, TestMempoolAcceptResult } from './bitcoin-api.interface';
import { IEsploraApi } from './esplora-api.interface';
export interface AbstractBitcoinApi {
getMempoolInfo(): Promise<IMempoolInfo>;
getRawMempool(): Promise<ITransaction['txid'][]>;
getRawTransaction(txId: string): Promise<ITransaction>;
getBlockCount(): Promise<number>;
getBlockAndTransactions(hash: string): Promise<IBlock>;
getBlockHash(height: number): Promise<string>;
$getRawMempool(): Promise<IEsploraApi.Transaction['txid'][]>;
$getRawTransaction(txId: string, skipConversion?: boolean, addPrevout?: boolean, lazyPrevouts?: boolean): Promise<IEsploraApi.Transaction>;
$getRawTransactions(txids: string[]): Promise<IEsploraApi.Transaction[]>;
$getMempoolTransactions(txids: string[]): Promise<IEsploraApi.Transaction[]>;
$getAllMempoolTransactions(lastTxid?: string, max_txs?: number);
$getTransactionHex(txId: string): Promise<string>;
$getBlockHeightTip(): Promise<number>;
$getBlockHashTip(): Promise<string>;
$getTxIdsForBlock(hash: string): Promise<string[]>;
$getTxsForBlock(hash: string): Promise<IEsploraApi.Transaction[]>;
$getBlockHash(height: number): Promise<string>;
$getBlockHeader(hash: string): Promise<string>;
$getBlock(hash: string): Promise<IEsploraApi.Block>;
$getRawBlock(hash: string): Promise<Buffer>;
$getAddress(address: string): Promise<IEsploraApi.Address>;
$getAddressTransactions(address: string, lastSeenTxId: string): Promise<IEsploraApi.Transaction[]>;
$getAddressPrefix(prefix: string): string[];
$getScriptHash(scripthash: string): Promise<IEsploraApi.ScriptHash>;
$getScriptHashTransactions(address: string, lastSeenTxId: string): Promise<IEsploraApi.Transaction[]>;
$sendRawTransaction(rawTransaction: string): Promise<string>;
$testMempoolAccept(rawTransactions: string[], maxfeerate?: number): Promise<TestMempoolAcceptResult[]>;
$getOutspend(txId: string, vout: number): Promise<IEsploraApi.Outspend>;
$getOutspends(txId: string): Promise<IEsploraApi.Outspend[]>;
$getBatchedOutspends(txId: string[]): Promise<IEsploraApi.Outspend[][]>;
$getBatchedOutspendsInternal(txId: string[]): Promise<IEsploraApi.Outspend[][]>;
$getOutSpendsByOutpoint(outpoints: { txid: string, vout: number }[]): Promise<IEsploraApi.Outspend[]>;
$getCoinbaseTx(blockhash: string): Promise<IEsploraApi.Transaction>;
getBlock(hash: string): Promise<IBlock>;
getBlockTransactions(hash: string): Promise<IBlock>;
getBlockTransactionsFromIndex(hash: string, index: number): Promise<IBlock>;
getBlocks(): Promise<string>;
getBlocksFromHeight(height: number): Promise<string>;
getAddress(address: string): Promise<IBlock>;
getAddressTransactions(address: string): Promise<IBlock>;
getAddressTransactionsFromLastSeenTxid(address: string, lastSeenTxid: string): Promise<IBlock>;
startHealthChecks(): void;
getHealthStatus(): HealthCheckHost[];
}
export interface BitcoinRpcCredentials {
host: string;
port: number;
user: string;
pass: string;
timeout: number;
cookie?: string;
}
export interface HealthCheckHost {
host: string;
active: boolean;
rtt: number;
latestHeight: number;
socket: boolean;
outOfSync: boolean;
unreachable: boolean;
checked: boolean;
lastChecked: number;
}

View File

@@ -1,16 +1,22 @@
const config = require('../../../mempool-config.json');
import config from '../../config';
import { AbstractBitcoinApi } from './bitcoin-api-abstract-factory';
import BitcoindApi from './bitcoind-api';
import ElectrsApi from './electrs-api';
import EsploraApi from './esplora-api';
import BitcoinApi from './bitcoin-api';
import ElectrumApi from './electrum-api';
import bitcoinClient from './bitcoin-client';
function factory(): AbstractBitcoinApi {
switch (config.BACKEND_API) {
case 'electrs':
return new ElectrsApi();
case 'bitcoind':
function bitcoinApiFactory(): AbstractBitcoinApi {
switch (config.MEMPOOL.BACKEND) {
case 'esplora':
return new EsploraApi();
case 'electrum':
return new ElectrumApi(bitcoinClient);
case 'none':
default:
return new BitcoindApi();
return new BitcoinApi(bitcoinClient);
}
}
export default factory();
export const bitcoinCoreApi = new BitcoinApi(bitcoinClient);
export default bitcoinApiFactory();

View File

@@ -0,0 +1,220 @@
export namespace IBitcoinApi {
export interface MempoolInfo {
loaded: boolean; // (boolean) True if the mempool is fully loaded
size: number; // (numeric) Current tx count
bytes: number; // (numeric) Sum of all virtual transaction sizes as defined in BIP 141.
usage: number; // (numeric) Total memory usage for the mempool
total_fee: number; // (numeric) Total fees of transactions in the mempool
maxmempool: number; // (numeric) Maximum memory usage for the mempool
mempoolminfee: number; // (numeric) Minimum fee rate in BTC/kB for tx to be accepted.
minrelaytxfee: number; // (numeric) Current minimum relay fee for transactions
}
export interface RawMempool { [txId: string]: MempoolEntry; }
export interface MempoolEntry {
vsize: number; // (numeric) virtual transaction size as defined in BIP 141.
weight: number; // (numeric) transaction weight as defined in BIP 141.
time: number; // (numeric) local time transaction entered pool in seconds since 1 Jan 1970 GMT
height: number; // (numeric) block height when transaction entered pool
descendantcount: number; // (numeric) number of in-mempool descendant transactions (including this one)
descendantsize: number; // (numeric) virtual transaction size of in-mempool descendants (including this one)
ancestorcount: number; // (numeric) number of in-mempool ancestor transactions (including this one)
ancestorsize: number; // (numeric) virtual transaction size of in-mempool ancestors (including this one)
wtxid: string; // (string) hash of serialized transactionumber; including witness data
fees: {
base: number; // (numeric) transaction fee in BTC
modified: number; // (numeric) transaction fee with fee deltas used for mining priority in BTC
ancestor: number; // (numeric) modified fees (see above) of in-mempool ancestors (including this one) in BTC
descendant: number; // (numeric) modified fees (see above) of in-mempool descendants (including this one) in BTC
};
depends: string[]; // (string) parent transaction id
spentby: string[]; // (array) unconfirmed transactions spending outputs from this transaction
'bip125-replaceable': boolean; // (boolean) Whether this transaction could be replaced due to BIP125 (replace-by-fee)
}
export interface Block {
hash: string; // (string) the block hash (same as provided)
confirmations: number; // (numeric) The number of confirmations, or -1 if the block is not on the main chain
size: number; // (numeric) The block size
strippedsize: number; // (numeric) The block size excluding witness data
weight: number; // (numeric) The block weight as defined in BIP 141
height: number; // (numeric) The block height or index
version: number; // (numeric) The block version
versionHex: string; // (string) The block version formatted in hexadecimal
merkleroot: string; // (string) The merkle root
tx: Transaction[];
time: number; // (numeric) The block time expressed in UNIX epoch time
mediantime: number; // (numeric) The median block time expressed in UNIX epoch time
nonce: number; // (numeric) The nonce
bits: string; // (string) The bits
difficulty: number; // (numeric) The difficulty
chainwork: string; // (string) Expected number of hashes required to produce the chain up to this block (in hex)
nTx: number; // (numeric) The number of transactions in the block
previousblockhash: string; // (string) The hash of the previous block
nextblockhash: string; // (string) The hash of the next block
}
export interface Transaction {
in_active_chain: boolean; // (boolean) Whether specified block is in the active chain or not
hex: string; // (string) The serialized, hex-encoded data for 'txid'
txid: string; // (string) The transaction id (same as provided)
hash: string; // (string) The transaction hash (differs from txid for witness transactions)
size: number; // (numeric) The serialized transaction size
vsize: number; // (numeric) The virtual transaction size (differs from size for witness transactions)
weight: number; // (numeric) The transaction's weight (between vsize*4-3 and vsize*4)
version: number; // (numeric) The version
locktime: number; // (numeric) The lock time
vin: Vin[];
vout: Vout[];
blockhash: string; // (string) the block hash
confirmations: number; // (numeric) The confirmations
blocktime: number; // (numeric) The block time expressed in UNIX epoch time
time: number; // (numeric) Same as blocktime
}
export interface VerboseBlock extends Block {
tx: VerboseTransaction[]; // The transactions in the format of the getrawtransaction RPC. Different from verbosity = 1 "tx" result
}
export interface VerboseTransaction extends Transaction {
fee?: number; // (numeric) The transaction fee in BTC, omitted if block undo data is not available
}
export interface Vin {
txid?: string; // (string) The transaction id
vout?: number; // (string)
scriptSig?: { // (json object) The script
asm: string; // (string) asm
hex: string; // (string) hex
};
sequence: number; // (numeric) The script sequence number
txinwitness?: string[]; // (string) hex-encoded witness data
coinbase?: string;
is_pegin?: boolean; // (boolean) Elements peg-in
}
export interface Vout {
value: number; // (numeric) The value in BTC
n: number; // (numeric) index
asset?: string; // (string) Elements asset id
scriptPubKey: { // (json object)
asm: string; // (string) the asm
hex: string; // (string) the hex
reqSigs?: number; // (numeric) The required sigs
type: string; // (string) The type, eg 'pubkeyhash'
address?: string; // (string) bitcoin address
addresses?: string[]; // (string) bitcoin addresses
pegout_chain?: string; // (string) Elements peg-out chain
pegout_address?: string; // (string) Elements peg-out address
pegout_addresses?: string[]; // (string) Elements peg-out addresses
};
}
export interface AddressInformation {
isvalid: boolean; // (boolean) If the address is valid or not. If not, this is the only property returned.
isvalid_parent?: boolean; // (boolean) Elements only
address: string; // (string) The bitcoin address validated
scriptPubKey: string; // (string) The hex-encoded scriptPubKey generated by the address
isscript: boolean; // (boolean) If the key is a script
iswitness: boolean; // (boolean) If the address is a witness
witness_version?: number; // (numeric, optional) The version number of the witness program
witness_program: string; // (string, optional) The hex value of the witness program
confidential_key?: string; // (string) Elements only
unconfidential?: string; // (string) Elements only
}
export interface ChainTips {
height: number; // (numeric) height of the chain tip
hash: string; // (string) block hash of the tip
branchlen: number; // (numeric) zero for main chain, otherwise length of branch connecting the tip to the main chain
status: 'invalid' | 'headers-only' | 'valid-headers' | 'valid-fork' | 'active';
}
export interface BlockchainInfo {
chain: number; // (string) current network name as defined in BIP70 (main, test, regtest)
blocks: number; // (numeric) the current number of blocks processed in the server
headers: number; // (numeric) the current number of headers we have validated
bestblockhash: string, // (string) the hash of the currently best block
difficulty: number; // (numeric) the current difficulty
mediantime: number; // (numeric) median time for the current best block
verificationprogress: number; // (numeric) estimate of verification progress [0..1]
initialblockdownload: boolean; // (bool) (debug information) estimate of whether this node is in Initial Block Download mode.
chainwork: string // (string) total amount of work in active chain, in hexadecimal
size_on_disk: number; // (numeric) the estimated size of the block and undo files on disk
pruned: number; // (boolean) if the blocks are subject to pruning
pruneheight: number; // (numeric) lowest-height complete block stored (only present if pruning is enabled)
automatic_pruning: number; // (boolean) whether automatic pruning is enabled (only present if pruning is enabled)
prune_target_size: number; // (numeric) the target size used by pruning (only present if automatic pruning is enabled)
softforks: SoftFork[]; // (array) status of softforks in progress
bip9_softforks: { [name: string]: Bip9SoftForks[] } // (object) status of BIP9 softforks in progress
warnings: string; // (string) any network and blockchain warnings.
}
interface SoftFork {
id: string; // (string) name of softfork
version: number; // (numeric) block version
reject: { // (object) progress toward rejecting pre-softfork blocks
status: boolean; // (boolean) true if threshold reached
},
}
interface Bip9SoftForks {
status: number; // (string) one of defined, started, locked_in, active, failed
bit: number; // (numeric) the bit (0-28) in the block version field used to signal this softfork (only for started status)
startTime: number; // (numeric) the minimum median time past of a block at which the bit gains its meaning
timeout: number; // (numeric) the median time past of a block at which the deployment is considered failed if not yet locked in
since: number; // (numeric) height of the first block to which the status applies
statistics: { // (object) numeric statistics about BIP9 signalling for a softfork (only for started status)
period: number; // (numeric) the length in blocks of the BIP9 signalling period
threshold: number; // (numeric) the number of blocks with the version bit set required to activate the feature
elapsed: number; // (numeric) the number of blocks elapsed since the beginning of the current period
count: number; // (numeric) the number of blocks with the version bit set in the current period
possible: boolean; // (boolean) returns false if there are not enough blocks left in this period to pass activation threshold
}
}
export interface BlockStats {
"avgfee": number;
"avgfeerate": number;
"avgtxsize": number;
"blockhash": string;
"feerate_percentiles": [number, number, number, number, number];
"height": number;
"ins": number;
"maxfee": number;
"maxfeerate": number;
"maxtxsize": number;
"medianfee": number;
"mediantime": number;
"mediantxsize": number;
"minfee": number;
"minfeerate": number;
"mintxsize": number;
"outs": number;
"subsidy": number;
"swtotal_size": number;
"swtotal_weight": number;
"swtxs": number;
"time": number;
"total_out": number;
"total_size": number;
"total_weight": number;
"totalfee": number;
"txs": number;
"utxo_increase": number;
"utxo_size_inc": number;
}
}
export interface TestMempoolAcceptResult {
txid: string,
wtxid: string,
allowed?: boolean,
vsize?: number,
fees?: {
base: number,
"effective-feerate": number,
"effective-includes": string[],
},
['reject-reason']?: string,
}

View File

@@ -0,0 +1,418 @@
import * as bitcoinjs from 'bitcoinjs-lib';
import { AbstractBitcoinApi, HealthCheckHost } from './bitcoin-api-abstract-factory';
import { IBitcoinApi, TestMempoolAcceptResult } from './bitcoin-api.interface';
import { IEsploraApi } from './esplora-api.interface';
import blocks from '../blocks';
import mempool from '../mempool';
import { TransactionExtended } from '../../mempool.interfaces';
import transactionUtils from '../transaction-utils';
class BitcoinApi implements AbstractBitcoinApi {
private rawMempoolCache: IBitcoinApi.RawMempool | null = null;
protected bitcoindClient: any;
constructor(bitcoinClient: any) {
this.bitcoindClient = bitcoinClient;
}
static convertBlock(block: IBitcoinApi.Block): IEsploraApi.Block {
return {
id: block.hash,
height: block.height,
version: block.version,
timestamp: block.time,
bits: parseInt(block.bits, 16),
nonce: block.nonce,
difficulty: block.difficulty,
merkle_root: block.merkleroot,
tx_count: block.nTx,
size: block.size,
weight: block.weight,
previousblockhash: block.previousblockhash,
mediantime: block.mediantime,
stale: block.confirmations === -1,
};
}
$getRawTransaction(txId: string, skipConversion = false, addPrevout = false, lazyPrevouts = false): Promise<IEsploraApi.Transaction> {
// If the transaction is in the mempool we already converted and fetched the fee. Only prevouts are missing
const txInMempool = mempool.getMempool()[txId];
if (txInMempool && addPrevout) {
return this.$addPrevouts(txInMempool);
}
return this.bitcoindClient.getRawTransaction(txId, true)
.then((transaction: IBitcoinApi.Transaction) => {
if (skipConversion) {
transaction.vout.forEach((vout) => {
vout.value = Math.round(vout.value * 100000000);
});
return transaction;
}
return this.$convertTransaction(transaction, addPrevout, lazyPrevouts);
})
.catch((e: Error) => {
if (e.message.startsWith('The genesis block coinbase')) {
return this.$returnCoinbaseTransaction();
}
throw e;
});
}
async $getRawTransactions(txids: string[]): Promise<IEsploraApi.Transaction[]> {
const txs: IEsploraApi.Transaction[] = [];
for (const txid of txids) {
try {
const tx = await this.$getRawTransaction(txid, false, true);
txs.push(tx);
} catch (err) {
// skip failures
}
}
return txs;
}
$getMempoolTransactions(txids: string[]): Promise<IEsploraApi.Transaction[]> {
throw new Error('Method getMempoolTransactions not supported by the Bitcoin RPC API.');
}
$getAllMempoolTransactions(lastTxid?: string, max_txs?: number): Promise<IEsploraApi.Transaction[]> {
throw new Error('Method getAllMempoolTransactions not supported by the Bitcoin RPC API.');
}
async $getTransactionHex(txId: string): Promise<string> {
const txInMempool = mempool.getMempool()[txId];
if (txInMempool && txInMempool.hex) {
return txInMempool.hex;
}
return this.bitcoindClient.getRawTransaction(txId, true)
.then((transaction: IBitcoinApi.Transaction) => {
return transaction.hex;
});
}
$getBlockHeightTip(): Promise<number> {
return this.bitcoindClient.getBlockCount();
}
$getBlockHashTip(): Promise<string> {
return this.bitcoindClient.getBestBlockHash();
}
$getTxIdsForBlock(hash: string): Promise<string[]> {
return this.bitcoindClient.getBlock(hash, 1)
.then((rpcBlock: IBitcoinApi.Block) => rpcBlock.tx);
}
async $getTxsForBlock(hash: string): Promise<IEsploraApi.Transaction[]> {
const verboseBlock: IBitcoinApi.VerboseBlock = await this.bitcoindClient.getBlock(hash, 2);
const transactions: IEsploraApi.Transaction[] = [];
for (const tx of verboseBlock.tx) {
const converted = await this.$convertTransaction(tx, true);
transactions.push(converted);
}
return transactions;
}
$getRawBlock(hash: string): Promise<Buffer> {
return this.bitcoindClient.getBlock(hash, 0)
.then((raw: string) => Buffer.from(raw, "hex"));
}
$getBlockHash(height: number): Promise<string> {
return this.bitcoindClient.getBlockHash(height);
}
$getBlockHeader(hash: string): Promise<string> {
return this.bitcoindClient.getBlockHeader(hash, false);
}
async $getBlock(hash: string): Promise<IEsploraApi.Block> {
const foundBlock = blocks.getBlocks().find((block) => block.id === hash);
if (foundBlock) {
return foundBlock;
}
return this.bitcoindClient.getBlock(hash)
.then((block: IBitcoinApi.Block) => BitcoinApi.convertBlock(block));
}
$getAddress(address: string): Promise<IEsploraApi.Address> {
throw new Error('Method getAddress not supported by the Bitcoin RPC API.');
}
$getAddressTransactions(address: string, lastSeenTxId: string): Promise<IEsploraApi.Transaction[]> {
throw new Error('Method getAddressTransactions not supported by the Bitcoin RPC API.');
}
$getScriptHash(scripthash: string): Promise<IEsploraApi.ScriptHash> {
throw new Error('Method getScriptHash not supported by the Bitcoin RPC API.');
}
$getScriptHashTransactions(scripthash: string, lastSeenTxId: string): Promise<IEsploraApi.Transaction[]> {
throw new Error('Method getScriptHashTransactions not supported by the Bitcoin RPC API.');
}
$getRawMempool(): Promise<IEsploraApi.Transaction['txid'][]> {
return this.bitcoindClient.getRawMemPool();
}
$getAddressPrefix(prefix: string): string[] {
const found: { [address: string]: string } = {};
const mp = mempool.getMempool();
for (const tx in mp) {
for (const vout of mp[tx].vout) {
if (vout.scriptpubkey_address?.indexOf(prefix) === 0) {
found[vout.scriptpubkey_address] = '';
if (Object.keys(found).length >= 10) {
return Object.keys(found);
}
}
}
for (const vin of mp[tx].vin) {
if (vin.prevout?.scriptpubkey_address?.indexOf(prefix) === 0) {
found[vin.prevout?.scriptpubkey_address] = '';
if (Object.keys(found).length >= 10) {
return Object.keys(found);
}
}
}
}
return Object.keys(found);
}
$sendRawTransaction(rawTransaction: string): Promise<string> {
return this.bitcoindClient.sendRawTransaction(rawTransaction);
}
async $testMempoolAccept(rawTransactions: string[], maxfeerate?: number): Promise<TestMempoolAcceptResult[]> {
if (rawTransactions.length) {
return this.bitcoindClient.testMempoolAccept(rawTransactions, maxfeerate ?? undefined);
} else {
return [];
}
}
async $getOutspend(txId: string, vout: number): Promise<IEsploraApi.Outspend> {
const txOut = await this.bitcoindClient.getTxOut(txId, vout, false);
return {
spent: txOut === null,
status: {
confirmed: true,
}
};
}
async $getOutspends(txId: string): Promise<IEsploraApi.Outspend[]> {
const outSpends: IEsploraApi.Outspend[] = [];
const tx = await this.$getRawTransaction(txId, true, false);
for (let i = 0; i < tx.vout.length; i++) {
if (tx.status && tx.status.block_height === 0) {
outSpends.push({
spent: false
});
} else {
const txOut = await this.bitcoindClient.getTxOut(txId, i);
outSpends.push({
spent: txOut === null,
});
}
}
return outSpends;
}
async $getBatchedOutspends(txId: string[]): Promise<IEsploraApi.Outspend[][]> {
const outspends: IEsploraApi.Outspend[][] = [];
for (const tx of txId) {
const outspend = await this.$getOutspends(tx);
outspends.push(outspend);
}
return outspends;
}
async $getBatchedOutspendsInternal(txId: string[]): Promise<IEsploraApi.Outspend[][]> {
return this.$getBatchedOutspends(txId);
}
async $getOutSpendsByOutpoint(outpoints: { txid: string, vout: number }[]): Promise<IEsploraApi.Outspend[]> {
const outspends: IEsploraApi.Outspend[] = [];
for (const outpoint of outpoints) {
const outspend = await this.$getOutspend(outpoint.txid, outpoint.vout);
outspends.push(outspend);
}
return outspends;
}
async $getCoinbaseTx(blockhash: string): Promise<IEsploraApi.Transaction> {
const txids = await this.$getTxIdsForBlock(blockhash);
return this.$getRawTransaction(txids[0]);
}
$getEstimatedHashrate(blockHeight: number): Promise<number> {
// 120 is the default block span in Core
return this.bitcoindClient.getNetworkHashPs(120, blockHeight);
}
protected async $convertTransaction(transaction: IBitcoinApi.Transaction, addPrevout: boolean, lazyPrevouts = false): Promise<IEsploraApi.Transaction> {
let esploraTransaction: IEsploraApi.Transaction = {
txid: transaction.txid,
version: transaction.version,
locktime: transaction.locktime,
size: transaction.size,
weight: transaction.weight,
fee: 0,
vin: [],
vout: [],
status: { confirmed: false },
};
esploraTransaction.vout = transaction.vout.map((vout) => {
return {
value: Math.round(vout.value * 100000000),
scriptpubkey: vout.scriptPubKey.hex,
scriptpubkey_address: vout.scriptPubKey && vout.scriptPubKey.address ? vout.scriptPubKey.address
: vout.scriptPubKey.addresses ? vout.scriptPubKey.addresses[0] : '',
scriptpubkey_asm: vout.scriptPubKey.asm ? transactionUtils.convertScriptSigAsm(vout.scriptPubKey.hex) : '',
scriptpubkey_type: this.translateScriptPubKeyType(vout.scriptPubKey.type),
};
});
esploraTransaction.vin = transaction.vin.map((vin) => {
return {
is_coinbase: !!vin.coinbase,
prevout: null,
scriptsig: vin.scriptSig && vin.scriptSig.hex || vin.coinbase || '',
scriptsig_asm: vin.scriptSig && transactionUtils.convertScriptSigAsm(vin.scriptSig.hex) || '',
sequence: vin.sequence,
txid: vin.txid || '',
vout: vin.vout || 0,
witness: vin.txinwitness || [],
inner_redeemscript_asm: '',
inner_witnessscript_asm: '',
};
});
if (transaction.confirmations) {
esploraTransaction.status = {
confirmed: true,
block_height: blocks.getCurrentBlockHeight() - transaction.confirmations + 1,
block_hash: transaction.blockhash,
block_time: transaction.blocktime,
};
}
if (addPrevout) {
esploraTransaction = await this.$calculateFeeFromInputs(esploraTransaction, false, lazyPrevouts);
} else if (!transaction.confirmations) {
esploraTransaction = await this.$appendMempoolFeeData(esploraTransaction);
}
return esploraTransaction;
}
private translateScriptPubKeyType(outputType: string): string {
const map = {
'pubkey': 'p2pk',
'pubkeyhash': 'p2pkh',
'scripthash': 'p2sh',
'witness_v0_keyhash': 'v0_p2wpkh',
'witness_v0_scripthash': 'v0_p2wsh',
'witness_v1_taproot': 'v1_p2tr',
'nonstandard': 'nonstandard',
'multisig': 'multisig',
'nulldata': 'op_return'
};
if (map[outputType]) {
return map[outputType];
} else {
return 'unknown';
}
}
private async $appendMempoolFeeData(transaction: IEsploraApi.Transaction): Promise<IEsploraApi.Transaction> {
if (transaction.fee) {
return transaction;
}
let mempoolEntry: IBitcoinApi.MempoolEntry;
if (!mempool.isInSync() && !this.rawMempoolCache) {
this.rawMempoolCache = await this.$getRawMempoolVerbose();
}
if (this.rawMempoolCache && this.rawMempoolCache[transaction.txid]) {
mempoolEntry = this.rawMempoolCache[transaction.txid];
} else {
mempoolEntry = await this.$getMempoolEntry(transaction.txid);
}
transaction.fee = Math.round(mempoolEntry.fees.base * 100000000);
return transaction;
}
protected async $addPrevouts(transaction: TransactionExtended): Promise<TransactionExtended> {
for (const vin of transaction.vin) {
if (vin.prevout) {
continue;
}
const innerTx = await this.$getRawTransaction(vin.txid, false, false);
vin.prevout = innerTx.vout[vin.vout];
transactionUtils.addInnerScriptsToVin(vin);
}
return transaction;
}
protected $returnCoinbaseTransaction(): Promise<IEsploraApi.Transaction> {
return this.bitcoindClient.getBlockHash(0).then((hash: string) =>
this.bitcoindClient.getBlock(hash, 2)
.then((block: IBitcoinApi.Block) => {
return this.$convertTransaction(Object.assign(block.tx[0], {
confirmations: blocks.getCurrentBlockHeight() + 1,
blocktime: block.time }), false);
})
);
}
private $getMempoolEntry(txid: string): Promise<IBitcoinApi.MempoolEntry> {
return this.bitcoindClient.getMempoolEntry(txid);
}
private $getRawMempoolVerbose(): Promise<IBitcoinApi.RawMempool> {
return this.bitcoindClient.getRawMemPool(true);
}
private async $calculateFeeFromInputs(transaction: IEsploraApi.Transaction, addPrevout: boolean, lazyPrevouts: boolean): Promise<IEsploraApi.Transaction> {
if (transaction.vin[0].is_coinbase) {
transaction.fee = 0;
return transaction;
}
let totalIn = 0;
for (let i = 0; i < transaction.vin.length; i++) {
if (lazyPrevouts && i > 12) {
transaction.vin[i].lazy = true;
continue;
}
const innerTx = await this.$getRawTransaction(transaction.vin[i].txid, false, false);
transaction.vin[i].prevout = innerTx.vout[transaction.vin[i].vout];
transactionUtils.addInnerScriptsToVin(transaction.vin[i]);
totalIn += innerTx.vout[transaction.vin[i].vout].value;
}
if (lazyPrevouts && transaction.vin.length > 12) {
transaction.fee = -1;
} else {
const totalOut = transaction.vout.reduce((p, output) => p + output.value, 0);
transaction.fee = parseFloat((totalIn - totalOut).toFixed(8));
}
return transaction;
}
public startHealthChecks(): void {};
public getHealthStatus() {
return [];
}
}
export default BitcoinApi;

View File

@@ -0,0 +1,14 @@
import config from '../../config';
const bitcoin = require('../../rpc-api/index');
import { BitcoinRpcCredentials } from './bitcoin-api-abstract-factory';
const nodeRpcCredentials: BitcoinRpcCredentials = {
host: config.CORE_RPC.HOST,
port: config.CORE_RPC.PORT,
user: config.CORE_RPC.USERNAME,
pass: config.CORE_RPC.PASSWORD,
timeout: config.CORE_RPC.TIMEOUT,
cookie: config.CORE_RPC.COOKIE ? config.CORE_RPC.COOKIE_PATH : undefined,
};
export default new bitcoin.Client(nodeRpcCredentials);

View File

@@ -0,0 +1,249 @@
import { Application, NextFunction, Request, Response } from 'express';
import logger from '../../logger';
import bitcoinClient from './bitcoin-client';
/**
* Define a set of routes used by the accelerator server
* Those routes are not designed to be public
*/
class BitcoinBackendRoutes {
private static tag = 'BitcoinBackendRoutes';
public initRoutes(app: Application) {
app
.get('/api/internal/bitcoin-core/' + 'get-mempool-entry', this.disableCache, this.$getMempoolEntry)
.post('/api/internal/bitcoin-core/' + 'decode-raw-transaction', this.disableCache, this.$decodeRawTransaction)
.get('/api/internal/bitcoin-core/' + 'get-raw-transaction', this.disableCache, this.$getRawTransaction)
.post('/api/internal/bitcoin-core/' + 'send-raw-transaction', this.disableCache, this.$sendRawTransaction)
.post('/api/internal/bitcoin-core/' + 'test-mempool-accept', this.disableCache, this.$testMempoolAccept)
.get('/api/internal/bitcoin-core/' + 'get-mempool-ancestors', this.disableCache, this.$getMempoolAncestors)
.get('/api/internal/bitcoin-core/' + 'get-block', this.disableCache, this.$getBlock)
.get('/api/internal/bitcoin-core/' + 'get-block-hash', this.disableCache, this.$getBlockHash)
.get('/api/internal/bitcoin-core/' + 'get-block-count', this.disableCache, this.$getBlockCount)
;
}
/**
* Disable caching for bitcoin core routes
*
* @param req
* @param res
* @param next
*/
private disableCache(req: Request, res: Response, next: NextFunction): void {
res.setHeader('Pragma', 'no-cache');
res.setHeader('Cache-control', 'private, no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0');
res.setHeader('expires', -1);
next();
}
/**
* Exeption handler to return proper details to the accelerator server
*
* @param e
* @param fnName
* @param res
*/
private static handleException(e: any, fnName: string, res: Response): void {
if (typeof(e.code) === 'number') {
res.status(400).send(JSON.stringify(e, ['code', 'message']));
} else {
const err = `exception in ${fnName}. ${e}. Details: ${JSON.stringify(e, ['code', 'message'])}`;
logger.err(err, BitcoinBackendRoutes.tag);
res.status(500).send(err);
}
}
private async $getMempoolEntry(req: Request, res: Response): Promise<void> {
const txid = req.query.txid;
try {
if (typeof(txid) !== 'string' || txid.length !== 64) {
res.status(400).send(`invalid param txid ${txid}. must be a string of 64 char`);
return;
}
const mempoolEntry = await bitcoinClient.getMempoolEntry(txid);
if (!mempoolEntry) {
res.status(404).send(`no mempool entry found for txid ${txid}`);
return;
}
res.status(200).send(mempoolEntry);
} catch (e: any) {
BitcoinBackendRoutes.handleException(e, 'getMempoolEntry', res);
}
}
private async $decodeRawTransaction(req: Request, res: Response): Promise<void> {
const rawTx = req.body.rawTx;
try {
if (typeof(rawTx) !== 'string') {
res.status(400).send(`invalid param rawTx ${rawTx}. must be a string`);
return;
}
const decodedTx = await bitcoinClient.decodeRawTransaction(rawTx);
if (!decodedTx) {
res.status(400).send(`unable to decode rawTx ${rawTx}`);
return;
}
res.status(200).send(decodedTx);
} catch (e: any) {
BitcoinBackendRoutes.handleException(e, 'decodeRawTransaction', res);
}
}
private async $getRawTransaction(req: Request, res: Response): Promise<void> {
const txid = req.query.txid;
const verbose = req.query.verbose;
try {
if (typeof(txid) !== 'string' || txid.length !== 64) {
res.status(400).send(`invalid param txid ${txid}. must be a string of 64 char`);
return;
}
if (typeof(verbose) !== 'string') {
res.status(400).send(`invalid param verbose ${verbose}. must be a string representing an integer`);
return;
}
const verboseNumber = parseInt(verbose, 10);
if (typeof(verboseNumber) !== 'number') {
res.status(400).send(`invalid param verbose ${verbose}. must be a valid integer`);
return;
}
const decodedTx = await bitcoinClient.getRawTransaction(txid, verboseNumber);
if (!decodedTx) {
res.status(400).send(`unable to get raw transaction for txid ${txid}`);
return;
}
res.status(200).send(decodedTx);
} catch (e: any) {
BitcoinBackendRoutes.handleException(e, 'decodeRawTransaction', res);
}
}
private async $sendRawTransaction(req: Request, res: Response): Promise<void> {
const rawTx = req.body.rawTx;
try {
if (typeof(rawTx) !== 'string') {
res.status(400).send(`invalid param rawTx ${rawTx}. must be a string`);
return;
}
const txHex = await bitcoinClient.sendRawTransaction(rawTx);
if (!txHex) {
res.status(400).send(`unable to send rawTx ${rawTx}`);
return;
}
res.status(200).send(txHex);
} catch (e: any) {
BitcoinBackendRoutes.handleException(e, 'sendRawTransaction', res);
}
}
private async $testMempoolAccept(req: Request, res: Response): Promise<void> {
const rawTxs = req.body.rawTxs;
try {
if (typeof(rawTxs) !== 'object') {
res.status(400).send(`invalid param rawTxs ${JSON.stringify(rawTxs)}. must be an array of string`);
return;
}
const txHex = await bitcoinClient.testMempoolAccept(rawTxs);
if (typeof(txHex) !== 'object' || txHex.length === 0) {
res.status(400).send(`testmempoolaccept failed for raw txs ${JSON.stringify(rawTxs)}, got an empty result`);
return;
}
res.status(200).send(txHex);
} catch (e: any) {
BitcoinBackendRoutes.handleException(e, 'testMempoolAccept', res);
}
}
private async $getMempoolAncestors(req: Request, res: Response): Promise<void> {
const txid = req.query.txid;
const verbose = req.query.verbose;
try {
if (typeof(txid) !== 'string' || txid.length !== 64) {
res.status(400).send(`invalid param txid ${txid}. must be a string of 64 char`);
return;
}
if (typeof(verbose) !== 'string' || (verbose !== 'true' && verbose !== 'false')) {
res.status(400).send(`invalid param verbose ${verbose}. must be a string ('true' | 'false')`);
return;
}
const ancestors = await bitcoinClient.getMempoolAncestors(txid, verbose === 'true' ? true : false);
if (!ancestors) {
res.status(400).send(`unable to get mempool ancestors for txid ${txid}`);
return;
}
res.status(200).send(ancestors);
} catch (e: any) {
BitcoinBackendRoutes.handleException(e, 'getMempoolAncestors', res);
}
}
private async $getBlock(req: Request, res: Response): Promise<void> {
const blockHash = req.query.hash;
const verbosity = req.query.verbosity;
try {
if (typeof(blockHash) !== 'string' || blockHash.length !== 64) {
res.status(400).send(`invalid param blockHash ${blockHash}. must be a string of 64 char`);
return;
}
if (typeof(verbosity) !== 'string') {
res.status(400).send(`invalid param verbosity ${verbosity}. must be a string representing an integer`);
return;
}
const verbosityNumber = parseInt(verbosity, 10);
if (typeof(verbosityNumber) !== 'number') {
res.status(400).send(`invalid param verbosity ${verbosity}. must be a valid integer`);
return;
}
const block = await bitcoinClient.getBlock(blockHash, verbosityNumber);
if (!block) {
res.status(400).send(`unable to get block for block hash ${blockHash}`);
return;
}
res.status(200).send(block);
} catch (e: any) {
BitcoinBackendRoutes.handleException(e, 'getBlock', res);
}
}
private async $getBlockHash(req: Request, res: Response): Promise<void> {
const blockHeight = req.query.height;
try {
if (typeof(blockHeight) !== 'string') {
res.status(400).send(`invalid param blockHeight ${blockHeight}, must be a string representing an integer`);
return;
}
const blockHeightNumber = parseInt(blockHeight, 10);
if (typeof(blockHeightNumber) !== 'number') {
res.status(400).send(`invalid param blockHeight ${blockHeight}. must be a valid integer`);
return;
}
const block = await bitcoinClient.getBlockHash(blockHeightNumber);
if (!block) {
res.status(400).send(`unable to get block hash for block height ${blockHeightNumber}`);
return;
}
res.status(200).send(block);
} catch (e: any) {
BitcoinBackendRoutes.handleException(e, 'getBlockHash', res);
}
}
private async $getBlockCount(req: Request, res: Response): Promise<void> {
try {
const count = await bitcoinClient.getBlockCount();
if (!count) {
res.status(400).send(`unable to get block count`);
return;
}
res.status(200).send(`${count}`);
} catch (e: any) {
BitcoinBackendRoutes.handleException(e, 'getBlockCount', res);
}
}
}
export default new BitcoinBackendRoutes

View File

@@ -0,0 +1,14 @@
import config from '../../config';
const bitcoin = require('../../rpc-api/index');
import { BitcoinRpcCredentials } from './bitcoin-api-abstract-factory';
const nodeRpcCredentials: BitcoinRpcCredentials = {
host: config.SECOND_CORE_RPC.HOST,
port: config.SECOND_CORE_RPC.PORT,
user: config.SECOND_CORE_RPC.USERNAME,
pass: config.SECOND_CORE_RPC.PASSWORD,
timeout: config.SECOND_CORE_RPC.TIMEOUT,
cookie: config.SECOND_CORE_RPC.COOKIE ? config.SECOND_CORE_RPC.COOKIE_PATH : undefined,
};
export default new bitcoin.Client(nodeRpcCredentials);

View File

@@ -0,0 +1,787 @@
import { Application, Request, Response } from 'express';
import axios from 'axios';
import * as bitcoinjs from 'bitcoinjs-lib';
import config from '../../config';
import websocketHandler from '../websocket-handler';
import mempool from '../mempool';
import feeApi from '../fee-api';
import mempoolBlocks from '../mempool-blocks';
import bitcoinApi from './bitcoin-api-factory';
import { Common } from '../common';
import backendInfo from '../backend-info';
import transactionUtils from '../transaction-utils';
import { IEsploraApi } from './esplora-api.interface';
import loadingIndicators from '../loading-indicators';
import { TransactionExtended } from '../../mempool.interfaces';
import logger from '../../logger';
import blocks from '../blocks';
import bitcoinClient from './bitcoin-client';
import difficultyAdjustment from '../difficulty-adjustment';
import transactionRepository from '../../repositories/TransactionRepository';
import rbfCache from '../rbf-cache';
import { calculateMempoolTxCpfp } from '../cpfp';
class BitcoinRoutes {
public initRoutes(app: Application) {
app
.get(config.MEMPOOL.API_URL_PREFIX + 'transaction-times', this.getTransactionTimes)
.get(config.MEMPOOL.API_URL_PREFIX + 'cpfp/:txId', this.$getCpfpInfo)
.get(config.MEMPOOL.API_URL_PREFIX + 'difficulty-adjustment', this.getDifficultyChange)
.get(config.MEMPOOL.API_URL_PREFIX + 'fees/recommended', this.getRecommendedFees)
.get(config.MEMPOOL.API_URL_PREFIX + 'fees/mempool-blocks', this.getMempoolBlocks)
.get(config.MEMPOOL.API_URL_PREFIX + 'backend-info', this.getBackendInfo)
.get(config.MEMPOOL.API_URL_PREFIX + 'init-data', this.getInitData)
.get(config.MEMPOOL.API_URL_PREFIX + 'validate-address/:address', this.validateAddress)
.get(config.MEMPOOL.API_URL_PREFIX + 'tx/:txId/rbf', this.getRbfHistory)
.get(config.MEMPOOL.API_URL_PREFIX + 'tx/:txId/cached', this.getCachedTx)
.get(config.MEMPOOL.API_URL_PREFIX + 'replacements', this.getRbfReplacements)
.get(config.MEMPOOL.API_URL_PREFIX + 'fullrbf/replacements', this.getFullRbfReplacements)
.post(config.MEMPOOL.API_URL_PREFIX + 'tx/push', this.$postTransactionForm)
.get(config.MEMPOOL.API_URL_PREFIX + 'blocks', this.getBlocks.bind(this))
.get(config.MEMPOOL.API_URL_PREFIX + 'blocks/:height', this.getBlocks.bind(this))
.get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash', this.getBlock)
.get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/summary', this.getStrippedBlockTransactions)
.get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/audit-summary', this.getBlockAuditSummary)
.get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/tx/:txid/audit', this.$getBlockTxAuditSummary)
.get(config.MEMPOOL.API_URL_PREFIX + 'blocks/tip/height', this.getBlockTipHeight)
.post(config.MEMPOOL.API_URL_PREFIX + 'psbt/addparents', this.postPsbtCompletion)
.get(config.MEMPOOL.API_URL_PREFIX + 'blocks-bulk/:from', this.getBlocksByBulk.bind(this))
.get(config.MEMPOOL.API_URL_PREFIX + 'blocks-bulk/:from/:to', this.getBlocksByBulk.bind(this))
;
if (config.MEMPOOL.BACKEND !== 'esplora') {
app
.get(config.MEMPOOL.API_URL_PREFIX + 'mempool', this.getMempool)
.get(config.MEMPOOL.API_URL_PREFIX + 'mempool/txids', this.getMempoolTxIds)
.get(config.MEMPOOL.API_URL_PREFIX + 'mempool/recent', this.getRecentMempoolTransactions)
.get(config.MEMPOOL.API_URL_PREFIX + 'tx/:txId', this.getTransaction)
.post(config.MEMPOOL.API_URL_PREFIX + 'tx', this.$postTransaction)
.post(config.MEMPOOL.API_URL_PREFIX + 'txs/test', this.$testTransactions)
.get(config.MEMPOOL.API_URL_PREFIX + 'tx/:txId/hex', this.getRawTransaction)
.get(config.MEMPOOL.API_URL_PREFIX + 'tx/:txId/status', this.getTransactionStatus)
.get(config.MEMPOOL.API_URL_PREFIX + 'tx/:txId/outspends', this.getTransactionOutspends)
.get(config.MEMPOOL.API_URL_PREFIX + 'txs/outspends', this.$getBatchedOutspends)
.get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/header', this.getBlockHeader)
.get(config.MEMPOOL.API_URL_PREFIX + 'blocks/tip/hash', this.getBlockTipHash)
.get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/raw', this.getRawBlock)
.get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/txids', this.getTxIdsForBlock)
.get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/txs', this.getBlockTransactions)
.get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/txs/:index', this.getBlockTransactions)
.get(config.MEMPOOL.API_URL_PREFIX + 'block-height/:height', this.getBlockHeight)
.get(config.MEMPOOL.API_URL_PREFIX + 'address/:address', this.getAddress)
.get(config.MEMPOOL.API_URL_PREFIX + 'address/:address/txs', this.getAddressTransactions)
.get(config.MEMPOOL.API_URL_PREFIX + 'address/:address/txs/summary', this.getAddressTransactionSummary)
.get(config.MEMPOOL.API_URL_PREFIX + 'scripthash/:scripthash', this.getScriptHash)
.get(config.MEMPOOL.API_URL_PREFIX + 'scripthash/:scripthash/txs', this.getScriptHashTransactions)
.get(config.MEMPOOL.API_URL_PREFIX + 'scripthash/:scripthash/txs/summary', this.getScriptHashTransactionSummary)
.get(config.MEMPOOL.API_URL_PREFIX + 'address-prefix/:prefix', this.getAddressPrefix)
;
}
}
private getInitData(req: Request, res: Response) {
try {
const result = websocketHandler.getSerializedInitData();
res.set('Content-Type', 'application/json');
res.send(result);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private getRecommendedFees(req: Request, res: Response) {
if (!mempool.isInSync()) {
res.statusCode = 503;
res.send('Service Unavailable');
return;
}
const result = feeApi.getRecommendedFee();
res.json(result);
}
private getMempoolBlocks(req: Request, res: Response) {
try {
const result = mempoolBlocks.getMempoolBlocks();
res.json(result);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private getTransactionTimes(req: Request, res: Response) {
if (!Array.isArray(req.query.txId)) {
res.status(500).send('Not an array');
return;
}
const txIds: string[] = [];
for (const _txId in req.query.txId) {
if (typeof req.query.txId[_txId] === 'string') {
txIds.push(req.query.txId[_txId].toString());
}
}
const times = mempool.getFirstSeenForTransactions(txIds);
res.json(times);
}
private async $getBatchedOutspends(req: Request, res: Response): Promise<IEsploraApi.Outspend[][] | void> {
const txids_csv = req.query.txids;
if (!txids_csv || typeof txids_csv !== 'string') {
res.status(500).send('Invalid txids format');
return;
}
const txids = txids_csv.split(',');
if (txids.length > 50) {
res.status(400).send('Too many txids requested');
return;
}
try {
const batchedOutspends = await bitcoinApi.$getBatchedOutspends(txids);
res.json(batchedOutspends);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getCpfpInfo(req: Request, res: Response) {
if (!/^[a-fA-F0-9]{64}$/.test(req.params.txId)) {
res.status(501).send(`Invalid transaction ID.`);
return;
}
const tx = mempool.getMempool()[req.params.txId];
if (tx) {
if (tx?.cpfpChecked) {
res.json({
ancestors: tx.ancestors,
bestDescendant: tx.bestDescendant || null,
descendants: tx.descendants || null,
effectiveFeePerVsize: tx.effectiveFeePerVsize || null,
sigops: tx.sigops,
fee: tx.fee,
adjustedVsize: tx.adjustedVsize,
acceleration: tx.acceleration,
acceleratedBy: tx.acceleratedBy || undefined,
acceleratedAt: tx.acceleratedAt || undefined,
feeDelta: tx.feeDelta || undefined,
});
return;
}
const cpfpInfo = calculateMempoolTxCpfp(tx, mempool.getMempool());
res.json(cpfpInfo);
return;
} else {
let cpfpInfo;
if (config.DATABASE.ENABLED) {
try {
cpfpInfo = await transactionRepository.$getCpfpInfo(req.params.txId);
} catch (e) {
res.status(500).send('failed to get CPFP info');
return;
}
}
if (cpfpInfo) {
res.json(cpfpInfo);
return;
} else {
res.json({
ancestors: []
});
return;
}
}
}
private getBackendInfo(req: Request, res: Response) {
res.json(backendInfo.getBackendInfo());
}
private async getTransaction(req: Request, res: Response) {
try {
const transaction = await transactionUtils.$getTransactionExtended(req.params.txId, true, false, false, true);
res.json(transaction);
} catch (e) {
let statusCode = 500;
if (e instanceof Error && e instanceof Error && e.message && e.message.indexOf('No such mempool or blockchain transaction') > -1) {
statusCode = 404;
}
res.status(statusCode).send(e instanceof Error ? e.message : e);
}
}
private async getRawTransaction(req: Request, res: Response) {
try {
const transaction: IEsploraApi.Transaction = await bitcoinApi.$getRawTransaction(req.params.txId, true);
res.setHeader('content-type', 'text/plain');
res.send(transaction.hex);
} catch (e) {
let statusCode = 500;
if (e instanceof Error && e.message && e.message.indexOf('No such mempool or blockchain transaction') > -1) {
statusCode = 404;
}
res.status(statusCode).send(e instanceof Error ? e.message : e);
}
}
/**
* Takes the PSBT as text/plain body, parses it, and adds the full
* parent transaction to each input that doesn't already have it.
* This is used for BTCPayServer / Trezor users which need access to
* the full parent transaction even with segwit inputs.
* It will respond with a text/plain PSBT in the same format (hex|base64).
*/
private async postPsbtCompletion(req: Request, res: Response): Promise<void> {
res.setHeader('content-type', 'text/plain');
const notFoundError = `Couldn't get transaction hex for parent of input`;
try {
let psbt: bitcoinjs.Psbt;
let format: 'hex' | 'base64';
let isModified = false;
try {
psbt = bitcoinjs.Psbt.fromBase64(req.body);
format = 'base64';
} catch (e1) {
try {
psbt = bitcoinjs.Psbt.fromHex(req.body);
format = 'hex';
} catch (e2) {
throw new Error(`Unable to parse PSBT`);
}
}
for (const [index, input] of psbt.data.inputs.entries()) {
if (!input.nonWitnessUtxo) {
// Buffer.from ensures it won't be modified in place by reverse()
const txid = Buffer.from(psbt.txInputs[index].hash)
.reverse()
.toString('hex');
let transactionHex: string;
// If missing transaction, return 404 status error
try {
transactionHex = await bitcoinApi.$getTransactionHex(txid);
if (!transactionHex) {
throw new Error('');
}
} catch (err) {
throw new Error(`${notFoundError} #${index} @ ${txid}`);
}
psbt.updateInput(index, {
nonWitnessUtxo: Buffer.from(transactionHex, 'hex'),
});
if (!isModified) {
isModified = true;
}
}
}
if (isModified) {
res.send(format === 'hex' ? psbt.toHex() : psbt.toBase64());
} else {
// Not modified
// 422 Unprocessable Entity
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422
res.status(422).send(`Psbt had no missing nonWitnessUtxos.`);
}
} catch (e: any) {
if (e instanceof Error && new RegExp(notFoundError).test(e.message)) {
res.status(404).send(e.message);
} else {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
}
private async getTransactionStatus(req: Request, res: Response) {
try {
const transaction = await transactionUtils.$getTransactionExtended(req.params.txId, true);
res.json(transaction.status);
} catch (e) {
let statusCode = 500;
if (e instanceof Error && e.message && e.message.indexOf('No such mempool or blockchain transaction') > -1) {
statusCode = 404;
}
res.status(statusCode).send(e instanceof Error ? e.message : e);
}
}
private async getStrippedBlockTransactions(req: Request, res: Response) {
try {
const transactions = await blocks.$getStrippedBlockTransactions(req.params.hash);
res.setHeader('Expires', new Date(Date.now() + 1000 * 3600 * 24 * 30).toUTCString());
res.json(transactions);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getBlock(req: Request, res: Response) {
try {
const block = await blocks.$getBlock(req.params.hash);
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);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getBlockHeader(req: Request, res: Response) {
try {
const blockHeader = await bitcoinApi.$getBlockHeader(req.params.hash);
res.setHeader('content-type', 'text/plain');
res.send(blockHeader);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getBlockAuditSummary(req: Request, res: Response) {
try {
const auditSummary = await blocks.$getBlockAuditSummary(req.params.hash);
if (auditSummary) {
res.setHeader('Expires', new Date(Date.now() + 1000 * 3600 * 24 * 30).toUTCString());
res.json(auditSummary);
} else {
return res.status(404).send(`audit not available`);
}
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getBlockTxAuditSummary(req: Request, res: Response) {
try {
const auditSummary = await blocks.$getBlockTxAuditSummary(req.params.hash, req.params.txid);
if (auditSummary) {
res.setHeader('Expires', new Date(Date.now() + 1000 * 3600 * 24 * 30).toUTCString());
res.json(auditSummary);
} else {
return res.status(404).send(`transaction audit not available`);
}
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getBlocks(req: Request, res: Response) {
try {
if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK)) { // Bitcoin
const height = req.params.height === undefined ? undefined : parseInt(req.params.height, 10);
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(await blocks.$getBlocks(height, 15));
} else { // Liquid
return await this.getLegacyBlocks(req, res);
}
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getBlocksByBulk(req: Request, res: Response) {
try {
if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) { // Liquid - Not implemented
return res.status(404).send(`This API is only available for Bitcoin networks`);
}
if (config.MEMPOOL.MAX_BLOCKS_BULK_QUERY <= 0) {
return res.status(404).send(`This API is disabled. Set config.MEMPOOL.MAX_BLOCKS_BULK_QUERY to a positive number to enable it.`);
}
if (!Common.indexingEnabled()) {
return res.status(404).send(`Indexing is required for this API`);
}
const from = parseInt(req.params.from, 10);
if (!req.params.from || from < 0) {
return res.status(400).send(`Parameter 'from' must be a block height (integer)`);
}
const to = req.params.to === undefined ? await bitcoinApi.$getBlockHeightTip() : parseInt(req.params.to, 10);
if (to < 0) {
return res.status(400).send(`Parameter 'to' must be a block height (integer)`);
}
if (from > to) {
return res.status(400).send(`Parameter 'to' must be a higher block height than 'from'`);
}
if ((to - from + 1) > config.MEMPOOL.MAX_BLOCKS_BULK_QUERY) {
return res.status(400).send(`You can only query ${config.MEMPOOL.MAX_BLOCKS_BULK_QUERY} blocks at once.`);
}
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(await blocks.$getBlocksBetweenHeight(from, to));
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getLegacyBlocks(req: Request, res: Response) {
try {
const returnBlocks: IEsploraApi.Block[] = [];
const tip = blocks.getCurrentBlockHeight();
const fromHeight = Math.min(parseInt(req.params.height, 10) || tip, tip);
// Check if block height exist in local cache to skip the hash lookup
const blockByHeight = blocks.getBlocks().find((b) => b.height === fromHeight);
let startFromHash: string | null = null;
if (blockByHeight) {
startFromHash = blockByHeight.id;
} else {
startFromHash = await bitcoinApi.$getBlockHash(fromHeight);
}
let nextHash = startFromHash;
for (let i = 0; i < 15 && nextHash; i++) {
const localBlock = blocks.getBlocks().find((b) => b.id === nextHash);
if (localBlock) {
returnBlocks.push(localBlock);
nextHash = localBlock.previousblockhash;
} else {
const block = await bitcoinApi.$getBlock(nextHash);
returnBlocks.push(block);
nextHash = block.previousblockhash;
}
}
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(returnBlocks);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getBlockTransactions(req: Request, res: Response) {
try {
loadingIndicators.setProgress('blocktxs-' + req.params.hash, 0);
const txIds = await bitcoinApi.$getTxIdsForBlock(req.params.hash);
const transactions: TransactionExtended[] = [];
const startingIndex = Math.max(0, parseInt(req.params.index || '0', 10));
const endIndex = Math.min(startingIndex + 10, txIds.length);
for (let i = startingIndex; i < endIndex; i++) {
try {
const transaction = await transactionUtils.$getTransactionExtended(txIds[i], true, true);
transactions.push(transaction);
loadingIndicators.setProgress('blocktxs-' + req.params.hash, (i - startingIndex + 1) / (endIndex - startingIndex) * 100);
} catch (e) {
logger.debug('getBlockTransactions error: ' + (e instanceof Error ? e.message : e));
}
}
res.json(transactions);
} catch (e) {
loadingIndicators.setProgress('blocktxs-' + req.params.hash, 100);
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getBlockHeight(req: Request, res: Response) {
try {
const blockHash = await bitcoinApi.$getBlockHash(parseInt(req.params.height, 10));
res.send(blockHash);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getAddress(req: Request, res: Response) {
if (config.MEMPOOL.BACKEND === 'none') {
res.status(405).send('Address lookups cannot be used with bitcoind as backend.');
return;
}
try {
const addressData = await bitcoinApi.$getAddress(req.params.address);
res.json(addressData);
} catch (e) {
if (e instanceof Error && e.message && (e.message.indexOf('too long') > 0 || e.message.indexOf('confirmed status') > 0)) {
return res.status(413).send(e instanceof Error ? e.message : e);
}
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getAddressTransactions(req: Request, res: Response): Promise<void> {
if (config.MEMPOOL.BACKEND === 'none') {
res.status(405).send('Address lookups cannot be used with bitcoind as backend.');
return;
}
try {
let lastTxId: string = '';
if (req.query.after_txid && typeof req.query.after_txid === 'string') {
lastTxId = req.query.after_txid;
}
const transactions = await bitcoinApi.$getAddressTransactions(req.params.address, lastTxId);
res.json(transactions);
} catch (e) {
if (e instanceof Error && e.message && (e.message.indexOf('too long') > 0 || e.message.indexOf('confirmed status') > 0)) {
res.status(413).send(e instanceof Error ? e.message : e);
return;
}
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getAddressTransactionSummary(req: Request, res: Response): Promise<void> {
if (config.MEMPOOL.BACKEND !== 'esplora') {
res.status(405).send('Address summary lookups require mempool/electrs backend.');
return;
}
}
private async getScriptHash(req: Request, res: Response) {
if (config.MEMPOOL.BACKEND === 'none') {
res.status(405).send('Address lookups cannot be used with bitcoind as backend.');
return;
}
try {
// electrum expects scripthashes in little-endian
const electrumScripthash = req.params.scripthash.match(/../g)?.reverse().join('') ?? '';
const addressData = await bitcoinApi.$getScriptHash(electrumScripthash);
res.json(addressData);
} catch (e) {
if (e instanceof Error && e.message && (e.message.indexOf('too long') > 0 || e.message.indexOf('confirmed status') > 0)) {
return res.status(413).send(e instanceof Error ? e.message : e);
}
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getScriptHashTransactions(req: Request, res: Response): Promise<void> {
if (config.MEMPOOL.BACKEND === 'none') {
res.status(405).send('Address lookups cannot be used with bitcoind as backend.');
return;
}
try {
// electrum expects scripthashes in little-endian
const electrumScripthash = req.params.scripthash.match(/../g)?.reverse().join('') ?? '';
let lastTxId: string = '';
if (req.query.after_txid && typeof req.query.after_txid === 'string') {
lastTxId = req.query.after_txid;
}
const transactions = await bitcoinApi.$getScriptHashTransactions(electrumScripthash, lastTxId);
res.json(transactions);
} catch (e) {
if (e instanceof Error && e.message && (e.message.indexOf('too long') > 0 || e.message.indexOf('confirmed status') > 0)) {
res.status(413).send(e instanceof Error ? e.message : e);
return;
}
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getScriptHashTransactionSummary(req: Request, res: Response): Promise<void> {
if (config.MEMPOOL.BACKEND !== 'esplora') {
res.status(405).send('Scripthash summary lookups require mempool/electrs backend.');
return;
}
}
private async getAddressPrefix(req: Request, res: Response) {
try {
const blockHash = await bitcoinApi.$getAddressPrefix(req.params.prefix);
res.send(blockHash);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getRecentMempoolTransactions(req: Request, res: Response) {
const latestTransactions = Object.entries(mempool.getMempool())
.sort((a, b) => (b[1].firstSeen || 0) - (a[1].firstSeen || 0))
.slice(0, 10).map((tx) => Common.stripTransaction(tx[1]));
res.json(latestTransactions);
}
private async getMempool(req: Request, res: Response) {
const info = mempool.getMempoolInfo();
res.json({
count: info.size,
vsize: info.bytes,
total_fee: info.total_fee * 1e8,
fee_histogram: []
});
}
private async getMempoolTxIds(req: Request, res: Response) {
try {
const rawMempool = await bitcoinApi.$getRawMempool();
res.send(rawMempool);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private getBlockTipHeight(req: Request, res: Response) {
try {
const result = blocks.getCurrentBlockHeight();
if (!result) {
return res.status(503).send(`Service Temporarily Unavailable`);
}
res.setHeader('content-type', 'text/plain');
res.send(result.toString());
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getBlockTipHash(req: Request, res: Response) {
try {
const result = await bitcoinApi.$getBlockHashTip();
res.setHeader('content-type', 'text/plain');
res.send(result);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getRawBlock(req: Request, res: Response) {
try {
const result = await bitcoinApi.$getRawBlock(req.params.hash);
res.setHeader('content-type', 'application/octet-stream');
res.send(result);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getTxIdsForBlock(req: Request, res: Response) {
try {
const result = await bitcoinApi.$getTxIdsForBlock(req.params.hash);
res.json(result);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async validateAddress(req: Request, res: Response) {
try {
const result = await bitcoinClient.validateAddress(req.params.address);
res.json(result);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getRbfHistory(req: Request, res: Response) {
try {
const replacements = rbfCache.getRbfTree(req.params.txId) || null;
const replaces = rbfCache.getReplaces(req.params.txId) || null;
res.json({
replacements,
replaces
});
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getRbfReplacements(req: Request, res: Response) {
try {
const result = rbfCache.getRbfTrees(false);
res.json(result);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getFullRbfReplacements(req: Request, res: Response) {
try {
const result = rbfCache.getRbfTrees(true);
res.json(result);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getCachedTx(req: Request, res: Response) {
try {
const result = rbfCache.getTx(req.params.txId);
if (result) {
res.json(result);
} else {
res.status(204).send();
}
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async getTransactionOutspends(req: Request, res: Response) {
try {
const result = await bitcoinApi.$getOutspends(req.params.txId);
res.json(result);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private getDifficultyChange(req: Request, res: Response) {
try {
const da = difficultyAdjustment.getDifficultyAdjustment();
if (da) {
res.json(da);
} else {
res.status(503).send(`Service Temporarily Unavailable`);
}
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $postTransaction(req: Request, res: Response) {
res.setHeader('content-type', 'text/plain');
try {
const rawTx = Common.getTransactionFromRequest(req, false);
const txIdResult = await bitcoinApi.$sendRawTransaction(rawTx);
res.send(txIdResult);
} catch (e: any) {
res.status(400).send(e.message && e.code ? 'sendrawtransaction RPC error: ' + JSON.stringify({ code: e.code, message: e.message })
: (e.message || 'Error'));
}
}
private async $postTransactionForm(req: Request, res: Response) {
res.setHeader('content-type', 'text/plain');
try {
const txHex = Common.getTransactionFromRequest(req, true);
const txIdResult = await bitcoinClient.sendRawTransaction(txHex);
res.send(txIdResult);
} catch (e: any) {
res.status(400).send(e.message && e.code ? 'sendrawtransaction RPC error: ' + JSON.stringify({ code: e.code, message: e.message })
: (e.message || 'Error'));
}
}
private async $testTransactions(req: Request, res: Response) {
try {
const rawTxs = Common.getTransactionsFromRequest(req);
const maxfeerate = parseFloat(req.query.maxfeerate as string);
const result = await bitcoinApi.$testMempoolAccept(rawTxs, maxfeerate);
res.send(result);
} catch (e: any) {
res.setHeader('content-type', 'text/plain');
res.status(400).send(e.message && e.code ? 'testmempoolaccept RPC error: ' + JSON.stringify({ code: e.code, message: e.message })
: (e.message || 'Error'));
}
}
}
export default new BitcoinRoutes();

View File

@@ -1,110 +0,0 @@
const config = require('../../../mempool-config.json');
import * as bitcoin from 'bitcoin';
import { ITransaction, IMempoolInfo, IBlock } from '../../interfaces';
import { AbstractBitcoinApi } from './bitcoin-api-abstract-factory';
class BitcoindApi implements AbstractBitcoinApi {
client: any;
constructor() {
this.client = new bitcoin.Client({
host: config.BITCOIN_NODE_HOST,
port: config.BITCOIN_NODE_PORT,
user: config.BITCOIN_NODE_USER,
pass: config.BITCOIN_NODE_PASS,
});
}
getMempoolInfo(): Promise<IMempoolInfo> {
return new Promise((resolve, reject) => {
this.client.getMempoolInfo((err: Error, mempoolInfo: any) => {
if (err) {
return reject(err);
}
resolve(mempoolInfo);
});
});
}
getRawMempool(): Promise<ITransaction['txid'][]> {
return new Promise((resolve, reject) => {
this.client.getRawMemPool((err: Error, transactions: ITransaction['txid'][]) => {
if (err) {
return reject(err);
}
resolve(transactions);
});
});
}
getRawTransaction(txId: string): Promise<ITransaction> {
return new Promise((resolve, reject) => {
this.client.getRawTransaction(txId, true, (err: Error, txData: ITransaction) => {
if (err) {
return reject(err);
}
resolve(txData);
});
});
}
getBlockCount(): Promise<number> {
return new Promise((resolve, reject) => {
this.client.getBlockCount((err: Error, response: number) => {
if (err) {
return reject(err);
}
resolve(response);
});
});
}
getBlockAndTransactions(hash: string, verbosity: 1 | 2 = 1): Promise<IBlock> {
return new Promise((resolve, reject) => {
this.client.getBlock(hash, verbosity, (err: Error, block: IBlock) => {
if (err) {
return reject(err);
}
resolve(block);
});
});
}
getBlockHash(height: number): Promise<string> {
return new Promise((resolve, reject) => {
this.client.getBlockHash(height, (err: Error, response: string) => {
if (err) {
return reject(err);
}
resolve(response);
});
});
}
getBlock(hash: string): Promise<IBlock> {
throw new Error('Method not implemented.');
}
getBlocks(): Promise<string> {
throw new Error('Method not implemented.');
}
getBlocksFromHeight(height: number): Promise<string> {
throw new Error('Method not implemented.');
}
getBlockTransactions(hash: string): Promise<IBlock> {
throw new Error('Method not implemented.');
}
getBlockTransactionsFromIndex(hash: string, index: number): Promise<IBlock> {
throw new Error('Method not implemented.');
}
getAddress(address: string): Promise<IBlock> {
throw new Error('Method not implemented.');
}
getAddressTransactions(address: string): Promise<IBlock> {
throw new Error('Method not implemented.');
}
getAddressTransactionsFromLastSeenTxid(address: string, lastSeenTxid: string): Promise<IBlock> {
throw new Error('Method not implemented.');
}
}
export default BitcoindApi;

View File

@@ -1,229 +0,0 @@
const config = require('../../../mempool-config.json');
import { ITransaction, IMempoolInfo, IBlock } from '../../interfaces';
import { AbstractBitcoinApi } from './bitcoin-api-abstract-factory';
import * as request from 'request';
class ElectrsApi implements AbstractBitcoinApi {
constructor() {
}
getMempoolInfo(): Promise<IMempoolInfo> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/mempool', { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
resolve({
size: response.count,
bytes: response.vsize,
});
}
});
});
}
getRawMempool(): Promise<ITransaction['txid'][]> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/mempool/txids', { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
resolve(response);
}
});
});
}
getRawTransaction(txId: string): Promise<ITransaction> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/tx/' + txId, { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
response.vsize = Math.round(response.weight / 4);
response.fee = response.fee / 100000000;
response.blockhash = response.status.block_hash;
resolve(response);
}
});
});
}
getBlockCount(): Promise<number> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/blocks/tip/height', { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
resolve(response);
}
});
});
}
getBlockAndTransactions(hash: string): Promise<IBlock> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/block/' + hash, { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
request(config.ELECTRS_API_URL + '/block/' + hash + '/txids', { json: true, timeout: 10000 }, (err2, res2, response2) => {
if (err2) {
reject(err2);
} else if (res.statusCode !== 200) {
reject(response);
} else {
const block = response;
block.hash = hash;
block.nTx = block.tx_count;
block.time = block.timestamp;
block.tx = response2;
resolve(block);
}
});
}
});
});
}
getBlockHash(height: number): Promise<string> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/block-height/' + height, { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
resolve(response);
}
});
});
}
getBlocks(): Promise<string> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/blocks', { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
resolve(response);
}
});
});
}
getBlocksFromHeight(height: number): Promise<string> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/blocks/' + height, { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
resolve(response);
}
});
});
}
getBlock(hash: string): Promise<IBlock> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/block/' + hash, { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
resolve(response);
}
});
});
}
getBlockTransactions(hash: string): Promise<IBlock> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/block/' + hash + '/txs', { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
resolve(response);
}
});
});
}
getBlockTransactionsFromIndex(hash: string, index: number): Promise<IBlock> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/block/' + hash + '/txs/' + index, { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
resolve(response);
}
});
});
}
getAddress(address: string): Promise<IBlock> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/address/' + address, { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
resolve(response);
}
});
});
}
getAddressTransactions(address: string): Promise<IBlock> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/address/' + address + '/txs', { json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
resolve(response);
}
});
});
}
getAddressTransactionsFromLastSeenTxid(address: string, lastSeenTxid: string): Promise<IBlock> {
return new Promise((resolve, reject) => {
request(config.ELECTRS_API_URL + '/address/' + address + '/txs/chain/' + lastSeenTxid,
{ json: true, timeout: 10000 }, (err, res, response) => {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(response);
} else {
resolve(response);
}
});
});
}
}
export default ElectrsApi;

View File

@@ -0,0 +1,12 @@
export namespace IElectrumApi {
export interface ScriptHashBalance {
confirmed: number;
unconfirmed: number;
}
export interface ScriptHashHistory {
height: number;
tx_hash: string;
fee?: number;
}
}

View File

@@ -0,0 +1,223 @@
import config from '../../config';
import Client from '@mempool/electrum-client';
import { AbstractBitcoinApi } from './bitcoin-api-abstract-factory';
import { IEsploraApi } from './esplora-api.interface';
import { IElectrumApi } from './electrum-api.interface';
import BitcoinApi from './bitcoin-api';
import logger from '../../logger';
import crypto from "crypto-js";
import loadingIndicators from '../loading-indicators';
import memoryCache from '../memory-cache';
class BitcoindElectrsApi extends BitcoinApi implements AbstractBitcoinApi {
private electrumClient: any;
constructor(bitcoinClient: any) {
super(bitcoinClient);
const electrumConfig = { client: 'mempool-v2', version: '1.4' };
const electrumPersistencePolicy = { retryPeriod: 1000, maxRetry: Number.MAX_SAFE_INTEGER, callback: null };
const electrumCallbacks = {
onConnect: (client, versionInfo) => { logger.info(`Connected to Electrum Server at ${config.ELECTRUM.HOST}:${config.ELECTRUM.PORT} (${JSON.stringify(versionInfo)})`); },
onClose: (client) => { logger.info(`Disconnected from Electrum Server at ${config.ELECTRUM.HOST}:${config.ELECTRUM.PORT}`); },
onError: (err) => { logger.err(`Electrum error: ${JSON.stringify(err)}`); },
onLog: (str) => { logger.debug(str); },
};
this.electrumClient = new Client(
config.ELECTRUM.PORT,
config.ELECTRUM.HOST,
config.ELECTRUM.TLS_ENABLED ? 'tls' : 'tcp',
null,
electrumCallbacks
);
this.electrumClient.initElectrum(electrumConfig, electrumPersistencePolicy)
.then(() => { })
.catch((err) => {
logger.err(`Error connecting to Electrum Server at ${config.ELECTRUM.HOST}:${config.ELECTRUM.PORT}`);
});
}
async $getAddress(address: string): Promise<IEsploraApi.Address> {
const addressInfo = await this.bitcoindClient.validateAddress(address);
if (!addressInfo || !addressInfo.isvalid) {
return ({
'address': address,
'chain_stats': {
'funded_txo_count': 0,
'funded_txo_sum': 0,
'spent_txo_count': 0,
'spent_txo_sum': 0,
'tx_count': 0
},
'mempool_stats': {
'funded_txo_count': 0,
'funded_txo_sum': 0,
'spent_txo_count': 0,
'spent_txo_sum': 0,
'tx_count': 0
}
});
}
try {
const balance = await this.$getScriptHashBalance(addressInfo.scriptPubKey);
const history = await this.$getScriptHashHistory(addressInfo.scriptPubKey);
const unconfirmed = history.filter((h) => h.fee).length;
return {
'address': addressInfo.address,
'chain_stats': {
'funded_txo_count': 0,
'funded_txo_sum': balance.confirmed ? balance.confirmed : 0,
'spent_txo_count': 0,
'spent_txo_sum': balance.confirmed < 0 ? balance.confirmed : 0,
'tx_count': history.length - unconfirmed,
},
'mempool_stats': {
'funded_txo_count': 0,
'funded_txo_sum': balance.unconfirmed > 0 ? balance.unconfirmed : 0,
'spent_txo_count': 0,
'spent_txo_sum': balance.unconfirmed < 0 ? -balance.unconfirmed : 0,
'tx_count': unconfirmed,
},
'electrum': true,
};
} catch (e: any) {
throw new Error(typeof e === 'string' ? e : e && e.message || e);
}
}
async $getAddressTransactions(address: string, lastSeenTxId: string): Promise<IEsploraApi.Transaction[]> {
const addressInfo = await this.bitcoindClient.validateAddress(address);
if (!addressInfo || !addressInfo.isvalid) {
return [];
}
try {
loadingIndicators.setProgress('address-' + address, 0);
const transactions: IEsploraApi.Transaction[] = [];
const history = await this.$getScriptHashHistory(addressInfo.scriptPubKey);
history.sort((a, b) => (b.height || 9999999) - (a.height || 9999999));
let startingIndex = 0;
if (lastSeenTxId) {
const pos = history.findIndex((historicalTx) => historicalTx.tx_hash === lastSeenTxId);
if (pos) {
startingIndex = pos + 1;
}
}
const endIndex = Math.min(startingIndex + 10, history.length);
for (let i = startingIndex; i < endIndex; i++) {
const tx = await this.$getRawTransaction(history[i].tx_hash, false, true);
transactions.push(tx);
loadingIndicators.setProgress('address-' + address, (i + 1) / endIndex * 100);
}
return transactions;
} catch (e: any) {
loadingIndicators.setProgress('address-' + address, 100);
throw new Error(typeof e === 'string' ? e : e && e.message || e);
}
}
async $getScriptHash(scripthash: string): Promise<IEsploraApi.ScriptHash> {
try {
const balance = await this.electrumClient.blockchainScripthash_getBalance(scripthash);
let history = memoryCache.get<IElectrumApi.ScriptHashHistory[]>('Scripthash_getHistory', scripthash);
if (!history) {
history = await this.electrumClient.blockchainScripthash_getHistory(scripthash);
memoryCache.set('Scripthash_getHistory', scripthash, history, 2);
}
const unconfirmed = history ? history.filter((h) => h.fee).length : 0;
return {
'scripthash': scripthash,
'chain_stats': {
'funded_txo_count': 0,
'funded_txo_sum': balance.confirmed ? balance.confirmed : 0,
'spent_txo_count': 0,
'spent_txo_sum': balance.confirmed < 0 ? balance.confirmed : 0,
'tx_count': (history?.length || 0) - unconfirmed,
},
'mempool_stats': {
'funded_txo_count': 0,
'funded_txo_sum': balance.unconfirmed > 0 ? balance.unconfirmed : 0,
'spent_txo_count': 0,
'spent_txo_sum': balance.unconfirmed < 0 ? -balance.unconfirmed : 0,
'tx_count': unconfirmed,
},
'electrum': true,
};
} catch (e: any) {
throw new Error(typeof e === 'string' ? e : e && e.message || e);
}
}
async $getScriptHashTransactions(scripthash: string, lastSeenTxId?: string): Promise<IEsploraApi.Transaction[]> {
try {
loadingIndicators.setProgress('address-' + scripthash, 0);
const transactions: IEsploraApi.Transaction[] = [];
let history = memoryCache.get<IElectrumApi.ScriptHashHistory[]>('Scripthash_getHistory', scripthash);
if (!history) {
history = await this.electrumClient.blockchainScripthash_getHistory(scripthash);
memoryCache.set('Scripthash_getHistory', scripthash, history, 2);
}
if (!history) {
throw new Error('failed to get scripthash history');
}
history.sort((a, b) => (b.height || 9999999) - (a.height || 9999999));
let startingIndex = 0;
if (lastSeenTxId) {
const pos = history.findIndex((historicalTx) => historicalTx.tx_hash === lastSeenTxId);
if (pos) {
startingIndex = pos + 1;
}
}
const endIndex = Math.min(startingIndex + 10, history.length);
for (let i = startingIndex; i < endIndex; i++) {
const tx = await this.$getRawTransaction(history[i].tx_hash, false, true);
transactions.push(tx);
loadingIndicators.setProgress('address-' + scripthash, (i + 1) / endIndex * 100);
}
return transactions;
} catch (e: any) {
loadingIndicators.setProgress('address-' + scripthash, 100);
throw new Error(typeof e === 'string' ? e : e && e.message || e);
}
}
private $getScriptHashBalance(scriptHash: string): Promise<IElectrumApi.ScriptHashBalance> {
return this.electrumClient.blockchainScripthash_getBalance(this.encodeScriptHash(scriptHash));
}
private $getScriptHashHistory(scriptHash: string): Promise<IElectrumApi.ScriptHashHistory[]> {
const fromCache = memoryCache.get<IElectrumApi.ScriptHashHistory[]>('Scripthash_getHistory', scriptHash);
if (fromCache) {
return Promise.resolve(fromCache);
}
return this.electrumClient.blockchainScripthash_getHistory(this.encodeScriptHash(scriptHash))
.then((history) => {
memoryCache.set('Scripthash_getHistory', scriptHash, history, 2);
return history;
});
}
private encodeScriptHash(scriptPubKey: string): string {
const addrScripthash = crypto.enc.Hex.stringify(crypto.SHA256(crypto.enc.Hex.parse(scriptPubKey)));
return addrScripthash!.match(/.{2}/g)!.reverse().join('');
}
}
export default BitcoindElectrsApi;

View File

@@ -0,0 +1,182 @@
export namespace IEsploraApi {
export interface Transaction {
txid: string;
version: number;
locktime: number;
size: number;
weight: number;
fee: number;
sigops?: number;
vin: Vin[];
vout: Vout[];
status: Status;
hex?: string;
}
export interface Recent {
txid: string;
fee: number;
vsize: number;
value: number;
}
export interface Vin {
txid: string;
vout: number;
is_coinbase: boolean;
scriptsig: string;
scriptsig_asm: string;
inner_redeemscript_asm: string;
inner_witnessscript_asm: string;
sequence: any;
witness: string[];
prevout: Vout | null;
// Elements
is_pegin?: boolean;
issuance?: Issuance;
// Custom
lazy?: boolean;
}
interface Issuance {
asset_id: string;
is_reissuance: string;
asset_blinding_nonce: string;
asset_entropy: string;
contract_hash: string;
assetamount?: number;
assetamountcommitment?: string;
tokenamount?: number;
tokenamountcommitment?: string;
}
export interface Vout {
scriptpubkey: string;
scriptpubkey_asm: string;
scriptpubkey_type: string;
scriptpubkey_address?: string;
value: number;
// Elements
valuecommitment?: number;
asset?: string;
pegout?: Pegout;
}
interface Pegout {
genesis_hash: string;
scriptpubkey: string;
scriptpubkey_asm: string;
scriptpubkey_address: string;
}
export interface Status {
confirmed: boolean;
block_height?: number;
block_hash?: string;
block_time?: number;
}
export interface Block {
id: string;
height: number;
version: number;
timestamp: number;
bits: number;
nonce: number;
difficulty: number;
merkle_root: string;
tx_count: number;
size: number;
weight: number;
previousblockhash: string;
mediantime: number;
stale: boolean;
}
export interface Address {
address: string;
chain_stats: ChainStats;
mempool_stats: MempoolStats;
electrum?: boolean;
}
export interface ScriptHash {
scripthash: string;
chain_stats: ChainStats;
mempool_stats: MempoolStats;
electrum?: boolean;
}
export interface ChainStats {
funded_txo_count: number;
funded_txo_sum: number;
spent_txo_count: number;
spent_txo_sum: number;
tx_count: number;
}
export interface MempoolStats {
funded_txo_count: number;
funded_txo_sum: number;
spent_txo_count: number;
spent_txo_sum: number;
tx_count: number;
}
export interface Outspend {
spent: boolean;
txid?: string;
vin?: number;
status?: Status;
}
export interface Asset {
asset_id: string;
issuance_txin: IssuanceTxin;
issuance_prevout: IssuancePrevout;
reissuance_token: string;
contract_hash: string;
status: Status;
chain_stats: AssetStats;
mempool_stats: AssetStats;
}
export interface AssetExtended extends Asset {
name: string;
ticker: string;
precision: number;
entity: Entity;
version: number;
issuer_pubkey: string;
}
export interface Entity {
domain: string;
}
interface IssuanceTxin {
txid: string;
vin: number;
}
interface IssuancePrevout {
txid: string;
vout: number;
}
interface AssetStats {
tx_count: number;
issuance_count: number;
issued_amount: number;
burned_amount: number;
has_blinded_issuances: boolean;
reissuance_tokens: number;
burned_reissuance_tokens: number;
peg_in_count: number;
peg_in_amount: number;
peg_out_count: number;
peg_out_amount: number;
burn_count: number;
}
}

View File

@@ -0,0 +1,383 @@
import config from '../../config';
import axios, { AxiosResponse, isAxiosError } from 'axios';
import http from 'http';
import { AbstractBitcoinApi, HealthCheckHost } from './bitcoin-api-abstract-factory';
import { IEsploraApi } from './esplora-api.interface';
import logger from '../../logger';
import { Common } from '../common';
import { TestMempoolAcceptResult } from './bitcoin-api.interface';
interface FailoverHost {
host: string,
rtts: number[],
rtt: number,
timedOut?: boolean,
failures: number,
latestHeight?: number,
socket?: boolean,
outOfSync?: boolean,
unreachable?: boolean,
preferred?: boolean,
checked: boolean,
lastChecked?: number,
}
class FailoverRouter {
activeHost: FailoverHost;
fallbackHost: FailoverHost;
maxSlippage: number = config.ESPLORA.MAX_BEHIND_TIP ?? 2;
maxHeight: number = 0;
hosts: FailoverHost[];
multihost: boolean;
pollInterval: number = 60000;
pollTimer: NodeJS.Timeout | null = null;
pollConnection = axios.create();
requestConnection = axios.create({
httpAgent: new http.Agent({ keepAlive: true })
});
constructor() {
// setup list of hosts
this.hosts = (config.ESPLORA.FALLBACK || []).map(domain => {
return {
host: domain,
checked: false,
rtts: [],
rtt: Infinity,
failures: 0,
};
});
this.activeHost = {
host: config.ESPLORA.UNIX_SOCKET_PATH || config.ESPLORA.REST_API_URL,
rtts: [],
rtt: 0,
failures: 0,
socket: !!config.ESPLORA.UNIX_SOCKET_PATH,
preferred: true,
checked: false,
};
this.fallbackHost = this.activeHost;
this.hosts.unshift(this.activeHost);
this.multihost = this.hosts.length > 1;
}
public startHealthChecks(): void {
// use axios interceptors to measure request rtt
this.pollConnection.interceptors.request.use((config) => {
config['meta'] = { startTime: Date.now() };
return config;
});
this.pollConnection.interceptors.response.use((response) => {
response.config['meta'].rtt = Date.now() - response.config['meta'].startTime;
return response;
});
if (this.multihost) {
this.pollHosts();
}
}
// start polling hosts to measure availability & rtt
private async pollHosts(): Promise<void> {
if (this.pollTimer) {
clearTimeout(this.pollTimer);
}
const start = Date.now();
// update rtts & sync status
for (const host of this.hosts) {
try {
const result = await (host.socket
? this.pollConnection.get<number>('/blocks/tip/height', { socketPath: host.host, timeout: config.ESPLORA.FALLBACK_TIMEOUT })
: this.pollConnection.get<number>(host.host + '/blocks/tip/height', { timeout: config.ESPLORA.FALLBACK_TIMEOUT })
);
if (result) {
const height = result.data;
host.latestHeight = height;
this.maxHeight = Math.max(height || 0, ...this.hosts.map(h => (!(h.unreachable || h.timedOut || h.outOfSync) ? h.latestHeight || 0 : 0)));
const rtt = result.config['meta'].rtt;
host.rtts.unshift(rtt);
host.rtts.slice(0, 5);
host.rtt = host.rtts.reduce((acc, l) => acc + l, 0) / host.rtts.length;
if (height == null || isNaN(height) || (this.maxHeight - height > this.maxSlippage)) {
host.outOfSync = true;
} else {
host.outOfSync = false;
}
host.unreachable = false;
} else {
host.outOfSync = true;
host.unreachable = true;
host.rtts = [];
host.rtt = Infinity;
}
host.timedOut = false;
} catch (e) {
host.outOfSync = true;
host.unreachable = true;
host.rtts = [];
host.rtt = Infinity;
if (isAxiosError(e) && (e.code === 'ECONNABORTED' || e.code === 'ETIMEDOUT')) {
host.timedOut = true;
} else {
host.timedOut = false;
}
}
host.checked = true;
host.lastChecked = Date.now();
const rankOrder = this.sortHosts();
// switch if the current host is out of sync or significantly slower than the next best alternative
if (this.activeHost.outOfSync || this.activeHost.unreachable || (this.activeHost !== rankOrder[0] && rankOrder[0].preferred) || (!this.activeHost.preferred && this.activeHost.rtt > (rankOrder[0].rtt * 2) + 50)) {
if (this.activeHost.unreachable) {
logger.warn(`🚨🚨🚨 Unable to reach ${this.activeHost.host}, failing over to next best alternative 🚨🚨🚨`);
} else if (this.activeHost.outOfSync) {
logger.warn(`🚨🚨🚨 ${this.activeHost.host} has fallen behind, failing over to next best alternative 🚨🚨🚨`);
} else {
logger.debug(`🛠️ ${this.activeHost.host} is no longer the best esplora host 🛠️`);
}
this.electHost();
}
await Common.sleep$(50);
}
const rankOrder = this.updateFallback();
logger.debug(`Tomahawk ranking:\n${rankOrder.map((host, index) => this.formatRanking(index, host, this.activeHost, this.maxHeight)).join('\n')}`);
const elapsed = Date.now() - start;
this.pollTimer = setTimeout(() => { this.pollHosts(); }, Math.max(1, this.pollInterval - elapsed));
}
private formatRanking(index: number, host: FailoverHost, active: FailoverHost, maxHeight: number): string {
const heightStatus = !host.checked ? '⏳' : (host.outOfSync ? '🚫' : (host.latestHeight && host.latestHeight < maxHeight ? '🟧' : '✅'));
return `${host === active ? '⭐️' : ' '} ${host.rtt < Infinity ? Math.round(host.rtt).toString().padStart(5, ' ') + 'ms' : (host.timedOut ? ' ⌛️💥 ' : ' - ')} ${!host.checked ? '⏳' : (host.unreachable ? '🔥' : '✅')} | block: ${host.latestHeight || '??????'} ${heightStatus} | ${host.host} ${host === active ? '⭐️' : ' '}`;
}
private updateFallback(): FailoverHost[] {
const rankOrder = this.sortHosts();
if (rankOrder.length > 1 && rankOrder[0] === this.activeHost) {
this.fallbackHost = rankOrder[1];
} else {
this.fallbackHost = rankOrder[0];
}
return rankOrder;
}
// sort hosts by connection quality, and update default fallback
public sortHosts(): FailoverHost[] {
// sort by connection quality
return this.hosts.slice().sort((a, b) => {
if ((a.unreachable || a.outOfSync) === (b.unreachable || b.outOfSync)) {
if (a.preferred === b.preferred) {
// lower rtt is best
return a.rtt - b.rtt;
} else { // unless we have a preferred host
return a.preferred ? -1 : 1;
}
} else { // or the host is out of sync
return (a.unreachable || a.outOfSync) ? 1 : -1;
}
});
}
// depose the active host and choose the next best replacement
private electHost(): void {
this.activeHost.failures = 0;
const rankOrder = this.sortHosts();
this.activeHost = rankOrder[0];
logger.warn(`Switching esplora host to ${this.activeHost.host}`);
}
private addFailure(host: FailoverHost): FailoverHost {
host.failures++;
if (host.failures > 5 && this.multihost) {
logger.warn(`🚨🚨🚨 Too many esplora failures on ${this.activeHost.host}, falling back to next best alternative 🚨🚨🚨`);
this.activeHost.unreachable = true;
this.electHost();
return this.activeHost;
} else {
return this.fallbackHost;
}
}
private async $query<T>(method: 'get'| 'post', path, data: any, responseType = 'json', host = this.activeHost, retry: boolean = true): Promise<T> {
let axiosConfig;
let url;
if (host.socket) {
axiosConfig = { socketPath: host.host, timeout: config.ESPLORA.REQUEST_TIMEOUT, responseType };
url = path;
} else {
axiosConfig = { timeout: config.ESPLORA.REQUEST_TIMEOUT, responseType };
url = host.host + path;
}
if (data?.params) {
axiosConfig.params = data.params;
}
return (method === 'post'
? this.requestConnection.post<T>(url, data, axiosConfig)
: this.requestConnection.get<T>(url, axiosConfig)
).then((response) => { host.failures = Math.max(0, host.failures - 1); return response.data; })
.catch((e) => {
let fallbackHost = this.fallbackHost;
if (e?.response?.status !== 404) {
logger.warn(`esplora request failed ${e?.response?.status} ${host.host}${path}`);
logger.warn(e instanceof Error ? e.message : e);
fallbackHost = this.addFailure(host);
}
if (retry && e?.code === 'ECONNREFUSED' && this.multihost) {
// Retry immediately
return this.$query(method, path, data, responseType, fallbackHost, false);
} else {
throw e;
}
});
}
public async $get<T>(path, responseType = 'json', params: any = null): Promise<T> {
return this.$query<T>('get', path, params ? { params } : null, responseType);
}
public async $post<T>(path, data: any, responseType = 'json'): Promise<T> {
return this.$query<T>('post', path, data, responseType);
}
}
class ElectrsApi implements AbstractBitcoinApi {
private failoverRouter = new FailoverRouter();
$getRawMempool(): Promise<IEsploraApi.Transaction['txid'][]> {
return this.failoverRouter.$get<IEsploraApi.Transaction['txid'][]>('/mempool/txids');
}
$getRawTransaction(txId: string): Promise<IEsploraApi.Transaction> {
return this.failoverRouter.$get<IEsploraApi.Transaction>('/tx/' + txId);
}
async $getRawTransactions(txids: string[]): Promise<IEsploraApi.Transaction[]> {
return this.failoverRouter.$post<IEsploraApi.Transaction[]>('/internal/txs', txids, 'json');
}
async $getMempoolTransactions(txids: string[]): Promise<IEsploraApi.Transaction[]> {
return this.failoverRouter.$post<IEsploraApi.Transaction[]>('/internal/mempool/txs', txids, 'json');
}
async $getAllMempoolTransactions(lastSeenTxid?: string, max_txs?: number): Promise<IEsploraApi.Transaction[]> {
return this.failoverRouter.$get<IEsploraApi.Transaction[]>('/internal/mempool/txs' + (lastSeenTxid ? '/' + lastSeenTxid : ''), 'json', max_txs ? { max_txs } : null);
}
$getTransactionHex(txId: string): Promise<string> {
return this.failoverRouter.$get<string>('/tx/' + txId + '/hex');
}
$getBlockHeightTip(): Promise<number> {
return this.failoverRouter.$get<number>('/blocks/tip/height');
}
$getBlockHashTip(): Promise<string> {
return this.failoverRouter.$get<string>('/blocks/tip/hash');
}
$getTxIdsForBlock(hash: string): Promise<string[]> {
return this.failoverRouter.$get<string[]>('/block/' + hash + '/txids');
}
$getTxsForBlock(hash: string): Promise<IEsploraApi.Transaction[]> {
return this.failoverRouter.$get<IEsploraApi.Transaction[]>('/internal/block/' + hash + '/txs');
}
$getBlockHash(height: number): Promise<string> {
return this.failoverRouter.$get<string>('/block-height/' + height);
}
$getBlockHeader(hash: string): Promise<string> {
return this.failoverRouter.$get<string>('/block/' + hash + '/header');
}
$getBlock(hash: string): Promise<IEsploraApi.Block> {
return this.failoverRouter.$get<IEsploraApi.Block>('/block/' + hash);
}
$getRawBlock(hash: string): Promise<Buffer> {
return this.failoverRouter.$get<any>('/block/' + hash + '/raw', 'arraybuffer')
.then((response) => { return Buffer.from(response.data); });
}
$getAddress(address: string): Promise<IEsploraApi.Address> {
throw new Error('Method getAddress not implemented.');
}
$getAddressTransactions(address: string, txId?: string): Promise<IEsploraApi.Transaction[]> {
throw new Error('Method getAddressTransactions not implemented.');
}
$getScriptHash(scripthash: string): Promise<IEsploraApi.ScriptHash> {
throw new Error('Method getScriptHash not implemented.');
}
$getScriptHashTransactions(scripthash: string, txId?: string): Promise<IEsploraApi.Transaction[]> {
throw new Error('Method getScriptHashTransactions not implemented.');
}
$getAddressPrefix(prefix: string): string[] {
throw new Error('Method not implemented.');
}
$sendRawTransaction(rawTransaction: string): Promise<string> {
throw new Error('Method not implemented.');
}
$testMempoolAccept(rawTransactions: string[], maxfeerate?: number): Promise<TestMempoolAcceptResult[]> {
throw new Error('Method not implemented.');
}
$getOutspend(txId: string, vout: number): Promise<IEsploraApi.Outspend> {
return this.failoverRouter.$get<IEsploraApi.Outspend>('/tx/' + txId + '/outspend/' + vout);
}
$getOutspends(txId: string): Promise<IEsploraApi.Outspend[]> {
return this.failoverRouter.$get<IEsploraApi.Outspend[]>('/tx/' + txId + '/outspends');
}
async $getBatchedOutspends(txids: string[]): Promise<IEsploraApi.Outspend[][]> {
throw new Error('Method not implemented.');
}
async $getBatchedOutspendsInternal(txids: string[]): Promise<IEsploraApi.Outspend[][]> {
return this.failoverRouter.$post<IEsploraApi.Outspend[][]>('/internal/txs/outspends/by-txid', txids, 'json');
}
async $getOutSpendsByOutpoint(outpoints: { txid: string, vout: number }[]): Promise<IEsploraApi.Outspend[]> {
return this.failoverRouter.$post<IEsploraApi.Outspend[]>('/internal/txs/outspends/by-outpoint', outpoints.map(out => `${out.txid}:${out.vout}`), 'json');
}
async $getCoinbaseTx(blockhash: string): Promise<IEsploraApi.Transaction> {
const txid = await this.failoverRouter.$get<string>(`/block/${blockhash}/txid/0`);
return this.failoverRouter.$get<IEsploraApi.Transaction>('/tx/' + txid);
}
public startHealthChecks(): void {
this.failoverRouter.startHealthChecks();
}
public getHealthStatus(): HealthCheckHost[] {
if (config.MEMPOOL.OFFICIAL) {
return this.failoverRouter.sortHosts().map(host => ({
host: host.host,
active: host === this.failoverRouter.activeHost,
rtt: host.rtt,
latestHeight: host.latestHeight || 0,
socket: !!host.socket,
outOfSync: !!host.outOfSync,
unreachable: !!host.unreachable,
checked: !!host.checked,
lastChecked: host.lastChecked || 0,
}));
} else {
return [];
}
}
}
export default ElectrsApi;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,91 @@
import logger from '../logger';
import bitcoinClient from './bitcoin/bitcoin-client';
export interface ChainTip {
height: number;
hash: string;
branchlen: number;
status: 'invalid' | 'active' | 'valid-fork' | 'valid-headers' | 'headers-only';
};
export interface OrphanedBlock {
height: number;
hash: string;
status: 'valid-fork' | 'valid-headers' | 'headers-only';
prevhash: string;
}
class ChainTips {
private chainTips: ChainTip[] = [];
private orphanedBlocks: { [hash: string]: OrphanedBlock } = {};
private blockCache: { [hash: string]: OrphanedBlock } = {};
private orphansByHeight: { [height: number]: OrphanedBlock[] } = {};
public async updateOrphanedBlocks(): Promise<void> {
try {
this.chainTips = await bitcoinClient.getChainTips();
const start = Date.now();
const breakAt = start + 10000;
let newOrphans = 0;
this.orphanedBlocks = {};
for (const chain of this.chainTips) {
if (chain.status === 'valid-fork' || chain.status === 'valid-headers') {
const orphans: OrphanedBlock[] = [];
let hash = chain.hash;
do {
let orphan = this.blockCache[hash];
if (!orphan) {
const block = await bitcoinClient.getBlock(hash);
if (block && block.confirmations === -1) {
newOrphans++;
orphan = {
height: block.height,
hash: block.hash,
status: chain.status,
prevhash: block.previousblockhash,
};
this.blockCache[hash] = orphan;
}
}
if (orphan) {
orphans.push(orphan);
}
hash = orphan?.prevhash;
} while (hash && (Date.now() < breakAt));
for (const orphan of orphans) {
this.orphanedBlocks[orphan.hash] = orphan;
}
}
if (Date.now() >= breakAt) {
logger.debug(`Breaking orphaned blocks updater after 10s, will continue next block`);
break;
}
}
this.orphansByHeight = {};
const allOrphans = Object.values(this.orphanedBlocks);
for (const orphan of allOrphans) {
if (!this.orphansByHeight[orphan.height]) {
this.orphansByHeight[orphan.height] = [];
}
this.orphansByHeight[orphan.height].push(orphan);
}
logger.debug(`Updated orphaned blocks cache. Fetched ${newOrphans} new orphaned blocks. Total ${allOrphans.length}`);
} catch (e) {
logger.err(`Cannot get fetch orphaned blocks. Reason: ${e instanceof Error ? e.message : e}`);
}
}
public getOrphanedBlocksAtHeight(height: number | undefined): OrphanedBlock[] {
if (height === undefined) {
return [];
}
return this.orphansByHeight[height] || [];
}
}
export default new ChainTips();

1118
backend/src/api/common.ts Normal file

File diff suppressed because it is too large Load Diff

272
backend/src/api/cpfp.ts Normal file
View File

@@ -0,0 +1,272 @@
import { Ancestor, CpfpCluster, CpfpInfo, CpfpSummary, MempoolTransactionExtended, TransactionExtended } from '../mempool.interfaces';
import { GraphTx, convertToGraphTx, expandRelativesGraph, initializeRelatives, makeBlockTemplate, mempoolComparator, removeAncestors, setAncestorScores } from './mini-miner';
import memPool from './mempool';
import { Acceleration } from './acceleration/acceleration';
const CPFP_UPDATE_INTERVAL = 60_000; // update CPFP info at most once per 60s per transaction
const MAX_CLUSTER_ITERATIONS = 100;
export function calculateFastBlockCpfp(height: number, transactions: MempoolTransactionExtended[], saveRelatives: boolean = false): CpfpSummary {
const clusters: CpfpCluster[] = []; // list of all cpfp clusters in this block
const clusterMap: { [txid: string]: CpfpCluster } = {}; // map transactions to their cpfp cluster
let clusterTxs: TransactionExtended[] = []; // working list of elements of the current cluster
let ancestors: { [txid: string]: boolean } = {}; // working set of ancestors of the current cluster root
const txMap: { [txid: string]: TransactionExtended } = {};
// initialize the txMap
for (const tx of transactions) {
txMap[tx.txid] = tx;
}
// reverse pass to identify CPFP clusters
for (let i = transactions.length - 1; i >= 0; i--) {
const tx = transactions[i];
if (!ancestors[tx.txid]) {
let totalFee = 0;
let totalVSize = 0;
clusterTxs.forEach(tx => {
totalFee += tx?.fee || 0;
totalVSize += (tx.weight / 4);
});
const effectiveFeePerVsize = totalFee / totalVSize;
let cluster: CpfpCluster;
if (clusterTxs.length > 1) {
cluster = {
root: clusterTxs[0].txid,
height,
txs: clusterTxs.map(tx => { return { txid: tx.txid, weight: tx.weight, fee: tx.fee || 0 }; }),
effectiveFeePerVsize,
};
clusters.push(cluster);
}
clusterTxs.forEach(tx => {
txMap[tx.txid].effectiveFeePerVsize = effectiveFeePerVsize;
if (cluster) {
clusterMap[tx.txid] = cluster;
}
});
// reset working vars
clusterTxs = [];
ancestors = {};
}
clusterTxs.push(tx);
tx.vin.forEach(vin => {
ancestors[vin.txid] = true;
});
}
// forward pass to enforce ancestor rate caps
for (const tx of transactions) {
let minAncestorRate = tx.effectiveFeePerVsize;
for (const vin of tx.vin) {
if (txMap[vin.txid]?.effectiveFeePerVsize) {
minAncestorRate = Math.min(minAncestorRate, txMap[vin.txid].effectiveFeePerVsize);
}
}
// check rounded values to skip cases with almost identical fees
const roundedMinAncestorRate = Math.ceil(minAncestorRate);
const roundedEffectiveFeeRate = Math.floor(tx.effectiveFeePerVsize);
if (roundedMinAncestorRate < roundedEffectiveFeeRate) {
tx.effectiveFeePerVsize = minAncestorRate;
if (!clusterMap[tx.txid]) {
// add a single-tx cluster to record the dependent rate
const cluster = {
root: tx.txid,
height,
txs: [{ txid: tx.txid, weight: tx.weight, fee: tx.fee || 0 }],
effectiveFeePerVsize: minAncestorRate,
};
clusterMap[tx.txid] = cluster;
clusters.push(cluster);
} else {
// update the existing cluster with the dependent rate
clusterMap[tx.txid].effectiveFeePerVsize = minAncestorRate;
}
}
}
if (saveRelatives) {
for (const cluster of clusters) {
cluster.txs.forEach((member, index) => {
txMap[member.txid].descendants = cluster.txs.slice(0, index).reverse();
txMap[member.txid].ancestors = cluster.txs.slice(index + 1).reverse();
txMap[member.txid].effectiveFeePerVsize = cluster.effectiveFeePerVsize;
});
}
}
return {
transactions,
clusters,
version: 1,
};
}
export function calculateGoodBlockCpfp(height: number, transactions: MempoolTransactionExtended[], accelerations: Acceleration[]): CpfpSummary {
const txMap: { [txid: string]: MempoolTransactionExtended } = {};
for (const tx of transactions) {
txMap[tx.txid] = tx;
}
const template = makeBlockTemplate(transactions, accelerations, 1, Infinity, Infinity);
const clusters = new Map<string, string[]>();
for (const tx of template) {
const cluster = tx.cluster || [];
const root = cluster.length ? cluster[cluster.length - 1] : null;
if (cluster.length > 1 && root && !clusters.has(root)) {
clusters.set(root, cluster);
}
txMap[tx.txid].effectiveFeePerVsize = tx.effectiveFeePerVsize;
}
const clusterArray: CpfpCluster[] = [];
for (const cluster of clusters.values()) {
for (const txid of cluster) {
const mempoolTx = txMap[txid];
if (mempoolTx) {
const ancestors: Ancestor[] = [];
const descendants: Ancestor[] = [];
let matched = false;
cluster.forEach(relativeTxid => {
if (relativeTxid === txid) {
matched = true;
} else {
const relative = {
txid: relativeTxid,
fee: txMap[relativeTxid].fee,
weight: (txMap[relativeTxid].adjustedVsize * 4) || txMap[relativeTxid].weight,
};
if (matched) {
descendants.push(relative);
} else {
ancestors.push(relative);
}
}
});
if (mempoolTx.ancestors?.length !== ancestors.length || mempoolTx.descendants?.length !== descendants.length) {
mempoolTx.cpfpDirty = true;
}
Object.assign(mempoolTx, { ancestors, descendants, bestDescendant: null, cpfpChecked: true });
}
}
const root = cluster[cluster.length - 1];
clusterArray.push({
root: root,
height,
txs: cluster.reverse().map(txid => ({
txid,
fee: txMap[txid].fee,
weight: (txMap[txid].adjustedVsize * 4) || txMap[txid].weight,
})),
effectiveFeePerVsize: txMap[root].effectiveFeePerVsize,
});
}
return {
transactions: transactions.map(tx => txMap[tx.txid]),
clusters: clusterArray,
version: 2,
};
}
/**
* Takes a mempool transaction and a copy of the current mempool, and calculates the CPFP data for
* that transaction (and all others in the same cluster)
*/
export function calculateMempoolTxCpfp(tx: MempoolTransactionExtended, mempool: { [txid: string]: MempoolTransactionExtended }): CpfpInfo {
if (tx.cpfpUpdated && Date.now() < (tx.cpfpUpdated + CPFP_UPDATE_INTERVAL)) {
tx.cpfpDirty = false;
return {
ancestors: tx.ancestors || [],
bestDescendant: tx.bestDescendant || null,
descendants: tx.descendants || [],
effectiveFeePerVsize: tx.effectiveFeePerVsize || tx.adjustedFeePerVsize || tx.feePerVsize,
sigops: tx.sigops,
fee: tx.fee,
adjustedVsize: tx.adjustedVsize,
acceleration: tx.acceleration
};
}
const ancestorMap = new Map<string, GraphTx>();
const graphTx = convertToGraphTx(tx, memPool.getSpendMap());
ancestorMap.set(tx.txid, graphTx);
const allRelatives = expandRelativesGraph(mempool, ancestorMap, memPool.getSpendMap());
const relativesMap = initializeRelatives(allRelatives);
const cluster = calculateCpfpCluster(tx.txid, relativesMap);
let totalVsize = 0;
let totalFee = 0;
for (const tx of cluster.values()) {
totalVsize += tx.vsize;
totalFee += tx.fees.base;
}
const effectiveFeePerVsize = totalFee / totalVsize;
for (const tx of cluster.values()) {
mempool[tx.txid].effectiveFeePerVsize = effectiveFeePerVsize;
mempool[tx.txid].ancestors = Array.from(tx.ancestors.values()).map(tx => ({ txid: tx.txid, weight: tx.weight, fee: tx.fees.base }));
mempool[tx.txid].descendants = Array.from(cluster.values()).filter(entry => entry.txid !== tx.txid && !tx.ancestors.has(entry.txid)).map(tx => ({ txid: tx.txid, weight: tx.weight, fee: tx.fees.base }));
mempool[tx.txid].bestDescendant = null;
mempool[tx.txid].cpfpChecked = true;
mempool[tx.txid].cpfpDirty = true;
mempool[tx.txid].cpfpUpdated = Date.now();
}
tx = mempool[tx.txid];
return {
ancestors: tx.ancestors || [],
bestDescendant: tx.bestDescendant || null,
descendants: tx.descendants || [],
effectiveFeePerVsize: tx.effectiveFeePerVsize || tx.adjustedFeePerVsize || tx.feePerVsize,
sigops: tx.sigops,
fee: tx.fee,
adjustedVsize: tx.adjustedVsize,
acceleration: tx.acceleration
};
}
/**
* Given a root transaction and a list of in-mempool ancestors,
* Calculate the CPFP cluster
*
* @param tx
* @param ancestors
*/
function calculateCpfpCluster(txid: string, graph: Map<string, GraphTx>): Map<string, GraphTx> {
const tx = graph.get(txid);
if (!tx) {
return new Map<string, GraphTx>([]);
}
// Initialize individual & ancestor fee rates
graph.forEach(entry => setAncestorScores(entry));
// Sort by descending ancestor score
let sortedRelatives = Array.from(graph.values()).sort(mempoolComparator);
// Iterate until we reach a cluster that includes our target tx
let maxIterations = MAX_CLUSTER_ITERATIONS;
let best = sortedRelatives.shift();
let bestCluster = new Map<string, GraphTx>(best?.ancestors?.entries() || []);
while (sortedRelatives.length && best && (best.txid !== tx.txid && !best.ancestors.has(tx.txid)) && maxIterations > 0) {
maxIterations--;
if ((best && best.txid === tx.txid) || (bestCluster && bestCluster.has(tx.txid))) {
break;
} else {
// Remove this cluster (it doesn't include our target tx)
// and update scores, ancestor totals and dependencies for the survivors
removeAncestors(bestCluster, graph);
// re-sort
sortedRelatives = Array.from(graph.values()).sort(mempoolComparator);
// Grab the next highest scoring entry
best = sortedRelatives.shift();
if (best) {
bestCluster = new Map<string, GraphTx>(best?.ancestors?.entries() || []);
bestCluster.set(best?.txid, best);
}
}
}
bestCluster.set(tx.txid, tx);
return bestCluster;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,183 @@
import config from '../config';
import { IDifficultyAdjustment } from '../mempool.interfaces';
import blocks from './blocks';
export interface DifficultyAdjustment {
progressPercent: number; // Percent: 0 to 100
difficultyChange: number; // Percent: -75 to 300
estimatedRetargetDate: number; // Unix time in ms
remainingBlocks: number; // Block count
remainingTime: number; // Duration of time in ms
previousRetarget: number; // Percent: -75 to 300
previousTime: number; // Unix time in ms
nextRetargetHeight: number; // Block Height
timeAvg: number; // Duration of time in ms
adjustedTimeAvg; // Expected block interval with hashrate implied over last 504 blocks
timeOffset: number; // (Testnet) Time since last block (cap @ 20min) in ms
expectedBlocks: number; // Block count
}
/**
* Calculate the difficulty increase/decrease by using the `bits` integer contained in two
* block headers.
*
* Warning: Only compare `bits` from blocks in two adjacent difficulty periods. This code
* assumes the maximum difference is x4 or /4 (as per the protocol) and will throw an
* error if an exponent difference of 2 or more is seen.
*
* @param {number} oldBits The 32 bit `bits` integer from a block header.
* @param {number} newBits The 32 bit `bits` integer from a block header in the next difficulty period.
* @returns {number} A floating point decimal of the difficulty change from old to new.
* (ie. 21.3 means 21.3% increase in difficulty, -21.3 is a 21.3% decrease in difficulty)
*/
export function calcBitsDifference(oldBits: number, newBits: number): number {
// Must be
// - integer
// - highest exponent is 0x20, so max value (as integer) is 0x207fffff
// - min value is 1 (exponent = 0)
// - highest bit of the number-part is +- sign, it must not be 1
const verifyBits = (bits: number): void => {
if (
Math.floor(bits) !== bits ||
bits > 0x207fffff ||
bits < 1 ||
(bits & 0x00800000) !== 0 ||
(bits & 0x007fffff) === 0
) {
throw new Error('Invalid bits');
}
};
verifyBits(oldBits);
verifyBits(newBits);
// No need to mask exponents because we checked the bounds above
const oldExp = oldBits >> 24;
const newExp = newBits >> 24;
const oldNum = oldBits & 0x007fffff;
const newNum = newBits & 0x007fffff;
// The diff can only possibly be 1, 0, -1
// (because maximum difficulty change is x4 or /4 (2 bits up or down))
let result: number;
switch (newExp - oldExp) {
// New less than old, target lowered, difficulty increased
case -1:
result = ((oldNum << 8) * 100) / newNum - 100;
break;
// Same exponent, compare numbers as is.
case 0:
result = (oldNum * 100) / newNum - 100;
break;
// Old less than new, target raised, difficulty decreased
case 1:
result = (oldNum * 100) / (newNum << 8) - 100;
break;
default:
throw new Error('Impossible exponent difference');
}
// Min/Max values
return result > 300 ? 300 : result < -75 ? -75 : result;
}
export function calcDifficultyAdjustment(
DATime: number,
quarterEpochTime: number | null,
nowSeconds: number,
blockHeight: number,
previousRetarget: number,
network: string,
latestBlockTimestamp: number,
): DifficultyAdjustment {
const EPOCH_BLOCK_LENGTH = 2016; // Bitcoin mainnet
const BLOCK_SECONDS_TARGET = 600; // Bitcoin mainnet
const TESTNET_MAX_BLOCK_SECONDS = 1200; // Bitcoin testnet
const diffSeconds = Math.max(0, nowSeconds - DATime);
const blocksInEpoch = (blockHeight >= 0) ? blockHeight % EPOCH_BLOCK_LENGTH : 0;
const progressPercent = (blockHeight >= 0) ? blocksInEpoch / EPOCH_BLOCK_LENGTH * 100 : 100;
const remainingBlocks = EPOCH_BLOCK_LENGTH - blocksInEpoch;
const nextRetargetHeight = (blockHeight >= 0) ? blockHeight + remainingBlocks : 0;
const expectedBlocks = diffSeconds / BLOCK_SECONDS_TARGET;
const actualTimespan = (blocksInEpoch === 2015 ? latestBlockTimestamp : nowSeconds) - DATime;
let difficultyChange = 0;
let timeAvgSecs = blocksInEpoch ? diffSeconds / blocksInEpoch : BLOCK_SECONDS_TARGET;
let adjustedTimeAvgSecs = timeAvgSecs;
// for the first 504 blocks of the epoch, calculate the expected avg block interval
// from a sliding window over the last 504 blocks
if (quarterEpochTime && blocksInEpoch < 503) {
const timeLastEpoch = DATime - quarterEpochTime;
const adjustedTimeLastEpoch = timeLastEpoch * (1 + (previousRetarget / 100));
const adjustedTimeSpan = diffSeconds + adjustedTimeLastEpoch;
adjustedTimeAvgSecs = adjustedTimeSpan / 503;
difficultyChange = (BLOCK_SECONDS_TARGET / (adjustedTimeSpan / 504) - 1) * 100;
} else {
difficultyChange = (BLOCK_SECONDS_TARGET / (actualTimespan / (blocksInEpoch + 1)) - 1) * 100;
}
// Max increase is x4 (+300%)
if (difficultyChange > 300) {
difficultyChange = 300;
}
// Max decrease is /4 (-75%)
if (difficultyChange < -75) {
difficultyChange = -75;
}
// Testnet difficulty is set to 1 after 20 minutes of no blocks,
// therefore the time between blocks will always be below 20 minutes (1200s).
let timeOffset = 0;
if (network === 'testnet') {
if (timeAvgSecs > TESTNET_MAX_BLOCK_SECONDS) {
timeAvgSecs = TESTNET_MAX_BLOCK_SECONDS;
}
const secondsSinceLastBlock = nowSeconds - latestBlockTimestamp;
if (secondsSinceLastBlock + timeAvgSecs > TESTNET_MAX_BLOCK_SECONDS) {
timeOffset = -Math.min(secondsSinceLastBlock, TESTNET_MAX_BLOCK_SECONDS) * 1000;
}
}
const timeAvg = Math.floor(timeAvgSecs * 1000);
const adjustedTimeAvg = Math.floor(adjustedTimeAvgSecs * 1000);
const remainingTime = remainingBlocks * adjustedTimeAvg;
const estimatedRetargetDate = remainingTime + nowSeconds * 1000;
return {
progressPercent,
difficultyChange,
estimatedRetargetDate,
remainingBlocks,
remainingTime,
previousRetarget,
previousTime: DATime,
nextRetargetHeight,
timeAvg,
adjustedTimeAvg,
timeOffset,
expectedBlocks,
};
}
class DifficultyAdjustmentApi {
public getDifficultyAdjustment(): IDifficultyAdjustment | null {
const DATime = blocks.getLastDifficultyAdjustmentTime();
const previousRetarget = blocks.getPreviousDifficultyRetarget();
const blockHeight = blocks.getCurrentBlockHeight();
const blocksCache = blocks.getBlocks();
const latestBlock = blocksCache[blocksCache.length - 1];
if (!latestBlock) {
return null;
}
const nowSeconds = Math.floor(new Date().getTime() / 1000);
const quarterEpochBlockTime = blocks.getQuarterEpochBlockTime();
return calcDifficultyAdjustment(
DATime, quarterEpochBlockTime, nowSeconds, blockHeight, previousRetarget,
config.MEMPOOL.NETWORK, latestBlock.timestamp
);
}
}
export default new DifficultyAdjustmentApi();

View File

@@ -1,15 +1,297 @@
import * as fs from 'fs';
const fsPromises = fs.promises;
import cluster from 'cluster';
import memPool from './mempool';
import blocks from './blocks';
import logger from '../logger';
import config from '../config';
import { TransactionExtended } from '../mempool.interfaces';
import { Common } from './common';
import rbfCache from './rbf-cache';
class DiskCache {
static FILE_NAME = './cache.json';
constructor() { }
private cacheSchemaVersion = 3;
private rbfCacheSchemaVersion = 1;
saveData(dataBlob: string) {
fs.writeFileSync(DiskCache.FILE_NAME, dataBlob, 'utf8');
private static TMP_FILE_NAME = config.MEMPOOL.CACHE_DIR + '/tmp-cache.json';
private static TMP_FILE_NAMES = config.MEMPOOL.CACHE_DIR + '/tmp-cache{number}.json';
private static FILE_NAME = config.MEMPOOL.CACHE_DIR + '/cache.json';
private static FILE_NAMES = config.MEMPOOL.CACHE_DIR + '/cache{number}.json';
private static TMP_RBF_FILE_NAME = config.MEMPOOL.CACHE_DIR + '/tmp-rbfcache.json';
private static RBF_FILE_NAME = config.MEMPOOL.CACHE_DIR + '/rbfcache.json';
private static CHUNK_FILES = 25;
private isWritingCache = false;
private ignoreBlocksCache = false;
private semaphore: { resume: (() => void)[], locks: number } = {
resume: [],
locks: 0,
};
constructor() {
if (!cluster.isPrimary || !config.MEMPOOL.CACHE_ENABLED) {
return;
}
process.on('SIGINT', (e) => {
this.$saveCacheToDisk(true);
process.exit(0);
});
}
loadData(): string {
return fs.readFileSync(DiskCache.FILE_NAME, 'utf8');
async $saveCacheToDisk(sync: boolean = false): Promise<void> {
if (!cluster.isPrimary || !config.MEMPOOL.CACHE_ENABLED) {
return;
}
if (this.isWritingCache) {
logger.debug('Saving cache already in progress. Skipping.');
return;
}
try {
logger.debug(`Writing mempool and blocks data to disk cache (${ sync ? 'sync' : 'async' })...`);
this.isWritingCache = true;
const mempool = memPool.getMempool();
const mempoolArray: TransactionExtended[] = [];
for (const tx in mempool) {
if (mempool[tx]) {
mempoolArray.push(mempool[tx]);
}
}
Common.shuffleArray(mempoolArray);
const chunkSize = Math.floor(mempoolArray.length / DiskCache.CHUNK_FILES);
if (sync) {
fs.writeFileSync(DiskCache.TMP_FILE_NAME, JSON.stringify({
network: config.MEMPOOL.NETWORK,
cacheSchemaVersion: this.cacheSchemaVersion,
blocks: blocks.getBlocks(),
blockSummaries: blocks.getBlockSummaries(),
mempool: {},
mempoolArray: mempoolArray.splice(0, chunkSize),
}), { flag: 'w' });
for (let i = 1; i < DiskCache.CHUNK_FILES; i++) {
fs.writeFileSync(DiskCache.TMP_FILE_NAMES.replace('{number}', i.toString()), JSON.stringify({
mempool: {},
mempoolArray: mempoolArray.splice(0, chunkSize),
}), { flag: 'w' });
}
fs.renameSync(DiskCache.TMP_FILE_NAME, DiskCache.FILE_NAME);
for (let i = 1; i < DiskCache.CHUNK_FILES; i++) {
fs.renameSync(DiskCache.TMP_FILE_NAMES.replace('{number}', i.toString()), DiskCache.FILE_NAMES.replace('{number}', i.toString()));
}
} else {
await this.$yield();
await fsPromises.writeFile(DiskCache.TMP_FILE_NAME, JSON.stringify({
network: config.MEMPOOL.NETWORK,
cacheSchemaVersion: this.cacheSchemaVersion,
blocks: blocks.getBlocks(),
blockSummaries: blocks.getBlockSummaries(),
mempool: {},
mempoolArray: mempoolArray.splice(0, chunkSize),
}), { flag: 'w' });
for (let i = 1; i < DiskCache.CHUNK_FILES; i++) {
await this.$yield();
await fsPromises.writeFile(DiskCache.TMP_FILE_NAMES.replace('{number}', i.toString()), JSON.stringify({
mempool: {},
mempoolArray: mempoolArray.splice(0, chunkSize),
}), { flag: 'w' });
}
await fsPromises.rename(DiskCache.TMP_FILE_NAME, DiskCache.FILE_NAME);
for (let i = 1; i < DiskCache.CHUNK_FILES; i++) {
await fsPromises.rename(DiskCache.TMP_FILE_NAMES.replace('{number}', i.toString()), DiskCache.FILE_NAMES.replace('{number}', i.toString()));
}
}
logger.debug('Mempool and blocks data saved to disk cache');
this.isWritingCache = false;
} catch (e) {
logger.warn('Error writing to cache file: ' + (e instanceof Error ? e.message : e));
this.isWritingCache = false;
}
try {
logger.debug('Writing rbf data to disk cache (async)...');
this.isWritingCache = true;
const rbfData = rbfCache.dump();
if (sync) {
fs.writeFileSync(DiskCache.TMP_RBF_FILE_NAME, JSON.stringify({
network: config.MEMPOOL.NETWORK,
rbfCacheSchemaVersion: this.rbfCacheSchemaVersion,
rbf: rbfData,
}), { flag: 'w' });
fs.renameSync(DiskCache.TMP_RBF_FILE_NAME, DiskCache.RBF_FILE_NAME);
} else {
await fsPromises.writeFile(DiskCache.TMP_RBF_FILE_NAME, JSON.stringify({
network: config.MEMPOOL.NETWORK,
rbfCacheSchemaVersion: this.rbfCacheSchemaVersion,
rbf: rbfData,
}), { flag: 'w' });
await fsPromises.rename(DiskCache.TMP_RBF_FILE_NAME, DiskCache.RBF_FILE_NAME);
}
logger.debug('Rbf data saved to disk cache');
this.isWritingCache = false;
} catch (e) {
logger.warn('Error writing rbf data to cache file: ' + (e instanceof Error ? e.message : e));
this.isWritingCache = false;
}
}
wipeCache(): void {
logger.notice(`Wiping nodejs backend cache/cache*.json files`);
try {
fs.unlinkSync(DiskCache.FILE_NAME);
} catch (e: any) {
if (e?.code !== 'ENOENT') {
logger.err(`Cannot wipe cache file ${DiskCache.FILE_NAME}. Exception ${JSON.stringify(e)}`);
}
}
for (let i = 1; i < DiskCache.CHUNK_FILES; i++) {
const filename = DiskCache.FILE_NAMES.replace('{number}', i.toString());
try {
fs.unlinkSync(filename);
} catch (e: any) {
if (e?.code !== 'ENOENT') {
logger.err(`Cannot wipe cache file ${filename}. Exception ${JSON.stringify(e)}`);
}
}
}
}
wipeRbfCache() {
logger.notice(`Wipping nodejs backend cache/rbfcache.json file`);
try {
fs.unlinkSync(DiskCache.RBF_FILE_NAME);
} catch (e: any) {
if (e?.code !== 'ENOENT') {
logger.err(`Cannot wipe cache file ${DiskCache.RBF_FILE_NAME}. Exception ${JSON.stringify(e)}`);
}
}
}
async $loadMempoolCache(): Promise<void> {
if (!config.MEMPOOL.CACHE_ENABLED || !fs.existsSync(DiskCache.FILE_NAME)) {
return;
}
try {
const start = Date.now();
let data: any = {};
const cacheData = fs.readFileSync(DiskCache.FILE_NAME, 'utf8');
if (cacheData) {
logger.info('Restoring mempool and blocks data from disk cache');
data = JSON.parse(cacheData);
if (data.cacheSchemaVersion === undefined || data.cacheSchemaVersion !== this.cacheSchemaVersion) {
logger.notice('Disk cache contains an outdated schema version. Clearing it and skipping the cache loading.');
return this.wipeCache();
}
if (data.network && data.network !== config.MEMPOOL.NETWORK) {
logger.notice('Disk cache contains data from a different network. Clearing it and skipping the cache loading.');
return this.wipeCache();
}
if (data.mempoolArray) {
for (const tx of data.mempoolArray) {
delete tx.uid;
data.mempool[tx.txid] = tx;
}
}
}
for (let i = 1; i < DiskCache.CHUNK_FILES; i++) {
const fileName = DiskCache.FILE_NAMES.replace('{number}', i.toString());
try {
if (fs.existsSync(fileName)) {
const cacheData2 = JSON.parse(fs.readFileSync(fileName, 'utf8'));
if (cacheData2.mempoolArray) {
for (const tx of cacheData2.mempoolArray) {
delete tx.uid;
data.mempool[tx.txid] = tx;
}
} else {
Object.assign(data.mempool, cacheData2.mempool);
}
}
} catch (e) {
logger.err('Error parsing ' + fileName + '. Skipping. Reason: ' + (e instanceof Error ? e.message : e));
}
}
logger.info(`Loaded mempool from disk cache in ${Date.now() - start} ms`);
await memPool.$setMempool(data.mempool);
if (!this.ignoreBlocksCache) {
blocks.setBlocks(data.blocks);
blocks.setBlockSummaries(data.blockSummaries || []);
} else {
logger.info('Re-saving cache with empty recent blocks data');
await this.$saveCacheToDisk(true);
}
} catch (e) {
logger.warn('Failed to parse mempoool and blocks cache. Skipping. Reason: ' + (e instanceof Error ? e.message : e));
}
try {
let rbfData: any = {};
const rbfCacheData = fs.readFileSync(DiskCache.RBF_FILE_NAME, 'utf8');
if (rbfCacheData) {
logger.info('Restoring rbf data from disk cache');
rbfData = JSON.parse(rbfCacheData);
if (rbfData.rbfCacheSchemaVersion === undefined || rbfData.rbfCacheSchemaVersion !== this.rbfCacheSchemaVersion) {
logger.notice('Rbf disk cache contains an outdated schema version. Clearing it and skipping the cache loading.');
return this.wipeRbfCache();
}
if (rbfData.network && rbfData.network !== config.MEMPOOL.NETWORK) {
logger.notice('Rbf disk cache contains data from a different network. Clearing it and skipping the cache loading.');
return this.wipeRbfCache();
}
}
if (rbfData?.rbf) {
rbfCache.load({
txs: rbfData.rbf.txs.map(([txid, entry]) => ({ value: entry })),
trees: rbfData.rbf.trees,
expiring: rbfData.rbf.expiring.map(([txid, value]) => ({ key: txid, value })),
mempool: memPool.getMempool(),
});
}
} catch (e) {
logger.warn('Failed to parse rbf cache. Skipping. Reason: ' + (e instanceof Error ? e.message : e));
}
}
private $yield(): Promise<void> {
if (this.semaphore.locks) {
logger.debug('Pause writing mempool and blocks data to disk cache (async)');
return new Promise((resolve) => {
this.semaphore.resume.push(resolve);
});
} else {
return Promise.resolve();
}
}
public lock(): void {
this.semaphore.locks++;
}
public unlock(): void {
this.semaphore.locks = Math.max(0, this.semaphore.locks - 1);
if (!this.semaphore.locks && this.semaphore.resume.length) {
const nextResume = this.semaphore.resume.shift();
if (nextResume) {
logger.debug('Resume writing mempool and blocks data to disk cache (async)');
nextResume();
}
}
}
public setIgnoreBlocksCache(): void {
this.ignoreBlocksCache = true;
}
}

View File

@@ -0,0 +1,735 @@
import logger from '../../logger';
import DB from '../../database';
import nodesApi from './nodes.api';
import { ResultSetHeader } from 'mysql2';
import { ILightningApi } from '../lightning/lightning-api.interface';
import { Common } from '../common';
class ChannelsApi {
public async $getAllChannels(): Promise<any[]> {
try {
const query = `SELECT * FROM channels`;
const [rows]: any = await DB.query(query);
return rows;
} catch (e) {
logger.err('$getAllChannels error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getAllChannelsGeo(publicKey?: string, style?: string): Promise<any[]> {
try {
let select: string;
if (style === 'widget') {
select = `
nodes_1.latitude AS node1_latitude, nodes_1.longitude AS node1_longitude,
nodes_2.latitude AS node2_latitude, nodes_2.longitude AS node2_longitude
`;
} else {
select = `
nodes_1.public_key as node1_public_key, nodes_1.alias AS node1_alias,
nodes_1.latitude AS node1_latitude, nodes_1.longitude AS node1_longitude,
nodes_2.public_key as node2_public_key, nodes_2.alias AS node2_alias,
nodes_2.latitude AS node2_latitude, nodes_2.longitude AS node2_longitude
`;
}
const params: string[] = [];
let query = `SELECT ${select}
FROM channels
JOIN nodes AS nodes_1 on nodes_1.public_key = channels.node1_public_key
JOIN nodes AS nodes_2 on nodes_2.public_key = channels.node2_public_key
WHERE channels.status = 1
AND nodes_1.latitude IS NOT NULL AND nodes_1.longitude IS NOT NULL
AND nodes_2.latitude IS NOT NULL AND nodes_2.longitude IS NOT NULL
`;
if (publicKey !== undefined) {
query += ' AND (nodes_1.public_key = ? OR nodes_2.public_key = ?)';
params.push(publicKey);
params.push(publicKey);
} else {
query += ` AND channels.capacity > 1000000
GROUP BY nodes_1.public_key, nodes_2.public_key
ORDER BY channels.capacity DESC
LIMIT 10000
`;
}
const [rows]: any = await DB.query(query, params);
return rows.map((row) => {
if (style === 'widget') {
return [
row.node1_longitude, row.node1_latitude,
row.node2_longitude, row.node2_latitude,
];
} else {
return [
row.node1_public_key, row.node1_alias,
row.node1_longitude, row.node1_latitude,
row.node2_public_key, row.node2_alias,
row.node2_longitude, row.node2_latitude,
];
}
});
} catch (e) {
logger.err('$getAllChannelsGeo error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $searchChannelsById(search: string): Promise<any[]> {
try {
// restrict search to valid id/short_id prefix formats
let searchStripped = search.match(/^[0-9]+[0-9x]*$/)?.[0] || '';
if (!searchStripped.length) {
return [];
}
// add wildcard to search by prefix
searchStripped += '%';
const query = `SELECT id, short_id, capacity, status FROM channels WHERE id LIKE ? OR short_id LIKE ? LIMIT 10`;
const [rows]: any = await DB.query(query, [searchStripped, searchStripped]);
return rows;
} catch (e) {
logger.err('$searchChannelsById error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getChannelsByStatus(status: number | number[]): Promise<any[]> {
try {
let query: string;
if (Array.isArray(status)) {
query = `SELECT * FROM channels WHERE status IN (${status.join(',')})`;
} else {
query = `SELECT * FROM channels WHERE status = ?`;
}
const [rows]: any = await DB.query(query, [status]);
return rows;
} catch (e) {
logger.err('$getChannelsByStatus error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getClosedChannelsWithoutReason(): Promise<any[]> {
try {
const query = `SELECT * FROM channels WHERE status = 2 AND closing_reason IS NULL AND closing_transaction_id != ''`;
const [rows]: any = await DB.query(query);
return rows;
} catch (e) {
logger.err('$getClosedChannelsWithoutReason error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getPenaltyClosedChannels(): Promise<any[]> {
try {
const query = `
SELECT n1.alias AS alias_left,
n2.alias AS alias_right,
channels.*
FROM channels
LEFT JOIN nodes AS n1 ON n1.public_key = channels.node1_public_key
LEFT JOIN nodes AS n2 ON n2.public_key = channels.node2_public_key
WHERE channels.status = 2 AND channels.closing_reason = 3
ORDER BY closing_date DESC
`;
const [rows]: any = await DB.query(query);
return rows;
} catch (e) {
logger.err('$getPenaltyClosedChannels error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getUnresolvedClosedChannels(): Promise<any[]> {
try {
const query = `SELECT * FROM channels WHERE status = 2 AND closing_reason = 2 AND closing_resolved = 0 AND closing_transaction_id != ''`;
const [rows]: any = await DB.query(query);
return rows;
} catch (e) {
logger.err('$getUnresolvedClosedChannels error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getChannelsWithoutSourceChecked(): Promise<any[]> {
try {
const query = `
SELECT channels.*
FROM channels
WHERE channels.source_checked != 1
`;
const [rows]: any = await DB.query(query);
return rows;
} catch (e) {
logger.err('$getUnresolvedClosedChannels error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getChannelsWithoutCreatedDate(): Promise<any[]> {
try {
const query = `SELECT * FROM channels WHERE created IS NULL`;
const [rows]: any = await DB.query(query);
return rows;
} catch (e) {
logger.err('$getChannelsWithoutCreatedDate error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getChannel(id: string): Promise<any> {
try {
const query = `
SELECT n1.alias AS alias_left, n1.longitude as node1_longitude, n1.latitude as node1_latitude,
n2.alias AS alias_right, n2.longitude as node2_longitude, n2.latitude as node2_latitude,
channels.*,
ns1.channels AS channels_left, ns1.capacity AS capacity_left, ns2.channels AS channels_right, ns2.capacity AS capacity_right
FROM channels
LEFT JOIN nodes AS n1 ON n1.public_key = channels.node1_public_key
LEFT JOIN nodes AS n2 ON n2.public_key = channels.node2_public_key
LEFT JOIN node_stats AS ns1 ON ns1.public_key = channels.node1_public_key
LEFT JOIN node_stats AS ns2 ON ns2.public_key = channels.node2_public_key
WHERE (
ns1.id = (
SELECT MAX(id)
FROM node_stats
WHERE public_key = channels.node1_public_key
)
AND ns2.id = (
SELECT MAX(id)
FROM node_stats
WHERE public_key = channels.node2_public_key
)
)
AND channels.id = ?
`;
const [rows]: any = await DB.query(query, [id]);
if (rows[0]) {
return this.convertChannel(rows[0]);
}
} catch (e) {
logger.err('$getChannel error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getChannelsStats(): Promise<any> {
try {
// Feedback from zerofeerouting:
// "I would argue > 5000ppm can be ignored. Channels charging more than .5% fee are ignored by CLN for example."
const ignoredFeeRateThreshold = 5000;
const ignoredBaseFeeThreshold = 5000;
// Capacity
let query = `SELECT AVG(capacity) AS avgCapacity FROM channels WHERE status = 1 ORDER BY capacity`;
const [avgCapacity]: any = await DB.query(query);
query = `SELECT capacity FROM channels WHERE status = 1 ORDER BY capacity`;
let [capacity]: any = await DB.query(query);
capacity = capacity.map(capacity => capacity.capacity);
const medianCapacity = capacity[Math.floor(capacity.length / 2)];
// Fee rates
query = `SELECT node1_fee_rate FROM channels WHERE node1_fee_rate < ${ignoredFeeRateThreshold} AND status = 1`;
let [feeRates1]: any = await DB.query(query);
feeRates1 = feeRates1.map(rate => rate.node1_fee_rate);
query = `SELECT node2_fee_rate FROM channels WHERE node2_fee_rate < ${ignoredFeeRateThreshold} AND status = 1`;
let [feeRates2]: any = await DB.query(query);
feeRates2 = feeRates2.map(rate => rate.node2_fee_rate);
let feeRates = (feeRates1.concat(feeRates2)).sort((a, b) => a - b);
let avgFeeRate = 0;
for (const rate of feeRates) {
avgFeeRate += rate;
}
avgFeeRate /= feeRates.length;
const medianFeeRate = feeRates[Math.floor(feeRates.length / 2)];
// Base fees
query = `SELECT node1_base_fee_mtokens FROM channels WHERE node1_base_fee_mtokens < ${ignoredBaseFeeThreshold} AND status = 1`;
let [baseFees1]: any = await DB.query(query);
baseFees1 = baseFees1.map(rate => rate.node1_base_fee_mtokens);
query = `SELECT node2_base_fee_mtokens FROM channels WHERE node2_base_fee_mtokens < ${ignoredBaseFeeThreshold} AND status = 1`;
let [baseFees2]: any = await DB.query(query);
baseFees2 = baseFees2.map(rate => rate.node2_base_fee_mtokens);
let baseFees = (baseFees1.concat(baseFees2)).sort((a, b) => a - b);
let avgBaseFee = 0;
for (const fee of baseFees) {
avgBaseFee += fee;
}
avgBaseFee /= baseFees.length;
const medianBaseFee = feeRates[Math.floor(baseFees.length / 2)];
return {
avgCapacity: parseInt(avgCapacity[0].avgCapacity, 10),
avgFeeRate: avgFeeRate,
avgBaseFee: avgBaseFee,
medianCapacity: medianCapacity,
medianFeeRate: medianFeeRate,
medianBaseFee: medianBaseFee,
}
} catch (e) {
logger.err(`Cannot calculate channels statistics. Reason: ${e instanceof Error ? e.message : e}`);
throw e;
}
}
public async $getChannelsByTransactionId(transactionIds: string[]): Promise<any[]> {
try {
const query = `
SELECT n1.alias AS alias_left, n2.alias AS alias_right, channels.*
FROM channels
LEFT JOIN nodes AS n1 ON n1.public_key = channels.node1_public_key
LEFT JOIN nodes AS n2 ON n2.public_key = channels.node2_public_key
WHERE channels.transaction_id IN ? OR channels.closing_transaction_id IN ?
`;
const [rows]: any = await DB.query(query, [[transactionIds], [transactionIds]]);
const channels = rows.map((row) => this.convertChannel(row));
return channels;
} catch (e) {
logger.err('$getChannelByTransactionId error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getChannelByClosingId(transactionId: string): Promise<any> {
try {
const query = `
SELECT
channels.*
FROM channels
WHERE channels.closing_transaction_id = ?
`;
const [rows]: any = await DB.query(query, [transactionId]);
if (rows.length > 0) {
rows[0].outputs = JSON.parse(rows[0].outputs);
return rows[0];
}
} catch (e) {
logger.err('$getChannelByClosingId error: ' + (e instanceof Error ? e.message : e));
// don't throw - this data isn't essential
}
}
public async $getChannelsByOpeningId(transactionId: string): Promise<any> {
try {
const query = `
SELECT
channels.*
FROM channels
WHERE channels.transaction_id = ?
`;
const [rows]: any = await DB.query(query, [transactionId]);
if (rows.length > 0) {
return rows.map(row => {
row.outputs = JSON.parse(row.outputs);
return row;
});
}
} catch (e) {
logger.err('$getChannelsByOpeningId error: ' + (e instanceof Error ? e.message : e));
// don't throw - this data isn't essential
}
}
public async $updateClosingInfo(channelInfo: { id: string, node1_closing_balance: number, node2_closing_balance: number, closed_by: string | null, closing_fee: number, outputs: ILightningApi.ForensicOutput[]}): Promise<void> {
try {
const query = `
UPDATE channels SET
node1_closing_balance = ?,
node2_closing_balance = ?,
closed_by = ?,
closing_fee = ?,
outputs = ?
WHERE channels.id = ?
`;
await DB.query<ResultSetHeader>(query, [
channelInfo.node1_closing_balance || 0,
channelInfo.node2_closing_balance || 0,
channelInfo.closed_by,
channelInfo.closing_fee || 0,
JSON.stringify(channelInfo.outputs),
channelInfo.id,
]);
} catch (e) {
logger.err('$updateClosingInfo error: ' + (e instanceof Error ? e.message : e));
// don't throw - this data isn't essential
}
}
public async $updateOpeningInfo(channelInfo: { id: string, node1_funding_balance: number, node2_funding_balance: number, funding_ratio: number, single_funded: boolean | void }): Promise<void> {
try {
const query = `
UPDATE channels SET
node1_funding_balance = ?,
node2_funding_balance = ?,
funding_ratio = ?,
single_funded = ?
WHERE channels.id = ?
`;
await DB.query<ResultSetHeader>(query, [
channelInfo.node1_funding_balance || 0,
channelInfo.node2_funding_balance || 0,
channelInfo.funding_ratio,
channelInfo.single_funded ? 1 : 0,
channelInfo.id,
]);
} catch (e) {
logger.err('$updateOpeningInfo error: ' + (e instanceof Error ? e.message : e));
// don't throw - this data isn't essential
}
}
public async $markChannelSourceChecked(id: string): Promise<void> {
try {
const query = `
UPDATE channels
SET source_checked = 1
WHERE id = ?
`;
await DB.query<ResultSetHeader>(query, [id]);
} catch (e) {
logger.err('$markChannelSourceChecked error: ' + (e instanceof Error ? e.message : e));
// don't throw - this data isn't essential
}
}
public async $getChannelsForNode(public_key: string, index: number, length: number, status: string): Promise<any[]> {
try {
let channelStatusFilter;
if (status === 'open') {
channelStatusFilter = '< 2';
} else if (status === 'active') {
channelStatusFilter = '= 1';
} else if (status === 'closed') {
channelStatusFilter = '= 2';
} else {
throw new Error('getChannelsForNode: Invalid status requested');
}
// Channels originating from node
let query = `
SELECT COALESCE(node2.alias, SUBSTRING(node2_public_key, 0, 20)) AS alias, COALESCE(node2.public_key, node2_public_key) AS public_key,
channels.status, channels.node1_fee_rate,
channels.capacity, channels.short_id, channels.id, channels.closing_reason,
UNIX_TIMESTAMP(closing_date) as closing_date, UNIX_TIMESTAMP(channels.updated_at) as updated_at
FROM channels
LEFT JOIN nodes AS node2 ON node2.public_key = channels.node2_public_key
WHERE node1_public_key = ? AND channels.status ${channelStatusFilter}
`;
const [channelsFromNode]: any = await DB.query(query, [public_key]);
// Channels incoming to node
query = `
SELECT COALESCE(node1.alias, SUBSTRING(node1_public_key, 0, 20)) AS alias, COALESCE(node1.public_key, node1_public_key) AS public_key,
channels.status, channels.node2_fee_rate,
channels.capacity, channels.short_id, channels.id, channels.closing_reason,
UNIX_TIMESTAMP(closing_date) as closing_date, UNIX_TIMESTAMP(channels.updated_at) as updated_at
FROM channels
LEFT JOIN nodes AS node1 ON node1.public_key = channels.node1_public_key
WHERE node2_public_key = ? AND channels.status ${channelStatusFilter}
`;
const [channelsToNode]: any = await DB.query(query, [public_key]);
let allChannels = channelsFromNode.concat(channelsToNode);
allChannels.sort((a, b) => {
if (status === 'closed') {
if (!b.closing_date && !a.closing_date) {
return (b.updated_at ?? 0) - (a.updated_at ?? 0);
} else {
return (b.closing_date ?? 0) - (a.closing_date ?? 0);
}
} else {
return b.capacity - a.capacity;
}
});
if (index >= 0) {
allChannels = allChannels.slice(index, index + length);
} else if (index === -1) { // Node channels tree chart
allChannels = allChannels.slice(0, 1000);
}
const channels: any[] = []
for (const row of allChannels) {
let channel;
if (index >= 0) {
const activeChannelsStats: any = await nodesApi.$getActiveChannelsStats(row.public_key);
channel = {
status: row.status,
closing_reason: row.closing_reason,
closing_date: row.closing_date,
capacity: row.capacity ?? 0,
short_id: row.short_id,
id: row.id,
fee_rate: row.node1_fee_rate ?? row.node2_fee_rate ?? 0,
node: {
alias: row.alias.length > 0 ? row.alias : row.public_key.slice(0, 20),
public_key: row.public_key,
channels: activeChannelsStats.active_channel_count ?? 0,
capacity: activeChannelsStats.capacity ?? 0,
}
};
} else if (index === -1) {
channel = {
capacity: row.capacity ?? 0,
short_id: row.short_id,
id: row.id,
node: {
alias: row.alias.length > 0 ? row.alias : row.public_key.slice(0, 20),
public_key: row.public_key,
}
};
}
channels.push(channel);
}
return channels;
} catch (e) {
logger.err('$getChannelsForNode error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getChannelsCountForNode(public_key: string, status: string): Promise<any> {
try {
// Default active and inactive channels
let statusQuery = '< 2';
// Closed channels only
if (status === 'closed') {
statusQuery = '= 2';
}
const query = `
SELECT COUNT(*) AS count
FROM channels
WHERE (node1_public_key = ? OR node2_public_key = ?)
AND status ${statusQuery}
`;
const [rows]: any = await DB.query(query, [public_key, public_key]);
return rows[0]['count'];
} catch (e) {
logger.err('$getChannelsForNode error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
private convertChannel(channel: any): any {
return {
'id': channel.id,
'short_id': channel.short_id,
'capacity': channel.capacity,
'transaction_id': channel.transaction_id,
'transaction_vout': channel.transaction_vout,
'closing_transaction_id': channel.closing_transaction_id,
'closing_fee': channel.closing_fee,
'closing_reason': channel.closing_reason,
'closing_date': channel.closing_date,
'updated_at': channel.updated_at,
'created': channel.created,
'status': channel.status,
'funding_ratio': channel.funding_ratio,
'closed_by': channel.closed_by,
'single_funded': !!channel.single_funded,
'node_left': {
'alias': channel.alias_left,
'public_key': channel.node1_public_key,
'channels': channel.channels_left,
'capacity': channel.capacity_left,
'base_fee_mtokens': channel.node1_base_fee_mtokens,
'cltv_delta': channel.node1_cltv_delta,
'fee_rate': channel.node1_fee_rate,
'is_disabled': channel.node1_is_disabled,
'max_htlc_mtokens': channel.node1_max_htlc_mtokens,
'min_htlc_mtokens': channel.node1_min_htlc_mtokens,
'updated_at': channel.node1_updated_at,
'longitude': channel.node1_longitude,
'latitude': channel.node1_latitude,
'funding_balance': channel.node1_funding_balance,
'closing_balance': channel.node1_closing_balance,
'initiated_close': channel.closed_by === channel.node1_public_key ? true : undefined,
},
'node_right': {
'alias': channel.alias_right,
'public_key': channel.node2_public_key,
'channels': channel.channels_right,
'capacity': channel.capacity_right,
'base_fee_mtokens': channel.node2_base_fee_mtokens,
'cltv_delta': channel.node2_cltv_delta,
'fee_rate': channel.node2_fee_rate,
'is_disabled': channel.node2_is_disabled,
'max_htlc_mtokens': channel.node2_max_htlc_mtokens,
'min_htlc_mtokens': channel.node2_min_htlc_mtokens,
'updated_at': channel.node2_updated_at,
'longitude': channel.node2_longitude,
'latitude': channel.node2_latitude,
'funding_balance': channel.node2_funding_balance,
'closing_balance': channel.node2_closing_balance,
'initiated_close': channel.closed_by === channel.node2_public_key ? true : undefined,
},
};
}
/**
* Save or update a channel present in the graph
*/
public async $saveChannel(channel: ILightningApi.Channel, status = 1): Promise<void> {
const [ txid, vout ] = channel.chan_point.split(':');
const policy1: Partial<ILightningApi.RoutingPolicy> = channel.node1_policy || {};
const policy2: Partial<ILightningApi.RoutingPolicy> = channel.node2_policy || {};
// https://github.com/mempool/mempool/issues/3006
if ((channel.last_update ?? 0) < 1514736061) { // January 1st 2018
channel.last_update = null;
}
if ((policy1.last_update ?? 0) < 1514736061) { // January 1st 2018
policy1.last_update = null;
}
if ((policy2.last_update ?? 0) < 1514736061) { // January 1st 2018
policy2.last_update = null;
}
const query = `INSERT INTO channels
(
id,
short_id,
capacity,
transaction_id,
transaction_vout,
updated_at,
status,
node1_public_key,
node1_base_fee_mtokens,
node1_cltv_delta,
node1_fee_rate,
node1_is_disabled,
node1_max_htlc_mtokens,
node1_min_htlc_mtokens,
node1_updated_at,
node2_public_key,
node2_base_fee_mtokens,
node2_cltv_delta,
node2_fee_rate,
node2_is_disabled,
node2_max_htlc_mtokens,
node2_min_htlc_mtokens,
node2_updated_at
)
VALUES (?, ?, ?, ?, ?, ?, ${status}, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
capacity = ?,
updated_at = ?,
status = ${status},
node1_public_key = ?,
node1_base_fee_mtokens = ?,
node1_cltv_delta = ?,
node1_fee_rate = ?,
node1_is_disabled = ?,
node1_max_htlc_mtokens = ?,
node1_min_htlc_mtokens = ?,
node1_updated_at = ?,
node2_public_key = ?,
node2_base_fee_mtokens = ?,
node2_cltv_delta = ?,
node2_fee_rate = ?,
node2_is_disabled = ?,
node2_max_htlc_mtokens = ?,
node2_min_htlc_mtokens = ?,
node2_updated_at = ?
;`;
await DB.query(query, [
Common.channelShortIdToIntegerId(channel.channel_id),
Common.channelIntegerIdToShortId(channel.channel_id),
channel.capacity,
txid,
vout,
Common.utcDateToMysql(channel.last_update),
channel.node1_pub,
policy1.fee_base_msat,
policy1.time_lock_delta,
policy1.fee_rate_milli_msat,
policy1.disabled,
policy1.max_htlc_msat,
policy1.min_htlc,
Common.utcDateToMysql(policy1.last_update),
channel.node2_pub,
policy2.fee_base_msat,
policy2.time_lock_delta,
policy2.fee_rate_milli_msat,
policy2.disabled,
policy2.max_htlc_msat,
policy2.min_htlc,
Common.utcDateToMysql(policy2.last_update),
channel.capacity,
Common.utcDateToMysql(channel.last_update),
channel.node1_pub,
policy1.fee_base_msat,
policy1.time_lock_delta,
policy1.fee_rate_milli_msat,
policy1.disabled,
policy1.max_htlc_msat,
policy1.min_htlc,
Common.utcDateToMysql(policy1.last_update),
channel.node2_pub,
policy2.fee_base_msat,
policy2.time_lock_delta,
policy2.fee_rate_milli_msat,
policy2.disabled,
policy2.max_htlc_msat,
policy2.min_htlc,
Common.utcDateToMysql(policy2.last_update)
]);
}
/**
* Set all channels not in `graphChannelsIds` as inactive (status = 0)
*/
public async $setChannelsInactive(graphChannelsIds: string[]): Promise<void> {
if (graphChannelsIds.length === 0) {
return;
}
try {
const result = await DB.query<ResultSetHeader>(`
UPDATE channels
SET status = 0
WHERE id NOT IN (
${graphChannelsIds.map(id => `"${id}"`).join(',')}
)
AND status != 2
`);
if (result[0].changedRows ?? 0 > 0) {
logger.debug(`Marked ${result[0].changedRows} channels as inactive because they are not in the graph`, logger.tags.ln);
}
} catch (e) {
logger.err('$setChannelsInactive() error: ' + (e instanceof Error ? e.message : e));
}
}
public async $getLatestChannelUpdateForNode(publicKey: string): Promise<number> {
try {
const query = `
SELECT MAX(UNIX_TIMESTAMP(updated_at)) as updated_at
FROM channels
WHERE node1_public_key = ?
`;
const [rows]: any[] = await DB.query(query, [publicKey]);
if (rows.length > 0) {
return rows[0].updated_at;
}
} catch (e) {
logger.err(`Can't getLatestChannelUpdateForNode for ${publicKey}. Reason ${e instanceof Error ? e.message : e}`);
}
return 0;
}
}
export default new ChannelsApi();

View File

@@ -0,0 +1,141 @@
import config from '../../config';
import { Application, Request, Response } from 'express';
import channelsApi from './channels.api';
class ChannelsRoutes {
constructor() { }
public initRoutes(app: Application) {
app
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/channels/txids', this.$getChannelsByTransactionIds)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/channels/search/:search', this.$searchChannelsById)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/channels/:short_id', this.$getChannel)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/channels', this.$getChannelsForNode)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/penalties', this.$getPenaltyClosedChannels)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/channels-geo', this.$getAllChannelsGeo)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/channels-geo/:publicKey', this.$getAllChannelsGeo)
;
}
private async $searchChannelsById(req: Request, res: Response) {
try {
const channels = await channelsApi.$searchChannelsById(req.params.search);
res.json(channels);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getChannel(req: Request, res: Response) {
try {
const channel = await channelsApi.$getChannel(req.params.short_id);
if (!channel) {
res.status(404).send('Channel not found');
return;
}
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(channel);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getChannelsForNode(req: Request, res: Response) {
try {
if (typeof req.query.public_key !== 'string') {
res.status(400).send('Missing parameter: public_key');
return;
}
const index = parseInt(typeof req.query.index === 'string' ? req.query.index : '0', 10) || 0;
const status: string = typeof req.query.status === 'string' ? req.query.status : '';
if (index < -1) {
res.status(400).send('Invalid index');
return;
}
if (['open', 'active', 'closed'].includes(status) === false) {
res.status(400).send('Invalid status');
return;
}
const channels = await channelsApi.$getChannelsForNode(req.query.public_key, index, 10, status);
const channelsCount = await channelsApi.$getChannelsCountForNode(req.query.public_key, status);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.header('X-Total-Count', channelsCount.toString());
res.json(channels);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getChannelsByTransactionIds(req: Request, res: Response): Promise<void> {
try {
if (!Array.isArray(req.query.txId)) {
res.status(400).send('Not an array');
return;
}
const txIds: string[] = [];
for (const _txId in req.query.txId) {
if (typeof req.query.txId[_txId] === 'string') {
txIds.push(req.query.txId[_txId].toString());
}
}
const channels = await channelsApi.$getChannelsByTransactionId(txIds);
const result: any[] = [];
for (const txid of txIds) {
const inputs: any = {};
const outputs: any = {};
// Assuming that we only have one lightning close input in each transaction. This may not be true in the future
const foundChannelsFromInput = channels.find((channel) => channel.closing_transaction_id === txid);
if (foundChannelsFromInput) {
inputs[0] = foundChannelsFromInput;
}
const foundChannelsFromOutputs = channels.filter((channel) => channel.transaction_id === txid);
for (const output of foundChannelsFromOutputs) {
outputs[output.transaction_vout] = output;
}
result.push({
inputs,
outputs,
});
}
res.json(result);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getPenaltyClosedChannels(req: Request, res: Response): Promise<void> {
try {
const channels = await channelsApi.$getPenaltyClosedChannels();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(channels);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getAllChannelsGeo(req: Request, res: Response) {
try {
const style: string = typeof req.query.style === 'string' ? req.query.style : '';
const channels = await channelsApi.$getAllChannelsGeo(req.params?.publicKey, style);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(channels);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
}
export default new ChannelsRoutes();

View File

@@ -0,0 +1,58 @@
import config from '../../config';
import { Application, Request, Response } from 'express';
import nodesApi from './nodes.api';
import channelsApi from './channels.api';
import statisticsApi from './statistics.api';
class GeneralLightningRoutes {
constructor() { }
public initRoutes(app: Application) {
app
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/search', this.$searchNodesAndChannels)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/statistics/latest', this.$getGeneralStats)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/statistics/:interval', this.$getStatistics)
;
}
private async $searchNodesAndChannels(req: Request, res: Response) {
if (typeof req.query.searchText !== 'string') {
res.status(400).send('Missing parameter: searchText');
return;
}
try {
const nodes = await nodesApi.$searchNodeByPublicKeyOrAlias(req.query.searchText);
const channels = await channelsApi.$searchChannelsById(req.query.searchText);
res.json({
nodes: nodes,
channels: channels,
});
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getStatistics(req: Request, res: Response) {
try {
const statistics = await statisticsApi.$getStatistics(req.params.interval);
const statisticsCount = await statisticsApi.$getStatisticsCount();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.header('X-total-count', statisticsCount.toString());
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(statistics);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getGeneralStats(req: Request, res: Response) {
try {
const statistics = await statisticsApi.$getLatestStatistics();
res.json(statistics);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
}
export default new GeneralLightningRoutes();

View File

@@ -0,0 +1,757 @@
import logger from '../../logger';
import DB from '../../database';
import { ResultSetHeader } from 'mysql2';
import { ILightningApi } from '../lightning/lightning-api.interface';
import { ITopNodesPerCapacity, ITopNodesPerChannels } from '../../mempool.interfaces';
import { bin2hex } from '../../utils/format';
class NodesApi {
public async $getWorldNodes(): Promise<any> {
try {
let query = `
SELECT nodes.public_key as publicKey, IF(nodes.alias = '', SUBSTRING(nodes.public_key, 1, 20), alias) as alias,
CAST(COALESCE(nodes.capacity, 0) as INT) as capacity,
CAST(COALESCE(nodes.channels, 0) as INT) as channels,
nodes.longitude, nodes.latitude,
geo_names_country.names as country, geo_names_iso.names as isoCode
FROM nodes
JOIN geo_names geo_names_country ON geo_names_country.id = nodes.country_id AND geo_names_country.type = 'country'
JOIN geo_names geo_names_iso ON geo_names_iso.id = nodes.country_id AND geo_names_iso.type = 'country_iso_code'
WHERE status = 1 AND nodes.as_number IS NOT NULL
ORDER BY capacity
`;
const [nodes]: any[] = await DB.query(query);
for (let i = 0; i < nodes.length; ++i) {
nodes[i].country = JSON.parse(nodes[i].country);
}
query = `
SELECT MAX(nodes.capacity) as maxLiquidity, MAX(nodes.channels) as maxChannels
FROM nodes
WHERE status = 1 AND nodes.as_number IS NOT NULL
`;
const [maximums]: any[] = await DB.query(query);
return {
maxLiquidity: maximums[0].maxLiquidity,
maxChannels: maximums[0].maxChannels,
nodes: nodes.map(node => [
node.longitude, node.latitude,
node.publicKey, node.alias, node.capacity, node.channels,
node.country, node.isoCode
])
};
} catch (e) {
logger.err(`Can't get world nodes list. Reason: ${e instanceof Error ? e.message : e}`);
}
}
public async $getNode(public_key: string): Promise<any> {
try {
// General info
let query = `
SELECT public_key, alias, UNIX_TIMESTAMP(first_seen) AS first_seen,
UNIX_TIMESTAMP(updated_at) AS updated_at, color, sockets as sockets,
as_number, city_id, country_id, subdivision_id, longitude, latitude,
geo_names_iso.names as iso_code, geo_names_as.names as as_organization, geo_names_city.names as city,
geo_names_country.names as country, geo_names_subdivision.names as subdivision,
features
FROM nodes
LEFT JOIN geo_names geo_names_as on geo_names_as.id = as_number
LEFT JOIN geo_names geo_names_city on geo_names_city.id = city_id
LEFT JOIN geo_names geo_names_subdivision on geo_names_subdivision.id = subdivision_id
LEFT JOIN geo_names geo_names_country on geo_names_country.id = country_id
LEFT JOIN geo_names geo_names_iso ON geo_names_iso.id = nodes.country_id AND geo_names_iso.type = 'country_iso_code'
WHERE public_key = ?
`;
let [rows]: any[] = await DB.query(query, [public_key]);
if (rows.length === 0) {
throw new Error(`This node does not exist, or our node is not seeing it yet`);
}
const node = rows[0];
node.as_organization = JSON.parse(node.as_organization);
node.subdivision = JSON.parse(node.subdivision);
node.city = JSON.parse(node.city);
node.country = JSON.parse(node.country);
// Features
node.features = JSON.parse(node.features);
node.featuresBits = null;
if (node.features) {
let maxBit = 0;
for (const feature of node.features) {
maxBit = Math.max(maxBit, feature.bit);
}
maxBit = Math.ceil(maxBit / 4) * 4 - 1;
node.featuresBits = new Array(maxBit + 1).fill(0);
for (const feature of node.features) {
node.featuresBits[feature.bit] = 1;
}
node.featuresBits = bin2hex(node.featuresBits.reverse().join(''));
}
// Active channels and capacity
const activeChannelsStats: any = await this.$getActiveChannelsStats(public_key);
node.active_channel_count = activeChannelsStats.active_channel_count ?? 0;
node.capacity = activeChannelsStats.capacity ?? 0;
// Opened channels count
query = `
SELECT count(short_id) as opened_channel_count
FROM channels
WHERE status != 2 AND (channels.node1_public_key = ? OR channels.node2_public_key = ?)
`;
[rows] = await DB.query(query, [public_key, public_key]);
node.opened_channel_count = 0;
if (rows.length > 0) {
node.opened_channel_count = rows[0].opened_channel_count;
}
// Closed channels count
query = `
SELECT count(short_id) as closed_channel_count
FROM channels
WHERE status = 2 AND (channels.node1_public_key = ? OR channels.node2_public_key = ?)
`;
[rows] = await DB.query(query, [public_key, public_key]);
node.closed_channel_count = 0;
if (rows.length > 0) {
node.closed_channel_count = rows[0].closed_channel_count;
}
// Custom records
query = `
SELECT type, payload
FROM nodes_records
WHERE public_key = ?
`;
[rows] = await DB.query(query, [public_key]);
node.custom_records = {};
for (const record of rows) {
node.custom_records[record.type] = Buffer.from(record.payload, 'binary').toString('hex');
}
return node;
} catch (e) {
logger.err(`Cannot get node information for ${public_key}. Reason: ${(e instanceof Error ? e.message : e)}`);
throw e;
}
}
public async $getActiveChannelsStats(node_public_key: string): Promise<unknown> {
const query = `
SELECT count(short_id) as active_channel_count, sum(capacity) as capacity
FROM channels
WHERE status = 1 AND (channels.node1_public_key = ? OR channels.node2_public_key = ?)
`;
const [rows]: any[] = await DB.query(query, [node_public_key, node_public_key]);
if (rows.length > 0) {
return {
active_channel_count: rows[0].active_channel_count,
capacity: rows[0].capacity
};
} else {
return null;
}
}
public async $getFeeHistogram(node_public_key: string): Promise<unknown> {
try {
const inQuery = `
SELECT CASE WHEN fee_rate <= 10.0 THEN CEIL(fee_rate)
WHEN (fee_rate > 10.0 and fee_rate <= 100.0) THEN CEIL(fee_rate / 10.0) * 10.0
WHEN (fee_rate > 100.0 and fee_rate <= 1000.0) THEN CEIL(fee_rate / 100.0) * 100.0
WHEN fee_rate > 1000.0 THEN CEIL(fee_rate / 1000.0) * 1000.0
END as bucket,
count(short_id) as count,
sum(capacity) as capacity
FROM (
SELECT CASE WHEN node1_public_key = ? THEN node2_fee_rate WHEN node2_public_key = ? THEN node1_fee_rate END as fee_rate,
short_id as short_id,
capacity as capacity
FROM channels
WHERE status = 1 AND (channels.node1_public_key = ? OR channels.node2_public_key = ?)
) as fee_rate_table
GROUP BY bucket;
`;
const [inRows]: any[] = await DB.query(inQuery, [node_public_key, node_public_key, node_public_key, node_public_key]);
const outQuery = `
SELECT CASE WHEN fee_rate <= 10.0 THEN CEIL(fee_rate)
WHEN (fee_rate > 10.0 and fee_rate <= 100.0) THEN CEIL(fee_rate / 10.0) * 10.0
WHEN (fee_rate > 100.0 and fee_rate <= 1000.0) THEN CEIL(fee_rate / 100.0) * 100.0
WHEN fee_rate > 1000.0 THEN CEIL(fee_rate / 1000.0) * 1000.0
END as bucket,
count(short_id) as count,
sum(capacity) as capacity
FROM (
SELECT CASE WHEN node1_public_key = ? THEN node1_fee_rate WHEN node2_public_key = ? THEN node2_fee_rate END as fee_rate,
short_id as short_id,
capacity as capacity
FROM channels
WHERE status = 1 AND (channels.node1_public_key = ? OR channels.node2_public_key = ?)
) as fee_rate_table
GROUP BY bucket;
`;
const [outRows]: any[] = await DB.query(outQuery, [node_public_key, node_public_key, node_public_key, node_public_key]);
return {
incoming: inRows.length > 0 ? inRows : [],
outgoing: outRows.length > 0 ? outRows : [],
};
} catch (e) {
logger.err(`Cannot get node fee distribution for ${node_public_key}. Reason: ${(e instanceof Error ? e.message : e)}`);
throw e;
}
}
public async $getAllNodes(): Promise<any> {
try {
const query = `SELECT * FROM nodes`;
const [rows]: any = await DB.query(query);
return rows;
} catch (e) {
logger.err('$getAllNodes error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getNodeStats(public_key: string): Promise<any> {
try {
const query = `
SELECT UNIX_TIMESTAMP(added) AS added, capacity, channels
FROM node_stats
WHERE public_key = ?
ORDER BY added DESC
`;
const [rows]: any = await DB.query(query, [public_key]);
return rows;
} catch (e) {
logger.err('$getNodeStats error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getTopCapacityNodes(full: boolean): Promise<ITopNodesPerCapacity[]> {
try {
let rows: any;
let query: string;
if (full === false) {
query = `
SELECT nodes.public_key AS publicKey, IF(nodes.alias = '', SUBSTRING(nodes.public_key, 1, 20), alias) as alias,
nodes.capacity
FROM nodes
ORDER BY capacity DESC
LIMIT 6
`;
[rows] = await DB.query(query);
} else {
query = `
SELECT nodes.public_key AS publicKey, IF(nodes.alias = '', SUBSTRING(nodes.public_key, 1, 20), alias) as alias,
CAST(COALESCE(nodes.capacity, 0) as INT) as capacity,
CAST(COALESCE(nodes.channels, 0) as INT) as channels,
UNIX_TIMESTAMP(nodes.first_seen) as firstSeen, UNIX_TIMESTAMP(nodes.updated_at) as updatedAt,
geo_names_city.names as city, geo_names_country.names as country,
geo_names_iso.names as iso_code, geo_names_subdivision.names as subdivision
FROM nodes
LEFT JOIN geo_names geo_names_country ON geo_names_country.id = nodes.country_id AND geo_names_country.type = 'country'
LEFT JOIN geo_names geo_names_city ON geo_names_city.id = nodes.city_id AND geo_names_city.type = 'city'
LEFT JOIN geo_names geo_names_iso ON geo_names_iso.id = nodes.country_id AND geo_names_iso.type = 'country_iso_code'
LEFT JOIN geo_names geo_names_subdivision on geo_names_subdivision.id = nodes.subdivision_id AND geo_names_subdivision.type = 'division'
ORDER BY capacity DESC
LIMIT 100
`;
[rows] = await DB.query(query);
for (let i = 0; i < rows.length; ++i) {
rows[i].country = JSON.parse(rows[i].country);
rows[i].city = JSON.parse(rows[i].city);
}
}
return rows;
} catch (e) {
logger.err('$getTopCapacityNodes error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getTopChannelsNodes(full: boolean): Promise<ITopNodesPerChannels[]> {
try {
let rows: any;
let query: string;
if (full === false) {
query = `
SELECT
nodes.public_key as publicKey,
IF(nodes.alias = '', SUBSTRING(nodes.public_key, 1, 20), alias) as alias,
nodes.channels,
geo_names_city.names as city, geo_names_country.names as country,
geo_names_iso.names as iso_code, geo_names_subdivision.names as subdivision
FROM nodes
LEFT JOIN geo_names geo_names_country ON geo_names_country.id = nodes.country_id AND geo_names_country.type = 'country'
LEFT JOIN geo_names geo_names_city ON geo_names_city.id = nodes.city_id AND geo_names_city.type = 'city'
LEFT JOIN geo_names geo_names_iso ON geo_names_iso.id = nodes.country_id AND geo_names_iso.type = 'country_iso_code'
LEFT JOIN geo_names geo_names_subdivision on geo_names_subdivision.id = nodes.subdivision_id AND geo_names_subdivision.type = 'division'
ORDER BY channels DESC
LIMIT 6;
`;
[rows] = await DB.query(query);
for (let i = 0; i < rows.length; ++i) {
rows[i].country = JSON.parse(rows[i].country);
rows[i].city = JSON.parse(rows[i].city);
}
} else {
query = `
SELECT nodes.public_key AS publicKey, IF(nodes.alias = '', SUBSTRING(nodes.public_key, 1, 20), alias) as alias,
CAST(COALESCE(nodes.channels, 0) as INT) as channels,
CAST(COALESCE(nodes.capacity, 0) as INT) as capacity,
UNIX_TIMESTAMP(nodes.first_seen) as firstSeen, UNIX_TIMESTAMP(nodes.updated_at) as updatedAt,
geo_names_city.names as city, geo_names_country.names as country,
geo_names_iso.names as iso_code, geo_names_subdivision.names as subdivision
FROM nodes
LEFT JOIN geo_names geo_names_country ON geo_names_country.id = nodes.country_id AND geo_names_country.type = 'country'
LEFT JOIN geo_names geo_names_city ON geo_names_city.id = nodes.city_id AND geo_names_city.type = 'city'
LEFT JOIN geo_names geo_names_iso ON geo_names_iso.id = nodes.country_id AND geo_names_iso.type = 'country_iso_code'
LEFT JOIN geo_names geo_names_subdivision on geo_names_subdivision.id = nodes.subdivision_id AND geo_names_subdivision.type = 'division'
ORDER BY channels DESC
LIMIT 100
`;
[rows] = await DB.query(query);
for (let i = 0; i < rows.length; ++i) {
rows[i].country = JSON.parse(rows[i].country);
rows[i].city = JSON.parse(rows[i].city);
}
}
return rows;
} catch (e) {
logger.err('$getTopChannelsNodes error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getOldestNodes(full: boolean): Promise<ITopNodesPerChannels[]> {
try {
let [rows]: any[] = await DB.query('SELECT UNIX_TIMESTAMP(MAX(added)) as maxAdded FROM node_stats');
const latestDate = rows[0].maxAdded;
let query: string;
if (full === false) {
query = `
SELECT nodes.public_key, IF(nodes.alias = '', SUBSTRING(nodes.public_key, 1, 20), alias) as alias,
node_stats.channels
FROM node_stats
JOIN nodes ON nodes.public_key = node_stats.public_key
WHERE added = FROM_UNIXTIME(${latestDate})
ORDER BY first_seen
LIMIT 100;
`;
[rows] = await DB.query(query);
} else {
query = `
SELECT node_stats.public_key AS publicKey, IF(nodes.alias = '', SUBSTRING(node_stats.public_key, 1, 20), alias) as alias,
CAST(COALESCE(node_stats.channels, 0) as INT) as channels,
CAST(COALESCE(node_stats.capacity, 0) as INT) as capacity,
UNIX_TIMESTAMP(nodes.first_seen) as firstSeen, UNIX_TIMESTAMP(nodes.updated_at) as updatedAt,
geo_names_city.names as city, geo_names_country.names as country,
geo_names_iso.names as iso_code, geo_names_subdivision.names as subdivision
FROM node_stats
RIGHT JOIN nodes ON nodes.public_key = node_stats.public_key
LEFT JOIN geo_names geo_names_country ON geo_names_country.id = nodes.country_id AND geo_names_country.type = 'country'
LEFT JOIN geo_names geo_names_city ON geo_names_city.id = nodes.city_id AND geo_names_city.type = 'city'
LEFT JOIN geo_names geo_names_iso ON geo_names_iso.id = nodes.country_id AND geo_names_iso.type = 'country_iso_code'
LEFT JOIN geo_names geo_names_subdivision on geo_names_subdivision.id = nodes.subdivision_id AND geo_names_subdivision.type = 'division'
WHERE added = FROM_UNIXTIME(${latestDate})
ORDER BY first_seen
LIMIT 100
`;
[rows] = await DB.query(query);
for (let i = 0; i < rows.length; ++i) {
rows[i].country = JSON.parse(rows[i].country);
rows[i].city = JSON.parse(rows[i].city);
}
}
return rows;
} catch (e) {
logger.err('$getTopChannelsNodes error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $searchNodeByPublicKeyOrAlias(search: string) {
try {
const publicKeySearch = search.replace(/[^a-zA-Z0-9]/g, '') + '%';
const aliasSearch = search
.replace(/[-_.]/g, ' ') // Replace all -_. characters with empty space. Eg: "ln.nicehash" becomes "ln nicehash".
.replace(/[^a-zA-Z0-9 ]/g, '') // Remove all special characters and keep just A to Z, 0 to 9.
.split(' ')
.filter(key => key.length)
.map((search) => '+' + search + '*').join(' ');
// %keyword% is wildcard search and can't be indexed so it's slower as the node database grow. keyword% can be indexed but then you can't search for "Nicehash" and get result for ln.nicehash.com. So we use fulltext index for words "ln, nicehash, com" and nicehash* will find it instantly.
const query = `SELECT public_key, alias, capacity, channels, status FROM nodes WHERE public_key LIKE ? OR MATCH alias_search AGAINST (? IN BOOLEAN MODE) ORDER BY capacity DESC LIMIT 10`;
const [rows]: any = await DB.query(query, [publicKeySearch, aliasSearch]);
return rows;
} catch (e) {
logger.err('$searchNodeByPublicKeyOrAlias error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getNodesISPRanking() {
try {
let query = '';
// List all channels and the two linked ISP
query = `
SELECT short_id, channels.capacity,
channels.node1_public_key AS node1PublicKey, isp1.names AS isp1, isp1.id as isp1ID,
channels.node2_public_key AS node2PublicKey, isp2.names AS isp2, isp2.id as isp2ID
FROM channels
JOIN nodes node1 ON node1.public_key = channels.node1_public_key
JOIN nodes node2 ON node2.public_key = channels.node2_public_key
JOIN geo_names isp1 ON isp1.id = node1.as_number
JOIN geo_names isp2 ON isp2.id = node2.as_number
WHERE channels.status = 1
ORDER BY short_id DESC
`;
const [channelsIsp]: any = await DB.query(query);
// Sum channels capacity and node count per ISP
const ispList = {};
for (const channel of channelsIsp) {
const isp1 = JSON.parse(channel.isp1);
const isp2 = JSON.parse(channel.isp2);
if (!ispList[isp1]) {
ispList[isp1] = {
ids: [channel.isp1ID],
capacity: 0,
channels: 0,
nodes: {},
};
} else if (ispList[isp1].ids.includes(channel.isp1ID) === false) {
ispList[isp1].ids.push(channel.isp1ID);
}
if (!ispList[isp2]) {
ispList[isp2] = {
ids: [channel.isp2ID],
capacity: 0,
channels: 0,
nodes: {},
};
} else if (ispList[isp2].ids.includes(channel.isp2ID) === false) {
ispList[isp2].ids.push(channel.isp2ID);
}
ispList[isp1].capacity += channel.capacity;
ispList[isp1].channels += 1;
ispList[isp1].nodes[channel.node1PublicKey] = true;
ispList[isp2].capacity += channel.capacity;
ispList[isp2].channels += 1;
ispList[isp2].nodes[channel.node2PublicKey] = true;
}
const ispRanking: any[] = [];
for (const isp of Object.keys(ispList)) {
ispRanking.push([
ispList[isp].ids.sort((a, b) => a - b).join(','),
isp,
ispList[isp].capacity,
ispList[isp].channels,
Object.keys(ispList[isp].nodes).length,
]);
}
// Total active channels capacity
query = `SELECT SUM(capacity) AS capacity FROM channels WHERE status = 1`;
const [totalCapacity]: any = await DB.query(query);
// Get the total capacity of all channels which have at least one node on clearnet
query = `
SELECT SUM(capacity) as capacity
FROM (
SELECT capacity, GROUP_CONCAT(socket1.type, socket2.type) as networks
FROM channels
JOIN nodes_sockets socket1 ON node1_public_key = socket1.public_key
JOIN nodes_sockets socket2 ON node2_public_key = socket2.public_key
AND channels.status = 1
GROUP BY short_id
) channels_tmp
WHERE channels_tmp.networks LIKE '%ipv%'
`;
const [clearnetCapacity]: any = await DB.query(query);
// Get the total capacity of all channels which have both nodes on Tor
query = `
SELECT SUM(capacity) as capacity
FROM (
SELECT capacity, GROUP_CONCAT(socket1.type, socket2.type) as networks
FROM channels
JOIN nodes_sockets socket1 ON node1_public_key = socket1.public_key
JOIN nodes_sockets socket2 ON node2_public_key = socket2.public_key
AND channels.status = 1
GROUP BY short_id
) channels_tmp
WHERE channels_tmp.networks NOT LIKE '%ipv%' AND
channels_tmp.networks NOT LIKE '%dns%' AND
channels_tmp.networks NOT LIKE '%websocket%'
`;
const [torCapacity]: any = await DB.query(query);
const clearnetCapacityValue = parseInt(clearnetCapacity[0].capacity, 10);
const torCapacityValue = parseInt(torCapacity[0].capacity, 10);
const unknownCapacityValue = parseInt(totalCapacity[0].capacity) - clearnetCapacityValue - torCapacityValue;
return {
clearnetCapacity: clearnetCapacityValue,
torCapacity: torCapacityValue,
unknownCapacity: unknownCapacityValue,
ispRanking: ispRanking,
};
} catch (e) {
logger.err(`Cannot get LN ISP ranking. Reason: ${e instanceof Error ? e.message : e}`);
throw e;
}
}
public async $getNodesPerCountry(countryId: string) {
try {
const query = `
SELECT nodes.public_key, CAST(COALESCE(nodes.capacity, 0) as INT) as capacity, CAST(COALESCE(nodes.channels, 0) as INT) as channels,
nodes.alias, UNIX_TIMESTAMP(nodes.first_seen) as first_seen, UNIX_TIMESTAMP(nodes.updated_at) as updated_at,
geo_names_city.names as city, geo_names_country.names as country,
geo_names_iso.names as iso_code, geo_names_subdivision.names as subdivision,
nodes.longitude, nodes.latitude, nodes.as_number, geo_names_isp.names as isp
FROM nodes
LEFT JOIN geo_names geo_names_country ON geo_names_country.id = nodes.country_id AND geo_names_country.type = 'country'
LEFT JOIN geo_names geo_names_city ON geo_names_city.id = nodes.city_id AND geo_names_city.type = 'city'
LEFT JOIN geo_names geo_names_iso ON geo_names_iso.id = nodes.country_id AND geo_names_iso.type = 'country_iso_code'
LEFT JOIN geo_names geo_names_subdivision on geo_names_subdivision.id = nodes.subdivision_id AND geo_names_subdivision.type = 'division'
LEFT JOIN geo_names geo_names_isp on geo_names_isp.id = nodes.as_number AND geo_names_isp.type = 'as_organization'
WHERE geo_names_country.id = ?
ORDER BY capacity DESC
`;
const [rows]: any = await DB.query(query, [countryId]);
for (let i = 0; i < rows.length; ++i) {
rows[i].country = JSON.parse(rows[i].country);
rows[i].city = JSON.parse(rows[i].city);
rows[i].subdivision = JSON.parse(rows[i].subdivision);
rows[i].isp = JSON.parse(rows[i].isp);
}
return rows;
} catch (e) {
logger.err(`Cannot get nodes for country id ${countryId}. Reason: ${e instanceof Error ? e.message : e}`);
throw e;
}
}
public async $getNodesPerISP(ISPId: string) {
try {
let query = `
SELECT channels.node1_public_key AS node1PublicKey, isp1.id as isp1ID,
channels.node2_public_key AS node2PublicKey, isp2.id as isp2ID
FROM channels
JOIN nodes node1 ON node1.public_key = channels.node1_public_key
JOIN nodes node2 ON node2.public_key = channels.node2_public_key
JOIN geo_names isp1 ON isp1.id = node1.as_number
JOIN geo_names isp2 ON isp2.id = node2.as_number
WHERE channels.status = 1 AND (node1.as_number IN (?) OR node2.as_number IN (?))
ORDER BY short_id DESC
`;
const IPSIds = ISPId.split(',');
const [rows]: any = await DB.query(query, [IPSIds, IPSIds]);
if (!rows || rows.length === 0) {
return [];
}
const nodes = {};
const intISPIds: number[] = [];
for (const ispId of IPSIds) {
intISPIds.push(parseInt(ispId, 10));
}
for (const channel of rows) {
if (intISPIds.includes(channel.isp1ID)) {
nodes[channel.node1PublicKey] = true;
}
if (intISPIds.includes(channel.isp2ID)) {
nodes[channel.node2PublicKey] = true;
}
}
query = `
SELECT nodes.public_key, CAST(COALESCE(nodes.capacity, 0) as INT) as capacity, CAST(COALESCE(nodes.channels, 0) as INT) as channels,
nodes.alias, UNIX_TIMESTAMP(nodes.first_seen) as first_seen, UNIX_TIMESTAMP(nodes.updated_at) as updated_at,
geo_names_city.names as city, geo_names_country.names as country,
geo_names_iso.names as iso_code, geo_names_subdivision.names as subdivision,
nodes.longitude, nodes.latitude
FROM nodes
LEFT JOIN geo_names geo_names_country ON geo_names_country.id = nodes.country_id AND geo_names_country.type = 'country'
LEFT JOIN geo_names geo_names_city ON geo_names_city.id = nodes.city_id AND geo_names_city.type = 'city'
LEFT JOIN geo_names geo_names_iso ON geo_names_iso.id = nodes.country_id AND geo_names_iso.type = 'country_iso_code'
LEFT JOIN geo_names geo_names_subdivision on geo_names_subdivision.id = nodes.subdivision_id AND geo_names_subdivision.type = 'division'
WHERE nodes.public_key IN (?)
ORDER BY capacity DESC
`;
const [rows2]: any = await DB.query(query, [Object.keys(nodes)]);
for (let i = 0; i < rows2.length; ++i) {
rows2[i].country = JSON.parse(rows2[i].country);
rows2[i].city = JSON.parse(rows2[i].city);
rows2[i].subdivision = JSON.parse(rows2[i].subdivision);
}
return rows2;
} catch (e) {
logger.err(`Cannot get nodes for ISP id ${ISPId}. Reason: ${e instanceof Error ? e.message : e}`);
throw e;
}
}
public async $getNodesCountries() {
try {
let query = `SELECT geo_names.names as names, geo_names_iso.names as iso_code, COUNT(DISTINCT nodes.public_key) as nodesCount, SUM(capacity) as capacity
FROM nodes
JOIN geo_names ON geo_names.id = nodes.country_id AND geo_names.type = 'country'
JOIN geo_names geo_names_iso ON geo_names_iso.id = nodes.country_id AND geo_names_iso.type = 'country_iso_code'
GROUP BY country_id
ORDER BY COUNT(DISTINCT nodes.public_key) DESC
`;
const [nodesCountPerCountry]: any = await DB.query(query);
query = `SELECT COUNT(*) as total FROM nodes WHERE country_id IS NOT NULL`;
const [nodesWithAS]: any = await DB.query(query);
const nodesPerCountry: any[] = [];
for (const country of nodesCountPerCountry) {
nodesPerCountry.push({
name: JSON.parse(country.names),
iso: country.iso_code,
count: country.nodesCount,
share: Math.floor(country.nodesCount / nodesWithAS[0].total * 10000) / 100,
capacity: country.capacity,
})
}
return nodesPerCountry;
} catch (e) {
logger.err(`Cannot get nodes grouped by AS. Reason: ${e instanceof Error ? e.message : e}`);
throw e;
}
}
/**
* Save or update a node present in the graph
*/
public async $saveNode(node: ILightningApi.Node): Promise<void> {
try {
// https://github.com/mempool/mempool/issues/3006
if ((node.last_update ?? 0) < 1514736061) { // January 1st 2018
node.last_update = null;
}
const uniqueAddr = [...new Set(node.addresses?.map(a => a.addr))];
const formattedSockets = (uniqueAddr.join(',')) ?? '';
const query = `INSERT INTO nodes(
public_key,
first_seen,
updated_at,
alias,
alias_search,
color,
sockets,
status,
features
)
VALUES (?, NOW(), FROM_UNIXTIME(?), ?, ?, ?, ?, 1, ?)
ON DUPLICATE KEY UPDATE
updated_at = FROM_UNIXTIME(?),
alias = ?,
alias_search = ?,
color = ?,
sockets = ?,
status = 1,
features = ?
`;
await DB.query(query, [
node.pub_key,
node.last_update,
node.alias,
this.aliasToSearchText(node.alias),
node.color,
formattedSockets,
JSON.stringify(node.features),
node.last_update,
node.alias,
this.aliasToSearchText(node.alias),
node.color,
formattedSockets,
JSON.stringify(node.features),
]);
} catch (e) {
logger.err('$saveNode() error: ' + (e instanceof Error ? e.message : e));
}
}
/**
* Update node sockets
*/
public async $updateNodeSockets(publicKey: string, sockets: {network: string; addr: string}[]): Promise<void> {
const uniqueAddr = [...new Set(sockets.map(a => a.addr))];
const formattedSockets = (uniqueAddr.join(',')) ?? '';
try {
await DB.query(`UPDATE nodes SET sockets = ? WHERE public_key = ?`, [formattedSockets, publicKey]);
} catch (e) {
logger.err(`Cannot update node sockets for ${publicKey}. Reason: ${e instanceof Error ? e.message : e}`);
}
}
/**
* Set all nodes not in `nodesPubkeys` as inactive (status = 0)
*/
public async $setNodesInactive(graphNodesPubkeys: string[]): Promise<void> {
if (graphNodesPubkeys.length === 0) {
return;
}
try {
const result = await DB.query<ResultSetHeader>(`
UPDATE nodes
SET status = 0
WHERE public_key NOT IN (
${graphNodesPubkeys.map(pubkey => `"${pubkey}"`).join(',')}
)
`);
if (result[0].changedRows ?? 0 > 0) {
logger.debug(`Marked ${result[0].changedRows} nodes as inactive because they are not in the graph`, logger.tags.ln);
}
} catch (e) {
logger.err('$setNodesInactive() error: ' + (e instanceof Error ? e.message : e));
}
}
private aliasToSearchText(str: string): string {
return str.replace(/[-_.]/g, ' ').replace(/[^a-zA-Z0-9 ]/g, '');
}
}
export default new NodesApi();

View File

@@ -0,0 +1,382 @@
import config from '../../config';
import { Application, Request, Response } from 'express';
import nodesApi from './nodes.api';
import DB from '../../database';
import { INodesRanking } from '../../mempool.interfaces';
class NodesRoutes {
constructor() { }
public initRoutes(app: Application) {
app
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/world', this.$getWorldNodes)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/country/:country', this.$getNodesPerCountry)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/search/:search', this.$searchNode)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/isp-ranking', this.$getISPRanking)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/isp/:isp', this.$getNodesPerISP)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/countries', this.$getNodesCountries)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/rankings', this.$getNodesRanking)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/rankings/liquidity', this.$getTopNodesByCapacity)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/rankings/connectivity', this.$getTopNodesByChannels)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/rankings/age', this.$getOldestNodes)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/:public_key/statistics', this.$getHistoricalNodeStats)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/:public_key/fees/histogram', this.$getFeeHistogram)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/:public_key', this.$getNode)
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/group/:name', this.$getNodeGroup)
;
}
private async $searchNode(req: Request, res: Response) {
try {
const nodes = await nodesApi.$searchNodeByPublicKeyOrAlias(req.params.search);
res.json(nodes);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getNodeGroup(req: Request, res: Response) {
try {
let nodesList;
let nodes: any[] = [];
switch (config.MEMPOOL.NETWORK) {
case 'testnet':
nodesList = [
'0259db43b4e4ac0ff12a805f2d81e521253ba2317f6739bc611d8e2fa156d64256',
'0352b9944b9a52bd2116c91f1ba70c4ef851ac5ba27e1b20f1d92da3ade010dd10',
'03424f5a7601eaa47482cb17100b31a84a04d14fb44b83a57eeceffd8e299878e3',
'032850492ee61a5f7006a2fda6925e4b4ec3782f2b6de2ff0e439ef5a38c3b2470',
'022c80bace98831c44c32fb69755f2b353434e0ee9e7fbda29507f7ef8abea1421',
'02c3559c833e6f99f9ca05fe503e0b4e7524dea9121344edfd3e811101e0c28680',
'02b36a324fa2dd3af2a63ac65f241907882829bed5002b4e14171d25c219e0d470',
'0231b6e8f21f9f6c057f6bf8a812f79e396ee16a66ece91939a1576ce9fb9e87a5',
'034b6aac206bffcbd651b7ead1ab8a0991c945dfafe19ff27dcdeadc6843ebd15c',
'039c065f7e344acd969ebdd4a94550915b6f24e8782ae2be540bb96c8a4fcfb86b',
'03d9f9f4803fc75920f14dd13d83fbecc53229a65d4ee4cd2d86fdf211f7337576',
'0357fe48c4dece744f70865eda66e396aab5d05e09e1145cd3b7da83f11446d4cf',
'02bca4d642eda631f2c8659758e2a2868e518b93503f2bfcd767749c6530a10679',
'03f32c99c0bb9f62dae53671d1d300565773455248f34134cc02779b881561174e',
'032c7c7819276c4f706a04df1a0f1e10a5495994a7be4c1d3d28ca766e5a2b957b',
'025a7e38c2834dd843591a4d23d5f09cdeb77ddca85f673c2d944a14220ff14cf7',
'0395e2731a1673ef21d7a16a727c4fc4d4c35a861c428ce2c819c53d2b81c8bd55',
'032ab2028c0b614c6d87824e2373529652fd7e4221b4c70cc4da7c7005c49afcf0',
'029001b22fe70b48bee12d014df91982eb85ff1bd404ec772d5c83c4ee3e88d2c3',
'0212e2848d79f928411da5f2ff0a8c95ec6ccb5a09d2031b6f71e91309dcde63af',
'03e871a2229523d34f76e6311ff197cfe7f26c2fbec13554b93a46f4e710c47dab',
'032202ec98d976b0e928bd1d91924e8bd3eab07231fc39feb3737b010071073df8',
'02fa7c5a948d03d563a9f36940c2205a814e594d17c0042ced242c71a857d72605',
'039c14fdec2d958e3d14cebf657451bbd9e039196615785e82c917f274e3fb2205',
'033589bbcb233ffc416cefd5437c7f37e9d7cb7942d405e39e72c4c846d9b37f18',
'029293110441c6e2eacb57e1255bf6ef05c41a6a676fe474922d33c19f98a7d584',
'038eb09bed4532ff36d12acc1279f55cbe8d95212d19f809e057bb50de00051fba',
'027b7c0278366a0268e8bd0072b14539f6cb455a7bd588ae22d888bed541f65311',
'02f4dd78f6eda8838029b2cdbaaea6e875e2fa373cd348ee41a7c1bb177d3fca66',
'036b3fb692da214a3edaac5b67903b958f5ccd8712e09aa61b67ea7acfd94b40c2',
'023bc8915d308e0b65f8de6867f95960141372436fce3edad5cec3f364d6ac948f',
'0341690503ef21d0e203dddd9e62646380d0dfc32c499e055e7f698b9064d1c736',
'0355d573805c018a37a5b2288378d70e9b5b438f7394abd6f467cb9b47c90eeb93',
'0361aa68deb561a8b47b41165848edcccb98a1b56a5ea922d9d5b30a09bb7282ea',
'0235ad0b56ed8c42c4354444c24e971c05e769ec0b5fb0ccea42880095dc02ea2c',
'029700819a37afea630f80e6cc461f3fd3c4ace2598a21cfbbe64d1c78d0ee69a5',
'02c2d8b2dbf87c7894af2f1d321290e2fe6db5446cd35323987cee98f06e2e0075',
'030b0ca1ea7b1075716d2a555630e6fd47ef11bc7391fe68963ec06cf370a5e382',
'031adb9eb2d66693f85fa31a4adca0319ba68219f3ad5f9a2ef9b34a6b40755fa1',
'02ccd07faa47eda810ecf5591ccf5ca50f6c1034d0d175052898d32a00b9bae24f',
];
break;
case 'signet':
nodesList = [
'029fe3621fc0c6e08056a14b868f8fb9acca1aa28a129512f6cea0f0d7654d9f92',
'02f60cd7a3a4f1c953dd9554a6ebd51a34f8b10b8124b7fc43a0b381139b55c883',
'03cbbf581774700865eebd1be42d022bc004ba30881274ab304e088a25d70e773d',
'0243348cb3741cfe2d8485fa8375c29c7bc7cbb67577c363cb6987a5e5fd0052cc',
'02cb73e631af44bee600d80f8488a9194c9dc5c7590e575c421a070d1be05bc8e9',
'0306f55ee631aa1e2cd4d9b2bfcbc14404faec5c541cef8b2e6f779061029d09c4',
'030bbbd8495561a894e301fe6ba5b22f8941fc661cc0e673e0206158231d8ac130',
'03ee1f08e516ed083475f39c6cae4fa1eec686d004d2f105218269e27d7f2da5a4',
'028c378b998f476ed22d6815c170dd2a3388a43fdf791a7cff70b9997349b8447a',
'036f19f044d19cb1b04f14d91b6e7e5443ce337217a8c14d43861f3e86dd07bd7f',
'03058d61869e8b88436493648b2e3e530627edf5a0b253c285cd565c1477a5c237',
'0279dfedc87b47a941f1797f2c422c03aa3108914ea6b519d76537d60860535a9a',
'0353486b8016761e58ec8aee7305ee58d5dc66b55ef5bd8cbaf49508f66d52d62e',
'03df5db8eccfabcae47ff15553cfdecb2d3f56979f43a0c3578f28d056b5e35104',
'03ddab321b760433cbf561b615ef62ac7d318630c5f51d523aaf5395b90b751956',
'033d92c7bfd213ef1b34c90e985fb5dc77f9ec2409d391492484e57a44c4aca1de',
'02ad010dda54253c1eb9efe38b0760657a3b43ecad62198c359c051c9d99d45781',
'025196512905b8a3f1597428b867bec63ec9a95e5089eb7dc7e63e2d2691669029',
'027c625aa1fbe3768db68ebcb05b53b6dc0ce68b7b54b8900d326d167363e684fe',
'03f1629af3101fcc56b7aac2667016be84e3defbf3d0c8719f836c9b41c9a57a43',
'02dfb81e2f7a3c4c9e8a51b70ef82b4a24549cc2fab1f5b2fd636501774a918991',
'02d01ccf832944c68f10d39006093769c5b8bda886d561b128534e313d729fdb34',
'02499ed23027d4698a6904ff4ec1b6085a61f10b9a6937f90438f9947e38e8ea86',
'038310e3a786340f2bd7770704c7ccfe560fd163d9a1c99d67894597419d12cbf7',
'03e5e9d879b72c7d67ecd483bae023bd33e695bb32b981a4021260f7b9d62bc761',
'028d16e1a0ace4c0c0a421536d8d32ce484dfe6e2f726b7b0e7c30f12a195f8cc7',
'0326cf9a4ca67a5b9cdffae57293dbd6f7c5113b93010dc6f6fe4af3afde1a1739',
'034867e16f62cebb8c2c2c22b91117c173bbece9c8a1e5bd001374a3699551cd8f',
'038dfb1f1b637a8c27e342ffc6f9feca20e0b47be3244e09ae78df4998e2ae83b9',
'03cb1cea3394d973355c11bc61c2f689f9d3e1c3db60d205f27770f5ad83200f77',
'03535447b592cbdb153189b3e06a455452b1011380cb3e6511a31090c15d8efc9f',
'028e90e9984d262ebfa3c23fb3f335a2ae061a0bdedee03f45f72b438d9e7d2ce3',
'03ee0176289dc4a6111fa5ef22eed5273758c420fbe58cc1d2d76def75dd7e640c',
'0370b2cd9f0eaf436d5c25c93fb39210d8cc06b31f688fc2f54418aabe394aed79',
'02ff690d06c187ab994bf83c5a2114fe5bf50112c2c817af0f788f736be9fa2070',
'02a9f570c51a2526a5ee85802e88f9281bed771eb66a0c8a7d898430dd5d0eae45',
'038c3de773255d3bd7a50e31e58d423baac5c90826a74d75e64b74c95475de1097',
'0242c7f7d315095f37ad1421ae0a2fc967d4cbe65b61b079c5395a769436959853',
'02a909e70eb03742f12666ebb1f56ac42a5fbaab0c0e8b5b1df4aa9f10f8a09240',
'03a26efa12489803c07f3ac2f1dba63812e38f0f6e866ce3ebb34df7de1f458cd2',
];
break;
default:
nodesList = [
'02b12b889fe3c943cb05645921040ef13d6d397a2e7a4ad000e28500c505ff26d6',
'0302240ac9d71b39617cbde2764837ec3d6198bd6074b15b75d2ff33108e89d2e1',
'03364a8ace313376e5e4b68c954e287c6388e16df9e9fdbaf0363ecac41105cbf6',
'03229ab4b7f692753e094b93df90530150680f86b535b5183b0cffd75b3df583fc',
'03a696eb7acde991c1be97a58a9daef416659539ae462b897f5e9ae361f990228e',
'0248bf26cf3a63ab8870f34dc0ec9e6c8c6288cdba96ba3f026f34ec0f13ac4055',
'021b28ecdd782fd909705d6be354db268977b1a2ac5a5275186fc19e08bb8fca93',
'031bec1fbd8eb7fe94d2bda108c9c3cc8c22ecfc1c3a5c11d36f5881b01b4a81a6',
'03879c4f827a3188574d5757e002f574265a966d70aea942169785b31369b067d5',
'0228d4b5a4fd73a03967b76f8b8cb37b9d0b6e7039126a9397bb732c15bed78e9b',
'03f58dbb629f4427f5a1dbc02e6a7ec79345fdf13a0e4163d4f3b7aea2539cf095',
'021cdcb8123aa670cdfc9f43909dbb297363c093883409e9e7fc82e7267f7c72bd',
'02f2aa2c2b7b432a70dc4d0b04afa19d48715ed3b90594d49c1c8744f2e9ebb030',
'03709a02fb3ab4857689a8ea0bd489a6ab6f56f8a397be578bc6d5ad22efbe3756',
'03fbc17549ec667bccf397ababbcb4cdc0e3394345e4773079ab2774612ec9be61',
'03da9a8623241ccf95f19cd645c6cecd4019ac91570e976eb0a128bebbc4d8a437',
'03ca5340cf85cb2e7cf076e489f785410838de174e40be62723e8a60972ad75144',
'0238bd27f02d67d6c51e269692bc8c9a32357a00e7777cba7f4f1f18a2a700b108',
'03f983dcabed6baa1eab5b56c8b2e8fdc846ab3fd931155377897335e85a9fa57c',
'03e399589533581e48796e29a825839a010036a61b20744fda929d6709fcbffcc5',
'021f5288b5f72c42cd0d8801086af7ce09a816d8ee9a4c47a4b436399b26cb601a',
'032b01b7585f781420cd4148841a82831ba37fa952342052cec16750852d4f2dd9',
'02848036488d4b8fb1f1c4064261ec36151f43b085f0b51bd239ade3ddfc940c34',
'02b6b1640fe029e304c216951af9fbefdb23b0bdc9baaf327540d31b6107841fdf',
'03694289827203a5b3156d753071ddd5bf92e371f5a462943f9555eef6d2d6606c',
'0283d850db7c3e8ea7cc9c4abc7afaab12bbdf72b677dcba1d608350d2537d7d43',
'03b4dda7878d3b7b71ecd6d4738322c7f9a9c1fb583374d2724f4ccc4947f37570',
'0279a35f05b5acf159429549e56fd426685c4fec191431c58738968bbc77a39f25',
'03cb102d796ddcf08610cd03fae8b7a1df69ff48e9e8a152af315f9edf71762eb8',
'036b89526f4d5ac4c317f4fd23cb9f8e4ad844498bc7950a41114d060101d995d4',
'0313eade145959d7036db009fd5b0bf1947a739c7c3c790b491ec9161b94e6ad1e',
'02b670ca4c4bb2c5ea89c3b691da98a194cfc48fcd5c072df02a20290bddd60610',
'02a9196d5e08598211397a83cf013a5962b84bd61198abfdd204dff987e54f7a0d',
'036d015cd2f486fb38348182980b7e596e6c9733873102ea126fed7b4152be03b8',
'02521287789f851268a39c9eccc9d6180d2c614315b583c9e6ae0addbd6d79df06',
'0258c2a7b7f8af2585b4411b1ec945f70988f30412bb1df179de941f14d0b1bc3e',
'03c3389ff1a896f84d921ed01a19fc99c6724ce8dc4b960cd3b7b2362b62cd60d7',
'038d118996b3eaa15dcd317b32a539c9ecfdd7698f204acf8a087336af655a9192',
'02a928903d93d78877dacc3642b696128a3636e9566dd42d2d132325b2c8891c09',
'0328cd17f3a9d3d90b532ade0d1a67e05eb8a51835b3dce0a2e38eac04b5a62a57',
];
}
for (let pubKey of nodesList) {
try {
const node = await nodesApi.$getNode(pubKey);
if (node) {
nodes.push(node);
}
} catch (e) {}
}
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(nodes);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getNode(req: Request, res: Response) {
try {
const node = await nodesApi.$getNode(req.params.public_key);
if (!node) {
res.status(404).send('Node not found');
return;
}
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(node);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getHistoricalNodeStats(req: Request, res: Response) {
try {
const statistics = await nodesApi.$getNodeStats(req.params.public_key);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(statistics);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getFeeHistogram(req: Request, res: Response) {
try {
const node = await nodesApi.$getFeeHistogram(req.params.public_key);
if (!node) {
res.status(404).send('Node not found');
return;
}
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(node);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getNodesRanking(req: Request, res: Response): Promise<void> {
try {
const topCapacityNodes = await nodesApi.$getTopCapacityNodes(false);
const topChannelsNodes = await nodesApi.$getTopChannelsNodes(false);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(<INodesRanking>{
topByCapacity: topCapacityNodes,
topByChannels: topChannelsNodes,
});
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getTopNodesByCapacity(req: Request, res: Response): Promise<void> {
try {
const topCapacityNodes = await nodesApi.$getTopCapacityNodes(true);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(topCapacityNodes);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getTopNodesByChannels(req: Request, res: Response): Promise<void> {
try {
const topCapacityNodes = await nodesApi.$getTopChannelsNodes(true);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(topCapacityNodes);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getOldestNodes(req: Request, res: Response): Promise<void> {
try {
const topCapacityNodes = await nodesApi.$getOldestNodes(true);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(topCapacityNodes);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getISPRanking(req: Request, res: Response): Promise<void> {
try {
const nodesPerAs = await nodesApi.$getNodesISPRanking();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 600).toUTCString());
res.json(nodesPerAs);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getWorldNodes(req: Request, res: Response) {
try {
const worldNodes = await nodesApi.$getWorldNodes();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 600).toUTCString());
res.json(worldNodes);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getNodesPerCountry(req: Request, res: Response) {
try {
const [country]: any[] = await DB.query(
`SELECT geo_names.id, geo_names_country.names as country_names
FROM geo_names
JOIN geo_names geo_names_country on geo_names.id = geo_names_country.id AND geo_names_country.type = 'country'
WHERE geo_names.type = 'country_iso_code' AND geo_names.names = ?`,
[req.params.country]
);
if (country.length === 0) {
res.status(404).send(`This country does not exist or does not host any lightning nodes on clearnet`);
return;
}
const nodes = await nodesApi.$getNodesPerCountry(country[0].id);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json({
country: JSON.parse(country[0].country_names),
nodes: nodes,
});
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getNodesPerISP(req: Request, res: Response) {
try {
const [isp]: any[] = await DB.query(
`SELECT geo_names.names as isp_name
FROM geo_names
WHERE geo_names.type = 'as_organization' AND geo_names.id = ?`,
[req.params.isp]
);
if (isp.length === 0) {
res.status(404).send(`This ISP does not exist or does not host any lightning nodes on clearnet`);
return;
}
const nodes = await nodesApi.$getNodesPerISP(req.params.isp);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json({
isp: JSON.parse(isp[0].isp_name),
nodes: nodes,
});
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getNodesCountries(req: Request, res: Response) {
try {
const nodesPerAs = await nodesApi.$getNodesCountries();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 600).toUTCString());
res.json(nodesPerAs);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
}
export default new NodesRoutes();

View File

@@ -0,0 +1,53 @@
import logger from '../../logger';
import DB from '../../database';
import { Common } from '../common';
class StatisticsApi {
public async $getStatistics(interval: string | null = null): Promise<any> {
interval = Common.getSqlInterval(interval);
let query = `SELECT UNIX_TIMESTAMP(added) AS added, channel_count, total_capacity,
tor_nodes, clearnet_nodes, unannounced_nodes, clearnet_tor_nodes
FROM lightning_stats`;
if (interval) {
query += ` WHERE added BETWEEN DATE_SUB(NOW(), INTERVAL ${interval}) AND NOW()`;
}
query += ` ORDER BY added DESC`;
try {
const [rows]: any = await DB.query(query);
return rows;
} catch (e) {
logger.err('$getStatistics error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getLatestStatistics(): Promise<any> {
try {
const [rows]: any = await DB.query(`SELECT * FROM lightning_stats ORDER BY added DESC LIMIT 1`);
const [rows2]: any = await DB.query(`SELECT * FROM lightning_stats WHERE DATE(added) = DATE(NOW() - INTERVAL 7 DAY)`);
return {
latest: rows[0],
previous: rows2[0],
};
} catch (e) {
logger.err('$getLatestStatistics error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getStatisticsCount(): Promise<number> {
try {
const [rows]: any = await DB.query(`SELECT count(*) as count FROM lightning_stats`);
return rows[0].count;
} catch (e) {
logger.err('$getLatestStatistics error: ' + (e instanceof Error ? e.message : e));
throw e;
}
}
}
export default new StatisticsApi();

View File

@@ -1,47 +1,82 @@
import projectedBlocks from './projected-blocks';
import { DB } from '../database';
import { MempoolBlock } from '../mempool.interfaces';
import config from '../config';
import mempool from './mempool';
import projectedBlocks from './mempool-blocks';
const isLiquid = config.MEMPOOL.NETWORK === 'liquid' || config.MEMPOOL.NETWORK === 'liquidtestnet';
interface RecommendedFees {
fastestFee: number,
halfHourFee: number,
hourFee: number,
economyFee: number,
minimumFee: number,
}
class FeeApi {
constructor() { }
public getRecommendedFee() {
const pBlocks = projectedBlocks.getProjectedBlocks();
defaultFee = isLiquid ? 0.1 : 1;
minimumIncrement = isLiquid ? 0.1 : 1;
public getRecommendedFee(): RecommendedFees {
const pBlocks = projectedBlocks.getMempoolBlocks();
const mPool = mempool.getMempoolInfo();
const minimumFee = this.roundUpToNearest(mPool.mempoolminfee * 100000, this.minimumIncrement);
const defaultMinFee = Math.max(minimumFee, this.defaultFee);
if (!pBlocks.length) {
return {
'fastestFee': 0,
'halfHourFee': 0,
'hourFee': 0,
'fastestFee': defaultMinFee,
'halfHourFee': defaultMinFee,
'hourFee': defaultMinFee,
'economyFee': minimumFee,
'minimumFee': minimumFee,
};
}
let firstMedianFee = Math.ceil(pBlocks[0].medianFee);
if (pBlocks.length === 1 && pBlocks[0].blockWeight <= 2000000) {
firstMedianFee = 1;
}
const firstMedianFee = this.optimizeMedianFee(pBlocks[0], pBlocks[1]);
const secondMedianFee = pBlocks[1] ? this.optimizeMedianFee(pBlocks[1], pBlocks[2], firstMedianFee) : this.defaultFee;
const thirdMedianFee = pBlocks[2] ? this.optimizeMedianFee(pBlocks[2], pBlocks[3], secondMedianFee) : this.defaultFee;
const secondMedianFee = pBlocks[1] ? Math.ceil(pBlocks[1].medianFee) : firstMedianFee;
const thirdMedianFee = pBlocks[2] ? Math.ceil(pBlocks[2].medianFee) : secondMedianFee;
let fastestFee = Math.max(minimumFee, firstMedianFee);
let halfHourFee = Math.max(minimumFee, secondMedianFee);
let hourFee = Math.max(minimumFee, thirdMedianFee);
const economyFee = Math.max(minimumFee, Math.min(2 * minimumFee, thirdMedianFee));
// ensure recommendations always increase w/ priority
fastestFee = Math.max(fastestFee, halfHourFee, hourFee, economyFee);
halfHourFee = Math.max(halfHourFee, hourFee, economyFee);
hourFee = Math.max(hourFee, economyFee);
// explicitly enforce a minimum of ceil(mempoolminfee) on all recommendations.
// simply rounding up recommended rates is insufficient, as the purging rate
// can exceed the median rate of projected blocks in some extreme scenarios
// (see https://bitcoin.stackexchange.com/a/120024)
return {
'fastestFee': firstMedianFee,
'halfHourFee': secondMedianFee,
'hourFee': thirdMedianFee,
'fastestFee': fastestFee,
'halfHourFee': halfHourFee,
'hourFee': hourFee,
'economyFee': economyFee,
'minimumFee': minimumFee,
};
}
public async $getTransactionsForBlock(blockHeight: number): Promise<any[]> {
try {
const connection = await DB.pool.getConnection();
const query = `SELECT feePerVsize AS fpv FROM transactions WHERE blockheight = ? ORDER BY feePerVsize ASC`;
const [rows] = await connection.query<any>(query, [blockHeight]);
connection.release();
return rows;
} catch (e) {
console.log('$getTransactionsForBlock() error', e);
return [];
private optimizeMedianFee(pBlock: MempoolBlock, nextBlock: MempoolBlock | undefined, previousFee?: number): number {
const useFee = previousFee ? (pBlock.medianFee + previousFee) / 2 : pBlock.medianFee;
if (pBlock.blockVSize <= 500000) {
return this.defaultFee;
}
if (pBlock.blockVSize <= 950000 && !nextBlock) {
const multiplier = (pBlock.blockVSize - 500000) / 500000;
return Math.max(Math.round(useFee * multiplier), this.defaultFee);
}
return this.roundUpToNearest(useFee, this.minimumIncrement);
}
private roundUpToNearest(value: number, nearest: number): number {
return Math.ceil(value / nearest) * nearest;
}
}
export default new FeeApi();

View File

@@ -0,0 +1,37 @@
import fs from 'fs';
import path from "path";
const { spawnSync } = require('child_process');
function getVersion(): string {
const packageJson = fs.readFileSync('package.json').toString();
return JSON.parse(packageJson).version;
}
function getGitCommit(): string {
if (process.env.MEMPOOL_COMMIT_HASH) {
return process.env.MEMPOOL_COMMIT_HASH;
} else {
const gitRevParse = spawnSync('git', ['rev-parse', '--short', 'HEAD']);
if (!gitRevParse.error) {
const output = gitRevParse.stdout.toString('utf-8').replace(/[\n\r\s]+$/, '');
if (output) {
return output;
} else {
console.log('Could not fetch git commit: No repo available');
}
} else if (gitRevParse.error.code === 'ENOENT') {
console.log('Could not fetch git commit: Command `git` is unavailable');
}
}
return '?';
}
const versionInfo = {
version: getVersion(),
gitCommit: getGitCommit()
}
fs.writeFileSync(
path.join(__dirname, 'version.json'),
JSON.stringify(versionInfo, null, 2) + "\n"
);

View File

@@ -1,31 +0,0 @@
import * as request from 'request';
class FiatConversion {
private tickers = {
'BTCUSD': {
'USD': 4110.78
},
};
constructor() { }
public startService() {
setInterval(this.updateCurrency.bind(this), 1000 * 60 * 60);
this.updateCurrency();
}
public getTickers() {
return this.tickers;
}
private updateCurrency() {
request('https://api.opennode.co/v1/rates', { json: true }, (err, res, body) => {
if (err) { return console.log(err); }
if (body && body.data) {
this.tickers = body.data;
}
});
}
}
export default new FiatConversion();

View File

@@ -0,0 +1,270 @@
// Imported from https://github.com/shesek/lightning-client-js
'use strict';
const methods = [
'addgossip',
'autocleaninvoice',
'check',
'checkmessage',
'close',
'connect',
'createinvoice',
'createinvoicerequest',
'createoffer',
'createonion',
'decode',
'decodepay',
'delexpiredinvoice',
'delinvoice',
'delpay',
'dev-listaddrs',
'dev-rescan-outputs',
'disableoffer',
'disconnect',
'estimatefees',
'feerates',
'fetchinvoice',
'fundchannel',
'fundchannel_cancel',
'fundchannel_complete',
'fundchannel_start',
'fundpsbt',
'getchaininfo',
'getinfo',
'getlog',
'getrawblockbyheight',
'getroute',
'getsharedsecret',
'getutxout',
'help',
'invoice',
'keysend',
'legacypay',
'listchannels',
'listconfigs',
'listforwards',
'listfunds',
'listinvoices',
'listnodes',
'listoffers',
'listpays',
'listpeers',
'listsendpays',
'listtransactions',
'multifundchannel',
'multiwithdraw',
'newaddr',
'notifications',
'offer',
'offerout',
'openchannel_abort',
'openchannel_bump',
'openchannel_init',
'openchannel_signed',
'openchannel_update',
'pay',
'payersign',
'paystatus',
'ping',
'plugin',
'reserveinputs',
'sendinvoice',
'sendonion',
'sendonionmessage',
'sendpay',
'sendpsbt',
'sendrawtransaction',
'setchannelfee',
'signmessage',
'signpsbt',
'stop',
'txdiscard',
'txprepare',
'txsend',
'unreserveinputs',
'utxopsbt',
'waitanyinvoice',
'waitblockheight',
'waitinvoice',
'waitsendpay',
'withdraw'
];
import EventEmitter from 'events';
import { existsSync, statSync } from 'fs';
import { createConnection, Socket } from 'net';
import { homedir } from 'os';
import path from 'path';
import { createInterface, Interface } from 'readline';
import logger from '../../../logger';
import { AbstractLightningApi } from '../lightning-api-abstract-factory';
import { ILightningApi } from '../lightning-api.interface';
import { convertAndmergeBidirectionalChannels, convertNode } from './clightning-convert';
class LightningError extends Error {
type: string = 'lightning';
message: string = 'lightning-client error';
constructor(error) {
super();
this.type = error.type;
this.message = error.message;
}
}
const defaultRpcPath = path.join(homedir(), '.lightning')
, fStat = (...p) => statSync(path.join(...p))
, fExists = (...p) => existsSync(path.join(...p))
export default class CLightningClient extends EventEmitter implements AbstractLightningApi {
private rpcPath: string;
private reconnectWait: number;
private reconnectTimeout;
private reqcount: number;
private client: Socket;
private rl: Interface;
private clientConnectionPromise: Promise<unknown>;
constructor(rpcPath = defaultRpcPath) {
if (!path.isAbsolute(rpcPath)) {
throw new Error('The rpcPath must be an absolute path');
}
if (!fExists(rpcPath) || !fStat(rpcPath).isSocket()) {
// network directory provided, use the lightning-rpc within in
if (fExists(rpcPath, 'lightning-rpc')) {
rpcPath = path.join(rpcPath, 'lightning-rpc');
}
// main data directory provided, default to using the bitcoin mainnet subdirectory
// to be removed in v0.2.0
else if (fExists(rpcPath, 'bitcoin', 'lightning-rpc')) {
logger.warn(`${rpcPath}/lightning-rpc is missing, using the bitcoin mainnet subdirectory at ${rpcPath}/bitcoin instead.`, logger.tags.ln)
logger.warn(`specifying the main lightning data directory is deprecated, please specify the network directory explicitly.\n`, logger.tags.ln)
rpcPath = path.join(rpcPath, 'bitcoin', 'lightning-rpc')
}
}
logger.debug(`Connecting to ${rpcPath}`, logger.tags.ln);
super();
this.rpcPath = rpcPath;
this.reconnectWait = 0.5;
this.reconnectTimeout = null;
this.reqcount = 0;
const _self = this;
this.client = createConnection(rpcPath).on(
'error', () => {
_self.increaseWaitTime();
_self.reconnect();
}
);
this.rl = createInterface({ input: this.client }).on(
'error', () => {
_self.increaseWaitTime();
_self.reconnect();
}
);
this.clientConnectionPromise = new Promise<void>(resolve => {
_self.client.on('connect', () => {
logger.info(`CLightning client connected`, logger.tags.ln);
_self.reconnectWait = 1;
resolve();
});
_self.client.on('end', () => {
logger.err(`CLightning client connection closed, reconnecting`, logger.tags.ln);
_self.increaseWaitTime();
_self.reconnect();
});
_self.client.on('error', error => {
logger.err(`CLightning client connection error: ${error}`, logger.tags.ln);
_self.increaseWaitTime();
_self.reconnect();
});
});
this.rl.on('line', line => {
line = line.trim();
if (!line) {
return;
}
const data = JSON.parse(line);
_self.emit('res:' + data.id, data);
});
}
increaseWaitTime(): void {
if (this.reconnectWait >= 16) {
this.reconnectWait = 16;
} else {
this.reconnectWait *= 2;
}
}
reconnect(): void {
const _self = this;
if (this.reconnectTimeout) {
return;
}
this.reconnectTimeout = setTimeout(() => {
logger.debug(`Trying to reconnect...`, logger.tags.ln);
_self.client.connect(_self.rpcPath);
_self.reconnectTimeout = null;
}, this.reconnectWait * 1000);
}
call(method, args = []): Promise<any> {
const _self = this;
const callInt = ++this.reqcount;
const sendObj = {
jsonrpc: '2.0',
method,
params: args,
id: '' + callInt
};
// Wait for the client to connect
return this.clientConnectionPromise
.then(() => new Promise((resolve, reject) => {
// Wait for a response
this.once('res:' + callInt, res => res.error == null
? resolve(res.result)
: reject(new LightningError(res.error))
);
// Send the command
_self.client.write(JSON.stringify(sendObj));
}));
}
async $getNetworkGraph(): Promise<ILightningApi.NetworkGraph> {
const listnodes: any[] = await this.call('listnodes');
const listchannels: any[] = await this.call('listchannels');
const channelsList = await convertAndmergeBidirectionalChannels(listchannels['channels']);
return {
nodes: listnodes['nodes'].map(node => convertNode(node)),
edges: channelsList,
};
}
}
const protify = s => s.replace(/-([a-z])/g, m => m[1].toUpperCase());
methods.forEach(k => {
CLightningClient.prototype[protify(k)] = function (...args: any) {
return this.call(k, args);
};
});

View File

@@ -0,0 +1,275 @@
import { ILightningApi } from '../lightning-api.interface';
import FundingTxFetcher from '../../../tasks/lightning/sync-tasks/funding-tx-fetcher';
import logger from '../../../logger';
import { Common } from '../../common';
import { hex2bin } from '../../../utils/format';
import config from '../../../config';
// https://github.com/lightningnetwork/lnd/blob/master/lnwire/features.go
export enum FeatureBits {
DataLossProtectRequired = 0,
DataLossProtectOptional = 1,
InitialRoutingSync = 3,
UpfrontShutdownScriptRequired = 4,
UpfrontShutdownScriptOptional = 5,
GossipQueriesRequired = 6,
GossipQueriesOptional = 7,
TLVOnionPayloadRequired = 8,
TLVOnionPayloadOptional = 9,
StaticRemoteKeyRequired = 12,
StaticRemoteKeyOptional = 13,
PaymentAddrRequired = 14,
PaymentAddrOptional = 15,
MPPRequired = 16,
MPPOptional = 17,
WumboChannelsRequired = 18,
WumboChannelsOptional = 19,
AnchorsRequired = 20,
AnchorsOptional = 21,
AnchorsZeroFeeHtlcTxRequired = 22,
AnchorsZeroFeeHtlcTxOptional = 23,
ShutdownAnySegwitRequired = 26,
ShutdownAnySegwitOptional = 27,
AMPRequired = 30,
AMPOptional = 31,
ExplicitChannelTypeRequired = 44,
ExplicitChannelTypeOptional = 45,
ScidAliasRequired = 46,
ScidAliasOptional = 47,
PaymentMetadataRequired = 48,
PaymentMetadataOptional = 49,
ZeroConfRequired = 50,
ZeroConfOptional = 51,
KeysendRequired = 54,
KeysendOptional = 55,
ScriptEnforcedLeaseRequired = 2022,
ScriptEnforcedLeaseOptional = 2023,
SimpleTaprootChannelsRequiredFinal = 80,
SimpleTaprootChannelsOptionalFinal = 81,
SimpleTaprootChannelsRequiredStaging = 180,
SimpleTaprootChannelsOptionalStaging = 181,
MaxBolt11Feature = 5114,
};
export const FeaturesMap = new Map<FeatureBits, string>([
[FeatureBits.DataLossProtectRequired, 'data-loss-protect'],
[FeatureBits.DataLossProtectOptional, 'data-loss-protect'],
[FeatureBits.InitialRoutingSync, 'initial-routing-sync'],
[FeatureBits.UpfrontShutdownScriptRequired, 'upfront-shutdown-script'],
[FeatureBits.UpfrontShutdownScriptOptional, 'upfront-shutdown-script'],
[FeatureBits.GossipQueriesRequired, 'gossip-queries'],
[FeatureBits.GossipQueriesOptional, 'gossip-queries'],
[FeatureBits.TLVOnionPayloadRequired, 'tlv-onion'],
[FeatureBits.TLVOnionPayloadOptional, 'tlv-onion'],
[FeatureBits.StaticRemoteKeyOptional, 'static-remote-key'],
[FeatureBits.StaticRemoteKeyRequired, 'static-remote-key'],
[FeatureBits.PaymentAddrOptional, 'payment-addr'],
[FeatureBits.PaymentAddrRequired, 'payment-addr'],
[FeatureBits.MPPOptional, 'multi-path-payments'],
[FeatureBits.MPPRequired, 'multi-path-payments'],
[FeatureBits.AnchorsRequired, 'anchor-commitments'],
[FeatureBits.AnchorsOptional, 'anchor-commitments'],
[FeatureBits.AnchorsZeroFeeHtlcTxRequired, 'anchors-zero-fee-htlc-tx'],
[FeatureBits.AnchorsZeroFeeHtlcTxOptional, 'anchors-zero-fee-htlc-tx'],
[FeatureBits.WumboChannelsRequired, 'wumbo-channels'],
[FeatureBits.WumboChannelsOptional, 'wumbo-channels'],
[FeatureBits.AMPRequired, 'amp'],
[FeatureBits.AMPOptional, 'amp'],
[FeatureBits.PaymentMetadataOptional, 'payment-metadata'],
[FeatureBits.PaymentMetadataRequired, 'payment-metadata'],
[FeatureBits.ExplicitChannelTypeOptional, 'explicit-commitment-type'],
[FeatureBits.ExplicitChannelTypeRequired, 'explicit-commitment-type'],
[FeatureBits.KeysendOptional, 'keysend'],
[FeatureBits.KeysendRequired, 'keysend'],
[FeatureBits.ScriptEnforcedLeaseRequired, 'script-enforced-lease'],
[FeatureBits.ScriptEnforcedLeaseOptional, 'script-enforced-lease'],
[FeatureBits.ScidAliasRequired, 'scid-alias'],
[FeatureBits.ScidAliasOptional, 'scid-alias'],
[FeatureBits.ZeroConfRequired, 'zero-conf'],
[FeatureBits.ZeroConfOptional, 'zero-conf'],
[FeatureBits.ShutdownAnySegwitRequired, 'shutdown-any-segwit'],
[FeatureBits.ShutdownAnySegwitOptional, 'shutdown-any-segwit'],
[FeatureBits.SimpleTaprootChannelsRequiredFinal, 'taproot-channels'],
[FeatureBits.SimpleTaprootChannelsOptionalFinal, 'taproot-channels'],
[FeatureBits.SimpleTaprootChannelsRequiredStaging, 'taproot-channels-staging'],
[FeatureBits.SimpleTaprootChannelsOptionalStaging, 'taproot-channels-staging'],
]);
/**
* Convert a clightning "listnode" entry to a lnd node entry
*/
export function convertNode(clNode: any): ILightningApi.Node {
let custom_records: { [type: number]: string } | undefined = undefined;
if (clNode.option_will_fund) {
try {
custom_records = { '1': Buffer.from(clNode.option_will_fund.compact_lease || '', 'hex').toString('base64') };
} catch (e) {
logger.err(`Cannot decode option_will_fund compact_lease for ${clNode.nodeid}). Reason: ` + (e instanceof Error ? e.message : e));
custom_records = undefined;
}
}
const nodeFeatures: ILightningApi.Feature[] = [];
const nodeFeaturesBinary = hex2bin(clNode.features).split('').reverse().join('');
for (let i = 0; i < nodeFeaturesBinary.length; i++) {
if (nodeFeaturesBinary[i] === '0') {
continue;
}
const feature = FeaturesMap.get(i);
if (!feature) {
nodeFeatures.push({
bit: i,
name: 'unknown',
is_required: i % 2 === 0,
is_known: false
});
} else {
nodeFeatures.push({
bit: i,
name: feature,
is_required: i % 2 === 0,
is_known: true
});
}
}
return {
alias: clNode.alias ?? '',
color: `#${clNode.color ?? ''}`,
features: nodeFeatures,
pub_key: clNode.nodeid,
addresses: clNode.addresses?.map((addr) => {
let address = addr.address;
if (addr.type === 'ipv6') {
address = `[${address}]`;
}
return {
network: addr.type,
addr: `${address}:${addr.port}`
};
}) ?? [],
last_update: clNode?.last_timestamp ?? 0,
custom_records
};
}
/**
* Convert clightning "listchannels" response to lnd "describegraph.edges" format
*/
export async function convertAndmergeBidirectionalChannels(clChannels: any[]): Promise<ILightningApi.Channel[]> {
logger.debug(`Converting clightning nodes and channels to lnd graph format`, logger.tags.ln);
let loggerTimer = new Date().getTime() / 1000;
let channelProcessed = 0;
const consolidatedChannelList: ILightningApi.Channel[] = [];
const clChannelsDict = {};
const clChannelsDictCount = {};
for (const clChannel of clChannels) {
if (!clChannelsDict[clChannel.short_channel_id]) {
clChannelsDict[clChannel.short_channel_id] = clChannel;
clChannelsDictCount[clChannel.short_channel_id] = 1;
} else {
const fullChannel = await buildFullChannel(clChannel, clChannelsDict[clChannel.short_channel_id]);
if (fullChannel !== null) {
consolidatedChannelList.push(fullChannel);
delete clChannelsDict[clChannel.short_channel_id];
clChannelsDictCount[clChannel.short_channel_id]++;
}
}
const elapsedSeconds = Math.round((new Date().getTime() / 1000) - loggerTimer);
if (elapsedSeconds > config.LIGHTNING.LOGGER_UPDATE_INTERVAL) {
logger.info(`Building complete channels from clightning output. Channels processed: ${channelProcessed + 1} of ${clChannels.length}`, logger.tags.ln);
loggerTimer = new Date().getTime() / 1000;
}
++channelProcessed;
}
channelProcessed = 0;
const keys = Object.keys(clChannelsDict);
for (const short_channel_id of keys) {
const incompleteChannel = await buildIncompleteChannel(clChannelsDict[short_channel_id]);
if (incompleteChannel !== null) {
consolidatedChannelList.push(incompleteChannel);
}
const elapsedSeconds = Math.round((new Date().getTime() / 1000) - loggerTimer);
if (elapsedSeconds > config.LIGHTNING.LOGGER_UPDATE_INTERVAL) {
logger.info(`Building partial channels from clightning output. Channels processed: ${channelProcessed + 1} of ${keys.length}`);
loggerTimer = new Date().getTime() / 1000;
}
channelProcessed++;
}
return consolidatedChannelList;
}
/**
* Convert two clightning "getchannels" entries into a full a lnd "describegraph.edges" format
* In this case, clightning knows the channel policy for both nodes
*/
async function buildFullChannel(clChannelA: any, clChannelB: any): Promise<ILightningApi.Channel | null> {
const lastUpdate = Math.max(clChannelA.last_update ?? 0, clChannelB.last_update ?? 0);
const tx = await FundingTxFetcher.$fetchChannelOpenTx(clChannelA.short_channel_id);
if (!tx) {
return null;
}
const parts = clChannelA.short_channel_id.split('x');
const outputIdx = parts[2];
return {
channel_id: Common.channelShortIdToIntegerId(clChannelA.short_channel_id),
capacity: (clChannelA.amount_msat / 1000).toString(),
last_update: lastUpdate,
node1_policy: convertPolicy(clChannelA),
node2_policy: convertPolicy(clChannelB),
chan_point: `${tx.txid}:${outputIdx}`,
node1_pub: clChannelA.source,
node2_pub: clChannelB.source,
};
}
/**
* Convert one clightning "getchannels" entry into a full a lnd "describegraph.edges" format
* In this case, clightning knows the channel policy of only one node
*/
async function buildIncompleteChannel(clChannel: any): Promise<ILightningApi.Channel | null> {
const tx = await FundingTxFetcher.$fetchChannelOpenTx(clChannel.short_channel_id);
if (!tx) {
return null;
}
const parts = clChannel.short_channel_id.split('x');
const outputIdx = parts[2];
return {
channel_id: Common.channelShortIdToIntegerId(clChannel.short_channel_id),
capacity: (clChannel.amount_msat / 1000).toString(),
last_update: clChannel.last_update ?? 0,
node1_policy: convertPolicy(clChannel),
node2_policy: null,
chan_point: `${tx.txid}:${outputIdx}`,
node1_pub: clChannel.source,
node2_pub: clChannel.destination,
};
}
/**
* Convert a clightning "listnode" response to a lnd channel policy format
*/
function convertPolicy(clChannel: any): ILightningApi.RoutingPolicy {
return {
time_lock_delta: clChannel.delay,
min_htlc: clChannel.htlc_minimum_msat.toString(),
max_htlc_msat: clChannel.htlc_maximum_msat.toString(),
fee_base_msat: clChannel.base_fee_millisatoshi,
fee_rate_milli_msat: clChannel.fee_per_millionth,
disabled: !clChannel.active,
last_update: clChannel.last_update ?? 0,
};
}

View File

@@ -0,0 +1,5 @@
import { ILightningApi } from './lightning-api.interface';
export interface AbstractLightningApi {
$getNetworkGraph(): Promise<ILightningApi.NetworkGraph>;
}

View File

@@ -0,0 +1,16 @@
import config from '../../config';
import CLightningClient from './clightning/clightning-client';
import { AbstractLightningApi } from './lightning-api-abstract-factory';
import LndApi from './lnd/lnd-api';
function lightningApiFactory(): AbstractLightningApi {
switch (config.LIGHTNING.ENABLED === true && config.LIGHTNING.BACKEND) {
case 'cln':
return new CLightningClient(config.CLIGHTNING.SOCKET);
case 'lnd':
default:
return new LndApi();
}
}
export default lightningApiFactory();

View File

@@ -0,0 +1,93 @@
export namespace ILightningApi {
export interface NetworkInfo {
graph_diameter: number;
avg_out_degree: number;
max_out_degree: number;
num_nodes: number;
num_channels: number;
total_network_capacity: string;
avg_channel_size: number;
min_channel_size: string;
max_channel_size: string;
median_channel_size_sat: string;
num_zombie_chans: string;
}
export interface NetworkGraph {
nodes: Node[];
edges: Channel[];
}
export interface Channel {
channel_id: string;
chan_point: string;
last_update: number | null;
node1_pub: string;
node2_pub: string;
capacity: string;
node1_policy: RoutingPolicy | null;
node2_policy: RoutingPolicy | null;
}
export interface RoutingPolicy {
time_lock_delta: number;
min_htlc: string;
fee_base_msat: string;
fee_rate_milli_msat: string;
disabled: boolean;
max_htlc_msat: string;
last_update: number | null;
}
export interface Node {
last_update: number | null;
pub_key: string;
alias: string;
addresses: {
network: string;
addr: string;
}[];
color: string;
features: { [key: number]: Feature };
custom_records?: { [type: number]: string };
}
export interface Info {
identity_pubkey: string;
alias: string;
num_pending_channels: number;
num_active_channels: number;
num_peers: number;
block_height: number;
block_hash: string;
synced_to_chain: boolean;
testnet: boolean;
uris: string[];
best_header_timestamp: string;
version: string;
num_inactive_channels: number;
chains: {
chain: string;
network: string;
}[];
color: string;
synced_to_graph: boolean;
features: { [key: number]: Feature };
commit_hash: string;
/** Available on LND since v0.15.0-beta */
require_htlc_interceptor?: boolean;
}
export interface Feature {
bit: number;
name: string;
is_required: boolean;
is_known: boolean;
}
export interface ForensicOutput {
node?: 1 | 2;
type: number;
value: number;
}
}

View File

@@ -0,0 +1,64 @@
import axios, { AxiosRequestConfig } from 'axios';
import { Agent } from 'https';
import * as fs from 'fs';
import { AbstractLightningApi } from '../lightning-api-abstract-factory';
import { ILightningApi } from '../lightning-api.interface';
import config from '../../../config';
import logger from '../../../logger';
class LndApi implements AbstractLightningApi {
axiosConfig: AxiosRequestConfig = {};
constructor() {
if (!config.LIGHTNING.ENABLED) {
return;
}
try {
this.axiosConfig = {
headers: {
'Grpc-Metadata-macaroon': fs.readFileSync(config.LND.MACAROON_PATH).toString('hex'),
},
httpsAgent: new Agent({
ca: fs.readFileSync(config.LND.TLS_CERT_PATH)
}),
timeout: config.LND.TIMEOUT
};
} catch (e) {
config.LIGHTNING.ENABLED = false;
logger.updateNetwork();
logger.err(`Could not initialize LND Macaroon/TLS Cert. Disabling LIGHTNING. ` + (e instanceof Error ? e.message : e));
}
}
async $getNetworkInfo(): Promise<ILightningApi.NetworkInfo> {
return axios.get<ILightningApi.NetworkInfo>(config.LND.REST_API_URL + '/v1/graph/info', this.axiosConfig)
.then((response) => response.data);
}
async $getInfo(): Promise<ILightningApi.Info> {
return axios.get<ILightningApi.Info>(config.LND.REST_API_URL + '/v1/getinfo', this.axiosConfig)
.then((response) => response.data);
}
async $getNetworkGraph(): Promise<ILightningApi.NetworkGraph> {
const graph = await axios.get<ILightningApi.NetworkGraph>(config.LND.REST_API_URL + '/v1/graph', this.axiosConfig)
.then((response) => response.data);
for (const node of graph.nodes) {
const nodeFeatures: ILightningApi.Feature[] = [];
for (const bit in node.features) {
nodeFeatures.push({
bit: parseInt(bit, 10),
name: node.features[bit].name,
is_required: node.features[bit].is_required,
is_known: node.features[bit].is_known,
});
}
node.features = nodeFeatures;
}
return graph;
}
}
export default LndApi;

View File

@@ -0,0 +1,493 @@
import { IBitcoinApi } from '../bitcoin/bitcoin-api.interface';
import bitcoinClient from '../bitcoin/bitcoin-client';
import bitcoinSecondClient from '../bitcoin/bitcoin-second-client';
import { Common } from '../common';
import DB from '../../database';
import logger from '../../logger';
const federationChangeAddresses = ['bc1qxvay4an52gcghxq5lavact7r6qe9l4laedsazz8fj2ee2cy47tlqff4aj4', '3EiAcrzq1cELXScc98KeCswGWZaPGceT1d'];
const auditBlockOffsetWithTip = 1; // Wait for 1 block confirmation before processing the block in the audit process to reduce the risk of reorgs
class ElementsParser {
private isRunning = false;
private isUtxosUpdatingRunning = false;
constructor() { }
public async $parse() {
if (this.isRunning) {
return;
}
try {
this.isRunning = true;
const result = await bitcoinClient.getChainTips();
const tip = result[0].height;
const latestBlockHeight = await this.$getLatestBlockHeightFromDatabase();
for (let height = latestBlockHeight + 1; height <= tip; height++) {
const blockHash: IBitcoinApi.ChainTips = await bitcoinClient.getBlockHash(height);
const block: IBitcoinApi.Block = await bitcoinClient.getBlock(blockHash, 2);
await this.$parseBlock(block);
await this.$saveLatestBlockToDatabase(block.height);
}
this.isRunning = false;
} catch (e) {
this.isRunning = false;
throw new Error(e instanceof Error ? e.message : 'Error');
}
}
protected async $parseBlock(block: IBitcoinApi.Block) {
for (const tx of block.tx) {
await this.$parseInputs(tx, block);
await this.$parseOutputs(tx, block);
}
}
protected async $parseInputs(tx: IBitcoinApi.Transaction, block: IBitcoinApi.Block) {
for (const [index, input] of tx.vin.entries()) {
if (input.is_pegin) {
await this.$parsePegIn(input, index, tx.txid, block);
}
}
}
protected async $parsePegIn(input: IBitcoinApi.Vin, vindex: number, txid: string, block: IBitcoinApi.Block) {
const bitcoinTx: IBitcoinApi.Transaction = await bitcoinSecondClient.getRawTransaction(input.txid, true);
const bitcoinBlock: IBitcoinApi.Block = await bitcoinSecondClient.getBlock(bitcoinTx.blockhash);
const prevout = bitcoinTx.vout[input.vout || 0];
const outputAddress = prevout.scriptPubKey.address || (prevout.scriptPubKey.addresses && prevout.scriptPubKey.addresses[0]) || '';
await this.$savePegToDatabase(block.height, block.time, prevout.value * 100000000, txid, vindex,
outputAddress, bitcoinTx.txid, prevout.n, bitcoinBlock.height, bitcoinBlock.time, 1);
}
protected async $parseOutputs(tx: IBitcoinApi.Transaction, block: IBitcoinApi.Block) {
for (const output of tx.vout) {
if (output.scriptPubKey.pegout_chain) {
await this.$savePegToDatabase(block.height, block.time, 0 - output.value * 100000000, tx.txid, output.n,
(output.scriptPubKey.pegout_address || ''), '', 0, 0, 0, 0);
}
if (!output.scriptPubKey.pegout_chain && output.scriptPubKey.type === 'nulldata'
&& output.value && output.value > 0 && output.asset && output.asset === Common.nativeAssetId) {
await this.$savePegToDatabase(block.height, block.time, 0 - output.value * 100000000, tx.txid, output.n,
(output.scriptPubKey.pegout_address || ''), '', 0, 0, 0, 1);
}
}
}
protected async $savePegToDatabase(height: number, blockTime: number, amount: number, txid: string,
txindex: number, bitcoinaddress: string, bitcointxid: string, bitcoinindex: number, bitcoinblock: number, bitcoinBlockTime: number, final_tx: number): Promise<void> {
const query = `INSERT IGNORE INTO elements_pegs(
block, datetime, amount, txid, txindex, bitcoinaddress, bitcointxid, bitcoinindex, final_tx
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`;
const params: (string | number)[] = [
height, blockTime, amount, txid, txindex, bitcoinaddress, bitcointxid, bitcoinindex, final_tx
];
await DB.query(query, params);
logger.debug(`Saved L-BTC peg from Liquid block height #${height} with TXID ${txid}.`);
if (amount > 0) { // Peg-in
// Add the address to the federation addresses table
await DB.query(`INSERT IGNORE INTO federation_addresses (bitcoinaddress) VALUES (?)`, [bitcoinaddress]);
// Add the UTXO to the federation txos table
const query_utxos = `INSERT IGNORE INTO federation_txos (txid, txindex, bitcoinaddress, amount, blocknumber, blocktime, unspent, lastblockupdate, lasttimeupdate, timelock, expiredAt, emergencyKey, pegtxid, pegindex, pegblocktime) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
const params_utxos: (string | number)[] = [bitcointxid, bitcoinindex, bitcoinaddress, amount, bitcoinblock, bitcoinBlockTime, 1, bitcoinblock - 1, 0, 4032, 0, 0, txid, txindex, blockTime];
await DB.query(query_utxos, params_utxos);
const [minBlockUpdate] = await DB.query(`SELECT MIN(lastblockupdate) AS lastblockupdate FROM federation_txos WHERE unspent = 1`)
await this.$saveLastBlockAuditToDatabase(minBlockUpdate[0]['lastblockupdate']);
logger.debug(`Saved new Federation UTXO ${bitcointxid}:${bitcoinindex} belonging to ${bitcoinaddress} to federation txos`);
}
}
protected async $getLatestBlockHeightFromDatabase(): Promise<number> {
const query = `SELECT number FROM state WHERE name = 'last_elements_block'`;
const [rows] = await DB.query(query);
return rows[0]['number'];
}
protected async $saveLatestBlockToDatabase(blockHeight: number) {
const query = `UPDATE state SET number = ? WHERE name = 'last_elements_block'`;
await DB.query(query, [blockHeight]);
}
///////////// FEDERATION AUDIT //////////////
public async $updateFederationUtxos() {
if (this.isUtxosUpdatingRunning) {
return;
}
this.isUtxosUpdatingRunning = true;
try {
let auditProgress = await this.$getAuditProgress();
// If no peg in transaction was found in the database, return
if (!auditProgress.lastBlockAudit) {
logger.debug(`No Federation UTXOs found in the database. Waiting for some to be confirmed before starting the Federation UTXOs audit`);
this.isUtxosUpdatingRunning = false;
return;
}
const bitcoinBlocksToSync = await this.$getBitcoinBlockchainState();
// If the bitcoin blockchain is not synced yet, return
if (bitcoinBlocksToSync.bitcoinHeaders > bitcoinBlocksToSync.bitcoinBlocks + 1) {
logger.debug(`Bitcoin client is not synced yet. ${bitcoinBlocksToSync.bitcoinHeaders - bitcoinBlocksToSync.bitcoinBlocks} blocks remaining to sync before the Federation audit process can start`);
this.isUtxosUpdatingRunning = false;
return;
}
auditProgress.lastBlockAudit++;
// Logging
let indexedThisRun = 0;
let timer = Date.now() / 1000;
const startedAt = Date.now() / 1000;
const indexingSpeeds: number[] = [];
while (auditProgress.lastBlockAudit <= auditProgress.confirmedTip) {
// First, get the current UTXOs that need to be scanned in the block
const utxos = await this.$getFederationUtxosToScan(auditProgress.lastBlockAudit);
// Get the peg-out addresses that need to be scanned
const redeemAddresses = await this.$getRedeemAddressesToScan();
// The fast way: check if these UTXOs are still unspent as of the current block with gettxout
let spentAsTip: any[];
let unspentAsTip: any[];
if (auditProgress.confirmedTip - auditProgress.lastBlockAudit <= 150) { // If the audit status is not too far in the past, we can use gettxout (fast way)
const utxosToParse = await this.$getFederationUtxosToParse(utxos);
spentAsTip = utxosToParse.spentAsTip;
unspentAsTip = utxosToParse.unspentAsTip;
logger.debug(`Found ${utxos.length} Federation UTXOs and ${redeemAddresses.length} Peg-Out Addresses to scan in Bitcoin block height #${auditProgress.lastBlockAudit} / #${auditProgress.confirmedTip}`);
logger.debug(`${unspentAsTip.length} / ${utxos.length} Federation UTXOs are unspent as of tip`);
} else { // If the audit status is too far in the past, it is useless and wasteful to look for still unspent txos since they will all be spent as of the tip
spentAsTip = utxos;
unspentAsTip = [];
// Logging
const elapsedSeconds = (Date.now() / 1000) - timer;
if (elapsedSeconds > 5) {
const runningFor = (Date.now() / 1000) - startedAt;
const blockPerSeconds = indexedThisRun / elapsedSeconds;
indexingSpeeds.push(blockPerSeconds);
if (indexingSpeeds.length > 100) indexingSpeeds.shift(); // Keep the length of the up to 100 last indexing speeds
const meanIndexingSpeed = indexingSpeeds.reduce((a, b) => a + b, 0) / indexingSpeeds.length;
const eta = (auditProgress.confirmedTip - auditProgress.lastBlockAudit) / meanIndexingSpeed;
logger.debug(`Scanning ${utxos.length} Federation UTXOs and ${redeemAddresses.length} Peg-Out Addresses at Bitcoin block height #${auditProgress.lastBlockAudit} / #${auditProgress.confirmedTip} | ~${meanIndexingSpeed.toFixed(2)} blocks/sec | elapsed: ${(runningFor / 60).toFixed(0)} minutes | ETA: ${(eta / 60).toFixed(0)} minutes`);
timer = Date.now() / 1000;
indexedThisRun = 0;
}
}
// The slow way: parse the block to look for the spending tx
const blockHash: IBitcoinApi.ChainTips = await bitcoinSecondClient.getBlockHash(auditProgress.lastBlockAudit);
const block: IBitcoinApi.Block = await bitcoinSecondClient.getBlock(blockHash, 2);
await this.$parseBitcoinBlock(block, spentAsTip, unspentAsTip, auditProgress.confirmedTip, redeemAddresses);
// Finally, update the lastblockupdate of the remaining UTXOs and save to the database
const [minBlockUpdate] = await DB.query(`SELECT MIN(lastblockupdate) AS lastblockupdate FROM federation_txos WHERE unspent = 1`)
await this.$saveLastBlockAuditToDatabase(minBlockUpdate[0]['lastblockupdate']);
auditProgress = await this.$getAuditProgress();
auditProgress.lastBlockAudit++;
indexedThisRun++;
}
this.isUtxosUpdatingRunning = false;
} catch (e) {
this.isUtxosUpdatingRunning = false;
throw new Error(e instanceof Error ? e.message : 'Error');
}
}
// Get the UTXOs that need to be scanned in block height (UTXOs that were last updated in the block height - 1)
protected async $getFederationUtxosToScan(height: number) {
const query = `SELECT txid, txindex, bitcoinaddress, amount, blocknumber, timelock, expiredAt FROM federation_txos WHERE lastblockupdate = ? AND unspent = 1`;
const [rows] = await DB.query(query, [height - 1]);
return rows as any[];
}
// Returns the UTXOs that are spent as of tip and need to be scanned
protected async $getFederationUtxosToParse(utxos: any[]): Promise<any> {
const spentAsTip: any[] = [];
const unspentAsTip: any[] = [];
for (const utxo of utxos) {
const result = await bitcoinSecondClient.getTxOut(utxo.txid, utxo.txindex, false);
result ? unspentAsTip.push(utxo) : spentAsTip.push(utxo);
}
return {spentAsTip, unspentAsTip};
}
protected async $parseBitcoinBlock(block: IBitcoinApi.Block, spentAsTip: any[], unspentAsTip: any[], confirmedTip: number, redeemAddressesData: any[] = []) {
const redeemAddresses: string[] = redeemAddressesData.map(redeemAddress => redeemAddress.bitcoinaddress);
for (const tx of block.tx) {
let mightRedeemInThisTx = false;
// Check if the Federation UTXOs that was spent as of tip are spent in this block
for (const input of tx.vin) {
const txo = spentAsTip.find(txo => txo.txid === input.txid && txo.txindex === input.vout);
if (txo) {
mightRedeemInThisTx = true; // A Federation UTXO is spent in this block: we might find a peg-out address in the outputs
if (txo.expiredAt > 0 ) {
if (input.txinwitness?.length !== 13) { // Check if the witness data of the input contains the 11 signatures: if it doesn't, emergency keys are being used
await DB.query(`UPDATE federation_txos SET unspent = 0, lastblockupdate = ?, lasttimeupdate = ?, emergencyKey = 1 WHERE txid = ? AND txindex = ?`, [block.height, block.time, txo.txid, txo.txindex]);
logger.debug(`Expired Federation UTXO ${txo.txid}:${txo.txindex} (${txo.amount} sats) was spent in block ${block.height} using emergency keys!`);
} else {
await DB.query(`UPDATE federation_txos SET unspent = 0, lastblockupdate = ?, lasttimeupdate = ? WHERE txid = ? AND txindex = ?`, [block.height, block.time, txo.txid, txo.txindex]);
logger.debug(`Expired Federation UTXO ${txo.txid}:${txo.txindex} (${txo.amount} sats) was spent in block ${block.height} using regular 11-of-15 signatures`);
}
} else {
await DB.query(`UPDATE federation_txos SET unspent = 0, lastblockupdate = ?, lasttimeupdate = ? WHERE txid = ? AND txindex = ?`, [block.height, block.time, txo.txid, txo.txindex]);
logger.debug(`Federation UTXO ${txo.txid}:${txo.txindex} (${txo.amount} sats) was spent in block ${block.height}`);
}
// Remove the TXO from the utxo array
spentAsTip.splice(spentAsTip.indexOf(txo), 1);
}
}
// Check if an output is sent to a change address of the federation
for (const output of tx.vout) {
if (output.scriptPubKey.address && federationChangeAddresses.includes(output.scriptPubKey.address)) {
// Check that the UTXO was not already added in the DB by previous scans
const [rows_check] = await DB.query(`SELECT txid FROM federation_txos WHERE txid = ? AND txindex = ?`, [tx.txid, output.n]) as any[];
if (rows_check.length === 0) {
const timelock = output.scriptPubKey.address === federationChangeAddresses[0] ? 4032 : 2016; // P2WSH change address has a 4032 timelock, P2SH change address has a 2016 timelock
const query_utxos = `INSERT INTO federation_txos (txid, txindex, bitcoinaddress, amount, blocknumber, blocktime, unspent, lastblockupdate, lasttimeupdate, timelock, expiredAt, emergencyKey, pegtxid, pegindex, pegblocktime) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
const params_utxos: (string | number)[] = [tx.txid, output.n, output.scriptPubKey.address, output.value * 100000000, block.height, block.time, 1, block.height, 0, timelock, 0, 0, '', 0, 0];
await DB.query(query_utxos, params_utxos);
// Add the UTXO to the utxo array
spentAsTip.push({
txid: tx.txid,
txindex: output.n,
bitcoinaddress: output.scriptPubKey.address,
amount: output.value * 100000000,
blocknumber: block.height,
timelock: timelock,
expiredAt: 0,
});
logger.debug(`Added new Federation UTXO ${tx.txid}:${output.n} (${Math.round(output.value * 100000000)} sats), change address: ${output.scriptPubKey.address}`);
}
}
if (mightRedeemInThisTx && output.scriptPubKey.address && redeemAddresses.includes(output.scriptPubKey.address)) {
// Find the number of times output.scriptPubKey.address appears in redeemAddresses. There can be address reuse for peg-outs...
const matchingAddress: any[] = redeemAddressesData.filter(redeemAddress => redeemAddress.bitcoinaddress === output.scriptPubKey.address && -redeemAddress.amount === Math.round(output.value * 100000000));
if (matchingAddress.length > 0) {
if (matchingAddress.length > 1) {
// If there are more than one peg out address with the same amount, we can't know which one redeemed the UTXO: we take the oldest one
matchingAddress.sort((a, b) => a.datetime - b.datetime);
logger.debug(`Found redeem txid ${tx.txid}:${output.n} to peg-out address ${matchingAddress[0].bitcoinaddress}, amount ${matchingAddress[0].amount}, datetime ${matchingAddress[0].datetime}`);
} else {
logger.debug(`Found redeem txid ${tx.txid}:${output.n} to peg-out address ${matchingAddress[0].bitcoinaddress}, amount ${matchingAddress[0].amount}`);
}
const query_add_redeem = `UPDATE elements_pegs SET bitcointxid = ?, bitcoinindex = ? WHERE bitcoinaddress = ? AND amount = ? AND datetime = ?`;
const params_add_redeem: (string | number)[] = [tx.txid, output.n, matchingAddress[0].bitcoinaddress, matchingAddress[0].amount, matchingAddress[0].datetime];
await DB.query(query_add_redeem, params_add_redeem);
const index = redeemAddressesData.indexOf(matchingAddress[0]);
redeemAddressesData.splice(index, 1);
redeemAddresses.splice(index, 1);
} else { // The output amount does not match the peg-out amount... log it
logger.debug(`Found redeem txid ${tx.txid}:${output.n} to peg-out address ${output.scriptPubKey.address} but output amount ${Math.round(output.value * 100000000)} does not match the peg-out amount!`);
}
}
}
}
for (const utxo of spentAsTip) {
if (utxo.expiredAt === 0 && block.height >= utxo.blocknumber + utxo.timelock) { // The UTXO is expiring in this block
await DB.query(`UPDATE federation_txos SET lastblockupdate = ?, expiredAt = ? WHERE txid = ? AND txindex = ?`, [block.height, block.time, utxo.txid, utxo.txindex]);
} else {
await DB.query(`UPDATE federation_txos SET lastblockupdate = ? WHERE txid = ? AND txindex = ?`, [block.height, utxo.txid, utxo.txindex]);
}
}
for (const utxo of unspentAsTip) {
if (utxo.expiredAt === 0 && block.height >= utxo.blocknumber + utxo.timelock) { // The UTXO is expiring in this block
await DB.query(`UPDATE federation_txos SET unspent = 0, lastblockupdate = ?, expiredAt = ? WHERE txid = ? AND txindex = ?`, [confirmedTip, block.time, utxo.txid, utxo.txindex]);
} else if (utxo.expiredAt === 0 && confirmedTip >= utxo.blocknumber + utxo.timelock) { // The UTXO is expiring before the tip: we need to keep track of it
await DB.query(`UPDATE federation_txos SET lastblockupdate = ? WHERE txid = ? AND txindex = ?`, [utxo.blocknumber + utxo.timelock - 1, utxo.txid, utxo.txindex]);
} else {
await DB.query(`UPDATE federation_txos SET lastblockupdate = ? WHERE txid = ? AND txindex = ?`, [confirmedTip, utxo.txid, utxo.txindex]);
}
}
}
protected async $saveLastBlockAuditToDatabase(blockHeight: number) {
const query = `UPDATE state SET number = ? WHERE name = 'last_bitcoin_block_audit'`;
await DB.query(query, [blockHeight]);
}
// Get the bitcoin block where the audit process was last updated
protected async $getAuditProgress(): Promise<any> {
const lastblockaudit = await this.$getLastBlockAudit();
const bitcoinBlocksToSync = await this.$getBitcoinBlockchainState();
return {
lastBlockAudit: lastblockaudit,
confirmedTip: bitcoinBlocksToSync.bitcoinBlocks - auditBlockOffsetWithTip,
};
}
// Get the bitcoin blocks remaining to be synced
protected async $getBitcoinBlockchainState(): Promise<any> {
const result = await bitcoinSecondClient.getBlockchainInfo();
return {
bitcoinBlocks: result.blocks,
bitcoinHeaders: result.headers,
}
}
protected async $getLastBlockAudit(): Promise<number> {
const query = `SELECT number FROM state WHERE name = 'last_bitcoin_block_audit'`;
const [rows] = await DB.query(query);
return rows[0]['number'];
}
protected async $getRedeemAddressesToScan(): Promise<any[]> {
const query = `SELECT datetime, amount, bitcoinaddress FROM elements_pegs where amount < 0 AND bitcoinaddress != '' AND bitcointxid = '';`;
const [rows]: any[] = await DB.query(query);
return rows;
}
protected isDust(amount: number, feeRate: number): boolean {
return amount <= (450 * feeRate); // A P2WSH 11-of-15 multisig input is around 450 bytes
}
///////////// DATA QUERY //////////////
public async $getAuditStatus(): Promise<any> {
const lastBlockAudit = await this.$getLastBlockAudit();
const bitcoinBlocksToSync = await this.$getBitcoinBlockchainState();
return {
bitcoinBlocks: bitcoinBlocksToSync.bitcoinBlocks,
bitcoinHeaders: bitcoinBlocksToSync.bitcoinHeaders,
lastBlockAudit: lastBlockAudit,
isAuditSynced: bitcoinBlocksToSync.bitcoinHeaders - bitcoinBlocksToSync.bitcoinBlocks <= 2 && bitcoinBlocksToSync.bitcoinBlocks - lastBlockAudit <= 3,
};
}
public async $getPegDataByMonth(): Promise<any> {
const query = `SELECT SUM(amount) AS amount, DATE_FORMAT(FROM_UNIXTIME(datetime), '%Y-%m-01') AS date FROM elements_pegs GROUP BY DATE_FORMAT(FROM_UNIXTIME(datetime), '%Y%m')`;
const [rows] = await DB.query(query);
return rows;
}
public async $getFederationReservesByMonth(): Promise<any> {
const query = `
SELECT SUM(amount) AS amount, DATE_FORMAT(FROM_UNIXTIME(blocktime), '%Y-%m-01') AS date FROM federation_txos
WHERE
(blocktime > UNIX_TIMESTAMP(LAST_DAY(FROM_UNIXTIME(blocktime) - INTERVAL 1 MONTH) + INTERVAL 1 DAY))
AND
((unspent = 1) OR (unspent = 0 AND lasttimeupdate > UNIX_TIMESTAMP(LAST_DAY(FROM_UNIXTIME(blocktime)) + INTERVAL 1 DAY)))
AND
(expiredAt = 0 OR expiredAt > UNIX_TIMESTAMP(LAST_DAY(FROM_UNIXTIME(blocktime)) + INTERVAL 1 DAY))
GROUP BY
date;`;
const [rows] = await DB.query(query);
return rows;
}
// Get the current L-BTC pegs and the last Liquid block it was updated
public async $getCurrentLbtcSupply(): Promise<any> {
const [rows] = await DB.query(`SELECT SUM(amount) AS LBTC_supply FROM elements_pegs;`);
const lastblockupdate = await this.$getLatestBlockHeightFromDatabase();
const hash = await bitcoinClient.getBlockHash(lastblockupdate);
return {
amount: rows[0]['LBTC_supply'],
lastBlockUpdate: lastblockupdate,
hash: hash
};
}
// Get the current reserves of the federation and the last Bitcoin block it was updated
public async $getCurrentFederationReserves(): Promise<any> {
const [rows] = await DB.query(`SELECT SUM(amount) AS total_balance FROM federation_txos WHERE unspent = 1 AND expiredAt = 0;`);
const lastblockaudit = await this.$getLastBlockAudit();
const hash = await bitcoinSecondClient.getBlockHash(lastblockaudit);
return {
amount: rows[0]['total_balance'],
lastBlockUpdate: lastblockaudit,
hash: hash
};
}
// Get all of the federation addresses, most balances first
public async $getFederationAddresses(): Promise<any> {
const query = `SELECT bitcoinaddress, SUM(amount) AS balance FROM federation_txos WHERE unspent = 1 AND expiredAt = 0 GROUP BY bitcoinaddress ORDER BY balance DESC;`;
const [rows] = await DB.query(query);
return rows;
}
// Get all of the UTXOs held by the federation, most recent first
public async $getFederationUtxos(): Promise<any> {
const query = `SELECT txid, txindex, bitcoinaddress, amount, blocknumber, blocktime, pegtxid, pegindex, pegblocktime, timelock, expiredAt FROM federation_txos WHERE unspent = 1 AND expiredAt = 0 ORDER BY blocktime DESC;`;
const [rows] = await DB.query(query);
return rows;
}
// Get expired UTXOs, most recent first
public async $getExpiredUtxos(): Promise<any> {
const query = `SELECT txid, txindex, bitcoinaddress, amount, blocknumber, blocktime, pegtxid, pegindex, pegblocktime, timelock, expiredAt FROM federation_txos WHERE unspent = 1 AND expiredAt > 0 ORDER BY blocktime DESC;`;
const [rows]: any[] = await DB.query(query);
const feeRate = Math.round((await bitcoinSecondClient.estimateSmartFee(1)).feerate * 100000000 / 1000);
for (const row of rows) {
row.isDust = this.isDust(row.amount, feeRate);
}
return rows;
}
// Get utxos that were spent using emergency keys
public async $getEmergencySpentUtxos(): Promise<any> {
const query = `SELECT txid, txindex, bitcoinaddress, amount, blocknumber, blocktime, pegtxid, pegindex, pegblocktime, timelock, expiredAt FROM federation_txos WHERE emergencyKey = 1 ORDER BY blocktime DESC;`;
const [rows] = await DB.query(query);
return rows;
}
// Get the total number of federation addresses
public async $getFederationAddressesNumber(): Promise<any> {
const query = `SELECT COUNT(DISTINCT bitcoinaddress) AS address_count FROM federation_txos WHERE unspent = 1 AND expiredAt = 0;`;
const [rows] = await DB.query(query);
return rows[0];
}
// Get the total number of federation utxos
public async $getFederationUtxosNumber(): Promise<any> {
const query = `SELECT COUNT(*) AS utxo_count FROM federation_txos WHERE unspent = 1 AND expiredAt = 0;`;
const [rows] = await DB.query(query);
return rows[0];
}
// Get the total number of emergency spent utxos and their total amount
public async $getEmergencySpentUtxosStats(): Promise<any> {
const query = `SELECT COUNT(*) AS utxo_count, SUM(amount) AS total_amount FROM federation_txos WHERE emergencyKey = 1;`;
const [rows] = await DB.query(query);
return rows[0];
}
// Get recent pegs in / out
public async $getPegsList(count: number = 0): Promise<any> {
const query = `SELECT txid, txindex, amount, bitcoinaddress, bitcointxid, bitcoinindex, datetime AS blocktime FROM elements_pegs ORDER BY block DESC LIMIT 15 OFFSET ?;`;
const [rows] = await DB.query(query, [count]);
return rows;
}
// Get all peg in / out from the last month
public async $getPegsVolumeDaily(): Promise<any> {
const pegInQuery = await DB.query(`SELECT SUM(amount) AS volume, COUNT(*) AS number FROM elements_pegs WHERE amount > 0 and datetime > UNIX_TIMESTAMP(TIMESTAMPADD(DAY, -1, CURRENT_TIMESTAMP()));`);
const pegOutQuery = await DB.query(`SELECT SUM(amount) AS volume, COUNT(*) AS number FROM elements_pegs WHERE amount < 0 and datetime > UNIX_TIMESTAMP(TIMESTAMPADD(DAY, -1, CURRENT_TIMESTAMP()));`);
return [
pegInQuery[0][0],
pegOutQuery[0][0]
];
}
// Get the total pegs number
public async $getPegsCount(): Promise<any> {
const [rows] = await DB.query(`SELECT COUNT(*) AS pegs_count FROM elements_pegs;`);
return rows[0];
}
}
export default new ElementsParser();

View File

@@ -0,0 +1,38 @@
import * as fs from 'fs';
import logger from '../../logger';
class Icons {
private static FILE_NAME = '/elements/asset_registry_db/icons.json';
private iconIds: string[] = [];
private icons: { [assetId: string]: string; } = {};
constructor() {}
public loadIcons() {
if (!fs.existsSync(Icons.FILE_NAME)) {
logger.warn(`${Icons.FILE_NAME} does not exist. No Liquid icons loaded.`);
return;
}
const cacheData = fs.readFileSync(Icons.FILE_NAME, 'utf8');
this.icons = JSON.parse(cacheData);
for (const i in this.icons) {
this.iconIds.push(i);
}
logger.debug(`Liquid icons has been loaded.`);
}
public getIconByAssetId(assetId: string): Buffer | undefined {
const icon = this.icons[assetId];
if (icon) {
return Buffer.from(icon, 'base64');
}
}
public getAllIconIds() {
return this.iconIds;
}
}
export default new Icons();

View File

@@ -0,0 +1,259 @@
import axios from 'axios';
import { Application, Request, Response } from 'express';
import config from '../../config';
import elementsParser from './elements-parser';
import icons from './icons';
class LiquidRoutes {
public initRoutes(app: Application) {
app
.get(config.MEMPOOL.API_URL_PREFIX + 'assets/icons', this.getAllLiquidIcon)
.get(config.MEMPOOL.API_URL_PREFIX + 'assets/featured', this.$getAllFeaturedLiquidAssets)
.get(config.MEMPOOL.API_URL_PREFIX + 'asset/:assetId/icon', this.getLiquidIcon)
.get(config.MEMPOOL.API_URL_PREFIX + 'assets/group/:id', this.$getAssetGroup)
;
if (config.DATABASE.ENABLED) {
app
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/pegs', this.$getElementsPegs)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/pegs/month', this.$getElementsPegsByMonth)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/pegs/list/:count', this.$getPegsList)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/pegs/volume', this.$getPegsVolumeDaily)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/pegs/count', this.$getPegsCount)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/reserves', this.$getFederationReserves)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/reserves/month', this.$getFederationReservesByMonth)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/reserves/addresses', this.$getFederationAddresses)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/reserves/addresses/total', this.$getFederationAddressesNumber)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/reserves/utxos', this.$getFederationUtxos)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/reserves/utxos/total', this.$getFederationUtxosNumber)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/reserves/utxos/expired', this.$getExpiredUtxos)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/reserves/utxos/emergency-spent', this.$getEmergencySpentUtxos)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/reserves/utxos/emergency-spent/stats', this.$getEmergencySpentUtxosStats)
.get(config.MEMPOOL.API_URL_PREFIX + 'liquid/reserves/status', this.$getFederationAuditStatus)
;
}
}
private getLiquidIcon(req: Request, res: Response) {
const result = icons.getIconByAssetId(req.params.assetId);
if (result) {
res.setHeader('content-type', 'image/png');
res.setHeader('content-length', result.length);
res.send(result);
} else {
res.status(404).send('Asset icon not found');
}
}
private getAllLiquidIcon(req: Request, res: Response) {
const result = icons.getAllIconIds();
if (result) {
res.json(result);
} else {
res.status(404).send('Asset icons not found');
}
}
private async $getAllFeaturedLiquidAssets(req: Request, res: Response) {
try {
const response = await axios.get(`${config.EXTERNAL_DATA_SERVER.LIQUID_API}/assets/featured`, { responseType: 'stream', timeout: 10000 });
response.data.pipe(res);
} catch (e) {
res.status(500).end();
}
}
private async $getAssetGroup(req: Request, res: Response) {
try {
const response = await axios.get(`${config.EXTERNAL_DATA_SERVER.LIQUID_API}/assets/group/${parseInt(req.params.id, 10)}`,
{ responseType: 'stream', timeout: 10000 });
response.data.pipe(res);
} catch (e) {
res.status(500).end();
}
}
private async $getElementsPegsByMonth(req: Request, res: Response) {
try {
const pegs = await elementsParser.$getPegDataByMonth();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60 * 60).toUTCString());
res.json(pegs);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getFederationReservesByMonth(req: Request, res: Response) {
try {
const reserves = await elementsParser.$getFederationReservesByMonth();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60 * 60).toUTCString());
res.json(reserves);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getElementsPegs(req: Request, res: Response) {
try {
const currentSupply = await elementsParser.$getCurrentLbtcSupply();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(currentSupply);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getFederationReserves(req: Request, res: Response) {
try {
const currentReserves = await elementsParser.$getCurrentFederationReserves();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(currentReserves);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getFederationAuditStatus(req: Request, res: Response) {
try {
const auditStatus = await elementsParser.$getAuditStatus();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(auditStatus);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getFederationAddresses(req: Request, res: Response) {
try {
const federationAddresses = await elementsParser.$getFederationAddresses();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(federationAddresses);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getFederationAddressesNumber(req: Request, res: Response) {
try {
const federationAddresses = await elementsParser.$getFederationAddressesNumber();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(federationAddresses);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getFederationUtxos(req: Request, res: Response) {
try {
const federationUtxos = await elementsParser.$getFederationUtxos();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(federationUtxos);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getExpiredUtxos(req: Request, res: Response) {
try {
const expiredUtxos = await elementsParser.$getExpiredUtxos();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(expiredUtxos);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getFederationUtxosNumber(req: Request, res: Response) {
try {
const federationUtxos = await elementsParser.$getFederationUtxosNumber();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(federationUtxos);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getEmergencySpentUtxos(req: Request, res: Response) {
try {
const emergencySpentUtxos = await elementsParser.$getEmergencySpentUtxos();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(emergencySpentUtxos);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getEmergencySpentUtxosStats(req: Request, res: Response) {
try {
const emergencySpentUtxos = await elementsParser.$getEmergencySpentUtxosStats();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(emergencySpentUtxos);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getPegsList(req: Request, res: Response) {
try {
const recentPegs = await elementsParser.$getPegsList(parseInt(req.params?.count));
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(recentPegs);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getPegsVolumeDaily(req: Request, res: Response) {
try {
const pegsVolume = await elementsParser.$getPegsVolumeDaily();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(pegsVolume);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getPegsCount(req: Request, res: Response) {
try {
const pegsCount = await elementsParser.$getPegsCount();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
res.json(pegsCount);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
}
export default new LiquidRoutes();

View File

@@ -0,0 +1,32 @@
import { ILoadingIndicators } from '../mempool.interfaces';
class LoadingIndicators {
private loadingIndicators: ILoadingIndicators = {
'mempool': 0,
};
private progressChangedCallback: ((loadingIndicators: ILoadingIndicators) => void) | undefined;
constructor() { }
public setProgressChangedCallback(fn: (loadingIndicators: ILoadingIndicators) => void) {
this.progressChangedCallback = fn;
}
public setProgress(name: string, progressPercent: number, rounded: boolean = true) {
const newProgress = rounded === true ? Math.round(progressPercent) : progressPercent;
if (newProgress >= 100) {
delete this.loadingIndicators[name];
} else {
this.loadingIndicators[name] = newProgress;
}
if (this.progressChangedCallback) {
this.progressChangedCallback(this.loadingIndicators);
}
}
public getLoadingIndicators() {
return this.loadingIndicators;
}
}
export default new LoadingIndicators();

View File

@@ -0,0 +1,38 @@
interface ICache {
type: string;
id: string;
expires: Date;
data: any;
}
class MemoryCache {
private cache: ICache[] = [];
constructor() {
setInterval(this.cleanup.bind(this), 1000);
}
public set(type: string, id: string, data: any, secondsExpiry: number) {
const expiry = new Date();
expiry.setSeconds(expiry.getSeconds() + secondsExpiry);
this.cache.push({
type: type,
id: id,
data: data,
expires: expiry,
});
}
public get<T>(type: string, id: string): T | null {
const found = this.cache.find((cache) => cache.type === type && cache.id === id);
if (found) {
return found.data;
}
return null;
}
private cleanup() {
this.cache = this.cache.filter((cache) => cache.expires > (new Date()));
}
}
export default new MemoryCache();

View File

@@ -0,0 +1,770 @@
import { GbtGenerator, GbtResult, ThreadTransaction as RustThreadTransaction, ThreadAcceleration as RustThreadAcceleration } from 'rust-gbt';
import logger from '../logger';
import { MempoolBlock, MempoolTransactionExtended, MempoolBlockWithTransactions, MempoolBlockDelta, Ancestor, CompactThreadTransaction, EffectiveFeeStats, TransactionClassified, TransactionCompressed, MempoolDeltaChange, GbtCandidates, PoolTag } from '../mempool.interfaces';
import { Common, OnlineFeeStatsCalculator } from './common';
import config from '../config';
import { Worker } from 'worker_threads';
import path from 'path';
import mempool from './mempool';
import { Acceleration } from './services/acceleration';
import PoolsRepository from '../repositories/PoolsRepository';
const MAX_UINT32 = Math.pow(2, 32) - 1;
class MempoolBlocks {
private mempoolBlocks: MempoolBlockWithTransactions[] = [];
private mempoolBlockDeltas: MempoolBlockDelta[] = [];
private txSelectionWorker: Worker | null = null;
private rustInitialized: boolean = false;
private rustGbtGenerator: GbtGenerator = new GbtGenerator(config.MEMPOOL.BLOCK_WEIGHT_UNITS, config.MEMPOOL.MEMPOOL_BLOCKS_AMOUNT);
private nextUid: number = 1;
private uidMap: Map<number, string> = new Map(); // map short numerical uids to full txids
private txidMap: Map<string, number> = new Map(); // map full txids back to short numerical uids
private pools: { [id: number]: PoolTag } = {};
public getMempoolBlocks(): MempoolBlock[] {
return this.mempoolBlocks.map((block) => {
return {
blockSize: block.blockSize,
blockVSize: block.blockVSize,
nTx: block.nTx,
totalFees: block.totalFees,
medianFee: block.medianFee,
feeRange: block.feeRange,
};
});
}
public getMempoolBlocksWithTransactions(): MempoolBlockWithTransactions[] {
return this.mempoolBlocks;
}
public getMempoolBlockDeltas(): MempoolBlockDelta[] {
return this.mempoolBlockDeltas;
}
public async updatePools$(): Promise<void> {
if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) {
this.pools = {};
return;
}
const allPools = await PoolsRepository.$getPools();
this.pools = {};
for (const pool of allPools) {
this.pools[pool.uniqueId] = pool;
}
}
private calculateMempoolDeltas(prevBlocks: MempoolBlockWithTransactions[], mempoolBlocks: MempoolBlockWithTransactions[]): MempoolBlockDelta[] {
const mempoolBlockDeltas: MempoolBlockDelta[] = [];
for (let i = 0; i < Math.max(mempoolBlocks.length, prevBlocks.length); i++) {
let added: TransactionClassified[] = [];
let removed: string[] = [];
const changed: TransactionClassified[] = [];
if (mempoolBlocks[i] && !prevBlocks[i]) {
added = mempoolBlocks[i].transactions;
} else if (!mempoolBlocks[i] && prevBlocks[i]) {
removed = prevBlocks[i].transactions.map(tx => tx.txid);
} else if (mempoolBlocks[i] && prevBlocks[i]) {
const prevIds = {};
const newIds = {};
prevBlocks[i].transactions.forEach(tx => {
prevIds[tx.txid] = tx;
});
mempoolBlocks[i].transactions.forEach(tx => {
newIds[tx.txid] = true;
});
prevBlocks[i].transactions.forEach(tx => {
if (!newIds[tx.txid]) {
removed.push(tx.txid);
}
});
mempoolBlocks[i].transactions.forEach(tx => {
if (!prevIds[tx.txid]) {
added.push(tx);
} else if (tx.rate !== prevIds[tx.txid].rate || tx.acc !== prevIds[tx.txid].acc) {
changed.push(tx);
}
});
}
mempoolBlockDeltas.push({
added: added.map(this.compressTx),
removed,
changed: changed.map(this.compressDeltaChange),
});
}
return mempoolBlockDeltas;
}
public async $makeBlockTemplates(transactions: string[], newMempool: { [txid: string]: MempoolTransactionExtended }, candidates: GbtCandidates | undefined, saveResults: boolean = false, useAccelerations: boolean = false, accelerationPool?: number): Promise<MempoolBlockWithTransactions[]> {
const start = Date.now();
// reset mempool short ids
if (saveResults) {
this.resetUids();
}
// set missing short ids
for (const txid of transactions) {
const tx = newMempool[txid];
this.setUid(tx, !saveResults);
}
const accelerations = useAccelerations ? mempool.getAccelerations() : {};
// prepare a stripped down version of the mempool with only the minimum necessary data
// to reduce the overhead of passing this data to the worker thread
const strippedMempool: Map<number, CompactThreadTransaction> = new Map();
for (const txid of transactions) {
const entry = newMempool[txid];
if (entry.uid !== null && entry.uid !== undefined) {
const stripped = {
uid: entry.uid,
fee: entry.fee + (useAccelerations && (!accelerationPool || accelerations[entry.txid]?.pools?.includes(accelerationPool)) ? (accelerations[entry.txid]?.feeDelta || 0) : 0),
weight: (entry.adjustedVsize * 4),
sigops: entry.sigops,
feePerVsize: entry.adjustedFeePerVsize || entry.feePerVsize,
effectiveFeePerVsize: entry.effectiveFeePerVsize || entry.adjustedFeePerVsize || entry.feePerVsize,
inputs: entry.vin.map(v => this.getUid(newMempool[v.txid])).filter(uid => (uid !== null && uid !== undefined)) as number[],
};
strippedMempool.set(entry.uid, stripped);
}
}
// (re)initialize tx selection worker thread
if (!this.txSelectionWorker) {
this.txSelectionWorker = new Worker(path.resolve(__dirname, './tx-selection-worker.js'));
// if the thread throws an unexpected error, or exits for any other reason,
// reset worker state so that it will be re-initialized on the next run
this.txSelectionWorker.once('error', () => {
this.txSelectionWorker = null;
});
this.txSelectionWorker.once('exit', () => {
this.txSelectionWorker = null;
});
}
// run the block construction algorithm in a separate thread, and wait for a result
let threadErrorListener;
try {
const workerResultPromise = new Promise<{ blocks: number[][], rates: Map<number, number>, clusters: Map<number, number[]> }>((resolve, reject) => {
threadErrorListener = reject;
this.txSelectionWorker?.once('message', (result): void => {
resolve(result);
});
this.txSelectionWorker?.once('error', reject);
});
this.txSelectionWorker.postMessage({ type: 'set', mempool: strippedMempool });
const { blocks, rates, clusters } = this.convertResultTxids(await workerResultPromise);
// clean up thread error listener
this.txSelectionWorker?.removeListener('error', threadErrorListener);
const processed = this.processBlockTemplates(newMempool, blocks, null, Object.entries(rates), Object.values(clusters), candidates, accelerations, accelerationPool, saveResults);
logger.debug(`makeBlockTemplates completed in ${(Date.now() - start)/1000} seconds`);
return processed;
} catch (e) {
logger.err('makeBlockTemplates failed. ' + (e instanceof Error ? e.message : e));
}
return this.mempoolBlocks;
}
public async $updateBlockTemplates(transactions: string[], newMempool: { [txid: string]: MempoolTransactionExtended }, added: MempoolTransactionExtended[], removed: MempoolTransactionExtended[], candidates: GbtCandidates | undefined, accelerationDelta: string[] = [], saveResults: boolean = false, useAccelerations: boolean = false): Promise<void> {
if (!this.txSelectionWorker) {
// need to reset the worker
await this.$makeBlockTemplates(transactions, newMempool, candidates, saveResults, useAccelerations);
return;
}
const start = Date.now();
const accelerations = useAccelerations ? mempool.getAccelerations() : {};
const addedAndChanged: MempoolTransactionExtended[] = useAccelerations ? accelerationDelta.map(txid => newMempool[txid]).filter(tx => tx != null).concat(added) : added;
for (const tx of addedAndChanged) {
this.setUid(tx, false);
}
const removedTxs = removed.filter(tx => tx.uid != null) as MempoolTransactionExtended[];
// prepare a stripped down version of the mempool with only the minimum necessary data
// to reduce the overhead of passing this data to the worker thread
const addedStripped: CompactThreadTransaction[] = addedAndChanged.filter(entry => entry.uid != null).map(entry => {
return {
uid: entry.uid || 0,
fee: entry.fee + (useAccelerations ? (accelerations[entry.txid]?.feeDelta || 0) : 0),
weight: (entry.adjustedVsize * 4),
sigops: entry.sigops,
feePerVsize: entry.adjustedFeePerVsize || entry.feePerVsize,
effectiveFeePerVsize: entry.effectiveFeePerVsize || entry.adjustedFeePerVsize || entry.feePerVsize,
inputs: entry.vin.map(v => this.getUid(newMempool[v.txid])).filter(uid => (uid !== null && uid !== undefined)) as number[],
};
});
// run the block construction algorithm in a separate thread, and wait for a result
let threadErrorListener;
try {
const workerResultPromise = new Promise<{ blocks: number[][], rates: Map<number, number>, clusters: Map<number, number[]> }>((resolve, reject) => {
threadErrorListener = reject;
this.txSelectionWorker?.once('message', (result): void => {
resolve(result);
});
this.txSelectionWorker?.once('error', reject);
});
this.txSelectionWorker.postMessage({ type: 'update', added: addedStripped, removed: removedTxs.map(tx => tx.uid) as number[] });
const { blocks, rates, clusters } = this.convertResultTxids(await workerResultPromise);
this.removeUids(removedTxs);
// clean up thread error listener
this.txSelectionWorker?.removeListener('error', threadErrorListener);
this.processBlockTemplates(newMempool, blocks, null, Object.entries(rates), Object.values(clusters), candidates, accelerations, null, saveResults);
logger.debug(`updateBlockTemplates completed in ${(Date.now() - start) / 1000} seconds`);
} catch (e) {
logger.err('updateBlockTemplates failed. ' + (e instanceof Error ? e.message : e));
}
}
private resetRustGbt(): void {
this.rustInitialized = false;
this.rustGbtGenerator = new GbtGenerator(config.MEMPOOL.BLOCK_WEIGHT_UNITS, config.MEMPOOL.MEMPOOL_BLOCKS_AMOUNT);
}
public async $rustMakeBlockTemplates(txids: string[], newMempool: { [txid: string]: MempoolTransactionExtended }, candidates: GbtCandidates | undefined, saveResults: boolean = false, useAccelerations: boolean = false, accelerationPool?: number): Promise<MempoolBlockWithTransactions[]> {
const start = Date.now();
// reset mempool short ids
if (saveResults) {
this.resetUids();
}
const transactions = txids.map(txid => newMempool[txid]).filter(tx => tx != null);
// set missing short ids
for (const tx of transactions) {
this.setUid(tx, !saveResults);
}
// set short ids for transaction inputs
for (const tx of transactions) {
tx.inputs = tx.vin.map(v => this.getUid(newMempool[v.txid])).filter(uid => (uid !== null && uid !== undefined)) as number[];
}
const accelerations = useAccelerations ? mempool.getAccelerations() : {};
const acceleratedList = accelerationPool ? Object.values(accelerations).filter(acc => newMempool[acc.txid] && acc.pools.includes(accelerationPool)) : Object.values(accelerations).filter(acc => newMempool[acc.txid]);
const convertedAccelerations = acceleratedList.map(acc => {
this.setUid(newMempool[acc.txid], true);
return {
uid: this.getUid(newMempool[acc.txid]),
delta: acc.feeDelta,
};
});
// run the block construction algorithm in a separate thread, and wait for a result
const rustGbt = saveResults ? this.rustGbtGenerator : new GbtGenerator(config.MEMPOOL.BLOCK_WEIGHT_UNITS, config.MEMPOOL.MEMPOOL_BLOCKS_AMOUNT);
try {
const { blocks, blockWeights, rates, clusters, overflow } = this.convertNapiResultTxids(
await rustGbt.make(transactions as RustThreadTransaction[], convertedAccelerations as RustThreadAcceleration[], this.nextUid),
);
if (saveResults) {
this.rustInitialized = true;
}
const expectedSize = transactions.length;
const resultMempoolSize = blocks.reduce((total, block) => total + block.length, 0) + overflow.length;
logger.debug(`RUST updateBlockTemplates returned ${resultMempoolSize} txs out of ${expectedSize} in the mempool, ${overflow.length} were unmineable`);
const processed = this.processBlockTemplates(newMempool, blocks, blockWeights, rates, clusters, candidates, accelerations, accelerationPool, saveResults);
logger.debug(`RUST makeBlockTemplates completed in ${(Date.now() - start)/1000} seconds`);
return processed;
} catch (e) {
logger.err('RUST makeBlockTemplates failed. ' + (e instanceof Error ? e.message : e));
if (saveResults) {
this.resetRustGbt();
}
}
return this.mempoolBlocks;
}
public async $oneOffRustBlockTemplates(transactions: string[], newMempool: { [txid: string]: MempoolTransactionExtended }, candidates: GbtCandidates | undefined, useAccelerations: boolean, accelerationPool?: number): Promise<MempoolBlockWithTransactions[]> {
return this.$rustMakeBlockTemplates(transactions, newMempool, candidates, false, useAccelerations, accelerationPool);
}
public async $rustUpdateBlockTemplates(transactions: string[], newMempool: { [txid: string]: MempoolTransactionExtended }, added: MempoolTransactionExtended[], removed: MempoolTransactionExtended[], candidates: GbtCandidates | undefined, useAccelerations: boolean, accelerationPool?: number): Promise<MempoolBlockWithTransactions[]> {
// GBT optimization requires that uids never get too sparse
// as a sanity check, we should also explicitly prevent uint32 uid overflow
if (this.nextUid + added.length >= Math.min(Math.max(262144, 2 * transactions.length), MAX_UINT32)) {
this.resetRustGbt();
}
if (!this.rustInitialized) {
// need to reset the worker
return this.$rustMakeBlockTemplates(transactions, newMempool, candidates, true, useAccelerations, accelerationPool);
}
const start = Date.now();
// set missing short ids
for (const tx of added) {
this.setUid(tx, false);
}
// set short ids for transaction inputs
for (const tx of added) {
tx.inputs = tx.vin.map(v => this.getUid(newMempool[v.txid])).filter(uid => (uid !== null && uid !== undefined)) as number[];
}
const removedTxs = removed.filter(tx => tx.uid != null) as MempoolTransactionExtended[];
const accelerations = useAccelerations ? mempool.getAccelerations() : {};
const acceleratedList = accelerationPool ? Object.values(accelerations).filter(acc => newMempool[acc.txid] && acc.pools.includes(accelerationPool)) : Object.values(accelerations).filter(acc => newMempool[acc.txid]);
const convertedAccelerations = acceleratedList.map(acc => {
this.setUid(newMempool[acc.txid], true);
return {
uid: this.getUid(newMempool[acc.txid]),
delta: acc.feeDelta,
};
});
// run the block construction algorithm in a separate thread, and wait for a result
try {
const { blocks, blockWeights, rates, clusters, overflow } = this.convertNapiResultTxids(
await this.rustGbtGenerator.update(
added as RustThreadTransaction[],
removedTxs.map(tx => tx.uid) as number[],
convertedAccelerations as RustThreadAcceleration[],
this.nextUid,
),
);
const resultMempoolSize = blocks.reduce((total, block) => total + block.length, 0) + overflow.length;
logger.debug(`RUST updateBlockTemplates returned ${resultMempoolSize} txs out of ${transactions.length} candidates, ${overflow.length} were unmineable`);
if (transactions.length !== resultMempoolSize) {
throw new Error(`GBT returned wrong number of transactions ${transactions.length} vs ${resultMempoolSize}, cache is probably out of sync`);
} else {
const processed = this.processBlockTemplates(newMempool, blocks, blockWeights, rates, clusters, candidates, accelerations, accelerationPool, true);
this.removeUids(removedTxs);
logger.debug(`RUST updateBlockTemplates completed in ${(Date.now() - start)/1000} seconds`);
return processed;
}
} catch (e) {
logger.err('RUST updateBlockTemplates failed. ' + (e instanceof Error ? e.message : e));
this.resetRustGbt();
return this.mempoolBlocks;
}
}
private processBlockTemplates(mempool: { [txid: string]: MempoolTransactionExtended }, blocks: string[][], blockWeights: number[] | null, rates: [string, number][], clusters: string[][], candidates: GbtCandidates | undefined, accelerations: { [txid: string]: Acceleration }, accelerationPool, saveResults): MempoolBlockWithTransactions[] {
for (const txid of Object.keys(candidates?.txs ?? mempool)) {
if (txid in mempool) {
mempool[txid].cpfpDirty = false;
mempool[txid].ancestors = [];
mempool[txid].descendants = [];
mempool[txid].bestDescendant = null;
}
}
for (const [txid, rate] of rates) {
if (txid in mempool) {
mempool[txid].cpfpDirty = (rate !== mempool[txid].effectiveFeePerVsize);
mempool[txid].effectiveFeePerVsize = rate;
mempool[txid].cpfpChecked = true;
}
}
const lastBlockIndex = blocks.length - 1;
let hasBlockStack = blocks.length >= 8;
let stackWeight;
let feeStatsCalculator: OnlineFeeStatsCalculator | void;
if (hasBlockStack) {
if (blockWeights && blockWeights[7] !== null) {
stackWeight = blockWeights[7];
} else {
stackWeight = blocks[lastBlockIndex].reduce((total, tx) => total + (mempool[tx]?.weight || 0), 0);
}
hasBlockStack = stackWeight > config.MEMPOOL.BLOCK_WEIGHT_UNITS;
feeStatsCalculator = new OnlineFeeStatsCalculator(stackWeight, 0.5, [10, 20, 30, 40, 50, 60, 70, 80, 90]);
}
for (const cluster of clusters) {
for (const memberTxid of cluster) {
const mempoolTx = mempool[memberTxid];
if (mempoolTx) {
const ancestors: Ancestor[] = [];
const descendants: Ancestor[] = [];
let matched = false;
cluster.forEach(txid => {
if (txid === memberTxid) {
matched = true;
} else {
if (!mempool[txid]) {
console.log('txid missing from mempool! ', txid, candidates?.txs[txid]);
}
const relative = {
txid: txid,
fee: mempool[txid].fee,
weight: (mempool[txid].adjustedVsize * 4),
};
if (matched) {
descendants.push(relative);
mempoolTx.lastBoosted = Math.max(mempoolTx.lastBoosted || 0, mempool[txid].firstSeen || 0);
} else {
ancestors.push(relative);
}
}
});
if (mempoolTx.ancestors?.length !== ancestors.length || mempoolTx.descendants?.length !== descendants.length) {
mempoolTx.cpfpDirty = true;
}
Object.assign(mempoolTx, {ancestors, descendants, bestDescendant: null, cpfpChecked: true});
}
}
}
const isAcceleratedBy : { [txid: string]: number[] | false } = {};
const sizeLimit = (config.MEMPOOL.BLOCK_WEIGHT_UNITS / 4) * 1.2;
// update this thread's mempool with the results
let mempoolTx: MempoolTransactionExtended;
const mempoolBlocks: MempoolBlockWithTransactions[] = blocks.map((block, blockIndex) => {
let totalSize = 0;
let totalVsize = 0;
let totalWeight = 0;
let totalFees = 0;
const transactions: MempoolTransactionExtended[] = [];
// backfill purged transactions
if (candidates?.txs && blockIndex === blocks.length - 1) {
for (const txid of Object.keys(mempool)) {
if (!candidates.txs[txid]) {
block.push(txid);
}
}
}
for (const txid of block) {
if (txid) {
mempoolTx = mempool[txid];
// save position in projected blocks
mempoolTx.position = {
block: blockIndex,
vsize: totalVsize + (mempoolTx.vsize / 2),
};
const acceleration = accelerations[txid];
if (isAcceleratedBy[txid] || (acceleration && (!accelerationPool || acceleration.pools.includes(accelerationPool)))) {
if (!mempoolTx.acceleration) {
mempoolTx.cpfpDirty = true;
}
mempoolTx.acceleration = true;
mempoolTx.acceleratedBy = isAcceleratedBy[txid] || acceleration?.pools;
mempoolTx.acceleratedAt = acceleration?.added;
mempoolTx.feeDelta = acceleration?.feeDelta;
for (const ancestor of mempoolTx.ancestors || []) {
if (!mempool[ancestor.txid].acceleration) {
mempool[ancestor.txid].cpfpDirty = true;
}
mempool[ancestor.txid].acceleration = true;
mempool[ancestor.txid].acceleratedBy = mempoolTx.acceleratedBy;
mempool[ancestor.txid].acceleratedAt = mempoolTx.acceleratedAt;
mempool[ancestor.txid].feeDelta = mempoolTx.feeDelta;
isAcceleratedBy[ancestor.txid] = mempoolTx.acceleratedBy;
}
} else {
if (mempoolTx.acceleration) {
mempoolTx.cpfpDirty = true;
}
delete mempoolTx.acceleration;
}
// online calculation of stack-of-blocks fee stats
if (hasBlockStack && blockIndex === lastBlockIndex && feeStatsCalculator) {
feeStatsCalculator.processNext(mempoolTx);
}
totalSize += mempoolTx.size;
totalVsize += mempoolTx.vsize;
totalWeight += mempoolTx.weight;
totalFees += mempoolTx.fee;
if (totalVsize <= sizeLimit) {
transactions.push(mempoolTx);
}
}
}
return this.dataToMempoolBlocks(
block,
transactions,
totalSize,
totalWeight,
totalFees,
(hasBlockStack && blockIndex === lastBlockIndex && feeStatsCalculator) ? feeStatsCalculator.getRawFeeStats() : undefined,
);
});
if (saveResults) {
const deltas = this.calculateMempoolDeltas(this.mempoolBlocks, mempoolBlocks);
this.mempoolBlocks = mempoolBlocks;
this.mempoolBlockDeltas = deltas;
this.updateAccelerationPositions(mempool, accelerations, mempoolBlocks);
}
return mempoolBlocks;
}
private dataToMempoolBlocks(transactionIds: string[], transactions: MempoolTransactionExtended[], totalSize: number, totalWeight: number, totalFees: number, feeStats?: EffectiveFeeStats ): MempoolBlockWithTransactions {
if (!feeStats) {
feeStats = Common.calcEffectiveFeeStatistics(transactions);
}
return {
blockSize: totalSize,
blockVSize: (totalWeight / 4), // fractional vsize to avoid rounding errors
nTx: transactionIds.length,
totalFees: totalFees,
medianFee: feeStats.medianFee, // Common.percentile(transactions.map((tx) => tx.effectiveFeePerVsize), config.MEMPOOL.RECOMMENDED_FEE_PERCENTILE),
feeRange: feeStats.feeRange, //Common.getFeesInRange(transactions, rangeLength),
transactionIds: transactionIds,
transactions: transactions.map((tx) => Common.classifyTransaction(tx)),
};
}
private resetUids(): void {
this.uidMap.clear();
this.txidMap.clear();
this.nextUid = 1;
}
private setUid(tx: MempoolTransactionExtended, skipSet = false): number {
if (!this.txidMap.has(tx.txid) || !skipSet) {
const uid = this.nextUid;
this.nextUid++;
this.uidMap.set(uid, tx.txid);
this.txidMap.set(tx.txid, uid);
tx.uid = uid;
return uid;
} else {
tx.uid = this.txidMap.get(tx.txid) as number;
return tx.uid;
}
}
private getUid(tx: MempoolTransactionExtended): number | void {
if (tx) {
return this.txidMap.get(tx.txid);
}
}
private removeUids(txs: MempoolTransactionExtended[]): void {
for (const tx of txs) {
const uid = this.txidMap.get(tx.txid);
if (uid != null) {
this.uidMap.delete(uid);
this.txidMap.delete(tx.txid);
}
tx.uid = undefined;
}
}
private convertResultTxids({ blocks, rates, clusters }: { blocks: number[][], rates: Map<number, number>, clusters: Map<number, number[]>})
: { blocks: string[][], rates: { [root: string]: number }, clusters: { [root: string]: string[] }} {
const convertedBlocks: string[][] = blocks.map(block => block.map(uid => {
return this.uidMap.get(uid) || '';
}));
const convertedRates = {};
for (const rateUid of rates.keys()) {
const rateTxid = this.uidMap.get(rateUid);
if (rateTxid) {
convertedRates[rateTxid] = rates.get(rateUid);
}
}
const convertedClusters = {};
for (const rootUid of clusters.keys()) {
const rootTxid = this.uidMap.get(rootUid);
if (rootTxid) {
const members = clusters.get(rootUid)?.map(uid => {
return this.uidMap.get(uid);
});
convertedClusters[rootTxid] = members;
}
}
return { blocks: convertedBlocks, rates: convertedRates, clusters: convertedClusters } as { blocks: string[][], rates: { [root: string]: number }, clusters: { [root: string]: string[] }};
}
private convertNapiResultTxids({ blocks, blockWeights, rates, clusters, overflow }: GbtResult)
: { blocks: string[][], blockWeights: number[], rates: [string, number][], clusters: string[][], overflow: string[] } {
const convertedBlocks: string[][] = blocks.map(block => block.map(uid => {
const txid = this.uidMap.get(uid);
if (txid !== undefined) {
return txid;
} else {
throw new Error('GBT returned a block containing a transaction with unknown uid');
}
}));
const convertedRates: [string, number][] = [];
for (const [rateUid, rate] of rates) {
const rateTxid = this.uidMap.get(rateUid) as string;
convertedRates.push([rateTxid, rate]);
}
const convertedClusters: string[][] = [];
for (const cluster of clusters) {
convertedClusters.push(cluster.map(uid => this.uidMap.get(uid)) as string[]);
}
const convertedOverflow: string[] = overflow.map(uid => {
const txid = this.uidMap.get(uid);
if (txid !== undefined) {
return txid;
} else {
throw new Error('GBT returned an unmineable transaction with unknown uid');
}
});
return { blocks: convertedBlocks, blockWeights, rates: convertedRates, clusters: convertedClusters, overflow: convertedOverflow };
}
public compressTx(tx: TransactionClassified): TransactionCompressed {
if (tx.acc) {
return [
tx.txid,
tx.fee,
tx.vsize,
tx.value,
Math.round((tx.rate || (tx.fee / tx.vsize)) * 100) / 100,
tx.flags,
tx.time || 0,
1,
];
} else {
return [
tx.txid,
tx.fee,
tx.vsize,
tx.value,
Math.round((tx.rate || (tx.fee / tx.vsize)) * 100) / 100,
tx.flags,
tx.time || 0,
];
}
}
public compressDeltaChange(tx: TransactionClassified): MempoolDeltaChange {
return [
tx.txid,
Math.round((tx.rate || (tx.fee / tx.vsize)) * 100) / 100,
tx.flags,
tx.acc ? 1 : 0,
];
}
// estimates and saves positions of accelerations in mining partner mempools
private updateAccelerationPositions(mempoolCache: { [txid: string]: MempoolTransactionExtended }, accelerations: { [txid: string]: Acceleration }, mempoolBlocks: MempoolBlockWithTransactions[]): void {
const accelerationPositions: { [txid: string]: { poolId: number, pool: string, block: number, vsize: number }[] } = {};
// keep track of simulated mempool blocks for each active pool
const pools: {
[pool: string]: { name: string, block: number, vsize: number, accelerations: string[], complete: boolean };
} = {};
// prepare a list of accelerations in ascending order (we'll pop items off the end of the list)
const accQueue: { acceleration: Acceleration, rate: number, vsize: number }[] = Object.values(accelerations).map(acc => {
let vsize = mempoolCache[acc.txid].vsize;
for (const ancestor of mempoolCache[acc.txid].ancestors || []) {
vsize += (ancestor.weight / 4);
}
return {
acceleration: acc,
rate: mempoolCache[acc.txid].effectiveFeePerVsize,
vsize
};
}).sort((a, b) => a.rate - b.rate);
// initialize the pool tracker
for (const { acceleration } of accQueue) {
accelerationPositions[acceleration.txid] = [];
for (const pool of acceleration.pools) {
if (!pools[pool]) {
pools[pool] = {
name: this.pools[pool]?.name || 'unknown',
block: 0,
vsize: 0,
accelerations: [],
complete: false,
};
}
pools[pool].accelerations.push(acceleration.txid);
}
for (const ancestor of mempoolCache[acceleration.txid].ancestors || []) {
accelerationPositions[ancestor.txid] = [];
}
}
for (const pool of Object.keys(pools)) {
// if any pools accepted *every* acceleration, we can just use the GBT result positions directly
if (pools[pool].accelerations.length === Object.keys(accelerations).length) {
pools[pool].complete = true;
}
}
let block = 0;
let index = 0;
let next = accQueue.pop();
// build simulated blocks for each pool by taking the best option from
// either the mempool or the list of accelerations.
while (next && block < mempoolBlocks.length) {
while (next && index < mempoolBlocks[block].transactions.length) {
const nextTx = mempoolBlocks[block].transactions[index];
if (next.rate >= (nextTx.rate || (nextTx.fee / nextTx.vsize))) {
for (const pool of next.acceleration.pools) {
if (pools[pool].vsize + next.vsize <= 999_000) {
pools[pool].vsize += next.vsize;
} else {
pools[pool].block++;
pools[pool].vsize = next.vsize;
}
// insert the acceleration into matching pool's blocks
if (pools[pool].complete && mempoolCache[next.acceleration.txid]?.position !== undefined) {
accelerationPositions[next.acceleration.txid].push({
...mempoolCache[next.acceleration.txid].position as { block: number, vsize: number },
poolId: pool,
pool: pools[pool].name
});
} else {
accelerationPositions[next.acceleration.txid].push({
poolId: pool,
pool: pools[pool].name,
block: pools[pool].block,
vsize: pools[pool].vsize - (next.vsize / 2),
});
}
// and any accelerated ancestors
for (const ancestor of mempoolCache[next.acceleration.txid].ancestors || []) {
if (pools[pool].complete && mempoolCache[ancestor.txid]?.position !== undefined) {
accelerationPositions[ancestor.txid].push({
...mempoolCache[ancestor.txid].position as { block: number, vsize: number },
poolId: pool,
pool: pools[pool].name,
});
} else {
accelerationPositions[ancestor.txid].push({
poolId: pool,
pool: pools[pool].name,
block: pools[pool].block,
vsize: pools[pool].vsize - (next.vsize / 2),
});
}
}
}
next = accQueue.pop();
} else {
// skip accelerated transactions and their CPFP ancestors
if (accelerationPositions[nextTx.txid] == null) {
// insert into all pools' blocks
for (const pool of Object.keys(pools)) {
if (pools[pool].vsize + nextTx.vsize <= 999_000) {
pools[pool].vsize += nextTx.vsize;
} else {
pools[pool].block++;
pools[pool].vsize = nextTx.vsize;
}
}
}
index++;
}
}
block++;
index = 0;
}
mempool.setAccelerationPositions(accelerationPositions);
}
}
export default new MempoolBlocks();

View File

@@ -1,35 +1,187 @@
const config = require('../../mempool-config.json');
import config from '../config';
import bitcoinApi from './bitcoin/bitcoin-api-factory';
import { ITransaction, IMempoolInfo, IMempool } from '../interfaces';
import { MempoolTransactionExtended, TransactionExtended, VbytesPerSecond, GbtCandidates } from '../mempool.interfaces';
import logger from '../logger';
import { Common } from './common';
import transactionUtils from './transaction-utils';
import { IBitcoinApi } from './bitcoin/bitcoin-api.interface';
import loadingIndicators from './loading-indicators';
import bitcoinClient from './bitcoin/bitcoin-client';
import bitcoinSecondClient from './bitcoin/bitcoin-second-client';
import rbfCache from './rbf-cache';
import { Acceleration } from './services/acceleration';
import redisCache from './redis-cache';
import blocks from './blocks';
class Mempool {
private mempool: IMempool = {};
private mempoolInfo: IMempoolInfo | undefined;
private mempoolChangedCallback: Function | undefined;
private inSync: boolean = false;
private mempoolCacheDelta: number = -1;
private mempoolCache: { [txId: string]: MempoolTransactionExtended } = {};
private mempoolCandidates: { [txid: string ]: boolean } = {};
private spendMap = new Map<string, MempoolTransactionExtended>();
private mempoolInfo: IBitcoinApi.MempoolInfo = { loaded: false, size: 0, bytes: 0, usage: 0, total_fee: 0,
maxmempool: 300000000, mempoolminfee: Common.isLiquid() ? 0.00000100 : 0.00001000, minrelaytxfee: Common.isLiquid() ? 0.00000100 : 0.00001000 };
private mempoolChangedCallback: ((newMempool: {[txId: string]: MempoolTransactionExtended; }, newTransactions: MempoolTransactionExtended[],
deletedTransactions: MempoolTransactionExtended[], accelerationDelta: string[]) => void) | undefined;
private $asyncMempoolChangedCallback: ((newMempool: {[txId: string]: MempoolTransactionExtended; }, mempoolSize: number, newTransactions: MempoolTransactionExtended[],
deletedTransactions: MempoolTransactionExtended[], accelerationDelta: string[], candidates?: GbtCandidates) => Promise<void>) | undefined;
private accelerations: { [txId: string]: Acceleration } = {};
private accelerationPositions: { [txid: string]: { poolId: number, pool: string, block: number, vsize: number }[] } = {};
private txPerSecondArray: number[] = [];
private txPerSecond: number = 0;
private vBytesPerSecondArray: any[] = [];
private vBytesPerSecondArray: VbytesPerSecond[] = [];
private vBytesPerSecond: number = 0;
private mempoolProtection = 0;
private latestTransactions: any[] = [];
private ESPLORA_MISSING_TX_WARNING_THRESHOLD = 100;
private SAMPLE_TIME = 10000; // In ms
private timer = new Date().getTime();
private missingTxCount = 0;
private mainLoopTimeout: number = 120000;
public limitGBT = config.MEMPOOL.USE_SECOND_NODE_FOR_MINFEE && config.MEMPOOL.LIMIT_GBT;
constructor() {
setInterval(this.updateTxPerSecond.bind(this), 1000);
}
public setMempoolChangedCallback(fn: Function) {
/**
* Return true if we should leave resources available for mempool tx caching
*/
public hasPriority(): boolean {
if (this.inSync) {
return false;
} else {
return this.mempoolCacheDelta == -1 || this.mempoolCacheDelta > 25;
}
}
public isInSync(): boolean {
return this.inSync;
}
public setOutOfSync(): void {
this.inSync = false;
loadingIndicators.setProgress('mempool', 99);
}
public getLatestTransactions() {
return this.latestTransactions;
}
public setMempoolChangedCallback(fn: (newMempool: { [txId: string]: MempoolTransactionExtended; },
newTransactions: MempoolTransactionExtended[], deletedTransactions: MempoolTransactionExtended[], accelerationDelta: string[]) => void): void {
this.mempoolChangedCallback = fn;
}
public getMempool(): { [txid: string]: ITransaction } {
return this.mempool;
public setAsyncMempoolChangedCallback(fn: (newMempool: { [txId: string]: MempoolTransactionExtended; }, mempoolSize: number,
newTransactions: MempoolTransactionExtended[], deletedTransactions: MempoolTransactionExtended[], accelerationDelta: string[],
candidates?: GbtCandidates) => Promise<void>): void {
this.$asyncMempoolChangedCallback = fn;
}
public setMempool(mempoolData: any) {
this.mempool = mempoolData;
public getMempool(): { [txid: string]: MempoolTransactionExtended } {
return this.mempoolCache;
}
public getMempoolInfo(): IMempoolInfo | undefined {
public getSpendMap(): Map<string, MempoolTransactionExtended> {
return this.spendMap;
}
public getFromSpendMap(txid, index): MempoolTransactionExtended | void {
return this.spendMap.get(`${txid}:${index}`);
}
public async $setMempool(mempoolData: { [txId: string]: MempoolTransactionExtended }) {
this.mempoolCache = mempoolData;
let count = 0;
const redisTimer = Date.now();
if (config.MEMPOOL.CACHE_ENABLED && config.REDIS.ENABLED) {
logger.debug(`Migrating ${Object.keys(this.mempoolCache).length} transactions from disk cache to Redis cache`);
}
for (const txid of Object.keys(this.mempoolCache)) {
if (!this.mempoolCache[txid].adjustedVsize || this.mempoolCache[txid].sigops == null || this.mempoolCache[txid].effectiveFeePerVsize == null) {
this.mempoolCache[txid] = transactionUtils.extendMempoolTransaction(this.mempoolCache[txid]);
}
if (this.mempoolCache[txid].order == null) {
this.mempoolCache[txid].order = transactionUtils.txidToOrdering(txid);
}
for (const vin of this.mempoolCache[txid].vin) {
transactionUtils.addInnerScriptsToVin(vin);
}
count++;
if (config.MEMPOOL.CACHE_ENABLED && config.REDIS.ENABLED) {
await redisCache.$addTransaction(this.mempoolCache[txid]);
}
this.mempoolCache[txid].flags = Common.getTransactionFlags(this.mempoolCache[txid]);
this.mempoolCache[txid].cpfpChecked = false;
this.mempoolCache[txid].cpfpDirty = true;
this.mempoolCache[txid].cpfpUpdated = undefined;
}
if (config.MEMPOOL.CACHE_ENABLED && config.REDIS.ENABLED) {
await redisCache.$flushTransactions();
logger.debug(`Finished migrating cache transactions in ${((Date.now() - redisTimer) / 1000).toFixed(2)} seconds`);
}
if (this.mempoolChangedCallback) {
this.mempoolChangedCallback(this.mempoolCache, [], [], []);
}
if (this.$asyncMempoolChangedCallback) {
await this.$asyncMempoolChangedCallback(this.mempoolCache, count, [], [], [], this.limitGBT ? { txs: {}, added: [], removed: [] } : undefined);
}
this.addToSpendMap(Object.values(this.mempoolCache));
}
public async $reloadMempool(expectedCount: number): Promise<MempoolTransactionExtended[]> {
let count = 0;
let done = false;
let last_txid;
const newTransactions: MempoolTransactionExtended[] = [];
loadingIndicators.setProgress('mempool', count / expectedCount * 100);
while (!done) {
try {
const result = await bitcoinApi.$getAllMempoolTransactions(last_txid, config.ESPLORA.BATCH_QUERY_BASE_SIZE);
if (result) {
for (const tx of result) {
const extendedTransaction = transactionUtils.extendMempoolTransaction(tx);
if (!this.mempoolCache[extendedTransaction.txid]) {
newTransactions.push(extendedTransaction);
this.mempoolCache[extendedTransaction.txid] = extendedTransaction;
}
count++;
}
logger.info(`Fetched ${count} of ${expectedCount} mempool transactions from esplora`);
if (result.length > 0) {
last_txid = result[result.length - 1].txid;
} else {
done = true;
}
if (Math.floor((count / expectedCount) * 100) < 100) {
loadingIndicators.setProgress('mempool', count / expectedCount * 100);
}
} else {
done = true;
}
} catch(err) {
logger.err('failed to fetch bulk mempool transactions from esplora');
}
}
logger.info(`Done inserting loaded mempool transactions into local cache`);
return newTransactions;
}
public getMempoolCandidates(): { [txid: string]: boolean } {
return this.mempoolCandidates;
}
public async $updateMemPoolInfo() {
this.mempoolInfo = await this.$getMempoolInfo();
}
public getMempoolInfo(): IBitcoinApi.MempoolInfo {
return this.mempoolInfo;
}
@@ -41,128 +193,418 @@ class Mempool {
return this.vBytesPerSecond;
}
public async updateMemPoolInfo() {
try {
this.mempoolInfo = await bitcoinApi.getMempoolInfo();
} catch (err) {
console.log('Error getMempoolInfo', err);
}
}
public async getRawTransaction(txId: string, isCoinbase = false): Promise<ITransaction | false> {
try {
const transaction = await bitcoinApi.getRawTransaction(txId);
let totalOut = 0;
transaction.vout.forEach((output) => totalOut += output.value);
if (config.BACKEND_API === 'electrs') {
transaction.feePerWeightUnit = (transaction.fee * 100000000) / transaction.weight || 0;
transaction.feePerVsize = (transaction.fee * 100000000) / (transaction.vsize) || 0;
transaction.totalOut = totalOut / 100000000;
public getFirstSeenForTransactions(txIds: string[]): number[] {
const txTimes: number[] = [];
txIds.forEach((txId: string) => {
const tx = this.mempoolCache[txId];
if (tx && tx.firstSeen) {
txTimes.push(tx.firstSeen);
} else {
let totalIn = 0;
if (!isCoinbase) {
for (let i = 0; i < transaction.vin.length; i++) {
try {
const result = await bitcoinApi.getRawTransaction(transaction.vin[i].txid);
transaction.vin[i]['value'] = result.vout[transaction.vin[i].vout].value;
totalIn += result.vout[transaction.vin[i].vout].value;
} catch (err) {
console.log('Locating historical tx error');
}
}
}
if (totalIn > totalOut) {
transaction.fee = parseFloat((totalIn - totalOut).toFixed(8));
transaction.feePerWeightUnit = (transaction.fee * 100000000) / (transaction.vsize * 4) || 0;
transaction.feePerVsize = (transaction.fee * 100000000) / (transaction.vsize) || 0;
} else if (!isCoinbase) {
transaction.fee = 0;
transaction.feePerVsize = 0;
transaction.feePerWeightUnit = 0;
console.log('Minus fee error!');
}
transaction.totalOut = totalOut;
txTimes.push(0);
}
return transaction;
} catch (e) {
console.log(txId + ' not found');
return false;
}
});
return txTimes;
}
public async updateMempool() {
console.log('Updating mempool');
public async $updateMempool(transactions: string[], accelerations: Acceleration[] | null, minFeeMempool: string[], minFeeTip: number, pollRate: number): Promise<void> {
logger.debug(`Updating mempool...`);
// warn if this run stalls the main loop for more than 2 minutes
const timer = this.startTimer();
const start = new Date().getTime();
let hasChange: boolean = false;
let txCount = 0;
try {
const transactions = await bitcoinApi.getRawMempool();
const diff = transactions.length - Object.keys(this.mempool).length;
for (const tx of transactions) {
if (!this.mempool[tx]) {
const transaction = await this.getRawTransaction(tx);
if (transaction) {
this.mempool[tx] = transaction;
txCount++;
const currentMempoolSize = Object.keys(this.mempoolCache).length;
this.updateTimerProgress(timer, 'got raw mempool');
const diff = transactions.length - currentMempoolSize;
let newTransactions: MempoolTransactionExtended[] = [];
this.mempoolCacheDelta = Math.abs(diff);
if (!this.inSync) {
loadingIndicators.setProgress('mempool', currentMempoolSize / transactions.length * 100);
}
// https://github.com/mempool/mempool/issues/3283
const logEsplora404 = (missingTxCount, threshold, time) => {
const log = `In the past ${time / 1000} seconds, esplora tx API replied ${missingTxCount} times with a 404 error code while updating nodejs backend mempool`;
if (missingTxCount >= threshold) {
logger.warn(log);
} else if (missingTxCount > 0) {
logger.debug(log);
}
};
let intervalTimer = Date.now();
let loaded = false;
if (config.MEMPOOL.BACKEND === 'esplora' && currentMempoolSize < transactions.length * 0.5 && transactions.length > 20_000) {
this.inSync = false;
logger.info(`Missing ${transactions.length - currentMempoolSize} mempool transactions, attempting to reload in bulk from esplora`);
try {
newTransactions = await this.$reloadMempool(transactions.length);
if (config.REDIS.ENABLED) {
for (const tx of newTransactions) {
await redisCache.$addTransaction(tx);
}
}
loaded = true;
} catch (e) {
logger.err('failed to load mempool in bulk from esplora, falling back to fetching individual transactions');
}
}
if (!loaded) {
const remainingTxids = transactions.filter(txid => !this.mempoolCache[txid]);
const sliceLength = config.ESPLORA.BATCH_QUERY_BASE_SIZE;
for (let i = 0; i < Math.ceil(remainingTxids.length / sliceLength); i++) {
const slice = remainingTxids.slice(i * sliceLength, (i + 1) * sliceLength);
const txs = await transactionUtils.$getMempoolTransactionsExtended(slice, false, false, false);
logger.debug(`fetched ${txs.length} transactions`);
this.updateTimerProgress(timer, 'fetched new transactions');
for (const transaction of txs) {
this.mempoolCache[transaction.txid] = transaction;
if (this.inSync) {
this.txPerSecondArray.push(new Date().getTime());
this.vBytesPerSecondArray.push({
unixTime: new Date().getTime(),
vSize: transaction.vsize,
});
hasChange = true;
if (diff > 0) {
console.log('Calculated fee for transaction ' + txCount + ' / ' + diff);
} else {
console.log('Calculated fee for transaction ' + txCount);
}
} else {
console.log('Error finding transaction in mempool.');
}
hasChange = true;
newTransactions.push(transaction);
if (config.REDIS.ENABLED) {
await redisCache.$addTransaction(transaction);
}
}
if ((new Date().getTime()) - start > config.MEMPOOL_REFRESH_RATE_MS * 10) {
break;
if (txs.length < slice.length) {
const missing = slice.length - txs.length;
if (config.MEMPOOL.BACKEND === 'esplora') {
this.missingTxCount += missing;
}
logger.debug(`Error finding ${missing} transactions in the mempool: `);
}
if (Date.now() - intervalTimer > Math.max(pollRate * 2, 5_000)) {
if (this.inSync) {
// Break and restart mempool loop if we spend too much time processing
// new transactions that may lead to falling behind on block height
logger.debug('Breaking mempool loop because the 5s time limit exceeded.');
break;
} else {
const progress = (currentMempoolSize + newTransactions.length) / transactions.length * 100;
logger.debug(`Mempool is synchronizing. Processed ${newTransactions.length}/${diff} txs (${Math.round(progress)}%)`);
if (Math.floor(progress) < 100) {
loadingIndicators.setProgress('mempool', progress);
}
intervalTimer = Date.now();
}
}
}
}
const newMempool: IMempool = {};
transactions.forEach((tx) => {
if (this.mempool[tx]) {
newMempool[tx] = this.mempool[tx];
// Reset esplora 404 counter and log a warning if needed
const elapsedTime = new Date().getTime() - this.timer;
if (elapsedTime > this.SAMPLE_TIME) {
logEsplora404(this.missingTxCount, this.ESPLORA_MISSING_TX_WARNING_THRESHOLD, elapsedTime);
this.timer = new Date().getTime();
this.missingTxCount = 0;
}
// Prevent mempool from clear on bitcoind restart by delaying the deletion
if (this.mempoolProtection === 0
&& currentMempoolSize > 20000
&& transactions.length / currentMempoolSize <= 0.80
) {
this.mempoolProtection = 1;
this.inSync = false;
logger.warn(`Mempool clear protection triggered because transactions.length: ${transactions.length} and currentMempoolSize: ${currentMempoolSize}.`);
setTimeout(() => {
this.mempoolProtection = 2;
logger.warn('Mempool clear protection ended, normal operation resumed.');
}, 1000 * 60 * config.MEMPOOL.CLEAR_PROTECTION_MINUTES);
}
const deletedTransactions: MempoolTransactionExtended[] = [];
if (this.mempoolProtection !== 1) {
this.mempoolProtection = 0;
// Index object for faster search
const transactionsObject = {};
transactions.forEach((txId) => transactionsObject[txId] = true);
// Delete evicted transactions from mempool
for (const tx in this.mempoolCache) {
if (!transactionsObject[tx]) {
deletedTransactions.push(this.mempoolCache[tx]);
}
}
for (const tx of deletedTransactions) {
delete this.mempoolCache[tx.txid];
}
}
const candidates = await this.getNextCandidates(minFeeMempool, minFeeTip, deletedTransactions);
const newMempoolSize = currentMempoolSize + newTransactions.length - deletedTransactions.length;
const newTransactionsStripped = newTransactions.map((tx) => Common.stripTransaction(tx));
this.latestTransactions = newTransactionsStripped.concat(this.latestTransactions).slice(0, 6);
const accelerationDelta = accelerations != null ? await this.$updateAccelerations(accelerations) : [];
if (accelerationDelta.length) {
hasChange = true;
}
this.mempoolCacheDelta = Math.abs(transactions.length - newMempoolSize);
const candidatesChanged = candidates?.added?.length || candidates?.removed?.length;
if (this.mempoolChangedCallback && (hasChange || deletedTransactions.length)) {
this.mempoolChangedCallback(this.mempoolCache, newTransactions, deletedTransactions, accelerationDelta);
}
if (this.$asyncMempoolChangedCallback && (hasChange || deletedTransactions.length || candidatesChanged)) {
this.updateTimerProgress(timer, 'running async mempool callback');
await this.$asyncMempoolChangedCallback(this.mempoolCache, newMempoolSize, newTransactions, deletedTransactions, accelerationDelta, candidates);
this.updateTimerProgress(timer, 'completed async mempool callback');
}
if (!this.inSync && transactions.length === newMempoolSize) {
this.inSync = true;
logger.notice('The mempool is now in sync!');
loadingIndicators.setProgress('mempool', 100);
}
// Update Redis cache
if (config.REDIS.ENABLED) {
await redisCache.$flushTransactions();
await redisCache.$removeTransactions(deletedTransactions.map(tx => tx.txid));
await rbfCache.updateCache();
}
const end = new Date().getTime();
const time = end - start;
logger.debug(`Mempool updated in ${time / 1000} seconds. New size: ${Object.keys(this.mempoolCache).length} (${diff > 0 ? '+' + diff : diff})`);
this.clearTimer(timer);
}
public getAccelerations(): { [txid: string]: Acceleration } {
return this.accelerations;
}
public $updateAccelerations(newAccelerations: Acceleration[]): string[] {
try {
const changed: string[] = [];
const newAccelerationMap: { [txid: string]: Acceleration } = {};
for (const acceleration of newAccelerations) {
// skip transactions we don't know about
if (!this.mempoolCache[acceleration.txid]) {
continue;
}
newAccelerationMap[acceleration.txid] = acceleration;
if (this.accelerations[acceleration.txid] == null) {
// new acceleration
changed.push(acceleration.txid);
} else {
hasChange = true;
if (this.accelerations[acceleration.txid].feeDelta !== acceleration.feeDelta) {
// feeDelta changed
changed.push(acceleration.txid);
} else if (this.accelerations[acceleration.txid].pools?.length) {
let poolsChanged = false;
const pools = new Set();
this.accelerations[acceleration.txid].pools.forEach(pool => {
pools.add(pool);
});
acceleration.pools.forEach(pool => {
if (!pools.has(pool)) {
poolsChanged = true;
} else {
pools.delete(pool);
}
});
if (pools.size > 0) {
poolsChanged = true;
}
if (poolsChanged) {
// pools changed
changed.push(acceleration.txid);
}
}
}
});
this.mempool = newMempool;
if (hasChange && this.mempoolChangedCallback) {
this.mempoolChangedCallback(this.mempool);
}
const end = new Date().getTime();
const time = end - start;
console.log('Mempool updated in ' + time / 1000 + ' seconds');
} catch (err) {
console.log('getRawMempool error.', err);
for (const oldTxid of Object.keys(this.accelerations)) {
if (!newAccelerationMap[oldTxid]) {
// removed
changed.push(oldTxid);
}
}
this.accelerations = newAccelerationMap;
return changed;
} catch (e: any) {
logger.debug(`Failed to update accelerations: ` + (e instanceof Error ? e.message : e));
return [];
}
}
public async getNextCandidates(minFeeTransactions: string[], blockHeight: number, deletedTransactions: MempoolTransactionExtended[]): Promise<GbtCandidates | undefined> {
if (this.limitGBT) {
const deletedTxsMap = {};
for (const tx of deletedTransactions) {
deletedTxsMap[tx.txid] = tx;
}
const newCandidateTxMap = {};
for (const txid of minFeeTransactions) {
if (this.mempoolCache[txid]) {
newCandidateTxMap[txid] = true;
}
}
const accelerations = this.getAccelerations();
for (const txid of Object.keys(accelerations)) {
if (this.mempoolCache[txid]) {
newCandidateTxMap[txid] = true;
}
}
const removed: MempoolTransactionExtended[] = [];
const added: MempoolTransactionExtended[] = [];
// don't prematurely remove txs included in a new block
if (blockHeight > blocks.getCurrentBlockHeight()) {
for (const txid of Object.keys(this.mempoolCandidates)) {
newCandidateTxMap[txid] = true;
}
} else {
for (const txid of Object.keys(this.mempoolCandidates)) {
if (!newCandidateTxMap[txid]) {
if (this.mempoolCache[txid]) {
removed.push(this.mempoolCache[txid]);
this.mempoolCache[txid].effectiveFeePerVsize = this.mempoolCache[txid].adjustedFeePerVsize;
this.mempoolCache[txid].ancestors = [];
this.mempoolCache[txid].descendants = [];
this.mempoolCache[txid].bestDescendant = null;
this.mempoolCache[txid].cpfpChecked = false;
this.mempoolCache[txid].cpfpUpdated = undefined;
} else if (deletedTxsMap[txid]) {
removed.push(deletedTxsMap[txid]);
}
}
}
}
for (const txid of Object.keys(newCandidateTxMap)) {
if (!this.mempoolCandidates[txid]) {
added.push(this.mempoolCache[txid]);
}
}
this.mempoolCandidates = newCandidateTxMap;
return {
txs: this.mempoolCandidates,
added,
removed
};
}
}
setAccelerationPositions(positions: { [txid: string]: { poolId: number, pool: string, block: number, vsize: number }[] }): void {
this.accelerationPositions = positions;
}
getAccelerationPositions(txid: string): { [pool: number]: { poolId: number, pool: string, block: number, vsize: number } } | undefined {
return this.accelerationPositions[txid];
}
private startTimer() {
const state: any = {
start: Date.now(),
progress: 'begin $updateMempool',
timer: null,
};
state.timer = setTimeout(() => {
logger.err(`$updateMempool stalled at "${state.progress}"`);
}, this.mainLoopTimeout);
return state;
}
private updateTimerProgress(state, msg) {
state.progress = msg;
}
private clearTimer(state) {
if (state.timer) {
clearTimeout(state.timer);
}
}
public handleRbfTransactions(rbfTransactions: { [txid: string]: MempoolTransactionExtended[]; }): void {
for (const rbfTransaction in rbfTransactions) {
if (this.mempoolCache[rbfTransaction] && rbfTransactions[rbfTransaction]?.length) {
// Store replaced transactions
rbfCache.add(rbfTransactions[rbfTransaction], this.mempoolCache[rbfTransaction]);
}
}
}
public handleMinedRbfTransactions(rbfTransactions: { [txid: string]: { replaced: MempoolTransactionExtended[], replacedBy: TransactionExtended }}): void {
for (const rbfTransaction in rbfTransactions) {
if (rbfTransactions[rbfTransaction].replacedBy && rbfTransactions[rbfTransaction]?.replaced?.length) {
// Store replaced transactions
rbfCache.add(rbfTransactions[rbfTransaction].replaced, transactionUtils.extendMempoolTransaction(rbfTransactions[rbfTransaction].replacedBy));
}
}
}
public addToSpendMap(transactions: MempoolTransactionExtended[]): void {
for (const tx of transactions) {
for (const vin of tx.vin) {
this.spendMap.set(`${vin.txid}:${vin.vout}`, tx);
}
}
}
public removeFromSpendMap(transactions: TransactionExtended[]): void {
for (const tx of transactions) {
for (const vin of tx.vin) {
const key = `${vin.txid}:${vin.vout}`;
if (this.spendMap.get(key)?.txid === tx.txid) {
this.spendMap.delete(key);
}
}
}
}
private updateTxPerSecond() {
const nowMinusTimeSpan = new Date().getTime() - (1000 * config.TX_PER_SECOND_SPAN_SECONDS);
const nowMinusTimeSpan = new Date().getTime() - (1000 * config.STATISTICS.TX_PER_SECOND_SAMPLE_PERIOD);
this.txPerSecondArray = this.txPerSecondArray.filter((unixTime) => unixTime > nowMinusTimeSpan);
this.txPerSecond = this.txPerSecondArray.length / config.TX_PER_SECOND_SPAN_SECONDS || 0;
this.txPerSecond = this.txPerSecondArray.length / config.STATISTICS.TX_PER_SECOND_SAMPLE_PERIOD || 0;
this.vBytesPerSecondArray = this.vBytesPerSecondArray.filter((data) => data.unixTime > nowMinusTimeSpan);
if (this.vBytesPerSecondArray.length) {
this.vBytesPerSecond = Math.round(
this.vBytesPerSecondArray.map((data) => data.vSize).reduce((a, b) => a + b) / config.TX_PER_SECOND_SPAN_SECONDS
this.vBytesPerSecondArray.map((data) => data.vSize).reduce((a, b) => a + b) / config.STATISTICS.TX_PER_SECOND_SAMPLE_PERIOD
);
}
}
private $getMempoolInfo() {
if (config.MEMPOOL.USE_SECOND_NODE_FOR_MINFEE) {
return Promise.all([
bitcoinClient.getMempoolInfo(),
bitcoinSecondClient.getMempoolInfo()
]).then(([mempoolInfo, secondMempoolInfo]) => {
mempoolInfo.maxmempool = secondMempoolInfo.maxmempool;
mempoolInfo.mempoolminfee = secondMempoolInfo.mempoolminfee;
mempoolInfo.minrelaytxfee = secondMempoolInfo.minrelaytxfee;
return mempoolInfo;
});
}
return bitcoinClient.getMempoolInfo();
}
}
export default new Mempool();

View File

@@ -0,0 +1,515 @@
import { Acceleration } from './acceleration/acceleration';
import { MempoolTransactionExtended } from '../mempool.interfaces';
import logger from '../logger';
const BLOCK_WEIGHT_UNITS = 4_000_000;
const BLOCK_SIGOPS = 80_000;
const MAX_RELATIVE_GRAPH_SIZE = 100;
export interface GraphTx {
txid: string;
vsize: number;
weight: number;
depends: string[];
spentby: string[];
ancestorcount: number;
ancestorsize: number;
fees: { // in sats
base: number;
ancestor: number;
};
ancestors: Map<string, GraphTx>,
ancestorRate: number;
individualRate: number;
score: number;
}
interface TemplateTransaction {
txid: string;
order: number;
weight: number;
adjustedVsize: number; // sigop-adjusted vsize, rounded up to the nearest integer
sigops: number;
fee: number;
feeDelta: number;
ancestors: string[];
cluster: string[];
effectiveFeePerVsize: number;
}
interface MinerTransaction extends TemplateTransaction {
inputs: string[];
feePerVsize: number;
relativesSet: boolean;
ancestorMap: Map<string, MinerTransaction>;
children: Set<MinerTransaction>;
ancestorFee: number;
ancestorVsize: number;
ancestorSigops: number;
score: number;
used: boolean;
modified: boolean;
dependencyRate: number;
}
/**
* Takes a raw transaction, and builds a graph of same-block relatives,
* and returns as a GraphTx
*
* @param tx
*/
export function getSameBlockRelatives(tx: MempoolTransactionExtended, transactions: MempoolTransactionExtended[]): Map<string, GraphTx> {
const blockTxs = new Map<string, MempoolTransactionExtended>(); // map of txs in this block
const spendMap = new Map<string, string>(); // map of outpoints to spending txids
for (const tx of transactions) {
blockTxs.set(tx.txid, tx);
for (const vin of tx.vin) {
spendMap.set(`${vin.txid}:${vin.vout}`, tx.txid);
}
}
const relatives: Map<string, GraphTx> = new Map();
const stack: string[] = [tx.txid];
// build set of same-block ancestors
while (stack.length > 0) {
const nextTxid = stack.pop();
const nextTx = nextTxid ? blockTxs.get(nextTxid) : null;
if (!nextTx || relatives.has(nextTx.txid)) {
continue;
}
const mempoolTx = convertToGraphTx(nextTx, spendMap);
for (const txid of [...mempoolTx.depends, ...mempoolTx.spentby]) {
if (txid) {
stack.push(txid);
}
}
relatives.set(mempoolTx.txid, mempoolTx);
}
return relatives;
}
/**
* Takes a raw transaction and converts it to GraphTx format
* fee and ancestor data is initialized with dummy/null values
*
* @param tx
*/
export function convertToGraphTx(tx: MempoolTransactionExtended, spendMap?: Map<string, MempoolTransactionExtended | string>): GraphTx {
return {
txid: tx.txid,
vsize: Math.max(tx.sigops * 5, Math.ceil(tx.weight / 4)),
weight: tx.weight,
fees: {
base: tx.fee || 0,
ancestor: tx.fee || 0,
},
depends: (tx.vin.map(vin => vin.txid).filter(depend => depend) as string[]),
spentby: spendMap ? (tx.vout.map((vout, index) => { const spend = spendMap.get(`${tx.txid}:${index}`); return (spend?.['txid'] || spend); }).filter(spent => spent) as string[]) : [],
ancestorcount: 1,
ancestorsize: Math.max(tx.sigops * 5, Math.ceil(tx.weight / 4)),
ancestors: new Map<string, GraphTx>(),
ancestorRate: 0,
individualRate: 0,
score: 0,
};
}
/**
* Takes a map of transaction ancestors, and expands it into a full graph of up to MAX_GRAPH_SIZE in-mempool relatives
*/
export function expandRelativesGraph(mempool: { [txid: string]: MempoolTransactionExtended }, ancestors: Map<string, GraphTx>, spendMap: Map<string, MempoolTransactionExtended>): Map<string, GraphTx> {
const relatives: Map<string, GraphTx> = new Map();
const stack: GraphTx[] = Array.from(ancestors.values());
while (stack.length > 0) {
if (relatives.size > MAX_RELATIVE_GRAPH_SIZE) {
return relatives;
}
const nextTx = stack.pop();
if (!nextTx) {
continue;
}
relatives.set(nextTx.txid, nextTx);
for (const relativeTxid of [...nextTx.depends, ...nextTx.spentby]) {
if (relatives.has(relativeTxid)) {
// already processed this tx
continue;
}
let ancestorTx = ancestors.get(relativeTxid);
if (!ancestorTx && relativeTxid in mempool) {
const mempoolTx = mempool[relativeTxid];
ancestorTx = convertToGraphTx(mempoolTx, spendMap);
}
if (ancestorTx) {
stack.push(ancestorTx);
}
}
}
return relatives;
}
/**
* Recursively traverses an in-mempool dependency graph, and sets a Map of in-mempool ancestors
* for each transaction.
*
* @param tx
* @param all
*/
function setAncestors(tx: GraphTx, all: Map<string, GraphTx>, visited: Map<string, Map<string, GraphTx>>, depth: number = 0): Map<string, GraphTx> {
// sanity check for infinite recursion / too many ancestors (should never happen)
if (depth > MAX_RELATIVE_GRAPH_SIZE) {
logger.warn('cpfp dependency calculation failed: setAncestors reached depth of 100, unable to proceed');
return tx.ancestors;
}
// initialize the ancestor map for this tx
tx.ancestors = new Map<string, GraphTx>();
tx.depends.forEach(parentId => {
const parent = all.get(parentId);
if (parent) {
// add the parent
tx.ancestors?.set(parentId, parent);
// check for a cached copy of this parent's ancestors
let ancestors = visited.get(parent.txid);
if (!ancestors) {
// recursively fetch the parent's ancestors
ancestors = setAncestors(parent, all, visited, depth + 1);
}
// and add to this tx's map
ancestors.forEach((ancestor, ancestorId) => {
tx.ancestors?.set(ancestorId, ancestor);
});
}
});
visited.set(tx.txid, tx.ancestors);
return tx.ancestors;
}
/**
* Efficiently sets a Map of in-mempool ancestors for each member of an expanded relative graph
* by running setAncestors on each leaf, and caching intermediate results.
* then initializes ancestor data for each transaction
*
* @param all
*/
export function initializeRelatives(mempoolTxs: Map<string, GraphTx>): Map<string, GraphTx> {
const visited: Map<string, Map<string, GraphTx>> = new Map();
const leaves: GraphTx[] = Array.from(mempoolTxs.values()).filter(entry => entry.spentby.length === 0);
for (const leaf of leaves) {
setAncestors(leaf, mempoolTxs, visited);
}
mempoolTxs.forEach(entry => {
entry.ancestors?.forEach(ancestor => {
entry.ancestorcount++;
entry.ancestorsize += ancestor.vsize;
entry.fees.ancestor += ancestor.fees.base;
});
setAncestorScores(entry);
});
return mempoolTxs;
}
/**
* Remove a cluster of transactions from an in-mempool dependency graph
* and update the survivors' scores and ancestors
*
* @param cluster
* @param ancestors
*/
export function removeAncestors(cluster: Map<string, GraphTx>, all: Map<string, GraphTx>): void {
// remove
cluster.forEach(tx => {
all.delete(tx.txid);
});
// update survivors
all.forEach(tx => {
cluster.forEach(remove => {
if (tx.ancestors?.has(remove.txid)) {
// remove as dependency
tx.ancestors.delete(remove.txid);
tx.depends = tx.depends.filter(parent => parent !== remove.txid);
// update ancestor sizes and fees
tx.ancestorsize -= remove.vsize;
tx.fees.ancestor -= remove.fees.base;
}
});
// recalculate fee rates
setAncestorScores(tx);
});
}
/**
* Take a mempool transaction, and set the fee rates and ancestor score
*
* @param tx
*/
export function setAncestorScores(tx: GraphTx): void {
tx.individualRate = tx.fees.base / tx.vsize;
tx.ancestorRate = tx.fees.ancestor / tx.ancestorsize;
tx.score = Math.min(tx.individualRate, tx.ancestorRate);
}
// Sort by descending score
export function mempoolComparator(a: GraphTx, b: GraphTx): number {
return b.score - a.score;
}
/*
* Build a block using an approximation of the transaction selection algorithm from Bitcoin Core
* (see BlockAssembler in https://github.com/bitcoin/bitcoin/blob/master/src/node/miner.cpp)
*/
export function makeBlockTemplate(candidates: MempoolTransactionExtended[], accelerations: Acceleration[], maxBlocks: number = 8, weightLimit: number = BLOCK_WEIGHT_UNITS, sigopLimit: number = BLOCK_SIGOPS): TemplateTransaction[] {
const auditPool: Map<string, MinerTransaction> = new Map();
const mempoolArray: MinerTransaction[] = [];
candidates.forEach(tx => {
// initializing everything up front helps V8 optimize property access later
const adjustedVsize = Math.ceil(Math.max(tx.weight / 4, 5 * (tx.sigops || 0)));
const feePerVsize = (tx.fee / adjustedVsize);
auditPool.set(tx.txid, {
txid: tx.txid,
order: txidToOrdering(tx.txid),
fee: tx.fee,
feeDelta: 0,
weight: tx.weight,
adjustedVsize,
feePerVsize: feePerVsize,
effectiveFeePerVsize: feePerVsize,
dependencyRate: feePerVsize,
sigops: tx.sigops || 0,
inputs: (tx.vin?.map(vin => vin.txid) || []) as string[],
relativesSet: false,
ancestors: [],
cluster: [],
ancestorMap: new Map<string, MinerTransaction>(),
children: new Set<MinerTransaction>(),
ancestorFee: 0,
ancestorVsize: 0,
ancestorSigops: 0,
score: 0,
used: false,
modified: false,
});
mempoolArray.push(auditPool.get(tx.txid) as MinerTransaction);
});
// set accelerated effective fee
for (const acceleration of accelerations) {
const tx = auditPool.get(acceleration.txid);
if (tx) {
tx.feeDelta = acceleration.max_bid;
tx.feePerVsize = ((tx.fee + tx.feeDelta) / tx.adjustedVsize);
tx.effectiveFeePerVsize = tx.feePerVsize;
tx.dependencyRate = tx.feePerVsize;
}
}
// Build relatives graph & calculate ancestor scores
for (const tx of mempoolArray) {
if (!tx.relativesSet) {
setRelatives(tx, auditPool);
}
}
// Sort by descending ancestor score
mempoolArray.sort(priorityComparator);
// Build blocks by greedily choosing the highest feerate package
// (i.e. the package rooted in the transaction with the best ancestor score)
const blocks: number[][] = [];
let blockWeight = 0;
let blockSigops = 0;
const transactions: MinerTransaction[] = [];
let modified: MinerTransaction[] = [];
const overflow: MinerTransaction[] = [];
let failures = 0;
while (mempoolArray.length || modified.length) {
// skip invalid transactions
while (mempoolArray[0]?.used || mempoolArray[0]?.modified) {
mempoolArray.shift();
}
// Select best next package
let nextTx;
const nextPoolTx = mempoolArray[0];
const nextModifiedTx = modified[0];
if (nextPoolTx && (!nextModifiedTx || (nextPoolTx.score || 0) > (nextModifiedTx.score || 0))) {
nextTx = nextPoolTx;
mempoolArray.shift();
} else {
modified.shift();
if (nextModifiedTx) {
nextTx = nextModifiedTx;
}
}
if (nextTx && !nextTx?.used) {
// Check if the package fits into this block
if (blocks.length >= (maxBlocks - 1) || ((blockWeight + (4 * nextTx.ancestorVsize) < weightLimit) && (blockSigops + nextTx.ancestorSigops <= sigopLimit))) {
const ancestors: MinerTransaction[] = Array.from(nextTx.ancestorMap.values());
// sort ancestors by dependency graph (equivalent to sorting by ascending ancestor count)
const sortedTxSet = [...ancestors.sort((a, b) => { return (a.ancestorMap.size || 0) - (b.ancestorMap.size || 0); }), nextTx];
const clusterTxids = sortedTxSet.map(tx => tx.txid);
const effectiveFeeRate = Math.min(nextTx.dependencyRate || Infinity, nextTx.ancestorFee / nextTx.ancestorVsize);
const used: MinerTransaction[] = [];
while (sortedTxSet.length) {
const ancestor = sortedTxSet.pop();
if (!ancestor) {
continue;
}
ancestor.used = true;
ancestor.usedBy = nextTx.txid;
// update this tx with effective fee rate & relatives data
if (ancestor.effectiveFeePerVsize !== effectiveFeeRate) {
ancestor.effectiveFeePerVsize = effectiveFeeRate;
}
ancestor.cluster = clusterTxids;
transactions.push(ancestor);
blockWeight += ancestor.weight;
blockSigops += ancestor.sigops;
used.push(ancestor);
}
// remove these as valid package ancestors for any descendants remaining in the mempool
if (used.length) {
used.forEach(tx => {
modified = updateDescendants(tx, auditPool, modified, effectiveFeeRate);
});
}
failures = 0;
} else {
// hold this package in an overflow list while we check for smaller options
overflow.push(nextTx);
failures++;
}
}
// this block is full
const exceededPackageTries = failures > 1000 && blockWeight > (weightLimit - 4000);
const queueEmpty = !mempoolArray.length && !modified.length;
if (exceededPackageTries || queueEmpty) {
break;
}
}
for (const tx of transactions) {
tx.ancestors = Object.values(tx.ancestorMap);
}
return transactions;
}
// traverse in-mempool ancestors
// recursion unavoidable, but should be limited to depth < 25 by mempool policy
function setRelatives(
tx: MinerTransaction,
mempool: Map<string, MinerTransaction>,
): void {
for (const parent of tx.inputs) {
const parentTx = mempool.get(parent);
if (parentTx && !tx.ancestorMap?.has(parent)) {
tx.ancestorMap.set(parent, parentTx);
parentTx.children.add(tx);
// visit each node only once
if (!parentTx.relativesSet) {
setRelatives(parentTx, mempool);
}
parentTx.ancestorMap.forEach((ancestor) => {
tx.ancestorMap.set(ancestor.txid, ancestor);
});
}
};
tx.ancestorFee = (tx.fee + tx.feeDelta);
tx.ancestorVsize = tx.adjustedVsize || 0;
tx.ancestorSigops = tx.sigops || 0;
tx.ancestorMap.forEach((ancestor) => {
tx.ancestorFee += (ancestor.fee + ancestor.feeDelta);
tx.ancestorVsize += ancestor.adjustedVsize;
tx.ancestorSigops += ancestor.sigops;
});
tx.score = tx.ancestorFee / tx.ancestorVsize;
tx.relativesSet = true;
}
// iterate over remaining descendants, removing the root as a valid ancestor & updating the ancestor score
// avoids recursion to limit call stack depth
function updateDescendants(
rootTx: MinerTransaction,
mempool: Map<string, MinerTransaction>,
modified: MinerTransaction[],
clusterRate: number,
): MinerTransaction[] {
const descendantSet: Set<MinerTransaction> = new Set();
// stack of nodes left to visit
const descendants: MinerTransaction[] = [];
let descendantTx: MinerTransaction | undefined;
rootTx.children.forEach(childTx => {
if (!descendantSet.has(childTx)) {
descendants.push(childTx);
descendantSet.add(childTx);
}
});
while (descendants.length) {
descendantTx = descendants.pop();
if (descendantTx && descendantTx.ancestorMap && descendantTx.ancestorMap.has(rootTx.txid)) {
// remove tx as ancestor
descendantTx.ancestorMap.delete(rootTx.txid);
descendantTx.ancestorFee -= (rootTx.fee + rootTx.feeDelta);
descendantTx.ancestorVsize -= rootTx.adjustedVsize;
descendantTx.ancestorSigops -= rootTx.sigops;
descendantTx.score = descendantTx.ancestorFee / descendantTx.ancestorVsize;
descendantTx.dependencyRate = descendantTx.dependencyRate ? Math.min(descendantTx.dependencyRate, clusterRate) : clusterRate;
if (!descendantTx.modified) {
descendantTx.modified = true;
modified.push(descendantTx);
}
// add this node's children to the stack
descendantTx.children.forEach(childTx => {
// visit each node only once
if (!descendantSet.has(childTx)) {
descendants.push(childTx);
descendantSet.add(childTx);
}
});
}
}
// return new, resorted modified list
return modified.sort(priorityComparator);
}
// Used to sort an array of MinerTransactions by descending ancestor score
function priorityComparator(a: MinerTransaction, b: MinerTransaction): number {
if (b.score === a.score) {
// tie-break by txid for stability
return a.order - b.order;
} else {
return b.score - a.score;
}
}
// returns the most significant 4 bytes of the txid as an integer
function txidToOrdering(txid: string): number {
return parseInt(
txid.substring(62, 64) +
txid.substring(60, 62) +
txid.substring(58, 60) +
txid.substring(56, 58),
16
);
}

View File

@@ -0,0 +1,480 @@
import { Application, Request, Response } from 'express';
import config from "../../config";
import logger from '../../logger';
import BlocksAuditsRepository from '../../repositories/BlocksAuditsRepository';
import BlocksRepository from '../../repositories/BlocksRepository';
import DifficultyAdjustmentsRepository from '../../repositories/DifficultyAdjustmentsRepository';
import HashratesRepository from '../../repositories/HashratesRepository';
import bitcoinClient from '../bitcoin/bitcoin-client';
import mining from "./mining";
import PricesRepository from '../../repositories/PricesRepository';
import AccelerationRepository from '../../repositories/AccelerationRepository';
import accelerationApi from '../services/acceleration';
class MiningRoutes {
public initRoutes(app: Application) {
app
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/pools', this.$listPools)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/pools/:interval', this.$getPools)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/pool/:slug/hashrate', this.$getPoolHistoricalHashrate)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/pool/:slug/blocks', this.$getPoolBlocks)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/pool/:slug/blocks/:height', this.$getPoolBlocks)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/pool/:slug', this.$getPool)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/hashrate/pools/:interval', this.$getPoolsHistoricalHashrate)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/hashrate/:interval', this.$getHistoricalHashrate)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/difficulty-adjustments', this.$getDifficultyAdjustments)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/reward-stats/:blockCount', this.$getRewardStats)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/blocks/fees/:interval', this.$getHistoricalBlockFees)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/blocks/fees', this.$getBlockFeesTimespan)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/blocks/rewards/:interval', this.$getHistoricalBlockRewards)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/blocks/fee-rates/:interval', this.$getHistoricalBlockFeeRates)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/blocks/sizes-weights/:interval', this.$getHistoricalBlockSizeAndWeight)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/difficulty-adjustments/:interval', this.$getDifficultyAdjustments)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/blocks/predictions/:interval', this.$getHistoricalBlocksHealth)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/blocks/audit/scores', this.$getBlockAuditScores)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/blocks/audit/scores/:height', this.$getBlockAuditScores)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/blocks/audit/score/:hash', this.$getBlockAuditScore)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/blocks/audit/:hash', this.$getBlockAudit)
.get(config.MEMPOOL.API_URL_PREFIX + 'mining/blocks/timestamp/:timestamp', this.$getHeightFromTimestamp)
.get(config.MEMPOOL.API_URL_PREFIX + 'historical-price', this.$getHistoricalPrice)
.get(config.MEMPOOL.API_URL_PREFIX + 'accelerations/pool/:slug', this.$getAccelerationsByPool)
.get(config.MEMPOOL.API_URL_PREFIX + 'accelerations/block/:height', this.$getAccelerationsByHeight)
.get(config.MEMPOOL.API_URL_PREFIX + 'accelerations/recent/:interval', this.$getRecentAccelerations)
.get(config.MEMPOOL.API_URL_PREFIX + 'accelerations/total', this.$getAccelerationTotals)
.get(config.MEMPOOL.API_URL_PREFIX + 'accelerations', this.$getActiveAccelerations)
.post(config.MEMPOOL.API_URL_PREFIX + 'acceleration/request/:txid', this.$requestAcceleration)
;
}
private async $getHistoricalPrice(req: Request, res: Response): Promise<void> {
try {
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 300).toUTCString());
if (['testnet', 'signet', 'liquidtestnet'].includes(config.MEMPOOL.NETWORK)) {
res.status(400).send('Prices are not available on testnets.');
return;
}
const timestamp = parseInt(req.query.timestamp as string, 10) || 0;
const currency = req.query.currency as string;
let response;
if (timestamp && currency) {
response = await PricesRepository.$getNearestHistoricalPrice(timestamp, currency);
} else if (timestamp) {
response = await PricesRepository.$getNearestHistoricalPrice(timestamp);
} else if (currency) {
response = await PricesRepository.$getHistoricalPrices(currency);
} else {
response = await PricesRepository.$getHistoricalPrices();
}
res.status(200).send(response);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getPool(req: Request, res: Response): Promise<void> {
try {
const stats = await mining.$getPoolStat(req.params.slug);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(stats);
} catch (e) {
if (e instanceof Error && e.message.indexOf('This mining pool does not exist') > -1) {
res.status(404).send(e.message);
} else {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
}
private async $getPoolBlocks(req: Request, res: Response) {
try {
const poolBlocks = await BlocksRepository.$getBlocksByPool(
req.params.slug,
req.params.height === undefined ? undefined : parseInt(req.params.height, 10),
);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(poolBlocks);
} catch (e) {
if (e instanceof Error && e.message.indexOf('This mining pool does not exist') > -1) {
res.status(404).send(e.message);
} else {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
}
private async $listPools(req: Request, res: Response): Promise<void> {
try {
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
const pools = await mining.$listPools();
if (!pools) {
res.status(500).end();
return;
}
res.header('X-total-count', pools.length.toString());
if (pools.length === 0) {
res.status(204).send();
} else {
res.json(pools);
}
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getPools(req: Request, res: Response) {
try {
const stats = await mining.$getPoolsStats(req.params.interval);
const blockCount = await BlocksRepository.$blockCount(null, null);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.header('X-total-count', blockCount.toString());
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(stats);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getPoolsHistoricalHashrate(req: Request, res: Response) {
try {
const hashrates = await HashratesRepository.$getPoolsWeeklyHashrate(req.params.interval);
const blockCount = await BlocksRepository.$blockCount(null, null);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.header('X-total-count', blockCount.toString());
res.setHeader('Expires', new Date(Date.now() + 1000 * 300).toUTCString());
res.json(hashrates);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getPoolHistoricalHashrate(req: Request, res: Response) {
try {
const hashrates = await HashratesRepository.$getPoolWeeklyHashrate(req.params.slug);
const blockCount = await BlocksRepository.$blockCount(null, null);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.header('X-total-count', blockCount.toString());
res.setHeader('Expires', new Date(Date.now() + 1000 * 300).toUTCString());
res.json(hashrates);
} catch (e) {
if (e instanceof Error && e.message.indexOf('This mining pool does not exist') > -1) {
res.status(404).send(e.message);
} else {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
}
private async $getHistoricalHashrate(req: Request, res: Response) {
let currentHashrate = 0, currentDifficulty = 0;
try {
currentHashrate = await bitcoinClient.getNetworkHashPs();
currentDifficulty = await bitcoinClient.getDifficulty();
} catch (e) {
logger.debug('Bitcoin Core is not available, using zeroed value for current hashrate and difficulty');
}
try {
const hashrates = await HashratesRepository.$getNetworkDailyHashrate(req.params.interval);
const difficulty = await DifficultyAdjustmentsRepository.$getAdjustments(req.params.interval, false);
const blockCount = await BlocksRepository.$blockCount(null, null);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.header('X-total-count', blockCount.toString());
res.setHeader('Expires', new Date(Date.now() + 1000 * 300).toUTCString());
res.json({
hashrates: hashrates,
difficulty: difficulty,
currentHashrate: currentHashrate,
currentDifficulty: currentDifficulty,
});
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getHistoricalBlockFees(req: Request, res: Response) {
try {
const blockFees = await mining.$getHistoricalBlockFees(req.params.interval);
const blockCount = await BlocksRepository.$blockCount(null, null);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.header('X-total-count', blockCount.toString());
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(blockFees);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getBlockFeesTimespan(req: Request, res: Response) {
try {
if (!parseInt(req.query.from as string, 10) || !parseInt(req.query.to as string, 10)) {
throw new Error('Invalid timestamp range');
}
if (parseInt(req.query.from as string, 10) > parseInt(req.query.to as string, 10)) {
throw new Error('from must be less than to');
}
const blockFees = await mining.$getBlockFeesTimespan(parseInt(req.query.from as string, 10), parseInt(req.query.to as string, 10));
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(blockFees);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getHistoricalBlockRewards(req: Request, res: Response) {
try {
const blockRewards = await mining.$getHistoricalBlockRewards(req.params.interval);
const blockCount = await BlocksRepository.$blockCount(null, null);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.header('X-total-count', blockCount.toString());
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(blockRewards);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getHistoricalBlockFeeRates(req: Request, res: Response) {
try {
const blockFeeRates = await mining.$getHistoricalBlockFeeRates(req.params.interval);
const blockCount = await BlocksRepository.$blockCount(null, null);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.header('X-total-count', blockCount.toString());
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(blockFeeRates);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getHistoricalBlockSizeAndWeight(req: Request, res: Response) {
try {
const blockSizes = await mining.$getHistoricalBlockSizes(req.params.interval);
const blockWeights = await mining.$getHistoricalBlockWeights(req.params.interval);
const blockCount = await BlocksRepository.$blockCount(null, null);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.header('X-total-count', blockCount.toString());
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json({
sizes: blockSizes,
weights: blockWeights
});
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getDifficultyAdjustments(req: Request, res: Response) {
try {
const difficulty = await DifficultyAdjustmentsRepository.$getRawAdjustments(req.params.interval, true);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 300).toUTCString());
res.json(difficulty.map(adj => [adj.time, adj.height, adj.difficulty, adj.adjustment]));
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getRewardStats(req: Request, res: Response) {
try {
const response = await mining.$getRewardStats(parseInt(req.params.blockCount, 10));
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(response);
} catch (e) {
res.status(500).end();
}
}
private async $getHistoricalBlocksHealth(req: Request, res: Response) {
try {
const blocksHealth = await mining.$getBlocksHealthHistory(req.params.interval);
const blockCount = await BlocksAuditsRepository.$getBlocksHealthCount();
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.header('X-total-count', blockCount.toString());
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(blocksHealth.map(health => [health.time, health.height, health.match_rate]));
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
public async $getBlockAudit(req: Request, res: Response) {
try {
const audit = await BlocksAuditsRepository.$getBlockAudit(req.params.hash);
if (!audit) {
res.status(204).send(`This block has not been audited.`);
return;
}
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 3600 * 24).toUTCString());
res.json(audit);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getHeightFromTimestamp(req: Request, res: Response) {
try {
const timestamp = parseInt(req.params.timestamp, 10);
// This will prevent people from entering milliseconds etc.
// Block timestamps are allowed to be up to 2 hours off, so 24 hours
// will never put the maximum value before the most recent block
const nowPlus1day = Math.floor(Date.now() / 1000) + 60 * 60 * 24;
// Prevent non-integers that are not seconds
if (!/^[1-9][0-9]*$/.test(req.params.timestamp) || timestamp > nowPlus1day) {
throw new Error(`Invalid timestamp, value must be Unix seconds`);
}
const result = await BlocksRepository.$getBlockHeightFromTimestamp(
timestamp,
);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 300).toUTCString());
res.json(result);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getBlockAuditScores(req: Request, res: Response) {
try {
let height = req.params.height === undefined ? undefined : parseInt(req.params.height, 10);
if (height == null) {
height = await BlocksRepository.$mostRecentBlockHeight();
}
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(await BlocksAuditsRepository.$getBlockAuditScores(height, height - 15));
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
public async $getBlockAuditScore(req: Request, res: Response) {
try {
const audit = await BlocksAuditsRepository.$getBlockAuditScore(req.params.hash);
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 3600 * 24).toUTCString());
res.json(audit || 'null');
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getAccelerationsByPool(req: Request, res: Response): Promise<void> {
try {
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
if (!config.MEMPOOL_SERVICES.ACCELERATIONS || ['testnet', 'signet', 'liquidtestnet', 'liquid'].includes(config.MEMPOOL.NETWORK)) {
res.status(400).send('Acceleration data is not available.');
return;
}
res.status(200).send(await AccelerationRepository.$getAccelerationInfo(req.params.slug));
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getAccelerationsByHeight(req: Request, res: Response): Promise<void> {
try {
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 3600 * 24).toUTCString());
if (!config.MEMPOOL_SERVICES.ACCELERATIONS || ['testnet', 'signet', 'liquidtestnet', 'liquid'].includes(config.MEMPOOL.NETWORK)) {
res.status(400).send('Acceleration data is not available.');
return;
}
const height = req.params.height === undefined ? undefined : parseInt(req.params.height, 10);
res.status(200).send(await AccelerationRepository.$getAccelerationInfo(null, height));
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getRecentAccelerations(req: Request, res: Response): Promise<void> {
try {
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
if (!config.MEMPOOL_SERVICES.ACCELERATIONS || ['testnet', 'signet', 'liquidtestnet', 'liquid'].includes(config.MEMPOOL.NETWORK)) {
res.status(400).send('Acceleration data is not available.');
return;
}
res.status(200).send(await AccelerationRepository.$getAccelerationInfo(null, null, req.params.interval));
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getAccelerationTotals(req: Request, res: Response): Promise<void> {
try {
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
if (!config.MEMPOOL_SERVICES.ACCELERATIONS || ['testnet', 'signet', 'liquidtestnet', 'liquid'].includes(config.MEMPOOL.NETWORK)) {
res.status(400).send('Acceleration data is not available.');
return;
}
res.status(200).send(await AccelerationRepository.$getAccelerationTotals(<string>req.query.pool, <string>req.query.interval));
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $getActiveAccelerations(req: Request, res: Response): Promise<void> {
try {
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
if (!config.MEMPOOL_SERVICES.ACCELERATIONS || ['testnet', 'signet', 'liquidtestnet', 'liquid'].includes(config.MEMPOOL.NETWORK)) {
res.status(400).send('Acceleration data is not available.');
return;
}
res.status(200).send(accelerationApi.accelerations || []);
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
private async $requestAcceleration(req: Request, res: Response): Promise<void> {
res.setHeader('Pragma', 'no-cache');
res.setHeader('Cache-control', 'private, no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0');
res.setHeader('expires', -1);
try {
accelerationApi.accelerationRequested(req.params.txid);
res.status(200).send();
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);
}
}
}
export default new MiningRoutes();

View File

@@ -0,0 +1,690 @@
import { BlockPrice, PoolInfo, PoolStats, RewardStats } from '../../mempool.interfaces';
import BlocksRepository from '../../repositories/BlocksRepository';
import PoolsRepository from '../../repositories/PoolsRepository';
import HashratesRepository from '../../repositories/HashratesRepository';
import bitcoinClient from '../bitcoin/bitcoin-client';
import logger from '../../logger';
import { Common } from '../common';
import loadingIndicators from '../loading-indicators';
import { escape } from 'mysql2';
import DifficultyAdjustmentsRepository from '../../repositories/DifficultyAdjustmentsRepository';
import config from '../../config';
import BlocksAuditsRepository from '../../repositories/BlocksAuditsRepository';
import PricesRepository from '../../repositories/PricesRepository';
import bitcoinApi from '../bitcoin/bitcoin-api-factory';
import { IEsploraApi } from '../bitcoin/esplora-api.interface';
import database from '../../database';
interface DifficultyBlock {
timestamp: number,
height: number,
bits: number,
difficulty: number,
}
class Mining {
private blocksPriceIndexingRunning = false;
public lastHashrateIndexingDate: number | null = null;
public lastWeeklyHashrateIndexingDate: number | null = null;
public reindexHashrateRequested = false;
public reindexDifficultyAdjustmentRequested = false;
/**
* Get historical blocks health
*/
public async $getBlocksHealthHistory(interval: string | null = null): Promise<any> {
return await BlocksAuditsRepository.$getBlocksHealthHistory(
this.getTimeRange(interval),
Common.getSqlInterval(interval)
);
}
/**
* Get historical block total fee
*/
public async $getHistoricalBlockFees(interval: string | null = null): Promise<any> {
return await BlocksRepository.$getHistoricalBlockFees(
this.getTimeRange(interval),
Common.getSqlInterval(interval)
);
}
/**
* Get timespan block total fees
*/
public async $getBlockFeesTimespan(from: number, to: number): Promise<number> {
return await BlocksRepository.$getHistoricalBlockFees(
this.getTimeRangeFromTimespan(from, to),
null,
{from, to}
);
}
/**
* Get historical block rewards
*/
public async $getHistoricalBlockRewards(interval: string | null = null): Promise<any> {
return await BlocksRepository.$getHistoricalBlockRewards(
this.getTimeRange(interval),
Common.getSqlInterval(interval)
);
}
/**
* Get historical block fee rates percentiles
*/
public async $getHistoricalBlockFeeRates(interval: string | null = null): Promise<any> {
return await BlocksRepository.$getHistoricalBlockFeeRates(
this.getTimeRange(interval),
Common.getSqlInterval(interval)
);
}
/**
* Get historical block sizes
*/
public async $getHistoricalBlockSizes(interval: string | null = null): Promise<any> {
return await BlocksRepository.$getHistoricalBlockSizes(
this.getTimeRange(interval),
Common.getSqlInterval(interval)
);
}
/**
* Get historical block weights
*/
public async $getHistoricalBlockWeights(interval: string | null = null): Promise<any> {
return await BlocksRepository.$getHistoricalBlockWeights(
this.getTimeRange(interval),
Common.getSqlInterval(interval)
);
}
/**
* Generate high level overview of the pool ranks and general stats
*/
public async $getPoolsStats(interval: string | null): Promise<object> {
const poolsStatistics = {};
const poolsInfo: PoolInfo[] = await PoolsRepository.$getPoolsInfo(interval);
const emptyBlocks: any[] = await BlocksRepository.$countEmptyBlocks(null, interval);
const poolsStats: PoolStats[] = [];
let rank = 1;
poolsInfo.forEach((poolInfo: PoolInfo) => {
const emptyBlocksCount = emptyBlocks.filter((emptyCount) => emptyCount.poolId === poolInfo.poolId);
const poolStat: PoolStats = {
poolId: poolInfo.poolId, // mysql row id
name: poolInfo.name,
link: poolInfo.link,
blockCount: poolInfo.blockCount,
rank: rank++,
emptyBlocks: emptyBlocksCount.length > 0 ? emptyBlocksCount[0]['count'] : 0,
slug: poolInfo.slug,
avgMatchRate: poolInfo.avgMatchRate !== null ? Math.round(100 * poolInfo.avgMatchRate) / 100 : null,
avgFeeDelta: poolInfo.avgFeeDelta,
poolUniqueId: poolInfo.poolUniqueId
};
poolsStats.push(poolStat);
});
poolsStatistics['pools'] = poolsStats;
const blockCount: number = await BlocksRepository.$blockCount(null, interval);
poolsStatistics['blockCount'] = blockCount;
const totalBlock24h: number = await BlocksRepository.$blockCount(null, '24h');
try {
poolsStatistics['lastEstimatedHashrate'] = await bitcoinClient.getNetworkHashPs(totalBlock24h);
} catch (e) {
poolsStatistics['lastEstimatedHashrate'] = 0;
logger.debug('Bitcoin Core is not available, using zeroed value for current hashrate', logger.tags.mining);
}
return poolsStatistics;
}
/**
* Get all mining pool stats for a pool
*/
public async $getPoolStat(slug: string): Promise<object> {
const pool = await PoolsRepository.$getPool(slug);
if (!pool) {
throw new Error('This mining pool does not exist');
}
const blockCount: number = await BlocksRepository.$blockCount(pool.id);
const totalBlock: number = await BlocksRepository.$blockCount(null, null);
const blockCount24h: number = await BlocksRepository.$blockCount(pool.id, '24h');
const totalBlock24h: number = await BlocksRepository.$blockCount(null, '24h');
const blockCount1w: number = await BlocksRepository.$blockCount(pool.id, '1w');
const totalBlock1w: number = await BlocksRepository.$blockCount(null, '1w');
const avgHealth = await BlocksRepository.$getAvgBlockHealthPerPoolId(pool.id);
const totalReward = await BlocksRepository.$getTotalRewardForPoolId(pool.id);
let currentEstimatedHashrate = 0;
try {
currentEstimatedHashrate = await bitcoinClient.getNetworkHashPs(totalBlock24h);
} catch (e) {
logger.debug('Bitcoin Core is not available, using zeroed value for current hashrate', logger.tags.mining);
}
return {
pool: pool,
blockCount: {
'all': blockCount,
'24h': blockCount24h,
'1w': blockCount1w,
},
blockShare: {
'all': blockCount / totalBlock,
'24h': blockCount24h / totalBlock24h,
'1w': blockCount1w / totalBlock1w,
},
estimatedHashrate: currentEstimatedHashrate * (blockCount24h / totalBlock24h),
reportedHashrate: null,
avgBlockHealth: avgHealth,
totalReward: totalReward,
};
}
/**
* Get miner reward stats
*/
public async $getRewardStats(blockCount: number): Promise<RewardStats> {
return await BlocksRepository.$getBlockStats(blockCount);
}
/**
* Generate weekly mining pool hashrate history
*/
public async $generatePoolHashrateHistory(): Promise<void> {
const now = new Date();
// Run only if:
// * this.lastWeeklyHashrateIndexingDate is set to null (node backend restart, reorg)
// * we started a new week (around Monday midnight)
const runIndexing = this.lastWeeklyHashrateIndexingDate === null ||
now.getUTCDay() === 1 && this.lastWeeklyHashrateIndexingDate !== now.getUTCDate();
if (!runIndexing) {
logger.debug(`Pool hashrate history indexing is up to date, nothing to do`, logger.tags.mining);
return;
}
try {
const oldestConsecutiveBlockTimestamp = 1000 * (await BlocksRepository.$getOldestConsecutiveBlock()).timestamp;
const genesisBlock: IEsploraApi.Block = await bitcoinApi.$getBlock(await bitcoinApi.$getBlockHash(0));
const genesisTimestamp = genesisBlock.timestamp * 1000;
const indexedTimestamp = await HashratesRepository.$getWeeklyHashrateTimestamps();
const hashrates: any[] = [];
const lastMonday = new Date(now.setDate(now.getDate() - (now.getDay() + 6) % 7));
const lastMondayMidnight = this.getDateMidnight(lastMonday);
let toTimestamp = lastMondayMidnight.getTime();
const totalWeekIndexed = (await BlocksRepository.$blockCount(null, null)) / 1008;
let indexedThisRun = 0;
let totalIndexed = 0;
let newlyIndexed = 0;
const startedAt = new Date().getTime() / 1000;
let timer = new Date().getTime() / 1000;
logger.debug(`Indexing weekly mining pool hashrate`, logger.tags.mining);
loadingIndicators.setProgress('weekly-hashrate-indexing', 0);
while (toTimestamp > genesisTimestamp && toTimestamp > oldestConsecutiveBlockTimestamp) {
const fromTimestamp = toTimestamp - 604800000;
// Skip already indexed weeks
if (indexedTimestamp.includes(toTimestamp / 1000)) {
toTimestamp -= 604800000;
++totalIndexed;
continue;
}
const blockStats: any = await BlocksRepository.$blockCountBetweenTimestamp(
null, fromTimestamp / 1000, toTimestamp / 1000);
const lastBlockHashrate = await bitcoinClient.getNetworkHashPs(blockStats.blockCount,
blockStats.lastBlockHeight);
let pools = await PoolsRepository.$getPoolsInfoBetween(fromTimestamp / 1000, toTimestamp / 1000);
const totalBlocks = pools.reduce((acc, pool) => acc + pool.blockCount, 0);
if (totalBlocks > 0) {
pools = pools.map((pool: any) => {
pool.hashrate = (pool.blockCount / totalBlocks) * lastBlockHashrate;
pool.share = (pool.blockCount / totalBlocks);
return pool;
});
for (const pool of pools) {
hashrates.push({
hashrateTimestamp: toTimestamp / 1000,
avgHashrate: pool['hashrate'] ,
poolId: pool.poolId,
share: pool['share'],
type: 'weekly',
});
}
newlyIndexed += hashrates.length / Math.max(1, pools.length);
await HashratesRepository.$saveHashrates(hashrates);
hashrates.length = 0;
}
const elapsedSeconds = Math.max(1, Math.round((new Date().getTime() / 1000) - timer));
if (elapsedSeconds > 1) {
const runningFor = Math.max(1, Math.round((new Date().getTime() / 1000) - startedAt));
const weeksPerSeconds = Math.max(1, Math.round(indexedThisRun / elapsedSeconds));
const progress = Math.round(totalIndexed / totalWeekIndexed * 10000) / 100;
const formattedDate = new Date(fromTimestamp).toUTCString();
logger.debug(`Getting weekly pool hashrate for ${formattedDate} | ~${weeksPerSeconds.toFixed(2)} weeks/sec | total: ~${totalIndexed}/${Math.round(totalWeekIndexed)} (${progress}%) | elapsed: ${runningFor} seconds`, logger.tags.mining);
timer = new Date().getTime() / 1000;
indexedThisRun = 0;
loadingIndicators.setProgress('weekly-hashrate-indexing', progress, false);
}
toTimestamp -= 604800000;
++indexedThisRun;
++totalIndexed;
}
this.lastWeeklyHashrateIndexingDate = new Date().getUTCDate();
if (newlyIndexed > 0) {
logger.info(`Weekly mining pools hashrates indexing completed: indexed ${newlyIndexed} weeks`, logger.tags.mining);
} else {
logger.debug(`Weekly mining pools hashrates indexing completed: indexed ${newlyIndexed} weeks`, logger.tags.mining);
}
loadingIndicators.setProgress('weekly-hashrate-indexing', 100);
} catch (e) {
loadingIndicators.setProgress('weekly-hashrate-indexing', 100);
logger.err(`Weekly mining pools hashrates indexing failed. Trying again in 10 seconds. Reason: ${(e instanceof Error ? e.message : e)}`, logger.tags.mining);
throw e;
}
}
/**
* Generate daily hashrate data
*/
public async $generateNetworkHashrateHistory(): Promise<void> {
// If a re-index was requested, truncate first
if (this.reindexHashrateRequested === true) {
logger.notice(`hashrates will now be re-indexed`);
await database.query(`TRUNCATE hashrates`);
this.lastHashrateIndexingDate = 0;
this.reindexHashrateRequested = false;
}
// We only run this once a day around midnight
const today = new Date().getUTCDate();
if (today === this.lastHashrateIndexingDate) {
logger.debug(`Network hashrate history indexing is up to date, nothing to do`, logger.tags.mining);
return;
}
const oldestConsecutiveBlockTimestamp = 1000 * (await BlocksRepository.$getOldestConsecutiveBlock()).timestamp;
try {
const genesisBlock: IEsploraApi.Block = await bitcoinApi.$getBlock(await bitcoinApi.$getBlockHash(0));
const genesisTimestamp = genesisBlock.timestamp * 1000;
const indexedTimestamp = (await HashratesRepository.$getRawNetworkDailyHashrate(null)).map(hashrate => hashrate.timestamp);
const lastMidnight = this.getDateMidnight(new Date());
let toTimestamp = Math.round(lastMidnight.getTime());
const hashrates: any[] = [];
const totalDayIndexed = (await BlocksRepository.$blockCount(null, null)) / 144;
let indexedThisRun = 0;
let totalIndexed = 0;
let newlyIndexed = 0;
const startedAt = new Date().getTime() / 1000;
let timer = new Date().getTime() / 1000;
logger.debug(`Indexing daily network hashrate`, logger.tags.mining);
loadingIndicators.setProgress('daily-hashrate-indexing', 0);
while (toTimestamp > genesisTimestamp && toTimestamp > oldestConsecutiveBlockTimestamp) {
const fromTimestamp = toTimestamp - 86400000;
// Skip already indexed days
if (indexedTimestamp.includes(toTimestamp / 1000)) {
toTimestamp -= 86400000;
++totalIndexed;
continue;
}
const blockStats: any = await BlocksRepository.$blockCountBetweenTimestamp(
null, fromTimestamp / 1000, toTimestamp / 1000);
const lastBlockHashrate = blockStats.blockCount === 0 ? 0 : await bitcoinClient.getNetworkHashPs(blockStats.blockCount,
blockStats.lastBlockHeight);
hashrates.push({
hashrateTimestamp: toTimestamp / 1000,
avgHashrate: lastBlockHashrate,
poolId: 0,
share: 1,
type: 'daily',
});
if (hashrates.length > 10) {
newlyIndexed += hashrates.length;
await HashratesRepository.$saveHashrates(hashrates);
hashrates.length = 0;
}
const elapsedSeconds = Math.max(1, Math.round((new Date().getTime() / 1000) - timer));
if (elapsedSeconds > 1) {
const runningFor = Math.max(1, Math.round((new Date().getTime() / 1000) - startedAt));
const daysPerSeconds = Math.max(1, Math.round(indexedThisRun / elapsedSeconds));
const progress = Math.round(totalIndexed / totalDayIndexed * 10000) / 100;
const formattedDate = new Date(fromTimestamp).toUTCString();
logger.debug(`Getting network daily hashrate for ${formattedDate} | ~${daysPerSeconds.toFixed(2)} days/sec | total: ~${totalIndexed}/${Math.round(totalDayIndexed)} (${progress}%) | elapsed: ${runningFor} seconds`, logger.tags.mining);
timer = new Date().getTime() / 1000;
indexedThisRun = 0;
loadingIndicators.setProgress('daily-hashrate-indexing', progress);
}
toTimestamp -= 86400000;
++indexedThisRun;
++totalIndexed;
}
// Add genesis block manually
if (config.MEMPOOL.INDEXING_BLOCKS_AMOUNT === -1 && !indexedTimestamp.includes(genesisTimestamp / 1000)) {
hashrates.push({
hashrateTimestamp: genesisTimestamp / 1000,
avgHashrate: await bitcoinClient.getNetworkHashPs(1, 1),
poolId: 0,
share: 1,
type: 'daily',
});
}
newlyIndexed += hashrates.length;
await HashratesRepository.$saveHashrates(hashrates);
this.lastHashrateIndexingDate = new Date().getUTCDate();
if (newlyIndexed > 0) {
logger.info(`Daily network hashrate indexing completed: indexed ${newlyIndexed} days`, logger.tags.mining);
} else {
logger.debug(`Daily network hashrate indexing completed: indexed ${newlyIndexed} days`, logger.tags.mining);
}
loadingIndicators.setProgress('daily-hashrate-indexing', 100);
} catch (e) {
loadingIndicators.setProgress('daily-hashrate-indexing', 100);
logger.err(`Daily network hashrate indexing failed. Trying again later. Reason: ${(e instanceof Error ? e.message : e)}`, logger.tags.mining);
throw e;
}
}
/**
* Index difficulty adjustments
*/
public async $indexDifficultyAdjustments(): Promise<void> {
// If a re-index was requested, truncate first
if (this.reindexDifficultyAdjustmentRequested === true) {
logger.notice(`difficulty_adjustments will now be re-indexed`);
await database.query(`TRUNCATE difficulty_adjustments`);
this.reindexDifficultyAdjustmentRequested = false;
}
const indexedHeightsArray = await DifficultyAdjustmentsRepository.$getAdjustmentsHeights();
const indexedHeights = {};
for (const height of indexedHeightsArray) {
indexedHeights[height] = true;
}
// gets {time, height, difficulty, bits} of blocks in ascending order of height
const blocks: any = await BlocksRepository.$getBlocksDifficulty();
const genesisBlock: IEsploraApi.Block = await bitcoinApi.$getBlock(await bitcoinApi.$getBlockHash(0));
let currentDifficulty = genesisBlock.difficulty;
let currentBits = genesisBlock.bits;
let totalIndexed = 0;
if (config.MEMPOOL.INDEXING_BLOCKS_AMOUNT === -1 && indexedHeights[0] !== true) {
await DifficultyAdjustmentsRepository.$saveAdjustments({
time: genesisBlock.timestamp,
height: 0,
difficulty: currentDifficulty,
adjustment: 0.0,
});
}
if (!blocks?.length) {
// no blocks in database yet
return;
}
const oldestConsecutiveBlock = this.getOldestConsecutiveBlock(blocks);
currentBits = oldestConsecutiveBlock.bits;
currentDifficulty = oldestConsecutiveBlock.difficulty;
let totalBlockChecked = 0;
let timer = new Date().getTime() / 1000;
for (const block of blocks) {
// skip until the first block after the oldest consecutive block
if (block.height <= oldestConsecutiveBlock.height) {
continue;
}
// difficulty has changed between two consecutive blocks!
if (block.bits !== currentBits) {
// skip if already indexed
if (indexedHeights[block.height] !== true) {
let adjustment = block.difficulty / currentDifficulty;
adjustment = Math.round(adjustment * 1000000) / 1000000; // Remove float point noise
await DifficultyAdjustmentsRepository.$saveAdjustments({
time: block.time,
height: block.height,
difficulty: block.difficulty,
adjustment: adjustment,
});
totalIndexed++;
}
// update the current difficulty
currentDifficulty = block.difficulty;
currentBits = block.bits;
}
totalBlockChecked++;
const elapsedSeconds = Math.max(1, Math.round((new Date().getTime() / 1000) - timer));
if (elapsedSeconds > 5) {
const progress = Math.round(totalBlockChecked / blocks.length * 100);
logger.debug(`Indexing difficulty adjustment at block #${block.height} | Progress: ${progress}%`, logger.tags.mining);
timer = new Date().getTime() / 1000;
}
}
if (totalIndexed > 0) {
logger.info(`Indexed ${totalIndexed} difficulty adjustments`, logger.tags.mining);
} else {
logger.debug(`Indexed ${totalIndexed} difficulty adjustments`, logger.tags.mining);
}
}
/**
* Create a link between blocks and the latest price at when they were mined
*/
public async $indexBlockPrices(): Promise<void> {
if (this.blocksPriceIndexingRunning === true) {
return;
}
this.blocksPriceIndexingRunning = true;
let totalInserted = 0;
try {
const prices: any[] = await PricesRepository.$getPricesTimesAndId();
const blocksWithoutPrices: any[] = await BlocksRepository.$getBlocksWithoutPrice();
const blocksPrices: BlockPrice[] = [];
for (const block of blocksWithoutPrices) {
// Quick optimisation, out mtgox feed only goes back to 2010-07-19 02:00:00, so skip the first 68951 blocks
if (['mainnet', 'testnet'].includes(config.MEMPOOL.NETWORK) && block.height < 68951) {
blocksPrices.push({
height: block.height,
priceId: prices[0].id,
});
continue;
}
for (const price of prices) {
if (block.timestamp < price.time) {
blocksPrices.push({
height: block.height,
priceId: price.id,
});
break;
};
}
if (blocksPrices.length >= 100000) {
totalInserted += blocksPrices.length;
let logStr = `Linking ${blocksPrices.length} blocks to their closest price`;
if (blocksWithoutPrices.length > 200000) {
logStr += ` | Progress ${Math.round(totalInserted / blocksWithoutPrices.length * 100)}%`;
}
logger.debug(logStr, logger.tags.mining);
await BlocksRepository.$saveBlockPrices(blocksPrices);
blocksPrices.length = 0;
}
}
if (blocksPrices.length > 0) {
totalInserted += blocksPrices.length;
let logStr = `Linking ${blocksPrices.length} blocks to their closest price`;
if (blocksWithoutPrices.length > 200000) {
logStr += ` | Progress ${Math.round(totalInserted / blocksWithoutPrices.length * 100)}%`;
}
logger.debug(logStr, logger.tags.mining);
await BlocksRepository.$saveBlockPrices(blocksPrices);
}
} catch (e) {
this.blocksPriceIndexingRunning = false;
logger.err(`Cannot index block prices. ${e}`);
}
if (totalInserted > 0) {
logger.info(`Indexing blocks prices completed. Indexed ${totalInserted}`, logger.tags.mining);
} else {
logger.debug(`Indexing blocks prices completed. Indexed 0.`, logger.tags.mining);
}
this.blocksPriceIndexingRunning = false;
}
/**
* Index core coinstatsindex
*/
public async $indexCoinStatsIndex(): Promise<void> {
let timer = new Date().getTime() / 1000;
let totalIndexed = 0;
const blockchainInfo = await bitcoinClient.getBlockchainInfo();
let currentBlockHeight = blockchainInfo.blocks;
while (currentBlockHeight > 0) {
const indexedBlocks = await BlocksRepository.$getBlocksMissingCoinStatsIndex(
currentBlockHeight, currentBlockHeight - 10000);
for (const block of indexedBlocks) {
const txoutset = await bitcoinClient.getTxoutSetinfo('none', block.height);
await BlocksRepository.$updateCoinStatsIndexData(block.hash, txoutset.txouts,
Math.round(txoutset.block_info.prevout_spent * 100000000));
++totalIndexed;
const elapsedSeconds = Math.max(1, new Date().getTime() / 1000 - timer);
if (elapsedSeconds > 5) {
logger.info(`Indexing coinstatsindex data for block #${block.height}. Indexed ${totalIndexed} blocks.`, logger.tags.mining);
timer = new Date().getTime() / 1000;
}
}
currentBlockHeight -= 10000;
}
if (totalIndexed > 0) {
logger.info(`Indexing missing coinstatsindex data completed. Indexed ${totalIndexed}`, logger.tags.mining);
} else {
logger.debug(`Indexing missing coinstatsindex data completed. Indexed 0.`, logger.tags.mining);
}
}
/**
* List existing mining pools
*/
public async $listPools(): Promise<{name: string, slug: string, unique_id: number}[] | null> {
const [rows] = await database.query(`
SELECT
name,
slug,
unique_id
FROM pools`
);
return rows as {name: string, slug: string, unique_id: number}[];
}
private getDateMidnight(date: Date): Date {
date.setUTCHours(0);
date.setUTCMinutes(0);
date.setUTCSeconds(0);
date.setUTCMilliseconds(0);
return date;
}
private getTimeRange(interval: string | null, scale = 1): number {
switch (interval) {
case '4y': return 43200 * scale; // 12h
case '3y': return 43200 * scale; // 12h
case '2y': return 28800 * scale; // 8h
case '1y': return 28800 * scale; // 8h
case '6m': return 10800 * scale; // 3h
case '3m': return 7200 * scale; // 2h
case '1m': return 1800 * scale; // 30min
case '1w': return 300 * scale; // 5min
case '3d': return 1 * scale;
case '24h': return 1 * scale;
default: return 86400 * scale;
}
}
private getTimeRangeFromTimespan(from: number, to: number, scale = 1): number {
const timespan = to - from;
switch (true) {
case timespan > 3600 * 24 * 365 * 4: return 86400 * scale; // 24h
case timespan > 3600 * 24 * 365 * 3: return 43200 * scale; // 12h
case timespan > 3600 * 24 * 365 * 2: return 43200 * scale; // 12h
case timespan > 3600 * 24 * 365: return 28800 * scale; // 8h
case timespan > 3600 * 24 * 30 * 6: return 28800 * scale; // 8h
case timespan > 3600 * 24 * 30 * 3: return 10800 * scale; // 3h
case timespan > 3600 * 24 * 30: return 7200 * scale; // 2h
case timespan > 3600 * 24 * 7: return 1800 * scale; // 30min
case timespan > 3600 * 24 * 3: return 300 * scale; // 5min
case timespan > 3600 * 24: return 1 * scale;
default: return 1 * scale;
}
}
// Finds the oldest block in a consecutive chain back from the tip
// assumes `blocks` is sorted in ascending height order
private getOldestConsecutiveBlock(blocks: DifficultyBlock[]): DifficultyBlock {
for (let i = blocks.length - 1; i > 0; i--) {
if ((blocks[i].height - blocks[i - 1].height) > 1) {
return blocks[i];
}
}
return blocks[0];
}
}
export default new Mining();

View File

@@ -0,0 +1,225 @@
import DB from '../database';
import logger from '../logger';
import config from '../config';
import PoolsRepository from '../repositories/PoolsRepository';
import { PoolTag } from '../mempool.interfaces';
import diskCache from './disk-cache';
import mining from './mining/mining';
import transactionUtils from './transaction-utils';
import BlocksRepository from '../repositories/BlocksRepository';
import redisCache from './redis-cache';
class PoolsParser {
miningPools: any[] = [];
unknownPool: any = {
'id': 0,
'name': 'Unknown',
'link': 'https://learnmeabitcoin.com/technical/coinbase-transaction',
'regexes': '[]',
'addresses': '[]',
'slug': 'unknown'
};
private uniqueLogs: string[] = [];
private uniqueLog(loggerFunction: any, msg: string): void {
if (this.uniqueLogs.includes(msg)) {
return;
}
this.uniqueLogs.push(msg);
loggerFunction(msg);
}
public setMiningPools(pools): void {
for (const pool of pools) {
pool.regexes = pool.tags;
pool.slug = pool.name.replace(/[^a-z0-9]/gi, '').toLowerCase();
delete(pool.tags);
}
this.miningPools = pools;
}
/**
* Populate our db with updated mining pool definition
* @param pools
*/
public async migratePoolsJson(): Promise<void> {
// We also need to wipe the backend cache to make sure we don't serve blocks with
// the wrong mining pool (usually happen with unknown blocks)
diskCache.setIgnoreBlocksCache();
redisCache.setIgnoreBlocksCache();
await this.$insertUnknownPool();
let reindexUnknown = false;
for (const pool of this.miningPools) {
if (!pool.id) {
logger.info(`Mining pool ${pool.name} has no unique 'id' defined. Skipping.`);
continue;
}
// One of the two fields 'addresses' or 'regexes' must be a non-empty array
if (!pool.addresses && !pool.regexes) {
logger.err(`Mining pool ${pool.name} must have at least one of the fields 'addresses' or 'regexes'. Skipping.`);
continue;
}
pool.addresses = pool.addresses || [];
pool.regexes = pool.regexes || [];
if (pool.addresses.length === 0 && pool.regexes.length === 0) {
logger.err(`Mining pool ${pool.name} has no 'addresses' nor 'regexes' defined. Skipping.`);
continue;
}
if (pool.addresses.length === 0) {
logger.warn(`Mining pool ${pool.name} has no 'addresses' defined.`);
}
if (pool.regexes.length === 0) {
logger.warn(`Mining pool ${pool.name} has no 'regexes' defined.`);
}
const poolDB = await PoolsRepository.$getPoolByUniqueId(pool.id, false);
if (!poolDB) {
// New mining pool
const slug = pool.name.replace(/[^a-z0-9]/gi, '').toLowerCase();
logger.debug(`Inserting new mining pool ${pool.name}`);
await PoolsRepository.$insertNewMiningPool(pool, slug);
reindexUnknown = true;
} else {
if (poolDB.name !== pool.name) {
// Pool has been renamed
const newSlug = pool.name.replace(/[^a-z0-9]/gi, '').toLowerCase();
logger.warn(`Renaming ${poolDB.name} mining pool to ${pool.name}. Slug has been updated. Maybe you want to make a redirection from 'https://mempool.space/mining/pool/${poolDB.slug}' to 'https://mempool.space/mining/pool/${newSlug}`);
await PoolsRepository.$renameMiningPool(poolDB.id, newSlug, pool.name);
}
if (poolDB.link !== pool.link) {
// Pool link has changed
logger.debug(`Updating link for ${pool.name} mining pool`);
await PoolsRepository.$updateMiningPoolLink(poolDB.id, pool.link);
}
if (JSON.stringify(pool.addresses) !== poolDB.addresses ||
JSON.stringify(pool.regexes) !== poolDB.regexes) {
// Pool addresses changed or coinbase tags changed
logger.notice(`Updating addresses and/or coinbase tags for ${pool.name} mining pool.`);
await PoolsRepository.$updateMiningPoolTags(poolDB.id, pool.addresses, pool.regexes);
reindexUnknown = true;
await this.$reindexBlocksForPool(poolDB.id);
}
}
}
if (reindexUnknown) {
logger.notice(`Updating addresses and/or coinbase tags for unknown mining pool.`);
let unknownPool;
if (config.DATABASE.ENABLED === true) {
unknownPool = await PoolsRepository.$getUnknownPool();
} else {
unknownPool = this.unknownPool;
}
await this.$reindexBlocksForPool(unknownPool.id);
}
}
public matchBlockMiner(scriptsig: string, addresses: string[], pools: PoolTag[]): PoolTag | undefined {
const asciiScriptSig = transactionUtils.hex2ascii(scriptsig);
for (let i = 0; i < pools.length; ++i) {
if (addresses.length) {
const poolAddresses: string[] = typeof pools[i].addresses === 'string' ?
JSON.parse(pools[i].addresses) : pools[i].addresses;
for (let y = 0; y < poolAddresses.length; y++) {
if (addresses.indexOf(poolAddresses[y]) !== -1) {
return pools[i];
}
}
}
const regexes: string[] = typeof pools[i].regexes === 'string' ?
JSON.parse(pools[i].regexes) : pools[i].regexes;
for (let y = 0; y < regexes.length; ++y) {
const regex = new RegExp(regexes[y], 'i');
const match = asciiScriptSig.match(regex);
if (match !== null) {
return pools[i];
}
}
}
}
/**
* Manually add the 'unknown pool'
*/
public async $insertUnknownPool(): Promise<void> {
if (!config.DATABASE.ENABLED) {
return;
}
try {
const [rows]: any[] = await DB.query({ sql: 'SELECT name from pools where name="Unknown"', timeout: 120000 });
if (rows.length === 0) {
await DB.query({
sql: `INSERT INTO pools(name, link, regexes, addresses, slug, unique_id)
VALUES("${this.unknownPool.name}", "${this.unknownPool.link}", "[]", "[]", "${this.unknownPool.slug}", 0);
`});
} else {
await DB.query(`UPDATE pools
SET name='${this.unknownPool.name}', link='${this.unknownPool.link}',
regexes='[]', addresses='[]',
slug='${this.unknownPool.slug}',
unique_id=0
WHERE slug='${this.unknownPool.slug}'
`);
}
} catch (e) {
logger.err(`Unable to insert or update "Unknown" mining pool. Reason: ${e instanceof Error ? e.message : e}`);
}
}
/**
* re-index pool assignment for blocks previously associated with pool
*
* @param pool local id of existing pool to reindex
*/
private async $reindexBlocksForPool(poolId: number): Promise<void> {
let firstKnownBlockPool = 130635; // https://mempool.space/block/0000000000000a067d94ff753eec72830f1205ad3a4c216a08a80c832e551a52
if (config.MEMPOOL.NETWORK === 'testnet') {
firstKnownBlockPool = 21106; // https://mempool.space/testnet/block/0000000070b701a5b6a1b965f6a38e0472e70b2bb31b973e4638dec400877581
} else if (config.MEMPOOL.NETWORK === 'signet') {
firstKnownBlockPool = 0;
}
const [blocks]: any[] = await DB.query(`
SELECT height, hash, coinbase_raw, coinbase_addresses
FROM blocks
WHERE pool_id = ?
AND height >= ?
ORDER BY height DESC
`, [poolId, firstKnownBlockPool]);
let pools: PoolTag[] = [];
if (config.DATABASE.ENABLED === true) {
pools = await PoolsRepository.$getPools();
} else {
pools = this.miningPools;
}
let changed = 0;
for (const block of blocks) {
const addresses = JSON.parse(block.coinbase_addresses) || [];
const newPool = this.matchBlockMiner(block.coinbase_raw, addresses, pools);
if (newPool && newPool.id !== poolId) {
changed++;
await BlocksRepository.$savePool(block.hash, newPool.id);
}
}
logger.info(`${changed} blocks assigned to a new pool`, logger.tags.mining);
// Re-index hashrates and difficulty adjustments later
mining.reindexHashrateRequested = true;
}
}
export default new PoolsParser();

Some files were not shown because too many files have changed in this diff Show More