LoginSignup
0
0

More than 5 years have passed since last update.

BlockSci環境構築(AWS編)

Last updated at Posted at 2018-01-17

本記事はhkalodner氏が主に開発している BlockSci についての記事です。
まだまだ開発途中で情報が少ないので色々試行錯誤した記録を書き出してみたいと思います。

インストール

BlockSci公式ドキュメントにありますami-7cf38706を使ってEC2インスタンスにインストールします。
ami-7cf38706からインストールするとすでに必要なライブラリはセットアップされていて、またmainnetのデータをBlockSciでパースしたデータがすでに入っています。
初めから入ってるパースデータは/home/ubuntu/bitcoin/にあります。
このパースデータは2017/12/12 15:54:15までのデータでブロック高は498919です。
EC2が起動してから約3.5時間でデータが全て展開されデータ解析できるようになります。
bitcoindは入っていないので必要であれば別途インストールしましょう。
その際は残容量にご注意ください。

推奨スペック

項目 スペック
SSD 200GiB以上
メモリ 60GiB以上
インスタンス r4.2xlarge

testnetのデータを使う場合

AMIが作成された後にマージされたコードがあるためそちらを自身で修正する必要があるかもしれません。

BlockSci/src/parser/parser_configuration.cpp
ParserConfiguration<FileTag>::ParserConfiguration(const boost::filesystem::path &bitcoinDirectory_, const boost::filesystem::path &dataDirectory_) : ParserConfigurationBase(dataDirectory_), bitcoinDirectory(bitcoinDirectory_) { 
     auto bitcoinDirectoryString = bitcoinDirectory.native();
     if (bitcoinDirectoryString.find("litecoin") != std::string::npos || bitcoinDirectoryString.find("Litecoin") != std::string::npos) { 
         blockMagic = 0xdbb6c0fb;
         workHashFunction = doubleSha256;
     } else if (bitcoinDirectoryString.find("regtest") != std::string::npos) {
         blockMagic = 0xdab5bffa;
         workHashFunction = doubleSha256;
     } // diff ここから
       else if (bitcoinDirectoryString.find("testnet") != std::string::npos) {
         blockMagic = 0x0709110b;
         workHashFunction = doubleSha256;
     } // diff ここまで
       else {
         blockMagic = 0xd9b4bef9;
         workHashFunction = doubleSha256;
     }
 }
console
cd release
make
sudo make install

データ解析

ローカルマシンのターミナルでsshトンネルを使用してEC2インスタンスのjupyter notebookに接続できるようにします。

  1. ssh -i your_private_key.pem -N -L 8888:localhost:8888 ubuntu@your_url.amazonaws.com
  2. ブラウザを開きlocalhost:8888jupyter notebookが開きます。
  3. BlockSci Demo.ipynbが用意してあるので全てのセルを実行します。
  4. 初めに入っているパースデータを元にスクリプト形式別のトランザクション数のグラフやセカンドレイヤーのトランザクション数のグラフなどが描画されます。

jupyter notebookを公開したい場合

  1. ssh -i your_private_key.pem ubuntu@your_url.amazonaws.com でインスタンスに繋ぎます。
  2. jupyter notebook --generate-configをしてjupyter_notebook_config.pyを生成します。
  3. .jupyter/jupyter_notebook_config.pyをエディタで開きc.NotebookApp.ip = '*' を追記します。(許可するIPは適宜編集してください)
  4. sudo shutdown -r nowで再起動します。

以上でsshトンネルを使わなくてもjupyter notebookに接続可能になります。
公開設定する場合はセキュリティに配慮して、必ずAWS側でセキュリティグループを設定する等をしてください。

その他具体的なプログラムについては BlockSciデータ解析編 に書いております。


補足等ありましたら編集リクエストいただけると助かります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0