ビットコインのハッシュレートを計算してみた

457400ff559f14cf1c2f76916e1673ba?s=47 Kazuki Ikuta
December 15, 2017
430

 ビットコインのハッシュレートを計算してみた

457400ff559f14cf1c2f76916e1673ba?s=128

Kazuki Ikuta

December 15, 2017
Tweet

Transcript

  1. 2.

    2 ©Gunosy Inc. ⾃⼰紹介 名前 : ⽣⽥ 和希 (いくた かずき)

    @ikutyy 所属 : 株式会社Gunosy 新規事業開発室 (内定者インターン) 早稲⽥⼤学 ⽂化構想学部 4年 趣味 : 将棋(アマチュア五段くらい) / 能(宝⽣流) 個⼈的なトピック : 先週、卒論提出したぞ!!!!!
  2. 12.

    12 ©Gunosy Inc. ハッシュ値の例 •  SHA256(bitcoin0) -> 2277EFD2E9051A1978682CAD7A111876031F7FCDB9A2A06B5FDEEE160DD8F34E •  SHA256(bitcoin1)

    -> DBDBAC0B3072D7677FC94EEBAF8EBA9E81E5C3B7DE6899DAE12C98D6799B065A •  SHA256(bitcoin2) -> 1ED7259A5243A1E9E33E45D8D2510BC0470032DF964956E18B9F56FA65C96E89 16進数表⽰なので64桁。2進数だと256桁(256bit)
  3. 13.

    13 ©Gunosy Inc. ビットコインのハッシュ値の作り⽅ •  ver (バージョン)4byte •  preview hash

    (前回発⾒されたハッシュ値)32byte •  markle root (トランザクションを要約したハッシュ値) : 32byte •  time (ハッシュ値を計算したときの時間):4byte •  nonce (⾃由に⼊れることができる値)4byte •  bits (difficulty targetを変換した値)4byte ハッシュ値の計算に使う値 nonceを⼊れ替えて毎回ハッシュ値を計算する。(実際はもう少し⼯夫してる)
  4. 15.

    15 ©Gunosy Inc. マイニング成功確率の計算 サイコロの場合 l  1回振ったときにn以下になる確率 —  n /

    6 マイニングの場合 l  1回ハッシュ値を計算したときにtarget以下になる確率 —  1 / target —  いまはだいたい 1 / 2^68 くらい l  ⾒⽅を変えれば、2^68回計算したら1回はたぶん⾒つかる。 l  10分に1回⾒つかるように調整されてるということは、   10分間で2^68回ハッシュ値が計算されると想定されている。 => これでハッシュレートを計算できるぞ!
  5. 16.

    16 ©Gunosy Inc. ハッシュレートの計算 計算例 l  target = 2^68 とする。

    l  ハッシュ値の発⾒時間は前回のマイニング成功から10分(600秒)とする。 —  target / 600 = 491913175298921408(hash/second) l  実際には係数を考慮する必要があるのでもう少し⼤きい。 l  ブロックにあるbitsからtargetへ変換する必要がある。 githubにコードを置いておきました。 https://github.com/ikutyy/bitcoin_hash_rate_culculate
  6. 17.
  7. 19.

    19 ©Gunosy Inc. 参考資料 •  bitcoin wiki •  https://en.bitcoin.it/wiki/Difficulty • 

    https://en.bitcoin.it/wiki/Target •  Gunosy Tech Blog •  http://tech.gunosy.io/entry/crypto-mining-summary •  その他 •  『ビットコインとブロックチェーン:暗号通貨を⽀える技術』 •  https://www.bitcoinbook.info/translations/ja/book.pdf