13 Commits

Author SHA1 Message Date
danda
af5496ed11 feat: monitor for stalled chain and send alert
closes #7.

adds a blockchain watchdog that checks every hour if the tip height has
advanced or not.  Sends alert email if height is less or equal to
height at the last check and enters a warning mode.  In warning mode
it waits until the height is greater than previous, and then sends a
recovery alert and switches to normal mode.
2024-12-31 17:39:11 -08:00
danda
dd7e80298d feat: display coinbase amount, other misc
Closes #5
Addresses #6

changes:
 * field Mining Reward --> Coinbase. (actual reward)
 * add field Expected Coinbase  (expected/calced reward)
     this field only displays if different from actual coinbase.
 * add field Cumulative Proof-of-Work
 * change tooltip 🛈   -->  ⓘ .  for mobile devices. (hopefully)
 * css: make tooltip text bold, so the ⓘ  is stronger.
2024-12-20 21:58:59 +08:00
danda
f293d4e6bb feat: display links to sibling blocks, if any
closes #2
2024-12-18 14:17:22 +08:00
danda
ebcfdb947c feat: display if block in canonical chain or not
Adds a 'Canonical' field to the /block page.

note: this requires updating neptune-core in order to obtain the field
from neptune-core's /block_info rpc endpoint.

it was also necessary to change 'use neptune_core::<x>" statements to
'use neptune_cash::<x>'
2024-12-18 12:15:38 +08:00
danda
0bc81d2382 chore: update for neptune-core betanet
updates some deps and one minor code change since uncle
blocks no longer occur.
2024-11-23 00:47:36 +00:00
danda
c2fe657e04 perf: replace RwLock with ArcSwap
ArcSwap is lock-free and optimized for our use-case of lots of
concurrent reads and infrequent updates.

So it is pretty close to a shared-nothing architecture.

Some small changes were necessary, but its mostly a drop-in
replacement for RwLock.
2024-05-27 17:24:01 -07:00
danda
71cf752b41 feat: add neptune-core rpc connection watchdog
closes #1

Implements a background watchdog task that:
1. calls neptune-core /network rpc every N seconds (default: 10)
2. emits log message on any state change
3. sends detailed email alert to admin on any state change

Changes:
* AppState now has internal Arc<RwLock<AppStateInner>> to permit
  watchdog task to mutate the rpc_client field.
* adjust application to AppState changes (use locks)
* not_found functions no longer accept state arg
* move state initialization into AppState::init()
* add optional alert parameters: admin-email, smtp-*
* add neptune_rpc module with watchdog task
* add alert_email module
* simplify main()
* log warnings if alert parameters not set
* add chrono dep
* add lettre dep
2024-05-25 19:16:36 -07:00
danda
e4fda1a806 refactor: add anyhow, remove unwrap/expect
converts unwrap and expect calls in main.rs into anyhow .with_context()
calls to provide better error messages
2024-05-22 19:39:46 -07:00
danda
29834dbe50 feat: get rid of all javascript
implements a generic solution to redirect query strings generated by
forms to path based URIs that can be handled by existing routes.

This eliminates the need for javascript that was doing the equivalent
client-side.
2024-05-22 17:18:51 -07:00
danda
ac27329bda chore: update to neptune-core tip
adapts to some changes in neptune-core.

BlockInfo and BlockSelector location changed.
2024-05-22 17:18:50 -07:00
danda
7fa11f3ec2 refactor: break main.rs into separate files 2024-05-22 17:18:50 -07:00
danda
4509b1f9a6 feat: add boilerplate templates, utxo page 2024-05-22 17:18:50 -07:00
danda
951758902a initial commit of neptune-explorer files 2024-05-22 17:18:46 -07:00