見出し画像

最近のNFTのソースを読む旅

NFTを作ろうとすると、他ってどうやってるのかなーって思うことがあります。Ethereumだとコードがそのまま読めるようになっていたりするので、どうやって実現しているのかを見ていきます。

Reveal

最近の大きめのやつだとよくある、最初の販売が終わってから1日後とかに実態がわかるやつです。SEVENとかSVSとか0xVampireとかでやってました。ちなみにどれも買えてません。

ちょうど販売開始してrevealされていない、The Gods NFTsを調べてみました。

Contract Address
https://etherscan.io/address/0x2cfcbf304415d87611e89fd284ed362cf6ba5141#code

本体は1253行目からですね。というか、1つのソースにライブラリを全部入れるのが良いのかな・・・ガス代的に?

特にこの中にrevealする機能があるわけではなさそうです。

次に、tokenURIを見てみます。ifpsのファイルが返ってきました。

画像1

ブラウザのBraveだと見れるみたいなので、インストールして見てみます。

{
  "title":"Gods",
  "name":1,
  "description":"The Gods are 5000 generative characters, with hand drawn traits created by our team of 80 illustrators. The Gods have to come together from 11 different galaxies to create the new universe.",
  "image":"ipfs://QmYL9EoRNEaLSrYhfG1eicW3uF6MiBQZTdjHdP6ap5tkpQ",
  "attributes":[
     
  ]
}

imageのURLがさらにipfsで帰ってきて、attributesは空っぽです。

imageのURLを見てみると、Openseaに表示されている画像が表示されました。

この時点でattributesに属性が入っていると中身がわかってしまうので、この時点では空っぽなんですね。

というか、スマートコントラクト上には誰が何番を持っているかだけを載せていて、そこから参照するmetadetaを変更することでrevealも属性も実現しているという感じですね。

念のため他のやつも見てみます。GRILLZ GANGにします。

https://etherscan.io/address/0xbd9071b63f25dd199079ed80b3b384d78042956b#code

読まれることを意識したコードになっていて期待できます。こっちのコードがライブラリが分かれてる・・・。どっちがいいのかな。

やはりスマートコントラクトには、そういう機能は入ってなさそうです。

tokenURIを見てみます。やはりattributeが入ってないです。あれ、imageが入ってないですね。どうやって設定しているんだろう。

{
  "name":"GRILLZ GANG #1",
  "description":"GRILLZ GANG is a collection of 5,555 unique GRILLZ NFTs shining on the Ethereum blockchain. In addition to lighting up the room, your GRILLZ will grant you membership to GRILLZ GANG. Every Grillz is a key to the community. Visit grillzgang.com for more details."
}

調べたけどわからなかった・・・。まあでも、tokenURIで返ってくるURLに入ってるjsonファイルで制御している、ということはわかりました。

ホワイトリスト

コミュニティで貢献してくれた人やクイズをやって正解した人とか、そういう人に、一般販売よりも先に購入する権利を与えて買ってもらう仕組みです。

これはスマートコントラクト上で表現されてますね。

GRILLZ GANGだとearlyMintAllowance辺りですね。earlyとかpresaleとか、そんな感じの関数で書かれてます。The Godsのやつはpublicだしaddressのチェックもしてないから、もしかしてAPIを直接たたいたら使えたんじゃなかろうか・・・。

色々な通貨で払う

あまり見たことはないですが、Rugstore.IOがやってました。コードを見てみます。

https://etherscan.io/address/0x868193f5743436b7052549e6a3640580a9355f27#code

mintRugWithDog とか mintRugWithAgld とか、通貨ごとにmintのメソッドがありますね。コードを読んでも何故それで払えるのかはわからなかったのですが、そういう事も出来るんだなーって感じです。


とりあえずはこれくらいで、他にもあったら足していきます。


いいなと思ったら応援しよう!