ERC-7204: Contract wallet management token

Focuses on fungible token management within smart contract wallets, offering enhanced transaction flexibility and security


Metadata
Status: DraftStandards Track: ERCCreated: 2023-06-21
Authors
Xiang (@wenzhenxiang), Ben77 (@ben2077), Mingshi S. (@newnewsms)
Requires

Abstract


This proposal introduces a smart contract wallet-based approach for managing tokens, focusing on utilizing the programmable features of smart contract wallets for asset management. Additionally, it introduces functions such as tokenTransfer, tokenApprove, tokenApproveForAll, tokenIsApproveForAll and tokenAllowance, which provide enhanced control over token transactions. This approach seeks to enhance token management by utilizing the built-in features of smart contract wallets, thus offering a more adaptable, secure, and efficient method for managing token transactions.

Motivation


An externally-owned account (EOA) wallet has no state and code storage, while the smart contract wallet does.

Account abstraction (AA) is a direction of the smart contract wallet, which works around abstract accounts. This ERC can also be an extension based on ERC-4337 or as a plug-in for wallets.

The smart contract wallet allows the user's own account to have state and code, bringing programmability to the wallet. We think there are more directions to expand. For example, token asset management, functional expansion of token transactions, etc.

The smart contract wallet interface of this ERC is for asset management and asset approval. It supports the simpletoken ERC-X, and ERC-20 is backward compatible with ERC-X, so it can be compatible with the management of all fungible tokens in the existing market.

The proposal aims to achieve the following goals:

  1. Assets are allocated and managed by the wallet itself, such as approve and allowance, which are configured by the user’s contract wallet, rather than controlled by the token asset contract, to avoid some existing ERC-20 contract risks.
  2. Add the tokenTransfer function, the transaction initiated by the non-smart wallet itself or will verify the allowance amount.
  3. Add tokenApprove, tokenAllowance, tokenApproveForAll, tokenIsApproveForAll functions. The user wallet itself supports approve and provides approve. for single token assets and all token assets.
  4. user wallet can choose batch approve and batch transfer.
  5. Users can choose to add hook function before and after their tokenTransfer to increase the user's more playability.
  6. The user can choose to implement the tokenReceive function.

Specification


The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174.

** Compliant contract must implement the ERC-165 interfaces**


Rationale


the key technical decisions in this proposal are:

Improved Approve Mechanism

  • Current vs. Proposed: In the existing ERC-20 system, an externally-owned account (EOA) directly interacts with token contracts to approve. The new tokenApprove and tokenApproveForAll functions in this proposed enable more precise control over token usage within a wallet contract, a significant improvement over the traditional method.
  • Enhanced Security: This mechanism mitigates risks like token over-approval by shifting approval control to the user's smart contract wallet.
  • Programmability: Users gain the ability to set advanced approval strategies, such as conditional or time-limited approvals, the tokenApproveForAll function specifically allows for a universal setting all tokens. these were not possible with traditional ERC-20 tokens.

Optimized Transfer Process

  • Efficiency and Security: The tokenTransfer function streamlines the token transfer process, making transactions both more efficient and secure.
  • Flexibility: Allows the integration of custom logic (hooks) before and after transfers, enabling additional security checks or specific actions tailored to the user’s needs.

Support for Batch Operations

  • Increased Efficiency: Users can simultaneously handle multiple approve or transfer operations, significantly boosting transaction efficiency.
  • Enhanced User Experience: Simplifies the management of numerous assets, improving the overall experience for users with large portfolios.

Backwards Compatibility


This ERC can be used as an extension of ERC-4337 and is backward compatible with ERC-4337.

Security Considerations


No security considerations were found.

Copyright


Copyright and related rights waived via CC0.