rubyのsimpleなwalletをまずは動かす2 〜 bitcoinのsimpleなwalletをpythonで実装を試みる

技術メモ

前回の記事で、財布の残高を確認するコマンドでエラーが発生したのでそれを解決していく。

# ruby bcwallet.rb balance
bcwallet.rb:415:in `read': invalid message type (RuntimeError)
 from bcwallet.rb:1104:in `dispatch_message'
 from bcwallet.rb:899:in `block (2 levels) in sync'
 from bcwallet.rb:898:in `loop'
 from bcwallet.rb:898:in `block in sync'

の、部分。

    unless @message_definitions.has_key?(packet[:command])
      raise 'invalid message type'
    end

どうも、意図せぬコマンドが送られてきている。
やっぱ、古いのかなぁ実装、、、

  def dispatch_message
    message = @message.read(@socket)
    p message

のように
https://github.com/peryaudo/bcwallet/blob/master/bcwallet.rb#L1104
の箇所でメッセージ出力するようにしたところ、、、

# ruby bcwallet.rb balance
{:version=>70015, :services=>13, :timestamp=>1494496695, :your_addr=>nil, :my_addr=>nil, :nonce=>7682805865688576756, :agent=>"/Satoshi:0.14.0/", :height=>1122141, :relay=>1, :command=>:version}
{:command=>:verack}
bcwallet.rb:415:in `read': invalid message type (RuntimeError)
 from bcwallet.rb:1104:in `dispatch_message'
 from bcwallet.rb:899:in `block (2 levels) in sync'
 from bcwallet.rb:898:in `loop'
 from bcwallet.rb:898:in `block in sync'

のようなコマンドがやりとりされていた。

とおもったら、、、しばらくしたら 残高確認成功してしまった(汗

# ruby bcwallet.rb balance
{:version=>70015, :services=>13, :timestamp=>1494497049, :your_addr=>nil, :my_addr=>nil, :nonce=>6101898014053307904, :agent=>"/Satoshi:0.14.0/", :height=>1122141, :relay=>1, :command=>:version}
connection establishing ... done.
Block chain synchronized.

Balances for available Bitcoin addresses:
    hoge: 0.00000000 BTC

たぶん、ブロック同期している最中に bcwallet.rb を動かしたらダメなんでしょうね。
この辺りはpythonで実装するときにエラー処理してもよさそうだ。

あと残りは、コインの送金を次に試してみるか。
今日は時間があまりないのでここまで。あんまり検証できなかったが毎日コツコツ続けていく。

Sponsored Link

ビットコイン(Bitcoin)、イーサリアム(Ethereum)、リップル(Ripple)、ネム(NEM)などの仮想通貨を買うならZaifがおすすめです。

特に国内でETHを購入するなら、アルトコインでも板取引に対応しているZaif(ザイフ)が割安なのでよいですよ。

コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


Dapps
ERC721のサンプルコード上を使ってデータを譲渡してみる

前回の記事からの続きです。 テストまで前回通したので、いよいよ送金をやってみます。 Sponsore …

Ethereum(イーサリアム)
ERC721のサンプルコードを動かしてみる

以前ERC721を紹介しましたが今回はその際に紹介したサンプルコードを動かしてみようと思います。 S …

Bitcoin(ビットコイン)
Bitcoinをカスタマイズする際にエラーで落ちて出力されたCoreファイルをトレースする

bitcoinの開発を行なっているとどうしてもセグメンテーションエラーなどでプログラムがとまってCo …