Split prove proxy into user and system roles - #10
Merged
Merged
Conversation
added 14 commits
September 10, 2026 12:44
Pure move. ProveProxyServerProvider becomes UserProveProvider (UPS circuits, contract cache, coordinator RPC) and SystemProveProvider (bridge wrap circuits, Groth16 wrappers, keystore preload). Method names and bodies unchanged.
The embedded fixtures wrapped each network in a "network" key that Config::networks never had, lacked magic / faucet_rpc_url / nostr_relay_url / fees.da_fee, and test_config_loading read a client_prover/config.json that no longer exists; it now reads psy-genesis/config.json. Two fixtures also contradicted from_json's defaultNetwork semantics and are corrected so they test what they claim.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
user,system, andallroles. The CLI defaults touser; local development explicitly opts intoall.psy_get_prove_proxy_rolewith explicit user/system capability flags. A role does not initialize or register the other proof family.system_prove_proxy_urlto network configuration. Route relayer bridge proving to that endpoint and verify system capabilities at startup, with no fallback to the user pool.Source head:
3a81f59e0cf9333fc2ad4aefda7c83787660c9ab.Scope
This PR contains runtime code, tests, RPC documentation and the local developer launcher adjustment. GCP/offsite deployment scripts are maintained separately on
deploy/multi-chain-gcp(merge commit05775a55) and are not part of this PR. No RPC keys, private keys, or compiled binaries are included.Breaking Configuration / Rollout
--role allto retain a single-process service for both families. A bare new prove-proxy invocation serves the user family only.user, and set the relayer'ssystem_prove_proxy_urltosystem(or a deliberately sharedallinstance).Verification
cargo test --locked --offline --release -p psy_prover --test prove_proxy_role: 5 passed, 0 failed. Covers user-only/system-only/all registration, constructor laziness, constructor errors and role metadata.-32601.user; relayer logssystem prove proxy verifiedagainst the private system endpoint.Merge Blocker: psy-genesis Gitlink
multi_chainadvancedpsy-genesisto9ea96ca13f60247c22b2108f086fb9cd1287ba94, which updates contract artifacts. This branch points to285d9a2a82e20ae20053f81345537abba23136a1, which addssystem_prove_proxy_urltoconfig.jsonon top of628e2fcwithout changing contract artifacts.A merge preview reports a psy-genesis submodule conflict. Before merging, reconcile the configuration addition with the newer genesis branch and update the gitlink to the agreed combined commit. Do not resolve it by discarding the newer contract artifacts or by silently reverting the system endpoint configuration. That combined dependency revision has not been validated by the staging evidence above. The currently running network's genesis was not changed.
Operational Notes
already known/InvalidCheckpointContinuityretries until the next round refreshes the L1 cursor. Staging recovered without database edits; this PR does not claim to fix that retry behavior.