mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-11 21:49:26 +00:00
Remove the distribution cache
It's a notable bandwidth/performance improvement, yet it's not ready. We need a dedicated Distribution struct which is managed by the wallet and passed in. While we can do that now, it's not currently worth the effort.
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -4672,7 +4672,6 @@ dependencies = [
|
|||||||
name = "monero-serai"
|
name = "monero-serai"
|
||||||
version = "0.1.4-alpha"
|
version = "0.1.4-alpha"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-lock",
|
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"base58-monero",
|
"base58-monero",
|
||||||
"curve25519-dalek",
|
"curve25519-dalek",
|
||||||
|
|||||||
@@ -47,8 +47,6 @@ frost = { package = "modular-frost", path = "../../crypto/frost", version = "0.8
|
|||||||
|
|
||||||
monero-generators = { path = "generators", version = "0.4", default-features = false }
|
monero-generators = { path = "generators", version = "0.4", default-features = false }
|
||||||
|
|
||||||
async-lock = { version = "3", default-features = false, optional = true }
|
|
||||||
|
|
||||||
hex-literal = "0.4"
|
hex-literal = "0.4"
|
||||||
hex = { version = "0.4", default-features = false, features = ["alloc"] }
|
hex = { version = "0.4", default-features = false, features = ["alloc"] }
|
||||||
serde = { version = "1", default-features = false, features = ["derive", "alloc"] }
|
serde = { version = "1", default-features = false, features = ["derive", "alloc"] }
|
||||||
@@ -93,8 +91,6 @@ std = [
|
|||||||
|
|
||||||
"monero-generators/std",
|
"monero-generators/std",
|
||||||
|
|
||||||
"async-lock?/std",
|
|
||||||
|
|
||||||
"hex/std",
|
"hex/std",
|
||||||
"serde/std",
|
"serde/std",
|
||||||
"serde_json/std",
|
"serde_json/std",
|
||||||
@@ -102,7 +98,6 @@ std = [
|
|||||||
"base58-monero/std",
|
"base58-monero/std",
|
||||||
]
|
]
|
||||||
|
|
||||||
cache-distribution = ["async-lock"]
|
|
||||||
http-rpc = ["digest_auth", "simple-request", "tokio"]
|
http-rpc = ["digest_auth", "simple-request", "tokio"]
|
||||||
multisig = ["transcript", "frost", "std"]
|
multisig = ["transcript", "frost", "std"]
|
||||||
binaries = ["tokio/rt-multi-thread", "tokio/macros", "http-rpc"]
|
binaries = ["tokio/rt-multi-thread", "tokio/macros", "http-rpc"]
|
||||||
|
|||||||
@@ -1,13 +1,5 @@
|
|||||||
use std_shims::{vec::Vec, collections::HashSet};
|
use std_shims::{vec::Vec, collections::HashSet};
|
||||||
|
|
||||||
#[cfg(feature = "cache-distribution")]
|
|
||||||
use std_shims::sync::OnceLock;
|
|
||||||
|
|
||||||
#[cfg(all(feature = "cache-distribution", not(feature = "std")))]
|
|
||||||
use std_shims::sync::Mutex;
|
|
||||||
#[cfg(all(feature = "cache-distribution", feature = "std"))]
|
|
||||||
use async_lock::Mutex;
|
|
||||||
|
|
||||||
use zeroize::{Zeroize, ZeroizeOnDrop};
|
use zeroize::{Zeroize, ZeroizeOnDrop};
|
||||||
|
|
||||||
use rand_core::{RngCore, CryptoRng};
|
use rand_core::{RngCore, CryptoRng};
|
||||||
@@ -29,16 +21,6 @@ const BLOCKS_PER_YEAR: usize = 365 * 24 * 60 * 60 / BLOCK_TIME;
|
|||||||
#[allow(clippy::cast_precision_loss)]
|
#[allow(clippy::cast_precision_loss)]
|
||||||
const TIP_APPLICATION: f64 = (DEFAULT_LOCK_WINDOW * BLOCK_TIME) as f64;
|
const TIP_APPLICATION: f64 = (DEFAULT_LOCK_WINDOW * BLOCK_TIME) as f64;
|
||||||
|
|
||||||
// TODO: Resolve safety of this in case a reorg occurs/the network changes
|
|
||||||
// TODO: Update this when scanning a block, as possible
|
|
||||||
#[cfg(feature = "cache-distribution")]
|
|
||||||
static DISTRIBUTION_CELL: OnceLock<Mutex<Vec<u64>>> = OnceLock::new();
|
|
||||||
#[cfg(feature = "cache-distribution")]
|
|
||||||
#[allow(non_snake_case)]
|
|
||||||
fn DISTRIBUTION() -> &'static Mutex<Vec<u64>> {
|
|
||||||
DISTRIBUTION_CELL.get_or_init(|| Mutex::new(Vec::with_capacity(3000000)))
|
|
||||||
}
|
|
||||||
|
|
||||||
#[allow(clippy::too_many_arguments)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
async fn select_n<'a, R: RngCore + CryptoRng, RPC: RpcConnection>(
|
async fn select_n<'a, R: RngCore + CryptoRng, RPC: RpcConnection>(
|
||||||
rng: &mut R,
|
rng: &mut R,
|
||||||
@@ -158,14 +140,6 @@ async fn select_decoys<R: RngCore + CryptoRng, RPC: RpcConnection>(
|
|||||||
inputs: &[SpendableOutput],
|
inputs: &[SpendableOutput],
|
||||||
fingerprintable_canonical: bool,
|
fingerprintable_canonical: bool,
|
||||||
) -> Result<Vec<Decoys>, RpcError> {
|
) -> Result<Vec<Decoys>, RpcError> {
|
||||||
#[cfg(feature = "cache-distribution")]
|
|
||||||
#[cfg(not(feature = "std"))]
|
|
||||||
let mut distribution = DISTRIBUTION().lock();
|
|
||||||
#[cfg(feature = "cache-distribution")]
|
|
||||||
#[cfg(feature = "std")]
|
|
||||||
let mut distribution = DISTRIBUTION().lock().await;
|
|
||||||
|
|
||||||
#[cfg(not(feature = "cache-distribution"))]
|
|
||||||
let mut distribution = vec![];
|
let mut distribution = vec![];
|
||||||
|
|
||||||
let decoy_count = ring_len - 1;
|
let decoy_count = ring_len - 1;
|
||||||
|
|||||||
@@ -36,4 +36,4 @@ dkg = { path = "../../crypto/dkg", default-features = false }
|
|||||||
bitcoin-serai = { path = "../../coins/bitcoin", default-features = false, features = ["hazmat"] }
|
bitcoin-serai = { path = "../../coins/bitcoin", default-features = false, features = ["hazmat"] }
|
||||||
|
|
||||||
monero-generators = { path = "../../coins/monero/generators", default-features = false }
|
monero-generators = { path = "../../coins/monero/generators", default-features = false }
|
||||||
monero-serai = { path = "../../coins/monero", default-features = false, features = ["cache-distribution"] }
|
monero-serai = { path = "../../coins/monero", default-features = false }
|
||||||
|
|||||||
Reference in New Issue
Block a user