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

fix: update voluntary exit block inclusion filter #6278

Merged
merged 2 commits into from
Jan 10, 2024
Merged

Conversation

dapplion
Copy link
Contributor

Motivation

The logic to decide when to include exists currently is:

function isVoluntaryExitSignatureIncludable(stateFork: ForkSeq, voluntaryExitFork: ForkSeq): boolean {
  return stateFork === voluntaryExitFork
}

this is not correct:

Voluntary exists before deneb

Due to how get domain is calculated a voluntary exit signed at a future epoch at fork version N can only be included in a state where fork version N is stored in the previous_version or current_version. Else the signature verification will fail. So a block producer can include exists with valid signatures (with full knowledge of all fork versions) in a block at the same of next fork as the voluntary_exit.epoch

def process_voluntary_exit(state: BeaconState, signed_voluntary_exit: SignedVoluntaryExit) -> None:
    ...
    domain = get_domain(state, DOMAIN_VOLUNTARY_EXIT, voluntary_exit.epoch)
    signing_root = compute_signing_root(voluntary_exit, domain)
    assert bls.Verify(validator.pubkey, signing_root, signed_voluntary_exit.signature)
    ...

def get_domain(state: BeaconState, domain_type: DomainType, epoch: Epoch=None) -> Domain:
    epoch = get_current_epoch(state) if epoch is None else epoch
    fork_version = state.fork.previous_version if epoch < state.fork.epoch else state.fork.current_version
    return compute_domain(domain_type, fork_version, state.genesis_validators_root)

https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#voluntary-exits

Voluntary exists post deneb

With EIP-7044: Perpetually Valid Signed Voluntary Exits https://eips.ethereum.org/EIPS/eip-7044 exists will be valid for all future forks

Description

Fix inclusion rules to match the description above:

function isVoluntaryExitSignatureIncludable(stateFork: ForkSeq, voluntaryExitFork: ForkSeq): boolean {
  if (stateFork >= ForkSeq.deneb) {
    // Exists are perpetually valid https://eips.ethereum.org/EIPS/eip-7044
    return true
  } else {
    // Can only include exits from the current and previous fork
    return voluntaryExitFork === stateFork || voluntaryExitFork === (stateFork - 1)
  }
}

Closes #6276

^ I have not tested this PR actually allows hive tests to pass

Copy link
Contributor

github-actions bot commented Jan 10, 2024

Performance Report

✔️ no performance regression detected

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 836b5b8 Previous: 2f9daba Ratio
forkChoice updateHead vc 600000 bc 64 eq 300000 16.724 ms/op 73.899 ms/op 0.23
Full benchmark results
Benchmark suite Current: 836b5b8 Previous: 2f9daba Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 637.48 us/op 1.0833 ms/op 0.59
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 97.258 us/op 150.56 us/op 0.65
BLS verify - blst-native 1.3412 ms/op 1.3555 ms/op 0.99
BLS verifyMultipleSignatures 3 - blst-native 2.8167 ms/op 2.8768 ms/op 0.98
BLS verifyMultipleSignatures 8 - blst-native 6.2315 ms/op 6.5073 ms/op 0.96
BLS verifyMultipleSignatures 32 - blst-native 22.712 ms/op 22.939 ms/op 0.99
BLS verifyMultipleSignatures 64 - blst-native 44.338 ms/op 45.907 ms/op 0.97
BLS verifyMultipleSignatures 128 - blst-native 87.640 ms/op 94.548 ms/op 0.93
BLS deserializing 10000 signatures 958.93 ms/op 989.18 ms/op 0.97
BLS deserializing 100000 signatures 9.2849 s/op 8.9786 s/op 1.03
BLS verifyMultipleSignatures - same message - 3 - blst-native 1.4889 ms/op 1.3545 ms/op 1.10
BLS verifyMultipleSignatures - same message - 8 - blst-native 1.5926 ms/op 1.5316 ms/op 1.04
BLS verifyMultipleSignatures - same message - 32 - blst-native 2.5017 ms/op 2.3576 ms/op 1.06
BLS verifyMultipleSignatures - same message - 64 - blst-native 3.7320 ms/op 3.6056 ms/op 1.04
BLS verifyMultipleSignatures - same message - 128 - blst-native 6.1167 ms/op 6.0624 ms/op 1.01
BLS aggregatePubkeys 32 - blst-native 28.475 us/op 28.375 us/op 1.00
BLS aggregatePubkeys 128 - blst-native 109.31 us/op 105.59 us/op 1.04
getAttestationsForBlock 68.691 ms/op 52.173 ms/op 1.32
getSlashingsAndExits - default max 345.49 us/op 157.43 us/op 2.19
getSlashingsAndExits - 2k 765.60 us/op 443.68 us/op 1.73
proposeBlockBody type=full, size=empty 12.211 ms/op 6.3285 ms/op 1.93
isKnown best case - 1 super set check 1.0250 us/op 482.00 ns/op 2.13
isKnown normal case - 2 super set checks 933.00 ns/op 524.00 ns/op 1.78
isKnown worse case - 16 super set checks 876.00 ns/op 527.00 ns/op 1.66
CheckpointStateCache - add get delete 9.6110 us/op 5.8590 us/op 1.64
validate api signedAggregateAndProof - struct 3.1488 ms/op 2.8255 ms/op 1.11
validate gossip signedAggregateAndProof - struct 3.4645 ms/op 2.8599 ms/op 1.21
validate gossip attestation - vc 640000 1.5732 ms/op 1.3989 ms/op 1.12
batch validate gossip attestation - vc 640000 - chunk 32 201.09 us/op 172.55 us/op 1.17
batch validate gossip attestation - vc 640000 - chunk 64 163.71 us/op 151.52 us/op 1.08
batch validate gossip attestation - vc 640000 - chunk 128 144.57 us/op 150.81 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 256 139.70 us/op 137.01 us/op 1.02
pickEth1Vote - no votes 1.3886 ms/op 1.3510 ms/op 1.03
pickEth1Vote - max votes 9.9323 ms/op 15.508 ms/op 0.64
pickEth1Vote - Eth1Data hashTreeRoot value x2048 19.310 ms/op 26.373 ms/op 0.73
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 24.909 ms/op 33.595 ms/op 0.74
pickEth1Vote - Eth1Data fastSerialize value x2048 650.59 us/op 678.91 us/op 0.96
pickEth1Vote - Eth1Data fastSerialize tree x2048 6.9807 ms/op 5.2699 ms/op 1.32
bytes32 toHexString 575.00 ns/op 649.00 ns/op 0.89
bytes32 Buffer.toString(hex) 294.00 ns/op 322.00 ns/op 0.91
bytes32 Buffer.toString(hex) from Uint8Array 527.00 ns/op 524.00 ns/op 1.01
bytes32 Buffer.toString(hex) + 0x 313.00 ns/op 309.00 ns/op 1.01
Object access 1 prop 0.17100 ns/op 0.21500 ns/op 0.80
Map access 1 prop 0.14900 ns/op 0.15500 ns/op 0.96
Object get x1000 7.6800 ns/op 8.2010 ns/op 0.94
Map get x1000 0.78200 ns/op 0.86400 ns/op 0.91
Object set x1000 54.587 ns/op 69.869 ns/op 0.78
Map set x1000 40.657 ns/op 53.305 ns/op 0.76
Return object 10000 times 0.24640 ns/op 0.29180 ns/op 0.84
Throw Error 10000 times 3.9826 us/op 4.0928 us/op 0.97
fastMsgIdFn sha256 / 200 bytes 3.3710 us/op 3.4630 us/op 0.97
fastMsgIdFn h32 xxhash / 200 bytes 293.00 ns/op 357.00 ns/op 0.82
fastMsgIdFn h64 xxhash / 200 bytes 354.00 ns/op 432.00 ns/op 0.82
fastMsgIdFn sha256 / 1000 bytes 11.521 us/op 11.981 us/op 0.96
fastMsgIdFn h32 xxhash / 1000 bytes 451.00 ns/op 487.00 ns/op 0.93
fastMsgIdFn h64 xxhash / 1000 bytes 432.00 ns/op 487.00 ns/op 0.89
fastMsgIdFn sha256 / 10000 bytes 104.48 us/op 104.58 us/op 1.00
fastMsgIdFn h32 xxhash / 10000 bytes 2.0120 us/op 2.0340 us/op 0.99
fastMsgIdFn h64 xxhash / 10000 bytes 1.3850 us/op 1.4140 us/op 0.98
send data - 1000 256B messages 19.246 ms/op 21.782 ms/op 0.88
send data - 1000 512B messages 26.376 ms/op 30.072 ms/op 0.88
send data - 1000 1024B messages 41.549 ms/op 44.183 ms/op 0.94
send data - 1000 1200B messages 23.491 ms/op 42.696 ms/op 0.55
send data - 1000 2048B messages 45.015 ms/op 51.015 ms/op 0.88
send data - 1000 4096B messages 43.528 ms/op 48.002 ms/op 0.91
send data - 1000 16384B messages 108.00 ms/op 115.19 ms/op 0.94
send data - 1000 65536B messages 518.99 ms/op 509.71 ms/op 1.02
enrSubnets - fastDeserialize 64 bits 1.3680 us/op 1.7370 us/op 0.79
enrSubnets - ssz BitVector 64 bits 464.00 ns/op 565.00 ns/op 0.82
enrSubnets - fastDeserialize 4 bits 200.00 ns/op 243.00 ns/op 0.82
enrSubnets - ssz BitVector 4 bits 497.00 ns/op 621.00 ns/op 0.80
prioritizePeers score -10:0 att 32-0.1 sync 2-0 120.06 us/op 137.84 us/op 0.87
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 143.56 us/op 151.23 us/op 0.95
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 192.45 us/op 212.44 us/op 0.91
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 357.87 us/op 374.13 us/op 0.96
prioritizePeers score 0:0 att 64-1 sync 4-1 395.25 us/op 440.87 us/op 0.90
array of 16000 items push then shift 1.7223 us/op 1.9117 us/op 0.90
LinkedList of 16000 items push then shift 9.6070 ns/op 10.527 ns/op 0.91
array of 16000 items push then pop 112.73 ns/op 121.63 ns/op 0.93
LinkedList of 16000 items push then pop 9.0580 ns/op 9.9270 ns/op 0.91
array of 24000 items push then shift 2.5901 us/op 2.8080 us/op 0.92
LinkedList of 24000 items push then shift 9.2660 ns/op 11.091 ns/op 0.84
array of 24000 items push then pop 148.56 ns/op 171.82 ns/op 0.86
LinkedList of 24000 items push then pop 8.8660 ns/op 10.176 ns/op 0.87
intersect bitArray bitLen 8 6.5820 ns/op 7.4910 ns/op 0.88
intersect array and set length 8 65.690 ns/op 95.657 ns/op 0.69
intersect bitArray bitLen 128 34.741 ns/op 44.265 ns/op 0.78
intersect array and set length 128 944.77 ns/op 1.1487 us/op 0.82
bitArray.getTrueBitIndexes() bitLen 128 1.6380 us/op 1.9450 us/op 0.84
bitArray.getTrueBitIndexes() bitLen 248 2.7860 us/op 3.2420 us/op 0.86
bitArray.getTrueBitIndexes() bitLen 512 5.3450 us/op 6.8840 us/op 0.78
Buffer.concat 32 items 981.00 ns/op 1.1200 us/op 0.88
Uint8Array.set 32 items 1.9320 us/op 2.2580 us/op 0.86
Set add up to 64 items then delete first 4.9550 us/op 5.2696 us/op 0.94
OrderedSet add up to 64 items then delete first 6.2765 us/op 6.8635 us/op 0.91
Set add up to 64 items then delete last 5.2157 us/op 5.5330 us/op 0.94
OrderedSet add up to 64 items then delete last 5.9851 us/op 7.2127 us/op 0.83
Set add up to 64 items then delete middle 4.6965 us/op 5.5118 us/op 0.85
OrderedSet add up to 64 items then delete middle 8.0411 us/op 8.6534 us/op 0.93
Set add up to 128 items then delete first 10.191 us/op 10.967 us/op 0.93
OrderedSet add up to 128 items then delete first 14.066 us/op 15.838 us/op 0.89
Set add up to 128 items then delete last 10.968 us/op 10.974 us/op 1.00
OrderedSet add up to 128 items then delete last 14.392 us/op 15.219 us/op 0.95
Set add up to 128 items then delete middle 10.329 us/op 11.079 us/op 0.93
OrderedSet add up to 128 items then delete middle 18.925 us/op 20.401 us/op 0.93
Set add up to 256 items then delete first 21.163 us/op 22.838 us/op 0.93
OrderedSet add up to 256 items then delete first 29.416 us/op 31.675 us/op 0.93
Set add up to 256 items then delete last 19.505 us/op 21.741 us/op 0.90
OrderedSet add up to 256 items then delete last 28.542 us/op 31.432 us/op 0.91
Set add up to 256 items then delete middle 20.844 us/op 21.919 us/op 0.95
OrderedSet add up to 256 items then delete middle 51.352 us/op 57.519 us/op 0.89
transfer serialized Status (84 B) 1.8140 us/op 1.9060 us/op 0.95
copy serialized Status (84 B) 1.5990 us/op 1.6420 us/op 0.97
transfer serialized SignedVoluntaryExit (112 B) 1.8660 us/op 2.0770 us/op 0.90
copy serialized SignedVoluntaryExit (112 B) 1.6620 us/op 1.7230 us/op 0.96
transfer serialized ProposerSlashing (416 B) 2.1350 us/op 2.7780 us/op 0.77
copy serialized ProposerSlashing (416 B) 2.2290 us/op 2.5280 us/op 0.88
transfer serialized Attestation (485 B) 2.4010 us/op 2.4600 us/op 0.98
copy serialized Attestation (485 B) 2.5380 us/op 2.4240 us/op 1.05
transfer serialized AttesterSlashing (33232 B) 2.4040 us/op 2.6760 us/op 0.90
copy serialized AttesterSlashing (33232 B) 6.6100 us/op 9.3990 us/op 0.70
transfer serialized Small SignedBeaconBlock (128000 B) 2.7060 us/op 3.3390 us/op 0.81
copy serialized Small SignedBeaconBlock (128000 B) 19.456 us/op 31.232 us/op 0.62
transfer serialized Avg SignedBeaconBlock (200000 B) 3.6590 us/op 3.5540 us/op 1.03
copy serialized Avg SignedBeaconBlock (200000 B) 28.345 us/op 47.474 us/op 0.60
transfer serialized BlobsSidecar (524380 B) 3.8370 us/op 5.1780 us/op 0.74
copy serialized BlobsSidecar (524380 B) 96.800 us/op 266.21 us/op 0.36
transfer serialized Big SignedBeaconBlock (1000000 B) 3.8640 us/op 6.6700 us/op 0.58
copy serialized Big SignedBeaconBlock (1000000 B) 170.18 us/op 280.14 us/op 0.61
pass gossip attestations to forkchoice per slot 3.9090 ms/op 4.2726 ms/op 0.91
forkChoice updateHead vc 100000 bc 64 eq 0 725.54 us/op 740.28 us/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 0 5.6906 ms/op 7.6021 ms/op 0.75
forkChoice updateHead vc 1000000 bc 64 eq 0 7.5147 ms/op 8.7033 ms/op 0.86
forkChoice updateHead vc 600000 bc 320 eq 0 4.3156 ms/op 4.8677 ms/op 0.89
forkChoice updateHead vc 600000 bc 1200 eq 0 4.4893 ms/op 7.5091 ms/op 0.60
forkChoice updateHead vc 600000 bc 7200 eq 0 5.8270 ms/op 9.3137 ms/op 0.63
forkChoice updateHead vc 600000 bc 64 eq 1000 11.683 ms/op 17.658 ms/op 0.66
forkChoice updateHead vc 600000 bc 64 eq 10000 12.206 ms/op 16.323 ms/op 0.75
forkChoice updateHead vc 600000 bc 64 eq 300000 16.724 ms/op 73.899 ms/op 0.23
computeDeltas 500000 validators 300 proto nodes 6.9282 ms/op 9.1457 ms/op 0.76
computeDeltas 500000 validators 1200 proto nodes 7.1448 ms/op 7.5427 ms/op 0.95
computeDeltas 500000 validators 7200 proto nodes 6.8375 ms/op 7.0774 ms/op 0.97
computeDeltas 750000 validators 300 proto nodes 10.445 ms/op 10.396 ms/op 1.00
computeDeltas 750000 validators 1200 proto nodes 10.167 ms/op 9.9185 ms/op 1.03
computeDeltas 750000 validators 7200 proto nodes 10.171 ms/op 9.8560 ms/op 1.03
computeDeltas 1400000 validators 300 proto nodes 20.098 ms/op 19.113 ms/op 1.05
computeDeltas 1400000 validators 1200 proto nodes 19.654 ms/op 19.010 ms/op 1.03
computeDeltas 1400000 validators 7200 proto nodes 19.076 ms/op 19.462 ms/op 0.98
computeDeltas 2100000 validators 300 proto nodes 29.322 ms/op 28.722 ms/op 1.02
computeDeltas 2100000 validators 1200 proto nodes 29.133 ms/op 28.869 ms/op 1.01
computeDeltas 2100000 validators 7200 proto nodes 29.036 ms/op 29.428 ms/op 0.99
computeProposerBoostScoreFromBalances 500000 validators 3.7879 ms/op 3.8506 ms/op 0.98
computeProposerBoostScoreFromBalances 750000 validators 3.8417 ms/op 3.8079 ms/op 1.01
computeProposerBoostScoreFromBalances 1400000 validators 3.8156 ms/op 3.7889 ms/op 1.01
computeProposerBoostScoreFromBalances 2100000 validators 3.8500 ms/op 3.7992 ms/op 1.01
altair processAttestation - 250000 vs - 7PWei normalcase 2.8444 ms/op 2.9805 ms/op 0.95
altair processAttestation - 250000 vs - 7PWei worstcase 4.0318 ms/op 3.9941 ms/op 1.01
altair processAttestation - setStatus - 1/6 committees join 196.91 us/op 158.71 us/op 1.24
altair processAttestation - setStatus - 1/3 committees join 359.09 us/op 303.56 us/op 1.18
altair processAttestation - setStatus - 1/2 committees join 484.01 us/op 402.66 us/op 1.20
altair processAttestation - setStatus - 2/3 committees join 612.35 us/op 499.24 us/op 1.23
altair processAttestation - setStatus - 4/5 committees join 819.36 us/op 704.01 us/op 1.16
altair processAttestation - setStatus - 100% committees join 965.86 us/op 822.41 us/op 1.17
altair processBlock - 250000 vs - 7PWei normalcase 10.816 ms/op 10.742 ms/op 1.01
altair processBlock - 250000 vs - 7PWei normalcase hashState 34.036 ms/op 39.811 ms/op 0.85
altair processBlock - 250000 vs - 7PWei worstcase 39.799 ms/op 39.838 ms/op 1.00
altair processBlock - 250000 vs - 7PWei worstcase hashState 98.115 ms/op 103.03 ms/op 0.95
phase0 processBlock - 250000 vs - 7PWei normalcase 3.2674 ms/op 2.9551 ms/op 1.11
phase0 processBlock - 250000 vs - 7PWei worstcase 33.582 ms/op 32.638 ms/op 1.03
altair processEth1Data - 250000 vs - 7PWei normalcase 613.11 us/op 685.89 us/op 0.89
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 14.216 us/op 10.605 us/op 1.34
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 57.803 us/op 68.177 us/op 0.85
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 22.409 us/op 32.281 us/op 0.69
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 13.381 us/op 14.242 us/op 0.94
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 217.40 us/op 247.99 us/op 0.88
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.3288 ms/op 1.5248 ms/op 0.87
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8958 ms/op 1.9344 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7783 ms/op 2.0925 ms/op 0.85
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.7490 ms/op 4.3837 ms/op 0.86
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.7046 ms/op 2.8034 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.9360 ms/op 7.9550 ms/op 0.75
Tree 40 250000 create 411.51 ms/op 550.71 ms/op 0.75
Tree 40 250000 get(125000) 218.94 ns/op 214.08 ns/op 1.02
Tree 40 250000 set(125000) 1.1388 us/op 1.1891 us/op 0.96
Tree 40 250000 toArray() 23.089 ms/op 26.095 ms/op 0.88
Tree 40 250000 iterate all - toArray() + loop 23.569 ms/op 24.865 ms/op 0.95
Tree 40 250000 iterate all - get(i) 70.328 ms/op 78.375 ms/op 0.90
MutableVector 250000 create 16.689 ms/op 21.972 ms/op 0.76
MutableVector 250000 get(125000) 6.7510 ns/op 6.8290 ns/op 0.99
MutableVector 250000 set(125000) 311.99 ns/op 561.85 ns/op 0.56
MutableVector 250000 toArray() 3.8967 ms/op 4.6263 ms/op 0.84
MutableVector 250000 iterate all - toArray() + loop 4.1908 ms/op 5.4042 ms/op 0.78
MutableVector 250000 iterate all - get(i) 1.5486 ms/op 1.6312 ms/op 0.95
Array 250000 create 5.2808 ms/op 4.6508 ms/op 1.14
Array 250000 clone - spread 1.2669 ms/op 1.6972 ms/op 0.75
Array 250000 get(125000) 1.0410 ns/op 1.6470 ns/op 0.63
Array 250000 set(125000) 4.2270 ns/op 5.4920 ns/op 0.77
Array 250000 iterate all - loop 168.38 us/op 178.37 us/op 0.94
effectiveBalanceIncrements clone Uint8Array 300000 28.206 us/op 58.253 us/op 0.48
effectiveBalanceIncrements clone MutableVector 300000 353.00 ns/op 413.00 ns/op 0.85
effectiveBalanceIncrements rw all Uint8Array 300000 202.58 us/op 244.91 us/op 0.83
effectiveBalanceIncrements rw all MutableVector 300000 89.308 ms/op 198.99 ms/op 0.45
phase0 afterProcessEpoch - 250000 vs - 7PWei 117.89 ms/op 135.86 ms/op 0.87
phase0 beforeProcessEpoch - 250000 vs - 7PWei 42.360 ms/op 71.441 ms/op 0.59
altair processEpoch - mainnet_e81889 538.41 ms/op 650.15 ms/op 0.83
mainnet_e81889 - altair beforeProcessEpoch 89.396 ms/op 114.76 ms/op 0.78
mainnet_e81889 - altair processJustificationAndFinalization 17.032 us/op 31.336 us/op 0.54
mainnet_e81889 - altair processInactivityUpdates 6.4141 ms/op 10.021 ms/op 0.64
mainnet_e81889 - altair processRewardsAndPenalties 62.758 ms/op 76.470 ms/op 0.82
mainnet_e81889 - altair processRegistryUpdates 2.7710 us/op 4.6300 us/op 0.60
mainnet_e81889 - altair processSlashings 583.00 ns/op 1.0340 us/op 0.56
mainnet_e81889 - altair processEth1DataReset 597.00 ns/op 1.2110 us/op 0.49
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.8127 ms/op 2.3501 ms/op 0.77
mainnet_e81889 - altair processSlashingsReset 4.9690 us/op 11.381 us/op 0.44
mainnet_e81889 - altair processRandaoMixesReset 5.3850 us/op 7.9240 us/op 0.68
mainnet_e81889 - altair processHistoricalRootsUpdate 701.00 ns/op 1.5490 us/op 0.45
mainnet_e81889 - altair processParticipationFlagUpdates 3.0890 us/op 5.4800 us/op 0.56
mainnet_e81889 - altair processSyncCommitteeUpdates 692.00 ns/op 1.4440 us/op 0.48
mainnet_e81889 - altair afterProcessEpoch 123.46 ms/op 137.50 ms/op 0.90
capella processEpoch - mainnet_e217614 2.2126 s/op 2.4550 s/op 0.90
mainnet_e217614 - capella beforeProcessEpoch 528.66 ms/op 590.37 ms/op 0.90
mainnet_e217614 - capella processJustificationAndFinalization 19.846 us/op 22.970 us/op 0.86
mainnet_e217614 - capella processInactivityUpdates 24.889 ms/op 20.502 ms/op 1.21
mainnet_e217614 - capella processRewardsAndPenalties 441.44 ms/op 458.30 ms/op 0.96
mainnet_e217614 - capella processRegistryUpdates 23.753 us/op 26.122 us/op 0.91
mainnet_e217614 - capella processSlashings 751.00 ns/op 760.00 ns/op 0.99
mainnet_e217614 - capella processEth1DataReset 505.00 ns/op 667.00 ns/op 0.76
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.9507 ms/op 5.1554 ms/op 0.96
mainnet_e217614 - capella processSlashingsReset 3.6720 us/op 7.1820 us/op 0.51
mainnet_e217614 - capella processRandaoMixesReset 4.6920 us/op 7.6170 us/op 0.62
mainnet_e217614 - capella processHistoricalRootsUpdate 647.00 ns/op 728.00 ns/op 0.89
mainnet_e217614 - capella processParticipationFlagUpdates 1.7210 us/op 3.0850 us/op 0.56
mainnet_e217614 - capella afterProcessEpoch 320.42 ms/op 314.78 ms/op 1.02
phase0 processEpoch - mainnet_e58758 625.41 ms/op 501.33 ms/op 1.25
mainnet_e58758 - phase0 beforeProcessEpoch 204.72 ms/op 176.22 ms/op 1.16
mainnet_e58758 - phase0 processJustificationAndFinalization 26.742 us/op 23.579 us/op 1.13
mainnet_e58758 - phase0 processRewardsAndPenalties 65.530 ms/op 55.465 ms/op 1.18
mainnet_e58758 - phase0 processRegistryUpdates 24.698 us/op 20.762 us/op 1.19
mainnet_e58758 - phase0 processSlashings 1.9690 us/op 597.00 ns/op 3.30
mainnet_e58758 - phase0 processEth1DataReset 1.1410 us/op 420.00 ns/op 2.72
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.0860 ms/op 1.1190 ms/op 1.86
mainnet_e58758 - phase0 processSlashingsReset 8.6870 us/op 3.4880 us/op 2.49
mainnet_e58758 - phase0 processRandaoMixesReset 9.7990 us/op 3.9270 us/op 2.50
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.1800 us/op 438.00 ns/op 2.69
mainnet_e58758 - phase0 processParticipationRecordUpdates 9.9730 us/op 5.1100 us/op 1.95
mainnet_e58758 - phase0 afterProcessEpoch 113.95 ms/op 97.547 ms/op 1.17
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.4107 ms/op 1.3844 ms/op 1.74
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.3158 ms/op 1.6254 ms/op 1.42
altair processInactivityUpdates - 250000 normalcase 35.954 ms/op 21.967 ms/op 1.64
altair processInactivityUpdates - 250000 worstcase 47.348 ms/op 27.086 ms/op 1.75
phase0 processRegistryUpdates - 250000 normalcase 20.833 us/op 9.2040 us/op 2.26
phase0 processRegistryUpdates - 250000 badcase_full_deposits 565.26 us/op 383.11 us/op 1.48
phase0 processRegistryUpdates - 250000 worstcase 0.5 237.92 ms/op 128.84 ms/op 1.85
altair processRewardsAndPenalties - 250000 normalcase 93.046 ms/op 56.018 ms/op 1.66
altair processRewardsAndPenalties - 250000 worstcase 58.734 ms/op 56.125 ms/op 1.05
phase0 getAttestationDeltas - 250000 normalcase 15.602 ms/op 9.8234 ms/op 1.59
phase0 getAttestationDeltas - 250000 worstcase 15.903 ms/op 9.0507 ms/op 1.76
phase0 processSlashings - 250000 worstcase 127.66 us/op 101.19 us/op 1.26
altair processSyncCommitteeUpdates - 250000 199.48 ms/op 158.76 ms/op 1.26
BeaconState.hashTreeRoot - No change 439.00 ns/op 262.00 ns/op 1.68
BeaconState.hashTreeRoot - 1 full validator 225.11 us/op 140.51 us/op 1.60
BeaconState.hashTreeRoot - 32 full validator 2.0138 ms/op 1.7516 ms/op 1.15
BeaconState.hashTreeRoot - 512 full validator 20.912 ms/op 20.753 ms/op 1.01
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 302.51 us/op 212.75 us/op 1.42
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 3.7514 ms/op 2.3311 ms/op 1.61
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 45.564 ms/op 29.135 ms/op 1.56
BeaconState.hashTreeRoot - 1 balances 186.79 us/op 136.04 us/op 1.37
BeaconState.hashTreeRoot - 32 balances 1.8405 ms/op 1.2310 ms/op 1.50
BeaconState.hashTreeRoot - 512 balances 16.490 ms/op 14.468 ms/op 1.14
BeaconState.hashTreeRoot - 250000 balances 281.16 ms/op 207.87 ms/op 1.35
aggregationBits - 2048 els - zipIndexesInBitList 40.203 us/op 21.490 us/op 1.87
byteArrayEquals 32 83.604 ns/op 76.494 ns/op 1.09
Buffer.compare 32 61.432 ns/op 56.387 ns/op 1.09
byteArrayEquals 1024 2.2633 us/op 2.1245 us/op 1.07
Buffer.compare 1024 76.555 ns/op 72.459 ns/op 1.06
byteArrayEquals 16384 44.907 us/op 33.591 us/op 1.34
Buffer.compare 16384 341.65 ns/op 281.21 ns/op 1.21
byteArrayEquals 123687377 344.54 ms/op 259.70 ms/op 1.33
Buffer.compare 123687377 13.929 ms/op 9.0816 ms/op 1.53
byteArrayEquals 32 - diff last byte 84.567 ns/op 86.105 ns/op 0.98
Buffer.compare 32 - diff last byte 73.335 ns/op 59.825 ns/op 1.23
byteArrayEquals 1024 - diff last byte 3.5041 us/op 2.1964 us/op 1.60
Buffer.compare 1024 - diff last byte 95.698 ns/op 74.722 ns/op 1.28
byteArrayEquals 16384 - diff last byte 56.616 us/op 37.832 us/op 1.50
Buffer.compare 16384 - diff last byte 388.58 ns/op 288.07 ns/op 1.35
byteArrayEquals 123687377 - diff last byte 306.64 ms/op 270.75 ms/op 1.13
Buffer.compare 123687377 - diff last byte 12.461 ms/op 8.5491 ms/op 1.46
byteArrayEquals 32 - random bytes 6.9740 ns/op 6.0440 ns/op 1.15
Buffer.compare 32 - random bytes 67.214 ns/op 62.474 ns/op 1.08
byteArrayEquals 1024 - random bytes 6.9470 ns/op 6.0800 ns/op 1.14
Buffer.compare 1024 - random bytes 64.385 ns/op 61.336 ns/op 1.05
byteArrayEquals 16384 - random bytes 7.7770 ns/op 6.0170 ns/op 1.29
Buffer.compare 16384 - random bytes 72.537 ns/op 61.207 ns/op 1.19
byteArrayEquals 123687377 - random bytes 17.200 ns/op 8.7400 ns/op 1.97
Buffer.compare 123687377 - random bytes 86.490 ns/op 68.810 ns/op 1.26
regular array get 100000 times 56.600 us/op 45.820 us/op 1.24
wrappedArray get 100000 times 54.467 us/op 45.590 us/op 1.19
arrayWithProxy get 100000 times 15.619 ms/op 14.168 ms/op 1.10
ssz.Root.equals 63.433 ns/op 54.334 ns/op 1.17
byteArrayEquals 57.743 ns/op 58.953 ns/op 0.98
Buffer.compare 19.384 ns/op 11.912 ns/op 1.63
shuffle list - 16384 els 8.4530 ms/op 7.2580 ms/op 1.16
shuffle list - 250000 els 110.66 ms/op 104.12 ms/op 1.06
processSlot - 1 slots 22.870 us/op 18.557 us/op 1.23
processSlot - 32 slots 5.1710 ms/op 3.3182 ms/op 1.56
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 70.677 ms/op 57.075 ms/op 1.24
getCommitteeAssignments - req 1 vs - 250000 vc 2.9373 ms/op 2.5255 ms/op 1.16
getCommitteeAssignments - req 100 vs - 250000 vc 3.9514 ms/op 3.7268 ms/op 1.06
getCommitteeAssignments - req 1000 vs - 250000 vc 4.6799 ms/op 4.1089 ms/op 1.14
findModifiedValidators - 10000 modified validators 743.42 ms/op 539.01 ms/op 1.38
findModifiedValidators - 1000 modified validators 585.42 ms/op 432.53 ms/op 1.35
findModifiedValidators - 100 modified validators 545.48 ms/op 436.82 ms/op 1.25
findModifiedValidators - 10 modified validators 478.10 ms/op 423.54 ms/op 1.13
findModifiedValidators - 1 modified validators 442.80 ms/op 415.54 ms/op 1.07
findModifiedValidators - no difference 453.18 ms/op 409.32 ms/op 1.11
compare ViewDUs 4.9349 s/op 4.6927 s/op 1.05
compare each validator Uint8Array 1.9323 s/op 1.8310 s/op 1.06
compare ViewDU to Uint8Array 1.4719 s/op 1.3664 s/op 1.08
migrate state 1000000 validators, 24 modified, 0 new 905.33 ms/op 767.86 ms/op 1.18
migrate state 1000000 validators, 1700 modified, 1000 new 1.1913 s/op 1.1455 s/op 1.04
migrate state 1000000 validators, 3400 modified, 2000 new 1.6390 s/op 1.3654 s/op 1.20
migrate state 1500000 validators, 24 modified, 0 new 999.83 ms/op 759.97 ms/op 1.32
migrate state 1500000 validators, 1700 modified, 1000 new 1.2279 s/op 1.0894 s/op 1.13
migrate state 1500000 validators, 3400 modified, 2000 new 1.6575 s/op 1.3176 s/op 1.26
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.1100 ns/op 4.6800 ns/op 1.09
state getBlockRootAtSlot - 250000 vs - 7PWei 641.23 ns/op 761.77 ns/op 0.84
computeProposers - vc 250000 10.120 ms/op 10.107 ms/op 1.00
computeEpochShuffling - vc 250000 109.18 ms/op 102.96 ms/op 1.06
getNextSyncCommittee - vc 250000 169.24 ms/op 159.09 ms/op 1.06
computeSigningRoot for AttestationData 29.154 us/op 29.131 us/op 1.00
hash AttestationData serialized data then Buffer.toString(base64) 2.4288 us/op 2.3337 us/op 1.04
toHexString serialized data 1.2179 us/op 1.1162 us/op 1.09
Buffer.toString(base64) 248.85 ns/op 239.71 ns/op 1.04

by benchmarkbot/action

@nflaig nflaig changed the title Fix voluntary exit block inclusion filter fix: update voluntary exit block inclusion filter Jan 10, 2024
nflaig
nflaig previously approved these changes Jan 10, 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.

Looks good to me, confirmed that hive tests are passing using this branch (#6276 (comment))

@nflaig nflaig added this to the v1.14.0 milestone Jan 10, 2024
g11tech
g11tech previously approved these changes Jan 10, 2024
Copy link
Contributor

@g11tech g11tech left a comment

Choose a reason for hiding this comment

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

lgtm

@g11tech g11tech dismissed stale reviews from nflaig and themself via 0822800 January 10, 2024 13:52
@g11tech g11tech enabled auto-merge (squash) January 10, 2024 13:53
@g11tech g11tech merged commit fbc5a78 into unstable Jan 10, 2024
13 of 15 checks passed
@g11tech g11tech deleted the fix-exit-inclusion branch January 10, 2024 14:10
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.14.0 🎉

ensi321 pushed a commit to ensi321/lodestar that referenced this pull request Jan 22, 2024
* Fix voluntary exit block inclusion filter

* lint

---------

Co-authored-by: harkamal <gajinder@g11.in>
jeluard pushed a commit to jeluard/lodestar that referenced this pull request Jan 30, 2024
* Fix voluntary exit block inclusion filter

* lint

---------

Co-authored-by: harkamal <gajinder@g11.in>
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.

Hive test failure due to voluntary exits not being included after Deneb
4 participants