ChainSafe / lodestar

🌟 TypeScript Implementation of Ethereum Consensus
https://lodestar.chainsafe.io
Apache License 2.0
1.19k stars 291 forks source link

feat: set proper user-agent in validator client http requests #7106

Closed nflaig closed 1 month ago

nflaig commented 1 month ago

Motivation

Description

Set proper user-agent in validator client http requests

e.g.

Lodestar/v1.22.0/d0ba6bc

Closes https://github.com/ChainSafe/lodestar/issues/6959

codecov[bot] commented 1 month ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 50.85%. Comparing base (d0ba6bc) to head (d845f50). Report is 2 commits behind head on unstable.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## unstable #7106 +/- ## ========================================= Coverage 50.85% 50.85% ========================================= Files 597 597 Lines 39839 39839 Branches 2065 2066 +1 ========================================= Hits 20260 20260 Misses 19579 19579 ```
github-actions[bot] commented 1 month ago

Performance Report

✔️ no performance regression detected

Full benchmark results | Benchmark suite | Current: d21b20f4f77fa9b30e33421e01482a58004cd9c7 | Previous: d0ba6bc3ccf203307bcbf0087d82749dff81699b | Ratio | |-|-|-|-| | getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 2.1688 ms/op | 1.8246 ms/op | 1.19 | | getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 57.184 us/op | 39.484 us/op | 1.45 | | BLS verify - blst | 890.75 us/op | 862.76 us/op | 1.03 | | BLS verifyMultipleSignatures 3 - blst | 1.2698 ms/op | 1.3026 ms/op | 0.97 | | BLS verifyMultipleSignatures 8 - blst | 2.1442 ms/op | 2.0187 ms/op | 1.06 | | BLS verifyMultipleSignatures 32 - blst | 6.3482 ms/op | 4.5021 ms/op | 1.41 | | BLS verifyMultipleSignatures 64 - blst | 11.788 ms/op | 8.3073 ms/op | 1.42 | | BLS verifyMultipleSignatures 128 - blst | 19.508 ms/op | 16.029 ms/op | 1.22 | | BLS deserializing 10000 signatures | 847.48 ms/op | 613.18 ms/op | 1.38 | | BLS deserializing 100000 signatures | 8.5717 s/op | 6.1956 s/op | 1.38 | | BLS verifyMultipleSignatures - same message - 3 - blst | 1.1740 ms/op | 935.53 us/op | 1.25 | | BLS verifyMultipleSignatures - same message - 8 - blst | 1.3152 ms/op | 1.1021 ms/op | 1.19 | | BLS verifyMultipleSignatures - same message - 32 - blst | 2.2072 ms/op | 1.6972 ms/op | 1.30 | | BLS verifyMultipleSignatures - same message - 64 - blst | 3.2983 ms/op | 2.4111 ms/op | 1.37 | | BLS verifyMultipleSignatures - same message - 128 - blst | 5.1985 ms/op | 3.9896 ms/op | 1.30 | | BLS aggregatePubkeys 32 - blst | 23.697 us/op | 18.562 us/op | 1.28 | | BLS aggregatePubkeys 128 - blst | 84.094 us/op | 64.596 us/op | 1.30 | | notSeenSlots=1 numMissedVotes=1 numBadVotes=10 | 96.322 ms/op | 59.752 ms/op | 1.61 | | notSeenSlots=1 numMissedVotes=0 numBadVotes=4 | 91.536 ms/op | 46.264 ms/op | 1.98 | | notSeenSlots=2 numMissedVotes=1 numBadVotes=10 | 44.350 ms/op | 30.865 ms/op | 1.44 | | getSlashingsAndExits - default max | 107.35 us/op | 68.761 us/op | 1.56 | | getSlashingsAndExits - 2k | 303.63 us/op | 272.14 us/op | 1.12 | | proposeBlockBody type=full, size=empty | 5.7960 ms/op | 5.1558 ms/op | 1.12 | | isKnown best case - 1 super set check | 303.00 ns/op | 447.00 ns/op | 0.68 | | isKnown normal case - 2 super set checks | 305.00 ns/op | 445.00 ns/op | 0.69 | | isKnown worse case - 16 super set checks | 282.00 ns/op | 443.00 ns/op | 0.64 | | InMemoryCheckpointStateCache - add get delete | 2.8130 us/op | 2.5840 us/op | 1.09 | | updateUnfinalizedPubkeys - updating 10 pubkeys | 959.62 us/op | 1.0883 ms/op | 0.88 | | updateUnfinalizedPubkeys - updating 100 pubkeys | 3.2103 ms/op | 2.7963 ms/op | 1.15 | | updateUnfinalizedPubkeys - updating 1000 pubkeys | 52.316 ms/op | 37.082 ms/op | 1.41 | | validate api signedAggregateAndProof - struct | 2.6192 ms/op | 1.8902 ms/op | 1.39 | | validate gossip signedAggregateAndProof - struct | 2.2715 ms/op | 1.9869 ms/op | 1.14 | | validate gossip attestation - vc 640000 | 1.1645 ms/op | 968.93 us/op | 1.20 | | batch validate gossip attestation - vc 640000 - chunk 32 | 148.23 us/op | 116.35 us/op | 1.27 | | batch validate gossip attestation - vc 640000 - chunk 64 | 135.02 us/op | 103.07 us/op | 1.31 | | batch validate gossip attestation - vc 640000 - chunk 128 | 120.45 us/op | 98.654 us/op | 1.22 | | batch validate gossip attestation - vc 640000 - chunk 256 | 119.19 us/op | 97.880 us/op | 1.22 | | pickEth1Vote - no votes | 1.2435 ms/op | 891.61 us/op | 1.39 | | pickEth1Vote - max votes | 7.7793 ms/op | 5.6914 ms/op | 1.37 | | pickEth1Vote - Eth1Data hashTreeRoot value x2048 | 19.027 ms/op | 11.896 ms/op | 1.60 | | pickEth1Vote - Eth1Data hashTreeRoot tree x2048 | 26.963 ms/op | 17.517 ms/op | 1.54 | | pickEth1Vote - Eth1Data fastSerialize value x2048 | 529.02 us/op | 385.90 us/op | 1.37 | | pickEth1Vote - Eth1Data fastSerialize tree x2048 | 4.2317 ms/op | 2.9183 ms/op | 1.45 | | bytes32 toHexString | 505.00 ns/op | 639.00 ns/op | 0.79 | | bytes32 Buffer.toString(hex) | 269.00 ns/op | 481.00 ns/op | 0.56 | | bytes32 Buffer.toString(hex) from Uint8Array | 424.00 ns/op | 536.00 ns/op | 0.79 | | bytes32 Buffer.toString(hex) + 0x | 279.00 ns/op | 439.00 ns/op | 0.64 | | Object access 1 prop | 0.16200 ns/op | 0.32500 ns/op | 0.50 | | Map access 1 prop | 0.15500 ns/op | 0.32400 ns/op | 0.48 | | Object get x1000 | 6.3660 ns/op | 5.3870 ns/op | 1.18 | | Map get x1000 | 6.9900 ns/op | 5.9850 ns/op | 1.17 | | Object set x1000 | 36.277 ns/op | 26.993 ns/op | 1.34 | | Map set x1000 | 25.807 ns/op | 18.711 ns/op | 1.38 | | Return object 10000 times | 0.31270 ns/op | 0.31260 ns/op | 1.00 | | Throw Error 10000 times | 3.6685 us/op | 2.8628 us/op | 1.28 | | toHex | 168.26 ns/op | 117.44 ns/op | 1.43 | | Buffer.from | 166.28 ns/op | 111.69 ns/op | 1.49 | | shared Buffer | 105.54 ns/op | 74.682 ns/op | 1.41 | | fastMsgIdFn sha256 / 200 bytes | 2.5780 us/op | 2.0760 us/op | 1.24 | | fastMsgIdFn h32 xxhash / 200 bytes | 301.00 ns/op | 439.00 ns/op | 0.69 | | fastMsgIdFn h64 xxhash / 200 bytes | 293.00 ns/op | 491.00 ns/op | 0.60 | | fastMsgIdFn sha256 / 1000 bytes | 8.2260 us/op | 5.9220 us/op | 1.39 | | fastMsgIdFn h32 xxhash / 1000 bytes | 470.00 ns/op | 517.00 ns/op | 0.91 | | fastMsgIdFn h64 xxhash / 1000 bytes | 375.00 ns/op | 509.00 ns/op | 0.74 | | fastMsgIdFn sha256 / 10000 bytes | 70.038 us/op | 49.076 us/op | 1.43 | | fastMsgIdFn h32 xxhash / 10000 bytes | 4.5090 us/op | 1.9590 us/op | 2.30 | | fastMsgIdFn h64 xxhash / 10000 bytes | 3.8900 us/op | 1.3170 us/op | 2.95 | | send data - 1000 256B messages | 16.309 ms/op | 11.083 ms/op | 1.47 | | send data - 1000 512B messages | 19.951 ms/op | 13.596 ms/op | 1.47 | | send data - 1000 1024B messages | 29.917 ms/op | 20.457 ms/op | 1.46 | | send data - 1000 1200B messages | 28.954 ms/op | 24.838 ms/op | 1.17 | | send data - 1000 2048B messages | 35.366 ms/op | 28.896 ms/op | 1.22 | | send data - 1000 4096B messages | 35.489 ms/op | 26.751 ms/op | 1.33 | | send data - 1000 16384B messages | 82.740 ms/op | 65.090 ms/op | 1.27 | | send data - 1000 65536B messages | 244.61 ms/op | 237.16 ms/op | 1.03 | | enrSubnets - fastDeserialize 64 bits | 1.4290 us/op | 1.1080 us/op | 1.29 | | enrSubnets - ssz BitVector 64 bits | 498.00 ns/op | 499.00 ns/op | 1.00 | | enrSubnets - fastDeserialize 4 bits | 222.00 ns/op | 330.00 ns/op | 0.67 | | enrSubnets - ssz BitVector 4 bits | 464.00 ns/op | 509.00 ns/op | 0.91 | | prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 187.85 us/op | 120.39 us/op | 1.56 | | prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 193.18 us/op | 158.04 us/op | 1.22 | | prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 391.75 us/op | 266.04 us/op | 1.47 | | prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 547.24 us/op | 486.61 us/op | 1.12 | | prioritizePeers score 0:0 att 64-1 sync 4-1 | 927.94 us/op | 486.85 us/op | 1.91 | | array of 16000 items push then shift | 1.9292 us/op | 1.2139 us/op | 1.59 | | LinkedList of 16000 items push then shift | 8.5070 ns/op | 7.1630 ns/op | 1.19 | | array of 16000 items push then pop | 149.09 ns/op | 85.684 ns/op | 1.74 | | LinkedList of 16000 items push then pop | 8.0800 ns/op | 6.3320 ns/op | 1.28 | | array of 24000 items push then shift | 2.5875 us/op | 1.7962 us/op | 1.44 | | LinkedList of 24000 items push then shift | 8.6490 ns/op | 6.8420 ns/op | 1.26 | | array of 24000 items push then pop | 199.23 ns/op | 129.04 ns/op | 1.54 | | LinkedList of 24000 items push then pop | 8.4760 ns/op | 6.1520 ns/op | 1.38 | | intersect bitArray bitLen 8 | 7.3080 ns/op | 5.2640 ns/op | 1.39 | | intersect array and set length 8 | 71.635 ns/op | 38.338 ns/op | 1.87 | | intersect bitArray bitLen 128 | 32.965 ns/op | 25.628 ns/op | 1.29 | | intersect array and set length 128 | 953.36 ns/op | 555.47 ns/op | 1.72 | | bitArray.getTrueBitIndexes() bitLen 128 | 2.6510 us/op | 1.6720 us/op | 1.59 | | bitArray.getTrueBitIndexes() bitLen 248 | 4.8010 us/op | 2.7580 us/op | 1.74 | | bitArray.getTrueBitIndexes() bitLen 512 | 12.572 us/op | 6.9320 us/op | 1.81 | | Buffer.concat 32 items | 1.2280 us/op | 991.00 ns/op | 1.24 | | Uint8Array.set 32 items | 2.2620 us/op | 1.6060 us/op | 1.41 | | Buffer.copy | 2.3800 us/op | 1.7380 us/op | 1.37 | | Uint8Array.set - with subarray | 3.5420 us/op | 2.1860 us/op | 1.62 | | Uint8Array.set - without subarray | 1.8180 us/op | 1.6750 us/op | 1.09 | | getUint32 - dataview | 325.00 ns/op | 433.00 ns/op | 0.75 | | getUint32 - manual | 231.00 ns/op | 348.00 ns/op | 0.66 | | Set add up to 64 items then delete first | 2.8245 us/op | 1.7323 us/op | 1.63 | | OrderedSet add up to 64 items then delete first | 5.1197 us/op | 2.7074 us/op | 1.89 | | Set add up to 64 items then delete last | 3.6398 us/op | 2.0101 us/op | 1.81 | | OrderedSet add up to 64 items then delete last | 5.6199 us/op | 3.0933 us/op | 1.82 | | Set add up to 64 items then delete middle | 3.9569 us/op | 2.2252 us/op | 1.78 | | OrderedSet add up to 64 items then delete middle | 8.0242 us/op | 4.5639 us/op | 1.76 | | Set add up to 128 items then delete first | 7.7336 us/op | 4.0241 us/op | 1.92 | | OrderedSet add up to 128 items then delete first | 12.520 us/op | 5.9425 us/op | 2.11 | | Set add up to 128 items then delete last | 8.0856 us/op | 3.9572 us/op | 2.04 | | OrderedSet add up to 128 items then delete last | 10.605 us/op | 6.1667 us/op | 1.72 | | Set add up to 128 items then delete middle | 6.9081 us/op | 3.9726 us/op | 1.74 | | OrderedSet add up to 128 items then delete middle | 18.837 us/op | 11.667 us/op | 1.61 | | Set add up to 256 items then delete first | 14.780 us/op | 7.8250 us/op | 1.89 | | OrderedSet add up to 256 items then delete first | 22.030 us/op | 12.455 us/op | 1.77 | | Set add up to 256 items then delete last | 14.143 us/op | 7.8511 us/op | 1.80 | | OrderedSet add up to 256 items then delete last | 20.542 us/op | 12.920 us/op | 1.59 | | Set add up to 256 items then delete middle | 13.535 us/op | 7.8068 us/op | 1.73 | | OrderedSet add up to 256 items then delete middle | 60.870 us/op | 34.384 us/op | 1.77 | | transfer serialized Status (84 B) | 1.8180 us/op | 1.3430 us/op | 1.35 | | copy serialized Status (84 B) | 1.7060 us/op | 1.1930 us/op | 1.43 | | transfer serialized SignedVoluntaryExit (112 B) | 1.9550 us/op | 1.4530 us/op | 1.35 | | copy serialized SignedVoluntaryExit (112 B) | 1.4710 us/op | 1.2500 us/op | 1.18 | | transfer serialized ProposerSlashing (416 B) | 2.5230 us/op | 1.9640 us/op | 1.28 | | copy serialized ProposerSlashing (416 B) | 2.7910 us/op | 1.4530 us/op | 1.92 | | transfer serialized Attestation (485 B) | 2.5270 us/op | 1.5470 us/op | 1.63 | | copy serialized Attestation (485 B) | 2.2020 us/op | 1.3100 us/op | 1.68 | | transfer serialized AttesterSlashing (33232 B) | 3.3350 us/op | 1.8490 us/op | 1.80 | | copy serialized AttesterSlashing (33232 B) | 9.9000 us/op | 4.0820 us/op | 2.43 | | transfer serialized Small SignedBeaconBlock (128000 B) | 4.4810 us/op | 1.7360 us/op | 2.58 | | copy serialized Small SignedBeaconBlock (128000 B) | 28.384 us/op | 8.9870 us/op | 3.16 | | transfer serialized Avg SignedBeaconBlock (200000 B) | 5.0960 us/op | 1.9060 us/op | 2.67 | | copy serialized Avg SignedBeaconBlock (200000 B) | 46.338 us/op | 12.098 us/op | 3.83 | | transfer serialized BlobsSidecar (524380 B) | 6.7770 us/op | 2.1440 us/op | 3.16 | | copy serialized BlobsSidecar (524380 B) | 121.52 us/op | 102.50 us/op | 1.19 | | transfer serialized Big SignedBeaconBlock (1000000 B) | 5.7430 us/op | 2.8200 us/op | 2.04 | | copy serialized Big SignedBeaconBlock (1000000 B) | 285.79 us/op | 138.42 us/op | 2.06 | | pass gossip attestations to forkchoice per slot | 3.6874 ms/op | 2.5122 ms/op | 1.47 | | forkChoice updateHead vc 100000 bc 64 eq 0 | 592.66 us/op | 624.42 us/op | 0.95 | | forkChoice updateHead vc 600000 bc 64 eq 0 | 3.6445 ms/op | 2.6399 ms/op | 1.38 | | forkChoice updateHead vc 1000000 bc 64 eq 0 | 6.4224 ms/op | 4.8231 ms/op | 1.33 | | forkChoice updateHead vc 600000 bc 320 eq 0 | 4.4766 ms/op | 2.6680 ms/op | 1.68 | | forkChoice updateHead vc 600000 bc 1200 eq 0 | 4.2235 ms/op | 2.7462 ms/op | 1.54 | | forkChoice updateHead vc 600000 bc 7200 eq 0 | 4.9172 ms/op | 3.3419 ms/op | 1.47 | | forkChoice updateHead vc 600000 bc 64 eq 1000 | 12.734 ms/op | 9.7921 ms/op | 1.30 | | forkChoice updateHead vc 600000 bc 64 eq 10000 | 13.772 ms/op | 9.5702 ms/op | 1.44 | | forkChoice updateHead vc 600000 bc 64 eq 300000 | 18.332 ms/op | 12.258 ms/op | 1.50 | | computeDeltas 500000 validators 300 proto nodes | 4.1017 ms/op | 3.2164 ms/op | 1.28 | | computeDeltas 500000 validators 1200 proto nodes | 4.2610 ms/op | 3.2430 ms/op | 1.31 | | computeDeltas 500000 validators 7200 proto nodes | 4.4068 ms/op | 3.2622 ms/op | 1.35 | | computeDeltas 750000 validators 300 proto nodes | 6.6338 ms/op | 5.0388 ms/op | 1.32 | | computeDeltas 750000 validators 1200 proto nodes | 5.8600 ms/op | 4.6802 ms/op | 1.25 | | computeDeltas 750000 validators 7200 proto nodes | 6.0866 ms/op | 4.7731 ms/op | 1.28 | | computeDeltas 1400000 validators 300 proto nodes | 11.007 ms/op | 8.5260 ms/op | 1.29 | | computeDeltas 1400000 validators 1200 proto nodes | 10.724 ms/op | 8.4091 ms/op | 1.28 | | computeDeltas 1400000 validators 7200 proto nodes | 10.506 ms/op | 8.6127 ms/op | 1.22 | | computeDeltas 2100000 validators 300 proto nodes | 15.779 ms/op | 13.579 ms/op | 1.16 | | computeDeltas 2100000 validators 1200 proto nodes | 15.563 ms/op | 13.226 ms/op | 1.18 | | computeDeltas 2100000 validators 7200 proto nodes | 15.876 ms/op | 12.912 ms/op | 1.23 | | altair processAttestation - 250000 vs - 7PWei normalcase | 2.1695 ms/op | 2.0391 ms/op | 1.06 | | altair processAttestation - 250000 vs - 7PWei worstcase | 3.0167 ms/op | 2.7321 ms/op | 1.10 | | altair processAttestation - setStatus - 1/6 committees join | 137.22 us/op | 72.093 us/op | 1.90 | | altair processAttestation - setStatus - 1/3 committees join | 257.43 us/op | 147.63 us/op | 1.74 | | altair processAttestation - setStatus - 1/2 committees join | 362.52 us/op | 209.94 us/op | 1.73 | | altair processAttestation - setStatus - 2/3 committees join | 464.31 us/op | 279.21 us/op | 1.66 | | altair processAttestation - setStatus - 4/5 committees join | 608.61 us/op | 409.59 us/op | 1.49 | | altair processAttestation - setStatus - 100% committees join | 727.09 us/op | 484.35 us/op | 1.50 | | altair processBlock - 250000 vs - 7PWei normalcase | 6.1391 ms/op | 5.0885 ms/op | 1.21 | | altair processBlock - 250000 vs - 7PWei normalcase hashState | 29.388 ms/op | 27.937 ms/op | 1.05 | | altair processBlock - 250000 vs - 7PWei worstcase | 41.182 ms/op | 36.435 ms/op | 1.13 | | altair processBlock - 250000 vs - 7PWei worstcase hashState | 81.614 ms/op | 80.202 ms/op | 1.02 | | phase0 processBlock - 250000 vs - 7PWei normalcase | 2.5474 ms/op | 2.0246 ms/op | 1.26 | | phase0 processBlock - 250000 vs - 7PWei worstcase | 27.049 ms/op | 22.982 ms/op | 1.18 | | altair processEth1Data - 250000 vs - 7PWei normalcase | 321.72 us/op | 253.96 us/op | 1.27 | | getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 6.1140 us/op | 5.0870 us/op | 1.20 | | getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 46.491 us/op | 29.546 us/op | 1.57 | | getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 11.066 us/op | 5.0970 us/op | 2.17 | | getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 9.2060 us/op | 5.3260 us/op | 1.73 | | getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 162.19 us/op | 126.42 us/op | 1.28 | | getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 2.1432 ms/op | 802.19 us/op | 2.67 | | getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 1.5917 ms/op | 1.1703 ms/op | 1.36 | | getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 1.5448 ms/op | 1.1073 ms/op | 1.40 | | getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 3.7333 ms/op | 2.8483 ms/op | 1.31 | | getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 1.5933 ms/op | 1.2553 ms/op | 1.27 | | getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 3.8697 ms/op | 3.0827 ms/op | 1.26 | | Tree 40 250000 create | 229.03 ms/op | 191.97 ms/op | 1.19 | | Tree 40 250000 get(125000) | 152.22 ns/op | 124.31 ns/op | 1.22 | | Tree 40 250000 set(125000) | 748.59 ns/op | 558.10 ns/op | 1.34 | | Tree 40 250000 toArray() | 18.809 ms/op | 18.663 ms/op | 1.01 | | Tree 40 250000 iterate all - toArray() + loop | 18.614 ms/op | 19.214 ms/op | 0.97 | | Tree 40 250000 iterate all - get(i) | 58.039 ms/op | 49.217 ms/op | 1.18 | | Array 250000 create | 3.3012 ms/op | 3.1645 ms/op | 1.04 | | Array 250000 clone - spread | 1.5829 ms/op | 1.3737 ms/op | 1.15 | | Array 250000 get(125000) | 0.42400 ns/op | 0.58400 ns/op | 0.73 | | Array 250000 set(125000) | 0.47400 ns/op | 0.59200 ns/op | 0.80 | | Array 250000 iterate all - loop | 104.64 us/op | 76.486 us/op | 1.37 | | phase0 afterProcessEpoch - 250000 vs - 7PWei | 93.512 ms/op | 74.446 ms/op | 1.26 | | Array.fill - length 1000000 | 3.8640 ms/op | 2.6543 ms/op | 1.46 | | Array push - length 1000000 | 18.205 ms/op | 15.628 ms/op | 1.16 | | Array.get | 0.28433 ns/op | 0.25966 ns/op | 1.10 | | Uint8Array.get | 0.46196 ns/op | 0.34707 ns/op | 1.33 | | phase0 beforeProcessEpoch - 250000 vs - 7PWei | 19.334 ms/op | 19.495 ms/op | 0.99 | | altair processEpoch - mainnet_e81889 | 355.55 ms/op | 332.71 ms/op | 1.07 | | mainnet_e81889 - altair beforeProcessEpoch | 20.418 ms/op | 19.183 ms/op | 1.06 | | mainnet_e81889 - altair processJustificationAndFinalization | 19.661 us/op | 13.294 us/op | 1.48 | | mainnet_e81889 - altair processInactivityUpdates | 5.9395 ms/op | 6.2201 ms/op | 0.95 | | mainnet_e81889 - altair processRewardsAndPenalties | 58.512 ms/op | 45.542 ms/op | 1.28 | | mainnet_e81889 - altair processRegistryUpdates | 3.0580 us/op | 1.8170 us/op | 1.68 | | mainnet_e81889 - altair processSlashings | 637.00 ns/op | 741.00 ns/op | 0.86 | | mainnet_e81889 - altair processEth1DataReset | 497.00 ns/op | 733.00 ns/op | 0.68 | | mainnet_e81889 - altair processEffectiveBalanceUpdates | 1.9389 ms/op | 1.7048 ms/op | 1.14 | | mainnet_e81889 - altair processSlashingsReset | 4.6920 us/op | 2.3920 us/op | 1.96 | | mainnet_e81889 - altair processRandaoMixesReset | 7.3690 us/op | 2.8090 us/op | 2.62 | | mainnet_e81889 - altair processHistoricalRootsUpdate | 924.00 ns/op | 724.00 ns/op | 1.28 | | mainnet_e81889 - altair processParticipationFlagUpdates | 4.1020 us/op | 1.5670 us/op | 2.62 | | mainnet_e81889 - altair processSyncCommitteeUpdates | 683.00 ns/op | 647.00 ns/op | 1.06 | | mainnet_e81889 - altair afterProcessEpoch | 96.037 ms/op | 74.468 ms/op | 1.29 | | capella processEpoch - mainnet_e217614 | 1.3936 s/op | 911.27 ms/op | 1.53 | | mainnet_e217614 - capella beforeProcessEpoch | 74.613 ms/op | 68.158 ms/op | 1.09 | | mainnet_e217614 - capella processJustificationAndFinalization | 28.305 us/op | 7.3050 us/op | 3.87 | | mainnet_e217614 - capella processInactivityUpdates | 16.928 ms/op | 17.477 ms/op | 0.97 | | mainnet_e217614 - capella processRewardsAndPenalties | 272.60 ms/op | 255.18 ms/op | 1.07 | | mainnet_e217614 - capella processRegistryUpdates | 19.068 us/op | 15.542 us/op | 1.23 | | mainnet_e217614 - capella processSlashings | 676.00 ns/op | 841.00 ns/op | 0.80 | | mainnet_e217614 - capella processEth1DataReset | 513.00 ns/op | 743.00 ns/op | 0.69 | | mainnet_e217614 - capella processEffectiveBalanceUpdates | 12.733 ms/op | 14.588 ms/op | 0.87 | | mainnet_e217614 - capella processSlashingsReset | 4.6340 us/op | 2.8900 us/op | 1.60 | | mainnet_e217614 - capella processRandaoMixesReset | 6.1990 us/op | 3.0550 us/op | 2.03 | | mainnet_e217614 - capella processHistoricalRootsUpdate | 2.6250 us/op | 808.00 ns/op | 3.25 | | mainnet_e217614 - capella processParticipationFlagUpdates | 3.5860 us/op | 1.7010 us/op | 2.11 | | mainnet_e217614 - capella afterProcessEpoch | 245.02 ms/op | 198.36 ms/op | 1.24 | | phase0 processEpoch - mainnet_e58758 | 429.85 ms/op | 366.46 ms/op | 1.17 | | mainnet_e58758 - phase0 beforeProcessEpoch | 106.37 ms/op | 76.598 ms/op | 1.39 | | mainnet_e58758 - phase0 processJustificationAndFinalization | 20.542 us/op | 12.620 us/op | 1.63 | | mainnet_e58758 - phase0 processRewardsAndPenalties | 30.595 ms/op | 25.463 ms/op | 1.20 | | mainnet_e58758 - phase0 processRegistryUpdates | 11.998 us/op | 6.1270 us/op | 1.96 | | mainnet_e58758 - phase0 processSlashings | 512.00 ns/op | 486.00 ns/op | 1.05 | | mainnet_e58758 - phase0 processEth1DataReset | 489.00 ns/op | 649.00 ns/op | 0.75 | | mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 1.6363 ms/op | 1.3694 ms/op | 1.19 | | mainnet_e58758 - phase0 processSlashingsReset | 4.4210 us/op | 2.4050 us/op | 1.84 | | mainnet_e58758 - phase0 processRandaoMixesReset | 7.4230 us/op | 2.8900 us/op | 2.57 | | mainnet_e58758 - phase0 processHistoricalRootsUpdate | 498.00 ns/op | 562.00 ns/op | 0.89 | | mainnet_e58758 - phase0 processParticipationRecordUpdates | 4.6040 us/op | 2.1610 us/op | 2.13 | | mainnet_e58758 - phase0 afterProcessEpoch | 82.491 ms/op | 64.993 ms/op | 1.27 | | phase0 processEffectiveBalanceUpdates - 250000 normalcase | 1.4446 ms/op | 958.26 us/op | 1.51 | | phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 2.4911 ms/op | 1.4877 ms/op | 1.67 | | altair processInactivityUpdates - 250000 normalcase | 18.010 ms/op | 17.715 ms/op | 1.02 | | altair processInactivityUpdates - 250000 worstcase | 17.640 ms/op | 15.975 ms/op | 1.10 | | phase0 processRegistryUpdates - 250000 normalcase | 8.8430 us/op | 5.4890 us/op | 1.61 | | phase0 processRegistryUpdates - 250000 badcase_full_deposits | 324.57 us/op | 308.70 us/op | 1.05 | | phase0 processRegistryUpdates - 250000 worstcase 0.5 | 115.98 ms/op | 118.30 ms/op | 0.98 | | altair processRewardsAndPenalties - 250000 normalcase | 42.150 ms/op | 43.533 ms/op | 0.97 | | altair processRewardsAndPenalties - 250000 worstcase | 43.337 ms/op | 44.119 ms/op | 0.98 | | phase0 getAttestationDeltas - 250000 normalcase | 8.4972 ms/op | 6.1857 ms/op | 1.37 | | phase0 getAttestationDeltas - 250000 worstcase | 8.1083 ms/op | 6.5742 ms/op | 1.23 | | phase0 processSlashings - 250000 worstcase | 97.851 us/op | 91.062 us/op | 1.07 | | altair processSyncCommitteeUpdates - 250000 | 141.23 ms/op | 102.93 ms/op | 1.37 | | BeaconState.hashTreeRoot - No change | 264.00 ns/op | 450.00 ns/op | 0.59 | | BeaconState.hashTreeRoot - 1 full validator | 142.21 us/op | 121.83 us/op | 1.17 | | BeaconState.hashTreeRoot - 32 full validator | 1.4998 ms/op | 1.0620 ms/op | 1.41 | | BeaconState.hashTreeRoot - 512 full validator | 14.994 ms/op | 11.434 ms/op | 1.31 | | BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 130.59 us/op | 131.66 us/op | 0.99 | | BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 2.1781 ms/op | 1.9370 ms/op | 1.12 | | BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 29.087 ms/op | 25.958 ms/op | 1.12 | | BeaconState.hashTreeRoot - 1 balances | 123.30 us/op | 111.31 us/op | 1.11 | | BeaconState.hashTreeRoot - 32 balances | 1.1970 ms/op | 1.1280 ms/op | 1.06 | | BeaconState.hashTreeRoot - 512 balances | 11.130 ms/op | 9.1153 ms/op | 1.22 | | BeaconState.hashTreeRoot - 250000 balances | 179.94 ms/op | 162.15 ms/op | 1.11 | | aggregationBits - 2048 els - zipIndexesInBitList | 27.885 us/op | 22.568 us/op | 1.24 | | byteArrayEquals 32 | 56.255 ns/op | 47.099 ns/op | 1.19 | | Buffer.compare 32 | 18.084 ns/op | 15.478 ns/op | 1.17 | | byteArrayEquals 1024 | 1.6710 us/op | 1.2566 us/op | 1.33 | | Buffer.compare 1024 | 26.010 ns/op | 22.460 ns/op | 1.16 | | byteArrayEquals 16384 | 26.441 us/op | 20.004 us/op | 1.32 | | Buffer.compare 16384 | 220.40 ns/op | 201.08 ns/op | 1.10 | | byteArrayEquals 123687377 | 202.49 ms/op | 151.81 ms/op | 1.33 | | Buffer.compare 123687377 | 8.4924 ms/op | 3.9301 ms/op | 2.16 | | byteArrayEquals 32 - diff last byte | 60.149 ns/op | 48.517 ns/op | 1.24 | | Buffer.compare 32 - diff last byte | 20.101 ns/op | 16.285 ns/op | 1.23 | | byteArrayEquals 1024 - diff last byte | 1.7779 us/op | 1.2505 us/op | 1.42 | | Buffer.compare 1024 - diff last byte | 28.848 ns/op | 24.611 ns/op | 1.17 | | byteArrayEquals 16384 - diff last byte | 28.318 us/op | 19.926 us/op | 1.42 | | Buffer.compare 16384 - diff last byte | 242.72 ns/op | 192.08 ns/op | 1.26 | | byteArrayEquals 123687377 - diff last byte | 241.60 ms/op | 150.69 ms/op | 1.60 | | Buffer.compare 123687377 - diff last byte | 11.426 ms/op | 4.5768 ms/op | 2.50 | | byteArrayEquals 32 - random bytes | 6.4170 ns/op | 4.9410 ns/op | 1.30 | | Buffer.compare 32 - random bytes | 22.080 ns/op | 16.792 ns/op | 1.31 | | byteArrayEquals 1024 - random bytes | 6.4040 ns/op | 4.9260 ns/op | 1.30 | | Buffer.compare 1024 - random bytes | 22.406 ns/op | 16.712 ns/op | 1.34 | | byteArrayEquals 16384 - random bytes | 6.4070 ns/op | 4.9000 ns/op | 1.31 | | Buffer.compare 16384 - random bytes | 22.239 ns/op | 16.695 ns/op | 1.33 | | byteArrayEquals 123687377 - random bytes | 8.5100 ns/op | 7.8000 ns/op | 1.09 | | Buffer.compare 123687377 - random bytes | 23.950 ns/op | 19.870 ns/op | 1.21 | | regular array get 100000 times | 43.887 us/op | 30.779 us/op | 1.43 | | wrappedArray get 100000 times | 40.161 us/op | 30.658 us/op | 1.31 | | arrayWithProxy get 100000 times | 18.573 ms/op | 10.122 ms/op | 1.83 | | ssz.Root.equals | 57.044 ns/op | 42.902 ns/op | 1.33 | | byteArrayEquals | 57.016 ns/op | 42.165 ns/op | 1.35 | | Buffer.compare | 13.138 ns/op | 9.7320 ns/op | 1.35 | | shuffle list - 16384 els | 7.7671 ms/op | 5.4261 ms/op | 1.43 | | shuffle list - 250000 els | 127.51 ms/op | 79.110 ms/op | 1.61 | | processSlot - 1 slots | 20.556 us/op | 11.417 us/op | 1.80 | | processSlot - 32 slots | 4.7039 ms/op | 2.3281 ms/op | 2.02 | | getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 42.349 ms/op | 38.398 ms/op | 1.10 | | getCommitteeAssignments - req 1 vs - 250000 vc | 2.7048 ms/op | 1.8116 ms/op | 1.49 | | getCommitteeAssignments - req 100 vs - 250000 vc | 4.8722 ms/op | 3.5327 ms/op | 1.38 | | getCommitteeAssignments - req 1000 vs - 250000 vc | 5.1347 ms/op | 3.8903 ms/op | 1.32 | | findModifiedValidators - 10000 modified validators | 279.78 ms/op | 242.13 ms/op | 1.16 | | findModifiedValidators - 1000 modified validators | 183.12 ms/op | 144.83 ms/op | 1.26 | | findModifiedValidators - 100 modified validators | 165.32 ms/op | 148.85 ms/op | 1.11 | | findModifiedValidators - 10 modified validators | 162.94 ms/op | 136.43 ms/op | 1.19 | | findModifiedValidators - 1 modified validators | 158.30 ms/op | 131.78 ms/op | 1.20 | | findModifiedValidators - no difference | 173.85 ms/op | 157.90 ms/op | 1.10 | | compare ViewDUs | 3.2253 s/op | 3.0253 s/op | 1.07 | | compare each validator Uint8Array | 1.8850 s/op | 1.6100 s/op | 1.17 | | compare ViewDU to Uint8Array | 1.0070 s/op | 960.44 ms/op | 1.05 | | migrate state 1000000 validators, 24 modified, 0 new | 948.79 ms/op | 804.28 ms/op | 1.18 | | migrate state 1000000 validators, 1700 modified, 1000 new | 1.1805 s/op | 979.91 ms/op | 1.20 | | migrate state 1000000 validators, 3400 modified, 2000 new | 1.3355 s/op | 1.2813 s/op | 1.04 | | migrate state 1500000 validators, 24 modified, 0 new | 932.55 ms/op | 831.87 ms/op | 1.12 | | migrate state 1500000 validators, 1700 modified, 1000 new | 1.2122 s/op | 1.0307 s/op | 1.18 | | migrate state 1500000 validators, 3400 modified, 2000 new | 1.4460 s/op | 1.1981 s/op | 1.21 | | RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 5.5000 ns/op | 6.1400 ns/op | 0.90 | | state getBlockRootAtSlot - 250000 vs - 7PWei | 597.93 ns/op | 778.52 ns/op | 0.77 | | computeProposers - vc 250000 | 7.7201 ms/op | 6.1904 ms/op | 1.25 | | computeEpochShuffling - vc 250000 | 107.36 ms/op | 79.667 ms/op | 1.35 | | getNextSyncCommittee - vc 250000 | 140.14 ms/op | 103.99 ms/op | 1.35 | | computeSigningRoot for AttestationData | 21.145 us/op | 16.058 us/op | 1.32 | | hash AttestationData serialized data then Buffer.toString(base64) | 1.7923 us/op | 1.1216 us/op | 1.60 | | toHexString serialized data | 1.0137 us/op | 742.26 ns/op | 1.37 | | Buffer.toString(base64) | 204.16 ns/op | 123.68 ns/op | 1.65 | | nodejs block root to RootHex using toHex | 177.04 ns/op | 108.31 ns/op | 1.63 | | nodejs block root to RootHex using toRootHex | 103.22 ns/op | 71.957 ns/op | 1.43 | | browser block root to RootHex using the deprecated toHexString | 250.16 ns/op | 204.22 ns/op | 1.22 | | browser block root to RootHex using toHex | 197.22 ns/op | 164.03 ns/op | 1.20 | | browser block root to RootHex using toRootHex | 174.90 ns/op | 145.51 ns/op | 1.20 |

by benchmarkbot/action

wemeetagain commented 1 week ago

:tada: This PR is included in v1.23.0 :tada: