Nhảy đến nội dung chính

Giúp dịch trang này

🌏

Bạn đang xem trang này bằng tiếng Anh vì chúng tôi chưa dịch trang này. Hãy giúp chúng tôi dịch nội dung này.

Dịch trang

Không có con bọ nào ở đây!🐛

Trang này chưa được dịch. Hiện chúng tôi chủ đích cung cấp trang này bằng Tiếng Anh.

ERC-777 Token Standard

Lần chỉnh sửa gần nhất: , Invalid DateTime
Trang chỉnh sửa
(opens in a new tab)

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)

Bài viết này hữu ích không?