-
-
Notifications
You must be signed in to change notification settings - Fork 277
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
feat: add and support builder_boost_factor query param to produceBlockV3 api #6236
Conversation
d8b2318
to
1f7aad0
Compare
383859c
to
b093016
Compare
|
Benchmark suite | Current: 5767950 | Previous: b3e5621 | Ratio |
---|---|---|---|
isKnown best case - 1 super set check | 1.0280 us/op | 319.00 ns/op | 3.22 |
isKnown normal case - 2 super set checks | 1.0760 us/op | 328.00 ns/op | 3.28 |
Full benchmark results
Benchmark suite | Current: 5767950 | Previous: b3e5621 | Ratio |
---|---|---|---|
getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 631.10 us/op | 1.2815 ms/op | 0.49 |
getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 60.861 us/op | 107.74 us/op | 0.56 |
BLS verify - blst-native | 1.2068 ms/op | 1.1448 ms/op | 1.05 |
BLS verifyMultipleSignatures 3 - blst-native | 2.4692 ms/op | 2.4639 ms/op | 1.00 |
BLS verifyMultipleSignatures 8 - blst-native | 5.2532 ms/op | 5.4111 ms/op | 0.97 |
BLS verifyMultipleSignatures 32 - blst-native | 19.335 ms/op | 19.973 ms/op | 0.97 |
BLS verifyMultipleSignatures 64 - blst-native | 39.232 ms/op | 39.057 ms/op | 1.00 |
BLS verifyMultipleSignatures 128 - blst-native | 77.217 ms/op | 78.251 ms/op | 0.99 |
BLS deserializing 10000 signatures | 797.17 ms/op | 851.65 ms/op | 0.94 |
BLS deserializing 100000 signatures | 8.8904 s/op | 8.8117 s/op | 1.01 |
BLS verifyMultipleSignatures - same message - 3 - blst-native | 1.2097 ms/op | 1.2193 ms/op | 0.99 |
BLS verifyMultipleSignatures - same message - 8 - blst-native | 1.7668 ms/op | 1.3382 ms/op | 1.32 |
BLS verifyMultipleSignatures - same message - 32 - blst-native | 2.5610 ms/op | 2.6840 ms/op | 0.95 |
BLS verifyMultipleSignatures - same message - 64 - blst-native | 3.4748 ms/op | 3.1328 ms/op | 1.11 |
BLS verifyMultipleSignatures - same message - 128 - blst-native | 5.5098 ms/op | 6.4141 ms/op | 0.86 |
BLS aggregatePubkeys 32 - blst-native | 27.842 us/op | 23.915 us/op | 1.16 |
BLS aggregatePubkeys 128 - blst-native | 91.816 us/op | 90.144 us/op | 1.02 |
getAttestationsForBlock | 67.755 ms/op | 40.353 ms/op | 1.68 |
getSlashingsAndExits - default max | 172.36 us/op | 183.93 us/op | 0.94 |
getSlashingsAndExits - 2k | 672.78 us/op | 366.09 us/op | 1.84 |
proposeBlockBody type=full, size=empty | 7.9579 ms/op | 4.2018 ms/op | 1.89 |
isKnown best case - 1 super set check | 1.0280 us/op | 319.00 ns/op | 3.22 |
isKnown normal case - 2 super set checks | 1.0760 us/op | 328.00 ns/op | 3.28 |
isKnown worse case - 16 super set checks | 959.00 ns/op | 321.00 ns/op | 2.99 |
CheckpointStateCache - add get delete | 9.7560 us/op | 3.5940 us/op | 2.71 |
validate api signedAggregateAndProof - struct | 3.2955 ms/op | 2.3784 ms/op | 1.39 |
validate gossip signedAggregateAndProof - struct | 3.1404 ms/op | 2.3781 ms/op | 1.32 |
validate gossip attestation - vc 640000 | 1.1910 ms/op | 1.1325 ms/op | 1.05 |
batch validate gossip attestation - vc 640000 - chunk 32 | 136.06 us/op | 140.63 us/op | 0.97 |
batch validate gossip attestation - vc 640000 - chunk 64 | 122.01 us/op | 123.13 us/op | 0.99 |
batch validate gossip attestation - vc 640000 - chunk 128 | 119.62 us/op | 114.92 us/op | 1.04 |
batch validate gossip attestation - vc 640000 - chunk 256 | 104.34 us/op | 109.62 us/op | 0.95 |
pickEth1Vote - no votes | 844.10 us/op | 851.95 us/op | 0.99 |
pickEth1Vote - max votes | 5.9983 ms/op | 5.4657 ms/op | 1.10 |
pickEth1Vote - Eth1Data hashTreeRoot value x2048 | 11.114 ms/op | 11.594 ms/op | 0.96 |
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 | 22.048 ms/op | 19.478 ms/op | 1.13 |
pickEth1Vote - Eth1Data fastSerialize value x2048 | 387.90 us/op | 416.32 us/op | 0.93 |
pickEth1Vote - Eth1Data fastSerialize tree x2048 | 3.1440 ms/op | 4.3974 ms/op | 0.71 |
bytes32 toHexString | 417.00 ns/op | 453.00 ns/op | 0.92 |
bytes32 Buffer.toString(hex) | 301.00 ns/op | 309.00 ns/op | 0.97 |
bytes32 Buffer.toString(hex) from Uint8Array | 402.00 ns/op | 424.00 ns/op | 0.95 |
bytes32 Buffer.toString(hex) + 0x | 300.00 ns/op | 315.00 ns/op | 0.95 |
Object access 1 prop | 0.18200 ns/op | 0.19500 ns/op | 0.93 |
Map access 1 prop | 0.18200 ns/op | 0.19200 ns/op | 0.95 |
Object get x1000 | 4.7880 ns/op | 5.4000 ns/op | 0.89 |
Map get x1000 | 0.68500 ns/op | 0.71800 ns/op | 0.95 |
Object set x1000 | 24.470 ns/op | 28.247 ns/op | 0.87 |
Map set x1000 | 16.911 ns/op | 16.851 ns/op | 1.00 |
Return object 10000 times | 0.21430 ns/op | 0.22480 ns/op | 0.95 |
Throw Error 10000 times | 2.5682 us/op | 2.8004 us/op | 0.92 |
fastMsgIdFn sha256 / 200 bytes | 1.8380 us/op | 1.9590 us/op | 0.94 |
fastMsgIdFn h32 xxhash / 200 bytes | 280.00 ns/op | 288.00 ns/op | 0.97 |
fastMsgIdFn h64 xxhash / 200 bytes | 336.00 ns/op | 341.00 ns/op | 0.99 |
fastMsgIdFn sha256 / 1000 bytes | 5.9980 us/op | 6.1260 us/op | 0.98 |
fastMsgIdFn h32 xxhash / 1000 bytes | 608.00 ns/op | 408.00 ns/op | 1.49 |
fastMsgIdFn h64 xxhash / 1000 bytes | 430.00 ns/op | 408.00 ns/op | 1.05 |
fastMsgIdFn sha256 / 10000 bytes | 49.977 us/op | 53.069 us/op | 0.94 |
fastMsgIdFn h32 xxhash / 10000 bytes | 1.7320 us/op | 1.8390 us/op | 0.94 |
fastMsgIdFn h64 xxhash / 10000 bytes | 1.1660 us/op | 1.2290 us/op | 0.95 |
send data - 1000 256B messages | 12.832 ms/op | 11.246 ms/op | 1.14 |
send data - 1000 512B messages | 15.286 ms/op | 15.053 ms/op | 1.02 |
send data - 1000 1024B messages | 22.184 ms/op | 22.531 ms/op | 0.98 |
send data - 1000 1200B messages | 28.300 ms/op | 28.852 ms/op | 0.98 |
send data - 1000 2048B messages | 33.932 ms/op | 31.190 ms/op | 1.09 |
send data - 1000 4096B messages | 31.178 ms/op | 29.328 ms/op | 1.06 |
send data - 1000 16384B messages | 93.075 ms/op | 85.292 ms/op | 1.09 |
send data - 1000 65536B messages | 389.94 ms/op | 376.25 ms/op | 1.04 |
enrSubnets - fastDeserialize 64 bits | 923.00 ns/op | 1.0540 us/op | 0.88 |
enrSubnets - ssz BitVector 64 bits | 409.00 ns/op | 414.00 ns/op | 0.99 |
enrSubnets - fastDeserialize 4 bits | 195.00 ns/op | 203.00 ns/op | 0.96 |
enrSubnets - ssz BitVector 4 bits | 410.00 ns/op | 419.00 ns/op | 0.98 |
prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 65.068 us/op | 69.598 us/op | 0.93 |
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 77.785 us/op | 93.380 us/op | 0.83 |
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 106.62 us/op | 119.42 us/op | 0.89 |
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 173.91 us/op | 175.99 us/op | 0.99 |
prioritizePeers score 0:0 att 64-1 sync 4-1 | 203.46 us/op | 200.28 us/op | 1.02 |
array of 16000 items push then shift | 1.2879 us/op | 1.2776 us/op | 1.01 |
LinkedList of 16000 items push then shift | 5.9220 ns/op | 5.8790 ns/op | 1.01 |
array of 16000 items push then pop | 79.317 ns/op | 59.475 ns/op | 1.33 |
LinkedList of 16000 items push then pop | 5.5990 ns/op | 5.6780 ns/op | 0.99 |
array of 24000 items push then shift | 1.7494 us/op | 1.9041 us/op | 0.92 |
LinkedList of 24000 items push then shift | 6.6690 ns/op | 5.8440 ns/op | 1.14 |
array of 24000 items push then pop | 87.259 ns/op | 93.896 ns/op | 0.93 |
LinkedList of 24000 items push then pop | 5.7160 ns/op | 5.4860 ns/op | 1.04 |
intersect bitArray bitLen 8 | 5.0330 ns/op | 4.6560 ns/op | 1.08 |
intersect array and set length 8 | 48.821 ns/op | 46.514 ns/op | 1.05 |
intersect bitArray bitLen 128 | 27.980 ns/op | 26.532 ns/op | 1.05 |
intersect array and set length 128 | 683.98 ns/op | 649.61 ns/op | 1.05 |
bitArray.getTrueBitIndexes() bitLen 128 | 1.1020 us/op | 1.2080 us/op | 0.91 |
bitArray.getTrueBitIndexes() bitLen 248 | 1.8920 us/op | 1.8500 us/op | 1.02 |
bitArray.getTrueBitIndexes() bitLen 512 | 3.5710 us/op | 3.4370 us/op | 1.04 |
Buffer.concat 32 items | 909.00 ns/op | 837.00 ns/op | 1.09 |
Uint8Array.set 32 items | 2.5370 us/op | 1.5040 us/op | 1.69 |
Set add up to 64 items then delete first | 1.7232 us/op | 1.7355 us/op | 0.99 |
OrderedSet add up to 64 items then delete first | 2.4585 us/op | 2.6724 us/op | 0.92 |
Set add up to 64 items then delete last | 1.9542 us/op | 1.8871 us/op | 1.04 |
OrderedSet add up to 64 items then delete last | 3.0651 us/op | 2.9664 us/op | 1.03 |
Set add up to 64 items then delete middle | 1.9868 us/op | 1.8852 us/op | 1.05 |
OrderedSet add up to 64 items then delete middle | 4.2958 us/op | 4.0697 us/op | 1.06 |
Set add up to 128 items then delete first | 3.9366 us/op | 3.6494 us/op | 1.08 |
OrderedSet add up to 128 items then delete first | 5.7388 us/op | 5.5143 us/op | 1.04 |
Set add up to 128 items then delete last | 3.7520 us/op | 3.6524 us/op | 1.03 |
OrderedSet add up to 128 items then delete last | 6.1024 us/op | 5.7242 us/op | 1.07 |
Set add up to 128 items then delete middle | 3.8327 us/op | 3.6197 us/op | 1.06 |
OrderedSet add up to 128 items then delete middle | 10.899 us/op | 10.720 us/op | 1.02 |
Set add up to 256 items then delete first | 7.0676 us/op | 7.4562 us/op | 0.95 |
OrderedSet add up to 256 items then delete first | 11.243 us/op | 11.305 us/op | 0.99 |
Set add up to 256 items then delete last | 7.3228 us/op | 7.4687 us/op | 0.98 |
OrderedSet add up to 256 items then delete last | 11.755 us/op | 11.770 us/op | 1.00 |
Set add up to 256 items then delete middle | 7.3679 us/op | 7.4144 us/op | 0.99 |
OrderedSet add up to 256 items then delete middle | 30.625 us/op | 30.428 us/op | 1.01 |
transfer serialized Status (84 B) | 1.4990 us/op | 1.3510 us/op | 1.11 |
copy serialized Status (84 B) | 1.2900 us/op | 1.3150 us/op | 0.98 |
transfer serialized SignedVoluntaryExit (112 B) | 1.4930 us/op | 1.5410 us/op | 0.97 |
copy serialized SignedVoluntaryExit (112 B) | 1.3050 us/op | 1.4040 us/op | 0.93 |
transfer serialized ProposerSlashing (416 B) | 2.6460 us/op | 1.9680 us/op | 1.34 |
copy serialized ProposerSlashing (416 B) | 3.0200 us/op | 1.8030 us/op | 1.67 |
transfer serialized Attestation (485 B) | 3.1460 us/op | 1.7620 us/op | 1.79 |
copy serialized Attestation (485 B) | 2.9660 us/op | 1.7190 us/op | 1.73 |
transfer serialized AttesterSlashing (33232 B) | 2.6520 us/op | 1.9510 us/op | 1.36 |
copy serialized AttesterSlashing (33232 B) | 5.3930 us/op | 3.8500 us/op | 1.40 |
transfer serialized Small SignedBeaconBlock (128000 B) | 3.1710 us/op | 1.8030 us/op | 1.76 |
copy serialized Small SignedBeaconBlock (128000 B) | 10.097 us/op | 8.3140 us/op | 1.21 |
transfer serialized Avg SignedBeaconBlock (200000 B) | 2.9150 us/op | 1.7910 us/op | 1.63 |
copy serialized Avg SignedBeaconBlock (200000 B) | 13.715 us/op | 12.103 us/op | 1.13 |
transfer serialized BlobsSidecar (524380 B) | 3.0160 us/op | 2.1200 us/op | 1.42 |
copy serialized BlobsSidecar (524380 B) | 74.508 us/op | 70.843 us/op | 1.05 |
transfer serialized Big SignedBeaconBlock (1000000 B) | 3.4500 us/op | 2.3310 us/op | 1.48 |
copy serialized Big SignedBeaconBlock (1000000 B) | 149.95 us/op | 174.67 us/op | 0.86 |
pass gossip attestations to forkchoice per slot | 2.8825 ms/op | 2.7009 ms/op | 1.07 |
forkChoice updateHead vc 100000 bc 64 eq 0 | 435.98 us/op | 420.16 us/op | 1.04 |
forkChoice updateHead vc 600000 bc 64 eq 0 | 2.6309 ms/op | 2.7476 ms/op | 0.96 |
forkChoice updateHead vc 1000000 bc 64 eq 0 | 4.5295 ms/op | 4.4828 ms/op | 1.01 |
forkChoice updateHead vc 600000 bc 320 eq 0 | 2.6167 ms/op | 2.5784 ms/op | 1.01 |
forkChoice updateHead vc 600000 bc 1200 eq 0 | 2.7530 ms/op | 2.7181 ms/op | 1.01 |
forkChoice updateHead vc 600000 bc 7200 eq 0 | 3.4946 ms/op | 3.2314 ms/op | 1.08 |
forkChoice updateHead vc 600000 bc 64 eq 1000 | 10.086 ms/op | 9.8299 ms/op | 1.03 |
forkChoice updateHead vc 600000 bc 64 eq 10000 | 9.8036 ms/op | 9.8426 ms/op | 1.00 |
forkChoice updateHead vc 600000 bc 64 eq 300000 | 12.200 ms/op | 11.878 ms/op | 1.03 |
computeDeltas 500000 validators 300 proto nodes | 3.1297 ms/op | 3.0961 ms/op | 1.01 |
computeDeltas 500000 validators 1200 proto nodes | 2.9563 ms/op | 2.9717 ms/op | 0.99 |
computeDeltas 500000 validators 7200 proto nodes | 2.9696 ms/op | 2.9095 ms/op | 1.02 |
computeDeltas 750000 validators 300 proto nodes | 4.7801 ms/op | 4.5089 ms/op | 1.06 |
computeDeltas 750000 validators 1200 proto nodes | 5.0882 ms/op | 4.5722 ms/op | 1.11 |
computeDeltas 750000 validators 7200 proto nodes | 4.5906 ms/op | 4.5691 ms/op | 1.00 |
computeDeltas 1400000 validators 300 proto nodes | 8.3568 ms/op | 8.3665 ms/op | 1.00 |
computeDeltas 1400000 validators 1200 proto nodes | 8.5575 ms/op | 8.3381 ms/op | 1.03 |
computeDeltas 1400000 validators 7200 proto nodes | 8.7590 ms/op | 8.6776 ms/op | 1.01 |
computeDeltas 2100000 validators 300 proto nodes | 12.773 ms/op | 13.230 ms/op | 0.97 |
computeDeltas 2100000 validators 1200 proto nodes | 12.671 ms/op | 13.045 ms/op | 0.97 |
computeDeltas 2100000 validators 7200 proto nodes | 12.931 ms/op | 13.789 ms/op | 0.94 |
computeProposerBoostScoreFromBalances 500000 validators | 3.2527 ms/op | 3.1512 ms/op | 1.03 |
computeProposerBoostScoreFromBalances 750000 validators | 3.2175 ms/op | 3.1570 ms/op | 1.02 |
computeProposerBoostScoreFromBalances 1400000 validators | 3.1551 ms/op | 3.1640 ms/op | 1.00 |
computeProposerBoostScoreFromBalances 2100000 validators | 3.1551 ms/op | 3.1716 ms/op | 0.99 |
altair processAttestation - 250000 vs - 7PWei normalcase | 1.3761 ms/op | 1.5328 ms/op | 0.90 |
altair processAttestation - 250000 vs - 7PWei worstcase | 2.1035 ms/op | 2.2651 ms/op | 0.93 |
altair processAttestation - setStatus - 1/6 committees join | 73.568 us/op | 73.001 us/op | 1.01 |
altair processAttestation - setStatus - 1/3 committees join | 133.01 us/op | 137.63 us/op | 0.97 |
altair processAttestation - setStatus - 1/2 committees join | 190.94 us/op | 204.97 us/op | 0.93 |
altair processAttestation - setStatus - 2/3 committees join | 263.54 us/op | 274.23 us/op | 0.96 |
altair processAttestation - setStatus - 4/5 committees join | 382.10 us/op | 391.70 us/op | 0.98 |
altair processAttestation - setStatus - 100% committees join | 462.49 us/op | 474.40 us/op | 0.97 |
altair processBlock - 250000 vs - 7PWei normalcase | 7.0573 ms/op | 9.0717 ms/op | 0.78 |
altair processBlock - 250000 vs - 7PWei normalcase hashState | 30.145 ms/op | 33.637 ms/op | 0.90 |
altair processBlock - 250000 vs - 7PWei worstcase | 33.906 ms/op | 30.372 ms/op | 1.12 |
altair processBlock - 250000 vs - 7PWei worstcase hashState | 86.633 ms/op | 96.347 ms/op | 0.90 |
phase0 processBlock - 250000 vs - 7PWei normalcase | 2.6904 ms/op | 2.6325 ms/op | 1.02 |
phase0 processBlock - 250000 vs - 7PWei worstcase | 25.076 ms/op | 25.803 ms/op | 0.97 |
altair processEth1Data - 250000 vs - 7PWei normalcase | 296.55 us/op | 298.94 us/op | 0.99 |
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 10.094 us/op | 3.7460 us/op | 2.69 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 55.690 us/op | 48.831 us/op | 1.14 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 15.174 us/op | 18.724 us/op | 0.81 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 3.7150 us/op | 10.196 us/op | 0.36 |
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 186.14 us/op | 152.06 us/op | 1.22 |
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 1.1031 ms/op | 1.1353 ms/op | 0.97 |
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 1.4759 ms/op | 837.96 us/op | 1.76 |
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 1.3240 ms/op | 827.06 us/op | 1.60 |
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 2.4077 ms/op | 2.1457 ms/op | 1.12 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 1.5246 ms/op | 1.4591 ms/op | 1.04 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 3.9113 ms/op | 3.8122 ms/op | 1.03 |
Tree 40 250000 create | 277.14 ms/op | 268.08 ms/op | 1.03 |
Tree 40 250000 get(125000) | 99.913 ns/op | 108.83 ns/op | 0.92 |
Tree 40 250000 set(125000) | 762.45 ns/op | 721.32 ns/op | 1.06 |
Tree 40 250000 toArray() | 14.536 ms/op | 9.5581 ms/op | 1.52 |
Tree 40 250000 iterate all - toArray() + loop | 14.799 ms/op | 9.5943 ms/op | 1.54 |
Tree 40 250000 iterate all - get(i) | 40.248 ms/op | 37.729 ms/op | 1.07 |
MutableVector 250000 create | 12.263 ms/op | 11.955 ms/op | 1.03 |
MutableVector 250000 get(125000) | 5.5190 ns/op | 5.8070 ns/op | 0.95 |
MutableVector 250000 set(125000) | 197.14 ns/op | 211.62 ns/op | 0.93 |
MutableVector 250000 toArray() | 2.1582 ms/op | 2.4814 ms/op | 0.87 |
MutableVector 250000 iterate all - toArray() + loop | 2.8009 ms/op | 2.6147 ms/op | 1.07 |
MutableVector 250000 iterate all - get(i) | 1.2794 ms/op | 1.2821 ms/op | 1.00 |
Array 250000 create | 2.8471 ms/op | 2.3494 ms/op | 1.21 |
Array 250000 clone - spread | 1.0946 ms/op | 1.0226 ms/op | 1.07 |
Array 250000 get(125000) | 0.99800 ns/op | 0.98900 ns/op | 1.01 |
Array 250000 set(125000) | 1.1710 ns/op | 1.1990 ns/op | 0.98 |
Array 250000 iterate all - loop | 144.66 us/op | 153.06 us/op | 0.95 |
effectiveBalanceIncrements clone Uint8Array 300000 | 20.017 us/op | 13.062 us/op | 1.53 |
effectiveBalanceIncrements clone MutableVector 300000 | 393.00 ns/op | 369.00 ns/op | 1.07 |
effectiveBalanceIncrements rw all Uint8Array 300000 | 182.03 us/op | 183.06 us/op | 0.99 |
effectiveBalanceIncrements rw all MutableVector 300000 | 62.284 ms/op | 60.821 ms/op | 1.02 |
phase0 afterProcessEpoch - 250000 vs - 7PWei | 75.206 ms/op | 73.655 ms/op | 1.02 |
phase0 beforeProcessEpoch - 250000 vs - 7PWei | 42.435 ms/op | 44.237 ms/op | 0.96 |
altair processEpoch - mainnet_e81889 | 415.01 ms/op | 429.98 ms/op | 0.97 |
mainnet_e81889 - altair beforeProcessEpoch | 71.213 ms/op | 65.942 ms/op | 1.08 |
mainnet_e81889 - altair processJustificationAndFinalization | 10.850 us/op | 9.3170 us/op | 1.16 |
mainnet_e81889 - altair processInactivityUpdates | 4.7333 ms/op | 5.2015 ms/op | 0.91 |
mainnet_e81889 - altair processRewardsAndPenalties | 47.242 ms/op | 61.885 ms/op | 0.76 |
mainnet_e81889 - altair processRegistryUpdates | 2.1950 us/op | 1.1370 us/op | 1.93 |
mainnet_e81889 - altair processSlashings | 557.00 ns/op | 556.00 ns/op | 1.00 |
mainnet_e81889 - altair processEth1DataReset | 590.00 ns/op | 536.00 ns/op | 1.10 |
mainnet_e81889 - altair processEffectiveBalanceUpdates | 1.7812 ms/op | 1.7153 ms/op | 1.04 |
mainnet_e81889 - altair processSlashingsReset | 3.3270 us/op | 2.0820 us/op | 1.60 |
mainnet_e81889 - altair processRandaoMixesReset | 3.7590 us/op | 5.3230 us/op | 0.71 |
mainnet_e81889 - altair processHistoricalRootsUpdate | 757.00 ns/op | 678.00 ns/op | 1.12 |
mainnet_e81889 - altair processParticipationFlagUpdates | 1.5620 us/op | 1.6600 us/op | 0.94 |
mainnet_e81889 - altair processSyncCommitteeUpdates | 679.00 ns/op | 558.00 ns/op | 1.22 |
mainnet_e81889 - altair afterProcessEpoch | 80.998 ms/op | 86.912 ms/op | 0.93 |
capella processEpoch - mainnet_e217614 | 1.9885 s/op | 1.8632 s/op | 1.07 |
mainnet_e217614 - capella beforeProcessEpoch | 497.85 ms/op | 419.16 ms/op | 1.19 |
mainnet_e217614 - capella processJustificationAndFinalization | 25.418 us/op | 11.987 us/op | 2.12 |
mainnet_e217614 - capella processInactivityUpdates | 18.740 ms/op | 14.761 ms/op | 1.27 |
mainnet_e217614 - capella processRewardsAndPenalties | 410.74 ms/op | 368.72 ms/op | 1.11 |
mainnet_e217614 - capella processRegistryUpdates | 23.828 us/op | 7.3180 us/op | 3.26 |
mainnet_e217614 - capella processSlashings | 738.00 ns/op | 348.00 ns/op | 2.12 |
mainnet_e217614 - capella processEth1DataReset | 549.00 ns/op | 343.00 ns/op | 1.60 |
mainnet_e217614 - capella processEffectiveBalanceUpdates | 11.591 ms/op | 6.9765 ms/op | 1.66 |
mainnet_e217614 - capella processSlashingsReset | 2.6850 us/op | 2.6640 us/op | 1.01 |
mainnet_e217614 - capella processRandaoMixesReset | 3.6150 us/op | 2.5390 us/op | 1.42 |
mainnet_e217614 - capella processHistoricalRootsUpdate | 717.00 ns/op | 568.00 ns/op | 1.26 |
mainnet_e217614 - capella processParticipationFlagUpdates | 1.2790 us/op | 1.1370 us/op | 1.12 |
mainnet_e217614 - capella afterProcessEpoch | 200.64 ms/op | 197.47 ms/op | 1.02 |
phase0 processEpoch - mainnet_e58758 | 396.46 ms/op | 397.18 ms/op | 1.00 |
mainnet_e58758 - phase0 beforeProcessEpoch | 117.60 ms/op | 114.39 ms/op | 1.03 |
mainnet_e58758 - phase0 processJustificationAndFinalization | 11.762 us/op | 6.8120 us/op | 1.73 |
mainnet_e58758 - phase0 processRewardsAndPenalties | 53.028 ms/op | 53.678 ms/op | 0.99 |
mainnet_e58758 - phase0 processRegistryUpdates | 4.1610 us/op | 7.1730 us/op | 0.58 |
mainnet_e58758 - phase0 processSlashings | 507.00 ns/op | 611.00 ns/op | 0.83 |
mainnet_e58758 - phase0 processEth1DataReset | 600.00 ns/op | 599.00 ns/op | 1.00 |
mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 1.3882 ms/op | 1.3694 ms/op | 1.01 |
mainnet_e58758 - phase0 processSlashingsReset | 2.3590 us/op | 3.7860 us/op | 0.62 |
mainnet_e58758 - phase0 processRandaoMixesReset | 2.5770 us/op | 2.3590 us/op | 1.09 |
mainnet_e58758 - phase0 processHistoricalRootsUpdate | 492.00 ns/op | 531.00 ns/op | 0.93 |
mainnet_e58758 - phase0 processParticipationRecordUpdates | 2.9650 us/op | 2.8340 us/op | 1.05 |
mainnet_e58758 - phase0 afterProcessEpoch | 65.265 ms/op | 64.539 ms/op | 1.01 |
phase0 processEffectiveBalanceUpdates - 250000 normalcase | 992.43 us/op | 953.60 us/op | 1.04 |
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 1.1629 ms/op | 1.1529 ms/op | 1.01 |
altair processInactivityUpdates - 250000 normalcase | 22.807 ms/op | 25.484 ms/op | 0.89 |
altair processInactivityUpdates - 250000 worstcase | 23.159 ms/op | 25.299 ms/op | 0.92 |
phase0 processRegistryUpdates - 250000 normalcase | 9.8790 us/op | 6.5710 us/op | 1.50 |
phase0 processRegistryUpdates - 250000 badcase_full_deposits | 357.85 us/op | 396.64 us/op | 0.90 |
phase0 processRegistryUpdates - 250000 worstcase 0.5 | 115.36 ms/op | 121.86 ms/op | 0.95 |
altair processRewardsAndPenalties - 250000 normalcase | 55.523 ms/op | 55.368 ms/op | 1.00 |
altair processRewardsAndPenalties - 250000 worstcase | 56.418 ms/op | 56.757 ms/op | 0.99 |
phase0 getAttestationDeltas - 250000 normalcase | 5.0075 ms/op | 5.4602 ms/op | 0.92 |
phase0 getAttestationDeltas - 250000 worstcase | 5.1543 ms/op | 5.4336 ms/op | 0.95 |
phase0 processSlashings - 250000 worstcase | 89.933 us/op | 89.470 us/op | 1.01 |
altair processSyncCommitteeUpdates - 250000 | 98.852 ms/op | 104.95 ms/op | 0.94 |
BeaconState.hashTreeRoot - No change | 316.00 ns/op | 366.00 ns/op | 0.86 |
BeaconState.hashTreeRoot - 1 full validator | 97.471 us/op | 130.00 us/op | 0.75 |
BeaconState.hashTreeRoot - 32 full validator | 1.3488 ms/op | 1.7755 ms/op | 0.76 |
BeaconState.hashTreeRoot - 512 full validator | 12.182 ms/op | 17.588 ms/op | 0.69 |
BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 112.01 us/op | 172.03 us/op | 0.65 |
BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 1.5033 ms/op | 1.9379 ms/op | 0.78 |
BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 21.701 ms/op | 27.108 ms/op | 0.80 |
BeaconState.hashTreeRoot - 1 balances | 95.735 us/op | 165.19 us/op | 0.58 |
BeaconState.hashTreeRoot - 32 balances | 882.07 us/op | 1.6320 ms/op | 0.54 |
BeaconState.hashTreeRoot - 512 balances | 8.3401 ms/op | 15.062 ms/op | 0.55 |
BeaconState.hashTreeRoot - 250000 balances | 176.03 ms/op | 211.37 ms/op | 0.83 |
aggregationBits - 2048 els - zipIndexesInBitList | 13.369 us/op | 11.007 us/op | 1.21 |
byteArrayEquals 32 | 61.929 ns/op | 64.645 ns/op | 0.96 |
Buffer.compare 32 | 35.567 ns/op | 37.250 ns/op | 0.95 |
byteArrayEquals 1024 | 1.6750 us/op | 1.7724 us/op | 0.95 |
Buffer.compare 1024 | 40.743 ns/op | 44.260 ns/op | 0.92 |
byteArrayEquals 16384 | 26.095 us/op | 28.315 us/op | 0.92 |
Buffer.compare 16384 | 184.41 ns/op | 228.47 ns/op | 0.81 |
byteArrayEquals 123687377 | 211.16 ms/op | 195.50 ms/op | 1.08 |
Buffer.compare 123687377 | 4.1787 ms/op | 5.2811 ms/op | 0.79 |
byteArrayEquals 32 - diff last byte | 58.806 ns/op | 57.014 ns/op | 1.03 |
Buffer.compare 32 - diff last byte | 44.930 ns/op | 34.398 ns/op | 1.31 |
byteArrayEquals 1024 - diff last byte | 1.6874 us/op | 1.5525 us/op | 1.09 |
Buffer.compare 1024 - diff last byte | 46.381 ns/op | 38.555 ns/op | 1.20 |
byteArrayEquals 16384 - diff last byte | 27.298 us/op | 24.305 us/op | 1.12 |
Buffer.compare 16384 - diff last byte | 226.52 ns/op | 205.95 ns/op | 1.10 |
byteArrayEquals 123687377 - diff last byte | 201.00 ms/op | 188.60 ms/op | 1.07 |
Buffer.compare 123687377 - diff last byte | 3.8281 ms/op | 5.2833 ms/op | 0.72 |
byteArrayEquals 32 - random bytes | 4.5710 ns/op | 4.3030 ns/op | 1.06 |
Buffer.compare 32 - random bytes | 39.616 ns/op | 36.876 ns/op | 1.07 |
byteArrayEquals 1024 - random bytes | 4.4190 ns/op | 4.2310 ns/op | 1.04 |
Buffer.compare 1024 - random bytes | 37.289 ns/op | 34.849 ns/op | 1.07 |
byteArrayEquals 16384 - random bytes | 4.4170 ns/op | 4.2340 ns/op | 1.04 |
Buffer.compare 16384 - random bytes | 37.315 ns/op | 34.743 ns/op | 1.07 |
byteArrayEquals 123687377 - random bytes | 7.8100 ns/op | 7.3700 ns/op | 1.06 |
Buffer.compare 123687377 - random bytes | 42.910 ns/op | 36.850 ns/op | 1.16 |
regular array get 100000 times | 40.886 us/op | 38.989 us/op | 1.05 |
wrappedArray get 100000 times | 40.830 us/op | 38.952 us/op | 1.05 |
arrayWithProxy get 100000 times | 9.9483 ms/op | 9.1432 ms/op | 1.09 |
ssz.Root.equals | 53.697 ns/op | 52.966 ns/op | 1.01 |
byteArrayEquals | 53.288 ns/op | 51.727 ns/op | 1.03 |
Buffer.compare | 9.2000 ns/op | 8.6450 ns/op | 1.06 |
shuffle list - 16384 els | 4.2830 ms/op | 4.3496 ms/op | 0.98 |
shuffle list - 250000 els | 62.504 ms/op | 63.827 ms/op | 0.98 |
processSlot - 1 slots | 17.528 us/op | 15.575 us/op | 1.13 |
processSlot - 32 slots | 3.4843 ms/op | 3.3358 ms/op | 1.04 |
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 59.915 ms/op | 54.670 ms/op | 1.10 |
getCommitteeAssignments - req 1 vs - 250000 vc | 2.1308 ms/op | 2.2252 ms/op | 0.96 |
getCommitteeAssignments - req 100 vs - 250000 vc | 3.3012 ms/op | 3.2258 ms/op | 1.02 |
getCommitteeAssignments - req 1000 vs - 250000 vc | 3.4891 ms/op | 3.5174 ms/op | 0.99 |
findModifiedValidators - 10000 modified validators | 389.90 ms/op | 416.75 ms/op | 0.94 |
findModifiedValidators - 1000 modified validators | 322.23 ms/op | 308.22 ms/op | 1.05 |
findModifiedValidators - 100 modified validators | 282.63 ms/op | 289.19 ms/op | 0.98 |
findModifiedValidators - 10 modified validators | 306.70 ms/op | 302.28 ms/op | 1.01 |
findModifiedValidators - 1 modified validators | 272.20 ms/op | 307.49 ms/op | 0.89 |
findModifiedValidators - no difference | 268.41 ms/op | 305.23 ms/op | 0.88 |
compare ViewDUs | 3.8993 s/op | 3.8320 s/op | 1.02 |
compare each validator Uint8Array | 1.4902 s/op | 1.6857 s/op | 0.88 |
compare ViewDU to Uint8Array | 790.43 ms/op | 755.85 ms/op | 1.05 |
migrate state 1000000 validators, 24 modified, 0 new | 751.34 ms/op | 754.18 ms/op | 1.00 |
migrate state 1000000 validators, 1700 modified, 1000 new | 1.0231 s/op | 1.0521 s/op | 0.97 |
migrate state 1000000 validators, 3400 modified, 2000 new | 1.2193 s/op | 1.2492 s/op | 0.98 |
migrate state 1500000 validators, 24 modified, 0 new | 745.63 ms/op | 752.33 ms/op | 0.99 |
migrate state 1500000 validators, 1700 modified, 1000 new | 1.0607 s/op | 1.0058 s/op | 1.05 |
migrate state 1500000 validators, 3400 modified, 2000 new | 1.2342 s/op | 1.2487 s/op | 0.99 |
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 4.7100 ns/op | 4.3600 ns/op | 1.08 |
state getBlockRootAtSlot - 250000 vs - 7PWei | 799.08 ns/op | 652.72 ns/op | 1.22 |
computeProposers - vc 250000 | 6.4508 ms/op | 6.4556 ms/op | 1.00 |
computeEpochShuffling - vc 250000 | 70.026 ms/op | 66.664 ms/op | 1.05 |
getNextSyncCommittee - vc 250000 | 132.35 ms/op | 110.57 ms/op | 1.20 |
computeSigningRoot for AttestationData | 36.222 us/op | 30.423 us/op | 1.19 |
hash AttestationData serialized data then Buffer.toString(base64) | 1.2912 us/op | 1.2099 us/op | 1.07 |
toHexString serialized data | 868.98 ns/op | 750.11 ns/op | 1.16 |
Buffer.toString(base64) | 141.94 ns/op | 145.55 ns/op | 0.98 |
by benchmarkbot/action
Linking issue #6226 🙂 |
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## unstable #6236 +/- ##
============================================
+ Coverage 80.31% 80.38% +0.07%
============================================
Files 202 202
Lines 19543 19622 +79
Branches 1169 1176 +7
============================================
+ Hits 15695 15773 +78
- Misses 3820 3821 +1
Partials 28 28 |
Co-authored-by: Nico Flaig <nflaig@protonmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good! Some minor comments
Co-authored-by: NC <adrninistrator1@protonmail.com>
@@ -579,6 +584,7 @@ export function getReqSerializers(): ReqSerializers<Api, ReqTypes> { | |||
fee_recipient: Schema.String, | |||
skip_randao_verification: Schema.Boolean, | |||
builder_selection: Schema.String, | |||
builder_boost_factor: Schema.String, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would be better to use uint here, the schema validation ensures there can't be negative values
lodestar/packages/api/src/utils/schema.ts
Lines 45 to 47 in b3e5621
case Schema.Uint: | |
case Schema.UintRequired: | |
return {type: "integer", minimum: 0}; |
This should address issues mentioned by @ensi321 in #6236 (comment) and #6236 (comment).
But I think the problem is that this only supports 32-bit integers but 2**64 - 1
needs to be allowed, based on openapi docs, we could add another uint type which support 64-bit integers.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes we can't for the exact reason you mentioned, if you want, could you pick that up as a followup (openapi one)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, we can improve the validation in a separate PR
Co-authored-by: Nico Flaig <nflaig@protonmail.com>
@@ -13,6 +13,7 @@ const pubkeyRand = "0x84105a985058fc8740a48bf1ede9d223ef09e8c6b1735ba0a55cf4a9ff | |||
const ethaddressRand = "0xabcf8e0d4e9587369b2301d0790347320302cc09"; | |||
const graffitiRandUtf8 = "636861696e736166652f6c6f64657374"; | |||
const gasLimitRand = 30_000_000; | |||
const builderBoostFactorRand = BigInt(100); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a bunch of new hardcoded 100
, could a constant be used more globally?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
also added to todo cleanup list
🎉 This PR is included in v1.14.0 🎉 |
…kV3 api (ChainSafe#6236) * feat: add and support builder_boost_factor query param to produceBlockV3 api lint * add keymanager endpoint and update the test * update builder boost factor to bigint * update the help Co-authored-by: Nico Flaig <nflaig@protonmail.com> * remove comment * validate and use boostfactor ranges as per spec * fix test * correct typo Co-authored-by: NC <adrninistrator1@protonmail.com> * fix the block selection condition * fixes for spec complaince * fix the keymanager routes * comment typo fix Co-authored-by: Nico Flaig <nflaig@protonmail.com> --------- Co-authored-by: Nico Flaig <nflaig@protonmail.com> Co-authored-by: NC <adrninistrator1@protonmail.com>
Add the builder_boost_factor query param to produce blockV3 api.
while the PR doesn't remove builder_selection custom param, but its now deprecated and can be safely removed from the api .
However its not supported on the validator as a cli option so that the validator can reject the produced block if its not aligned with the builder_selection the user has provided.
this PR also allows to set builder_boost_factor on the key manager api
Closes #6226