Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EIP-721 Non-Fungible Token Standard #841

Merged
merged 54 commits into from
Mar 9, 2018
Merged
Changes from 1 commit
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
31ed49e
EIP-721 Deed Standard
fulldecent Jan 24, 2018
4f71a02
Correct spelling errors and interface name, thanks @Beskhue
fulldecent Jan 24, 2018
29f88cc
Add "title" as considered alternative, thanks @TCOA
fulldecent Jan 24, 2018
e28b0ee
Undo time travel, thanks @pirapira
fulldecent Jan 24, 2018
2fd4768
"This is a" language, thanks @pirapira
fulldecent Jan 24, 2018
f3765be
At risk of making this more boring to read, remove flavor text, thank…
fulldecent Jan 24, 2018
001b67b
Clarify real estate transferrence fees, thank you @TCOA
fulldecent Jan 24, 2018
c39a9f5
Use "unusable", thanks @TCOA
fulldecent Jan 24, 2018
8636d7b
occurred
fulldecent Jan 24, 2018
f53cc2d
Clean up Accept wording
fulldecent Jan 27, 2018
6754461
Clarify invalid deeds and counting
fulldecent Jan 28, 2018
1ca7dfb
Fix signature, thanks @Beskhue
fulldecent Jan 28, 2018
c0e6345
Use interface keyword
fulldecent Jan 28, 2018
ea4ed40
Add deed name, rename return variables
fulldecent Feb 2, 2018
6149ecc
Update deed word choice explanation
fulldecent Feb 2, 2018
481e999
remove deedName
fulldecent Feb 14, 2018
2b32af6
fix markdown language
fulldecent Feb 14, 2018
7046c02
Add implementation, thank you Nastassia Sachs
fulldecent Feb 15, 2018
ddd2525
Provide illustration for scaling use case
fulldecent Feb 15, 2018
8743a22
Eat my words, add the transfer function
fulldecent Feb 16, 2018
2b4971e
Depend on 165
fulldecent Feb 16, 2018
f8fcf19
Switch to latest Solidity compiler
fulldecent Feb 16, 2018
dd3396a
Add note about id choice
fulldecent Feb 16, 2018
290f31c
Add note as 165 progresses through standardization
fulldecent Feb 16, 2018
d45177e
Add a second implementation
fulldecent Feb 16, 2018
992bbff
Add operators extension, a starting point
fulldecent Feb 16, 2018
1d613ba
Specify functions that cannot throw
fulldecent Feb 16, 2018
792bf05
Better address BC
fulldecent Feb 16, 2018
1a1295c
Harmonize this standard to results from the ETHDenver event
fulldecent Feb 19, 2018
e694c6d
Use strong SHALL NOT language, thank you @carloschida
fulldecent Feb 23, 2018
ab00c60
Update operator language
fulldecent Feb 23, 2018
21e0d24
Rename to assets
fulldecent Feb 23, 2018
29cf090
Correct typos in JSON schema
fulldecent Feb 23, 2018
868a208
Remove my name as interface author, that isn't helping anything
fulldecent Feb 23, 2018
39396a5
Fix typo
fulldecent Feb 23, 2018
3442342
ERC-165 is now accepted, add strong support for 820 extension of 165
fulldecent Feb 23, 2018
7857e7d
Merge branch 'patch-2' into reconsider-deed-name
fulldecent Feb 25, 2018
2a56e50
Allow to query the approved contracts
fulldecent Feb 26, 2018
74dadcc
Add transfer security, give everything else a once-over
fulldecent Feb 26, 2018
707cb55
Merge branch 'patch-2' into reconsider-deed-name
fulldecent Feb 26, 2018
223e46c
More draft wording changes
fulldecent Feb 26, 2018
7e83455
Link to mentioned Solidity bug
fulldecent Feb 26, 2018
1eeddf7
Merge pull request #2 from fulldecent/reconsider-deed-name
fulldecent Feb 27, 2018
e847ffe
Use a better magic value, clarify callback, thanks @abandeali1
fulldecent Feb 27, 2018
89d0162
Bytes, not bytes[], thanks @sz-piotr
fulldecent Feb 28, 2018
2bddd12
Update transfer naming and interface IDs
fulldecent Feb 28, 2018
e855ea6
Make getApproved constant view
fulldecent Mar 1, 2018
7304cca
Update eip-721.md
fulldecent Mar 1, 2018
bed6978
Correct reference name
fulldecent Mar 2, 2018
3d22a00
Update eip-721.md
fulldecent Mar 2, 2018
438c09e
Move all links to separate references section
fulldecent Mar 7, 2018
19a5f63
Correct whitespace
fulldecent Mar 7, 2018
39687dc
Cosmetic change, remove return name, thank you @nanolucas
fulldecent Mar 7, 2018
39067a2
Fix broken link
fulldecent Mar 8, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Correct whitespace
  • Loading branch information
fulldecent authored Mar 7, 2018
commit 19a5f63ea1ba31bd9d6bfd83b0088ab3fc89bfaa
6 changes: 3 additions & 3 deletions EIPS/eip-721.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Differences between this standard and EIP-20 are examined below.

## Specification

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

**Every ERC-721 compliant contract must implement the `ERC721` and `ERC165` interfaces** (subject to "caveats" below):

Expand All @@ -47,7 +47,7 @@ pragma solidity ^0.4.20;
/// @title ERC-721 Non-Fungible Token Standard
/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
/// Note: the ERC-165 identifier for this interface is 0x6466353c
interface ERC721 /* is ERC165 */ {
interface ERC721 /* is ERC165 */ {
/// @dev This emits when ownership of any NFT changes by any mechanism.
/// This event emits when NFTs are created (`from` == 0) and destroyed
/// (`to` == 0). Exception: during contract creation, any number of NFTs
Expand Down Expand Up @@ -287,7 +287,7 @@ The transfer and accept functions' documentation only specify conditions when th

- **Disallow transfers if the contract is paused** — prior art, CryptoKitties deployed contract, line 611
- **Blacklist certain address from receiving NFTs** — prior art, CryptoKitties deployed contract, lines 565, 566
- **Disallow unsafe transfers** — `transferFrom` throws unless `_to` equals `msg.sender` or `countOf(_to)` is non-zero or was non-zero previously (because such cases are safe)
- **Disallow unsafe transfers** — `transferFrom` throws unless `_to` equals `msg.sender` or `countOf(_to)` is non-zero or was non-zero previously (because such cases are safe)
- **Charge a fee to both parties of a transaction** — require payment when calling `approve` with a non-zero `_approved` if it was previously the zero address, refund payment if calling `approve` with the zero address if it was previously a non-zero address, require payment when calling any transfer function, require transfer parameter `_to` to equal `msg.sender`, require transfer parameter `_to` to be the approved address for the NFT
- **Read only NFT registry** — always throw from `unsafeTransfer`, `transferFrom`, `approve` and `setApprovalForAll`

Expand Down