Skip to content

Commit 5aae981

Browse files
committed
cleanup
1 parent f170f5d commit 5aae981

File tree

4 files changed

+50
-45
lines changed

4 files changed

+50
-45
lines changed

vms/platformvm/txs/executor/proposal_tx_executor.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -700,24 +700,6 @@ func GetValidator(state state.Chain, subnetID ids.ID, nodeID ids.NodeID) (*state
700700
return state.GetPendingValidator(subnetID, nodeID)
701701
}
702702

703-
// fitsValidationWindow returns true if [delegator]'s period is inside [validator]'s period.
704-
//
705-
// A [delegator]'s period is inside if:
706-
// - [delegator]'s start time is not before [validator]'s start time
707-
// - [delegator]'s end time is not after [validator]'s end time
708-
func fitsValidationWindow(
709-
validator *state.Staker,
710-
delegator *state.Staker,
711-
) bool {
712-
if delegator.StartTime.Before(validator.StartTime) {
713-
return false
714-
}
715-
if delegator.EndTime.After(validator.EndTime) {
716-
return false
717-
}
718-
return true
719-
}
720-
721703
// overDelegated returns true if [validator] will be overdelegated when adding [delegator].
722704
//
723705
// A [validator] would become overdelegated if:

vms/platformvm/txs/executor/staker_tx_verification.go

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,12 @@ func verifyAddSubnetValidatorTx(
217217

218218
// Ensure that the period this validator validates the specified subnet
219219
// is a subset of the time they validate the primary network.
220-
if !tx.Validator.BoundedBy(primaryNetworkValidator.StartTime, primaryNetworkValidator.EndTime) {
220+
if !txs.BoundedBy(
221+
tx.StartTime(),
222+
tx.EndTime(),
223+
primaryNetworkValidator.StartTime,
224+
primaryNetworkValidator.EndTime,
225+
) {
221226
return ErrValidatorSubset
222227
}
223228

@@ -388,15 +393,22 @@ func verifyAddDelegatorTx(
388393
}
389394

390395
txID := sTx.ID()
391-
newStaker, err := state.NewPendingStaker(txID, tx)
396+
newDelegator, err := state.NewPendingStaker(txID, tx)
392397
if err != nil {
393398
return nil, err
394399
}
395400

396-
if !fitsValidationWindow(primaryNetworkValidator, newStaker) {
401+
// check that [delegator]'s period is inside [validator]'s period.
402+
if !txs.BoundedBy(
403+
newDelegator.StartTime,
404+
newDelegator.EndTime,
405+
primaryNetworkValidator.StartTime,
406+
primaryNetworkValidator.EndTime,
407+
) {
397408
return nil, ErrPeriodMismatch
398409
}
399-
overDelegated, err := overDelegated(chainState, primaryNetworkValidator, maximumWeight, newStaker)
410+
411+
overDelegated, err := overDelegated(chainState, primaryNetworkValidator, maximumWeight, newDelegator)
400412
if err != nil {
401413
return nil, err
402414
}
@@ -526,7 +538,12 @@ func verifyAddPermissionlessValidatorTx(
526538

527539
// Ensure that the period this validator validates the specified subnet
528540
// is a subset of the time they validate the primary network.
529-
if !tx.Validator.BoundedBy(primaryNetworkValidator.StartTime, primaryNetworkValidator.EndTime) {
541+
if !txs.BoundedBy(
542+
tx.StartTime(),
543+
tx.EndTime(),
544+
primaryNetworkValidator.StartTime,
545+
primaryNetworkValidator.EndTime,
546+
) {
530547
return ErrValidatorSubset
531548
}
532549

@@ -685,15 +702,22 @@ func verifyAddPermissionlessDelegatorTx(
685702
maximumWeight = math.Min(maximumWeight, delegatorRules.maxValidatorStake)
686703

687704
txID := sTx.ID()
688-
newStaker, err := state.NewPendingStaker(txID, tx)
705+
newDelegator, err := state.NewPendingStaker(txID, tx)
689706
if err != nil {
690707
return err
691708
}
692709

693-
if !fitsValidationWindow(validator, newStaker) {
710+
// check that [delegator]'s period is inside [validator]'s period.
711+
if !txs.BoundedBy(
712+
newDelegator.StartTime,
713+
newDelegator.EndTime,
714+
validator.StartTime,
715+
validator.EndTime,
716+
) {
694717
return ErrPeriodMismatch
695718
}
696-
overDelegated, err := overDelegated(chainState, validator, maximumWeight, newStaker)
719+
720+
overDelegated, err := overDelegated(chainState, validator, maximumWeight, newDelegator)
697721
if err != nil {
698722
return err
699723
}

vms/platformvm/txs/validator.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,8 @@ func (v *Validator) Verify() error {
6060
}
6161
}
6262

63-
// BoundedBy returns true iff the period that [validator] validates is a
64-
// (non-strict) subset of the time that [other] validates.
65-
// Namely, startTime <= v.StartTime() <= v.EndTime() <= endTime
66-
func (v *Validator) BoundedBy(startTime, endTime time.Time) bool {
67-
return !v.StartTime().Before(startTime) && !v.EndTime().After(endTime)
63+
// BoundedBy returns true iff staker start and end are a
64+
// (non-strict) subset of the provided time bound
65+
func BoundedBy(stakerStart, stakerEnd, lowerBound, upperBound time.Time) bool {
66+
return !stakerStart.Before(lowerBound) && !stakerEnd.After(upperBound)
6867
}

vms/platformvm/txs/validator_test.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,54 +38,54 @@ func TestValidatorBoundedBy(t *testing.T) {
3838
End: bEndTime,
3939
Wght: defaultWeight,
4040
}
41-
require.False(a.BoundedBy(b.StartTime(), b.EndTime()))
42-
require.False(b.BoundedBy(a.StartTime(), a.EndTime()))
41+
require.False(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime()))
42+
require.False(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime()))
4343

4444
// case 2: a starts, b starts, a finishes, b finishes
4545
a.Start = 0
4646
b.Start = 1
4747
a.End = 2
4848
b.End = 3
49-
require.False(a.BoundedBy(b.StartTime(), b.EndTime()))
50-
require.False(b.BoundedBy(a.StartTime(), a.EndTime()))
49+
require.False(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime()))
50+
require.False(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime()))
5151

5252
// case 3: a starts, b starts, b finishes, a finishes
5353
a.Start = 0
5454
b.Start = 1
5555
b.End = 2
5656
a.End = 3
57-
require.False(a.BoundedBy(b.StartTime(), b.EndTime()))
58-
require.True(b.BoundedBy(a.StartTime(), a.EndTime()))
57+
require.False(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime()))
58+
require.True(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime()))
5959

6060
// case 4: b starts, a starts, a finishes, b finishes
6161
b.Start = 0
6262
a.Start = 1
6363
a.End = 2
6464
b.End = 3
65-
require.True(a.BoundedBy(b.StartTime(), b.EndTime()))
66-
require.False(b.BoundedBy(a.StartTime(), a.EndTime()))
65+
require.True(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime()))
66+
require.False(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime()))
6767

6868
// case 5: b starts, b finishes, a starts, a finishes
6969
b.Start = 0
7070
b.End = 1
7171
a.Start = 2
7272
a.End = 3
73-
require.False(a.BoundedBy(b.StartTime(), b.EndTime()))
74-
require.False(b.BoundedBy(a.StartTime(), a.EndTime()))
73+
require.False(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime()))
74+
require.False(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime()))
7575

7676
// case 6: b starts, a starts, b finishes, a finishes
7777
b.Start = 0
7878
a.Start = 1
7979
b.End = 2
8080
a.End = 3
81-
require.False(a.BoundedBy(b.StartTime(), b.EndTime()))
82-
require.False(b.BoundedBy(a.StartTime(), a.EndTime()))
81+
require.False(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime()))
82+
require.False(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime()))
8383

8484
// case 3: a starts, b starts, b finishes, a finishes
8585
a.Start = 0
8686
b.Start = 0
8787
b.End = 1
8888
a.End = 1
89-
require.True(a.BoundedBy(b.StartTime(), b.EndTime()))
90-
require.True(b.BoundedBy(a.StartTime(), a.EndTime()))
89+
require.True(BoundedBy(a.StartTime(), a.EndTime(), b.StartTime(), b.EndTime()))
90+
require.True(BoundedBy(b.StartTime(), b.EndTime(), a.StartTime(), a.EndTime()))
9191
}

0 commit comments

Comments
 (0)