Flow
Here we present the flow of a single read or write request from the transaction runtime all the way to the OS. As you can see, there are many layers of read-caching and write-buffering involved.
Blue arrow means a call triggered by read.
Red arrow means a call triggered by write.
Black arrow means a non-trivial data dependency. For example:
- Nodes which are read on TrieStorage go to TrieRecorder to generate proof, so they are connected with black arrow.
- Memtrie lookup needs current state of accounting cache to compute costs. When query completes, accounting cache is updated with memtrie nodes. So they are connected with bidirectional black arrow.