From de7abfcbed571d5980b25c9ea2b182d141270232 Mon Sep 17 00:00:00 2001 From: John Adler Date: Thu, 3 Jun 2021 16:38:28 -0400 Subject: [PATCH 1/2] Add note that partial nodes can be like storage nodes. --- src/specs/node_types.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/specs/node_types.md b/src/specs/node_types.md index b36b65ad..1ae33763 100644 --- a/src/specs/node_types.md +++ b/src/specs/node_types.md @@ -103,3 +103,5 @@ For convenience, we will define several common parameter configurations: - Block headers: [Extended Block Headers](#extended-block-headers) - Block bodies: [Full Bodies](#full-bodies) - Transactions: [Full Transactions](#full-transactions) + +Note: partial nodes may also serve the purpose of storage nodes (distributing shares to the network) for a subset of blocks. From fbdaa9c7f845a183f452d66727cd94ce6c2a8eca Mon Sep 17 00:00:00 2001 From: John Adler Date: Tue, 8 Jun 2021 09:08:04 -0400 Subject: [PATCH 2/2] Improve and expand node types desc. --- src/specs/node_types.md | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/src/specs/node_types.md b/src/specs/node_types.md index 1ae33763..924bb294 100644 --- a/src/specs/node_types.md +++ b/src/specs/node_types.md @@ -79,29 +79,57 @@ At most secure under a weak subjectivity assumption. For convenience, we will define several common parameter configurations: -1. [Full nodes](https://en.bitcoin.it/wiki/Full_node) provide the strongest security guarantees. Block bodies do not need to be stored. +1. [Full nodes](https://en.bitcoin.it/wiki/Full_node) provide the strongest security guarantees. - Block headers: [Extended Block Headers](#extended-block-headers) - Block bodies: [Full Bodies](#full-bodies) + - Storage: Not stored beyond a parameter + - Serving: Served to the network - Transactions: [Full Transactions](#full-transactions) + - Fraud proofs: + - State transition: produce, consume + - Erasure coding: produce, consume 1. Partial nodes are capable of producing fraud proofs of invalid transactions and contribute to validating the erasure coding of random blocks. - Block headers: [Extended Block Headers](#extended-block-headers) - Block bodies: [Partial Bodies](#partial-bodies) + - Storage: Not stored beyond a parameter + - Serving: Served to the network - Transactions: [Full Transactions](#full-transactions) + - Fraud proofs: + - State transition: produce, consume + - Erasure coding: produce (partial), consume 1. Light nodes perform Data Availability Sampling (DAS) and are secure under an honest minority. - Block headers: [Extended Block Headers](#extended-block-headers) - Block bodies: [Sampled Bodies](#sampled-bodies) + - Storage: Not stored beyond a parameter + - Serving: Served to the network - Transactions: [No Transactions](#no-transactions) + - Fraud proofs: + - State transition: consume + - Erasure coding: consume 1. Superlight nodes do not perform DAS and are secure under an honest majority. - Block headers: [Compact Block Headers](#compact-block-headers) - Block bodies: [No Bodies](#no-bodies) + - Storage: Not stored + - Serving: Not served to the network - Transactions: [No Transactions](#no-transactions) -1. Light validator nodes can produce new blocks with strong security guarantees and light resource requirements. + - Fraud proofs: + - State transition: consume + - Erasure coding: consume +1. Storage nodes provide the same security guarantees as full nodes. - Block headers: [Extended Block Headers](#extended-block-headers) - - Block bodies: [Sampled Bodies](#sampled-bodies) + - Block bodies: [Full Bodies](#full-bodies) + - Storage: Fully stored in [erasure-coded form](./data_structures.md#2d-reed-solomon-encoding-scheme) + - Serving: Served to the network - Transactions: [Full Transactions](#full-transactions) -1. Storage nodes provide the same security guarantees as full nodes. Block bodies (in [erasure-coded form](./data_structures.md#2d-reed-solomon-encoding-scheme)) are stored and served to the network. + - Fraud proofs: + - State transition: produce, consume + - Erasure coding: produce, consume +1. Partial storage nodes provide the same security guarantees as partial nodes. - Block headers: [Extended Block Headers](#extended-block-headers) - Block bodies: [Full Bodies](#full-bodies) + - Storage: Partially stored in [erasure-coded form](./data_structures.md#2d-reed-solomon-encoding-scheme) + - Serving: Served to the network - Transactions: [Full Transactions](#full-transactions) - -Note: partial nodes may also serve the purpose of storage nodes (distributing shares to the network) for a subset of blocks. + - Fraud proofs: + - State transition: produce, consume + - Erasure coding: produce (partial), consume