この記事は、Qiita「Code Interpreterを使用してコードの生成とNFTの取引データの分析をしてみよう!」の内容を元に、実際に分析をしてみた結果を記載しています。
NFTプロジェクトの分析ツール「Dune」
Duneとは?
![953fa7ca-fe61-4e8c-9e8c-dc534739b8fd_1752x774.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/1176829b-5bd4-6d2f-af63-628d536d7c57.png?w=920&ssl=1)
Duneとは、無料で利用できるブロックチェーンデータの分析ツールです。(コチラです)
PostgreSQL DBに集約されたデータに対して、クエリを実行することで、誰でもデータ抽出を行うことができます。
このツール「Dune」をつかうと、オンチェーンの取引をリアルタイムに分析することが可能で、さまざまなアナリティクスに活用されています。
一方で「どんなデータが欲しいのか」、SQLを書くことでDBから抽出する必要があるため、SQLを扱ったことがない方、プログラミングに慣れていない方には、少し難易度が高いように感じます。(私が、このツールの存在を知りながら、なかなか手をだせなかったのも、これが理由です)
そこで、今回は最低限のSQLをコピペするだけで、データを抽出し、ChatGPTの「Code Interpreter」を使った分析まで、やってみたいと思います。
特に、「特定のPJ」の取引量を分析する方法としては、すぐにでも実践可能です。
気になっているPJがある方は、ぜひお試しください。
準備篇:Duneのはじめ方
まずは、Duneのアカウント開設と分析の準備編です。
※以下①〜②は、Duneのアカウントを持っていない方向けとなります。
①下記へアクセスし、「Sign up」を選択します。
Duneホーム画面: https://dune.com/home
![スクリーンショット 2023-07-17 16.42.56.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/6d4258ed-201a-76ad-1123-4b2ede23841d.png?w=920&ssl=1)
②ユーザーネーム/メールアドレス/パスワードを入力し、登録します。
![スクリーンショット 2023-07-17 16.44.25.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/84825ebc-55df-8a1f-5988-d82ba8e9da29.png?w=920&ssl=1)
③アカウント開設後、ホーム画面(ダッシュボード)へ戻り、「+」ボタン >「New query」を選択します
![スクリーンショット 2023-07-17 16.45.35(2).png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/93683cef-13d7-0378-b104-04643117a9fa.png?w=920&ssl=1)
④黒い部分に、下記に示した「分析用のクエリ」をペーストし、「RUN」を押します。
![スクリーンショット 2023-07-17 16.47.58.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/71cf0a2c-7f58-cbc8-a1e5-0ddf8336f2ca.png?w=920&ssl=1)
分析用のクエリの作り方
今回は、"CC0のカエル"でお馴染み「CrypToadz」を題材として、分析を行ってみます。
※実は…わたしが、個人的に一番欲しいNFTでもあります。
![スクリーンショット 2023-07-17 16.52.52.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/fdb8e423-c71b-09d8-9e2a-01e5e5a5f45b.png?w=920&ssl=1)
【CrypToadz】
https://opensea.io/collection/cryptoadz-by-gremplin
下記のフォーマットのコードを用意します。
※コチラをコピーして、コントラクトアドレスの部分を、調べたいNFTコレクションのものへ差し替えて使用してください。
select
*
FROM
nft.trades
where
nft_contract_address = 0x1CB1A5e65610AEFF2551A50f76a87a7d3fB649C6
「CrypToadz」の分析用に作成したSQLは下記となります。
![スクリーンショット 2023-07-17 16.52.27.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/7cbe74bd-2e9e-30ce-d3c6-598a7a0972e9.png?w=920&ssl=1)
・参照するテーブルは「nft.trades」を指定しています。
・「CrypToadz」のコントラクトアドレスが「0x1CB1A5e65610AEFF2551A50f76a87a7d3fB649C6」なので、このアドレスを指定しています。
【コントラクトアドレスの調べ方】
NFTの「Details」内の「Contract Address」から入手することが可能です。
![スクリーンショット 2023-07-17 16.53.46.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/557f61d5-1ce7-9dba-6d81-1467da9711d8.png?w=920&ssl=1)
さきほどのSQLを作成、ペーストできたら、右下の「RUN」ボタンを押して、クエリを実行します。
※「RUN」ボタンを押してから、クエリ完走まで、少しだけ時間がかかります。
![スクリーンショット 2023-07-17 16.47.58.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/71cf0a2c-7f58-cbc8-a1e5-0ddf8336f2ca.png?w=920&ssl=1)
クエリが実行されると、先ほどの黒い画面の下にデータが表示されます。データ部分の右上から、csvとして出力をしてみましょう。
![スクリーンショット 2023-07-17 17.15.03.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/c71b5465-38f6-9811-13d8-1b0494b2cf32.png?w=920&ssl=1)
ここまでの実践で、Duneを使って、特定のNFTプロジェクトに関するデータセットをcsvとして出力することができました。
次は、このデータセットを使って、ChatGPTで分析をしてみましょう。
さぁ実践!:ChatGPTでの分析へ
ここからは、Duneで出力した「CrypToadz」に関するcsvを、ChatGPT「Code Interpreter」を使って行います。
ここで使用するプロンプトは、そのまま使えると思いますので、ぜひ参考までに。
復習はコチラから
※ChatGPT「Code Interpreter」とは?
▶「Code Interpreter」の使い方は、コチラの記事をご覧ください。
「Code Interpreter」とは、ChatGPTでPythonでの処理ができるようにするもので、ファイルのアップロードやダウンロード機能も使えるようになります。Pythonでできることは、ざっくり挙げると…
- Word/Excel/Powerpointなどのオフィス系ファイルの加工
- PDFファイルの作成
- 画像加工
- 動画加工
- データ分析
- 機械学習
- 自動化プログラムの作成(処理速度遅め)
つまり、このあたりの操作がChatGPTを通してできるようになる、という理解でOKです。
ここで使うのは、Pythonで可能な「データ分析」領域の機能、ということになりますね。
Duneで得たcsvには、どんなデータが含まれるのか…?ChatGPTに聞いてみましょう。
このCSVは、NFTコレクション「CrypToadz」の取引に関するデータセットです。このデータセットを解析してください。
ChatGPTの回答はコチラとなります。
![スクリーンショット 2023-07-17 17.25.16.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/3c4a9c4c-34b8-0612-7648-1d478dec2ae1.png?w=920&ssl=1)
このデータセットからは、このテーブルに含まれる項目であれば分析できそうだ、ということが分かります。
今回は、「1日の取引量」「時間帯による取引量」「曜日による取引量」「高額取引が発生する傾向」を分析してみます。
※使用したプロンプトは下記となります。
データセットを解析して、以下の条件で結果を図示し、出力してください。
#出力条件
・1日の取引量
・時間帯による取引量
・曜日による取引量
・高額取引の発生頻度と時間帯の相関関係をヒートマップで出力
・高額取引の発生頻度と曜日の相関関係をヒートマップで出力
ただし、時間帯は、昼間(9:00-17:00)、夕方(17:00-21:00)、夜(21:00-5:00)、早朝(5:00-9:00)とします。
高額取引は、直近の5取引の平均金額よりも25%以上高い金額であれば、高額と判定してください。
![スクリーンショット 2023-07-17 17.30.46.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/2b71b916-5495-6b6c-2cf0-b145c5840c70.png?w=920&ssl=1)
分析結果:「CrypToadz」の傾向
さきほどのプロンプトから、下記の図を得ることができました。分析結果と合わせて、記載をしてみます。
![nft_transactions_analysis.png](https://i0.wp.com/qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/5bdeec16-7248-c348-921a-a0fd8db40985.png?w=920&ssl=1)
【日次取引額】
このグラフは日々の取引額を示しています。一部の日で、取引額が急増していることが確認できます。
【時間帯別取引額】
このグラフは時間帯ごとの取引額を示しています。早朝の取引額が最も多いことがわかります。
【曜日別取引額】
このグラフは曜日ごと(0:月曜〜6:日曜)の取引額を示しています。一部の曜日に取引額が多い傾向が見られます。
【時間帯と時間による高額取引の発生頻度】
このヒートマップは、時間帯と時間ごとの高額取引の発生頻度を示しています。一部の時間帯と時間に高額取引が集中して発生していることが確認できます。
【時間帯と曜日による高額取引の発生頻度】
このヒートマップは、時間帯と曜日ごとの高額取引の発生頻度を示しています。特定の時間帯と曜日に高額取引が集中して発生していることがわかります。
この分析からは取引量の推移と、「木曜日の早朝に取引が増える傾向にある」ということが分かりました。
つまり、もし「CrypToadz」で何か売買のアクションを起こすのであれば、水曜の深夜〜木曜の午前の時間帯は、非常に重要である、ということです。(あくまで、過去のデータが示す傾向です)
まとめ
今回は、CC0のカエル「CrypToadz」を題材に、NFTプロジェクトの取引に関する分析を実践してみました。
直近の取引などを、OpenSeaの履歴で確認することから、一歩踏み込んだ分析をしてみたい方には、めちゃくちゃオススメです。
最後に。私が最も伝えたいことです。全てのNFTプロジェクトには、運営者の思いが詰まっています。
並並ならぬ労力をかけて準備をし、「うまくいくのかどうか…」先行きの分からない勝負に挑んだ結果、こうして一つのNFTプロジェクトとして存在しています。
フロア価格や取引量だけ追い、一喜一憂するのではなく、どんな歴史を歩んできたのかも含めて、ぜひ眺めてみてください。