Skip to content

refactor!: drop x-token, the pre-ceremony X circuit - #8

Merged
SupremaLex merged 1 commit into
mainfrom
refactor/drop-x-token
Aug 24, 2026
Merged

SupremaLex merged 1 commit into
mainfrom
refactor/drop-x-token

Conversation

@SupremaLex

Copy link
Copy Markdown
Member

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 public inputs collapsed to the two commitments — and
bearer-link states 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.gz stops existing. 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 has not happened yet.

Two doc fixes, both wrong before this change

  • The README explained --contract-name as existing for XHonkVerifier. The
    real reason is that bb always emits a contract named HonkVerifier, so any
    consumer compiling two of them needs distinct names. Removing one circuit
    does not remove the need.

  • It cited a Google vk_hash from before the Authorization Digest binding
    rewrote 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):

    Circuit vk_hash
    bearer-link 0x02bbc194f5160b0918f408d0f67445b8882e86d76e58b3465637cb6bcb26818e
    oidc-google 0x24db903f725957f760b865b2c6f010da37d7c9397b800c21113fbd0388a5a69f

Verification

bearer_link 12 tests, oidc_google 3, nargo fmt --check clean on both,
scripts/build.sh produces both verification keys with the pinned toolchain.


🤖 Generated with Claude Code

https://claude.ai/code/session_01MWEkr8qPxq8dUc4DP1hhzA

`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>
@SupremaLex
SupremaLex merged commit b908580 into main Aug 24, 2026
3 checks passed
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