From 559d99228c2c303669a3ba211fdb041f604562f0 Mon Sep 17 00:00:00 2001 From: Arrowana Date: Mon, 26 Aug 2024 08:52:29 +1000 Subject: [PATCH 1/3] feat: Assert no duplicate mints --- src/lib.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 4dc0e33..1ed6a2a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -68,6 +68,8 @@ pub fn deserialize_dynamic_slippage_config() -> Result<(DefaultSlippage, Vec>(), + categories.iter().map(|c| &c.name).collect::>(), vec!["stable", "lst", "bluechip", "verified"] ); + + // Ensure no duplicated mints, otherwise the config behaviour will be confusing + let mints = categories + .iter() + .map(|c| c.mints.iter()) + .flatten() + .collect::>(); + let set: HashSet<&Pubkey> = HashSet::from_iter(mints.clone()); + assert_eq!(mints.len(), set.len()); } } From 679d2cad3f56a030f55612fec460b5457f1b1e32 Mon Sep 17 00:00:00 2001 From: Arrowana Date: Mon, 26 Aug 2024 11:44:49 +1000 Subject: [PATCH 2/3] like this instead --- Cargo.lock | 14 ++++++++++++-- Cargo.toml | 1 + src/lib.rs | 14 +++++++------- 3 files changed, 20 insertions(+), 9 deletions(-) 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/src/lib.rs b/src/lib.rs index 1ed6a2a..4d472b5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -68,7 +68,7 @@ pub fn deserialize_dynamic_slippage_config() -> Result<(DefaultSlippage, Vec>(); - let set: HashSet<&Pubkey> = HashSet::from_iter(mints.clone()); - assert_eq!(mints.len(), set.len()); + .flat_map(|c| &c.mints) + .duplicates() + .collect::>(); + + assert_eq!(duplicates, Vec::<&Pubkey>::new()); } } From c3e542e7992b8b69c14a966cf8b109d751ac6458 Mon Sep 17 00:00:00 2001 From: Arrowana Date: Fri, 30 Aug 2024 12:34:15 +1000 Subject: [PATCH 3/3] remove duplicates --- dynamic_slippage_config.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) 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",