3
3
itertools:: Itertools ,
4
4
solana_cost_model:: cost_model:: CostModel ,
5
5
solana_ledger:: {
6
- blockstore_processor:: TransactionStatusSender , token_balances:: collect_token_balances,
6
+ blockstore_processor:: TransactionStatusSender ,
7
+ transaction_balances:: compile_collected_balances,
7
8
} ,
8
9
solana_measure:: measure_us,
9
10
solana_runtime:: {
10
- bank:: { Bank , ProcessedTransactionCounts , TransactionBalancesSet } ,
11
+ bank:: { Bank , ProcessedTransactionCounts } ,
11
12
bank_utils,
12
13
prioritization_fee_cache:: PrioritizationFeeCache ,
13
14
transaction_batch:: TransactionBatch ,
14
15
vote_sender_types:: ReplayVoteSender ,
15
16
} ,
16
17
solana_runtime_transaction:: transaction_with_meta:: TransactionWithMeta ,
17
- solana_sdk:: { pubkey :: Pubkey , saturating_add_assign} ,
18
+ solana_sdk:: saturating_add_assign,
18
19
solana_svm:: {
20
+ transaction_balances:: BalanceCollector ,
19
21
transaction_commit_result:: { TransactionCommitResult , TransactionCommitResultExtensions } ,
20
22
transaction_processing_result:: TransactionProcessingResult ,
21
23
} ,
22
- solana_transaction_status:: {
23
- token_balances:: TransactionTokenBalancesSet , TransactionTokenBalance ,
24
- } ,
25
- std:: { collections:: HashMap , sync:: Arc } ,
24
+ std:: sync:: Arc ,
26
25
} ;
27
26
28
27
#[ derive( Clone , Debug , PartialEq , Eq ) ]
@@ -34,13 +33,6 @@ pub enum CommitTransactionDetails {
34
33
NotCommitted ,
35
34
}
36
35
37
- #[ derive( Default ) ]
38
- pub ( super ) struct PreBalanceInfo {
39
- pub native : Vec < Vec < u64 > > ,
40
- pub token : Vec < Vec < TransactionTokenBalance > > ,
41
- pub mint_decimals : HashMap < Pubkey , u8 > ,
42
- }
43
-
44
36
#[ derive( Clone ) ]
45
37
pub struct Committer {
46
38
transaction_status_sender : Option < TransactionStatusSender > ,
@@ -71,7 +63,7 @@ impl Committer {
71
63
processing_results : Vec < TransactionProcessingResult > ,
72
64
starting_transaction_index : Option < usize > ,
73
65
bank : & Arc < Bank > ,
74
- pre_balance_info : & mut PreBalanceInfo ,
66
+ balance_collector : Option < BalanceCollector > ,
75
67
execute_and_commit_timings : & mut LeaderExecuteAndCommitTimings ,
76
68
processed_counts : & ProcessedTransactionCounts ,
77
69
) -> ( u64 , Vec < CommitTransactionDetails > ) {
@@ -117,7 +109,7 @@ impl Committer {
117
109
commit_results,
118
110
bank,
119
111
batch,
120
- pre_balance_info ,
112
+ balance_collector ,
121
113
starting_transaction_index,
122
114
) ;
123
115
} ) ;
@@ -130,7 +122,7 @@ impl Committer {
130
122
commit_results : Vec < TransactionCommitResult > ,
131
123
bank : & Arc < Bank > ,
132
124
batch : & TransactionBatch < impl TransactionWithMeta > ,
133
- pre_balance_info : & mut PreBalanceInfo ,
125
+ balance_collector : Option < BalanceCollector > ,
134
126
starting_transaction_index : Option < usize > ,
135
127
) {
136
128
if let Some ( transaction_status_sender) = & self . transaction_status_sender {
@@ -142,11 +134,7 @@ impl Committer {
142
134
. iter ( )
143
135
. map ( |tx| tx. as_sanitized_transaction ( ) . into_owned ( ) )
144
136
. collect_vec ( ) ;
145
-
146
- let post_balances = bank. collect_balances ( batch) ;
147
- let post_token_balances =
148
- collect_token_balances ( bank, batch, & mut pre_balance_info. mint_decimals ) ;
149
-
137
+ let ( balances, token_balances) = compile_collected_balances ( balance_collector) ;
150
138
let mut transaction_index = starting_transaction_index. unwrap_or_default ( ) ;
151
139
let ( batch_transaction_indexes, tx_costs) : ( Vec < _ > , Vec < _ > ) = commit_results
152
140
. iter ( )
@@ -177,14 +165,8 @@ impl Committer {
177
165
bank. slot ( ) ,
178
166
txs,
179
167
commit_results,
180
- TransactionBalancesSet :: new (
181
- std:: mem:: take ( & mut pre_balance_info. native ) ,
182
- post_balances,
183
- ) ,
184
- TransactionTokenBalancesSet :: new (
185
- std:: mem:: take ( & mut pre_balance_info. token ) ,
186
- post_token_balances,
187
- ) ,
168
+ balances,
169
+ token_balances,
188
170
tx_costs,
189
171
batch_transaction_indexes,
190
172
) ;
0 commit comments