
DuneでSolanaデータダッシュボードを構築する方法
Solanaのブロックチェーンは、毎秒数千件のトランザクションを処理できる、速度とスケーラビリティに優れた基盤です。
これにより、アナリストや開発者にとって貴重なSolanaの履歴データが大量に生成されます。しかし、それを活用するには適切なツールが必要です。Duneは、生のブロックチェーンデータを実用的なインサイトや開発者向けAPIに変換する、主要なオンチェーンデータプラットフォームです。
このガイドでは、リアルタイム指標、過去のトレンド、デコード済みプログラムデータを活用し、Dune上で包括的なSolanaダッシュボードを構築する方法を解説します。
Solanaのデータ量を理解する
Solanaは毎秒3,000件を超えることもある高いスループットにより、膨大な量のデータを生成します。これには、ブロック生成やトランザクションログから、トークンスワップやNFTミントといったプログラム固有のインタラクションまで、あらゆる情報が含まれます。
Duneは、Solanaのリアルタイムアクティビティを最小限のレイテンシで取り込みます。ブロックヘッダーやトランザクション署名などの生データストリームは、1分以内に更新されます。たとえば、solana.transactionsをクエリすると、トークンローンチ時のユーザーエンゲージメントの急増など、ネットワークアクティビティを監視できます。
Duneのプラットフォームでは、このデータを簡単に可視化できます。Duneは、2020年のジェネシスブロックから最新のスロットまで、Solanaの全履歴をインデックス化しています。そのため、現在3,000億件を超える総トランザクション数の増加や、DeFiアクティビティの季節変動といった長期的なトレンドを分析できます。たとえば、こちらのクエリではネットワーク開始以来の累積トランザクション数を追跡でき、別のクエリでは記録上最古と最新のブロックを確認できます。
Ethereum、BSC、Polygonと比較すると、Solanaのデータ量は高いスループットによって際立っています。並列比較を見ると、日次トランザクション数ではSolanaが優位に立つ一方、手数料とDeFi流動性ではEthereumが依然として首位です。
基礎概念:Solanaのデータ構造
Solanaのアカウントモデル、トランザクションの構造、Duneを使用してSolanaトランザクションを分析する方法を見ていきます。
Solanaのアカウントモデル
Solanaの中核には、独自のアカウントモデルがあります。オンチェーン上のあらゆるデータは、プログラムロジック、トークン残高、実行可能コードを含め、アカウントに保存されます。Solanaのアカウントには、次のような特徴があります。
アカウントアドレス
公開鍵、またはProgram Derived Address(PDA)用のシードから導出される32バイトの識別子です。たとえば、Raydiumの流動性プールアドレスは、トークンミントやその他のパラメータから生成されるPDAです。
データストレージ
アカウントには、実行可能なバイトコードプログラムの場合は最大10MB、PDAの状態情報の場合は最大10KBのデータを保持できます。
所有権とレント
アカウントは、データサイズに比例したストレージコスト(レント)を支払うために、lamports(SOLの端数単位)を保持する必要があります。ownerフィールドは、そのアカウントを制御するプログラムまたはウォレットを指定します。データの変更やlamportsの差し引きができるのは、所有者だけです。実行可能フラグは、そのアカウントに実行可能コードが含まれているかどうかを示します。
具体例として、SPLトークンアカウントは関連付けられたウォレットの残高を保存します。残高はdataフィールドに格納され、所有者はToken Programです。
Solanaトランザクションの構造
トランザクションは、Solanaプログラムとやり取りするための手段です。各トランザクションには、以下が含まれます。
- signature(一意の識別子)とlamportsで支払われる手数料
- 1つ以上のinstructions(ixs)。以下を指定します。
- 実行するプログラム(例:Raydiumのスワップ関数)。
- 読み取りおよび書き込み対象のアカウント(例:トークン保管庫、ユーザーウォレット)。
- 命令固有の引数(例:スワップ量、手数料)。
トランザクションの主な特徴は以下のとおりです。
- アトミック実行:トランザクションはすべて成功するか、すべて失敗します。部分的な状態は残りません。
- クロスプログラム呼び出し(CPI):プログラムから別のプログラムを呼び出し、ネストされた命令を作成できます。
- ログとエラー:失敗したトランザクションにはエラーメッセージが含まれ、ログにはランタイムイベント(例:スワップの詳細)が記録されます。
Duneでトランザクションを分析する
Duneのsolana.transactionsテーブルでは、詳細なインサイトを確認できます。
- block_slot:トランザクションが処理されたスロット番号。
- fee:lamports単位のトランザクションコスト。
- error:失敗の理由(該当する場合)。
- accounts:関係するすべてのアカウントのアドレス。
- log_messages:出力されたイベントログ(例:トークンのミント)。
さらに詳しく調べるには、solana.instruction_callsを使用します。
- outer_instruction_index:トランザクション内での命令の位置。
- inner_instruction_index:CPIの階層を追跡します。これは各命令内のinner_instructionの位置であり、stack_heightとは異なります。Duneは現在、stack_heightの追加に取り組んでいます。
- executing_account:命令を実行するプログラム。
- data:生の命令バイト(16進数エンコード)。
DuneでSolanaデータを扱う
Duneは、RaydiumやMagic Edenなどの主要プロトコルを含む、150以上のデコード済みSolanaプログラムに対応しています。コミュニティは、バリデータのパフォーマンスからミームコインのトレンドまで、さまざまな指標を網羅する2,000以上のダッシュボードを構築しています。新しいプログラムも定期的に追加されています。ユーザーはDuneのウェブサイトからデコードリクエストを送信できます。
Duneでは、Solanaデータを3つのレイヤーに分類しています。
1. 生データ
solana.blocksやsolana.instruction_callsなどのテーブルを使用すると、フィルタリングされていないオンチェーンアクティビティにアクセスできます。
2. クリーンアップ済みデータ
トークン価格やUSD換算額など、前処理済みの抽象化データにより、分析が簡単になります。
3. デコード済みデータ
プロトコル固有のデータセット(例:DEXスワップのdex.tradesやNFT販売のnft.trades)には、すぐに利用できる指標が用意されています。
資産を追跡する場合は、バリデータのアクティビティを確認できるstaking.actionsや、トークン価格を確認できるprices.usdなどのテーブルを利用できます。取引アナリストはdex.tradesを使用して、OrcaやRaydiumなどのプラットフォーム間で取引量を比較できます。
舞台裏:Duneによるデータ処理の仕組み
DuneはGeyserプラグインを介してSolanaデータを取り込み、オンチェーンの更新をインデックスシステムへストリーミングします。その後、生データをプログラムIDLでデコードし、クエリしやすいテーブルに整理します。Solanaのデータインフラについて詳しく知るには、HeliusによるSolanaデータツールのガイドをご覧ください。
ステップ別ガイド:Solanaダッシュボードを構築する
ステップ1:目的を定義する
まず、重点的に分析する領域を決めます。NFT販売、DeFi利回り、ネットワークパフォーマンスのどれを分析しますか?この例では、DEXの日次取引量を追跡するダッシュボードを構築します。
ステップ2:データをクエリする
Duneのクエリエディターを開き、dex.tradesから取引データを取得します。
SELECT DATE(block_time) AS date, SUM(amount_usd) AS volume
FROM solana.dex.trades
WHERE project = 'orca'
GROUP BY 1
ORDER BY date DESC; これにより、Orcaの日次取引量を取得できます。クエリを保存し、棒グラフとして可視化します。
ステップ3:構成してカスタマイズする
新しいダッシュボードを作成し、グラフを追加します。総取引数を示すカウンターや、取引量上位のトークンを順位付けするテーブルなど、追加のウィジェットで拡張します。テキストボックスを使用して、新しいトークンのローンチによる急増など、トレンドに注釈を付けます。
DuneでSolanaダッシュボードを構築する手順を詳しく確認するには、こちらの短編動画シリーズをご覧ください。
高度な分析のためのプロ向けヒント
ヒント1:生データとデコード済みデータを組み合わせる
プログラムが完全にデコードされていない場合(例:新しいNFTマーケットプレイス)は、solana.instruction_callsを使用してログを手動で解析します。その後、デコード済みトークンテーブルと照合して、資産の詳細を特定します。
ヒント2:速度を最適化する
Solanaのデータ量が多いと、クエリが遅くなる場合があります。
早い段階でblock_slotまたはblock_timeを使用してフィルタリングし、頻繁にアクセスする指標にはマテリアライズドビューを使用します。
ヒント3:価格フィードを活用する
取引データをprices.usdと結合し、トークン量をUSDに換算します。これにより、特に価格変動の大きい資産について、取引量を適切な文脈で把握できます。
まとめ
Duneは、Solanaから押し寄せる大量のデータを、構造化された利用しやすいリソースへと変換します。データセットとツールを使いこなすことで、プロトコルの最適化でも市場トレンドの追跡でも、意思決定につながるインサイトを見つけられます。
さらに詳しく知るには、SolanaのGeyserプラグインアーキテクチャを確認し、こちらのSolanaデータのYouTubeプレイリストにある動画チュートリアルをご覧ください。
関連記事
Heliusを購読
Solana開発の最新情報や新しい記事の公開通知を受け取れます


