diff --git a/Cargo.lock b/Cargo.lock index 8ce02e2..614dbf1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -37,7 +37,7 @@ dependencies = [ "ark-std", "derivative", "hashbrown 0.13.2", - "itertools", + "itertools 0.10.5", "num-traits", "zeroize", ] @@ -54,7 +54,7 @@ dependencies = [ "ark-std", "derivative", "digest 0.10.7", - "itertools", + "itertools 0.10.5", "num-bigint", "num-traits", "paste", @@ -445,6 +445,7 @@ dependencies = [ name = "dynamic-slippage-config" version = "0.1.0" dependencies = [ + "itertools 0.13.0", "serde", "serde_json", "solana-program", @@ -536,6 +537,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" diff --git a/Cargo.toml b/Cargo.toml index 063ad66..9ed2b4f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +itertools = "0.13.0" serde = "1.0.208" serde_json = "1.0.125" solana-program = "2.0.6" diff --git a/dynamic_slippage_config.json b/dynamic_slippage_config.json index 2aef4e7..2fe5083 100644 --- a/dynamic_slippage_config.json +++ b/dynamic_slippage_config.json @@ -104,10 +104,8 @@ "eon5tgYNk5FjJUcBUcLno49t2GfpmWZDzJHeYkbh9Zo", "gSvP9zBJ33pX7W2finzAYJZp6Q9ipNAQ19xU9PrCirz", "Bybit2vBJGhPF52GBdNaQfUJ6ZpThSgHBobjWZpLPb4B", - "So11111111111111111111111111111111111111112", "5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm", - "7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj", - "mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So" + "7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj" ] }, { @@ -134,7 +132,6 @@ "3B5wuUrMEi5yATD7on46hKfej3pfmd7t1RKgrsN3pump", "GYKmdfcUmZVrqfcH1g579BGjuzSRijj3LBuwv79rpump", "LMFzmYL6y1FX8HsEmZ6yNKNzercBmtmpg2ZoLwuUboU", - "DEkqHyPN7GMRJ5cArtQFAWefqbZb33Hyf6s5iCwjEonT", "5EgzypuMLFUBDacgZqJcuL7eKtpSJuKgNu7i7Kdypump", "63LfDmNb3MQ8mw9MtZ2To9bEA2M71kZUUGq5tiJxcqj9", "5z3EqYQo9HiCEs3R84RCDMu2n7anpDMxRhdK8PSWmrRC", diff --git a/src/lib.rs b/src/lib.rs index 6110b9e..a1d972c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -71,6 +71,8 @@ pub fn deserialize_dynamic_slippage_config() -> Result<(DefaultSlippage, Vec>(), vec!["stable", "lst", "bluechip", "verified"] ); - assert!(categories .iter() .find(|c| c.name == "lst") .unwrap() .pair_range - .is_some()) + .is_some()); + + // Ensure no duplicated mints, otherwise the config behaviour will be confusing + let duplicates = categories + .iter() + .flat_map(|c| &c.mints) + .duplicates() + .collect::>(); + + assert_eq!(duplicates, Vec::<&Pubkey>::new()); } }