Skip to content

Handle invalid persisted ENR - #4481

Merged
wemeetagain merged 1 commit into
unstablefrom
dapplion/parse-enr
Aug 25, 2022
Merged

Handle invalid persisted ENR#4481
wemeetagain merged 1 commit into
unstablefrom
dapplion/parse-enr

Conversation

@dapplion

Copy link
Copy Markdown
Contributor

Motivation

Description

Wrap parsing ENR with try / catch, create new one if invalid

Closes #4082

@dapplion
dapplion requested a review from a team as a code owner August 25, 2022 11:13
@github-actions

Copy link
Copy Markdown
Contributor

鈿狅笍 Performance Alert 鈿狅笍

Possible performance regression was detected for some benchmarks.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold.

Benchmark suite Current: 9d9a28f Previous: d78131b Ratio
bytes32 toHexString 22.423 us/op 978.00 ns/op 22.93
Full benchmark results
Benchmark suite Current: 9d9a28f Previous: d78131b Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.4164 ms/op 2.3694 ms/op 1.02
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 76.049 us/op 67.100 us/op 1.13
BLS verify - blst-native 2.0148 ms/op 2.1659 ms/op 0.93
BLS verifyMultipleSignatures 3 - blst-native 4.0543 ms/op 4.4882 ms/op 0.90
BLS verifyMultipleSignatures 8 - blst-native 8.6997 ms/op 9.6838 ms/op 0.90
BLS verifyMultipleSignatures 32 - blst-native 32.505 ms/op 35.168 ms/op 0.92
BLS aggregatePubkeys 32 - blst-native 46.091 us/op 47.125 us/op 0.98
BLS aggregatePubkeys 128 - blst-native 167.98 us/op 182.43 us/op 0.92
getAttestationsForBlock 202.96 ms/op 159.00 ms/op 1.28
isKnown best case - 1 super set check 492.00 ns/op 475.00 ns/op 1.04
isKnown normal case - 2 super set checks 454.00 ns/op 463.00 ns/op 0.98
isKnown worse case - 16 super set checks 493.00 ns/op 464.00 ns/op 1.06
CheckpointStateCache - add get delete 10.551 us/op 9.1830 us/op 1.15
validate gossip signedAggregateAndProof - struct 4.8666 ms/op 5.0482 ms/op 0.96
validate gossip attestation - struct 2.3922 ms/op 2.3658 ms/op 1.01
altair verifyImport mainnet_s3766816:31 5.2839 s/op 4.7816 s/op 1.11
pickEth1Vote - no votes 2.8271 ms/op 2.1374 ms/op 1.32
pickEth1Vote - max votes 30.042 ms/op 22.293 ms/op 1.35
pickEth1Vote - Eth1Data hashTreeRoot value x2048 15.589 ms/op 13.220 ms/op 1.18
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 29.185 ms/op 23.775 ms/op 1.23
pickEth1Vote - Eth1Data fastSerialize value x2048 2.0581 ms/op 1.5061 ms/op 1.37
pickEth1Vote - Eth1Data fastSerialize tree x2048 19.221 ms/op 12.539 ms/op 1.53
bytes32 toHexString 22.423 us/op 978.00 ns/op 22.93
bytes32 Buffer.toString(hex) 1.1700 us/op 762.00 ns/op 1.54
bytes32 Buffer.toString(hex) from Uint8Array 1.7100 us/op 1.0160 us/op 1.68
bytes32 Buffer.toString(hex) + 0x 1.1850 us/op 783.00 ns/op 1.51
Object access 1 prop 0.80000 ns/op 0.39000 ns/op 2.05
Map access 1 prop 0.40900 ns/op 0.29900 ns/op 1.37
Object get x1000 17.398 ns/op 10.948 ns/op 1.59
Map get x1000 0.97700 ns/op 1.1520 ns/op 0.85
Object set x1000 115.17 ns/op 69.822 ns/op 1.65
Map set x1000 87.091 ns/op 46.877 ns/op 1.86
Return object 10000 times 0.45130 ns/op 0.45090 ns/op 1.00
Throw Error 10000 times 8.2080 us/op 6.1000 us/op 1.35
enrSubnets - fastDeserialize 64 bits 3.5620 us/op 2.8180 us/op 1.26
enrSubnets - ssz BitVector 64 bits 986.00 ns/op 917.00 ns/op 1.08
enrSubnets - fastDeserialize 4 bits 508.00 ns/op 532.00 ns/op 0.95
enrSubnets - ssz BitVector 4 bits 995.00 ns/op 927.00 ns/op 1.07
prioritizePeers score -10:0 att 32-0.1 sync 2-0 118.44 us/op 83.318 us/op 1.42
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 155.70 us/op 127.02 us/op 1.23
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 282.22 us/op 207.26 us/op 1.36
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 602.08 us/op 337.11 us/op 1.79
prioritizePeers score 0:0 att 64-1 sync 4-1 548.54 us/op 405.70 us/op 1.35
RateTracker 1000000 limit, 1 obj count per request 204.09 ns/op 184.79 ns/op 1.10
RateTracker 1000000 limit, 2 obj count per request 147.17 ns/op 136.48 ns/op 1.08
RateTracker 1000000 limit, 4 obj count per request 131.17 ns/op 113.29 ns/op 1.16
RateTracker 1000000 limit, 8 obj count per request 115.12 ns/op 102.09 ns/op 1.13
RateTracker with prune 5.1280 us/op 4.2050 us/op 1.22
array of 16000 items push then shift 5.2811 us/op 51.603 us/op 0.10
LinkedList of 16000 items push then shift 30.551 ns/op 16.252 ns/op 1.88
array of 16000 items push then pop 256.32 ns/op 202.14 ns/op 1.27
LinkedList of 16000 items push then pop 27.914 ns/op 14.631 ns/op 1.91
array of 24000 items push then shift 9.3649 us/op 77.366 us/op 0.12
LinkedList of 24000 items push then shift 29.273 ns/op 21.806 ns/op 1.34
array of 24000 items push then pop 264.47 ns/op 199.13 ns/op 1.33
LinkedList of 24000 items push then pop 25.160 ns/op 15.835 ns/op 1.59
intersect bitArray bitLen 8 14.187 ns/op 10.725 ns/op 1.32
intersect array and set length 8 196.28 ns/op 129.34 ns/op 1.52
intersect bitArray bitLen 128 77.269 ns/op 57.434 ns/op 1.35
intersect array and set length 128 2.4877 us/op 1.8018 us/op 1.38
Buffer.concat 32 items 2.4090 ns/op 2.0260 ns/op 1.19
pass gossip attestations to forkchoice per slot 7.6100 ms/op 5.1920 ms/op 1.47
computeDeltas 3.7871 ms/op 3.5354 ms/op 1.07
computeProposerBoostScoreFromBalances 897.81 us/op 805.88 us/op 1.11
altair processAttestation - 250000 vs - 7PWei normalcase 4.9687 ms/op 3.9291 ms/op 1.26
altair processAttestation - 250000 vs - 7PWei worstcase 7.4291 ms/op 5.7800 ms/op 1.29
altair processAttestation - setStatus - 1/6 committees join 255.47 us/op 179.70 us/op 1.42
altair processAttestation - setStatus - 1/3 committees join 481.29 us/op 345.13 us/op 1.39
altair processAttestation - setStatus - 1/2 committees join 675.30 us/op 494.05 us/op 1.37
altair processAttestation - setStatus - 2/3 committees join 939.96 us/op 648.20 us/op 1.45
altair processAttestation - setStatus - 4/5 committees join 1.3326 ms/op 910.10 us/op 1.46
altair processAttestation - setStatus - 100% committees join 1.5484 ms/op 1.1054 ms/op 1.40
altair processBlock - 250000 vs - 7PWei normalcase 35.774 ms/op 27.990 ms/op 1.28
altair processBlock - 250000 vs - 7PWei normalcase hashState 43.966 ms/op 42.240 ms/op 1.04
altair processBlock - 250000 vs - 7PWei worstcase 93.957 ms/op 92.516 ms/op 1.02
altair processBlock - 250000 vs - 7PWei worstcase hashState 139.76 ms/op 113.29 ms/op 1.23
phase0 processBlock - 250000 vs - 7PWei normalcase 4.2994 ms/op 4.0144 ms/op 1.07
phase0 processBlock - 250000 vs - 7PWei worstcase 55.738 ms/op 52.808 ms/op 1.06
altair processEth1Data - 250000 vs - 7PWei normalcase 1.4042 ms/op 1.0198 ms/op 1.38
Tree 40 250000 create 928.57 ms/op 755.99 ms/op 1.23
Tree 40 250000 get(125000) 340.48 ns/op 237.04 ns/op 1.44
Tree 40 250000 set(125000) 2.9158 us/op 2.1599 us/op 1.35
Tree 40 250000 toArray() 42.137 ms/op 28.413 ms/op 1.48
Tree 40 250000 iterate all - toArray() + loop 39.044 ms/op 32.238 ms/op 1.21
Tree 40 250000 iterate all - get(i) 129.51 ms/op 111.13 ms/op 1.17
MutableVector 250000 create 16.348 ms/op 20.767 ms/op 0.79
MutableVector 250000 get(125000) 13.510 ns/op 11.205 ns/op 1.21
MutableVector 250000 set(125000) 736.51 ns/op 494.04 ns/op 1.49
MutableVector 250000 toArray() 7.8985 ms/op 6.1796 ms/op 1.28
MutableVector 250000 iterate all - toArray() + loop 6.7793 ms/op 6.4553 ms/op 1.05
MutableVector 250000 iterate all - get(i) 3.2828 ms/op 2.7045 ms/op 1.21
Array 250000 create 6.6356 ms/op 6.0323 ms/op 1.10
Array 250000 clone - spread 2.8204 ms/op 2.5360 ms/op 1.11
Array 250000 get(125000) 1.1910 ns/op 1.2120 ns/op 0.98
Array 250000 set(125000) 1.1720 ns/op 1.1850 ns/op 0.99
Array 250000 iterate all - loop 136.16 us/op 157.00 us/op 0.87
effectiveBalanceIncrements clone Uint8Array 300000 71.117 us/op 96.557 us/op 0.74
effectiveBalanceIncrements clone MutableVector 300000 810.00 ns/op 638.00 ns/op 1.27
effectiveBalanceIncrements rw all Uint8Array 300000 289.10 us/op 248.50 us/op 1.16
effectiveBalanceIncrements rw all MutableVector 300000 202.62 ms/op 141.03 ms/op 1.44
phase0 afterProcessEpoch - 250000 vs - 7PWei 184.89 ms/op 190.53 ms/op 0.97
phase0 beforeProcessEpoch - 250000 vs - 7PWei 76.679 ms/op 119.02 ms/op 0.64
altair processEpoch - mainnet_e81889 634.60 ms/op 650.70 ms/op 0.98
mainnet_e81889 - altair beforeProcessEpoch 153.95 ms/op 164.52 ms/op 0.94
mainnet_e81889 - altair processJustificationAndFinalization 76.256 us/op 15.962 us/op 4.78
mainnet_e81889 - altair processInactivityUpdates 12.568 ms/op 8.7953 ms/op 1.43
mainnet_e81889 - altair processRewardsAndPenalties 103.83 ms/op 159.23 ms/op 0.65
mainnet_e81889 - altair processRegistryUpdates 13.966 us/op 2.7160 us/op 5.14
mainnet_e81889 - altair processSlashings 4.0900 us/op 627.00 ns/op 6.52
mainnet_e81889 - altair processEth1DataReset 4.6090 us/op 640.00 ns/op 7.20
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.3336 ms/op 2.0506 ms/op 1.14
mainnet_e81889 - altair processSlashingsReset 27.932 us/op 4.6730 us/op 5.98
mainnet_e81889 - altair processRandaoMixesReset 25.967 us/op 4.3760 us/op 5.93
mainnet_e81889 - altair processHistoricalRootsUpdate 4.1130 us/op 641.00 ns/op 6.42
mainnet_e81889 - altair processParticipationFlagUpdates 16.223 us/op 2.0580 us/op 7.88
mainnet_e81889 - altair processSyncCommitteeUpdates 3.6190 us/op 541.00 ns/op 6.69
mainnet_e81889 - altair afterProcessEpoch 200.24 ms/op 196.78 ms/op 1.02
phase0 processEpoch - mainnet_e58758 599.97 ms/op 620.78 ms/op 0.97
mainnet_e58758 - phase0 beforeProcessEpoch 293.49 ms/op 238.22 ms/op 1.23
mainnet_e58758 - phase0 processJustificationAndFinalization 72.675 us/op 16.820 us/op 4.32
mainnet_e58758 - phase0 processRewardsAndPenalties 87.440 ms/op 137.27 ms/op 0.64
mainnet_e58758 - phase0 processRegistryUpdates 31.518 us/op 7.5160 us/op 4.19
mainnet_e58758 - phase0 processSlashings 3.7240 us/op 565.00 ns/op 6.59
mainnet_e58758 - phase0 processEth1DataReset 3.9340 us/op 611.00 ns/op 6.44
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.1807 ms/op 1.7347 ms/op 1.26
mainnet_e58758 - phase0 processSlashingsReset 17.352 us/op 3.5330 us/op 4.91
mainnet_e58758 - phase0 processRandaoMixesReset 26.797 us/op 4.1640 us/op 6.44
mainnet_e58758 - phase0 processHistoricalRootsUpdate 3.9030 us/op 616.00 ns/op 6.34
mainnet_e58758 - phase0 processParticipationRecordUpdates 24.979 us/op 3.5140 us/op 7.11
mainnet_e58758 - phase0 afterProcessEpoch 165.43 ms/op 162.22 ms/op 1.02
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.2974 ms/op 1.9395 ms/op 1.18
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.6351 ms/op 2.3342 ms/op 1.13
altair processInactivityUpdates - 250000 normalcase 50.627 ms/op 59.336 ms/op 0.85
altair processInactivityUpdates - 250000 worstcase 49.071 ms/op 54.513 ms/op 0.90
phase0 processRegistryUpdates - 250000 normalcase 28.457 us/op 6.0940 us/op 4.67
phase0 processRegistryUpdates - 250000 badcase_full_deposits 524.42 us/op 370.97 us/op 1.41
phase0 processRegistryUpdates - 250000 worstcase 0.5 271.82 ms/op 230.72 ms/op 1.18
altair processRewardsAndPenalties - 250000 normalcase 128.34 ms/op 136.27 ms/op 0.94
altair processRewardsAndPenalties - 250000 worstcase 108.03 ms/op 140.14 ms/op 0.77
phase0 getAttestationDeltas - 250000 normalcase 12.843 ms/op 12.184 ms/op 1.05
phase0 getAttestationDeltas - 250000 worstcase 14.884 ms/op 12.709 ms/op 1.17
phase0 processSlashings - 250000 worstcase 6.7261 ms/op 5.0845 ms/op 1.32
altair processSyncCommitteeUpdates - 250000 335.47 ms/op 296.21 ms/op 1.13
BeaconState.hashTreeRoot - No change 591.00 ns/op 516.00 ns/op 1.15
BeaconState.hashTreeRoot - 1 full validator 84.313 us/op 70.414 us/op 1.20
BeaconState.hashTreeRoot - 32 full validator 844.06 us/op 820.84 us/op 1.03
BeaconState.hashTreeRoot - 512 full validator 9.9521 ms/op 6.9446 ms/op 1.43
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 100.10 us/op 89.871 us/op 1.11
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.4674 ms/op 1.3775 ms/op 1.07
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 19.187 ms/op 16.623 ms/op 1.15
BeaconState.hashTreeRoot - 1 balances 79.811 us/op 70.391 us/op 1.13
BeaconState.hashTreeRoot - 32 balances 655.71 us/op 722.93 us/op 0.91
BeaconState.hashTreeRoot - 512 balances 6.5857 ms/op 7.0720 ms/op 0.93
BeaconState.hashTreeRoot - 250000 balances 106.31 ms/op 103.77 ms/op 1.02
aggregationBits - 2048 els - zipIndexesInBitList 34.817 us/op 27.376 us/op 1.27
regular array get 100000 times 53.488 us/op 68.638 us/op 0.78
wrappedArray get 100000 times 54.965 us/op 62.431 us/op 0.88
arrayWithProxy get 100000 times 32.970 ms/op 29.388 ms/op 1.12
ssz.Root.equals 550.00 ns/op 544.00 ns/op 1.01
byteArrayEquals 541.00 ns/op 457.00 ns/op 1.18
shuffle list - 16384 els 11.716 ms/op 11.359 ms/op 1.03
shuffle list - 250000 els 172.19 ms/op 166.21 ms/op 1.04
processSlot - 1 slots 36.772 us/op 13.292 us/op 2.77
processSlot - 32 slots 2.2134 ms/op 2.0712 ms/op 1.07
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 435.05 us/op 367.42 us/op 1.18
getCommitteeAssignments - req 1 vs - 250000 vc 5.2914 ms/op 5.4690 ms/op 0.97
getCommitteeAssignments - req 100 vs - 250000 vc 7.4397 ms/op 8.0248 ms/op 0.93
getCommitteeAssignments - req 1000 vs - 250000 vc 8.3098 ms/op 8.6153 ms/op 0.96
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 9.7500 ns/op 7.4300 ns/op 1.31
state getBlockRootAtSlot - 250000 vs - 7PWei 1.2733 us/op 1.1372 us/op 1.12
computeProposers - vc 250000 20.357 ms/op 17.264 ms/op 1.18
computeEpochShuffling - vc 250000 175.79 ms/op 171.22 ms/op 1.03
getNextSyncCommittee - vc 250000 325.28 ms/op 288.98 ms/op 1.13

by benchmarkbot/action

@wemeetagain
wemeetagain merged commit 506630e into unstable Aug 25, 2022
@wemeetagain
wemeetagain deleted the dapplion/parse-enr branch August 25, 2022 13:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Better errors when parsing files in CLI start

2 participants