From b16a61ad239cbedd85d8bcd958c6b07793b44b4c Mon Sep 17 00:00:00 2001 From: enitrat Date: Tue, 17 Sep 2024 22:58:30 +0200 Subject: [PATCH] wip --- .../EvmPrecompiles/test_evm_precompiles.py | 4 +-- .../kakarot/precompiles/test_ec_recover.cairo | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 tests/src/kakarot/precompiles/test_ec_recover.cairo diff --git a/tests/end_to_end/EvmPrecompiles/test_evm_precompiles.py b/tests/end_to_end/EvmPrecompiles/test_evm_precompiles.py index 76945dd23..f86426481 100644 --- a/tests/end_to_end/EvmPrecompiles/test_evm_precompiles.py +++ b/tests/end_to_end/EvmPrecompiles/test_evm_precompiles.py @@ -2,7 +2,7 @@ import pytest_asyncio from ethereum.base_types import U256, Uint from ethereum.crypto.alt_bn128 import ALT_BN128_PRIME, BNF, BNP -from ethereum.exceptions import OutOfGasError +from ethereum.cancun.vm.exceptions import OutOfGasError from kakarot_scripts.utils.kakarot import deploy @@ -70,7 +70,7 @@ def ref_alt_bn128_mul(x0, y0, s): @pytest.mark.asyncio(scope="package") @pytest.mark.EvmPrecompiles -@pytest.mark.xfail(reason="Katana doesn't support new builtins") +# @pytest.mark.xfail(reason="Katana doesn't support new builtins") class TestEvmPrecompiles: class TestEcAdd: async def test_should_return_ec_add_point_at_infinity(self, evm_precompiles): diff --git a/tests/src/kakarot/precompiles/test_ec_recover.cairo b/tests/src/kakarot/precompiles/test_ec_recover.cairo new file mode 100644 index 000000000..8790ddb01 --- /dev/null +++ b/tests/src/kakarot/precompiles/test_ec_recover.cairo @@ -0,0 +1,26 @@ +%lang starknet + +from starkware.cairo.common.alloc import alloc +from starkware.cairo.common.cairo_builtins import HashBuiltin, BitwiseBuiltin +from starkware.cairo.common.math import unsigned_div_rem, assert_not_zero +from starkware.cairo.common.memset import memset +from starkware.cairo.common.memcpy import memcpy + +from kakarot.precompiles.ec_recover import PrecompileEcRecover +from utils.utils import Helpers + +func test__ec_recover{ + syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr, bitwise_ptr: BitwiseBuiltin* +}() -> (output: felt*) { + alloc_locals; + let (local input) = alloc(); + tempvar input_len: felt; + %{ + ids.input_len = len(program_input["input"]); + segments.write_arg(ids.input, program_input["input"]) + %} + let (output_len: felt, output: felt*, gas_used: felt, reverted: felt) = PrecompileEcRecover.run( + PrecompileEcRecover.PRECOMPILE_ADDRESS, input_len, input + ); + return (output=output); +}