Expand description
§io_oi_core
Core consensus data structures for the io_oi distributed edge-consensus protocol.
§Feature Flags
std(default): enables [DualCacheFF] storage engine,dashmap,arc-swap, and full serialization support viaserde_json. Required for running Manager/Leader nodes on Linux/macOS.- No flags:
#![no_std]compatible mode. Only core protocol structs are available. This is the target mode for ESP32-C6 / RTOS bare-metal firmware usingalloc.
§Zero-Copy Guarantee
All network protocol types derive rkyv::Archive with size_32 + strict alignment, ensuring
identical binary layout between 64-bit host (Apple M1) and 32-bit edge (ESP32). Deserialization
from a raw byte buffer is zero-copy and zero-allocation.
§Embedded-Friendly Extensions (v0.2.1)
The embedded module provides five categories of bare-metal / RTOS utilities:
- §1
embedded::StaticVmScript/embedded::StaticSignedRecord— const-generic, heap-free types. - §2
embedded::VmScriptViewer— zero-decode pointer-arithmetic binary viewer. - §3
embedded::CryptoProvider/embedded::MiniSigCache— pluggable crypto + sig cache. - §4
embedded::EdgeFsm/embedded::EdgeEventHandler— zero-alloc event-driven FSM. - §5
embedded::FramingDecoder— const-generic UART stream framing parser.
§Quick Example
use io_oi_core::{SignedRecord, ScopedKey};
let record = SignedRecord {
epoch_id: 1,
payload: b"hello".to_vec(),
judge_signature: [0u8; 64],
record_type: 0,
};
let bytes = rkyv::to_bytes::<_, 512>(&record).unwrap();
let archived = rkyv::check_archived_root::<SignedRecord>(&bytes).unwrap();
assert_eq!(archived.epoch_id, 1);Modules§
- embedded
- Embedded-Friendly Abstractions for
io_oi_core
Structs§
- Arbitration
Result - Result of WASM arbitration: a new scorecard and the next epoch header.
- Arbitration
Result Resolver - The resolver for an archived
ArbitrationResult - Archived
Arbitration Result - An archived
ArbitrationResult - Archived
Epoch - An archived
Epoch - Archived
Gateway Frame - An archived
GatewayFrame - Archived
Merged Record - An archived
MergedRecord - Archived
Node Heartbeat - An archived
NodeHeartbeat - Archived
Node Score - An archived
NodeScore - Archived
Scoped Key - An archived
ScopedKey - Archived
Scorecard - An archived
Scorecard - Archived
Signed Record - An archived
SignedRecord - Archived
Sync Req - An archived
SyncReq - Archived
Task - An archived
Task - Archived
VmScript - An archived
VmScript - Archived
Vote - An archived
Vote - Epoch
- Global timeline epoch, issued by the Leader and broadcast network-wide.
- Epoch
Resolver - The resolver for an archived
Epoch - Gateway
Frame - A framed message transmitted over the UART/ESP-NOW bridge.
- Gateway
Frame Resolver - The resolver for an archived
GatewayFrame - Genesis
Config - Genesis configuration used to bootstrap a new io_oi network.
- Merged
Record - A batch of raw record payloads merged by a Manager before Leader submission.
- Merged
Record Resolver - The resolver for an archived
MergedRecord - Node
Context - Opaque node context passed to
StateBehaviorhandlers. - Node
Heartbeat - Periodic heartbeat broadcast by every active node.
- Node
Heartbeat Resolver - The resolver for an archived
NodeHeartbeat - Node
Score - Per-node score entry in a
Scorecard. - Node
Score Resolver - The resolver for an archived
NodeScore - Scoped
Key - A namespaced key for
SignedRecordstorage, scoped to a genesis namespace. - Scoped
KeyResolver - The resolver for an archived
ScopedKey - Scorecard
- Aggregate scorecard produced after WASM arbitration of an epoch.
- Scorecard
Resolver - The resolver for an archived
Scorecard - Signed
Record - A record that has been signed by the Leader’s ed25519 key.
- Signed
Record Resolver - The resolver for an archived
SignedRecord - SyncReq
- A synchronization request sent to locate a specific record or Epoch summary.
- Sync
ReqResolver - The resolver for an archived
SyncReq - Task
- An IoT task dispatched to edge nodes.
- Task
Resolver - The resolver for an archived
Task - VmScript
- An ordered sequence of
VmStepinstructions forming a hardware automation script. - VmScript
Resolver - The resolver for an archived
VmScript - Vote
- A vote cast by a node during a Leader election.
- Vote
Resolver - The resolver for an archived
Vote
Enums§
- Archived
Control Mode - An archived
ControlMode - Archived
Gateway Command - An archived
GatewayCommand - Archived
Trust Mode - An archived
TrustMode - Archived
VmStep - An archived
VmStep - Control
Mode - Network control and election mode.
- Control
Mode Resolver - The resolver for an archived
ControlMode - Gateway
Command - Gateway-level command. Used internally by the RESP gateway parser.
- Gateway
Command Resolver - The resolver for an archived
GatewayCommand - Trust
Mode - Network trust broadcast mode.
- Trust
Mode Resolver - The resolver for an archived
TrustMode - VmStep
- A single instruction in a micro-VM bytecode script.
- VmStep
Resolver - The resolver for an archived
VmStep
Traits§
- Record
- Application-layer record trait. Implemented by any type that participates in consensus.
- State
Behavior - Behaviour contract for node state-machine roles (Idle, Chief, Manager, Judge).
- State
Store - Persistent state storage backend trait.
Type Aliases§
- EpochId
- Monotonically increasing epoch counter (u64).
- Hash32
- 32-byte generic hash (SHA-256 or similar).
- NodeId
- 32-byte node identity (public key or genesis hash).
- Response
- Protocol response type for sync, redirect, and data operations.
- Sequence
- Per-node monotonic sequence counter for replay protection.
- Signature
- 64-byte ed25519 signature.