/ Cargo.toml
Cargo.toml
  1  [workspace.package]
  2  version = "0.1.0"
  3  edition = "2024"
  4  description = "A Cardano blockchain node implementation"
  5  license = "Apache-2.0"
  6  authors = ["Amaru Maintainers <amaru@pragma.builders>"]
  7  repository = "https://github.com/pragma-org/amaru"
  8  homepage = "https://github.com/pragma-org/amaru"
  9  documentation = "https://docs.rs/amaru"
 10  rust-version = "1.91"                                    # ⚠️ Also change in .cargo/rust-toolchain.toml
 11  
 12  [workspace]
 13  members = ["crates/*", "simulation/*"]
 14  default-members = ["crates/*"]
 15  resolver = "2"
 16  
 17  [workspace.dependencies]
 18  # External dependencies
 19  acto = { version = "0.8.0", features = ["tokio"] }
 20  anyhow = "1.0.100"
 21  async-compression = { version = "0.4.32", features = ["tokio", "gzip"] }
 22  async-trait = "0.1.83"
 23  assert-json-diff = "2.0.2"
 24  bech32 = "0.11.0"
 25  binrw = "0.15.0"
 26  bytes = "1.10.1"
 27  cbor4ii = { version = "1.1.1", features = ["serde1", "use_std"] }
 28  clap = { version = "4.5.48", features = ["derive", "env"] }
 29  either = "1.15"
 30  futures-util = "0.3.31"
 31  hex = "0.4.3"
 32  indicatif = "0.18.0"
 33  indoc = "2.0"
 34  itertools = "0.14.0"
 35  minicbor = { version = "0.25.1", features = ["std", "half", "derive"] } # Must match the version used by pallas
 36  num = { version = "0.4.3", default-features = false, features = ["alloc"] }
 37  opentelemetry = "0.31.0"
 38  opentelemetry-otlp = { version = "0.31.0", features = [
 39    "grpc-tonic",
 40    "http-proto",
 41    "reqwest-blocking-client",
 42  ] }
 43  opentelemetry_sdk = "0.31.0"
 44  pallas-addresses = "0.33.0"
 45  pallas-codec = "0.33.0" # When updating, double check that minicbor doesn't need to be updated too (see https://github.com/txpipe/pallas/blob/v0.32.0/pallas-codec/Cargo.toml#L22)
 46  pallas-crypto = "0.33.0"
 47  pallas-math = "0.33.0"
 48  pallas-network = "0.33.0"
 49  pallas-primitives = "0.33.0"
 50  pallas-traverse = "0.33.0"
 51  parking_lot = "0.12.3"
 52  rand = "0.9.2"
 53  rayon = "1.10"
 54  reqwest = { version = "0.12.20", default-features = false, features = ["json", "stream", "rustls-tls"] }
 55  rocksdb = { version = "0.24.0", default-features = false, features = [
 56    "bindgen-runtime",
 57    "snappy",
 58    "multi-threaded-cf"
 59  ] }
 60  rustversion = "1.0.22"
 61  serde = { version = "1.0.228", default-features = false }
 62  serde_json = { version = "1.0.145", default-features = false }
 63  sha3 = "0.10.8"
 64  sysinfo = "0.37.1"
 65  thiserror = "2.0.17"
 66  tokio = { version = "1.45.0", features = ["sync"] }
 67  tokio-util = "0.7.12"
 68  tracing = { version = "0.1.40", features = ["valuable"] }
 69  tracing-opentelemetry = "0.32.0"
 70  tracing-subscriber = { version = "0.3.20", features = [
 71    "env-filter",
 72    "std",
 73    "json",
 74  ] }
 75  typetag = "0.2.21"
 76  
 77  # Internal dependencies
 78  amaru = { path = "crates/amaru" }
 79  amaru-consensus = { path = "crates/amaru-consensus" }
 80  amaru-iter-borrow = { path = "crates/amaru-iter-borrow" }
 81  amaru-kernel = { path = "crates/amaru-kernel" }
 82  amaru-ledger = { path = "crates/amaru-ledger" }
 83  amaru-mempool = { path = "crates/amaru-mempool" }
 84  amaru-metrics = { path = "crates/amaru-metrics" }
 85  amaru-minicbor-extra = { path = "crates/amaru-minicbor-extra" }
 86  amaru-network = { path = "crates/amaru-network" }
 87  amaru-ouroboros = { path = "crates/amaru-ouroboros" }
 88  amaru-ouroboros-traits = { path = "crates/amaru-ouroboros-traits" }
 89  amaru-plutus = {path = "crates/amaru-plutus"}
 90  amaru-progress-bar = { path = "crates/amaru-progress-bar" }
 91  amaru-sim = { path = "crates/amaru-sim" }
 92  amaru-slot-arithmetic = { path = "crates/amaru-slot-arithmetic" }
 93  amaru-stores = { path = "crates/amaru-stores" }
 94  amaru-tracing-json = { path = "crates/amaru-tracing-json" }
 95  pure-stage = { path = "crates/pure-stage" }
 96  
 97  # The vrf crate has not been fully tested in production environments and still has several upstream issues that are open PRs but not merged yet.
 98  vrf_dalek = { git = "https://github.com/txpipe/vrf", rev = "044b45a1a919ba9d9c2471fc5c4d441f13086676" }
 99  kes-summed-ed25519 = { git = "https://github.com/txpipe/kes", rev = "f69fb357d46f6a18925543d785850059569d7e78" }
100  
101  # dev-dependencies
102  criterion = "0.7.0"
103  ctor = "0.5.0"
104  insta = "1.43.2"
105  once_cell = "1.21.3"
106  pretty_assertions = "1.4.1"
107  proptest = { version = "1.8.0", default-features = false, features = ["std"] }
108  rand_distr = "0.5.1"
109  tempfile = "3.23.0"
110  test-case = "3.3.1"
111  
112  # build-dependencies
113  built = "0.8.0"
114  
115  [workspace.lints.rust]
116  rust-2018-idioms = "warn"
117  rust-2018-compatibility = "warn"
118  rust-2021-compatibility = "warn"
119  #rust-2024-compatibility = "warn"
120  nonstandard-style = { level = "deny" }
121  future-incompatible = { level = "deny" }
122  
123  [workspace.lints.clippy]
124  # Enable clippy lints for all members
125  # * https://doc.rust-lang.org/clippy/lints.html
126  
127  
128  # Group lints
129  
130  # pedantic = "warn"
131  # restriction = "warn"
132  # nursery = "warn"
133  # cargo = "warn"
134  # others are enabled by default, see table here: https://doc.rust-lang.org/clippy/
135  
136  # Individual lints
137  
138  # All lints are detailed here: https://rust-lang.github.io/rust-clippy/master/index.html
139  # allow-unwrap-in-tests = true
140  # unreachable = "warn"
141  expect_used = "warn"
142  panic = "warn"
143  todo = "warn"
144  unwrap_used = "warn"
145  wildcard_enum_match_arm = "warn"
146  print_stdout = "deny" # Breaks user piping, see https://github.com/rust-lang/rust/issues/119980
147  
148  # See https://doc.rust-lang.org/cargo/reference/profiles.html
149  
150  [profile.dev]
151  opt-level = 2
152  debug = false
153  
154  [profile.dev-debug]
155  # Restore default 'dev' profile (see https://doc.rust-lang.org/cargo/reference/profiles.html#dev)
156  inherits = "dev"
157  opt-level = 0
158  debug = true
159  
160  [profile.release]
161  lto = true
162  codegen-units = 1
163  
164  [profile.profiling]
165  inherits = "release"
166  debug = true
167  
168  [workspace.metadata.cross.target.aarch64-unknown-linux-musl]
169  pre-build = [
170    "apt update",
171    "apt install -y libclang-dev"
172  ]
173  [workspace.metadata.cross.target.aarch64-unknown-linux-musl.env]
174  passthrough = ["LIBCLANG_PATH=/usr/lib/llvm-10/lib"]