content: [workspace]
  members = [
    "massa-api",
    "massa-api-exports",
    "massa-async-pool",
    "massa-bootstrap",
    "massa-client",
    "massa-cipher",
    "massa-consensus-exports",
    "massa-consensus-worker",
    "massa-db-exports",
    "massa-db-worker",
    "massa-executed-ops",
    "massa-execution-exports",
    "massa-execution-worker",
    "massa-factory-exports",
    "massa-factory-worker",
    "massa-channel",
    "massa-consensus-exports",
    "massa-consensus-worker",
    "massa-hash",
    "massa-logging",
    "massa-metrics",
    "massa-models",
    "massa-node",
    "massa-sdk",
    "massa-storage",
    "massa-pool-worker",
    "massa-pool-exports",
    "massa-protocol-exports",
    "massa-protocol-worker",
    "massa-module-cache",
    "massa-serialization",
    "massa-signature",
    "massa-test-framework",
    "massa-time",
    "massa-wallet",
    "massa-ledger-worker",
    "massa-ledger-exports",
    "massa-final-state",
    "massa-pos-exports",
    "massa-pos-worker",
    "massa-versioning",
    "massa-grpc",
    "massa-xtask",
    "massa-event-cache",
  ]
  resolver = "2"
  
  # From https://doc.rust-lang.org/cargo/reference/profiles.html#overrides
  [profile.dev.package."*"]
  opt-level = 3 # Speed-up the CI
  
  # This profile is used for prebuilt binaries.
  [profile.release_prebuilt]
  inherits = "release"
  codegen-units = 1    # Do not split into multiple codegen units, improve performance, may compile slower
  lto = true           # Enables Link Time Optimization, enabling more aggressive optimizations across the entire codebase
  
  # # Features
  #
  # * test-exports: enable some tests specific exports.
  # Usage: add test-exports = ["massa_crate/test-exports", ...] to dev-dependencies to use test specific functions avaible in massa-crate.
  # Do not add as a regular dependency. Never.
  #
  # * sandbox: for testing purpose, genesis timestamps is set as now + 9 seconds.
  # The saved snapshot can then be used to restart the network from the snapshot.
  [workspace.dependencies]
  # Internal packages
  massa_api = { path = "./massa-api" }
  massa_api_exports = { path = "./massa-api-exports" }
  massa_async_pool = { path = "./massa-async-pool" }
  massa_bootstrap = { path = "./massa-bootstrap" }
  massa_channel = { path = "./massa-channel" }
  massa_cipher = { path = "./massa-cipher" }
  massa_consensus_exports = { path = "./massa-consensus-exports" }
  massa_consensus_worker = { path = "./massa-consensus-worker" }
  massa_db_exports = { path = "./massa-db-exports" }
  massa_db_worker = { path = "./massa-db-worker" }
  massa_deferred_calls = { path = "./massa-deferred-calls" }
  massa_executed_ops = { path = "./massa-executed-ops" }
  massa_execution_exports = { path = "./massa-execution-exports" }
  massa_execution_worker = { path = "./massa-execution-worker" }
  massa_factory_exports = { path = "./massa-factory-exports" }
  massa_factory_worker = { path = "./massa-factory-worker" }
  massa_final_state = { path = "./massa-final-state" }
  massa_grpc = { path = "./massa-grpc" }
  massa_hash = { path = "./massa-hash" }
  massa_ledger_exports = { path = "./massa-ledger-exports" }
  massa_ledger_worker = { path = "./massa-ledger-worker" }
  massa_logging = { path = "./massa-logging" }
  massa_metrics = { path = "./massa-metrics" }
  massa_models = { path = "./massa-models" }
  massa_module_cache = { path = "./massa-module-cache" }
  massa_pool_exports = { path = "./massa-pool-exports" }
  massa_pool_worker = { path = "./massa-pool-worker" }
  massa_pos_exports = { path = "./massa-pos-exports" }
  massa_pos_worker = { path = "./massa-pos-worker" }
  massa_protocol_exports = { path = "./massa-protocol-exports" }
  massa_protocol_worker = { path = "./massa-protocol-worker" }
  massa_sdk = { path = "./massa-sdk" }
  massa_serialization = { path = "./massa-serialization" }
  massa_signature = { path = "./massa-signature" }
  massa_storage = { path = "./massa-storage" }
  massa_test_framework = { path = "./massa-test-framework" }
  massa_time = { path = "./massa-time" }
  massa_versioning = { path = "./massa-versioning" }
  massa_wallet = { path = "./massa-wallet" }
  massa_event_cache = { path = "./massa-event-cache" }
  
  # Massa projects dependencies
  massa-proto-rs = { git = "https://github.com/massalabs/massa-proto-rs.git", "rev" = "9bfbbe1b5dc62815aa2b9f9c5b827b0198da65e3" }
  massa-sc-runtime = { git = "https://github.com/massalabs/massa-sc-runtime", "rev" = "3218b591dcbbc2b88b22a91817434208eb909d12" }
  
  peernet = { git = "https://github.com/massalabs/PeerNet", "rev" = "04b05ddd320fbe76cc858115af7b5fc28bdb8310" }
  # Dev only - use local dependencies
  # massa-proto-rs = { path = "../massa-proto-rs" }
  # massa-sc-runtime = { path = "../massa-sc-runtime" }
  # peernet = { path = "../peernet" }
  
  # Common dependencies
  transition = { git = "https://github.com/massalabs/transition.git", "rev" = "93fa3bf82f9f5ff421c78536879b7fd1b948ca75" }
  substruct = { git = "https://github.com/massalabs/substruct", "rev" = "2fb3ae0dc9d913a0566ce6415eaa7a7ca1690fe1" }
  machine = { git = "https://github.com/massalabs/machine", "rev" = "1736a01400aac54f69a81002862f8555b08caa9b" }
  aes-gcm = "0.10"
  anyhow = "1.0"
  assert_matches = "1.5"
  async-trait = "0.1"
  bitvec = "1.0"
  blake3 = "=1.5"
  bs58 = "=0.5"
  cfg-if = "1.0.0"
  clap = { version = "4.4", features = ["derive", "cargo"] }
  config = "0.13"
  console = "0.15"
  criterion = "0.5"
  crossbeam = "0.8"
  crossbeam-channel = "0.5"
  ctrlc = "3.2"
  dialoguer = "0.11"
  directories = "5.0"
  displaydoc = "0.2"
  ed25519-dalek = { version = "=2.1", features = ["rand_core", "zeroize"] }
  erased-serde = "0.3"
  futures = "0.3"
  futures-util = "0.3"
  h2 = "0.3"
  hex-literal = "0.4"
  http = "1.1.0"
  humantime = "2.1"
  hyper = "1"
  ip_rfc = "0.1"
  is-terminal = "0.4"
  itertools = "0.12"
  jsonrpsee = "0.24"
  jsonrpsee-http-client = "0.24"
  jsonrpsee-ws-client = "0.24"
  lazy_static = "1.4"
  libsecp256k1 = "=0.7"
  mio = "0.8.11"
  mockall = "0.11"
  mockall_wrap = { git = "https://github.com/AurelienFT/mockall-wrap", rev = "18f88253a000df96cf407dfe4b9158c69c0aeb96" }
  more-asserts = "0.3"
  nom = "=7.1"
  num = "=0.4"
  num_enum = "0.7"
  paginate = "1.1"
  parking_lot = "0.12"
  paste = "1.0"
  pbkdf2 = { version = "=0.12", features = ["simple"] }
  prometheus = "0.13"
  rand = "0.8"
  rand_distr = "=0.4"
  rand_xoshiro = "0.6"
  rayon = "1.7"
  rcgen = "0.11"
  regex = "1.11.1"
  # "rust-rocksdb" instead of "rocksdb" fixes jemalloc feature, see https://github.com/rust-rocksdb/rust-rocksdb/issues/863
  rocksdb = { package = "rust-rocksdb", version = "0.36.0" }
  rust_decimal = { version = "1.32", default-features = false }
  rustyline = "12.0"
  rustyline-derive = "0.9"
  schnellru = "0.2"
  serde = "1.0"
  serde_json = "1.0"
  serde_qs = "0.12"
  serde_with = "3.3"
  serde_yaml = "0.9.34"                                                                                                    # 0.9.34+deprecated
  serial_test = "2.0"
  sha2 = "=0.10"
  sha3 = "=0.10"
  socket2 = "0.5"
  static_assertions = "1.1"
  stream_limiter = "3.2"
  structopt = "0.3"
  strum = "0.25"
  strum_macros = "0.25"
  tempfile = "3.5"
  thiserror = "1.0"
  time = "0.3"
  tokio = "1.23"
  tokio-stream = "0.1"
  toml_edit = "0.21"
  tonic = "=0.12"
  tonic-health = "=0.12"
  tonic-reflection = "=0.12"
  tonic-web = "=0.12"
  tower = "0.4"
  tower-http = "0.6"
  tower-service = "0.3"
  tracing = "0.1"
  tracing-subscriber = "0.3"
  unsigned-varint = "0.8"
  variant_count = "1.1"
  walkdir = "2.3"
  zeroize = { version = "1.7", features = ["derive"] }
  prost = { version = "=0.13" }
  tikv-jemalloc-sys = { version = "0.6", features = ["unprefixed_malloc_on_supported_platforms"] }
  