Skip to content

Commit 4b626c3

Browse files
authored
feat(verify): remove height check in Verify (#216)
Remove `heightThreshold` check in `Verify` func.
1 parent 8f53979 commit 4b626c3

File tree

4 files changed

+11
-39
lines changed

4 files changed

+11
-39
lines changed

headertest/verify_test.go

+1-10
Original file line numberDiff line numberDiff line change
@@ -95,15 +95,6 @@ func TestVerify(t *testing.T) {
9595
},
9696
err: header.ErrKnownHeader,
9797
},
98-
{
99-
trusted: trusted,
100-
prepare: func() *DummyHeader {
101-
untrusted := next()
102-
untrusted.HeightI += 100000
103-
return untrusted
104-
},
105-
err: header.ErrHeightFromFuture,
106-
},
10798
{
10899
trusted: trusted,
109100
prepare: func() *DummyHeader {
@@ -122,7 +113,7 @@ func TestVerify(t *testing.T) {
122113

123114
for i, test := range tests {
124115
t.Run(strconv.Itoa(i), func(t *testing.T) {
125-
err := header.Verify(test.trusted, test.prepare(), 0)
116+
err := header.Verify(test.trusted, test.prepare())
126117
if test.err != nil {
127118
var verErr *header.VerifyError
128119
assert.ErrorAs(t, err, &verErr)

p2p/exchange.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ func (ex *Exchange[H]) Head(ctx context.Context, opts ...header.HeadOption[H]) (
182182
}
183183
// if tracked (untrusted) peers were requested, verify head
184184
if useTrackedPeers {
185-
err = header.Verify[H](reqParams.TrustedHead, headers[0], header.DefaultHeightThreshold)
185+
err = header.Verify[H](reqParams.TrustedHead, headers[0])
186186
if err != nil {
187187
var verErr *header.VerifyError
188188
if errors.As(err, &verErr) && verErr.SoftFailure {

sync/sync_head.go

+1-7
Original file line numberDiff line numberDiff line change
@@ -167,13 +167,7 @@ func (s *Syncer[H]) verify(ctx context.Context, newHead H) (bool, error) {
167167
return true, &header.VerifyError{Reason: err, SoftFailure: true}
168168
}
169169

170-
var heightThreshold uint64
171-
if s.Params.TrustingPeriod != 0 && s.Params.blockTime != 0 {
172-
buffer := time.Hour * 48 / s.Params.blockTime // generous buffer to account for variable block time
173-
heightThreshold = uint64(s.Params.TrustingPeriod/s.Params.blockTime + buffer)
174-
}
175-
176-
err = header.Verify(sbjHead, newHead, heightThreshold)
170+
err = header.Verify(sbjHead, newHead)
177171
if err == nil {
178172
return false, nil
179173
}

verify.go

+8-21
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,10 @@ const DefaultHeightThreshold uint64 = 80000 // ~ 14 days of 15 second headers
1414
// custom user-specific checks defined in Header.Verify.
1515
//
1616
// Given headers must be non-zero
17-
// If heightThreshold is zero, uses DefaultHeightThreshold.
1817
// Always returns VerifyError.
19-
func Verify[H Header[H]](trstd, untrstd H, heightThreshold uint64) error {
18+
func Verify[H Header[H]](trstd, untrstd H) error {
2019
// general mandatory verification
21-
err := verify[H](trstd, untrstd, heightThreshold)
20+
err := verify[H](trstd, untrstd)
2221
if err != nil {
2322
return &VerifyError{Reason: err}
2423
}
@@ -46,11 +45,7 @@ func Verify[H Header[H]](trstd, untrstd H, heightThreshold uint64) error {
4645

4746
// verify is a little bro of Verify yet performs mandatory Header checks
4847
// for any Header implementation.
49-
func verify[H Header[H]](trstd, untrstd H, heightThreshold uint64) error {
50-
if heightThreshold == 0 {
51-
heightThreshold = DefaultHeightThreshold
52-
}
53-
48+
func verify[H Header[H]](trstd, untrstd H) error {
5449
if trstd.IsZero() {
5550
return ErrZeroHeader
5651
}
@@ -75,24 +70,16 @@ func verify[H Header[H]](trstd, untrstd H, heightThreshold uint64) error {
7570
if known {
7671
return fmt.Errorf("%w: '%d' <= current '%d'", ErrKnownHeader, untrstd.Height(), trstd.Height())
7772
}
78-
// reject headers with height too far from the future
79-
// this is essential for headers failed non-adjacent verification
80-
// yet taken as sync target
81-
adequateHeight := untrstd.Height()-trstd.Height() < heightThreshold
82-
if !adequateHeight {
83-
return fmt.Errorf("%w: '%d' - current '%d' >= threshold '%d'", ErrHeightFromFuture, untrstd.Height(), trstd.Height(), heightThreshold)
84-
}
8573

8674
return nil
8775
}
8876

8977
var (
90-
ErrZeroHeader = errors.New("zero header")
91-
ErrWrongChainID = errors.New("wrong chain id")
92-
ErrUnorderedTime = errors.New("unordered headers")
93-
ErrFromFuture = errors.New("header is from the future")
94-
ErrKnownHeader = errors.New("known header")
95-
ErrHeightFromFuture = errors.New("header height is far from future")
78+
ErrZeroHeader = errors.New("zero header")
79+
ErrWrongChainID = errors.New("wrong chain id")
80+
ErrUnorderedTime = errors.New("unordered headers")
81+
ErrFromFuture = errors.New("header is from the future")
82+
ErrKnownHeader = errors.New("known header")
9683
)
9784

9885
// VerifyError is thrown if a Header failed verification.

0 commit comments

Comments
 (0)