CuriSapphire empowers user privacy by leveraging the Sapphire paratime and ZKPs. Enhanced privacy and tokenized data allow us to help create the first-ever responsible data economy.
Select your role, enter your details and experience a smooth and gasless onboarding process.
Gasless transactions are implemented throught a Gasless Proxy Contract (Proxy.sol) which implements an on-chain signer.
User details, labs reports and prescriptions are going to be available in the dashboard section. You will be asked to make a signature to verify that you are indeed who you claim to be for data retrieval from the chain. This signature will be kept in the Context API for reuse until the next re-render.
In some cases, the doctor might need to see your (patient's) medical history for prescribing medications. But, sharing something like your medical history can seem like giving away a lot of private information. So, is there any way you could prove some statements to your doctor so that they may take well informed decisions and you do not have to compromise your privacy? Yes, the answer is Zero Knowledge Proofs (ZKPs). You can generate ZKPs to verify some of the doctor's requests while maintaining confidentiality. ZK proofs are implemented using the snarkjs library and circom circuits.
After generating proofs, you can share your latest lab report data with your doctor through data tokenization, implemented by the Tokenization.sol smart contract. A token will be issued by you to your doctor, and will have limited time validity after which it becomes in-accessible.
Sharing details such as prescription issue date, issuer of prescription, etc. can compromise patient privacy. Instead, you can generate ZKPs to prove that your issued prescription is still valid without revealing the exact dates of issue.
After verifying the generated proofs, your medicine and dosage details will be tokenized on your confirmation and shared with the pharmacy for medication orders. The tokenized data will be accessible for a limited amount of time.
As not all medicines require a prescription, we have used an AI model to decode your intent and extract information from it to place medication orders.
Tokenized data opens use-cases where data providers can benefit financially from their data contribution.
People like researchers, are in the need of medical data for their research purposes and medical analysis. They can provide financial incentives to the data providers in exchange of their data for a fixed amount of time. The data provider can stake their data for this time and earn stake rewards.
The data provider can check if they meet the researcher's prime requirements by generating and verifying ZKPs and not having to reveal their data just for verification. After successful verification of the proofs, the data provider can stake their data for the given amount of time and accepting the stake reward proposed by the researcher.
That's all for now, folks!
- Clone this repo
- Go to directory "frontend" and execute "npm install --force"
- Run the node.js server in the "ZKP" directory through "node index.js"
- Execute "npm start" in the frontend directory, connect your wallet and that's it!