From 429eb45d53f593c07a43f59d6f905692001b9170 Mon Sep 17 00:00:00 2001 From: Jacques Dafflon Date: Tue, 9 Apr 2019 22:50:48 +0200 Subject: [PATCH] Automatically merged updates to draft EIP(s) 777 Hi, I'm a bot! This change was automatically merged because: - It only modifies existing Draft or Last Call EIP(s) - The PR was approved or written by at least one author of each modified EIP - The build is passing --- EIPS/eip-777.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/EIPS/eip-777.md b/EIPS/eip-777.md index 7f77b041..905e7576 100644 --- a/EIPS/eip-777.md +++ b/EIPS/eip-777.md @@ -27,7 +27,7 @@ when they receive tokens as well as to allow compatibility with already-deployed ## Motivation -This standard tries to improve the widely used [ERC20] token standard. +This standard tries to improve upon the widely used [ERC20] token standard. The main advantages of this standard are: 1. Uses the same philosophy as Ether in that tokens are sent with `send(dest, value, data)`. @@ -41,7 +41,7 @@ The main advantages of this standard are: (Rejection is done by `revert`ing in the hook function.) 4. The `tokensReceived` hook allows to send tokens to a contract and notify it in a single transaction, - unlike [ERC20] which require a double call (`approve`/`transferFrom`) to achieve this. + unlike [ERC20] which requires a double call (`approve`/`transferFrom`) to achieve this. 5. The holder can "authorize" and "revoke" operators which can send tokens on their behalf. These operators are intended to be verified contracts @@ -205,7 +205,7 @@ The following rules MUST be applied regarding the *granularity*: - The *granularity* value MUST be greater or equal to `1`. -- Any amount of tokens (in the internal denomination) minted, sent or burnt +- Any amount of tokens (in the internal denomination) minted, sent or burned MUST be a multiple of the *granularity* value. - Any operation that would result in a balance that's not a multiple of the *granularity* value @@ -823,7 +823,9 @@ If the *recipient* is a contract, which has not registered an `ERC777TokensRecip then the token contract: - MUST `revert` if the `tokensReceived` hook is called from a mint or send call. -- SHOULD accept if the `tokensReceived` hook is called from an ERC20 `transfer` or `transferFrom` call. + +- SHOULD continue processing the transaction + if the `tokensReceived` hook is called from an ERC20 `transfer` or `transferFrom` call. *NOTE*: A regular address MAY register a different address—the address of a contract—implementing the interface on its behalf. @@ -987,8 +989,8 @@ when sending, minting and transferring token via [ERC777] and [ERC20]: ERC777TokensRecipient
not registered regular address - SHOULD accept - SHOULD accept + continue + continue contract