diff --git a/identity/introduction/background.mdx b/identity/introduction/background.mdx index 64c4f19..2a7616d 100644 --- a/identity/introduction/background.mdx +++ b/identity/introduction/background.mdx @@ -2,6 +2,6 @@ The concept of self-sovereign identity (SSI), in which individuals have full con Over the past two years, [galxe.com](http://galxe.com/) has emerged as the leading user growth community within the Web3 ecosystem, relying extensively on credential-based systems for hosting marketing campaigns. During this period, our platform has facilitated the issuing of over one hundred million credentials to more than ten million users. At its peak, Galxe conducted over one million verification in a single day. Such extensive engagement has endowed us with firsthand experience and profound insights into the challenges associated with the existing solutions of verifiable credential and SSI, specifically regarding scalability, privacy, or the realization of self-sovereignty for users. While the [W3C Verifiable Credentials Data Model](https://www.w3.org/TR/vc-data-model/) has defined the structure of verifiable credentials and pioneers like [Iden3](https://iden3.io/) and [Ethereum Attestation Service](https://attest.sh/) (EAS) have launched services in production, widespread adoption is still in its early stages and has not been fully realized. -In response to the challenges we faced on [galxe.com](http://galxe.com/), we have designed Galxe Identity Protocol, a SSI service that utilizes verifiable credentials, powered by zero-knowledge proof mechanisms. The architecture of this protocol is meticulously crafted to be **privacy-first, user-friendly, scale-able,** and **future-proofing**. Galxe identity protocol allows credential holders to selectively reveal requisite information in form of zero-knowledge proofs, while maintaining their pseudonyms. Proofs can be generated within seconds by Galxe identity vault in browsers or mobile devices, and verifications can happen on-chain at affordable costs. The protocol uses a flexible identity commitment schema to address the issue of digital identity multiplicity, so that nullifiers of proofs are deterministic and can be utilized by verifiers without introducing an extra layer of trust. This design ensures the privacy and non-traceability of the underlying identity, even in scenarios where collusion between issuers and verifiers occurs and verification activities are publicly disclosed, e.g. on-chain verification. In addition to holders, issuers and verifiers can leverage our ease-of-use Software Development Kits (SDKs) to apply ZKP without the necessity of understanding ZKP. Moreover, the typed credential design allows most issuers to create new credentials in a no-code fashion, and the unique aggregation mechanism further enhances verification efficiency by facilitating minting of a soul-bound token (SBT) or on-chain attestations (like EAS) for reduced cost verification in the future. Holders are not required to register for a global ID or reveal any commitment on-chain, and lazy registration is supported for issuers. The protocol promotes the use of non-revocable credentials with expiration for scalability, while also supporting revocable credentials on-chain. In recognition of the rapid-evolving nature of of ZKP technology, the protocol adopts a modular verification stack design, making it future-proofing. +In response to the challenges we faced on [galxe.com](http://galxe.com/), we have designed Galxe Identity Protocol, a SSI service that utilizes verifiable credentials, powered by zero-knowledge proof mechanisms. The architecture of this protocol is meticulously crafted to be **privacy-first, user-friendly, scale-able,** and **future-proofing**. Galxe identity protocol allows credential holders to selectively reveal requisite information in form of zero-knowledge proofs, while maintaining their pseudonyms. Proofs can be generated within seconds by Galxe identity vault in browsers or mobile devices, and verifications can happen on-chain at affordable costs. The protocol uses a flexible identity commitment schema to address the issue of digital identity multiplicity, so that nullifiers of proofs are deterministic and can be utilized by verifiers without introducing an extra layer of trust. This design ensures the privacy and non-traceability of the underlying identity, even in scenarios where collusion between issuers and verifiers occurs and verification activities are publicly disclosed, e.g. on-chain verification. In addition to holders, issuers and verifiers can leverage our ease-of-use Software Development Kits (SDKs) to apply ZKP without the necessity of understanding ZKP. Moreover, the typed credential design allows most issuers to create new credentials in a no-code fashion, and the unique aggregation mechanism further enhances verification efficiency by facilitating minting of a soul-bound token (SBT) or on-chain attestations (like EAS) for reduced cost verification in the future. Holders are not required to register for a global ID or reveal any commitment on-chain, and lazy registration is supported for issuers. The protocol promotes the use of non-revocable credentials with expiration for scalability, while also supporting revocable credentials on-chain. In recognition of the rapid-evolving nature of ZKP technology, the protocol adopts a modular verification stack design, making it future-proofing. The first verification stack is using groth16, a Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (zk-SNARK) system, for efficient proof generation and lower cost on-chain verification. It is implemented using circom and snarkjs. New verification stack, based on different proof systems like o1.js, can be added with full backward compatibility. Our open design also empower us to swiftly integrate other services in the ZKP ecosystem, e.g., cheap on-chain proof verification through proof aggregation, provided by Nebra’s Universal Proof Aggregation. diff --git a/identity/tutorials/simple-workflow.mdx b/identity/tutorials/simple-workflow.mdx index 98bfa27..49a72b2 100644 --- a/identity/tutorials/simple-workflow.mdx +++ b/identity/tutorials/simple-workflow.mdx @@ -55,7 +55,7 @@ import { } from "@galxe-identity-protocol/sdk"; import { ethers } from "ethers"; -// conviniently unwrap the result of a function call by throwing an error if the result is an error. +// conveniently unwrap the result of a function call by throwing an error if the result is an error. const unwrap = errors.unwrap; // Use cloudflare's free open rpc in this example. @@ -63,7 +63,7 @@ const MAINNET_RPC = "https://cloudflare-eth.com"; const provider = new ethers.JsonRpcProvider(MAINNET_RPC); // This is a dummy issuer's EVM address that has been registered on mainnet. -// Because it authroize the private key that is public to everyone, +// Because it authorize the private key that is public to everyone, // it should not be used in production! const dummyIssuerEvmAddr = "0x15f4a32c40152a0f48E61B7aed455702D1Ea725e"; ``` diff --git a/identity/tutorials/use-nebra-upa.mdx b/identity/tutorials/use-nebra-upa.mdx index 480ca01..a1e079c 100644 --- a/identity/tutorials/use-nebra-upa.mdx +++ b/identity/tutorials/use-nebra-upa.mdx @@ -225,7 +225,7 @@ async function main() { const evmIdSlice = u.createNewIdentitySlice("evm"); // User's identity commitment is computed based on the secrets of the identity slice. - // You can also retrive the identity commitment from the identity slice. + // You can also retrieve the identity commitment from the identity slice. const userIdc = user.User.computeIdentityCommitment(evmIdSlice); // let's use a famous Ethereum address in this example.