A field guide to zkTLS
Primus lets you prove something about a web session without handing over the session. The cryptography holds. Most of the mistakes happen in the space between a valid signature and a correct integration, and that space is where this guide lives. Every chapter carries something you operate rather than read: a real attestation you can break, a verifier you can misconfigure on purpose, a check at the end to see whether it landed. Nothing is mocked.
The order is deliberate. The first four take one attestation apart, the next three are about handing it to a contract without getting hurt, and the last three are where zkTLS meets the encrypted side of the stack. The line under each title is the thing you get to operate. Each chapter is its own deployment, so they open in a new tab.
An attestation has nine fields. Seven are hashed. The other two are the ones most integrations read first.
The full instrument: paste a proof, break a field, watch the two verdicts split
Read ↗attConditions decides what leaves the session: a revealed string, a hash commitment, a comparison.
Toggle each field between reveal and commit, see what a verifier learns
SoonA multi-URL attestation keeps the first request in plain sight and folds the rest into additionParams.
Paste one, watch the hidden requests unfold out of a single string
SoonThe zkTLS SDK and Primus Network return different envelopes with different encodings.
Drop in either shape, the page tells you which it is and why it matters
SoonWhat the contract checks, what it stores, and why a view function returning true is a small promise.
Step the contract line by line with a payload you can sabotage
SoonRecipient binding, endpoint pinning, path pinning, freshness, replay.
Switch checks on and off, then run four attacks and see which land
SoonzkCredential turns a one-off proof into something reusable.
Walk a credential through issue, present and expire
SoonWhat Primus means by FHE and which problems it is actually pointed at.
Operate a sealed value: add to it, compare it, never see it
SoonzkTLS attests a value, FHE computes on it while it stays sealed.
Run the pipeline end to end with three balances and one total
SoonappId, chains, error paths, and the failure modes that only show up with real users.
A configurator that prints the integration you just described
SoonChapter one is not an article about the Attestation Inspector, it is the Attestation Inspector. Paste a real proof or mint one in the browser, and it recomputes the digest byte for byte the way the contract does, recovers the signer from the raw hash, and draws the packed bytes at true byte width. Nine checks in two columns: what the chain enforces, and what is left to you.
Open the Inspector