-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathCargo.toml
More file actions
111 lines (97 loc) · 3.64 KB
/
Copy pathCargo.toml
File metadata and controls
111 lines (97 loc) · 3.64 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
[workspace]
resolver = "3"
default-members = ["bin/ethlambda"]
members = [
"bin/ethlambda",
"crates/blockchain",
"crates/blockchain/fork_choice",
"crates/blockchain/state_transition",
"crates/common/crypto",
"crates/common/metrics",
"crates/common/test-fixtures",
"crates/common/types",
"crates/net/api",
"crates/net/p2p",
"crates/net/rpc",
"crates/storage",
]
[workspace.package]
authors = ["LambdaClass"]
edition = "2024"
keywords = ["ethereum", "blockchain", "consensus", "protocol"]
license = "LICENSE"
readme = "README.md"
repository = "https://github.com/lambdaclass/ethlambda"
rust-version = "1.97.1"
version = "0.1.0"
# Cross-crate inlining matters here: the hot paths (SSZ encode/decode, hashing,
# fork choice traversal) are split across workspace crates and their
# dependencies, so keeping every crate in its own codegen unit leaves inlining
# opportunities on the table. Fat LTO plus a single codegen unit trades build
# time for that.
#
# Fat rather than thin: on an 8-node devnet, fat cut mean state transition time
# a further 2.1% over thin (every fat node beat every thin node) at no measurable
# build-time or image-size cost. ethrex uses thin here; we diverge deliberately.
[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
# Test profile (see the `test` target in the Makefile). Tests need release-grade
# opt-level: signature verification/aggregation stack-overflows without it. They
# do not need a whole-program-optimized binary, so this drops LTO, restores
# parallel codegen, and keeps line tables for backtraces, which makes test
# rebuilds finish in a fraction of the time of a `release` build.
[profile.release-fast]
inherits = "release"
lto = false
codegen-units = 16
debug = "line-tables-only"
incremental = true
[workspace.dependencies]
ethlambda-blockchain = { path = "crates/blockchain" }
ethlambda-fork-choice = { path = "crates/blockchain/fork_choice" }
ethlambda-state-transition = { path = "crates/blockchain/state_transition" }
ethlambda-crypto = { path = "crates/common/crypto" }
ethlambda-metrics = { path = "crates/common/metrics" }
ethlambda-test-fixtures = { path = "crates/common/test-fixtures" }
ethlambda-types = { path = "crates/common/types" }
ethlambda-network-api = { path = "crates/net/api" }
ethlambda-p2p = { path = "crates/net/p2p" }
ethlambda-rpc = { path = "crates/net/rpc" }
ethlambda-storage = { path = "crates/storage" }
tracing = "0.1"
thiserror = "2.0.9"
serde = { version = "1", features = ["derive"] }
serde_json = "1.0.117"
serde_yaml_ng = "0.10"
hex = "0.4"
spawned-concurrency = "0.5.0"
spawned-rt = "0.5.0"
tokio = "1.0"
tokio-util = "0.7"
prometheus = "0.14"
clap = { version = "4.3", features = ["derive", "env"] }
# XMSS signatures
leansig = { git = "https://github.com/leanEthereum/leanSig", branch = "devnet4" }
# SSZ implementation
libssz = "0.2.2"
libssz-derive = "0.2.2"
libssz-merkle = "0.2.2"
libssz-types = "0.2.2"
# Build-time version info
vergen-git2 = { version = "9", features = ["rustc"] }
rayon = "1.11"
rand = "0.10"
lru = "0.16"
rocksdb = "0.24"
libc = "0.2"
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }
eyre = "0.6"
# Allocator + heap profiling
tikv-jemallocator = { version = "0.6", features = ["stats", "unprefixed_malloc_on_supported_platforms", "profiling"] }
jemalloc_pprof = { version = "0.8", features = ["flamegraph"] }
# NOTE: Shadow-simulator builds also replace quinn-udp with the fallback crate
# in `shadow/quinn-udp-patch` (no GSO/GRO batch syscalls). A Cargo `[patch]`
# cannot be feature-gated, so it is NOT committed here; `shadow/build.sh` injects
# it into this manifest at build time. See `make shadow-build`.