チュートリアル: Solidity を使用して独自の NFT を 3 分で作成する方法を学びます
参考記事:SolidityでNFTを作成する方法
パトリック・コリンズ
作曲・編曲:チェン・ゾウ
NFT(Non-Fungible Tokens,非均質トークン)は、スマート コントラクトの分野で最も輝かしい星の 1 つであり、ERC20 と同様のトークン標準です。 2020年がDeFiの年である場合、少なくとも2021年の大部分はNFTに属することになります。
代替不可能とは、ユニークであることを意味し、すべて代替可能なトークンである ERC20 トークンとは大きく異なります。均質化の例として、どのドル紙幣を使用しても、ドル紙幣は 1 ドルの価値があります。ドル紙幣のシリアル番号は異なる場合がありますが、いずれにしても 1 ドルの価値があるため、紙幣は交換可能です。
最初のレベルのタイトル
NFTの開発進捗状況
まず明確にしておきたいのは、NFTには無限の可能性があるということです。今年2月、Axie Infinityは9区画を888.25 ETHで販売した。 (現在約391万ドル相当)
最初のレベルのタイトル
標準
上で述べたように、NFT は ERC721 トークン標準で始まり、ERC20 に似た構文をいくつか調整しています。
あなたの契約がシステムによって NFT として認識されるために必要なのは、この標準に従うことだけです。この標準を契約にインポートしているため、新しい契約を締結するたびに車輪を再発明する必要がありません。
NFT には tokenURI 変数があり、これについては後ほど説明します。NFT には tokenId から所有者へのマッピングがあり、各トークンには独自のがあります。"所有者"。これは、アドレスと残高のマッピングのみを持つ ERC20 とは異なります。 ERC721 では、ユーザーがトークンを転送したり、トークンに対する権限を設定したりすることができます。慣例的に、これは軽量の標準であるため、これを使用して必要なものをすべて構築できます。
ここで物事が大きく変わり始めます - メタデータ。 OpenSea (トップの NFT マーケットプレイス) に入ると、たくさんの写真が表示されます。 NFT はブロックチェーン上にあるので、すべてのデータはチェーン上にあるはずですよね?まあ、完全ではありません。
データをオンチェーンに保存すると非常に高価になる可能性があり、アートワークのファイル サイズは小さすぎないことがよくあります。イーサリアムとスマート コントラクトの開発者は、1 MB の画像でもアップロードするとすぐに廃業してしまうことに気づき、大量のデータを保存せずに作品を表示する方法を作成する必要がありました。
回避策として、ほとんどの NFT にはいわゆる tokenURI があります。これは、NFTの可視性の分野で使用されるグローバルに一意の識別子です。これにより、NFT に視覚効果を追加しやすくなります。 URI は、Uniform Resource Identifier であり、HTTPS API 呼び出し、IPFS 経由のもの、またはその他の種類の一意の識別子である可能性があります。このメタデータは次のようになります。
JSON ファイル構造は次のとおりです。
name
description
image
attributes
これらのファイルは通常、API または IPFS に保存されます。
さて、突然疑問に思うかもしれませんが、"最初のレベルのタイトル"
オンチェーンのメタデータ VS オフチェーンのメタデータ
NFT に想像できるすべての興味深いものを持たせたい場合は、そのオンチェーンプロパティが必須です。いくつかの例を挙げると、ポケモンのような戦闘統計、ある種の希少性統計を与えたい場合、またはオンチェーンで暗号化された希少性を持たせたい場合です。これらのプロパティはオンチェーンにある必要があります。 (これらは追跡可能であり、改ざん可能であり、一般に公開されている必要があるため)
現在、NFT プラットフォームにはオンチェーンでプロパティを視覚化する適切な方法がないため、ミントされた NFT を使用して tokenURI を作成するだけで済みます。
tokenURI の場合、最も一般的な方法の 1 つは、IPFS を使用してデータを保存することです。そこにデータをアップロードし、ピン留めサービスを使用して、データがそこに永久に残るようにします。スマートコントラクトプラットフォームとストレージ側のさらなる連携に期待しています。
ヒント: 以下は私の独り言です。前部にスマート コントラクト プラットフォーム、中央に Chainlink、後部に dStorage...しかし、それは別のトピックです。
正直に言うと、最初はNFTは愚かだと思いました。それ以外では、アートはバカがやるものだと思っていました...しかし、私がビジュアルの良い音楽、映画、ゲームが大好きであることを考えると、そう言うのは偽善的です。 NFT は、ロイヤルティと真正性に関するアート界の長年の問題点を解決します。現在、分散型監査サービスを導入しています。誰かのアートワークを使用したい場合は、そのアートワークに関するすべてをオンチェーンで見ることができます。
Nyan cat のオリジナルの作成者は、NFT バージョンを 300 ETH で販売しました。これは、デジタルの希少性に価値があることを証明しています。
素晴らしいものを作成した場合、それは独自の価値を持ちます。だからこそ、Chainlink VRF(Chainlinkの乱数生成サービス)NFTを所有することは非常に重要なことだと思います。なぜなら、非常に珍しい収集品を作成できるからです。誰かがこれらのプラットフォームでポケモンタイプのゲームを作ってくれることを楽しみにしています。これらのNFTは永久に存続します。
最初のレベルのタイトル
シンプルなNFT契約
これは、NFT 契約を利用する最も簡単な方法です。トリュフ、ヘルメット、ブラウニーの文法が含まれています。私は OpenZepplin コントラクトを使用するのが好きです。なぜなら、OpenZepplin コントラクトは非常によく構造化されており、通常すぐに作業を開始するために必要なツールがすべて揃っているからです。必ず事前にインストールしてください。
npm install @openzeppelin/contracts
最初のレベルのタイトル
NFT契約の上級版
この NFT コントラクトでは、Chainlink VRF を使用して、NFT にランダムな状態を提供します。この場合、ランダム性を利用して犬にランダムな品種を与えています。今回 createCollectible を呼び出すと、実際には暗号的に証明された乱数を返すリクエストを Chainlink Oracle に送信しています。このようにして、ゲームの公平性を損なう可能性のある「ブラックボックス操作」はなくなります。このリクエストは非同期であるため、Chainlink オラクルが nonce を使用して 2 番目のトランザクションを実行するまで待つ必要があります。
要約:
要約:
この記事は Bitpush.News からのものであり、許可を得て転載しています。
この記事は Bitpush.News からのものであり、許可を得て転載しています。


