ERC-667 was an early proposal to add transferAndCall functionality to ERC-20 tokens on Ethereum. It predates the similar and much more widely known ERC-677, and the two are frequently confused.
What it proposed#
Like ERC-677, ERC-667 aimed to solve the two-step approve + transferFrom pattern by combining a token transfer with a smart contract callback in a single transaction. The core idea was identical: call a function on the receiving contract immediately after transferring tokens, so the recipient can react atomically.
The proposed interface was essentially:
|
|
Why it didn’t take off#
ERC-667 never advanced beyond the discussion stage and has no notable token implementations. ERC-677 – proposed shortly after – covered the same ground and gained traction through Chainlink’s adoption for the LINK token. The later ERC-1363 standard further superseded both by adding approveAndCall and a safer magic-value callback pattern.
In practice, most references to “ERC-667” in documentation and forum posts are either:
- Mistaken references to ERC-677, or
- Historical citations of the original discussion thread.