Bitshares Account History Exporter 使ってみた
Bitshares Account History Exporter の約定内容はJSONなのでCSVに変換した件
今までのBTS関連記事
Bitshares Account History Exporter
前置き
前回Openledgerの取引履歴を取得したのですが、時間の情報がなく時価を出せませんでした。一応ブロックナンバーをcryptofreshなどに投入すれば分かりますが、一件づつの手作業は大変すぎます。
検索すると、自分と同じ要望を持っている人たちがいるみたいですがまだ未解決?なようでした。
Fuller featured API for get_relative_account_history
How can I view the complete transaction history or order history?
しょうがないのでbitsharestalkで質問してみたりもしたのですが何も分からないままでした。(さすがに0レスなのは自分の英語が意味不明だったからかもしれない)
上述のFuller featured API for get_relative_account_history にある類似項目へのリンク。全部にoxarbitrageさんが登場する
これらをざっと見るとどうもoxarbitrageさんが必要だと感じ開発してくださっているみたいだから、待つしかないのかな(何らかの方法でできるなら開発しないだろうから)などと思っていたところ、見事素晴らしいサービスを作ってくださいました。
Bitshares Account History Exporter(excel出力は準備中)
さっそく一年の約定履歴を指定してCSVファイルをダウンロードしてみたのですが、肝心の約定内容がよく分かりません。
ちなみに項目は全部で”Account History - ID Account History - Next Account History - Operation ID Account History - Sequence Additional Data - Fee Data - Amount Additional Data - Fee Data -Asset Additional Data - Transfer Data - Amount Additional Data - Transfer Data - Asset Block Data - Block Number Block Data - Block Time Block Data - Transaction ID Operation History - Raw Operation Operation History - Operation in Transaction Operation History - Operation Result Operation History - Transaction in Block Operation Data - Virtual Operation” となっています。
調べるとその中の”Operation History - Raw Operation” という項目にJSON形式で入っているようです。fee amount という項目はトークン固有の手数料分だと思います。virtual operation はさっぱり分かりませんなんだか規則的に増減していますが何でしょう。openledger エクスプローラーでは表示されない項目がcryptofresh上ではvirtualと表示されますが関係があるのでしょうか?
openledgerエクスプローラー | cryptofresh |
---|---|
ともかくJSON形式を分かりやすくすれば見やすくなってなんとかなりそうです。以下javaとjavascriptの違いも分からない筆者が思いついた解決策を記します。より良い方法がきっとあると思うのでご存知の方は是非コメント下さい。
手順
まず“Operation History - Raw Operation” を全て選択し、テキストエディタにコピーします。1行1JSONという形になると思います。
次に正規表現を用いて置換をして、行末全てにコンマを打ちます。
一番下の行のコンマを消し、“]” を置きます。そして一行目先頭に“[” を置き、全体をカッコで括ります。これで全てが一つのJSONファイルになりました(よくわからんけど多分そうなってる)
[4,{"fee": (中略) "is_maker":true}]
(中略)
[4,{"fee": (中略) "is_maker":true}]
↓(行末にコンマ)
[4,{"fee": (中略) "is_maker":true}],
(中略)
[4,{"fee": (中略) "is_maker":true}],
↓(一番下のコンマを消し、全体をカッコで括る)
[[4,{"fee": (中略) "is_maker":true}],
(中略)
[4,{"fee": (中略) "is_maker":true}]]
最後に適当なCSV変換サービスを使ってCSVに変換します。自分はConvert JSON to CSVを使いました。
変換されました。
あとはクリエイトオーダーやキャンセルオーダーの手数料をまとめて、必要経費に計算したらいいのかな?という感じです。cryptact用に上手い事変換したいです。
最後に
改めて素晴らしいツールを開発してくださったoxarbitrageさんに感謝!