今流行りの独自コントラクトとは何か
最近NFT界隈でよく目にする「独自コントラスト」についてまとめていきます。
最近Foundation側でも共有コントラクトでのMintのサポートを切るという話もあり話題になっていたんじゃないかなと思います。
今回のテーマは「独自コントラクトとは」なのですが、これをお話しするにあたり
独自コントラスト、共有コントラクト、スマートコントラクトについてお話をしていきます。
スマートコントラクトについて
スマートコントラクトとは、
ブロックチェーン上で、ある命令を元に自動実行を行うための仕組みです。
OpenSeaを例に説明をすると、作品の画像を添付してタイトルや概要、ステータスなどを入力する事でNFTが発行されますよね。
実は、本来NFTを発行するための手順はもっと複雑で難しいものとなっております。
具体的には「Solidity」という高級プログラム言語を用いてEthereum上にスマートコントラクトを開発する必要があります。
共有コントラクトとはなにか
OpenSeaなどのマーケット側でスマートコントラクトを定義しておいて
それを呼び出す事で誰でも簡単にNFTをMint出来るようにしているのが共有コントラクトとなっています。
流石ノめんさんの作品のDetailsを確認してみましょう。
詳細を確認すると「OpenSea Shared Storefront (OPENSTORE)」となっていますね。
つまりマーケット側の保有している1つのコントラクトアドレスが契約元となっています。
簡潔にまとめると「コントラクトアドレスを間借りしているケース」が共有コントラクトと言うものになります。
1つのコントラクトアドレスに複数のNFTが紐づいている為Etherscan上でだどっても元の所有者や作成者を確認することが出来ません。
メリット
スマートコントラクトを定義しなくてもマーケット側がいろいろやってくれてるので面倒な手続きが不要でNFTを発行することが出来る。
最悪何かあったとしてもマーケット側に問い合わせすれば対応してくれる。
デメリット
OpenSeaがサービス終了する際にコントラクトアドレスを破棄することになった場合作品が無くなる可能性がある。
契約内容が変更されるケースがある。
NFTの知名度が上がったとしてもブロックチェーン上に刻まれている情報はOpenSeaなどのマーケット情報になるので自分には繋がらない。
独自コントラクトとは
自分自身のウォレットアドレスを契約元にして「NFTに関する手続きコントラクト」を全て自分自身で行っているケースを指します。
つまりスマートコントラクト編でお話をした
「Solidity」という高級プログラム言語を用いてEthereum上にスマートコントラクトを開発した状態を指します。
Dooplicatorさんの作品を見てみましょう。
先ほどのOpenSeaの共有コントラクトの時とは違い、Dooplicatorさん自身の情報が書かれています。
ここに書かれているTransactions履歴は自身の取引の履歴になるので、つまりはEthereum上の活動の履歴となります。
まとめ
独自コントラクトを始めるには様々な設定パラメータの入力やプログラミング、サーバー設置が必要になってきます。
自分の活動の状況を自身のウォレットを元としたコントラクトアドレスに刻むことでWeb3らしさが出てくるのでは無いでしょうか。
つまりは独自コントラクトにすることによって自分の作品の生きた証を作ることが出来るのです。
とはいえ、今すぐに独自コントラクトにしなければならないのかというとそういうわけでは無いので自分の時間や労力との調整が必要かなと思います。
また、OpenSea以外のマーケットでいくとFoundationなんかでコレクションを作成する場合は独自コントラクトを簡単に立ち上げることが可能だそうです。
本来はスマートコントラクトなどを自分で頑張る必要がありますが、
様々なフレームワークを活用したり独自コントラクトを作成する支援ツールなんかもあったりするのでそれらを有効活用してみてください。
スマートコントラクトの内容について
スマートコントラクトというのは、何かのアクションを起因としてプログラムを実行させるというところが重要になってきます。
つまりこれを悪用しようと
OpenSeaに存在するunhideやtransferをアクションとしてWalletにある残高を別のWalletに転送させるというプログラムも書けてしまう訳です。
見たことも聞いたこともないですが理論上できると思います。
そんな訳の分からない事をされると困るので基本的に契約内容に関しては公開するのが義務となっています。
全ての情報が可視化されている状態がWeb3のいいところですね。
OpenSea: https://etherscan.io/bytecode-decompiler?a=0x495f947276749ce646f68ac8c248420045cb7b5e
Dooplicator: https://etherscan.io/address/0x466cfcd0525189b573e794f554b8a751279213ac#code
Discussion