mirror of
https://github.com/fluencelabs/tendermint
synced 2025-05-06 12:02:13 +00:00
27 lines
541 B
Go
27 lines
541 B
Go
|
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)
|
||
|
}
|