[package]
name = "cybernode"
version = "0.1.0"
edition = "2021"
description = "cybernode โ rung 7 of the soft3 ladder: the node. one binary, many network instances: the phase-1 root chain, the wire and sync, mining, the genesis pipeline, the wallet, the HTTP surface"
license-file = "LICENSE"
repository = "https://github.com/cyberia-to/cybernode"
homepage = "https://cybernode.ai"
readme = "README.md"
keywords = ["cybernode", "soft3", "cyber", "cybergraph", "node"]
categories = ["command-line-utilities", "science"]
rust-version = "1.85"
[lib]
name = "cybernode"
path = "src/lib.rs"
bin
name = "cybernode"
path = "src/bin/cybernode.rs"
[workspace]
[features]
# the reference miner ships with its GPU backends (specs/chain.md ยง8: the
# first competent GPU kernel is the majority miner, so it must not be a secret)
default = ["metal", "webgpu"]
# `cybernode mine --backend metal`: hemera_mine on the Apple GPU (Apple Silicon macOS; a no-op elsewhere, Intel macs included)
metal = ["dep:cyber-lens-gpu", "cyber-lens-gpu/metal"]
# `cybernode mine --backend webgpu`: hemera_mine through wgpu (Vulkan, DX12, Metal, GL)
webgpu = ["dep:cyber-lens-gpu", "cyber-lens-gpu/webgpu"]
# chain-conformance.md sections 1-9: vectors as tests (`cargo test --features chain-conformance`)
chain-conformance = []
# out-of-tree simulators (cyberia-to/simulation): `params::sim_pow`, a
# process-wide relaxed POW_LIMIT for private test genesis files. Never in a node.
sim = []
[dependencies]
# real node engine
cybergraph = { version = "0.1.1", path = "../../cybergraph", features = ["local-storage"] }
foculus = { version = "0.1.1", path = "../../foculus", default-features = false }
hemera = { package = "cyber-hemera", version = "0.4", path = "../../hemera/rs" }
# header mining kernels (Metal, WebGPU) โ lens release/0.2 `gpu/`
cyber-lens-gpu = { version = "0.1.1", path = "../../lens/gpu", optional = true }
# ฯ*, J and the syntropy gradient of the focus economy (chain-economy ยง4โยง5;
# tru specs/epoch.md): the epoch engine every full node runs at settlement
tru = { package = "cyber-tru", version = "0.1", path = "../../tru/rs" }
# genesis pipeline: snapshot โ manifest โ bbg state root (specs/genesis.md)
bbg = { version = "0.3", path = "../../bbg/rs" }
# mudra: genesis reads legacy keys; wallet signs NSIG1 and derives keys from a spell (`bridge`); the chain verifies NSIG1
mudra = { package = "cyber-mudra", version = "0.1.0", path = "../../mudra", default-features = false, features = ["bridge"] }
sha2 = "0.10"
bech32 = "0.11"
base64 = "0.22"
flate2 = "1"
# tade framing: the genesis file and the chain wire dialect
tade = { version = "0.1", path = "../../tade/impl/rust" }
# chain store (specs/chain.md ยง3.6): headers, bodies, undo journals
fjall = { version = "2", path = "../../bbg/rs/vendor/fjall" }
# phase-1 root chain wire (specs/chain-wire.md): radio transport, gossip
radio = { package = "cyber-radio", version = "0.1", path = "../../radio/iroh" }
iroh-gossip = { version = "0.96", path = "../../radio/iroh-gossip" }
tokio = { version = "1.44", features = ["rt-multi-thread", "macros", "sync", "time", "net", "io-util"] }
n0-future = "0.3"
rand = "0.9"
toml = "0.8"
bytes = "1"
# probe + http client for sync
ureq = { version = "2", default-features = false, features = ["tls"] }
serde_json = "1"
serde = { version = "1", features = ["derive"] }
[dev-dependencies]
# the known-answer key of chain-conformance ยง6 is BIP-39 derived
mudra = { package = "cyber-mudra", version = "0.1.0", path = "../../mudra", features = ["bridge"] }
# hemera is the proof of work: tests and the local harness mine real blocks
# (chain-conformance ยง9) on a debug build, which an unoptimized permutation
# makes minutes slower. Release builds are unaffected.
[profile.dev.package.cyber-hemera]
opt-level = 3