Skip to content

Commit

Permalink
Da nomos core (#390)
Browse files Browse the repository at this point in the history
* Refactor da modules
Include da core module in nomos-core

* Include attestation trait

* Added initial approach for Da protocol

* Added empty certificate trait

* Added certificate dispersal method

* Rename validate method to validate attestation

* Clippy happy

* Add validate certificate method
  • Loading branch information
danielSanchezQ authored Sep 11, 2023
1 parent efabf66 commit 8da13f7
Show file tree
Hide file tree
Showing 16 changed files with 45 additions and 6 deletions.
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ members = [
"nomos-services/mempool",
"nomos-services/http",
"nomos-services/data-availability",
"nomos-da-core/reed-solomon",
"nomos-da-core/kzg",
"nomos-da/reed-solomon",
"nomos-da/kzg",
"nodes/nomos-node",
"simulations",
"consensus-engine",
Expand Down
8 changes: 8 additions & 0 deletions nomos-core/src/da/attestation/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
use crate::da::blob::Blob;
use bytes::Bytes;

pub trait Attestation {
type Blob: Blob;
fn blob(&self) -> <Self::Blob as Blob>::Hash;
fn as_bytes(&self) -> Bytes;
}
File renamed without changes.
1 change: 1 addition & 0 deletions nomos-core/src/da/certificate/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pub trait Certificate {}
30 changes: 30 additions & 0 deletions nomos-core/src/da/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// std
use std::error::Error;
// crates
use bytes::Bytes;
use futures::Stream;
// internal
use crate::da::attestation::Attestation;
use crate::da::blob::Blob;
use crate::da::certificate::Certificate;

pub mod attestation;
pub mod blob;
pub mod certificate;

pub trait DaProtocol {
type Blob: Blob;
type Attestation: Attestation;
type Certificate: Certificate;

fn encode<T: AsRef<[u8]>>(&self, data: T) -> Box<dyn Stream<Item = Self::Blob>>;
fn decode<S: Stream<Item = Self::Blob>>(&self, s: S) -> Result<Bytes, Box<dyn Error>>;
fn validate_attestation(&self, blob: &Self::Blob, attestation: &Self::Attestation) -> bool;

fn certificate_dispersal<S: Stream<Item = Self::Attestation>>(
&self,
attestations: S,
) -> Self::Certificate;

fn validate_certificate(certificate: &Self::Certificate) -> bool;
}
2 changes: 1 addition & 1 deletion nomos-core/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
pub mod account;
pub mod blob;
pub mod block;
pub mod crypto;
pub mod da;
pub mod fountain;
pub mod staking;
pub mod tx;
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::backend::{DaBackend, DaError};
use moka::future::{Cache, CacheBuilder};
use nomos_core::blob::Blob;
use nomos_core::da::blob::Blob;
use std::time::Duration;

#[derive(Clone, Copy)]
Expand Down
2 changes: 1 addition & 1 deletion nomos-services/data-availability/src/backend/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
mod memory_cache;

use nomos_core::blob::Blob;
use nomos_core::da::blob::Blob;
use overwatch_rs::DynError;

#[derive(Debug)]
Expand Down
2 changes: 1 addition & 1 deletion nomos-services/data-availability/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use tokio::sync::oneshot::Sender;
// internal
use crate::backend::{DaBackend, DaError};
use crate::network::NetworkAdapter;
use nomos_core::blob::Blob;
use nomos_core::da::blob::Blob;
use nomos_network::NetworkService;
use overwatch_rs::services::handle::ServiceStateHandle;
use overwatch_rs::services::relay::{Relay, RelayMessage};
Expand Down

0 comments on commit 8da13f7

Please sign in to comment.