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

docs: re-implement validator config page with builder.boostFactor notes #6295

Merged
merged 14 commits into from
Jan 16, 2024

Conversation

philknows
Copy link
Member

Motivation

Re-implement the validator configuration page in the docs with some new material for the v1.14 release.

Description

This builds upon #5961 to re-include the validator configuration page which was missed in the docs navigation.
This PR also changes nav titles so "Configuration" is renamed to "CLI Reference" for greater clarity of the page.
This also includes notes for users about the new builder.boostFactor implemented in v1.14 and in anticipation of produceBlockV3 migration post-Deneb.

@philknows philknows requested a review from a team as a code owner January 15, 2024 00:07
Copy link
Contributor

github-actions bot commented Jan 15, 2024

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 51402d1 Previous: 4996f4d Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 608.73 us/op 654.94 us/op 0.93
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 89.665 us/op 82.541 us/op 1.09
BLS verify - blst-native 1.3436 ms/op 1.2967 ms/op 1.04
BLS verifyMultipleSignatures 3 - blst-native 2.8240 ms/op 2.7177 ms/op 1.04
BLS verifyMultipleSignatures 8 - blst-native 6.2033 ms/op 5.9711 ms/op 1.04
BLS verifyMultipleSignatures 32 - blst-native 22.825 ms/op 21.800 ms/op 1.05
BLS verifyMultipleSignatures 64 - blst-native 44.585 ms/op 42.940 ms/op 1.04
BLS verifyMultipleSignatures 128 - blst-native 88.169 ms/op 85.215 ms/op 1.03
BLS deserializing 10000 signatures 964.46 ms/op 943.73 ms/op 1.02
BLS deserializing 100000 signatures 9.6613 s/op 9.4984 s/op 1.02
BLS verifyMultipleSignatures - same message - 3 - blst-native 1.3749 ms/op 1.3292 ms/op 1.03
BLS verifyMultipleSignatures - same message - 8 - blst-native 1.5509 ms/op 1.5098 ms/op 1.03
BLS verifyMultipleSignatures - same message - 32 - blst-native 2.9902 ms/op 2.3253 ms/op 1.29
BLS verifyMultipleSignatures - same message - 64 - blst-native 4.2008 ms/op 4.4429 ms/op 0.95
BLS verifyMultipleSignatures - same message - 128 - blst-native 7.8081 ms/op 7.7180 ms/op 1.01
BLS aggregatePubkeys 32 - blst-native 28.118 us/op 25.639 us/op 1.10
BLS aggregatePubkeys 128 - blst-native 102.47 us/op 100.69 us/op 1.02
getAttestationsForBlock 46.165 ms/op 50.509 ms/op 0.91
getSlashingsAndExits - default max 178.28 us/op 148.91 us/op 1.20
getSlashingsAndExits - 2k 395.35 us/op 431.63 us/op 0.92
proposeBlockBody type=full, size=empty 5.6025 ms/op 4.9741 ms/op 1.13
isKnown best case - 1 super set check 396.00 ns/op 311.00 ns/op 1.27
isKnown normal case - 2 super set checks 463.00 ns/op 300.00 ns/op 1.54
isKnown worse case - 16 super set checks 451.00 ns/op 302.00 ns/op 1.49
CheckpointStateCache - add get delete 6.3570 us/op 4.8910 us/op 1.30
validate api signedAggregateAndProof - struct 2.9392 ms/op 2.6771 ms/op 1.10
validate gossip signedAggregateAndProof - struct 2.9367 ms/op 2.7574 ms/op 1.07
validate gossip attestation - vc 640000 1.4366 ms/op 1.3672 ms/op 1.05
batch validate gossip attestation - vc 640000 - chunk 32 179.38 us/op 167.82 us/op 1.07
batch validate gossip attestation - vc 640000 - chunk 64 156.05 us/op 155.40 us/op 1.00
batch validate gossip attestation - vc 640000 - chunk 128 146.27 us/op 152.14 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 256 145.07 us/op 152.88 us/op 0.95
pickEth1Vote - no votes 1.3483 ms/op 1.6087 ms/op 0.84
pickEth1Vote - max votes 12.626 ms/op 13.041 ms/op 0.97
pickEth1Vote - Eth1Data hashTreeRoot value x2048 20.702 ms/op 20.877 ms/op 0.99
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 29.883 ms/op 35.127 ms/op 0.85
pickEth1Vote - Eth1Data fastSerialize value x2048 696.73 us/op 709.23 us/op 0.98
pickEth1Vote - Eth1Data fastSerialize tree x2048 6.6177 ms/op 7.8269 ms/op 0.85
bytes32 toHexString 566.00 ns/op 605.00 ns/op 0.94
bytes32 Buffer.toString(hex) 306.00 ns/op 300.00 ns/op 1.02
bytes32 Buffer.toString(hex) from Uint8Array 466.00 ns/op 460.00 ns/op 1.01
bytes32 Buffer.toString(hex) + 0x 319.00 ns/op 296.00 ns/op 1.08
Object access 1 prop 0.17000 ns/op 0.16200 ns/op 1.05
Map access 1 prop 0.14100 ns/op 0.15200 ns/op 0.93
Object get x1000 7.7040 ns/op 7.5290 ns/op 1.02
Map get x1000 0.81600 ns/op 0.80400 ns/op 1.01
Object set x1000 56.148 ns/op 53.292 ns/op 1.05
Map set x1000 43.414 ns/op 42.758 ns/op 1.02
Return object 10000 times 0.25290 ns/op 0.24570 ns/op 1.03
Throw Error 10000 times 4.0451 us/op 4.1038 us/op 0.99
fastMsgIdFn sha256 / 200 bytes 3.4400 us/op 3.5400 us/op 0.97
fastMsgIdFn h32 xxhash / 200 bytes 345.00 ns/op 334.00 ns/op 1.03
fastMsgIdFn h64 xxhash / 200 bytes 402.00 ns/op 393.00 ns/op 1.02
fastMsgIdFn sha256 / 1000 bytes 12.111 us/op 12.113 us/op 1.00
fastMsgIdFn h32 xxhash / 1000 bytes 501.00 ns/op 487.00 ns/op 1.03
fastMsgIdFn h64 xxhash / 1000 bytes 473.00 ns/op 475.00 ns/op 1.00
fastMsgIdFn sha256 / 10000 bytes 109.16 us/op 107.84 us/op 1.01
fastMsgIdFn h32 xxhash / 10000 bytes 2.1010 us/op 2.0720 us/op 1.01
fastMsgIdFn h64 xxhash / 10000 bytes 1.4280 us/op 1.4690 us/op 0.97
send data - 1000 256B messages 21.762 ms/op 22.902 ms/op 0.95
send data - 1000 512B messages 30.417 ms/op 30.736 ms/op 0.99
send data - 1000 1024B messages 42.335 ms/op 45.612 ms/op 0.93
send data - 1000 1200B messages 37.914 ms/op 43.671 ms/op 0.87
send data - 1000 2048B messages 48.075 ms/op 47.834 ms/op 1.01
send data - 1000 4096B messages 27.497 ms/op 48.963 ms/op 0.56
send data - 1000 16384B messages 127.52 ms/op 143.73 ms/op 0.89
send data - 1000 65536B messages 518.63 ms/op 599.15 ms/op 0.87
enrSubnets - fastDeserialize 64 bits 1.4080 us/op 2.4040 us/op 0.59
enrSubnets - ssz BitVector 64 bits 502.00 ns/op 774.00 ns/op 0.65
enrSubnets - fastDeserialize 4 bits 215.00 ns/op 256.00 ns/op 0.84
enrSubnets - ssz BitVector 4 bits 517.00 ns/op 554.00 ns/op 0.93
prioritizePeers score -10:0 att 32-0.1 sync 2-0 122.72 us/op 131.24 us/op 0.94
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 155.86 us/op 175.34 us/op 0.89
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 203.55 us/op 246.40 us/op 0.83
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 363.99 us/op 376.31 us/op 0.97
prioritizePeers score 0:0 att 64-1 sync 4-1 393.52 us/op 396.08 us/op 0.99
array of 16000 items push then shift 1.8211 us/op 1.7145 us/op 1.06
LinkedList of 16000 items push then shift 9.6470 ns/op 9.4860 ns/op 1.02
array of 16000 items push then pop 114.41 ns/op 62.789 ns/op 1.82
LinkedList of 16000 items push then pop 10.338 ns/op 9.3490 ns/op 1.11
array of 24000 items push then shift 2.7752 us/op 2.5178 us/op 1.10
LinkedList of 24000 items push then shift 10.181 ns/op 9.3950 ns/op 1.08
array of 24000 items push then pop 143.31 ns/op 118.54 ns/op 1.21
LinkedList of 24000 items push then pop 9.3350 ns/op 8.8930 ns/op 1.05
intersect bitArray bitLen 8 6.9260 ns/op 6.5390 ns/op 1.06
intersect array and set length 8 68.978 ns/op 63.667 ns/op 1.08
intersect bitArray bitLen 128 35.815 ns/op 34.356 ns/op 1.04
intersect array and set length 128 953.24 ns/op 868.13 ns/op 1.10
bitArray.getTrueBitIndexes() bitLen 128 1.7000 us/op 1.5640 us/op 1.09
bitArray.getTrueBitIndexes() bitLen 248 2.7690 us/op 2.6600 us/op 1.04
bitArray.getTrueBitIndexes() bitLen 512 5.3430 us/op 5.0530 us/op 1.06
Buffer.concat 32 items 1.2740 us/op 945.00 ns/op 1.35
Uint8Array.set 32 items 2.3050 us/op 1.6720 us/op 1.38
Set add up to 64 items then delete first 5.3043 us/op 4.3374 us/op 1.22
OrderedSet add up to 64 items then delete first 7.1892 us/op 5.5145 us/op 1.30
Set add up to 64 items then delete last 5.7440 us/op 4.7427 us/op 1.21
OrderedSet add up to 64 items then delete last 7.8017 us/op 5.8024 us/op 1.34
Set add up to 64 items then delete middle 5.8100 us/op 5.1844 us/op 1.12
OrderedSet add up to 64 items then delete middle 9.0810 us/op 7.7735 us/op 1.17
Set add up to 128 items then delete first 11.300 us/op 10.826 us/op 1.04
OrderedSet add up to 128 items then delete first 14.703 us/op 14.322 us/op 1.03
Set add up to 128 items then delete last 11.464 us/op 9.7898 us/op 1.17
OrderedSet add up to 128 items then delete last 14.892 us/op 14.595 us/op 1.02
Set add up to 128 items then delete middle 11.297 us/op 10.216 us/op 1.11
OrderedSet add up to 128 items then delete middle 20.577 us/op 19.317 us/op 1.07
Set add up to 256 items then delete first 22.889 us/op 21.439 us/op 1.07
OrderedSet add up to 256 items then delete first 31.709 us/op 28.109 us/op 1.13
Set add up to 256 items then delete last 23.811 us/op 20.286 us/op 1.17
OrderedSet add up to 256 items then delete last 31.815 us/op 23.795 us/op 1.34
Set add up to 256 items then delete middle 23.035 us/op 18.747 us/op 1.23
OrderedSet add up to 256 items then delete middle 55.690 us/op 50.837 us/op 1.10
transfer serialized Status (84 B) 2.1200 us/op 2.0870 us/op 1.02
copy serialized Status (84 B) 1.8000 us/op 1.8060 us/op 1.00
transfer serialized SignedVoluntaryExit (112 B) 2.1260 us/op 2.2520 us/op 0.94
copy serialized SignedVoluntaryExit (112 B) 2.0130 us/op 1.8540 us/op 1.09
transfer serialized ProposerSlashing (416 B) 2.8270 us/op 3.4560 us/op 0.82
copy serialized ProposerSlashing (416 B) 2.6360 us/op 3.3960 us/op 0.78
transfer serialized Attestation (485 B) 2.6160 us/op 3.0670 us/op 0.85
copy serialized Attestation (485 B) 2.6380 us/op 2.4670 us/op 1.07
transfer serialized AttesterSlashing (33232 B) 2.3900 us/op 2.2750 us/op 1.05
copy serialized AttesterSlashing (33232 B) 7.2850 us/op 5.3650 us/op 1.36
transfer serialized Small SignedBeaconBlock (128000 B) 3.1580 us/op 2.5540 us/op 1.24
copy serialized Small SignedBeaconBlock (128000 B) 21.214 us/op 14.110 us/op 1.50
transfer serialized Avg SignedBeaconBlock (200000 B) 3.6440 us/op 2.9510 us/op 1.23
copy serialized Avg SignedBeaconBlock (200000 B) 29.839 us/op 20.553 us/op 1.45
transfer serialized BlobsSidecar (524380 B) 4.1870 us/op 3.0710 us/op 1.36
copy serialized BlobsSidecar (524380 B) 93.055 us/op 90.819 us/op 1.02
transfer serialized Big SignedBeaconBlock (1000000 B) 4.5980 us/op 3.1330 us/op 1.47
copy serialized Big SignedBeaconBlock (1000000 B) 228.18 us/op 161.60 us/op 1.41
pass gossip attestations to forkchoice per slot 4.5642 ms/op 3.8358 ms/op 1.19
forkChoice updateHead vc 100000 bc 64 eq 0 752.01 us/op 764.00 us/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 0 5.3851 ms/op 4.3674 ms/op 1.23
forkChoice updateHead vc 1000000 bc 64 eq 0 7.9281 ms/op 7.5358 ms/op 1.05
forkChoice updateHead vc 600000 bc 320 eq 0 4.7464 ms/op 4.3322 ms/op 1.10
forkChoice updateHead vc 600000 bc 1200 eq 0 4.7116 ms/op 4.4062 ms/op 1.07
forkChoice updateHead vc 600000 bc 7200 eq 0 5.6255 ms/op 5.4064 ms/op 1.04
forkChoice updateHead vc 600000 bc 64 eq 1000 12.104 ms/op 11.542 ms/op 1.05
forkChoice updateHead vc 600000 bc 64 eq 10000 13.431 ms/op 11.934 ms/op 1.13
forkChoice updateHead vc 600000 bc 64 eq 300000 18.903 ms/op 15.814 ms/op 1.20
computeDeltas 500000 validators 300 proto nodes 7.1973 ms/op 6.5959 ms/op 1.09
computeDeltas 500000 validators 1200 proto nodes 7.6144 ms/op 6.5190 ms/op 1.17
computeDeltas 500000 validators 7200 proto nodes 7.1072 ms/op 6.6639 ms/op 1.07
computeDeltas 750000 validators 300 proto nodes 10.970 ms/op 10.426 ms/op 1.05
computeDeltas 750000 validators 1200 proto nodes 11.185 ms/op 10.399 ms/op 1.08
computeDeltas 750000 validators 7200 proto nodes 10.925 ms/op 10.496 ms/op 1.04
computeDeltas 1400000 validators 300 proto nodes 21.412 ms/op 19.628 ms/op 1.09
computeDeltas 1400000 validators 1200 proto nodes 22.307 ms/op 19.574 ms/op 1.14
computeDeltas 1400000 validators 7200 proto nodes 20.468 ms/op 19.642 ms/op 1.04
computeDeltas 2100000 validators 300 proto nodes 32.532 ms/op 29.553 ms/op 1.10
computeDeltas 2100000 validators 1200 proto nodes 31.025 ms/op 28.641 ms/op 1.08
computeDeltas 2100000 validators 7200 proto nodes 30.253 ms/op 27.617 ms/op 1.10
computeProposerBoostScoreFromBalances 500000 validators 3.9849 ms/op 3.8012 ms/op 1.05
computeProposerBoostScoreFromBalances 750000 validators 3.9557 ms/op 3.7884 ms/op 1.04
computeProposerBoostScoreFromBalances 1400000 validators 4.0293 ms/op 3.7431 ms/op 1.08
computeProposerBoostScoreFromBalances 2100000 validators 4.0857 ms/op 3.7623 ms/op 1.09
altair processAttestation - 250000 vs - 7PWei normalcase 2.7089 ms/op 3.0572 ms/op 0.89
altair processAttestation - 250000 vs - 7PWei worstcase 3.9792 ms/op 3.7031 ms/op 1.07
altair processAttestation - setStatus - 1/6 committees join 191.79 us/op 183.71 us/op 1.04
altair processAttestation - setStatus - 1/3 committees join 382.24 us/op 378.55 us/op 1.01
altair processAttestation - setStatus - 1/2 committees join 505.88 us/op 492.90 us/op 1.03
altair processAttestation - setStatus - 2/3 committees join 639.32 us/op 624.55 us/op 1.02
altair processAttestation - setStatus - 4/5 committees join 887.22 us/op 856.53 us/op 1.04
altair processAttestation - setStatus - 100% committees join 1.1443 ms/op 1.0060 ms/op 1.14
altair processBlock - 250000 vs - 7PWei normalcase 10.540 ms/op 11.624 ms/op 0.91
altair processBlock - 250000 vs - 7PWei normalcase hashState 36.278 ms/op 41.894 ms/op 0.87
altair processBlock - 250000 vs - 7PWei worstcase 41.819 ms/op 40.274 ms/op 1.04
altair processBlock - 250000 vs - 7PWei worstcase hashState 119.01 ms/op 100.88 ms/op 1.18
phase0 processBlock - 250000 vs - 7PWei normalcase 3.0868 ms/op 2.8101 ms/op 1.10
phase0 processBlock - 250000 vs - 7PWei worstcase 38.911 ms/op 33.987 ms/op 1.14
altair processEth1Data - 250000 vs - 7PWei normalcase 605.10 us/op 712.29 us/op 0.85
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 13.361 us/op 15.151 us/op 0.88
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 51.091 us/op 91.606 us/op 0.56
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 24.138 us/op 26.050 us/op 0.93
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 15.584 us/op 21.229 us/op 0.73
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 193.48 us/op 198.54 us/op 0.97
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.6019 ms/op 1.3579 ms/op 1.18
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.4937 ms/op 1.7997 ms/op 1.39
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.2540 ms/op 1.7029 ms/op 1.32
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 5.3510 ms/op 4.2100 ms/op 1.27
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 4.4137 ms/op 2.7917 ms/op 1.58
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 7.6671 ms/op 5.6519 ms/op 1.36
Tree 40 250000 create 467.11 ms/op 477.48 ms/op 0.98
Tree 40 250000 get(125000) 222.53 ns/op 229.56 ns/op 0.97
Tree 40 250000 set(125000) 1.2347 us/op 1.1391 us/op 1.08
Tree 40 250000 toArray() 25.501 ms/op 24.086 ms/op 1.06
Tree 40 250000 iterate all - toArray() + loop 25.673 ms/op 24.689 ms/op 1.04
Tree 40 250000 iterate all - get(i) 81.394 ms/op 79.130 ms/op 1.03
MutableVector 250000 create 16.701 ms/op 16.436 ms/op 1.02
MutableVector 250000 get(125000) 7.6250 ns/op 6.8740 ns/op 1.11
MutableVector 250000 set(125000) 402.50 ns/op 426.16 ns/op 0.94
MutableVector 250000 toArray() 3.9165 ms/op 4.8676 ms/op 0.80
MutableVector 250000 iterate all - toArray() + loop 5.1942 ms/op 5.0575 ms/op 1.03
MutableVector 250000 iterate all - get(i) 1.6728 ms/op 1.6392 ms/op 1.02
Array 250000 create 4.1922 ms/op 4.5028 ms/op 0.93
Array 250000 clone - spread 1.2701 ms/op 1.8375 ms/op 0.69
Array 250000 get(125000) 1.0940 ns/op 1.4780 ns/op 0.74
Array 250000 set(125000) 4.7190 ns/op 5.4860 ns/op 0.86
Array 250000 iterate all - loop 178.59 us/op 190.51 us/op 0.94
effectiveBalanceIncrements clone Uint8Array 300000 36.906 us/op 68.475 us/op 0.54
effectiveBalanceIncrements clone MutableVector 300000 373.00 ns/op 475.00 ns/op 0.79
effectiveBalanceIncrements rw all Uint8Array 300000 227.20 us/op 217.47 us/op 1.04
effectiveBalanceIncrements rw all MutableVector 300000 96.041 ms/op 136.84 ms/op 0.70
phase0 afterProcessEpoch - 250000 vs - 7PWei 125.01 ms/op 119.92 ms/op 1.04
phase0 beforeProcessEpoch - 250000 vs - 7PWei 65.211 ms/op 57.795 ms/op 1.13
altair processEpoch - mainnet_e81889 576.03 ms/op 589.83 ms/op 0.98
mainnet_e81889 - altair beforeProcessEpoch 89.201 ms/op 93.505 ms/op 0.95
mainnet_e81889 - altair processJustificationAndFinalization 22.400 us/op 20.074 us/op 1.12
mainnet_e81889 - altair processInactivityUpdates 6.2741 ms/op 6.2507 ms/op 1.00
mainnet_e81889 - altair processRewardsAndPenalties 50.304 ms/op 63.797 ms/op 0.79
mainnet_e81889 - altair processRegistryUpdates 2.7130 us/op 4.3930 us/op 0.62
mainnet_e81889 - altair processSlashings 436.00 ns/op 466.00 ns/op 0.94
mainnet_e81889 - altair processEth1DataReset 660.00 ns/op 1.0740 us/op 0.61
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.6114 ms/op 1.4733 ms/op 1.09
mainnet_e81889 - altair processSlashingsReset 4.8460 us/op 4.9370 us/op 0.98
mainnet_e81889 - altair processRandaoMixesReset 5.3780 us/op 7.3410 us/op 0.73
mainnet_e81889 - altair processHistoricalRootsUpdate 865.00 ns/op 895.00 ns/op 0.97
mainnet_e81889 - altair processParticipationFlagUpdates 2.6940 us/op 2.8500 us/op 0.95
mainnet_e81889 - altair processSyncCommitteeUpdates 502.00 ns/op 822.00 ns/op 0.61
mainnet_e81889 - altair afterProcessEpoch 126.22 ms/op 124.66 ms/op 1.01
capella processEpoch - mainnet_e217614 2.2824 s/op 2.0397 s/op 1.12
mainnet_e217614 - capella beforeProcessEpoch 542.95 ms/op 471.47 ms/op 1.15
mainnet_e217614 - capella processJustificationAndFinalization 30.431 us/op 14.933 us/op 2.04
mainnet_e217614 - capella processInactivityUpdates 23.969 ms/op 20.804 ms/op 1.15
mainnet_e217614 - capella processRewardsAndPenalties 429.40 ms/op 394.25 ms/op 1.09
mainnet_e217614 - capella processRegistryUpdates 38.087 us/op 26.766 us/op 1.42
mainnet_e217614 - capella processSlashings 742.00 ns/op 645.00 ns/op 1.15
mainnet_e217614 - capella processEth1DataReset 648.00 ns/op 482.00 ns/op 1.34
mainnet_e217614 - capella processEffectiveBalanceUpdates 10.883 ms/op 4.8076 ms/op 2.26
mainnet_e217614 - capella processSlashingsReset 3.5480 us/op 4.1080 us/op 0.86
mainnet_e217614 - capella processRandaoMixesReset 6.4360 us/op 4.3640 us/op 1.47
mainnet_e217614 - capella processHistoricalRootsUpdate 734.00 ns/op 422.00 ns/op 1.74
mainnet_e217614 - capella processParticipationFlagUpdates 2.4280 us/op 2.0830 us/op 1.17
mainnet_e217614 - capella afterProcessEpoch 352.24 ms/op 318.62 ms/op 1.11
phase0 processEpoch - mainnet_e58758 500.25 ms/op 398.55 ms/op 1.26
mainnet_e58758 - phase0 beforeProcessEpoch 132.03 ms/op 109.62 ms/op 1.20
mainnet_e58758 - phase0 processJustificationAndFinalization 26.055 us/op 14.697 us/op 1.77
mainnet_e58758 - phase0 processRewardsAndPenalties 59.795 ms/op 54.967 ms/op 1.09
mainnet_e58758 - phase0 processRegistryUpdates 10.707 us/op 10.270 us/op 1.04
mainnet_e58758 - phase0 processSlashings 596.00 ns/op 469.00 ns/op 1.27
mainnet_e58758 - phase0 processEth1DataReset 385.00 ns/op 412.00 ns/op 0.93
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.4845 ms/op 1.1557 ms/op 1.28
mainnet_e58758 - phase0 processSlashingsReset 3.2880 us/op 3.0430 us/op 1.08
mainnet_e58758 - phase0 processRandaoMixesReset 4.1750 us/op 4.2100 us/op 0.99
mainnet_e58758 - phase0 processHistoricalRootsUpdate 376.00 ns/op 703.00 ns/op 0.53
mainnet_e58758 - phase0 processParticipationRecordUpdates 3.9420 us/op 4.0160 us/op 0.98
mainnet_e58758 - phase0 afterProcessEpoch 100.97 ms/op 96.985 ms/op 1.04
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.4564 ms/op 1.4381 ms/op 1.01
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6448 ms/op 1.9465 ms/op 0.84
altair processInactivityUpdates - 250000 normalcase 26.732 ms/op 20.068 ms/op 1.33
altair processInactivityUpdates - 250000 worstcase 31.943 ms/op 20.914 ms/op 1.53
phase0 processRegistryUpdates - 250000 normalcase 9.8490 us/op 8.3700 us/op 1.18
phase0 processRegistryUpdates - 250000 badcase_full_deposits 482.65 us/op 352.46 us/op 1.37
phase0 processRegistryUpdates - 250000 worstcase 0.5 127.88 ms/op 140.16 ms/op 0.91
altair processRewardsAndPenalties - 250000 normalcase 72.225 ms/op 54.627 ms/op 1.32
altair processRewardsAndPenalties - 250000 worstcase 68.044 ms/op 52.718 ms/op 1.29
phase0 getAttestationDeltas - 250000 normalcase 9.2753 ms/op 8.9057 ms/op 1.04
phase0 getAttestationDeltas - 250000 worstcase 9.0995 ms/op 8.7077 ms/op 1.04
phase0 processSlashings - 250000 worstcase 131.76 us/op 93.228 us/op 1.41
altair processSyncCommitteeUpdates - 250000 159.91 ms/op 151.41 ms/op 1.06
BeaconState.hashTreeRoot - No change 272.00 ns/op 249.00 ns/op 1.09
BeaconState.hashTreeRoot - 1 full validator 140.31 us/op 126.39 us/op 1.11
BeaconState.hashTreeRoot - 32 full validator 1.7640 ms/op 1.2602 ms/op 1.40
BeaconState.hashTreeRoot - 512 full validator 17.193 ms/op 12.990 ms/op 1.32
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 219.35 us/op 182.68 us/op 1.20
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.1080 ms/op 2.1434 ms/op 0.98
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 26.949 ms/op 26.438 ms/op 1.02
BeaconState.hashTreeRoot - 1 balances 128.78 us/op 141.04 us/op 0.91
BeaconState.hashTreeRoot - 32 balances 1.1022 ms/op 1.2015 ms/op 0.92
BeaconState.hashTreeRoot - 512 balances 14.716 ms/op 12.911 ms/op 1.14
BeaconState.hashTreeRoot - 250000 balances 243.19 ms/op 196.42 ms/op 1.24
aggregationBits - 2048 els - zipIndexesInBitList 18.279 us/op 17.004 us/op 1.07
byteArrayEquals 32 77.725 ns/op 75.039 ns/op 1.04
Buffer.compare 32 58.317 ns/op 55.910 ns/op 1.04
byteArrayEquals 1024 2.1304 us/op 2.0302 us/op 1.05
Buffer.compare 1024 73.297 ns/op 71.312 ns/op 1.03
byteArrayEquals 16384 33.868 us/op 32.778 us/op 1.03
Buffer.compare 16384 269.42 ns/op 246.56 ns/op 1.09
byteArrayEquals 123687377 257.88 ms/op 245.04 ms/op 1.05
Buffer.compare 123687377 6.6532 ms/op 7.8327 ms/op 0.85
byteArrayEquals 32 - diff last byte 79.634 ns/op 88.353 ns/op 0.90
Buffer.compare 32 - diff last byte 60.594 ns/op 58.705 ns/op 1.03
byteArrayEquals 1024 - diff last byte 2.1618 us/op 2.0742 us/op 1.04
Buffer.compare 1024 - diff last byte 77.128 ns/op 72.994 ns/op 1.06
byteArrayEquals 16384 - diff last byte 34.324 us/op 34.083 us/op 1.01
Buffer.compare 16384 - diff last byte 294.67 ns/op 254.34 ns/op 1.16
byteArrayEquals 123687377 - diff last byte 273.38 ms/op 262.84 ms/op 1.04
Buffer.compare 123687377 - diff last byte 8.5489 ms/op 7.0740 ms/op 1.21
byteArrayEquals 32 - random bytes 6.9190 ns/op 5.3420 ns/op 1.30
Buffer.compare 32 - random bytes 68.916 ns/op 61.517 ns/op 1.12
byteArrayEquals 1024 - random bytes 6.6780 ns/op 5.3420 ns/op 1.25
Buffer.compare 1024 - random bytes 67.455 ns/op 61.602 ns/op 1.10
byteArrayEquals 16384 - random bytes 7.0710 ns/op 5.3450 ns/op 1.32
Buffer.compare 16384 - random bytes 69.922 ns/op 61.261 ns/op 1.14
byteArrayEquals 123687377 - random bytes 11.900 ns/op 8.6500 ns/op 1.38
Buffer.compare 123687377 - random bytes 81.250 ns/op 64.410 ns/op 1.26
regular array get 100000 times 49.790 us/op 45.646 us/op 1.09
wrappedArray get 100000 times 52.015 us/op 45.469 us/op 1.14
arrayWithProxy get 100000 times 15.793 ms/op 15.708 ms/op 1.01
ssz.Root.equals 63.234 ns/op 54.686 ns/op 1.16
byteArrayEquals 61.717 ns/op 54.260 ns/op 1.14
Buffer.compare 13.577 ns/op 12.019 ns/op 1.13
shuffle list - 16384 els 8.0169 ms/op 7.1601 ms/op 1.12
shuffle list - 250000 els 117.96 ms/op 105.06 ms/op 1.12
processSlot - 1 slots 20.945 us/op 17.655 us/op 1.19
processSlot - 32 slots 4.7368 ms/op 3.2066 ms/op 1.48
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 74.849 ms/op 62.084 ms/op 1.21
getCommitteeAssignments - req 1 vs - 250000 vc 3.0832 ms/op 2.5342 ms/op 1.22
getCommitteeAssignments - req 100 vs - 250000 vc 4.5316 ms/op 3.7344 ms/op 1.21
getCommitteeAssignments - req 1000 vs - 250000 vc 5.1287 ms/op 4.0840 ms/op 1.26
findModifiedValidators - 10000 modified validators 703.28 ms/op 545.03 ms/op 1.29
findModifiedValidators - 1000 modified validators 576.44 ms/op 571.96 ms/op 1.01
findModifiedValidators - 100 modified validators 534.37 ms/op 553.88 ms/op 0.96
findModifiedValidators - 10 modified validators 744.89 ms/op 499.95 ms/op 1.49
findModifiedValidators - 1 modified validators 698.24 ms/op 499.10 ms/op 1.40
findModifiedValidators - no difference 690.92 ms/op 432.48 ms/op 1.60
compare ViewDUs 7.6859 s/op 4.6189 s/op 1.66
compare each validator Uint8Array 2.1132 s/op 1.8315 s/op 1.15
compare ViewDU to Uint8Array 1.5881 s/op 1.1654 s/op 1.36
migrate state 1000000 validators, 24 modified, 0 new 1.0455 s/op 797.98 ms/op 1.31
migrate state 1000000 validators, 1700 modified, 1000 new 1.2517 s/op 1.0414 s/op 1.20
migrate state 1000000 validators, 3400 modified, 2000 new 1.4579 s/op 1.3534 s/op 1.08
migrate state 1500000 validators, 24 modified, 0 new 895.91 ms/op 875.57 ms/op 1.02
migrate state 1500000 validators, 1700 modified, 1000 new 1.1679 s/op 1.2805 s/op 0.91
migrate state 1500000 validators, 3400 modified, 2000 new 1.4564 s/op 1.3130 s/op 1.11
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.0300 ns/op 4.4000 ns/op 1.14
state getBlockRootAtSlot - 250000 vs - 7PWei 1.0819 us/op 551.20 ns/op 1.96
computeProposers - vc 250000 10.416 ms/op 9.0674 ms/op 1.15
computeEpochShuffling - vc 250000 113.67 ms/op 103.39 ms/op 1.10
getNextSyncCommittee - vc 250000 166.70 ms/op 150.31 ms/op 1.11
computeSigningRoot for AttestationData 31.570 us/op 25.683 us/op 1.23
hash AttestationData serialized data then Buffer.toString(base64) 2.5195 us/op 2.2791 us/op 1.11
toHexString serialized data 1.1697 us/op 1.0609 us/op 1.10
Buffer.toString(base64) 251.35 ns/op 217.02 ns/op 1.16

by benchmarkbot/action

docs/pages/validator-management/vc-configuration.md Outdated Show resolved Hide resolved
docs/pages/validator-management/vc-configuration.md Outdated Show resolved Hide resolved
docs/mkdocs.yml Outdated
@@ -81,20 +81,21 @@ nav:
- Starting a Node: getting-started/starting-a-node.md
- Data Retention: data-retention.md
- Beacon Node:
- Configuration: beacon-management/beacon-cli.md
- Beacon CLI Reference: beacon-management/beacon-cli.md
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the renaming 👍

docs/pages/validator-management/vc-configuration.md Outdated Show resolved Hide resolved
docs/pages/validator-management/vc-configuration.md Outdated Show resolved Hide resolved
docs/pages/validator-management/vc-configuration.md Outdated Show resolved Hide resolved
Copy link

codecov bot commented Jan 15, 2024

Codecov Report

Merging #6295 (9e329d4) into unstable (098d35a) will not change coverage.
Report is 5 commits behind head on unstable.
The diff coverage is n/a.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #6295   +/-   ##
=========================================
  Coverage     80.38%   80.38%           
=========================================
  Files           202      202           
  Lines         19620    19620           
  Branches       1176     1176           
=========================================
  Hits          15771    15771           
  Misses         3821     3821           
  Partials         28       28           

docs/pages/validator-management/vc-configuration.md Outdated Show resolved Hide resolved
docs/pages/validator-management/vc-configuration.md Outdated Show resolved Hide resolved
docs/pages/validator-management/vc-configuration.md Outdated Show resolved Hide resolved
docs/pages/validator-management/vc-configuration.md Outdated Show resolved Hide resolved
@@ -17,7 +17,7 @@ The mnemonic is randomly generated during wallet creation and printed out to the

### Create a wallet

Lodestar is deprecating its functionality to create wallets.
Lodestar has removed its functionality to create wallets.

To create a wallet, we recommend using the official [`staking-deposit-cli`](https://github.com/ethereum/staking-deposit-cli/releases) from the Ethereum Foundation for users comfortable with command line interfaces.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The term wallet here might be a bit outdated, maybe should use term keystores, or we use same wording as deposit cli introduction.

Maybe "keystores and corresponding deposit data" but since the whole section is about "Create a wallet" maybe better to revise that part in a separate PR.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will follow up in another PR with the best way to align this. TBH, I'm still kinda wondering if we need this as generally, most go through the Ethereum launchpad which provides all these instructions for them already. This whole section has been around for a long time when Lodestar had these features and before the existence of a lot of this tooling + other references.

Co-authored-by: Nico Flaig <[email protected]>
@wemeetagain
Copy link
Member

LGTM, only thing is failing docs spellcheck, see #6294 (comment)


With Lodestar's `--builder.selection` options, you can select:
- `maxprofit`: Default setting for Lodestar set at `--builder.boostFactor=100`. This default setting will always choose the more profitable block. Using this option, you may customize your `--builder.boostFactor` to your preference. Examples of its usage are below.
- `executiononly`: Validator will not select the builder block even if builder relays are configured on the beacon. This option will always select the local execution block.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `executiononly`: Validator will not select the builder block even if builder relays are configured on the beacon. This option will always select the local execution block.
- `executiononly`: Beacon will not produce/select the builder block even if builder relays are configured on the beacon. This option will always select the local execution block and will error if it couldn't produce one.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is what Lodestar beacon node does but we should ideally describe how the validator client behaves here as this configuration page related to the vc configuration.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have updated the description based on the suggestion 9e329d4 (with slight modification)


Example 2: Setting a `--builder.boostFactor=100` is the same as signaling `--builder.selection maxprofit` where the validator will always select the most profitable block between the local execution engine and the builder block from the relay.

Example 3: Setting `--builder.boostFactor=80` allows you to signal that your builder block bid needs 20% more in value comparatively to your local execution block to be selected.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just noticed, the example is not correct.

Let's assume a local block value of 100, if builder block has value of 120 (20% more) it will still pick local block

120 * 0.80 = 96

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

its inverse relationship so need 25% more (100/0.8 -100)

- `maxprofit`: Default setting for Lodestar set at `--builder.boostFactor=100`. This default setting will always choose the more profitable block. Using this option, you may customize your `--builder.boostFactor` to your preference. Examples of its usage are below.
- `executiononly`: Validator will not select the builder block even if builder relays are configured on the beacon. This option will always select the local execution block.
- `builderalways`: An alias of `--builder.boostFactor=18446744073709551615` (2**64 - 1), which will select the builder block, unless the builder block fails to produce. The builder block may fail to produce if it's not available, not timely or there is an indication of censorship via shouldOverrideBuilder from the execution payload response.
- `builderonly`: Generally used for distributed validators (DVs). No execution block production will be triggered. Therefore, if a builder block is not produced, the API will fail and *no block will be produced*.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should also probably add executionalways which will be alias of --builder.boostFactor=0which will always return execution block unless its not produced or not timely which might then respond with a builder (we don't have this option now in validator but will be good for the sake of completeness)

matthewkeil
matthewkeil previously approved these changes Jan 15, 2024
Copy link
Member

@matthewkeil matthewkeil left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!! 🚀

@@ -105,7 +125,7 @@ To start a Lodestar validator run the command:

You should see confirmation that modules have started.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sh should stay in here

"```sh"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those are logs, bash syntax highlighting looks wrong

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't really benefit the docs if it doesn't look similar to what you would actually even see in your terminal. Just leaving as txt should be fine

```
10000/(100+20) = 83.3
```
Therefore, `--builder.boostFactor=83.3`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bad news, we don't support floating point numbers (must be integer)

✖ SyntaxError: Cannot convert 83.3 to a BigInt

Copy link
Member

@nflaig nflaig 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 to me now, applied suggestions from @g11tech and fixed example to use an integer value as --builder.boostFactor does not support floating point numbers

@philknows philknows merged commit fc95bf6 into unstable Jan 16, 2024
13 of 15 checks passed
@philknows philknows deleted the philknows/docs-vc-modifications branch January 16, 2024 01:37
ensi321 pushed a commit to ensi321/lodestar that referenced this pull request Jan 22, 2024
…es (ChainSafe#6295)

* Change docs nav titles and include vc config

* Rename and re-include config with builder boost

* refactor builderboostFactor from comments

* add clarification to maxprofit

* clarification on intro

Co-authored-by: Nico Flaig <[email protected]>

* address additional comments

* Remove redundancies in navigation menu

* Just formatting changes

* Update wordlist

* Use term "beacon node", more consistent with text above

* Apply some feedback from Gajinder

* fix builder boost factor math example

* Use integer value in Example 1

* Update executiononly description

---------

Co-authored-by: Nico Flaig <[email protected]>
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.15.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants