ERC-777 Token Standard
ERC-777 is difficult to implement properly, due to its susceptibility to different forms of attack. It is recommended to use ERC-20 instead. This page remains as a historical archive.
ERC-777 is a fungible token standard improving the existing ERC-20 standard.
To better understand this page, we recommend you first read about ERC-20.
What improvements does ERC-777 propose over ERC-20?
The ERC-777 provides the following improvements over ERC-20.
Hooks are a function described in the code of a smart contract. Hooks get called when tokens are sent or received through the contract. This allows a smart contract to react to incoming or outgoing tokens.
The hooks are registered and discovered using the ERC-1820 standard.
Why are hooks great?
- Hooks allow sending tokens to a contract and notifying the contract in a single transaction, unlike ERC-20, which requires a double call (
transferFrom) to achieve this.
- Contracts that have not registered hooks are incompatible with ERC-777. The sending contract will abort the transaction when the receiving contract has not registered a hook. This prevents accidental transfers to non-ERC-777 smart contracts.
- Hooks can reject transactions.
The standard also solves the confusion around
decimals caused in ERC-20. This clarity improves the developer experience.
Backwards compatibility with ERC-20
ERC-777 contracts can be interacted with as if they were ERC-20 contracts.