solana/Cargo.toml

564 lines
19 KiB
TOML

[profile.release-with-debug]
inherits = "release"
debug = true
split-debuginfo = "packed"
[workspace]
members = [
"account-decoder",
"accounts-bench",
"accounts-cluster-bench",
"accounts-db",
"accounts-db/store-tool",
"banking-bench",
"banks-client",
"banks-interface",
"banks-server",
"bench-streamer",
"bench-tps",
"bloom",
"bucket_map",
"cargo-registry",
"clap-utils",
"clap-v3-utils",
"cli",
"cli-config",
"cli-output",
"client",
"client-test",
"connection-cache",
"core",
"cost-model",
"dos",
"download-utils",
"entry",
"faucet",
"frozen-abi",
"frozen-abi/macro",
"genesis",
"genesis-utils",
"geyser-plugin-interface",
"geyser-plugin-manager",
"gossip",
"install",
"keygen",
"ledger",
"ledger-tool",
"local-cluster",
"log-analyzer",
"logger",
"measure",
"memory-management",
"merkle-root-bench",
"merkle-tree",
"metrics",
"net-shaper",
"net-utils",
"notifier",
"perf",
"poh",
"poh-bench",
"program-runtime",
"program-test",
"programs/address-lookup-table",
"programs/address-lookup-table-tests",
"programs/bpf-loader-tests",
"programs/bpf_loader",
"programs/bpf_loader/gen-syscall-list",
"programs/compute-budget",
"programs/config",
"programs/ed25519-tests",
"programs/loader-v4",
"programs/stake",
"programs/system",
"programs/vote",
"programs/zk-token-proof",
"programs/zk-token-proof-tests",
"pubsub-client",
"quic-client",
"rayon-threadlimit",
"rbpf-cli",
"remote-wallet",
"rpc",
"rpc-client",
"rpc-client-api",
"rpc-client-nonce-utils",
"rpc-test",
"runtime",
"runtime-transaction",
"sdk",
"sdk/cargo-build-bpf",
"sdk/cargo-build-sbf",
"sdk/cargo-test-bpf",
"sdk/cargo-test-sbf",
"sdk/gen-headers",
"sdk/macro",
"sdk/program",
"send-transaction-service",
"stake-accounts",
"storage-bigtable",
"storage-bigtable/build-proto",
"storage-proto",
"streamer",
"svm",
"test-validator",
"thin-client",
"tokens",
"tpu-client",
"transaction-dos",
"transaction-status",
"turbine",
"udp-client",
"unified-scheduler-logic",
"unified-scheduler-pool",
"upload-perf",
"validator",
"version",
"vote",
"watchtower",
"wen-restart",
"zk-keygen",
"zk-token-sdk",
]
exclude = ["programs/sbf"]
# This prevents a Travis CI error when building for Windows.
resolver = "2"
[workspace.package]
version = "2.0.0"
authors = ["Solana Labs Maintainers <maintainers@solanalabs.com>"]
repository = "https://github.com/solana-labs/solana"
homepage = "https://solanalabs.com/"
license = "Apache-2.0"
edition = "2021"
[workspace.dependencies]
Inflector = "0.11.4"
aquamarine = "0.3.3"
aes-gcm-siv = "0.10.3"
ahash = "0.8.10"
anyhow = "1.0.80"
arbitrary = "1.3.2"
ark-bn254 = "0.4.0"
ark-ec = "0.4.0"
ark-ff = "0.4.0"
ark-serialize = "0.4.0"
array-bytes = "=1.4.1"
arrayref = "0.3.7"
assert_cmd = "2.0"
assert_matches = "1.5.0"
async-channel = "1.9.0"
async-mutex = "1.4.0"
async-trait = "0.1.77"
atty = "0.2.11"
backoff = "0.4.0"
base64 = "0.22.0"
bincode = "1.3.3"
bitflags = { version = "2.4.2", features = ["serde"] }
blake3 = "1.5.0"
block-buffer = "0.10.4"
borsh = { version = "1.2.1", features = ["derive", "unstable__schema"] }
bs58 = "0.4.0"
bv = "0.11.1"
byte-unit = "4.0.19"
bytecount = "0.6.7"
bytemuck = "1.14.3"
byteorder = "1.5.0"
bytes = "1.5"
bzip2 = "0.4.4"
caps = "0.5.5"
cargo_metadata = "0.15.4"
cc = "1.0.83"
chrono = { version = "0.4.34", default-features = false }
chrono-humanize = "0.2.3"
clap = "2.33.1"
console = "0.15.8"
console_error_panic_hook = "0.1.7"
console_log = "0.2.2"
const_format = "0.2.32"
core_affinity = "0.5.10"
criterion = "0.5.1"
criterion-stats = "0.3.0"
crossbeam-channel = "0.5.12"
csv = "1.3.0"
ctrlc = "3.4.2"
curve25519-dalek = "3.2.1"
dashmap = "5.5.3"
derivation-path = { version = "0.2.0", default-features = false }
derivative = "2.2.0"
dialoguer = "0.10.4"
digest = "0.10.7"
dir-diff = "0.3.3"
dirs-next = "2.0.0"
dlopen2 = "0.5.0"
eager = "0.1.0"
ed25519-dalek = "=1.0.1"
ed25519-dalek-bip32 = "0.2.0"
either = "1.10.0"
enum-iterator = "1.5.0"
env_logger = "0.9.3"
etcd-client = "0.11.1"
fast-math = "0.1"
fd-lock = "3.0.13"
flate2 = "1.0.28"
fnv = "1.0.7"
fs_extra = "1.3.0"
futures = "0.3.30"
futures-util = "0.3.29"
gag = "1.0.0"
generic-array = { version = "0.14.7", default-features = false }
gethostname = "0.2.3"
getrandom = "0.2.10"
goauth = "0.13.1"
hex = "0.4.3"
hidapi = { version = "2.6.1", default-features = false }
histogram = "0.6.9"
hmac = "0.12.1"
http = "0.2.12"
humantime = "2.0.1"
hyper = "0.14.28"
hyper-proxy = "0.9.1"
im = "15.1.0"
index_list = "0.2.11"
indexmap = "2.2.5"
indicatif = "0.17.8"
itertools = "0.10.5"
jemallocator = { package = "tikv-jemallocator", version = "0.4.1", features = [
"unprefixed_malloc_on_supported_platforms",
] }
js-sys = "0.3.68"
json5 = "0.4.1"
jsonrpc-core = "18.0.0"
jsonrpc-core-client = "18.0.0"
jsonrpc-derive = "18.0.0"
jsonrpc-http-server = "18.0.0"
jsonrpc-ipc-server = "18.0.0"
jsonrpc-pubsub = "18.0.0"
lazy_static = "1.4.0"
libc = "0.2.153"
libloading = "0.7.4"
libsecp256k1 = "0.6.0"
light-poseidon = "0.2.0"
log = "0.4.21"
lru = "0.7.7"
lz4 = "1.24.0"
memmap2 = "0.5.10"
memoffset = "0.9"
merlin = "3"
min-max-heap = "1.3.0"
mockall = "0.11.4"
modular-bitfield = "0.11.2"
nix = "0.26.4"
num-bigint = "0.4.4"
num-derive = "0.4"
num-traits = "0.2"
num_cpus = "1.16.0"
num_enum = "0.7.2"
openssl = "0.10"
parking_lot = "0.12"
pbkdf2 = { version = "0.11.0", default-features = false }
pem = "1.1.1"
percentage = "0.1.0"
pickledb = { version = "0.5.1", default-features = false }
predicates = "2.1"
pretty-hex = "0.3.0"
prio-graph = "0.2.1"
proc-macro2 = "1.0.79"
proptest = "1.4"
prost = "0.11.9"
prost-build = "0.11.9"
prost-types = "0.11.9"
protobuf-src = "1.1.0"
qstring = "0.7.2"
qualifier_attr = { version = "0.2.2", default-features = false }
quinn = "0.10.2"
quinn-proto = "0.10.6"
quote = "1.0"
rand = "0.8.5"
rand_chacha = "0.3.1"
raptorq = "1.8.1"
rayon = "1.9.0"
reed-solomon-erasure = "6.0.0"
regex = "1.10.3"
reqwest = { version = "0.11.23", default-features = false }
rolling-file = "0.2.0"
rpassword = "7.3"
rustc_version = "0.4"
rustls = { version = "0.21.10", default-features = false, features = ["quic"] }
rustversion = "1.0.14"
scopeguard = "1.2.0"
semver = "1.0.22"
seqlock = "0.2.0"
serde = "1.0.197"
serde_bytes = "0.11.14"
serde_derive = "1.0.103"
serde_json = "1.0.114"
serde_with = { version = "2.3.3", default-features = false }
serde_yaml = "0.9.32"
serial_test = "2.0.0"
sha2 = "0.10.8"
sha3 = "0.10.8"
signal-hook = "0.3.17"
siphasher = "0.3.11"
smallvec = "1.13.1"
smpl_jwt = "0.7.1"
socket2 = "0.5.6"
soketto = "0.7"
solana-account-decoder = { path = "account-decoder", version = "=2.0.0" }
solana-accounts-db = { path = "accounts-db", version = "=2.0.0" }
solana-address-lookup-table-program = { path = "programs/address-lookup-table", version = "=2.0.0" }
solana-banks-client = { path = "banks-client", version = "=2.0.0" }
solana-banks-interface = { path = "banks-interface", version = "=2.0.0" }
solana-banks-server = { path = "banks-server", version = "=2.0.0" }
solana-bench-tps = { path = "bench-tps", version = "=2.0.0" }
solana-bloom = { path = "bloom", version = "=2.0.0" }
solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=2.0.0" }
solana-bucket-map = { path = "bucket_map", version = "=2.0.0" }
solana-cargo-registry = { path = "cargo-registry", version = "=2.0.0" }
solana-clap-utils = { path = "clap-utils", version = "=2.0.0" }
solana-clap-v3-utils = { path = "clap-v3-utils", version = "=2.0.0" }
solana-cli = { path = "cli", version = "=2.0.0" }
solana-cli-config = { path = "cli-config", version = "=2.0.0" }
solana-cli-output = { path = "cli-output", version = "=2.0.0" }
solana-client = { path = "client", version = "=2.0.0" }
solana-compute-budget-program = { path = "programs/compute-budget", version = "=2.0.0" }
solana-config-program = { path = "programs/config", version = "=2.0.0" }
solana-connection-cache = { path = "connection-cache", version = "=2.0.0", default-features = false }
solana-core = { path = "core", version = "=2.0.0" }
solana-cost-model = { path = "cost-model", version = "=2.0.0" }
solana-download-utils = { path = "download-utils", version = "=2.0.0" }
solana-entry = { path = "entry", version = "=2.0.0" }
solana-faucet = { path = "faucet", version = "=2.0.0" }
solana-frozen-abi = { path = "frozen-abi", version = "=2.0.0" }
solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=2.0.0" }
solana-genesis = { path = "genesis", version = "=2.0.0" }
solana-genesis-utils = { path = "genesis-utils", version = "=2.0.0" }
solana-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=2.0.0" }
solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=2.0.0" }
solana-gossip = { path = "gossip", version = "=2.0.0" }
solana-ledger = { path = "ledger", version = "=2.0.0" }
solana-loader-v4-program = { path = "programs/loader-v4", version = "=2.0.0" }
solana-local-cluster = { path = "local-cluster", version = "=2.0.0" }
solana-logger = { path = "logger", version = "=2.0.0" }
solana-measure = { path = "measure", version = "=2.0.0" }
solana-merkle-tree = { path = "merkle-tree", version = "=2.0.0" }
solana-metrics = { path = "metrics", version = "=2.0.0" }
solana-net-utils = { path = "net-utils", version = "=2.0.0" }
solana-nohash-hasher = "0.2.1"
solana-notifier = { path = "notifier", version = "=2.0.0" }
solana-perf = { path = "perf", version = "=2.0.0" }
solana-poh = { path = "poh", version = "=2.0.0" }
solana-program = { path = "sdk/program", version = "=2.0.0" }
solana-program-runtime = { path = "program-runtime", version = "=2.0.0" }
solana-program-test = { path = "program-test", version = "=2.0.0" }
solana-pubsub-client = { path = "pubsub-client", version = "=2.0.0" }
solana-quic-client = { path = "quic-client", version = "=2.0.0" }
solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=2.0.0" }
solana-remote-wallet = { path = "remote-wallet", version = "=2.0.0", default-features = false }
solana-unified-scheduler-logic = { path = "unified-scheduler-logic", version = "=2.0.0" }
solana-unified-scheduler-pool = { path = "unified-scheduler-pool", version = "=2.0.0" }
solana-rpc = { path = "rpc", version = "=2.0.0" }
solana-rpc-client = { path = "rpc-client", version = "=2.0.0", default-features = false }
solana-rpc-client-api = { path = "rpc-client-api", version = "=2.0.0" }
solana-rpc-client-nonce-utils = { path = "rpc-client-nonce-utils", version = "=2.0.0" }
solana-runtime = { path = "runtime", version = "=2.0.0" }
solana-runtime-transaction = { path = "runtime-transaction", version = "=2.0.0" }
solana-sdk = { path = "sdk", version = "=2.0.0" }
solana-sdk-macro = { path = "sdk/macro", version = "=2.0.0" }
solana-send-transaction-service = { path = "send-transaction-service", version = "=2.0.0" }
solana-stake-program = { path = "programs/stake", version = "=2.0.0" }
solana-storage-bigtable = { path = "storage-bigtable", version = "=2.0.0" }
solana-storage-proto = { path = "storage-proto", version = "=2.0.0" }
solana-streamer = { path = "streamer", version = "=2.0.0" }
solana-svm = { path = "svm", version = "=2.0.0" }
solana-system-program = { path = "programs/system", version = "=2.0.0" }
solana-test-validator = { path = "test-validator", version = "=2.0.0" }
solana-thin-client = { path = "thin-client", version = "=2.0.0" }
solana-tpu-client = { path = "tpu-client", version = "=2.0.0", default-features = false }
solana-transaction-status = { path = "transaction-status", version = "=2.0.0" }
solana-turbine = { path = "turbine", version = "=2.0.0" }
solana-udp-client = { path = "udp-client", version = "=2.0.0" }
solana-version = { path = "version", version = "=2.0.0" }
solana-vote = { path = "vote", version = "=2.0.0" }
solana-vote-program = { path = "programs/vote", version = "=2.0.0" }
solana-wen-restart = { path = "wen-restart", version = "=2.0.0" }
solana-zk-keygen = { path = "zk-keygen", version = "=2.0.0" }
solana-zk-token-proof-program = { path = "programs/zk-token-proof", version = "=2.0.0" }
solana-zk-token-sdk = { path = "zk-token-sdk", version = "=2.0.0" }
solana_rbpf = "=0.8.0"
spl-associated-token-account = "=2.3.1"
spl-instruction-padding = "0.1"
spl-memo = "=4.0.1"
spl-pod = "=0.1.1"
spl-token = "=4.0.1"
spl-token-2022 = "=2.0.1"
spl-token-group-interface = "=0.1.1"
spl-token-metadata-interface = "=0.2.1"
static_assertions = "1.1.0"
stream-cancel = "0.8.2"
strum = "0.24"
strum_macros = "0.24"
subtle = "2.4.1"
symlink = "0.1.0"
syn = "2.0"
sys-info = "0.9.1"
sysctl = "0.4.6"
systemstat = "0.2.3"
tar = "0.4.40"
tarpc = "0.29.0"
tempfile = "3.10.1"
test-case = "3.3.1"
thiserror = "1.0.57"
tiny-bip39 = "0.8.2"
# Update solana-tokio patch below when updating this version
tokio = "1.29.1"
tokio-serde = "0.8"
tokio-stream = "0.1.14"
tokio-tungstenite = "0.20.1"
tokio-util = "0.6"
toml = "0.8.10"
tonic = "0.9.2"
tonic-build = "0.9.2"
trees = "0.4.2"
tungstenite = "0.20.1"
uriparse = "0.6.4"
url = "2.5.0"
wasm-bindgen = "0.2"
winapi = "0.3.8"
winreg = "0.50"
x509-parser = "0.14.0"
# See "zeroize versioning issues" below if you are updating this version.
zeroize = { version = "1.3", default-features = false }
zstd = "0.11.2"
[patch.crates-io]
# for details, see https://github.com/solana-labs/crossbeam/commit/fd279d707025f0e60951e429bf778b4813d1b6bf
crossbeam-epoch = { git = "https://github.com/solana-labs/crossbeam", rev = "fd279d707025f0e60951e429bf778b4813d1b6bf" }
# We include the following crates as our dependencies above from crates.io:
#
# * spl-associated-token-account
# * spl-instruction-padding
# * spl-memo
# * spl-pod
# * spl-token
# * spl-token-2022
# * spl-token-metadata-interface
#
# They, in turn, depend on a number of crates that we also include directly
# using `path` specifications. For example, `spl-token` depends on
# `solana-program`. And we explicitly specify `solana-program` above as a local
# path dependency:
#
# solana-program = { path = "../../sdk/program", version = "=1.16.0" }
#
# Unfortunately, Cargo will try to resolve the `spl-token` `solana-program`
# dependency only using what is available on crates.io. Crates.io normally
# contains a previous version of these crates, and we end up with two versions
# of `solana-program` and `solana-zk-token-sdk` and all of their dependencies in
# our build tree.
#
# If you are developing downstream using non-crates-io solana-program (local or
# forked repo, or from github rev, eg), duplicate the following patch statements
# in your Cargo.toml. If you still hit duplicate-type errors with the patch
# statements in place, run `cargo update -p solana-program` and/or `cargo update
# -p solana-zk-token-sdk` to remove extraneous versions from your Cargo.lock
# file.
#
# There is a similar override in `programs/sbf/Cargo.toml`. Please keep both
# comments and the overrides in sync.
solana-program = { path = "sdk/program" }
solana-zk-token-sdk = { path = "zk-token-sdk" }
#
# === zeroize versioning issues ===
#
# A number of packages used explicit upper bound on the `zeroize` package, such
# as `>=1, <1.4`. The problem is that cargo still does not duplicate `zeroize`
# if a newer version is available and requested by another package and just
# fails the whole dependency resolution process.
#
# This is described in
#
# https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#multiple-requirements
#
# So we have to patch `zeroize` dependency specifications in the projects that
# introduce these constraints. They have already removed these constraints in
# newer versions, but we have not updated yet. As we update, we need to remove
# these patch requests.
#
# When our dependencies are upgraded, we can remove these patches. Before that
# we might need to maintain these patches in sync with our full dependency tree.
# Our dependency tree has `aes-gcm-siv` v0.10.3 and the `zeroize` restriction
# was removed in the next commit just after the release. So it seems safe to
# patch to this commit.
#
# `aes-gcm-siv` v0.10.3 release:
#
# https://github.com/RustCrypto/AEADs/releases/tag/aes-gcm-siv-v0.10.3
#
# Corresponds to commit
#
# https://github.com/RustCrypto/AEADs/commit/6f16f4577a1fc839a2346cf8c5531c85a44bf5c0
#
# Comparison with `6105d7a5591aefa646a95d12b5e8d3f55a9214ef` pinned here:
#
# https://github.com/RustCrypto/AEADs/compare/aes-gcm-siv-v0.10.3..6105d7a5591aefa646a95d12b5e8d3f55a9214ef
#
[patch.crates-io.aes-gcm-siv]
git = "https://github.com/RustCrypto/AEADs"
rev = "6105d7a5591aefa646a95d12b5e8d3f55a9214ef"
# Our dependency tree has `curve25519-dalek` v3.2.1. They have removed the
# constraint in the next major release. The commit that removes the `zeroize`
# constraint was added to multiple release branches, but not to the 3.2 branch.
#
# `curve25519-dalek` maintainers are saying they do not want to invest any more
# time in the 3.2 release:
#
# https://github.com/dalek-cryptography/curve25519-dalek/issues/452#issuecomment-1749809428
#
# So we have to fork and create our own release, based on v3.2.1, with the
# commit that removed `zeroize` constraint on the `main` branch cherry-picked on
# top.
#
# `curve25519-dalek` v3.2.1 release:
#
# https://github.com/dalek-cryptography/curve25519-dalek/releases/tag/3.2.1
#
# Corresponds to commit
#
# https://github.com/dalek-cryptography/curve25519-dalek/commit/29e5c29b0e5c6821e4586af58b0d0891dd2ec639
#
# Comparison with `b500cdc2a920cd5bff9e2dd974d7b97349d61464`:
#
# https://github.com/dalek-cryptography/curve25519-dalek/compare/3.2.1...solana-labs:curve25519-dalek:b500cdc2a920cd5bff9e2dd974d7b97349d61464
#
# Or, using the branch name instead of the hash:
#
# https://github.com/dalek-cryptography/curve25519-dalek/compare/3.2.1...solana-labs:curve25519-dalek:3.2.1-unpin-zeroize
#
[patch.crates-io.curve25519-dalek]
git = "https://github.com/solana-labs/curve25519-dalek.git"
rev = "b500cdc2a920cd5bff9e2dd974d7b97349d61464"
# Solana RPC nodes experience stalls when running with `tokio` containing this
# commit:
# https://github.com/tokio-rs/tokio/commit/4eed411519783ef6f58cbf74f886f91142b5cfa6
#
# Tokio maintainers believe performance degradation is due to application bugs:
# https://github.com/tokio-rs/tokio/issues/4873#issuecomment-1198277677
#
# This may indeed be true of the code in this monorepo, but we haven't yet
# identified the bug or a way to fix. As a stopgap, this patches `tokio` to the
# tagged version specified above with commit `4eed411` reverted.
#
# Comparison:
# https://github.com/tokio-rs/tokio/compare/tokio-1.29.1...solana-labs:solana-tokio:tokio-1.29.1-revert-4eed411
#
[patch.crates-io.tokio]
git = "https://github.com/solana-labs/solana-tokio.git"
rev = "7cf47705faacf7bf0e43e4131a5377b3291fce21"