見出し画像

【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

https://opensea.io/assets/0x495f947276749ce646f68ac8c248420045cb7b5e/23313208483802283135666443883800867521842685144162947101067955514838941171713

ここをクリックします。

この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欄に永久に残ります。まさに、あなたの活動履歴ですね。

(参考)
「u-nagiworks(UNAGI)」コレクション ID 2の作品:
https://opensea.io/assets/0x4b214ab4f9f32d26ebd453b62bc010f8b8c2eaa3/2

「u-nagiworks(UNAGI)」コレクション ID 3の作品:
https://opensea.io/assets/0x4b214ab4f9f32d26ebd453b62bc010f8b8c2eaa3/3

そうです、親子関係が明確なので、OpenSeaのURLリンク的には、末尾の数字が変わっているだけです。

最後に確認すべきは、契約内容。

ソース公開されておりますので、該当の「独自コントラクト」が怪しいと感じた場合は直ちに調査し、必要に応じて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をサポート終了しました。一連のツイートが素敵なので、メモを残しておきます。


本日はここまで。
ではでわ!!


次のお話


この記事が気に入ったらサポートをしてみませんか?