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

NOMOS-DATA-AVAILABILITY: New Raw RFC #41

Open
wants to merge 20 commits into
base: main
Choose a base branch
from
Open

NOMOS-DATA-AVAILABILITY: New Raw RFC #41

wants to merge 20 commits into from

Conversation

jimstir
Copy link
Collaborator

@jimstir jimstir commented May 28, 2024

Open discussion for a Nomos data availability layer raw RFC. Should include all components of the data availability service provided by the Nomos blockchain as well as how they are utilized within the network.

@jimstir jimstir marked this pull request as draft May 28, 2024 19:29
@jimstir jimstir marked this pull request as ready for review June 28, 2024 02:47
Comment on lines 36 to 43
Decentralized blockchains require full nodes to verify network transactions by downloading all the data of the network.
This becomes a problem as the blockchain data grows, full nodes will need more resources to download and
store the data while maintaining connection to the network.
Light nodes on the other hand do not download the entire network data because of it's resource limiting nature.
This retricts the network from scaling as the network is reliant on full nodes to process transactions.
and requires light nodes to rely on centralized parties.
A blockchain can have light nodes prove the validity of transaction data,
without the light node to downloading all the blockchain data.

Choose a reason for hiding this comment

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

This is not really the focus. Focus is bandwidth reduction. Splitting data into chunks and knowing who to send what really makes an impact as the network grows.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@danielSanchezQ Do you mean not the focus for the network or for the role of a DA node in the BL layer for Nomos? Is focus on bandwidth reduction for light nodes, full nodes or both?


The data availability service of the Nomos base layer consist of different node roles, dispersal clients,
data availibity sampling nodes, and data availability provider nodes.
All network partipants have a choice in which node role they choose to run.

Choose a reason for hiding this comment

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

They do not. All nodes within the base layer do sample and verification. Dispersal is triggered by executor in zones, then by all of the base layer nodes participating in the different DA subnetworks (internal protocol yet to be decided).

Comment on lines 57 to 58
Nodes MAY decide to provide resources to the data availibilty service of the Nomos base-layer or
join a Data Availibility Committee within a zone.

Choose a reason for hiding this comment

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

No such thing as committees here.

Comment on lines 70 to 72
Zones act as [Data Availability Committees](#) for their own blockchain state.
Zones SHOULD provide data availability for their blockchain in the event that light nodes can not access data,
light nodess MAY utilize the data avilability of the Nomos base layer.

Choose a reason for hiding this comment

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

I think this is incorrect. Or it did change. We do not have committees.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Correct I believe there is no committees. I assumed a committee would be a DA implementation within a zone not connected to the main Nomos chain, and the term committees has been used in other articles. Removing this term from the spec.

All light node are considered to be Nomos base layer nodes.
Base-layer nodes MUST NOT process data,
but only provide data availability guarantees for a limit amount of time.
The role of a provider node is to store polynomial commitment schemes for Nomos zones.

Choose a reason for hiding this comment

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

They store the commitments, and a chunk of the original (or extended) data.


#### Sending Data

Zones are responisble for creating data chunks that need to be stored on the blockchain.

Choose a reason for hiding this comment

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

They are responsible for the encoding (reference to the encoding section maybe?).

#### Sending Data

Zones are responisble for creating data chunks that need to be stored on the blockchain.
The data SHOULD be sent to provider nodes.

Choose a reason for hiding this comment

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

What is a provider node?


Once encoded,
the data is dispersed to different Nomos data availibilty provider nodes that have joined a subnet on the base layer.
It is RECCOMENDED that the dispersal client sends a column to 4096 provider nodes for better bandwidth optimization.

Choose a reason for hiding this comment

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

They should send a single column to each of the 4096 da subnetworks.

Comment on lines 255 to 286
### VID Certificate

A verifiable information dispersal certificate, VID certificate,
is a list of attestation from data availibility nodes.
It is used to verify that the data chucks have been dispersed properly amongst nodes in the base layer.
The provider node signs an attestation that contain the hash value of the `row_commitment` and
of the `aggregated_column_commitment`.
Signitures are verified by dispersal clients and
valid signitures SHOULD be added to the VID certificate

For every provider node $j$, assuming $sk_j$ is the private key, a signature is generated as follows:

${ \Large \sigma_j=Sign(sk_j, hash(C_{agg}, r_1,r_2,\dots,r_{\ell})) }$

The provider node sends the signed attestation back to the zone dispersal clients confirming the data has been received and
verified.
Once a dispersal client verifies data chucks have been hashed and signed by the base layer,
the VID certificate SHOULD be created.

The attesstation is created with the following values:


```rs
// Provider node SHOULD hash using Blake2 algorithm
// blob_hash : Hash of row_commitment and column_commitiment
fn sendAsstation () {
attestation_hash = hash(blob_hash, DAnode);
}
```

The VID certificate is then sent to block builder to be accepted through concensus,
as desirbed in [Cryptarchia](#).

Choose a reason for hiding this comment

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

Gonna remove the VID entirely

Comment on lines 290 to 321
Light nodes MAY choose to be a data availability sampling node.
This node can participate in any other NOMOS service while providing verification of data dispersal services.
For example, a dispersal client can send data to be available through the base layer and
decide to perform data availability sampling to have a great assurance that the data is available.
This would reduce the potential threats from malicious or
faulty nodes not replicating data in their subnets.

The following steps are REQUIRED by a data availability sampling node to verify data dispersal:

1. Choose a random column value and row value from base layer provider nodes.
Light node wants to opening of $C_t$ and $r_{t'}$.

2. Assuming provider node $node_t$, it calculates the $eval$ value for the `column_commitment`.
Also calculates the `row_commitment` value $r_{t'}$ and the proof of it.
Then sends these values to the sampling node.

${ \Large eval(\Phi,w^{t-1})\to C_t,\pi_{C_t} }$

3. Sampling nodes verifies the `row_commitment` and the `column_commitment` as follows:

${ \Large verify(C_{agg},C_{r},\pi_{C_r}) \to true/false }$

${ \Large verify(C_{agg},C_r, \pi_{C_r})\to true/false}$

4. If this proof is true, then light nodes wants to opening of the column commitment.
$node_r$ calculates the $eval$ value and sends it to the light node to be verified.

${ \Large eval(\theta_t,w^{t'-1})\to data_{t'}^{t},\pi_{data_{t'}^{t}} }$

${ \Large verify(C_t, data_{t'}^t, \pi_{data_{t'}^t})\to true/false }$

If this is true, then this proves that the data chuck has been encoded correctly.

Choose a reason for hiding this comment

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

All this is WIP as we do not have anything decided yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants