@@ -14,9 +14,9 @@ use acropolis_common::{
1414 protocol_params:: ProtocolParams ,
1515 stake_addresses:: { StakeAddressMap , StakeAddressState } ,
1616 BlockInfo , DRepChoice , DRepCredential , DelegatedStake , InstantaneousRewardSource ,
17- InstantaneousRewardTarget , KeyHash , Lovelace , MoveInstantaneousReward , PoolLiveStakeInfo ,
18- PoolRegistration , Pot , SPORewards , StakeAddress , StakeCredential , StakeRewardDelta ,
19- TxCertificate ,
17+ InstantaneousRewardTarget , KeyHash , Lovelace , MoveInstantaneousReward , NetworkId ,
18+ PoolLiveStakeInfo , PoolRegistration , Pot , SPORewards , StakeAddress , StakeCredential ,
19+ StakeRewardDelta , TxCertificate ,
2020} ;
2121use anyhow:: Result ;
2222use imbl:: OrdMap ;
@@ -95,6 +95,9 @@ pub struct State {
9595 /// List of SPOs (by operator ID) retiring in the current epoch
9696 retiring_spos : Vec < KeyHash > ,
9797
98+ /// Network ID
99+ network_id : NetworkId ,
100+
98101 /// Map of staking address values
99102 /// Wrapped in an Arc so it doesn't get cloned in full by StateHistory
100103 stake_addresses : Arc < Mutex < StakeAddressMap > > ,
@@ -550,7 +553,8 @@ impl State {
550553 // Transfer to (in theory also from) stake addresses from (to) a pot
551554 let mut total_value: u64 = 0 ;
552555 for ( credential, value) in deltas. iter ( ) {
553- let stake_address = credential. to_stake_address ( None ) ; // Need to convert credential to address
556+ let stake_address =
557+ credential. to_stake_address ( self . network_id . clone ( ) . into ( ) ) ;
554558
555559 // Get old stake address state, or create one
556560 let mut stake_addresses = self . stake_addresses . lock ( ) . unwrap ( ) ;
@@ -792,8 +796,8 @@ impl State {
792796
793797 /// Register a stake address, with a specified deposit if known
794798 fn register_stake_address ( & mut self , credential : & StakeCredential , deposit : Option < Lovelace > ) {
795- // TODO: Handle network
796- let stake_address = credential. to_stake_address ( None ) ;
799+
800+ let stake_address = credential. to_stake_address ( self . network_id . clone ( ) . into ( ) ) ;
797801
798802 // Stake addresses can be registered after being used in UTXOs
799803 let mut stake_addresses = self . stake_addresses . lock ( ) . unwrap ( ) ;
@@ -823,8 +827,8 @@ impl State {
823827
824828 /// Deregister a stake address, with specified refund if known
825829 fn deregister_stake_address ( & mut self , credential : & StakeCredential , refund : Option < Lovelace > ) {
826- // TODO: Handle network
827- let stake_address = credential. to_stake_address ( None ) ;
830+
831+ let stake_address = credential. to_stake_address ( self . network_id . clone ( ) . into ( ) ) ;
828832
829833 // Check if it existed
830834 let mut stake_addresses = self . stake_addresses . lock ( ) . unwrap ( ) ;
@@ -860,8 +864,8 @@ impl State {
860864
861865 /// Record a stake delegation
862866 fn record_stake_delegation ( & mut self , credential : & StakeCredential , spo : & KeyHash ) {
863- // TODO: Handle network
864- let stake_address = credential. to_stake_address ( None ) ;
867+
868+ let stake_address = credential. to_stake_address ( self . network_id . clone ( ) . into ( ) ) ;
865869 let mut stake_addresses = self . stake_addresses . lock ( ) . unwrap ( ) ;
866870 stake_addresses. record_stake_delegation ( & stake_address, spo) ;
867871 }
@@ -874,8 +878,8 @@ impl State {
874878
875879 /// record a drep delegation
876880 fn record_drep_delegation ( & mut self , credential : & StakeCredential , drep : & DRepChoice ) {
877- // TODO: Handle network
878- let stake_address = credential. to_stake_address ( None ) ;
881+
882+ let stake_address = credential. to_stake_address ( self . network_id . clone ( ) . into ( ) ) ;
879883 let mut stake_addresses = self . stake_addresses . lock ( ) . unwrap ( ) ;
880884 stake_addresses. record_drep_delegation ( & stake_address, drep) ;
881885 }
0 commit comments