/ 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"]