Add an initial simple but functional implementation for a data
availability protocol.
Full replication simply encodes bytes in a single blob which is
replicated in all nodes.
* Adopt a sans-IO style for DaProtocol
Remove async streams from the DaProtocol trait to avoid creating
dependencies on actual I/O. The protocol it's now transformed into
a state machine with an input and output buffer.
In addition, a method to create an attestation was added to the
trait.
* add forgotten &mut to certify_dispersal
* add forgotten &self param to validate certificate
* Move config to a new location
* Log config override with env variables
* Network config override with env variables
* Http env vars
* Consensus env vars
* Remove explicit target
* Use default profile for windows build
* Use stable-gnu for tests
* Make polars optional feature in simulations
* Remove unnecessary ci debug steps
* Add basic da module and traits
* Pipe new blobs and internal message handling
* Add and pipe send attestation method
* Add blob trait
* Make da backend async
* Implement mocka backend
* Bound blob in da backend to blob trait
* Added remove blob
* Rename reply to attestation
* implement research overlay
* Add branch overlay
* Branch overlay config in simulation
* Remove research related extensions
* Use branch_depth and chunks
---------
Co-authored-by: Gusto <bacvinka@gmail.com>
* Add support for libp2p backend in integration tests
* Add support for libp2p in nomos-node
* change default to waku
* add mutually exclusive features warning
* disable default features to avoid unification
* disable default features
* remove leftover cargo build
* Make sure we are subscribed to libp2p topic at startup
* unify imports
* typo in ci config
* Sequential build and test steps for features
* Add RandomBeaconState to libp2p carnot variant
---------
Co-authored-by: Gusto <bacvinka@gmail.com>
* Move roundrobin to leadership module
* Use references in leader selection
* Add membership traits to overlay and create membership module
* Implement committee membership for random beacon state
* Update flat overlay
* Create updateable membership traits and impls
* Update tree overlay
* Update overlay on consensus service
* Update overlay on simulations nomos node
* Update types on tests and modules
* Use chacha for shuffling
* Change to mut slice instead of inner cloning
* Use fisher yates shuffle from scratch
* Stylish and clippy happy
* Add ci build steps for libp2p node version
* Update ci/Jenkinsfile.nightly.integration
Co-authored-by: Youngjoon Lee <taxihighway@gmail.com>
* Fix typos
* Use features in cargo check
* Feature and testcase matrix for integration tests
* Use jenkins matrix to seperate steps for different features
---------
Co-authored-by: Youngjoon Lee <taxihighway@gmail.com>
* Generate network events for self messages
Waku does that and it's kind of convenient not to handle ourselves
in a different way from the rest.
* Use bigger buffer + fmt
When receiving messages coming from libp2p IWANT requests, it's
common to receive a burst of packest which can cause subscribers
to lag. To account for that, let's increase the buffer in the
broadcast channel.
* Check if topic is being subscribed before self-notification (#292)
* fmt
---------
Co-authored-by: Youngjoon Lee <taxihighway@gmail.com>
* Add initial implementation of libp2p consensus adapter
Co-authored-by: Youngjoon Lee <taxihighway@gmail.com>
* fix
* Handle all message types received via gossipsub (#283)
* remove todo
Co-authored-by: Youngjoon Lee <taxihighway@gmail.com>
---------
Co-authored-by: Youngjoon Lee <taxihighway@gmail.com>
* Add prune older blocks call
* Prune older blocks in simulation app
* Use latest safe view for failure case
* Pick parent view from high qc
* Add safety assertion on pruning method
* Add initial peer config to nomos-libp2p
* Use custom message id to avoid duplicates
* Expose reference to the inner swarm
* move closure into function