starknet_os_flow_tests: add multicall prove test; drop balance_of test#14082
Conversation
PR SummaryMedium Risk Overview Introduces an ignored Removes the redundant Sepolia Reviewed by Cursor Bugbot for commit 6a5b663. Bugbot is set up for automated code reviews on this repo. Configure here. |
e4ca422 to
a967e07
Compare
47097e7 to
3e32b25
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 3e32b25. Configure here.
Yoni-Starkware
left a comment
There was a problem hiding this comment.
@Yoni-Starkware resolved 1 discussion.
Reviewable status: 0 of 4 files reviewed, 1 unresolved discussion.
Yoni-Starkware
left a comment
There was a problem hiding this comment.
@Yoni-Starkware resolved 1 discussion.
Reviewable status: 0 of 4 files reviewed, all discussions resolved.
3e32b25 to
7b4a4d0
Compare
0573653 to
1d664e9
Compare
a967e07 to
7dd9291
Compare
1d664e9 to
c5bf570
Compare
2656290 to
6c65407
Compare
- Add `multi_call(Array<Call>)` to `account_with_dummy_validate.cairo` with a TODO above `__execute__` to eventually replace its single-call shape with the multicall-style entry point. - Add `prove_and_verify_multicall_tx` in `crates/starknet_os_flow_tests/ src/virtual_os_test.rs`: a single virtual-OS tx forwards through `__execute__` to the new `multi_call`, currently dispatching `test_keccak` and `test_ec_op`. Inner calls are appended via a local `serialize_call(name, args)` helper that bumps the leading `num_calls` counter in `multi_call_args`, so each call site is one line. Marked `#[ignore]`; doc carries a TODO to extend coverage. - Remove `test_prove_balance_of_transaction` from `crates/ starknet_transaction_prover/src/proving/virtual_snos_prover_test.rs` — the remaining `test_prove_transfer_transaction` already covers the same `VirtualSnosProver::prove_transaction` Sepolia path. - Run the new test in the prover CI workflow alongside `virtual_snos_prover_test`. Also widen the workflow's path triggers to include `apollo_starknet_os_program/**` (compiles the OS program the prover runs), `blockifier_test_utils/**` (account/contract test sources), and `starknet_os_flow_tests/**`. Path triggers are not transitive, so these had to be listed explicitly. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
6c65407 to
6a5b663
Compare
AvivYossef-starkware
left a comment
There was a problem hiding this comment.
@AvivYossef-starkware reviewed 10 files and all commit messages, and made 1 comment.
Reviewable status: all files reviewed, 1 unresolved discussion (waiting on Yoni-Starkware).
crates/starknet_os_flow_tests/src/virtual_os_test.rs line 299 at r6 (raw file):
multi_call_args.push(Felt::from(args.len())); multi_call_args.extend_from_slice(args); };
Code quote:
let mut multi_call_args: Vec<Felt> = vec![Felt::ZERO];
let mut serialize_call = |func_name: &str, args: &[Felt]| {
multi_call_args[0] += Felt::ONE;
multi_call_args.push(*contract_address.0.key());
multi_call_args.push(selector_from_name(func_name).0);
multi_call_args.push(Felt::from(args.len()));
multi_call_args.extend_from_slice(args);
};
Yoni-Starkware
left a comment
There was a problem hiding this comment.
@Yoni-Starkware resolved 1 discussion.
Reviewable status:complete! all files reviewed, all discussions resolved (waiting on Yoni-Starkware).

Stack:
Summary
multi_call(Array<Call>)toaccount_with_dummy_validate.cairo, with a TODO above the existing__execute__to eventually replace it with this multicall shape so INVOKE calldata can beArray<Call>natively.prove_and_verify_multicall_txincrates/starknet_os_flow_tests/src/virtual_os_test.rs: one virtual-OS tx forwards through__execute__to the account'smulti_call, currently dispatching onlytest_ec_op(with a TODO to restore thetest_keccakinner call — added by stacked PR apollo_starknet_os_program: restore keccak syscall in virtual OS #14071, which re-enables the keccak syscall in the virtual OS).serialize_call(name, args)helper mutatesmulti_call_argsand bumps the leadingnum_callscounter so each call site is one line. Marked#[ignore].test_prove_balance_of_transactionfromcrates/starknet_transaction_prover/src/proving/virtual_snos_prover_test.rs— the remainingtest_prove_transfer_transactionalready covers the sameVirtualSnosProver::prove_transactionSepolia path.virtual_snos_prover_test. Widen the workflow's path triggers to includeapollo_starknet_os_program/**,blockifier_test_utils/**, andstarknet_os_flow_tests/**(path triggers aren't transitive).bouncer::test::class_hash_migration_data_from_state,stack_trace_regression/test_contract_ctor_frame_stack_trace_cairo1_casm.txt, theFUZZ_ADDRESS_*constants instarknet_os_flow_tests::fuzz_tests, andtest_experimental_libfuncs_contractblakes count.Test plan
cargo test -p blockifier --lib bouncer:: execution::stack_trace::test::test_contract_ctor_frame_stack_tracecargo test -p starknet_os_flow_tests --lib fuzz_tests test_experimental_libfuncs_contractcargo clippy -p starknet_os_flow_tests --all-targets --all-featurescargo +nightly-2025-07-14 test -p starknet_os_flow_tests --features starknet_transaction_prover/stwo_proving --release prove_and_verify_multicall_tx -- --ignored --nocapture(runs as the--ignoredstep instarknet_transaction_prover_ci)