Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: ignore forkchoice invalidations if latestValidHash not found #6361

Merged
merged 4 commits into from
Jan 27, 2024

Conversation

g11tech
Copy link
Contributor

@g11tech g11tech commented Jan 27, 2024

Handle nullish LVH (latest valid hash), either null or not found, as if the LVH is "unknown" rather than the more strict interpretation that the LVH "doesn't exist".

In the case that the LVH "doesn't exist" it makes sense to mark the ancestor chain as invalid. This was the thinking behind our behavior befor this PR.

However, the spec says that the EL can return a null LVH if the EL "cannot determine" the LVH. In practice, a lazy (or buggy) EL may return null LVH, or even an LVH that doesn't exist in our fork choice.

To more robustly handle this case, as well as the case where the returned LVH cannot be found, we should simply throw and move on, rather than invalidating any ancestors.

If latest valid hash is not found (owing to odd LVH from the EL, null or otherwise), we shouldn't invalidate any blocks in the fork choice, since without latestValidHash, we might incorrectly be invalidating a (valid) parent block of the invalid payload being imported.

This was found based on an incident revolving around besu response:

ref:

@g11tech g11tech requested a review from a team as a code owner January 27, 2024 10:28
Copy link

codecov bot commented Jan 27, 2024

Codecov Report

Merging #6361 (2532f6d) into unstable (347c95f) will decrease coverage by 0.01%.
The diff coverage is n/a.

❗ Current head 2532f6d differs from pull request most recent head a30838d. Consider uploading reports for the commit a30838d to get more accurate results

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #6361      +/-   ##
============================================
- Coverage     60.14%   60.13%   -0.01%     
============================================
  Files           407      407              
  Lines         46485    46487       +2     
  Branches       1545     1545              
============================================
  Hits          27957    27957              
- Misses        18496    18498       +2     
  Partials         32       32              

Copy link
Contributor

github-actions bot commented Jan 27, 2024

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 7d679fb Previous: 347c95f Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 596.45 us/op 722.59 us/op 0.83
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 86.997 us/op 96.758 us/op 0.90
BLS verify - blst-native 1.3276 ms/op 1.3328 ms/op 1.00
BLS verifyMultipleSignatures 3 - blst-native 2.7875 ms/op 2.7833 ms/op 1.00
BLS verifyMultipleSignatures 8 - blst-native 6.1454 ms/op 6.2859 ms/op 0.98
BLS verifyMultipleSignatures 32 - blst-native 22.458 ms/op 22.883 ms/op 0.98
BLS verifyMultipleSignatures 64 - blst-native 44.244 ms/op 43.459 ms/op 1.02
BLS verifyMultipleSignatures 128 - blst-native 87.971 ms/op 86.054 ms/op 1.02
BLS deserializing 10000 signatures 951.23 ms/op 922.88 ms/op 1.03
BLS deserializing 100000 signatures 9.2732 s/op 8.8743 s/op 1.04
BLS verifyMultipleSignatures - same message - 3 - blst-native 1.3260 ms/op 1.3352 ms/op 0.99
BLS verifyMultipleSignatures - same message - 8 - blst-native 1.5017 ms/op 1.5108 ms/op 0.99
BLS verifyMultipleSignatures - same message - 32 - blst-native 2.3083 ms/op 2.3470 ms/op 0.98
BLS verifyMultipleSignatures - same message - 64 - blst-native 4.4980 ms/op 3.4336 ms/op 1.31
BLS verifyMultipleSignatures - same message - 128 - blst-native 7.5750 ms/op 5.7351 ms/op 1.32
BLS aggregatePubkeys 32 - blst-native 28.077 us/op 26.018 us/op 1.08
BLS aggregatePubkeys 128 - blst-native 101.34 us/op 101.11 us/op 1.00
getAttestationsForBlock 46.423 ms/op 53.268 ms/op 0.87
getSlashingsAndExits - default max 185.13 us/op 138.31 us/op 1.34
getSlashingsAndExits - 2k 417.55 us/op 429.03 us/op 0.97
proposeBlockBody type=full, size=empty 5.1331 ms/op 5.6122 ms/op 0.91
isKnown best case - 1 super set check 373.00 ns/op 332.00 ns/op 1.12
isKnown normal case - 2 super set checks 369.00 ns/op 399.00 ns/op 0.92
isKnown worse case - 16 super set checks 368.00 ns/op 324.00 ns/op 1.14
CheckpointStateCache - add get delete 5.8510 us/op 6.0900 us/op 0.96
validate api signedAggregateAndProof - struct 2.8110 ms/op 2.8143 ms/op 1.00
validate gossip signedAggregateAndProof - struct 2.7931 ms/op 2.8536 ms/op 0.98
validate gossip attestation - vc 640000 1.3656 ms/op 1.4284 ms/op 0.96
batch validate gossip attestation - vc 640000 - chunk 32 162.96 us/op 174.69 us/op 0.93
batch validate gossip attestation - vc 640000 - chunk 64 144.02 us/op 150.63 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 128 132.17 us/op 137.26 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 256 125.44 us/op 135.77 us/op 0.92
pickEth1Vote - no votes 1.1478 ms/op 1.3759 ms/op 0.83
pickEth1Vote - max votes 9.8957 ms/op 10.105 ms/op 0.98
pickEth1Vote - Eth1Data hashTreeRoot value x2048 18.730 ms/op 23.734 ms/op 0.79
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 25.438 ms/op 30.175 ms/op 0.84
pickEth1Vote - Eth1Data fastSerialize value x2048 635.67 us/op 657.61 us/op 0.97
pickEth1Vote - Eth1Data fastSerialize tree x2048 6.0215 ms/op 5.2278 ms/op 1.15
bytes32 toHexString 494.00 ns/op 591.00 ns/op 0.84
bytes32 Buffer.toString(hex) 302.00 ns/op 291.00 ns/op 1.04
bytes32 Buffer.toString(hex) from Uint8Array 441.00 ns/op 475.00 ns/op 0.93
bytes32 Buffer.toString(hex) + 0x 304.00 ns/op 305.00 ns/op 1.00
Object access 1 prop 0.15400 ns/op 0.19600 ns/op 0.79
Map access 1 prop 0.14100 ns/op 0.15600 ns/op 0.90
Object get x1000 6.8390 ns/op 7.9550 ns/op 0.86
Map get x1000 0.72200 ns/op 0.82200 ns/op 0.88
Object set x1000 49.116 ns/op 63.789 ns/op 0.77
Map set x1000 38.701 ns/op 49.297 ns/op 0.79
Return object 10000 times 0.23040 ns/op 0.24990 ns/op 0.92
Throw Error 10000 times 3.6233 us/op 4.0902 us/op 0.89
fastMsgIdFn sha256 / 200 bytes 3.1930 us/op 3.5520 us/op 0.90
fastMsgIdFn h32 xxhash / 200 bytes 266.00 ns/op 352.00 ns/op 0.76
fastMsgIdFn h64 xxhash / 200 bytes 334.00 ns/op 383.00 ns/op 0.87
fastMsgIdFn sha256 / 1000 bytes 11.391 us/op 11.855 us/op 0.96
fastMsgIdFn h32 xxhash / 1000 bytes 421.00 ns/op 491.00 ns/op 0.86
fastMsgIdFn h64 xxhash / 1000 bytes 420.00 ns/op 498.00 ns/op 0.84
fastMsgIdFn sha256 / 10000 bytes 103.31 us/op 108.72 us/op 0.95
fastMsgIdFn h32 xxhash / 10000 bytes 1.9140 us/op 2.0690 us/op 0.93
fastMsgIdFn h64 xxhash / 10000 bytes 1.3100 us/op 1.3870 us/op 0.94
send data - 1000 256B messages 20.520 ms/op 19.095 ms/op 1.07
send data - 1000 512B messages 25.268 ms/op 26.374 ms/op 0.96
send data - 1000 1024B messages 39.849 ms/op 45.245 ms/op 0.88
send data - 1000 1200B messages 38.430 ms/op 42.348 ms/op 0.91
send data - 1000 2048B messages 47.436 ms/op 49.390 ms/op 0.96
send data - 1000 4096B messages 26.577 ms/op 44.306 ms/op 0.60
send data - 1000 16384B messages 116.35 ms/op 114.22 ms/op 1.02
send data - 1000 65536B messages 446.60 ms/op 530.70 ms/op 0.84
enrSubnets - fastDeserialize 64 bits 1.1930 us/op 1.6700 us/op 0.71
enrSubnets - ssz BitVector 64 bits 403.00 ns/op 494.00 ns/op 0.82
enrSubnets - fastDeserialize 4 bits 164.00 ns/op 219.00 ns/op 0.75
enrSubnets - ssz BitVector 4 bits 398.00 ns/op 521.00 ns/op 0.76
prioritizePeers score -10:0 att 32-0.1 sync 2-0 97.360 us/op 123.26 us/op 0.79
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 122.05 us/op 144.24 us/op 0.85
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 161.58 us/op 217.84 us/op 0.74
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 285.46 us/op 347.19 us/op 0.82
prioritizePeers score 0:0 att 64-1 sync 4-1 332.57 us/op 424.19 us/op 0.78
array of 16000 items push then shift 1.5698 us/op 1.6859 us/op 0.93
LinkedList of 16000 items push then shift 8.6270 ns/op 9.3160 ns/op 0.93
array of 16000 items push then pop 79.966 ns/op 110.80 ns/op 0.72
LinkedList of 16000 items push then pop 8.3970 ns/op 9.3790 ns/op 0.90
array of 24000 items push then shift 2.3293 us/op 2.6439 us/op 0.88
LinkedList of 24000 items push then shift 8.6070 ns/op 9.6900 ns/op 0.89
array of 24000 items push then pop 102.36 ns/op 149.05 ns/op 0.69
LinkedList of 24000 items push then pop 8.6730 ns/op 9.2440 ns/op 0.94
intersect bitArray bitLen 8 6.2470 ns/op 6.8280 ns/op 0.91
intersect array and set length 8 61.507 ns/op 77.932 ns/op 0.79
intersect bitArray bitLen 128 32.800 ns/op 35.240 ns/op 0.93
intersect array and set length 128 835.77 ns/op 1.0971 us/op 0.76
bitArray.getTrueBitIndexes() bitLen 128 1.4260 us/op 1.7930 us/op 0.80
bitArray.getTrueBitIndexes() bitLen 248 2.4420 us/op 2.9860 us/op 0.82
bitArray.getTrueBitIndexes() bitLen 512 4.6790 us/op 6.5080 us/op 0.72
Buffer.concat 32 items 984.00 ns/op 1.1160 us/op 0.88
Uint8Array.set 32 items 1.9710 us/op 2.3520 us/op 0.84
Set add up to 64 items then delete first 4.1048 us/op 5.2076 us/op 0.79
OrderedSet add up to 64 items then delete first 5.1720 us/op 7.1179 us/op 0.73
Set add up to 64 items then delete last 4.7906 us/op 5.5942 us/op 0.86
OrderedSet add up to 64 items then delete last 5.7597 us/op 7.1236 us/op 0.81
Set add up to 64 items then delete middle 4.7568 us/op 5.5997 us/op 0.85
OrderedSet add up to 64 items then delete middle 6.9773 us/op 8.4796 us/op 0.82
Set add up to 128 items then delete first 9.5789 us/op 11.318 us/op 0.85
OrderedSet add up to 128 items then delete first 12.270 us/op 15.689 us/op 0.78
Set add up to 128 items then delete last 9.4729 us/op 11.221 us/op 0.84
OrderedSet add up to 128 items then delete last 11.499 us/op 14.383 us/op 0.80
Set add up to 128 items then delete middle 9.3849 us/op 11.042 us/op 0.85
OrderedSet add up to 128 items then delete middle 16.725 us/op 20.532 us/op 0.81
Set add up to 256 items then delete first 19.090 us/op 22.882 us/op 0.83
OrderedSet add up to 256 items then delete first 24.995 us/op 31.882 us/op 0.78
Set add up to 256 items then delete last 18.756 us/op 22.107 us/op 0.85
OrderedSet add up to 256 items then delete last 23.303 us/op 29.719 us/op 0.78
Set add up to 256 items then delete middle 19.773 us/op 22.161 us/op 0.89
OrderedSet add up to 256 items then delete middle 46.164 us/op 54.484 us/op 0.85
transfer serialized Status (84 B) 1.7660 us/op 2.0130 us/op 0.88
copy serialized Status (84 B) 1.3420 us/op 1.6180 us/op 0.83
transfer serialized SignedVoluntaryExit (112 B) 1.8660 us/op 2.2670 us/op 0.82
copy serialized SignedVoluntaryExit (112 B) 1.3870 us/op 1.6440 us/op 0.84
transfer serialized ProposerSlashing (416 B) 2.1610 us/op 2.7350 us/op 0.79
copy serialized ProposerSlashing (416 B) 1.9660 us/op 2.5840 us/op 0.76
transfer serialized Attestation (485 B) 2.4360 us/op 2.9000 us/op 0.84
copy serialized Attestation (485 B) 2.2110 us/op 2.3510 us/op 0.94
transfer serialized AttesterSlashing (33232 B) 2.1670 us/op 2.8740 us/op 0.75
copy serialized AttesterSlashing (33232 B) 5.5850 us/op 7.4380 us/op 0.75
transfer serialized Small SignedBeaconBlock (128000 B) 2.6790 us/op 3.4610 us/op 0.77
copy serialized Small SignedBeaconBlock (128000 B) 14.737 us/op 20.811 us/op 0.71
transfer serialized Avg SignedBeaconBlock (200000 B) 2.5230 us/op 3.9300 us/op 0.64
copy serialized Avg SignedBeaconBlock (200000 B) 62.469 us/op 28.205 us/op 2.21
transfer serialized BlobsSidecar (524380 B) 2.7630 us/op 4.2440 us/op 0.65
copy serialized BlobsSidecar (524380 B) 95.491 us/op 86.395 us/op 1.11
transfer serialized Big SignedBeaconBlock (1000000 B) 3.4490 us/op 4.1960 us/op 0.82
copy serialized Big SignedBeaconBlock (1000000 B) 137.01 us/op 198.17 us/op 0.69
pass gossip attestations to forkchoice per slot 3.7727 ms/op 4.2027 ms/op 0.90
forkChoice updateHead vc 100000 bc 64 eq 0 664.34 us/op 861.94 us/op 0.77
forkChoice updateHead vc 600000 bc 64 eq 0 4.1427 ms/op 4.4494 ms/op 0.93
forkChoice updateHead vc 1000000 bc 64 eq 0 6.8166 ms/op 7.9376 ms/op 0.86
forkChoice updateHead vc 600000 bc 320 eq 0 4.3845 ms/op 4.7647 ms/op 0.92
forkChoice updateHead vc 600000 bc 1200 eq 0 4.2652 ms/op 4.5789 ms/op 0.93
forkChoice updateHead vc 600000 bc 7200 eq 0 4.9990 ms/op 5.6727 ms/op 0.88
forkChoice updateHead vc 600000 bc 64 eq 1000 11.181 ms/op 11.947 ms/op 0.94
forkChoice updateHead vc 600000 bc 64 eq 10000 11.944 ms/op 12.994 ms/op 0.92
forkChoice updateHead vc 600000 bc 64 eq 300000 16.605 ms/op 18.660 ms/op 0.89
computeDeltas 500000 validators 300 proto nodes 6.4113 ms/op 7.0591 ms/op 0.91
computeDeltas 500000 validators 1200 proto nodes 6.3435 ms/op 7.1696 ms/op 0.88
computeDeltas 500000 validators 7200 proto nodes 6.2498 ms/op 7.1191 ms/op 0.88
computeDeltas 750000 validators 300 proto nodes 9.4848 ms/op 10.504 ms/op 0.90
computeDeltas 750000 validators 1200 proto nodes 9.6154 ms/op 10.757 ms/op 0.89
computeDeltas 750000 validators 7200 proto nodes 9.6443 ms/op 10.747 ms/op 0.90
computeDeltas 1400000 validators 300 proto nodes 17.978 ms/op 20.495 ms/op 0.88
computeDeltas 1400000 validators 1200 proto nodes 18.727 ms/op 21.757 ms/op 0.86
computeDeltas 1400000 validators 7200 proto nodes 18.408 ms/op 20.580 ms/op 0.89
computeDeltas 2100000 validators 300 proto nodes 28.400 ms/op 30.415 ms/op 0.93
computeDeltas 2100000 validators 1200 proto nodes 28.867 ms/op 29.027 ms/op 0.99
computeDeltas 2100000 validators 7200 proto nodes 28.238 ms/op 28.905 ms/op 0.98
altair processAttestation - 250000 vs - 7PWei normalcase 2.1567 ms/op 2.1593 ms/op 1.00
altair processAttestation - 250000 vs - 7PWei worstcase 3.3365 ms/op 3.3170 ms/op 1.01
altair processAttestation - setStatus - 1/6 committees join 181.18 us/op 157.36 us/op 1.15
altair processAttestation - setStatus - 1/3 committees join 341.39 us/op 301.90 us/op 1.13
altair processAttestation - setStatus - 1/2 committees join 457.54 us/op 391.35 us/op 1.17
altair processAttestation - setStatus - 2/3 committees join 578.42 us/op 492.86 us/op 1.17
altair processAttestation - setStatus - 4/5 committees join 778.42 us/op 670.76 us/op 1.16
altair processAttestation - setStatus - 100% committees join 926.06 us/op 770.82 us/op 1.20
altair processBlock - 250000 vs - 7PWei normalcase 10.302 ms/op 10.988 ms/op 0.94
altair processBlock - 250000 vs - 7PWei normalcase hashState 34.845 ms/op 38.498 ms/op 0.91
altair processBlock - 250000 vs - 7PWei worstcase 38.518 ms/op 40.577 ms/op 0.95
altair processBlock - 250000 vs - 7PWei worstcase hashState 89.833 ms/op 100.67 ms/op 0.89
phase0 processBlock - 250000 vs - 7PWei normalcase 2.8251 ms/op 2.7709 ms/op 1.02
phase0 processBlock - 250000 vs - 7PWei worstcase 29.672 ms/op 28.788 ms/op 1.03
altair processEth1Data - 250000 vs - 7PWei normalcase 482.64 us/op 571.85 us/op 0.84
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 11.965 us/op 18.142 us/op 0.66
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 61.475 us/op 91.578 us/op 0.67
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 13.465 us/op 31.754 us/op 0.42
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 9.7660 us/op 17.677 us/op 0.55
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 129.41 us/op 265.38 us/op 0.49
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.0237 ms/op 2.2133 ms/op 0.46
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.5272 ms/op 2.8236 ms/op 0.54
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7472 ms/op 2.9016 ms/op 0.60
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.0617 ms/op 3.7808 ms/op 0.81
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.6313 ms/op 2.6128 ms/op 1.01
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.3338 ms/op 5.4213 ms/op 0.98
Tree 40 250000 create 347.60 ms/op 351.94 ms/op 0.99
Tree 40 250000 get(125000) 203.88 ns/op 199.87 ns/op 1.02
Tree 40 250000 set(125000) 992.98 ns/op 982.99 ns/op 1.01
Tree 40 250000 toArray() 18.685 ms/op 18.504 ms/op 1.01
Tree 40 250000 iterate all - toArray() + loop 19.137 ms/op 18.822 ms/op 1.02
Tree 40 250000 iterate all - get(i) 67.543 ms/op 65.818 ms/op 1.03
MutableVector 250000 create 13.812 ms/op 20.870 ms/op 0.66
MutableVector 250000 get(125000) 6.3310 ns/op 6.7440 ns/op 0.94
MutableVector 250000 set(125000) 270.98 ns/op 255.99 ns/op 1.06
MutableVector 250000 toArray() 3.4971 ms/op 4.0562 ms/op 0.86
MutableVector 250000 iterate all - toArray() + loop 3.1922 ms/op 4.2850 ms/op 0.74
MutableVector 250000 iterate all - get(i) 1.5452 ms/op 1.4753 ms/op 1.05
Array 250000 create 3.0367 ms/op 3.1919 ms/op 0.95
Array 250000 clone - spread 1.2298 ms/op 1.2823 ms/op 0.96
Array 250000 get(125000) 1.0320 ns/op 1.0160 ns/op 1.02
Array 250000 set(125000) 4.1460 ns/op 3.9810 ns/op 1.04
Array 250000 iterate all - loop 166.69 us/op 159.69 us/op 1.04
effectiveBalanceIncrements clone Uint8Array 300000 26.238 us/op 28.110 us/op 0.93
effectiveBalanceIncrements clone MutableVector 300000 351.00 ns/op 362.00 ns/op 0.97
effectiveBalanceIncrements rw all Uint8Array 300000 207.23 us/op 192.58 us/op 1.08
effectiveBalanceIncrements rw all MutableVector 300000 80.933 ms/op 81.242 ms/op 1.00
phase0 afterProcessEpoch - 250000 vs - 7PWei 114.52 ms/op 111.23 ms/op 1.03
phase0 beforeProcessEpoch - 250000 vs - 7PWei 35.290 ms/op 55.491 ms/op 0.64
altair processEpoch - mainnet_e81889 498.94 ms/op 537.02 ms/op 0.93
mainnet_e81889 - altair beforeProcessEpoch 79.275 ms/op 84.763 ms/op 0.94
mainnet_e81889 - altair processJustificationAndFinalization 15.297 us/op 20.237 us/op 0.76
mainnet_e81889 - altair processInactivityUpdates 5.3924 ms/op 5.7886 ms/op 0.93
mainnet_e81889 - altair processRewardsAndPenalties 63.661 ms/op 77.459 ms/op 0.82
mainnet_e81889 - altair processRegistryUpdates 2.3650 us/op 3.9650 us/op 0.60
mainnet_e81889 - altair processSlashings 377.00 ns/op 622.00 ns/op 0.61
mainnet_e81889 - altair processEth1DataReset 435.00 ns/op 709.00 ns/op 0.61
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.4215 ms/op 2.6031 ms/op 0.55
mainnet_e81889 - altair processSlashingsReset 3.7170 us/op 6.2730 us/op 0.59
mainnet_e81889 - altair processRandaoMixesReset 5.0710 us/op 9.1570 us/op 0.55
mainnet_e81889 - altair processHistoricalRootsUpdate 830.00 ns/op 1.0640 us/op 0.78
mainnet_e81889 - altair processParticipationFlagUpdates 2.1320 us/op 2.8490 us/op 0.75
mainnet_e81889 - altair processSyncCommitteeUpdates 672.00 ns/op 1.0840 us/op 0.62
mainnet_e81889 - altair afterProcessEpoch 120.17 ms/op 119.25 ms/op 1.01
capella processEpoch - mainnet_e217614 2.1038 s/op 2.2736 s/op 0.93
mainnet_e217614 - capella beforeProcessEpoch 478.45 ms/op 534.41 ms/op 0.90
mainnet_e217614 - capella processJustificationAndFinalization 18.715 us/op 26.822 us/op 0.70
mainnet_e217614 - capella processInactivityUpdates 19.796 ms/op 23.000 ms/op 0.86
mainnet_e217614 - capella processRewardsAndPenalties 408.30 ms/op 442.98 ms/op 0.92
mainnet_e217614 - capella processRegistryUpdates 16.157 us/op 31.834 us/op 0.51
mainnet_e217614 - capella processSlashings 594.00 ns/op 528.00 ns/op 1.13
mainnet_e217614 - capella processEth1DataReset 383.00 ns/op 569.00 ns/op 0.67
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.7365 ms/op 4.8355 ms/op 0.98
mainnet_e217614 - capella processSlashingsReset 3.2520 us/op 3.4250 us/op 0.95
mainnet_e217614 - capella processRandaoMixesReset 4.1530 us/op 6.4830 us/op 0.64
mainnet_e217614 - capella processHistoricalRootsUpdate 690.00 ns/op 797.00 ns/op 0.87
mainnet_e217614 - capella processParticipationFlagUpdates 2.2390 us/op 3.9620 us/op 0.57
mainnet_e217614 - capella afterProcessEpoch 318.61 ms/op 344.59 ms/op 0.92
phase0 processEpoch - mainnet_e58758 430.03 ms/op 595.86 ms/op 0.72
mainnet_e58758 - phase0 beforeProcessEpoch 119.19 ms/op 182.68 ms/op 0.65
mainnet_e58758 - phase0 processJustificationAndFinalization 14.519 us/op 27.981 us/op 0.52
mainnet_e58758 - phase0 processRewardsAndPenalties 51.620 ms/op 64.696 ms/op 0.80
mainnet_e58758 - phase0 processRegistryUpdates 9.4130 us/op 21.185 us/op 0.44
mainnet_e58758 - phase0 processSlashings 443.00 ns/op 1.9290 us/op 0.23
mainnet_e58758 - phase0 processEth1DataReset 376.00 ns/op 1.0020 us/op 0.38
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1519 ms/op 1.8190 ms/op 0.63
mainnet_e58758 - phase0 processSlashingsReset 3.0330 us/op 6.0300 us/op 0.50
mainnet_e58758 - phase0 processRandaoMixesReset 3.6110 us/op 6.8410 us/op 0.53
mainnet_e58758 - phase0 processHistoricalRootsUpdate 406.00 ns/op 962.00 ns/op 0.42
mainnet_e58758 - phase0 processParticipationRecordUpdates 3.2980 us/op 7.2490 us/op 0.45
mainnet_e58758 - phase0 afterProcessEpoch 92.268 ms/op 108.81 ms/op 0.85
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.4433 ms/op 1.8550 ms/op 0.78
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4460 ms/op 2.0758 ms/op 0.70
altair processInactivityUpdates - 250000 normalcase 23.247 ms/op 32.593 ms/op 0.71
altair processInactivityUpdates - 250000 worstcase 22.526 ms/op 32.492 ms/op 0.69
phase0 processRegistryUpdates - 250000 normalcase 8.2600 us/op 14.869 us/op 0.56
phase0 processRegistryUpdates - 250000 badcase_full_deposits 326.41 us/op 542.61 us/op 0.60
phase0 processRegistryUpdates - 250000 worstcase 0.5 123.84 ms/op 176.28 ms/op 0.70
altair processRewardsAndPenalties - 250000 normalcase 55.826 ms/op 69.906 ms/op 0.80
altair processRewardsAndPenalties - 250000 worstcase 53.765 ms/op 52.134 ms/op 1.03
phase0 getAttestationDeltas - 250000 normalcase 8.5124 ms/op 13.827 ms/op 0.62
phase0 getAttestationDeltas - 250000 worstcase 8.9207 ms/op 12.032 ms/op 0.74
phase0 processSlashings - 250000 worstcase 81.286 us/op 110.86 us/op 0.73
altair processSyncCommitteeUpdates - 250000 154.18 ms/op 177.72 ms/op 0.87
BeaconState.hashTreeRoot - No change 338.00 ns/op 796.00 ns/op 0.42
BeaconState.hashTreeRoot - 1 full validator 159.51 us/op 139.94 us/op 1.14
BeaconState.hashTreeRoot - 32 full validator 1.6930 ms/op 1.4873 ms/op 1.14
BeaconState.hashTreeRoot - 512 full validator 17.786 ms/op 16.137 ms/op 1.10
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 184.68 us/op 163.47 us/op 1.13
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.0364 ms/op 2.2695 ms/op 0.90
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 30.824 ms/op 35.146 ms/op 0.88
BeaconState.hashTreeRoot - 1 balances 133.51 us/op 201.62 us/op 0.66
BeaconState.hashTreeRoot - 32 balances 1.4343 ms/op 1.2531 ms/op 1.14
BeaconState.hashTreeRoot - 512 balances 13.614 ms/op 14.937 ms/op 0.91
BeaconState.hashTreeRoot - 250000 balances 220.30 ms/op 274.01 ms/op 0.80
aggregationBits - 2048 els - zipIndexesInBitList 16.607 us/op 33.627 us/op 0.49
byteArrayEquals 32 73.255 ns/op 86.701 ns/op 0.84
Buffer.compare 32 54.435 ns/op 59.687 ns/op 0.91
byteArrayEquals 1024 2.0001 us/op 2.3341 us/op 0.86
Buffer.compare 1024 70.446 ns/op 80.318 ns/op 0.88
byteArrayEquals 16384 31.860 us/op 36.494 us/op 0.87
Buffer.compare 16384 234.72 ns/op 320.56 ns/op 0.73
byteArrayEquals 123687377 247.37 ms/op 273.56 ms/op 0.90
Buffer.compare 123687377 6.0340 ms/op 13.893 ms/op 0.43
byteArrayEquals 32 - diff last byte 72.754 ns/op 87.039 ns/op 0.84
Buffer.compare 32 - diff last byte 55.860 ns/op 62.817 ns/op 0.89
byteArrayEquals 1024 - diff last byte 2.0597 us/op 2.2008 us/op 0.94
Buffer.compare 1024 - diff last byte 71.219 ns/op 76.016 ns/op 0.94
byteArrayEquals 16384 - diff last byte 32.840 us/op 34.767 us/op 0.94
Buffer.compare 16384 - diff last byte 281.34 ns/op 284.68 ns/op 0.99
byteArrayEquals 123687377 - diff last byte 245.99 ms/op 297.92 ms/op 0.83
Buffer.compare 123687377 - diff last byte 6.1112 ms/op 12.219 ms/op 0.50
byteArrayEquals 32 - random bytes 5.3540 ns/op 6.8880 ns/op 0.78
Buffer.compare 32 - random bytes 60.844 ns/op 70.147 ns/op 0.87
byteArrayEquals 1024 - random bytes 5.1750 ns/op 7.2690 ns/op 0.71
Buffer.compare 1024 - random bytes 59.610 ns/op 74.204 ns/op 0.80
byteArrayEquals 16384 - random bytes 5.1690 ns/op 7.4860 ns/op 0.69
Buffer.compare 16384 - random bytes 59.583 ns/op 69.102 ns/op 0.86
byteArrayEquals 123687377 - random bytes 8.4100 ns/op 13.880 ns/op 0.61
Buffer.compare 123687377 - random bytes 63.270 ns/op 82.060 ns/op 0.77
regular array get 100000 times 44.023 us/op 51.697 us/op 0.85
wrappedArray get 100000 times 44.102 us/op 50.954 us/op 0.87
arrayWithProxy get 100000 times 14.242 ms/op 16.826 ms/op 0.85
ssz.Root.equals 53.301 ns/op 59.236 ns/op 0.90
byteArrayEquals 52.627 ns/op 58.373 ns/op 0.90
Buffer.compare 10.769 ns/op 13.300 ns/op 0.81
shuffle list - 16384 els 6.7137 ms/op 8.2760 ms/op 0.81
shuffle list - 250000 els 97.538 ms/op 110.18 ms/op 0.89
processSlot - 1 slots 16.538 us/op 27.185 us/op 0.61
processSlot - 32 slots 4.1712 ms/op 4.3815 ms/op 0.95
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 60.750 ms/op 74.242 ms/op 0.82
getCommitteeAssignments - req 1 vs - 250000 vc 2.4923 ms/op 2.6551 ms/op 0.94
getCommitteeAssignments - req 100 vs - 250000 vc 3.6792 ms/op 4.0101 ms/op 0.92
getCommitteeAssignments - req 1000 vs - 250000 vc 4.0429 ms/op 4.5061 ms/op 0.90
findModifiedValidators - 10000 modified validators 531.43 ms/op 688.73 ms/op 0.77
findModifiedValidators - 1000 modified validators 425.45 ms/op 516.03 ms/op 0.82
findModifiedValidators - 100 modified validators 409.38 ms/op 493.78 ms/op 0.83
findModifiedValidators - 10 modified validators 421.01 ms/op 527.71 ms/op 0.80
findModifiedValidators - 1 modified validators 402.62 ms/op 487.03 ms/op 0.83
findModifiedValidators - no difference 432.63 ms/op 492.87 ms/op 0.88
compare ViewDUs 4.3947 s/op 5.7846 s/op 0.76
compare each validator Uint8Array 1.7735 s/op 2.2636 s/op 0.78
compare ViewDU to Uint8Array 1.1017 s/op 1.6141 s/op 0.68
migrate state 1000000 validators, 24 modified, 0 new 804.83 ms/op 1.0397 s/op 0.77
migrate state 1000000 validators, 1700 modified, 1000 new 1.1203 s/op 1.3872 s/op 0.81
migrate state 1000000 validators, 3400 modified, 2000 new 1.3664 s/op 1.5850 s/op 0.86
migrate state 1500000 validators, 24 modified, 0 new 808.30 ms/op 859.07 ms/op 0.94
migrate state 1500000 validators, 1700 modified, 1000 new 1.1132 s/op 1.1223 s/op 0.99
migrate state 1500000 validators, 3400 modified, 2000 new 1.3370 s/op 1.5738 s/op 0.85
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.0800 ns/op 4.7600 ns/op 0.86
state getBlockRootAtSlot - 250000 vs - 7PWei 926.32 ns/op 788.76 ns/op 1.17
computeProposers - vc 250000 9.6642 ms/op 10.618 ms/op 0.91
computeEpochShuffling - vc 250000 97.845 ms/op 107.36 ms/op 0.91
getNextSyncCommittee - vc 250000 159.75 ms/op 184.79 ms/op 0.86
computeSigningRoot for AttestationData 31.139 us/op 31.233 us/op 1.00
hash AttestationData serialized data then Buffer.toString(base64) 2.1982 us/op 2.3821 us/op 0.92
toHexString serialized data 1.0498 us/op 1.2198 us/op 0.86
Buffer.toString(base64) 229.01 ns/op 260.23 ns/op 0.88

by benchmarkbot/action

@g11tech g11tech enabled auto-merge (squash) January 27, 2024 17:03
@g11tech g11tech merged commit 6adbd27 into unstable Jan 27, 2024
15 of 16 checks passed
@g11tech g11tech deleted the handle-zero-lvh branch January 27, 2024 17:07
philknows pushed a commit that referenced this pull request Jan 30, 2024
)

* fix: ignore forkchoice invalidations if latestValidHash not found

* rename for better understanding

* update the lvh search start index

* apply feedback
philknows added a commit that referenced this pull request Feb 7, 2024
* v1.15.1

* fix: ignore stale keystore lockfiles (#6363)

* fix: ignore stale keystore lockfiles

* Update error message if lockfile is already acquired

* Update keymanager lockfile e2e tests

* fix: ignore forkchoice invalidations if latestValidHash not found (#6361)

* fix: ignore forkchoice invalidations if latestValidHash not found

* rename for better understanding

* update the lvh search start index

* apply feedback

* fix: parse --blindedLocal flag value as boolean (#6403)

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>
Co-authored-by: g11tech <develop@g11tech.io>
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.16.0 🎉

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.

2 participants