Non-Fungible Tokens And Domains

Non-Fungible Tokens (NFTs)

Before understanding the Non-Fungible Tokens, let's consider a large number of stones on the beach. In the real world, every stone on the beach has different weight, appearance and rock type. There are no two identical stones, just like two leaves can not be found. Besides, you can't easily combine two stones together. Therefore, we say that every stone is "indivisible" and "not to be combined".

An example in block chain is the CryptoKitties, which was once a hot game in the block chain world. Each cat has unique numbers and attributes.

An NFT Token is similar to an individual of a kind of stone in the real world, or a block chain cat.They are natural different in the real world, and so are in our system.

On everiToken, NFT is mainly used for tickets, real estate, props, coupons, income rights, CryptoKitties and so on with unique numbered assets or interests, each NFT is unique. In everiToken, the issue, management and transfer of NFT follow the Authority Tree (see below) model. NFT is stored and calculated through our token-based model on everiToken chain. NFT is the most distinctive type of Token in everiToken system.

Domains

Generally speaking, NFT Token is divided into different categories according to their different value types. We can categorize the same kind of NFT Token to form a Domain.

Domain has three kinds of authorization: issue, transfer, manage:

issue means who has the authorization to issue token in this domain.

transfer means who has the authorization to transfer token in this domain.

manage means who has the authorization to manage this domain: change the authorization of the domain.

Domain which begin with a . is for specific use, as .fungible which is a special domain that manage fungible token.

Try NFTs via evtc

evtc is a command line tool to manage everiToken wallet and to send commands to the chain.

If you want to use our SDK for NFTs, please refer to Javascript SDK Reference.

You can also manage NFTs by calling HTTP API of everiToken directly (See API Reference for detail).

Create Domain

Create a domain named cookie:

    evtc domain create cookie EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr --payer EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr

Great! You just created a new domain named cookie! And EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr is cookie domian's issuer.

You will get the output like this:

    executed transaction: 301df994e24450afc16816c8c0f9c61e42aa15b36c46452f8358c37a14840777
    total elapsed: 9916 us
    total charge: 0.00000 S#1
    (1 of 1)
       action : newdomain
       domain : cookie
          key : .create
      elapsed : 9495 us
      details : 
    |->name : cookie
    |->creator : EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr
    |->issue : 
        |->name : issue
        |->threshold : 1
        |->authorizers : 
            |->ref : [A] EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr
            |->weight : 1
    |->transfer : 
        |->name : transfer
        |->threshold : 1
        |->authorizers : 
            |->ref : [G] .OWNER
            |->weight : 1
    |->manage : 
        |->name : manage
        |->threshold : 1
        |->authorizers : 
            |->ref : [A] EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr
            |->weight : 1

You can now query the domain you just created!

    evtc get domain cookie

This will get:

    |->name : cookie
    |->creator : EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr
    |->create_time : 2018-08-30T02:27:03
    |->issue : 
        |->name : issue
        |->threshold : 1
        |->authorizers : 
            |->ref : [A] EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr
            |->weight : 1
    |->transfer : 
        |->name : transfer
        |->threshold : 1
        |->authorizers : 
            |->ref : [G] .OWNER
            |->weight : 1
    |->manage : 
        |->name : manage
        |->threshold : 1
        |->authorizers : 
            |->ref : [A] EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr
            |->weight : 1
    |->metas : (empty)
    |->address : EVT0000005X5qdvvvnpfuMNm7CabbLb3P6L2HJpmjyRT6UTiW8hDZ

Issue token

Issue token t1 t2 t3 in domain cookie:

evtc token issue cookie EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr -n t1 t2 t3 --payer EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr

You will get the output like this:

    executed transaction: 3947c11af79c645faab204bc678927e2dd826996fafbc9ea5c3a984390
    total elapsed: 412 us
    total charge: 0.00000 S#1
    (1 of 1)
       action : issuetoken
       domain : cookie
          key : .issue
      elapsed : 235 us
      details : 
    |->domain : cookie
    |->names : 
          |->t1
          |->t2
          |->t3
    |->owner : 
          |->EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr

Then you could check the token:

    evtc get token cookie t1

Output:

    |->domain : cookie
    |->name : t1
    |->owner : 
          |->EVT7JoY9nbkfWCx2opvUhS9pPmWbLjRuhNCmDTG971PVkhxvAzWWr
    |->metas : (empty)