最近、ブロックチェーン関連のニュースや記事で、NFT(非代替性トークン)についてとり上げているものを数多く目にします。NFTは、デジタルコンテンツに対して、替えのきかない唯一無二の価値を証明する存在として世界の多くの投資家からも注目されています。その証拠に2021年3月にNFTで発行されたあるデジタルアート作品が約79億円で落札されました。
今や子どもが描いた作品でも数百万円規模の高値で売り買いされたり、ゲームのキャラクターまでNFT出品されたりと、れっきとした投資対象となっています。では、そんなNFT(非代替性トークン)を開発するには、どうすれば良いのでしょうか。
NFTは、画像や動画、イベントのチケットなどのデジタルコンテンツなら専用のマーケットプレイスに簡単な手続きで出品することができます。しかし、ゲームなどのアプリとなると、専用のプロセスを経て開発する必要があります。そこで今回は、NFTを開発するためにどのようなプログラミング言語やフレームワークが必要なのか、詳しく解説します。
NFTとその魅力
NFTは「Non-Fungible Token(ノンファンジブル・トークン)」の略で、「非代替性トークン」を意味します。ビットコインをはじめとする仮想通貨は、通常どのトークンどうしを取り替えても価値は変わりません。現金も同じです。ある人のもつ100円と別の人の100円の価値は何ら変わりはありません。これらは、「代替可能=ファンジブル」です。
一方、NFTは、取り替えのきかない(ノンファンジブル)トークンで、彫刻作品や宝石のようにこの世に同じものが二つとない唯一無二の価値を、デジタルコンテンツにも付与して所有権を証明できるブロックチェーン上のデジタルデータ単位です。従来、デジタルコンテンツはネット上で無限に複製可能で、ある人のパソコン上にある画像と同じものが他の人のパソコン上にいくらでも存在しえます。そして、そのどれか一点を本物と証明することはまず不可能でした。しかし、これをブロックチェーン技術で改ざんもねつ造もできないかたちで実現したのがNFTで、世界中の関係者に大きな衝撃を与えました。
よってNFTを使えば、絵画や掛け軸などのように、画像や動画、音楽にもオリジナルの一点ものとしての価値を与えることができるのです。しかもその対象は、RPGゲームやトレーディングカードゲームなどにも広がっています。その一例が日本で初めてリリースされたNFTゲーム「My Crypto Heroes」です。このゲームは、PCでもスマホでも遊べて、プレーヤーは、NFTで作った世界の英雄を集めながら同じくNFTである武器などのアイテムをゲットして世界制覇を目指すというもの。キャラクターやアイテムはNFTなので、専用のマーケットプレイスで売買することができます。
ただし、NFT市場では、一般的なオンラインゲームやソーシャルゲームのキャラクターを売りたいと思っても出品できません。この後に解説するイーサリアムという暗号資産上でスマートコントラクトという特殊技術を使って作られたゲームでなければ、キャラクターなどにNFTとして価値を付与することも市場で売り買いすることもできないのです。また、スマートコントラクトを活用して、作品が二次、三次と異なる買い手のもとに渡っても、その度に原作者に報酬が入る仕組みが構築できるのも、NFTならではの注目すべき特徴といえるでしょう。
(参考:NFTの最新動向を詳しく解説)
NFTが稼働するのはイーサリアム上
出所: https://www.coindeskjapan.com/wp-content/uploads/2020/12/shutterstock_1030451626-710x458.jpg
NFTの取引や開発はイーサリアムを抜きにしては語れません。言い方を変えれば、他の仮想通貨とは異なる「プラットフォーム型」ブロックチェーンと呼ばれるイーサリアムだからこそ、NFTのシステムが機能します。そこで、続いては、イーサリアムとNFT開発に欠かせないERC標準について解説しましょう。
イーサリアムとは
イーサリアムは数あるブロックチェーンのなかでもビットコインに次ぐ人気を博しています。公開されたのは2014年1月。基軸通貨は、Ether(ETH=イーサ)で、わずか約15秒ごとにブロックを生成するため、約10分かかるビットコインなどに比べると格段にスピーディーなうえ、大量に取引できる点も特長です。
イーサリアムは分散型アプリケーションプラットフォームといわれ、後述するスマートコントラクトという仕組みを使うことで、ブロックチェーン上で独自トークンやアプリを作成して動かすことが可能です。この点が他の暗号資産とは一線を画する大きな違いで、NFTの稼働を可能にするゆえんとなります。
プラットフォーム型であるイーサリアムは、自由度が高く、さまざまなソフトが作れるとあって、開発者にとっては非常に魅力的なブロックチェーンです。よって、誕生以来これを活用して独自トークンの作成に乗りだす人が数多く出現しました。ところが、ブロックチェーンでトークンを作るとそれに合わせた個別のウォレット(仮想通貨をあつかう際に必ず必要なオンライン上の財布)が必要で、トークンの規格が違うと互換性もありません。よって、各開発者が自由気ままに自分たちのやり方でトークンを作成すると、例えば、そのつど異なるウォレットを設けるといった面倒な作業が必要で実用性に欠けます。そこで、この規格を統一すればウォレットも一元管理でき、互換性も生まれるので、使い勝手の良さからイーサリアム市場の発展につながるとの考えが生まれます。
ERC標準とは
上記のような経緯で、開発者コミュニティ全体で利便性向上を目指して設けられたのが、「ERC」というスマートコントラクト(後述)の共通規格です。これはGitHub(ギットハブ)で提案されて開発者コミュニティで承認を受けると正式な規格となります。(GitHubとは、マイクロソフト傘下の米国のGitHub社が提供する、複数のソフト開発者がソースコードを管理・共有できるサービスのこと)
2015年11月、最初に誕生したのがERC20で、公開されるとこれを活用して数多くの独自トークンが作成されました。そして、その改良版として2017年3月にERC223が誕生。さらに、この共通規格という考えをまったく別の方面に発展させる目的で提案されて同年9月に誕生したのが「ERC721」です。
このERC721は、それまでのECRと異なり、NFTという代替不可能なニュータイプのトークンの作成を可能にしました。あらゆるNFTは、このERC721のルールに準拠して作成されますし、逆にこの規格に沿わなければイーサリアム上でアプリを起動することはできません。もちろん先にご紹介した日本初のNFEゲーム「My Crypto Heroes」もERC721の規格に沿って開発されました。
ちなみに、このERC721を提案して、承認後わずか2ヶ月(2017年11月)で世界初のNFTゲーム『CryptoKitties(クリプトキティーズ)』をローンチしたのが、カナダのDapper Labs社です。この『CryptoKitties』がNFTゲームの火付け役となると同時にNFTの認知度を世界的にグンと引き上げました。
イーサリアムとスマートコントラクト
ERCは、イーサリアムに欠かせない技術である「スマートコントラクト」の共通規格になります。スマートコントラクトとは、特定のプログラム言語でコーディングされたルールに従って、ブロックチェーン上のトランザクション(取引)が自動的に実行されるプログラムです。ここでコーディングされたプログラムはブロックチェーン上で処理可能なかたちに変換のうえ、デプロイされます。こうしていったんブロックチェーン上に展開されたソフトやアプリケーションは書き替えも改ざんもほぼ不可能です。しかもスピード向上とコスト削減というメリットもあります。
ERCは任意の開発者によってGitHubで提案され、コミュニティ内で承認されれば正式なスマートコントラクトの規格となりますが、ERCの後に続く数字は、提案された順番を表しています。つまり、最初に誕生したERC20 は20番目に提案されたことを意味します。そして721番目に提案されて承認されたのが、ERC721というわけです。
ERC721の規格を使えば、NFTを開発でき、デジタルコンテンツの所有権証明とすべての取引履歴の記録がイーサリアムプロックチェーン上で可能となります。よって、すべての取引は追跡可能なため、何度売り買いが繰り返されてもコンテンツが誰のものはわからなくなるということはありません。しかも、スマートコントラクトにロイヤリティ条項を埋め込むと売買が成立するたびに原作者に一定の割合で報酬が支払われるようになるので、著作権もしっかりと保障されます。
スマートコントラクトを作成するための言語『Solidity』
ERC721の規格にしたがってNFTを開発するには、『Solidity(ソリディティ)』というプログラム開発言語を使います。Solidityは、オブジェクト指向の高級プログラム言語で、イーサリアム上のスマートコントラクトを開発するためだけに作成されました。高級言語のためC言語やJavaのようにコンパイルが必要になります。C++をベースとし、PythonやJavaScriptを参考にして作られており、とくにJavaScriptに似た文法のため、JavaScriptでの開発経験がある場合は、非常に使いやすいでしょう。しかもアップデート継続中のため、時間が経つにつれて精度も上がっています。
『Solidity』は高級プログラム言語なので、人が理解しやすい反面コンピューターにとっては理解できない難しさがあります。よって、低級なバイトコードへとEVM(イーサリアム仮想マシン)を使って翻訳して実行されるというプロセスを踏みます。
ちなみに『Vyper(バイパー)』というPythonに似た言語でもスマートコントラクトを作成できますが、まだ実績が浅く、実用性では『Solidity』の比ではありません。よって、NFT開発には、今のところほぼ『Solidity』を使うと考えて間違いないでしょう。
『Solidity』の『Truffle』フレームワーク」
Solidityには、ディファクトスタンダードのフレームワークとして『Truffle』があり、すでに多くの開発場面で多用されています。Truffleは、スマートコントラクトのコンパイル・テスト・デプロイを自動化する機能を持ちます。
Truffleを利用する流れは、まずアプリケーションのテンプレートを作ります。つぎにスマートコントラクトをコンパイル、ローカル開発用ノードを立あげたら、スマートコントラクトをノードへデプロイ、そしてテストを行います。よって、Truffleをうまく活用すれば、Solidityを使ったスマートコントラクトの作成がスピーディーかつ容易にできるので、強くおすすめします。
まとめ
NFT(非代替性トークン)について詳しくお伝えしました。NFTを開発・実装しようと思えば、イーサリアムの存在が不可欠です。しかし、イーサリアムは数ある仮想通貨でもガス代(手数料)が大変高騰していることが懸念材料になっています。つまり、このガス代の高さが市場への参入を大きく阻む要因となりかねません。
そこで手数料があまりかからない新たなブロックチェーンの開発も進んでいるので、今後NFTのあり方にも変化が訪れる可能性があります。より多くのゲームプレーや投資家たちがNFT市場に参加できれば、今後、市場規模はますます拡大していくと予想されます。その意味では、今がNFT開発の絶好のチャンスといえるでしょう。
レリパは、日本企業だけに特化しており、優秀な技術者がNFT(非代替性トークン)の開発をお手伝いいたします。これからNFT市場に本格的に参入しようと考えているスタートアップや開発担当者の方がおられましたら、ぜひお気軽にご連絡ください。