github.com/karalabe/go-ethereum@v0.8.5/core/types/derive_sha.go (about) 1 package types 2 3 import ( 4 "github.com/ethereum/go-ethereum/ethdb" 5 "github.com/ethereum/go-ethereum/ethutil" 6 "github.com/ethereum/go-ethereum/trie" 7 ) 8 9 type DerivableList interface { 10 Len() int 11 GetRlp(i int) []byte 12 } 13 14 func DeriveSha(list DerivableList) []byte { 15 db, _ := ethdb.NewMemDatabase() 16 trie := trie.New(nil, db) 17 for i := 0; i < list.Len(); i++ { 18 trie.Update(ethutil.Encode(i), list.GetRlp(i)) 19 } 20 21 return trie.Root() 22 }