Ideas
Driving forces that could improve the situation of the Cardano node architecture.
Interface first
- Conformance tests
- CIPs?
- Open standards / avoid not invented here / off-the-shelf especially close to the user
- Node-to-client niche way to implement an API
- Many components built by the community to work around the limitations
- Would have happened anyways, but maybe some could have been avoided?
- Example: ogmios, was started out of frustration about unusability of n2c, now de-facto standard sidecar to a cardano-node
- many workarounds of arcane / hard-to use n2c quirks
- transaction submission / backward compatibility of transactions
- fee estimation
- test vectors
- Missing documentation requires many projects to fill in the gaps and even reverse-engineer the haskell code, e.g. https://arsmagna.xyz/docs/network-lsq/
- mention utxo-grpc?
Is Haskell a deterrent?
-
Current teams / components are not a "bad cut" per se
-
Without external contributions, tight (process) coupling ensues
-
Feature teams concerning about one aspect across components?
-
Competing implementations was already tried in the past
- Rust vs. Haskell -> Jormungandr vs. cardano-node
-
In-language re-use vs. language-agnostic re-use
- foreign function interfaces
- process boundaries
- WebAssembly based frameworks (hermes)
Case study: mithril
- Evolution from userspace to kernel space
- How can experiments and new ideas transcend into "the node" eventually?
- Mithril completely separate -> Mithril side-car / network re-use -> Signer part of node -> Use signed data in node (for consensus)
- Modular decentralized message queue (DMQ) node architecture we built
Why substrate?
- Why were partner chains and midnight have been resorting to use substrate?
- How is substrate doing it (people seem to like to use their framework)? https://substrate.io/
- In the past: Advertised as a framework where polkadot node is just one way of combining components (pellets)
- However, just recently substrate moved even now more into a definite Polkadot SDK?
- Making it less a re-usable framework and already less appealling now?