What is ERC-777?
The fungible-token hook standard that exposed how hard receiver callbacks are to retrofit.
ERC-777 is what happens when the ecosystem recognizes that ERC-20 transfer is too silent. The standard gives senders and recipients hooks, and gives token holders operator controls.
on this page
The standard, in one card.
- Standard
- ERC-777 / EIP-777
- Core additions
- tokensToSend · tokensReceived · operators
- Discovery
- ERC-1820 registry
- Canonical spec
- eips.ethereum.org / EIP-777
The origin story.#
The standard was proposed after ERC-20's receiver and approval problems were already visible. It aimed to make fungible tokens more expressive without throwing away the balance model developers understood.
What ERC-777 actually is.#
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function granularity() external view returns (uint256);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function send(address recipient, uint256 amount, bytes calldata data) external;
function burn(uint256 amount, bytes calldata data) external;
function isOperatorFor(address operator, address tokenHolder) external view returns (bool);
function authorizeOperator(address operator) external;
function revokeOperator(address operator) external;
function operatorSend(address sender, address recipient, uint256 amount, bytes calldata data, bytes calldata operatorData) external;
function operatorBurn(address account, uint256 amount, bytes calldata data, bytes calldata operatorData) external;
send · burn · authorizeOperator · revokeOperator operatorSend · operatorBurn tokensToSend · tokensReceived ERC-777 adds send, burn, operatorSend, and operatorBurn. Hooks are discovered through ERC-1820 so sender and receiver contracts can react to movement.
What's broken about ERC-777.#
The same hook that lets a receiver react also runs external code during token movement. That made ERC-777 harder to compose safely with DeFi contracts that were written around ERC-20's no-callback assumption.
-
Hooks create reentrancy risk.#
Calling sender and recipient hooks during token movement gives contracts useful context, but it also lets external code run in the middle of transfer flow. Integrators have to design for reentrancy.
ERC-777tokensReceived hookLSP1universalReceiverworkarounds tried- checks-effects-interactions
- reentrancy guards
- ERC-20 wrappers
- hook allowlists
-
ERC-1820 became another dependency.#
ERC-777 uses the ERC-1820 registry for interface implementers. That gives dynamic discovery, but it is another global dependency that token integrators must understand.
ERC-777ERC1820Registry lookupLSPsERC-165 + ERC-725Yworkarounds tried- registry checks
- fallback ERC-20 paths
- custom adapters
-
ERC-20 network effects were stronger.#
Most DeFi integrations standardized on ERC-20. A richer token interface had to either masquerade as ERC-20 or ask the ecosystem to integrate another surface.
ERC-777richer fungible tokenLSP7new ecosystem surfaceworkarounds tried- ERC-20 compatibility
- adapter contracts
- wrapped tokens
LUKSO designed it differently.#
LSP7 carries forward the receiver-aware idea while pairing it with LSP1, LSP4, and LSP6. The point is not a hook alone; it is the whole account and asset system around the hook.
- LSP7 Digital Asset Fungible tokens with transfer data, force semantics, operators, metadata, and LSP1 receiver notifications.
- LSP1 Universal Receiver One receiver hook for many asset and account events instead of token-specific hook interfaces.
- LSP6 Key Manager Scopes which controllers may call asset functions.
ERC-777 vs LSP7+LSP1 in one table.#
| row | ERC-777 | LSP7 plus LSP1 |
|---|---|---|
| fungible balance | yes | yes |
| receiver notification | tokensReceived via ERC-1820 | LSP1 universalReceiver |
| operator model | authorizeOperator / revokeOperator | operators plus LSP6 account permissions |
| metadata | limited token fields | LSP4 typed metadata |
FAQ.#
-
Is ERC-777 compatible with ERC-20? #
ERC-777 was designed with ERC-20 compatibility in mind, but its hook behavior and ERC-1820 dependency make integrations different from plain ERC-20.
-
Why did ERC-777 adoption stay limited? #
ERC-20 network effects were strong, and receiver hooks introduced reentrancy concerns that many DeFi protocols preferred to avoid.
-
What is the LUKSO alternative to ERC-777? #
LSP7 covers fungible assets, LSP1 handles receiver notifications, LSP4 handles metadata, and LSP6 handles account-level permissions.