To have a fully working passive cardano node (ideally before January 25th) as described in the ouroboros-consensus documentation and represented in the diagram reported below
flowchart LR
ChainSel["Chain Selection"]
UPA["Upstream Peers Adapter"]
BP["ChainDB"]
ChainSel --"H(L)"--> UPA --"B"--> ChainSel
ChainSel --"B"--> BP --"O(L)"--> ChainSel
BP -."B".-> ChainSel
BP -."I(L)".-> ChainSel
Legend:
flowchart LR
Publisher
Subscriber
Requester
Server
a[" "]
b[" "]
c[" "]
d[" "]
Publisher -- latest payload --> Subscriber
Server -. requested payload .-> Requester
a -- "B = Block" --> b
a -- "L = Ledger State" --> b
c -- "H(X) = Header of X" --> d
c -- "I(X) = Only during Initialization" --> d
c -- "O(X) = occasionally pushing X" --> d
This project will serve as a base for many other goals:
-
proving the feasibility of the following Catalyst F11 proposals:
-
serve as base to then extract the only missing component for a proper typescript cardano node ( the consensus component, as the network can be found here, and the ledger here )
-
serve as a base to then extract the "runtime indipendent" code and have a passive node running in browsers (future project)
-
be the example project for future, purpose specific nodes, that don't require all the work that a full node does, some examples (just on top of my head) could be:
- light weight node following only the tip of the chain (example usages: some mini-protocols servers or ad-hoc chain indexer saving blocks elsewhere)
- node that only keeps the ledger state, for optimal UTxO queries
- etc.