The problem: Verifying zk-proofs in Ethereum Mainnet is expensive. Because Ethereum is congested most of the time, building zk-apps on Ethereum can be costly for the developers and users.
Our solution: The verification of zk-proofs could be executed in more scalable chains in order to reduce the cost in USD. A user can send their proof to the CCIP Router in Ethereum to a cheaper chain such as Avalanche.
Where is Chainlink used?:
ProofReceiverFuji.sol: https://github.com/egeaybars123/zk-ccip/blob/main/contracts/ProofReceiverFuji.sol#L201C26-L201C26
ProofSenderSepolia.sol: https://github.com/egeaybars123/zk-ccip/blob/main/contracts/ProofSenderSepolia.sol#L137
Project flow: The proof is sent in the calldata in an Ethereum transaction to the CCIP Router. When the proof is received on Avalanche, the proof and the input is verified on a zk-verifier contract deployed in Avalanche. When it's verified, the result is sent back to Ethereum (true or false). We found out that users can save around 0.5-0.6 USD per tx.
In the case where blockchains are more congested and Chainlink CCIP is used heavily, we are expecting the net positive to increase because most of the costs originated from node fees in our solution, and the node fees could decrease when they are generating more revenue.
Some links:
Tech Stack:
Github Repository: You can see the contract addresses here.