昨日はAPIの使い方を見てみましたが、今日は調べてみたかったことにAPIを使ってみます。
昨日使ってみて思ったのですが、Segwitにて付け加えられたWitness IDとかが見られません。ただ使いこなせていない可能性も高いですが、unlocking scriptとかdifficultyも見当たらないので、全部のデータが取れるわけでもないのかもしれません。
python-bitcoinlibという色々できそうなやつも見つけたので、次からはそれを試してみようと思います。

ブロックチェーン・レボリューション ――ビットコインを支える技術はどのようにビジネスと経済、そして世界を変えるのか
- 作者: ドン・タプスコット,アレックス・タプスコット,高橋璃子
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2016/12/02
- メディア: 単行本
- この商品を含むブログ (10件) を見る
もくじ
Genesis Blockをみる
さて、まずやってみたかったのはGenesis Blockを見ることです。みんなそうかな?違うかな?新聞記事が刻まれているってのも見たいのだけれど、それはかないませんでした。
ブロック高で、検索を行うにはblockexplorerのget_block_height()を使います。
gblock = bbe.get_block_height(0) print(vars(gblock[0]))
昨日かいたか忘れましたが、blockchain.infoのモジュールは内容をするっと見れるようにできてません。普通だったらprint(gblock)でみれたりするけど、ちょっと工夫しないとみられない。インスタンスがどうのこうのオブジェクトがどうのこうの出てきたけれどよく分かってなかったし、よく分かりませんでした。けど、こんな感じで中身が見られます。
'previous_block': '0000000000000000000000000000000000000000000000000000000000000000'と出ているので間違いないです。これが最初のブロックです。次にインプットとアウトプットを見てみましょう。
addr_tagが'Genesis of Bitcoin'になっています。コインベースも50BTCとなっています。今ならみんなよだれが出るほど欲しいでしょう。少なくとも私は欲しいですw。しかし、どこに新聞から取った文字が刻まれているのか分かりません… 。datetime.fromtimestamp()で日時を調べると2009年1月4日3時15分5秒となっています。
違いをみたらどこにその文字が刻まれていそうかわかるでしょうから、次のブロックを見てみましょう。
snd_b = bbe.get_block_height(1) print(vars(snd_b[0])) print(vars(snd_b[0].transactions[0])) print(vars(snd_b[0].transactions[0].inputs[0])) print(vars(snd_b[0].transactions[0].outputs[0]))
インプットのscript_sigがGenesis Blockと比較して物凄く短くなっているので、多分ここに新聞から取ったといわれる文章があるのでしょう。しかし、ハッシュ化されたものの戻し方がわからないので、見ることはできませんでした(ショック大)。
あと、ふたつ目のブロックのaddr_tagは何も記されていません。
やはり、一番は覚えられ二番は覚えられないのでしょう!
目指すは一番!
ウォレットが違った
上の二つを見ているとウォレットのアドレスが違うことがわかります。サトシさんはウォレットは毎回違うのを使うように推奨していましたし、それを守っているのでしょうか。ちょっと気になったので、トランザクション数、時間とともに調べてみました。
wallet_a = [] for i in range(25): block_g = bbe.get_block_height(i) times = datetime.fromtimestamp(block_g[0].transactions[0].time) t = len(block_g[0].transactions[0].outputs) wallet = block_g[0].transactions[0].outputs[0].address wallet_a.append(wallet) print('日時: {} / トランザクション数: {} / ウォレットアドレス: {}'.format(times, t, wallet))
知らなかったけど、一番最初に生み出されたGenesis Blockのあと、2番目のブロックが生み出されるまで5日以上かかっています。知らなかった。その後コンスタントに生み出されているのかと思いきや、1月9日の13時から10日の13時まで飛んだりと、実験だったのか気まぐれなのかなんか面白い感じです。
そして注目のウォレットのアドレスですが、最初の25個はすべて違うものとなっていました。
サトシさん自体がそうせいいうてますしねw
トランザクションを1000個見てみた
最初の1000個を見てみました。ちょっと時間がかかりますが、10分はかかりませんでした。
13日くらいからは止まらずに動いていたようですね。ちなみに1000個とも受取アドレスは異なっていました。
ちなみに10万個くらいデータを取ろうとしたらエラーが返ってきました。取る数などは規制されているのでしょう。
statisticsは使い方がいまいちわからず・・・
統計データが時系列でみられたりするのかと思って使ってみましたが、そんなわけではありませんでした。データは出てきたけど、id入れても変化せずという感じでした。
まとめ
ひとまず、blockchain.infoのAPIを2回にわたり利用でしてみました。面白いけど、ちょっとほしいデータが取れなかったというの心残りでした。
しかしこのようなものを使うことによって、わからないことを調べたりするので、また新たなものが見つかってというポジティブな良いループが発生することもわかりました。python-bitcoinlibだとかなり色んなことができそうですが、使いこなせるかという疑問もあります。 プログラミングの実力がないもので・・・
次の展開としてはEthreumのAPIを使ってみるか、RippleのAPIを使ってみるか、さっきのライブラリを使ってみるか・・・。いずれにせよ色々触って楽しんで、その次の段階
何かを作るというところに向かいたいと思います。