[lbry] chaincfg: implement LBRY PoW Hash
This commit is contained in:
parent
e6fb242e93
commit
e90dc4231f
1 changed files with 29 additions and 1 deletions
|
@ -5,7 +5,12 @@
|
|||
|
||||
package chainhash
|
||||
|
||||
import "crypto/sha256"
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"crypto/sha512"
|
||||
|
||||
"golang.org/x/crypto/ripemd160"
|
||||
)
|
||||
|
||||
// HashB calculates hash(b) and returns the resulting bytes.
|
||||
func HashB(b []byte) []byte {
|
||||
|
@ -31,3 +36,26 @@ func DoubleHashH(b []byte) Hash {
|
|||
first := sha256.Sum256(b)
|
||||
return Hash(sha256.Sum256(first[:]))
|
||||
}
|
||||
|
||||
// LbryPoWHashH calculates returns the PoW Hash.
|
||||
//
|
||||
// doubled := SHA256(SHA256(b))
|
||||
// expanded := SHA512(doubled)
|
||||
// left := RIPEMD160(expanded[0:32])
|
||||
// right := RIPEMD160(expanded[32:64])
|
||||
// result := SHA256(SHA256(left||right))
|
||||
func LbryPoWHashH(b []byte) Hash {
|
||||
doubled := DoubleHashB(b)
|
||||
expanded := sha512.Sum512(doubled)
|
||||
|
||||
r := ripemd160.New()
|
||||
r.Reset()
|
||||
r.Write(expanded[:sha256.Size])
|
||||
left := r.Sum(nil)
|
||||
|
||||
r.Reset()
|
||||
r.Write(expanded[sha256.Size:])
|
||||
|
||||
combined := r.Sum(left)
|
||||
return DoubleHashH(combined)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue