File tree Expand file tree Collapse file tree 8 files changed +65
-39
lines changed
cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution Expand file tree Collapse file tree 8 files changed +65
-39
lines changed Original file line number Diff line number Diff line change @@ -3,10 +3,8 @@ use cairo_vm::{
33 types:: relocatable:: { MaybeRelocatable , Relocatable } ,
44 vm:: vm_core:: VirtualMachine ,
55} ;
6- use conversions:: {
7- IntoConv ,
8- serde:: serialize:: { SerializeToFeltVec , raw:: RawFeltVec } ,
9- } ;
6+ use conversions:: serde:: NoLengthFeltVec ;
7+ use conversions:: { IntoConv , serde:: serialize:: SerializeToFeltVec } ;
108use starknet_types_core:: felt:: Felt ;
119
1210fn get_cheated_block_info_ptr (
@@ -90,8 +88,10 @@ fn get_cheated_tx_info_ptr(
9088 new_tx_info[ 7 ] = MaybeRelocatable :: Int ( nonce) ;
9189 }
9290 if let Some ( resource_bounds) = resource_bounds {
93- let ( resource_bounds_start_ptr, resource_bounds_end_ptr) =
94- add_vec_memory_segment ( & RawFeltVec :: new ( resource_bounds) . serialize_to_vec ( ) , vm) ;
91+ let ( resource_bounds_start_ptr, resource_bounds_end_ptr) = add_vec_memory_segment (
92+ & NoLengthFeltVec :: new ( resource_bounds) . serialize_to_vec ( ) ,
93+ vm,
94+ ) ;
9595 new_tx_info[ 8 ] = resource_bounds_start_ptr. into ( ) ;
9696 new_tx_info[ 9 ] = resource_bounds_end_ptr. into ( ) ;
9797 }
Original file line number Diff line number Diff line change 11pub mod deserialize;
2+ pub mod no_length_felt_vec;
23pub mod serialize;
4+
5+ pub use no_length_felt_vec:: NoLengthFeltVec ;
Original file line number Diff line number Diff line change 5353 }
5454}
5555
56+ impl < T : CairoDeserialize , E : CairoDeserialize > CairoDeserialize for Result < T , E > {
57+ fn deserialize ( reader : & mut BufferReader < ' _ > ) -> BufferReadResult < Self > {
58+ let variant: Felt = reader. read ( ) ?;
59+ let variant: usize = variant. to_usize ( ) . ok_or ( BufferReadError :: ParseFailed ) ?;
60+
61+ match variant {
62+ 0 => Ok ( Ok ( reader. read ( ) ?) ) ,
63+ 1 => Ok ( Err ( reader. read ( ) ?) ) ,
64+ _ => Err ( BufferReadError :: ParseFailed ) ,
65+ }
66+ }
67+ }
68+
5669impl CairoDeserialize for bool {
5770 fn deserialize ( reader : & mut BufferReader < ' _ > ) -> BufferReadResult < Self > {
5871 let num: usize = reader. read ( ) ?;
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1+ use conversions:: serde:: deserialize:: { BufferReadResult , BufferReader , CairoDeserialize } ;
2+ use conversions:: serde:: serialize:: { BufferWriter , CairoSerialize } ;
3+ use starknet_types_core:: felt:: Felt ;
4+
5+ /// use this wrapper to NOT add extra length felt
6+ /// useful e.g. when you need to pass an already serialized value
7+ #[ derive( Debug ) ]
8+ pub struct NoLengthFeltVec < T > ( pub Vec < T > )
9+ where
10+ T : CairoSerialize ;
11+
12+ impl < T > NoLengthFeltVec < T >
13+ where
14+ T : CairoSerialize ,
15+ {
16+ #[ must_use]
17+ pub fn new ( vec : Vec < T > ) -> Self {
18+ Self ( vec)
19+ }
20+ }
21+
22+ impl < T > CairoSerialize for NoLengthFeltVec < T >
23+ where
24+ T : CairoSerialize ,
25+ {
26+ fn serialize ( & self , output : & mut BufferWriter ) {
27+ for e in & self . 0 {
28+ e. serialize ( output) ;
29+ }
30+ }
31+ }
32+
33+ impl CairoDeserialize for NoLengthFeltVec < Felt > {
34+ fn deserialize ( reader : & mut BufferReader < ' _ > ) -> BufferReadResult < Self > {
35+ let mut result: Vec < Felt > = Vec :: new ( ) ;
36+ while let Ok ( r) = reader. read_felt ( ) {
37+ result. push ( r) ;
38+ }
39+ Ok ( Self :: new ( result) )
40+ }
41+ }
Original file line number Diff line number Diff line change @@ -2,7 +2,6 @@ use starknet_types_core::felt::Felt;
22
33pub use cairo_serde_macros:: CairoSerialize ;
44
5- pub mod raw;
65mod serialize_impl;
76
87pub struct BufferWriter {
Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -18,9 +18,9 @@ use cairo_vm::vm::errors::vm_errors::VirtualMachineError;
1818use cairo_vm:: vm:: runners:: cairo_runner:: { ResourceTracker , RunResources } ;
1919use cairo_vm:: vm:: vm_core:: VirtualMachine ;
2020use conversions:: byte_array:: ByteArray ;
21+ use conversions:: serde:: NoLengthFeltVec ;
2122use conversions:: serde:: deserialize:: BufferReadError ;
2223use conversions:: serde:: deserialize:: BufferReader ;
23- use conversions:: serde:: serialize:: raw:: RawFeltVec ;
2424use conversions:: serde:: serialize:: { CairoSerialize , SerializeToFeltVec } ;
2525use indoc:: indoc;
2626use shared:: vm:: VirtualMachineExt ;
@@ -294,7 +294,7 @@ impl<Extension: ExtensionLogic> ExtendedRuntime<Extension> {
294294 return res;
295295 }
296296 // it is serialized again to add `Result` discriminator
297- Ok ( CheatcodeHandlingResult :: Handled ( res) ) => Ok ( RawFeltVec :: new ( res) ) ,
297+ Ok ( CheatcodeHandlingResult :: Handled ( res) ) => Ok ( NoLengthFeltVec :: new ( res) ) ,
298298 Err ( err) => Err ( ByteArray :: from ( err. to_string ( ) . as_str ( ) ) ) ,
299299 }
300300 . serialize_to_vec ( ) ;
You can’t perform that action at this time.
0 commit comments