-
Notifications
You must be signed in to change notification settings - Fork 57
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
[consensus] Add support for commonware-consensus::authority
#111
Conversation
commonware-consensus::static
commonware-consensus::authority
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Replaced by #180 |
TODO
mocks::Application
commonware-consensus
example #137Add "stop height" where stop proposing/votingUp to applicationrequest
functionality (move to a separate channel to avoid impacting performance at tip?) + add concurrency?Voter
/Resolver
(given both serve requests for data)Application
/Supervisor
/Finalizer
trait that allows a consensus dialect to provide consensus-specific context (+ represent subtle differences betweenView
/Epoch
/Height
/etc without abstraction hell): [consensus] Add trait objects #146hasher
to external crate: [cryptography] Hasher #145Storage
implementation (powered byRuntime
) to preserve blocks and vote record. This is particularly necessary to sync to a new network without OOMing (which requires iterating backwards from tip withcommonware-consensus::authority
) + ensure safety with voting (could restart and vote for conflicting block)clock
to use this mode and begin voting as soon as have seen a finalization of some container (which floors the time).deterministic::Runtime
to have areset
function for shutdown (not intrait
)Open Questions
deserialize_payload
). Should we remove this wrapper and requireparse
to be called on the entire block? This probably comes down to how useful it is for an application record such info in the payload (to support some VM)...almost always, that VM has some notion of height/parent to build compatible blocks and thus this data will be replicated. At the same time, however, things likeview
aren't always present (i.e. the EVM) and requiring this to be provided by the payload could require breaking changes in an external VM.mocks::Application
and then implement consensus-specific traits in each consensus crate.Path to
main
Runtime::Disk
trait): [runtime] Add support forStorage
andBlob
#148Journal
#149Archive
#152Closer
to runtime for "graceful shutdown": [runtime] Implement Graceful Shutdown #157index
toArchive
#176Backfiller
architecture (not stateful): [consensus] Migrate toBackfiller
+ Review Design #177storage
constructions into consensus to support restartmin/max
timeout in config)last_processed
from application whereNone
means start at tip,0
means start at genesis, and
n` means to start from some arbitrary height) -> provide to consensus init