Amazon Web Services ブログ

BitcoinとEthereumのオープンデータセットにアクセスしてクロスチェーン分析を行う

このブログは、Oliver Steffmann と Bhaskar Ravat と Sreeji Gopal と Stefan Dickerによって書かれた Access Bitcoin and Ethereum open datasets for cross-chain analytics を翻訳したものです。

このブログでは、パブリックブロックチェーンデータでクロスチェーン分析を実行するためのオープンソースのソリューションと、AWS Open Data を通じて利用可能な Bitcoin と Ethereum の公開データセットを紹介します。これらのデータセットはまだ実験段階であり、本番環境のワークロードにはお勧めできません。オープンソースプロジェクトはGitHubのこちらに、パブリックブロックチェーンのデータセットはこちらにあります。

2022年9月23日にAWSはBitcoinとEthereumのブロックチェーンデータセットを公開しました。世界中でWeb3のアクティビティが増加するにつれ、パブリックブロックチェーンでホストされるデータがますます増えています。これらのブロックチェーンは公開されていますが、複数のチェーンにわたるデータのアクセスと分析は、Web3ビルダーにとって引き続き課題となっています。ユーザーがトークンを取引したり、情報を共有したり、スマートコントラクトを展開したりする際に、これらのブロックチェーンには数TBものデータが蓄積されます。ただし、これらの分散型台帳に直接問い合わせるのは時間がかかり、非効率的であり、分析には適していません。

各チェーンのブロックには、ネットワーク全体のトランザクションに関する情報が含まれています。これには、トークンが交換された公開鍵とアドレス、トランザクションの量と時間およびマイニングの難易度、ネットワークのハッシュレート、利用可能な供給量を示すメタデータが含まれます。さらに、これらのブロックチェーンは、トークンの転送に影響を与えないメタデータをホストするためによく使用されます。暗号通貨以外の資産の所有権を検証するために、他のブロックチェーンにメタデータを埋め込む分散アプリケーションが増えています。成長を続けるNFT市場には、探索と分析に適したメタデータも豊富にあります。

各分散型台帳は独自の方法で設計され、さまざまなテクノロジースタックとコンセンサスアルゴリズムを使用しています。パブリックブロックチェーンのデータセットを使用すると、さまざまなブロックチェーン専用のフルノードを操作したり、複雑な取り込みパイプラインを構築したりすることなく、これらのデータにすぐにアクセスできます。さらに、これらのデータセットはデータを表形式のデータ構造に正規化し、データサイエンティストやその他の分析専門家が簡単に分析およびクエリできる形式で、チェーン全体の数年分のデータに即座にアクセスできます。

ソリューションの概要

これらのデータセットについて、ブロックチェーンデータを抽出、変換、および列指向のストレージ形式にロードするアーキテクチャを導入しました。これにより、簡単にアクセスでき、迅速な分析が可能になります。

日付ごとに分割されたこれらのファイルを AWS 環境にロードし、このデータに加えて Amazon AthenaAmazon Redshiftなどの AWS サービスを使用すると、SQL を使用して効率的にクエリを実行できます。

次のアーキテクチャ図は、パブリックブロックチェーンからデータを抽出するためにどの AWS サービスが使用され、そのデータが Amazon Simple Storage Service (Amazon S3) にどのように送信されるかを示しています。また、パブリックに公開されている Amazon S3 バケットからこのデータにアクセスするためにどの AWS サービスを利用できるかも確認できます。

high-level architecture

Bitcoinは2009年、Ethereumは2015年の最初のブロックから完全なブロックチェーンをダウンロードした後、オンチェーンリスナーは、オープンデータセットを提供するパブリックAmazon S3バケットに新しいデータを継続的に配信します。その後、ブロックチェーンのデータは、最も一般的な分析クエリに効率的にアクセスできるように、日付ごとに分割された圧縮されたParquetファイルとして複数のテーブルに変換されます。

現在、公開されている Amazon S3 バケットのBitcoinとEthereumのブロックチェーンデータには、以下のフォルダ構造が用意されています。

Bitcoin: s3://aws-public-blockchain/v1.0/btc/

  • blocks/date={YYYY-MM-DD}/{id}.snappy.parquet
  • transactions/date={YYYY-MM-DD}/{id}.snappy.parquet

Ethereum: s3://aws-public-blockchain/v1.0/eth/

  • blocks/date={YYYY-MM-DD}/{id}.snappy.parquet
  • transactions/date={YYYY-MM-DD}/{id}.snappy.parquet
  • logs/date={YYYY-MM-DD}/{id}.snappy.parquet
  • token_transfers/date={YYYY-MM-DD}/{id}.snappy.parquet
  • traces/date={YYYY-MM-DD}/{id}.snappy.parquet
  • contracts/date={YYYY-MM-DD}/{id}.snappy.parquet

Parquetファイルのスキーマは、各テーブルとフィールドについてこちらに記載されています。現在、両方のチェーンのブロックとトランザクションの履歴データと、クエリに最もよく使用されるEthereumのテーブルをいくつか提供しています。

これらのデータをどう使うか

AWS では、複数のツールを利用してこれらのデータセットにアクセスして分析できます。Amazon S3 の Parquet ファイルは、Amazon Athena または Amazon Redshift で直接クエリすることができます。また、Amazon SageMaker Studio 用に Jupyter ノートブックもご用意しています。このノートブックには、クロスチェーン分析を実行する方法と、オンチェーン分析の基礎となるブロックチェーンデータを市場動向と組み合わせる分析方法が示されています。

これらの例を実行する前に、次の AWS CloudFormation テンプレートをデプロイする必要があります。このテンプレートは、AWS Glue データカタログ、クエリ結果用の S3 バケットを含む Amazon Athena Workgroup、およびパーティションを最新の状態に保つための AWS Lambda 関数を設定します。

例1)私の子供が産まれた時のブロック番号を教えてください

Bitcoinは2009年1月から、Ethereumは2015年7月から存在しています。平均して、新しいBitcoinブロックは10分ごとに作成されます。新しいEthereumブロックは12〜14秒ごとに作成されます。すべてのブロックにはタイムスタンプがあり、過去13年間の任意の時点で最も近いブロックを特定できます。この例では、2016 年 1 月 14 日 18:23 UTC の出生時刻を選択します。

(SELECT 'BTC' AS chain, number AS block, timestamp FROM btc.blocks WHERE
  timestamp>=TIMESTAMP '2016-01-14 18:23:00'
ORDER BY timestamp limit 1)
UNION (
SELECT 'ETH' AS chain, number AS block, timestamp FROM eth.blocks WHERE
  timestamp>=TIMESTAMP '2016-01-14 18:23:00'
ORDER BY timestamp limit 1)

次のスクリーンショットは、Amazon Athena の SQL クエリと、ビットコインの場合はブロック 393,323、イーサリアムの場合はブロック 848,182 の出力を示しています。

example1_screenshot

例2) 最大のステーブルコイン取引のトランザクションを表示する

Ethereumベースのステーブルコインのトランザクションは、Ethereumデータセットの「token_transfer」テーブルに記録され、各ステーブルコインには固有のトークンアドレスがあります。

SELECT * FROM "dev"."eth"."token_transfers" WHERE token_address='0xdac17f958d2ee523a2206206994597c13d831ec7' ORDER BY value DESC

次のスクリーンショットは、Amazon Redshift のクエリエディタで特定のステーブルコインの最大取引のトランザクションをクエリする方法を示しています。

example2_screenshot

例3)毎週のBTC取引額をUSDで表示してください
取引量をUSDで計算するには、パブリックブロックチェーンの過去の価格データも必要です。 GitHubで公開されている暗号資産取引所から価格を引き出すサンプル Jupyter ノートブックを提供しています。市場のデータが読み込まれると、このデータをパブリックブロックチェーンデータと組み合わせて、チャートで視覚化できます。この分析は、時間の経過に伴うネットワーク運用の変化をよりよく理解するのに役立ちます。

WITH
  daily_amt AS (SELECT cast(date AS date) AS date, sum(input_value) AS amt FROM btc. transactions where date>='2018-01-01' GROUP BY date),
  daily_price as (SELECT cast(open_time AS DATE) AS date, close AS price FROM marketdata.crypto where ticker='BTCUSDT' and extract(MINUTE FROM open_time)=59 and extract(HOUR FROM open_time)=23 and open_time >= TIMESTAMP '2020-01-01 00:00:00')
SELECT date_trunc('week', date) AS week, sum(transaction_volume) / 1000000000 AS transaction_volume, avg(price) AS price FROM (SELECT A.date, B.amt * A.price AS transaction_volume, a.price FROM daily_price A JOIN daily_amt B ON A.date=B.date) GROUP BY date_trunc('week', date) ORDER BY date_trunc('week',date)

次のスクリーンショットは、Amazon SageMaker Studio でのこのクエリの Jupyter ノートブックの例と、その出力をグラフとして示しています。

example03_screenshot

クリーンアップ

作成したリソースを今後使用する予定がない場合は、忘れずに削除してください。
スタックによって作成された S3 バケットを空にし、CloudFormation スタックを削除します。

おわりに

これらの公開されているブロックチェーンのデータセットは、プロジェクトをすぐに開始するために使用でき、ブロックチェーンデータの操作を簡単に開始できます。Amazon Managed Blockchain などのサービスを使用して基盤となるノードネットワークをデプロイし、トランザクションを送信し、ノードから直接リアルタイムデータにアクセスすることもできますが、独自のノードやブロックチェーンプロトコルをデプロイしない場合は、これらのデータセットを使用して、ブロックチェーンの上に位置する分析レイヤーを作成し、基盤となるデータから洞察を抽出できます。トランザクション量、時間、マイニングの難易度、ハッシュレートを使用して、複数のチェーンにわたる傾向や観察結果を特定できます。また、各ブロックチェーン内の固有なメタデータを活用して、非構造化フィールドの分析を実行することもできます。
これらのネットワークからのニアリアルタイムの取り込みパイプラインをお探しの場合は、オープンソースのソリューションをご自身の AWS アカウントにデプロイできます。これにより、アプリケーションがスケールし、より多くのユーザが使用できるようにデータアクセス要件をより細かく制御できる独自のデータリポジトリを作成することもできます。プロダクショングレードの信頼性、ブロックチェーンデータへのリアルタイムアクセス、またはその他の高度なブロックチェーンデータクエリに関心のあるお客様は、aws-public-blockchain@amazon.com までご連絡いただき、お客様のユースケースについてご相談ください。
他のブロックチェーンがより広く使用されるようになるにつれて、オープンソースアーキテクチャをエコシステム内の他のブロックチェーンにも適応させることができます。ERC-20またはERC-721を使用して開発されたプロトコルは、オープンデータセットですでに確立されているのと同じEthereumプロトコルを使用しているため、簡単にサポートできます。Bitcoinのフォークやバリアントであるトークンにも同じ拡張性があります。
私たちはこのソリューションを拡張する予定ですので、お客様のユースケースを支援し、オープンソースソリューションとオープンデータセットの改善をどのように支援できるかをお知らせください。
Amazon Managed Blockchainの詳細と、AWS Open Data を通じてペタバイト級のオープンデータを共有およびアクセスする方法をご覧ください。

このブログは、ソリューションアーキテクトの大杉が翻訳しました。原文はこちらをご覧ください。