OpenSeaを利用するとNFTが簡単に作れるので、はじめてのNFTをOpenSeaで作成したという人も多いでしょう。
しかし、OpenSeaで作成したNFTは共有コントラクトが実装されるため、NFTの販売に制限がかかる場合があります。
作成するNFTを完全に自分のものにするには、独自コントラクトが必要です。
この記事では、独自コントラクトの概要や作り方を解説します。
この記事をザックリ要約!
- 独自コントラクト=自分で作成したスマートコントラクト
- コストはかかるが、プラットフォームに依存しないなどのメリットがある
- 難しいコードを書かなくても独自コントラクトを作れる方法がある
独自の機能を持ったNFTを作りたいのであれば、本記事が参考になるでしょう。
そもそもコントラクトとは
(Etherscan|CryptoPunks_Contract)
コントラクトとは、スマートコントラクトの略称です。
スマートコントラクトはブロックチェーン上で動作するプログラムで、決められた条件を満たすと自動的に実行されます。
イメージとしては、お金を入れるという条件を満たすと商品を出す自動販売機が近いです。
スマートコントラクトで実行できる動作は多様で、DeFiやDappsなどの分散型サービスに利用されています。
また、すべてのNFTにはスマートコントラクトが実装されており、コントラクトの位置を示すコントラクトアドレスを持っています。
独自コントラクトと共有コントラクト
スマートコントラクトの種類として、独自コントラクトと共有コントラクトの2つに分けられることがあります。
自分のNFTを作成する際、独自コントラクトにするか、共有コントラクトにするかは重要なポイントです。
なぜなら、真の意味でNFTの所有者であるかどうかに関わるからです。
それぞれの特徴とともに、詳細を解説していきます。
独自コントラクトとは
自分で作成したコントラクトのことを独自コントラクトといいます。
独自コントラクトはコレクションを作成した人が作成者となり、ブロックチェーンに記録されます。
Etherscanなどのブロックチェーンエクスプローラーを使用すれば、作成者のアドレスを確認することが可能です。
プラットフォームで独自コントラクトを簡単に作れますが、プログラムコードを自分で1から作成したものが本来の意味での独自コントラクトであるとされる場合もあります。
共有コントラクトとは
複数のコレクションが共有しているコントラクトのことを共有コントラクトといいます。
たとえば、OpenSeaで新しくコレクションを作成した場合、コントラクトの作成者はOpenSeaになります。
(Etherscan|OpenSea Shared Storefront)
複数人で同じコントラクトを利用することになるため、ブロックチェーンからNFTの製作者を追跡するのが困難です。
独自コントラクトのメリット
共有コントラクトと比べて実装するハードルが高い独自コントラクトですが、利用するメリットは多いです。
それらのメリットから、独自コントラクトは共有コントラクトに比べて価値が付きやすい傾向があります。
ここでは、以下に挙げる4つのメリットを順に解説していきます。
- プラットフォームに依存せずに運用できる
- 複数のNFTマーケットプレイスで販売することが可能
- 取引内容を追跡しやすいため詳細を把握できる
- コードを自分で書くことで独自の仕様を盛り込める
プラットフォームに依存しない
独自コントラクトの作成者は個人であり、プラットフォームの運用状態に左右されない点がメリットとなります。
共有コントラクトでNFTを作成した場合、コントラクトを作成したプラットフォームに従わなければなりません。
仮に、共有コントラクトの作成者であるプラットフォームがサービスを終了してしまった場合、共有コントラクトで作られたNFTが消える可能性は少なからずあります。
サービスを終了することがないとしても、利用規約の変更により制限がかけられるかもしれません。
実際に、OpenSeaで作成できるコレクションとアイテムの数が制限されそうになった事例がありました(即座に撤回されたようです)。
長期的にNFTを運用するのであれば、独自コントラクトで作成するほうが安心できるでしょう。
複数のマーケットで販売できる
複数のNFTマーケットプレイスで販売できる点も独自コントラクトの強みです。
共有コントラクトで作成したNFTは、ほかのNFTマーケットプレイスで販売できない場合があります。
販売できたとしても、作成者への報酬(ロイヤリティ)を受け取れなくなるといったデメリットを受けることになるでしょう。
独自コントラクトであれば、好きなNFTマーケットプレイスで販売でき、コントラクトで設定したロイヤリティを必ず受け取れるよう設定することも可能です。
取引内容の詳細がわかる
独自コントラクトであれば、取引内容の把握やデータ収集がしやすくなります。
共有コントラクトの取引データを確認しようとすると、そのコントラクトを利用しているすべてのプロジェクトが表示されてしまいます。
これに対して、独自コントラクトであれば自分のコレクションの取引だけ表示できるため、必要なデータを探すのも容易です。
独自の仕様を盛り込める
独自コントラクトを実装する最大のメリットは、独自の仕様を自由に盛り込めることです。
たとえば、独自コントラクトを作成できるプラットフォームによっては、入手時点ではNFTの情報を隠しておいて指定したタイミングで公開するリビール機能などを実装できます。
プログラムのコードを書くことができれば、一定の条件を満たすとNFTが変化するなどの高度な機能も取り入れられます。
ただ取引するだけではないNFTを作りたい場合は、独自コントラクトに挑戦してみるとよいでしょう。
なお、共有コントラクトを作成する際はコレクション名などの基本的な項目を決めるだけで、特殊な挙動を設定することはできない場合がほとんどです。
独自コントラクトのデメリット
メリットが多い独自コントラクトですが、デメリットも存在します。
人によっては、メリットよりもデメリットのほうが大きいと感じるかもしれません。
その場合は無理に独自コントラクトを利用せず、共有コントラクトでNFTを作成するとよいでしょう。
ガス代が高い
独自コントラクトはガス代が高くなるデメリットがあります。
たとえば、コントラクトを作成するときにデプロイという工程があるのですが、デプロイする際にガス代がかかります。
また、独自コントラクトの実装方法によっては、NFTを1つ発行するたびにガス代がかかるケースも。
100点以上のNFTを発行しようとすれば、数万円以上のコストになるでしょう。
売上が見込めなかったり資金がなかったりする場合は、共有コントラクトを利用するほうが安心できるかもしれません。
コントラクトの挙動は自己責任
自分でコードを書く場合、コントラクトによる動作に対して責任を負うことになります。
例を挙げると、コードの書き間違えによって取引が実行できなかったり、意図しない支払いが発生したりすることもありえます。
このとき、コントラクトの作成者自身が責任をとり、トラブルに対応しなければなりません。
共有コントラクトであれば、万が一問題が発生したとしてもプラットフォームが対処することになるでしょう。
独自コントラクトの実装方法
独自コントラクトの実装方法はいくつもあり、選ぶ方法によってできることや難易度が違います。
難しい方法であるほど自由な実装ができますが、難しさで挫折してしまっては本末転倒です。
自分に合った方法を選び、慣れてきたら次のステップに進むようにするといいかもしれません。
以下では、取り組みやすい順に方法を紹介していきます。
NFTマーケットプレイスなどで発行する
OpenSeaでは共有コントラクトしか作成できませんが、ほかのNFTマーケットプレイスでは独自コントラクトを作成できる場合があります。
RaribleやFoundationであれば独自コントラクトを作ることが可能です。
ほかにも、NFTifyのようなNFTマーケット作成サービスで作成できます。
共有コントラクトと同じような工程で独自コントラクトのNFTを作成できるので、NFT初心者はこの方法で作成してみてください。
なお、ほかのプラットフォームで作ったNFTでも、独自コントラクトであればOpenSeaで販売できます。
コード不要なプラットフォームを利用する
プログラムのコードを書かずに独自コントラクトを作成できるプラットフォームを利用すれば、NFTマーケットプレイスで発行するよりも機能に幅のあるNFTを作れます。
たとえば、thirdwebというプラットフォームでは、事前登録した人だけに販売するホワイトリスト機能や、自分のホームページでNFTを生成するミント機能などを設定できます。
実際の使い方はこちらの記事をご覧ください。
Chocofactory(チョコファクトリー)やCryptogeneratorでも、独自コントラクトの作成が可能です。
ただし、あくまで独自コントラクトのNFTを作成するサイトなので、NFTマーケットプレイスで販売するには、もうひと手間かかります。
プログラミングの知識がないものの機能を持たせたい人向けの方法といえるでしょう。
コードを書いて作成する
より独自コントラクトらしい機能を実装したいのであれば、自分でコードを書く方法をとりましょう。
Remixなどの開発環境を使うことで、コードを記述してコントラクトを作成できます。
ハイレベルな知識が要求されるうえに、コントラクトの製作期間も必要になるため、NFTを作るまでに時間がかかるでしょう。
時間や手間を省くために、プログラマーの手を借りる選択肢も考慮しておくとよいかもしれません。
自分でコードを書くために必要なもの
プログラムの知識がなくても、実装したい機能のために自分でコードの書き方を勉強したい場合があるでしょう。
その場合は、以下の勉強に取り組んでみてください。
とくにブロックチェーンに関しては、独自コントラクトを使わないとしても、NFTを扱うなら覚えておきたい知識です。
覚えるべきことは多いですが、理想のNFTを作るためにも頑張ってみましょう。
(参考サイト)つまずかないブロックチェーン学習の始め方と学習手順
ブロックチェーンの知識
NFTのことしか知らない場合は、ブロックチェーンの概念や仕組みから学ぶ必要があるでしょう。
プログラムを理解していても、なぜそのように動くのかをわかっていなければ、コードを書き換えるのは困難です。
改ざんできないようにするための仕組みや、ブロックチェーンの種類による違いなど、基本的な知識をしっかりと固めてください。
ブロックチェーンについて学習できるサイトには、EnterChainやPoLなどがあります。
Solidity言語の習得
スマートコントラクトのコードを書くときはSolidity言語を使用するので、Solidityを習得する必要があります。
Solidityはオブジェクト指向型の言語なので、同じ型であるJavaやC#などのプログラム言語を学んだ経験があれば習得しやすいでしょう。
プログラミングの経験が全くなかったとしても、CryptoZombiesなどの学習コンテンツで1から学ぶこともできます。
より深く学びたい場合は、Solidityのリファレンスマニュアルを読んでみてください。
JavaScriptの理解
コントラクトを作成していくなかで、node.jsやweb3.jsのように、拡張子がjsになっているファイルを目にすることもあるでしょう。
これらのファイルにはJavaScript言語が使われており、Solidityとは少し違う記述ルールでコードが書かれています。
JavaScriptのファイルに触ることがなくても、jsファイルがどのように動くのか把握できる程度には理解しておくとよいかもしれません。
JavaScriptを学習する場合は、現代のJavaScriptチュートリアル(The Modern JavaScript Tutorial)がおすすめです。
ちなみに、JavaScriptとJavaはまったく異なる言語なので、検索する際は混同しないように注意してください。
まとめ:自分に合ったコントラクトを実装しよう
OpenSea以外のプラットフォームでNFTを作成したり、独自コントラクトを自作したりすることで、NFTに多彩な機能を付けられます。
ほかにも多くのメリットがあるので、長期的に自分のブランドを育てたいのであれば独自コントラクトを実装しましょう。
ただし、独自の機能が必要なく、なるべくコストをかけずにNFTを発行したい場合は、共有コントラクトのほうが向いています。
これから作るNFTに何を求めているか、何が必要なのかを検討し、あなたに合うコントラクトを選んでください。