SKIP TO CONTENT
Ethereum StandardDRAFT

ERC-7410: ERC-20 Update Allowance By Spender

An ERC-20 extension that lets a spender reduce or revoke the token allowance an owner granted it, without waiting for the owner to submit the change on-chain.

Co-author, listed second among the draft's three authors.

What is it?

ERC-7410 adds one function: decreaseAllowanceBySpender(owner, subtractedValue). The caller is the spender. It can lower or revoke the amount that an owner previously allowed it to spend, without waiting for the owner to submit the change.

An owner gives an application permission to charge up to a limit. ERC-7410 lets the application voluntarily lower that limit or cancel its own permission. It cannot use this function to increase what the owner granted.

How it works

1

Owner grants an allowance

An ERC-20 owner authorizes a spender for a defined amount using the normal allowance mechanism.

2

Spender chooses to reduce it

The spender calls decreaseAllowanceBySpender with the owner's address and the amount to subtract.

3

Token updates the grant

The token reduces the caller's allowance. If the subtraction meets or exceeds the current value, including an infinite approval, the result is zero.

4

Change stays observable

The token emits an Approval event. Integrations can also detect the extension through its ERC-165 interface identifier.

Key concepts

decreaseAllowanceBySpender(owner, subtractedValue)

The spender calls this function and names the owner that granted its allowance. The function subtracts the requested value from the caller's current allowance.

Allowance nullification

If the requested reduction equals or exceeds the current allowance, the new allowance becomes zero. A call against an infinite allowance also sets it to zero.

Observable ERC-20 extension

A conforming implementation emits the ERC-20 Approval event and reports support for the IERC7410 interface identifier through ERC-165.

Use cases

Treasury allowances

Reduce a grant without waiting for a treasury or multisig workflow.

If a treasury or multisig granted a contract more allowance than it needs, the spender can lower or revoke its own grant while the owner completes its slower governance process.

Incident response

Let an integration discard its own spending permission.

A spender that no longer needs an allowance, or wants to limit exposure during an incident, can reduce it from the spender side. The owner still retains its normal ERC-20 controls.

Service offboarding

Cancel future pulls when a spender-side relationship ends.

A service acting as the spender can revoke its remaining allowance when an account closes, leaving the on-chain grant at zero even before the owner updates it.

Technical specification

The core interface that defines ERC-7410.

IERC7410.sol
// SPDX-License-Identifier: MIT
interface IERC7410 is IERC20 {
    // Called by the spender to reduce an allowance granted by owner.
    function decreaseAllowanceBySpender(
        address owner,
        uint256 subtractedValue
    ) external;
}

Frequently asked questions

What does ERC-7410 add?
It adds decreaseAllowanceBySpender(owner, subtractedValue). The spender calls it to reduce or revoke the allowance that the named owner granted to the caller.
Who can call the new function?
The spender calls it. The owner address is an argument so the token can locate the allowance from that owner to the caller. The function does not let a spender increase its grant.
Does ERC-7410 replace ERC-20?
No. It is an ERC-20 extension. The draft requires IERC7410 to extend IERC20 and requires ERC-165 support for the interface identifier 0x12860fba.
Does ERC-7410 eliminate the classic approve race condition?
No. Its scope is spender-side reduction and revocation. It does not add owner-side increaseAllowance or decreaseAllowance functions, and the draft does not claim to eliminate the classic ERC-20 approve race condition.