mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-19 21:31:37 +00:00
1423 lines
33 KiB
Go
1423 lines
33 KiB
Go
// Code generated by fastssz. DO NOT EDIT.
|
|
// Hash: a5a3f5976cb6d7bebfd33a8fd96135a2b18cabfeda1c73cb38b6689a4695c1fc
|
|
// Version: 0.1.3
|
|
package tests
|
|
|
|
import (
|
|
ssz "github.com/ferranbt/fastssz"
|
|
)
|
|
|
|
// MarshalSSZ ssz marshals the SszWithdrawal object
|
|
func (s *SszWithdrawal) MarshalSSZ() ([]byte, error) {
|
|
return ssz.MarshalSSZ(s)
|
|
}
|
|
|
|
// MarshalSSZTo ssz marshals the SszWithdrawal object to a target array
|
|
func (s *SszWithdrawal) MarshalSSZTo(buf []byte) (dst []byte, err error) {
|
|
dst = buf
|
|
|
|
// Field (0) 'Index'
|
|
dst = ssz.MarshalUint64(dst, s.Index)
|
|
|
|
// Field (1) 'ValidatorIndex'
|
|
dst = ssz.MarshalUint64(dst, s.ValidatorIndex)
|
|
|
|
// Field (2) 'Address'
|
|
dst = append(dst, s.Address[:]...)
|
|
|
|
// Field (3) 'Amount'
|
|
dst = append(dst, s.Amount[:]...)
|
|
|
|
return
|
|
}
|
|
|
|
// UnmarshalSSZ ssz unmarshals the SszWithdrawal object
|
|
func (s *SszWithdrawal) UnmarshalSSZ(buf []byte) error {
|
|
var err error
|
|
size := uint64(len(buf))
|
|
if size != 68 {
|
|
return ssz.ErrSize
|
|
}
|
|
|
|
// Field (0) 'Index'
|
|
s.Index = ssz.UnmarshallUint64(buf[0:8])
|
|
|
|
// Field (1) 'ValidatorIndex'
|
|
s.ValidatorIndex = ssz.UnmarshallUint64(buf[8:16])
|
|
|
|
// Field (2) 'Address'
|
|
copy(s.Address[:], buf[16:36])
|
|
|
|
// Field (3) 'Amount'
|
|
copy(s.Amount[:], buf[36:68])
|
|
|
|
return err
|
|
}
|
|
|
|
// SizeSSZ returns the ssz encoded size in bytes for the SszWithdrawal object
|
|
func (s *SszWithdrawal) SizeSSZ() (size int) {
|
|
size = 68
|
|
return
|
|
}
|
|
|
|
// HashTreeRoot ssz hashes the SszWithdrawal object
|
|
func (s *SszWithdrawal) HashTreeRoot() ([32]byte, error) {
|
|
return ssz.HashWithDefaultHasher(s)
|
|
}
|
|
|
|
// HashTreeRootWith ssz hashes the SszWithdrawal object with a hasher
|
|
func (s *SszWithdrawal) HashTreeRootWith(hh ssz.HashWalker) (err error) {
|
|
indx := hh.Index()
|
|
|
|
// Field (0) 'Index'
|
|
hh.PutUint64(s.Index)
|
|
|
|
// Field (1) 'ValidatorIndex'
|
|
hh.PutUint64(s.ValidatorIndex)
|
|
|
|
// Field (2) 'Address'
|
|
hh.PutBytes(s.Address[:])
|
|
|
|
// Field (3) 'Amount'
|
|
hh.PutBytes(s.Amount[:])
|
|
|
|
hh.Merkleize(indx)
|
|
return
|
|
}
|
|
|
|
// GetTree ssz hashes the SszWithdrawal object
|
|
func (s *SszWithdrawal) GetTree() (*ssz.Node, error) {
|
|
return ssz.ProofTree(s)
|
|
}
|
|
|
|
// MarshalSSZ ssz marshals the SszExecutionPayload object
|
|
func (s *SszExecutionPayload) MarshalSSZ() ([]byte, error) {
|
|
return ssz.MarshalSSZ(s)
|
|
}
|
|
|
|
// MarshalSSZTo ssz marshals the SszExecutionPayload object to a target array
|
|
func (s *SszExecutionPayload) MarshalSSZTo(buf []byte) (dst []byte, err error) {
|
|
dst = buf
|
|
offset := int(540)
|
|
|
|
// Field (0) 'ParentHash'
|
|
dst = append(dst, s.ParentHash[:]...)
|
|
|
|
// Field (1) 'FeeRecipient'
|
|
dst = append(dst, s.FeeRecipient[:]...)
|
|
|
|
// Field (2) 'StateRoot'
|
|
dst = append(dst, s.StateRoot[:]...)
|
|
|
|
// Field (3) 'ReceiptsRoot'
|
|
dst = append(dst, s.ReceiptsRoot[:]...)
|
|
|
|
// Field (4) 'LogsBloom'
|
|
dst = append(dst, s.LogsBloom[:]...)
|
|
|
|
// Field (5) 'PrevRandao'
|
|
dst = append(dst, s.PrevRandao[:]...)
|
|
|
|
// Field (6) 'BlockNumber'
|
|
dst = ssz.MarshalUint64(dst, s.BlockNumber)
|
|
|
|
// Field (7) 'GasLimit'
|
|
dst = ssz.MarshalUint64(dst, s.GasLimit)
|
|
|
|
// Field (8) 'GasUsed'
|
|
dst = ssz.MarshalUint64(dst, s.GasUsed)
|
|
|
|
// Field (9) 'Timestamp'
|
|
dst = ssz.MarshalUint64(dst, s.Timestamp)
|
|
|
|
// Offset (10) 'ExtraData'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
offset += len(s.ExtraData)
|
|
|
|
// Field (11) 'BaseFeePerGas'
|
|
dst = append(dst, s.BaseFeePerGas[:]...)
|
|
|
|
// Field (12) 'BlockHash'
|
|
dst = append(dst, s.BlockHash[:]...)
|
|
|
|
// Offset (13) 'Transactions'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
for ii := 0; ii < len(s.Transactions); ii++ {
|
|
offset += 4
|
|
offset += len(s.Transactions[ii])
|
|
}
|
|
|
|
// Offset (14) 'Withdrawals'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
offset += len(s.Withdrawals) * 68
|
|
|
|
// Field (15) 'BlobGasUsed'
|
|
dst = ssz.MarshalUint64(dst, s.BlobGasUsed)
|
|
|
|
// Field (16) 'ExcessBlobGas'
|
|
dst = ssz.MarshalUint64(dst, s.ExcessBlobGas)
|
|
|
|
// Offset (17) 'BlockAccessList'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
|
|
// Field (18) 'SlotNumber'
|
|
dst = ssz.MarshalUint64(dst, s.SlotNumber)
|
|
|
|
// Field (10) 'ExtraData'
|
|
if size := len(s.ExtraData); size > 32 {
|
|
err = ssz.ErrBytesLengthFn("SszExecutionPayload.ExtraData", size, 32)
|
|
return
|
|
}
|
|
dst = append(dst, s.ExtraData...)
|
|
|
|
// Field (13) 'Transactions'
|
|
if size := len(s.Transactions); size > 1048576 {
|
|
err = ssz.ErrListTooBigFn("SszExecutionPayload.Transactions", size, 1048576)
|
|
return
|
|
}
|
|
{
|
|
offset = 4 * len(s.Transactions)
|
|
for ii := 0; ii < len(s.Transactions); ii++ {
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
offset += len(s.Transactions[ii])
|
|
}
|
|
}
|
|
for ii := 0; ii < len(s.Transactions); ii++ {
|
|
if size := len(s.Transactions[ii]); size > 1073741824 {
|
|
err = ssz.ErrBytesLengthFn("SszExecutionPayload.Transactions[ii]", size, 1073741824)
|
|
return
|
|
}
|
|
dst = append(dst, s.Transactions[ii]...)
|
|
}
|
|
|
|
// Field (14) 'Withdrawals'
|
|
if size := len(s.Withdrawals); size > 65536 {
|
|
err = ssz.ErrListTooBigFn("SszExecutionPayload.Withdrawals", size, 65536)
|
|
return
|
|
}
|
|
for ii := 0; ii < len(s.Withdrawals); ii++ {
|
|
if dst, err = s.Withdrawals[ii].MarshalSSZTo(dst); err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
// Field (17) 'BlockAccessList'
|
|
if size := len(s.BlockAccessList); size > 16777216 {
|
|
err = ssz.ErrBytesLengthFn("SszExecutionPayload.BlockAccessList", size, 16777216)
|
|
return
|
|
}
|
|
dst = append(dst, s.BlockAccessList...)
|
|
|
|
return
|
|
}
|
|
|
|
// UnmarshalSSZ ssz unmarshals the SszExecutionPayload object
|
|
func (s *SszExecutionPayload) UnmarshalSSZ(buf []byte) error {
|
|
var err error
|
|
size := uint64(len(buf))
|
|
if size < 540 {
|
|
return ssz.ErrSize
|
|
}
|
|
|
|
tail := buf
|
|
var o10, o13, o14, o17 uint64
|
|
|
|
// Field (0) 'ParentHash'
|
|
copy(s.ParentHash[:], buf[0:32])
|
|
|
|
// Field (1) 'FeeRecipient'
|
|
copy(s.FeeRecipient[:], buf[32:52])
|
|
|
|
// Field (2) 'StateRoot'
|
|
copy(s.StateRoot[:], buf[52:84])
|
|
|
|
// Field (3) 'ReceiptsRoot'
|
|
copy(s.ReceiptsRoot[:], buf[84:116])
|
|
|
|
// Field (4) 'LogsBloom'
|
|
copy(s.LogsBloom[:], buf[116:372])
|
|
|
|
// Field (5) 'PrevRandao'
|
|
copy(s.PrevRandao[:], buf[372:404])
|
|
|
|
// Field (6) 'BlockNumber'
|
|
s.BlockNumber = ssz.UnmarshallUint64(buf[404:412])
|
|
|
|
// Field (7) 'GasLimit'
|
|
s.GasLimit = ssz.UnmarshallUint64(buf[412:420])
|
|
|
|
// Field (8) 'GasUsed'
|
|
s.GasUsed = ssz.UnmarshallUint64(buf[420:428])
|
|
|
|
// Field (9) 'Timestamp'
|
|
s.Timestamp = ssz.UnmarshallUint64(buf[428:436])
|
|
|
|
// Offset (10) 'ExtraData'
|
|
if o10 = ssz.ReadOffset(buf[436:440]); o10 > size {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
if o10 != 540 {
|
|
return ssz.ErrInvalidVariableOffset
|
|
}
|
|
|
|
// Field (11) 'BaseFeePerGas'
|
|
copy(s.BaseFeePerGas[:], buf[440:472])
|
|
|
|
// Field (12) 'BlockHash'
|
|
copy(s.BlockHash[:], buf[472:504])
|
|
|
|
// Offset (13) 'Transactions'
|
|
if o13 = ssz.ReadOffset(buf[504:508]); o13 > size || o10 > o13 {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
// Offset (14) 'Withdrawals'
|
|
if o14 = ssz.ReadOffset(buf[508:512]); o14 > size || o13 > o14 {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
// Field (15) 'BlobGasUsed'
|
|
s.BlobGasUsed = ssz.UnmarshallUint64(buf[512:520])
|
|
|
|
// Field (16) 'ExcessBlobGas'
|
|
s.ExcessBlobGas = ssz.UnmarshallUint64(buf[520:528])
|
|
|
|
// Offset (17) 'BlockAccessList'
|
|
if o17 = ssz.ReadOffset(buf[528:532]); o17 > size || o14 > o17 {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
// Field (18) 'SlotNumber'
|
|
s.SlotNumber = ssz.UnmarshallUint64(buf[532:540])
|
|
|
|
// Field (10) 'ExtraData'
|
|
{
|
|
buf = tail[o10:o13]
|
|
if len(buf) > 32 {
|
|
return ssz.ErrBytesLength
|
|
}
|
|
if cap(s.ExtraData) == 0 {
|
|
s.ExtraData = make([]byte, 0, len(buf))
|
|
}
|
|
s.ExtraData = append(s.ExtraData, buf...)
|
|
}
|
|
|
|
// Field (13) 'Transactions'
|
|
{
|
|
buf = tail[o13:o14]
|
|
num, err := ssz.DecodeDynamicLength(buf, 1048576)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
s.Transactions = make([][]byte, num)
|
|
err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
|
|
if len(buf) > 1073741824 {
|
|
return ssz.ErrBytesLength
|
|
}
|
|
if cap(s.Transactions[indx]) == 0 {
|
|
s.Transactions[indx] = make([]byte, 0, len(buf))
|
|
}
|
|
s.Transactions[indx] = append(s.Transactions[indx], buf...)
|
|
return nil
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// Field (14) 'Withdrawals'
|
|
{
|
|
buf = tail[o14:o17]
|
|
num, err := ssz.DivideInt2(len(buf), 68, 65536)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
s.Withdrawals = make([]*SszWithdrawal, num)
|
|
for ii := 0; ii < num; ii++ {
|
|
if s.Withdrawals[ii] == nil {
|
|
s.Withdrawals[ii] = new(SszWithdrawal)
|
|
}
|
|
if err = s.Withdrawals[ii].UnmarshalSSZ(buf[ii*68 : (ii+1)*68]); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
|
|
// Field (17) 'BlockAccessList'
|
|
{
|
|
buf = tail[o17:]
|
|
if len(buf) > 16777216 {
|
|
return ssz.ErrBytesLength
|
|
}
|
|
if cap(s.BlockAccessList) == 0 {
|
|
s.BlockAccessList = make([]byte, 0, len(buf))
|
|
}
|
|
s.BlockAccessList = append(s.BlockAccessList, buf...)
|
|
}
|
|
return err
|
|
}
|
|
|
|
// SizeSSZ returns the ssz encoded size in bytes for the SszExecutionPayload object
|
|
func (s *SszExecutionPayload) SizeSSZ() (size int) {
|
|
size = 540
|
|
|
|
// Field (10) 'ExtraData'
|
|
size += len(s.ExtraData)
|
|
|
|
// Field (13) 'Transactions'
|
|
for ii := 0; ii < len(s.Transactions); ii++ {
|
|
size += 4
|
|
size += len(s.Transactions[ii])
|
|
}
|
|
|
|
// Field (14) 'Withdrawals'
|
|
size += len(s.Withdrawals) * 68
|
|
|
|
// Field (17) 'BlockAccessList'
|
|
size += len(s.BlockAccessList)
|
|
|
|
return
|
|
}
|
|
|
|
// HashTreeRoot ssz hashes the SszExecutionPayload object
|
|
func (s *SszExecutionPayload) HashTreeRoot() ([32]byte, error) {
|
|
return ssz.HashWithDefaultHasher(s)
|
|
}
|
|
|
|
// HashTreeRootWith ssz hashes the SszExecutionPayload object with a hasher
|
|
func (s *SszExecutionPayload) HashTreeRootWith(hh ssz.HashWalker) (err error) {
|
|
indx := hh.Index()
|
|
|
|
// Field (0) 'ParentHash'
|
|
hh.PutBytes(s.ParentHash[:])
|
|
|
|
// Field (1) 'FeeRecipient'
|
|
hh.PutBytes(s.FeeRecipient[:])
|
|
|
|
// Field (2) 'StateRoot'
|
|
hh.PutBytes(s.StateRoot[:])
|
|
|
|
// Field (3) 'ReceiptsRoot'
|
|
hh.PutBytes(s.ReceiptsRoot[:])
|
|
|
|
// Field (4) 'LogsBloom'
|
|
hh.PutBytes(s.LogsBloom[:])
|
|
|
|
// Field (5) 'PrevRandao'
|
|
hh.PutBytes(s.PrevRandao[:])
|
|
|
|
// Field (6) 'BlockNumber'
|
|
hh.PutUint64(s.BlockNumber)
|
|
|
|
// Field (7) 'GasLimit'
|
|
hh.PutUint64(s.GasLimit)
|
|
|
|
// Field (8) 'GasUsed'
|
|
hh.PutUint64(s.GasUsed)
|
|
|
|
// Field (9) 'Timestamp'
|
|
hh.PutUint64(s.Timestamp)
|
|
|
|
// Field (10) 'ExtraData'
|
|
{
|
|
elemIndx := hh.Index()
|
|
byteLen := uint64(len(s.ExtraData))
|
|
if byteLen > 32 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
hh.Append(s.ExtraData)
|
|
hh.MerkleizeWithMixin(elemIndx, byteLen, (32+31)/32)
|
|
}
|
|
|
|
// Field (11) 'BaseFeePerGas'
|
|
hh.PutBytes(s.BaseFeePerGas[:])
|
|
|
|
// Field (12) 'BlockHash'
|
|
hh.PutBytes(s.BlockHash[:])
|
|
|
|
// Field (13) 'Transactions'
|
|
{
|
|
subIndx := hh.Index()
|
|
num := uint64(len(s.Transactions))
|
|
if num > 1048576 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
for _, elem := range s.Transactions {
|
|
{
|
|
elemIndx := hh.Index()
|
|
byteLen := uint64(len(elem))
|
|
if byteLen > 1073741824 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
hh.AppendBytes32(elem)
|
|
hh.MerkleizeWithMixin(elemIndx, byteLen, (1073741824+31)/32)
|
|
}
|
|
}
|
|
hh.MerkleizeWithMixin(subIndx, num, 1048576)
|
|
}
|
|
|
|
// Field (14) 'Withdrawals'
|
|
{
|
|
subIndx := hh.Index()
|
|
num := uint64(len(s.Withdrawals))
|
|
if num > 65536 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
for _, elem := range s.Withdrawals {
|
|
if err = elem.HashTreeRootWith(hh); err != nil {
|
|
return
|
|
}
|
|
}
|
|
hh.MerkleizeWithMixin(subIndx, num, 65536)
|
|
}
|
|
|
|
// Field (15) 'BlobGasUsed'
|
|
hh.PutUint64(s.BlobGasUsed)
|
|
|
|
// Field (16) 'ExcessBlobGas'
|
|
hh.PutUint64(s.ExcessBlobGas)
|
|
|
|
// Field (17) 'BlockAccessList'
|
|
{
|
|
elemIndx := hh.Index()
|
|
byteLen := uint64(len(s.BlockAccessList))
|
|
if byteLen > 16777216 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
hh.Append(s.BlockAccessList)
|
|
hh.MerkleizeWithMixin(elemIndx, byteLen, (16777216+31)/32)
|
|
}
|
|
|
|
// Field (18) 'SlotNumber'
|
|
hh.PutUint64(s.SlotNumber)
|
|
|
|
hh.Merkleize(indx)
|
|
return
|
|
}
|
|
|
|
// GetTree ssz hashes the SszExecutionPayload object
|
|
func (s *SszExecutionPayload) GetTree() (*ssz.Node, error) {
|
|
return ssz.ProofTree(s)
|
|
}
|
|
|
|
// MarshalSSZ ssz marshals the SszNewPayloadRequest object
|
|
func (s *SszNewPayloadRequest) MarshalSSZ() ([]byte, error) {
|
|
return ssz.MarshalSSZ(s)
|
|
}
|
|
|
|
// MarshalSSZTo ssz marshals the SszNewPayloadRequest object to a target array
|
|
func (s *SszNewPayloadRequest) MarshalSSZTo(buf []byte) (dst []byte, err error) {
|
|
dst = buf
|
|
offset := int(44)
|
|
|
|
// Offset (0) 'ExecutionPayload'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
if s.ExecutionPayload == nil {
|
|
s.ExecutionPayload = new(SszExecutionPayload)
|
|
}
|
|
offset += s.ExecutionPayload.SizeSSZ()
|
|
|
|
// Offset (1) 'VersionedHashes'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
offset += len(s.VersionedHashes) * 32
|
|
|
|
// Field (2) 'ParentBeaconBlockRoot'
|
|
dst = append(dst, s.ParentBeaconBlockRoot[:]...)
|
|
|
|
// Offset (3) 'ExecutionRequests'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
|
|
// Field (0) 'ExecutionPayload'
|
|
if dst, err = s.ExecutionPayload.MarshalSSZTo(dst); err != nil {
|
|
return
|
|
}
|
|
|
|
// Field (1) 'VersionedHashes'
|
|
if size := len(s.VersionedHashes); size > 4096 {
|
|
err = ssz.ErrListTooBigFn("SszNewPayloadRequest.VersionedHashes", size, 4096)
|
|
return
|
|
}
|
|
for ii := 0; ii < len(s.VersionedHashes); ii++ {
|
|
dst = append(dst, s.VersionedHashes[ii][:]...)
|
|
}
|
|
|
|
// Field (3) 'ExecutionRequests'
|
|
if size := len(s.ExecutionRequests); size > 16 {
|
|
err = ssz.ErrListTooBigFn("SszNewPayloadRequest.ExecutionRequests", size, 16)
|
|
return
|
|
}
|
|
{
|
|
offset = 4 * len(s.ExecutionRequests)
|
|
for ii := 0; ii < len(s.ExecutionRequests); ii++ {
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
offset += len(s.ExecutionRequests[ii])
|
|
}
|
|
}
|
|
for ii := 0; ii < len(s.ExecutionRequests); ii++ {
|
|
if size := len(s.ExecutionRequests[ii]); size > 1048576 {
|
|
err = ssz.ErrBytesLengthFn("SszNewPayloadRequest.ExecutionRequests[ii]", size, 1048576)
|
|
return
|
|
}
|
|
dst = append(dst, s.ExecutionRequests[ii]...)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// UnmarshalSSZ ssz unmarshals the SszNewPayloadRequest object
|
|
func (s *SszNewPayloadRequest) UnmarshalSSZ(buf []byte) error {
|
|
var err error
|
|
size := uint64(len(buf))
|
|
if size < 44 {
|
|
return ssz.ErrSize
|
|
}
|
|
|
|
tail := buf
|
|
var o0, o1, o3 uint64
|
|
|
|
// Offset (0) 'ExecutionPayload'
|
|
if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
if o0 != 44 {
|
|
return ssz.ErrInvalidVariableOffset
|
|
}
|
|
|
|
// Offset (1) 'VersionedHashes'
|
|
if o1 = ssz.ReadOffset(buf[4:8]); o1 > size || o0 > o1 {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
// Field (2) 'ParentBeaconBlockRoot'
|
|
copy(s.ParentBeaconBlockRoot[:], buf[8:40])
|
|
|
|
// Offset (3) 'ExecutionRequests'
|
|
if o3 = ssz.ReadOffset(buf[40:44]); o3 > size || o1 > o3 {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
// Field (0) 'ExecutionPayload'
|
|
{
|
|
buf = tail[o0:o1]
|
|
if s.ExecutionPayload == nil {
|
|
s.ExecutionPayload = new(SszExecutionPayload)
|
|
}
|
|
if err = s.ExecutionPayload.UnmarshalSSZ(buf); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// Field (1) 'VersionedHashes'
|
|
{
|
|
buf = tail[o1:o3]
|
|
num, err := ssz.DivideInt2(len(buf), 32, 4096)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
s.VersionedHashes = make([][32]byte, num)
|
|
for ii := 0; ii < num; ii++ {
|
|
copy(s.VersionedHashes[ii][:], buf[ii*32:(ii+1)*32])
|
|
}
|
|
}
|
|
|
|
// Field (3) 'ExecutionRequests'
|
|
{
|
|
buf = tail[o3:]
|
|
num, err := ssz.DecodeDynamicLength(buf, 16)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
s.ExecutionRequests = make([][]byte, num)
|
|
err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
|
|
if len(buf) > 1048576 {
|
|
return ssz.ErrBytesLength
|
|
}
|
|
if cap(s.ExecutionRequests[indx]) == 0 {
|
|
s.ExecutionRequests[indx] = make([]byte, 0, len(buf))
|
|
}
|
|
s.ExecutionRequests[indx] = append(s.ExecutionRequests[indx], buf...)
|
|
return nil
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return err
|
|
}
|
|
|
|
// SizeSSZ returns the ssz encoded size in bytes for the SszNewPayloadRequest object
|
|
func (s *SszNewPayloadRequest) SizeSSZ() (size int) {
|
|
size = 44
|
|
|
|
// Field (0) 'ExecutionPayload'
|
|
if s.ExecutionPayload == nil {
|
|
s.ExecutionPayload = new(SszExecutionPayload)
|
|
}
|
|
size += s.ExecutionPayload.SizeSSZ()
|
|
|
|
// Field (1) 'VersionedHashes'
|
|
size += len(s.VersionedHashes) * 32
|
|
|
|
// Field (3) 'ExecutionRequests'
|
|
for ii := 0; ii < len(s.ExecutionRequests); ii++ {
|
|
size += 4
|
|
size += len(s.ExecutionRequests[ii])
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// HashTreeRoot ssz hashes the SszNewPayloadRequest object
|
|
func (s *SszNewPayloadRequest) HashTreeRoot() ([32]byte, error) {
|
|
return ssz.HashWithDefaultHasher(s)
|
|
}
|
|
|
|
// HashTreeRootWith ssz hashes the SszNewPayloadRequest object with a hasher
|
|
func (s *SszNewPayloadRequest) HashTreeRootWith(hh ssz.HashWalker) (err error) {
|
|
indx := hh.Index()
|
|
|
|
// Field (0) 'ExecutionPayload'
|
|
if err = s.ExecutionPayload.HashTreeRootWith(hh); err != nil {
|
|
return
|
|
}
|
|
|
|
// Field (1) 'VersionedHashes'
|
|
{
|
|
if size := len(s.VersionedHashes); size > 4096 {
|
|
err = ssz.ErrListTooBigFn("SszNewPayloadRequest.VersionedHashes", size, 4096)
|
|
return
|
|
}
|
|
subIndx := hh.Index()
|
|
for _, i := range s.VersionedHashes {
|
|
hh.Append(i[:])
|
|
}
|
|
numItems := uint64(len(s.VersionedHashes))
|
|
hh.MerkleizeWithMixin(subIndx, numItems, 4096)
|
|
}
|
|
|
|
// Field (2) 'ParentBeaconBlockRoot'
|
|
hh.PutBytes(s.ParentBeaconBlockRoot[:])
|
|
|
|
// Field (3) 'ExecutionRequests'
|
|
{
|
|
subIndx := hh.Index()
|
|
num := uint64(len(s.ExecutionRequests))
|
|
if num > 16 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
for _, elem := range s.ExecutionRequests {
|
|
{
|
|
elemIndx := hh.Index()
|
|
byteLen := uint64(len(elem))
|
|
if byteLen > 1048576 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
hh.AppendBytes32(elem)
|
|
hh.MerkleizeWithMixin(elemIndx, byteLen, (1048576+31)/32)
|
|
}
|
|
}
|
|
hh.MerkleizeWithMixin(subIndx, num, 16)
|
|
}
|
|
|
|
hh.Merkleize(indx)
|
|
return
|
|
}
|
|
|
|
// GetTree ssz hashes the SszNewPayloadRequest object
|
|
func (s *SszNewPayloadRequest) GetTree() (*ssz.Node, error) {
|
|
return ssz.ProofTree(s)
|
|
}
|
|
|
|
// MarshalSSZ ssz marshals the SszExecutionWitness object
|
|
func (s *SszExecutionWitness) MarshalSSZ() ([]byte, error) {
|
|
return ssz.MarshalSSZ(s)
|
|
}
|
|
|
|
// MarshalSSZTo ssz marshals the SszExecutionWitness object to a target array
|
|
func (s *SszExecutionWitness) MarshalSSZTo(buf []byte) (dst []byte, err error) {
|
|
dst = buf
|
|
offset := int(12)
|
|
|
|
// Offset (0) 'State'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
for ii := 0; ii < len(s.State); ii++ {
|
|
offset += 4
|
|
offset += len(s.State[ii])
|
|
}
|
|
|
|
// Offset (1) 'Codes'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
for ii := 0; ii < len(s.Codes); ii++ {
|
|
offset += 4
|
|
offset += len(s.Codes[ii])
|
|
}
|
|
|
|
// Offset (2) 'Headers'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
|
|
// Field (0) 'State'
|
|
if size := len(s.State); size > 1048576 {
|
|
err = ssz.ErrListTooBigFn("SszExecutionWitness.State", size, 1048576)
|
|
return
|
|
}
|
|
{
|
|
offset = 4 * len(s.State)
|
|
for ii := 0; ii < len(s.State); ii++ {
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
offset += len(s.State[ii])
|
|
}
|
|
}
|
|
for ii := 0; ii < len(s.State); ii++ {
|
|
if size := len(s.State[ii]); size > 1048576 {
|
|
err = ssz.ErrBytesLengthFn("SszExecutionWitness.State[ii]", size, 1048576)
|
|
return
|
|
}
|
|
dst = append(dst, s.State[ii]...)
|
|
}
|
|
|
|
// Field (1) 'Codes'
|
|
if size := len(s.Codes); size > 65536 {
|
|
err = ssz.ErrListTooBigFn("SszExecutionWitness.Codes", size, 65536)
|
|
return
|
|
}
|
|
{
|
|
offset = 4 * len(s.Codes)
|
|
for ii := 0; ii < len(s.Codes); ii++ {
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
offset += len(s.Codes[ii])
|
|
}
|
|
}
|
|
for ii := 0; ii < len(s.Codes); ii++ {
|
|
if size := len(s.Codes[ii]); size > 16777216 {
|
|
err = ssz.ErrBytesLengthFn("SszExecutionWitness.Codes[ii]", size, 16777216)
|
|
return
|
|
}
|
|
dst = append(dst, s.Codes[ii]...)
|
|
}
|
|
|
|
// Field (2) 'Headers'
|
|
if size := len(s.Headers); size > 256 {
|
|
err = ssz.ErrListTooBigFn("SszExecutionWitness.Headers", size, 256)
|
|
return
|
|
}
|
|
{
|
|
offset = 4 * len(s.Headers)
|
|
for ii := 0; ii < len(s.Headers); ii++ {
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
offset += len(s.Headers[ii])
|
|
}
|
|
}
|
|
for ii := 0; ii < len(s.Headers); ii++ {
|
|
if size := len(s.Headers[ii]); size > 1024 {
|
|
err = ssz.ErrBytesLengthFn("SszExecutionWitness.Headers[ii]", size, 1024)
|
|
return
|
|
}
|
|
dst = append(dst, s.Headers[ii]...)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// UnmarshalSSZ ssz unmarshals the SszExecutionWitness object
|
|
func (s *SszExecutionWitness) UnmarshalSSZ(buf []byte) error {
|
|
var err error
|
|
size := uint64(len(buf))
|
|
if size < 12 {
|
|
return ssz.ErrSize
|
|
}
|
|
|
|
tail := buf
|
|
var o0, o1, o2 uint64
|
|
|
|
// Offset (0) 'State'
|
|
if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
if o0 != 12 {
|
|
return ssz.ErrInvalidVariableOffset
|
|
}
|
|
|
|
// Offset (1) 'Codes'
|
|
if o1 = ssz.ReadOffset(buf[4:8]); o1 > size || o0 > o1 {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
// Offset (2) 'Headers'
|
|
if o2 = ssz.ReadOffset(buf[8:12]); o2 > size || o1 > o2 {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
// Field (0) 'State'
|
|
{
|
|
buf = tail[o0:o1]
|
|
num, err := ssz.DecodeDynamicLength(buf, 1048576)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
s.State = make([][]byte, num)
|
|
err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
|
|
if len(buf) > 1048576 {
|
|
return ssz.ErrBytesLength
|
|
}
|
|
if cap(s.State[indx]) == 0 {
|
|
s.State[indx] = make([]byte, 0, len(buf))
|
|
}
|
|
s.State[indx] = append(s.State[indx], buf...)
|
|
return nil
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// Field (1) 'Codes'
|
|
{
|
|
buf = tail[o1:o2]
|
|
num, err := ssz.DecodeDynamicLength(buf, 65536)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
s.Codes = make([][]byte, num)
|
|
err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
|
|
if len(buf) > 16777216 {
|
|
return ssz.ErrBytesLength
|
|
}
|
|
if cap(s.Codes[indx]) == 0 {
|
|
s.Codes[indx] = make([]byte, 0, len(buf))
|
|
}
|
|
s.Codes[indx] = append(s.Codes[indx], buf...)
|
|
return nil
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// Field (2) 'Headers'
|
|
{
|
|
buf = tail[o2:]
|
|
num, err := ssz.DecodeDynamicLength(buf, 256)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
s.Headers = make([][]byte, num)
|
|
err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
|
|
if len(buf) > 1024 {
|
|
return ssz.ErrBytesLength
|
|
}
|
|
if cap(s.Headers[indx]) == 0 {
|
|
s.Headers[indx] = make([]byte, 0, len(buf))
|
|
}
|
|
s.Headers[indx] = append(s.Headers[indx], buf...)
|
|
return nil
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return err
|
|
}
|
|
|
|
// SizeSSZ returns the ssz encoded size in bytes for the SszExecutionWitness object
|
|
func (s *SszExecutionWitness) SizeSSZ() (size int) {
|
|
size = 12
|
|
|
|
// Field (0) 'State'
|
|
for ii := 0; ii < len(s.State); ii++ {
|
|
size += 4
|
|
size += len(s.State[ii])
|
|
}
|
|
|
|
// Field (1) 'Codes'
|
|
for ii := 0; ii < len(s.Codes); ii++ {
|
|
size += 4
|
|
size += len(s.Codes[ii])
|
|
}
|
|
|
|
// Field (2) 'Headers'
|
|
for ii := 0; ii < len(s.Headers); ii++ {
|
|
size += 4
|
|
size += len(s.Headers[ii])
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// HashTreeRoot ssz hashes the SszExecutionWitness object
|
|
func (s *SszExecutionWitness) HashTreeRoot() ([32]byte, error) {
|
|
return ssz.HashWithDefaultHasher(s)
|
|
}
|
|
|
|
// HashTreeRootWith ssz hashes the SszExecutionWitness object with a hasher
|
|
func (s *SszExecutionWitness) HashTreeRootWith(hh ssz.HashWalker) (err error) {
|
|
indx := hh.Index()
|
|
|
|
// Field (0) 'State'
|
|
{
|
|
subIndx := hh.Index()
|
|
num := uint64(len(s.State))
|
|
if num > 1048576 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
for _, elem := range s.State {
|
|
{
|
|
elemIndx := hh.Index()
|
|
byteLen := uint64(len(elem))
|
|
if byteLen > 1048576 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
hh.AppendBytes32(elem)
|
|
hh.MerkleizeWithMixin(elemIndx, byteLen, (1048576+31)/32)
|
|
}
|
|
}
|
|
hh.MerkleizeWithMixin(subIndx, num, 1048576)
|
|
}
|
|
|
|
// Field (1) 'Codes'
|
|
{
|
|
subIndx := hh.Index()
|
|
num := uint64(len(s.Codes))
|
|
if num > 65536 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
for _, elem := range s.Codes {
|
|
{
|
|
elemIndx := hh.Index()
|
|
byteLen := uint64(len(elem))
|
|
if byteLen > 16777216 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
hh.AppendBytes32(elem)
|
|
hh.MerkleizeWithMixin(elemIndx, byteLen, (16777216+31)/32)
|
|
}
|
|
}
|
|
hh.MerkleizeWithMixin(subIndx, num, 65536)
|
|
}
|
|
|
|
// Field (2) 'Headers'
|
|
{
|
|
subIndx := hh.Index()
|
|
num := uint64(len(s.Headers))
|
|
if num > 256 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
for _, elem := range s.Headers {
|
|
{
|
|
elemIndx := hh.Index()
|
|
byteLen := uint64(len(elem))
|
|
if byteLen > 1024 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
hh.AppendBytes32(elem)
|
|
hh.MerkleizeWithMixin(elemIndx, byteLen, (1024+31)/32)
|
|
}
|
|
}
|
|
hh.MerkleizeWithMixin(subIndx, num, 256)
|
|
}
|
|
|
|
hh.Merkleize(indx)
|
|
return
|
|
}
|
|
|
|
// GetTree ssz hashes the SszExecutionWitness object
|
|
func (s *SszExecutionWitness) GetTree() (*ssz.Node, error) {
|
|
return ssz.ProofTree(s)
|
|
}
|
|
|
|
// MarshalSSZ ssz marshals the SszChainConfig object
|
|
func (s *SszChainConfig) MarshalSSZ() ([]byte, error) {
|
|
return ssz.MarshalSSZ(s)
|
|
}
|
|
|
|
// MarshalSSZTo ssz marshals the SszChainConfig object to a target array
|
|
func (s *SszChainConfig) MarshalSSZTo(buf []byte) (dst []byte, err error) {
|
|
dst = buf
|
|
|
|
// Field (0) 'ChainId'
|
|
dst = ssz.MarshalUint64(dst, s.ChainId)
|
|
|
|
return
|
|
}
|
|
|
|
// UnmarshalSSZ ssz unmarshals the SszChainConfig object
|
|
func (s *SszChainConfig) UnmarshalSSZ(buf []byte) error {
|
|
var err error
|
|
size := uint64(len(buf))
|
|
if size != 8 {
|
|
return ssz.ErrSize
|
|
}
|
|
|
|
// Field (0) 'ChainId'
|
|
s.ChainId = ssz.UnmarshallUint64(buf[0:8])
|
|
|
|
return err
|
|
}
|
|
|
|
// SizeSSZ returns the ssz encoded size in bytes for the SszChainConfig object
|
|
func (s *SszChainConfig) SizeSSZ() (size int) {
|
|
size = 8
|
|
return
|
|
}
|
|
|
|
// HashTreeRoot ssz hashes the SszChainConfig object
|
|
func (s *SszChainConfig) HashTreeRoot() ([32]byte, error) {
|
|
return ssz.HashWithDefaultHasher(s)
|
|
}
|
|
|
|
// HashTreeRootWith ssz hashes the SszChainConfig object with a hasher
|
|
func (s *SszChainConfig) HashTreeRootWith(hh ssz.HashWalker) (err error) {
|
|
indx := hh.Index()
|
|
|
|
// Field (0) 'ChainId'
|
|
hh.PutUint64(s.ChainId)
|
|
|
|
hh.Merkleize(indx)
|
|
return
|
|
}
|
|
|
|
// GetTree ssz hashes the SszChainConfig object
|
|
func (s *SszChainConfig) GetTree() (*ssz.Node, error) {
|
|
return ssz.ProofTree(s)
|
|
}
|
|
|
|
// MarshalSSZ ssz marshals the SszStatelessInput object
|
|
func (s *SszStatelessInput) MarshalSSZ() ([]byte, error) {
|
|
return ssz.MarshalSSZ(s)
|
|
}
|
|
|
|
// MarshalSSZTo ssz marshals the SszStatelessInput object to a target array
|
|
func (s *SszStatelessInput) MarshalSSZTo(buf []byte) (dst []byte, err error) {
|
|
dst = buf
|
|
offset := int(20)
|
|
|
|
// Offset (0) 'NewPayloadRequest'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
if s.NewPayloadRequest == nil {
|
|
s.NewPayloadRequest = new(SszNewPayloadRequest)
|
|
}
|
|
offset += s.NewPayloadRequest.SizeSSZ()
|
|
|
|
// Offset (1) 'Witness'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
if s.Witness == nil {
|
|
s.Witness = new(SszExecutionWitness)
|
|
}
|
|
offset += s.Witness.SizeSSZ()
|
|
|
|
// Field (2) 'ChainConfig'
|
|
if s.ChainConfig == nil {
|
|
s.ChainConfig = new(SszChainConfig)
|
|
}
|
|
if dst, err = s.ChainConfig.MarshalSSZTo(dst); err != nil {
|
|
return
|
|
}
|
|
|
|
// Offset (3) 'PublicKeys'
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
|
|
// Field (0) 'NewPayloadRequest'
|
|
if dst, err = s.NewPayloadRequest.MarshalSSZTo(dst); err != nil {
|
|
return
|
|
}
|
|
|
|
// Field (1) 'Witness'
|
|
if dst, err = s.Witness.MarshalSSZTo(dst); err != nil {
|
|
return
|
|
}
|
|
|
|
// Field (3) 'PublicKeys'
|
|
if size := len(s.PublicKeys); size > 1048576 {
|
|
err = ssz.ErrListTooBigFn("SszStatelessInput.PublicKeys", size, 1048576)
|
|
return
|
|
}
|
|
{
|
|
offset = 4 * len(s.PublicKeys)
|
|
for ii := 0; ii < len(s.PublicKeys); ii++ {
|
|
dst = ssz.WriteOffset(dst, offset)
|
|
offset += len(s.PublicKeys[ii])
|
|
}
|
|
}
|
|
for ii := 0; ii < len(s.PublicKeys); ii++ {
|
|
if size := len(s.PublicKeys[ii]); size > 48 {
|
|
err = ssz.ErrBytesLengthFn("SszStatelessInput.PublicKeys[ii]", size, 48)
|
|
return
|
|
}
|
|
dst = append(dst, s.PublicKeys[ii]...)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// UnmarshalSSZ ssz unmarshals the SszStatelessInput object
|
|
func (s *SszStatelessInput) UnmarshalSSZ(buf []byte) error {
|
|
var err error
|
|
size := uint64(len(buf))
|
|
if size < 20 {
|
|
return ssz.ErrSize
|
|
}
|
|
|
|
tail := buf
|
|
var o0, o1, o3 uint64
|
|
|
|
// Offset (0) 'NewPayloadRequest'
|
|
if o0 = ssz.ReadOffset(buf[0:4]); o0 > size {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
if o0 != 20 {
|
|
return ssz.ErrInvalidVariableOffset
|
|
}
|
|
|
|
// Offset (1) 'Witness'
|
|
if o1 = ssz.ReadOffset(buf[4:8]); o1 > size || o0 > o1 {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
// Field (2) 'ChainConfig'
|
|
if s.ChainConfig == nil {
|
|
s.ChainConfig = new(SszChainConfig)
|
|
}
|
|
if err = s.ChainConfig.UnmarshalSSZ(buf[8:16]); err != nil {
|
|
return err
|
|
}
|
|
|
|
// Offset (3) 'PublicKeys'
|
|
if o3 = ssz.ReadOffset(buf[16:20]); o3 > size || o1 > o3 {
|
|
return ssz.ErrOffset
|
|
}
|
|
|
|
// Field (0) 'NewPayloadRequest'
|
|
{
|
|
buf = tail[o0:o1]
|
|
if s.NewPayloadRequest == nil {
|
|
s.NewPayloadRequest = new(SszNewPayloadRequest)
|
|
}
|
|
if err = s.NewPayloadRequest.UnmarshalSSZ(buf); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// Field (1) 'Witness'
|
|
{
|
|
buf = tail[o1:o3]
|
|
if s.Witness == nil {
|
|
s.Witness = new(SszExecutionWitness)
|
|
}
|
|
if err = s.Witness.UnmarshalSSZ(buf); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// Field (3) 'PublicKeys'
|
|
{
|
|
buf = tail[o3:]
|
|
num, err := ssz.DecodeDynamicLength(buf, 1048576)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
s.PublicKeys = make([][]byte, num)
|
|
err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
|
|
if len(buf) > 48 {
|
|
return ssz.ErrBytesLength
|
|
}
|
|
if cap(s.PublicKeys[indx]) == 0 {
|
|
s.PublicKeys[indx] = make([]byte, 0, len(buf))
|
|
}
|
|
s.PublicKeys[indx] = append(s.PublicKeys[indx], buf...)
|
|
return nil
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return err
|
|
}
|
|
|
|
// SizeSSZ returns the ssz encoded size in bytes for the SszStatelessInput object
|
|
func (s *SszStatelessInput) SizeSSZ() (size int) {
|
|
size = 20
|
|
|
|
// Field (0) 'NewPayloadRequest'
|
|
if s.NewPayloadRequest == nil {
|
|
s.NewPayloadRequest = new(SszNewPayloadRequest)
|
|
}
|
|
size += s.NewPayloadRequest.SizeSSZ()
|
|
|
|
// Field (1) 'Witness'
|
|
if s.Witness == nil {
|
|
s.Witness = new(SszExecutionWitness)
|
|
}
|
|
size += s.Witness.SizeSSZ()
|
|
|
|
// Field (3) 'PublicKeys'
|
|
for ii := 0; ii < len(s.PublicKeys); ii++ {
|
|
size += 4
|
|
size += len(s.PublicKeys[ii])
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// HashTreeRoot ssz hashes the SszStatelessInput object
|
|
func (s *SszStatelessInput) HashTreeRoot() ([32]byte, error) {
|
|
return ssz.HashWithDefaultHasher(s)
|
|
}
|
|
|
|
// HashTreeRootWith ssz hashes the SszStatelessInput object with a hasher
|
|
func (s *SszStatelessInput) HashTreeRootWith(hh ssz.HashWalker) (err error) {
|
|
indx := hh.Index()
|
|
|
|
// Field (0) 'NewPayloadRequest'
|
|
if err = s.NewPayloadRequest.HashTreeRootWith(hh); err != nil {
|
|
return
|
|
}
|
|
|
|
// Field (1) 'Witness'
|
|
if err = s.Witness.HashTreeRootWith(hh); err != nil {
|
|
return
|
|
}
|
|
|
|
// Field (2) 'ChainConfig'
|
|
if s.ChainConfig == nil {
|
|
s.ChainConfig = new(SszChainConfig)
|
|
}
|
|
if err = s.ChainConfig.HashTreeRootWith(hh); err != nil {
|
|
return
|
|
}
|
|
|
|
// Field (3) 'PublicKeys'
|
|
{
|
|
subIndx := hh.Index()
|
|
num := uint64(len(s.PublicKeys))
|
|
if num > 1048576 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
for _, elem := range s.PublicKeys {
|
|
{
|
|
elemIndx := hh.Index()
|
|
byteLen := uint64(len(elem))
|
|
if byteLen > 48 {
|
|
err = ssz.ErrIncorrectListSize
|
|
return
|
|
}
|
|
hh.AppendBytes32(elem)
|
|
hh.MerkleizeWithMixin(elemIndx, byteLen, (48+31)/32)
|
|
}
|
|
}
|
|
hh.MerkleizeWithMixin(subIndx, num, 1048576)
|
|
}
|
|
|
|
hh.Merkleize(indx)
|
|
return
|
|
}
|
|
|
|
// GetTree ssz hashes the SszStatelessInput object
|
|
func (s *SszStatelessInput) GetTree() (*ssz.Node, error) {
|
|
return ssz.ProofTree(s)
|
|
}
|
|
|
|
// MarshalSSZ ssz marshals the SszStatelessValidationResult object
|
|
func (s *SszStatelessValidationResult) MarshalSSZ() ([]byte, error) {
|
|
return ssz.MarshalSSZ(s)
|
|
}
|
|
|
|
// MarshalSSZTo ssz marshals the SszStatelessValidationResult object to a target array
|
|
func (s *SszStatelessValidationResult) MarshalSSZTo(buf []byte) (dst []byte, err error) {
|
|
dst = buf
|
|
|
|
// Field (0) 'NewPayloadRequestRoot'
|
|
dst = append(dst, s.NewPayloadRequestRoot[:]...)
|
|
|
|
// Field (1) 'SuccessfulValidation'
|
|
dst = ssz.MarshalBool(dst, s.SuccessfulValidation)
|
|
|
|
// Field (2) 'ChainConfig'
|
|
if s.ChainConfig == nil {
|
|
s.ChainConfig = new(SszChainConfig)
|
|
}
|
|
if dst, err = s.ChainConfig.MarshalSSZTo(dst); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// UnmarshalSSZ ssz unmarshals the SszStatelessValidationResult object
|
|
func (s *SszStatelessValidationResult) UnmarshalSSZ(buf []byte) error {
|
|
var err error
|
|
size := uint64(len(buf))
|
|
if size != 41 {
|
|
return ssz.ErrSize
|
|
}
|
|
|
|
// Field (0) 'NewPayloadRequestRoot'
|
|
copy(s.NewPayloadRequestRoot[:], buf[0:32])
|
|
|
|
// Field (1) 'SuccessfulValidation'
|
|
s.SuccessfulValidation = ssz.UnmarshalBool(buf[32:33])
|
|
|
|
// Field (2) 'ChainConfig'
|
|
if s.ChainConfig == nil {
|
|
s.ChainConfig = new(SszChainConfig)
|
|
}
|
|
if err = s.ChainConfig.UnmarshalSSZ(buf[33:41]); err != nil {
|
|
return err
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
// SizeSSZ returns the ssz encoded size in bytes for the SszStatelessValidationResult object
|
|
func (s *SszStatelessValidationResult) SizeSSZ() (size int) {
|
|
size = 41
|
|
return
|
|
}
|
|
|
|
// HashTreeRoot ssz hashes the SszStatelessValidationResult object
|
|
func (s *SszStatelessValidationResult) HashTreeRoot() ([32]byte, error) {
|
|
return ssz.HashWithDefaultHasher(s)
|
|
}
|
|
|
|
// HashTreeRootWith ssz hashes the SszStatelessValidationResult object with a hasher
|
|
func (s *SszStatelessValidationResult) HashTreeRootWith(hh ssz.HashWalker) (err error) {
|
|
indx := hh.Index()
|
|
|
|
// Field (0) 'NewPayloadRequestRoot'
|
|
hh.PutBytes(s.NewPayloadRequestRoot[:])
|
|
|
|
// Field (1) 'SuccessfulValidation'
|
|
hh.PutBool(s.SuccessfulValidation)
|
|
|
|
// Field (2) 'ChainConfig'
|
|
if s.ChainConfig == nil {
|
|
s.ChainConfig = new(SszChainConfig)
|
|
}
|
|
if err = s.ChainConfig.HashTreeRootWith(hh); err != nil {
|
|
return
|
|
}
|
|
|
|
hh.Merkleize(indx)
|
|
return
|
|
}
|
|
|
|
// GetTree ssz hashes the SszStatelessValidationResult object
|
|
func (s *SszStatelessValidationResult) GetTree() (*ssz.Node, error) {
|
|
return ssz.ProofTree(s)
|
|
}
|