【STEPN】虹靴の数を知るマル秘な方法
【2023/11/1 公開から一年経ちましたので無料に変更しました】
虹靴が解禁されて10日経ちましたね。
賛否両論かなりの盛り上がりをみせていますね。
私は余裕があまりなく一度もエンハンスできてないし、当然虹靴も持っていません(泣)
ただ虹靴については誰よりも調査しているという自負はあります。笑
ところで今世界中で虹靴は何足出回っていると思います?
アンケートを取ったところ思いのほか意見が割れましたね。
実は私は正確な数を知っていまして
10/21(金)23時現時点で、89足排出されています。
(アンケート開始時点では82足だったかな?)
なので75~100足が正解です!
ちなみに日々の虹靴靴排出量(一部推定あり)は以下の通りです。
なぜこのような数字が出せるのか、知りたい方は以下限定記事をどうぞご覧ください。調査に結構な手間もかかっているので有益、かつ面白い内容だと思います。ただ、大勢が知るのは色々な意味で良くないと思い以降は限定にしています。
3.5 GMT(250円)で読めるのでぜひ。
気に入らなかったら返金歓迎です。
その代わり面白かったらシェアお願いします🙇
発見①:虹靴の個体番号
虹靴にNFT番号とは別に個体番号があるのはご存じでしょうか?
虹靴自体は同じ見た目ですが、実は一つ一つの虹靴に刻まれる数字が違うため画像データは異なります。そして、実は未排出の靴も含めすべての虹靴の画像データにネットからアクセスできます。
https://res.stepn.com/imgOut/101/101/6052001_1.png
このリンクの最後の数字を変えるだけで50,000足用意されている虹靴の画像データにすべてアクセスすることができます。
例えば50,000番目の虹靴はこれです↓
https://res.stepn.com/imgOut/101/101/6052001_50000.png
面白いのがこの番号順に排出されていっており、1~89までは既に出回っている靴のデータになります。
発見②:靴の誕生日データ
多くの人がSTEPNアプリ内のマーケットで靴を見ていると思います。あまり知られていませんが、実はマーケット上では公開されていない隠れた情報をWebAPIから読み取ることができます。
補足(WebAPIの使い方)
PCのGoogle ChromeでSTEPN marketに出品されている虹靴を開き右クリックで「検証」を押します。出てきた画面の中で"network"タブのorderdata?…. を選択します。開いた画面の中の黄色い部分に記載されているRequest URL(https://api.stepn.com/run/orderdata?orderId=…)をコピーして開くと、出品靴の詳細データを見ることができます。
とある虹靴の出品データを取り出してみると…
"breedT":1665544706950
"otd":188500544
"hpLimit":100
"isTest":false
"shoeImg":"101/101/6052001_1.png"
例えば、"otd"は靴のNFT番号であり、"breedT"というのは虹靴NFTが誕生した時間を表しています。なじみのない数字列ですが、UNIX時間という形式です(協定世界時での1970年1月1日午前0時0分0秒からの経過秒数)。
この例(1665544706950)でいうと、2022/10/12 12:18:27 を表します。
ピンと来た人もいるかもしれませんが、これはミント第1号世界初の虹靴の出品情報を取り出したものになります。ちなみに"shoeImg"は画像データのリンクが書いてあり、最後の数字(_1.png)を見るとミント第何号かわかっちゃうということです!面白いですね。
つまりマーケットに出ている靴に関しては、ミント何号がいつ誕生したのか特定できるのです。従って、最新の出品をみると現時点でおおよそ何個排出されたかというデータを集めることができます。
しかし、マーケットに載るのは全体の一部の靴なのでデータ収集にはもう一声ほしいところ。
発見③:みんな靴の個体番号を隠し忘れている
Twitterで虹靴が出たよ!と自慢する人はたくさんいます。気を遣っている方は、靴のIDを隠して画像を投稿しています。しかし、靴の個体番号(画像に載っている番号)を隠している人は滅多にいません。
Twitterの投稿時間と虹靴のIDの組み合わせたデータであればたくさん収集できます。これらのデータを②で集めたデータの補強に使うことができます。
データ構築編(少々技術的な内容あり)
実際はここまでする必要ないと思いますが、個人的に扱いやすいようにするために。あわよくば何かしら虹靴の傾向がつかめたらいいなと期待しつつ次の手順で靴の個体番号のリストを取得して管理します。
全虹靴の画像データをダウンロード
画像から個体番号の抽出
個体番号と対応する生成時の記録(分かるものについて)
順番に紹介していきます。
1.全虹靴のデータをダウンロード
まずはスクリプトで50,000件の靴の画像データをダウンロードします。(プログラムかける人なら一瞬で書けます※)
※試す人はサーバに負荷を与えないようにSleep処理は必ず挟んでください
2.画像から個体番号の抽出
画像から番号の位置を切り出したのち、画像から文字情報への変換を行います。OCRという技術を使えば簡単に数字を取り出すことができます。ネットで適当に拾ってきたコードを改変して実行しました。
(すごく細かい話もすると、認識のロバスト性を上げるために①背景除去②グレースケール化③画像-45度回転④番号位置切り出し、という前処理を挟んでいます。)
これで楽々5万件の靴の個体番号のリストを取得することに成功しました。
3.個体番号と対応する生成時の記録
あとは地味な作業ですが、ちょこちょこマーケットで確認した靴の誕生時間とNFT番号を表の対応する個体番号の行にメモしていきます。仕事が忙しい時期であまり見れなかったので一日に2回くらい収集していました。
スプレッドシート上では、以下の関数を使ってUNIX時間を日本時間に直して記載しています。
=セル位置/(24*60*60*1000)+DATE(1970,1,1)+TIME(9,0,0)
さらに、マーケットで確認して生成時刻が確定したもの以外にも、Twitter上で報告されている情報を見てデータを補強していきました。ただ、刻印番号はめちゃくちゃ小さいので探していると目が悪くなりますね(泣)
画質が悪いものについては、雰囲気で候補番号と照らし合わせて読み取っていきました!
【参考】虹靴ホルダーのリスト↓
https://twitter.com/i/lists/1582742294427447297?s=20
それでも埋められないセルについては線形に時間補完した結果、こちらのグラフの結果が得られます(冒頭と同じもの)。
ところで予想通りではありますが、虹靴の排出量が日に日に落ちて行っていますね。最近だと1日あたり4~5足しか排出していません。明らかにエンハンスが減った影響が出ていますね。虹靴ホルダー達にとっては朗報かもしれません。獲得GMT効率も徐々に安定してきそうです、うらやましい!
その他気付き
マーケットを眺めていて面白かったのが、多くの人が似たムーブをとっていた点です。マーケットに並ぶ虹靴は基本的に生成されたて(1~2日以内)のホヤホヤが多く、みんな虹靴が出るといったん高値で出品する傾向にありました。その後、売れたのか取り下げて歩き始めたのかはわかりませんが、マーケットから姿を消して二度と現れなくなります。一度でも歩くと出品できなくなるという性質上こうなるのでしょうね。
ただ不思議だったのが、一件だけ例外がありました。なぜかミント第一号がかなり遅れたタイミング(10/20頃)で出品されるという現象が起きていました。基本的には最新に近いものしかマーケットに上がらない中、突如最古の靴が出現したのです。もしかして運営がホルダーだったのか?と睨んでいます。数多い爆益報告をスルーして10/19までサイレントのガチホする動きはあまりにも理解不能です!
まとめ
私は実はかなり序盤からこのような情報収集をしていました。当初のモチベーションとしては、靴の個体番号の謎を解明したい!というのと、虹靴が出やすい時間帯とか分析したい!でした。残念ながらギルさんの情報通り虹靴は固定確率で出る仕様のようなので当たりやすくする裏技はなさそうです。
個体番号については今だに本来の用途が不明で、ずっと考えています。最初に思いついたのは、虹靴のHPが尽きた時に刻印番号がNFT番号に含まれる
他の靴を合成するとHP回復できる、、とか。
ただ、個体番号が8桁なのに対してNFT番号は9桁なのでどこかしっくりこず…
全データ保有しているのでヒットする靴があるのか全件探索しようかとも考えましたが、面倒くさくまだやっていません。
個体番号の用途について何かしらピンときた方がいらっしゃいましたらぜひコメントでシェアしてもらえると嬉しいです!
(2022/10/23 追記)
想像以上の反響がありびっくりしています。
STEPN大御所の方々や虹ホルダーの方々にも読んでいただき、また追加でサポートを送ってくださった方本当にありがとうございます!
当初は無料公開しないと誰にも読んでもらえないだろうし、最初から無料にするかすごく悩みましたが…
・運営が意図していない方法かもしれないので何となく公にしたくない
・大勢が知るとスクレイピングでサーバに負荷かける人がいるかもしれない
といった理由で初の試みで有料記事にしました。
(決して小銭を稼ごうという下心があったわけではありません!決して!)
序盤の書きっぷりだけだとただの怪しい記事にしか見えませんが、見ていただき本当にありがとうございました!
情報を公開しようと思った最大の理由は、このデータを使ってコミュニティの皆さんに考察を深めて盛り上げていきたいなと思ったからです。
おまけ:個体番号リスト(~128番目)
せっかく記事を購入いただいたのでこちらも掲載します。今出回っている虹靴に刻印されている個体番号をここで探してみると、とりあえず第何号かわかるのでお試しください。OCRが失敗していない限りは正確なはずです。
ちなみにS国・B国・E国で虹靴管理は共通なので当然混ざっています。
私の観測した範囲では大半がS国で、E国は0件、B国3件だけでした。
# stamp
1 43456984
2 70875196
3 98293408
4 35711621
5 63129833
6 90548045
7 27966258
8 55384470
9 82802682
10 20220895
11 47639107
12 75057319
13 12475532
14 39893744
15 67311956
16 94730168
17 32148381
18 59566593
19 86984805
20 24403018
21 51821230
22 79239442
23 16657655
24 44075867
25 71494079
26 98912291
27 36330504
28 63748716
29 91166928
30 28585141
31 56003353
32 83421565
33 20839778
34 48257990
35 75676202
36 13094415
37 40512627
38 67930839
39 95349051
40 32767264
41 60185476
42 87603688
43 25021901
44 52440113
45 79858325
46 17276538
47 44694750
48 72112962
49 99531174
50 36949387
51 64367599
52 91785811
53 29204024
54 56622236
55 84040448
56 21458661
57 48876873
58 76295085
59 13713298
60 41131510
61 68549722
62 95967934
63 33386147
64 60804359
65 88222571
66 25640784
67 53058996
68 80477208
69 17895421
70 45313633
71 72731845
72 10150058
73 37568270
74 64986482
75 92404694
76 29822907
77 57241119
78 84659331
79 22077544
80 49495756
81 76913968
82 14332181
83 41750393
84 69168605
85 96586817
86 34005030
87 61423242
88 88841454
89 26259667
90 53677879
91 81096091
92 18514304
93 45932516
94 73350728
95 10768941
96 38187153
97 65605365
98 93023577
99 30441790
100 57860002
101 85278214
102 22696427
103 50114639
104 77532851
105 14951064
106 42369276
107 69787488
108 97205700
109 34623913
110 62042125
111 89460337
112 26878550
113 54296762
114 81714974
115 19133187
116 46551399
117 73969611
118 11387824
119 38806036
120 66224248
121 93642460
122 31060673
123 58478885
124 85897097
125 23315310
126 50733522
127 78151734
128 15569947