diff --git a/cairo_zero/kakarot/precompiles/kakarot_precompiles.cairo b/cairo_zero/kakarot/precompiles/kakarot_precompiles.cairo index 812313e02..80798cdb3 100644 --- a/cairo_zero/kakarot/precompiles/kakarot_precompiles.cairo +++ b/cairo_zero/kakarot/precompiles/kakarot_precompiles.cairo @@ -150,10 +150,9 @@ namespace KakarotPrecompiles { ) = Internals.execute_multiple_cairo_calls(caller_address, calls_len, calls_ptr, 0); if (reverted == FALSE and nb_executed_calls != number_of_calls) { - let (revert_reason_len, revert_reason) = Errors.precompileInputError(); - return ( - revert_reason_len, revert_reason, CAIRO_PRECOMPILE_GAS, Errors.EXCEPTIONAL_HALT - ); + with_attr error_message("Number of executed calls does not match precompile input") { + assert nb_executed_calls = number_of_calls; + } } return (output_len, output, gas_cost, reverted); diff --git a/tests/end_to_end/CairoPrecompiles/test_multicall_cairo_precompile.py b/tests/end_to_end/CairoPrecompiles/test_multicall_cairo_precompile.py index 2b103f0a8..6ef4a90a5 100644 --- a/tests/end_to_end/CairoPrecompiles/test_multicall_cairo_precompile.py +++ b/tests/end_to_end/CairoPrecompiles/test_multicall_cairo_precompile.py @@ -9,7 +9,7 @@ from kakarot_scripts.utils.kakarot import deploy, eth_send_transaction from kakarot_scripts.utils.starknet import get_contract, invoke -from tests.utils.errors import evm_error +from tests.utils.errors import cairo_error, evm_error @pytest_asyncio.fixture(scope="module") @@ -107,16 +107,14 @@ async def test_should_fail_when_number_of_calls_mismatch_actual_calls( # modify the number of calls to be different than the actual calls tx_data = f"{wrong_nb_calls:064x}" + tx_data[64:] - _, response, success, _ = await eth_send_transaction( - to=f"0x{0x75003:040x}", - gas=21000 + 20000 * (len(calls)), - data=tx_data, - value=0, - caller_eoa=owner.starknet_contract, - ) - - assert not success - assert "Precompile: input error".encode() == bytes(response) + with cairo_error("Number of executed calls does not match precompile input"): + _, response, success, _ = await eth_send_transaction( + to=f"0x{0x75003:040x}", + gas=21000 + 20000 * (len(calls)), + data=tx_data, + value=0, + caller_eoa=owner.starknet_contract, + ) async def test_should_increase_counter_single_call_from_solidity( self, cairo_counter, multicall_cairo_counter_caller