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: poll proposer duties of next epoch in advance #5794

Merged

Conversation

twoeths
Copy link
Contributor

@twoeths twoeths commented Jul 24, 2023

Motivation

We have some missed block proposal at start slot of epoch because there are some delay (up to 2s polling proposer duties right at start slot of epoch

Jul-23 12:06:49.167[]                debug: Detected new block proposer currentSlot=6940832

in this example, we wasted 2s after slot starts and the block was missed

Description

  • We already have PrepareNextSlotScheduler to run state transition 1/3 slot before next epoch so we can poll block proposer duties 1s-2s before the next epoch start
  • A lot of time state transition finishes in 3s, so I defined the look ahead time as 1s before next epoch start. In the future when we improve state transition, we can tweak this number

Closes #5792

@github-actions
Copy link
Contributor

github-actions bot commented Jul 24, 2023

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: a7c76d8 Previous: 0563661 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 910.93 us/op 907.75 us/op 1.00
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 75.358 us/op 89.117 us/op 0.85
BLS verify - blst-native 1.1746 ms/op 1.2343 ms/op 0.95
BLS verifyMultipleSignatures 3 - blst-native 2.3891 ms/op 2.5072 ms/op 0.95
BLS verifyMultipleSignatures 8 - blst-native 5.1235 ms/op 5.4613 ms/op 0.94
BLS verifyMultipleSignatures 32 - blst-native 18.505 ms/op 19.563 ms/op 0.95
BLS aggregatePubkeys 32 - blst-native 24.523 us/op 26.094 us/op 0.94
BLS aggregatePubkeys 128 - blst-native 96.408 us/op 100.22 us/op 0.96
getAttestationsForBlock 58.226 ms/op 58.270 ms/op 1.00
isKnown best case - 1 super set check 272.00 ns/op 277.00 ns/op 0.98
isKnown normal case - 2 super set checks 266.00 ns/op 275.00 ns/op 0.97
isKnown worse case - 16 super set checks 260.00 ns/op 266.00 ns/op 0.98
CheckpointStateCache - add get delete 5.0870 us/op 5.1720 us/op 0.98
validate api signedAggregateAndProof - struct 2.7328 ms/op 2.9075 ms/op 0.94
validate gossip signedAggregateAndProof - struct 2.7322 ms/op 2.8585 ms/op 0.96
validate api attestation - struct 1.3077 ms/op 1.3637 ms/op 0.96
validate gossip attestation - struct 1.4187 ms/op 1.4589 ms/op 0.97
pickEth1Vote - no votes 1.0592 ms/op 1.1712 ms/op 0.90
pickEth1Vote - max votes 10.326 ms/op 9.3057 ms/op 1.11
pickEth1Vote - Eth1Data hashTreeRoot value x2048 8.6462 ms/op 9.6378 ms/op 0.90
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 18.149 ms/op 16.205 ms/op 1.12
pickEth1Vote - Eth1Data fastSerialize value x2048 550.35 us/op 637.19 us/op 0.86
pickEth1Vote - Eth1Data fastSerialize tree x2048 6.1221 ms/op 4.6333 ms/op 1.32
bytes32 toHexString 463.00 ns/op 512.00 ns/op 0.90
bytes32 Buffer.toString(hex) 294.00 ns/op 310.00 ns/op 0.95
bytes32 Buffer.toString(hex) from Uint8Array 441.00 ns/op 454.00 ns/op 0.97
bytes32 Buffer.toString(hex) + 0x 288.00 ns/op 304.00 ns/op 0.95
Object access 1 prop 0.15000 ns/op 0.16400 ns/op 0.91
Map access 1 prop 0.13800 ns/op 0.15000 ns/op 0.92
Object get x1000 7.5480 ns/op 8.5740 ns/op 0.88
Map get x1000 0.58100 ns/op 0.64900 ns/op 0.90
Object set x1000 46.904 ns/op 53.869 ns/op 0.87
Map set x1000 37.273 ns/op 41.320 ns/op 0.90
Return object 10000 times 0.23250 ns/op 0.24630 ns/op 0.94
Throw Error 10000 times 3.8456 us/op 4.1087 us/op 0.94
fastMsgIdFn sha256 / 200 bytes 3.1980 us/op 3.4880 us/op 0.92
fastMsgIdFn h32 xxhash / 200 bytes 261.00 ns/op 304.00 ns/op 0.86
fastMsgIdFn h64 xxhash / 200 bytes 328.00 ns/op 396.00 ns/op 0.83
fastMsgIdFn sha256 / 1000 bytes 11.179 us/op 12.631 us/op 0.89
fastMsgIdFn h32 xxhash / 1000 bytes 383.00 ns/op 494.00 ns/op 0.78
fastMsgIdFn h64 xxhash / 1000 bytes 402.00 ns/op 474.00 ns/op 0.85
fastMsgIdFn sha256 / 10000 bytes 102.03 us/op 116.41 us/op 0.88
fastMsgIdFn h32 xxhash / 10000 bytes 1.8560 us/op 2.0620 us/op 0.90
fastMsgIdFn h64 xxhash / 10000 bytes 1.2760 us/op 1.4210 us/op 0.90
enrSubnets - fastDeserialize 64 bits 1.1720 us/op 1.4060 us/op 0.83
enrSubnets - ssz BitVector 64 bits 406.00 ns/op 523.00 ns/op 0.78
enrSubnets - fastDeserialize 4 bits 158.00 ns/op 226.00 ns/op 0.70
enrSubnets - ssz BitVector 4 bits 403.00 ns/op 548.00 ns/op 0.74
prioritizePeers score -10:0 att 32-0.1 sync 2-0 97.027 us/op 125.78 us/op 0.77
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 125.34 us/op 145.23 us/op 0.86
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 154.65 us/op 180.90 us/op 0.85
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 271.10 us/op 320.06 us/op 0.85
prioritizePeers score 0:0 att 64-1 sync 4-1 319.99 us/op 345.72 us/op 0.93
array of 16000 items push then shift 1.5606 us/op 1.7326 us/op 0.90
LinkedList of 16000 items push then shift 8.6860 ns/op 9.5220 ns/op 0.91
array of 16000 items push then pop 54.919 ns/op 55.436 ns/op 0.99
LinkedList of 16000 items push then pop 8.5180 ns/op 9.0850 ns/op 0.94
array of 24000 items push then shift 2.3376 us/op 2.4842 us/op 0.94
LinkedList of 24000 items push then shift 9.5180 ns/op 9.2760 ns/op 1.03
array of 24000 items push then pop 100.56 ns/op 119.45 ns/op 0.84
LinkedList of 24000 items push then pop 8.5540 ns/op 9.8420 ns/op 0.87
intersect bitArray bitLen 8 6.6880 ns/op 7.3480 ns/op 0.91
intersect array and set length 8 53.476 ns/op 58.137 ns/op 0.92
intersect bitArray bitLen 128 31.111 ns/op 34.105 ns/op 0.91
intersect array and set length 128 730.87 ns/op 817.08 ns/op 0.89
bitArray.getTrueBitIndexes() bitLen 128 1.4220 us/op 1.6880 us/op 0.84
bitArray.getTrueBitIndexes() bitLen 248 2.3000 us/op 2.9360 us/op 0.78
bitArray.getTrueBitIndexes() bitLen 512 4.4330 us/op 5.2220 us/op 0.85
Buffer.concat 32 items 934.00 ns/op 1.0550 us/op 0.89
Uint8Array.set 32 items 2.1520 us/op 2.3620 us/op 0.91
transfer serialized Status (84 B) 1.8930 us/op 2.0170 us/op 0.94
copy serialized Status (84 B) 1.5630 us/op 1.6990 us/op 0.92
transfer serialized SignedVoluntaryExit (112 B) 1.9780 us/op 2.1240 us/op 0.93
copy serialized SignedVoluntaryExit (112 B) 1.6220 us/op 1.7730 us/op 0.91
transfer serialized ProposerSlashing (416 B) 3.2030 us/op 2.8840 us/op 1.11
copy serialized ProposerSlashing (416 B) 2.2290 us/op 2.3350 us/op 0.95
transfer serialized Attestation (485 B) 2.0980 us/op 2.6520 us/op 0.79
copy serialized Attestation (485 B) 2.0450 us/op 2.3020 us/op 0.89
transfer serialized AttesterSlashing (33232 B) 2.6850 us/op 2.2220 us/op 1.21
copy serialized AttesterSlashing (33232 B) 10.178 us/op 6.2140 us/op 1.64
transfer serialized Small SignedBeaconBlock (128000 B) 2.5120 us/op 3.0890 us/op 0.81
copy serialized Small SignedBeaconBlock (128000 B) 14.617 us/op 15.469 us/op 0.94
transfer serialized Avg SignedBeaconBlock (200000 B) 2.7160 us/op 3.4550 us/op 0.79
copy serialized Avg SignedBeaconBlock (200000 B) 17.450 us/op 21.849 us/op 0.80
transfer serialized BlobsSidecar (524380 B) 2.6760 us/op 3.7400 us/op 0.72
copy serialized BlobsSidecar (524380 B) 79.020 us/op 93.255 us/op 0.85
transfer serialized Big SignedBeaconBlock (1000000 B) 2.7620 us/op 3.4160 us/op 0.81
copy serialized Big SignedBeaconBlock (1000000 B) 155.55 us/op 159.38 us/op 0.98
pass gossip attestations to forkchoice per slot 2.1181 ms/op 2.3922 ms/op 0.89
forkChoice updateHead vc 100000 bc 64 eq 0 2.0263 ms/op 2.4560 ms/op 0.83
forkChoice updateHead vc 600000 bc 64 eq 0 11.480 ms/op 15.842 ms/op 0.72
forkChoice updateHead vc 1000000 bc 64 eq 0 21.753 ms/op 25.472 ms/op 0.85
forkChoice updateHead vc 600000 bc 320 eq 0 15.858 ms/op 18.697 ms/op 0.85
forkChoice updateHead vc 600000 bc 1200 eq 0 78.598 ms/op 93.411 ms/op 0.84
forkChoice updateHead vc 600000 bc 64 eq 1000 21.067 ms/op 24.416 ms/op 0.86
forkChoice updateHead vc 600000 bc 64 eq 10000 23.049 ms/op 27.244 ms/op 0.85
forkChoice updateHead vc 600000 bc 64 eq 300000 27.590 ms/op 32.368 ms/op 0.85
computeDeltas 4.8745 ms/op 3.7937 ms/op 1.28
computeProposerBoostScoreFromBalances 378.70 us/op 427.61 us/op 0.89
altair processAttestation - 250000 vs - 7PWei normalcase 2.2437 ms/op 3.3307 ms/op 0.67
altair processAttestation - 250000 vs - 7PWei worstcase 3.6026 ms/op 4.4090 ms/op 0.82
altair processAttestation - setStatus - 1/6 committees join 177.99 us/op 203.68 us/op 0.87
altair processAttestation - setStatus - 1/3 committees join 340.75 us/op 395.56 us/op 0.86
altair processAttestation - setStatus - 1/2 committees join 465.97 us/op 559.00 us/op 0.83
altair processAttestation - setStatus - 2/3 committees join 589.26 us/op 686.75 us/op 0.86
altair processAttestation - setStatus - 4/5 committees join 823.84 us/op 956.95 us/op 0.86
altair processAttestation - setStatus - 100% committees join 933.75 us/op 1.0799 ms/op 0.86
altair processBlock - 250000 vs - 7PWei normalcase 9.7144 ms/op 10.532 ms/op 0.92
altair processBlock - 250000 vs - 7PWei normalcase hashState 17.886 ms/op 20.046 ms/op 0.89
altair processBlock - 250000 vs - 7PWei worstcase 39.314 ms/op 43.850 ms/op 0.90
altair processBlock - 250000 vs - 7PWei worstcase hashState 58.869 ms/op 70.169 ms/op 0.84
phase0 processBlock - 250000 vs - 7PWei normalcase 2.9092 ms/op 3.1026 ms/op 0.94
phase0 processBlock - 250000 vs - 7PWei worstcase 30.054 ms/op 40.645 ms/op 0.74
altair processEth1Data - 250000 vs - 7PWei normalcase 484.36 us/op 632.28 us/op 0.77
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 11.555 us/op 11.924 us/op 0.97
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 64.261 us/op 84.536 us/op 0.76
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 19.622 us/op 25.017 us/op 0.78
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 19.355 us/op 16.614 us/op 1.16
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 253.21 us/op 189.84 us/op 1.33
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.7836 ms/op 1.6206 ms/op 1.10
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.9402 ms/op 2.0813 ms/op 1.41
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.1947 ms/op 2.1321 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.1041 ms/op 4.7730 ms/op 0.86
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.3386 ms/op 2.8890 ms/op 0.81
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.3799 ms/op 6.4152 ms/op 0.84
Tree 40 250000 create 333.15 ms/op 407.88 ms/op 0.82
Tree 40 250000 get(125000) 206.73 ns/op 249.94 ns/op 0.83
Tree 40 250000 set(125000) 988.92 ns/op 1.0013 us/op 0.99
Tree 40 250000 toArray() 18.795 ms/op 20.553 ms/op 0.91
Tree 40 250000 iterate all - toArray() + loop 19.845 ms/op 20.789 ms/op 0.95
Tree 40 250000 iterate all - get(i) 70.869 ms/op 76.967 ms/op 0.92
MutableVector 250000 create 17.179 ms/op 12.541 ms/op 1.37
MutableVector 250000 get(125000) 7.0330 ns/op 8.2900 ns/op 0.85
MutableVector 250000 set(125000) 252.11 ns/op 328.37 ns/op 0.77
MutableVector 250000 toArray() 3.4036 ms/op 4.0406 ms/op 0.84
MutableVector 250000 iterate all - toArray() + loop 3.1754 ms/op 4.0064 ms/op 0.79
MutableVector 250000 iterate all - get(i) 1.5405 ms/op 1.7958 ms/op 0.86
Array 250000 create 2.5983 ms/op 4.0175 ms/op 0.65
Array 250000 clone - spread 1.0317 ms/op 1.0582 ms/op 0.97
Array 250000 get(125000) 0.52700 ns/op 0.56500 ns/op 0.93
Array 250000 set(125000) 0.60000 ns/op 0.66000 ns/op 0.91
Array 250000 iterate all - loop 83.878 us/op 98.065 us/op 0.86
effectiveBalanceIncrements clone Uint8Array 300000 22.320 us/op 29.595 us/op 0.75
effectiveBalanceIncrements clone MutableVector 300000 308.00 ns/op 315.00 ns/op 0.98
effectiveBalanceIncrements rw all Uint8Array 300000 177.12 us/op 208.31 us/op 0.85
effectiveBalanceIncrements rw all MutableVector 300000 77.349 ms/op 89.142 ms/op 0.87
phase0 afterProcessEpoch - 250000 vs - 7PWei 111.86 ms/op 131.38 ms/op 0.85
phase0 beforeProcessEpoch - 250000 vs - 7PWei 42.019 ms/op 42.775 ms/op 0.98
altair processEpoch - mainnet_e81889 340.92 ms/op 385.59 ms/op 0.88
mainnet_e81889 - altair beforeProcessEpoch 63.479 ms/op 62.543 ms/op 1.01
mainnet_e81889 - altair processJustificationAndFinalization 23.805 us/op 24.269 us/op 0.98
mainnet_e81889 - altair processInactivityUpdates 5.2689 ms/op 5.2399 ms/op 1.01
mainnet_e81889 - altair processRewardsAndPenalties 81.841 ms/op 79.698 ms/op 1.03
mainnet_e81889 - altair processRegistryUpdates 3.5910 us/op 3.5930 us/op 1.00
mainnet_e81889 - altair processSlashings 570.00 ns/op 738.00 ns/op 0.77
mainnet_e81889 - altair processEth1DataReset 604.00 ns/op 854.00 ns/op 0.71
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.9463 ms/op 2.3821 ms/op 0.82
mainnet_e81889 - altair processSlashingsReset 3.4990 us/op 4.7700 us/op 0.73
mainnet_e81889 - altair processRandaoMixesReset 5.0200 us/op 6.4590 us/op 0.78
mainnet_e81889 - altair processHistoricalRootsUpdate 2.0280 us/op 1.2420 us/op 1.63
mainnet_e81889 - altair processParticipationFlagUpdates 2.2640 us/op 3.2070 us/op 0.71
mainnet_e81889 - altair processSyncCommitteeUpdates 1.0430 us/op 986.00 ns/op 1.06
mainnet_e81889 - altair afterProcessEpoch 129.78 ms/op 134.17 ms/op 0.97
phase0 processEpoch - mainnet_e58758 416.41 ms/op 424.00 ms/op 0.98
mainnet_e58758 - phase0 beforeProcessEpoch 160.37 ms/op 158.14 ms/op 1.01
mainnet_e58758 - phase0 processJustificationAndFinalization 21.928 us/op 26.414 us/op 0.83
mainnet_e58758 - phase0 processRewardsAndPenalties 79.666 ms/op 78.799 ms/op 1.01
mainnet_e58758 - phase0 processRegistryUpdates 14.879 us/op 15.780 us/op 0.94
mainnet_e58758 - phase0 processSlashings 691.00 ns/op 894.00 ns/op 0.77
mainnet_e58758 - phase0 processEth1DataReset 588.00 ns/op 643.00 ns/op 0.91
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.0753 ms/op 2.0091 ms/op 1.03
mainnet_e58758 - phase0 processSlashingsReset 2.6260 us/op 3.0880 us/op 0.85
mainnet_e58758 - phase0 processRandaoMixesReset 4.3720 us/op 5.3960 us/op 0.81
mainnet_e58758 - phase0 processHistoricalRootsUpdate 789.00 ns/op 781.00 ns/op 1.01
mainnet_e58758 - phase0 processParticipationRecordUpdates 4.5320 us/op 4.8530 us/op 0.93
mainnet_e58758 - phase0 afterProcessEpoch 98.692 ms/op 103.52 ms/op 0.95
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.2897 ms/op 2.3554 ms/op 0.55
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6906 ms/op 2.0451 ms/op 0.83
altair processInactivityUpdates - 250000 normalcase 32.820 ms/op 33.210 ms/op 0.99
altair processInactivityUpdates - 250000 worstcase 32.361 ms/op 30.564 ms/op 1.06
phase0 processRegistryUpdates - 250000 normalcase 11.011 us/op 11.833 us/op 0.93
phase0 processRegistryUpdates - 250000 badcase_full_deposits 441.50 us/op 584.71 us/op 0.76
phase0 processRegistryUpdates - 250000 worstcase 0.5 129.33 ms/op 141.39 ms/op 0.91
altair processRewardsAndPenalties - 250000 normalcase 82.422 ms/op 84.119 ms/op 0.98
altair processRewardsAndPenalties - 250000 worstcase 86.309 ms/op 79.759 ms/op 1.08
phase0 getAttestationDeltas - 250000 normalcase 9.6572 ms/op 8.1395 ms/op 1.19
phase0 getAttestationDeltas - 250000 worstcase 10.243 ms/op 8.0776 ms/op 1.27
phase0 processSlashings - 250000 worstcase 2.5022 ms/op 2.4085 ms/op 1.04
altair processSyncCommitteeUpdates - 250000 160.91 ms/op 164.83 ms/op 0.98
BeaconState.hashTreeRoot - No change 292.00 ns/op 283.00 ns/op 1.03
BeaconState.hashTreeRoot - 1 full validator 57.280 us/op 63.106 us/op 0.91
BeaconState.hashTreeRoot - 32 full validator 541.07 us/op 581.63 us/op 0.93
BeaconState.hashTreeRoot - 512 full validator 6.2607 ms/op 6.3935 ms/op 0.98
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 69.589 us/op 77.025 us/op 0.90
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.0031 ms/op 891.60 us/op 1.13
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 13.086 ms/op 13.464 ms/op 0.97
BeaconState.hashTreeRoot - 1 balances 60.465 us/op 52.288 us/op 1.16
BeaconState.hashTreeRoot - 32 balances 532.92 us/op 553.18 us/op 0.96
BeaconState.hashTreeRoot - 512 balances 4.8295 ms/op 4.8689 ms/op 0.99
BeaconState.hashTreeRoot - 250000 balances 81.747 ms/op 83.959 ms/op 0.97
aggregationBits - 2048 els - zipIndexesInBitList 17.876 us/op 15.257 us/op 1.17
regular array get 100000 times 42.700 us/op 46.768 us/op 0.91
wrappedArray get 100000 times 33.903 us/op 34.940 us/op 0.97
arrayWithProxy get 100000 times 16.123 ms/op 15.738 ms/op 1.02
ssz.Root.equals 248.00 ns/op 223.00 ns/op 1.11
byteArrayEquals 234.00 ns/op 216.00 ns/op 1.08
shuffle list - 16384 els 6.8561 ms/op 7.2778 ms/op 0.94
shuffle list - 250000 els 101.35 ms/op 106.97 ms/op 0.95
processSlot - 1 slots 10.435 us/op 9.8760 us/op 1.06
processSlot - 32 slots 1.4336 ms/op 1.4798 ms/op 0.97
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 58.097 ms/op 59.876 ms/op 0.97
getCommitteeAssignments - req 1 vs - 250000 vc 2.5798 ms/op 2.7489 ms/op 0.94
getCommitteeAssignments - req 100 vs - 250000 vc 3.7771 ms/op 3.9612 ms/op 0.95
getCommitteeAssignments - req 1000 vs - 250000 vc 4.1117 ms/op 4.3762 ms/op 0.94
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.8300 ns/op 5.0500 ns/op 0.96
state getBlockRootAtSlot - 250000 vs - 7PWei 677.08 ns/op 659.18 ns/op 1.03
computeProposers - vc 250000 9.4204 ms/op 9.6474 ms/op 0.98
computeEpochShuffling - vc 250000 100.94 ms/op 107.98 ms/op 0.93
getNextSyncCommittee - vc 250000 145.60 ms/op 153.08 ms/op 0.95
computeSigningRoot for AttestationData 12.932 us/op 13.899 us/op 0.93
hash AttestationData serialized data then Buffer.toString(base64) 2.3195 us/op 2.4762 us/op 0.94
toHexString serialized data 1.0666 us/op 1.1383 us/op 0.94
Buffer.toString(base64) 214.70 ns/op 231.49 ns/op 0.93

by benchmarkbot/action

@twoeths
Copy link
Contributor Author

twoeths commented Jul 25, 2023

was able to request proposer duties for next epoch consistently on goerli

Screenshot 2023-07-25 at 12 39 28

@twoeths twoeths marked this pull request as ready for review July 25, 2023 05:40
@twoeths twoeths requested a review from a team as a code owner July 25, 2023 05:40
@philknows philknows modified the milestones: v1.9.3, v1.10.0 Jul 25, 2023
@wemeetagain wemeetagain merged commit 26fd079 into unstable Jul 26, 2023
11 checks passed
@wemeetagain wemeetagain deleted the tuyen/poll_proposer_duties_next_epoch_in_advance branch July 26, 2023 03:49
@wemeetagain
Copy link
Member

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

Poll block proposer duties before an epoch starts
3 participants