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

refactor: move data availability validation out of state transition to allow optimistic sync #5178

Merged
merged 1 commit into from May 8, 2023

Conversation

g11tech
Copy link
Contributor

@g11tech g11tech commented Feb 20, 2023

@g11tech g11tech requested a review from a team as a code owner February 20, 2023 09:48
@g11tech g11tech changed the title Move blob data availability and validation check to block import flow Move blob data availability and validation context out from state transition to chain block import Feb 20, 2023
@g11tech g11tech changed the title Move blob data availability and validation context out from state transition to chain block import Move blob data availability and validation context out from state transition Feb 20, 2023
@g11tech g11tech force-pushed the g11tech/move-data-availabilty branch from 3fd9506 to 8556227 Compare February 20, 2023 09:51
@github-actions
Copy link
Contributor

github-actions bot commented Feb 20, 2023

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 2d9c936 Previous: 7c2726a Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 794.60 us/op 534.78 us/op 1.49
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 44.273 us/op 46.219 us/op 0.96
BLS verify - blst-native 1.1858 ms/op 1.2115 ms/op 0.98
BLS verifyMultipleSignatures 3 - blst-native 2.4115 ms/op 2.4687 ms/op 0.98
BLS verifyMultipleSignatures 8 - blst-native 5.1876 ms/op 5.2874 ms/op 0.98
BLS verifyMultipleSignatures 32 - blst-native 18.831 ms/op 19.212 ms/op 0.98
BLS aggregatePubkeys 32 - blst-native 25.064 us/op 25.609 us/op 0.98
BLS aggregatePubkeys 128 - blst-native 97.888 us/op 100.44 us/op 0.97
getAttestationsForBlock 51.719 ms/op 52.066 ms/op 0.99
isKnown best case - 1 super set check 240.00 ns/op 250.00 ns/op 0.96
isKnown normal case - 2 super set checks 238.00 ns/op 250.00 ns/op 0.95
isKnown worse case - 16 super set checks 234.00 ns/op 245.00 ns/op 0.96
CheckpointStateCache - add get delete 4.7900 us/op 4.8440 us/op 0.99
validate gossip signedAggregateAndProof - struct 2.7210 ms/op 2.7438 ms/op 0.99
validate gossip attestation - struct 1.2957 ms/op 1.3069 ms/op 0.99
pickEth1Vote - no votes 1.1943 ms/op 1.2974 ms/op 0.92
pickEth1Vote - max votes 11.461 ms/op 10.216 ms/op 1.12
pickEth1Vote - Eth1Data hashTreeRoot value x2048 8.9045 ms/op 8.8097 ms/op 1.01
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 14.034 ms/op 14.584 ms/op 0.96
pickEth1Vote - Eth1Data fastSerialize value x2048 610.17 us/op 698.25 us/op 0.87
pickEth1Vote - Eth1Data fastSerialize tree x2048 7.5240 ms/op 7.6708 ms/op 0.98
bytes32 toHexString 467.00 ns/op 465.00 ns/op 1.00
bytes32 Buffer.toString(hex) 334.00 ns/op 333.00 ns/op 1.00
bytes32 Buffer.toString(hex) from Uint8Array 525.00 ns/op 524.00 ns/op 1.00
bytes32 Buffer.toString(hex) + 0x 335.00 ns/op 330.00 ns/op 1.02
Object access 1 prop 0.15700 ns/op 0.16200 ns/op 0.97
Map access 1 prop 0.14700 ns/op 0.15700 ns/op 0.94
Object get x1000 6.5890 ns/op 6.4050 ns/op 1.03
Map get x1000 0.57900 ns/op 0.49600 ns/op 1.17
Object set x1000 49.206 ns/op 49.366 ns/op 1.00
Map set x1000 41.846 ns/op 41.239 ns/op 1.01
Return object 10000 times 0.22370 ns/op 0.22320 ns/op 1.00
Throw Error 10000 times 4.0228 us/op 4.0294 us/op 1.00
fastMsgIdFn sha256 / 200 bytes 3.2820 us/op 3.2740 us/op 1.00
fastMsgIdFn h32 xxhash / 200 bytes 260.00 ns/op 269.00 ns/op 0.97
fastMsgIdFn h64 xxhash / 200 bytes 383.00 ns/op 372.00 ns/op 1.03
fastMsgIdFn sha256 / 1000 bytes 11.383 us/op 11.030 us/op 1.03
fastMsgIdFn h32 xxhash / 1000 bytes 389.00 ns/op 394.00 ns/op 0.99
fastMsgIdFn h64 xxhash / 1000 bytes 449.00 ns/op 447.00 ns/op 1.00
fastMsgIdFn sha256 / 10000 bytes 101.81 us/op 98.867 us/op 1.03
fastMsgIdFn h32 xxhash / 10000 bytes 1.8920 us/op 1.8070 us/op 1.05
fastMsgIdFn h64 xxhash / 10000 bytes 1.3390 us/op 1.2760 us/op 1.05
enrSubnets - fastDeserialize 64 bits 1.2430 us/op 1.2110 us/op 1.03
enrSubnets - ssz BitVector 64 bits 472.00 ns/op 476.00 ns/op 0.99
enrSubnets - fastDeserialize 4 bits 161.00 ns/op 165.00 ns/op 0.98
enrSubnets - ssz BitVector 4 bits 471.00 ns/op 472.00 ns/op 1.00
prioritizePeers score -10:0 att 32-0.1 sync 2-0 102.33 us/op 102.91 us/op 0.99
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 129.90 us/op 128.44 us/op 1.01
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 165.39 us/op 156.52 us/op 1.06
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 295.76 us/op 285.60 us/op 1.04
prioritizePeers score 0:0 att 64-1 sync 4-1 357.22 us/op 344.57 us/op 1.04
array of 16000 items push then shift 1.5959 us/op 1.5344 us/op 1.04
LinkedList of 16000 items push then shift 8.6030 ns/op 8.4450 ns/op 1.02
array of 16000 items push then pop 82.598 ns/op 74.028 ns/op 1.12
LinkedList of 16000 items push then pop 8.4300 ns/op 8.4030 ns/op 1.00
array of 24000 items push then shift 2.3174 us/op 2.3287 us/op 1.00
LinkedList of 24000 items push then shift 8.6320 ns/op 8.4540 ns/op 1.02
array of 24000 items push then pop 72.225 ns/op 76.587 ns/op 0.94
LinkedList of 24000 items push then pop 8.4090 ns/op 8.0940 ns/op 1.04
intersect bitArray bitLen 8 13.184 ns/op 12.691 ns/op 1.04
intersect array and set length 8 76.998 ns/op 73.996 ns/op 1.04
intersect bitArray bitLen 128 43.763 ns/op 42.185 ns/op 1.04
intersect array and set length 128 1.0446 us/op 1.0001 us/op 1.04
Buffer.concat 32 items 2.8800 us/op 2.8840 us/op 1.00
Uint8Array.set 32 items 2.8830 us/op 2.9400 us/op 0.98
pass gossip attestations to forkchoice per slot 2.6469 ms/op 3.0653 ms/op 0.86
computeDeltas 2.8824 ms/op 3.2967 ms/op 0.87
computeProposerBoostScoreFromBalances 1.7603 ms/op 1.7504 ms/op 1.01
altair processAttestation - 250000 vs - 7PWei normalcase 2.0925 ms/op 2.1167 ms/op 0.99
altair processAttestation - 250000 vs - 7PWei worstcase 3.2898 ms/op 3.6105 ms/op 0.91
altair processAttestation - setStatus - 1/6 committees join 141.05 us/op 138.17 us/op 1.02
altair processAttestation - setStatus - 1/3 committees join 272.98 us/op 265.17 us/op 1.03
altair processAttestation - setStatus - 1/2 committees join 360.17 us/op 369.24 us/op 0.98
altair processAttestation - setStatus - 2/3 committees join 463.63 us/op 462.73 us/op 1.00
altair processAttestation - setStatus - 4/5 committees join 651.88 us/op 648.15 us/op 1.01
altair processAttestation - setStatus - 100% committees join 765.25 us/op 756.23 us/op 1.01
altair processBlock - 250000 vs - 7PWei normalcase 16.118 ms/op 18.549 ms/op 0.87
altair processBlock - 250000 vs - 7PWei normalcase hashState 27.459 ms/op 27.376 ms/op 1.00
altair processBlock - 250000 vs - 7PWei worstcase 46.798 ms/op 50.703 ms/op 0.92
altair processBlock - 250000 vs - 7PWei worstcase hashState 68.704 ms/op 68.495 ms/op 1.00
phase0 processBlock - 250000 vs - 7PWei normalcase 1.9815 ms/op 1.9375 ms/op 1.02
phase0 processBlock - 250000 vs - 7PWei worstcase 27.457 ms/op 28.064 ms/op 0.98
altair processEth1Data - 250000 vs - 7PWei normalcase 468.41 us/op 456.18 us/op 1.03
vc - 250000 eb 1 eth1 1 we 0 wn 0 - smpl 15 6.6990 us/op 6.9670 us/op 0.96
vc - 250000 eb 0.95 eth1 0.1 we 0.05 wn 0 - smpl 219 19.144 us/op 19.772 us/op 0.97
vc - 250000 eb 0.95 eth1 0.3 we 0.05 wn 0 - smpl 42 8.1190 us/op 8.5080 us/op 0.95
vc - 250000 eb 0.95 eth1 0.7 we 0.05 wn 0 - smpl 18 6.3010 us/op 6.4050 us/op 0.98
vc - 250000 eb 0.1 eth1 0.1 we 0 wn 0 - smpl 1020 73.817 us/op 74.290 us/op 0.99
vc - 250000 eb 0.03 eth1 0.03 we 0 wn 0 - smpl 11777 616.89 us/op 670.92 us/op 0.92
vc - 250000 eb 0.01 eth1 0.01 we 0 wn 0 - smpl 16384 900.63 us/op 900.96 us/op 1.00
vc - 250000 eb 0 eth1 0 we 0 wn 0 - smpl 16384 897.30 us/op 879.42 us/op 1.02
vc - 250000 eb 0 eth1 0 we 0 wn 0 nocache - smpl 16384 2.2417 ms/op 2.2201 ms/op 1.01
vc - 250000 eb 0 eth1 1 we 0 wn 0 - smpl 16384 1.5284 ms/op 1.4775 ms/op 1.03
vc - 250000 eb 0 eth1 1 we 0 wn 0 nocache - smpl 16384 3.8449 ms/op 3.7463 ms/op 1.03
Tree 40 250000 create 305.48 ms/op 277.20 ms/op 1.10
Tree 40 250000 get(125000) 180.51 ns/op 175.12 ns/op 1.03
Tree 40 250000 set(125000) 938.24 ns/op 852.55 ns/op 1.10
Tree 40 250000 toArray() 16.823 ms/op 17.846 ms/op 0.94
Tree 40 250000 iterate all - toArray() + loop 17.070 ms/op 17.321 ms/op 0.99
Tree 40 250000 iterate all - get(i) 66.762 ms/op 64.385 ms/op 1.04
MutableVector 250000 create 10.544 ms/op 9.8944 ms/op 1.07
MutableVector 250000 get(125000) 6.2520 ns/op 6.2950 ns/op 0.99
MutableVector 250000 set(125000) 252.26 ns/op 251.07 ns/op 1.00
MutableVector 250000 toArray() 2.6355 ms/op 2.5570 ms/op 1.03
MutableVector 250000 iterate all - toArray() + loop 2.7632 ms/op 2.6561 ms/op 1.04
MutableVector 250000 iterate all - get(i) 1.5333 ms/op 1.4877 ms/op 1.03
Array 250000 create 2.4904 ms/op 2.5224 ms/op 0.99
Array 250000 clone - spread 1.2603 ms/op 1.2694 ms/op 0.99
Array 250000 get(125000) 0.60200 ns/op 0.59500 ns/op 1.01
Array 250000 set(125000) 0.68400 ns/op 0.68300 ns/op 1.00
Array 250000 iterate all - loop 84.644 us/op 82.251 us/op 1.03
effectiveBalanceIncrements clone Uint8Array 300000 27.734 us/op 29.864 us/op 0.93
effectiveBalanceIncrements clone MutableVector 300000 410.00 ns/op 406.00 ns/op 1.01
effectiveBalanceIncrements rw all Uint8Array 300000 167.78 us/op 165.06 us/op 1.02
effectiveBalanceIncrements rw all MutableVector 300000 81.515 ms/op 82.197 ms/op 0.99
phase0 afterProcessEpoch - 250000 vs - 7PWei 112.44 ms/op 107.91 ms/op 1.04
phase0 beforeProcessEpoch - 250000 vs - 7PWei 32.635 ms/op 34.469 ms/op 0.95
altair processEpoch - mainnet_e81889 325.43 ms/op 316.53 ms/op 1.03
mainnet_e81889 - altair beforeProcessEpoch 63.801 ms/op 62.798 ms/op 1.02
mainnet_e81889 - altair processJustificationAndFinalization 17.181 us/op 16.414 us/op 1.05
mainnet_e81889 - altair processInactivityUpdates 5.1581 ms/op 5.4962 ms/op 0.94
mainnet_e81889 - altair processRewardsAndPenalties 65.850 ms/op 66.457 ms/op 0.99
mainnet_e81889 - altair processRegistryUpdates 3.1220 us/op 2.6260 us/op 1.19
mainnet_e81889 - altair processSlashings 461.00 ns/op 497.00 ns/op 0.93
mainnet_e81889 - altair processEth1DataReset 501.00 ns/op 642.00 ns/op 0.78
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2130 ms/op 1.2213 ms/op 0.99
mainnet_e81889 - altair processSlashingsReset 4.6810 us/op 3.8950 us/op 1.20
mainnet_e81889 - altair processRandaoMixesReset 4.7080 us/op 6.2710 us/op 0.75
mainnet_e81889 - altair processHistoricalRootsUpdate 601.00 ns/op 783.00 ns/op 0.77
mainnet_e81889 - altair processParticipationFlagUpdates 2.3300 us/op 3.0800 us/op 0.76
mainnet_e81889 - altair processSyncCommitteeUpdates 458.00 ns/op 563.00 ns/op 0.81
mainnet_e81889 - altair afterProcessEpoch 119.03 ms/op 127.53 ms/op 0.93
phase0 processEpoch - mainnet_e58758 322.36 ms/op 371.80 ms/op 0.87
mainnet_e58758 - phase0 beforeProcessEpoch 124.12 ms/op 139.88 ms/op 0.89
mainnet_e58758 - phase0 processJustificationAndFinalization 16.086 us/op 16.949 us/op 0.95
mainnet_e58758 - phase0 processRewardsAndPenalties 57.415 ms/op 66.581 ms/op 0.86
mainnet_e58758 - phase0 processRegistryUpdates 7.6670 us/op 8.3960 us/op 0.91
mainnet_e58758 - phase0 processSlashings 498.00 ns/op 581.00 ns/op 0.86
mainnet_e58758 - phase0 processEth1DataReset 505.00 ns/op 610.00 ns/op 0.83
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 941.00 us/op 1.0956 ms/op 0.86
mainnet_e58758 - phase0 processSlashingsReset 3.2430 us/op 10.614 us/op 0.31
mainnet_e58758 - phase0 processRandaoMixesReset 4.7880 us/op 4.7920 us/op 1.00
mainnet_e58758 - phase0 processHistoricalRootsUpdate 644.00 ns/op 658.00 ns/op 0.98
mainnet_e58758 - phase0 processParticipationRecordUpdates 4.0000 us/op 3.8480 us/op 1.04
mainnet_e58758 - phase0 afterProcessEpoch 96.052 ms/op 98.769 ms/op 0.97
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.2141 ms/op 1.2351 ms/op 0.98
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.5756 ms/op 1.5127 ms/op 1.04
altair processInactivityUpdates - 250000 normalcase 20.220 ms/op 25.002 ms/op 0.81
altair processInactivityUpdates - 250000 worstcase 19.890 ms/op 26.798 ms/op 0.74
phase0 processRegistryUpdates - 250000 normalcase 6.4380 us/op 7.6880 us/op 0.84
phase0 processRegistryUpdates - 250000 badcase_full_deposits 237.58 us/op 294.99 us/op 0.81
phase0 processRegistryUpdates - 250000 worstcase 0.5 113.98 ms/op 122.70 ms/op 0.93
altair processRewardsAndPenalties - 250000 normalcase 50.316 ms/op 70.129 ms/op 0.72
altair processRewardsAndPenalties - 250000 worstcase 60.736 ms/op 69.585 ms/op 0.87
phase0 getAttestationDeltas - 250000 normalcase 6.4790 ms/op 6.6160 ms/op 0.98
phase0 getAttestationDeltas - 250000 worstcase 6.5195 ms/op 6.8069 ms/op 0.96
phase0 processSlashings - 250000 worstcase 3.4634 ms/op 3.5919 ms/op 0.96
altair processSyncCommitteeUpdates - 250000 169.36 ms/op 183.34 ms/op 0.92
BeaconState.hashTreeRoot - No change 260.00 ns/op 276.00 ns/op 0.94
BeaconState.hashTreeRoot - 1 full validator 49.865 us/op 51.191 us/op 0.97
BeaconState.hashTreeRoot - 32 full validator 527.29 us/op 524.07 us/op 1.01
BeaconState.hashTreeRoot - 512 full validator 4.9091 ms/op 5.3292 ms/op 0.92
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 61.555 us/op 62.603 us/op 0.98
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 870.90 us/op 861.85 us/op 1.01
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 10.874 ms/op 11.237 ms/op 0.97
BeaconState.hashTreeRoot - 1 balances 47.807 us/op 50.635 us/op 0.94
BeaconState.hashTreeRoot - 32 balances 450.50 us/op 447.49 us/op 1.01
BeaconState.hashTreeRoot - 512 balances 4.3094 ms/op 4.1483 ms/op 1.04
BeaconState.hashTreeRoot - 250000 balances 75.111 ms/op 75.897 ms/op 0.99
aggregationBits - 2048 els - zipIndexesInBitList 15.315 us/op 16.665 us/op 0.92
regular array get 100000 times 32.604 us/op 32.899 us/op 0.99
wrappedArray get 100000 times 32.597 us/op 32.761 us/op 0.99
arrayWithProxy get 100000 times 15.987 ms/op 15.480 ms/op 1.03
ssz.Root.equals 546.00 ns/op 569.00 ns/op 0.96
byteArrayEquals 530.00 ns/op 556.00 ns/op 0.95
shuffle list - 16384 els 6.6637 ms/op 7.0086 ms/op 0.95
shuffle list - 250000 els 98.215 ms/op 100.87 ms/op 0.97
processSlot - 1 slots 8.4080 us/op 9.6940 us/op 0.87
processSlot - 32 slots 1.3031 ms/op 1.3629 ms/op 0.96
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 33.569 ms/op 36.048 ms/op 0.93
getCommitteeAssignments - req 1 vs - 250000 vc 2.9010 ms/op 2.9027 ms/op 1.00
getCommitteeAssignments - req 100 vs - 250000 vc 4.1067 ms/op 4.1278 ms/op 0.99
getCommitteeAssignments - req 1000 vs - 250000 vc 4.4010 ms/op 4.4389 ms/op 0.99
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.4100 ns/op 4.8200 ns/op 0.91
state getBlockRootAtSlot - 250000 vs - 7PWei 967.78 ns/op 594.77 ns/op 1.63
computeProposers - vc 250000 10.363 ms/op 10.522 ms/op 0.98
computeEpochShuffling - vc 250000 99.667 ms/op 102.57 ms/op 0.97
getNextSyncCommittee - vc 250000 168.21 ms/op 175.17 ms/op 0.96
computeSigningRoot for AttestationData 13.650 us/op 13.102 us/op 1.04
hash AttestationData serialized data then Buffer.toString(base64) 2.3439 us/op 2.4438 us/op 0.96
toHexString serialized data 1.0821 us/op 1.0518 us/op 1.03
Buffer.toString(base64) 309.08 ns/op 314.16 ns/op 0.98

by benchmarkbot/action

@g11tech g11tech force-pushed the g11tech/move-data-availabilty branch from 8556227 to 387c252 Compare February 20, 2023 11:52
@g11tech g11tech enabled auto-merge (squash) February 20, 2023 11:54
Copy link
Contributor

@dapplion dapplion left a comment

Choose a reason for hiding this comment

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

While this was changed in the spec we don't really have to change anything right? I really like the need to have to explicitly state if the availability of the blob on import as it forces critical decisions publicly. Then if a block is not available it wont ever be imported to the forkchoice so it is not a concern to it

@g11tech
Copy link
Contributor Author

g11tech commented Feb 20, 2023

While this was changed in the spec we don't really have to change anything right? I really like the need to have to explicitly state if the availability of the blob on import as it forces critical decisions publicly. Then if a block is not available it wont ever be imported to the forkchoice so it is not a concern to it

I can accumulate and make the dataAvailable flags pass upstream to forkchoice's onBlock where we can check and throw on availability status to surface the considerations

i feel it doesnot belong to block state transition, also feel the same for execution status too that we pass there.

@wemeetagain
Copy link
Member

Moving to draft and adding discussion tag

@wemeetagain wemeetagain marked this pull request as draft March 2, 2023 13:54
auto-merge was automatically disabled March 2, 2023 13:54

Pull request was converted to draft

@wemeetagain wemeetagain added the meta-discussion Indicates a topic that requires input from various developers. label Mar 2, 2023
@g11tech g11tech force-pushed the g11tech/move-data-availabilty branch 3 times, most recently from 79a94b7 to 657e1aa Compare March 24, 2023 18:19
@g11tech g11tech force-pushed the g11tech/move-data-availabilty branch from 657e1aa to 4047185 Compare April 1, 2023 13:45
@g11tech g11tech force-pushed the g11tech/move-data-availabilty branch from 4047185 to f9049ca Compare April 9, 2023 11:54
@g11tech g11tech force-pushed the g11tech/move-data-availabilty branch 2 times, most recently from 06bb540 to 600e7c7 Compare April 25, 2023 06:33
@g11tech g11tech changed the title Move blob data availability and validation context out from state transition refactor: move blob data availability and validation context out from state transition Apr 28, 2023
@@ -254,7 +253,6 @@ async function getFinalizedState(
state = stateTransition(state, block, {
// Replaying finalized blocks, all data is considered valid
executionPayloadStatus: ExecutionPayloadStatus.valid,
dataAvailableStatus: DataAvailableStatus.available,
Copy link
Contributor

Choose a reason for hiding this comment

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

The main purpose of this notation was to force all consumers to explicitly declare assumptions about blobs. We will have to support different paths like regen block replay where we don't want to load blobs, but already know they are available. I'm aware it's technically pointless but being verbose about such critical decisions sounded good to me. I'm fine moving DA check outside of state transition, but this explicit statements should stay IMO

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ok sounds good, will make modifications

@g11tech g11tech force-pushed the g11tech/move-data-availabilty branch from 600e7c7 to 3af1a13 Compare May 6, 2023 07:40
@g11tech g11tech marked this pull request as ready for review May 6, 2023 07:40
@g11tech g11tech changed the title refactor: move blob data availability and validation context out from state transition refactor: move data availability validation out of state transition to allow optimistic sync in future May 6, 2023
dapplion
dapplion previously approved these changes May 8, 2023
…nsition

  rebase fixes

  retain dataAvailabilityStatus flag in state transition

  reduce diff

  correctly propogate availability status while block processing
@g11tech
Copy link
Contributor Author

g11tech commented May 8, 2023

rebased to resolve conflicts

@g11tech g11tech enabled auto-merge (squash) May 8, 2023 06:13
@g11tech g11tech changed the title refactor: move data availability validation out of state transition to allow optimistic sync in future refactor: move data availability validation out of state transition to allow optimistic sync May 8, 2023
@g11tech g11tech merged commit 849f08b into unstable May 8, 2023
12 checks passed
@g11tech g11tech deleted the g11tech/move-data-availabilty branch May 8, 2023 08:38
@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
meta-discussion Indicates a topic that requires input from various developers.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants