recursiverecusive_with_poseidondexsmallstarknetstarknet_with_keccak.
dynamic or all_cairo we are going to run into issues. Those layouts are not supported by Integrity, because of complexity of their verification.
Double Verification for Integrity Compatibility
As a workaround we came up with sort of “double verification”- Firstly, generate proof for initial program using desired layout like
dynamic. This will allow proof to capture full execution of the program. - Then generate trace, proof and verify it, but instead of providing your program as
programFile, use StarkWare’s verifier written in Cairo0 and provide proof from step 1 as an input.
proof.json you got from proof verification to have object with proof key instead of direct object proof, so for example if you have proof.json like this:
0x193641eb151b0f41674641089952e60bc3aded26e3cf42793655c562b8c3aa0 program hash.
In the flow described above we are not directly verifying your program. Instead we proof that StarkWare’s verifier when executed on your proof passed verification. This indirect verification through double proving ensures compatibility with Integrity’s layout limitations.
Note: This is only necessary when verifying with Integrity. If its not required in your case you can skip this and proceed with standard verification.
