Paymaster that enables fully private withdrawals from mixers and roll-ups
When withdrawing from mixers such as Tornado Cash or privacy-preserving rollups, privacy is best protected when the funds are withdrawn to a completely fresh address, with no previous transaction history. This is however difficult to achieve as the fresh address does not have any ETH to pay gas fee, where they often need to rely on a relayer and still leak privacy.
To tackle this problem, we leverage the ERC4337 standard to build a paymaster module. Users are able to generate a zero knowledge proof that allows withdrawal from the mixer, encode this proof in the data passed to the paymaster. The paymaster validate that the withdrawal is valid, and execute the withdrawal for the user, paying the corresponding gas fee and deploying a new smart account where the funds will be received.
We built a privacy-preserving paymaster that helps to create funded new smart accounts. We override the paymaster validation logic from contracts inherited from eth-infinitism, where we parse the zero knowledge proof submitted by the user and execute the withdrawal on behalf of the user. We also use the trampoline browser extension to create the UserOp that is sent to the bundler. We modified the paymaster data parsing on trampoline.
On the funds withdrawal workflow, we use open-source tornado cash implementation to handle the deposit and withdrawal proof generation.
We deployed the contracts to Goerli, Polygon Mumbai, Optimism Goerli, Gnosis chain, Linea, Mantle testnet and Scroll testnet.