ProofChain

command module
v0.0.0-...-e32c873 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 23, 2026 License: MPL-2.0 Imports: 33 Imported by: 0

README


Starkle

About The Project

Starkle is a privacy-preserving identity platform that allows users to selectively disclose attributes or prove identity predicates (e.g., age range or set-membership) without exposing raw Personally Identifiable Information (PII). It utilizes Merkle Trees for point disclosure and RISC0 (STARKs) for verifiable computational logic.

  • Digital certificates and Digital copies of documents issued by authorized institutions are structured as Merkle Trees where only the root is stored on-chain. This allows users to provide cryptographic proofs for individual fields that verifiers can validate against the Ethereum ledger.
  • Utilizes RISC0 zkVM to generate STARK receipts for identity predicates. This allows users to prove specific data conditions (like age ranges) without revealing the actual attribute values.
  • A high-performance Go-Rust gRPC pipeline delivers public and private inputs alongside O(logn) sibling paths to the zkVM. The architecture is designed to minimize guest memory overhead during the proof generation process for documents containing large attribute sets.
  • Documents are structured as Merkle Trees and encrypted off-chain in MongoDB using AES-256 and ECDH. Only the issuing institution and the owner via cryptographic signing can access or reveal the records.
  • Verification is achieved either by validating STARK receipts where the guest code has committed the Merkle root or by providing a Merkle proof of disclosed values and sibling paths. In the latter case, the verifier recomputes the Merkle root and confirms authenticity by comparing the result against the issuer's on-chain root.

(back to top)

Built With

Go React rust wails risc0 Ethereum mongodb

(back to top)

Development

Prerequisites

  1. Ganache
    npm install ganache --global
    
  2. Wails
    go install github.com/wailsapp/wails/v2/cmd/wails@latest
    
  3. ProofChain-store
    git clone https://github.com/Raaffs/ProofChain-Store.git
    
  4. Clone Repository
    git clone https://github.com/Raaffs/Starkle.git
    

Set Up

  1. Set up in .env file
    cd Starkle
    PRIVATE_KEY=YOUR_PRIVATE_KEY
    
  2. Set up config
    cp .config.example.json .config.json
    
  3. Deploy Contract
    go test -v ./test -run TestDeploy
    
  4. Add contract address to .config.json
    .config.json
    ...
        "services": {
         "STORAGE": "localhost:8754",      
         "CONTRACT_ADDR": "CONTRACT_ADDR" , #edit this
         "RPC_PROVIDERS_URLS": {
     ...
    
  5. Set up risc0
      cd Starkle/internal/crypto/zkp
    
    NVCC_APPEND_FLAGS="-arch=sm_86 -DNDEBUG" \
    RISC0_GPU_BACKEND=cuda \
    cargo build --release --bin host
    
  6. Start prover
    ./target/release/host                
    

Set Up storage service

  1. Go to the directory where you install ProofChain-Store
  2. Set up .env
    MONGO_URI=your_mongo_url
    MONGO_DB=Starkle
    MONGO_COLLECTION_DOCUMENTS=Documents
    MONGO_COLLECTION_INSTITUTES=institute
    # Application Secret Key to access secure routes and perform sensitive operations
    SECRET_KEY=secret
    

3 . Install dependencies

go mod download
  1. Run the storage service
  go run .

Storage service should be up on port 8754

Note: If you are running storage service on some other port, make sure to edit .config.json in starkle to that specific port


Build & Run the app

Make sure you've ganache & storage service up and running

wails build
./build/bin/starkle

(back to top)

UML

1. Systeml Workflow

system workflow

2. Uploading Documents

1

3. Creating digital copy

2

4. Issuing digital certificate

4

5. Third Party Verification

3

(back to top)

Contributing

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

(back to top)

Contact

Suyash - suyashsaraf5@gmail.com


Thank You!

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
chaincore
rpc
internal
storage

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL