crypto, pow, vendor: hash optimizations, mmap ethash

This commit is contained in:
Péter Szilágyi
2017-03-07 20:05:54 +02:00
committed by Felix Lange
parent b7d93500f1
commit 5c8fa6ae1a
12 changed files with 772 additions and 203 deletions

View File

@ -37,10 +37,6 @@ var (
secp256k1_halfN = new(big.Int).Div(secp256k1_N, big.NewInt(2))
)
// Hasher is a repetitive hasher allowing the same hash data structures to be
// reused between hash runs instead of requiring new ones to be created.
type Hasher func(data []byte) []byte
// Keccak256 calculates and returns the Keccak256 hash of the input data.
func Keccak256(data ...[]byte) []byte {
d := sha3.NewKeccak256()
@ -61,22 +57,6 @@ func Keccak256Hash(data ...[]byte) (h common.Hash) {
return h
}
// Keccak256Hasher creates a repetitive Keccak256 hasher, allowing the same hash
// data structures to be reused between hash runs instead of requiring new ones
// to be created.
//
// The returned function is not thread safe!
func Keccak256Hasher() Hasher {
hasher := sha3.NewKeccak256()
return func(data []byte) []byte {
hasher.Write(data)
result := hasher.Sum(nil)
hasher.Reset()
return result
}
}
// Keccak512 calculates and returns the Keccak512 hash of the input data.
func Keccak512(data ...[]byte) []byte {
d := sha3.NewKeccak512()
@ -86,22 +66,6 @@ func Keccak512(data ...[]byte) []byte {
return d.Sum(nil)
}
// Keccak512Hasher creates a repetitive Keccak512 hasher, allowing the same hash
// data structures to be reused between hash runs instead of requiring new ones
// to be created.
//
// The returned function is not thread safe!
func Keccak512Hasher() Hasher {
hasher := sha3.NewKeccak512()
return func(data []byte) []byte {
hasher.Write(data)
result := hasher.Sum(nil)
hasher.Reset()
return result
}
}
// Deprecated: For backward compatibility as other packages depend on these
func Sha3Hash(data ...[]byte) common.Hash { return Keccak256Hash(data...) }