diff --git a/sdk/rust/nym-sdk/examples/custom_topology_provider.rs b/sdk/rust/nym-sdk/examples/custom_topology_provider.rs index 805152708a..0e9a46a8a0 100644 --- a/sdk/rust/nym-sdk/examples/custom_topology_provider.rs +++ b/sdk/rust/nym-sdk/examples/custom_topology_provider.rs @@ -4,7 +4,7 @@ use nym_sdk::mixnet; use nym_sdk::mixnet::MixnetMessageSender; use nym_topology::provider_trait::{async_trait, TopologyProvider}; -use nym_topology::NymTopology; +use nym_topology::{NymTopology, NymTopologyMetadata}; use url::Url; struct MyTopologyProvider { @@ -25,27 +25,33 @@ impl MyTopologyProvider { .await .unwrap(); - let mut base_topology = NymTopology::new_empty(rewarded_set); - - let mixnodes = self + let mixnodes_response = self .validator_client - .get_all_basic_active_mixing_assigned_nodes() + .get_all_basic_active_mixing_assigned_nodes_with_metadata() .await .unwrap(); + let metadata = NymTopologyMetadata::new( + mixnodes_response.metadata.rotation_id, + mixnodes_response.metadata.absolute_epoch_id, + ); + let mut base_topology = NymTopology::new(metadata, rewarded_set, Vec::new()); + // in our topology provider only use mixnodes that have node_id divisible by 3 // and has exactly 100 performance score // why? because this is just an example to showcase arbitrary uses and capabilities of this trait - let filtered_mixnodes = mixnodes + let filtered_mixnodes = mixnodes_response + .nodes .into_iter() .filter(|mix| mix.node_id % 3 == 0 && mix.performance.is_hundred()) .collect::>(); let gateways = self .validator_client - .get_all_basic_entry_assigned_nodes() + .get_all_basic_entry_assigned_nodes_v2() .await - .unwrap(); + .unwrap() + .nodes; base_topology.add_skimmed_nodes(&filtered_mixnodes); base_topology.add_skimmed_nodes(&gateways);