ゼロから学ぶブロックチェーンの仕組みとオンチェーンデータ分析

本連載では、ブロックチェーンの基本的な仕組みを解説しながら、オンチェーンデータを分析するための基本的な手法について、全8回で紹介します。

第7回の今回は、Ethereumのトランザクションに紐づくデータ構造の深掘りや、データ分析でよく用いられる発展的なSQLの構文についての解説をおこないます。

Ethereumのトランザクション詳解

Bitcoinの場合、各アカウントが保持する状態は基本的にビットコインの残高であり、その変更は送金やマイニングといった1つのトランザクションを最小単位として行われます。一方、Ethereumの場合は、各アカウントのイーサ残高のほかに、スマートコントラクト上のさまざまなデータを状態として保持しており、状態変化のアクションはBitcoinほど単純ではありません。また、1つのトランザクションの中に複数のアクションが含まれることがあります。あるトランザクションを起点として、複数のスマートコントラクトの関数を呼び出すといったことも可能です。こういった複雑なアクションを分析するために、TracesやLogsといったデータ構造が存在します。

TransactionsとTraces

EthereumにおけるTracesとは、トランザクションを起点としておこなわれるさまざまな状態変化のアクションの最小単位を記録したものです。Etherscan(https://etherscan.io/)などのエクスプローラーでは、「internal transactions」といった形で表現されることもあります。コード1は、Dune(https://dune.com/)上で過去24時間以内のTracesデータを100件取得するクエリです。

コード1. 最新24時間以内のEthereumのTracesデータを100件取得するクエリ

SELECT *
FROM ethereum.traces
WHERE block_time >= CURRENT_TIMESTAMP - INTERVAL '24' hour
LIMIT 100
図1. コード1.の出力結果例:ethereum.tracesテーブルのサンプルデータ

続きを読むにはログインが必要です。
ご利用は無料ですので、ぜひご登録ください。

SHARE

  • facebook
  • twitter

SQRIPTER

加嵜 長門(かさき ながと)

記事一覧

合同会社DMM.com Web3事業部テックグループリーダー・DMM.comグループ株式会社DM2C Studio取締役(CTO)。ビッグデータ活用基盤の構築に携わり、SparkやSQL on Hadoopを用いた分散処理技術やブロックチェーン技術の研究開発、事業提案などを担当。共著に『試して学ぶスマートコントラクト開発』『ブロックチェーンアプリケーション開発の教科書』『ビッグデータ分析・活用のためのSQLレシピ』(マイナビ出版)、『詳解Apache Spark』(技術評論社)。

Sqriptsはシステム開発における品質(Quality)を中心に、エンジニアが”理解しやすい”Scriptに変換して情報発信するメディアです

  • 新規登録/ログイン
  • 株式会社AGEST