1
1
#[contract]
2
2
mod multy_syscall {
3
- use starknet :: info :: get_caller_address;
4
- use starknet :: info :: get_contract_address;
3
+ use starknet :: get_caller_address;
4
+ use starknet :: get_contract_address;
5
5
use starknet :: get_execution_info_syscall;
6
6
use starknet :: replace_class_syscall;
7
7
use starknet :: library_call_syscall;
8
8
use starknet :: call_contract_syscall;
9
+ use starknet :: send_message_to_l1_syscall;
10
+ use starknet :: storage_read_syscall;
11
+ use starknet :: storage_write_syscall;
12
+ use starknet :: deploy_syscall;
9
13
10
14
use starknet :: storage_access :: {StorageAddress , storage_address_try_from_felt252 };
11
- use starknet :: ContractAddress ;
15
+ use starknet :: contract_address :: ContractAddress ;
12
16
use array :: {Array , ArrayTrait , Span , SpanTrait };
13
17
use result :: ResultTrait ;
14
18
use option :: OptionTrait ;
15
- use starknet :: syscalls :: deploy_syscall;
16
19
use starknet :: class_hash :: ClassHash ;
17
-
18
20
19
21
#[external]
20
22
fn caller_address () {
@@ -31,25 +33,54 @@ mod multy_syscall {
31
33
get_execution_info_syscall ();
32
34
}
33
35
34
- #[view]
35
- fn get_number () -> felt252 {
36
- 25
37
- }
38
-
39
36
#[external]
40
37
fn replace_class_syscall_test (new_class_hash : ClassHash ) {
41
38
replace_class_syscall (new_class_hash );
42
39
}
43
40
44
41
#[external]
45
- fn library_call_syscall_test (class_hash : ClassHash , function_selector : felt252 , calldata : Array <felt252 >) {
42
+ fn test_library_call_syscall_test (class_hash : ClassHash , function_selector : felt252 , calldata : Array <felt252 >) {
46
43
library_call_syscall (class_hash , function_selector , calldata . span ());
47
44
}
48
45
46
+ #[external]
47
+ fn test_call_contract_syscall (address : ContractAddress , function_selector : felt252 , calldata : Array <felt252 >) {
48
+ call_contract_syscall (address , function_selector , calldata . span ());
49
+ }
50
+
51
+ #[external]
52
+ fn test_send_message_to_l1 (to_address : felt252 ,payload : Array <felt252 >){
53
+ send_message_to_l1_syscall (to_address , payload . span ());
54
+ }
49
55
50
- // #[external]
51
- // fn contract_call_syscall_test(contract_address: ContractAddress, function_selector: felt252, calldata: Array<felt252>) {
52
- // call_contract_syscall(class_hash, function_selector, calldata.span());
53
- // }
54
- }
56
+ #[external]
57
+ fn read () -> felt252 {
58
+ // write to storage
59
+ let address = storage_address_try_from_felt252 ( 3534535754756246375475423547453 ) . unwrap ();
60
+ storage_write_syscall ( 0 , address , ' Hello ' );
55
61
62
+ // read from storage
63
+ match storage_read_syscall (0 , address ) {
64
+ Result :: Ok (value ) => value ,
65
+ Result :: Err (revert_reason ) => * revert_reason . span (). at (0 ),
66
+ }
67
+ }
68
+
69
+ #[event]
70
+ fn EmitEvent (n : felt252 ){}
71
+
72
+ #[external]
73
+ fn trigger_events () {
74
+ EmitEvent (1 );
75
+ EmitEvent (2 );
76
+ EmitEvent (3 );
77
+ }
78
+
79
+ #[external]
80
+ fn deploy_test (class_hash : felt252 , contract_address_salt : felt252 ,) -> ContractAddress {
81
+ let mut calldata = ArrayTrait :: new ();
82
+ calldata . append (100 );
83
+ let (address0 , _ ) = deploy_syscall (class_hash . try_into (). unwrap (), contract_address_salt , calldata . span (), false ). unwrap ();
84
+ address0
85
+ }
86
+ }
0 commit comments