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.
- Ganache
npm install ganache --global
- Wails
go install github.com/wailsapp/wails/v2/cmd/wails@latest
- ProofChain-store
git clone https://github.com/Raaffs/ProofChain-Store.git
- Clone Repository
git clone https://github.com/Raaffs/ProofChain.git
- Set up Enviroment variables in
.envfilecd ProofChain PRIVATE_KEY=YOUR_PRIVATE_KEY - Set up config
cp .config.example.json .config.json
- Deploy Contract
go test -v ./test -run TestDeploy - Add contract address to .config.json
.config.json ... "services": { "STORAGE": "localhost:8754", "CONTRACT_ADDR": "CONTRACT_ADDR" , #edit this "RPC_PROVIDERS_URLS": { ...
- Go to the directory where you install ProofChain-Store
- 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 - Install dependencies
go mod download
- 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
Make sure you've ganache & storage service up and running
wails build./build/bin/ProofChain
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!
Suyash - suyashsaraf5@gmail.com
Thank You!