bcwallet.rb で ついにブロック同期の保存ができたか!?

技術メモ

いろいろ調べた結果、同期したブロックをファイルに保存しているところまではOKだが、一度中断したあとに、どこまでブロックがすすんでいたか読み出す処理にバグ?があるようだ。
もう少し検証は必要だけど

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

  def calc_last_hash
    # These hashes are genesis blocks' ones.
    last_hash = { timestamp: 0,
                   hash: [IS_TESTNET ?
                     '000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943' :
                     '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'].pack('H*').reverse }

    @data[:blocks].each do |hash, block|
      if block[:timestamp] > last_hash[:timestamp]
        last_hash = { timestamp: block[:timestamp], hash: hash }
      end
    end

      if block[:timestamp] > last_hash[:timestamp]
        last_hash = { timestamp: block[:timestamp], hash: hash }
      end

これを

      # if block[:timestamp] > last_hash[:timestamp]
        last_hash = { timestamp: block[:timestamp], hash: hash }
      # end

こうする。
どうも、timestampで判断してしまうと、ブロックの順番がくずれるみたいだ。

もう少し検証してOKそうであれば、PR投げてみる。

ただ、よくわかってないのは、どのブロックもbitcoinサーバーからブロック同期してるはずなんだけど、他のブロック(ようはhash)だとなぜ反応しないのかがよくわかってない、、、これはこれで調べるか。知識が深まりそう。

Sponsored Link

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

※アプリは指値売買ができず手数料が高いので、アプリをダウンロードするのではなくメール&パスワード登録へ!まずは5万円ほど入金して仮想通貨とブロックチェーンの世界を楽しんでください!

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

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

コメントを残す

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

CAPTCHA


miningpoolhub
miningpoolhubのAPIを使って自動スイッチングを試してみる in ethOS

* アイキャッチの男性は、Flicker上のライセンスフリーの画像ひっぱってきているだけで、本文とま …

NEM
[memo] NEMを送金しようとするとFAILURE_TIMESTAMP_TOO_FAR_IN_FUTUREが出る

Docker上のコンテナで、NEM-libraryを使ってmosaicの送金を試していたところ FA …

NEM
NEMのテストネットワークで独自通貨を試す

NEMアプリケーションを作る際にテストネットワークでのテスト非常に重要になってきます。 このため今回 …