Matmo
  • Ⓜ️Matmo
  • πŸš€Mainnet
  • πŸͺ™Token
  • πŸ›‘οΈAudit
  • 🎁Presale
    • πŸ’°Wallet and Buy
    • πŸ“ˆToken price
    • πŸ’ΈBonuses and Discounts
    • πŸ‘«Referral program
    • πŸ€VCS & Angel Investors
  • 🎦Marketing
  • πŸ”’Economics
  • πŸ“»RoadMap
  • πŸ“šDOCS
    • πŸ•ΈοΈWeb3
    • πŸ“’Concepts
    • ↗️Account
    • βš’οΈBlocks
    • πŸ”€Transactions
    • ♨️Gas and Transaction Fees
    • βš–οΈStaking
    • πŸ‘ΊNFT
    • 🏦Swap
    • πŸ•Governance
    • πŸŒ‰Bridging assets
    • πŸ•ŽRun a Validator
      • πŸ“³Run a Fullnode
    • ⛓️API
    • πŸ“€SDK
    • πŸ‘ΎValidator
  • πŸ«‚Team
  • πŸ‘«Community
    • Twitter
    • Telegram Channel
    • Telegram group I
    • Telegram group II
    • Telegram group III
    • Medium
Powered by GitBook
On this page
  • Non Fungible Tokens
  • Transferring an NFT​
  • Mint NFT
  1. DOCS

NFT

PreviousStakingNextSwap

Last updated 10 months ago

Non Fungible

NFT is not stored in the user's wallet, instead, each NFT exists in the NFT contract and is unique.

The role of the NFT contract is to keep accounts, that is, it is responsible for processing the creation, storage and transfer of . This makes NFTs ideal for representing ownership of an asset, such as a piece of digital content or event tickets.

Transferring an NFT

Transferring an NFT can happen in two scenarios: (1) you ask to transfer an NFT, and (2) an authorized account asks to transfer the NFT.

// code transferring nft_
mam call nft_transfer '
{"receiver_id": "", "token_id": ""}'
accountId --depositYocto 1

Track real-time events (such as money transfers) by implementing the NFT event standard. Events are simple to use because they are just login messages formatted in a standardized way. Since these records are on-chain data, this is public information.

Mint NFTs with the matmo

Mint NFT

This #SDK provides a directory.

This tutorial covers the simple-nft example.

Clone the -core repository.

  1. You call nft_transfer_call in the NFT-contract passing: the receiver, a message, and the token-id of .

  2. The NFT contract transfers the NFT to the receiver.

  3. The NFT contract calls receiver.nft_on_transfer(sender, token-owner, token-id, msg).

  4. The NFT contract handles errors in the nft_resolve_transfer callback.

  5. The NFT contract returns true if it succeeded.

The following is the access code, buried when casting NFT

// code//
=== Addresses 
=== Alice: 0xeef95e86c160fa10a71675c6075f44f8f2c6125f57b4b589424f1fbee385f754 Bob: 0x4dcd7b180c123fdb989d10f71fba6c978bda268c2e3660c169bdb55f67aab776
=== Initial Coin Balances 
=== Alice: 100000000 Bob: 100000000
=== Creating Collection and Token
 === Alice's collection: {
 "description": "Alice's simple collection", 
"maximum": "18446744073709551615", 
"mutability_config": { "description": false, "maximum":
 false, "uri": false },
 "name": "Alice's", 
"supply": "1", 
"uri": "https://alice.com" } 
Alice's token balance: 1 Alice's 
token data: { "default_properties": { "map": { "data": [] } }, 
"description": "Alice's simple token", 
"largest_property_version": "0",
 "maximum": "18446744073709551615",
 "mutability_config": { "description": false, 
"maximum": false, "properties": false, "royalty": false, "uri": false },
 "name": "Alice's first token",
 "royalty": { "payee_address": "0xeef95e86c160fa10a71675c6075f44f8f2c6125f57b4b589424f1fbee385f754", 
"royalty_points_denominator": "0", "royalty_points_numerator": "0" }, 
"supply": "1", 
"uri": "https://matmos.dev/img/nyan.jpeg" }
=== Transferring the token to Bob 
=== Alice's token balance: 0 Bob's token balance: 1
=== Transferring the token back to Alice using MultiAgent === Alice's token balance: 1 Bob's token balance: 0
const client = new matmosClient(NODE_URL); 
const faucetClient = new FaucetClient(NODE_URL, FAUCET_URL);
//

The sender may first ask the receiver to acknowledge pending transfers off-chain.

This comes in the form of a multi-agent transaction request.

A multi-agent transaction contains multiple signatures, and each signature corresponds to an account on the chain.

From the workflow above it follows that the receiver we want to call needs to implement the nft_on_transfer method. When executed, such method will know:

  • Who is sending the NFT, since it is a parameter

  • Who is the current owner, since it is a parameter

  • Which NFT was transferred, since it is a parameter.

  • If there are any parameters encoded as a message

The nft_on_transfer must return true if the NFT has to be returned to the sender.

How Does it Work?

Assume you want to attach an to a call on the receiver contract. The workflow is as follows:

The nft_on_transfer method

πŸ“š
πŸ‘Ί
Tokens
NFT
​
SDKs
matmo
​
NFT
​