stoffel-rust-sdk 0.1.3

Rust SDK for building Stoffel MPC applications
Documentation
use std::time::Duration;

use stoffel::prelude::*;
use tracing::Level;

fn main() -> stoffel::Result<()> {
    let tracing = TracingConfig::builder()
        .service_name("stoffel-observability-example")
        .max_level(Level::INFO)
        .ansi(false)
        .build();
    println!(
        "Tracing service={} level={:?}",
        tracing.service_name(),
        tracing.max_level()
    );
    println!("Tracing summary: {:?}", tracing.summary());

    let server = StoffelServer::builder(0)
        .bind("127.0.0.1:19400")
        .with_preprocessing(100, 50)
        .build()?;

    server.metrics().record_connected_peers(4);
    server.metrics().record_connected_clients(1);
    server.metrics().record_preprocessing_remaining(80, 40);
    server
        .metrics()
        .record_computation_latency(Duration::from_millis(25));
    server.metrics().increment_computations_completed();

    let snapshot = server.metrics().snapshot();
    println!(
        "health={} peers={} completed={}",
        server.health(),
        snapshot.connected_peers,
        snapshot.computations_completed
    );

    let error = Error::Preprocessing("not enough triples".to_owned());
    println!(
        "error_category={} recoverable={} hint={:?}",
        error.category(),
        error.is_recoverable(),
        error.recovery_hint()
    );

    Ok(())
}