Neutrinoで働くブロックチェーンエンジニアのブログ

渋谷の専門特化コワークNeutrinoに入居してブロックチェーン領域のエンジニアとして働いています。(Neutrino運営企業とは直接関係ありません)

ブロックチェーンデータの分析について

f:id:naomasabit:20190531182909p:plain

しばらくこちらを更新できていなかったのですが、catabiraのMeduimでブログを更新していました。

どちらもNFTマーケットの分析になります。

medium.com

medium.com

分析のデータソースについて

これらの分析ですが、USD建ての時価以外は、全てブロックチェーン上のデータから取得しています。

Ethereumでは、eventと呼ばれるlogを明示的にスマートコントラクトで実行することでチェーンに刻まれます。event logはチェーン上のデータを検索する事で取得できます。

また、geth等のtraceと呼ばれる機能により、スマートコントラクトの発行条件をtransactionから取得し、その条件でコントラクトを遡って実行する事で結果を取得できます。

traceする条件では、以下3つが必要であると公式のgithub wikiでは書いています。

Balance, nonce, bytecode and storage of both the recipient as well as all internally invoked contracts.

残高、ナンス(アカウントのtx発行回数)、(スマートコントラクトの)バイトコード、中間で呼び出された物を含むコントラクト

Block metadata referenced during execution of both the outer as well as all internally created transactions.

(インターナルトランザクションを含む)トランザクションが実行時に参照するブロック情報

Intermediate state generated by all preceding transactions contained in the same block as the one being traced.

同じブロック内で実行されるトランザクションが作り出す中間ステート

これらを取得するためには、フルノード且つ過去のステートを保持しているノードが必要でした。

以下の記事でも利用したのですが、最近はBigQueryでEthereumのデータがかなり取りやすくなっています。

www.blockchainengineer.tokyo

上記のような細かなデータも構造化して取得できるようになり、かなり簡単に取得できる印象のため、事業者などに取ってはとてもやりやすいサービスでしょう。

特に、私が昔従事していた暗号通貨監査などでも、(GCPを信頼するといった前提にはなりますが)残高や取引履歴のデータソースとして利用できる可能性があるのではないかと思います。OSSとしてオープンになっていますので、途中の加工プロセスもある程度検証できるでしょう。