@@ -133,8 +133,10 @@ impl ImmutableHistoricalAccountStore {
133133 // Persist address updates
134134 if config. store_addresses {
135135 if let Some ( updates) = & entry. addresses {
136- for address in updates {
137- let address_key = Self :: make_address_key ( & account, address. clone ( ) ) ;
136+ for ( index, address) in updates. iter ( ) . enumerate ( ) {
137+ let idx = index as u32 ;
138+ let address_key =
139+ Self :: make_address_key ( & account, epoch, idx, address. clone ( ) ) ;
138140 batch. insert ( & self . addresses , address_key, [ ] ) ;
139141 }
140142 }
@@ -347,9 +349,17 @@ impl ImmutableHistoricalAccountStore {
347349 key
348350 }
349351
350- fn make_address_key ( account : & StakeAddress , address : ShelleyAddress ) -> Vec < u8 > {
351- let mut key = account. to_binary ( ) ;
352- key. extend ( address. to_bytes_key ( ) ) ;
352+ fn make_address_key (
353+ account : & StakeAddress ,
354+ epoch : u32 ,
355+ index : u32 ,
356+ address : ShelleyAddress ,
357+ ) -> Vec < u8 > {
358+ let mut key = Vec :: new ( ) ;
359+ key. extend_from_slice ( & account. to_binary ( ) ) ;
360+ key. extend_from_slice ( & epoch. to_be_bytes ( ) ) ;
361+ key. extend_from_slice ( & index. to_be_bytes ( ) ) ;
362+ key. extend_from_slice ( & address. to_bytes_key ( ) ) ;
353363 key
354364 }
355365
0 commit comments