diff --git a/book/book.toml b/book/book.toml index 1356c961dc2..340da4f7c96 100644 --- a/book/book.toml +++ b/book/book.toml @@ -14,3 +14,4 @@ command = "mdbook-mermaid" [output.html] additional-js = ["mermaid.min.js", "mermaid-init.js"] +additional-css = ["theme/css/custom.css"] diff --git a/book/src/dev/diagrams/service-dependencies.svg b/book/src/dev/diagrams/service-dependencies.svg new file mode 100644 index 00000000000..3ebd62bdf56 --- /dev/null +++ b/book/src/dev/diagrams/service-dependencies.svg @@ -0,0 +1,174 @@ + + + + + + +services + + +transaction_verifier + +transaction_verifier + + + +state + +state + + + +transaction_verifier->state + + + + + +mempool + +mempool + + + +mempool->transaction_verifier + + + + + +mempool->state + + + + + +peer_set + +peer_set + + + +mempool->peer_set + + + + + +inbound + +inbound + + + +inbound->state + + + + + +inbound->mempool + + + + + +chain_verifier + +chain_verifier + + + +inbound->chain_verifier + + + + + +rpc_server + +rpc_server + + + +rpc_server->state + + + + + +rpc_server->mempool + + + + + +rpc_server->chain_verifier + + + + + +checkpoint_verifier + +checkpoint_verifier + + + +chain_verifier->checkpoint_verifier + + + + + +block_verifier + +block_verifier + + + +chain_verifier->block_verifier + + + + + +checkpoint_verifier->state + + + + + +syncer + +syncer + + + +syncer->chain_verifier + + + + + +syncer->peer_set + + + + + +block_verifier->transaction_verifier + + + + + +block_verifier->state + + + + + \ No newline at end of file diff --git a/book/src/dev/overview.md b/book/src/dev/overview.md index 8ad85403391..f224b1a953a 100644 --- a/book/src/dev/overview.md +++ b/book/src/dev/overview.md @@ -1,6 +1,6 @@ # Design Overview -This document sketches the future design for Zebra. +This document sketches the design for Zebra. ## Desiderata @@ -34,6 +34,46 @@ The following are general desiderata for Zebra: lightweight applications like light wallets. Those applications should use a light client protocol. +## Notable Blog Posts +- [A New Network Stack For Zcash](https://www.zfnd.org/blog/a-new-network-stack-for-zcash) +- [Composable Futures-based Batch Verification](https://www.zfnd.org/blog/futures-batch-verification) +- [Decoding Bitcoin Messages with Tokio Codecs](https://www.zfnd.org/blog/decoding-bitcoin-messages-with-tokio-codecs) + +## Service Dependencies + +Note: dotted lines are for "getblocktemplate-rpcs" feature + +
+{{#include diagrams/service-dependencies.svg}} +
+ + + ## Architecture Unlike `zcashd`, which originated as a Bitcoin Core fork and inherited its @@ -278,7 +318,8 @@ verify blocks or transactions, and add them to the relevant state. #### Internal Dependencies - `zebra-chain` for data structure definitions -- `zebra-network` possibly? for definitions of network messages? +- `zebra-node-services` for shared request type definitions +- `zebra-utils` for developer and power user tools #### Responsible for diff --git a/book/src/dev/rfcs/0001-pipelinable-block-lookup.md b/book/src/dev/rfcs/0001-pipelinable-block-lookup.md index 94ce707abd3..0dc24a22042 100644 --- a/book/src/dev/rfcs/0001-pipelinable-block-lookup.md +++ b/book/src/dev/rfcs/0001-pipelinable-block-lookup.md @@ -1,7 +1,7 @@ - Feature Name: Pipelinable Block Syncing and Lookup - Start Date: 2020-07-02 -- Design PR: [rust-lang/rfcs#0000](https://github.com/rust-lang/rfcs/pull/0000) -- Rust Issue: [rust-lang/rust#0000](https://github.com/rust-lang/rust/issues/0000) +- Design PR: [ZcashFoundation/zebra#583](https://github.com/ZcashFoundation/zebra/pull/583) +- Zebra Issue: [ZcashFoundation/zebra#504](https://github.com/ZcashFoundation/zebra/issues/504) # Summary [summary]: #summary diff --git a/book/theme/css/custom.css b/book/theme/css/custom.css new file mode 100644 index 00000000000..62fb70f38ea --- /dev/null +++ b/book/theme/css/custom.css @@ -0,0 +1,15 @@ +#service-dep-diagram { + display: block; + margin: 0px auto; +} + +#service-dep-diagram a:hover { + text-decoration: none; + opacity: 0.65; +} + +html.navy #service-dep-diagram, +html.ayu #service-dep-diagram, +html.coal #service-dep-diagram { + filter: invert(1); +} \ No newline at end of file