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

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

【自由研究:仮想通貨】他人のRippleの残高を眺めてみる

f:id:nogawanogawa:20180728140253p:plain

前回はとりあえずRippleのデータを眺めてみました。

nogawanogawa.hatenablog.com

今回は他人の残高を眺めてみたいと思います。

Rippleの残高管理

RippleがBitcoinやEthereumなどの仮想通貨と大きく違うのは、ブリッジ通貨として使われている点です。

ブリッジ通貨の説明はこちらが非常にわかりやすいかと思います。

coinotaku.com

要は、Rippleは実通貨・仮想通貨に関して両替の仲介役になる通貨として利用できます。

イメージとしてはこんな感じですね。

f:id:nogawanogawa:20180811123950j:plain:w450

このとき、特定のユーザーのアドレスと残高はこんな感じにRipple(XRP)だけでなく、他の通貨も同じアドレスに紐づけて管理されています。

f:id:nogawanogawa:20180811124002j:plain:w450

これを公式サイトで確認してみます。

xrpcharts.ripple.com

誰だかはわかりませんが、アドレスに紐づくRipple(XRP)だけでなくUSDやBTCの残高を確認する事ができます。 アドレス欄があるので、そこにアドレスを入れればどのアカウントであっても残高を確認することができます。

過去の残高を確認する

上のサイトを使えば現在の残高は確認することができます。 一緒にトランザクションもくっついているので、それを計算すればある時点での残高を確認することができます。

ただ、取引量が多いとそれも結構めんどくさくなりますし、いろんな通貨の残高をすべて計算する必要があります。

そこでRipple社から提供されているAPIでData APIを使ってみます。

Ripple Data API v2 - XRP Ledger Dev Portal

使い方

使い方は結構簡単で、Ripple社のData API用のサーバーに向かって残高を聞くリクエストを送信するだけです。

https://developers.ripple.com/data-api-v2-tool.html#get-account-balances

中身はこんな感じのURLを使ってリクエストを送信しています。

https://data.ripple.com/v2/accounts/<アドレス>/balances?<条件1>&<条件2>

試しにこんな感じの中身で2018/8/1の残高を見ることができます。

https://data.ripple.com/v2/accounts/rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn/balances?date=2018-08-01

その他、指定できる条件やら、他の情報の取得の方法についてはData APIのサイトをご確認ください。

プログラムしてみる

前回同様nodejsを使ってみます。 今回はrequestのライブラリをつかうので、それだけインストールします。

npm install request

コードは一旦こんな感じから始めてみます。

node getBalance.js

<出力>

まずは期待した結果が帰ってきていることが確認できました。

次に、適当に決めた範囲に作られたアドレスをまとめて取得してみます。 アドレスを取るときはDATA APIのaccountsメソッドを使うと簡単に取れます。

Data API v2 Tool - XRP Ledger Dev Portal

これを組み合わせるとこんな感じです。

node getBalance2.js

<出力>

レートに制限があるようで、29件しか正しく表示できていません。 インターバルの時間を見る感じ、1分間に30リクエスト(アドレス取得+残高取得×29)、2秒に1回が上限のようですね。

nodejsにあまり詳しくなく、2秒のごとにリクエストを送信する方法がわかんなかったので今回は取得件数を29件にします←

node getBalance2.js

<出力>

これでちゃんと出ました。

最後にDBに突っ込んでみます。

node getBalance3.js

何故か実行が完了しない…なぜ…

それでもテーブルの中身にはちゃんとデータは入ってました。

<テーブルの中身>

なんかXRP以外がGCBってのが入っててなんだろうと思ってみてみたら、中国の仮想通貨でした。 おそらくは中国のユーザーなんでしょう。

これを全アカウントやったらなんか分析とかできそう、とか思って調べたら今日時点で130万人近く使ってるんすね。。。 全部取るのは諦めます。。。。

感想

今回はいろんな人の残高をまとめて取得してみました。 他の言語で書くとけっこう大変だと思いますが、nodejsだと短く書けるのでいいですね。 未だにnodejsはクセが強くてよくわかってませんが、これから勉強していきたいと思います。