==== EIP 777: ERC-777 Token Standard ==== [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip| Return to Ethereum ERCs ]] : **Note**: The following is an excerpt from the official Ethereum site. It is provided here as a convenience and is not authoritative. Refer to the original document as the authoritative reference. | Title | Token Standard | | Author | Jacques Dafflon, Jordi Baylina, Thomas Shababi | | Status | Final | | Created | 2017-11-20 | | Description | [[http://eips.ethereum.org/EIPS/eip-777]] | | Specification | [[http://eips.ethereum.org/EIPS/eip-777#Specification]] | | Category | ERC | | Requires | [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:erc_1820|1820]] |
Data sheet for Token Standard
=== Abstract === //This standard defines a new way to interact with a token contract while remaining backward compatible with ERC20.// //It defines advanced features to interact with tokens. Namely, operators to send tokens on behalf of another address—contract or regular account—and send/receive hooks to offer token holders more control over their tokens.// //It takes advantage of [[dido:public:ra:xapend:xapend.b_stds:defact:ethereum:eip:erc_1820|ERC1820]] to find out whether and where to notify contracts and regular addresses when they receive tokens as well as to allow compatibility with already-deployed contracts.// === Motivation === //This standard tries to improve upon the widely used ERC20 token standard. The main advantages of this standard are:// * //Uses the same philosophy as [[dido:public:ra:xapend:xapend.a_glossary:e:ether|Ether]] in that [[dido:public:ra:xapend:xapend.a_glossary:t:tokens|tokens]] are sent with send(dest, value, data).// * //Both contracts and regular addresses can control and reject which token they send by registering a ''tokensToSend'' hook. (Rejection is done by ''revert''ing in the hook function.)// * //Both contracts and regular addresses can control and reject which token they receive by registering a ''tokensReceived'' hook. (Rejection is done by ''revert''ing in the hook function.)// * //The tokensReceived hook allows to send tokens to a contract and notify it in a single transaction, unlike ERC20 which requires a double call (''approve''/''transferFrom'') to achieve this.// * //The holder can “authorize” and “revoke” operators which can send tokens on their behalf. These operators are intended to be verified contracts such as an exchange, a cheque [[dido:public:ra:xapend:xapend.a_glossary:p:start|processor]] or an automatic charging system.// * //Every token transaction contains ''data'' and ''operatorData'' bytes fields to be used freely to pass data from the holder and the operator, respectively.// It is backward compatible with [[dido:public:ra:xapend:xapend.a_glossary:w:wallet|wallets]] that do not contain the ''tokensReceived'' hook function by deploying a proxy contract implementing the ''tokensReceived'' hook for the wallet.