Skip to content

Raaffs/ProofChain

Repository files navigation


ProofChain

About The Project

Proofchain is a document verficationa and certficate issuance platform, allowing users to selectively disclose their identity to third party verifiers without exposing any extra Personally Identifiable Information

  • 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.
  • The public ECDH keys of institutions and requestors are stored on blockchain
  • The digital certificates and documents are encrypted using ECDH for key exchange and AES-256 for encryption and stored off-chain on mongodb, ensuring only the requestor and issuing institution can view the document
  • Third-party verifiers can recompute the Merkle tree from shared fields and confirm authenticity by comparing the result against the issuer’s on-chain root, verifying specific data points without accessing unrevealed fields.

(back to top)

Built With

  • Go
  • React
  • Ethereum
  • mongodb
  • wails

(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/ProofChain.git

Set Up

  1. Set up Enviroment variables in .env file
    cd ProofChain
    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": {
     ...

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=ProofChain
    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
  4. 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 proofchain to that specific port


Build & Run the app

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

wails build
./build/bin/ProofChain

(back to top)

UML

1. Uploading Documents

Sequence diagram(1)

2. Issue certificate or create digital copy

issue

3. Third Party Verification

verify

(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!

About

Document and Certificate verficiation using Ethereum blockchain

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •