@@ -20,9 +20,9 @@ use ccrypto::BLAKE_NULL_RLP;
2020use ckey:: Address ;
2121use cmerkle:: skewed_merkle_root;
2222use cstate:: { StateDB , StateError , StateWithCache , TopLevelState } ;
23- use ctypes:: invoice:: { Invoice , ParcelInvoice } ;
23+ use ctypes:: invoice:: ParcelInvoice ;
2424use ctypes:: machine:: { LiveBlock , Parcels } ;
25- use ctypes:: parcel:: { Error as ParcelError , Outcome as ParcelOutcome } ;
25+ use ctypes:: parcel:: Error as ParcelError ;
2626use ctypes:: util:: unexpected:: Mismatch ;
2727use primitives:: { Bytes , H256 } ;
2828use rlp:: { Decodable , DecoderError , Encodable , RlpStream , UntrustedRlp } ;
@@ -153,23 +153,11 @@ impl<'x> OpenBlock<'x> {
153153 return Err ( StateError :: Parcel ( ParcelError :: ParcelAlreadyImported ) . into ( ) )
154154 }
155155
156- let outcomes = self . block . state . apply ( & parcel, parcel. sender ( ) , & parcel. public_key ( ) ) ?;
156+ let invoice = self . block . state . apply ( & parcel, parcel. sender ( ) , & parcel. public_key ( ) ) ?;
157157
158158 self . block . parcels_set . insert ( h. unwrap_or_else ( || parcel. hash ( ) ) ) ;
159159 self . block . parcels . push ( parcel. into ( ) ) ;
160- match outcomes {
161- ParcelOutcome :: Single {
162- invoice,
163- ..
164- } => {
165- self . block . invoices . push ( ParcelInvoice :: Single ( invoice) ) ;
166- }
167- ParcelOutcome :: Transactions ( invoices) => {
168- self . block
169- . invoices
170- . push ( invoices. into_iter ( ) . map ( |outcome| outcome. invoice ) . collect :: < Vec < Invoice > > ( ) . into ( ) ) ;
171- }
172- }
160+ self . block . invoices . push ( invoice) ;
173161 Ok ( ( ) )
174162 }
175163
@@ -208,7 +196,7 @@ impl<'x> OpenBlock<'x> {
208196 self . block . header . set_state_root ( self . block . state . root ( ) . clone ( ) ) ;
209197 self . block . header . set_invoices_root ( skewed_merkle_root (
210198 parent_invoices_root,
211- self . block . invoices . iter ( ) . flat_map ( |invoices| invoices. iter ( ) . map ( |invoice| invoice. rlp_bytes ( ) ) ) ,
199+ self . block . invoices . iter ( ) . flat_map ( |invoices| invoices. iter_result ( ) . map ( |invoice| invoice. rlp_bytes ( ) ) ) ,
212200 ) ) ;
213201
214202 ClosedBlock {
@@ -235,7 +223,10 @@ impl<'x> OpenBlock<'x> {
235223 if self . block . header . invoices_root ( ) . is_zero ( ) || self . block . header . invoices_root ( ) == & BLAKE_NULL_RLP {
236224 self . block . header . set_invoices_root ( skewed_merkle_root (
237225 parent_invoices_root,
238- self . block . invoices . iter ( ) . flat_map ( |invoices| invoices. iter ( ) . map ( |invoice| invoice. rlp_bytes ( ) ) ) ,
226+ self . block
227+ . invoices
228+ . iter ( )
229+ . flat_map ( |invoices| invoices. iter_result ( ) . map ( |invoice| invoice. rlp_bytes ( ) ) ) ,
239230 ) ) ;
240231 }
241232 self . block . header . set_state_root ( self . block . state . root ( ) . clone ( ) ) ;
0 commit comments