Skip to content

Conversation

@wemeetagain
Copy link
Member

Motivation

TODO

Description

  • Add QUIC support
  • Add quicPort, quicPort6, disableQuic cli flags
  • By default, use port 9001 for QUIC, if port is specified, use port + 1
  • Advertise QUIC support in ENR
  • Prefer QUIC over TCP for dialing discovered peers

supercedes #7659

@wemeetagain
Copy link
Member Author

Current status is it doesn't sync

Seeing a few things:

Getting rate limited by peers:

Error: RESPONSE_ERROR_RATE_LIMITED: sNaPpYii1Wait 2.421649316s
    at async sendRequest (file:///usr/src/lodestar/packages/reqresp/lib/request/index.js:113:13)
    at async ReqRespBeaconNode.sendRequest (file:///usr/src/lodestar/packages/reqresp/lib/ReqResp.js:105:13)
    at async AsyncIterableBridgeHandler.onRequest (file:///usr/src/lodestar/packages/beacon-node/lib/util/asyncIterableToEvents.js:99:30)

(Also Error: RESPONSE_ERROR_RATE_LIMITED: sNaPpY#NRate limited. Request too large)

Seeing some garbled response errors

Error: RESPONSE_ERROR_undefined: E!i$MbOZ~v*v&15l6+yM(H|Y;j+305_4T6")C&dZ3=S(}/4k-d\7==FSG{Nhs(O)BE"\mXoT=lyF<7&bJ^s7=)Z	
    at async AsyncIterableBridgeHandler.onRequest (file:///usr/src/lodestar/packages/beacon-node/lib/util/asyncIterableToEvents.js:99:30)
    at async ReqRespBeaconNode.sendRequest (file:///usr/src/lodestar/packages/reqresp/lib/ReqResp.js:105:13)
    at async sendRequest (file:///usr/src/lodestar/packages/reqresp/lib/request/index.js:113:13)
    at responseDecodeSink (file:///usr/src/lodestar/packages/reqresp/lib/encoders/responseDecode.js:44:23)

Also, inspecting the data that's read/returned from the stream sometimes shows the repeating pattern 0100fe0100fe0100fe... which seems like some uninitialized data?

Eg: In one case, real data is in the first part of the buffer, but there's the uninitialized stuff at the end:

d2f1997fd88608ff060000734e6150705900990d001bb7cf1e80800400000d01540f0000018e00f7a79bb2b4235580a225db2e068427e8011df48101017678dadae137f0c367819a7b9ff2edbde26f148fee797060e5b38ae7ee7b9c2357687378753d49ed9ae6bbb699fbb8f682cba7276ebcb8e2b188e396f9ec8ad70c382ff4c913349a6e3061424ac29163cb9e58b664e4bdaa38003130a6f48d80c3dbebfb673dde67cc61b6ca9875688ea27f519f45c5ddf5b56f569f379127dac02aa881ed395f9fd7568b4f65bdb4eaa8d1152f9b62ae97932bdef43f9bc019baf9b3d0843f441b58033570daea9e2ade293fb45e4b5fbd3af567deba9226d7449739db2e2acf89510fe3fbda4ab481755003a5d53e68a657f2795865af92d737fbe5f0ad31b9bc6fc19e552a674c12d72c11bc7d9268031ba006167d4e0cad2ff7cc549a3efec03edbaf1f05bf1e903d2ae939bb73a284d362df8b0b9bb98feb2cb8e5c701c4615d58726de16c2dbee65f1a879d0ff30bf65ffab6654e7d5aa7d3933490274d50033dfccf6b746cd1b27e5be9f7a7c4787d1cbb6df087dcb31d5a5abb4300b3b9b63026126d60cb0140000000ffff80261db5010000000000002186fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe01

In another case, the entire thing is uninitialized:

0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe0100fe01

@github-actions
Copy link
Contributor

github-actions bot commented Jul 9, 2025

Performance Report

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 075482a Previous: 889b1c4 Ratio
400 bytes - compress - snappy-wasm 1.0268 us/op 24.188 us/op 0.04
Full benchmark results
Benchmark suite Current: 075482a Previous: 889b1c4 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.1468 ms/op 1.2113 ms/op 0.95
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 37.479 us/op 38.493 us/op 0.97
BLS verify - blst 896.42 us/op 810.54 us/op 1.11
BLS verifyMultipleSignatures 3 - blst 1.2014 ms/op 1.2535 ms/op 0.96
BLS verifyMultipleSignatures 8 - blst 1.6674 ms/op 1.9674 ms/op 0.85
BLS verifyMultipleSignatures 32 - blst 4.9677 ms/op 5.5529 ms/op 0.89
BLS verifyMultipleSignatures 64 - blst 9.0215 ms/op 10.539 ms/op 0.86
BLS verifyMultipleSignatures 128 - blst 17.402 ms/op 17.301 ms/op 1.01
BLS deserializing 10000 signatures 696.48 ms/op 694.08 ms/op 1.00
BLS deserializing 100000 signatures 6.9393 s/op 6.9413 s/op 1.00
BLS verifyMultipleSignatures - same message - 3 - blst 855.07 us/op 977.56 us/op 0.87
BLS verifyMultipleSignatures - same message - 8 - blst 1.0061 ms/op 1.0298 ms/op 0.98
BLS verifyMultipleSignatures - same message - 32 - blst 1.7224 ms/op 1.8808 ms/op 0.92
BLS verifyMultipleSignatures - same message - 64 - blst 2.5956 ms/op 2.6363 ms/op 0.98
BLS verifyMultipleSignatures - same message - 128 - blst 4.4180 ms/op 4.4089 ms/op 1.00
BLS aggregatePubkeys 32 - blst 19.506 us/op 19.558 us/op 1.00
BLS aggregatePubkeys 128 - blst 70.460 us/op 70.270 us/op 1.00
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 42.128 ms/op 43.050 ms/op 0.98
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 36.780 ms/op 41.010 ms/op 0.90
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 30.933 ms/op 33.785 ms/op 0.92
getSlashingsAndExits - default max 71.633 us/op 73.811 us/op 0.97
getSlashingsAndExits - 2k 310.28 us/op 299.56 us/op 1.04
isKnown best case - 1 super set check 193.00 ns/op 193.00 ns/op 1.00
isKnown normal case - 2 super set checks 192.00 ns/op 190.00 ns/op 1.01
isKnown worse case - 16 super set checks 188.00 ns/op 192.00 ns/op 0.98
InMemoryCheckpointStateCache - add get delete 2.3460 us/op 3.4400 us/op 0.68
validate api signedAggregateAndProof - struct 1.3656 ms/op 1.5490 ms/op 0.88
validate gossip signedAggregateAndProof - struct 1.3575 ms/op 2.5798 ms/op 0.53
batch validate gossip attestation - vc 640000 - chunk 32 119.05 us/op 115.60 us/op 1.03
batch validate gossip attestation - vc 640000 - chunk 64 104.81 us/op 103.05 us/op 1.02
batch validate gossip attestation - vc 640000 - chunk 128 95.769 us/op 94.012 us/op 1.02
batch validate gossip attestation - vc 640000 - chunk 256 94.192 us/op 91.151 us/op 1.03
pickEth1Vote - no votes 935.40 us/op 913.10 us/op 1.02
pickEth1Vote - max votes 5.7848 ms/op 5.7235 ms/op 1.01
pickEth1Vote - Eth1Data hashTreeRoot value x2048 10.622 ms/op 11.412 ms/op 0.93
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 15.268 ms/op 16.280 ms/op 0.94
pickEth1Vote - Eth1Data fastSerialize value x2048 375.41 us/op 365.21 us/op 1.03
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.5640 ms/op 3.0715 ms/op 0.83
bytes32 toHexString 359.00 ns/op 352.00 ns/op 1.02
bytes32 Buffer.toString(hex) 223.00 ns/op 247.00 ns/op 0.90
bytes32 Buffer.toString(hex) from Uint8Array 308.00 ns/op 310.00 ns/op 0.99
bytes32 Buffer.toString(hex) + 0x 218.00 ns/op 236.00 ns/op 0.92
Object access 1 prop 0.11000 ns/op 0.11400 ns/op 0.96
Map access 1 prop 0.11400 ns/op 0.14800 ns/op 0.77
Object get x1000 5.5240 ns/op 5.2420 ns/op 1.05
Map get x1000 0.37800 ns/op 0.43100 ns/op 0.88
Object set x1000 28.912 ns/op 27.995 ns/op 1.03
Map set x1000 20.178 ns/op 19.403 ns/op 1.04
Return object 10000 times 0.23220 ns/op 0.22090 ns/op 1.05
Throw Error 10000 times 4.1055 us/op 3.9456 us/op 1.04
toHex 148.45 ns/op 131.05 ns/op 1.13
Buffer.from 127.83 ns/op 118.33 ns/op 1.08
shared Buffer 75.943 ns/op 78.265 ns/op 0.97
fastMsgIdFn sha256 / 200 bytes 1.8430 us/op 1.8110 us/op 1.02
fastMsgIdFn h32 xxhash / 200 bytes 195.00 ns/op 257.00 ns/op 0.76
fastMsgIdFn h64 xxhash / 200 bytes 273.00 ns/op 263.00 ns/op 1.04
fastMsgIdFn sha256 / 1000 bytes 6.0460 us/op 5.7710 us/op 1.05
fastMsgIdFn h32 xxhash / 1000 bytes 295.00 ns/op 348.00 ns/op 0.85
fastMsgIdFn h64 xxhash / 1000 bytes 326.00 ns/op 314.00 ns/op 1.04
fastMsgIdFn sha256 / 10000 bytes 50.514 us/op 51.544 us/op 0.98
fastMsgIdFn h32 xxhash / 10000 bytes 1.4140 us/op 1.7990 us/op 0.79
fastMsgIdFn h64 xxhash / 10000 bytes 941.00 ns/op 926.00 ns/op 1.02
100 bytes - compress - snappyjs 1.4421 us/op 1.5403 us/op 0.94
100 bytes - compress - snappy 1.0675 us/op 1.1606 us/op 0.92
100 bytes - compress - snappy-wasm 693.45 ns/op 1.0104 us/op 0.69
100 bytes - compress - snappy-wasm - prealloc 939.18 ns/op 1.3685 us/op 0.69
200 bytes - compress - snappyjs 1.8349 us/op 1.5051 us/op 1.22
200 bytes - compress - snappy 1.2536 us/op 1.2955 us/op 0.97
200 bytes - compress - snappy-wasm 733.30 ns/op 898.18 ns/op 0.82
200 bytes - compress - snappy-wasm - prealloc 1.3570 us/op 1.7694 us/op 0.77
300 bytes - compress - snappyjs 2.3801 us/op 1.8354 us/op 1.30
300 bytes - compress - snappy 2.0615 us/op 1.2984 us/op 1.59
300 bytes - compress - snappy-wasm 1.0237 us/op 851.05 ns/op 1.20
300 bytes - compress - snappy-wasm - prealloc 1.9870 us/op 1.6760 us/op 1.19
400 bytes - compress - snappyjs 2.2011 us/op 2.5640 us/op 0.86
400 bytes - compress - snappy 2.3498 us/op 1.2941 us/op 1.82
400 bytes - compress - snappy-wasm 1.0268 us/op 24.188 us/op 0.04
400 bytes - compress - snappy-wasm - prealloc 1.4944 us/op 1.2947 us/op 1.15
500 bytes - compress - snappyjs 2.5957 us/op 2.3276 us/op 1.12
500 bytes - compress - snappy 1.5744 us/op 1.5217 us/op 1.03
500 bytes - compress - snappy-wasm 1.3899 us/op 973.18 ns/op 1.43
500 bytes - compress - snappy-wasm - prealloc 1.1673 us/op 1.7898 us/op 0.65
1000 bytes - compress - snappyjs 4.0880 us/op 5.1802 us/op 0.79
1000 bytes - compress - snappy 1.9570 us/op 1.8245 us/op 1.07
1000 bytes - compress - snappy-wasm 1.7351 us/op 1.6723 us/op 1.04
1000 bytes - compress - snappy-wasm - prealloc 2.1774 us/op 2.2778 us/op 0.96
10000 bytes - compress - snappyjs 27.648 us/op 24.146 us/op 1.15
10000 bytes - compress - snappy 36.472 us/op 27.683 us/op 1.32
10000 bytes - compress - snappy-wasm 26.826 us/op 19.210 us/op 1.40
10000 bytes - compress - snappy-wasm - prealloc 30.768 us/op 19.512 us/op 1.58
100 bytes - uncompress - snappyjs 753.27 ns/op 654.35 ns/op 1.15
100 bytes - uncompress - snappy 1.0821 us/op 1.2783 us/op 0.85
100 bytes - uncompress - snappy-wasm 892.89 ns/op 696.10 ns/op 1.28
100 bytes - uncompress - snappy-wasm - prealloc 1.1028 us/op 1.0894 us/op 1.01
200 bytes - uncompress - snappyjs 881.41 ns/op 1.2646 us/op 0.70
200 bytes - uncompress - snappy 1.4817 us/op 1.1430 us/op 1.30
200 bytes - uncompress - snappy-wasm 975.77 ns/op 980.31 ns/op 1.00
200 bytes - uncompress - snappy-wasm - prealloc 1.2882 us/op 1.4748 us/op 0.87
300 bytes - uncompress - snappyjs 1.2454 us/op 1.0447 us/op 1.19
300 bytes - uncompress - snappy 1.2795 us/op 1.7303 us/op 0.74
300 bytes - uncompress - snappy-wasm 736.03 ns/op 1.0660 us/op 0.69
300 bytes - uncompress - snappy-wasm - prealloc 1.5089 us/op 1.2018 us/op 1.26
400 bytes - uncompress - snappyjs 1.4266 us/op 1.7011 us/op 0.84
400 bytes - uncompress - snappy 1.5310 us/op 1.6962 us/op 0.90
400 bytes - uncompress - snappy-wasm 893.96 ns/op 768.77 ns/op 1.16
400 bytes - uncompress - snappy-wasm - prealloc 1.6533 us/op 1.6215 us/op 1.02
500 bytes - uncompress - snappyjs 1.3725 us/op 2.5476 us/op 0.54
500 bytes - uncompress - snappy 1.3901 us/op 1.4614 us/op 0.95
500 bytes - uncompress - snappy-wasm 1.1441 us/op 1.0101 us/op 1.13
500 bytes - uncompress - snappy-wasm - prealloc 1.1555 us/op 1.0997 us/op 1.05
1000 bytes - uncompress - snappyjs 2.2927 us/op 2.1596 us/op 1.06
1000 bytes - uncompress - snappy 1.5172 us/op 1.4576 us/op 1.04
1000 bytes - uncompress - snappy-wasm 1.2896 us/op 1.3315 us/op 0.97
1000 bytes - uncompress - snappy-wasm - prealloc 1.2686 us/op 1.6697 us/op 0.76
10000 bytes - uncompress - snappyjs 26.993 us/op 21.057 us/op 1.28
10000 bytes - uncompress - snappy 34.529 us/op 31.059 us/op 1.11
10000 bytes - uncompress - snappy-wasm 27.444 us/op 14.552 us/op 1.89
10000 bytes - uncompress - snappy-wasm - prealloc 27.653 us/op 15.935 us/op 1.74
send data - 1000 256B messages 15.843 ms/op 13.553 ms/op 1.17
send data - 1000 512B messages 17.421 ms/op 18.049 ms/op 0.97
send data - 1000 1024B messages 32.148 ms/op 25.387 ms/op 1.27
send data - 1000 1200B messages 28.373 ms/op 28.338 ms/op 1.00
send data - 1000 2048B messages 25.195 ms/op 28.590 ms/op 0.88
send data - 1000 4096B messages 40.844 ms/op 57.603 ms/op 0.71
send data - 1000 16384B messages 101.71 ms/op 110.32 ms/op 0.92
send data - 1000 65536B messages 336.09 ms/op 288.14 ms/op 1.17
enrSubnets - fastDeserialize 64 bits 902.00 ns/op 866.00 ns/op 1.04
enrSubnets - ssz BitVector 64 bits 330.00 ns/op 327.00 ns/op 1.01
enrSubnets - fastDeserialize 4 bits 130.00 ns/op 179.00 ns/op 0.73
enrSubnets - ssz BitVector 4 bits 332.00 ns/op 514.00 ns/op 0.65
prioritizePeers score -10:0 att 32-0.1 sync 2-0 228.89 us/op 324.36 us/op 0.71
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 257.61 us/op 334.22 us/op 0.77
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 372.21 us/op 495.03 us/op 0.75
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 687.06 us/op 707.81 us/op 0.97
prioritizePeers score 0:0 att 64-1 sync 4-1 862.13 us/op 849.75 us/op 1.01
array of 16000 items push then shift 1.6014 us/op 1.5522 us/op 1.03
LinkedList of 16000 items push then shift 7.3780 ns/op 7.1200 ns/op 1.04
array of 16000 items push then pop 73.815 ns/op 73.390 ns/op 1.01
LinkedList of 16000 items push then pop 6.9860 ns/op 6.9610 ns/op 1.00
array of 24000 items push then shift 2.2629 us/op 2.3171 us/op 0.98
LinkedList of 24000 items push then shift 7.2260 ns/op 7.2440 ns/op 1.00
array of 24000 items push then pop 104.86 ns/op 101.58 ns/op 1.03
LinkedList of 24000 items push then pop 7.1880 ns/op 7.0010 ns/op 1.03
intersect bitArray bitLen 8 5.6930 ns/op 5.5600 ns/op 1.02
intersect array and set length 8 33.223 ns/op 32.394 ns/op 1.03
intersect bitArray bitLen 128 28.620 ns/op 27.843 ns/op 1.03
intersect array and set length 128 545.54 ns/op 534.11 ns/op 1.02
bitArray.getTrueBitIndexes() bitLen 128 1.0270 us/op 1.0280 us/op 1.00
bitArray.getTrueBitIndexes() bitLen 248 1.7490 us/op 1.7960 us/op 0.97
bitArray.getTrueBitIndexes() bitLen 512 3.6080 us/op 3.6890 us/op 0.98
Full columns - reconstruct all 6 blobs 262.56 us/op 273.95 us/op 0.96
Full columns - reconstruct half of the blobs out of 6 114.31 us/op 118.86 us/op 0.96
Full columns - reconstruct single blob out of 6 31.930 us/op 31.578 us/op 1.01
Half columns - reconstruct all 6 blobs 267.24 ms/op 258.43 ms/op 1.03
Half columns - reconstruct half of the blobs out of 6 132.26 ms/op 129.98 ms/op 1.02
Half columns - reconstruct single blob out of 6 50.299 ms/op 47.665 ms/op 1.06
Full columns - reconstruct all 10 blobs 376.71 us/op 494.22 us/op 0.76
Full columns - reconstruct half of the blobs out of 10 153.11 us/op 156.05 us/op 0.98
Full columns - reconstruct single blob out of 10 31.060 us/op 30.642 us/op 1.01
Half columns - reconstruct all 10 blobs 444.27 ms/op 429.79 ms/op 1.03
Half columns - reconstruct half of the blobs out of 10 223.91 ms/op 219.38 ms/op 1.02
Half columns - reconstruct single blob out of 10 48.405 ms/op 48.514 ms/op 1.00
Full columns - reconstruct all 20 blobs 1.1949 ms/op 1.1628 ms/op 1.03
Full columns - reconstruct half of the blobs out of 20 300.77 us/op 365.65 us/op 0.82
Full columns - reconstruct single blob out of 20 44.728 us/op 31.028 us/op 1.44
Half columns - reconstruct all 20 blobs 871.72 ms/op 872.89 ms/op 1.00
Half columns - reconstruct half of the blobs out of 20 444.59 ms/op 440.84 ms/op 1.01
Half columns - reconstruct single blob out of 20 48.936 ms/op 48.971 ms/op 1.00
Set add up to 64 items then delete first 1.9723 us/op 2.0527 us/op 0.96
OrderedSet add up to 64 items then delete first 2.9306 us/op 3.0435 us/op 0.96
Set add up to 64 items then delete last 2.2141 us/op 2.2959 us/op 0.96
OrderedSet add up to 64 items then delete last 3.2991 us/op 3.2818 us/op 1.01
Set add up to 64 items then delete middle 2.3220 us/op 2.3293 us/op 1.00
OrderedSet add up to 64 items then delete middle 4.8630 us/op 4.8796 us/op 1.00
Set add up to 128 items then delete first 4.8268 us/op 4.7524 us/op 1.02
OrderedSet add up to 128 items then delete first 7.4597 us/op 7.1354 us/op 1.05
Set add up to 128 items then delete last 4.6544 us/op 4.6090 us/op 1.01
OrderedSet add up to 128 items then delete last 6.7759 us/op 6.7019 us/op 1.01
Set add up to 128 items then delete middle 4.5179 us/op 4.5740 us/op 0.99
OrderedSet add up to 128 items then delete middle 13.263 us/op 13.022 us/op 1.02
Set add up to 256 items then delete first 10.335 us/op 10.078 us/op 1.03
OrderedSet add up to 256 items then delete first 15.326 us/op 15.194 us/op 1.01
Set add up to 256 items then delete last 9.7953 us/op 9.5386 us/op 1.03
OrderedSet add up to 256 items then delete last 13.984 us/op 13.582 us/op 1.03
Set add up to 256 items then delete middle 9.4186 us/op 9.1898 us/op 1.02
OrderedSet add up to 256 items then delete middle 40.510 us/op 40.303 us/op 1.01
pass gossip attestations to forkchoice per slot 2.5890 ms/op 2.4140 ms/op 1.07
forkChoice updateHead vc 100000 bc 64 eq 0 504.09 us/op 477.02 us/op 1.06
forkChoice updateHead vc 600000 bc 64 eq 0 2.9695 ms/op 2.8397 ms/op 1.05
forkChoice updateHead vc 1000000 bc 64 eq 0 4.9490 ms/op 4.7327 ms/op 1.05
forkChoice updateHead vc 600000 bc 320 eq 0 2.9732 ms/op 2.8492 ms/op 1.04
forkChoice updateHead vc 600000 bc 1200 eq 0 3.0358 ms/op 2.8905 ms/op 1.05
forkChoice updateHead vc 600000 bc 7200 eq 0 3.3340 ms/op 3.1498 ms/op 1.06
forkChoice updateHead vc 600000 bc 64 eq 1000 3.4012 ms/op 3.2622 ms/op 1.04
forkChoice updateHead vc 600000 bc 64 eq 10000 3.5452 ms/op 3.3787 ms/op 1.05
forkChoice updateHead vc 600000 bc 64 eq 300000 9.6800 ms/op 8.8655 ms/op 1.09
computeDeltas 1400000 validators 0% inactive 14.565 ms/op 14.085 ms/op 1.03
computeDeltas 1400000 validators 10% inactive 13.728 ms/op 13.192 ms/op 1.04
computeDeltas 1400000 validators 20% inactive 12.536 ms/op 12.307 ms/op 1.02
computeDeltas 1400000 validators 50% inactive 9.4789 ms/op 9.6720 ms/op 0.98
computeDeltas 2100000 validators 0% inactive 21.826 ms/op 21.163 ms/op 1.03
computeDeltas 2100000 validators 10% inactive 20.304 ms/op 19.812 ms/op 1.02
computeDeltas 2100000 validators 20% inactive 18.191 ms/op 18.547 ms/op 0.98
computeDeltas 2100000 validators 50% inactive 14.687 ms/op 14.678 ms/op 1.00
altair processAttestation - 250000 vs - 7PWei normalcase 1.8170 ms/op 1.9161 ms/op 0.95
altair processAttestation - 250000 vs - 7PWei worstcase 2.8200 ms/op 2.8118 ms/op 1.00
altair processAttestation - setStatus - 1/6 committees join 122.79 us/op 113.97 us/op 1.08
altair processAttestation - setStatus - 1/3 committees join 233.46 us/op 228.03 us/op 1.02
altair processAttestation - setStatus - 1/2 committees join 319.00 us/op 327.16 us/op 0.98
altair processAttestation - setStatus - 2/3 committees join 405.23 us/op 422.94 us/op 0.96
altair processAttestation - setStatus - 4/5 committees join 591.12 us/op 579.59 us/op 1.02
altair processAttestation - setStatus - 100% committees join 675.77 us/op 688.71 us/op 0.98
altair processBlock - 250000 vs - 7PWei normalcase 4.2798 ms/op 3.5552 ms/op 1.20
altair processBlock - 250000 vs - 7PWei normalcase hashState 18.028 ms/op 17.088 ms/op 1.06
altair processBlock - 250000 vs - 7PWei worstcase 23.384 ms/op 28.720 ms/op 0.81
altair processBlock - 250000 vs - 7PWei worstcase hashState 54.157 ms/op 59.613 ms/op 0.91
phase0 processBlock - 250000 vs - 7PWei normalcase 1.4383 ms/op 1.4611 ms/op 0.98
phase0 processBlock - 250000 vs - 7PWei worstcase 18.908 ms/op 20.279 ms/op 0.93
altair processEth1Data - 250000 vs - 7PWei normalcase 349.88 us/op 337.49 us/op 1.04
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 6.8500 us/op 11.091 us/op 0.62
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 35.201 us/op 57.467 us/op 0.61
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 10.378 us/op 9.9570 us/op 1.04
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 6.3450 us/op 6.4230 us/op 0.99
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 138.23 us/op 245.67 us/op 0.56
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.9094 ms/op 1.9339 ms/op 0.99
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.4334 ms/op 2.2870 ms/op 1.06
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.4452 ms/op 2.2698 ms/op 1.08
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.3879 ms/op 4.4492 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.4879 ms/op 2.9269 ms/op 0.85
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.5841 ms/op 4.6871 ms/op 0.98
Tree 40 250000 create 359.84 ms/op 367.70 ms/op 0.98
Tree 40 250000 get(125000) 124.22 ns/op 123.63 ns/op 1.00
Tree 40 250000 set(125000) 1.2188 us/op 1.2240 us/op 1.00
Tree 40 250000 toArray() 13.661 ms/op 17.626 ms/op 0.78
Tree 40 250000 iterate all - toArray() + loop 16.709 ms/op 14.463 ms/op 1.16
Tree 40 250000 iterate all - get(i) 45.284 ms/op 45.400 ms/op 1.00
Array 250000 create 2.5279 ms/op 2.5975 ms/op 0.97
Array 250000 clone - spread 816.38 us/op 849.61 us/op 0.96
Array 250000 get(125000) 0.34700 ns/op 0.35400 ns/op 0.98
Array 250000 set(125000) 0.34800 ns/op 0.35600 ns/op 0.98
Array 250000 iterate all - loop 61.370 us/op 62.037 us/op 0.99
phase0 afterProcessEpoch - 250000 vs - 7PWei 41.613 ms/op 42.143 ms/op 0.99
Array.fill - length 1000000 3.6906 ms/op 3.0160 ms/op 1.22
Array push - length 1000000 9.7692 ms/op 11.391 ms/op 0.86
Array.get 0.21543 ns/op 0.22359 ns/op 0.96
Uint8Array.get 0.22178 ns/op 0.22727 ns/op 0.98
phase0 beforeProcessEpoch - 250000 vs - 7PWei 12.981 ms/op 14.177 ms/op 0.92
altair processEpoch - mainnet_e81889 242.53 ms/op 283.91 ms/op 0.85
mainnet_e81889 - altair beforeProcessEpoch 18.656 ms/op 16.750 ms/op 1.11
mainnet_e81889 - altair processJustificationAndFinalization 5.4860 us/op 5.2150 us/op 1.05
mainnet_e81889 - altair processInactivityUpdates 3.7864 ms/op 3.8943 ms/op 0.97
mainnet_e81889 - altair processRewardsAndPenalties 18.368 ms/op 18.681 ms/op 0.98
mainnet_e81889 - altair processRegistryUpdates 617.00 ns/op 753.00 ns/op 0.82
mainnet_e81889 - altair processSlashings 167.00 ns/op 192.00 ns/op 0.87
mainnet_e81889 - altair processEth1DataReset 160.00 ns/op 191.00 ns/op 0.84
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.6188 ms/op 2.0390 ms/op 1.28
mainnet_e81889 - altair processSlashingsReset 774.00 ns/op 816.00 ns/op 0.95
mainnet_e81889 - altair processRandaoMixesReset 1.0050 us/op 1.2430 us/op 0.81
mainnet_e81889 - altair processHistoricalRootsUpdate 162.00 ns/op 164.00 ns/op 0.99
mainnet_e81889 - altair processParticipationFlagUpdates 486.00 ns/op 520.00 ns/op 0.93
mainnet_e81889 - altair processSyncCommitteeUpdates 127.00 ns/op 141.00 ns/op 0.90
mainnet_e81889 - altair afterProcessEpoch 43.184 ms/op 44.424 ms/op 0.97
capella processEpoch - mainnet_e217614 827.63 ms/op 821.23 ms/op 1.01
mainnet_e217614 - capella beforeProcessEpoch 70.891 ms/op 61.326 ms/op 1.16
mainnet_e217614 - capella processJustificationAndFinalization 5.7020 us/op 5.5520 us/op 1.03
mainnet_e217614 - capella processInactivityUpdates 20.827 ms/op 17.928 ms/op 1.16
mainnet_e217614 - capella processRewardsAndPenalties 104.23 ms/op 100.55 ms/op 1.04
mainnet_e217614 - capella processRegistryUpdates 6.4650 us/op 6.5340 us/op 0.99
mainnet_e217614 - capella processSlashings 171.00 ns/op 184.00 ns/op 0.93
mainnet_e217614 - capella processEth1DataReset 175.00 ns/op 181.00 ns/op 0.97
mainnet_e217614 - capella processEffectiveBalanceUpdates 15.182 ms/op 15.555 ms/op 0.98
mainnet_e217614 - capella processSlashingsReset 838.00 ns/op 950.00 ns/op 0.88
mainnet_e217614 - capella processRandaoMixesReset 1.0970 us/op 1.2130 us/op 0.90
mainnet_e217614 - capella processHistoricalRootsUpdate 173.00 ns/op 203.00 ns/op 0.85
mainnet_e217614 - capella processParticipationFlagUpdates 533.00 ns/op 564.00 ns/op 0.95
mainnet_e217614 - capella afterProcessEpoch 120.97 ms/op 117.01 ms/op 1.03
phase0 processEpoch - mainnet_e58758 242.06 ms/op 271.83 ms/op 0.89
mainnet_e58758 - phase0 beforeProcessEpoch 51.443 ms/op 63.380 ms/op 0.81
mainnet_e58758 - phase0 processJustificationAndFinalization 5.4150 us/op 6.6280 us/op 0.82
mainnet_e58758 - phase0 processRewardsAndPenalties 19.251 ms/op 19.508 ms/op 0.99
mainnet_e58758 - phase0 processRegistryUpdates 3.6300 us/op 3.1220 us/op 1.16
mainnet_e58758 - phase0 processSlashings 185.00 ns/op 165.00 ns/op 1.12
mainnet_e58758 - phase0 processEth1DataReset 176.00 ns/op 177.00 ns/op 0.99
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 976.71 us/op 1.2209 ms/op 0.80
mainnet_e58758 - phase0 processSlashingsReset 948.00 ns/op 887.00 ns/op 1.07
mainnet_e58758 - phase0 processRandaoMixesReset 1.1080 us/op 1.2980 us/op 0.85
mainnet_e58758 - phase0 processHistoricalRootsUpdate 187.00 ns/op 202.00 ns/op 0.93
mainnet_e58758 - phase0 processParticipationRecordUpdates 835.00 ns/op 935.00 ns/op 0.89
mainnet_e58758 - phase0 afterProcessEpoch 37.081 ms/op 36.314 ms/op 1.02
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3603 ms/op 1.7314 ms/op 0.79
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.1314 ms/op 2.2104 ms/op 0.96
altair processInactivityUpdates - 250000 normalcase 14.527 ms/op 14.478 ms/op 1.00
altair processInactivityUpdates - 250000 worstcase 13.718 ms/op 13.511 ms/op 1.02
phase0 processRegistryUpdates - 250000 normalcase 5.6570 us/op 4.9620 us/op 1.14
phase0 processRegistryUpdates - 250000 badcase_full_deposits 300.48 us/op 346.47 us/op 0.87
phase0 processRegistryUpdates - 250000 worstcase 0.5 74.499 ms/op 74.902 ms/op 0.99
altair processRewardsAndPenalties - 250000 normalcase 18.489 ms/op 21.690 ms/op 0.85
altair processRewardsAndPenalties - 250000 worstcase 20.036 ms/op 16.224 ms/op 1.23
phase0 getAttestationDeltas - 250000 normalcase 7.1976 ms/op 6.9361 ms/op 1.04
phase0 getAttestationDeltas - 250000 worstcase 7.2926 ms/op 5.9520 ms/op 1.23
phase0 processSlashings - 250000 worstcase 116.66 us/op 162.28 us/op 0.72
altair processSyncCommitteeUpdates - 250000 12.057 ms/op 11.454 ms/op 1.05
BeaconState.hashTreeRoot - No change 214.00 ns/op 201.00 ns/op 1.06
BeaconState.hashTreeRoot - 1 full validator 89.028 us/op 92.211 us/op 0.97
BeaconState.hashTreeRoot - 32 full validator 967.37 us/op 1.0881 ms/op 0.89
BeaconState.hashTreeRoot - 512 full validator 9.2793 ms/op 8.4672 ms/op 1.10
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 141.74 us/op 111.26 us/op 1.27
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.2090 ms/op 1.4203 ms/op 1.56
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 19.788 ms/op 18.600 ms/op 1.06
BeaconState.hashTreeRoot - 1 balances 85.433 us/op 80.347 us/op 1.06
BeaconState.hashTreeRoot - 32 balances 910.75 us/op 980.58 us/op 0.93
BeaconState.hashTreeRoot - 512 balances 6.7935 ms/op 6.7312 ms/op 1.01
BeaconState.hashTreeRoot - 250000 balances 160.80 ms/op 176.90 ms/op 0.91
aggregationBits - 2048 els - zipIndexesInBitList 22.635 us/op 20.519 us/op 1.10
regular array get 100000 times 26.287 us/op 24.146 us/op 1.09
wrappedArray get 100000 times 26.183 us/op 24.013 us/op 1.09
arrayWithProxy get 100000 times 15.400 ms/op 13.547 ms/op 1.14
ssz.Root.equals 25.197 ns/op 23.673 ns/op 1.06
byteArrayEquals 25.232 ns/op 23.138 ns/op 1.09
Buffer.compare 10.557 ns/op 10.039 ns/op 1.05
processSlot - 1 slots 12.131 us/op 12.513 us/op 0.97
processSlot - 32 slots 2.8975 ms/op 2.2790 ms/op 1.27
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 4.9686 ms/op 5.2424 ms/op 0.95
getCommitteeAssignments - req 1 vs - 250000 vc 2.0013 ms/op 1.8893 ms/op 1.06
getCommitteeAssignments - req 100 vs - 250000 vc 3.9804 ms/op 3.7173 ms/op 1.07
getCommitteeAssignments - req 1000 vs - 250000 vc 4.2220 ms/op 3.9754 ms/op 1.06
findModifiedValidators - 10000 modified validators 713.21 ms/op 614.92 ms/op 1.16
findModifiedValidators - 1000 modified validators 554.44 ms/op 379.37 ms/op 1.46
findModifiedValidators - 100 modified validators 273.61 ms/op 250.03 ms/op 1.09
findModifiedValidators - 10 modified validators 239.77 ms/op 193.28 ms/op 1.24
findModifiedValidators - 1 modified validators 189.01 ms/op 163.35 ms/op 1.16
findModifiedValidators - no difference 203.01 ms/op 149.10 ms/op 1.36
migrate state 1500000 validators, 3400 modified, 2000 new 1.1733 s/op 1.0966 s/op 1.07
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.8700 ns/op 4.2300 ns/op 1.15
state getBlockRootAtSlot - 250000 vs - 7PWei 598.96 ns/op 565.20 ns/op 1.06
computeProposerIndex 100000 validators 1.7357 ms/op 1.5583 ms/op 1.11
getNextSyncCommitteeIndices 1000 validators 139.15 ms/op 121.06 ms/op 1.15
getNextSyncCommitteeIndices 10000 validators 136.13 ms/op 120.99 ms/op 1.13
getNextSyncCommitteeIndices 100000 validators 135.85 ms/op 119.63 ms/op 1.14
computeProposers - vc 250000 708.95 us/op 689.00 us/op 1.03
computeEpochShuffling - vc 250000 45.286 ms/op 42.764 ms/op 1.06
getNextSyncCommittee - vc 250000 16.612 ms/op 10.889 ms/op 1.53
nodejs block root to RootHex using toHex 158.22 ns/op 149.76 ns/op 1.06
nodejs block root to RootHex using toRootHex 93.405 ns/op 84.968 ns/op 1.10
nodejs fromHex(blob) 413.34 us/op 351.60 us/op 1.18
nodejs fromHexInto(blob) 751.89 us/op 722.93 us/op 1.04
nodejs block root to RootHex using the deprecated toHexString 586.43 ns/op 566.47 ns/op 1.04
browser block root to RootHex using toHex 288.74 ns/op 304.33 ns/op 0.95
browser block root to RootHex using toRootHex 160.85 ns/op 154.95 ns/op 1.04
browser fromHex(blob) 1.0849 ms/op 927.02 us/op 1.17
browser fromHexInto(blob) 737.52 us/op 702.36 us/op 1.05
browser block root to RootHex using the deprecated toHexString 421.21 ns/op 378.73 ns/op 1.11

by benchmarkbot/action

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