exoware-simplex 2026.5.0

Index artifacts emitted by Simplex.
Documentation

exoware-simplex

Store-backed upload helpers for Commonware Simplex artifacts.

The crate uses the Commonware Library revision pinned by the workspace Cargo.toml and stores encoded artifacts in Exoware Store rows:

  • header bytes by digest
  • full { header, body } block data by digest
  • notarized { proof, header } by Simplex view
  • finalized { proof, header } by Simplex view
  • finalized { proof, header } by block height
use exoware_simplex::{Finalized, SimplexClient};

# async fn example<B, S, D>(
#   store_url: &str,
#   proof: commonware_consensus::simplex::types::Finalization<S, D>,
#   header: B,
# ) -> Result<(), Box<dyn std::error::Error>>
# where
#   B: commonware_consensus::Block<Digest = D>,
#   S: commonware_cryptography::certificate::Scheme,
#   D: commonware_cryptography::Digest,
# {
let client = SimplexClient::new(store_url);
let finalized = Finalized::new(proof, header)?;
let receipt = client.upload_finalized(&finalized).await?;
println!("stored at sequence {}", receipt.store_sequence_number);
# Ok(())
# }

Use prepare_header, prepare_block, prepare_notarized, and prepare_finalized when multiple Simplex artifacts should be staged into a shared StoreWriteBatch.

Finalized records can be read back by view, by height, or as the latest finalized height index. Header bytes can be read independently with get_header; the full { header, body } envelope can be read with get_block. The certificate wrappers validate that the certificate payload digest matches the paired header's Block::digest() during construction and decoding. If the body must be authenticated, make that commitment part of the header format and store the full block separately with upload_block or prepare_block.

For the sandbox, the simplex binary can seed deterministic threshold-VRF MinSig finalizations into a running simulator:

cargo run --package exoware-simplex --bin simplex -- \
  seed --store-url http://127.0.0.1:8080 --interval-secs 2

The seeder prints the scheme, namespace, and encoded threshold verification material used by the emitted certificates. Paste those values into the sandbox Simplex panel before fetching or subscribing to verified certificates. By default, seeding starts at a time-based height so restarting against a reused simulator still advances the latest finalized height index; pass --start-height to override it.