diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index aa4c19129..bb527dd5e 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -93,6 +93,7 @@ Friendly reminder: We have a [bug bounty program](https://hackerone.com/tendermi - [rpc] \#6265 set cache control in http-rpc response header (@JayT106) - [statesync] \#6378 Retry requests for snapshots and add a minimum discovery time (5s) for new snapshots. - [node/state] \#6370 graceful shutdown in the consensus reactor (@JayT106) +- [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) }