Documentation ¶
Overview ¶
Package ssz defines HashTreeRoot utility functions.
Index ¶
- func BitlistRoot(hasher HashFn, bfield bitfield.Bitfield, maxCapacity uint64) ([32]byte, error)
- func BitwiseMerkleize(hasher HashFn, chunks [][32]byte, count, limit uint64) ([32]byte, error)
- func ByteArrayRootWithLimit(roots [][]byte, limit uint64) ([32]byte, error)
- func CheckpointRoot(hasher HashFn, checkpoint *ethpb.Checkpoint) ([32]byte, error)
- func ConstructProof(hasher Hasher, count, limit uint64, leaf func(i uint64) []byte, index uint64) (branch [][32]byte)
- func Depth(v uint64) (out uint8)
- func ForkRoot(fork *ethpb.Fork) ([32]byte, error)
- func Merkleize(hasher Hasher, count, limit uint64, leaf func(i uint64) []byte) (out [32]byte)
- func MerkleizeVector(elements [][32]byte, length uint64) [32]byte
- func MixInLength(root [32]byte, length []byte) [32]byte
- func PackByChunk(serializedItems [][]byte) ([][bytesPerChunk]byte, error)
- func SlashingsRoot(slashings []uint64) ([32]byte, error)
- func TransactionsRoot(txs [][]byte) ([32]byte, error)
- func Uint64Root(val uint64) [32]byte
- func WithdrawalSliceRoot(hasher HashFn, withdrawals []*enginev1.Withdrawal, limit uint64) ([32]byte, error)
- type HashFn
- type Hasher
- type HasherFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BitlistRoot ¶
BitlistRoot returns the mix in length of a bitwise Merkleized bitfield.
func BitwiseMerkleize ¶
BitwiseMerkleize - given ordered BYTES_PER_CHUNK-byte chunks, if necessary utilize zero chunks so that the number of chunks is a power of two, Merkleize the chunks, and return the root. Note that merkleize on a single chunk is simply that chunk, i.e. the identity when the number of chunks is one.
func ByteArrayRootWithLimit ¶
ByteArrayRootWithLimit computes the HashTreeRoot Merkleization of a list of [32]byte roots according to the Ethereum Simple Serialize specification.
func CheckpointRoot ¶
func CheckpointRoot(hasher HashFn, checkpoint *ethpb.Checkpoint) ([32]byte, error)
CheckpointRoot computes the HashTreeRoot Merkleization of a InitWithReset struct value according to the Ethereum Simple Serialize specification.
func ConstructProof ¶
func ConstructProof(hasher Hasher, count, limit uint64, leaf func(i uint64) []byte, index uint64) (branch [][32]byte)
ConstructProof builds a merkle-branch of the given depth, at the given index (at that depth), for a list of leafs of a balanced binary tree.
func ForkRoot ¶
ForkRoot computes the HashTreeRoot Merkleization of a Fork struct value according to the Ethereum Simple Serialize specification.
func MerkleizeVector ¶
MerkleizeVector uses our optimized routine to hash a list of 32-byte elements.
func MixInLength ¶
MixInLength appends hash length to root
func PackByChunk ¶
PackByChunk a given byte array's final chunk with zeroes if needed.
func SlashingsRoot ¶
SlashingsRoot computes the HashTreeRoot Merkleization of a list of uint64 slashing values according to the Ethereum Simple Serialize specification.
func TransactionsRoot ¶
TransactionsRoot computes the HTR for the Transactions' property of the ExecutionPayload The code was largely copy/pasted from the code generated to compute the HTR of the entire ExecutionPayload.
func Uint64Root ¶
Uint64Root computes the HashTreeRoot Merkleization of a simple uint64 value according to the Ethereum Simple Serialize specification.
func WithdrawalSliceRoot ¶ added in v3.1.2
func WithdrawalSliceRoot(hasher HashFn, withdrawals []*enginev1.Withdrawal, limit uint64) ([32]byte, error)
WithdrawalSliceRoot computes the HTR of a slice of withdrawals. The limit parameter is used as input to the bitwise merkleization algorithm.
Types ¶
type Hasher ¶
type Hasher interface { Hash(a []byte) [32]byte Combi(a [32]byte, b [32]byte) [32]byte MixIn(a [32]byte, i uint64) [32]byte }
Hasher describes an interface through which we can perform hash operations on byte arrays,indices,etc.
type HasherFunc ¶
type HasherFunc struct {
// contains filtered or unexported fields
}
HasherFunc defines a structure to hold a hash function and can be used for multiple rounds of hashing.
func NewHasherFunc ¶
func NewHasherFunc(h HashFn) *HasherFunc
NewHasherFunc is the constructor for the object that fulfills the Hasher interface.
func (*HasherFunc) Combi ¶
func (h *HasherFunc) Combi(a, b [32]byte) [32]byte
Combi appends the two inputs and hashes them.
func (*HasherFunc) Hash ¶
func (h *HasherFunc) Hash(a []byte) [32]byte
Hash utilizes the provided hash function for the object.