Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

feat: add and support builder_boost_factor query param to produceBlockV3 api #6236

Merged
merged 12 commits into from
Jan 8, 2024

Conversation

g11tech
Copy link
Contributor

@g11tech g11tech commented Dec 25, 2023

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

@g11tech g11tech requested a review from a team as a code owner December 25, 2023 10:03
@g11tech g11tech marked this pull request as draft December 25, 2023 10:03
Base automatically changed from blinded-local to unstable December 31, 2023 08:07
@g11tech g11tech marked this pull request as ready for review January 4, 2024 12:18
Copy link
Contributor

github-actions bot commented Jan 4, 2024

⚠️ Performance Alert ⚠️

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

Benchmark suite Current: 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

@ensi321
Copy link
Contributor

ensi321 commented Jan 5, 2024

Linking issue #6226 🙂

Copy link

codecov bot commented Jan 7, 2024

Codecov Report

Merging #6236 (a543e3c) into unstable (48dbc58) will increase coverage by 0.07%.
Report is 1 commits behind head on unstable.
The diff coverage is n/a.

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              

packages/api/src/beacon/routes/validator.ts Show resolved Hide resolved
packages/api/src/keymanager/routes.ts Outdated Show resolved Hide resolved
packages/api/src/beacon/routes/validator.ts Show resolved Hide resolved
packages/beacon-node/src/api/impl/validator/index.ts Outdated Show resolved Hide resolved
packages/cli/src/cmds/validator/options.ts Outdated Show resolved Hide resolved
Co-authored-by: Nico Flaig <nflaig@protonmail.com>
@philknows philknows added this to the v1.14.0 milestone Jan 7, 2024
Copy link
Contributor

@ensi321 ensi321 left a 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

packages/api/src/beacon/routes/validator.ts Show resolved Hide resolved
packages/validator/src/services/validatorStore.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/api/impl/validator/index.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/api/impl/validator/index.ts Outdated Show resolved Hide resolved
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,
Copy link
Member

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

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.

Copy link
Contributor Author

@g11tech g11tech Jan 8, 2024

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)?

Copy link
Member

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

packages/api/src/keymanager/routes.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/api/impl/validator/index.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/api/impl/validator/index.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/api/impl/validator/index.ts Outdated Show resolved Hide resolved
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);
Copy link
Contributor

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?

Copy link
Contributor Author

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

@g11tech g11tech mentioned this pull request Jan 8, 2024
40 tasks
@g11tech
Copy link
Contributor Author

g11tech commented Jan 8, 2024

@jeluard thanks for the reviews, added some cleanups to todo list here: #5279

@g11tech g11tech merged commit fce884d into unstable Jan 8, 2024
13 of 15 checks passed
@g11tech g11tech deleted the builder_boost branch January 8, 2024 18:05
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.14.0 🎉

ensi321 added a commit to ensi321/lodestar that referenced this pull request Jan 22, 2024
…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>
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.

Refactor blockV3 to builder_boost_factor spec
6 participants