どこにでもいるSEの備忘録

たぶん動くと思うからリリースしようぜ

【自由研究:仮想通貨】Rippleのデータを眺めてみる

f:id:nogawanogawa:20180728140253p:plain

世間的には夏休みなので、ちょっと自由研究してみます。

なんとなくAWSの勉強をしてみたくなったのと、ブロックチェーンとかそろそろやってみたい、というくらいのモチベーションです。 ということで、そんなに詳しくないんですが、仮想通貨のデータの取得をやってみます。

ちょうど似たようなことをしている方がいらっしゃいました。 参考にしたのはこちら。

qiita.com

ブロックチェーンとか全くわからないので、細かい理屈は目をつぶってやってみます。

※※ripple思ったよりデータ量があるみたいで、有償環境じゃないと難しいみたいです。

アーキテクチャ

BitcoinやらEthereumはチェーンが長いので、今回は省略しました。 今回はメジャーでもマイナーでもないRippleでやってみます。

https://ripple.com/jp/ripple.com

とりあえず、DBに突っ込んで好き放題分析できるようにするところまでが目標です。

データ量がまあまああるみたいで、macbookだと心もとなかったので、今回はAWSの環境を使用してやってみます。

rippled

rippledはrippleに関するデータを取ってくるクライアントソフトらしいです。

https://developers.ripple.com/manage-the-rippled-server.html

英語苦手なので、全くわかりません←

なんとなくやってみる

AWSの環境準備

まあ、自由研究なので軽い気持ちでやってみます。

まずはこちらに入ってみます。 なにはともあれアカウント作成してくださいな。

aws.amazon.com

アカウントができて晴れてログインできるようになると、こんな感じになります。

f:id:nogawanogawa:20180729093609p:plain

初期設定はこちらを読んでそのとおり進めていただければと←

docs.aws.amazon.com

後はいろいろ弄るときにターミナルにSSHで接続したくなるはずなので、 そちらはこちらを参考にしました。

dev.classmethod.jp

sshのログイン先がいまいちよくわからなくてこんなのが出て入れませんでした。

Permission denied (publickey)

ググってみると、ありました。

docs.aws.amazon.com

私の場合はユーザ名が間違ってたみたいです。 こんなもんで、だいたいAWSの初期設定はおしまいです。 細かいことは気にせず、サクサク行きましょ←

rippled

コマンドを使って放り込みたい場合はrippledを使うとターミナルコマンドでいろいろいじれます。

rippledのインストールコマンドはこちらにあります。

Install rippled - XRP Ledger Dev Portal

読んでみると推奨環境が書いてあります。 なので、有償インスタンスでトライしてみます。 今回はm5d.largeを使ってみます。

あとは書いてあるがままにコマンドを放り込めば一応環境は完成です。

適当にコマンドを放り込むとこんな感じですね。

$ /opt/ripple/bin/rippled server_info

ripple-lib

次に、ripple-libについてです。 公式にripple社が提供しているjavascript向けのライブラリっぽいですね。

github.com

APIに関するドキュメントはこちら。

github.com

java向けも一応あるにはあるんですが、work in priogress(現在開発中)になっているので、今回はjavascriptでやってみます。

そんなわけで、ここからはこちらを参考にさせていただきました。ありがとうございます。

qiita.com

まずはnodejsのインストールです。

$ curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
$ sudo yum -y install nodejs

次にripple-libのインストールです。

$ mkdir ripple-lib-test
$ cd ripple-lib-test
$ npm install ripple-lib

こんなもんでおしまいです。

実際に動かしてみます。

こんなコードを突っ込んで実行します。特定のアカウントの残高を取得するスクリプトらしいです。

実行するとこんな感じです。

$ node account.js
27.999988

中身はよくわかりませんが、とりあえず動いているみたいです。

では、本題のトランザクションの抜き出しをやってみます。 多分getTransactionメソッドを使うのだと思うので、コードはこんな感じにします。

結果はこんな感じです。

一応公開されているツールでも確認してみます

xrpcharts.ripple.com

これを全トランザクションに対して実行すれば問題なさそうです。

とりあえず今回はこのへんで。次回はDBに書き込んでみます。

感想

AWSブロックチェーンもnode.jsもあんまりわかりませんでしたが、意外となんとかなりそうですね。