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


仮想通貨全般
Dharma code schoolを試してみる

前回の記事からの続きで以下を試してみました。 チュートリアルでは簡単なローンのスマートコントラクトを …

Dapps
Plasma Porker をとりあえず動かす

最近、Plasma界隈で賑わしている Plasma Prime。 Plasma Prime desi …

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

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