Skip to content

Commit 1acb1ff

Browse files
committed
minor arrange
1 parent bb33f90 commit 1acb1ff

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

specs/_features/eip7594/das-core.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
- [Extended data](#extended-data)
2828
- [Column gossip](#column-gossip)
2929
- [Parameters](#parameters)
30-
- [Reconstruction and cross-seeding](#reconstruction-and-cross-seeding)
3130
- [Peer sampling](#peer-sampling)
3231
- [Peer scoring](#peer-scoring)
32+
- [Reconstruction and cross-seeding](#reconstruction-and-cross-seeding)
3333
- [DAS providers](#das-providers)
3434
- [A note on fork choice](#a-note-on-fork-choice)
3535
- [FAQs](#faqs)
@@ -203,13 +203,13 @@ The particular columns that a node custodies are selected pseudo-randomly as a f
203203

204204
## Peer discovery
205205

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.
207207

208208
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.
209209

210210
`TARGET_NUMBER_OF_PEERS` should be tuned upward in the event of failed sampling.
211211

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.
213213

214214
*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.
215215

@@ -225,28 +225,28 @@ For each column -- use `data_column_sidecar_{subnet_id}` subnets, where `subnet_
225225

226226
To custody a particular column, a node joins the respective gossip subnet. Verifiable samples from their respective column are gossiped on the assigned subnet.
227227

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
229237

230238
If the node obtains 50%+ of all the columns, they can reconstruct the full data matrix via `recover_matrix` helper.
231239

232240
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.
233241

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.
235243

236244
*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.
237245

238246
*Note*: There are timing considerations to analyze -- at what point does a node consider samples missing and choose to reconstruct and cross-seed.
239247

240248
*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.
241249

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-
250250
## DAS providers
251251

252252
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

Comments
 (0)