doc: update and move design notes
This commit is contained in:
parent
0c54b50b83
commit
01906060ab
@ -1,42 +0,0 @@
|
||||
Neptune Block Explorer Design notes:
|
||||
|
||||
Initial functionality:
|
||||
|
||||
+ show tip info (digest, height, etc)
|
||||
+ lookup block by selectors: height, digest, genesis, tip
|
||||
+ display block info
|
||||
+ something about generation addresses. (ask Alan)
|
||||
+ lookup UTXO, show #of confirmations. confirm utxo is confirmed
|
||||
|
||||
Block Explorer RPC calls:
|
||||
+ tip_info
|
||||
+ block_info
|
||||
+ utxo_info
|
||||
|
||||
Neptune RPC calls to support Block Explorer:
|
||||
+ tip_info
|
||||
+ block_info
|
||||
+ utxo_info
|
||||
|
||||
|
||||
Architecture:
|
||||
|
||||
Block Explorer is comprised of:
|
||||
Server:
|
||||
RPC Server (backend)
|
||||
GUI Server (for serving html/js/wasm)
|
||||
Client:
|
||||
Web Client (browser, mobile, etc)
|
||||
Rpc Client (browser, any 3rd party app)
|
||||
|
||||
RPC Server and GUI Server are components of the same
|
||||
server instance. The server is built with axum framework.
|
||||
|
||||
GUI html framework(s) is TBD. For now we just produce very
|
||||
basic raw HTML using axum.
|
||||
|
||||
Server and Client communicate via RPC. The initial RPC mechanism
|
||||
is REST using axum's built-in rest support. Rest has the benefit
|
||||
that it can be accessed via a web-browser. We may add
|
||||
JSON-RPC support later.
|
||||
|
||||
66
doc/design_notes.md
Normal file
66
doc/design_notes.md
Normal file
@ -0,0 +1,66 @@
|
||||
# Neptune Block Explorer Design notes
|
||||
|
||||
## Initial functionality
|
||||
|
||||
* show tip info (digest, height, etc)
|
||||
* lookup block by selectors: height, digest, genesis, tip
|
||||
* display block info
|
||||
* something about generation addresses. (ask Alan, todo)
|
||||
* lookup UTXO, show #of confirmations. (todo) confirm utxo is confirmed
|
||||
|
||||
## Block Explorer RPC calls
|
||||
* tip_info
|
||||
* block_info
|
||||
* utxo_info
|
||||
|
||||
## Neptune RPC calls to support Block Explorer
|
||||
* tip_info
|
||||
* block_info
|
||||
* utxo_info
|
||||
|
||||
|
||||
## Architecture
|
||||
|
||||
Block Explorer is comprised of:
|
||||
* Server:
|
||||
* RPC Server (backend)
|
||||
* GUI Server (for serving html/js/wasm)
|
||||
* Client:
|
||||
* Web Client (browser, mobile, etc)
|
||||
* Rpc Client (browser, any 3rd party app)
|
||||
|
||||
RPC Server and GUI Server are logical components of the same
|
||||
server instance. The server is built with axum framework.
|
||||
|
||||
Server goals:
|
||||
* provide basic "block explorer" functionality
|
||||
* fast response times
|
||||
* public access: no authentication necessary, read-only.
|
||||
* simple maintainable code
|
||||
* RPC Specific:
|
||||
* simple self-documenting public APIs
|
||||
* keep response data small. avoid huge responses
|
||||
* GUI Specific:
|
||||
* simple, hand-crafted, maintainable HTML
|
||||
* javascript-free
|
||||
|
||||
GUI Server is built with:
|
||||
* `axum` for server/routing
|
||||
* [boilerplate](https://crates.io/crates/boilerplate) for templates with embedded rust
|
||||
* [pico-css](https://picocss.com/) for responsive light/dark themes, js free.
|
||||
|
||||
For simplicity and efficiency, the GUI Server calls neptune-core APIs directly
|
||||
rather than calling the neptune-explorer RPC APIs over http or internally.
|
||||
|
||||
## Client/Server communication
|
||||
|
||||
Server and Client communicate via http/RPC or http/html. The initial RPC
|
||||
mechanism is REST using axum's built-in rest support. REST has the benefit that
|
||||
it can be accessed via a web-browser. We may add JSON-RPC support later.
|
||||
|
||||
## Future Clients
|
||||
|
||||
It is envisioned that more advanced clients may be created in the future. For
|
||||
example something like `Dioxus` or `Leptos` could be used to create client(s) for WASM,
|
||||
mobile, desktop, and perhaps even tui/cli. Such client(s) should live in their
|
||||
own repo and communicate with the block-explorer server only via RPC.
|
||||
Loading…
x
Reference in New Issue
Block a user