こんにちは! シュールなイラストでお馴染み、NFTクリエイターの『soco』です!
今回は最近注目されている『独自コントラクト』について、クリエイター目線で知っておくべきことを解説します。
この記事はNFTクリエイター向けに執筆しており、分かりやすさを優先させるために専門用語を極力使わずに解説します。
技術的な本質と異なる表現をしてしまう可能性がりますので、誤解を招く表現がありましたら『soco』までご連絡いただけますと幸いです。
もくじ
スマートコントラクト
「独自コントラクトとは?」を正しく伝えるためには、ブロックチェーンにおける「スマートコントラクト」の仕組みを知っておく必要があります。
旧世代のインターネットでは、AさんがBさんに送金手続きを行う時に〇〇銀行送金システムが稼働しています。
しかし、このシステムには莫大なコストで開発され、運用するにも相当なコストがかかっています。
その課題を解決するために産まれたのが、「スマートコントラクト」。
ブロックチェーンに送金処理などのプログラムを仕込んでおけば、誰でも安全に送金手続きを行うことができます。
例えば、ユーザAさんが1ETHをBさんに送金するケースは以下のようになります。
このようにコントラクトには「処理」が書かれており、metamaskなどのウォレットがあれば世界中の誰でも「処理」を実行できるのです。
プログラムの内容は公開されており、有名なコントラクトほど多くのプログラマの監査を受けています。
ユーザは利用するコントラクトを間違えなければ詐欺に遭う心配もありません。
※ただし、webに仕込まれた悪意のあるコントラクトを実行させられるとETHを抜かれるので注意が必要です。
イーサリアムなどのコントラクトは仮想通貨の持つ非中央集権性も引き継いでおり、サービス管理者が存在しません。
2022現在はユーザ側のリスクも大きいですが、将来的には企業側の管理コストがごっそり無くなるので、世界に革命を起こす仕組みなんて言われています。
送金以外にも様々な条件をプログラムしておくことで、「トレード」「残高確認」「貯金」などの機能をコントラクトに実装可能、実はNFTもそういう機能の一つだったりします。
※ちなみに、「詐欺師宛にETHやNFTを送金する」ような悪意のあるコントラクトを作ることもできます。
- MetaMask等からの申請を処理するプログラム
- プログラムの内容は比較的自由で色々なことができる
- 送金処理など有名な機能を持つコントラクトは監査済みで安全
- 詐欺サイトやウイルスで悪意のあるコントラクトを実行させられる可能性もある
コントラクトに備わるNFT機能
ここまでは送金機能に注目して説明しましたが、次はNFTに焦点を当てます。
実はNFTは以下のような機能を備えた(プログラムが書かれた)コントラクトです。
- コントラクト所有者から申請があれば、新規のトークンを発行せよ(mint)
- 申請者がトークン所有者なら、所有権を変更せよ(transfer)
- トークンを所有しているアドレスを確認せよ
…etc
そして実はこれらの機能は誰でも使うことができます。
実際にコントラクトを眺めてみよう
今回は多くの作品が相乗りしている共同コントラクトであるOpenseaのコントラクトを覗いてみます。
こちらは私がOpenSeaの共同コントラクトを利用して発行したNFTです。
Detailsのコントラクトアドレスをクリックしてみて下さい。
ちなみにこの作品はSSS-Soco's Super Surrealという私のNFTプロジェクトです。
将来的には個性的なアイコンNFTとして展開を予定しています。(もちろん独自コントラクトで・・・笑)
ご興味ある方は是非ご確認ください!
Openseaでコントラクトアドレスをクリックしたら、以下のようなページが表示されます。
このページにはコントラクトで発生した処理が記載されています。
次に「Contract」タブをクリックしてみましょう。
「Contract」タブを開くと、そのコントラクトの処理を実行するためのプログラムが書かれています。
③箇所に記述されているのですが、クリエイターがここを紐解いていくのは難しいです。
内容を紐解きやすい①の「ReadContract」と②「WriteContract」に焦点を当てて解説します。
誰でも参照できる「ReadContract」
「ReadContract」をクリックすると上記のような画面になります。
Openseaの共同コントラクトが持っている機能が一覧で表示されており、誰でも実行することができます。
実際に「2.balanceOf」という機能を利用してみましょう。
PolygonScanの画面で実際に値を入力すると「2.balanceOf」の機能を利用することができ、上記の場合だと指定したコレクターが指定したトークンを持っているかどうかの判定機能を備えていることが分かります。
ちなみにこの機能はあらゆるwebサービス上で呼び出すことが可能なので、OpenSeaコントラクトでも、うまく活用すれば、将来的に自分のNFTで色々なことができそうです。
情報を更新する「WriteContract」
次に「WriteContract」を眺めてみましょう。
ここにはコントラクトの情報を書き換える機能が一覧で表示されています。
NFTの所有者しか実行できない「transfer」や、オーナーがが実行できる参照情報を変更する機能を確認できます。
また、コントラクトのオーナーのみが実行できる、NFTを消去する「4.burn」やNFT取引を停止する「9.pause」など、Openseaでは普段使わない機能も実装されていることを確認できます。
コントラクトの性質
せっかくNFTクリエイターを名乗るんだったら、NFTでしかできない表現/アートを実現したくないですか?
私はNFT作品を展開するクリエイター/アーティストして、コントラクトの性質は最低限知っておくべきだと考えています。
ERC721
コントラクトにNFT機能を導入すると説明しましたが、エンジニアが手作りでNFT機能をプログラミングしている訳ではありません。
監査済みのプログラム群を自分のプログラムにアドオンのように導入して、NFT機能を自分のコントラクトに導入しています。
有名なのがERC721で、先ほど説明した「mint」や「transfer」などの機能を標準搭載しています。
ちなみにOpenSeaの共同コントラクトはERC1155という規格を採用しており、「発行枚数100枚」と1つのトークンを複数枚発行して多数のユーザに配布するという管理も可能になります。(ただし、使い勝手が悪い部分が多々ありそう・・・)
OpenSea共同コントラクト考察
ちなみに最近OpneSeaの共同コントラクトを眺めていて以下のことに気づきました。
どうもOpneSeaのERC1155コントラクトには[OwnerOf]というNFTの所有者を特定する機能が見当たりません。
一方、一般的なERC721を備えたコントラクトでは[OwnerOf]機能が備わっています。
これって結構致命的なんです。
例えば、将来的に自分のwebアプリやゲームから自分の作品のホルダーを特定したい時に、OpenSeaの共同コントラクトを利用していたら、特定難易度が一気に上がります。
他にも「9.pause」機能もありますが、OpenSeaのオーナー権がハッキングされたら自分のNFTが消される可能性もあるので怖いですね。
NFTの発行方法
2022年2月現在、個人のクリエイターがNFTプロジェクトを展開する方法としては以下の3パターンがあると思います。
自分の表現や将来の方針に合ったやり方を模索しましょう
①共同コントラクトを利用する
単に自分のイラスト作品とNFTを紐づけて販売したい人はこのやり方がおすすめです。
安くEthereumチェーンの作品を発行できるのも魅力です。
OpneSeaのコントラクトを参照すれば、外部アプリからも自分の作品の所有判定などを行うことも可能。
ただし、NFTで表現できることの自由度は下がります。
②自分の名義でコントラクトを発行する
NFTクリエイターの間で「独自コントラクト」と言われているのがこれ。
Chocofactoryなどのサービスを利用すれば、簡単に自分名義で独自コントラクトを発行できます。
コントラクトのオーナーになるので、mintやburnなどのコントラクトのオーナーしか使えない機能も扱うことができます。
ただし、使える機能はコントラクトのソースコードに依存するので、NFTの自由度も代理で発行してくれるサービスに依存します。
③独自機能をコントラクトを実装して発行する
①、②と比べると圧倒的に難易度は上がりますが、NFTを使ってできる表現の自由度は上がります。
例えば、NFTの画像の参照先を変更したり、NFT個別に個体値のようなパラメータを持たせることも可能です。
これを実現するには信頼できるエンジニアと連携する必要があります。
自分がNFTで実現したいこと
私なりに考えた最後の一つは「自分がNFTで実現したいこと」です。
「知っておくべき」というよりは自己分析的な話ですが、NFTクリエイターを名乗るのであれば、NFTでしか表現できないことを追求するべきではないかと考えています。
将来NFTでゲームを作りたいのか、数万点のジェネラティブ作品を全世界にスケールさせたいのか、それ以上のことをNFTで実現したいのか?
自分のやりたいことを分析すれば独自コントラクトの必要性や、どんな機能があればいいかも見えてくるでしょう。
まとめ
「独自コントラクトとは?」というテーマでNFTの可能性について説明しました。
なんとなくNFTで表現できる自分の作品の在り方が見えてきたのではないでしょうか?
今後、ブロックチェーン技術が進めばNFTの可能性もさらに膨らむでしょう。
この記事で多くクリエイター/アーティストがNFTという仕組みに向き合い、新たな表現方法を模索するようになれば幸いです。