New modified patricia trie
This commit is contained in:
		
							
								
								
									
										31
									
								
								ptrie/shortnode.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								ptrie/shortnode.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| package ptrie | ||||
|  | ||||
| import "github.com/ethereum/go-ethereum/trie" | ||||
|  | ||||
| type ShortNode struct { | ||||
| 	trie  *Trie | ||||
| 	key   []byte | ||||
| 	value Node | ||||
| } | ||||
|  | ||||
| func NewShortNode(t *Trie, key []byte, value Node) *ShortNode { | ||||
| 	return &ShortNode{t, []byte(trie.CompactEncode(key)), value} | ||||
| } | ||||
| func (self *ShortNode) Value() Node { | ||||
| 	self.value = self.trie.trans(self.value) | ||||
|  | ||||
| 	return self.value | ||||
| } | ||||
| func (self *ShortNode) Dirty() bool { return true } | ||||
| func (self *ShortNode) Copy() Node  { return self } | ||||
|  | ||||
| func (self *ShortNode) RlpData() interface{} { | ||||
| 	return []interface{}{self.key, self.value.Hash()} | ||||
| } | ||||
| func (self *ShortNode) Hash() interface{} { | ||||
| 	return self.trie.store(self) | ||||
| } | ||||
|  | ||||
| func (self *ShortNode) Key() []byte { | ||||
| 	return trie.CompactDecode(string(self.key)) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user