【NFT】独自コントラクト/共有コントラクト
はじめましてのヒトは、はじめまして。
いつもの皆様、こんにちわ。
大葉さんです。
前回のお話
最近は流行ばかり追い過ぎていた感もあるので、久しぶりに気分を一新して基礎講座。2021年の年末年始に盛り上がっていた「独自コントラクト」について触れてみたいと思います。
思ったより単純でしたが、思ったより細かくてなかなか伝わり難かったです。整理せねば!
なぜこの記事を書いたのか?
独自コントラクト/共有コントラクトの違いについて、学ぶ為です。
シンプル!
それでは早速、詳細に行ってみましょう!!
■「スマートコントラクト」って何?
「スマートコントラクト」とは、ブロックチェーン上で契約を自動的に実行する仕組みのことです。しばしば「スマコン」「コントラクト」と省略されていますが、示す内容は同じになります。
■NFTを発行する際に結ぶ「スマートコントラクト」って何?
NFT作成に関するパラメータを登録する為の「スマートコントラクト」です。具体的なパラメータは多岐に渡りますが、重要になってくる設定値の例を挙げると以下になります。
・NFT Standard(ERC721 or ERC1155)
・MetaDataの保存先
・Collection名称
・契約元になるアドレス
もう少し現実に即した例えをします。
・ETH上でNFTを作成する場合には、申込用紙的なものを事前に提出する必要があります。
・申込用紙の項目を全部埋めないと、NFTは発行できません。
・事前にコントラクトを作っておく事により、申込用紙の一部を記入済にした「あなただけのNFT申込書フォーマット」を作ることが出来ます。
・2枚目以降のNFTを発行する時、既存のコントラクトを再利用することで、申請書類記入の一部を省略できます。
こんな感じです。
■OpenSeaでNFTを発行する場合
では、具体的に有名サイトを使って実感していきましょう。
OpenSeaでNFTを作成する場合、以下の過去記事で紹介した手続きで、パラメータを入力していきました。
さて、ここで問題です。
・NFT Standard(ERC721 or ERC1155)
・MetaDataの保存先
・契約元になるアドレス
上記、入力しましたか?していないですよね?
それでは、これらの値は「誰のコントラクト」に基づいて補完されたのでしょうか?
調査対象NFT( BLUE ICONS様 : https://twitter.com/blueicons2022 )
ここをクリックします。
このContractはどうやら「OpenSea」のアドレスに紐づいており「OpenSea Shared Storefront(OPENSTORE)」というコレクションとして管理されているようです。
以上の結果より、上記NFTは「OpenSea」が保有する「OpenSea Shared Storefront」というコレクションにおける「23313208483802283135666443883800867521842685144162947101067955514838941171713」のIDを持つNFTと判明しました。
未入力の項目は全て「OpenSea Shared Storefront」による設定値が適応されています。設定値を変更できる権限を持つのは、契約者である「OpenSea」のみです。我々は何も出来ないので、問題が発生した場合はOpenSeaのサポートセンターに連絡をしなければなりません。はて、Web 3.0とは?
■つまり「共有コントラクト」とは?
NFTマーケットプレイスが保有するアドレスが契約元になっている「NFT発行に関するコントラクト」をクリエイターが間借りしているケースを示します。
メリット:
詳しい仕組みを知らなくてもNFTが発行出来る。問題が発生したとしても、マーケットプレイス側がフォロー&サポートしてくれる可能性がある。
デメリット:
契約元(OpenSeaなど)が倒産した場合、契約内容が変更or破棄される可能性がある。NFTが爆発的に売れた場合、自分ではなくマーケットプレイス側の知名度が上がる(ブロックチェーンに刻まれているのは、OpenSeaなどが保有するアドレスの●●枚目、という情報のみ)
■つまり「独自コントラクト」とは?
【広義の意味】
「共有コントラクト」の対義語です。自分自身の保有するETHアドレスを契約元にして「NFT発行に関するコントラクト」をクリエイター自身が全て定義しているケースを示します。
メリット:
「共有コントラクト」(OpenSeaなど)を保持したマーケットプレイスが倒産した場合においてもNFT資産は保護される。NFTが爆発的に売れた場合に、自分自身が保有するブランド名の知名度向上に直結する。
デメリット:
ある程度のプログラムあるいはイーサリアムに関する知識が必要。メタデータ等の維持・死活管理・管理は全て自己責任。契約元のETHアドレスがハックされた場合は、致命傷を負う。
【本来の意味】
「自分でSolidityというプログラミング言語でコードを書いたスマートコントラクト」の事を示します。
「コントラクト作成サポートツール」や「WebGUIサイトの支援」を経て作成したコントラクトは、広義の「独自コントラクト」には含まれますが「本来の独自コントラクト」には含まれません。
✌️🐷✌️様( https://twitter.com/PigThePersona )ご指摘ありがとうございます。
■独自コントラクト確認方法
それでは、独自コントラクトを設定しているNFTをOpenSeaから確認し、共有コントラクトとの差分を比較して行きましょう。
調査対象NFT( unagi189_eth様 : https://twitter.com/unagi189_eth )
https://opensea.io/assets/0x4b214ab4f9f32d26ebd453b62bc010f8b8c2eaa3/1
「Contract Address」が先程のサンプルと異なる点がお分かり頂けますか?また「Token ID」は、この契約上では初めてのNFT発行となりますので「ID:1」です。
次にCotract Addressのブルー部分をクリックしてみましょう。
このContractは「0x4b以下略」のアドレスに紐づいており「u-nagiworks(UNAGI)」というコレクション上で「1」のIDを持つNFTと判明しました。
スクロールして下方向へ。
Transactionには「コントラクトに紐づく全てのIDの履歴」が掲載されます。本コントラクトを元に2枚目のNFTを発行すれば「ID:2」、3枚目を発行すれば「ID:3」と増えていくのですが、これらの全てのアクションがTransaction欄に永久に残ります。まさに、あなたの活動履歴ですね。
最後に確認すべきは、契約内容。
ソース公開されておりますので、該当の「独自コントラクト」が怪しいと感じた場合は直ちに調査し、必要に応じてrebokeして下さい。全て可視化されてます。フェアです。これぞWeb 3.0!
■結論
Web 3.0の定義に従い、全てを可視化する為にも「最終的には独自コントラクトに移行した方が良い」「自分の作品を守るための鍵は、全て自分の手の届く範囲に置くべきである」「最終的に独自コントラクトは、あなたの作品の履歴書になる」です。
ただし、今日明日変更しなければ、即座に財産を失くす訳ではない為、十二分に検討と検証を重ねた上で移動しましょう。
■とはいえ「独自コントラクト」作成時の設定パラメータは多すぎるので
「独自コントラクト作成支援サイト」的なものが公開されています。積極的に活用して行きましょう。
ETHの場合
Manifoldの使い方、本来の意味での「独自コントラクト」定義については、✌️🐷✌️様( https://twitter.com/PigThePersona )作成の下記サイトをご確認ください。
Polygonの場合(ここ以外、知りません)
(補足)本来の意味での「独自コントラクト」を設定する為には、以下のブログで紹介されているようにプログラミング&サーバ構築が必要になります。ただし、高度な知識が必要な上に、失敗すると致命傷なのでプログラマー以外の方にはお勧めしません。特にNFTアートクリエイターの方々の本業は「作品を世に生み出す事」です。時間は有限です。素直にWebGUIサイトを使いましょう!
OpenSea以外の(重要)マーケットプレイスで「Collection」を作成する事によって、独自コントラクトを簡単に立ち上げる事も可能です。
個人的には、Foundationがお勧め。
ただし、まだまだ制限あり、詳しくは以下を参照です。
https://help.foundation.app/hc/en-us/articles/4419475117083-FAQ-Foundation-Collection
■【おまけ】Foundationの方針変更「共有コントラクト廃止」
本題からは少し外れるのですが、1月28日にFoundationが共有コントラクト上へのNFT mintをサポート終了しました。一連のツイートが素敵なので、メモを残しておきます。
本日はここまで。
ではでわ!!
次のお話