[workspace] resolver = "3" members = [ "crates/attestation", "crates/attestation-cli", "crates/backup-cli", "crates/chain-gateway", "crates/chain-gateway-test-contract", "crates/ckd-example-cli", "crates/contract", "crates/contract-history", "crates/devnet", "crates/e2e-tests", "crates/foreign-chain-inspector", "crates/foreign-chain-rpc-interfaces", "crates/include-measurements", "crates/launcher-interface", "crates/mpc-attestation", "crates/near-mpc-bounded-collections", "crates/near-mpc-contract-interface", "crates/near-mpc-crypto-types", "crates/near-mpc-sdk", "crates/near-mpc-signature-verifier", "crates/node", "crates/node-config", "crates/node-types", "crates/primitives", "crates/tee-authority", "crates/tee-context", "crates/tee-launcher", "crates/tee-verifier", "crates/tee-verifier-conversions", "crates/tee-verifier-interface", "crates/test-migration-contract", "crates/test-parallel-contract", "crates/test-port-allocator", "crates/test-utils", "crates/threshold-signatures", "crates/tls", ] [workspace.package] version = "3.13.0" edition = "2024" license = "MIT" repository = "https://github.com/near/mpc" [workspace.dependencies] #workspace members attestation = { path = "crates/attestation" } chain-gateway = { path = "crates/chain-gateway" } chain-gateway-test-contract = { path = "crates/chain-gateway-test-contract" } contract-history = { path = "crates/contract-history" } foreign-chain-inspector = { path = "crates/foreign-chain-inspector" } foreign-chain-rpc-interfaces = { path = "crates/foreign-chain-rpc-interfaces" } include-measurements = { path = "crates/include-measurements" } launcher-interface = { path = "crates/launcher-interface" } mpc-attestation = { path = "crates/mpc-attestation" } mpc-contract = { path = "crates/contract", features = ["dev-utils"] } mpc-node = { path = "crates/node" } mpc-node-config = { path = "crates/node-config" } mpc-primitives = { path = "crates/primitives", features = ["abi"] } mpc-tls = { path = "crates/tls" } near-mpc-bounded-collections = { path = "crates/near-mpc-bounded-collections", version = "0.0.1" } near-mpc-contract-interface = { path = "crates/near-mpc-contract-interface", version = "0.0.1" } near-mpc-crypto-types = { path = "crates/near-mpc-crypto-types", version = "0.0.1" } near-mpc-sdk = { path = "crates/near-mpc-sdk", version = "0.0.1" } near-mpc-signature-verifier = { path = "crates/near-mpc-signature-verifier", version = "0.0.1" } node-types = { path = "crates/node-types" } tee-authority = { path = "crates/tee-authority" } tee-verifier-conversions = { path = "crates/tee-verifier-conversions" } tee-verifier-interface = { path = "crates/tee-verifier-interface" } test-port-allocator = { path = "crates/test-port-allocator" } test-utils = { path = "crates/test-utils" } threshold-signatures = { path = "crates/threshold-signatures" } aes-gcm = "0.10.3" anyhow = "1.0.102" assert_matches = "1.5.0" async-trait = "0.1.89" auto_ops = "0.3.0" average = "0.17" axum = "0.8.9" backon = { version = "1.6.0", features = ["tokio-sleep"] } backtrace = "0.3" base64 = "0.22.1" blstrs = "0.7.1" borsh = { version = "1.6.1", features = ["derive"] } bs58 = { version = "0.5.1" } built = { version = "0.8", features = ["git2", "chrono"] } byteorder = "1.5.0" bytes = { version = "1.11.1" } cargo-near-build = "0.11.3" clap = { version = "4.6.1", features = ["derive", "env"] } criterion = { version = "0.8.2", features = ["html_reports"] } curve25519-dalek = { version = "4.1.3", features = [ "group", "serde", ], default-features = false } # TODO(#3008): swap this git pin for a crates.io `version = "X.Y.Z"` and # drop the matching `deny.toml` allow-git entry once upstream cuts a release # containing the `HttpClient` transport trait # () and the # reqwest 0.13 bump (), # both merged at commit 63e9d4ae on 2026-04-27. Until then, we pin to # upstream master at that commit so that `tee-authority` can decouple # its reqwest version from `dcap-qvl`'s public API (closes #3027). dcap-qvl = { git = "https://github.com/Phala-Network/dcap-qvl", rev = "63e9d4ae8a0de53e2d77e1929ff1fcefa88f31df", default-features = false, features = [ "contract", "borsh", "std", "ring", "default-x509", "json-core", ] } derive_more = { version = "2.1.1", features = [ "as_ref", "constructor", "deref", "deref_mut", "display", "from", "from_str", "into", ] } digest = "0.10.7" dstack-sdk = { version = "0.1.2" } dstack-sdk-types = { version = "0.1.3", default-features = false, features = [ "borsh", ] } ecdsa = { version = "0.16.9", features = ["digest", "hazmat"] } ed25519-dalek = { version = "2.2.0", features = [ "serde", "digest", "pkcs8", "rand_core", ] } either = "1.16.0" elliptic-curve = "0.13.8" ethereum-types = "0.16.0" flume = "0.12.0" frost-core = { version = "3.0.0", default-features = false, features = [ "serde", ] } frost-ed25519 = { version = "3.0.0", default-features = false } frost-secp256k1 = { version = "3.0.0", default-features = false } futures = "0.3.32" futures-lite = "2.6.1" gcloud-sdk = { version = "0.30.0", default-features = false, features = [ "google-cloud-secretmanager-v1", "tls-webpki-roots", ] } group = "0.13" hex = { version = "0.4.3", features = ["serde"] } hkdf = "0.12.4" http = "1.4.1" http-body-util = "0.1.3" humantime = "2.3.0" hyper = { version = "1.10.1", features = ["client", "server", "http1"] } hyper-util = { version = "0.1.20", features = ["tokio"] } inferno = "0.12" insta = { version = "1.46.3", features = ["json", "redactions"] } itertools = "0.14.0" # Pinned to the 0.4.x line so it stays compatible with `tikv-jemalloc-ctl 0.5` # (and therefore `tikv-jemalloc-sys 0.5`, which is what `librocksdb-sys 0.11` # brings into the dep graph via `nearcore`'s `near-store`). Bumping past 0.5.x # would require also bumping that transitive rocksdb to >= 0.23 to avoid a # `links = "jemalloc"` collision. jemalloc_pprof = "0.4.2" jsonrpsee = { version = "0.26.0", features = ["http-client"] } k256 = "0.13.4" keccak = "0.1.5" libc = "0.2" lru = "0.18.0" # Re-exported by `jemalloc_pprof` (workspace sibling). Used to embed runtime # binary mappings into emitted pprof profiles so `pprof` can symbolicate # addresses through ASLR. mappings = "0.5" mockall = "0.14.0" named-lock = "0.4.1" near-abi = "0.4.4" near-account-id = "2.6.0" # crates.io release of `near-crypto`; the plain `near-crypto` name is taken by # the git nearcore crate below, which the node's indexer stack requires. # Must be bumped in lockstep with `near-primitives`: its types appear in # near-primitives' transaction API but are not re-exported there. near-crypto-public = { version = "0.36.0", package = "near-crypto" } near-jsonrpc-client = "0.21.1" near-jsonrpc-primitives = "0.36.0" near-kit = { version = "0.11.0", default-features = false } near-primitives = "0.36.0" near-sandbox = "0.3.11" near-sdk = { version = "5.28.0", features = [ "legacy", "unstable", ] } near-workspaces = { version = "0.22.2" } num_enum = { version = "0.7.6", features = ["complex-expressions"] } pairing = { version = "0.23.0" } pprof = { version = "0.15.0", features = [ "cpp", "flamegraph", ], default-features = false } # `pprof_util 0.4.x` shares the `tikv-jemalloc-ctl 0.5` constraint with # `jemalloc_pprof 0.4.2`; needed to render heap dumps as flamegraphs in-process # since 0.4.x has no built-in `dump_flamegraph`. pprof_util = "0.4" proc-macro2 = "1.0" quote = "1.0" # TODO(#2051): updating this brings considerable breaking changes rcgen = "0.13.2" reddsa = { version = "0.5.2", default-features = false, features = [ "frost", ] } regex = "1.12.3" reqwest = { version = "0.13.3", features = ["multipart", "json"] } rmp-serde = "1.3.1" rstest = { version = "0.26.1" } rustls = { version = "0.23.39", default-features = false, features = [ "ring", "std", ] } serde = { version = "1.0", features = ["derive"] } serde_bytes = "0.11.19" serde_json = "1.0" serde_repr = "0.1.20" serde_with = { version = "3.20.0", features = ["hex"] } serial_test = "3.4.0" sha2 = "0.10.9" sha3 = "0.10.8" signature = "2.2.0" socket2 = "0.6.3" subtle = "2.6.1" syn = "2.0" tempfile = "3.27.0" test-log = "0.2.20" thiserror = "2.0.18" thread-priority = "3.0.0" tikv-jemallocator = { version = "0.5.4", features = [ "profiling", "unprefixed_malloc_on_supported_platforms", ] } tokio = { version = "1.52.2", features = ["full", "test-util"] } tokio-metrics = { version = "0.5.0" } tokio-rustls = { version = "0.26.4", default-features = false } tokio-stream = { version = "0.1" } tokio-util = { version = "0.7.12", features = ["time"] } toml = "1.1.2" tower = "0.5.3" tracing = "0.1.44" tracing-subscriber = { version = "0.3.23", features = [ "env-filter", "fmt", "std", "json", ] } tracing-test = "0.2.6" url = "2" x509-parser = "0.18.1" zeroize = { version = "1.8.2", features = ["zeroize_derive"] } zstd = "0.13.3" # NEAR CORE DEPENDENCIES: near-async = { git = "https://github.com/near/nearcore", tag = "2.13.0-rc.1" } near-client = { git = "https://github.com/near/nearcore", tag = "2.13.0-rc.1" } near-config-utils = { git = "https://github.com/near/nearcore", tag = "2.13.0-rc.1" } near-crypto = { git = "https://github.com/near/nearcore", tag = "2.13.0-rc.1" } near-indexer = { git = "https://github.com/near/nearcore", tag = "2.13.0-rc.1" } near-indexer-primitives = { git = "https://github.com/near/nearcore", tag = "2.13.0-rc.1" } near-o11y = { git = "https://github.com/near/nearcore", tag = "2.13.0-rc.1" } near-store = { git = "https://github.com/near/nearcore", tag = "2.13.0-rc.1" } near-time = { git = "https://github.com/near/nearcore", tag = "2.13.0-rc.1" } nearcore = { git = "https://github.com/near/nearcore", tag = "2.13.0-rc.1" } ## Outdated dependencies we cannot upgrade ## # Version 0.8.3 requires rustc 1.88 httpmock = "0.8.2" prometheus = { version = "0.14.0", default-features = false } # TODO(#690): This cannot be upgraded until nearcore does rocksdb = "0.21.0" # This version needs to be exactly the same as in `near_sdk::schemars` schemars = "0.8.22" # This is deprecated, we should find an alterantive serde_yaml = "0.9.34" # These dependencies need to be upgraded in tandem getrandom = "0.2.12" rand = "0.8.6" rand_chacha = "0.3" rand_core = "0.6.4" # Cannot be upgraded until we get MSVR 1.88 time = "0.3.45" [workspace.lints.rust] unexpected_cfgs = { level = "allow", check-cfg = [ 'cfg(feature, values("abi"))', ] } [workspace.lints.clippy] assertions_on_result_states = "warn" allow_attributes = "warn" mod_module_files = "deny" [workspace.lints.rustdoc] broken_intra_doc_links = "deny" [profile.test-release] inherits = "release" overflow-checks = true debug = true debug-assertions = true [profile.release-contract] inherits = "release" lto = "fat" codegen-units = 1 strip = true panic = "abort" # Optimize for binary size. # See https://doc.rust-lang.org/rustc/codegen-options/index.html#opt-level opt-level = "z" [profile.reproducible] inherits = "release" debug = false panic = "abort" codegen-units = 1 overflow-checks = true