1package merkleTree 2 3import ( 4 "encoding/hex" 5) 6 7func (n *Node) findChildByIndex(i ChildIndex) (Hash, error) { 8 if n.INodes == nil || int(i) >= len(n.INodes) { 9 return nil, ErrBadINode 10 } 11 return n.INodes[i], nil 12} 13 14func (n Node) export(h Hasher, prevRoot Hash, level Level) (hash Hash, node Node, objExported []byte, err error) { 15 if prevRoot != nil && level == Level(0) { 16 n.PrevRoot = prevRoot 17 } 18 objExported, err = encodeToBytes(n) 19 if err == nil { 20 hash = h.Hash(objExported) 21 } 22 return hash, n, objExported, err 23} 24 25// MarshalJSON prints out a hash for debugging purposes. Not recommended for actual 26// JSONing 27func (h Hash) MarshalJSON() ([]byte, error) { 28 if len(h) == 0 { 29 return []byte("\"\""), nil 30 } 31 return []byte("\"" + hex.EncodeToString(h)[0:8] + "\""), nil 32} 33 34func (n *Node) findValueInLeaf(h Hash) interface{} { 35 kvp := newSortedMapFromNode(n).find(h) 36 if kvp == nil { 37 return nil 38 } 39 return kvp.Value 40} 41