diff --git a/Makefile b/Makefile index 1738d18f..9954a52f 100644 --- a/Makefile +++ b/Makefile @@ -104,6 +104,7 @@ clean: clean_files: rm -f $(TEST_DIR)/*.json + rm -f $(TEST_DIR)/proof_programs/*.json rm -f $(TEST_DIR)/*.memory rm -f $(TEST_DIR)/*.trace diff --git a/cairo_programs/proof_programs/assert_250_bit_element_array.cairo b/cairo_programs/proof_programs/assert_250_bit_element_array.cairo new file mode 120000 index 00000000..1b3b523a --- /dev/null +++ b/cairo_programs/proof_programs/assert_250_bit_element_array.cairo @@ -0,0 +1 @@ +../assert_250_bit_element_array.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/assert_le_felt.cairo b/cairo_programs/proof_programs/assert_le_felt.cairo new file mode 120000 index 00000000..ddeda7ca --- /dev/null +++ b/cairo_programs/proof_programs/assert_le_felt.cairo @@ -0,0 +1 @@ +../assert_le_felt.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/assert_lt_felt.cairo b/cairo_programs/proof_programs/assert_lt_felt.cairo new file mode 120000 index 00000000..c9049280 --- /dev/null +++ b/cairo_programs/proof_programs/assert_lt_felt.cairo @@ -0,0 +1 @@ +../assert_lt_felt.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/common_signature.cairo b/cairo_programs/proof_programs/common_signature.cairo new file mode 120000 index 00000000..9a92f8aa --- /dev/null +++ b/cairo_programs/proof_programs/common_signature.cairo @@ -0,0 +1 @@ +../common_signature.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/dict_squash.cairo b/cairo_programs/proof_programs/dict_squash.cairo new file mode 120000 index 00000000..2191191a --- /dev/null +++ b/cairo_programs/proof_programs/dict_squash.cairo @@ -0,0 +1 @@ +../dict_squash.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/dict_update.cairo b/cairo_programs/proof_programs/dict_update.cairo new file mode 120000 index 00000000..268649e2 --- /dev/null +++ b/cairo_programs/proof_programs/dict_update.cairo @@ -0,0 +1 @@ +../dict_update.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/is_quad_residue.cairo b/cairo_programs/proof_programs/is_quad_residue.cairo deleted file mode 100644 index 7b78ec6e..00000000 --- a/cairo_programs/proof_programs/is_quad_residue.cairo +++ /dev/null @@ -1,43 +0,0 @@ -%builtins output -from starkware.cairo.common.serialize import serialize_word -from starkware.cairo.common.math import is_quad_residue -from starkware.cairo.common.alloc import alloc - -func fill_array(array_start: felt*, iter: felt) -> () { - if (iter == 8) { - return (); - } - assert array_start[iter] = iter; - return fill_array(array_start, iter + 1); -} - -func check_quad_res{output_ptr: felt*}(inputs: felt*, expected: felt*, iter: felt) { - if (iter == 8) { - return (); - } - serialize_word(inputs[iter]); - serialize_word(expected[iter]); - - assert is_quad_residue(inputs[iter]) = expected[iter]; - return check_quad_res(inputs, expected, iter + 1); -} - -func main{output_ptr: felt*}() { - alloc_locals; - let (inputs: felt*) = alloc(); - fill_array(inputs, 0); - - let (expected: felt*) = alloc(); - assert expected[0] = 1; - assert expected[1] = 1; - assert expected[2] = 1; - assert expected[3] = 0; - assert expected[4] = 1; - assert expected[5] = 1; - assert expected[6] = 0; - assert expected[7] = 1; - - check_quad_res(inputs, expected, 0); - - return (); -} diff --git a/cairo_programs/proof_programs/is_quad_residue.cairo b/cairo_programs/proof_programs/is_quad_residue.cairo new file mode 120000 index 00000000..18019aa0 --- /dev/null +++ b/cairo_programs/proof_programs/is_quad_residue.cairo @@ -0,0 +1 @@ +../is_quad_residue.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/math_cmp.cairo b/cairo_programs/proof_programs/math_cmp.cairo new file mode 120000 index 00000000..431fdecc --- /dev/null +++ b/cairo_programs/proof_programs/math_cmp.cairo @@ -0,0 +1 @@ +../math_cmp.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/memcpy_test.cairo b/cairo_programs/proof_programs/memcpy_test.cairo new file mode 120000 index 00000000..8fe365be --- /dev/null +++ b/cairo_programs/proof_programs/memcpy_test.cairo @@ -0,0 +1 @@ +../memcpy_test.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/memset.cairo b/cairo_programs/proof_programs/memset.cairo new file mode 120000 index 00000000..72599c1e --- /dev/null +++ b/cairo_programs/proof_programs/memset.cairo @@ -0,0 +1 @@ +../memset.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/pow.cairo b/cairo_programs/proof_programs/pow.cairo new file mode 120000 index 00000000..501ee614 --- /dev/null +++ b/cairo_programs/proof_programs/pow.cairo @@ -0,0 +1 @@ +../pow.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/signed_div_rem.cairo b/cairo_programs/proof_programs/signed_div_rem.cairo new file mode 120000 index 00000000..2013d643 --- /dev/null +++ b/cairo_programs/proof_programs/signed_div_rem.cairo @@ -0,0 +1 @@ +../signed_div_rem.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/split_felt.cairo b/cairo_programs/proof_programs/split_felt.cairo new file mode 120000 index 00000000..ba534b7c --- /dev/null +++ b/cairo_programs/proof_programs/split_felt.cairo @@ -0,0 +1 @@ +../split_felt.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/split_int.cairo b/cairo_programs/proof_programs/split_int.cairo new file mode 120000 index 00000000..98218d4d --- /dev/null +++ b/cairo_programs/proof_programs/split_int.cairo @@ -0,0 +1 @@ +../split_int.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/sqrt.cairo b/cairo_programs/proof_programs/sqrt.cairo new file mode 120000 index 00000000..5c171547 --- /dev/null +++ b/cairo_programs/proof_programs/sqrt.cairo @@ -0,0 +1 @@ +../sqrt.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/squash_dict.cairo b/cairo_programs/proof_programs/squash_dict.cairo new file mode 120000 index 00000000..1c224560 --- /dev/null +++ b/cairo_programs/proof_programs/squash_dict.cairo @@ -0,0 +1 @@ +../squash_dict.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/unsafe_keccak.cairo b/cairo_programs/proof_programs/unsafe_keccak.cairo new file mode 120000 index 00000000..847d284f --- /dev/null +++ b/cairo_programs/proof_programs/unsafe_keccak.cairo @@ -0,0 +1 @@ +../unsafe_keccak.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/unsafe_keccak_finalize.cairo b/cairo_programs/proof_programs/unsafe_keccak_finalize.cairo new file mode 120000 index 00000000..892b2bb4 --- /dev/null +++ b/cairo_programs/proof_programs/unsafe_keccak_finalize.cairo @@ -0,0 +1 @@ +../unsafe_keccak_finalize.cairo \ No newline at end of file diff --git a/cairo_programs/proof_programs/unsigned_div_rem.cairo b/cairo_programs/proof_programs/unsigned_div_rem.cairo new file mode 120000 index 00000000..d814de6b --- /dev/null +++ b/cairo_programs/proof_programs/unsigned_div_rem.cairo @@ -0,0 +1 @@ +../unsigned_div_rem.cairo \ No newline at end of file diff --git a/pkg/vm/cairo_run/cairo_run_test.go b/pkg/vm/cairo_run/cairo_run_test.go index 33fc265f..34ad51dd 100644 --- a/pkg/vm/cairo_run/cairo_run_test.go +++ b/pkg/vm/cairo_run/cairo_run_test.go @@ -39,14 +39,26 @@ func TestPoseidonBuiltin(t *testing.T) { testProgram("poseidon_builtin", t) } +func TestPoseidonBuiltinProofMode(t *testing.T) { + testProgramProof("poseidon_builtin", t) +} + func TestPoseidonHash(t *testing.T) { testProgram("poseidon_hash", t) } +func TestPoseidonHashProofMode(t *testing.T) { + testProgramProof("poseidon_hash", t) +} + func TestSimplePrint(t *testing.T) { testProgram("simple_print", t) } +func TestSimplePrintProofMode(t *testing.T) { + testProgramProof("simple_print", t) +} + func TestWriteOutputProgram(t *testing.T) { cairoRunConfig := cairo_run.CairoRunConfig{DisableTracePadding: false, Layout: "all_cairo", ProofMode: false} runner, err := cairo_run.CairoRun("../../../cairo_programs/bitwise_output.json", cairoRunConfig) @@ -69,32 +81,66 @@ func TestPedersenBuiltin(t *testing.T) { testProgram("pedersen_test", t) } +func TestPedersenBuiltinProofMode(t *testing.T) { + testProgramProof("pedersen_test", t) +} + func TestPedersenAndBitwiseBuiltins(t *testing.T) { testProgram("pedersen_and_bitwise_builtins", t) } +func TestPedersenAndBitwiseBuiltinsProofMode(t *testing.T) { + testProgramProof("pedersen_and_bitwise_builtins", t) +} + func TestPedersenAndBitwiseBuiltinsWithAllocLocals(t *testing.T) { testProgram("pedersen_and_bitwise_builtins_with_alloc_locals", t) } +func TestPedersenAndBitwiseBuiltinsWithAllocLocalsProofMode(t *testing.T) { + testProgramProof("pedersen_and_bitwise_builtins_with_alloc_locals", t) +} + func TestAllocAddSegmentHint(t *testing.T) { testProgram("if_reloc_equal", t) } +func TestAllocAddSegmentHintProofMode(t *testing.T) { + testProgramProof("if_reloc_equal", t) +} + func TestAssertNNHint(t *testing.T) { testProgram("assert_nn", t) } +func TestAssertNNHintProofMode(t *testing.T) { + testProgramProof("assert_nn", t) +} + func TestAbsValue(t *testing.T) { testProgram("abs_value", t) } + +func TestAbsValueProofMode(t *testing.T) { + testProgramProof("abs_value", t) +} + func TestCommonSignature(t *testing.T) { testProgram("common_signature", t) } + +func TestCommonSignatureProofMode(t *testing.T) { + testProgramProof("common_signature", t) +} + func TestAssertNotZeroHint(t *testing.T) { testProgram("assert_not_zero", t) } +func TestAssertNotZeroHintProofMode(t *testing.T) { + testProgramProof("assert_not_zero", t) +} + func TestBitwiseRecursion(t *testing.T) { testProgram("bitwise_recursion", t) } @@ -115,36 +161,72 @@ func TestDict(t *testing.T) { testProgram("dict", t) } +func TestDictProofMode(t *testing.T) { + testProgramProof("dict", t) +} + func TestDictUpdate(t *testing.T) { testProgram("dict_update", t) } +func TestDictUpdateProofMode(t *testing.T) { + testProgramProof("dict_update", t) +} + func TestAssertNotEqualHint(t *testing.T) { testProgram("assert_not_equal", t) } +func TestAssertNotEqualHintProofMode(t *testing.T) { + testProgramProof("assert_not_equal", t) +} + func TestPowHint(t *testing.T) { testProgram("pow", t) } +func TestPowHintProofMode(t *testing.T) { + testProgramProof("pow", t) +} + func TestSqrtHint(t *testing.T) { testProgram("sqrt", t) } +func TestSqrtHintProofMode(t *testing.T) { + testProgramProof("sqrt", t) +} + func TestUnsafeKeccak(t *testing.T) { testProgram("unsafe_keccak", t) } +func TestUnsafeKeccakProofMode(t *testing.T) { + testProgramProof("unsafe_keccak", t) +} + func TestUnsafeKeccakFinalize(t *testing.T) { testProgram("unsafe_keccak_finalize", t) } +func TestUnsafeKeccakFinalizeProofMode(t *testing.T) { + testProgramProof("unsafe_keccak_finalize", t) +} + func TestUnsignedDivRemHint(t *testing.T) { - cairoRunConfig := cairo_run.CairoRunConfig{DisableTracePadding: false, Layout: "all_cairo", ProofMode: false} - _, err := cairo_run.CairoRun("../../../cairo_programs/unsigned_div_rem.json", cairoRunConfig) - if err != nil { - t.Errorf("Program execution failed with error: %s", err) - } + testProgram("unsigned_div_rem", t) +} + +func TestUnsignedDivRemHintProofMode(t *testing.T) { + testProgramProof("unsigned_div_rem", t) +} + +func TestSignedDivRemHint(t *testing.T) { + testProgram("signed_div_rem", t) +} + +func TestSignedDivRemHintProofMode(t *testing.T) { + testProgramProof("signed_div_rem", t) } func TestSetAddHint(t *testing.T) { @@ -155,27 +237,48 @@ func TestMemcpyHint(t *testing.T) { testProgram("memcpy_test", t) } +func TestMemcpyHintProofMode(t *testing.T) { + testProgramProof("memcpy_test", t) +} + func TestAssertLeFelt(t *testing.T) { testProgram("assert_le_felt", t) } +func TestAssertLeFeltProofMode(t *testing.T) { + testProgramProof("assert_le_felt", t) +} + func TestAssertLtFelt(t *testing.T) { testProgram("assert_lt_felt", t) } +func TestAssertLtFeltProofMode(t *testing.T) { + testProgramProof("assert_lt_felt", t) +} + func TestMemsetHint(t *testing.T) { testProgram("memset", t) } +func TestMemsetHintProofMode(t *testing.T) { + testProgramProof("memset", t) +} + func TestMathCmp(t *testing.T) { testProgram("math_cmp", t) } + +func TestMathCmpProofMode(t *testing.T) { + testProgramProof("math_cmp", t) +} + func TestSquashDict(t *testing.T) { testProgram("squash_dict", t) } -func TestSignedDivRemHint(t *testing.T) { - testProgram("signed_div_rem", t) +func TestSquashDictProofMode(t *testing.T) { + testProgramProof("squash_dict", t) } func TestFindElementHint(t *testing.T) { @@ -190,18 +293,30 @@ func TestAssert250BitHint(t *testing.T) { testProgram("assert_250_bit_element_array", t) } +func TestAssert250BitHintProofMode(t *testing.T) { + testProgramProof("assert_250_bit_element_array", t) +} + func TestDictSquash(t *testing.T) { testProgram("dict_squash", t) } +func TestDictSquashProofMode(t *testing.T) { + testProgramProof("dict_squash", t) +} + func TestSplitFeltHint(t *testing.T) { testProgram("split_felt", t) } +func TestSplitFeltHintProofMode(t *testing.T) { + testProgramProof("split_felt", t) +} + func TestSplitIntHint(t *testing.T) { - cairoRunConfig := cairo_run.CairoRunConfig{DisableTracePadding: false, Layout: "all_cairo", ProofMode: false} - _, err := cairo_run.CairoRun("../../../cairo_programs/split_int.json", cairoRunConfig) - if err != nil { - t.Errorf("Program execution failed with error: %s", err) - } + testProgram("split_int", t) +} + +func TestSplitIntHintProofMode(t *testing.T) { + testProgramProof("split_int", t) }