forked from cerc-io/plugeth
params: remove dependency on crypto (#22788)
* params: remove dependency on crypto Package params should not depend on package crypto because building crypto requires cgo. Since build/ci.go needs package params to get the go-ethereum version number, C code must be compiled in order to run the build tool, which is annoying for certain cross-compilation setups. * params: add SectionHead
This commit is contained in:
parent
ca9c576e62
commit
afb097eda8
@ -22,7 +22,7 @@ import (
|
|||||||
"math/big"
|
"math/big"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"golang.org/x/crypto/sha3"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Genesis hashes to enforce below configs on.
|
// Genesis hashes to enforce below configs on.
|
||||||
@ -278,12 +278,18 @@ func (c *TrustedCheckpoint) HashEqual(hash common.Hash) bool {
|
|||||||
|
|
||||||
// Hash returns the hash of checkpoint's four key fields(index, sectionHead, chtRoot and bloomTrieRoot).
|
// Hash returns the hash of checkpoint's four key fields(index, sectionHead, chtRoot and bloomTrieRoot).
|
||||||
func (c *TrustedCheckpoint) Hash() common.Hash {
|
func (c *TrustedCheckpoint) Hash() common.Hash {
|
||||||
buf := make([]byte, 8+3*common.HashLength)
|
var sectionIndex [8]byte
|
||||||
binary.BigEndian.PutUint64(buf, c.SectionIndex)
|
binary.BigEndian.PutUint64(sectionIndex[:], c.SectionIndex)
|
||||||
copy(buf[8:], c.SectionHead.Bytes())
|
|
||||||
copy(buf[8+common.HashLength:], c.CHTRoot.Bytes())
|
w := sha3.NewLegacyKeccak256()
|
||||||
copy(buf[8+2*common.HashLength:], c.BloomRoot.Bytes())
|
w.Write(sectionIndex[:])
|
||||||
return crypto.Keccak256Hash(buf)
|
w.Write(c.SectionHead[:])
|
||||||
|
w.Write(c.CHTRoot[:])
|
||||||
|
w.Write(c.BloomRoot[:])
|
||||||
|
|
||||||
|
var h common.Hash
|
||||||
|
w.Sum(h[:0])
|
||||||
|
return h
|
||||||
}
|
}
|
||||||
|
|
||||||
// Empty returns an indicator whether the checkpoint is regarded as empty.
|
// Empty returns an indicator whether the checkpoint is regarded as empty.
|
||||||
|
Loading…
Reference in New Issue
Block a user