Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions portalnetwork/history/history_network_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,11 +125,19 @@ func TestValidateHeader(t *testing.T) {
}

func TestReceiptsAndBody(t *testing.T) {
entryMap, err := parseDataForBlock14764013()
entryMap, err := parseDataForBlock("block_14764013.json")
require.NoError(t, err)
testReceiptsAndBody(entryMap, t)

entryMap, err = parseDataForBlock("block_8951059.json")
require.NoError(t, err)
testReceiptsAndBody(entryMap, t)
}

func testReceiptsAndBody(entryMap map[string]contentEntry, t *testing.T) {
historyNetwork, err := genHistoryNetwork(":7893", nil)
require.NoError(t, err)
defer historyNetwork.Stop()

headerEntry := entryMap["header"]
// validateContents will store the content
Expand Down Expand Up @@ -194,7 +202,7 @@ func TestGetContentByKey(t *testing.T) {
// wait node start
time.Sleep(10 * time.Second)

entryMap, err := parseDataForBlock14764013()
entryMap, err := parseDataForBlock("block_14764013.json")
require.NoError(t, err)

headerEntry := entryMap["header"]
Expand Down Expand Up @@ -450,7 +458,7 @@ func genHistoryNetwork(addr string, bootNodes []*enode.Node) (*HistoryNetwork, e
return NewHistoryNetwork(portalProtocol, &accu), nil
}

func parseDataForBlock14764013() (map[string]contentEntry, error) {
func parseDataForBlock(fileName string) (map[string]contentEntry, error) {
content, err := os.ReadFile("./testdata/block_14764013.json")
if err != nil {
return nil, err
Expand Down
16 changes: 16 additions & 0 deletions portalnetwork/history/testdata/block_8951059.json

Large diffs are not rendered by default.

58 changes: 47 additions & 11 deletions portalnetwork/history/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ func (p *BlockHeaderProof) HashTreeRootWith(_ ssz.HashWalker) (err error) {
}

type PortalReceipts struct {
Receipts [][]byte `ssz-max:"134217728,16384"`
Receipts [][]byte `ssz-max:"16384,134217728"`
}

// MarshalSSZ ssz marshals the PortalReceipts object
Expand All @@ -119,9 +119,9 @@ func (p *PortalReceipts) MarshalSSZ() ([]byte, error) {
// MarshalSSZTo ssz marshals the PortalReceipts object to a target array
func (p *PortalReceipts) MarshalSSZTo(buf []byte) (dst []byte, err error) {
dst = buf

if size := len(p.Receipts); size > 134217728 {
err = ssz.ErrListTooBigFn("PortalReceipts.Receipts", size, 134217728)
// Field (0) 'Receipts'
if size := len(p.Receipts); size > 16384 {
err = ssz.ErrListTooBigFn("PortalReceipts.Receipts", size, 16384)
return
}
{
Expand All @@ -132,8 +132,8 @@ func (p *PortalReceipts) MarshalSSZTo(buf []byte) (dst []byte, err error) {
}
}
for ii := 0; ii < len(p.Receipts); ii++ {
if size := len(p.Receipts[ii]); size > 16384 {
err = ssz.ErrBytesLengthFn("PortalReceipts.Receipts[ii]", size, 16384)
if size := len(p.Receipts[ii]); size > 134217728 {
err = ssz.ErrBytesLengthFn("PortalReceipts.Receipts[ii]", size, 134217728)
return
}
dst = append(dst, p.Receipts[ii]...)
Expand All @@ -142,7 +142,7 @@ func (p *PortalReceipts) MarshalSSZTo(buf []byte) (dst []byte, err error) {
return
}

// UnmarshalSSZ ssz unmarshal the PortalReceipts object
// UnmarshalSSZ ssz unmarshals the PortalReceipts object
func (p *PortalReceipts) UnmarshalSSZ(buf []byte) error {
var err error
size := uint64(len(buf))
Expand All @@ -151,13 +151,13 @@ func (p *PortalReceipts) UnmarshalSSZ(buf []byte) error {
}
// Field (0) 'Receipts'
{
num, err := ssz.DecodeDynamicLength(buf, 134217728)
num, err := ssz.DecodeDynamicLength(buf, 16384)
if err != nil {
return err
}
p.Receipts = make([][]byte, num)
err = ssz.UnmarshalDynamic(buf, num, func(indx int, buf []byte) (err error) {
if len(buf) > 16384 {
if len(buf) > 134217728 {
return ssz.ErrBytesLength
}
if cap(p.Receipts[indx]) == 0 {
Expand Down Expand Up @@ -186,7 +186,43 @@ func (p *PortalReceipts) SizeSSZ() (size int) {
return
}

// HashTreeRoot ssz hashes the PortalReceipts object
func (p *PortalReceipts) HashTreeRoot() ([32]byte, error) {
return ssz.HashWithDefaultHasher(p)
}

// HashTreeRootWith ssz hashes the PortalReceipts object with a hasher
func (p *PortalReceipts) HashTreeRootWith(_ ssz.HashWalker) (err error) {
panic("implement me")
func (p *PortalReceipts) HashTreeRootWith(hh ssz.HashWalker) (err error) {
indx := hh.Index()

// Field (0) 'Receipts'
{
subIndx := hh.Index()
num := uint64(len(p.Receipts))
if num > 16384 {
err = ssz.ErrIncorrectListSize
return
}
for _, elem := range p.Receipts {
{
elemIndx := hh.Index()
byteLen := uint64(len(elem))
if byteLen > 134217728 {
err = ssz.ErrIncorrectListSize
return
}
hh.AppendBytes32(elem)
hh.MerkleizeWithMixin(elemIndx, byteLen, (134217728+31)/32)
}
}
hh.MerkleizeWithMixin(subIndx, num, 16384)
}

hh.Merkleize(indx)
return
}

// GetTree ssz hashes the PortalReceipts object
func (p *PortalReceipts) GetTree() (*ssz.Node, error) {
return ssz.ProofTree(p)
}
2 changes: 1 addition & 1 deletion portalnetwork/history/types_encoding.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.