【MintされていないNFT?】Adam byGMO で購入したNFTはブロックチェーン上に存在しない?
NFTを知れば知るほど、その実態が曖昧なものに感じます。
Adam byGMO は日本円を使ってNFTを購入できる、NFTデビューに適したマーケットプレイスです。Adamにログインすると自分の購入した作品の一覧を眺めることができます。
また、作品ページには Contract Address と Token ID が記載されており、Contract Address は Etherscan へのリンクとなっています。
しかしながら、そのEtherscan を覗いても作品がMint(ブロックチェーン上にNFTを生成)されている形跡がみつかりません。
私が購入したものは何だったのだろうか。
その謎を解明するため、私はEthereumの奥地へと向かった。
Adam byGMO の作品ページ
これがAdamの作品ページです。
(作品に対する誤解を招かないようにグレーにマスクしてます)
赤枠で囲った箇所に Contract Address と Token ID が記載されています。
明確な説明はありませんが、この作品がMintされているスマートコントラクトと、この作品の トークンID であると読み取れます。
ちなみに、確認できる範囲では Adam に出品されている作品はすべて同じ Contract Address が記載されています。
Contract Address は親切に Etherscan へのリンクとなっています。
https://etherscan.io/address/0xb30fc2d754c88c451275b743b6f530f19f643683
Etherscanを見ていきましょう。
Etherscanから履歴を追う
スマートコントラクトのToken Tracker: は Adam byGMO (ADAM) となっています。
Adamが発行したスマートコントラクトであることがわかります。
すべての取引履歴(トランザクション履歴)が公開されているのがブロックチェーンの特徴であり、Etherscanではそれがビジュアル化されています。
トランザクションは全部で10件(2021年12月22日現在)。
2021年8月19日にこのスマートコントラクトがデプロイされ、2021年10月14日を最後に2ヶ月以上トランザクションがないことがわかります。
次にコントラクトではなくTokenを確認してみます。
https://etherscan.io/token/0xb30fc2d754c88c451275b743b6f530f19f643683
21件のMintがなされた履歴が見つかります。
ただ私が購入した作品の Token ID はみつかりません。
Adamでは日々多くの作品が販売、購入、2次流通されるなど活発に取引がなされています。しかしながらその取引全てがブロックチェーンに書き込まれてはいません。Adamのサーバー上に記録されているだけなのでしょうか?
Mintされていないモノ(いつかMintする予定のモノ?)は果たして NFT なのでしょうか。
ガス代を節約する Lazy minting
実はMintされていない Token ID を出品するという手法は、OpenSea や Rarible といった大手プラットフォームでも採用されています。
Lazy minting と呼ばれる手法で、出品時にはToken IDだけを発行しておき、誰かが初めて購入したタイミングで ERC-721 または ERC-1155 でMintします。
Mintにはある程度のガス代が発生しますが、Mintするタイミングを遅らせることで、まだ売れていない作品のガス代を支払わずに済み、出品者の参入障壁を下げることができます。
売れたタイミングでトークンを生成する、いわば受注生産ですね。
しかしながら、Adamの場合は購入時も、その後の2次流通の段階になってもMintされていないため、いわゆる Lazy minting とは異なります。
Adam からの出庫
Adam には出庫という機能があり、手数料を支払えばAdamプラットフォームの外に作品を持ち出すことが可能です。Adamは ERC-721 を採用していると記載しているため、出庫のタイミングで購入者のアカウントにNFTを送付するには Mint せざるを得ないはずです。
Adamから出庫した作品の累計がMintされている21件なのでしょうか...?
Adam コントラクトの特徴
今度はAdamコントラクトの仕様をみていきます。
Etherscanからコントラクトのソースコードを確認することができます。
Mint処理をみると、パラメータに tokenId を指定できることがわかります。
トークンのID は自動採番(順番に1, 2, 3, ... と割り振る)するコントラクトが多いですが、AdamコントラクトではIDを指定してMintできます。
つまり、作品ページに記載しているToken IDと同じIDを用いて後からMintすることが可能です。
Mint処理 - Adam721.sol:46-49
function safeMint(address to, uint256 tokenId, bytes memory data) external virtual override onlyRole(MINTER_ROLE) {
// to's existence and tokenId's existence is checked in ERC721::_mint(address,uint256) via ERC721::_safeMint(address,uint256,bytes)
_safeMint(to, tokenId, data);
}
もうひとつ特徴的なのが、Token URI(メタデータ) をスマートコントラクトの管理者(Adam)がいつでも自由に変更できること。メタデータをロックする機能がないため、購入後も出庫した後もAdam側がメタデータを変更できる権限を有しています。
Token URI変更処理 - Adam721.sol:55-58
function setTokenURI(uint256 tokenId, string memory newValue) external virtual override onlyRole(MINTER_ROLE) {
// tokenId's existence is checked in _setTokenURI(uint256,string)
_setTokenURI(tokenId, newValue);
}
企業がNFTを運用する際の悩み
他のNFTマーケットプレイスと違い、購入後も Mint がなされないAdamですが、運営側の立場に立つとその理由を想像することができます。
前述したとおり、Mintにはガス代が発生します。作品が自社のマーケットプレイス内に留まっている間のMintを回避できれば、ガス代の節約になります。それどころか購入や2次流通によってNFTの所有者が移動する度に発生するガス代も一切かかりません。
さらに想像を広げて、企業がNFTを運用する方法を考えてみます。
企業が運用するNFTは、当然企業の所有するアカウントに保管します。
さて、その企業アカウントを管理する担当者が離職したらどうなるでしょうか。担当者はアカウントの秘密鍵を知っているため、そのまま保管し続けるわけにはいきません。秘密鍵は変更不可能なため、別のアカウントを発行し、NFTを移動させる必要がでてきます。
そうやって担当者が交代する度にNFTを保管するアカウントを変更していくと、NFTの所有者履歴が汚れていきます。
アーティスト本人が出品した作品を最初に購入したにもかかわらず、EtherscanでそのNFTを確認すると歴代所有者が複数存在したらガッカリするユーザーもいるはずです。
Mintをギリギリまで遅らせることでこれらの問題から開放されることを思うと、この手法を採用する理由もわかります。
最後に
結局、私が購入したものは何だったのか、MintされていないNFTをどう捉えれば良いのか、明確な答えを出すことは難しいです。
そもそもNFTを所有することの意味から見つめ直すべきかもしれません。
本当に購入してもMintされないのか、出庫されるタイミングでMintされるのか等をAdamサポートに問い合わせましたが6営業日を過ぎても回答をいただけていない状況です。また利用規約にもMintタイミングに関する記載はありません。(2021年12月22日現在)
新たな情報を得られたらTwitter等でご報告いたします。
https://twitter.com/CryptoHaim
なお詳しい方がいらっしゃいましたら情報提供いただけますと幸いです。