いやもう分かってしまえば「書いてある通りだよね」「なんでそんなことも分からなかったの」って感じなんですけど、自分みたいな人のためにメモしておきます📝
32文字のハッシュ – 多くの場合、これはミント番号とメタデータのマッピングを持つキャッシュファイルのハッシュで、ミントの完了時に順序を確認することができます
by Deeple翻訳
ポイントとしては
「hiddenSettingsを設定した状態だと、Revealするまでは中に何が入っているか”確定”していないので不正ができてしまう」
でした。
例
分かりやすいように例を出します。
たとえば、私がポケモンのmintサイトをつくるとします。
そのmintサイトは以下のような仕様だとします。
- 合計3回だけmintできる
- mintできるNFT画像は、「ヒトカゲ」「ゼニガメ」「フシギダネ」の3種類
このとき、hiddenSettingsを以下のように設定しておくと
"hiddenSettings": { "name":"what kind of Pokemon? ", "uri":"たまごの画像のURL", "hash":"44kiGWWsSgdqPMvmqYgTS78Mx2BKCWzd" //この時点ではhashは無視してください }
mintされるNFTは
- what kind of Pokemon? #1
- what kind of Pokemon? #2
- what kind of Pokemon? #3
みたいになります。
そしてRevealすることで
- pokemon #1
- Pokemon #2
- Pokemon #3
という感じで名前が変わり、画像自体も「ヒトカゲ」「ゼニガメ」「フシギダネ」のものに変わります。
ここでポイントなのは、mintされた時点(Revealされる前)では、中に何のポケモンが入っているか確定しているわけではないという点です。Revealされた時点ではじめて”確定”するのです。
たとえば、#1のNFTをmintしたのがユーザー1だとします。
そして企画者である私がユーザー1と友達だった場合、Revealする際に「ユーザー1はヒトカゲが好きだから#1の中身をこっそりヒトカゲにしておこう」・・・みたいなことができてしまうのです。
このような不正を防ぐための設定が「hash」です💪
たとえば事前に
- pokemon #1:ヒトカゲ
- Pokemon #2:フシギダネ
- Pokemon #3:ゼニガメ
みたいに「この番号にはこのポケモンが入っている」という一覧表を作っておきます。そしてその一覧表のファイルをハッシュ化して、hashとして書き込んでおきます。
あとはReveal後にその一覧表を公開することで、ユーザーはその一覧表をハッシュ化することで「たしかに不正してないね」という確認ができる・・・という理屈です。
要するに、このhashプロパティはmintしてくれるユーザーに対して誠意を見せるための設定だったわけです。なので仮に設定していなくてもCandy Machine自体は問題なく動きます。
勘違いしてた原因
自分が勘違いした原因は、以下の2点でした。
- candy machine自体にRevealするための機能があると思いこんでいたこと
- Revealする前のhide機能はあるのに肝心のReveal機能がないなんて思わなかったんだぜ・・・。
- ちなみにGItHubのぺージには「近々、Revealするための機能も組み込む予定だぜ」みたいなことが書かれてました。
- mintされた時点で「この番号にはこのポケモンが入っている」なメタデータもオンチェーンのどこかに保存されていると思いこんでたこと。
あと勘違いしてることに気づいたキッカケは以下の記事です。
https://monadical.com/posts/candy-machine-mint-and-reveal.html
この記事の最後のほうで「candy machineにはメタデータを改変する機能は用意されていないのでmetabossというサードパーティツールでムリやりメタデータを改変します」みたいな話が出てきて、「え?どゆこと?・・・あ!もしかして俺勘違いしてたんじゃね」ってなったのでした。
おわり
コメント