Skip to main content
Change page

ERC-777 Token Standard

Last edit: @nhsz(opens in a new tab), August 15, 2023

Warning

ERC-777 is difficult to implement properly, due to its susceptibility to different forms of attack(opens in a new tab). It is recommended to use ERC-20 instead. This page remains as a historical archive.

Introduction?

ERC-777 is a fungible token standard improving the existing ERC-20 standard.

Prerequisites

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

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(opens in a new tab) standard.

Why are hooks great?

  1. Hooks allow sending tokens to a contract and notifying the contract in a single transaction, unlike ERC-20(opens in a new tab), which requires a double call (approve/transferFrom) to achieve this.
  2. 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.
  3. Hooks can reject transactions.

Decimals

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.

Further Reading

EIP-777: Token Standard(opens in a new tab)

Was this article helpful?

Website last updated: June 19, 2024

Learn

  • Learn Hub
  • What is Ethereum?
  • What is ether (ETH)?
  • Ethereum wallets
  • What is Web3?
  • Smart contracts
  • Gas fees
  • Run a node
  • Ethereum security and scam prevention
  • Quiz Hub
  • Ethereum glossary
(opens in a new tab)(opens in a new tab)(opens in a new tab)
  • About us
  • Ethereum brand assets
  • Code of conduct
  • Jobs
  • Privacy policy
  • Terms of use
  • Cookie policy
  • Press Contact(opens in a new tab)