substrate-docs
substrate-docs copied to clipboard
Propose a new architecture page design.
I think the picture and description in https://substrate-docs-staging.netlify.app/v3/getting-started/architecture is a bit too simplistic with regards to storage. Storage is not a wrapper around the runtime. Externalities is. Externalities are all the components that a host (e.g. substrarte client, smaldot) must give to the runtime, one of which is the storage ability. I think this detail can easily be explained in this picture, and explain the important concept of Externalities as well along side with it.
I will try and make a new version of the image myself and post it as an example.
┌─────────────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ │
│ │
│ │
│ │
│ ┌───────────────────┐ │
│ │ │ │
│ │ ┌───────────────┐ │ │
│ │ │ wasm runtime │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ └───────────────┘ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ ┌─────────┐ │ │
│ │ │ │ │ │
│ │ │storage │ │ │
│ │ └─────┬───┤ │ │
│ │ ├───┴────┐ │ │
│ │ │ │ │ │
│ │ │hashing │ │ │
│ │ ├─┬──────┘ │ │
│ │ ┌─────┴─┤ │ │
│ │ │ │ │ │
│ │ │tracing│ │ │
│ │ └───────┘ │ │
│ │ │ │
│ │ externalities │ │
│ └───────────────────┘ │
│ │
│ ┌───────────────────────────────────┐ │
│ │ │ │
│ │ │ │
│ │ ROCKS DB │ │
│ └───────────────────────────────────┘ │
│ │
│ │
│ │
│ substrarte client │
└─────────────────────────────────────────────────────────────────────────────────────────────┘
A very ugly example of what I mean.
Thanks Kian for the feebdack. Will bring this to design and keep you updated.

This looks like an easy win to put in as is and update the docs to make sure we mention each item here. I would just want the raw graphic (svg, g slides?) - Kian, can you share here or direct on element?
A very small nit pick, but I think the size and location of the different boxes should either be intentional (showing relationships between boxes / relative size of that project), or they should all be the same.
Not looking to convey any information subliminally.
Example ^^
Why is the native runtime here on the left?