Skip to main content

Crate world_id_primitives

Crate world_id_primitives 

Source
Expand description

§World ID

World ID is a protocol built to enable anonymous proof of human (PoH) at global scale and to complement existing identity systems. World ID allows individuals to prove things about themselves — like they are a real and unique human, not a bot — without revealing any personal information. Read more about World ID.

Good places to start:

  • Learn more about World ID: To learn more about World ID in general, see the World ID Website.
  • Integrating World ID: The best place to start for integrating World ID is the Developer Docs.
  • Protocol Repo: The source code for the protocol can be found in this repo.

§High level architecture

The following diagram shows the main parties which interact in the World ID Protocol.

Parties of the World ID Protocol

§About this crate

Core foundational types and structures for the World ID Protocol.

Importantly, this crate keeps dependencies to a minimum and does not implement any logic beyond serialization and deserialization.

Re-exports§

pub use credential::Credential;
pub use credential::CredentialVersion;
pub use proof::ZeroKnowledgeProof;
pub use request::ConstraintExpr;
pub use request::ConstraintKind;
pub use request::ConstraintNode;
pub use request::MAX_CONSTRAINT_NODES;
pub use request::ProofRequest;
pub use request::ProofResponse;
pub use request::RequestItem;
pub use request::RequestVersion;
pub use request::ResponseItem;
pub use request::ValidationError;

Modules§

api_types
Contains API request/response types and shared API enums. Shared API request/response payloads for gateway and indexer services.
authenticator
Contains types related to the Authenticator.
circuit_inputs
Contains the raw circuit input types for the World ID Protocol.
credential
Base definition of a “Credential” in the World ID Protocol.
merkle
Contains base types for operations with Merkle trees.
oprf
Contains types specifically related to the OPRF services.
proof
Contains the quintessential zero-knowledge proof type.
request
Contains request/response types and validation helpers for RP proof requests. Module containing all the functionality to handle requests from Relying Parties (RPs) to Authenticators.
rp
Contains types specifically related to relying parties.
serde_utils
Serialization utilities for numeric API values across the protocol.
sponge
SAFE-style sponge utilities and helpers.

Structs§

Config
Global configuration to interact with the different components of the Protocol.
EdDSAPrivateKey
A private key for the EdDSA signature scheme.
EdDSAPublicKey
A public key for the EdDSA signature scheme over the BabyJubJubCurve.
EdDSASignature
An EdDSA signature on the Baby Jubjub curve, using Poseidon2 as the internal hash function for the Fiat-Shamir transform.
FieldElement
Represents a field element of the base field (Fq) in the World ID Protocol.
Nullifier
A nullifier is a unique, one-time identifier derived from (user, rpId, action) that lets RPs detect duplicate actions without learning who the user is. Used with the contract’s verify() function.
OprfKeyId
The id of a relying party.
SessionId
An identifier for a session (can be re-used).
SessionNullifier
A session nullifier for World ID Session proofs. It is analogous to a request nonce, it does NOT guarantee uniqueness of a World ID as a Nullifier does.
ShareEpoch
Represents an epoch for the DLog secret-share.
Signer
The inner signer which can sign requests for both on-chain and off-chain operations. Both issuers and authenticators use this.

Enums§

PrimitiveError
Generic errors that may occur with basic serialization and deserialization.
SessionFeType
Type of field elements for Session Proofs

Constants§

TREE_DEPTH
The depth of the Merkle tree used in the World ID Protocol for the WorldIDRegistry contract.

Traits§

SessionFieldElement
Allows field element generation for Session Proofs

Type Aliases§

ScalarField
The scalar field used in the World ID Protocol.