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.
ADAM'S ROLE
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.
SIMPLE ANALOGY
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
Owner grants an allowance
An ERC-20 owner authorizes a spender for a defined amount using the normal allowance mechanism.
Spender chooses to reduce it
The spender calls decreaseAllowanceBySpender with the owner's address and the amount to subtract.
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.
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.
Treasury allowances
Reduce a grant without waiting for a treasury or multisig workflow.
Incident response
Let an integration discard its own spending permission.
Incident response
Let an integration discard its own spending permission.
Service offboarding
Cancel future pulls when a spender-side relationship ends.
Service offboarding
Cancel future pulls when a spender-side relationship ends.
Technical specification
The core interface that defines ERC-7410.
// 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;
}