urma-core 0.2.2

Canonical URMA V0 codecs, crypto and proof validation without I/O
Documentation

urma-core

Record formats and proof validation, without I/O.

crates.io · API reference · Source · URMA

Use urma-core when implementing a reader, encoder or verifier for URMA records. It is the protocol foundation shared by Capture, Git, Wire and other application profiles.

Get started

cargo add urma-core

Encode and decode a public record

use urma_core::format::PublicRecord;

fn main() -> Result<(), urma_core::error::Error> {
    let record = PublicRecord::Post("For the record.".to_owned());
    let bytes = record.encode()?;
    assert_eq!(PublicRecord::decode(&bytes)?, record);
    Ok(())
}

This round trip checks the record format. Verifying its publication requires the relevant transaction proofs as well.

API guide

Entry point Use it for
format Public records, record kinds and content types.
container Sealing and reconstruction of private objects.
envelope Taproot record envelopes and transaction proof checks.
multipart Multipart records, inventory, membership and consistency checks.
topics Structured topic encoding for Wire records.

Where it fits

Use urma-profiles for typed application records and urma-runtime for transport, publication and recovery. Private-object sealing takes caller-supplied randomness; key management belongs in urma-identity.

Boundaries

This crate performs no network or filesystem I/O. Protocol byte layouts and limits are defined by the API, rather than duplicated here.

License

0BSD. Part of the URMA workspace, maintained by Zmole Cristian. Project contact.