-
-
Notifications
You must be signed in to change notification settings - Fork 342
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: use @chainsafe/blst directly #6706
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## unstable #6706 +/- ##
============================================
- Coverage 62.21% 62.20% -0.01%
============================================
Files 571 572 +1
Lines 60017 60031 +14
Branches 1975 1972 -3
============================================
+ Hits 37338 37342 +4
- Misses 22636 22646 +10
Partials 43 43 |
|
Benchmark suite | Current: f0797f4 | Previous: b439da2 | Ratio |
---|---|---|---|
Buffer.compare 123687377 | 19.681 ms/op | 3.6202 ms/op | 5.44 |
Buffer.compare 123687377 - diff last byte | 12.566 ms/op | 3.7603 ms/op | 3.34 |
Full benchmark results
Benchmark suite | Current: f0797f4 | Previous: b439da2 | Ratio |
---|---|---|---|
getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 1.4823 ms/op | 800.88 us/op | 1.85 |
getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 119.63 us/op | 105.96 us/op | 1.13 |
BLS verify - blst-native | 1.3779 ms/op | 1.1338 ms/op | 1.22 |
BLS verifyMultipleSignatures 3 - blst-native | 2.8784 ms/op | 2.1565 ms/op | 1.33 |
BLS verifyMultipleSignatures 8 - blst-native | 6.2526 ms/op | 4.7230 ms/op | 1.32 |
BLS verifyMultipleSignatures 32 - blst-native | 24.906 ms/op | 16.739 ms/op | 1.49 |
BLS verifyMultipleSignatures 64 - blst-native | 57.992 ms/op | 33.457 ms/op | 1.73 |
BLS verifyMultipleSignatures 128 - blst-native | 107.43 ms/op | 69.915 ms/op | 1.54 |
BLS deserializing 10000 signatures | 1.0710 s/op | 793.98 ms/op | 1.35 |
BLS deserializing 100000 signatures | 10.174 s/op | 8.0119 s/op | 1.27 |
BLS verifyMultipleSignatures - same message - 3 - blst-native | 1.5599 ms/op | 1.1490 ms/op | 1.36 |
BLS verifyMultipleSignatures - same message - 8 - blst-native | 1.6771 ms/op | 1.3509 ms/op | 1.24 |
BLS verifyMultipleSignatures - same message - 32 - blst-native | 2.6396 ms/op | 2.0775 ms/op | 1.27 |
BLS verifyMultipleSignatures - same message - 64 - blst-native | 3.9221 ms/op | 3.0678 ms/op | 1.28 |
BLS verifyMultipleSignatures - same message - 128 - blst-native | 6.5670 ms/op | 5.0970 ms/op | 1.29 |
BLS aggregatePubkeys 32 - blst-native | 45.134 us/op | 25.576 us/op | 1.76 |
BLS aggregatePubkeys 128 - blst-native | 131.63 us/op | 96.898 us/op | 1.36 |
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 | 86.267 ms/op | 53.626 ms/op | 1.61 |
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 | 60.492 ms/op | 52.753 ms/op | 1.15 |
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 | 44.871 ms/op | 27.361 ms/op | 1.64 |
getSlashingsAndExits - default max | 246.44 us/op | 152.69 us/op | 1.61 |
getSlashingsAndExits - 2k | 470.15 us/op | 289.97 us/op | 1.62 |
proposeBlockBody type=full, size=empty | 6.8915 ms/op | 5.0511 ms/op | 1.36 |
isKnown best case - 1 super set check | 372.00 ns/op | 466.00 ns/op | 0.80 |
isKnown normal case - 2 super set checks | 373.00 ns/op | 453.00 ns/op | 0.82 |
isKnown worse case - 16 super set checks | 355.00 ns/op | 460.00 ns/op | 0.77 |
InMemoryCheckpointStateCache - add get delete | 6.1120 us/op | 4.3640 us/op | 1.40 |
validate api signedAggregateAndProof - struct | 2.7527 ms/op | 2.0187 ms/op | 1.36 |
validate gossip signedAggregateAndProof - struct | 2.7163 ms/op | 2.0229 ms/op | 1.34 |
validate gossip attestation - vc 640000 | 1.3214 ms/op | 1.1560 ms/op | 1.14 |
batch validate gossip attestation - vc 640000 - chunk 32 | 177.99 us/op | 142.28 us/op | 1.25 |
batch validate gossip attestation - vc 640000 - chunk 64 | 165.22 us/op | 131.31 us/op | 1.26 |
batch validate gossip attestation - vc 640000 - chunk 128 | 163.53 us/op | 128.92 us/op | 1.27 |
batch validate gossip attestation - vc 640000 - chunk 256 | 150.89 us/op | 129.64 us/op | 1.16 |
pickEth1Vote - no votes | 1.3323 ms/op | 1.0190 ms/op | 1.31 |
pickEth1Vote - max votes | 11.784 ms/op | 12.908 ms/op | 0.91 |
pickEth1Vote - Eth1Data hashTreeRoot value x2048 | 19.307 ms/op | 18.670 ms/op | 1.03 |
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 | 28.487 ms/op | 29.490 ms/op | 0.97 |
pickEth1Vote - Eth1Data fastSerialize value x2048 | 654.58 us/op | 430.37 us/op | 1.52 |
pickEth1Vote - Eth1Data fastSerialize tree x2048 | 5.3407 ms/op | 6.2648 ms/op | 0.85 |
bytes32 toHexString | 574.00 ns/op | 629.00 ns/op | 0.91 |
bytes32 Buffer.toString(hex) | 306.00 ns/op | 507.00 ns/op | 0.60 |
bytes32 Buffer.toString(hex) from Uint8Array | 541.00 ns/op | 656.00 ns/op | 0.82 |
bytes32 Buffer.toString(hex) + 0x | 299.00 ns/op | 501.00 ns/op | 0.60 |
Object access 1 prop | 0.19400 ns/op | 0.36500 ns/op | 0.53 |
Map access 1 prop | 0.13200 ns/op | 0.33500 ns/op | 0.39 |
Object get x1000 | 7.4960 ns/op | 5.5670 ns/op | 1.35 |
Map get x1000 | 0.86100 ns/op | 0.95500 ns/op | 0.90 |
Object set x1000 | 60.702 ns/op | 27.760 ns/op | 2.19 |
Map set x1000 | 34.398 ns/op | 18.782 ns/op | 1.83 |
Return object 10000 times | 0.25070 ns/op | 0.25650 ns/op | 0.98 |
Throw Error 10000 times | 3.5644 us/op | 2.9413 us/op | 1.21 |
fastMsgIdFn sha256 / 200 bytes | 2.5550 us/op | 2.2770 us/op | 1.12 |
fastMsgIdFn h32 xxhash / 200 bytes | 343.00 ns/op | 474.00 ns/op | 0.72 |
fastMsgIdFn h64 xxhash / 200 bytes | 415.00 ns/op | 543.00 ns/op | 0.76 |
fastMsgIdFn sha256 / 1000 bytes | 8.7710 us/op | 6.7890 us/op | 1.29 |
fastMsgIdFn h32 xxhash / 1000 bytes | 530.00 ns/op | 657.00 ns/op | 0.81 |
fastMsgIdFn h64 xxhash / 1000 bytes | 485.00 ns/op | 624.00 ns/op | 0.78 |
fastMsgIdFn sha256 / 10000 bytes | 81.701 us/op | 55.157 us/op | 1.48 |
fastMsgIdFn h32 xxhash / 10000 bytes | 2.0930 us/op | 2.0620 us/op | 1.02 |
fastMsgIdFn h64 xxhash / 10000 bytes | 1.4240 us/op | 1.4350 us/op | 0.99 |
send data - 1000 256B messages | 16.671 ms/op | 11.587 ms/op | 1.44 |
send data - 1000 512B messages | 20.425 ms/op | 16.471 ms/op | 1.24 |
send data - 1000 1024B messages | 29.300 ms/op | 24.490 ms/op | 1.20 |
send data - 1000 1200B messages | 29.663 ms/op | 27.207 ms/op | 1.09 |
send data - 1000 2048B messages | 39.602 ms/op | 33.326 ms/op | 1.19 |
send data - 1000 4096B messages | 43.244 ms/op | 33.297 ms/op | 1.30 |
send data - 1000 16384B messages | 93.218 ms/op | 71.982 ms/op | 1.30 |
send data - 1000 65536B messages | 301.94 ms/op | 287.85 ms/op | 1.05 |
enrSubnets - fastDeserialize 64 bits | 1.3670 us/op | 1.1910 us/op | 1.15 |
enrSubnets - ssz BitVector 64 bits | 513.00 ns/op | 599.00 ns/op | 0.86 |
enrSubnets - fastDeserialize 4 bits | 195.00 ns/op | 357.00 ns/op | 0.55 |
enrSubnets - ssz BitVector 4 bits | 497.00 ns/op | 624.00 ns/op | 0.80 |
prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 211.71 us/op | 168.26 us/op | 1.26 |
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 292.75 us/op | 208.83 us/op | 1.40 |
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 318.26 us/op | 233.81 us/op | 1.36 |
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 551.17 us/op | 428.82 us/op | 1.29 |
prioritizePeers score 0:0 att 64-1 sync 4-1 | 659.40 us/op | 441.22 us/op | 1.49 |
array of 16000 items push then shift | 1.7757 us/op | 1.3995 us/op | 1.27 |
LinkedList of 16000 items push then shift | 7.6600 ns/op | 6.1690 ns/op | 1.24 |
array of 16000 items push then pop | 151.78 ns/op | 116.87 ns/op | 1.30 |
LinkedList of 16000 items push then pop | 7.1070 ns/op | 5.9600 ns/op | 1.19 |
array of 24000 items push then shift | 2.8472 us/op | 2.0688 us/op | 1.38 |
LinkedList of 24000 items push then shift | 6.9960 ns/op | 7.4960 ns/op | 0.93 |
array of 24000 items push then pop | 202.53 ns/op | 192.69 ns/op | 1.05 |
LinkedList of 24000 items push then pop | 7.6890 ns/op | 6.9220 ns/op | 1.11 |
intersect bitArray bitLen 8 | 6.1560 ns/op | 5.0490 ns/op | 1.22 |
intersect array and set length 8 | 60.637 ns/op | 50.601 ns/op | 1.20 |
intersect bitArray bitLen 128 | 37.245 ns/op | 29.910 ns/op | 1.25 |
intersect array and set length 128 | 896.83 ns/op | 730.03 ns/op | 1.23 |
bitArray.getTrueBitIndexes() bitLen 128 | 1.4120 us/op | 1.7140 us/op | 0.82 |
bitArray.getTrueBitIndexes() bitLen 248 | 2.0890 us/op | 2.5480 us/op | 0.82 |
bitArray.getTrueBitIndexes() bitLen 512 | 4.3720 us/op | 4.5740 us/op | 0.96 |
Buffer.concat 32 items | 922.00 ns/op | 1.0750 us/op | 0.86 |
Uint8Array.set 32 items | 1.7420 us/op | 2.0980 us/op | 0.83 |
Set add up to 64 items then delete first | 2.2369 us/op | 2.0968 us/op | 1.07 |
OrderedSet add up to 64 items then delete first | 3.2946 us/op | 3.5019 us/op | 0.94 |
Set add up to 64 items then delete last | 2.4366 us/op | 2.0227 us/op | 1.20 |
OrderedSet add up to 64 items then delete last | 3.5586 us/op | 3.1237 us/op | 1.14 |
Set add up to 64 items then delete middle | 2.4714 us/op | 2.0112 us/op | 1.23 |
OrderedSet add up to 64 items then delete middle | 5.3499 us/op | 4.3611 us/op | 1.23 |
Set add up to 128 items then delete first | 5.0840 us/op | 3.9883 us/op | 1.27 |
OrderedSet add up to 128 items then delete first | 7.8449 us/op | 6.2853 us/op | 1.25 |
Set add up to 128 items then delete last | 4.8779 us/op | 3.8881 us/op | 1.25 |
OrderedSet add up to 128 items then delete last | 7.4157 us/op | 6.0005 us/op | 1.24 |
Set add up to 128 items then delete middle | 5.0530 us/op | 3.9849 us/op | 1.27 |
OrderedSet add up to 128 items then delete middle | 14.436 us/op | 11.481 us/op | 1.26 |
Set add up to 256 items then delete first | 10.660 us/op | 8.0203 us/op | 1.33 |
OrderedSet add up to 256 items then delete first | 16.399 us/op | 18.419 us/op | 0.89 |
Set add up to 256 items then delete last | 9.6893 us/op | 11.210 us/op | 0.86 |
OrderedSet add up to 256 items then delete last | 14.713 us/op | 17.874 us/op | 0.82 |
Set add up to 256 items then delete middle | 10.542 us/op | 10.807 us/op | 0.98 |
OrderedSet add up to 256 items then delete middle | 37.554 us/op | 38.716 us/op | 0.97 |
transfer serialized Status (84 B) | 1.6660 us/op | 1.8960 us/op | 0.88 |
copy serialized Status (84 B) | 1.3000 us/op | 1.5430 us/op | 0.84 |
transfer serialized SignedVoluntaryExit (112 B) | 1.9130 us/op | 2.0840 us/op | 0.92 |
copy serialized SignedVoluntaryExit (112 B) | 1.3820 us/op | 1.6280 us/op | 0.85 |
transfer serialized ProposerSlashing (416 B) | 2.6280 us/op | 3.0280 us/op | 0.87 |
copy serialized ProposerSlashing (416 B) | 2.1930 us/op | 2.3980 us/op | 0.91 |
transfer serialized Attestation (485 B) | 2.8390 us/op | 2.1130 us/op | 1.34 |
copy serialized Attestation (485 B) | 2.4990 us/op | 1.7720 us/op | 1.41 |
transfer serialized AttesterSlashing (33232 B) | 2.7490 us/op | 1.8030 us/op | 1.52 |
copy serialized AttesterSlashing (33232 B) | 5.7030 us/op | 3.9420 us/op | 1.45 |
transfer serialized Small SignedBeaconBlock (128000 B) | 2.6340 us/op | 2.2060 us/op | 1.19 |
copy serialized Small SignedBeaconBlock (128000 B) | 16.375 us/op | 9.5650 us/op | 1.71 |
transfer serialized Avg SignedBeaconBlock (200000 B) | 2.5990 us/op | 2.0690 us/op | 1.26 |
copy serialized Avg SignedBeaconBlock (200000 B) | 23.751 us/op | 15.055 us/op | 1.58 |
transfer serialized BlobsSidecar (524380 B) | 2.9060 us/op | 3.0740 us/op | 0.95 |
copy serialized BlobsSidecar (524380 B) | 91.795 us/op | 89.249 us/op | 1.03 |
transfer serialized Big SignedBeaconBlock (1000000 B) | 2.6810 us/op | 3.1060 us/op | 0.86 |
copy serialized Big SignedBeaconBlock (1000000 B) | 153.21 us/op | 159.95 us/op | 0.96 |
pass gossip attestations to forkchoice per slot | 3.4985 ms/op | 3.1435 ms/op | 1.11 |
forkChoice updateHead vc 100000 bc 64 eq 0 | 539.37 us/op | 516.83 us/op | 1.04 |
forkChoice updateHead vc 600000 bc 64 eq 0 | 3.9622 ms/op | 3.3279 ms/op | 1.19 |
forkChoice updateHead vc 1000000 bc 64 eq 0 | 7.1141 ms/op | 5.3947 ms/op | 1.32 |
forkChoice updateHead vc 600000 bc 320 eq 0 | 3.2546 ms/op | 2.7847 ms/op | 1.17 |
forkChoice updateHead vc 600000 bc 1200 eq 0 | 3.3558 ms/op | 3.3171 ms/op | 1.01 |
forkChoice updateHead vc 600000 bc 7200 eq 0 | 4.8098 ms/op | 4.7705 ms/op | 1.01 |
forkChoice updateHead vc 600000 bc 64 eq 1000 | 11.444 ms/op | 10.437 ms/op | 1.10 |
forkChoice updateHead vc 600000 bc 64 eq 10000 | 11.656 ms/op | 10.691 ms/op | 1.09 |
forkChoice updateHead vc 600000 bc 64 eq 300000 | 16.598 ms/op | 38.659 ms/op | 0.43 |
computeDeltas 500000 validators 300 proto nodes | 3.9317 ms/op | 3.4955 ms/op | 1.12 |
computeDeltas 500000 validators 1200 proto nodes | 4.0946 ms/op | 3.1368 ms/op | 1.31 |
computeDeltas 500000 validators 7200 proto nodes | 4.2183 ms/op | 3.2004 ms/op | 1.32 |
computeDeltas 750000 validators 300 proto nodes | 5.9913 ms/op | 4.8292 ms/op | 1.24 |
computeDeltas 750000 validators 1200 proto nodes | 6.6088 ms/op | 4.9103 ms/op | 1.35 |
computeDeltas 750000 validators 7200 proto nodes | 7.8638 ms/op | 4.8846 ms/op | 1.61 |
computeDeltas 1400000 validators 300 proto nodes | 15.693 ms/op | 9.6928 ms/op | 1.62 |
computeDeltas 1400000 validators 1200 proto nodes | 14.864 ms/op | 9.6478 ms/op | 1.54 |
computeDeltas 1400000 validators 7200 proto nodes | 17.516 ms/op | 9.3041 ms/op | 1.88 |
computeDeltas 2100000 validators 300 proto nodes | 23.207 ms/op | 15.199 ms/op | 1.53 |
computeDeltas 2100000 validators 1200 proto nodes | 18.939 ms/op | 14.864 ms/op | 1.27 |
computeDeltas 2100000 validators 7200 proto nodes | 17.725 ms/op | 15.299 ms/op | 1.16 |
altair processAttestation - 250000 vs - 7PWei normalcase | 2.9032 ms/op | 1.7564 ms/op | 1.65 |
altair processAttestation - 250000 vs - 7PWei worstcase | 4.2003 ms/op | 2.3536 ms/op | 1.78 |
altair processAttestation - setStatus - 1/6 committees join | 177.05 us/op | 68.525 us/op | 2.58 |
altair processAttestation - setStatus - 1/3 committees join | 371.27 us/op | 168.83 us/op | 2.20 |
altair processAttestation - setStatus - 1/2 committees join | 452.58 us/op | 272.68 us/op | 1.66 |
altair processAttestation - setStatus - 2/3 committees join | 572.95 us/op | 332.44 us/op | 1.72 |
altair processAttestation - setStatus - 4/5 committees join | 923.28 us/op | 410.14 us/op | 2.25 |
altair processAttestation - setStatus - 100% committees join | 864.07 us/op | 483.26 us/op | 1.79 |
altair processBlock - 250000 vs - 7PWei normalcase | 8.3807 ms/op | 6.6170 ms/op | 1.27 |
altair processBlock - 250000 vs - 7PWei normalcase hashState | 36.534 ms/op | 25.522 ms/op | 1.43 |
altair processBlock - 250000 vs - 7PWei worstcase | 39.174 ms/op | 34.602 ms/op | 1.13 |
altair processBlock - 250000 vs - 7PWei worstcase hashState | 95.756 ms/op | 78.319 ms/op | 1.22 |
phase0 processBlock - 250000 vs - 7PWei normalcase | 3.0603 ms/op | 2.4072 ms/op | 1.27 |
phase0 processBlock - 250000 vs - 7PWei worstcase | 36.016 ms/op | 27.181 ms/op | 1.33 |
altair processEth1Data - 250000 vs - 7PWei normalcase | 603.49 us/op | 300.70 us/op | 2.01 |
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 17.643 us/op | 13.389 us/op | 1.32 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 49.477 us/op | 34.979 us/op | 1.41 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 25.544 us/op | 11.983 us/op | 2.13 |
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 12.346 us/op | 11.564 us/op | 1.07 |
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 238.09 us/op | 137.29 us/op | 1.73 |
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 1.4994 ms/op | 1.4191 ms/op | 1.06 |
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 1.9341 ms/op | 1.5040 ms/op | 1.29 |
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 1.9943 ms/op | 1.2295 ms/op | 1.62 |
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 3.7597 ms/op | 3.2698 ms/op | 1.15 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 3.4393 ms/op | 2.0715 ms/op | 1.66 |
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 6.0309 ms/op | 4.4794 ms/op | 1.35 |
Tree 40 250000 create | 517.74 ms/op | 200.71 ms/op | 2.58 |
Tree 40 250000 get(125000) | 181.82 ns/op | 133.61 ns/op | 1.36 |
Tree 40 250000 set(125000) | 1.5326 us/op | 618.39 ns/op | 2.48 |
Tree 40 250000 toArray() | 24.087 ms/op | 21.748 ms/op | 1.11 |
Tree 40 250000 iterate all - toArray() + loop | 26.139 ms/op | 21.317 ms/op | 1.23 |
Tree 40 250000 iterate all - get(i) | 65.970 ms/op | 51.439 ms/op | 1.28 |
MutableVector 250000 create | 15.361 ms/op | 13.968 ms/op | 1.10 |
MutableVector 250000 get(125000) | 7.2130 ns/op | 6.0610 ns/op | 1.19 |
MutableVector 250000 set(125000) | 440.86 ns/op | 208.86 ns/op | 2.11 |
MutableVector 250000 toArray() | 5.3247 ms/op | 4.6058 ms/op | 1.16 |
MutableVector 250000 iterate all - toArray() + loop | 5.7441 ms/op | 5.2619 ms/op | 1.09 |
MutableVector 250000 iterate all - get(i) | 1.6473 ms/op | 1.3988 ms/op | 1.18 |
Array 250000 create | 5.2842 ms/op | 4.5330 ms/op | 1.17 |
Array 250000 clone - spread | 2.0423 ms/op | 1.3479 ms/op | 1.52 |
Array 250000 get(125000) | 1.3530 ns/op | 1.1850 ns/op | 1.14 |
Array 250000 set(125000) | 1.9930 ns/op | 1.4010 ns/op | 1.42 |
Array 250000 iterate all - loop | 184.55 us/op | 158.44 us/op | 1.16 |
effectiveBalanceIncrements clone Uint8Array 300000 | 60.994 us/op | 14.520 us/op | 4.20 |
effectiveBalanceIncrements clone MutableVector 300000 | 620.00 ns/op | 549.00 ns/op | 1.13 |
effectiveBalanceIncrements rw all Uint8Array 300000 | 236.38 us/op | 190.89 us/op | 1.24 |
effectiveBalanceIncrements rw all MutableVector 300000 | 198.76 ms/op | 109.97 ms/op | 1.81 |
phase0 afterProcessEpoch - 250000 vs - 7PWei | 108.45 ms/op | 81.076 ms/op | 1.34 |
phase0 beforeProcessEpoch - 250000 vs - 7PWei | 68.499 ms/op | 51.678 ms/op | 1.33 |
altair processEpoch - mainnet_e81889 | 621.88 ms/op | 428.20 ms/op | 1.45 |
mainnet_e81889 - altair beforeProcessEpoch | 125.09 ms/op | 78.337 ms/op | 1.60 |
mainnet_e81889 - altair processJustificationAndFinalization | 29.417 us/op | 16.122 us/op | 1.82 |
mainnet_e81889 - altair processInactivityUpdates | 12.770 ms/op | 5.5547 ms/op | 2.30 |
mainnet_e81889 - altair processRewardsAndPenalties | 66.345 ms/op | 47.189 ms/op | 1.41 |
mainnet_e81889 - altair processRegistryUpdates | 4.3250 us/op | 3.1330 us/op | 1.38 |
mainnet_e81889 - altair processSlashings | 1.0200 us/op | 554.00 ns/op | 1.84 |
mainnet_e81889 - altair processEth1DataReset | 1.1170 us/op | 922.00 ns/op | 1.21 |
mainnet_e81889 - altair processEffectiveBalanceUpdates | 1.6872 ms/op | 1.1696 ms/op | 1.44 |
mainnet_e81889 - altair processSlashingsReset | 10.267 us/op | 4.4940 us/op | 2.28 |
mainnet_e81889 - altair processRandaoMixesReset | 8.6150 us/op | 5.6940 us/op | 1.51 |
mainnet_e81889 - altair processHistoricalRootsUpdate | 2.3240 us/op | 1.1030 us/op | 2.11 |
mainnet_e81889 - altair processParticipationFlagUpdates | 3.2430 us/op | 2.4060 us/op | 1.35 |
mainnet_e81889 - altair processSyncCommitteeUpdates | 1.3930 us/op | 1.1370 us/op | 1.23 |
mainnet_e81889 - altair afterProcessEpoch | 116.29 ms/op | 82.827 ms/op | 1.40 |
capella processEpoch - mainnet_e217614 | 1.6965 s/op | 1.4750 s/op | 1.15 |
mainnet_e217614 - capella beforeProcessEpoch | 286.95 ms/op | 316.36 ms/op | 0.91 |
mainnet_e217614 - capella processJustificationAndFinalization | 15.517 us/op | 20.449 us/op | 0.76 |
mainnet_e217614 - capella processInactivityUpdates | 16.715 ms/op | 16.034 ms/op | 1.04 |
mainnet_e217614 - capella processRewardsAndPenalties | 266.54 ms/op | 274.89 ms/op | 0.97 |
mainnet_e217614 - capella processRegistryUpdates | 26.122 us/op | 23.910 us/op | 1.09 |
mainnet_e217614 - capella processSlashings | 556.00 ns/op | 1.1070 us/op | 0.50 |
mainnet_e217614 - capella processEth1DataReset | 508.00 ns/op | 996.00 ns/op | 0.51 |
mainnet_e217614 - capella processEffectiveBalanceUpdates | 6.4516 ms/op | 3.4676 ms/op | 1.86 |
mainnet_e217614 - capella processSlashingsReset | 4.1320 us/op | 3.0460 us/op | 1.36 |
mainnet_e217614 - capella processRandaoMixesReset | 6.9290 us/op | 5.6800 us/op | 1.22 |
mainnet_e217614 - capella processHistoricalRootsUpdate | 931.00 ns/op | 1.0960 us/op | 0.85 |
mainnet_e217614 - capella processParticipationFlagUpdates | 3.0830 us/op | 3.4450 us/op | 0.89 |
mainnet_e217614 - capella afterProcessEpoch | 269.20 ms/op | 215.34 ms/op | 1.25 |
phase0 processEpoch - mainnet_e58758 | 470.54 ms/op | 429.81 ms/op | 1.09 |
mainnet_e58758 - phase0 beforeProcessEpoch | 143.28 ms/op | 119.68 ms/op | 1.20 |
mainnet_e58758 - phase0 processJustificationAndFinalization | 25.459 us/op | 12.281 us/op | 2.07 |
mainnet_e58758 - phase0 processRewardsAndPenalties | 30.685 ms/op | 27.393 ms/op | 1.12 |
mainnet_e58758 - phase0 processRegistryUpdates | 12.348 us/op | 9.5370 us/op | 1.29 |
mainnet_e58758 - phase0 processSlashings | 534.00 ns/op | 825.00 ns/op | 0.65 |
mainnet_e58758 - phase0 processEth1DataReset | 426.00 ns/op | 797.00 ns/op | 0.53 |
mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 1.2680 ms/op | 1.4546 ms/op | 0.87 |
mainnet_e58758 - phase0 processSlashingsReset | 2.5150 us/op | 2.6670 us/op | 0.94 |
mainnet_e58758 - phase0 processRandaoMixesReset | 7.0490 us/op | 4.3300 us/op | 1.63 |
mainnet_e58758 - phase0 processHistoricalRootsUpdate | 425.00 ns/op | 792.00 ns/op | 0.54 |
mainnet_e58758 - phase0 processParticipationRecordUpdates | 4.1090 us/op | 3.4990 us/op | 1.17 |
mainnet_e58758 - phase0 afterProcessEpoch | 83.986 ms/op | 68.423 ms/op | 1.23 |
phase0 processEffectiveBalanceUpdates - 250000 normalcase | 1.5424 ms/op | 1.3270 ms/op | 1.16 |
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 1.7232 ms/op | 1.1298 ms/op | 1.53 |
altair processInactivityUpdates - 250000 normalcase | 15.944 ms/op | 14.628 ms/op | 1.09 |
altair processInactivityUpdates - 250000 worstcase | 15.841 ms/op | 12.518 ms/op | 1.27 |
phase0 processRegistryUpdates - 250000 normalcase | 9.1190 us/op | 7.3170 us/op | 1.25 |
phase0 processRegistryUpdates - 250000 badcase_full_deposits | 414.68 us/op | 406.19 us/op | 1.02 |
phase0 processRegistryUpdates - 250000 worstcase 0.5 | 120.70 ms/op | 127.16 ms/op | 0.95 |
altair processRewardsAndPenalties - 250000 normalcase | 59.514 ms/op | 40.433 ms/op | 1.47 |
altair processRewardsAndPenalties - 250000 worstcase | 52.643 ms/op | 44.801 ms/op | 1.18 |
phase0 getAttestationDeltas - 250000 normalcase | 9.4449 ms/op | 6.1923 ms/op | 1.53 |
phase0 getAttestationDeltas - 250000 worstcase | 8.0136 ms/op | 7.6751 ms/op | 1.04 |
phase0 processSlashings - 250000 worstcase | 139.58 us/op | 80.935 us/op | 1.72 |
altair processSyncCommitteeUpdates - 250000 | 182.28 ms/op | 96.259 ms/op | 1.89 |
BeaconState.hashTreeRoot - No change | 594.00 ns/op | 637.00 ns/op | 0.93 |
BeaconState.hashTreeRoot - 1 full validator | 146.05 us/op | 86.128 us/op | 1.70 |
BeaconState.hashTreeRoot - 32 full validator | 1.7035 ms/op | 888.32 us/op | 1.92 |
BeaconState.hashTreeRoot - 512 full validator | 25.960 ms/op | 12.109 ms/op | 2.14 |
BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 333.28 us/op | 135.64 us/op | 2.46 |
BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 4.2593 ms/op | 1.6658 ms/op | 2.56 |
BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 54.377 ms/op | 24.345 ms/op | 2.23 |
BeaconState.hashTreeRoot - 1 balances | 170.64 us/op | 116.75 us/op | 1.46 |
BeaconState.hashTreeRoot - 32 balances | 1.3701 ms/op | 1.1008 ms/op | 1.24 |
BeaconState.hashTreeRoot - 512 balances | 13.565 ms/op | 10.529 ms/op | 1.29 |
BeaconState.hashTreeRoot - 250000 balances | 306.24 ms/op | 198.74 ms/op | 1.54 |
aggregationBits - 2048 els - zipIndexesInBitList | 40.324 us/op | 20.464 us/op | 1.97 |
byteArrayEquals 32 | 88.909 ns/op | 61.078 ns/op | 1.46 |
Buffer.compare 32 | 55.146 ns/op | 37.361 ns/op | 1.48 |
byteArrayEquals 1024 | 2.4022 us/op | 1.7367 us/op | 1.38 |
Buffer.compare 1024 | 62.493 ns/op | 40.318 ns/op | 1.55 |
byteArrayEquals 16384 | 38.234 us/op | 27.868 us/op | 1.37 |
Buffer.compare 16384 | 282.52 ns/op | 203.15 ns/op | 1.39 |
byteArrayEquals 123687377 | 309.91 ms/op | 206.48 ms/op | 1.50 |
Buffer.compare 123687377 | 19.681 ms/op | 3.6202 ms/op | 5.44 |
byteArrayEquals 32 - diff last byte | 96.359 ns/op | 61.233 ns/op | 1.57 |
Buffer.compare 32 - diff last byte | 70.383 ns/op | 38.150 ns/op | 1.84 |
byteArrayEquals 1024 - diff last byte | 2.2973 us/op | 1.7025 us/op | 1.35 |
Buffer.compare 1024 - diff last byte | 60.167 ns/op | 45.106 ns/op | 1.33 |
byteArrayEquals 16384 - diff last byte | 38.465 us/op | 27.781 us/op | 1.38 |
Buffer.compare 16384 - diff last byte | 281.58 ns/op | 209.45 ns/op | 1.34 |
byteArrayEquals 123687377 - diff last byte | 335.44 ms/op | 205.66 ms/op | 1.63 |
Buffer.compare 123687377 - diff last byte | 12.566 ms/op | 3.7603 ms/op | 3.34 |
byteArrayEquals 32 - random bytes | 10.021 ns/op | 4.6740 ns/op | 2.14 |
Buffer.compare 32 - random bytes | 68.161 ns/op | 38.446 ns/op | 1.77 |
byteArrayEquals 1024 - random bytes | 7.3780 ns/op | 4.4430 ns/op | 1.66 |
Buffer.compare 1024 - random bytes | 72.580 ns/op | 37.110 ns/op | 1.96 |
byteArrayEquals 16384 - random bytes | 12.399 ns/op | 4.5100 ns/op | 2.75 |
Buffer.compare 16384 - random bytes | 54.403 ns/op | 36.339 ns/op | 1.50 |
byteArrayEquals 123687377 - random bytes | 18.580 ns/op | 8.6700 ns/op | 2.14 |
Buffer.compare 123687377 - random bytes | 71.340 ns/op | 41.560 ns/op | 1.72 |
regular array get 100000 times | 64.447 us/op | 40.597 us/op | 1.59 |
wrappedArray get 100000 times | 62.630 us/op | 40.566 us/op | 1.54 |
arrayWithProxy get 100000 times | 25.177 ms/op | 10.590 ms/op | 2.38 |
ssz.Root.equals | 64.892 ns/op | 53.463 ns/op | 1.21 |
byteArrayEquals | 72.692 ns/op | 53.263 ns/op | 1.36 |
Buffer.compare | 19.132 ns/op | 9.8380 ns/op | 1.94 |
shuffle list - 16384 els | 9.4368 ms/op | 5.6009 ms/op | 1.68 |
shuffle list - 250000 els | 127.12 ms/op | 82.307 ms/op | 1.54 |
processSlot - 1 slots | 27.731 us/op | 15.437 us/op | 1.80 |
processSlot - 32 slots | 7.2272 ms/op | 2.5873 ms/op | 2.79 |
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 71.626 ms/op | 47.090 ms/op | 1.52 |
getCommitteeAssignments - req 1 vs - 250000 vc | 3.0509 ms/op | 2.3965 ms/op | 1.27 |
getCommitteeAssignments - req 100 vs - 250000 vc | 4.4876 ms/op | 3.5285 ms/op | 1.27 |
getCommitteeAssignments - req 1000 vs - 250000 vc | 6.0050 ms/op | 3.8293 ms/op | 1.57 |
findModifiedValidators - 10000 modified validators | 535.54 ms/op | 287.68 ms/op | 1.86 |
findModifiedValidators - 1000 modified validators | 375.43 ms/op | 189.25 ms/op | 1.98 |
findModifiedValidators - 100 modified validators | 326.99 ms/op | 167.67 ms/op | 1.95 |
findModifiedValidators - 10 modified validators | 342.84 ms/op | 163.52 ms/op | 2.10 |
findModifiedValidators - 1 modified validators | 315.00 ms/op | 210.94 ms/op | 1.49 |
findModifiedValidators - no difference | 336.44 ms/op | 200.16 ms/op | 1.68 |
compare ViewDUs | 5.0237 s/op | 3.5761 s/op | 1.40 |
compare each validator Uint8Array | 1.5488 s/op | 1.4520 s/op | 1.07 |
compare ViewDU to Uint8Array | 1.3370 s/op | 835.43 ms/op | 1.60 |
migrate state 1000000 validators, 24 modified, 0 new | 675.54 ms/op | 540.95 ms/op | 1.25 |
migrate state 1000000 validators, 1700 modified, 1000 new | 1.0060 s/op | 904.54 ms/op | 1.11 |
migrate state 1000000 validators, 3400 modified, 2000 new | 1.2545 s/op | 1.3386 s/op | 0.94 |
migrate state 1500000 validators, 24 modified, 0 new | 893.63 ms/op | 621.43 ms/op | 1.44 |
migrate state 1500000 validators, 1700 modified, 1000 new | 1.2171 s/op | 947.05 ms/op | 1.29 |
migrate state 1500000 validators, 3400 modified, 2000 new | 1.5463 s/op | 1.2918 s/op | 1.20 |
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 4.9700 ns/op | 5.9200 ns/op | 0.84 |
state getBlockRootAtSlot - 250000 vs - 7PWei | 634.35 ns/op | 718.00 ns/op | 0.88 |
computeProposers - vc 250000 | 8.5097 ms/op | 7.1983 ms/op | 1.18 |
computeEpochShuffling - vc 250000 | 101.92 ms/op | 89.282 ms/op | 1.14 |
getNextSyncCommittee - vc 250000 | 157.63 ms/op | 139.33 ms/op | 1.13 |
computeSigningRoot for AttestationData | 33.038 us/op | 25.734 us/op | 1.28 |
hash AttestationData serialized data then Buffer.toString(base64) | 1.8195 us/op | 1.3717 us/op | 1.33 |
toHexString serialized data | 1.3082 us/op | 846.78 ns/op | 1.54 |
Buffer.toString(base64) | 268.19 ns/op | 157.86 ns/op | 1.70 |
by benchmarkbot/action
@@ -31,7 +40,11 @@ export const testFnByType: Record<string, "skip" | ((data: any) => any)> = { | |||
*/ | |||
function aggregate_verify(input: {pubkeys: string[]; messages: string[]; signature: string}): boolean { | |||
const {pubkeys, messages, signature} = input; | |||
return bls.verifyMultiple(pubkeys.map(fromHexString), messages.map(fromHexString), fromHexString(signature)); | |||
try { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@wemeetagain I added this try/catch for the spec tests but am updating the base lib to not throw for this so it better meets the spec.
try { | ||
return _verify(fromHexString(message), fromHexString(pubkey), fromHexString(signature)); | ||
} catch { | ||
return false; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@wemeetagain I added this try/catch for the spec tests but am updating the base lib to not throw for this so it better meets the spec.
try { | ||
return aggregateVerify(messages.map(fromHexString), pubkeys.map(fromHexString), fromHexString(signature)); | ||
} catch { | ||
return false; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@wemeetagain I added this try/catch for the spec tests but am updating the base lib to not throw for this so it better meets the spec.
try { | ||
return _verify(fromHexString(message), fromHexString(pubkey), fromHexString(signature)); | ||
} catch { | ||
return false; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@wemeetagain I added this try/catch for the spec tests but am updating the base lib to not throw for this so it better meets the spec.
Metrics on feat2-mainnet do not look great. They should be equal to unstable/stable but seems to be performing worse for some reason... Will try and swap for another feat group tomorrow and see if its the machine |
After running for a while it seems like this branch is actually fine. @tuyennhv would love your opinion as well but I'm going to approve |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me, had a suggestion for signatureFromBytes()
util
also signatureFromBytesNoCheck()
should be moved to @lodestar/utils
instead so that both could be consumed by different packages
Added them both to |
@twoeths @philknows Spoke with @wemeetagain and we will merge this one after interop. Should not be an issue but why add more complexity to an already moving target. Can sit for the week and get merged when we get back. All is ready and just waiting for reapproval after the last update for the comment @twoeths had |
This reverts commit 66fe753.
This reverts commit 66fe753.
* 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 <nflaig@protonmail.com> * chore: address comments * chore: address comments * chore: fixed typo * chore: typo Co-authored-by: Nico Flaig <nflaig@protonmail.com> * chore: address comments * chore: wording Co-authored-by: Nico Flaig <nflaig@protonmail.com> * chore: use frozen lock file Co-authored-by: Nico Flaig <nflaig@protonmail.com> --------- Co-authored-by: Nico Flaig <nflaig@protonmail.com> * 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 bls@8.0.0 * 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 <nflaig@protonmail.com> * 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 <nflaig@protonmail.com> * 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 <nflaig@protonmail.com> * Fix lint issues * Remove unused import * refactor: move bls pool logging back to multithread.ts * fix: log of threadcount --------- Co-authored-by: Nico Flaig <nflaig@protonmail.com> * 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 <nflaig@protonmail.com> --------- Co-authored-by: Nico Flaig <nflaig@protonmail.com> * 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 <nflaig@protonmail.com> * Increase timeout for one test * Optimize package build task * Update the readme --------- Co-authored-by: Nico Flaig <nflaig@protonmail.com> * 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] <support@github.com> 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 <nflaig@protonmail.com> * chore: address comments * chore: added faq element * chore: address comments Co-authored-by: Nico Flaig <nflaig@protonmail.com> * chore: address comments Co-authored-by: Nico Flaig <nflaig@protonmail.com> * chore: address comments --------- Co-authored-by: Nico Flaig <nflaig@protonmail.com> * 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 <jeluard@users.noreply.github.com> * Fix linting on docs * Fix linting --------- Co-authored-by: Julien <jeluard@users.noreply.github.com> * 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 <jeluard@users.noreply.github.com> * Fix build error * Update the readme doc * Apply suggestions from code review Co-authored-by: Julien <jeluard@users.noreply.github.com> * Fix the docs linting * Add missing words --------- Co-authored-by: Julien <jeluard@users.noreply.github.com> * 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 <caymannava@gmail.com> * 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 <nflaig@protonmail.com> * chore: address comments --------- Co-authored-by: Nico Flaig <nflaig@protonmail.com> * 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 blst@1.0.1 * 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 <me@matthewkeil.com> * 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 <tuyen@chainsafe.io> --------- Co-authored-by: twoeths <tuyen@chainsafe.io> * 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 <nflaig@protonmail.com> * Update readme docs * Add word in dictionary * Add word in dictionary --------- Co-authored-by: Cayman <caymannava@gmail.com> Co-authored-by: Nico Flaig <nflaig@protonmail.com> * 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] <support@github.com> Co-authored-by: tuyennhv <tuyen@chainsafe.io> Co-authored-by: Julien <jeluard@users.noreply.github.com> Co-authored-by: Nico Flaig <nflaig@protonmail.com> Co-authored-by: Matthew Keil <me@matthewkeil.com> Co-authored-by: NC <adrninistrator1@protonmail.com> Co-authored-by: g11tech <develop@g11tech.io> Co-authored-by: Nazar Hussain <nazarhussain@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
🎉 This PR is included in v1.19.0 🎉 |
Motivation
In order to do some optimizations, we want to remove the
@chainsafe/bls
abstraction layer. We know we won't be running the beacon node or validator in node only. In the future, we may relax this restriction if a usecase presents itself.Description
@chainsafe/bls
throughout the monorepo, with the exception of the light client package.toBytes()
->.serialize()
.keyValidate()
or.sigValidate()
.fromBytes()
->.deserialize()
Pubkey.aggregate
,bls.aggregatePubkeys
->aggregatePubkeys
Signature.verifyAggregate
->fastVerifyAggregate