[package]
name = "power_house"
version = "0.3.3"
edition = "2021"
authors = ["MFENX LLC"]
description = "Deterministic proofs, portable .pha provenance, Rootprint graphs, and optional quorum networking."
documentation = "https://docs.rs/power_house"
repository = "https://github.com/JROChub/power_house"
homepage = "https://mfenx.com"
readme = "README.md"
license = "MIT OR BSD-2-Clause"
keywords = ["cryptography", "proofs", "provenance", "sum-check", "verification"]
categories = ["cryptography", "algorithms", "mathematics"]
include = [
  "Cargo.toml",
  "LICENSE",
  "LICENSES/**",
  "NOTICE",
  "README.md",
  "RELEASE_NOTES.md",
  "JULIAN_PROTOCOL.md",
  "docs/*.md",
  "artifacts/*.json",
  "benchmarks/**",
  "conformance/**",
  "configs/network.json",
  "infra/ops/*.py",
  "infra/ops/*.sh",
  "infra/digitalocean/*",
  "infra/monitoring/*.conf",
  "infra/monitoring/*.py",
  "infra/monitoring/*.service",
  "infra/monitoring/*.yml",
  "infra/scripts/*.sh",
  "infra/systemd/*",
  "infra/terraform/digitalocean/.terraform.lock.hcl",
  "infra/terraform/digitalocean/*.tf",
  "infra/terraform/digitalocean/README.md",
  "infra/terraform/digitalocean/terraform.tfvars.example",
  "scripts/benchmark_sparse.py",
  "scripts/benchmark_v030.py",
  "scripts/check_rpc.py",
  "scripts/check_release_consistency.py",
  "scripts/check_rustdoc_links.py",
  "scripts/deploy_monitoring_stack.sh",
  "scripts/deploy_rpc_cluster.sh",
  "scripts/digitalocean_rpc_preflight.sh",
  "scripts/generate_rpc_cluster.py",
  "scripts/provision_digitalocean_rpc.sh",
  "scripts/rpc_load_test.py",
  "scripts/soundness_budget.py",
  "scripts/test_digitalocean_provision.sh",
  "scripts/test_generate_rpc_cluster.py",
  "scripts/test_native_rpc_cluster.sh",
  "scripts/test_observatory_contract.py",
  "scripts/test_rpc_check.py",
  "scripts/test_sparse_verifier.py",
  "scripts/verify_sparse_certificate.py",
  "sdk/python/**",
  "src/**",
  "examples/**",
  "tests/**",
  "!infra/terraform/digitalocean/.terraform/**",
]

[badges]
maintenance = { status = "actively-developed" }

[package.metadata.docs.rs]
all-features = true
targets = ["x86_64-unknown-linux-gnu"]

[features]
default = []
net = [
  "dep:base64",
  "dep:ed25519-dalek",
  "dep:futures",
  "dep:k256",
  "dep:libp2p",
  "dep:once_cell",
  "dep:rand_core",
  "dep:reqwest",
  "dep:reed-solomon-erasure",
  "dep:rlp",
  "dep:rpassword",
  "dep:thiserror",
  "dep:tokio",
]

[dependencies]
ark-bn254 = "0.4"
ark-crypto-primitives = { version = "0.4", features = ["crh", "merkle_tree", "r1cs"] }
ark-ed-on-bn254 = { version = "0.4", features = ["r1cs"] }
ark-ff = "0.4"
ark-groth16 = "0.4"
ark-r1cs-std = { version = "0.4", features = ["std"] }
ark-relations = "0.4"
ark-serialize = "0.4"
base64 = { version = "0.21", optional = true }
blake2 = "0.10"
ed25519-dalek = { version = "2", features = ["rand_core"], optional = true }
futures = { version = "0.3", optional = true }
hex = "0.4"
k256 = { version = "0.13", features = ["ecdsa"], optional = true }
libp2p = { version = "0.53", default-features = false, features = [
  "gossipsub",
  "identify",
  "kad",
  "macros",
  "noise",
  "tcp",
  "tokio",
  "yamux",
], optional = true }
once_cell = { version = "1", optional = true }
rand = "0.8"
rand_core = { version = "0.6", optional = true }
reqwest = { version = "0.11", default-features = false, features = ["json", "rustls-tls"], optional = true }
reed-solomon-erasure = { version = "6", optional = true }
rlp = { version = "0.5", optional = true }
rpassword = { version = "7", optional = true }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
sha2 = "0.10"
sha3 = "0.10"
thiserror = { version = "1", optional = true }
tokio = { version = "1", features = [
  "rt-multi-thread",
  "macros",
  "time",
  "signal",
  "net",
  "io-util",
  "sync",
], optional = true }

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
rayon = "1"

[dev-dependencies]
proptest = "1"
