おはようございます。
web3リサーチャーのmitsuiです。
本日は「Dune Japan」による寄稿記事です。web3 Research JAPANはDune Japanと連携し、今後オンチェーン分析に関する記事を定期的に発信していきます。まずは本日と明日で「Duneに関する基本的な使い方」を発信し、今後は月1~2本を目安にオンチェーン分析に関する記事を更新予定です。ぜひ楽しみにお待ちください!
今回はゼロからわかるDuneを使ったオンチェーン分析の始め方【基礎編】と題して、Duneの基礎的な使い方、機能、SQLの記法紹介をしていきます。
オンチェーン分析は、ブロックチェーン上の情報を誰もが参照・分析することができるため、ぜひ本記事を通してオンチェーン分析の基礎を学んでください。
オンチェーン分析とは
オンチェーン分析の具体例
Duneの使い方
Dune SQLの書き方
まとめ
オンチェーン分析とは
オンチェーン分析は、ブロックチェーン上に記録されたデータを分析することで、暗号資産やブロックチェーンプロジェクトの動向を理解し、洞察を得る手法です。
この分析方法は、ブロックチェーンの透明性と耐改ざん性という特性を活かし、取引、スマートコントラクトの相互作用、ウォレットの動き、トークンの流通などの情報を可視化します。
オンチェーンデータは主にブロックチェーン上のユーザーの取引履歴であり、これらの情報は、透明性の高く、誰でも検証可能な特性を持っています。Web3領域において最も信頼性の高いデータといえ、ブロックチェーンが提供する中立的な技術により、ユーザーはオンチェーンデータを用いて情報の信頼性を自ら検証できるようになりました。
従来のサービスでは、プラットフォーマーが提供する情報に頼ることが一般的でしたが、Web3ではユーザーが透明性の高い取引履歴を直接確認することで、情報の正確性を独自に判断できる環境が整っています。
オンチェーン分析は、投資家、事業者、各プロジェクトのコミュニティ、ユーザーなど、様々な役回りにおいて有用な分析手法となっています。
市場動向の把握、セキュリティ監視、プロジェクトの健全性評価、ユーザー行動の分析など、幅広い用途に活用されています。
オンチェーン分析ツールDuneとは
オンチェーン分析のツールとして今回紹介するDuneは、ユーザーがブロックチェーン上の情報を簡単に加工・収集する手助けをする分析プラットフォームです。Duneの主な特徴は以下の通りです:
独自プログラミング言語Dune SQLを基盤とする分析:ユーザーは馴染みのあるSQLを使用してブロックチェーンデータを分析できます。
リアルタイムデータアクセス:500TB以上の膨大なオンチェーンデータにアクセスし、迅速な分析が可能です。
ビジュアライゼーション機能:分析結果を直感的に理解できるグラフやチャートで表示できます。
コミュニティ駆動:ユーザー間でクエリや分析結果を共有し、すでに、750,000以上のダッシュボードが構築されています。
複数チェーン対応:EthereumやPolygonなど、60以上のブロックチェーンネットワークのデータを分析できます。
Webサイト:https://dune.com
Twitter公式アカウント:https://x.com/DuneAnalytics
オンチェーン分析の具体例
オンチェーン分析は多岐にわたる分野で活用されています。いくつかの具体的な分析例を紹介します。
DEXの取引量分析(https://dune.com/hagaetc/dex-metrics)
分析内容:Uniswapなどの分散型取引所(DEX)の利用状況を把握する。
分析指標:日次の取引量、ユニークユーザー数、流動性プールの規模などを時系列で分析。
NFTプロジェクトの活性度分析(https://dune.com/KARTOD/blue-chip-nfts)
分析内容:特定のNFTコレクションの人気度と取引動向を調査する。
分析指標:日次の販売数、平均価格、ユニーク購入者数、ホールド期間などを分析。
ガス代の推移分析(https://dune.com/hildobby/gas)
分析内容:Ethereumネットワークの混雑状況と使用コストを把握する。
分析指標:時間帯別、日別のガス価格の推移、高ガス代を支払っているプロジェクトの特定。
DeFiプロトコルのTVL分析(https://dune.com/pinkyzane/defi-market-cap-tvl)
分析内容:DeFiプロトコル間の競争状況と成長を比較する。
分析指標:主要DeFiプロトコルのTVL推移、新規ユーザー獲得率、トークン価格との相関を分析。
これらの分析例は、オンチェーンデータを元にアプリケーションやマーケット全体の動向を把握することができる一例です。
次に、このような分析を行うためのツールについて見ていきましょう。
Duneの使い方
Dune Analyticsは、ブロックチェーンデータを分析するためのデータ分析ツールです。ブロックチェーン上の情報をもとにユーザーがさまざまな分析可能なダッシュボードを750,000以上作成しており、自由に参照することができます。
またデータベースを操作するための言語であるSQLの知識があれば、独自のクエリを作成し、豊富なデータを視覚化することができます。以下に、Duneの基本的な使い方を段階的に説明します。
クエリの作成
ログイン後、「New Query」ボタンをクリックして新しいクエリを作成します。
クエリエディタが表示されます。ここでSQLクエリを入力します。
データセットの選択
クエリエディタの左側にあるデータセットリストから、分析したいブロックチェーンとテーブルを選択します。データセットには各コントラクトのトランザクションやカタログされたデータセット、外部から提供されたデータセットなどがあります。
クエリの作成と実行
選択したデータセットに基づいて、SQLクエリを作成します。Dune SQLの記法については後ほど記述しますが、図内では、Ethereum全体のトランザクションデータを選択しています。
クエリを書いたら、「Run」ボタンをクリックして実行します。
結果が表示されます。エラーが出た場合は、クエリを修正して再実行します。
結果の可視化
クエリの結果が表示されたら、「New」ボタンをクリックします。
様々な可視化オプション(棒グラフ、線グラフ、円グラフなど)から適切なものを選択します。
X軸、Y軸、グループ化などの設定を行い、データを視覚化します。
ダッシュボードの保存と共有
作成したクエリと可視化を保存するには、「Save」ボタンをクリックします。
ダッシュボードに名前を付け、説明を加えます。
高度な機能の活用
パラメータ:動的なクエリを作成するために、ユーザー入力可能なパラメータを設定できます。
アラート:特定の条件が満たされた場合に通知を受け取るアラートを設定できます。
Duneを効果的に使用するには、SQLの基本的な知識が必要です。次のセクションでは、Duneで使用するSQLの基本的な書き方について説明します。
Dune SQLの書き方
SQLは構造化クエリ言語(Structured Query Language)の略で、データベースからデータを取得、操作するための標準的な言語です。Dune SQLではTrino SQLをフォークしたものです。
Duneで使用するSQLの基本的な構文と、よく使用される例を紹介します。
SELECT文の基本
SELECT文は、データベースからデータを取得する最も基本的なコマンドです。
SELECT column1, column2
FROM table_name
WHERE condition
LIMIT 10
SELECT
: 取得したい列を指定します。FROM
: データを取得するテーブルを指定します。WHERE
: 条件を指定してデータをフィルタリングします。LIMIT
: 結果の行数を制限します。
集計関数の使用
データを集計するために、以下のような関数がよく使用されます。
SELECT
COUNT(*) as total_count,
SUM(value) as total_value,
AVG(value) as average_value,
MAX(value) as max_value,
MIN(value) as min_value
FROM ethereum.transactions
WHERE block_time >= NOW() - INTERVAL '7' day
COUNT()
: 行数をカウントします。SUM()
: 数値の合計を計算します。AVG()
: 平均値を計算します。MAX()
: 最大値を取得します。MIN()
: 最小値を取得します。
GROUP BY句の使用
データをグループ化して集計結果を得るには、GROUP BY
句を使用します。
SELECT
DATE_TRUNC('day', block_time) as date,
COUNT(*) as daily_transactions
FROM ethereum.transactions
WHERE block_time >= NOW() - INTERVAL '30' day
GROUP BY DATE_TRUNC('day', block_time)
ORDER BY date asc
この例では、過去30日間の日別取引数を計算しています。
サブクエリの使用
複雑な条件や計算を行う場合、サブクエリを使用すると便利です。
SELECT
contract_address,
total_value
FROM (
SELECT
contract_address,
SUM(value) as total_value
FROM ethereum.transactions
WHERE block_time >= NOW() - INTERVAL '7 days'
GROUP BY contract_address
) subquery
WHERE total_value > 1000000
ORDER BY total_value DESC
LIMIT 10
WITH subquery as(
SELECT
contract_address,
SUM(value) as total_value
FROM ethereum.transactions
WHERE block_time >= NOW() - INTERVAL '7 days'
GROUP BY contract_address
)
SELECT
contract_address,
total_value
FROM subquery
WHERE total_value > 1000000
ORDER BY total_value DESC
LIMIT 10
この例では、過去7日間で取引総額が100万を超えるコントラクトアドレスのトップ10を取得しています。
JOIN句の使用
複数のテーブルを結合してデータを取得する場合、JOIN
句を使用します。
with ethereum as(
select
date_trunc('day', block_time) as day,
count(hash) as ethereum_count
from ethereum.transactions e
group by date_trunc('day', block_time)
),
polygon as(
select
date_trunc('day', block_time) as day,
count(hash) as polygon_count
from polygon.transactions p
group by date_trunc('day', block_time)
)
SELECT
ethereum.day,
ethereum.ethereum_count,
polygon.polygon_count
FROM ethereum
left JOIN polygon
ON ethereum.day = polygon.day
この例では、ethereumとpolygonの日毎の取引量を取得しています。
ウィンドウ関数の使用
時系列データの分析や、ランキングの作成にはウィンドウ関数が有用です。
SELECT
DATE_TRUNC('day', block_time) as date,
COUNT(*) as daily_transactions,
AVG(COUNT(*)) OVER (ORDER BY DATE_TRUNC('day', block_time) ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) as moving_average
FROM ethereum.transactions
WHERE block_time >= NOW() - INTERVAL '30' day
GROUP BY DATE_TRUNC('day', block_time)
ORDER BY date
この例では、日別取引数と、その7日間の移動平均を計算しています。
CASE文の使用
条件分岐を行う場合、CASE
文を使用します。
SELECT
DATE_TRUNC('day', block_time) as date,
SUM(CASE
WHEN value/1e18 > 10 THEN 1
ELSE 0
END) as large_transactions,
COUNT(*) as total_transactions
FROM ethereum.transactions
WHERE block_time >= NOW() - INTERVAL '30' day
GROUP BY DATE_TRUNC('day', block_time)
ORDER BY date
この例では、日別の総取引数と、100万以上の大口取引数を別々にカウントしています。1e18というのはtransctionではETHではなくweiという単位で表記されているため、その表記をETHに変換するために10の18上で除算しています。
SQLの関数リスト
ここでは全ての関数を取り扱えず、これ以外にもたくさんの関数があるので、そのほかの関数出来になるものがあれば、Dune Japanで公開しているDune SQLの日本語版ドキュメントがあるので、ぜひ参考にしてみてください。
https://x.com/DuneAnalyticsJP/status/1826853388727844931
まとめ
オンチェーン分析は、ブロックチェーン技術の透明性を活かした強力な分析手法です。Duneのようなツールを使用することで、技術的な障壁を低くしつつ、深い洞察を得ることができます。
今回の記事ではオンチェーン分析でどんなことができるのか、Duneの簡単な使い方、Dune SQLの基礎的な記法をまとめました。
次回の後半では、今回のDuneの使い方をもとに実践的なクエリ作成をしていきます。
«関連 / おすすめリサーチ»
Contributor:Dune Japan
オンチェーン分析ツール DuneAnalyticsの活用を支援し、日本国内のオンチェーン分析を活発化することを目的とした日本コミュニティ。NFTの社会実装に向けた基盤を構築するシンシズモ株式会社が運営。(執筆:https://x.com/0xguss3)
10月11日(金)にDune Japan初のイベント「Dune Japan meetup Vol.1」が開催されます。本イベントを通じて、初心者から上級者までが交流し、オンチェーンデータの可能性を共に探求できる場を提供していきます。
☝️詳細確認、参加申し込みはこちら
免責事項:リサーチした情報を精査して書いていますが、個人運営&ソースが英語の部分も多いので、意訳したり、一部誤った情報がある場合があります。ご了承ください。また、記事中にDapps、NFT、トークンを紹介することがありますが、勧誘目的は一切ありません。全て自己責任で購入、ご利用ください。
About us:🇯🇵🇺🇸🇰🇷🇨🇳🇪🇸の5ヶ国語で展開されるweb3ニュースレターの日本語版。「1日5分でweb3をより深く学ぶ」をコンセプトに、web3の注目トレンドやプロジェクトの解説、最新ニュース紹介などのリサーチ記事を毎日配信しています。
Author:mitsui @web3リサーチャー
「web3 Research」を運営し、web3リサーチャーとして活動。
Contact:法人向けのリサーチコンテンツの納品や共同制作、リサーチ力を武器にしたweb3コンサルティングや研修なども受付中です。詳しくは以下の窓口よりお気軽にお問い合わせください。(📩 X / HP)