argumentcomputer / argumentcomputer/sphinx

The termination check is under-constrained due to incomplete check of "public_values.next_pc == 0".

Open
#205 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
80
Forks
8
PR merge metrics
No merged PRs in 30d

Description

The verifier determines whether execution properly invoked the halt syscall by checking if public_values.next_pc == 0, as implemented here:

https://github.com/argumentcomputer/sphinx/blob/8a39b951e3ea520e295b693ad38bff6b43a2630c/prover/src/verify.rs#L54-L94

However, this check is located inside the else branch for i = 0, and is therefore skipped entirely when the proof contains only one shard.

> This issue is disclosed with the permission of @johnchandlerburnham.

Contributor guide

Open the contributing guide

Research direction

Read prover/src/verify.rs around lines 54-94, starting at the termination check for public_values.next_pc == 0. Compare verifier behavior for proofs with one shard and multiple shards, then inspect nearby verification tests or entry points. Done means the single-shard path enforces the same halt-syscall termination condition as the other paths.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
security
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.