refactor!: drop x-token, the pre-ceremony X circuit - #8
Merged
Merged
Conversation
`bearer-link` replaces it. The old circuit proved a bearer opens two TLSN commitments AND carried a keccak nullifier for on-chain dedup; the ceremony moved that dedup to the Authorization Digest, which is its own replay nullifier, so the circuit's public inputs collapsed to the two commitments and `bearer-link` states exactly that, for X and GitHub alike. Two circuits remain, and the release ships two tarballs instead of three. BREAKING for consumers. The `libid-circuits-<version>-x-token.tar.gz` asset stops existing, so anything regenerating `XHonkVerifier.sol` from it breaks on the first release after this. libid-contracts pins v0.2.0 today and is unaffected until it bumps; bumping means retiring `XHonkVerifier` and the `login/zk` stack there in the same step. That is the cutover, and it is not done yet. Docs corrected while removing the references, both wrong before this commit: the README named `XHonkVerifier` as the reason `--contract-name` exists, when the reason is that bb always emits `HonkVerifier` and any consumer compiling two of them needs distinct names; and it cited a Google vk_hash from before the Authorization Digest binding rewrote that circuit's public inputs. Both keys are now stated, measured under the pinned toolchain (nargo 1.0.0-beta.20, bb 5.0.0-nightly.20260324): bearer-link 0x02bbc194f5160b0918f408d0f67445b8882e86d76e58b3465637cb6bcb26818e oidc-google 0x24db903f725957f760b865b2c6f010da37d7c9397b800c21113fbd0388a5a69f bearer_link 12 tests, oidc_google 3, `nargo fmt --check` clean on both. Signed-off-by: SupremaLex <georglutsenko@gmail.com>
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.
bearer-linkreplaces it. The old circuit proved a bearer opens two TLSNcommitments and carried a keccak nullifier for on-chain dedup. The ceremony
moved that dedup to the Authorization Digest, which is its own replay
nullifier, so the public inputs collapsed to the two commitments — and
bearer-linkstates exactly that, for X and GitHub alike.Two circuits remain; the release ships two tarballs instead of three.
Breaking for consumers
libid-circuits-<version>-x-token.tar.gzstops existing. Anything regeneratingXHonkVerifier.solfrom it breaks on the first release after this.libid-contracts pins
v0.2.0today and is unaffected until it bumps. Bumpingmeans retiring
XHonkVerifierand thelogin/zkstack there in the same step— that is the cutover, and it has not happened yet.
Two doc fixes, both wrong before this change
The README explained
--contract-nameas existing forXHonkVerifier. Thereal reason is that bb always emits a contract named
HonkVerifier, so anyconsumer compiling two of them needs distinct names. Removing one circuit
does not remove the need.
It cited a Google
vk_hashfrom before the Authorization Digest bindingrewrote that circuit's public inputs. Both keys are now stated and measured
under the pinned toolchain (nargo 1.0.0-beta.20, bb 5.0.0-nightly.20260324):
bearer-link0x02bbc194f5160b0918f408d0f67445b8882e86d76e58b3465637cb6bcb26818eoidc-google0x24db903f725957f760b865b2c6f010da37d7c9397b800c21113fbd0388a5a69fVerification
bearer_link12 tests,oidc_google3,nargo fmt --checkclean on both,scripts/build.shproduces both verification keys with the pinned toolchain.🤖 Generated with Claude Code
https://claude.ai/code/session_01MWEkr8qPxq8dUc4DP1hhzA