smart-byte-state (new): - the state and its hash; - inputs; - the frame transition; - checkpoint-and-log persistence. Checkpoints are written atomically, and replay refuses a gap or a wrong hash. - a deterministic demo workload. smart-byte-lockstep: the cluster runs these state machines in place of the rolling hash that stood in for the state. smart-byte-keri-witness: exposes a controller's state and resumes a replay from it, so the cluster extends a log one event at a time. The CLI's `cluster simulate` runs real mints and transfers through the supermajority commit. smart-byte-conformance: state_vectors.json, 12 vectors. Each is a genesis state and frames of inputs, with every input's result and every frame's state and state hash. The founding frame uses kel-001 to kel-003 and env-001's mint. Planted defects in the state vectors are caught on their own vectors. Co-Authored-By: Claude Opus 5.5 <[email protected]>
87 lines
2.8 KiB
TOML
87 lines
2.8 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = [
|
|
"crates/smart-byte-core",
|
|
"crates/smart-byte-net",
|
|
"crates/smart-byte-lockstep",
|
|
"crates/smart-byte-state",
|
|
"crates/smart-byte",
|
|
"crates/smart-byte-vc",
|
|
"crates/smart-byte-did",
|
|
"crates/smart-byte-pq",
|
|
"crates/smart-byte-didcomm",
|
|
"crates/smart-byte-mdl",
|
|
"crates/smart-byte-bbs",
|
|
"crates/smart-byte-crdt",
|
|
"crates/smart-byte-keri-witness",
|
|
"crates/smart-byte-libp2p",
|
|
"crates/smart-byte-edv",
|
|
"crates/smart-byte-zk",
|
|
"crates/smart-byte-atproto",
|
|
"crates/smart-byte-nostr",
|
|
"crates/smart-byte-activitypub",
|
|
"crates/smart-byte-ilp",
|
|
"crates/smart-byte-tendermint",
|
|
"crates/smart-byte-acdc",
|
|
"crates/smart-byte-oidc4vc",
|
|
"crates/smart-byte-conformance",
|
|
]
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
rust-version = "1.97"
|
|
license = "Apache-2.0"
|
|
repository = "https://github.com/Transaction-Science/open-standards"
|
|
authors = ["Smart Byte Contributors"]
|
|
description = "Smart Byte substrate — Apache-2.0 Rust reference implementation."
|
|
|
|
[workspace.dependencies]
|
|
# Core crypto + serialization
|
|
blake3 = "1"
|
|
ed25519-dalek = { version = "2", features = ["rand_core"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_bytes = "0.11"
|
|
serde_cbor = "0.11"
|
|
chrono = { version = "0.4", default-features = false, features = ["clock", "serde", "std"] }
|
|
thiserror = "2"
|
|
uuid = { version = "1", features = ["v4", "serde"] }
|
|
data-encoding = "2"
|
|
# rand is pinned to 0.8, NOT "latest". rand 0.10 dropped `rand::RngCore` and
|
|
# `rand::rngs::OsRng` (rand_core 0.10 renamed them Rng/TryRng), and more importantly
|
|
# it ships rand_core 0.10 -- while every signature crate here (ed25519-dalek 2.x,
|
|
# bls12_381, k256/p256) is built on rand_core 0.6, so a 0.10 RNG is not even the
|
|
# right TYPE to hand to `SigningKey::generate`. rand 0.8 re-exports rand_core 0.6,
|
|
# which is exactly what those crates want. The RNG generation is pinned by the
|
|
# crypto ecosystem, not by recency.
|
|
rand = "0.8"
|
|
|
|
# Networking
|
|
iroh = "1.0.0-rc.0"
|
|
iroh-blobs = "0.101"
|
|
|
|
# Runtime
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "io-util", "net"] }
|
|
anyhow = "1"
|
|
futures = "0.3"
|
|
|
|
# Workspace internals
|
|
smart-byte-core = { path = "crates/smart-byte-core" }
|
|
smart-byte-net = { path = "crates/smart-byte-net" }
|
|
smart-byte-lockstep = { path = "crates/smart-byte-lockstep" }
|
|
smart-byte-state = { path = "crates/smart-byte-state" }
|
|
smart-byte-keri-witness = { path = "crates/smart-byte-keri-witness" }
|
|
smart-byte-vc = { path = "crates/smart-byte-vc" }
|
|
smart-byte-pq = { path = "crates/smart-byte-pq" }
|
|
smart-byte-crdt = { path = "crates/smart-byte-crdt" }
|
|
smart-byte-bbs = { path = "crates/smart-byte-bbs" }
|
|
|
|
# CLI
|
|
clap = { version = "4", features = ["derive"] }
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "thin"
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
strip = "symbols"
|