-
Notifications
You must be signed in to change notification settings - Fork 111
[consensus/marshal] Integrate commonware-coding
into marshal
#1680
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
base: main
Are you sure you want to change the base?
Conversation
b48f6e0
to
39ef3e4
Compare
In this case, you are referring to |
e44f142
to
9b114d1
Compare
b5abca8
to
590cdd2
Compare
a1657ec
to
acd884d
Compare
acd884d
to
5f67c8b
Compare
ecd698a
to
d902967
Compare
Adds type definitions for erasure coding.
Adds a new wrapper around the `buffered::Mailbox` that shards messages and recovers blocks upon retrieval of enough shards from the network.
Integrates the new `ShardedMailbox` into marshal, allowing for the broadcast and reconstruction of `CodedBlock`s.
Defines a new interface for applications that employ erasure coding
Introduces a wrapper around the new `Application` trait that minimizes the boilerplate required to implement applications that utilize sharded broadcast. This wrapper is possible because when using erasure coding, the verify and broadcast steps are identical for all applications.
[consensus/marshal] Append `CodingConfig` to consensus commitment
Broadcasts the local shard on verification, rather than on every notarization vote received from consensus.
Reduces pressure on the marshal control loop
d902967
to
3a1bf45
Compare
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## main #1680 +/- ##
==========================================
- Coverage 92.28% 90.53% -1.76%
==========================================
Files 304 307 +3
Lines 79179 79315 +136
==========================================
- Hits 73072 71807 -1265
- Misses 6107 7508 +1401
... and 15 files with indirect coverage changes Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
Overview
Warning
WIP; Open for early review, but not feature complete - See TODOs.
Integrates
commonware-coding
as a default withincommonware-consensus
'marshal
by adding a new shim between consensus and themarshal::Actor
. This layer is responsible for broadcasting the erasure coded chunks ofBlock
s sent by the proposer as well as reconstructing them as they arrive.Example usage of the new API in
alto
: commonwarexyz/alto#149TODO
test_finalize_good_links
test seems to be pseudo-passing; all validators are eventually reconstructing the proposed blocks & receiving the same finalized chain, but it’s failing the determinism check. Need to investigate that.ShardLayer
, prune whenOrchestrator
reports.ShardLayer
Automaton
needs this in order to verify individual chunks prior to sending notarization votes.ShardMailbox
had a way of being notified when itsbuffered::Mailbox
received shards, it could register a listener whenAutomaton::verify
initially verifies the local shard for the notarization vote. This would (hopefully) mean that by the time a proposer wanted to build on the notarized parent, the block is already present for them.CodingAdapter
will need to ensure that it never asks the application to build on a "bad" parent; The application should not need to know this detail about the consensus chain. (e: or, a more elegant solution: [consensus::simplex] Allow for a second, post-notarization-certificate,verify(...)
hook to theAutomaton
, calledfinalizable(...)
#1767)Viz
honest validator shard distribution

Meta
closes #1520