You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: specs/_features/eip7594/das-core.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,9 +27,9 @@
27
27
-[Extended data](#extended-data)
28
28
-[Column gossip](#column-gossip)
29
29
-[Parameters](#parameters)
30
-
-[Reconstruction and cross-seeding](#reconstruction-and-cross-seeding)
31
30
-[Peer sampling](#peer-sampling)
32
31
-[Peer scoring](#peer-scoring)
32
+
-[Reconstruction and cross-seeding](#reconstruction-and-cross-seeding)
33
33
-[DAS providers](#das-providers)
34
34
-[A note on fork choice](#a-note-on-fork-choice)
35
35
-[FAQs](#faqs)
@@ -203,13 +203,13 @@ The particular columns that a node custodies are selected pseudo-randomly as a f
203
203
204
204
## Peer discovery
205
205
206
-
At each slot, a node needs to be able to readily sample from *any* set of columns. To this end, a node should find and maintain a set of diverse and reliable peers that can regularly satisfy their sampling demands.
206
+
At each slot, a node needs to be able to readily sample from *any* set of columns. To this end, a node SHOULD find and maintain a set of diverse and reliable peers that can regularly satisfy their sampling demands.
207
207
208
208
A node runs a background peer discovery process, maintaining at least `TARGET_NUMBER_OF_PEERS` of various custody distributions (both `custody_size` and column assignments). The combination of advertised `custody_size` size and public node-id make this readily and publicly accessible.
209
209
210
210
`TARGET_NUMBER_OF_PEERS` should be tuned upward in the event of failed sampling.
211
211
212
-
*Note*: while high-capacity and super-full nodes are high value with respect to satisfying sampling requirements, a node should maintain a distribution across node capacities as to not centralize the p2p graph too much (in the extreme becomes hub/spoke) and to distribute sampling load better across all nodes.
212
+
*Note*: while high-capacity and super-full nodes are high value with respect to satisfying sampling requirements, a node SHOULD maintain a distribution across node capacities as to not centralize the p2p graph too much (in the extreme becomes hub/spoke) and to distribute sampling load better across all nodes.
213
213
214
214
*Note*: A DHT-based peer discovery mechanism is expected to be utilized in the above. The beacon-chain network currently utilizes discv5 in a similar method as described for finding peers of particular distributions of attestation subnets. Additional peer discovery methods are valuable to integrate (e.g., latent peer discovery via libp2p gossipsub) to add a defense in breadth against one of the discovery methods being attacked.
215
215
@@ -225,28 +225,28 @@ For each column -- use `data_column_sidecar_{subnet_id}` subnets, where `subnet_
225
225
226
226
To custody a particular column, a node joins the respective gossip subnet. Verifiable samples from their respective column are gossiped on the assigned subnet.
227
227
228
-
### Reconstruction and cross-seeding
228
+
## Peer sampling
229
+
230
+
A node SHOULD maintain a diverse set of peers for each column and each slot by verifying responsiveness to sample queries. At each slot, a node makes `SAMPLES_PER_SLOT` queries for samples from their peers via `DataColumnSidecarsByRoot` request. A node utilizes `get_custody_columns` helper to determine which peer(s) to request from. If a node has enough good/honest peers across all rows and columns, this has a high chance of success.
231
+
232
+
## Peer scoring
233
+
234
+
Due to the deterministic custody functions, a node knows exactly what a peer should be able to respond to. In the event that a peer does not respond to samples of their custodied rows/columns, a node may downscore or disconnect from a peer.
235
+
236
+
## Reconstruction and cross-seeding
229
237
230
238
If the node obtains 50%+ of all the columns, they can reconstruct the full data matrix via `recover_matrix` helper.
231
239
232
240
If a node fails to sample a peer or fails to get a column on the column subnet, a node can utilize the Req/Resp message to query the missing column from other peers.
233
241
234
-
Once the node obtain the column, the node should send the missing columns to the column subnets.
242
+
Once the node obtain the column, the node SHOULD send the missing columns to the column subnets.
235
243
236
244
*Note*: A node always maintains a matrix view of the rows and columns they are following, able to cross-reference and cross-seed in either direction.
237
245
238
246
*Note*: There are timing considerations to analyze -- at what point does a node consider samples missing and choose to reconstruct and cross-seed.
239
247
240
248
*Note*: There may be anti-DoS and quality-of-service considerations around how to send samples and consider samples -- is each individual sample a message or are they sent in aggregate forms.
241
249
242
-
## Peer sampling
243
-
244
-
A node SHOULD maintain a diverse set of peers for each column and each slot by verifying responsiveness to sample queries. At each slot, a node makes `SAMPLES_PER_SLOT` queries for samples from their peers via `DataColumnSidecarsByRoot` request. A node utilizes `get_custody_columns` helper to determine which peer(s) to request from. If a node has enough good/honest peers across all rows and columns, this has a high chance of success.
245
-
246
-
## Peer scoring
247
-
248
-
Due to the deterministic custody functions, a node knows exactly what a peer should be able to respond to. In the event that a peer does not respond to samples of their custodied rows/columns, a node may downscore or disconnect from a peer.
249
-
250
250
## DAS providers
251
251
252
252
A DAS provider is a consistently-available-for-DAS-queries, super-full (or high capacity) node. To the p2p, these look just like other nodes but with high advertised capacity, and they should generally be able to be latently found via normal discovery.
0 commit comments