Skip to main content

Crate io_oi_core

Crate io_oi_core 

Source
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 via serde_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 using alloc.

§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:

§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§

ArbitrationResult
Result of WASM arbitration: a new scorecard and the next epoch header.
ArbitrationResultResolver
The resolver for an archived ArbitrationResult
ArchivedArbitrationResult
An archived ArbitrationResult
ArchivedEpoch
An archived Epoch
ArchivedGatewayFrame
An archived GatewayFrame
ArchivedMergedRecord
An archived MergedRecord
ArchivedNodeHeartbeat
An archived NodeHeartbeat
ArchivedNodeScore
An archived NodeScore
ArchivedScopedKey
An archived ScopedKey
ArchivedScorecard
An archived Scorecard
ArchivedSignedRecord
An archived SignedRecord
ArchivedSyncReq
An archived SyncReq
ArchivedTask
An archived Task
ArchivedVmScript
An archived VmScript
ArchivedVote
An archived Vote
Epoch
Global timeline epoch, issued by the Leader and broadcast network-wide.
EpochResolver
The resolver for an archived Epoch
GatewayFrame
A framed message transmitted over the UART/ESP-NOW bridge.
GatewayFrameResolver
The resolver for an archived GatewayFrame
GenesisConfig
Genesis configuration used to bootstrap a new io_oi network.
MergedRecord
A batch of raw record payloads merged by a Manager before Leader submission.
MergedRecordResolver
The resolver for an archived MergedRecord
NodeContext
Opaque node context passed to StateBehavior handlers.
NodeHeartbeat
Periodic heartbeat broadcast by every active node.
NodeHeartbeatResolver
The resolver for an archived NodeHeartbeat
NodeScore
Per-node score entry in a Scorecard.
NodeScoreResolver
The resolver for an archived NodeScore
ScopedKey
A namespaced key for SignedRecord storage, scoped to a genesis namespace.
ScopedKeyResolver
The resolver for an archived ScopedKey
Scorecard
Aggregate scorecard produced after WASM arbitration of an epoch.
ScorecardResolver
The resolver for an archived Scorecard
SignedRecord
A record that has been signed by the Leader’s ed25519 key.
SignedRecordResolver
The resolver for an archived SignedRecord
SyncReq
A synchronization request sent to locate a specific record or Epoch summary.
SyncReqResolver
The resolver for an archived SyncReq
Task
An IoT task dispatched to edge nodes.
TaskResolver
The resolver for an archived Task
VmScript
An ordered sequence of VmStep instructions forming a hardware automation script.
VmScriptResolver
The resolver for an archived VmScript
Vote
A vote cast by a node during a Leader election.
VoteResolver
The resolver for an archived Vote

Enums§

ArchivedControlMode
An archived ControlMode
ArchivedGatewayCommand
An archived GatewayCommand
ArchivedTrustMode
An archived TrustMode
ArchivedVmStep
An archived VmStep
ControlMode
Network control and election mode.
ControlModeResolver
The resolver for an archived ControlMode
GatewayCommand
Gateway-level command. Used internally by the RESP gateway parser.
GatewayCommandResolver
The resolver for an archived GatewayCommand
TrustMode
Network trust broadcast mode.
TrustModeResolver
The resolver for an archived TrustMode
VmStep
A single instruction in a micro-VM bytecode script.
VmStepResolver
The resolver for an archived VmStep

Traits§

Record
Application-layer record trait. Implemented by any type that participates in consensus.
StateBehavior
Behaviour contract for node state-machine roles (Idle, Chief, Manager, Judge).
StateStore
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.