Safe smart account module to allow anonymous payments through zkBob protocol
Our project brings together two powerful technologies, Safe and zkBob, to facilitate secure and anonymous payments and transfers within a smart account framework. By leveraging the strengths of both systems, this module provides users with a seamless and privacy-enhanced experience.
To interact with this module, users can employ our custom Safe App, which serves as a user-friendly interface. By enabling the module through the app, users gain access to its functionality, empowering them to initiate and complete token transfers in an anonymous manner using zkBob.
An example use case for the project could be a DAO paying its contributors without revealing the amount paid. Think of it as a privacy-preserving payroll system where each contributors can't know how much their peers have been paid. Another example could be about making anonymous donations from your smart account.
This project leverages the powerful tools @safe-global/protocol-kit and @safe-global/safe-apps-react-sdk to develop a custom Safe app tailored to the specific requirements of the anonymous transfer module. These libraries provide the necessary functionalities and utilities to seamlessly integrate the custom module with the Safe ecosystem.
To begin, the protocol-kit library is utilized to check whether the custom module, which incorporates zkBob for direct deposits, is already enabled within the Safe app. This step ensures that the module is properly set up before initiating any transactions. If the module is not yet enabled, the Safe React SDK comes into play.
The Safe React SDK, another essential component of this project, enables developers to interact with the Safe app and its associated modules. In this case, the SDK is utilized to perform two critical tasks: enabling the custom module and facilitating token transfers to a zkBob receiver address.
Once the module is enabled, the Safe React SDK facilitates the transfer of tokens to a zkBob receiver address. By leveraging the SDK's built-in functions and interfaces, the custom Safe app can securely initiate the transfer process.
The custom module, integrated with zkBob, plays a crucial role in ensuring the privacy and security of the token transfers. It is a custom Module (called Bob Module) built on Zodiac Module standard. It leverages zkBob's Direct Deposits Queue smart contracts to deposit tokens from the Safe account to the zkBob Direct Deposits Queue (aka ZK Bob pool), where they will later be withdrawn by the receiver.
Another crucial building block in our stack is for sure Uniswap V3, which we integrated into the custom Safe module to allow users sending any tokens to it and automatically swap them with $BOB which will be deposited right after the swap in the zkBob application. This is what allows us to accept $GHO, $APE, $USDC, and any other ERC20 as valid payment methods. Thanks to this integration a user only has to make a single transaction even if sending tokens different from $BOB ($USDC, $GHO, $APE) in order to make a private payment using ZK Bob Protocol.