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: include EL client info in graffiti #6753

Merged
merged 36 commits into from
Jul 30, 2024
Merged

feat: include EL client info in graffiti #6753

merged 36 commits into from
Jul 30, 2024

Conversation

ensi321
Copy link
Contributor

@ensi321 ensi321 commented May 9, 2024

This PR shifts the responsibility of setting the default graffiti from validator to beacon-node and also defines engine_getClientVersionV1.

Due to validator package no longer determines default graffiti, graffiti ValidatorStore is now marked as optional (type string | undefined). This implies produce block endpoints in validator api accepts optional graffiti and getGraffiti in key manager api now may throw error if no graffiti is available for the queried pubkey.

Default graffiti will be used during produceBlock api call when the block graffiti is undefined and private flag is unset. It is composed by getDefaultGraffiti which requires consensus client version and execution client version. Execution client version is retrieved by calling engine_getClientVersionV1 during execution engine start up and when updating execution engine state. The response is cached in clientVersion within execution engine.

Closes #6463

@ensi321 ensi321 requested a review from a team as a code owner May 9, 2024 14:56
@ensi321 ensi321 marked this pull request as draft May 9, 2024 14:56
@ensi321 ensi321 added this to the v1.19.0 milestone May 10, 2024
Copy link
Contributor

github-actions bot commented Jun 4, 2024

Performance Report

✔️ no performance regression detected

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 0517efa Previous: 59f72d0 Ratio
Object set x1000 22.447 ns/op 77.701 ns/op 0.29
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.1752 ms/op 7.7077 ms/op 0.15
Buffer.compare 123687377 3.7715 ms/op 12.212 ms/op 0.31
Buffer.compare 123687377 - diff last byte 3.8291 ms/op 11.603 ms/op 0.33
Full benchmark results
Benchmark suite Current: 0517efa Previous: 59f72d0 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.7793 ms/op 2.8144 ms/op 0.63
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 42.729 us/op 58.733 us/op 0.73
BLS verify - blst 881.49 us/op 1.0293 ms/op 0.86
BLS verifyMultipleSignatures 3 - blst 1.3211 ms/op 1.5085 ms/op 0.88
BLS verifyMultipleSignatures 8 - blst 2.0886 ms/op 2.2218 ms/op 0.94
BLS verifyMultipleSignatures 32 - blst 4.4211 ms/op 7.0741 ms/op 0.62
BLS verifyMultipleSignatures 64 - blst 8.4489 ms/op 12.137 ms/op 0.70
BLS verifyMultipleSignatures 128 - blst 16.110 ms/op 20.810 ms/op 0.77
BLS deserializing 10000 signatures 597.32 ms/op 739.80 ms/op 0.81
BLS deserializing 100000 signatures 6.0290 s/op 7.6259 s/op 0.79
BLS verifyMultipleSignatures - same message - 3 - blst 932.89 us/op 1.0784 ms/op 0.87
BLS verifyMultipleSignatures - same message - 8 - blst 1.0616 ms/op 1.2278 ms/op 0.86
BLS verifyMultipleSignatures - same message - 32 - blst 1.6548 ms/op 1.7701 ms/op 0.93
BLS verifyMultipleSignatures - same message - 64 - blst 2.4113 ms/op 2.6861 ms/op 0.90
BLS verifyMultipleSignatures - same message - 128 - blst 3.9779 ms/op 4.3882 ms/op 0.91
BLS aggregatePubkeys 32 - blst 18.158 us/op 21.434 us/op 0.85
BLS aggregatePubkeys 128 - blst 63.399 us/op 76.979 us/op 0.82
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 41.615 ms/op 101.51 ms/op 0.41
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 49.909 ms/op 67.655 ms/op 0.74
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 28.654 ms/op 40.916 ms/op 0.70
getSlashingsAndExits - default max 64.316 us/op 166.98 us/op 0.39
getSlashingsAndExits - 2k 245.53 us/op 496.12 us/op 0.49
proposeBlockBody type=full, size=empty 4.7304 ms/op 6.7414 ms/op 0.70
isKnown best case - 1 super set check 505.00 ns/op 500.00 ns/op 1.01
isKnown normal case - 2 super set checks 459.00 ns/op 535.00 ns/op 0.86
isKnown worse case - 16 super set checks 449.00 ns/op 442.00 ns/op 1.02
InMemoryCheckpointStateCache - add get delete 4.7770 us/op 6.7200 us/op 0.71
validate api signedAggregateAndProof - struct 2.1065 ms/op 1.7594 ms/op 1.20
validate gossip signedAggregateAndProof - struct 1.9123 ms/op 1.6286 ms/op 1.17
validate gossip attestation - vc 640000 968.80 us/op 1.1567 ms/op 0.84
batch validate gossip attestation - vc 640000 - chunk 32 118.13 us/op 141.22 us/op 0.84
batch validate gossip attestation - vc 640000 - chunk 64 106.65 us/op 125.17 us/op 0.85
batch validate gossip attestation - vc 640000 - chunk 128 95.604 us/op 114.95 us/op 0.83
batch validate gossip attestation - vc 640000 - chunk 256 97.481 us/op 117.75 us/op 0.83
pickEth1Vote - no votes 856.53 us/op 1.1676 ms/op 0.73
pickEth1Vote - max votes 7.9364 ms/op 12.274 ms/op 0.65
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.317 ms/op 17.013 ms/op 0.72
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 18.274 ms/op 29.311 ms/op 0.62
pickEth1Vote - Eth1Data fastSerialize value x2048 383.10 us/op 558.93 us/op 0.69
pickEth1Vote - Eth1Data fastSerialize tree x2048 5.3173 ms/op 4.5172 ms/op 1.18
bytes32 toHexString 593.00 ns/op 483.00 ns/op 1.23
bytes32 Buffer.toString(hex) 419.00 ns/op 256.00 ns/op 1.64
bytes32 Buffer.toString(hex) from Uint8Array 517.00 ns/op 384.00 ns/op 1.35
bytes32 Buffer.toString(hex) + 0x 429.00 ns/op 278.00 ns/op 1.54
Object access 1 prop 0.32700 ns/op 0.14400 ns/op 2.27
Map access 1 prop 0.36300 ns/op 0.13400 ns/op 2.71
Object get x1000 5.2110 ns/op 6.0310 ns/op 0.86
Map get x1000 5.8690 ns/op 6.7980 ns/op 0.86
Object set x1000 22.447 ns/op 77.701 ns/op 0.29
Map set x1000 18.664 ns/op 51.335 ns/op 0.36
Return object 10000 times 0.29620 ns/op 0.32530 ns/op 0.91
Throw Error 10000 times 2.6666 us/op 4.0236 us/op 0.66
fastMsgIdFn sha256 / 200 bytes 1.9410 us/op 2.5380 us/op 0.76
fastMsgIdFn h32 xxhash / 200 bytes 416.00 ns/op 331.00 ns/op 1.26
fastMsgIdFn h64 xxhash / 200 bytes 435.00 ns/op 312.00 ns/op 1.39
fastMsgIdFn sha256 / 1000 bytes 5.9050 us/op 8.2050 us/op 0.72
fastMsgIdFn h32 xxhash / 1000 bytes 523.00 ns/op 423.00 ns/op 1.24
fastMsgIdFn h64 xxhash / 1000 bytes 525.00 ns/op 369.00 ns/op 1.42
fastMsgIdFn sha256 / 10000 bytes 50.277 us/op 68.185 us/op 0.74
fastMsgIdFn h32 xxhash / 10000 bytes 1.8610 us/op 1.9830 us/op 0.94
fastMsgIdFn h64 xxhash / 10000 bytes 1.3060 us/op 1.3210 us/op 0.99
send data - 1000 256B messages 9.3293 ms/op 14.074 ms/op 0.66
send data - 1000 512B messages 12.601 ms/op 18.766 ms/op 0.67
send data - 1000 1024B messages 21.178 ms/op 27.920 ms/op 0.76
send data - 1000 1200B messages 22.029 ms/op 33.507 ms/op 0.66
send data - 1000 2048B messages 29.309 ms/op 36.791 ms/op 0.80
send data - 1000 4096B messages 26.587 ms/op 37.187 ms/op 0.71
send data - 1000 16384B messages 66.482 ms/op 73.300 ms/op 0.91
send data - 1000 65536B messages 251.27 ms/op 244.60 ms/op 1.03
enrSubnets - fastDeserialize 64 bits 1.2030 us/op 1.3780 us/op 0.87
enrSubnets - ssz BitVector 64 bits 548.00 ns/op 466.00 ns/op 1.18
enrSubnets - fastDeserialize 4 bits 325.00 ns/op 186.00 ns/op 1.75
enrSubnets - ssz BitVector 4 bits 516.00 ns/op 411.00 ns/op 1.26
prioritizePeers score -10:0 att 32-0.1 sync 2-0 128.78 us/op 225.14 us/op 0.57
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 116.45 us/op 189.71 us/op 0.61
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 271.70 us/op 398.79 us/op 0.68
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 457.65 us/op 595.66 us/op 0.77
prioritizePeers score 0:0 att 64-1 sync 4-1 506.94 us/op 1.1148 ms/op 0.45
array of 16000 items push then shift 1.2357 us/op 1.8577 us/op 0.67
LinkedList of 16000 items push then shift 7.2390 ns/op 8.7960 ns/op 0.82
array of 16000 items push then pop 85.642 ns/op 155.81 ns/op 0.55
LinkedList of 16000 items push then pop 6.2570 ns/op 8.2190 ns/op 0.76
array of 24000 items push then shift 1.8232 us/op 3.2274 us/op 0.56
LinkedList of 24000 items push then shift 6.8880 ns/op 17.365 ns/op 0.40
array of 24000 items push then pop 109.79 ns/op 268.90 ns/op 0.41
LinkedList of 24000 items push then pop 6.0910 ns/op 10.238 ns/op 0.59
intersect bitArray bitLen 8 5.1660 ns/op 7.8480 ns/op 0.66
intersect array and set length 8 37.009 ns/op 112.91 ns/op 0.33
intersect bitArray bitLen 128 25.528 ns/op 34.438 ns/op 0.74
intersect array and set length 128 555.27 ns/op 1.3290 us/op 0.42
bitArray.getTrueBitIndexes() bitLen 128 2.0280 us/op 2.7600 us/op 0.73
bitArray.getTrueBitIndexes() bitLen 248 3.7370 us/op 3.9640 us/op 0.94
bitArray.getTrueBitIndexes() bitLen 512 7.7180 us/op 8.1840 us/op 0.94
Buffer.concat 32 items 970.00 ns/op 988.00 ns/op 0.98
Uint8Array.set 32 items 1.3520 us/op 1.6320 us/op 0.83
Buffer.copy 1.5420 us/op 1.7750 us/op 0.87
Uint8Array.set - with subarray 1.9570 us/op 2.7890 us/op 0.70
Uint8Array.set - without subarray 1.2930 us/op 2.0330 us/op 0.64
getUint32 - dataview 415.00 ns/op 315.00 ns/op 1.32
getUint32 - manual 337.00 ns/op 260.00 ns/op 1.30
Set add up to 64 items then delete first 1.7564 us/op 2.7753 us/op 0.63
OrderedSet add up to 64 items then delete first 2.8135 us/op 3.9113 us/op 0.72
Set add up to 64 items then delete last 2.0392 us/op 3.6145 us/op 0.56
OrderedSet add up to 64 items then delete last 3.1010 us/op 5.1222 us/op 0.61
Set add up to 64 items then delete middle 2.0344 us/op 2.7298 us/op 0.75
OrderedSet add up to 64 items then delete middle 4.3678 us/op 6.0286 us/op 0.72
Set add up to 128 items then delete first 3.9099 us/op 6.8297 us/op 0.57
OrderedSet add up to 128 items then delete first 6.2854 us/op 10.442 us/op 0.60
Set add up to 128 items then delete last 3.7895 us/op 5.5755 us/op 0.68
OrderedSet add up to 128 items then delete last 5.8215 us/op 9.9522 us/op 0.58
Set add up to 128 items then delete middle 3.8008 us/op 5.2590 us/op 0.72
OrderedSet add up to 128 items then delete middle 11.201 us/op 14.926 us/op 0.75
Set add up to 256 items then delete first 7.6808 us/op 13.789 us/op 0.56
OrderedSet add up to 256 items then delete first 12.498 us/op 20.545 us/op 0.61
Set add up to 256 items then delete last 7.3044 us/op 12.554 us/op 0.58
OrderedSet add up to 256 items then delete last 11.611 us/op 15.758 us/op 0.74
Set add up to 256 items then delete middle 7.3204 us/op 10.667 us/op 0.69
OrderedSet add up to 256 items then delete middle 32.876 us/op 46.727 us/op 0.70
transfer serialized Status (84 B) 1.2850 us/op 1.5170 us/op 0.85
copy serialized Status (84 B) 1.1110 us/op 1.3080 us/op 0.85
transfer serialized SignedVoluntaryExit (112 B) 1.4650 us/op 1.6990 us/op 0.86
copy serialized SignedVoluntaryExit (112 B) 1.1330 us/op 1.3360 us/op 0.85
transfer serialized ProposerSlashing (416 B) 1.4600 us/op 2.1890 us/op 0.67
copy serialized ProposerSlashing (416 B) 1.3270 us/op 2.2500 us/op 0.59
transfer serialized Attestation (485 B) 1.5100 us/op 2.4170 us/op 0.62
copy serialized Attestation (485 B) 1.3530 us/op 2.2720 us/op 0.60
transfer serialized AttesterSlashing (33232 B) 1.8160 us/op 2.7010 us/op 0.67
copy serialized AttesterSlashing (33232 B) 5.0070 us/op 8.8250 us/op 0.57
transfer serialized Small SignedBeaconBlock (128000 B) 1.9420 us/op 2.8150 us/op 0.69
copy serialized Small SignedBeaconBlock (128000 B) 14.715 us/op 24.634 us/op 0.60
transfer serialized Avg SignedBeaconBlock (200000 B) 2.0090 us/op 3.6840 us/op 0.55
copy serialized Avg SignedBeaconBlock (200000 B) 19.508 us/op 25.755 us/op 0.76
transfer serialized BlobsSidecar (524380 B) 2.1600 us/op 2.6350 us/op 0.82
copy serialized BlobsSidecar (524380 B) 96.491 us/op 96.379 us/op 1.00
transfer serialized Big SignedBeaconBlock (1000000 B) 2.2710 us/op 3.8180 us/op 0.59
copy serialized Big SignedBeaconBlock (1000000 B) 157.27 us/op 183.77 us/op 0.86
pass gossip attestations to forkchoice per slot 2.7298 ms/op 3.5957 ms/op 0.76
forkChoice updateHead vc 100000 bc 64 eq 0 389.62 us/op 552.73 us/op 0.70
forkChoice updateHead vc 600000 bc 64 eq 0 2.4767 ms/op 3.2941 ms/op 0.75
forkChoice updateHead vc 1000000 bc 64 eq 0 4.1319 ms/op 6.1188 ms/op 0.68
forkChoice updateHead vc 600000 bc 320 eq 0 2.3900 ms/op 3.3470 ms/op 0.71
forkChoice updateHead vc 600000 bc 1200 eq 0 2.4532 ms/op 4.8470 ms/op 0.51
forkChoice updateHead vc 600000 bc 7200 eq 0 3.0453 ms/op 4.5896 ms/op 0.66
forkChoice updateHead vc 600000 bc 64 eq 1000 9.0543 ms/op 11.543 ms/op 0.78
forkChoice updateHead vc 600000 bc 64 eq 10000 8.9082 ms/op 11.883 ms/op 0.75
forkChoice updateHead vc 600000 bc 64 eq 300000 11.564 ms/op 23.222 ms/op 0.50
computeDeltas 500000 validators 300 proto nodes 2.9930 ms/op 4.0673 ms/op 0.74
computeDeltas 500000 validators 1200 proto nodes 2.9517 ms/op 4.2413 ms/op 0.70
computeDeltas 500000 validators 7200 proto nodes 2.9256 ms/op 4.6100 ms/op 0.63
computeDeltas 750000 validators 300 proto nodes 4.4562 ms/op 6.7896 ms/op 0.66
computeDeltas 750000 validators 1200 proto nodes 4.3800 ms/op 6.7521 ms/op 0.65
computeDeltas 750000 validators 7200 proto nodes 4.3926 ms/op 6.3722 ms/op 0.69
computeDeltas 1400000 validators 300 proto nodes 7.9035 ms/op 12.043 ms/op 0.66
computeDeltas 1400000 validators 1200 proto nodes 7.9221 ms/op 11.148 ms/op 0.71
computeDeltas 1400000 validators 7200 proto nodes 8.1631 ms/op 11.517 ms/op 0.71
computeDeltas 2100000 validators 300 proto nodes 12.301 ms/op 15.815 ms/op 0.78
computeDeltas 2100000 validators 1200 proto nodes 12.194 ms/op 15.677 ms/op 0.78
computeDeltas 2100000 validators 7200 proto nodes 12.289 ms/op 15.222 ms/op 0.81
altair processAttestation - 250000 vs - 7PWei normalcase 1.2823 ms/op 1.7476 ms/op 0.73
altair processAttestation - 250000 vs - 7PWei worstcase 2.1288 ms/op 2.6841 ms/op 0.79
altair processAttestation - setStatus - 1/6 committees join 69.921 us/op 92.773 us/op 0.75
altair processAttestation - setStatus - 1/3 committees join 136.80 us/op 180.33 us/op 0.76
altair processAttestation - setStatus - 1/2 committees join 203.50 us/op 265.68 us/op 0.77
altair processAttestation - setStatus - 2/3 committees join 277.06 us/op 333.22 us/op 0.83
altair processAttestation - setStatus - 4/5 committees join 393.97 us/op 507.92 us/op 0.78
altair processAttestation - setStatus - 100% committees join 473.36 us/op 604.03 us/op 0.78
altair processBlock - 250000 vs - 7PWei normalcase 3.0422 ms/op 4.5631 ms/op 0.67
altair processBlock - 250000 vs - 7PWei normalcase hashState 21.464 ms/op 32.407 ms/op 0.66
altair processBlock - 250000 vs - 7PWei worstcase 37.580 ms/op 39.460 ms/op 0.95
altair processBlock - 250000 vs - 7PWei worstcase hashState 69.189 ms/op 85.532 ms/op 0.81
phase0 processBlock - 250000 vs - 7PWei normalcase 2.0173 ms/op 2.7890 ms/op 0.72
phase0 processBlock - 250000 vs - 7PWei worstcase 22.495 ms/op 28.085 ms/op 0.80
altair processEth1Data - 250000 vs - 7PWei normalcase 243.16 us/op 467.26 us/op 0.52
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.9140 us/op 7.1460 us/op 0.83
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 22.735 us/op 30.398 us/op 0.75
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 6.7120 us/op 13.232 us/op 0.51
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 5.4840 us/op 8.4650 us/op 0.65
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 84.248 us/op 119.36 us/op 0.71
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 701.91 us/op 916.20 us/op 0.77
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 617.38 us/op 1.2645 ms/op 0.49
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 633.84 us/op 1.1508 ms/op 0.55
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.0612 ms/op 3.0927 ms/op 0.67
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.2384 ms/op 2.1243 ms/op 0.58
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.0565 ms/op 4.8473 ms/op 0.63
Tree 40 250000 create 173.01 ms/op 483.00 ms/op 0.36
Tree 40 250000 get(125000) 119.30 ns/op 179.48 ns/op 0.66
Tree 40 250000 set(125000) 564.35 ns/op 1.6828 us/op 0.34
Tree 40 250000 toArray() 19.022 ms/op 25.753 ms/op 0.74
Tree 40 250000 iterate all - toArray() + loop 10.604 ms/op 26.396 ms/op 0.40
Tree 40 250000 iterate all - get(i) 41.199 ms/op 74.884 ms/op 0.55
MutableVector 250000 create 6.7242 ms/op 16.958 ms/op 0.40
MutableVector 250000 get(125000) 9.2830 ns/op 7.9280 ns/op 1.17
MutableVector 250000 set(125000) 192.19 ns/op 300.55 ns/op 0.64
MutableVector 250000 toArray() 3.2579 ms/op 5.0849 ms/op 0.64
MutableVector 250000 iterate all - toArray() + loop 2.9751 ms/op 5.4807 ms/op 0.54
MutableVector 250000 iterate all - get(i) 1.4246 ms/op 1.7584 ms/op 0.81
Array 250000 create 2.9623 ms/op 4.8963 ms/op 0.61
Array 250000 clone - spread 1.4099 ms/op 3.6722 ms/op 0.38
Array 250000 get(125000) 0.57800 ns/op 0.51300 ns/op 1.13
Array 250000 set(125000) 0.57600 ns/op 0.53800 ns/op 1.07
Array 250000 iterate all - loop 75.045 us/op 123.48 us/op 0.61
effectiveBalanceIncrements clone Uint8Array 300000 26.591 us/op 78.460 us/op 0.34
effectiveBalanceIncrements clone MutableVector 300000 303.00 ns/op 167.00 ns/op 1.81
effectiveBalanceIncrements rw all Uint8Array 300000 165.47 us/op 221.00 us/op 0.75
effectiveBalanceIncrements rw all MutableVector 300000 66.497 ms/op 179.53 ms/op 0.37
phase0 afterProcessEpoch - 250000 vs - 7PWei 78.258 ms/op 99.330 ms/op 0.79
Array.fill - length 1000000 3.2196 ms/op 7.9360 ms/op 0.41
Array push - length 1000000 15.876 ms/op 26.478 ms/op 0.60
Array.get 0.26466 ns/op 0.31746 ns/op 0.83
Uint8Array.get 0.34182 ns/op 0.49242 ns/op 0.69
phase0 beforeProcessEpoch - 250000 vs - 7PWei 24.472 ms/op 30.087 ms/op 0.81
altair processEpoch - mainnet_e81889 323.05 ms/op 385.46 ms/op 0.84
mainnet_e81889 - altair beforeProcessEpoch 39.601 ms/op 36.538 ms/op 1.08
mainnet_e81889 - altair processJustificationAndFinalization 10.142 us/op 18.921 us/op 0.54
mainnet_e81889 - altair processInactivityUpdates 6.5669 ms/op 6.3351 ms/op 1.04
mainnet_e81889 - altair processRewardsAndPenalties 47.353 ms/op 56.362 ms/op 0.84
mainnet_e81889 - altair processRegistryUpdates 2.0850 us/op 3.3880 us/op 0.62
mainnet_e81889 - altair processSlashings 862.00 ns/op 847.00 ns/op 1.02
mainnet_e81889 - altair processEth1DataReset 715.00 ns/op 732.00 ns/op 0.98
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.3096 ms/op 2.3132 ms/op 0.57
mainnet_e81889 - altair processSlashingsReset 2.9260 us/op 8.3150 us/op 0.35
mainnet_e81889 - altair processRandaoMixesReset 7.1230 us/op 8.5160 us/op 0.84
mainnet_e81889 - altair processHistoricalRootsUpdate 917.00 ns/op 1.2700 us/op 0.72
mainnet_e81889 - altair processParticipationFlagUpdates 2.5780 us/op 3.6310 us/op 0.71
mainnet_e81889 - altair processSyncCommitteeUpdates 1.3910 us/op 1.0030 us/op 1.39
mainnet_e81889 - altair afterProcessEpoch 80.011 ms/op 106.20 ms/op 0.75
capella processEpoch - mainnet_e217614 1.4229 s/op 1.9567 s/op 0.73
mainnet_e217614 - capella beforeProcessEpoch 119.77 ms/op 174.03 ms/op 0.69
mainnet_e217614 - capella processJustificationAndFinalization 22.547 us/op 32.672 us/op 0.69
mainnet_e217614 - capella processInactivityUpdates 16.520 ms/op 23.799 ms/op 0.69
mainnet_e217614 - capella processRewardsAndPenalties 260.76 ms/op 293.13 ms/op 0.89
mainnet_e217614 - capella processRegistryUpdates 15.038 us/op 22.909 us/op 0.66
mainnet_e217614 - capella processSlashings 810.00 ns/op 821.00 ns/op 0.99
mainnet_e217614 - capella processEth1DataReset 968.00 ns/op 1.2620 us/op 0.77
mainnet_e217614 - capella processEffectiveBalanceUpdates 16.403 ms/op 25.334 ms/op 0.65
mainnet_e217614 - capella processSlashingsReset 8.1500 us/op 8.8370 us/op 0.92
mainnet_e217614 - capella processRandaoMixesReset 5.2110 us/op 14.103 us/op 0.37
mainnet_e217614 - capella processHistoricalRootsUpdate 1.1310 us/op 1.2750 us/op 0.89
mainnet_e217614 - capella processParticipationFlagUpdates 2.7410 us/op 8.0520 us/op 0.34
mainnet_e217614 - capella afterProcessEpoch 248.67 ms/op 412.89 ms/op 0.60
phase0 processEpoch - mainnet_e58758 426.01 ms/op 800.70 ms/op 0.53
mainnet_e58758 - phase0 beforeProcessEpoch 90.051 ms/op 218.61 ms/op 0.41
mainnet_e58758 - phase0 processJustificationAndFinalization 13.975 us/op 41.852 us/op 0.33
mainnet_e58758 - phase0 processRewardsAndPenalties 29.171 ms/op 58.574 ms/op 0.50
mainnet_e58758 - phase0 processRegistryUpdates 6.7570 us/op 20.839 us/op 0.32
mainnet_e58758 - phase0 processSlashings 718.00 ns/op 1.3770 us/op 0.52
mainnet_e58758 - phase0 processEth1DataReset 707.00 ns/op 1.3080 us/op 0.54
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 699.71 us/op 2.0452 ms/op 0.34
mainnet_e58758 - phase0 processSlashingsReset 2.3820 us/op 7.3930 us/op 0.32
mainnet_e58758 - phase0 processRandaoMixesReset 5.4480 us/op 13.948 us/op 0.39
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.0220 us/op 1.1550 us/op 0.88
mainnet_e58758 - phase0 processParticipationRecordUpdates 3.4080 us/op 20.240 us/op 0.17
mainnet_e58758 - phase0 afterProcessEpoch 68.913 ms/op 137.32 ms/op 0.50
phase0 processEffectiveBalanceUpdates - 250000 normalcase 820.03 us/op 2.0470 ms/op 0.40
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.1752 ms/op 7.7077 ms/op 0.15
altair processInactivityUpdates - 250000 normalcase 17.489 ms/op 29.936 ms/op 0.58
altair processInactivityUpdates - 250000 worstcase 15.116 ms/op 34.112 ms/op 0.44
phase0 processRegistryUpdates - 250000 normalcase 8.6240 us/op 20.105 us/op 0.43
phase0 processRegistryUpdates - 250000 badcase_full_deposits 289.42 us/op 507.66 us/op 0.57
phase0 processRegistryUpdates - 250000 worstcase 0.5 116.36 ms/op 168.90 ms/op 0.69
altair processRewardsAndPenalties - 250000 normalcase 35.702 ms/op 46.280 ms/op 0.77
altair processRewardsAndPenalties - 250000 worstcase 40.680 ms/op 46.715 ms/op 0.87
phase0 getAttestationDeltas - 250000 normalcase 6.0080 ms/op 12.549 ms/op 0.48
phase0 getAttestationDeltas - 250000 worstcase 5.9634 ms/op 9.9824 ms/op 0.60
phase0 processSlashings - 250000 worstcase 89.930 us/op 110.95 us/op 0.81
altair processSyncCommitteeUpdates - 250000 94.319 ms/op 146.44 ms/op 0.64
BeaconState.hashTreeRoot - No change 530.00 ns/op 358.00 ns/op 1.48
BeaconState.hashTreeRoot - 1 full validator 132.06 us/op 129.24 us/op 1.02
BeaconState.hashTreeRoot - 32 full validator 1.2572 ms/op 1.7672 ms/op 0.71
BeaconState.hashTreeRoot - 512 full validator 10.401 ms/op 15.259 ms/op 0.68
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 110.74 us/op 189.02 us/op 0.59
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.4868 ms/op 2.7816 ms/op 0.53
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 26.327 ms/op 34.706 ms/op 0.76
BeaconState.hashTreeRoot - 1 balances 97.310 us/op 140.65 us/op 0.69
BeaconState.hashTreeRoot - 32 balances 1.0132 ms/op 1.5437 ms/op 0.66
BeaconState.hashTreeRoot - 512 balances 10.019 ms/op 10.871 ms/op 0.92
BeaconState.hashTreeRoot - 250000 balances 208.61 ms/op 164.90 ms/op 1.27
aggregationBits - 2048 els - zipIndexesInBitList 20.346 us/op 28.413 us/op 0.72
byteArrayEquals 32 47.793 ns/op 56.290 ns/op 0.85
Buffer.compare 32 15.454 ns/op 17.995 ns/op 0.86
byteArrayEquals 1024 1.2549 us/op 1.6530 us/op 0.76
Buffer.compare 1024 24.202 ns/op 26.526 ns/op 0.91
byteArrayEquals 16384 19.948 us/op 26.347 us/op 0.76
Buffer.compare 16384 155.58 ns/op 189.44 ns/op 0.82
byteArrayEquals 123687377 149.40 ms/op 212.68 ms/op 0.70
Buffer.compare 123687377 3.7715 ms/op 12.212 ms/op 0.31
byteArrayEquals 32 - diff last byte 46.380 ns/op 59.934 ns/op 0.77
Buffer.compare 32 - diff last byte 15.953 ns/op 19.879 ns/op 0.80
byteArrayEquals 1024 - diff last byte 1.2479 us/op 1.8055 us/op 0.69
Buffer.compare 1024 - diff last byte 24.360 ns/op 29.804 ns/op 0.82
byteArrayEquals 16384 - diff last byte 19.806 us/op 28.535 us/op 0.69
Buffer.compare 16384 - diff last byte 160.25 ns/op 227.59 ns/op 0.70
byteArrayEquals 123687377 - diff last byte 146.68 ms/op 221.27 ms/op 0.66
Buffer.compare 123687377 - diff last byte 3.8291 ms/op 11.603 ms/op 0.33
byteArrayEquals 32 - random bytes 4.8260 ns/op 5.9520 ns/op 0.81
Buffer.compare 32 - random bytes 16.682 ns/op 20.094 ns/op 0.83
byteArrayEquals 1024 - random bytes 4.7870 ns/op 5.8630 ns/op 0.82
Buffer.compare 1024 - random bytes 16.366 ns/op 22.471 ns/op 0.73
byteArrayEquals 16384 - random bytes 4.8160 ns/op 6.1990 ns/op 0.78
Buffer.compare 16384 - random bytes 16.525 ns/op 19.813 ns/op 0.83
byteArrayEquals 123687377 - random bytes 7.6800 ns/op 7.8500 ns/op 0.98
Buffer.compare 123687377 - random bytes 19.770 ns/op 22.730 ns/op 0.87
regular array get 100000 times 30.526 us/op 41.934 us/op 0.73
wrappedArray get 100000 times 30.526 us/op 41.472 us/op 0.74
arrayWithProxy get 100000 times 9.7538 ms/op 19.437 ms/op 0.50
ssz.Root.equals 43.566 ns/op 55.656 ns/op 0.78
byteArrayEquals 41.998 ns/op 54.337 ns/op 0.77
Buffer.compare 9.6200 ns/op 12.061 ns/op 0.80
shuffle list - 16384 els 5.0603 ms/op 7.3299 ms/op 0.69
shuffle list - 250000 els 74.913 ms/op 112.99 ms/op 0.66
processSlot - 1 slots 11.718 us/op 22.444 us/op 0.52
processSlot - 32 slots 3.2559 ms/op 4.3905 ms/op 0.74
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 40.773 ms/op 54.205 ms/op 0.75
getCommitteeAssignments - req 1 vs - 250000 vc 1.7885 ms/op 2.5613 ms/op 0.70
getCommitteeAssignments - req 100 vs - 250000 vc 3.4958 ms/op 5.3312 ms/op 0.66
getCommitteeAssignments - req 1000 vs - 250000 vc 3.6206 ms/op 5.2454 ms/op 0.69
findModifiedValidators - 10000 modified validators 245.57 ms/op 625.53 ms/op 0.39
findModifiedValidators - 1000 modified validators 156.63 ms/op 450.90 ms/op 0.35
findModifiedValidators - 100 modified validators 149.03 ms/op 345.77 ms/op 0.43
findModifiedValidators - 10 modified validators 149.94 ms/op 286.71 ms/op 0.52
findModifiedValidators - 1 modified validators 132.52 ms/op 303.21 ms/op 0.44
findModifiedValidators - no difference 131.78 ms/op 324.18 ms/op 0.41
compare ViewDUs 3.3485 s/op 4.3672 s/op 0.77
compare each validator Uint8Array 1.6489 s/op 2.2950 s/op 0.72
compare ViewDU to Uint8Array 647.16 ms/op 1.6281 s/op 0.40
migrate state 1000000 validators, 24 modified, 0 new 573.49 ms/op 683.43 ms/op 0.84
migrate state 1000000 validators, 1700 modified, 1000 new 827.44 ms/op 1.0534 s/op 0.79
migrate state 1000000 validators, 3400 modified, 2000 new 897.26 ms/op 1.2155 s/op 0.74
migrate state 1500000 validators, 24 modified, 0 new 548.12 ms/op 762.66 ms/op 0.72
migrate state 1500000 validators, 1700 modified, 1000 new 725.86 ms/op 832.10 ms/op 0.87
migrate state 1500000 validators, 3400 modified, 2000 new 993.52 ms/op 1.0789 s/op 0.92
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.7000 ns/op 4.7300 ns/op 1.21
state getBlockRootAtSlot - 250000 vs - 7PWei 661.64 ns/op 949.94 ns/op 0.70
computeProposers - vc 250000 6.4387 ms/op 7.6173 ms/op 0.85
computeEpochShuffling - vc 250000 82.125 ms/op 96.464 ms/op 0.85
getNextSyncCommittee - vc 250000 96.728 ms/op 123.15 ms/op 0.79
computeSigningRoot for AttestationData 24.690 us/op 24.217 us/op 1.02
hash AttestationData serialized data then Buffer.toString(base64) 1.1678 us/op 1.5446 us/op 0.76
toHexString serialized data 786.46 ns/op 927.19 ns/op 0.85
Buffer.toString(base64) 147.94 ns/op 194.50 ns/op 0.76

by benchmarkbot/action

@ensi321 ensi321 marked this pull request as ready for review June 4, 2024 13:00
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.

General approach of having the default moved from validator client to beacon node looks good to me, just need to make sure to always respect graffiti if explicitly set by user.

I haven't looked at the spec PR, will do more detailed review once the high-level concerns are addressed.

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/execution/engine/disabled.ts Outdated Show resolved Hide resolved
packages/cli/src/cmds/validator/handler.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/api/impl/validator/index.ts Outdated Show resolved Hide resolved
@wemeetagain wemeetagain modified the milestones: v1.19.0, v1.20.0 Jun 6, 2024
Copy link
Member

@wemeetagain wemeetagain left a comment

Choose a reason for hiding this comment

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

lgtm

packages/api/src/beacon/routes/validator.ts Show resolved Hide resolved
packages/api/src/utils/serdes.ts Outdated Show resolved Hide resolved
packages/cli/src/util/graffiti.ts Show resolved Hide resolved
packages/cli/src/cmds/validator/keymanager/impl.ts Outdated Show resolved Hide resolved
packages/cli/src/cmds/validator/keymanager/impl.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
packages/beacon-node/src/api/impl/validator/index.ts Outdated Show resolved Hide resolved
@ensi321 ensi321 requested a review from nflaig June 26, 2024 20:43
packages/beacon-node/src/api/impl/validator/index.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/chain/prepareNextSlot.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/execution/engine/http.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/execution/engine/http.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/execution/engine/http.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/execution/engine/interface.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/execution/engine/http.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/execution/engine/http.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/execution/engine/http.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/execution/engine/http.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/execution/engine/http.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/execution/engine/http.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/execution/engine/http.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/execution/engine/http.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/util/graffiti.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/util/graffiti.ts Outdated Show resolved Hide resolved
packages/beacon-node/src/util/graffiti.ts Outdated Show resolved Hide resolved
Copy link

codecov bot commented Jul 25, 2024

Codecov Report

Attention: Patch coverage is 66.66667% with 8 lines in your changes missing coverage. Please review.

Project coverage is 62.49%. Comparing base (48a5a94) to head (cb7a5d4).

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #6753      +/-   ##
============================================
- Coverage     62.49%   62.49%   -0.01%     
============================================
  Files           576      576              
  Lines         61190    61199       +9     
  Branches       2141     2138       -3     
============================================
+ Hits          38243    38245       +2     
- Misses        22908    22915       +7     
  Partials         39       39              

nflaig
nflaig previously approved these changes Jul 29, 2024
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.

LGTM - could update PR description to reflect latest changes

nflaig
nflaig previously approved these changes Jul 29, 2024
@philknows philknows merged commit 2f9275e into unstable Jul 30, 2024
19 of 20 checks passed
@philknows philknows deleted the nc/graffiti branch July 30, 2024 16:04
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.21.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.

Include EL client info in graffiti
4 participants