Skip to content
Merged
Changes from 6 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
a7dffe7
Add Transient Approval Extension for ERC-20
byshape Apr 2, 2024
d7eefe8
Fixed EIP requirements
byshape Apr 2, 2024
3eacea2
Update ERCS/eip-draft-tae-erc20.md
byshape Apr 3, 2024
11e2cce
Renamed file and added link to the discussion
byshape Apr 3, 2024
85f7d71
Fixed description
byshape Apr 3, 2024
a0d173e
Updated authors
byshape Apr 3, 2024
87ac36d
Apply suggestions from code review
byshape Apr 4, 2024
5146bb9
Merge branch 'master' into transient-approve
byshape Apr 4, 2024
fba3948
Replaced transient => temporary
byshape Apr 4, 2024
c5e98c2
Refined the Specification, Rationale and Backwards Compatibility sect…
byshape Apr 4, 2024
17a2741
Generalise the temporary storage description
byshape Apr 6, 2024
d70eb46
update based on PR comments
Amxx Jun 6, 2024
fe09677
Update ERCS/erc-7674.md
Amxx Jun 10, 2024
9d5885a
Merge pull request #1 from Amxx/transient-approve
byshape Jun 10, 2024
3c10621
Update based on PR comments
byshape Jun 10, 2024
1ce1aae
fix erc/eip links
ZumZoom Jul 15, 2024
8a11a87
Merge branch 'master' into transient-approve
byshape Jul 15, 2024
722f023
Updated based on PR comments
byshape Jul 15, 2024
51b7148
Update erc-7674.md: fix eip links
SamWilsn Aug 8, 2024
b7978f8
Update erc-7674.md
SamWilsn Aug 8, 2024
b3456ce
Merge branch 'transient-approve' into transient-approve-wip
byshape Jan 12, 2025
6171b37
Merge pull request #2 from byshape/transient-approve-wip
byshape Jan 12, 2025
2ec28b5
Merge branch 'master' into transient-approve
byshape Jan 12, 2025
7dd0208
Update erc-7674.md
SamWilsn Mar 6, 2025
31079e6
Update erc-7674.md
SamWilsn Mar 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions ERCS/erc-7674.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
eip: 7674
title: Transient Approval Extension for ERC-20
description: An interface for ERC-20 approvals via transient storage
author: Xenia Shape (@byshape), Mikhail Melnik (@ZumZoom), Hadrien Croubois (@Amxx)
discussions-to: https://ethereum-magicians.org/t/add-erc-7674-transient-approval-extension-for-erc-20/19521
status: Draft
type: Standards Track
category: ERC
created: 2024-04-02
requires: 20, 1153
---

## Abstract

This specification defines the minimum interface required to transiently approve `ERC-20` tokens for spending within a single transaction.

## Motivation

`EIP-1153` allows to use a cheaper way to transiently store allowances.

## Specification

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

Compliant contracts MUST implement 1 new function in addition to `ERC-20`:
```solidity
function transientApprove(address spender, uint256 value) public returns (bool success)
```
Call to `transientApprove(spender, value)` allows `spender` to withdraw within the same transaction from `msg.sender` multiple times, up to the `value` amount.

Compliant contracts MUST use the transient storage `EIP-1153` to keep the temporary allowance. For each `owner` and `spender`, the slot MUST be uniquely selected to avoid slot collision. Each slot index SHOULD be derived from the base slot index for transient allowances, `owner` and `spender` addresses. Slot MAY be derived as `keccak256(spender . keccak256(owner . p))` where `.` is concatenation and `p` is `keccak256` from the string uniquely defining transient allowances in the namespace of the implementing contract.

Compliant contracts MUST add a transient allowance check to the `transferFrom` function. The permanent allowance can only be spent after the temporary allowance has been exhausted.

Compliant contracts MUST add a transient allowance to the permanent one when returning the allowed amount to spend in the `allowance` function.

## Rationale

The main goal of this standard is to make it cheaper to approve `ERC-20` tokens for a single transaction with minimal interface extension to allow easier integration of a compliant contract into existing infrastructure. This affects the backward compatibility of the `allowance` and `transferFrom` functions.

## Backwards Compatibility

All functionality of the `ERC-20` standard is backward compatible except for the `allowance` and `transferFrom` functions.

## Reference Implementation

TBD

## Security Considerations

The method of deriving slot identifiers to store temporary allowances must avoid collision with other transient storage slots.

## Copyright

Copyright and related rights waived via [CC0](../LICENSE.md).