本連載では、ブロックチェーンの基本的な仕組みを解説しながら、オンチェーンデータを分析するための基本的な手法について、全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
続きを読むにはログインが必要です。
ご利用は無料ですので、ぜひご登録ください。