Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
fbab829
Remove request tracking inside syncing chains
dapplion Jan 24, 2025
2faf5f1
Prioritize by range peers in network context
dapplion Jan 24, 2025
0e13a8d
Prioritize custody peers for columns by range
dapplion Jan 25, 2025
70e6066
Explicit error handling of the no peers error case
dapplion Jan 25, 2025
8cf4e8c
Remove good_peers_on_sampling_subnets
dapplion Jan 25, 2025
4da322f
Count AwaitingDownload towards the buffer limit
dapplion Jan 25, 2025
9cd238d
Retry syncing chains in AwaitingDownload state
dapplion Jan 25, 2025
891c8fc
Use same peer priorization for lookups
dapplion Feb 5, 2025
29a5aff
Review PR
dapplion Feb 6, 2025
cd6c5d6
Address TODOs
dapplion Feb 6, 2025
2c6a7cc
Revert changes to peer erroring in range sync
dapplion Feb 6, 2025
f77bc24
Revert metrics changes
dapplion Feb 6, 2025
4792275
Update comment
dapplion Feb 6, 2025
45f5528
Pass peers_to_deprioritize to select_columns_by_range_peers_to_request
dapplion Mar 17, 2025
7ec350b
more idiomatic
dapplion Mar 17, 2025
6f7a524
Merge remote-tracking branch 'sigp/unstable' into peer-loadbalancing
dapplion Mar 17, 2025
8962808
Idiomatic while
dapplion Mar 17, 2025
e9247d2
Add note about infinite loop
dapplion Mar 17, 2025
97e75ef
Use while let
dapplion Mar 23, 2025
0e7284f
Merge remote-tracking branch 'sigp/unstable' into peer-loadbalancing
dapplion Mar 25, 2025
0af1bd6
Fix wrong custody column count for lookup blocks
dapplion Apr 8, 2025
d6a68a6
Remove impl
dapplion Apr 8, 2025
3131892
Remove stale comment
jimmygchen Apr 8, 2025
017c6ab
Fix build errors.
jimmygchen Apr 8, 2025
cac7f3e
Or default
dapplion Apr 8, 2025
5c87e37
Review PR
dapplion Apr 8, 2025
53536c7
Merge remote-tracking branch 'sigp/unstable' into peer-loadbalancing
dapplion Apr 8, 2025
001e70d
Merge branch 'fix-custody-column-count-lookup' into peerdas-sync
dapplion Apr 11, 2025
2df888a
Merge branch 'peer-loadbalancing' into peerdas-sync
dapplion Apr 11, 2025
034186f
BatchPeerGroup
dapplion Mar 21, 2025
ecc894a
Match block and blob signatures
dapplion Apr 12, 2025
bb6175c
Explicit match statement to BlockError in range sync
dapplion Apr 12, 2025
dbd23a4
Remove todo in BatchPeerGroup
dapplion Apr 12, 2025
ea6cdb7
Remove participating peers from backfill sync
dapplion Apr 12, 2025
9db66f0
Remove MissingAllCustodyColumns error
dapplion Apr 12, 2025
a3d26b6
Merge remote-tracking branch 'sigp/peerdas-devnet-7' into peerdas-sync
dapplion May 14, 2025
4b2bbe3
Merge fixes
dapplion May 14, 2025
e0b3650
Clean up PR
dapplion May 14, 2025
6d56323
Consistent naming of batch_peers
dapplion May 14, 2025
1b8a8a2
Address multiple review comments
dapplion May 14, 2025
6ba7f7c
Better errors for das
dapplion May 14, 2025
675ae07
Penalize column peers once
dapplion May 14, 2025
56f7c36
Restore fn
dapplion May 14, 2025
f12d210
Fix error enum
dapplion May 14, 2025
f0c7750
Removed MismatchedPublicKeyLen
dapplion May 14, 2025
fad3a0a
Revert testing changes
dapplion May 14, 2025
f637cbb
Change BlockAndCustodyColumns enum variant
dapplion May 14, 2025
9292f82
Revert type change in import_historical_block_batch
dapplion May 15, 2025
edc7da0
Drop pubkey cache
dapplion May 15, 2025
859f380
Don't collect Vec
dapplion May 15, 2025
74f137e
Classify errors
dapplion May 15, 2025
f48b586
Remove ReconstructColumnsError
dapplion May 15, 2025
4649211
More detailed UnrequestedSlot error
dapplion May 15, 2025
10882fd
Lint test
dapplion May 15, 2025
50032a4
Fix slot conversion
dapplion May 15, 2025
06d4076
Reduce penalty for missing blobs
dapplion May 15, 2025
91663f4
Revert changes in peer selection
dapplion May 15, 2025
31f46a1
Lint tests
dapplion May 15, 2025
b11f8a3
Rename block matching functions
dapplion May 16, 2025
d82bf26
Reorder block matching in historical blocks
dapplion May 16, 2025
9434046
Fix order of block matching
dapplion May 16, 2025
40772ca
Add store tests
dapplion May 19, 2025
e575e10
Merge branch 'peerdas-devnet-7' into peerdas-sync
jimmygchen May 20, 2025
0058471
Filter blockchain in assert_correct_historical_block_chain
dapplion May 20, 2025
d4046ac
Also filter before KZG checks
dapplion May 20, 2025
fe0a15d
Lint tests
dapplion May 20, 2025
0659420
Fix lint
pawanjay176 May 20, 2025
7a8555c
Merge branch 'peerdas-devnet-7' into peerdas-sync
pawanjay176 May 20, 2025
fb8e6fe
Fix fulu err assertion
dapplion May 20, 2025
eb400f0
Check point is not at infinity
dapplion May 20, 2025
aabadb5
Fix ws sync test
dapplion May 20, 2025
6a663d8
Revert dropping filter fn
dapplion May 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions beacon_node/beacon_chain/src/data_availability_checker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use tracing::{debug, error, info_span, Instrument};
use types::blob_sidecar::{BlobIdentifier, BlobSidecar, FixedBlobSidecarList};
use types::{
BlobSidecarList, ChainSpec, ColumnIndex, DataColumnSidecarList, Epoch, EthSpec, Hash256,
RuntimeVariableList, SignedBeaconBlock,
SignedBeaconBlock,
};

mod error;
Expand Down Expand Up @@ -398,6 +398,9 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {
let mut results = Vec::with_capacity(blocks.len());
let all_blobs = blocks
.iter()
// TODO(das): we may want to remove this line. If blobs are present they should be
// verified. It's the role of another function to ignore blobs. And this blobs may not
// be checked and imported later.
.filter(|block| self.blobs_required_for_block(block.as_block()))
// this clone is cheap as it's cloning an Arc
.filter_map(|block| block.blobs().cloned())
Expand All @@ -412,14 +415,11 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {

let all_data_columns = blocks
.iter()
.filter(|block| self.data_columns_required_for_block(block.as_block()))
// this clone is cheap as it's cloning an Arc
.filter_map(|block| block.custody_columns().cloned())
.flatten()
.map(CustodyDataColumn::into_inner)
.collect::<Vec<_>>();
let all_data_columns =
RuntimeVariableList::from_vec(all_data_columns, self.spec.number_of_columns as usize);

// verify kzg for all data columns at once
if !all_data_columns.is_empty() {
Expand Down
20 changes: 13 additions & 7 deletions beacon_node/beacon_chain/tests/store_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ use store::{
BlobInfo, DBColumn, HotColdDB, StoreConfig,
};
use tempfile::{tempdir, TempDir};
use tracing::info;
use types::test_utils::{SeedableRng, XorShiftRng};
use types::*;

Expand Down Expand Up @@ -2529,6 +2530,7 @@ async fn weak_subjectivity_sync_test(slots: Vec<Slot>, checkpoint_slot: Slot) {
.clone()
.deconstruct();
if wss_fork.fulu_enabled() {
info!(block_slot = %block.slot(), ?block_root, "Corrupting data column header signature");
let AvailableBlockData::DataColumns(mut data_columns) = block_data else {
panic!("no columns")
};
Expand All @@ -2546,6 +2548,7 @@ async fn weak_subjectivity_sync_test(slots: Vec<Slot>, checkpoint_slot: Slot) {
beacon_chain.spec.clone(),
)
} else {
info!(block_slot = %block.slot(), ?block_root, "Corrupting blob header signature");
let AvailableBlockData::Blobs(mut blobs) = block_data else {
let blocks_have_blobs = available_blocks
.into_iter()
Expand Down Expand Up @@ -2599,17 +2602,18 @@ async fn weak_subjectivity_sync_test(slots: Vec<Slot>, checkpoint_slot: Slot) {
.clone()
.deconstruct();
if wss_fork.fulu_enabled() {
let (data_columns, expected_column_indices) = cols.unwrap();
info!(block_slot = %block.slot(), ?block_root, "Corrupting data column KZG proof");
let (mut data_columns, expected_column_indices) = cols.unwrap();
assert!(
!data_columns.is_empty(),
"data column sidecars shouldn't be empty"
);
let mut sidecar = data_columns[0].clone_arc();
let mut_sidecar = Arc::make_mut(&mut sidecar);
if mut_sidecar.kzg_proofs[0] == KzgProof::empty() {
let mut data_column = (*(data_columns[0]).clone_arc()).clone();
if data_column.kzg_proofs[0] == KzgProof::empty() {
panic!("kzg_proof is already G1_POINT_AT_INFINITY")
}
mut_sidecar.kzg_proofs[0] = KzgProof::empty();
data_column.kzg_proofs[0] = KzgProof::empty();
data_columns[0] = CustodyDataColumn::from_asserted_custody(data_column.into());
RpcBlock::new_with_custody_columns(
Some(block_root),
block,
Expand All @@ -2619,10 +2623,12 @@ async fn weak_subjectivity_sync_test(slots: Vec<Slot>, checkpoint_slot: Slot) {
)
.unwrap()
} else {
info!(block_slot = %block.slot(), ?block_root, "Corrupting blob KZG proof");
let mut blobs = blobs.unwrap();
assert!(!blobs.is_empty(), "blob sidecars shouldn't be empty");
let mut_sidecar = Arc::make_mut(&mut blobs[0]);
mut_sidecar.kzg_proof = KzgProof::empty();
let mut blob = (*blobs[0]).clone();
blob.kzg_proof = KzgProof::empty();
blobs[0] = blob.into();
RpcBlock::new(Some(block_root), block, Some(blobs)).unwrap()
}
};
Expand Down
Loading