Predicate Proof

Ayrıca şöyle anılır Range Proof, Attribute Predicate Proof

Bir araya getirildiBelirtildi

What it is. A predicate proof lets you prove that some condition about a hidden value is true, "this number is at least 18," "this date falls before 2027," "this balance is above the minimum", without revealing the value itself. The verifier learns only the answer to the yes/no question they asked, nothing else about the underlying data.

This is a stronger, narrower guarantee than plain selective disclosure. Selective disclosure (as used in BBS+ credentials) lets you reveal some fields of a credential while hiding others, but the fields you do reveal are shown in full: if you disclose your country, the verifier sees the literal value "TR," not a computed fact about it. A predicate proof goes one step further: instead of disclosing your birthdate, it proves the statement "birthdate implies age ≥ 18" and reveals only that the statement is true. Your actual birthdate never appears anywhere, not even in hidden form the verifier could later be shown.

The clearest everyday example: proving you're old enough to buy alcohol without showing your date of birth, your exact age, or any other page of your ID.

Who built the tools. Two independently published constructions are used for this kind of proof today. Groth16 (Jens Groth, 2016) is a highly efficient zk-SNARK that requires a one-time "trusted setup" ceremony but produces very small, very fast-to-verify proofs, the standard choice for a fixed, well-defined statement like an age check. Bulletproofs (Bünz, Bootle, Boneh, Poelstra, Wuille, and Maxwell, 2018) trade a bit of proof size for removing the trusted-setup requirement entirely, and are commonly used for range proofs specifically (proving a hidden number falls between two bounds). Solidus's protocol design names both; it invented neither.

How Solidus uses it, honestly, this is the important part. As of this writing, no code implements predicate proofs anywhere in Solidus. This is written into the protocol specification, with a real Groth16 circuit statement, defined over the BN254 curve, for proving an age threshold without revealing a birthdate, but it exists only as a design document. No npm package implements it. It is not part of the testnet. It has never shipped.

What ships today (BBS+ selective disclosure, testnet, unaudited, see Zero-Knowledge Proof and Unlinkability) is a materially different, weaker guarantee: the holder discloses the literal value of whatever field the verifier requested, chosen coarsely by design (a country code, a bucketed assurance level) to limit what any single disclosure reveals, but it is disclosure of a value, not a zero-knowledge evaluation of a predicate over a hidden one. If the honest answer to "how does Solidus prove I'm over 18 without revealing my birthdate" is wanted today, it is: it doesn't yet. Product and vertical planning documents describe an "age predicate" feature as a near-term goal; that goal is currently a written design, not running software.

Check it yourself. There is nothing to run: that is the fact being reported here, not an oversight in this entry. The design exists as a specification; no runnable artifact exists to point at yet.

Nereden geliyor

Bunu başkası belirtti. Solidus bir araya getiriyor.

The two constructions Solidus's protocol specification names for this, Groth16 zk-SNARKs (Jens Groth, 2016) and Bulletproofs (Benedikt Bünz, Jonathan Bootle, Dan Boneh, Andrew Poelstra, Pieter Wuille, and Greg Maxwell, 2018), are both independently published, widely used constructions. Solidus invented neither; its whitepaper specifies composing them for a predicate-proof layer that, as of this writing, does not exist in code.

Bunu nasıl doğrularsınız

Yazıya döküldü. Henüz uygulama yok.

None exists that a stranger can run. That absence is the fact this entry reports. The written design (a Groth16 circuit statement over BN254 proving an age threshold without revealing a birthdate) exists in Solidus's protocol specification; no corresponding npm package or on-chain component has ever shipped.

İlgili

Predicate Proof · Solidus Lexicon