Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit ea7b47a

Browse files
Antonio Calvín Garcíaedg-l
authored andcommitted
Replace class native (#1105)
* update cairo native to use gas consumed * implement native replace class syscall * gas consumed * add test * update native rev * add failing test * fix gas consumed * remove comments * minor changes * update cairo-native dependency * improve test * update latest native version * use add sierra contract to cache method * update latest native version * Replace class contract call native (#1115) * add last native version * add failing test * fix test * easier merge * fix test --------- Co-authored-by: Edgar Luque <git@edgarluque.com>
1 parent 422d985 commit ea7b47a

File tree

3 files changed

+384
-9
lines changed

3 files changed

+384
-9
lines changed

src/syscalls/native_syscall_handler.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -175,15 +175,20 @@ impl<'a, S: StateReader> StarkNetSyscallHandler for NativeSyscallHandler<'a, S>
175175
))
176176
}
177177

178-
fn replace_class(
179-
&mut self,
180-
class_hash: cairo_vm::felt::Felt252,
181-
gas: &mut u128,
182-
) -> SyscallResult<()> {
178+
fn replace_class(&mut self, class_hash: Felt252, gas: &mut u128) -> SyscallResult<()> {
183179
println!("Called `replace_class({class_hash})` from MLIR.");
184-
185180
self.handle_syscall_request(gas, "replace_class")?;
186-
Ok(())
181+
match self
182+
.starknet_storage_state
183+
.state
184+
.set_class_hash_at(self.contract_address.clone(), class_hash.to_be_bytes())
185+
{
186+
Ok(_) => Ok(()),
187+
Err(e) => {
188+
let replace_class_felt = Felt252::from_bytes_be(e.to_string().as_bytes());
189+
Err(vec![replace_class_felt.clone()])
190+
}
191+
}
187192
}
188193

189194
fn library_call(

tests/cairo_1_syscalls.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1556,7 +1556,8 @@ fn replace_class_contract_call() {
15561556
block_context.invoke_tx_max_n_steps(),
15571557
)
15581558
.unwrap();
1559-
assert_eq!(result.call_info.unwrap().retdata, vec![17.into()]);
1559+
assert_eq!(result.call_info.clone().unwrap().retdata, vec![17.into()]);
1560+
assert_eq!(result.call_info.unwrap().failure_flag, false);
15601561
}
15611562

15621563
#[test]

0 commit comments

Comments
 (0)