Skip to content

Tutorial: Letting your gasless users hold tokens and call contractsΒ #17614

@qbzzt

Description

@qbzzt

Tutorial title

Letting your gasless users hold tokens and call contracts

Tutorial description

A previous article (#17575) discussed using gasless access to your own application using EIP-712 signatures. However, this only works for direct access to your own smart contracts. Using account abstraction, we can create smart contract wallets that accept two types of transactions, and relay them to a requested destination:

  1. Transactions sent by a specific EOA (which require ETH)
  2. Transactions sent from anywhere, but signed by the same EOA.

This way, we can provide a gasless way for an account to hold assets (tokens, etc.) and perform all the functions an EOA with gas can.

Tutorial tags

gasless, account abstraction

Skill level

Intermediate

Hosted on ethereum.org or hosted elsewhere?

Hosted on ethereum.org

For tutorials to be hosted on Ethereum.org: Tutorial Content

  1. Introduction: Why is this useful
    1.1. Why certain requests cannot be relayed natively (a.k.a. why do we check msg.sender rather than tx.origin.
  2. The sample application
  3. How it works
    3.1. The wallet smart contract
    3.2. The relayer
    3.3. The user interface
  4. Improvements
    4.1. Making transactions less opaque at signing time.
    4.2. Supporting other signature types ERC-1271
    4.3. Decentralized relay pool. ERC-4337
    4.4. Assets owned by the EOA itself, ERC-7702
  5. Conclusion: When is this enough? When isn't it?

For tutorials hosted elsewhere: URL to tutorial

No response

Would you like to work on this issue?

  • Yes
  • No

Metadata

Metadata

Assignees

No one assigned

    Labels

    content πŸ–‹οΈThis involves copy additions or editsfeature ✨This is enhancing something existing or creating something newneeds triage πŸ“₯This issue needs triaged before being worked on

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions