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

技術メモ

前回は一旦動いた

ruby bcwallet.rb balance

がまた、動かなくなった。
ので再調査。

balanceコマンドを打った後に debug.logを見ると

2017-05-12 09:39:19 receive version message: /bcwallet.rb:1.00/: version 70002, blocks=-1, us=0.0.0.0:8333, peer=33
2017-05-12 09:39:19 socket recv error Connection reset by peer (104)

がでる。どうもpeerサーバーと繋がっていない。

blocks=-1,

ってそもそもなんだ?
調べてみると、どうも blockchainの長さらしいがこれが上手く取得できていないみたいだ。

あと

us=0.0.0.0:8333

これ、testnetではなくてmainnetのpeerポートだぞ。
こちらの帰ってくるメッセージ、何かおかしい。

http://bitcoin.peryaudo.org/implement.html#ハンドシェイク(version・verack)

をみると、

bcwallet.rbはruby bcwallet.rb balanceとして実行されると、自動的にブロックチェーンの同期をはじめる。

とのこと。同期がうまくいっていない。
socketのつなぎ先がメインネットになってるのが原因でハンドシェイクがうまくいっていないのか??

{:command=>:verack}

を投げたあとに応答がなくなる。
そもそも、最後エラーになっているときは何のメッセージが帰ってきている?

{:command=>:verack}

のあとのread_packetの部分を見てみると

https://github.com/peryaudo/bcwallet/blob/master/bcwallet.rb#L401

の部分の packet を出力してみたら

{:magic=>"vx11ta", :command=>:alert, :checksum=>"exF9xAAxEA", :payload=>"`x01x00x00x00x00x00x00x00x00x00x00x00xFFxFFxFFx7Fx00x00x00x00xFFxFFxFFx7FxFExFFxFFx7Fx01xFFxFFxFFx7Fx00x00x00x00xFFxFFxFFx7Fx00xFFxFFxFFx7Fx00/URGENT: Alert key compromised, upgrade requiredx00F0Dx02 e?xEBxD6Ax0FGx0FkxAEx11xCAxD1x9CHA;xECxB1xAC,x17xF9bxFDx0FxD5;xDC:xBDRx02 mx0Ex9Cx96xFEx88xD4xA0xF0x1ExD9xDExDAxE2xB6xF9xE0rxA9LxADx0FxECxAAxE6nxCFhx9BxF7eP"}

と帰ってきていて、 command が alert 。
payload は、よくはわかってないが「Alert key compromised, upgrade required」が読み取れるのでググってみると

https://bitcoin.stackexchange.com/questions/51056/alert-key-compromised-upgrade-required

The network wide Alert system is being retired. No Bitcoins are at risk and this warning may be safely ignored. Upgrade to the newest version of your wallet software to no longer see the alert.

ようは「警告でないようwalletをアップグレードしましょう」ってことらしい。
bcwallet.rb をじゃぁアップグレードする必要があるが、どこをどう修正すればいいんだ??

ちなみに、bcwallet.rbが落ちているのはこのalertレスポンスを受け取る処理がないため落ちているような気がする。

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

コメントを残す

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

CAPTCHA


仮想通貨全般
TendermintをDocker使って起動してみる

以前、勉強会に行ってきた際にTendermintの事を聞いて ブロックチェーンプロトコルが実装できる …

仮想通貨全般
Bitcoinのdifficultyを決めるnBitsを理解する

マイニングする際の理解を深めようと思い、マイニング難易度(difficulty)を決めるnBitsに …

仮想通貨全般
EOS Night Meetupにいってきた

今回は、以前からEOSに興味があったので EOS Night Meetupにいってきました。 暗号通 …