diff --git a/transaction-view/src/resolved_transaction_view.rs b/transaction-view/src/resolved_transaction_view.rs index 019e64d0147596..039af79284b280 100644 --- a/transaction-view/src/resolved_transaction_view.rs +++ b/transaction-view/src/resolved_transaction_view.rs @@ -146,14 +146,6 @@ impl ResolvedTransactionView { is_writable_cache } - fn num_readonly_accounts(&self) -> usize { - usize::from(self.view.total_readonly_lookup_accounts()) - .wrapping_add(usize::from(self.view.num_readonly_signed_static_accounts())) - .wrapping_add(usize::from( - self.view.num_readonly_unsigned_static_accounts(), - )) - } - pub fn loaded_addresses(&self) -> Option<&LoadedAddresses> { self.resolved_addresses.as_ref() } @@ -165,9 +157,7 @@ impl SVMMessage for ResolvedTransactionView { } fn num_write_locks(&self) -> u64 { - self.account_keys() - .len() - .wrapping_sub(self.num_readonly_accounts()) as u64 + self.view.num_requested_write_locks() } fn recent_blockhash(&self) -> &Hash { diff --git a/transaction-view/src/transaction_view.rs b/transaction-view/src/transaction_view.rs index d84507a6e004f8..21c91d029c7980 100644 --- a/transaction-view/src/transaction_view.rs +++ b/transaction-view/src/transaction_view.rs @@ -209,6 +209,19 @@ impl TransactionView { .wrapping_add(self.total_writable_lookup_accounts()) .wrapping_add(self.total_readonly_lookup_accounts()) } + + /// Return the number of requested writable keys. + #[inline] + pub fn num_requested_write_locks(&self) -> u64 { + u64::from( + u16::from( + (self.num_static_account_keys()) + .wrapping_sub(self.num_readonly_signed_static_accounts()) + .wrapping_sub(self.num_readonly_unsigned_static_accounts()), + ) + .wrapping_add(self.total_writable_lookup_accounts()), + ) + } } // Manual implementation of `Debug` - avoids bound on `D`.