github.com/karalabe/go-ethereum@v0.8.5/trie/shortnode.go (about) 1 package trie 2 3 import "github.com/ethereum/go-ethereum/ethutil" 4 5 type ShortNode struct { 6 trie *Trie 7 key []byte 8 value Node 9 } 10 11 func NewShortNode(t *Trie, key []byte, value Node) *ShortNode { 12 return &ShortNode{t, []byte(CompactEncode(key)), value} 13 } 14 func (self *ShortNode) Value() Node { 15 self.value = self.trie.trans(self.value) 16 17 return self.value 18 } 19 func (self *ShortNode) Dirty() bool { return true } 20 func (self *ShortNode) Copy(t *Trie) Node { 21 node := &ShortNode{t, nil, self.value.Copy(t)} 22 node.key = ethutil.CopyBytes(self.key) 23 return node 24 } 25 26 func (self *ShortNode) RlpData() interface{} { 27 return []interface{}{self.key, self.value.Hash()} 28 } 29 func (self *ShortNode) Hash() interface{} { 30 return self.trie.store(self) 31 } 32 33 func (self *ShortNode) Key() []byte { 34 return CompactDecode(string(self.key)) 35 }