CRYPTO & AI
無料で登録
CRYPTO

ゼロからわかるDuneを使ったオンチェーン分析の始め方【基礎編】 / @DuneAnalyticsJP

そろそろDuneの使い方を覚えたい方へ。

おはようございます。
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の基本的な使い方を段階的に説明します。

クエリの作成

クエリエディタが表示されます。ここでSQLクエリを入力します。

ログイン後、「New Query」ボタンをクリックして新しいクエリを作成します。

データセットの選択

クエリエディタの左側にあるデータセットリストから、分析したいブロックチェーンとテーブルを選択します。データセットには各コントラクトのトランザクションやカタログされたデータセット、外部から提供されたデータセットなどがあります。

クエリの作成と実行

結果が表示されます。エラーが出た場合は、クエリを修正して再実行します。

クエリを書いたら、「Run」ボタンをクリックして実行します。

選択したデータセットに基づいて、SQLクエリを作成します。Dune SQLの記法については後ほど記述しますが、図内では、Ethereum全体のトランザクションデータを選択しています。

結果の可視化

X軸、Y軸、グループ化などの設定を行い、データを視覚化します。

様々な可視化オプション(棒グラフ、線グラフ、円グラフなど)から適切なものを選択します。

クエリの結果が表示されたら、「New」ボタンをクリックします。

ダッシュボードの保存と共有

ダッシュボードに名前を付け、説明を加えます。

作成したクエリと可視化を保存するには、「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の日本語版ドキュメントがあるので、ぜひ参考にしてみてください。

日本語版 Dune SQL Docs_v2

https://x.com/DuneAnalyticsJP/status/1826853388727844931


まとめ

オンチェーン分析は、ブロックチェーン技術の透明性を活かした強力な分析手法です。Duneのようなツールを使用することで、技術的な障壁を低くしつつ、深い洞察を得ることができます。

今回の記事ではオンチェーン分析でどんなことができるのか、Duneの簡単な使い方、Dune SQLの基礎的な記法をまとめました。

次回の後半では、今回のDuneの使い方をもとに実践的なクエリ作成をしていきます。

«関連 / おすすめリサーチ»

【Pyth Network】Solana上の分散型オラクルプロトコル / プッシュではなくプル型の価格更新アルゴリズムを採用 / 23年11月のエアドロップが盛り上がる

【DappBack】Quest to Earn / オンチェーン・オフチェーン情報を収集しリワードを付与 / ノーコードで顧客ロイヤリティプログラムが構築できるプラットフォーム

【mava】web3コミュニティに特化したカスタマーサポートツール / DiscordやTelegraphを横断した対応・AIによる自動回答・オンチェーン履歴を表示する機能など

【Nascent】DeFiのセキュリティ問題を解決する監査ツールを開発 / DeFiが金融のメインストリームになるにはオラクルフリープロトコルが解決策!?


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)

TOPICS

DEBUNK編集長

あわせて読みたい用語解説

用語解説をすべて見る →
【MiCA】EUの暗号資産規則は、取引所に認可を求めるルール。Binance Franceの口座閉鎖から整理するEUの暗号資産市場規則MiCA(ミカ)の中身と、いまユーザーに何が起きているかを、Binance Franceの口座閉鎖とあわせて整理します。【ハードフォーク】ルールを切り替えるアップグレードで、なぜ古いコントラクトが壊れうるのかハードフォーク(ルールの非互換な変更)の仕組みを、Ethereumの次のアップグレードGlamsterdamの例とあわせて整理します。【手数料バーン】EIP-1559でETHが燃える仕組みと、バーンだけでは価値を測れないと言われる理由Ethereumの「手数料バーン(焼却)」を、EIP-1559の仕組み、発行量との関係、ヴィタリック・ブテリン氏の最近の論考とあわせて整理します。【RWA】現実の資産をトークンにするとき、トークンは「何の権利」を表しているのか国債やファンド、株、金といった現実の資産をトークンで表すRWAを、トークンと法的な権利のつながり方、正式な名簿の置き場所、送金の制限と償還とあわせて整理します。【無期限先物】満期のない先物は、資金調達率でどうやって現物の値段に寄せているのか暗号資産の取引の中心にある無期限先物(パーペチュアル)を、資金調達率の計算のしかた、清算に使うマーク価格、取引所ごとの違いとあわせて整理します。【DAO】ガバナンストークンの投票は、提案から実行までどう進み、実際にはどれくらい使われているのかトークンを持つ人の投票で運営を決めるDAOを、提案から実行までの手順、委任と定足数、投票率と大口の偏り、ガバナンス攻撃、法律上の扱いとあわせて整理します。【トークノミクス】トークンの供給・配分・アンロックの読み方と、FDVと時価総額の違いトークンの設計図「トークノミクス」を、3つの供給量、配分とアンロックの仕組み、FDVと時価総額の差、焼却と買い戻しとあわせて整理します。【マルチシグ】複数の鍵で承認する仕組みと、それでも資金が盗まれる理由複数の鍵の署名がそろったときだけ資金を動かせる「マルチシグ」を、Safeの仕組み、MPCとの違い、過去の大きな事故とあわせて整理します。