NFT(Non-Fungible Token )の概要と発行方法を学んで実際にトークンを作ってみよう!


はじめに

ブロックチェーンの仕組みを学ぶ中で、NFTトークンの発行に関する実装をする機会に恵まれたので、Solidityを用いたNFTの発行方法についてまとめていきたいと思います!

NFTとは?

NFT(Non-Fungible Token )はブロックチェーン上で取引される、架空のトークンであり、直訳すると「代替性のないトークン」という意味になります。
簡単にいうならば、発行されたトークンの一つ一つが我々人間のように固有の容姿や名前を持つように、完全なる独自性を備え持っています。

現在VR世界での決済の方法の一つとして注目されているだけでなく、既にゲームの世界でアイテムとして取引されたり、最近ではフォーブズの事例のように一般社会でも活用される事例が目立つようになりました!

円やドルのような貨幣と異なり、誰でも発行することが出来るので、自分で発行したトークンに価値が生まれたら、大金持ちになることも可能かもしれません・・・!

NFTの発行のためのソースコード

NFTはERC721(Ethereum Request for Comments 721)という規格を採用しています。
ここには様々なメソットやイベントが用意されており、それら(リンク先)を組み合わせることによって、生成や焼却、他者へ送信することが出来ます。

今回は、OpenZeppelinというNFTの発行を補助してくれるライブラリを用いて、テストをしていきます。

testToken.sol

//バージョンを指定
pragma solidity ^0.5.0;

//テストをするRemixでは簡略的にGitHubのURLを指定
//もちろんファイルのパス指定も出来る
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721Full.sol";

contract testToken is ERC721Full {

//トークンの名前と最小単位を定義
  constructor() public ERC721Full("testToken", "hoge") {}

//トークンの情報をstructで定義
    struct Token {
        string name;
        string description;
    }

//トークンを保管するために定義
Token[] public tokens;

//mint関数でトークンを発行
  function mint() external {
   uint256 id = tokens.push(Token('name','description')) - 1;
   super._mint(msg.sender, id);
  }

}

試験的にトークンを発行してみる

テストにはRemixというブラウザー型のエディターを使います。
インタラクティブにバグを検知してくれるだけでなく、試験的にトークンを発行することが出来ます。
本記事を読んで、テスト実装をされる方は事前にMetaMaskのインストールをお勧めします。(使い方に関しては最後にまとめます)

好きな名前でファイルを作ったら、先ほどのコードをそのままコピペしてください!
入力を終えたら、写真の中で「黄色い数字の1」が表示されてるボタンをクリックし、黒のボタン(コンパイル)を押します。

左下にオレンジ色で表示されている項目は、トークンの鋳造や送信に使われる関数です。この記事では取り扱いませんが、興味のある方は調べてみてください!通常トークンの生成にはGasと呼ばれる所謂コストが発生しますが、今回はMetamaskを利用したテストネットワークを使用したため、無料で試すことが出来ます。

実行結果を更に下へスクロールすると、無事にトークンが発行されたことを確認できます!
nameの項には先ほど定義したこのトークンの名前である「testToken」、
symbolの項には「hoge」が反映されています!

以上、概念的に難解なブロックチェーンですが、本記事で紹介させて頂いたように思いの外、簡単にトークンを発行することが出来ます。

宜しければチャレンジしてみてください!!

参考にさせて頂きました。ありがとうございます!

NFTについて
トークンの発行について
MetaMaskの使い方