From 27ee58bfb92c83e8c73c812a020d77d398ee4a5b Mon Sep 17 00:00:00 2001 From: Matthew Hounslow Date: Thu, 23 Oct 2025 10:03:21 -0700 Subject: [PATCH 1/2] Refactor: Replace `AddressNetwork` with `NetworkId` and improve `StakeAddress` handling --- codec/src/map_parameters.rs | 8 +- common/src/address.rs | 113 ++++++------------ common/src/stake_addresses.rs | 4 +- common/src/types.rs | 21 +++- modules/accounts_state/src/snapshot.rs | 4 +- modules/accounts_state/src/state.rs | 4 +- modules/drep_state/src/state.rs | 44 +++---- .../rest_blockfrost/src/handlers/epochs.rs | 10 +- .../src/stake_delta_filter.rs | 8 +- modules/stake_delta_filter/src/utils.rs | 12 +- 10 files changed, 106 insertions(+), 122 deletions(-) diff --git a/codec/src/map_parameters.rs b/codec/src/map_parameters.rs index 60a809cf..bc002735 100644 --- a/codec/src/map_parameters.rs +++ b/codec/src/map_parameters.rs @@ -19,11 +19,11 @@ use acropolis_common::{ }; use std::collections::{HashMap, HashSet}; -/// Map Pallas Network to our AddressNetwork -pub fn map_network(network: addresses::Network) -> Result { +/// Map Pallas Network to our NetworkId +pub fn map_network(network: addresses::Network) -> Result { match network { - addresses::Network::Mainnet => Ok(AddressNetwork::Main), - addresses::Network::Testnet => Ok(AddressNetwork::Test), + addresses::Network::Mainnet => Ok(NetworkId::Mainnet), + addresses::Network::Testnet => Ok(NetworkId::Testnet), _ => return Err(anyhow!("Unknown network in address")), } } diff --git a/common/src/address.rs b/common/src/address.rs index 4b0269f6..778dd26a 100644 --- a/common/src/address.rs +++ b/common/src/address.rs @@ -83,43 +83,6 @@ impl ByronAddress { } } -/// Address network identifier -#[derive( - Debug, - Clone, - PartialEq, - Eq, - Hash, - serde::Serialize, - serde::Deserialize, - minicbor::Encode, - minicbor::Decode, -)] -pub enum AddressNetwork { - /// Mainnet - #[n(0)] - Main, - - /// Testnet - #[n(1)] - Test, -} - -impl From for AddressNetwork { - fn from(network: NetworkId) -> Self { - match network { - NetworkId::Mainnet => Self::Main, - NetworkId::Testnet => Self::Test, - } - } -} - -impl Default for AddressNetwork { - fn default() -> Self { - Self::Main - } -} - /// A Shelley-era address - payment part #[derive( Debug, @@ -227,7 +190,7 @@ impl Default for ShelleyAddressDelegationPart { pub struct ShelleyAddress { /// Network id #[n(0)] - pub network: AddressNetwork, + pub network: NetworkId, /// Payment part #[n(1)] @@ -244,8 +207,8 @@ impl ShelleyAddress { let (hrp, data) = bech32::decode(text)?; if let Some(header) = data.first() { let network = match hrp.as_str().contains("test") { - true => AddressNetwork::Test, - false => AddressNetwork::Main, + true => NetworkId::Testnet, + false => NetworkId::Mainnet, }; let header = *header; @@ -288,8 +251,8 @@ impl ShelleyAddress { /// Convert to addr1xxx form pub fn to_string(&self) -> Result { let (hrp, network_bits) = match self.network { - AddressNetwork::Main => (bech32::Hrp::parse("addr")?, 1u8), - AddressNetwork::Test => (bech32::Hrp::parse("addr_test")?, 0u8), + NetworkId::Mainnet => (bech32::Hrp::parse("addr")?, 1u8), + NetworkId::Testnet => (bech32::Hrp::parse("addr_test")?, 0u8), }; let (payment_hash, payment_bits): (&Vec, u8) = match &self.payment { @@ -318,8 +281,8 @@ impl ShelleyAddress { pub fn to_bytes_key(&self) -> Result> { let network_bits = match self.network { - AddressNetwork::Main => 1u8, - AddressNetwork::Test => 0u8, + NetworkId::Mainnet => 1u8, + NetworkId::Testnet => 0u8, }; let (payment_hash, payment_bits): (&Vec, u8) = match &self.payment { @@ -365,8 +328,8 @@ impl ShelleyAddress { pub fn stake_address_string(&self) -> Result> { let network_bit = match self.network { - AddressNetwork::Main => 1, - AddressNetwork::Test => 0, + NetworkId::Mainnet => 1, + NetworkId::Testnet => 0, }; match &self.delegation { @@ -418,14 +381,14 @@ impl StakeAddressPayload { #[derive(Debug, Clone, Eq, PartialEq, Hash, serde::Serialize, serde::Deserialize)] pub struct StakeAddress { /// Network id - pub network: AddressNetwork, + pub network: NetworkId, /// Payload pub payload: StakeAddressPayload, } impl StakeAddress { - pub fn new(payload: StakeAddressPayload, network: AddressNetwork) -> Self { + pub fn new(payload: StakeAddressPayload, network: NetworkId) -> Self { StakeAddress { network, payload } } @@ -446,8 +409,8 @@ impl StakeAddress { /// Convert to string stake1xxx format pub fn to_string(&self) -> Result { let hrp = match self.network { - AddressNetwork::Main => bech32::Hrp::parse("stake")?, - AddressNetwork::Test => bech32::Hrp::parse("stake_test")?, + NetworkId::Mainnet => bech32::Hrp::parse("stake")?, + NetworkId::Testnet => bech32::Hrp::parse("stake_test")?, }; let data = self.to_binary(); @@ -459,8 +422,8 @@ impl StakeAddress { let (hrp, data) = bech32::decode(text)?; if let Some(header) = data.first() { let network = match hrp.as_str().contains("test") { - true => AddressNetwork::Test, - false => AddressNetwork::Main, + true => NetworkId::Testnet, + false => NetworkId::Mainnet, }; let payload = match (header >> 4) & 0x0Fu8 { @@ -478,8 +441,8 @@ impl StakeAddress { /// Convert to binary format (29 bytes) pub fn to_binary(&self) -> Vec { let network_bits = match self.network { - AddressNetwork::Main => 0b1u8, - AddressNetwork::Test => 0b0u8, + NetworkId::Mainnet => 0b1u8, + NetworkId::Testnet => 0b0u8, }; let (stake_bits, stake_hash): (u8, &Vec) = match &self.payload { @@ -499,8 +462,8 @@ impl StakeAddress { } let network = match data[0] & 0x01 { - 0b1 => AddressNetwork::Main, - _ => AddressNetwork::Test, + 0b1 => NetworkId::Mainnet, + _ => NetworkId::Testnet, }; let payload = match (data[0] >> 4) & 0x0F { @@ -520,8 +483,8 @@ impl StakeAddress { }; let net_bit = match self.network { - AddressNetwork::Main => 1, - AddressNetwork::Test => 0, + NetworkId::Mainnet => 1, + NetworkId::Testnet => 0, }; let header = net_bit | (bits << 4); @@ -562,7 +525,7 @@ impl<'b, C> minicbor::Decode<'b, C> for StakeAddress { impl Default for StakeAddress { fn default() -> Self { StakeAddress { - network: AddressNetwork::Main, + network: NetworkId::Mainnet, payload: StakeAddressPayload::StakeKeyHash(vec![0u8; 28]), } } @@ -729,7 +692,7 @@ mod tests { #[test] fn shelley_type_0() { let address = Address::Shelley(ShelleyAddress { - network: AddressNetwork::Main, + network: NetworkId::Mainnet, payment: ShelleyAddressPaymentPart::PaymentKeyHash(test_payment_key_hash()), delegation: ShelleyAddressDelegationPart::StakeKeyHash(test_stake_key_hash()), }); @@ -744,7 +707,7 @@ mod tests { #[test] fn shelley_type_1() { let address = Address::Shelley(ShelleyAddress { - network: AddressNetwork::Main, + network: NetworkId::Mainnet, payment: ShelleyAddressPaymentPart::ScriptHash(test_script_hash()), delegation: ShelleyAddressDelegationPart::StakeKeyHash(test_stake_key_hash()), }); @@ -759,7 +722,7 @@ mod tests { #[test] fn shelley_type_2() { let address = Address::Shelley(ShelleyAddress { - network: AddressNetwork::Main, + network: NetworkId::Mainnet, payment: ShelleyAddressPaymentPart::PaymentKeyHash(test_payment_key_hash()), delegation: ShelleyAddressDelegationPart::ScriptHash(test_script_hash()), }); @@ -774,7 +737,7 @@ mod tests { #[test] fn shelley_type_3() { let address = Address::Shelley(ShelleyAddress { - network: AddressNetwork::Main, + network: NetworkId::Mainnet, payment: ShelleyAddressPaymentPart::ScriptHash(test_script_hash()), delegation: ShelleyAddressDelegationPart::ScriptHash(test_script_hash()), }); @@ -789,7 +752,7 @@ mod tests { #[test] fn shelley_type_4() { let address = Address::Shelley(ShelleyAddress { - network: AddressNetwork::Main, + network: NetworkId::Mainnet, payment: ShelleyAddressPaymentPart::PaymentKeyHash(test_payment_key_hash()), delegation: ShelleyAddressDelegationPart::Pointer(test_pointer()), }); @@ -807,7 +770,7 @@ mod tests { #[test] fn shelley_type_5() { let address = Address::Shelley(ShelleyAddress { - network: AddressNetwork::Main, + network: NetworkId::Mainnet, payment: ShelleyAddressPaymentPart::ScriptHash(test_script_hash()), delegation: ShelleyAddressDelegationPart::Pointer(test_pointer()), }); @@ -825,7 +788,7 @@ mod tests { #[test] fn shelley_type_6() { let address = Address::Shelley(ShelleyAddress { - network: AddressNetwork::Main, + network: NetworkId::Mainnet, payment: ShelleyAddressPaymentPart::PaymentKeyHash(test_payment_key_hash()), delegation: ShelleyAddressDelegationPart::None, }); @@ -843,7 +806,7 @@ mod tests { #[test] fn shelley_type_7() { let address = Address::Shelley(ShelleyAddress { - network: AddressNetwork::Main, + network: NetworkId::Mainnet, payment: ShelleyAddressPaymentPart::ScriptHash(test_script_hash()), delegation: ShelleyAddressDelegationPart::None, }); @@ -861,7 +824,7 @@ mod tests { #[test] fn shelley_type_14() { let address = Address::Stake(StakeAddress { - network: AddressNetwork::Main, + network: NetworkId::Mainnet, payload: StakeAddressPayload::StakeKeyHash(test_stake_key_hash()), }); @@ -878,7 +841,7 @@ mod tests { #[test] fn shelley_type_15() { let address = Address::Stake(StakeAddress { - network: AddressNetwork::Main, + network: NetworkId::Mainnet, payload: StakeAddressPayload::ScriptHash(test_script_hash()), }); @@ -922,7 +885,7 @@ mod tests { let binary = hex::decode("e1558f3ee09b26d88fac2eddc772a9eda94cce6dbadbe9fee439bd6001").unwrap(); let sa = StakeAddress::from_binary(&binary).unwrap(); - assert_eq!(sa.network, AddressNetwork::Main); + assert_eq!(sa.network, NetworkId::Mainnet); assert_eq!( match sa.payload { StakeAddressPayload::StakeKeyHash(key) => hex::encode(&key), @@ -938,7 +901,7 @@ mod tests { let binary = hex::decode("f1558f3ee09b26d88fac2eddc772a9eda94cce6dbadbe9fee439bd6001").unwrap(); let sa = StakeAddress::from_binary(&binary).unwrap(); - assert_eq!(sa.network, AddressNetwork::Main); + assert_eq!(sa.network, NetworkId::Mainnet); assert_eq!( match sa.payload { StakeAddressPayload::ScriptHash(key) => hex::encode(&key), @@ -954,7 +917,7 @@ mod tests { let binary = hex::decode("e0558f3ee09b26d88fac2eddc772a9eda94cce6dbadbe9fee439bd6001").unwrap(); let sa = StakeAddress::from_binary(&binary).unwrap(); - assert_eq!(sa.network, AddressNetwork::Test); + assert_eq!(sa.network, NetworkId::Testnet); assert_eq!( match sa.payload { StakeAddressPayload::StakeKeyHash(key) => hex::encode(&key), @@ -1007,7 +970,7 @@ mod tests { let mut decoder = minicbor::Decoder::new(&binary); let decoded = StakeAddress::decode(&mut decoder, &mut ()).unwrap(); - assert_eq!(decoded.network, AddressNetwork::Main); + assert_eq!(decoded.network, NetworkId::Mainnet); assert_eq!( match decoded.payload { StakeAddressPayload::StakeKeyHash(key) => hex::encode(&key), @@ -1030,7 +993,7 @@ mod tests { let mut decoder = minicbor::Decoder::new(&encoded); let decoded = StakeAddress::decode(&mut decoder, &mut ()).unwrap(); - assert_eq!(decoded.network, AddressNetwork::Main); + assert_eq!(decoded.network, NetworkId::Mainnet); assert_eq!( match decoded.payload { StakeAddressPayload::ScriptHash(key) => hex::encode(&key), @@ -1051,7 +1014,7 @@ mod tests { let mut decoder = minicbor::Decoder::new(&encoded); let decoded = StakeAddress::decode(&mut decoder, &mut ()).unwrap(); - assert_eq!(decoded.network, AddressNetwork::Test); + assert_eq!(decoded.network, NetworkId::Testnet); assert_eq!( match decoded.payload { StakeAddressPayload::ScriptHash(key) => hex::encode(&key), diff --git a/common/src/stake_addresses.rs b/common/src/stake_addresses.rs index b47484c1..931ccfb8 100644 --- a/common/src/stake_addresses.rs +++ b/common/src/stake_addresses.rs @@ -539,7 +539,7 @@ impl StakeAddressMap { #[cfg(test)] mod tests { - use crate::{AddressNetwork, StakeAddress, StakeAddressPayload}; + use crate::{NetworkId, StakeAddress, StakeAddressPayload}; use super::*; @@ -556,7 +556,7 @@ mod tests { StakeAddressPayload::StakeKeyHash( hash.to_vec().try_into().expect("Invalid hash length"), ), - AddressNetwork::Main, + NetworkId::Mainnet, ) } diff --git a/common/src/types.rs b/common/src/types.rs index 9559476c..e7bf0192 100644 --- a/common/src/types.rs +++ b/common/src/types.rs @@ -19,11 +19,28 @@ use std::fmt::{Display, Formatter}; use std::ops::{AddAssign, Neg}; use std::{cmp::Ordering, fmt}; -#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +/// Address network identifier +#[derive( + Debug, + Clone, + Default, + PartialEq, + Eq, + Hash, + serde::Serialize, + serde::Deserialize, + minicbor::Encode, + minicbor::Decode, +)] pub enum NetworkId { - Testnet, + /// Main + #[n(0)] #[default] Mainnet, + + /// Test + #[n(1)] + Testnet, } impl From for NetworkId { diff --git a/modules/accounts_state/src/snapshot.rs b/modules/accounts_state/src/snapshot.rs index a6f959c8..3983a1d6 100644 --- a/modules/accounts_state/src/snapshot.rs +++ b/modules/accounts_state/src/snapshot.rs @@ -186,7 +186,7 @@ impl Snapshot { mod tests { use super::*; use acropolis_common::stake_addresses::StakeAddressState; - use acropolis_common::AddressNetwork::Main; + use acropolis_common::NetworkId::Mainnet; use acropolis_common::{StakeAddress, StakeAddressPayload}; // Helper function to create stake addresses for testing @@ -194,7 +194,7 @@ mod tests { let mut hash = vec![0u8; 28]; hash[0] = id; StakeAddress { - network: Main, + network: Mainnet, payload: StakeAddressPayload::StakeKeyHash( hash.try_into().expect("Invalid hash length"), ), diff --git a/modules/accounts_state/src/state.rs b/modules/accounts_state/src/state.rs index 0f7f1fc9..da669d9d 100644 --- a/modules/accounts_state/src/state.rs +++ b/modules/accounts_state/src/state.rs @@ -991,7 +991,7 @@ impl State { mod tests { use super::*; use acropolis_common::{ - protocol_params::ConwayParams, rational_number::RationalNumber, AddressNetwork, Anchor, + protocol_params::ConwayParams, rational_number::RationalNumber, NetworkId, Anchor, Committee, Constitution, CostModel, DRepVotingThresholds, PoolVotingThresholds, Pot, PotDelta, Ratio, Registration, StakeAddress, StakeAddressDelta, StakeAddressPayload, StakeAndVoteDelegation, StakeRegistrationAndStakeAndVoteDelegation, @@ -1003,7 +1003,7 @@ mod tests { let mut full_hash = vec![0u8; 28]; full_hash[..hash.len().min(28)].copy_from_slice(&hash[..hash.len().min(28)]); StakeAddress { - network: AddressNetwork::Main, + network: NetworkId::Mainnet, payload: StakeAddressPayload::StakeKeyHash(full_hash), } } diff --git a/modules/drep_state/src/state.rs b/modules/drep_state/src/state.rs index 3f5a17c8..b85277b5 100644 --- a/modules/drep_state/src/state.rs +++ b/modules/drep_state/src/state.rs @@ -7,8 +7,8 @@ use acropolis_common::{ get_query_topic, governance::{DRepActionUpdate, DRepUpdateEvent, VoteRecord}, }, - Anchor, DRepChoice, DRepCredential, KeyHash, Lovelace, StakeAddress, TxCertificate, TxHash, - Voter, VotingProcedures, + Anchor, DRepChoice, DRepCredential, Lovelace, StakeAddress, TxCertificate, TxHash, Voter, + VotingProcedures, }; use anyhow::{anyhow, Result}; use caryatid_sdk::Context; @@ -235,14 +235,14 @@ impl State { } if let Err(e) = self.process_one_cert(tx_cert, epoch) { - tracing::error!("Error processing tx_cert: {e}"); + error!("Error processing tx_cert: {e}"); } } // Batched delegations to reduce redundant queries to accounts_state if store_delegators && !batched_delegators.is_empty() { - if let Err(e) = self.update_delegators(&context, batched_delegators).await { - tracing::error!("Error processing batched delegators: {e}"); + if let Err(e) = self.update_delegators(&context, &batched_delegators).await { + error!("Error processing batched delegators: {e}"); } } @@ -472,13 +472,15 @@ impl State { async fn update_delegators( &mut self, context: &Arc>, - delegators: Vec<(StakeAddress, &DRepChoice)>, + delegators: &[(&StakeAddress, &DRepChoice)], ) -> Result<()> { - let stake_addresses = delegators.iter().map(|(addr, _)| (addr).clone()).collect(); - let stake_key_to_input: HashMap = delegators - .iter() - .map(|(addr, drep)| (addr.get_credential().get_hash(), (addr, *drep))) - .collect(); + let mut stake_key_to_input = HashMap::with_capacity(delegators.len()); + let mut stake_addresses = Vec::with_capacity(delegators.len()); + + for &(sc, drep) in delegators { + stake_addresses.push(sc.clone()); + stake_key_to_input.insert(sc.get_credential().get_hash(), (sc, drep)); + } let msg = Arc::new(Message::StateQuery(StateQuery::Accounts( AccountsStateQuery::GetAccountsDrepDelegationsMap { stake_addresses }, @@ -488,7 +490,6 @@ impl State { let response = context.message_bus.request(&accounts_query_topic, msg).await?; let message = Arc::try_unwrap(response).unwrap_or_else(|arc| (*arc).clone()); - // TODO: Ensure AccountsStateQueryResponse is for the correct block let result_map = match message { Message::StateQueryResponse(StateQueryResponse::Accounts( AccountsStateQueryResponse::AccountsDrepDelegationsMap(map), @@ -499,8 +500,8 @@ impl State { }; for (stake_key, old_drep_opt) in result_map { - let (delegator, new_drep_choice) = match stake_key_to_input.get(&stake_key) { - Some(pair) => *pair, + let &(delegator, new_drep_choice) = match stake_key_to_input.get(&stake_key) { + Some(pair) => pair, None => continue, }; @@ -514,7 +515,10 @@ impl State { if old_drep_cred != new_drep_cred { self.update_historical(&old_drep_cred, false, |entry| { if let Some(delegators) = entry.delegators.as_mut() { - delegators.retain(|s| s != delegator); + delegators.retain(|s| { + s.get_credential().get_hash() + != delegator.get_credential().get_hash() + }); } })?; } @@ -537,15 +541,15 @@ impl State { Ok(()) } - fn extract_delegation_fields(cert: &TxCertificate) -> Option<(StakeAddress, &DRepChoice)> { + fn extract_delegation_fields(cert: &TxCertificate) -> Option<(&StakeAddress, &DRepChoice)> { match cert { - TxCertificate::VoteDelegation(d) => Some((d.stake_address.clone(), &d.drep)), - TxCertificate::StakeAndVoteDelegation(d) => Some((d.stake_address.clone(), &d.drep)), + TxCertificate::VoteDelegation(d) => Some((&d.stake_address, &d.drep)), + TxCertificate::StakeAndVoteDelegation(d) => Some((&d.stake_address, &d.drep)), TxCertificate::StakeRegistrationAndVoteDelegation(d) => { - Some((d.stake_address.clone(), &d.drep)) + Some((&d.stake_address, &d.drep)) } TxCertificate::StakeRegistrationAndStakeAndVoteDelegation(d) => { - Some((d.stake_address.clone(), &d.drep)) + Some((&d.stake_address, &d.drep)) } _ => None, } diff --git a/modules/rest_blockfrost/src/handlers/epochs.rs b/modules/rest_blockfrost/src/handlers/epochs.rs index ddb7b003..7df97108 100644 --- a/modules/rest_blockfrost/src/handlers/epochs.rs +++ b/modules/rest_blockfrost/src/handlers/epochs.rs @@ -15,7 +15,7 @@ use acropolis_common::{ utils::query_state, }, serialization::Bech32WithHrp, - AddressNetwork, StakeAddress, StakeAddressPayload, + NetworkId, StakeAddress, StakeAddressPayload, }; use anyhow::{anyhow, Result}; use caryatid_sdk::Context; @@ -467,8 +467,8 @@ pub async fn handle_epoch_total_stakes_blockfrost( .await?; let network = match current_network.as_str() { - "mainnet" => AddressNetwork::Main, - "testnet" => AddressNetwork::Test, + "mainnet" => NetworkId::Mainnet, + "testnet" => NetworkId::Testnet, unknown => { return Ok(RESTResponse::with_text( 500, @@ -603,8 +603,8 @@ pub async fn handle_epoch_pool_stakes_blockfrost( .await?; let network = match current_network.as_str() { - "mainnet" => AddressNetwork::Main, - "testnet" => AddressNetwork::Test, + "mainnet" => NetworkId::Mainnet, + "testnet" => NetworkId::Testnet, unknown => { return Ok(RESTResponse::with_text( 500, diff --git a/modules/stake_delta_filter/src/stake_delta_filter.rs b/modules/stake_delta_filter/src/stake_delta_filter.rs index 199647b6..1698ac5a 100644 --- a/modules/stake_delta_filter/src/stake_delta_filter.rs +++ b/modules/stake_delta_filter/src/stake_delta_filter.rs @@ -3,7 +3,7 @@ use acropolis_common::{ messages::{CardanoMessage, Message}, - AddressNetwork, + NetworkId, }; use anyhow::{anyhow, Result}; use caryatid_sdk::{module, Context, Module}; @@ -36,7 +36,7 @@ const DEFAULT_CACHE_MODE: (&str, CacheMode) = ("cache-mode", CacheMode::Predefin const DEFAULT_WRITE_FULL_CACHE: (&str, bool) = ("write-full-cache", false); /// Network: currently only Main/Test. Parameter is necessary to distinguish caches. -const DEFAULT_NETWORK: (&str, AddressNetwork) = ("network", AddressNetwork::Main); +const DEFAULT_NETWORK: (&str, NetworkId) = ("network", NetworkId::Mainnet); /// Stake Delta Filter module #[module( @@ -58,7 +58,7 @@ struct StakeDeltaFilterParams { address_delta_topic: String, stake_address_delta_topic: String, tx_certificates_topic: String, - network: AddressNetwork, + network: NetworkId, cache_dir: String, cache_mode: CacheMode, @@ -103,7 +103,7 @@ impl StakeDeltaFilterParams { cache_mode: Self::conf_enum::(&cfg, DEFAULT_CACHE_MODE)?, write_full_cache: Self::conf_enum::(&cfg, DEFAULT_WRITE_FULL_CACHE)?, context, - network: Self::conf_enum::(&cfg, DEFAULT_NETWORK)?, + network: Self::conf_enum::(&cfg, DEFAULT_NETWORK)?, }; info!("Cache mode {:?}", params.cache_mode); diff --git a/modules/stake_delta_filter/src/utils.rs b/modules/stake_delta_filter/src/utils.rs index 8ad6ae24..5343c37f 100644 --- a/modules/stake_delta_filter/src/utils.rs +++ b/modules/stake_delta_filter/src/utils.rs @@ -402,7 +402,7 @@ mod test { use acropolis_common::{ messages::AddressDeltasMessage, Address, AddressDelta, BlockHash, BlockInfo, BlockStatus, ByronAddress, Era, ShelleyAddress, ShelleyAddressDelegationPart, ShelleyAddressPaymentPart, - ShelleyAddressPointer, StakeAddress, StakeAddressPayload, UTxOIdentifier, ValueDelta, + ShelleyAddressPointer, StakeAddress, StakeAddressPayload, UTxOIdentifier, ValueDelta, NetworkId }; use bech32::{Bech32, Hrp}; @@ -415,13 +415,13 @@ mod test { }) } - /// Map Pallas Network to our AddressNetwork - fn map_network(network: pallas::ledger::addresses::Network) -> Result { + /// Map Pallas Network to our NetworkId + fn map_network(network: pallas::ledger::addresses::Network) -> Result { use pallas::ledger::addresses::Network; match network { - Network::Mainnet => Ok(AddressNetwork::Main), - Network::Testnet => Ok(AddressNetwork::Test), - _ => return Err(anyhow!("Unknown network in address")), + Network::Mainnet => Ok(NetworkId::Mainnet), + Network::Testnet => Ok(NetworkId::Testnet), + _ => Err(anyhow!("Unknown network in address")), } } From a08bbdb65affbac74e057b39b0363cdc91e55423 Mon Sep 17 00:00:00 2001 From: Matthew Hounslow Date: Thu, 23 Oct 2025 10:10:10 -0700 Subject: [PATCH 2/2] Fix comment and add TODO back --- common/src/types.rs | 2 +- modules/accounts_state/src/state.rs | 4 ++-- modules/drep_state/src/state.rs | 1 + modules/stake_delta_filter/src/utils.rs | 5 +++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/common/src/types.rs b/common/src/types.rs index eeee8f5f..fc9985ea 100644 --- a/common/src/types.rs +++ b/common/src/types.rs @@ -19,7 +19,7 @@ use std::fmt::{Display, Formatter}; use std::ops::{AddAssign, Neg}; use std::{cmp::Ordering, fmt}; -/// Address network identifier +/// Network identifier #[derive( Debug, Clone, diff --git a/modules/accounts_state/src/state.rs b/modules/accounts_state/src/state.rs index da669d9d..28fb74a9 100644 --- a/modules/accounts_state/src/state.rs +++ b/modules/accounts_state/src/state.rs @@ -991,8 +991,8 @@ impl State { mod tests { use super::*; use acropolis_common::{ - protocol_params::ConwayParams, rational_number::RationalNumber, NetworkId, Anchor, - Committee, Constitution, CostModel, DRepVotingThresholds, PoolVotingThresholds, Pot, + protocol_params::ConwayParams, rational_number::RationalNumber, Anchor, Committee, + Constitution, CostModel, DRepVotingThresholds, NetworkId, PoolVotingThresholds, Pot, PotDelta, Ratio, Registration, StakeAddress, StakeAddressDelta, StakeAddressPayload, StakeAndVoteDelegation, StakeRegistrationAndStakeAndVoteDelegation, StakeRegistrationAndVoteDelegation, VoteDelegation, Withdrawal, diff --git a/modules/drep_state/src/state.rs b/modules/drep_state/src/state.rs index b85277b5..740e0403 100644 --- a/modules/drep_state/src/state.rs +++ b/modules/drep_state/src/state.rs @@ -490,6 +490,7 @@ impl State { let response = context.message_bus.request(&accounts_query_topic, msg).await?; let message = Arc::try_unwrap(response).unwrap_or_else(|arc| (*arc).clone()); + // TODO: Ensure AccountsStateQueryResponse is for the correct block let result_map = match message { Message::StateQueryResponse(StateQueryResponse::Accounts( AccountsStateQueryResponse::AccountsDrepDelegationsMap(map), diff --git a/modules/stake_delta_filter/src/utils.rs b/modules/stake_delta_filter/src/utils.rs index 5343c37f..8ac6c237 100644 --- a/modules/stake_delta_filter/src/utils.rs +++ b/modules/stake_delta_filter/src/utils.rs @@ -401,8 +401,9 @@ mod test { use crate::*; use acropolis_common::{ messages::AddressDeltasMessage, Address, AddressDelta, BlockHash, BlockInfo, BlockStatus, - ByronAddress, Era, ShelleyAddress, ShelleyAddressDelegationPart, ShelleyAddressPaymentPart, - ShelleyAddressPointer, StakeAddress, StakeAddressPayload, UTxOIdentifier, ValueDelta, NetworkId + ByronAddress, Era, NetworkId, ShelleyAddress, ShelleyAddressDelegationPart, + ShelleyAddressPaymentPart, ShelleyAddressPointer, StakeAddress, StakeAddressPayload, + UTxOIdentifier, ValueDelta, }; use bech32::{Bech32, Hrp};