Confidential payments for businesses and payslips using email and fiat(UPI)
zkPay allows user to send invoices directly to the receivers mail, then it can be paid either by replying to the mail simply with “Confirm” or the user can send the required amount to the relayer’s UPI ID. The relayer once receiving the payments, its IMAP/SMTP server listens for bank email for credits and generates zk proofs for the email and then submits onchain, once verified, the SP1 zkVM updates the sql db using Homomorphic encryption with the transactions and sets the updated balance, the computation proof is then verified and posted onchain. After this whole process the user can check their balances and withdraw back tokens into a different wallet, the user has to generate a proof that it has enough balance to proceed with the withdrawal and that proof is verified inside SP1 and after that onchain transaction is broadcasted for token transfer.
Throughout the whole process the users only interact with the relayer and hence neither party learns of the other’s emailid/upi id/wallet address, hence there is no onchain linkage and trace of the balance. This is possible due to the fact that relayer acts as the privacy pool and stores the liquidity.
Components
The end to end flow looks like