@@ -16,7 +16,7 @@ use tracing::{debug, info};
1616use url:: Url ;
1717
1818use super :: { load_optional_env_var, PbsConfig , RelayConfig , MUX_PATH_ENV } ;
19- use crate :: { pbs:: RelayClient , types:: Chain } ;
19+ use crate :: { config :: remove_duplicate_keys , pbs:: RelayClient , types:: Chain } ;
2020
2121#[ derive( Debug , Deserialize , Serialize ) ]
2222pub struct PbsMuxes {
@@ -164,7 +164,7 @@ impl MuxKeysLoader {
164164 chain : Chain ,
165165 rpc_url : Option < Url > ,
166166 ) -> eyre:: Result < Vec < BlsPublicKey > > {
167- match self {
167+ let keys = match self {
168168 Self :: File ( config_path) => {
169169 // First try loading from env
170170 let path: PathBuf = load_optional_env_var ( & get_mux_env ( mux_id) )
@@ -192,7 +192,11 @@ impl MuxKeysLoader {
192192 }
193193 NORegistry :: SSV => fetch_ssv_pubkeys ( chain, U256 :: from ( * node_operator_id) ) . await ,
194194 } ,
195- }
195+ } ?;
196+
197+ // Remove duplicates
198+ let deduped_keys = remove_duplicate_keys ( keys) ;
199+ Ok ( deduped_keys)
196200 }
197201}
198202
@@ -281,8 +285,6 @@ async fn fetch_lido_registry_keys(
281285 }
282286
283287 ensure ! ( keys. len( ) == total_keys as usize , "expected {total_keys} keys, got {}" , keys. len( ) ) ;
284- let unique = keys. iter ( ) . collect :: < HashSet < _ > > ( ) ;
285- ensure ! ( unique. len( ) == keys. len( ) , "found duplicate keys in registry" ) ;
286288
287289 Ok ( keys)
288290}
@@ -330,9 +332,6 @@ async fn fetch_ssv_pubkeys(
330332 }
331333 }
332334
333- let unique = pubkeys. iter ( ) . collect :: < HashSet < _ > > ( ) ;
334- ensure ! ( unique. len( ) == pubkeys. len( ) , "found duplicate keys in registry" ) ;
335-
336335 Ok ( pubkeys)
337336}
338337
0 commit comments