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: update documentation Oct 2024 #7178

Open
wants to merge 12 commits into
base: unstable
Choose a base branch
from

Conversation

philknows
Copy link
Member

Motivation

Our documentation has been undergoing incremental improvements to remove old content, update for relevance and add new content that hasn't been documented yet. This is one PR in a series of future PRs to improve docs for better user/developer experiences.

Related to #5961

Description

This PR addresses the following in our documentation:

  • Fixes footer and just links to pertinent communications/call to actions
  • Removes old .md files which were empty or otherwise, not being actively developed on
  • Removes Google site verification as we no longer use any Google type analytics
  • Spelling/grammar updates
  • Removes content relating to The Merge
  • Updates specification for hardware minimums/recommendations
  • Fixes broken links
  • Sidebar navigation updated to better arrange/detail information
  • Persist our quickstart custom setup guide into our documentation. Previously located at https://hackmd.io/@philknows/rJegZyH9q
  • Include proposer config documentation

More to come in future updates that were not included.

@philknows philknows requested a review from a team as a code owner October 19, 2024 06:07
Copy link

codecov bot commented Oct 19, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 49.21%. Comparing base (de0d6ab) to head (1a92441).
Report is 17 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #7178   +/-   ##
=========================================
  Coverage     49.21%   49.21%           
=========================================
  Files           598      598           
  Lines         39726    39794   +68     
  Branches       2092     2097    +5     
=========================================
+ Hits          19550    19585   +35     
- Misses        20136    20169   +33     
  Partials         40       40           

Copy link
Contributor

github-actions bot commented Oct 19, 2024

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 44c1c1c Previous: 748966b Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.8748 ms/op 2.1807 ms/op 0.86
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 45.925 us/op 66.746 us/op 0.69
BLS verify - blst 900.11 us/op 1.0183 ms/op 0.88
BLS verifyMultipleSignatures 3 - blst 1.3772 ms/op 1.3517 ms/op 1.02
BLS verifyMultipleSignatures 8 - blst 1.8654 ms/op 1.9743 ms/op 0.94
BLS verifyMultipleSignatures 32 - blst 5.4691 ms/op 5.8657 ms/op 0.93
BLS verifyMultipleSignatures 64 - blst 11.780 ms/op 11.179 ms/op 1.05
BLS verifyMultipleSignatures 128 - blst 17.133 ms/op 18.512 ms/op 0.93
BLS deserializing 10000 signatures 685.26 ms/op 714.67 ms/op 0.96
BLS deserializing 100000 signatures 6.8373 s/op 7.0807 s/op 0.97
BLS verifyMultipleSignatures - same message - 3 - blst 896.10 us/op 1.1133 ms/op 0.80
BLS verifyMultipleSignatures - same message - 8 - blst 1.0583 ms/op 1.1348 ms/op 0.93
BLS verifyMultipleSignatures - same message - 32 - blst 1.9121 ms/op 2.0165 ms/op 0.95
BLS verifyMultipleSignatures - same message - 64 - blst 2.5855 ms/op 2.9738 ms/op 0.87
BLS verifyMultipleSignatures - same message - 128 - blst 4.3997 ms/op 4.9267 ms/op 0.89
BLS aggregatePubkeys 32 - blst 20.068 us/op 21.309 us/op 0.94
BLS aggregatePubkeys 128 - blst 70.380 us/op 71.333 us/op 0.99
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 84.506 ms/op 80.652 ms/op 1.05
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 66.988 ms/op 89.872 ms/op 0.75
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 51.100 ms/op 51.751 ms/op 0.99
getSlashingsAndExits - default max 88.769 us/op 137.18 us/op 0.65
getSlashingsAndExits - 2k 301.97 us/op 438.56 us/op 0.69
proposeBlockBody type=full, size=empty 6.2108 ms/op 9.7087 ms/op 0.64
isKnown best case - 1 super set check 281.00 ns/op 756.00 ns/op 0.37
isKnown normal case - 2 super set checks 272.00 ns/op 693.00 ns/op 0.39
isKnown worse case - 16 super set checks 277.00 ns/op 670.00 ns/op 0.41
InMemoryCheckpointStateCache - add get delete 2.7450 us/op 3.8390 us/op 0.72
updateUnfinalizedPubkeys - updating 10 pubkeys 981.71 us/op 2.0777 ms/op 0.47
updateUnfinalizedPubkeys - updating 100 pubkeys 4.2052 ms/op 5.8934 ms/op 0.71
updateUnfinalizedPubkeys - updating 1000 pubkeys 51.678 ms/op 66.025 ms/op 0.78
validate api signedAggregateAndProof - struct 2.0523 ms/op 1.8313 ms/op 1.12
validate gossip signedAggregateAndProof - struct 1.7547 ms/op 2.0381 ms/op 0.86
batch validate gossip attestation - vc 640000 - chunk 32 133.22 us/op 159.86 us/op 0.83
batch validate gossip attestation - vc 640000 - chunk 64 123.55 us/op 148.72 us/op 0.83
batch validate gossip attestation - vc 640000 - chunk 128 111.94 us/op 144.79 us/op 0.77
batch validate gossip attestation - vc 640000 - chunk 256 111.04 us/op 119.41 us/op 0.93
pickEth1Vote - no votes 1.0763 ms/op 1.1738 ms/op 0.92
pickEth1Vote - max votes 6.7935 ms/op 7.2901 ms/op 0.93
pickEth1Vote - Eth1Data hashTreeRoot value x2048 17.183 ms/op 13.906 ms/op 1.24
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 23.349 ms/op 21.547 ms/op 1.08
pickEth1Vote - Eth1Data fastSerialize value x2048 475.35 us/op 551.19 us/op 0.86
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.4618 ms/op 4.5870 ms/op 0.54
bytes32 toHexString 437.00 ns/op 626.00 ns/op 0.70
bytes32 Buffer.toString(hex) 259.00 ns/op 271.00 ns/op 0.96
bytes32 Buffer.toString(hex) from Uint8Array 440.00 ns/op 492.00 ns/op 0.89
bytes32 Buffer.toString(hex) + 0x 273.00 ns/op 273.00 ns/op 1.00
Object access 1 prop 0.14500 ns/op 0.20200 ns/op 0.72
Map access 1 prop 0.13700 ns/op 0.14800 ns/op 0.93
Object get x1000 5.9230 ns/op 6.2110 ns/op 0.95
Map get x1000 6.3300 ns/op 6.7660 ns/op 0.94
Object set x1000 32.611 ns/op 50.880 ns/op 0.64
Map set x1000 21.932 ns/op 39.200 ns/op 0.56
Return object 10000 times 0.29490 ns/op 0.32190 ns/op 0.92
Throw Error 10000 times 3.3674 us/op 3.5923 us/op 0.94
toHex 143.43 ns/op 193.15 ns/op 0.74
Buffer.from 142.18 ns/op 178.98 ns/op 0.79
shared Buffer 94.639 ns/op 105.48 ns/op 0.90
fastMsgIdFn sha256 / 200 bytes 2.2970 us/op 2.3280 us/op 0.99
fastMsgIdFn h32 xxhash / 200 bytes 243.00 ns/op 309.00 ns/op 0.79
fastMsgIdFn h64 xxhash / 200 bytes 280.00 ns/op 301.00 ns/op 0.93
fastMsgIdFn sha256 / 1000 bytes 7.5700 us/op 8.1220 us/op 0.93
fastMsgIdFn h32 xxhash / 1000 bytes 410.00 ns/op 449.00 ns/op 0.91
fastMsgIdFn h64 xxhash / 1000 bytes 354.00 ns/op 375.00 ns/op 0.94
fastMsgIdFn sha256 / 10000 bytes 64.924 us/op 67.234 us/op 0.97
fastMsgIdFn h32 xxhash / 10000 bytes 1.9030 us/op 2.0170 us/op 0.94
fastMsgIdFn h64 xxhash / 10000 bytes 1.2440 us/op 1.2880 us/op 0.97
send data - 1000 256B messages 13.901 ms/op 15.344 ms/op 0.91
send data - 1000 512B messages 19.087 ms/op 20.582 ms/op 0.93
send data - 1000 1024B messages 28.768 ms/op 32.342 ms/op 0.89
send data - 1000 1200B messages 30.439 ms/op 33.462 ms/op 0.91
send data - 1000 2048B messages 36.010 ms/op 36.554 ms/op 0.99
send data - 1000 4096B messages 34.039 ms/op 38.245 ms/op 0.89
send data - 1000 16384B messages 80.565 ms/op 86.273 ms/op 0.93
send data - 1000 65536B messages 223.50 ms/op 264.66 ms/op 0.84
enrSubnets - fastDeserialize 64 bits 1.4260 us/op 1.3530 us/op 1.05
enrSubnets - ssz BitVector 64 bits 403.00 ns/op 450.00 ns/op 0.90
enrSubnets - fastDeserialize 4 bits 190.00 ns/op 204.00 ns/op 0.93
enrSubnets - ssz BitVector 4 bits 446.00 ns/op 459.00 ns/op 0.97
prioritizePeers score -10:0 att 32-0.1 sync 2-0 198.92 us/op 206.53 us/op 0.96
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 199.29 us/op 200.93 us/op 0.99
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 352.51 us/op 387.57 us/op 0.91
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 646.63 us/op 541.87 us/op 1.19
prioritizePeers score 0:0 att 64-1 sync 4-1 1.1939 ms/op 1.0134 ms/op 1.18
array of 16000 items push then shift 1.8896 us/op 1.9130 us/op 0.99
LinkedList of 16000 items push then shift 10.763 ns/op 8.1230 ns/op 1.33
array of 16000 items push then pop 184.58 ns/op 143.62 ns/op 1.29
LinkedList of 16000 items push then pop 9.0370 ns/op 7.6180 ns/op 1.19
array of 24000 items push then shift 2.7852 us/op 2.5118 us/op 1.11
LinkedList of 24000 items push then shift 11.184 ns/op 8.6250 ns/op 1.30
array of 24000 items push then pop 229.74 ns/op 177.63 ns/op 1.29
LinkedList of 24000 items push then pop 9.6150 ns/op 8.2970 ns/op 1.16
intersect bitArray bitLen 8 8.6230 ns/op 6.9650 ns/op 1.24
intersect array and set length 8 86.062 ns/op 61.859 ns/op 1.39
intersect bitArray bitLen 128 33.722 ns/op 31.004 ns/op 1.09
intersect array and set length 128 1.1011 us/op 837.44 ns/op 1.31
bitArray.getTrueBitIndexes() bitLen 128 3.1320 us/op 2.3160 us/op 1.35
bitArray.getTrueBitIndexes() bitLen 248 5.1630 us/op 4.4540 us/op 1.16
bitArray.getTrueBitIndexes() bitLen 512 12.989 us/op 8.4700 us/op 1.53
Buffer.concat 32 items 1.1980 us/op 986.00 ns/op 1.22
Uint8Array.set 32 items 2.5430 us/op 1.6600 us/op 1.53
Buffer.copy 2.7190 us/op 1.9870 us/op 1.37
Uint8Array.set - with subarray 4.2740 us/op 3.2040 us/op 1.33
Uint8Array.set - without subarray 2.3020 us/op 1.7080 us/op 1.35
getUint32 - dataview 372.00 ns/op 304.00 ns/op 1.22
getUint32 - manual 331.00 ns/op 219.00 ns/op 1.51
Set add up to 64 items then delete first 3.5665 us/op 2.5193 us/op 1.42
OrderedSet add up to 64 items then delete first 5.7029 us/op 4.1617 us/op 1.37
Set add up to 64 items then delete last 3.8354 us/op 3.1986 us/op 1.20
OrderedSet add up to 64 items then delete last 5.7974 us/op 4.3760 us/op 1.32
Set add up to 64 items then delete middle 3.6403 us/op 2.6464 us/op 1.38
OrderedSet add up to 64 items then delete middle 7.7278 us/op 6.0279 us/op 1.28
Set add up to 128 items then delete first 7.3406 us/op 5.3519 us/op 1.37
OrderedSet add up to 128 items then delete first 12.365 us/op 10.577 us/op 1.17
Set add up to 128 items then delete last 7.5614 us/op 5.5222 us/op 1.37
OrderedSet add up to 128 items then delete last 11.731 us/op 8.3033 us/op 1.41
Set add up to 128 items then delete middle 7.0009 us/op 6.4714 us/op 1.08
OrderedSet add up to 128 items then delete middle 18.271 us/op 18.652 us/op 0.98
Set add up to 256 items then delete first 15.651 us/op 13.138 us/op 1.19
OrderedSet add up to 256 items then delete first 24.363 us/op 21.447 us/op 1.14
Set add up to 256 items then delete last 14.953 us/op 11.174 us/op 1.34
OrderedSet add up to 256 items then delete last 23.104 us/op 16.175 us/op 1.43
Set add up to 256 items then delete middle 14.528 us/op 10.177 us/op 1.43
OrderedSet add up to 256 items then delete middle 51.356 us/op 47.018 us/op 1.09
transfer serialized Status (84 B) 1.8810 us/op 1.5220 us/op 1.24
copy serialized Status (84 B) 1.7430 us/op 1.3250 us/op 1.32
transfer serialized SignedVoluntaryExit (112 B) 2.0810 us/op 1.5040 us/op 1.38
copy serialized SignedVoluntaryExit (112 B) 1.7930 us/op 1.2540 us/op 1.43
transfer serialized ProposerSlashing (416 B) 2.6770 us/op 2.3620 us/op 1.13
copy serialized ProposerSlashing (416 B) 2.8830 us/op 2.0220 us/op 1.43
transfer serialized Attestation (485 B) 2.8760 us/op 1.7890 us/op 1.61
copy serialized Attestation (485 B) 2.8770 us/op 1.7560 us/op 1.64
transfer serialized AttesterSlashing (33232 B) 2.2450 us/op 1.8630 us/op 1.21
copy serialized AttesterSlashing (33232 B) 11.618 us/op 5.9160 us/op 1.96
transfer serialized Small SignedBeaconBlock (128000 B) 3.6380 us/op 2.7500 us/op 1.32
copy serialized Small SignedBeaconBlock (128000 B) 33.827 us/op 21.094 us/op 1.60
transfer serialized Avg SignedBeaconBlock (200000 B) 4.6410 us/op 3.3590 us/op 1.38
copy serialized Avg SignedBeaconBlock (200000 B) 51.635 us/op 33.204 us/op 1.56
transfer serialized BlobsSidecar (524380 B) 6.2360 us/op 3.7570 us/op 1.66
copy serialized BlobsSidecar (524380 B) 170.71 us/op 129.31 us/op 1.32
transfer serialized Big SignedBeaconBlock (1000000 B) 6.5160 us/op 3.9660 us/op 1.64
copy serialized Big SignedBeaconBlock (1000000 B) 319.21 us/op 297.07 us/op 1.07
pass gossip attestations to forkchoice per slot 3.3942 ms/op 3.1079 ms/op 1.09
forkChoice updateHead vc 100000 bc 64 eq 0 491.89 us/op 465.96 us/op 1.06
forkChoice updateHead vc 600000 bc 64 eq 0 6.6216 ms/op 3.0337 ms/op 2.18
forkChoice updateHead vc 1000000 bc 64 eq 0 8.0847 ms/op 5.0290 ms/op 1.61
forkChoice updateHead vc 600000 bc 320 eq 0 4.1081 ms/op 2.9222 ms/op 1.41
forkChoice updateHead vc 600000 bc 1200 eq 0 4.8484 ms/op 2.9764 ms/op 1.63
forkChoice updateHead vc 600000 bc 7200 eq 0 6.2448 ms/op 4.5130 ms/op 1.38
forkChoice updateHead vc 600000 bc 64 eq 1000 11.934 ms/op 10.741 ms/op 1.11
forkChoice updateHead vc 600000 bc 64 eq 10000 11.704 ms/op 10.910 ms/op 1.07
forkChoice updateHead vc 600000 bc 64 eq 300000 33.869 ms/op 14.765 ms/op 2.29
computeDeltas 500000 validators 300 proto nodes 6.2227 ms/op 4.4766 ms/op 1.39
computeDeltas 500000 validators 1200 proto nodes 7.0383 ms/op 4.3498 ms/op 1.62
computeDeltas 500000 validators 7200 proto nodes 6.8109 ms/op 4.2661 ms/op 1.60
computeDeltas 750000 validators 300 proto nodes 10.729 ms/op 6.4602 ms/op 1.66
computeDeltas 750000 validators 1200 proto nodes 10.802 ms/op 6.6890 ms/op 1.61
computeDeltas 750000 validators 7200 proto nodes 9.0051 ms/op 6.5004 ms/op 1.39
computeDeltas 1400000 validators 300 proto nodes 16.066 ms/op 11.826 ms/op 1.36
computeDeltas 1400000 validators 1200 proto nodes 15.178 ms/op 13.720 ms/op 1.11
computeDeltas 1400000 validators 7200 proto nodes 15.006 ms/op 12.279 ms/op 1.22
computeDeltas 2100000 validators 300 proto nodes 20.751 ms/op 20.941 ms/op 0.99
computeDeltas 2100000 validators 1200 proto nodes 21.231 ms/op 24.485 ms/op 0.87
computeDeltas 2100000 validators 7200 proto nodes 21.298 ms/op 26.195 ms/op 0.81
altair processAttestation - 250000 vs - 7PWei normalcase 2.5097 ms/op 4.0004 ms/op 0.63
altair processAttestation - 250000 vs - 7PWei worstcase 3.7826 ms/op 5.3793 ms/op 0.70
altair processAttestation - setStatus - 1/6 committees join 142.51 us/op 175.69 us/op 0.81
altair processAttestation - setStatus - 1/3 committees join 257.64 us/op 405.87 us/op 0.63
altair processAttestation - setStatus - 1/2 committees join 329.02 us/op 362.80 us/op 0.91
altair processAttestation - setStatus - 2/3 committees join 412.92 us/op 385.46 us/op 1.07
altair processAttestation - setStatus - 4/5 committees join 564.45 us/op 551.97 us/op 1.02
altair processAttestation - setStatus - 100% committees join 620.88 us/op 642.47 us/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase 4.8535 ms/op 6.1016 ms/op 0.80
altair processBlock - 250000 vs - 7PWei normalcase hashState 29.658 ms/op 31.131 ms/op 0.95
altair processBlock - 250000 vs - 7PWei worstcase 37.572 ms/op 42.616 ms/op 0.88
altair processBlock - 250000 vs - 7PWei worstcase hashState 86.996 ms/op 83.015 ms/op 1.05
phase0 processBlock - 250000 vs - 7PWei normalcase 2.2980 ms/op 3.1487 ms/op 0.73
phase0 processBlock - 250000 vs - 7PWei worstcase 24.852 ms/op 29.216 ms/op 0.85
altair processEth1Data - 250000 vs - 7PWei normalcase 420.58 us/op 449.73 us/op 0.94
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.7120 us/op 9.5290 us/op 0.60
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 38.336 us/op 49.119 us/op 0.78
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 9.1430 us/op 16.073 us/op 0.57
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 8.0530 us/op 10.691 us/op 0.75
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 150.53 us/op 192.39 us/op 0.78
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.5068 ms/op 1.3502 ms/op 1.12
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.5956 ms/op 1.6194 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.9419 ms/op 2.0316 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.9151 ms/op 6.4913 ms/op 0.76
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.5793 ms/op 2.4245 ms/op 0.65
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.6343 ms/op 4.0445 ms/op 0.90
Tree 40 250000 create 226.26 ms/op 279.96 ms/op 0.81
Tree 40 250000 get(125000) 152.18 ns/op 166.81 ns/op 0.91
Tree 40 250000 set(125000) 682.04 ns/op 769.36 ns/op 0.89
Tree 40 250000 toArray() 17.444 ms/op 21.708 ms/op 0.80
Tree 40 250000 iterate all - toArray() + loop 16.775 ms/op 20.965 ms/op 0.80
Tree 40 250000 iterate all - get(i) 55.968 ms/op 58.447 ms/op 0.96
Array 250000 create 3.0019 ms/op 3.5322 ms/op 0.85
Array 250000 clone - spread 1.5206 ms/op 1.4852 ms/op 1.02
Array 250000 get(125000) 0.43500 ns/op 0.42500 ns/op 1.02
Array 250000 set(125000) 0.44400 ns/op 0.46700 ns/op 0.95
Array 250000 iterate all - loop 98.117 us/op 111.28 us/op 0.88
phase0 afterProcessEpoch - 250000 vs - 7PWei 50.565 ms/op 51.601 ms/op 0.98
Array.fill - length 1000000 3.6875 ms/op 3.8294 ms/op 0.96
Array push - length 1000000 17.516 ms/op 18.530 ms/op 0.95
Array.get 0.28594 ns/op 0.29476 ns/op 0.97
Uint8Array.get 0.44342 ns/op 0.45900 ns/op 0.97
phase0 beforeProcessEpoch - 250000 vs - 7PWei 17.528 ms/op 17.901 ms/op 0.98
altair processEpoch - mainnet_e81889 314.17 ms/op 296.53 ms/op 1.06
mainnet_e81889 - altair beforeProcessEpoch 19.891 ms/op 19.771 ms/op 1.01
mainnet_e81889 - altair processJustificationAndFinalization 16.881 us/op 12.941 us/op 1.30
mainnet_e81889 - altair processInactivityUpdates 6.0321 ms/op 7.8546 ms/op 0.77
mainnet_e81889 - altair processRewardsAndPenalties 52.457 ms/op 55.586 ms/op 0.94
mainnet_e81889 - altair processRegistryUpdates 2.3940 us/op 2.2010 us/op 1.09
mainnet_e81889 - altair processSlashings 920.00 ns/op 624.00 ns/op 1.47
mainnet_e81889 - altair processEth1DataReset 581.00 ns/op 483.00 ns/op 1.20
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.7188 ms/op 3.7741 ms/op 0.46
mainnet_e81889 - altair processSlashingsReset 3.9970 us/op 9.3870 us/op 0.43
mainnet_e81889 - altair processRandaoMixesReset 5.4420 us/op 8.2490 us/op 0.66
mainnet_e81889 - altair processHistoricalRootsUpdate 678.00 ns/op 795.00 ns/op 0.85
mainnet_e81889 - altair processParticipationFlagUpdates 2.3460 us/op 5.7640 us/op 0.41
mainnet_e81889 - altair processSyncCommitteeUpdates 507.00 ns/op 675.00 ns/op 0.75
mainnet_e81889 - altair afterProcessEpoch 52.768 ms/op 53.198 ms/op 0.99
capella processEpoch - mainnet_e217614 1.1943 s/op 1.2557 s/op 0.95
mainnet_e217614 - capella beforeProcessEpoch 78.686 ms/op 98.810 ms/op 0.80
mainnet_e217614 - capella processJustificationAndFinalization 20.490 us/op 28.779 us/op 0.71
mainnet_e217614 - capella processInactivityUpdates 21.324 ms/op 21.804 ms/op 0.98
mainnet_e217614 - capella processRewardsAndPenalties 265.26 ms/op 283.50 ms/op 0.94
mainnet_e217614 - capella processRegistryUpdates 17.004 us/op 25.027 us/op 0.68
mainnet_e217614 - capella processSlashings 458.00 ns/op 912.00 ns/op 0.50
mainnet_e217614 - capella processEth1DataReset 389.00 ns/op 708.00 ns/op 0.55
mainnet_e217614 - capella processEffectiveBalanceUpdates 16.550 ms/op 18.641 ms/op 0.89
mainnet_e217614 - capella processSlashingsReset 3.0910 us/op 5.5000 us/op 0.56
mainnet_e217614 - capella processRandaoMixesReset 3.9660 us/op 13.717 us/op 0.29
mainnet_e217614 - capella processHistoricalRootsUpdate 1.7390 us/op 856.00 ns/op 2.03
mainnet_e217614 - capella processParticipationFlagUpdates 2.6170 us/op 3.1450 us/op 0.83
mainnet_e217614 - capella afterProcessEpoch 126.18 ms/op 131.77 ms/op 0.96
phase0 processEpoch - mainnet_e58758 324.31 ms/op 416.76 ms/op 0.78
mainnet_e58758 - phase0 beforeProcessEpoch 97.919 ms/op 92.313 ms/op 1.06
mainnet_e58758 - phase0 processJustificationAndFinalization 18.173 us/op 20.058 us/op 0.91
mainnet_e58758 - phase0 processRewardsAndPenalties 34.959 ms/op 42.567 ms/op 0.82
mainnet_e58758 - phase0 processRegistryUpdates 9.6840 us/op 14.222 us/op 0.68
mainnet_e58758 - phase0 processSlashings 372.00 ns/op 519.00 ns/op 0.72
mainnet_e58758 - phase0 processEth1DataReset 305.00 ns/op 566.00 ns/op 0.54
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.3937 ms/op 1.3714 ms/op 1.02
mainnet_e58758 - phase0 processSlashingsReset 3.5920 us/op 8.1350 us/op 0.44
mainnet_e58758 - phase0 processRandaoMixesReset 4.5060 us/op 9.3030 us/op 0.48
mainnet_e58758 - phase0 processHistoricalRootsUpdate 315.00 ns/op 729.00 ns/op 0.43
mainnet_e58758 - phase0 processParticipationRecordUpdates 3.3110 us/op 6.7750 us/op 0.49
mainnet_e58758 - phase0 afterProcessEpoch 43.913 ms/op 48.092 ms/op 0.91
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.5994 ms/op 1.8926 ms/op 0.85
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.9561 ms/op 3.5816 ms/op 0.83
altair processInactivityUpdates - 250000 normalcase 17.581 ms/op 23.902 ms/op 0.74
altair processInactivityUpdates - 250000 worstcase 20.291 ms/op 23.605 ms/op 0.86
phase0 processRegistryUpdates - 250000 normalcase 6.2360 us/op 15.018 us/op 0.42
phase0 processRegistryUpdates - 250000 badcase_full_deposits 349.41 us/op 481.15 us/op 0.73
phase0 processRegistryUpdates - 250000 worstcase 0.5 135.70 ms/op 164.33 ms/op 0.83
altair processRewardsAndPenalties - 250000 normalcase 36.118 ms/op 52.718 ms/op 0.69
altair processRewardsAndPenalties - 250000 worstcase 44.318 ms/op 51.569 ms/op 0.86
phase0 getAttestationDeltas - 250000 normalcase 7.6808 ms/op 10.768 ms/op 0.71
phase0 getAttestationDeltas - 250000 worstcase 7.7674 ms/op 8.9439 ms/op 0.87
phase0 processSlashings - 250000 worstcase 109.46 us/op 109.62 us/op 1.00
altair processSyncCommitteeUpdates - 250000 132.14 ms/op 142.98 ms/op 0.92
BeaconState.hashTreeRoot - No change 289.00 ns/op 408.00 ns/op 0.71
BeaconState.hashTreeRoot - 1 full validator 135.88 us/op 130.59 us/op 1.04
BeaconState.hashTreeRoot - 32 full validator 1.1386 ms/op 1.7923 ms/op 0.64
BeaconState.hashTreeRoot - 512 full validator 11.182 ms/op 12.350 ms/op 0.91
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 179.14 us/op 148.40 us/op 1.21
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.1613 ms/op 1.9437 ms/op 1.11
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 29.101 ms/op 27.015 ms/op 1.08
BeaconState.hashTreeRoot - 1 balances 132.32 us/op 112.52 us/op 1.18
BeaconState.hashTreeRoot - 32 balances 1.1392 ms/op 1.0684 ms/op 1.07
BeaconState.hashTreeRoot - 512 balances 8.3311 ms/op 9.5965 ms/op 0.87
BeaconState.hashTreeRoot - 250000 balances 164.91 ms/op 243.04 ms/op 0.68
aggregationBits - 2048 els - zipIndexesInBitList 30.153 us/op 42.647 us/op 0.71
byteArrayEquals 32 55.883 ns/op 64.846 ns/op 0.86
Buffer.compare 32 18.081 ns/op 17.632 ns/op 1.03
byteArrayEquals 1024 1.6471 us/op 1.6136 us/op 1.02
Buffer.compare 1024 27.151 ns/op 25.558 ns/op 1.06
byteArrayEquals 16384 26.458 us/op 25.749 us/op 1.03
Buffer.compare 16384 212.34 ns/op 203.80 ns/op 1.04
byteArrayEquals 123687377 203.84 ms/op 227.23 ms/op 0.90
Buffer.compare 123687377 10.910 ms/op 20.442 ms/op 0.53
byteArrayEquals 32 - diff last byte 56.657 ns/op 68.532 ns/op 0.83
Buffer.compare 32 - diff last byte 19.153 ns/op 23.577 ns/op 0.81
byteArrayEquals 1024 - diff last byte 1.7543 us/op 1.9801 us/op 0.89
Buffer.compare 1024 - diff last byte 30.868 ns/op 42.123 ns/op 0.73
byteArrayEquals 16384 - diff last byte 28.268 us/op 31.222 us/op 0.91
Buffer.compare 16384 - diff last byte 231.12 ns/op 303.27 ns/op 0.76
byteArrayEquals 123687377 - diff last byte 223.09 ms/op 215.47 ms/op 1.04
Buffer.compare 123687377 - diff last byte 12.699 ms/op 11.842 ms/op 1.07
byteArrayEquals 32 - random bytes 6.3650 ns/op 5.4510 ns/op 1.17
Buffer.compare 32 - random bytes 20.770 ns/op 20.710 ns/op 1.00
byteArrayEquals 1024 - random bytes 8.0720 ns/op 6.3760 ns/op 1.27
Buffer.compare 1024 - random bytes 20.192 ns/op 22.346 ns/op 0.90
byteArrayEquals 16384 - random bytes 6.0060 ns/op 6.9260 ns/op 0.87
Buffer.compare 16384 - random bytes 24.839 ns/op 20.004 ns/op 1.24
byteArrayEquals 123687377 - random bytes 7.9500 ns/op 7.4600 ns/op 1.07
Buffer.compare 123687377 - random bytes 24.280 ns/op 20.800 ns/op 1.17
regular array get 100000 times 40.342 us/op 33.558 us/op 1.20
wrappedArray get 100000 times 47.884 us/op 33.980 us/op 1.41
arrayWithProxy get 100000 times 15.690 ms/op 16.248 ms/op 0.97
ssz.Root.equals 53.406 ns/op 50.215 ns/op 1.06
byteArrayEquals 52.125 ns/op 58.733 ns/op 0.89
Buffer.compare 12.328 ns/op 13.558 ns/op 0.91
processSlot - 1 slots 22.973 us/op 28.369 us/op 0.81
processSlot - 32 slots 4.2610 ms/op 3.6083 ms/op 1.18
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 54.479 ms/op 52.087 ms/op 1.05
getCommitteeAssignments - req 1 vs - 250000 vc 2.4185 ms/op 2.6802 ms/op 0.90
getCommitteeAssignments - req 100 vs - 250000 vc 4.6377 ms/op 4.7180 ms/op 0.98
getCommitteeAssignments - req 1000 vs - 250000 vc 5.1044 ms/op 5.0592 ms/op 1.01
findModifiedValidators - 10000 modified validators 617.93 ms/op 505.09 ms/op 1.22
findModifiedValidators - 1000 modified validators 602.08 ms/op 265.30 ms/op 2.27
findModifiedValidators - 100 modified validators 359.07 ms/op 317.05 ms/op 1.13
findModifiedValidators - 10 modified validators 294.71 ms/op 258.31 ms/op 1.14
findModifiedValidators - 1 modified validators 271.76 ms/op 248.96 ms/op 1.09
findModifiedValidators - no difference 321.23 ms/op 283.87 ms/op 1.13
compare ViewDUs 3.8414 s/op 4.4528 s/op 0.86
compare each validator Uint8Array 1.6074 s/op 1.7023 s/op 0.94
compare ViewDU to Uint8Array 1.4166 s/op 1.2657 s/op 1.12
migrate state 1000000 validators, 24 modified, 0 new 899.54 ms/op 902.03 ms/op 1.00
migrate state 1000000 validators, 1700 modified, 1000 new 1.2121 s/op 1.1175 s/op 1.08
migrate state 1000000 validators, 3400 modified, 2000 new 1.4851 s/op 1.2592 s/op 1.18
migrate state 1500000 validators, 24 modified, 0 new 1.0122 s/op 784.94 ms/op 1.29
migrate state 1500000 validators, 1700 modified, 1000 new 1.1607 s/op 1.0624 s/op 1.09
migrate state 1500000 validators, 3400 modified, 2000 new 1.4412 s/op 1.3327 s/op 1.08
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.0900 ns/op 4.9200 ns/op 1.03
state getBlockRootAtSlot - 250000 vs - 7PWei 865.45 ns/op 605.41 ns/op 1.43
computeProposers - vc 250000 8.7792 ms/op 7.3412 ms/op 1.20
computeEpochShuffling - vc 250000 46.454 ms/op 43.533 ms/op 1.07
getNextSyncCommittee - vc 250000 146.83 ms/op 153.66 ms/op 0.96
computeSigningRoot for AttestationData 23.502 us/op 30.158 us/op 0.78
hash AttestationData serialized data then Buffer.toString(base64) 1.6982 us/op 1.6982 us/op 1.00
toHexString serialized data 1.0565 us/op 1.0046 us/op 1.05
Buffer.toString(base64) 218.40 ns/op 208.91 ns/op 1.05
nodejs block root to RootHex using toHex 186.71 ns/op 179.82 ns/op 1.04
nodejs block root to RootHex using toRootHex 116.90 ns/op 106.47 ns/op 1.10
browser block root to RootHex using the deprecated toHexString 364.31 ns/op 244.80 ns/op 1.49
browser block root to RootHex using toHex 277.24 ns/op 220.12 ns/op 1.26
browser block root to RootHex using toRootHex 191.86 ns/op 175.54 ns/op 1.09

by benchmarkbot/action

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.

Good work! Some initial comments. Haven't gone through the entire PR yet


This documentation is open source, contribute at [Github Lodestar repository /docs](https://github.com/ChainSafe/lodestar/tree/unstable/docs).
If you run the [execution client](https://ethereum.org/en/developers/docs/nodes-and-clients/#execution-clients) on the same host, you will need to check their requirements and add them to the above requirements.
Copy link
Contributor

Choose a reason for hiding this comment

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

Shall we also add a hardware expectation for running EL+CL like what Nimbus does here?
Broadly, to run both an execution and a consensus client on the same machine, we recommend a 2 TB SSD and 16 GB RAM.

https://nimbus.guide/hardware.html

Copy link
Member Author

Choose a reason for hiding this comment

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

I opted not to only because of the variations of the different EL clients. Will be easier IMO to just have the user figure out their recommendations and add it to our recommendations.

Copy link
Member

Choose a reason for hiding this comment

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

Broadly, to run both an execution and a consensus client on the same machine, we recommend a 2 TB SSD and 16 GB RAM.

I am not sure this is even a good recommendation anymore, I generally recommend people to go for 4TB nowadays since it's unknown when we will ship the verge + blob count increase adds further storage burden.

16GB is also bit tight for Lodestar with most other ELs, it's not sufficient with Nethermind for example, my server is sitting at 17.2GB

docs/pages/introduction.md Outdated Show resolved Hide resolved
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 pretty good overall!


This documentation is open source, contribute at [Github Lodestar repository /docs](https://github.com/ChainSafe/lodestar/tree/unstable/docs).
If you run the [execution client](https://ethereum.org/en/developers/docs/nodes-and-clients/#execution-clients) on the same host, you will need to check their requirements and add them to the above requirements.
Copy link
Member

Choose a reason for hiding this comment

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

Broadly, to run both an execution and a consensus client on the same machine, we recommend a 2 TB SSD and 16 GB RAM.

I am not sure this is even a good recommendation anymore, I generally recommend people to go for 4TB nowadays since it's unknown when we will ship the verge + blob count increase adds further storage burden.

16GB is also bit tight for Lodestar with most other ELs, it's not sufficient with Nethermind for example, my server is sitting at 17.2GB

docs/pages/introduction.md Outdated Show resolved Hide resolved
docs/pages/run/validator-management/vc-configuration.md Outdated Show resolved Hide resolved
strict_fee_recipient_check: false
fee_recipient: "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
builder:
enabled: true
Copy link
Member

Choose a reason for hiding this comment

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

enabled is not part of file config, this is configured based on builder.selection now, ie. to disable builder it has to be to set executiononly

type ProposerConfigFileSection = {
graffiti?: string;
strict_fee_recipient_check?: string;
fee_recipient?: string;
builder?: {
// boolean are parse as string by the default schema readFile employs
// for js-yaml
gas_limit?: number;
selection?: routes.validator.BuilderSelection;
boost_factor?: bigint;
};
};


### Enable Proposer Configuration

After you have configured your proposer configuration YAML file, you can start Lodestar with an additional CLI flag option pointing to the file: `--proposerSettingsFile /path/to/proposer_config.yaml`.
Copy link
Member

Choose a reason for hiding this comment

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

should the flag be called --proposerConfigFile instead? we could keep the old name as an alias

Copy link
Member

Choose a reason for hiding this comment

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

should probably document that it can be retrieved via api which was recently added in #7210

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.

3 participants