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