hop-sdk 0.1.0

Client SDK for the Polkadot HOP protocol
Documentation
/// Minimal round-trip: send a text message and claim it back.
///
/// Usage: cargo run --example hello
use hop_sdk::{HopClient, HopEnvironment};

fn main() {
    let message = "Hello from HOP!";
    let data = message.as_bytes().to_vec();

    eprintln!("Connecting to previewnet\u{2026}");
    let client = HopClient::connect(HopEnvironment::Previewnet).unwrap_or_else(|e| {
        eprintln!("Connection failed: {e}");
        std::process::exit(1);
    });

    eprintln!("Sending \"{message}\" ({} bytes)\u{2026}", data.len());
    let tickets = client.send(data, 1).unwrap_or_else(|e| {
        eprintln!("Send failed: {e}");
        client.destroy();
        std::process::exit(1);
    });

    eprintln!("Claiming data back\u{2026}");
    let received = client.claim(tickets.into_iter().next().unwrap()).unwrap_or_else(|e| {
        eprintln!("Claim failed: {e}");
        client.destroy();
        std::process::exit(1);
    });

    client.destroy();

    let decoded = String::from_utf8(received).expect("valid UTF-8");
    println!("{decoded}");

    if decoded == message {
        eprintln!("Round-trip successful!");
    } else {
        eprintln!("Mismatch! Expected \"{message}\", got \"{decoded}\"");
        std::process::exit(1);
    }
}