Commit Graph

76 Commits

Author SHA1 Message Date
Álex 09885b2cc4
feature(kzgrs): Use only commitment hash on encoder and verifier. (#973) 2024-12-31 15:46:55 +01:00
Álex 1260230898
feature(wire): Wrap errors (#950) 2024-12-19 19:11:21 +01:00
Álex 739df1737a
feature(encoder): Implement Iterator over DaBlob for EncodedData (#952) 2024-12-19 18:40:18 +01:00
Álex 8f79bafe55
refactor(tests): Gather utilities (#951) 2024-12-19 18:09:21 +01:00
Álex 044fd4c8ee
refactor: Replace remaining bincode calls with wire. (#946) 2024-12-18 17:37:41 +01:00
Álex d5d87b094c
feature(da): Rust-based protobuf-like protocol (#945) 2024-12-18 15:46:07 +01:00
Álex 72535e83b5
feature(tracing): bandwith on DA (#931) 2024-12-11 16:34:06 +01:00
Roman Zajic 8c3c4c1bfb
fix: Apply Nomos library code review recommendations (#898)
* fix: zero polynomial check

* fix: formatting

* fix: check for division by zero polynomial earlier in the process

* fix: introduce hiding bound and random generator

* fix: clippy happy

* fix: add randomness to generate_element_proof

* fix: clippy happy

* fix: include random_v in proof validation

* fix: add domain size check for production mode

* fix: formatting

* fix: skip IDING_BOUND check for tests

* fix: exclude HIDING_BOUND in commit params for tests

* test: add randomness to batch generate proofs

* fix: cleanup
- check for minimal domain size
- check for hiding bound
- randomness added
2024-12-09 22:27:15 +08:00
Álex 3ca1d9531b
Update benchmark parameters for rs-decode. (#930) 2024-12-09 14:55:46 +01:00
Daniel Sanchez d67b5c5a09
Add reconstruct bench (#932) 2024-12-05 10:32:27 +01:00
Daniel Sanchez 727b838042
Add rs encode/decode benches (#907) 2024-11-07 05:17:54 +01:00
gusto 193ff82980
Cli: Dissemination and retrieval (#851)
* Remove chat and dissemination from nomos-cli

* Dissemination using executor http client in nomos-cli

* Blob retrieval from indexer using executor http client

* Range reqeust type from nomos-node

* Split executor and validator commands
2024-10-24 16:21:27 +03:00
Daniel Sanchez 5a85281ec0
Use tokio 1 in deps (#842) 2024-10-22 16:59:42 +02:00
Giacomo Pasini ad88d2bc0c
Add first tx defition (#835)
* Add first tx defition

* address review comments

* review comments
2024-10-22 15:51:54 +02:00
Deep Mondal b0142d7173
Fix: membership comments to documentation (#838)
* rebased

* doc comment add

* fmt
2024-10-22 13:13:29 +02:00
gusto 328398ca68
DA: Use executor in tests (#818)
* Use executor in tests instead of nomos node

* Executor config from node config

* Bring generics to the testing game

* Fill in missing gaps in test

* Implement testnode wrapper

* Use sleep on dispersal service instead

* Fix cfgsync

* Clippy happy

* Clippy happy tests

* Mixnet config in tests for validator

* Tests: General config and multiple nodes (#832)

* Use executor in tests instead of nomos node

* Bring generics to the testing game

* Fill in missing gaps in test

* Clippy happy

* Mixnet config in tests for validator

* Derive different types of configs from general in tests

* Validator and executor in cfgsync

---------

Co-authored-by: danielSanchezQ <3danimanimal@gmail.com>

* Tests executor node mix config (#834)

* Merge branch 'master' into tests-executor-node-mix-config

* add mix configs

---------

Co-authored-by: danielSanchezQ <3danimanimal@gmail.com>
Co-authored-by: Youngjoon Lee <5462944+youngjoon-lee@users.noreply.github.com>
2024-10-21 15:38:56 +03:00
Youngjoon Lee 163cc2ce64
chore: clippy: remove irrefutable `let...else` patterns in DA (#830) 2024-10-20 01:49:48 +09:00
Daniel Sanchez 41a9387b4b
DA: Executor dispersal auto stream (#826)
* Re-structure connection handling properly

* Handle event based connections

* Fix test

* Handling auto reconnection for dispersal behaviour

* Ignore cli test
2024-10-17 14:10:28 +00:00
Daniel Sanchez 11ddb23795
Ci: kzg bench update (#813)
* Update kzg benches

* Add bench check to CI
2024-10-08 16:39:38 +00:00
gusto 22dfb51eba
Executor: Dispersal service mempool adapter (#810)
* Pass metadata when dispersing

* Sketch of executor dispersal mempool adapter
2024-10-08 11:03:34 +03:00
Daniel Sanchez a3cea9a09c
DA: Implement data reconstruction from original columns (#808)
* Implement data reconstruction from original columns

* Make reconstruction public
2024-10-08 07:15:41 +00:00
Daniel Sanchez 98e9cde66d
DA: Executor dispersal service (#806)
* Added basic dispersal structure

* Expand impl

* Pull events from network service

* Implement network adapter
Tie types together in service

* Fill up service processing

* Tie up types in kzgrs backend implementation

* Implement disperse

* Pipe encode and dispersal

* Create mempool adapter

* Add mempool adapter

* Tiny comment
2024-10-04 13:06:42 +00:00
gusto d17afcbe4d
Replication behavior membership test (#805) 2024-10-03 20:37:13 +03:00
Caio 93de3afaf9
chose: fk20 benches clippy happy (#800) 2024-10-03 04:43:46 +00:00
Deep Mondal 563bf6f948
DA: kzg main testing parallelize proofs checks (#803) 2024-10-03 04:37:53 +00:00
Daniel Sanchez 9ecd738d6e
DA: Executor network service (#795)
* Refactor common things in backends

* Further extract to common

* Extract dial_peers

* Pipe out executor events

* Add wrapper settings

* Dial up dispersal peers

* Clippy happy

* dial_peers -> dial_validator_subnetwork_peers

* Add members list to membership trait

* Implement peers selection and dialing up from specification

* Fix tests

* Fix tiny doc
2024-10-01 12:44:13 +00:00
Daniel Sanchez 02b6969967
DA: Executor behaviour + swarm (#768)
* Add executor behaviour

* Implement executor behaviour

* Implement executor swarm

* Fix comment

* Clippy happy

* Bubbled up utility methods on swarms
2024-09-26 09:58:49 +00:00
gusto 915fe3f098
DA: Replication integration (#764)
* Handle replication messages

* Multiple indexes for kzgrs verifier

* Add rocksdb storage to node config

* Configurable delay before sending blob info to mempool

* Dial peers in same subnet for replication

* Update da integration tests

* Update nomos node tests

* Load kzgrs config from file

* SLOW_ENV set true for macos CI

* Assert retrieved blobs in dissemination test

* Kzgrs params deserialize unchecked
2024-09-25 11:27:39 +03:00
gusto 9f4f139771
DA: Integration tests for sampling and dispersal (#733)
* Use common test node in da tests

* Pick ranged subnetids when sampling

* Da network settings for integration tests

* Predefined node keys and deterministic rng

* Disperse kzgrs encoded blob

* Cli swarm fixes

* Increase indexer integration test timeout

* Check dispersal responses in cli da adapter

* DA membership configuration in node tests

* Nomos Cli act as a node in tests

* Increase timeout for dispersal tests

* Different node configurations for da tests

* Collect unique ids for sampling
2024-09-18 16:22:36 +03:00
Youngjoon Lee 8a1e705792
DA: Fix compliation errors in KZG backend bench (#737) 2024-09-17 18:32:11 +09:00
gusto 9835d09b8c
Column index in the sample requests (#731) 2024-09-06 18:39:50 +03:00
gusto f8a73529cf
DA: Incoming sampling request handling (#730)
* WIP: Sample message to behaviour massage translation

* Sampling request handling

* Sampling storage in node

* Sampling rocksdb scaffold
2024-09-06 16:47:38 +03:00
Daniel Sanchez a13f8611ee
DA: Consensus sampling (#708)
* Add sampling relay to consensus and massage all generics

* Pipe in sampling filtering of blob info

* Add mark in block

* Pipe validate block

* Refactor mark_in_block -> mark_complete

* Fix generics on tests

* Fix generics on tests

* Fix rebase

* Cargo fmt after rebase

* Sampling service configuration

* Sampling service config in indexer integration tests

---------

Co-authored-by: Gusto <bacvinka@gmail.com>
2024-09-03 15:02:49 +00:00
Roman Zajic c4c5eba642
chore: Da kzgrs-backend unit tests update (#700)
* test: verify column error cases

* test: verify chunks error cases

* test: simplify vec modification

* test: check column_id getter

* fix: remove check column_id getter
- related function will be removed
2024-09-03 18:56:20 +08:00
holisticode efff80de67
Sampling backend implementation (#709)
* implemented backend; correct start of monitoring thread needs to be finished

* Fix kzgrs backend (#710)

* abstract rng

* fix rng abstraction

* replaced subnets vector with HashSet, fixed bugs, added tests

* addressed PR comments

* fix clippy warnings

* Rename TrackingState -> SamplingState

* Short circuit failure on init error

---------

Co-authored-by: Daniel Sanchez <sanchez.quiros.daniel@gmail.com>
Co-authored-by: danielSanchezQ <3danimanimal@gmail.com>
2024-09-03 08:25:12 +00:00
holisticode 0cb039d806
DA: Sampling service (#705)
* initial

* first iteration, lots of lifetime and trait issues, does not compile

* Daniel/sampling service (#706)

* Implement sampling service

* Implement libp2p adapter listen_to_sampling_messages

* temporary empty backend mod; implement start_sampling

* addressed PR comments; moved random sampling subnet list generation to backend (todo impl)

* addressed PR nitpicks

* remove empty mod which was failing CI due to cargo fmt

* removed unused code

---------

Co-authored-by: holisticode <holistic.computing@gmail.com>
Co-authored-by: Daniel Sanchez <sanchez.quiros.daniel@gmail.com>
2024-08-27 13:42:52 -05:00
gusto d5ceceff9e
DA Network in node (#704)
* DA Network in node

* Use ed25519 curve for peerIds in libp2p
2024-08-27 16:47:14 +03:00
Daniel Sanchez c611319622
Da: Network addresses (#703)
* Crate address book

* Add addressbook on necesary places
Incorporate to sampling test

* fmt happy
2024-08-27 10:15:45 +00:00
Daniel Sanchez 2f6d265aa6
Implement filler with original side replication (#702) 2024-08-26 10:20:47 +02:00
gusto 37c22d23ce
DA: Network service executor (#701)
* Nomos cli executor swarm

* Executor swarm and backend in nomos-cli

* Libp2p executor adapter in nomos cli

* Update nomos-cli/src/da/network/backend.rs

Co-authored-by: Daniel Sanchez <sanchez.quiros.daniel@gmail.com>

* Use FillFromNodeList with executor backend

* Integrate Executor backend into the cli

* Use subnetwork id where appropriate

* Common clone_deserialize_error

* Use thiserror

* Minimal dialing in cli swarm

* Send dispersal messages async

* Remove unused connection id

---------

Co-authored-by: Daniel Sanchez <sanchez.quiros.daniel@gmail.com>
2024-08-26 11:00:34 +03:00
Daniel Sanchez fcb903c14a
Implement filler v1 (#698) 2024-08-23 08:56:10 +00:00
Daniel Sanchez 66de571bfa
Da: network service backend (#695)
* Sketch up types and backend skeleton

* Pipe up sampling events

* Pipe up validation blobs events

* Added docs

* Cargo fmt

* Clippy happy

* Debug log events in validator swarm run method
2024-08-22 10:14:42 +00:00
gusto 3671376691
DA: Store and load multiple columns for the same blob in a single node (#694)
* ColumnIndex type in Blob trait

* Store blob id and column after verification

* Use blob_id+column_idx storage scheme in indexer

* Store and load multiple columns for the same blob

* Add comments
2024-08-21 16:23:36 +03:00
gusto 2ca822e6ec
ColumnIndex in DaBlob (#693)
* ColumnIndex in DaBlob

* Use u16 for column index
2024-08-20 13:15:16 +03:00
Daniel Sanchez 2922e9ce74
Da: validator network behaviour & swarm (#691)
* Build up validator behaviour and swarm

* Refactor modules

* More barebones structure on validator swarm

* Refactor protocols into submodule

* Pipe up events stream into swarm impl

* Clippy happy on tests
2024-08-19 16:17:10 +00:00
gusto c7ba1f56f6
DA: Dispersal in Cli App with mock backend (#690)
* WIP: cli dispersal reenable

* WIP: Nomos da network mock in cli app

* Mock adapter with KzgEncoder in cli

* Send BlobInfo to the mempool

* KzgrsSettings in dispersal cli app

* Dispersal backend mock for executor

* build_attestation_message to build_blob_id refactor

* Pass blob metadata via the cli args
2024-08-19 15:44:55 +03:00
Daniel Sanchez d2c178f33d
Da: Network sampling (#689)
* Fix reading messages state machine

* Improve waker on behaviour

* Rename test

* First sketch

* Implement replication

* Refactor protocols names

* Clippy happy

* expose behaviour

* Return dummy on outbound for validator behaviour

* Implement behaviour, lacks streams handling

* Cleanup

* Implement stream handling

* Add some documentation and comments

* Clippy fixes after rebase

* Move all neighbours to test_utils module

* Executor only outgoing streams

* First assault at testing behaviours

* Add debug instead of traces

* Added more logs

* Bullshitting tests

* Fix outstream handling, offers hook to send new peer streams

* Fix blob dispersal handling

* Refactor test, use new api

* Imports cleanup

* Working test

* Add docs

* Non overlapping test port

* Added sampling protocol

* Sketch up sampling behaviour types

* Implement behaviour

* Added test

* Mid protocol, not working

* Reimplement using streams (just outgoing, incoming missing)

* Implemented with single streams

* Fix unreachable code reachable

* Fix block test

* Clippy happy

* Better docs
2024-08-16 11:12:34 +00:00
Daniel Sanchez 5f0707c276
Da: Network dispersal (#688)
* Fix reading messages state machine

* Improve waker on behaviour

* Rename test

* First sketch

* Implement replication

* Refactor protocols names

* Clippy happy

* expose behaviour

* Return dummy on outbound for validator behaviour

* Implement behaviour, lacks streams handling

* Cleanup

* Implement stream handling

* Add some documentation and comments

* Clippy fixes after rebase

* Move all neighbours to test_utils module

* Executor only outgoing streams

* First assault at testing behaviours

* Add debug instead of traces

* Added more logs

* Bullshitting tests

* Fix outstream handling, offers hook to send new peer streams

* Fix blob dispersal handling

* Refactor test, use new api

* Imports cleanup

* Working test

* Add docs

* Non overlapping test port
2024-08-12 09:12:08 +02:00
Roman Zajic 4150c6514d
chore: Da kzgrs unit tests update (#676)
* test: blst error conversions

* test: compute roots of unity

* test: variant with Toeplitz1Cache value

* test: verify_column error cases

* test: add DaEncoderParams::new case

* fix: reduce code duplicity for test_verify_column

* test: build_certificate error cases

* test: Certificate related methods

* test: VidCertificate related methods
- Index

* fix: revert changes for kzgrs-backend
2024-08-05 17:57:33 +08:00
gusto 9ad4ee7a3c
DA: DispersedBlobInfo trait in nomos-core and kzgrs-backend (#686)
* DispersedBlobData in nomos-core

* Implement BlobInfo in kzgrs-backend

* Fullreplication BlobInfo

* Use block info in da mempool

* Blob info in consensus

* Blob info in da-verifier

* BlobInfo in da indexer

* BlobInfo in nomos-api

* Verifier and Indexer integration tests with BlobInfo

* Blob info in nomos node

* Import DaEncoder trait
2024-08-02 20:01:18 +03:00