Skip to content

verifier, uraniborg: batch verification; faster, cancellable proof check - #38

Merged
billy-lau merged 1 commit into
android:mainfrom
billy-lau:uraniborg/parallelize-inclusion-proof-check
Sep 30, 2026
Merged

billy-lau merged 1 commit into
android:mainfrom
billy-lau:uraniborg/parallelize-inclusion-proof-check

Conversation

@billy-lau

Copy link
Copy Markdown
Member

Checking each APK split with its own verifier run fetched the checkpoint and searched the log once per split, so the proof step took minutes.

  • verifier: add --payloads_path batch mode. It searches each log once for all payloads and shares hash tiles between proofs. Results stream as JSON Lines and match single-payload runs, even if a tile download fails.
  • inclusion_proof_check.py: use batch mode. Splits it gives no result for (old or crashed verifier) are checked one at a time; an old verifier also triggers a warning to rebuild it. A missing verifier is reported once, not once per split.
  • Report step_progress events, add package and split labels to log lines, and kill the running verifier on Ctrl-C or SIGTERM.

314 splits on an Android 14 emulator: proof step ~9 s instead of minutes. Results match per-split runs exactly.

Test: go test ./... (new batch, tile-error and cancellation tests);
pytest tests (185 pass); emulator run; old-verifier fallback run.

Change-Id: I1b1b9b69fdd6f3d51ac75ebc803725187343ff6c

Checking each APK split with its own verifier run fetched the checkpoint
and searched the log once per split, so the proof step took minutes.

- verifier: add --payloads_path batch mode. It searches each log once for
  all payloads and shares hash tiles between proofs. Results stream as
  JSON Lines and match single-payload runs, even if a tile download fails.
- inclusion_proof_check.py: use batch mode. Splits it gives no result for
  (old or crashed verifier) are checked one at a time; an old verifier
  also triggers a warning to rebuild it. A missing verifier is reported
  once, not once per split.
- Report step_progress events, add package and split labels to log lines,
  and kill the running verifier on Ctrl-C or SIGTERM.

314 splits on an Android 14 emulator: proof step ~9 s instead of minutes.
Results match per-split runs exactly.

Test: go test ./... (new batch, tile-error and cancellation tests);
      pytest tests (185 pass); emulator run; old-verifier fallback run.

Change-Id: I1b1b9b69fdd6f3d51ac75ebc803725187343ff6c
@billy-lau
billy-lau merged commit dcc23a7 into android:main Sep 30, 2026
7 checks passed
@billy-lau
billy-lau deleted the uraniborg/parallelize-inclusion-proof-check branch September 30, 2026 03:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant