According to the example here, I see one could use the srml_support::storage::child API to create a merkle sub trie out of arbitrary data. But how can we get the merkle root or a proof for a particular leaf using this? I see the API doesn't provide any functions named as such. 
            Asked
            
        
        
            Active
            
        
            Viewed 315 times
        
    5
            
            
        
        vim
        
- 1,098
 - 9
 - 21
 
- 
                    You tagged your question with `substrate`, would you be interested in a dedicated Stack Exchange Q&A site for Substrate, Polkadot, et al. -- check out the [Area51 Substrate Proposal](https://area51.stackexchange.com/proposals/122626/substrate?referrer=NTUwMTkxYjJjOTJiNjE0YzMxYjgwMGNkZmFlYzdhZTczYjk1ZWY3ZGI4NzJmODUwN2RlYTQ2MTNjZTdkOTZhMAzuL-zybtPN9CHzwE-WUdvBC8WxvPG46b4ayadke6kG0) – q9f Jul 28 '19 at 10:57
 - 
                    Hey VIM, we are trying again to open a dedicated Substrate StackExchange. Can you take a look and support the proposal? https://area51.stackexchange.com/proposals/126136 – Shawn Tabrizi Dec 16 '21 at 13:05
 
2 Answers
4
            
            
        The srml_support::storage::child API make use of sr_io API.
sr_io provides more functionality, for example sr_io::child_storage_root which is the function you are looking for.
        Shawn Tabrizi
        
- 12,206
 - 1
 - 38
 - 69
 
        thiolliere
        
- 516
 - 2
 - 3
 
- 
                    how do I obtain a proof for a leaf of a child trie? I see the above API do not have such a function. – vim Jul 26 '19 at 12:24
 
2
            
            
        An alternative is to directly query the parent trie node containing the root. For the linked exemple it will be something like this (child_storage_root is doing calculation of ongoing change whereas querying directly the root get the state at the start of the block processing or the latest stored state calculation):
let id = Self::id_from_index(index);
let child_root = storage::unhashed::get_raw(id.as_ref());
        cheme
        
- 378
 - 3
 - 10