shortnode.go 708 B

1234567891011121314151617181920212223242526272829
  1. package trie
  2. type ShortNode struct {
  3. trie *Trie
  4. key []byte
  5. value Node
  6. }
  7. func NewShortNode(t *Trie, key []byte, value Node) *ShortNode {
  8. return &ShortNode{t, []byte(CompactEncode(key)), value}
  9. }
  10. func (self *ShortNode) Value() Node {
  11. self.value = self.trie.trans(self.value)
  12. return self.value
  13. }
  14. func (self *ShortNode) Dirty() bool { return true }
  15. func (self *ShortNode) Copy() Node { return NewShortNode(self.trie, self.key, self.value) }
  16. func (self *ShortNode) RlpData() interface{} {
  17. return []interface{}{self.key, self.value.Hash()}
  18. }
  19. func (self *ShortNode) Hash() interface{} {
  20. return self.trie.store(self)
  21. }
  22. func (self *ShortNode) Key() []byte {
  23. return CompactDecode(string(self.key))
  24. }