func MarshalUint32(dst []byte, i uint32) []byte {
	buf := make([]byte, 4)
	binary.LittleEndian.PutUint32(buf, i)
	dst = append(dst, buf...)
	return dst
}
MarshalUint32 marshals a little endian uint32 to dst
package ssz
import (
	"encoding/binary"
	"fmt"
	"math/bits"
)
func MarshalSSZ(m Marshaler) ([]byte, error) {
	buf := make([]byte, m.SizeSSZ())
	return m.MarshalSSZTo(buf[:0])
}
var (
	ErrOffset       = fmt.Errorf("incorrect offset")
	ErrSize         = fmt.Errorf("incorrect size")
	ErrBytesLength  = fmt.Errorf("bytes array does not have the correct length")
	ErrVectorLength = fmt.Errorf("vector does not have the correct length")
	ErrListTooBig   = fmt.Errorf("list length is higher than max value")
	ErrEmptyBitlist = fmt.Errorf("bitlist is empty")
	ErrInvalidVariableOffset = fmt.Errorf("invalid ssz encoding. first variable element offset indexes into fixed value data")
)
func UnmarshallUint64(src []byte) uint64 {
	return binary.LittleEndian.Uint64(src)
}
func UnmarshallUint32(src []byte) uint32 {
	return binary.LittleEndian.Uint32(src[:4])
}
func UnmarshallUint16(src []byte) uint16 {
	return binary.LittleEndian.Uint16(src[:2])
}
func UnmarshallUint8(src []byte) uint8 {
	return uint8(src[0])
}
func UnmarshalBool(src []byte) bool {
	if src[0] == 1 {
		return true
	}
	return false
}
func MarshalUint64(dst []byte, i uint64) []byte {
	buf := make([]byte, 8)
	binary.LittleEndian.PutUint64(buf, i)
	dst = append(dst, buf...)
	return dst
}