mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 04:09:23 +00:00
`panic = "unwind"` was originally a requirement of Substrate, notably due to its [native runtime](https://github.com/paritytech/substrate/issues/10874). This does not mean all of Serai should use this setting however. As the native runtime has been removed, we do no longer need this for the Substrate node. With a review of our derivative, a panic guard is only used when fetching the version from the runtime, causing an error on boot if a panic occurs. Accordingly, we shouldn't have a need for `panic = "unwind"` within the node, and the runtime itself should be fine. The rest of Serai's services already registered bespoke hooks to ensure any panic caused the process to exit. Those are left as-is, even though they're now unnecessary.
282 lines
8.0 KiB
TOML
282 lines
8.0 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]
|
|
panic = "abort"
|
|
overflow-checks = true
|
|
[profile.release]
|
|
panic = "abort"
|
|
overflow-checks = true
|
|
# These do not respect the `panic` configuration value, so we don't provide them
|
|
[profile.test]
|
|
# panic = "abort" # https://github.com/rust-lang/issues/67650
|
|
overflow-checks = true
|
|
[profile.bench]
|
|
overflow-checks = true
|
|
|
|
[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 }
|
|
|
|
[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" }
|
|
|
|
[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
|