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


Ethereum(イーサリアム)
Ethereumの開発用ツールリストが公開されていた!

ALISのCTO石井さんがつぶやいてたんですが とてもありがたい #Ethereum 開発ツールの一 …

技術メモ
Counterpartyの環境構築が大変という話

暗号通貨の独自通貨を作ろうとするとEthereumが有名で簡単ですが、BitcoinでもCounte …

Ethereum(イーサリアム)
Error: The contract code couldn’t be stored, please check your gas amount.

ALISのICOソースのzeppelinバージョンを1.2から1.8にあげようとしたときにはまったエ …