Skip to content

Commit a635dfd

Browse files
committed
refactor: use constructed address key with positional info
Signed-off-by: William Hankins <william@sundae.fi>
1 parent c110c30 commit a635dfd

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

modules/historical_accounts_state/src/immutable_historical_account_store.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)