-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathCargo.toml
More file actions
214 lines (176 loc) · 6.28 KB
/
Copy pathCargo.toml
File metadata and controls
214 lines (176 loc) · 6.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
[package]
name = "ant-node"
version = "0.18.1"
edition = "2021"
authors = ["David Irvine <david.irvine@maidsafe.net>"]
description = "Pure quantum-proof network node for the Autonomi decentralized network"
license = "MIT OR Apache-2.0"
repository = "https://github.com/WithAutonomi/ant-node"
keywords = ["p2p", "decentralized", "quantum-safe", "post-quantum", "dht"]
categories = ["network-programming", "cryptography"]
rust-version = "1.75"
[lib]
name = "ant_node"
path = "src/lib.rs"
[[bin]]
name = "ant-node"
path = "src/bin/ant-node/main.rs"
[[bin]]
name = "ant-devnet"
path = "src/bin/ant-devnet/main.rs"
[dependencies]
# Global allocator. musl's default malloc is significantly slower than
# glibc's under concurrent allocation churn, which matches the node's
# steady-state workload. mimalloc neutralises that regression for the
# musl Linux builds (and tends to beat glibc's allocator too).
mimalloc = "0.1"
# Wire protocol — the single version-pin shared with ant-client.
# Bumping ant-protocol's `evmlib`/`saorsa-core`/`saorsa-pqc` pins ripples
# through here automatically; we keep a direct saorsa-core dep for
# node-only DHT internals (DHTNode, TrustEvent, DhtNetworkEvent), which
# Cargo unifies with ant-protocol's version constraint.
#
# TODO: swap to `ant-protocol = "2.0.0"` once 2.0.0 is on crates.io.
# Until then, the git pin tracks the matching saorsa-core lineage
# (the rc-2026.4.2 branch) so Cargo can unify the wire types here
# with ant-protocol's re-exports.
ant-protocol = "2.3.5"
# Core (provides EVERYTHING: networking, DHT, security, trust, storage)
saorsa-core = "0.27.3"
saorsa-pqc = "0.5"
# Payment verification - autonomi network lookup + EVM payment
evmlib = "0.9.1"
xor_name = "5"
# Caching - LRU cache for verified XorNames
lru = "0.16.3"
parking_lot = "0.12" # Efficient mutex for cache
# Storage - LMDB via heed for content-addressed chunk store
heed = "0.22"
blake3 = "1"
# Async runtime
tokio = { version = "1.35", features = ["full", "signal"] }
tokio-util = { version = "0.7", features = ["rt"] }
futures = "0.3"
# CLI
clap = { version = "4.5", features = ["derive", "env"] }
# Configuration
serde = { version = "1", features = ["derive"] }
toml = "0.8"
directories = "5"
# Auto-upgrade
reqwest = { version = "0.13", features = ["json", "rustls"], default-features = false }
semver = "1"
# Logging (optional — behind `logging` feature flag)
tracing = { version = "0.1", optional = true }
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"], optional = true }
tracing-appender = { version = "0.2", optional = true }
# Error handling
thiserror = "2"
color-eyre = "0.6"
# Serialization
rmp-serde = "1"
hex = "0.4"
# Utilities
bytes = "1"
chrono = { version = "0.4", features = ["serde"] }
tempfile = "3"
rand = "0.8"
serde_json = "1"
# Archive extraction for auto-upgrade
flate2 = "1"
tar = "0.4"
zip = "2"
# SHA-256 hashing for binary cache integrity
sha2 = "0.10"
# Cross-platform file locking for upgrade caches
fs2 = "0.4"
# System page size (for LMDB map alignment during resize)
page_size = "0.6"
# Protocol serialization
postcard = { version = "1.1.3", features = ["use-std"] }
bao = "0.13.1"
[target.'cfg(unix)'.dependencies]
libc = "0.2"
[target.'cfg(windows)'.dependencies]
self-replace = "1"
[target.'cfg(target_os = "macos")'.dependencies]
objc2 = "0.6"
objc2-foundation = { version = "0.3", features = ["NSProcessInfo", "NSString"] }
[dev-dependencies]
tokio-test = "0.4"
proptest = "1"
alloy = { version = "1", features = ["node-bindings"] }
serial_test = "3"
# E2E test infrastructure (run with --features test-utils)
[[test]]
name = "e2e"
path = "tests/e2e/mod.rs"
required-features = ["test-utils"]
# v12 storage-bound audit attack PoCs. Uses the test-only one-shot
# commitment builder/verifier helpers, so it requires the test-utils
# feature. CI runs it via `cargo test --test poc_commitment_audit_attacks
# --features test-utils`.
[[test]]
name = "poc_commitment_audit_attacks"
path = "tests/poc_commitment_audit_attacks.rs"
required-features = ["test-utils"]
# Live responder-handler tests for the v12 audit. Use
# LmdbStorageConfig::test_default(), gated on test-utils.
[[test]]
name = "poc_audit_handler_live"
path = "tests/poc_audit_handler_live.rs"
required-features = ["test-utils"]
# Bootstrap-stall regression coverage for source cleanup after peer removal.
# Declared like the other PoC suites so CI invokes it explicitly.
[[test]]
name = "poc_bootstrap_stall"
path = "tests/poc_bootstrap_stall.rs"
required-features = ["test-utils"]
# Live-Anvil verification of the ADR-0006 price floor against a real deployed
# vault + real on-chain settlement. Needs the test-utils fail-open for the
# issuer K-closest check so the floor is the isolated load-bearing check.
[[test]]
name = "poc_price_floor_live"
path = "tests/poc_price_floor_live.rs"
required-features = ["test-utils"]
# Shutdown/LMDB-drain regression: `ReplicationEngine::shutdown()` must not
# return while a detached LMDB blocking op is still running. Uses the
# test-only storage put gate, so it requires the test-utils feature.
[[test]]
name = "poc_shutdown_lmdb_drain"
path = "tests/poc_shutdown_lmdb_drain.rs"
required-features = ["test-utils"]
[features]
default = ["logging"]
# Enable tracing/logging infrastructure.
# Included in `default`, so every build we ship — dev, release candidate and
# release alike — has logging. Opt out only for a bespoke build that needs it
# gone: `cargo build --release --no-default-features`.
logging = ["tracing", "tracing-subscriber", "tracing-appender"]
# Expose test helpers (cache_insert, payment_verifier accessor) for
# integration tests and downstream test harnesses.
test-utils = []
[profile.release]
lto = true
codegen-units = 1
panic = "abort"
strip = true
[profile.dev]
# Faster builds for development
opt-level = 1
[lints.rust]
unsafe_code = "deny"
missing_docs = "warn"
[lints.clippy]
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
unwrap_used = "deny"
expect_used = "deny"
panic = "deny"
# Allow async functions that will have await statements added later
unused_async = "allow"
# Allow slightly complex functions during initial development
cognitive_complexity = "allow"
# Allow non-const functions during initial development (may need runtime features later)
missing_const_for_fn = "allow"