mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 04:09:23 +00:00
For hash-pinned dependencies, adds comments documenting the associated versions. Adds a pin to `slither-analyzer` which was prior missing. Updates to Monero 0.18.4.4. `mimalloc` now has the correct option set when building for `musl`. A C++ compiler is no longer required in its Docker image. The runtime's `Dockerfile` now symlinks a `libc.so` already present on the image instead of creating one itself. It also builds the runtime within the image to ensure it only happens once. The test to ensure the methodology is reproducible has been updated to not simply create containers from the image, yet rebuild the image entirely, accordingly. This also is more robust and arguably should have already been done. The pin to the exact hash of the `patch-polkadot-sdk` repo in every `Cargo.toml` has been removed. The lockfile already serves that role, simplifying updating in the future. The latest Rust nightly is adopted as well (superseding https://github.com/serai-dex/serai/pull/697). The `librocksdb-sys` patch is replaced with a `kvdb-rocksdb` patch, removing a git dependency, thanks to https://github.com/paritytech/parity-common/pull/950.
276 lines
7.9 KiB
TOML
276 lines
7.9 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"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/erc20",
|
|
"processor/ethereum/router",
|
|
"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/median",
|
|
|
|
"substrate/core",
|
|
"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/serai",
|
|
"substrate/client/bitcoin",
|
|
"substrate/client/ethereum",
|
|
"substrate/client/monero",
|
|
"substrate/client",
|
|
|
|
"orchestration",
|
|
|
|
"mini",
|
|
|
|
"tests/no-std",
|
|
|
|
"tests/docker",
|
|
"tests/message-queue",
|
|
# TODO "tests/processor",
|
|
# TODO "tests/coordinator",
|
|
"tests/substrate",
|
|
# 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-io = { opt-level = 3 }
|
|
monero-primitives = { opt-level = 3 }
|
|
monero-ed25519 = { opt-level = 3 }
|
|
monero-mlsag = { opt-level = 3 }
|
|
monero-clsag = { opt-level = 3 }
|
|
monero-borromean = { opt-level = 3 }
|
|
monero-bulletproofs-generators = { opt-level = 3 }
|
|
monero-bulletproofs = {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]
|
|
# Point to empty crates for crates unused within in our tree
|
|
alloy-eip2124 = { path = "patches/ethereum/alloy-eip2124" }
|
|
ark-ff-3 = { package = "ark-ff", path = "patches/ethereum/ark-ff-0.3" }
|
|
ark-ff-4 = { package = "ark-ff", path = "patches/ethereum/ark-ff-0.4" }
|
|
c-kzg = { path = "patches/ethereum/c-kzg" }
|
|
secp256k1-30 = { package = "secp256k1", path = "patches/ethereum/secp256k1-30" }
|
|
|
|
# Dependencies from monero-oxide which originate from within our own tree, potentially shimmed to account for deviations since publishing
|
|
std-shims = { path = "patches/std-shims" }
|
|
simple-request = { path = "patches/simple-request" }
|
|
multiexp = { path = "crypto/multiexp" }
|
|
flexible-transcript = { path = "crypto/transcript" }
|
|
ciphersuite = { path = "patches/ciphersuite" }
|
|
dalek-ff-group = { path = "patches/dalek-ff-group" }
|
|
minimal-ed448 = { path = "crypto/ed448" }
|
|
modular-frost = { path = "crypto/frost" }
|
|
|
|
# Patch due to `std` now including the required functionality
|
|
is_terminal_polyfill = { path = "./patches/is_terminal_polyfill" }
|
|
# This has a non-deprecated `std` alternative since Rust's 2024 edition
|
|
home = { path = "patches/home" }
|
|
|
|
# Updates to the latest version
|
|
darling = { path = "patches/darling" }
|
|
thiserror = { path = "patches/thiserror" }
|
|
|
|
# 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" }
|
|
|
|
# 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 from a fork back to upstream
|
|
parity-bip39 = { path = "patches/parity-bip39" }
|
|
|
|
# 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" }
|
|
|
|
# `jemalloc` conflicts with `mimalloc`, so patch to a `kvdb-rocksdb` which never exposes `jemalloc`
|
|
kvdb-rocksdb = { path = "patches/kvdb-rocksdb" }
|
|
|
|
[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_time_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"
|
|
|
|
[workspace.lints.rust]
|
|
unused = "allow" # TODO: https://github.com/rust-lang/rust/issues/147648
|