@@ -46,7 +46,7 @@ impl CardanoTransactionsSignableBuilder {
46
46
// This will be not be the case when we use the cached intermediate merkle roots.
47
47
fn compute_merkle_map_from_transactions (
48
48
& self ,
49
- transactions : & [ CardanoTransaction ] ,
49
+ transactions : Vec < CardanoTransaction > ,
50
50
) -> StdResult < MKMap < BlockRange , MKMapNode < BlockRange > > > {
51
51
let mut transactions_by_block_ranges: HashMap < BlockRange , Vec < TransactionHash > > =
52
52
HashMap :: new ( ) ;
@@ -55,9 +55,9 @@ impl CardanoTransactionsSignableBuilder {
55
55
transactions_by_block_ranges
56
56
. entry ( block_range)
57
57
. or_default ( )
58
- . push ( transaction. transaction_hash . to_owned ( ) ) ;
58
+ . push ( transaction. transaction_hash ) ;
59
59
}
60
- let mk_hash_map = MKMap :: new (
60
+ let mk_hash_map = MKMap :: new_from_iter (
61
61
transactions_by_block_ranges
62
62
. into_iter ( )
63
63
. try_fold (
@@ -66,15 +66,14 @@ impl CardanoTransactionsSignableBuilder {
66
66
acc. push ( ( block_range, MKTree :: new ( & transactions) ?. into ( ) ) ) ;
67
67
Ok ( acc)
68
68
} ,
69
- ) ?
70
- . as_slice ( ) ,
69
+ ) ?,
71
70
)
72
71
. with_context ( || "ProverService failed to compute the merkelized structure that proves ownership of the transaction" ) ?;
73
72
74
73
Ok ( mk_hash_map)
75
74
}
76
75
77
- fn compute_merkle_root ( & self , transactions : & [ CardanoTransaction ] ) -> StdResult < MKTreeNode > {
76
+ fn compute_merkle_root ( & self , transactions : Vec < CardanoTransaction > ) -> StdResult < MKTreeNode > {
78
77
let mk_map = self . compute_merkle_map_from_transactions ( transactions) ?;
79
78
80
79
let mk_root = mk_map. compute_root ( ) . with_context ( || {
@@ -100,7 +99,7 @@ impl SignableBuilder<CardanoDbBeacon> for CardanoTransactionsSignableBuilder {
100
99
. transaction_importer
101
100
. import ( beacon. immutable_file_number )
102
101
. await ?;
103
- let mk_root = self . compute_merkle_root ( & transactions) ?;
102
+ let mk_root = self . compute_merkle_root ( transactions) ?;
104
103
105
104
let mut protocol_message = ProtocolMessage :: new ( ) ;
106
105
protocol_message. set_message_part (
@@ -153,7 +152,7 @@ mod tests {
153
152
) ;
154
153
155
154
let merkle_root_reference = cardano_transaction_signable_builder
156
- . compute_merkle_root ( & [
155
+ . compute_merkle_root ( vec ! [
157
156
transaction_1. clone( ) ,
158
157
transaction_2. clone( ) ,
159
158
transaction_3. clone( ) ,
@@ -163,14 +162,14 @@ mod tests {
163
162
{
164
163
let transactions_set = vec ! [ transaction_1. clone( ) ] ;
165
164
let mk_root = cardano_transaction_signable_builder
166
- . compute_merkle_root ( & transactions_set)
165
+ . compute_merkle_root ( transactions_set)
167
166
. unwrap ( ) ;
168
167
assert_ne ! ( merkle_root_reference, mk_root) ;
169
168
}
170
169
{
171
170
let transactions_set = vec ! [ transaction_1. clone( ) , transaction_2. clone( ) ] ;
172
171
let mk_root = cardano_transaction_signable_builder
173
- . compute_merkle_root ( & transactions_set)
172
+ . compute_merkle_root ( transactions_set)
174
173
. unwrap ( ) ;
175
174
assert_ne ! ( merkle_root_reference, mk_root) ;
176
175
}
@@ -182,7 +181,7 @@ mod tests {
182
181
transaction_4. clone( ) ,
183
182
] ;
184
183
let mk_root = cardano_transaction_signable_builder
185
- . compute_merkle_root ( & transactions_set)
184
+ . compute_merkle_root ( transactions_set)
186
185
. unwrap ( ) ;
187
186
assert_ne ! ( merkle_root_reference, mk_root) ;
188
187
}
@@ -195,7 +194,7 @@ mod tests {
195
194
transaction_2. clone( ) ,
196
195
] ;
197
196
let mk_root = cardano_transaction_signable_builder
198
- . compute_merkle_root ( & transactions_set)
197
+ . compute_merkle_root ( transactions_set)
199
198
. unwrap ( ) ;
200
199
assert_ne ! ( merkle_root_reference, mk_root) ;
201
200
}
@@ -214,11 +213,11 @@ mod tests {
214
213
) ;
215
214
216
215
let merkle_root_reference = cardano_transaction_signable_builder
217
- . compute_merkle_root ( & [ transaction_1. clone ( ) , transaction_2. clone ( ) ] )
216
+ . compute_merkle_root ( vec ! [ transaction_1. clone( ) , transaction_2. clone( ) ] )
218
217
. unwrap ( ) ;
219
218
220
219
let mk_root = cardano_transaction_signable_builder
221
- . compute_merkle_root ( & [ transaction_2. clone ( ) , transaction_1. clone ( ) ] )
220
+ . compute_merkle_root ( vec ! [ transaction_2. clone( ) , transaction_1. clone( ) ] )
222
221
. unwrap ( ) ;
223
222
224
223
assert_eq ! ( merkle_root_reference, mk_root) ;
@@ -254,7 +253,7 @@ mod tests {
254
253
255
254
// Assert
256
255
let mk_root = cardano_transactions_signable_builder
257
- . compute_merkle_root ( & transactions)
256
+ . compute_merkle_root ( transactions)
258
257
. unwrap ( ) ;
259
258
let mut signable_expected = ProtocolMessage :: new ( ) ;
260
259
signable_expected. set_message_part (
0 commit comments