[workspace] resolver = "2" members = [ # Version patches "patches/parking_lot", "patches/rocksdb", # Rewrites/redirects "patches/option-ext", "patches/directories-next", # monero-oxide expects ciphersuite, yet the ciphersuite in-tree here has breaking changes # This re-exports the in-tree ciphersuite _without_ changes breaking to monero-oxide # Not included in workspace to prevent having two crates with the same name (an error) # "patches/ciphersuite", "common/std-shims", "common/zalloc", "common/patchable-async-sleep", "common/db", "common/env", "common/task", "common/request", "crypto/transcript", "crypto/ff-group-tests", "crypto/dalek-ff-group", "crypto/ed448", "crypto/ciphersuite", "crypto/ciphersuite/kp256", "crypto/multiexp", "crypto/schnorr", "crypto/prime-field", "crypto/short-weierstrass", "crypto/secq256k1", "crypto/embedwards25519", "crypto/dkg", "crypto/dkg/recovery", "crypto/dkg/dealer", "crypto/dkg/musig", "crypto/dkg/evrf", "crypto/frost", "crypto/schnorrkel", "networks/bitcoin", "networks/ethereum/build-contracts", "networks/ethereum/schnorr", "networks/ethereum/alloy-simple-request-transport", "networks/ethereum/relayer", "message-queue", "processor/messages", "processor/key-gen", "processor/view-keys", "processor/frost-attempt-manager", "processor/primitives", "processor/scanner", "processor/scheduler/primitives", "processor/scheduler/utxo/primitives", "processor/scheduler/utxo/standard", "processor/scheduler/utxo/transaction-chaining", "processor/scheduler/smart-contract", "processor/signers", "processor/bin", "processor/bitcoin", "processor/ethereum/primitives", "processor/ethereum/test-primitives", "processor/ethereum/deployer", "processor/ethereum/router", "processor/ethereum/erc20", "processor/ethereum", "processor/monero", "coordinator/tributary-sdk/tendermint", "coordinator/tributary-sdk", "coordinator/cosign/types", "coordinator/cosign", "coordinator/substrate", "coordinator/tributary", "coordinator/p2p", "coordinator/p2p/libp2p", "coordinator", "substrate/primitives", "substrate/abi", "substrate/coins", "substrate/validator-sets", "substrate/signals", "substrate/dex", "substrate/genesis-liquidity", "substrate/economic-security", "substrate/emissions", "substrate/in-instructions", "substrate/runtime", "substrate/node", "substrate/client", "orchestration", "mini", "tests/no-std", "tests/docker", "tests/message-queue", # TODO "tests/processor", # TODO "tests/coordinator", # TODO "tests/full-stack", "tests/reproducible-runtime", ] [profile.dev.package] # Always compile Monero (and a variety of dependencies) with optimizations due # to the extensive operations required for Bulletproofs subtle = { opt-level = 3 } sha3 = { opt-level = 3 } blake2 = { opt-level = 3 } ff = { opt-level = 3 } group = { opt-level = 3 } crypto-bigint = { opt-level = 3 } curve25519-dalek = { opt-level = 3 } dalek-ff-group = { opt-level = 3 } multiexp = { opt-level = 3 } monero-generators = { opt-level = 3 } monero-borromean = { opt-level = 3 } monero-bulletproofs = { opt-level = 3 } monero-mlsag = { opt-level = 3 } monero-clsag = { opt-level = 3 } monero-oxide = { opt-level = 3 } # Always compile the eVRF DKG tree with optimizations as well secp256k1 = { opt-level = 3 } secq256k1 = { opt-level = 3 } embedwards25519 = { opt-level = 3 } generalized-bulletproofs = { opt-level = 3 } generalized-bulletproofs-circuit-abstraction = { opt-level = 3 } generalized-bulletproofs-ec-gadgets = { opt-level = 3 } # revm also effectively requires being built with optimizations revm = { opt-level = 3 } revm-bytecode = { opt-level = 3 } revm-context = { opt-level = 3 } revm-context-interface = { opt-level = 3 } revm-database = { opt-level = 3 } revm-database-interface = { opt-level = 3 } revm-handler = { opt-level = 3 } revm-inspector = { opt-level = 3 } revm-interpreter = { opt-level = 3 } revm-precompile = { opt-level = 3 } revm-primitives = { opt-level = 3 } revm-state = { opt-level = 3 } [profile.release] panic = "unwind" overflow-checks = true [patch.crates-io] # Dependencies from monero-oxide which originate from within our own tree std-shims = { path = "common/std-shims" } simple-request = { path = "common/request" } multiexp = { path = "crypto/multiexp" } flexible-transcript = { path = "crypto/transcript" } ciphersuite = { path = "patches/ciphersuite" } dalek-ff-group = { path = "crypto/dalek-ff-group" } minimal-ed448 = { path = "crypto/ed448" } modular-frost = { path = "crypto/frost" } # https://github.com/rust-lang-nursery/lazy-static.rs/issues/201 lazy_static = { git = "https://github.com/rust-lang-nursery/lazy-static.rs", rev = "5735630d46572f1e5377c8f2ba0f79d18f53b10c" } parking_lot = { path = "patches/parking_lot" } # Needed for WAL compression rocksdb = { path = "patches/rocksdb" } # directories-next was created because directories was unmaintained # directories-next is now unmaintained while directories is maintained # The directories author pulls in ridiculously pointless crates and prefers # copyleft licenses # The following two patches resolve everything option-ext = { path = "patches/option-ext" } directories-next = { path = "patches/directories-next" } # Patch to include `FromUniformBytes<64>` over Scalar k256 = { git = "https://github.com/kayabaNerve/elliptic-curves", rev = "4994c9ab163781a88cd4a49beae812a89a44e8c3" } p256 = { git = "https://github.com/kayabaNerve/elliptic-curves", rev = "4994c9ab163781a88cd4a49beae812a89a44e8c3" } # https://github.com/RustCrypto/hybrid-array/issues/131 hybrid-array = { git = "https://github.com/kayabaNerve/hybrid-array", rev = "8caa508976c93696a67f40734537c91be7cecd96" } [workspace.lints.clippy] incompatible_msrv = "allow" # Manually verified with a GitHub workflow manual_is_multiple_of = "allow" unwrap_or_default = "allow" map_unwrap_or = "allow" needless_continue = "allow" borrow_as_ptr = "deny" cast_lossless = "deny" cast_possible_truncation = "deny" cast_possible_wrap = "deny" cast_precision_loss = "deny" cast_ptr_alignment = "deny" cast_sign_loss = "deny" checked_conversions = "deny" cloned_instead_of_copied = "deny" enum_glob_use = "deny" expl_impl_clone_on_copy = "deny" explicit_into_iter_loop = "deny" explicit_iter_loop = "deny" flat_map_option = "deny" float_cmp = "deny" fn_params_excessive_bools = "deny" ignored_unit_patterns = "deny" implicit_clone = "deny" inefficient_to_string = "deny" invalid_upcast_comparisons = "deny" large_stack_arrays = "deny" linkedlist = "deny" macro_use_imports = "deny" manual_instant_elapsed = "deny" manual_let_else = "deny" manual_ok_or = "deny" manual_string_new = "deny" match_bool = "deny" match_same_arms = "deny" missing_fields_in_debug = "deny" needless_pass_by_value = "deny" ptr_cast_constness = "deny" range_minus_one = "deny" range_plus_one = "deny" redundant_closure_for_method_calls = "deny" redundant_else = "deny" string_add_assign = "deny" string_slice = "deny" unchecked_duration_subtraction = "deny" uninlined_format_args = "deny" unnecessary_box_returns = "deny" unnecessary_join = "deny" unnecessary_wraps = "deny" unnested_or_patterns = "deny" unused_async = "deny" unused_self = "deny" zero_sized_map_values = "deny"