【第2課】如何在Tezos鏈上發(fā)布ERC721 NFT資產(chǎn)

InCore.jpg

1. 摘要

Tezos鏈?zhǔn)且粭l比較小眾的公鏈,國內(nèi)的技術(shù)人員相對比較少。本文作為該公鏈的第一批中國開發(fā)者,以圖文并茂的形式介紹如何在Tezos鏈上發(fā)布ERC721資產(chǎn)。

2. 內(nèi)容

8.4.1 修改配置參數(shù)

Moz-Token_FA2.py:

def environment_config():
 ...
 non_fungible = global_parameter("non_fungible", True),

8.4.2 部署合約

部署的合約地址:KT1UWH1SCBTPjoMmTNjGg3iPpBT9UM7bzBGg

https://smartpy.io/explorer.html?address=KT1UWH1SCBTPjoMmTNjGg3iPpBT9UM7bzBGg

Save Contract: NFT@MOZIK

查看Storage的信息在線metadata:

https://tqtezos.github.io/TZComet/#/explorer%3Fgo%3Dtrue%26explorer-input%3DKT1UWH1SCBTPjoMmTNjGg3iPpBT9UM7bzBGg

查看在線STORAGE信息

8.4.3 設(shè)置合約的metadata

[1] 目前函數(shù)的metadata默認(rèn)如下,不需要修改。

<1> 其中 ipfs://Qmf6tjsd7kwHESMJhCLYNHF7j6AdGNmtnBrcVC4aS87YwL 轉(zhuǎn)成16進(jìn)制

網(wǎng)址:https://www.sojson.com/hexadecimal.html

<2> 對應(yīng)信息:
{
"name": "Mozik",
"description": "Music, Dream & Value",
"version": "",
"interfaces": [
"TZIP-12",
"TZIP-16",
"TZIP-21"
]
}

[2] 如需要修改,參考“8.3 發(fā)布ERC20資產(chǎn)”的"[4] Set metadata"進(jìn)行操作即可。

8.4.4 mint發(fā)行NFT

[1] 10個token id = 0;

Address:tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U

Amount:10

Metadata: , 0x697066733a2f2f516d5950764e4e317843715a747864475766583458716233454e567170624659723872596a773867794454746b4d

Token_id: 0

TOKEN ID =0

[2] 1個token id = 1;

Address:tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U

Amount:1

Metadata: , 0x697066733a2f2f516d5950764e4e317843715a747864475766583458716233454e567170624659723872596a773867794454746b4d

Token_id: 1

TOKEN ID =1

[3] Token_id: 999

告警信息:

Error while sending transaction to contract: Token-IDs should be consecutive RPC_ParseError (please see the console)undefined

token_id要連續(xù),不要斷層。

8.4.5 發(fā)布Joseph的NFT

[1] 需求描述

<1> 對應(yīng)信息:制作成文件 joseph_wooten_token_meta_data.json,然后在https://pinata.cloud/pinmanager上傳文件。

定義參考:https://gitlab.com/tezos/tzip/-/blob/master/proposals/tzip-21/tzip-21.md#example-2

{
  "decimals": 0,
  "name": "Everything’s Gon Be Alright",
  "description": "1. Meet and greet Joseph Wooten and the artists before the concert.
Get a personally autographed copy of Joseph’s book “It All Matters”.
2. Two Front Row tickets to one of two special live NFT concerts by Joseph Wooten and the Hands of Soul on September 11th, 2021, at Rudy’s Jazz Room, Nashville TN. An eclectic, warm and cozy venue. (With Special Guest Artists).
3. Unique Digital artwork limited to 1,086 copies. A Portrait of Joseph Wooten by Kary Lee.
4. Pre-release song limited to 1,086 copies.  “Everything’s Gon Be Alright.”  The song will not be available for general release until after the live NFT Concert.  
",
  "creators": ["Joseph Wooten"],
  "date": "2021-07-06T20:00:00",
  "type": "Pre-release song limited to 1,086 copies and Two Front Row tickets",
  "language": "en",
  "shouldPreferSymbol": true,
  "thumbnailUri": "ipfs://QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
}

IPFS查看方法:

(1) JSON METADATA

https://gateway.pinata.cloud/ipfs/QmYkTgdDpEwwyq3jynAB22Xs4HEAjRgfpjZPsLPmq5ezgr

ipfs://QmYkTgdDpEwwyq3jynAB22Xs4HEAjRgfpjZPsLPmq5ezgr

其對應(yīng)的16進(jìn)制編碼如下:

0x697066733a2f2f516d596b54676444704577777971336a796e414232325873344845416a526766706a5a50734c506d7135657a6772

(2) 縮略圖

https://gateway.pinata.cloud/ipfs/QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF

ipfs://QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF

或者

https://ipfs.io/ipfs/QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF

[2] MINT發(fā)布NFT

<1> 發(fā)布NFT TOKEN DI:2

Address: tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U

Amount: 1

Metadata: , 0x697066733a2f2f516d596b54676444704577777971336a796e414232325873344845416a526766706a5a50734c506d7135657a6772

Token_id: 2

發(fā)布joseph_wooten_token_meta_dataNFT

<2> 繼續(xù)發(fā)布 token id : 3

制作成文件 token_meta_data.json,然后在https://pinata.cloud/pinmanager上傳文件。

{
  "name": "Everything’s Gon Be Alright",
  "symbol": "NFT@MOZIK",
  "decimals": 0,
  "isBooleanAmount": false,
  "description": "Meet and greet Joseph Wooten and the artists before the concert.",
  "creators": ["Joseph Wooten"],
  "type": "song",
  "language": "en",
  "shouldPreferSymbol": true,
  "artifactUri": "ipfs://QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
  "displayUri": "ipfs://QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
  "thumbnailUri": "ipfs://QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
  "externalUri": "https://gateway.pinata.cloud/ipfs/QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF"
}  

鏈接:https://gateway.pinata.cloud/ipfs/QmNmtzsVTY41Hv9FndyoY83TFXzhXQEtvFx2AteQdyr1tq

ipfs://QmNmtzsVTY41Hv9FndyoY83TFXzhXQEtvFx2AteQdyr1tq

對應(yīng)的16進(jìn)制編碼:0x697066733a2f2f516d4e6d747a735654593431487639466e64796f5938335446587a68585145747646783241746551647972317471

<3> 繼續(xù)發(fā)布 token id : 4

采用推薦的

{
  "decimals": 0,
  "isBooleanAmount": true,
  "name": "Carnival Asada",
  "description": "Meet and greet Joseph Wooten and the artists before the concert.",
  "minter": "tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U",
  "creators": ["Joseph Wooten"],
  "date": "2020-11-13T00:00:00+00:00",
  "type": "Digital Taco",
  "tags": ["CryptoTaco", "taco", "collectibles"],
  "language": "en",
  "artifactUri": "ipfs://QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
  "displayUri": "ipfs://QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
  "thumbnailUri": "ipfs://QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
  "externalUri": "https://gateway.pinata.cloud/ipfs/QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
  "formats": [
    {
      "uri": "https://gateway.pinata.cloud/ipfs/QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
      "hash": "40cd59179c5fe2be194bf3bb37b7af7a21ba098b37b1098c01911f382075211f",
      "mimeType": "mage/jpeg",
      "dimensions": {
        "value": "300x300",
        "unit": "px"
      }
    }
  ],
  "attributes": [
    {
      "name": "filling",
      "value": "carne asada"
    },
    {
      "name": "shell",
      "value": "double corn tortilla"
    },
    {
      "name": "salsa",
      "value": "mango"
    },
    {
      "name": "garnish",
      "value": "pickled red onion"
    },
    {
      "name": "secret sauce",
      "value": "ghost pepper"
    },
    {
      "name": "rarity",
      "value": "epic"
    }
  ]
}

在線文件SHA356算法:http://www.metools.info/code/c92.html

對應(yīng)的l:https://gateway.pinata.cloud/ipfs/Qmbx6PbpoCceTqSHeNnyXpzymAbwxzv5qSRQVenA2GrK11

ipfs://Qmbx6PbpoCceTqSHeNnyXpzymAbwxzv5qSRQVenA2GrK11

對應(yīng)的16進(jìn)制編碼:0x697066733a2f2f516d6278365062706f43636554715348654e6e7958707a796d416277787a76357153525156656e413247724b3131

結(jié)論:采用推薦的在temple錢包顯示正確的名稱和ICON。

<3> 繼續(xù)發(fā)布 token id : 5, 6

{
  "decimals": 0,
  "isBooleanAmount": true,
  "symbol": "NFT@MOZIK",
  "name": "Everything’s Gon Be Alright",
  "description": "Meet and greet Joseph Wooten and the artists before the concert.",
  "minter": "tz1c4Zma1UmkEfwmEsqYdMcVpFauhNCeKY3U",
  "creators": ["Joseph Wooten"],
  "date": "2021-07-07T00:00:00+00:00",
  "type": "Song",
  "tags": ["NFT", "MOZIK", "Joseph Wooten"],
  "language": "en",
  "artifactUri": "ipfs://QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
  "displayUri": "ipfs://QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
  "thumbnailUri": "ipfs://QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
  "externalUri": "https://gateway.pinata.cloud/ipfs/QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
  "formats": [
    {
      "uri": "https://gateway.pinata.cloud/ipfs/QmVqM6iVTd7QGFYxM4utojBj7Crb1Z5QTTup1xZhLLAEXF",
      "hash": "40cd59179c5fe2be194bf3bb37b7af7a21ba098b37b1098c01911f382075211f",
      "mimeType": "mage/jpeg",
      "dimensions": {
        "value": "300x300",
        "unit": "px"
      }
    }
  ]
}

在線文件SHA356算法:http://www.metools.info/code/c92.html

5> 對應(yīng)的l:https://gateway.pinata.cloud/ipfs/QmRX8rEaSVMQmtynVNNcXhLikmRtJfy625AJfZoTz4oKvT
ipfs://QmRX8rEaSVMQmtynVNNcXhLikmRtJfy625AJfZoTz4oKvT

對應(yīng)的16進(jìn)制編碼:0x697066733a2f2f516d52583872456153564d516d74796e564e4e6358684c696b6d52744a6679363235414a665a6f547a346f4b7654

6>對應(yīng)的鏈接:https://gateway.pinata.cloud/ipfs/QmY97XyAyUed8fM8KwJTwzoVNXaSBEnSpRNfMBMU6gfxTd
ipfs://QmY97XyAyUed8fM8KwJTwzoVNXaSBEnSpRNfMBMU6gfxTd

對應(yīng)的16進(jìn)制編碼:0x697066733a2f2f516d5939375879417955656438664d384b774a54777a6f564e58615342456e5370524e664d424d55366766785464

<3> 合約信息

metadata存儲:
https://better-call.dev/florencenet/KT1UWH1SCBTPjoMmTNjGg3iPpBT9UM7bzBGg/storage

操作:
https://better-call.dev/florencenet/KT1UWH1SCBTPjoMmTNjGg3iPpBT9UM7bzBGg/operations

TOKENS:
https://better-call.dev/florencenet/KT1UWH1SCBTPjoMmTNjGg3iPpBT9UM7bzBGg/tokens

【問題】在tokens列表中看不到NFT資產(chǎn),錢包也不能顯示個性化信息。原因應(yīng)該是使用了 "shouldPreferSymbol": true。這個是FT資產(chǎn)使用的標(biāo)識。

8.4.6 Temple增加TOKEN

NFT TOKEN自動顯示出來了。

3. 參考

(1) 智能合約在線編輯器 https://smartpy.io/ide
(2) smartpy智能合約參考文檔 https://smartpy.io/reference.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容