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: check aggregationBits length of SignedAggregateAndProof in gossip validation #6700

Merged
merged 2 commits into from
Apr 26, 2024

Conversation

ensi321
Copy link
Contributor

@ensi321 ensi321 commented Apr 23, 2024

New validation rule has been added for beacon_aggregate_and_proof as per ethereum/consensus-specs#3552

This PR aims to comply with the new validation rule as well as adding comments for existed validations

@ensi321 ensi321 requested a review from a team as a code owner April 23, 2024 12:33
Copy link

codecov bot commented Apr 25, 2024

Codecov Report

Attention: Patch coverage is 0% with 10 lines in your changes are missing coverage. Please review.

Project coverage is 61.86%. Comparing base (b107d4b) to head (fcccdd8).
Report is 8 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #6700      +/-   ##
============================================
- Coverage     61.87%   61.86%   -0.01%     
============================================
  Files           557      557              
  Lines         59201    59219      +18     
  Branches       1915     1915              
============================================
+ Hits          36628    36635       +7     
- Misses        22530    22541      +11     
  Partials         43       43              

Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 4868a45 Previous: 09e4b9c Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 883.38 us/op 904.71 us/op 0.98
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 87.196 us/op 89.729 us/op 0.97
BLS verify - blst-native 1.1085 ms/op 1.3108 ms/op 0.85
BLS verifyMultipleSignatures 3 - blst-native 2.1344 ms/op 2.5471 ms/op 0.84
BLS verifyMultipleSignatures 8 - blst-native 4.6131 ms/op 5.4433 ms/op 0.85
BLS verifyMultipleSignatures 32 - blst-native 16.845 ms/op 19.707 ms/op 0.85
BLS verifyMultipleSignatures 64 - blst-native 32.967 ms/op 38.675 ms/op 0.85
BLS verifyMultipleSignatures 128 - blst-native 63.540 ms/op 76.551 ms/op 0.83
BLS deserializing 10000 signatures 764.59 ms/op 887.92 ms/op 0.86
BLS deserializing 100000 signatures 7.6741 s/op 8.6269 s/op 0.89
BLS verifyMultipleSignatures - same message - 3 - blst-native 1.0929 ms/op 1.2732 ms/op 0.86
BLS verifyMultipleSignatures - same message - 8 - blst-native 1.2601 ms/op 1.4137 ms/op 0.89
BLS verifyMultipleSignatures - same message - 32 - blst-native 1.9548 ms/op 2.1769 ms/op 0.90
BLS verifyMultipleSignatures - same message - 64 - blst-native 2.9384 ms/op 3.2113 ms/op 0.92
BLS verifyMultipleSignatures - same message - 128 - blst-native 4.8074 ms/op 5.3407 ms/op 0.90
BLS aggregatePubkeys 32 - blst-native 24.524 us/op 27.525 us/op 0.89
BLS aggregatePubkeys 128 - blst-native 92.646 us/op 104.33 us/op 0.89
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 43.617 ms/op 57.967 ms/op 0.75
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 33.609 ms/op 70.779 ms/op 0.47
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 25.914 ms/op 35.564 ms/op 0.73
getSlashingsAndExits - default max 162.23 us/op 225.79 us/op 0.72
getSlashingsAndExits - 2k 357.07 us/op 456.75 us/op 0.78
proposeBlockBody type=full, size=empty 4.9554 ms/op 5.7589 ms/op 0.86
isKnown best case - 1 super set check 334.00 ns/op 349.00 ns/op 0.96
isKnown normal case - 2 super set checks 321.00 ns/op 429.00 ns/op 0.75
isKnown worse case - 16 super set checks 321.00 ns/op 322.00 ns/op 1.00
InMemoryCheckpointStateCache - add get delete 4.3950 us/op 8.1440 us/op 0.54
validate api signedAggregateAndProof - struct 1.9717 ms/op 2.3656 ms/op 0.83
validate gossip signedAggregateAndProof - struct 1.9569 ms/op 2.3795 ms/op 0.82
validate gossip attestation - vc 640000 1.1247 ms/op 1.3651 ms/op 0.82
batch validate gossip attestation - vc 640000 - chunk 32 136.71 us/op 168.36 us/op 0.81
batch validate gossip attestation - vc 640000 - chunk 64 118.68 us/op 149.12 us/op 0.80
batch validate gossip attestation - vc 640000 - chunk 128 115.07 us/op 148.04 us/op 0.78
batch validate gossip attestation - vc 640000 - chunk 256 117.10 us/op 149.66 us/op 0.78
pickEth1Vote - no votes 970.35 us/op 1.4924 ms/op 0.65
pickEth1Vote - max votes 6.0449 ms/op 13.304 ms/op 0.45
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.240 ms/op 24.423 ms/op 0.50
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 17.813 ms/op 35.966 ms/op 0.50
pickEth1Vote - Eth1Data fastSerialize value x2048 436.15 us/op 672.32 us/op 0.65
pickEth1Vote - Eth1Data fastSerialize tree x2048 3.6824 ms/op 7.6125 ms/op 0.48
bytes32 toHexString 499.00 ns/op 768.00 ns/op 0.65
bytes32 Buffer.toString(hex) 355.00 ns/op 309.00 ns/op 1.15
bytes32 Buffer.toString(hex) from Uint8Array 481.00 ns/op 556.00 ns/op 0.87
bytes32 Buffer.toString(hex) + 0x 327.00 ns/op 353.00 ns/op 0.93
Object access 1 prop 0.22100 ns/op 0.24600 ns/op 0.90
Map access 1 prop 0.20400 ns/op 0.16600 ns/op 1.23
Object get x1000 5.2530 ns/op 8.3680 ns/op 0.63
Map get x1000 0.83100 ns/op 0.84900 ns/op 0.98
Object set x1000 29.906 ns/op 57.527 ns/op 0.52
Map set x1000 19.343 ns/op 51.740 ns/op 0.37
Return object 10000 times 0.24630 ns/op 0.25060 ns/op 0.98
Throw Error 10000 times 2.8778 us/op 3.9161 us/op 0.73
fastMsgIdFn sha256 / 200 bytes 2.1650 us/op 3.4590 us/op 0.63
fastMsgIdFn h32 xxhash / 200 bytes 337.00 ns/op 390.00 ns/op 0.86
fastMsgIdFn h64 xxhash / 200 bytes 374.00 ns/op 444.00 ns/op 0.84
fastMsgIdFn sha256 / 1000 bytes 6.5950 us/op 11.690 us/op 0.56
fastMsgIdFn h32 xxhash / 1000 bytes 447.00 ns/op 493.00 ns/op 0.91
fastMsgIdFn h64 xxhash / 1000 bytes 420.00 ns/op 492.00 ns/op 0.85
fastMsgIdFn sha256 / 10000 bytes 53.722 us/op 104.19 us/op 0.52
fastMsgIdFn h32 xxhash / 10000 bytes 1.9050 us/op 2.0370 us/op 0.94
fastMsgIdFn h64 xxhash / 10000 bytes 1.3020 us/op 1.4590 us/op 0.89
send data - 1000 256B messages 13.040 ms/op 23.980 ms/op 0.54
send data - 1000 512B messages 13.853 ms/op 25.503 ms/op 0.54
send data - 1000 1024B messages 28.797 ms/op 44.199 ms/op 0.65
send data - 1000 1200B messages 30.276 ms/op 43.028 ms/op 0.70
send data - 1000 2048B messages 37.742 ms/op 50.263 ms/op 0.75
send data - 1000 4096B messages 32.476 ms/op 51.051 ms/op 0.64
send data - 1000 16384B messages 93.672 ms/op 126.91 ms/op 0.74
send data - 1000 65536B messages 461.47 ms/op 501.36 ms/op 0.92
enrSubnets - fastDeserialize 64 bits 1.0540 us/op 1.4650 us/op 0.72
enrSubnets - ssz BitVector 64 bits 563.00 ns/op 498.00 ns/op 1.13
enrSubnets - fastDeserialize 4 bits 259.00 ns/op 210.00 ns/op 1.23
enrSubnets - ssz BitVector 4 bits 471.00 ns/op 474.00 ns/op 0.99
prioritizePeers score -10:0 att 32-0.1 sync 2-0 137.26 us/op 225.52 us/op 0.61
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 196.32 us/op 305.30 us/op 0.64
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 224.45 us/op 401.32 us/op 0.56
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 387.69 us/op 643.64 us/op 0.60
prioritizePeers score 0:0 att 64-1 sync 4-1 450.54 us/op 748.92 us/op 0.60
array of 16000 items push then shift 1.3317 us/op 1.6838 us/op 0.79
LinkedList of 16000 items push then shift 6.0430 ns/op 9.2330 ns/op 0.65
array of 16000 items push then pop 70.063 ns/op 109.94 ns/op 0.64
LinkedList of 16000 items push then pop 5.8140 ns/op 8.8410 ns/op 0.66
array of 24000 items push then shift 1.9211 us/op 2.6131 us/op 0.74
LinkedList of 24000 items push then shift 6.5910 ns/op 9.1300 ns/op 0.72
array of 24000 items push then pop 98.509 ns/op 145.75 ns/op 0.68
LinkedList of 24000 items push then pop 5.5200 ns/op 8.6770 ns/op 0.64
intersect bitArray bitLen 8 4.4670 ns/op 5.7450 ns/op 0.78
intersect array and set length 8 48.688 ns/op 64.232 ns/op 0.76
intersect bitArray bitLen 128 28.453 ns/op 36.069 ns/op 0.79
intersect array and set length 128 688.72 ns/op 885.37 ns/op 0.78
bitArray.getTrueBitIndexes() bitLen 128 1.4360 us/op 1.5140 us/op 0.95
bitArray.getTrueBitIndexes() bitLen 248 2.1560 us/op 2.4820 us/op 0.87
bitArray.getTrueBitIndexes() bitLen 512 3.7720 us/op 4.9500 us/op 0.76
Buffer.concat 32 items 942.00 ns/op 1000.0 ns/op 0.94
Uint8Array.set 32 items 2.0600 us/op 1.7440 us/op 1.18
Set add up to 64 items then delete first 2.2415 us/op 4.4304 us/op 0.51
OrderedSet add up to 64 items then delete first 3.8192 us/op 5.5570 us/op 0.69
Set add up to 64 items then delete last 2.6799 us/op 5.0867 us/op 0.53
OrderedSet add up to 64 items then delete last 4.0740 us/op 6.0956 us/op 0.67
Set add up to 64 items then delete middle 2.9306 us/op 4.7624 us/op 0.62
OrderedSet add up to 64 items then delete middle 4.6198 us/op 7.2272 us/op 0.64
Set add up to 128 items then delete first 4.0335 us/op 9.7918 us/op 0.41
OrderedSet add up to 128 items then delete first 6.3452 us/op 14.571 us/op 0.44
Set add up to 128 items then delete last 3.8655 us/op 10.713 us/op 0.36
OrderedSet add up to 128 items then delete last 5.8336 us/op 13.924 us/op 0.42
Set add up to 128 items then delete middle 3.8323 us/op 10.225 us/op 0.37
OrderedSet add up to 128 items then delete middle 10.947 us/op 19.272 us/op 0.57
Set add up to 256 items then delete first 8.0233 us/op 21.544 us/op 0.37
OrderedSet add up to 256 items then delete first 12.791 us/op 31.158 us/op 0.41
Set add up to 256 items then delete last 7.6740 us/op 20.949 us/op 0.37
OrderedSet add up to 256 items then delete last 12.720 us/op 26.904 us/op 0.47
Set add up to 256 items then delete middle 7.7424 us/op 20.673 us/op 0.37
OrderedSet add up to 256 items then delete middle 35.959 us/op 50.007 us/op 0.72
transfer serialized Status (84 B) 1.5970 us/op 1.9280 us/op 0.83
copy serialized Status (84 B) 1.2910 us/op 1.4010 us/op 0.92
transfer serialized SignedVoluntaryExit (112 B) 1.6360 us/op 1.9970 us/op 0.82
copy serialized SignedVoluntaryExit (112 B) 1.2960 us/op 1.4350 us/op 0.90
transfer serialized ProposerSlashing (416 B) 1.8160 us/op 2.2230 us/op 0.82
copy serialized ProposerSlashing (416 B) 1.6330 us/op 1.9480 us/op 0.84
transfer serialized Attestation (485 B) 1.9130 us/op 2.6620 us/op 0.72
copy serialized Attestation (485 B) 1.6570 us/op 2.5500 us/op 0.65
transfer serialized AttesterSlashing (33232 B) 1.6240 us/op 2.3920 us/op 0.68
copy serialized AttesterSlashing (33232 B) 3.9220 us/op 7.9040 us/op 0.50
transfer serialized Small SignedBeaconBlock (128000 B) 1.7580 us/op 2.6360 us/op 0.67
copy serialized Small SignedBeaconBlock (128000 B) 9.2920 us/op 21.151 us/op 0.44
transfer serialized Avg SignedBeaconBlock (200000 B) 1.8220 us/op 3.2080 us/op 0.57
copy serialized Avg SignedBeaconBlock (200000 B) 13.215 us/op 33.111 us/op 0.40
transfer serialized BlobsSidecar (524380 B) 2.3990 us/op 3.7190 us/op 0.65
copy serialized BlobsSidecar (524380 B) 102.90 us/op 94.961 us/op 1.08
transfer serialized Big SignedBeaconBlock (1000000 B) 2.8240 us/op 3.1240 us/op 0.90
copy serialized Big SignedBeaconBlock (1000000 B) 206.65 us/op 181.96 us/op 1.14
pass gossip attestations to forkchoice per slot 3.1129 ms/op 4.0434 ms/op 0.77
forkChoice updateHead vc 100000 bc 64 eq 0 439.82 us/op 701.57 us/op 0.63
forkChoice updateHead vc 600000 bc 64 eq 0 2.6767 ms/op 5.6054 ms/op 0.48
forkChoice updateHead vc 1000000 bc 64 eq 0 4.6904 ms/op 7.7479 ms/op 0.61
forkChoice updateHead vc 600000 bc 320 eq 0 2.6516 ms/op 4.2301 ms/op 0.63
forkChoice updateHead vc 600000 bc 1200 eq 0 2.7863 ms/op 4.4157 ms/op 0.63
forkChoice updateHead vc 600000 bc 7200 eq 0 3.5156 ms/op 6.5599 ms/op 0.54
forkChoice updateHead vc 600000 bc 64 eq 1000 10.369 ms/op 11.291 ms/op 0.92
forkChoice updateHead vc 600000 bc 64 eq 10000 9.9199 ms/op 12.237 ms/op 0.81
forkChoice updateHead vc 600000 bc 64 eq 300000 12.394 ms/op 21.218 ms/op 0.58
computeDeltas 500000 validators 300 proto nodes 3.2081 ms/op 6.8470 ms/op 0.47
computeDeltas 500000 validators 1200 proto nodes 3.1122 ms/op 6.8961 ms/op 0.45
computeDeltas 500000 validators 7200 proto nodes 3.2923 ms/op 6.5728 ms/op 0.50
computeDeltas 750000 validators 300 proto nodes 4.9771 ms/op 9.6017 ms/op 0.52
computeDeltas 750000 validators 1200 proto nodes 5.0310 ms/op 9.7952 ms/op 0.51
computeDeltas 750000 validators 7200 proto nodes 5.2179 ms/op 9.8134 ms/op 0.53
computeDeltas 1400000 validators 300 proto nodes 10.065 ms/op 18.322 ms/op 0.55
computeDeltas 1400000 validators 1200 proto nodes 9.3838 ms/op 18.465 ms/op 0.51
computeDeltas 1400000 validators 7200 proto nodes 9.8776 ms/op 18.748 ms/op 0.53
computeDeltas 2100000 validators 300 proto nodes 13.680 ms/op 26.513 ms/op 0.52
computeDeltas 2100000 validators 1200 proto nodes 13.298 ms/op 27.367 ms/op 0.49
computeDeltas 2100000 validators 7200 proto nodes 14.273 ms/op 26.959 ms/op 0.53
altair processAttestation - 250000 vs - 7PWei normalcase 1.8711 ms/op 2.3926 ms/op 0.78
altair processAttestation - 250000 vs - 7PWei worstcase 2.6205 ms/op 3.4690 ms/op 0.76
altair processAttestation - setStatus - 1/6 committees join 133.96 us/op 182.63 us/op 0.73
altair processAttestation - setStatus - 1/3 committees join 224.37 us/op 358.86 us/op 0.63
altair processAttestation - setStatus - 1/2 committees join 297.13 us/op 467.50 us/op 0.64
altair processAttestation - setStatus - 2/3 committees join 386.71 us/op 606.02 us/op 0.64
altair processAttestation - setStatus - 4/5 committees join 529.86 us/op 831.45 us/op 0.64
altair processAttestation - setStatus - 100% committees join 601.43 us/op 946.55 us/op 0.64
altair processBlock - 250000 vs - 7PWei normalcase 7.1990 ms/op 9.3125 ms/op 0.77
altair processBlock - 250000 vs - 7PWei normalcase hashState 23.996 ms/op 37.410 ms/op 0.64
altair processBlock - 250000 vs - 7PWei worstcase 32.325 ms/op 41.205 ms/op 0.78
altair processBlock - 250000 vs - 7PWei worstcase hashState 73.491 ms/op 100.10 ms/op 0.73
phase0 processBlock - 250000 vs - 7PWei normalcase 2.3068 ms/op 2.6261 ms/op 0.88
phase0 processBlock - 250000 vs - 7PWei worstcase 26.522 ms/op 30.352 ms/op 0.87
altair processEth1Data - 250000 vs - 7PWei normalcase 295.71 us/op 569.60 us/op 0.52
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 12.633 us/op 19.545 us/op 0.65
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 26.286 us/op 55.307 us/op 0.48
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 18.138 us/op 15.753 us/op 1.15
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 12.240 us/op 13.408 us/op 0.91
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 155.82 us/op 224.14 us/op 0.70
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 764.67 us/op 1.4674 ms/op 0.52
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.0698 ms/op 1.8817 ms/op 0.57
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8155 ms/op 1.5255 ms/op 1.19
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.9979 ms/op 4.1470 ms/op 0.72
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.6029 ms/op 2.9092 ms/op 0.55
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.6280 ms/op 6.4449 ms/op 0.56
Tree 40 250000 create 228.97 ms/op 483.63 ms/op 0.47
Tree 40 250000 get(125000) 111.08 ns/op 217.78 ns/op 0.51
Tree 40 250000 set(125000) 734.47 ns/op 1.3056 us/op 0.56
Tree 40 250000 toArray() 10.849 ms/op 23.280 ms/op 0.47
Tree 40 250000 iterate all - toArray() + loop 9.8552 ms/op 24.327 ms/op 0.41
Tree 40 250000 iterate all - get(i) 40.744 ms/op 78.142 ms/op 0.52
MutableVector 250000 create 10.233 ms/op 16.289 ms/op 0.63
MutableVector 250000 get(125000) 5.6560 ns/op 6.9250 ns/op 0.82
MutableVector 250000 set(125000) 251.20 ns/op 397.80 ns/op 0.63
MutableVector 250000 toArray() 3.4027 ms/op 4.4746 ms/op 0.76
MutableVector 250000 iterate all - toArray() + loop 2.5026 ms/op 4.5198 ms/op 0.55
MutableVector 250000 iterate all - get(i) 1.4199 ms/op 1.7278 ms/op 0.82
Array 250000 create 2.3113 ms/op 4.1116 ms/op 0.56
Array 250000 clone - spread 1.2728 ms/op 1.8014 ms/op 0.71
Array 250000 get(125000) 1.1140 ns/op 1.2520 ns/op 0.89
Array 250000 set(125000) 1.3560 ns/op 4.8820 ns/op 0.28
Array 250000 iterate all - loop 157.47 us/op 188.25 us/op 0.84
effectiveBalanceIncrements clone Uint8Array 300000 15.268 us/op 42.651 us/op 0.36
effectiveBalanceIncrements clone MutableVector 300000 471.00 ns/op 451.00 ns/op 1.04
effectiveBalanceIncrements rw all Uint8Array 300000 187.33 us/op 221.06 us/op 0.85
effectiveBalanceIncrements rw all MutableVector 300000 87.947 ms/op 136.76 ms/op 0.64
phase0 afterProcessEpoch - 250000 vs - 7PWei 77.274 ms/op 130.42 ms/op 0.59
phase0 beforeProcessEpoch - 250000 vs - 7PWei 42.884 ms/op 59.953 ms/op 0.72
altair processEpoch - mainnet_e81889 444.10 ms/op 567.02 ms/op 0.78
mainnet_e81889 - altair beforeProcessEpoch 79.836 ms/op 105.90 ms/op 0.75
mainnet_e81889 - altair processJustificationAndFinalization 21.268 us/op 23.969 us/op 0.89
mainnet_e81889 - altair processInactivityUpdates 7.3192 ms/op 7.3061 ms/op 1.00
mainnet_e81889 - altair processRewardsAndPenalties 74.047 ms/op 85.282 ms/op 0.87
mainnet_e81889 - altair processRegistryUpdates 3.8430 us/op 4.3560 us/op 0.88
mainnet_e81889 - altair processSlashings 796.00 ns/op 1.0750 us/op 0.74
mainnet_e81889 - altair processEth1DataReset 876.00 ns/op 950.00 ns/op 0.92
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.0997 ms/op 1.6917 ms/op 0.65
mainnet_e81889 - altair processSlashingsReset 5.4660 us/op 10.962 us/op 0.50
mainnet_e81889 - altair processRandaoMixesReset 9.0140 us/op 11.293 us/op 0.80
mainnet_e81889 - altair processHistoricalRootsUpdate 1.1900 us/op 1.9090 us/op 0.62
mainnet_e81889 - altair processParticipationFlagUpdates 2.4450 us/op 4.4000 us/op 0.56
mainnet_e81889 - altair processSyncCommitteeUpdates 1.2400 us/op 1.1460 us/op 1.08
mainnet_e81889 - altair afterProcessEpoch 89.765 ms/op 123.29 ms/op 0.73
capella processEpoch - mainnet_e217614 3.1668 s/op 3.0635 s/op 1.03
mainnet_e217614 - capella beforeProcessEpoch 524.08 ms/op 597.08 ms/op 0.88
mainnet_e217614 - capella processJustificationAndFinalization 23.777 us/op 22.456 us/op 1.06
mainnet_e217614 - capella processInactivityUpdates 22.816 ms/op 21.549 ms/op 1.06
mainnet_e217614 - capella processRewardsAndPenalties 505.49 ms/op 565.06 ms/op 0.89
mainnet_e217614 - capella processRegistryUpdates 26.114 us/op 28.112 us/op 0.93
mainnet_e217614 - capella processSlashings 1.0280 us/op 950.00 ns/op 1.08
mainnet_e217614 - capella processEth1DataReset 783.00 ns/op 699.00 ns/op 1.12
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.2668 ms/op 4.5474 ms/op 0.94
mainnet_e217614 - capella processSlashingsReset 5.1120 us/op 3.1590 us/op 1.62
mainnet_e217614 - capella processRandaoMixesReset 6.1600 us/op 6.1980 us/op 0.99
mainnet_e217614 - capella processHistoricalRootsUpdate 1.1380 us/op 1.0640 us/op 1.07
mainnet_e217614 - capella processParticipationFlagUpdates 2.1530 us/op 1.5590 us/op 1.38
mainnet_e217614 - capella afterProcessEpoch 217.70 ms/op 365.01 ms/op 0.60
phase0 processEpoch - mainnet_e58758 518.60 ms/op 536.86 ms/op 0.97
mainnet_e58758 - phase0 beforeProcessEpoch 132.95 ms/op 147.34 ms/op 0.90
mainnet_e58758 - phase0 processJustificationAndFinalization 21.404 us/op 16.385 us/op 1.31
mainnet_e58758 - phase0 processRewardsAndPenalties 60.384 ms/op 56.164 ms/op 1.08
mainnet_e58758 - phase0 processRegistryUpdates 13.586 us/op 16.475 us/op 0.82
mainnet_e58758 - phase0 processSlashings 806.00 ns/op 1.1380 us/op 0.71
mainnet_e58758 - phase0 processEth1DataReset 538.00 ns/op 937.00 ns/op 0.57
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.4020 ms/op 1.1335 ms/op 1.24
mainnet_e58758 - phase0 processSlashingsReset 3.6600 us/op 4.0080 us/op 0.91
mainnet_e58758 - phase0 processRandaoMixesReset 4.5570 us/op 5.0390 us/op 0.90
mainnet_e58758 - phase0 processHistoricalRootsUpdate 868.00 ns/op 781.00 ns/op 1.11
mainnet_e58758 - phase0 processParticipationRecordUpdates 4.1100 us/op 5.2030 us/op 0.79
mainnet_e58758 - phase0 afterProcessEpoch 70.353 ms/op 104.44 ms/op 0.67
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0907 ms/op 1.3695 ms/op 0.80
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.2640 ms/op 1.5134 ms/op 0.84
altair processInactivityUpdates - 250000 normalcase 23.598 ms/op 32.236 ms/op 0.73
altair processInactivityUpdates - 250000 worstcase 23.814 ms/op 26.919 ms/op 0.88
phase0 processRegistryUpdates - 250000 normalcase 9.8080 us/op 10.812 us/op 0.91
phase0 processRegistryUpdates - 250000 badcase_full_deposits 481.40 us/op 536.64 us/op 0.90
phase0 processRegistryUpdates - 250000 worstcase 0.5 101.87 ms/op 156.21 ms/op 0.65
altair processRewardsAndPenalties - 250000 normalcase 66.064 ms/op 67.795 ms/op 0.97
altair processRewardsAndPenalties - 250000 worstcase 62.436 ms/op 60.360 ms/op 1.03
phase0 getAttestationDeltas - 250000 normalcase 6.9760 ms/op 9.1229 ms/op 0.76
phase0 getAttestationDeltas - 250000 worstcase 6.8285 ms/op 11.390 ms/op 0.60
phase0 processSlashings - 250000 worstcase 88.493 us/op 105.69 us/op 0.84
altair processSyncCommitteeUpdates - 250000 121.03 ms/op 161.04 ms/op 0.75
BeaconState.hashTreeRoot - No change 848.00 ns/op 488.00 ns/op 1.74
BeaconState.hashTreeRoot - 1 full validator 126.29 us/op 138.65 us/op 0.91
BeaconState.hashTreeRoot - 32 full validator 1.3063 ms/op 1.8852 ms/op 0.69
BeaconState.hashTreeRoot - 512 full validator 17.538 ms/op 19.769 ms/op 0.89
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 157.44 us/op 205.79 us/op 0.77
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.8549 ms/op 2.5270 ms/op 0.73
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 21.137 ms/op 33.747 ms/op 0.63
BeaconState.hashTreeRoot - 1 balances 88.032 us/op 138.15 us/op 0.64
BeaconState.hashTreeRoot - 32 balances 880.70 us/op 1.1217 ms/op 0.79
BeaconState.hashTreeRoot - 512 balances 8.4181 ms/op 13.450 ms/op 0.63
BeaconState.hashTreeRoot - 250000 balances 181.28 ms/op 230.10 ms/op 0.79
aggregationBits - 2048 els - zipIndexesInBitList 20.694 us/op 40.392 us/op 0.51
byteArrayEquals 32 65.072 ns/op 81.433 ns/op 0.80
Buffer.compare 32 37.209 ns/op 56.994 ns/op 0.65
byteArrayEquals 1024 1.6647 us/op 2.3172 us/op 0.72
Buffer.compare 1024 43.977 ns/op 76.751 ns/op 0.57
byteArrayEquals 16384 26.789 us/op 35.197 us/op 0.76
Buffer.compare 16384 188.68 ns/op 264.69 ns/op 0.71
byteArrayEquals 123687377 212.08 ms/op 274.01 ms/op 0.77
Buffer.compare 123687377 6.4822 ms/op 10.712 ms/op 0.61
byteArrayEquals 32 - diff last byte 63.177 ns/op 79.544 ns/op 0.79
Buffer.compare 32 - diff last byte 39.394 ns/op 60.386 ns/op 0.65
byteArrayEquals 1024 - diff last byte 1.6472 us/op 2.1640 us/op 0.76
Buffer.compare 1024 - diff last byte 42.701 ns/op 74.445 ns/op 0.57
byteArrayEquals 16384 - diff last byte 26.590 us/op 34.280 us/op 0.78
Buffer.compare 16384 - diff last byte 219.86 ns/op 260.16 ns/op 0.85
byteArrayEquals 123687377 - diff last byte 208.23 ms/op 284.06 ms/op 0.73
Buffer.compare 123687377 - diff last byte 5.2841 ms/op 11.424 ms/op 0.46
byteArrayEquals 32 - random bytes 4.6910 ns/op 7.6030 ns/op 0.62
Buffer.compare 32 - random bytes 40.452 ns/op 64.435 ns/op 0.63
byteArrayEquals 1024 - random bytes 4.6160 ns/op 6.6020 ns/op 0.70
Buffer.compare 1024 - random bytes 39.776 ns/op 65.904 ns/op 0.60
byteArrayEquals 16384 - random bytes 4.7280 ns/op 7.0130 ns/op 0.67
Buffer.compare 16384 - random bytes 39.738 ns/op 64.490 ns/op 0.62
byteArrayEquals 123687377 - random bytes 8.4200 ns/op 11.630 ns/op 0.72
Buffer.compare 123687377 - random bytes 43.920 ns/op 83.650 ns/op 0.53
regular array get 100000 times 43.377 us/op 49.775 us/op 0.87
wrappedArray get 100000 times 43.485 us/op 48.965 us/op 0.89
arrayWithProxy get 100000 times 9.4823 ms/op 15.386 ms/op 0.62
ssz.Root.equals 54.358 ns/op 57.136 ns/op 0.95
byteArrayEquals 53.611 ns/op 62.322 ns/op 0.86
Buffer.compare 10.026 ns/op 14.223 ns/op 0.70
shuffle list - 16384 els 5.8232 ms/op 9.8587 ms/op 0.59
shuffle list - 250000 els 85.544 ms/op 139.52 ms/op 0.61
processSlot - 1 slots 13.523 us/op 18.442 us/op 0.73
processSlot - 32 slots 2.9384 ms/op 3.4826 ms/op 0.84
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 51.375 ms/op 60.216 ms/op 0.85
getCommitteeAssignments - req 1 vs - 250000 vc 2.4575 ms/op 2.8248 ms/op 0.87
getCommitteeAssignments - req 100 vs - 250000 vc 3.6068 ms/op 4.0012 ms/op 0.90
getCommitteeAssignments - req 1000 vs - 250000 vc 3.9262 ms/op 4.5168 ms/op 0.87
findModifiedValidators - 10000 modified validators 281.31 ms/op 428.07 ms/op 0.66
findModifiedValidators - 1000 modified validators 153.87 ms/op 260.30 ms/op 0.59
findModifiedValidators - 100 modified validators 130.16 ms/op 235.41 ms/op 0.55
findModifiedValidators - 10 modified validators 133.40 ms/op 231.83 ms/op 0.58
findModifiedValidators - 1 modified validators 140.24 ms/op 244.26 ms/op 0.57
findModifiedValidators - no difference 159.03 ms/op 266.09 ms/op 0.60
compare ViewDUs 3.9257 s/op 4.7077 s/op 0.83
compare each validator Uint8Array 1.5374 s/op 1.6749 s/op 0.92
compare ViewDU to Uint8Array 916.39 ms/op 1.2700 s/op 0.72
migrate state 1000000 validators, 24 modified, 0 new 668.30 ms/op 836.67 ms/op 0.80
migrate state 1000000 validators, 1700 modified, 1000 new 1.0299 s/op 1.3635 s/op 0.76
migrate state 1000000 validators, 3400 modified, 2000 new 1.3576 s/op 1.8839 s/op 0.72
migrate state 1500000 validators, 24 modified, 0 new 770.23 ms/op 1.1361 s/op 0.68
migrate state 1500000 validators, 1700 modified, 1000 new 1.1372 s/op 1.2476 s/op 0.91
migrate state 1500000 validators, 3400 modified, 2000 new 1.4241 s/op 1.5725 s/op 0.91
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.8000 ns/op 4.5100 ns/op 1.06
state getBlockRootAtSlot - 250000 vs - 7PWei 706.43 ns/op 917.95 ns/op 0.77
computeProposers - vc 250000 7.1428 ms/op 10.873 ms/op 0.66
computeEpochShuffling - vc 250000 84.886 ms/op 129.25 ms/op 0.66
getNextSyncCommittee - vc 250000 118.02 ms/op 162.36 ms/op 0.73
computeSigningRoot for AttestationData 27.680 us/op 33.369 us/op 0.83
hash AttestationData serialized data then Buffer.toString(base64) 1.2018 us/op 2.3776 us/op 0.51
toHexString serialized data 781.52 ns/op 1.1131 us/op 0.70
Buffer.toString(base64) 145.00 ns/op 224.29 ns/op 0.65

by benchmarkbot/action

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

@ensi321 ensi321 merged commit 1a7ea75 into unstable Apr 26, 2024
18 of 20 checks passed
@ensi321 ensi321 deleted the nc/aggregate-bit-check branch April 26, 2024 08:33
wemeetagain added a commit that referenced this pull request Jun 7, 2024
* chore: n-historical state - track state persist count per epoch (#6699)

* feat: add lodestar binaries to release (#6666)

* feat: added binaries creation support

* feat: added sanity checks

* chore: define reusable workflow

* chore: fix sanity check,; disable arm64

* chore: added workflow_dispatch

* fix: needs cleanup

* chore: update old space size

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

* chore: address comments

* chore: address comments

* chore: fixed typo

* chore: typo

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

* chore: address comments

* chore: wording

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

* chore: use frozen lock file

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

---------

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

* feat: switch bls to napi rebuild (#6616)

* chore: update package.json deps and run yarn

* feat: remove unused blst config from vitest.browser.*.config.ts

* test: move G2@INF test to base blst repo.  No longer exported.

* fix: add Uint8Array.from for Buffer return value in unit test so type matches for toEqual

* refactor: update imports of CoordType to use bls instead of blst

* feat: add blsAddVerificationRandomness cli option

* feat: add randomBytesNonZero to utils

* feat: implement verification randomness for same message

* feat: implement napi blst and switch to libuv worker pool

* chore: lint

* fix: update comments for availableParallelism

* feat: set UV_THREADPOOL_SIZE for perf tests

* feat: set UV_THREADPOOL_SIZE=$(nproc) in lodestar entrance script

* feat: remove case for serialized PublicKey in deserializeSet

* feat: add back workBusy count logic to canAcceptWork

* feat: automatically set threadpool size in beaconHandler

* refactor: rename flag to disableSameMessageVerificationRandomness

* fix: remove UV_THREADPOOL_SIZE from ./lodestar

* docs: add TODO about updating metrics

* fix: make benchmark multi threading cross-compatible

* chore: add [email protected]

* feat: default to added randomness

* feat: add warning for no same message randomness

* fix: passing to updated bls functions

* feat: add blst peerDep

* fix: default to same message randomness

* chore: update yarn.lock

* chore: remove unused function to clear lint

* feat: break out setThreadPoolSize

* docs: update packages/cli/src/cmds/beacon/setThreadPoolSize.ts

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

* chore: update location for blst dep

* chore: run lint again

* fix: remove peerDep from light-client

* test: fix browser based tests

* fix: bad relative imports

* docs: add note to readme about switchable bls

* docs: typo

* chore: lint readme

* fix: light-client unit tests

* fix: light-client e2e test

* feat: remove disableSameMessageVerificationRandomness

* refactor: remove unused type

* docs: update wordlist

* fix: e2e tests

* Lint package.json

* Revert "fix: e2e tests"

This reverts commit f71acd7.

* Revert "fix: light-client e2e test"

This reverts commit 23c11f0.

* Revert "fix: light-client unit tests"

This reverts commit fa7893e.

* Revert "test: fix browser based tests"

This reverts commit 98d04ab.

* docs: update readme to remove switchable bls argument

* fix: replace optimizeDeps in vitest.browser.config

* chore: updated to bls 8.1.0

* feat: move setting threadpool size and warnings to applyPreset.ts

* fix: remove setThreadpoolSize from beacon handler

* feat: move libuv size logging into handler to use logger

* refactor: rename applyPreset to preInitialization

* refactor: logging about pool size

* Update packages/cli/src/options/globalOptions.ts

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

* refactor: rename prover applyPreset

* docs: change comment in cli/index

* fix: update logging for

* fix: throw error for invalid uvThreadpoolSize

* Update packages/cli/src/preInitialization.ts

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

* Fix lint issues

* Remove unused import

* refactor: move bls pool logging back to multithread.ts

* fix: log of threadcount

---------

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

* chore: update references to consensus spec to v1.4.0 (#6704)

* chore: update references to consensus spec to v1.4.0

* Remove unintended formatting changes

* chore: update consensus spec version in README (#6705)

* docs: correct plausible url (#6709)

fix: correct plausible url

* docs: incorrect scripts location (#6710)

fix: incorrect scripts location

* docs: no more broken images (#6708)

* fix: no more broken images

* fix: incorrect paths

* feat: check aggregationBits length of `SignedAggregateAndProof` in gossip validation (#6700)

* Add unit test

* Update packages/beacon-node/src/chain/validation/aggregateAndProof.ts

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

---------

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

* feat: add and track blob source for metrics (#6628)

* feat: add and track blob source for metrics

* adding blobsSource for blobsPromise

* address feedback

* apply feedback

* updates

* only allow non blobspromise blocks to be imported

* feat: add support for browser bundle for lightclient (#6673)

* Reorganize the code so it is accessible from one package

* Add support for browser build for lightclient

* Update the build config

* Improve the bls vite plugin

* Restructure the vite and vitest scripts

* Simplify vite config

* Remove unused polyfill

* Fix the doc lint error

* Add support for bundle test

* Update the package json files

* Add dist build to default build task

* Fix spelling in the docs

* Fix the lint error

* Fix type error

* Disable eslint errors

* Increase the timeout for bundle test

* Fix eslint bundle

* Fix lint warning

* Remove the unused config

* Add the default export to bundle

* Enable compression on th build

* Update packages/light-client/README.md

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

* Increase timeout for one test

* Optimize package build task

* Update the readme

---------

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

* docs: fix plausible domain (#6712)

* ci: add paths-ignore to workflows (#6713)

* chore: added paths-ignore

* chore: address comments

* feat: add arm64 binary support (#6707)

* feat: add arm64 binary support

* chore: workaround yarn

* chore: add comment

* chore: workaround runner limitations

* ci: publish binaries for release candidates (#6714)

* feat: add types support to esm bundle for lightclient (#6685)

* Add vite dts plugin

* Restructure types export

* Update vite build config

* Remove unused file

* Update the build process

* Fix doc formatting

* Build the dist for type tests

* chore: update vitest (#6718)

Update vitest

* chore: do not build all binaries atomically (#6719)

* feat: update libp2p deps (#6711)

* feat: update libp2p deps

* chore: fix linter/type errors

* chore(deps): bump ejs from 3.1.9 to 3.1.10 (#6721)

Bumps [ejs](https://github.com/mde/ejs) from 3.1.9 to 3.1.10.
- [Release notes](https://github.com/mde/ejs/releases)
- [Commits](mde/ejs@v3.1.9...v3.1.10)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: revert "ci: add paths-ignore to workflows (#6713)" (#6730)

Revert "ci: add paths-ignore to workflows (#6713)"

This reverts commit e460bb1.

* docs: restore docs pages lost during docusaurus migration (#6725)

* ci: fix incorrect build caching (#6731)

fix: incorrect build caching

* fix: build error log during esm bundle build (#6737)

Fix build error

* chore: update fastify to v4.27.0 (#6740)

* deps: upgrade vitest minor version (#6745)

Upgrade vitest

* chore: warn when heap limit is too low (#6722)

* chore: warn when heap limit is too low

* chore: units

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

* chore: address comments

* chore: added faq element

* chore: address comments

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

* chore: address comments

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

* chore: address comments

---------

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

* feat: disable flood publish (#6755)

* feat: disable flood publish

* feat: add network.disableFloodPublish cli flag

* chore: address PR comments

* test: allow compact diff for test failures (#6783)

* Allow the compact diff for tests

* Update the doc

* Update docs/pages/contribution/testing/index.md

Co-authored-by: Julien <[email protected]>

* Fix linting on docs

* Fix linting

---------

Co-authored-by: Julien <[email protected]>

* chore: upgrade classic-level (#6793)

* chore: upgrade classic-level

* chore: address comments

* feat(prover): support non-mutated verification provider in prover (#6727)

* Restructure the assertions

* Add an inspector to run the logic to detect providers

* Update web3 provdier logic to use inspetor

* Fix the types for proxy

* Make the default type for mutation

* Rename elrpc to elrpcprovider

* Apply suggestions from code review

Co-authored-by: Julien <[email protected]>

* Fix build error

* Update the readme doc

* Apply suggestions from code review

Co-authored-by: Julien <[email protected]>

* Fix the docs linting

* Add missing words

---------

Co-authored-by: Julien <[email protected]>

* docs: added debugging section (#6743)

* docs: added debugging section

* chore: spell checks

* chore: added extra docs

* chore: address comments

* chore: added extra configuration

* chore: updated docs

* chore: added extra configuration

* chore: fix lint

* chore: fix typos

* chore: .gitignore

* chore: address comments

* chore: address comments

* chore: review debugging section PR (#6807)

* chore: update the naming conventions used in sim tests (#6805)

* Rename simulation test to crucible

* Rename SimulationEnvironment to Simulation

* Use consistent function names

* Update readme

* Rename interfaces for consistent pattern

* Fix lint error

* feat: recognize grandine from agentVersion (#6808)

* Add grandine

* add grandine to wordlist

* chore: refactor event loop interactions (#6806)

* chore: refactor sleep(0) usage

* chore: refactor setTimeout

* chore: address comments

* chore: cleanup

* Apply suggestions from code review

---------

Co-authored-by: Cayman <[email protected]>

* chore: fix broken docker (#6813)

* chore: log newPayload engine api (#6810)

* chore: add `get_proposer_head` check in fork choice spec test (#6814)

* Check get_proposer_head

* Fix enum typo

* lint

* chore: consolidate classic-level usage (#6795)

* chore: do not rely on leveldown

* chore: replace level with classic-level

* chore: added docker support for osx (#6696)

* chore: added docker support for osx

* chore: address comments

* chore: address comments

* Update docker-compose.yml

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

* chore: address comments

---------

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

* chore: fix vitest performance with spec tests artifacts in place (#6817)

Fix vitest performance with spec tests in place

* chore: clean up yarn lockfile (#6816)

* feat: disable flood publish by default (#6815)

* feat: use @chainsafe/blst directly (#6706)

* feat: use @chainsafe/blst directly

* chore: update to [email protected]

* refactor: remove randomBytesNonZero and user blst exported version

* chore: update blst references

* test: catch invalid deserialization in spec tests and return false

* feat: create signatureFromBytes and signatureFromBytesNoCheck in utils package

* feat: implement signatureFromBytes from utils package

* feat: implement signatureFromBytes everywhere

* fix: light-client empty module for blst

---------

Co-authored-by: matthewkeil <[email protected]>

* fix: avoid Buffer.from copies (#6723)

* fix: avoid Buffer.from copies

* chore: simplify shuffling

* fix: use subarray instead of slice in shuffling

* chore: remove unnecessary devDependencies

* chore: rely on fastify 4.x behavior

* chore: avoid copy in verifyMerkleBranch

* use toBase64

* relax assertions in shuffle function

* Update packages/state-transition/src/util/shuffle.ts

Co-authored-by: twoeths <[email protected]>

---------

Co-authored-by: twoeths <[email protected]>

* chore: update nodejs to latest 22 (#6729)

* Upgrade node js version to 22

* Update node types

* Revert action config

* Add package from git hash

* Fix the build error

* Update the docs for node-22

* Update docker version for Nodejs to 22

* Update package.json

* Update package.json

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

* Update readme docs

* Add word in dictionary

* Add word in dictionary

---------

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

* deps: update systeminformation to 5.22.9 (#6823)

* chore: add distutils to build phase of Dockerfile (#6845)

* test: increase timeout of keystore tests (#6846)

* test: increase timeout of keystore cache tests

* Increase hook timeout

* Consistent number formatting

* chore: only log warning if media type is not supported (415) (#6847)

* fix: revert napi bls (#6853)

* Revert "feat: use @chainsafe/blst directly (#6706)"

This reverts commit 66fe753.

* Revert "feat: switch bls to napi rebuild (#6616)"

This reverts commit 97d9aa8.

* chore: bump package versions to 1.19.0

* chore: bump @chainsafe/blst to v0.2.11 (#6856)

* fix: arm64 binaries creation issue (#6858)

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: tuyennhv <[email protected]>
Co-authored-by: Julien <[email protected]>
Co-authored-by: Nico Flaig <[email protected]>
Co-authored-by: Matthew Keil <[email protected]>
Co-authored-by: NC <[email protected]>
Co-authored-by: g11tech <[email protected]>
Co-authored-by: Nazar Hussain <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@wemeetagain
Copy link
Member

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

4 participants