kona_engine/
lib.rs

1#![doc = include_str!("../README.md")]
2#![doc(
3    html_logo_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/square.png",
4    html_favicon_url = "https://raw.githubusercontent.com/op-rs/kona/main/assets/favicon.ico",
5    issue_tracker_base_url = "https://github.com/op-rs/kona/issues/"
6)]
7#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
8
9//! ## Architecture
10//!
11//! The engine operates as a task-driven system where operations are queued and executed atomically:
12//!
13//! ```text
14//! ┌─────────────┐    ┌──────────────┐    ┌─────────────┐
15//! │   Engine    │◄───┤  Task Queue  │◄───┤  Engine     │
16//! │   Client    │    │   (Priority) │    │  Tasks      │
17//! └─────────────┘    └──────────────┘    └─────────────┘
18//!        │                   │                   │
19//!        ▼                   ▼                   ▼
20//! ┌─────────────┐    ┌──────────────┐    ┌─────────────┐
21//! │ Engine API  │    │ Engine State │    │ Rollup      │
22//! │ (HTTP/JWT)  │    │   Updates    │    │ Config      │
23//! └─────────────┘    └──────────────┘    └─────────────┘
24//! ```
25//!
26//! ## Module Organization
27//!
28//! - **Task Queue** - Core engine task queue and execution logic via [`Engine`]
29//! - **Client** - HTTP client for Engine API communication via [`EngineClient`]
30//! - **State** - Engine state management and synchronization via [`EngineState`]
31//! - **Versions** - Engine API version selection via [`EngineForkchoiceVersion`],
32//!   [`EngineNewPayloadVersion`], [`EngineGetPayloadVersion`]
33//! - **Attributes** - Payload attribute validation via [`AttributesMatch`]
34//! - **Kinds** - Engine client type identification via [`EngineKind`]
35//! - **Query** - Engine query interface via [`EngineQueries`]
36//! - **Metrics** - Optional Prometheus metrics collection via [`Metrics`]
37
38#[macro_use]
39extern crate tracing;
40
41mod task_queue;
42pub use task_queue::{
43    BuildTask, BuildTaskError, ConsolidateTask, ConsolidateTaskError, Engine, EngineBuildError,
44    EngineResetError, EngineTask, EngineTaskError, EngineTaskErrorSeverity, EngineTaskErrors,
45    EngineTaskExt, FinalizeTask, FinalizeTaskError, InsertTask, InsertTaskError, SynchronizeTask,
46    SynchronizeTaskError,
47};
48
49mod attributes;
50pub use attributes::{AttributesMatch, AttributesMismatch};
51
52mod client;
53pub use client::{EngineClient, EngineClientError};
54
55mod versions;
56pub use versions::{EngineForkchoiceVersion, EngineGetPayloadVersion, EngineNewPayloadVersion};
57
58mod state;
59pub use state::{EngineState, EngineSyncState, EngineSyncStateUpdate};
60
61mod kinds;
62pub use kinds::EngineKind;
63
64mod query;
65pub use query::{EngineQueries, EngineQueriesError, EngineQuerySender};
66
67mod metrics;
68pub use metrics::Metrics;