package merkle
|
|
|
|
type SimpleMap struct {
|
|
kvz KVPairs
|
|
}
|
|
|
|
func NewSimpleMap() *SimpleMap {
|
|
return &SimpleMap{
|
|
kvz: nil,
|
|
}
|
|
}
|
|
|
|
func (sm *SimpleMap) Set(k string, o interface{}) {
|
|
sm.kvz = append(sm.kvz, KVPair{Key: k, Value: o})
|
|
}
|
|
|
|
// Merkle root hash of items sorted by key.
|
|
// NOTE: Behavior is undefined when key is duplicate.
|
|
func (sm *SimpleMap) Hash() []byte {
|
|
sm.kvz.Sort()
|
|
kvPairsH := make([]Hashable, 0, len(sm.kvz))
|
|
for _, kvp := range sm.kvz {
|
|
kvPairsH = append(kvPairsH, kvp)
|
|
}
|
|
return SimpleHashFromHashables(kvPairsH)
|
|
}
|