Etherless payments with Dai


Payments in stablecoin like Dai should be intuitive to common users. Abstracting away the need for a secondary Ether balance for gas greatly simplifies wallet management. Send your payments Dai-ly.

What it does

  1. Allows users to have a Dai-only account, and spend Dai by paying Dai fees instead of Ether.
  2. Allows Ether holders to be delegated to pay the gas fees in Ether, and get reimbursed in Dai.

How we built it

Working implementation of ERC865 for token holders to pay transfer transactions in tokens instead of gas, in one transaction.

Backend implementation to manage the delegated transactions off-chain, as well as matching transactions to the right delegates and submitting transactions on-chain.

Frontend wallet implementation for both Dai-only users and Ether gas paying delegates, hosted on IPFS.

How it works

  1. Dai user signs a transaction to send Dai
  2. A third party (delegate) pays for the transaction gas fees on behalf
  3. Dai is sent to the destination
  4. Third party gets reimbursed Dai from the same transaction that covers the gas fees + a bonus

Challenges Faced

  • ERC865 implementation code was outdated so we had to update it
  • ERC865 forces existing ERC20 tokens to upgrade their tokens. This prevents us from having complete working integrations with intended Dai and Kyber Swap APIs (CDPs and swaps)
  • Sender verification from ecrecover was very tedious without solidity (off-chain on client-side and server-side)
  • Bugs in various dependencies, such as web3, go-ethereum, ganache-cli (generates wrong transaction hash) and sponsor APIs

Use cases

  1. Onboarding new users to a paying with crypto with Dai
  2. A payments only Dai wallet without the need to refill Ether
  3. Allow users to passively convert Ether into Dai with a slight bonus
  4. With enough delegates, there chould be a delegate network to provide gas liquidity for ether-less accounts
  5. Allow service providers and merchants to pay gas on behalf (with or without fee) of consumers e.g ethereum as a ledger white-label for in-house payment apps with users holding custody of their wallets. No need to airdrop ether to massive number of accounts and manage the account for users (and to drain out inactive accounts).
Share this project: