diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 51ab55ebc..a684eb5a9 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -22,6 +22,7 @@ ### IMPROVEMENTS - [pubsub] \#7319 Performance improvements for the event query API (@creachadair) +- [crypto/merkle] \#6443 Improve HashAlternatives performance (@cuonglm) ### BUG FIXES diff --git a/crypto/merkle/hash.go b/crypto/merkle/hash.go index d45130fe5..f35efbd2f 100644 --- a/crypto/merkle/hash.go +++ b/crypto/merkle/hash.go @@ -22,5 +22,9 @@ func leafHash(leaf []byte) []byte { // returns tmhash(0x01 || left || right) func innerHash(left []byte, right []byte) []byte { - return tmhash.Sum(append(innerPrefix, append(left, right...)...)) + data := make([]byte, len(innerPrefix)+len(left)+len(right)) + n := copy(data, innerPrefix) + n += copy(data[n:], left) + copy(data[n:], right) + return tmhash.Sum(data) }