ee5b55fab6
* Feature/ephemera compile (#3437) * Include ephemera node code in repo * Upgrade deps * Bump minor version of cosmwasm-std * Include ephemera in nym-api dep and downgrade rusqlite * Fix clippy and ephemera docs code * More clippy on ephemera --------- Co-authored-by: Andrus Salumets <andrus@nymtech.net> * Start ephemera components in nym-api (#3475) * Start ephemera components in nym-api * Pass nyxd client and use common metric structures * Swap url endpoint with contract for sending rewarding messages * Fix build after rebase * Perform ephemera rewards computation before normal nym-api ones * Remove contract mock from ephemera * Take raw rewards from network monitor * Remove ephemera old reward version * Use nym shutdown procedure in ephemera * Temporary fix for some warnings * Umock contract membership of ephemera (#3574) * Pass nyxd client to members provider * Basic ephemera contract * Add register peer tx * Add query all peers * Nyxd ephemera client * Add registration of ephemera peer * Replace epoch http api with actual contract * Merge ephemera config into nym-api config * Load cluster from contract * Guard nym-outfox out of cosmwasm builds (#3650) * Feature/fixes while testing (#3668) * Commit local peer before querying contract * Default to anyonline * Remove string from template * Fix avg computing * Use updated qa env * Fix clippy * Add unit tests for ephemera contract * Upload ephemera contract in CI * Add group check for peer signup * Peer registration unit test * Start ephemera only on monitoring * Remove old MixnodeToReward struct * Move all ephemera config to its file * Skip with serde ephemera config * Fix default value in args * Feature/add ephemera flag (#3727) * Replace unwrap with error handling * Add ephemera enable flag * Fix template * Add json schema to ephemera contract (#3735) * Update lock files * Update changelog --------- Co-authored-by: Andrus Salumets <andrus@nymtech.net>
27 lines
1.2 KiB
Rust
27 lines
1.2 KiB
Rust
//! # Block manager
|
|
//!
|
|
//! Block manager is quite simple. It keeps pending messages in memory and puts all of them into a block
|
|
//! at predefined intervals. That's all it does.
|
|
//!
|
|
//! If the block actually will be broadcast or not is decided by the application. If not, it will produce next block with
|
|
//! the same messages plus the new ones.
|
|
//!
|
|
//! When application shuts down, pending messages are lost.
|
|
//!
|
|
//! When a block gets accepted by reliable broadcast then Block Manager will remove all messages included in the block from the
|
|
//! pending messages queue.
|
|
//!
|
|
//! # Synchronization and duplicate messages in sequence of blocks
|
|
//!
|
|
//! When previous block hasn't been accepted yet, then the next block will contain the same messages as the previous one.
|
|
//! One way to solve this is that an application itself keeps track of duplicate messages and discards them if necessary.
|
|
//!
|
|
//! But it seems a reasonable assumption that in general duplicate messages are unwanted. Therefore, Ephemera solves this
|
|
//! by dropping previous blocks which get Finalised/Committed after a new block has been created.
|
|
|
|
pub(crate) mod builder;
|
|
pub(crate) mod manager;
|
|
pub(crate) mod message_pool;
|
|
pub(crate) mod producer;
|
|
pub(crate) mod types;
|