A Meta Transaction Demo that give User full control of their Meta transaction processor choice using OpenGSN as demo, It also showcase a DAI-based paymaster using DAI-permit and uniswap v2.


This project show case the ability for any contract to support native meta transaction (that is meta transaction that support Externally Owned Accounts) without any hardcoded meta transaction processor. It show case this ability with OpenGSN. On top of that the demo also show case OpenGSN capability by implementing a DAI-based Paymaster that support DAI-permit functionality as approvalData (a mechanism provided by OpenGSN to allow relayer to pass extra info). It uses Unswap V2 to swap ETH for DAI and the reverse. This result in a "one meta-tx flow" for user owning DAI to interact with any GSN enabled contract without requiring ethers.

How it's made

Frontend is build using svelte+sapper with a rewrite of svelte-wallet that allow easy web3 wallet integration. It uses subgraph to cache the blockchain data For contract it uses buidler + buidler-deploy plugin For metatx it uses OpenGSN but use a different Receiver Base contract that support multiple Meta transaction processor at once. The approval is made by the users themselves so it is completely future proof and would support GSN v3 or any other new metatx development without requiring a central authority. The DAI based paymaster use DAI permit and GSN approvalData parameter and relies on uniswap v2 for swap eth<->DAI the app is deployed on sia skynet