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: handle only downloaded blocks in unknown block sync #5656

Merged
merged 3 commits into from
Jun 16, 2023

Conversation

twoeths
Copy link
Contributor

@twoeths twoeths commented Jun 16, 2023

Motivation

  • In unknown block sync, there could be unknown blocks and downloaded blocks.
  • Normally there is 1 unknown block following by some downloaded blocks, and it worked fine in all goerli nodes
  • The issue happened in [v1.9.0-rc.2] Node is not able to keep synced #5649 (comment) that there are only downloaded blocks due to pruneSetToMax(), no block to download and the sync get stuck

Description

  • Modify the type of PendingBlock to be either UnknownBlock or DownloadedBlock
  • refactor getUnknownBlocks to be getUnknownAndAncestorBlocks
  • when there is no unknown block, process the ancestor downloaded block. It's likely there is head sync when we have up to 100 (MAX_PENDING_BLOCKS) blocks at that time so that the sync is not stuck

Closes #5649

@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: cf968a5 Previous: 2eddf46 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 529.55 us/op 850.54 us/op 0.62
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 47.152 us/op 44.354 us/op 1.06
BLS verify - blst-native 1.2249 ms/op 1.1745 ms/op 1.04
BLS verifyMultipleSignatures 3 - blst-native 2.4920 ms/op 2.3857 ms/op 1.04
BLS verifyMultipleSignatures 8 - blst-native 5.3595 ms/op 5.1394 ms/op 1.04
BLS verifyMultipleSignatures 32 - blst-native 19.397 ms/op 19.456 ms/op 1.00
BLS aggregatePubkeys 32 - blst-native 25.794 us/op 25.369 us/op 1.02
BLS aggregatePubkeys 128 - blst-native 101.42 us/op 99.430 us/op 1.02
getAttestationsForBlock 58.158 ms/op 66.760 ms/op 0.87
isKnown best case - 1 super set check 270.00 ns/op 262.00 ns/op 1.03
isKnown normal case - 2 super set checks 264.00 ns/op 260.00 ns/op 1.02
isKnown worse case - 16 super set checks 263.00 ns/op 260.00 ns/op 1.01
CheckpointStateCache - add get delete 5.5390 us/op 4.8280 us/op 1.15
validate gossip signedAggregateAndProof - struct 2.9690 ms/op 2.6676 ms/op 1.11
validate gossip attestation - struct 1.3487 ms/op 1.2732 ms/op 1.06
pickEth1Vote - no votes 1.3924 ms/op 1.2691 ms/op 1.10
pickEth1Vote - max votes 11.220 ms/op 12.759 ms/op 0.88
pickEth1Vote - Eth1Data hashTreeRoot value x2048 9.5819 ms/op 9.2379 ms/op 1.04
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 16.894 ms/op 17.465 ms/op 0.97
pickEth1Vote - Eth1Data fastSerialize value x2048 675.09 us/op 639.20 us/op 1.06
pickEth1Vote - Eth1Data fastSerialize tree x2048 8.6247 ms/op 8.8463 ms/op 0.97
bytes32 toHexString 515.00 ns/op 479.00 ns/op 1.08
bytes32 Buffer.toString(hex) 379.00 ns/op 348.00 ns/op 1.09
bytes32 Buffer.toString(hex) from Uint8Array 575.00 ns/op 561.00 ns/op 1.02
bytes32 Buffer.toString(hex) + 0x 354.00 ns/op 354.00 ns/op 1.00
Object access 1 prop 0.16200 ns/op 0.17000 ns/op 0.95
Map access 1 prop 0.15800 ns/op 0.16100 ns/op 0.98
Object get x1000 7.2580 ns/op 7.5530 ns/op 0.96
Map get x1000 0.58100 ns/op 0.60200 ns/op 0.97
Object set x1000 53.408 ns/op 53.201 ns/op 1.00
Map set x1000 44.069 ns/op 42.969 ns/op 1.03
Return object 10000 times 0.23840 ns/op 0.24100 ns/op 0.99
Throw Error 10000 times 4.2592 us/op 4.3022 us/op 0.99
fastMsgIdFn sha256 / 200 bytes 3.6010 us/op 3.4630 us/op 1.04
fastMsgIdFn h32 xxhash / 200 bytes 306.00 ns/op 301.00 ns/op 1.02
fastMsgIdFn h64 xxhash / 200 bytes 468.00 ns/op 420.00 ns/op 1.11
fastMsgIdFn sha256 / 1000 bytes 11.979 us/op 11.604 us/op 1.03
fastMsgIdFn h32 xxhash / 1000 bytes 433.00 ns/op 425.00 ns/op 1.02
fastMsgIdFn h64 xxhash / 1000 bytes 489.00 ns/op 481.00 ns/op 1.02
fastMsgIdFn sha256 / 10000 bytes 105.71 us/op 104.15 us/op 1.01
fastMsgIdFn h32 xxhash / 10000 bytes 1.9900 us/op 1.9120 us/op 1.04
fastMsgIdFn h64 xxhash / 10000 bytes 1.4230 us/op 1.3530 us/op 1.05
enrSubnets - fastDeserialize 64 bits 1.3290 us/op 1.3380 us/op 0.99
enrSubnets - ssz BitVector 64 bits 496.00 ns/op 495.00 ns/op 1.00
enrSubnets - fastDeserialize 4 bits 173.00 ns/op 178.00 ns/op 0.97
enrSubnets - ssz BitVector 4 bits 500.00 ns/op 499.00 ns/op 1.00
prioritizePeers score -10:0 att 32-0.1 sync 2-0 107.85 us/op 109.11 us/op 0.99
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 136.78 us/op 130.15 us/op 1.05
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 172.71 us/op 164.83 us/op 1.05
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 337.05 us/op 295.94 us/op 1.14
prioritizePeers score 0:0 att 64-1 sync 4-1 376.04 us/op 354.25 us/op 1.06
array of 16000 items push then shift 1.6778 us/op 1.6110 us/op 1.04
LinkedList of 16000 items push then shift 8.9420 ns/op 8.7890 ns/op 1.02
array of 16000 items push then pop 110.31 ns/op 78.875 ns/op 1.40
LinkedList of 16000 items push then pop 8.6130 ns/op 8.5310 ns/op 1.01
array of 24000 items push then shift 2.3739 us/op 2.3450 us/op 1.01
LinkedList of 24000 items push then shift 8.8420 ns/op 10.293 ns/op 0.86
array of 24000 items push then pop 84.222 ns/op 75.984 ns/op 1.11
LinkedList of 24000 items push then pop 9.0100 ns/op 8.6690 ns/op 1.04
intersect bitArray bitLen 8 13.947 ns/op 13.226 ns/op 1.05
intersect array and set length 8 79.099 ns/op 74.355 ns/op 1.06
intersect bitArray bitLen 128 45.126 ns/op 43.679 ns/op 1.03
intersect array and set length 128 1.0797 us/op 1.0252 us/op 1.05
Buffer.concat 32 items 3.3040 us/op 2.6640 us/op 1.24
Uint8Array.set 32 items 2.7490 us/op 2.6810 us/op 1.03
transfer serialized Status (84 B) 2.2270 us/op 2.1480 us/op 1.04
copy serialized Status (84 B) 1.9270 us/op 1.7690 us/op 1.09
transfer serialized SignedVoluntaryExit (112 B) 2.3480 us/op 2.1590 us/op 1.09
copy serialized SignedVoluntaryExit (112 B) 1.9490 us/op 1.8140 us/op 1.07
transfer serialized ProposerSlashing (416 B) 2.9450 us/op 2.8620 us/op 1.03
copy serialized ProposerSlashing (416 B) 2.6240 us/op 3.2370 us/op 0.81
transfer serialized Attestation (485 B) 2.7180 us/op 2.8660 us/op 0.95
copy serialized Attestation (485 B) 3.0890 us/op 3.4490 us/op 0.90
transfer serialized AttesterSlashing (33232 B) 3.3310 us/op 3.0920 us/op 1.08
copy serialized AttesterSlashing (33232 B) 6.7330 us/op 6.2370 us/op 1.08
transfer serialized Small SignedBeaconBlock (128000 B) 3.5060 us/op 2.9760 us/op 1.18
copy serialized Small SignedBeaconBlock (128000 B) 15.767 us/op 18.031 us/op 0.87
transfer serialized Avg SignedBeaconBlock (200000 B) 3.7660 us/op 3.2790 us/op 1.15
copy serialized Avg SignedBeaconBlock (200000 B) 20.872 us/op 22.796 us/op 0.92
transfer serialized BlobsSidecar (524380 B) 3.8920 us/op 3.1480 us/op 1.24
copy serialized BlobsSidecar (524380 B) 177.17 us/op 151.59 us/op 1.17
transfer serialized Big SignedBeaconBlock (1000000 B) 3.5490 us/op 3.0010 us/op 1.18
copy serialized Big SignedBeaconBlock (1000000 B) 327.55 us/op 220.20 us/op 1.49
pass gossip attestations to forkchoice per slot 2.7019 ms/op 2.6524 ms/op 1.02
forkChoice updateHead vc 100000 bc 64 eq 0 2.1332 ms/op 2.0956 ms/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 0 12.094 ms/op 12.859 ms/op 0.94
forkChoice updateHead vc 1000000 bc 64 eq 0 22.896 ms/op 18.653 ms/op 1.23
forkChoice updateHead vc 600000 bc 320 eq 0 17.125 ms/op 16.455 ms/op 1.04
forkChoice updateHead vc 600000 bc 1200 eq 0 83.516 ms/op 79.487 ms/op 1.05
forkChoice updateHead vc 600000 bc 64 eq 1000 21.090 ms/op 20.396 ms/op 1.03
forkChoice updateHead vc 600000 bc 64 eq 10000 23.340 ms/op 22.379 ms/op 1.04
forkChoice updateHead vc 600000 bc 64 eq 300000 32.436 ms/op 30.693 ms/op 1.06
computeDeltas 3.3445 ms/op 4.5179 ms/op 0.74
computeProposerBoostScoreFromBalances 1.7412 ms/op 1.7644 ms/op 0.99
altair processAttestation - 250000 vs - 7PWei normalcase 2.0797 ms/op 2.2429 ms/op 0.93
altair processAttestation - 250000 vs - 7PWei worstcase 3.7489 ms/op 3.5202 ms/op 1.06
altair processAttestation - setStatus - 1/6 committees join 141.05 us/op 133.31 us/op 1.06
altair processAttestation - setStatus - 1/3 committees join 266.36 us/op 257.71 us/op 1.03
altair processAttestation - setStatus - 1/2 committees join 373.29 us/op 356.38 us/op 1.05
altair processAttestation - setStatus - 2/3 committees join 483.85 us/op 455.59 us/op 1.06
altair processAttestation - setStatus - 4/5 committees join 664.65 us/op 609.70 us/op 1.09
altair processAttestation - setStatus - 100% committees join 792.69 us/op 716.60 us/op 1.11
altair processBlock - 250000 vs - 7PWei normalcase 16.531 ms/op 20.610 ms/op 0.80
altair processBlock - 250000 vs - 7PWei normalcase hashState 26.706 ms/op 27.832 ms/op 0.96
altair processBlock - 250000 vs - 7PWei worstcase 47.620 ms/op 66.577 ms/op 0.72
altair processBlock - 250000 vs - 7PWei worstcase hashState 76.055 ms/op 71.417 ms/op 1.06
phase0 processBlock - 250000 vs - 7PWei normalcase 1.9244 ms/op 1.9438 ms/op 0.99
phase0 processBlock - 250000 vs - 7PWei worstcase 28.818 ms/op 28.240 ms/op 1.02
altair processEth1Data - 250000 vs - 7PWei normalcase 557.54 us/op 478.08 us/op 1.17
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 9.8480 us/op 6.6010 us/op 1.49
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 26.114 us/op 31.689 us/op 0.82
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 12.238 us/op 13.734 us/op 0.89
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 12.168 us/op 10.245 us/op 1.19
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 99.952 us/op 74.279 us/op 1.35
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 673.54 us/op 1.2042 ms/op 0.56
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 926.30 us/op 1.6584 ms/op 0.56
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 917.57 us/op 1.6265 ms/op 0.56
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.3914 ms/op 2.2506 ms/op 1.06
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.6856 ms/op 2.3202 ms/op 0.73
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.3353 ms/op 3.7477 ms/op 1.16
Tree 40 250000 create 413.42 ms/op 296.73 ms/op 1.39
Tree 40 250000 get(125000) 216.63 ns/op 178.74 ns/op 1.21
Tree 40 250000 set(125000) 1.0983 us/op 929.40 ns/op 1.18
Tree 40 250000 toArray() 23.562 ms/op 17.313 ms/op 1.36
Tree 40 250000 iterate all - toArray() + loop 23.177 ms/op 17.148 ms/op 1.35
Tree 40 250000 iterate all - get(i) 78.964 ms/op 67.446 ms/op 1.17
MutableVector 250000 create 11.676 ms/op 14.911 ms/op 0.78
MutableVector 250000 get(125000) 7.0370 ns/op 6.2780 ns/op 1.12
MutableVector 250000 set(125000) 353.70 ns/op 245.64 ns/op 1.44
MutableVector 250000 toArray() 4.0870 ms/op 2.7455 ms/op 1.49
MutableVector 250000 iterate all - toArray() + loop 4.1604 ms/op 2.8332 ms/op 1.47
MutableVector 250000 iterate all - get(i) 1.6685 ms/op 1.4634 ms/op 1.14
Array 250000 create 3.8807 ms/op 2.5919 ms/op 1.50
Array 250000 clone - spread 1.3816 ms/op 1.2637 ms/op 1.09
Array 250000 get(125000) 0.69700 ns/op 0.60500 ns/op 1.15
Array 250000 set(125000) 0.74000 ns/op 0.67700 ns/op 1.09
Array 250000 iterate all - loop 111.56 us/op 86.509 us/op 1.29
effectiveBalanceIncrements clone Uint8Array 300000 54.626 us/op 28.915 us/op 1.89
effectiveBalanceIncrements clone MutableVector 300000 439.00 ns/op 405.00 ns/op 1.08
effectiveBalanceIncrements rw all Uint8Array 300000 171.16 us/op 166.50 us/op 1.03
effectiveBalanceIncrements rw all MutableVector 300000 102.60 ms/op 80.884 ms/op 1.27
phase0 afterProcessEpoch - 250000 vs - 7PWei 121.92 ms/op 119.35 ms/op 1.02
phase0 beforeProcessEpoch - 250000 vs - 7PWei 38.965 ms/op 45.406 ms/op 0.86
altair processEpoch - mainnet_e81889 375.76 ms/op 374.59 ms/op 1.00
mainnet_e81889 - altair beforeProcessEpoch 78.444 ms/op 69.405 ms/op 1.13
mainnet_e81889 - altair processJustificationAndFinalization 27.412 us/op 27.746 us/op 0.99
mainnet_e81889 - altair processInactivityUpdates 7.9464 ms/op 5.9252 ms/op 1.34
mainnet_e81889 - altair processRewardsAndPenalties 76.675 ms/op 88.229 ms/op 0.87
mainnet_e81889 - altair processRegistryUpdates 4.4020 us/op 4.4850 us/op 0.98
mainnet_e81889 - altair processSlashings 916.00 ns/op 774.00 ns/op 1.18
mainnet_e81889 - altair processEth1DataReset 765.00 ns/op 891.00 ns/op 0.86
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.4166 ms/op 2.2880 ms/op 0.62
mainnet_e81889 - altair processSlashingsReset 7.0930 us/op 6.5150 us/op 1.09
mainnet_e81889 - altair processRandaoMixesReset 8.8180 us/op 9.9470 us/op 0.89
mainnet_e81889 - altair processHistoricalRootsUpdate 1.4080 us/op 1.3150 us/op 1.07
mainnet_e81889 - altair processParticipationFlagUpdates 4.3770 us/op 3.2260 us/op 1.36
mainnet_e81889 - altair processSyncCommitteeUpdates 1.1720 us/op 1.0330 us/op 1.13
mainnet_e81889 - altair afterProcessEpoch 146.09 ms/op 127.62 ms/op 1.14
phase0 processEpoch - mainnet_e58758 527.96 ms/op 413.76 ms/op 1.28
mainnet_e58758 - phase0 beforeProcessEpoch 188.00 ms/op 170.69 ms/op 1.10
mainnet_e58758 - phase0 processJustificationAndFinalization 31.913 us/op 26.962 us/op 1.18
mainnet_e58758 - phase0 processRewardsAndPenalties 98.639 ms/op 78.479 ms/op 1.26
mainnet_e58758 - phase0 processRegistryUpdates 22.225 us/op 7.8550 us/op 2.83
mainnet_e58758 - phase0 processSlashings 1.6280 us/op 812.00 ns/op 2.00
mainnet_e58758 - phase0 processEth1DataReset 1.7980 us/op 940.00 ns/op 1.91
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 4.3021 ms/op 1.8909 ms/op 2.28
mainnet_e58758 - phase0 processSlashingsReset 5.4610 us/op 6.5680 us/op 0.83
mainnet_e58758 - phase0 processRandaoMixesReset 7.1770 us/op 7.4240 us/op 0.97
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.2650 us/op 1.2150 us/op 1.04
mainnet_e58758 - phase0 processParticipationRecordUpdates 7.4020 us/op 6.6750 us/op 1.11
mainnet_e58758 - phase0 afterProcessEpoch 105.59 ms/op 95.219 ms/op 1.11
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.5368 ms/op 2.2778 ms/op 0.67
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.1555 ms/op 2.9434 ms/op 0.73
altair processInactivityUpdates - 250000 normalcase 35.513 ms/op 30.639 ms/op 1.16
altair processInactivityUpdates - 250000 worstcase 34.246 ms/op 30.801 ms/op 1.11
phase0 processRegistryUpdates - 250000 normalcase 19.254 us/op 10.940 us/op 1.76
phase0 processRegistryUpdates - 250000 badcase_full_deposits 282.48 us/op 462.60 us/op 0.61
phase0 processRegistryUpdates - 250000 worstcase 0.5 167.71 ms/op 149.05 ms/op 1.13
altair processRewardsAndPenalties - 250000 normalcase 75.684 ms/op 75.059 ms/op 1.01
altair processRewardsAndPenalties - 250000 worstcase 80.735 ms/op 70.135 ms/op 1.15
phase0 getAttestationDeltas - 250000 normalcase 9.6074 ms/op 6.6639 ms/op 1.44
phase0 getAttestationDeltas - 250000 worstcase 7.5583 ms/op 6.5682 ms/op 1.15
phase0 processSlashings - 250000 worstcase 3.8633 ms/op 3.4575 ms/op 1.12
altair processSyncCommitteeUpdates - 250000 195.55 ms/op 184.82 ms/op 1.06
BeaconState.hashTreeRoot - No change 365.00 ns/op 266.00 ns/op 1.37
BeaconState.hashTreeRoot - 1 full validator 56.336 us/op 68.143 us/op 0.83
BeaconState.hashTreeRoot - 32 full validator 552.19 us/op 620.50 us/op 0.89
BeaconState.hashTreeRoot - 512 full validator 5.8355 ms/op 6.5059 ms/op 0.90
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 67.823 us/op 64.573 us/op 1.05
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 950.73 us/op 1.1888 ms/op 0.80
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 14.315 ms/op 12.051 ms/op 1.19
BeaconState.hashTreeRoot - 1 balances 52.212 us/op 57.647 us/op 0.91
BeaconState.hashTreeRoot - 32 balances 514.37 us/op 439.86 us/op 1.17
BeaconState.hashTreeRoot - 512 balances 4.8880 ms/op 4.7199 ms/op 1.04
BeaconState.hashTreeRoot - 250000 balances 78.320 ms/op 80.426 ms/op 0.97
aggregationBits - 2048 els - zipIndexesInBitList 25.153 us/op 15.443 us/op 1.63
regular array get 100000 times 46.218 us/op 32.593 us/op 1.42
wrappedArray get 100000 times 38.371 us/op 32.777 us/op 1.17
arrayWithProxy get 100000 times 17.290 ms/op 15.388 ms/op 1.12
ssz.Root.equals 659.00 ns/op 540.00 ns/op 1.22
byteArrayEquals 639.00 ns/op 534.00 ns/op 1.20
shuffle list - 16384 els 8.0668 ms/op 6.8728 ms/op 1.17
shuffle list - 250000 els 114.70 ms/op 100.68 ms/op 1.14
processSlot - 1 slots 10.587 us/op 9.4040 us/op 1.13
processSlot - 32 slots 1.5137 ms/op 1.2545 ms/op 1.21
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 43.485 ms/op 40.121 ms/op 1.08
getCommitteeAssignments - req 1 vs - 250000 vc 3.7052 ms/op 2.8930 ms/op 1.28
getCommitteeAssignments - req 100 vs - 250000 vc 4.9378 ms/op 4.1144 ms/op 1.20
getCommitteeAssignments - req 1000 vs - 250000 vc 4.9472 ms/op 4.6054 ms/op 1.07
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 6.1300 ns/op 4.5800 ns/op 1.34
state getBlockRootAtSlot - 250000 vs - 7PWei 917.56 ns/op 610.74 ns/op 1.50
computeProposers - vc 250000 12.945 ms/op 10.399 ms/op 1.24
computeEpochShuffling - vc 250000 123.90 ms/op 102.87 ms/op 1.20
getNextSyncCommittee - vc 250000 206.16 ms/op 170.13 ms/op 1.21
computeSigningRoot for AttestationData 19.155 us/op 13.101 us/op 1.46
hash AttestationData serialized data then Buffer.toString(base64) 2.8796 us/op 2.4316 us/op 1.18
toHexString serialized data 2.0130 us/op 1.0594 us/op 1.90
Buffer.toString(base64) 438.10 ns/op 314.65 ns/op 1.39

by benchmarkbot/action

@twoeths twoeths marked this pull request as ready for review June 16, 2023 09:00
@twoeths twoeths requested a review from a team as a code owner June 16, 2023 09:00
@philknows philknows added this to the v1.9.0 milestone Jun 16, 2023
@wemeetagain wemeetagain merged commit 7eec2e5 into unstable Jun 16, 2023
@wemeetagain wemeetagain deleted the tuyen/unknown_block_sync_only_downloaded_blocks branch June 16, 2023 14:55
@wemeetagain
Copy link
Member

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

[v1.9.0-rc.2] Node is not able to keep synced
3 participants