Skip to content

eth-ecuador/proovacy

Repository files navigation

Proovacy

Untitled Project (2)

Overview

Proovacy leverages zkTLS (Zero-Knowledge Transport Layer Security) to privately prove ownership of social media usernames, such as Twitter and Telegram, directly on-chain while ensuring user privacy. By integrating the Starknet Wallet SDK, Proovacy creates a unique wallet based on parameters derived from these platforms. Initially, the system supports verified humans onboarding through Twitter and Telegram, followed by a 2:1 referral model, where each user can invite two verified participants. This decentralized Proof-of-Personhood system not only enables secure verification but also supports generating session keys for privacy-preserving authentication across platforms.

Demo Video

Watch the demo of our project in action:
Hackathon Demo

Workflows

Activity Diagram

stateDiagram-v2
    [*] --> ConnectSocialAccounts
    ConnectSocialAccounts --> VerifyIdentity: User connects Twitter/Telegram
    VerifyIdentity --> GenerateProof: Reclaim Protocol
    GenerateProof --> CreateWallet: ZK Proof Generated
    CreateWallet --> [*]: Starknet Wallet Created
    
    state VerifyIdentity {
        [*] --> ValidateTwitter
        [*] --> ValidateTelegram
        ValidateTwitter --> ProofGeneration
        ValidateTelegram --> ProofGeneration
        ProofGeneration --> [*]
    }
Loading

Software Architecture Diagram

graph TB
    subgraph Frontend
        UI[User Interface]
        SDK[Starknet SDK]
    end
    
    subgraph Core
        RP[Reclaim Protocol]
        ZK[ZK Proof Generator]
        WM[Wallet Manager]
    end
    
    subgraph External
        TW[Twitter API]
        TG[Telegram API]
        SC[Starknet Contract]
    end
    
    UI --> RP
    UI --> SDK
    RP --> ZK
    ZK --> WM
    WM --> SC
    RP --> TW
    RP --> TG
    SDK --> SC
Loading

Class Diagram

classDiagram
    class Frontend {
        -walletManager: WalletManager
        -reclaimProtocol: ReclaimProtocol
        +initializeConnection()
        +handleVerification()
        +manageWallet()
        +displayUserInterface()
    }

    class ReclaimProtocol {
        -zktlsVerifier: ZKTLSVerifier
        -socialConnector: SocialConnector
        +verifySocialAccount()
        +generateProof()
    }
    
    class SocialConnector {
        -twitterAPI: TwitterAPI
        -telegramAPI: TelegramAPI
        +connectTwitter()
        +connectTelegram()
    }
    
    class WalletManager {
        -starknetSDK: StarknetSDK
        +createWallet()
        +generateSessionKey()
    }
    
    class ZKTLSVerifier {
        +verifyProof()
        +generateZKProof()
    }
    
    Frontend --> ReclaimProtocol
    Frontend --> WalletManager
    ReclaimProtocol --> SocialConnector
   ReclaimProtocol --> ZKTLSVerifier
    ReclaimProtocol --> WalletManager
Loading

Sequence Diagram

sequenceDiagram
    participant U as User
    participant FE as Frontend
    participant RP as Reclaim Protocol
    participant ZK as ZK Proof Generator
    participant W as Wallet Manager
    
    U->>FE: Connect Social Accounts
    FE->>RP: Request Verification
    RP->>RP: Validate Credentials
    RP->>ZK: Generate ZK Proof
    ZK-->>RP: Return Proof
    RP->>W: Create Wallet
    W-->>FE: Return Wallet Details
    FE-->>U: Complete Onboarding
Loading

Features

The Proovacy project is built using the following technologies and protocols:

  • Frontend
    Developed with Next.js, a React framework for building web applications.

  • Blockchain
    Integrated with Starknet, a layer-2 scalability solution for Ethereum. Cairo, the programming language specifically designed for Starknet smart contracts, is used to implement on-chain logic and interactions.

  • SDK Argent Wallet
    Proovacy utilizes the Argent Wallet SDK, a smart wallet designed for Starknet.

  • Reclaim Protocol
    Proovacy integrates Reclaim Protocol, a decentralized protocol that allows users to prove ownership of accounts, data, or assets from third-party platforms without sharing sensitive credentials.
    This protocol enables:

    • Secure identity verification using cryptographic proofs.
    • Privacy-preserving claims leveraging ZKPs to ensure user data remains confidential.
    • Integration with multiple platforms to streamline the process of proving account ownership.
  • Scaffold-Stark Template
    Built upon Scaffold-Stark, a template designed to assist developers in creating decentralized applications (dApps) on Starknet efficiently.
    Scaffold-Stark provides:

    • Pre-built Starknet smart contract examples written in Cairo.
    • An extensible frontend connected to Starknet wallets.
    • Development tools for testing and deploying smart contracts.
  • SDK Argent Wallet
    Proovacy utilizes the Argent Wallet SDK, a smart wallet designed for Starknet. It offers:

    • Seamless Starknet integration for fast, low-cost transactions.
    • Wallet connection capabilities, allowing users to easily connect their Argent wallet to the Proovacy platform to perform the verification test.

Additional Resources