I have been looking deep dive into Substrate and trying to understand things behind the hood, especially storage API.
I am really keen to explore more in the Merkle abstraction between Storage API and KV database.
For example:
#[pallet::storage]
pub(super) type SomeComplexValue<T: Config> = StorageValue<_, T::AccountId, ValueQuery>;
SomeComplexValue
will have prefix in kv database when we query it through Storage RPC. But how Merkle transform block transaction into these kv and save to database. Does state proof of each block will save on kv database too?
Looking forward to some great insights and documentation that explains these concepts in depth so as Substrate Builder, I can fully understand these concepts to best use of storage.