Skip to content

Commit ca22f09

Browse files
fearlessfeGrapeBaBa
authored andcommitted
fix: valdate post merge block header
1 parent 43a1863 commit ca22f09

5 files changed

Lines changed: 86 additions & 7 deletions

File tree

go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ require (
5353
github.com/mattn/go-sqlite3 v1.14.18
5454
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416
5555
github.com/olekukonko/tablewriter v0.0.5
56-
github.com/optimism-java/utp-go v0.0.0-20240117090415-3a5aad17f644
56+
github.com/optimism-java/utp-go v0.0.0-20240226135248-bf6521f27229
5757
github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7
5858
github.com/protolambda/bls12-381-util v0.0.0-20220416220906-d8552aa452c7
5959
github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7
@@ -67,11 +67,11 @@ require (
6767
github.com/tyler-smith/go-bip39 v1.1.0
6868
github.com/urfave/cli/v2 v2.25.7
6969
go.uber.org/automaxprocs v1.5.2
70-
go.uber.org/zap v1.26.0
70+
go.uber.org/zap v1.27.0
7171
golang.org/x/crypto v0.17.0
7272
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
7373
golang.org/x/sync v0.5.0
74-
golang.org/x/sys v0.16.0
74+
golang.org/x/sys v0.17.0
7575
golang.org/x/text v0.14.0
7676
golang.org/x/time v0.3.0
7777
golang.org/x/tools v0.15.0

go.sum

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,8 @@ github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsq
495495
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
496496
github.com/optimism-java/utp-go v0.0.0-20240117090415-3a5aad17f644 h1:vrYEqCVnDS/Z3lLQa+GBrXRtIHN948TWy+aw04O9dpQ=
497497
github.com/optimism-java/utp-go v0.0.0-20240117090415-3a5aad17f644/go.mod h1:DZ0jYzLzt4ZsCmhI/iqYgGFoNx45OfpEoKzXB8HVALQ=
498+
github.com/optimism-java/utp-go v0.0.0-20240226135248-bf6521f27229 h1:bCV7j32i0YgX+JBvOu3+QV/IQUhlNMr2dpb09vZRSdE=
499+
github.com/optimism-java/utp-go v0.0.0-20240226135248-bf6521f27229/go.mod h1:DZ0jYzLzt4ZsCmhI/iqYgGFoNx45OfpEoKzXB8HVALQ=
498500
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
499501
github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQmzR3rNLYGGz4g/UgFcjb28p/viDM=
500502
github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0=
@@ -568,6 +570,7 @@ github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobt
568570
github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg=
569571
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
570572
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
573+
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
571574
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
572575
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
573576
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
@@ -618,13 +621,17 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
618621
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
619622
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
620623
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
624+
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
621625
go.uber.org/automaxprocs v1.5.2 h1:2LxUOGiR3O6tw8ui5sZa2LAaHnsviZdVOUZw4fvbnME=
622626
go.uber.org/automaxprocs v1.5.2/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0=
623627
go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk=
628+
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
624629
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
625630
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
626631
go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
627632
go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
633+
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
634+
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
628635
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
629636
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
630637
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
@@ -799,6 +806,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
799806
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
800807
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
801808
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
809+
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
810+
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
802811
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
803812
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
804813
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=

portalnetwork/history/accumulator.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
_ "embed"
66
"encoding/binary"
77
"errors"
8+
"fmt"
89

910
"github.com/ethereum/go-ethereum/common/hexutil"
1011
"github.com/ethereum/go-ethereum/core/types"
@@ -197,12 +198,12 @@ func (f MasterAccumulator) VerifyHeader(header types.Header, headerProof BlockHe
197198
case accumulatorProof:
198199
return f.VerifyAccumulatorProof(header, headerProof.Proof)
199200
case none:
200-
if header.Number.Uint64() > mergeBlockNumber {
201-
return false, ErrNotPreMergeHeader
201+
if header.Number.Uint64() <= mergeBlockNumber {
202+
return false, ErrPreMergeHeaderMustWithProof
202203
}
203-
return false, ErrPreMergeHeaderMustWithProof
204+
return true, nil
204205
}
205-
return false, nil
206+
return false, fmt.Errorf("unknown header proof selector %v", headerProof.Selector)
206207
}
207208

208209
func (f MasterAccumulator) Contains(epochHash []byte) bool {

portalnetwork/history/history_network_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ import (
1414

1515
"github.com/ethereum/go-ethereum/common/hexutil"
1616
"github.com/ethereum/go-ethereum/crypto"
17+
"github.com/ethereum/go-ethereum/log"
1718
"github.com/ethereum/go-ethereum/p2p/discover"
1819
"github.com/ethereum/go-ethereum/p2p/discover/portalwire"
1920
"github.com/ethereum/go-ethereum/p2p/enode"
2021
"github.com/ethereum/go-ethereum/portalnetwork/storage"
2122
"github.com/holiman/uint256"
2223
"github.com/stretchr/testify/require"
24+
"gopkg.in/yaml.v3"
2325
)
2426

2527
//go:embed testdata/shanghaibody.txt
@@ -285,6 +287,31 @@ func TestGetContentByKey(t *testing.T) {
285287
require.NotNil(t, epoch)
286288
}
287289

290+
type Entry struct {
291+
ContentKey string `yaml:"content_key"`
292+
ContentValue string `yaml:"content_value"`
293+
}
294+
295+
func TestValidateContents(t *testing.T) {
296+
file, err := os.ReadFile("./testdata/hive_gossip.yaml")
297+
require.NoError(t, err)
298+
entries := make([]Entry, 0)
299+
err = yaml.Unmarshal(file, &entries)
300+
require.NoError(t, err)
301+
historyNetwork, err := genHistoryNetwork(":7897", nil)
302+
require.NoError(t, err)
303+
304+
keys := make([][]byte, 0)
305+
values := make([][]byte, 0)
306+
307+
for _, entry := range entries {
308+
keys = append(keys, hexutil.MustDecode(entry.ContentKey))
309+
values = append(values, hexutil.MustDecode(entry.ContentValue))
310+
}
311+
err = historyNetwork.validateContents(keys, values)
312+
require.NoError(t, err)
313+
}
314+
288315
type contentEntry struct {
289316
key []byte
290317
value []byte
@@ -338,6 +365,10 @@ func (m *MockStorage) Put(contentId []byte, content []byte) error {
338365
}
339366

340367
func genHistoryNetwork(addr string, bootNodes []*enode.Node) (*HistoryNetwork, error) {
368+
glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, true))
369+
slogVerbosity := log.FromLegacyLevel(5)
370+
glogger.Verbosity(slogVerbosity)
371+
log.SetDefault(log.NewLogger(glogger))
341372
conf := discover.DefaultPortalProtocolConfig()
342373
if addr != "" {
343374
conf.ListenAddr = addr

0 commit comments

Comments
 (0)