QuestWallet is a smart contract wallet (ERC4337) that provides gasless transactions in exchange for completing a quest. A quest can be completing a quiz, watching a short video, reading a blog article, retweeting an article… Quests and gas are provided by sponsors.
QuestWallet has 2 main stakeholders, Users and Quest Sponsors
Users: Quest wallet provides users with a smart contract wallet (ERC-4337) with gasless transactions. This is a major UX improvement that can help onboard the next billion Ethereum users. To enjoy gasless transactions users need to perform a small quest before signing their transaction. A quest can be completing a quiz, watching a short video, reading a blog article, retweeting an article. Quest content is provided by Quest Sponsors.
Quest Sponsors: For the sponsors Quest Wallet is a marketing channel. The Quest sponsors are the one paying for the user gas. In return they advertise their products, new features; or promote blog articles. And what a better way to advertise than through an interactive quest?
How does it work? For the User: 1- First the user deploys his smart contract account (ERC4337), this deployment is sponsored by our Quest sponsors. To deploy the smart contract Wallet we use the Safe Core SDK. 2- The User now tries to send a transaction (UserOp). At the moment of signing he is prompted with a Quest. 3- User completes the Quest and gets a proof of that completion 4- User sends his transaction (UserOp) along with the proof of quest completion to the relay. 5- This transaction (UserOp) is picked up by an executor and executed on the Blockchain. During the execution of the transaction the Paymaster contract is called and this one verifies the quest proof and pays the executor.
For the Sponsor: 1- The sponsor submits a Quest to the QuestWallet app along with funds to sponsor a certain amount of transactions. 2- QuestWallet deploys a paymaster contract for the sponsor. This paymaster contract will hold the funds of the sponsor. 3- This paymaster contract will serve to reimburse the executors when they execute the users transaction.
Since it is an EVM compatible we deployed and tested our contracts on: Ethereum Goerli: 0x95F9d3A39E38d8109F9fd6EEc63245d86649f1Ad Gnosis Chiado: 0x95F9d3A39E38d8109F9fd6EEc63245d86649f1Ad Polygon Mumbai: 0x95F9d3A39E38d8109F9fd6EEc63245d86649f1Ad Optimism Goerli: 0x36f3BCca501b5a57f9A97f8fa9577494090C9B0F Scroll Alpha testnet: 0xF89d436b5b7EdE16DaEaaa5481dB6c793c839546
-QuestWallet is a fork of eth-infinitism/trampoline, a public open source MIT-licensed repo written in TypeScript. Trampoline is a boilerplate codebase for a Wallet Chrome Extension.
-To deploy our smart contract accounts we used the Safe Core SDK. -To make gasless transactions possible we have 2 solutions: 1- Gelato 1Balance relay + safe Core Relay Kit 2- Custom Paymaster contract coupled with voltair relay
Since it is an EVM compatible we deployed and tested our contracts on: Ethereum Goerli: 0x95F9d3A39E38d8109F9fd6EEc63245d86649f1Ad Gnosis Chiado: 0x95F9d3A39E38d8109F9fd6EEc63245d86649f1Ad Polygon Mumbai: 0x95F9d3A39E38d8109F9fd6EEc63245d86649f1Ad Optimism Goerli: 0x36f3BCca501b5a57f9A97f8fa9577494090C9B0F Scroll Alpha testnet: 0xF89d436b5b7EdE16DaEaaa5481dB6c793c839546
We're grateful for all the support provided by Dror Tirosh (Ethereum Foundation - Acc. Abstraction & overall guidance), Raza Zaidi (Scroll), Tomiwa & German (Safe Wallet and idea to use Gelato as a relayer), Carlo Fragni (Cartesi - even though we ended up not using the Cartesi VM).