Skip to content

Commit

Permalink
#86dtu93ty - Include how to write nft contracts (NEP-11) to the docum…
Browse files Browse the repository at this point in the history
…entation
  • Loading branch information
jplippi committed Jun 19, 2024
1 parent 26ea444 commit 95f470e
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions docs/source/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,32 @@ And must also implement and trigger a `Transfer` event whenever tokens are trans
Here's a [simple example](https://github.com/CityOfZion/neo3-boa/blob/development/boa3_test/examples/simple_nep17.py) of a Token contract following the NEP-17 standard.
>Note: The NEP-17 standard also has requirements on how each method must be implemented. Be sure to check the [full documentation](https://docs.neo.org/docs/en-us/develop/write/nep17.html) on the NEP-17 standard to ensure the implementation is correct.
### How to make a Non-Fungible (NFT) Token smart contract
Just like the fungible token, for a contract to be a non-fungible token (NFT) in the Neo blockchain, it needs to adhere to the [NEP-11](https://docs.neo.org/docs/en-us/develop/write/nep11.html) standard by implementing a few methods and events:
- `symbol` - Returns the symbol of the token.
- `decimals` - Returns the number of decimals used by the token.
- `totalSupply` - Returns the total supply of the token.
- `tokensOf` = Returns the IDs of all NFTs owned by the specified account.

In addition, an NFT contract may be either *non-divisible* or *divisible*.

For **non-divisible** NFT contracts, the following method is also required:
- `balanceOf` - Returns the total amount of NFTs of the specified account.
- `transfer` - Transfers tokens to a specified account.
- `ownerOf` - Returns the address of the owner of a specified NFT ID.

For **divisible** NFT contracts, the following methods are also required:
- `balanceOf` - Returns the amount of NFTs of the specified NFT ID for the specified account.
- `transfer` - Transfers tokens to from a specified account to another.
- `ownerOf` - Returns the addresses of all co-owners of a specified NFT ID.

In both cases, the contract must also implement and trigger a `Transfer` event whenever tokens are transferred.

>Note: Although many methods and events have the same name as the NEP-17 standard, their implementation and parameters may differ.
Here's a [full example](https://github.com/CityOfZion/neo3-boa/blob/development/boa3_test/examples/nep11_non_divisible.py) of a non-divisible token contract following the NEP-11 standard.
>Note: The example above is rather complete and contains more than just the basic implementation of a NEP-11 contract. Once again, be sure to check the [full documentation](https://docs.neo.org/docs/en-us/develop/write/nep11.html) on the NEP-11 standard to ensure the implementation is correct.
## Compiling your Smart Contract

### Using CLI
Expand Down

0 comments on commit 95f470e

Please sign in to comment.