Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ビットコインアドレス生成のロジック

3,520 views

Published on

出来上がっていないですが、ありのままを。

- 秘密鍵と公開鍵からビットコインアドレスが生成されるまでを見てみよう。-
2017-06-12【ビットコインとか勉強会#8】
ceres Inc. 村田智英

Published in: Engineering
  • Be the first to comment

ビットコインアドレス生成のロジック

  1. 1. ビットコインアドレス生成のロジック - 秘密鍵と公開鍵からビットコインアドレスが生成されるまでを見てみよう。 - 2017-06-12【ビットコインとか勉強会 #8】 ceres Inc. 村田智英
  2. 2. 村田智英 - ソフトウェアエンジニア - この勉強会のスタッフ - 株式会社セレス所属 @Derorisan https://www.facebook.com/tomohide.murata.1 好きなもの: Dlang, perl, emacs, fedora 嫌いなもの: PHP, Oracle
  3. 3. CoinTip作りました - ツイッターアカウント宛にビットコインを送る送金サービス - ビットコインとツイッターアカウントを持っていればOK - 勉強会のスピーカーへのお礼や、有名人などへの投げ銭に使う目的 https://cointip.jp/
  4. 4. 間違っているところがあるかもしれません。 ところどころ止めますので、ツッコミお願いします。
  5. 5. あじぇんだ ● Bitcoin addressって? ● 何に使うの? ● 装備品(Bitcoin addressを作るのに必要な装備) ● Bitcoin addressができるまで。
  6. 6. ウォレット持ってる人
  7. 7. 送金したことがある人?
  8. 8. おさらい
  9. 9. Bitcoin addressってどれ?
  10. 10. これな
  11. 11. Bitcoin address 送金の際の宛先に利用します。 ● 1から始まるのが普通のアドレス(P2PKH)pay to public key hash ● 3から始まるのがP2SH(pay to script hash) マルチシグネチャで利用 segwitはBIP142あたりを参照
  12. 12. 秘密鍵ってどれ?
  13. 13. これな
  14. 14. 秘密鍵(private key) ● 復元フレーズは秘密鍵を復活させるために使う。 (BIP39あたりを参照) https://github.com/bitcoin/bips/tree/master/bip-0039 ● Secp256k1(楕円曲線)https://en.bitcoin.it/wiki/Secp256k1
  15. 15. 公開鍵ってどれ?
  16. 16. これな 参考: @you21979さん http://qiita.com/you21979@github/items/5d3bd71ae2107d03973a
  17. 17. 公開鍵(pubkey) ● Bitcoin addressを作るのに使う ● 公開鍵から秘密鍵は計算できない。(逆は可能) ● 暗号化に使うわけではない。(Bitcoin addressを生成するのに使う) ● 普通はcompressした公開鍵を使う。(楕円曲線との兼ね合いで圧縮できる)
  18. 18. ハッシュ関数
  19. 19. ハッシュ関数 ハッシュ関数 (ハッシュかんすう、hash function) あるいは要約関数とは、あるデータが 与えられた場合にそのデータを代表する数値を得る操作、または、その様な数値を得る ための関数のこと。ハッシュ関数から得られた数値のことを要約値やハッシュ値または 単にハッシュという。 wikipedia: https://ja.wikipedia.org/wiki/ハッシュ関数 ● 値を渡すと決まった文字列を返してくれるもの。MD5などと同様
  20. 20. SHA256 ● Bitcoinだけでなくopensslなど、ほかのところでもよく使われているもの。 ● SHA-2のタイプの中にSHA-256があるので注意です。(SHA-512もSHA-2だよ。) 詳しくは-> https://ja.wikipedia.org/wiki/SHA-2
  21. 21. ripemd160 ● SHA-256よりも短いハッシュが得られる。
  22. 22. base58
  23. 23. base58encode base64から間違えやすい文字を削ったもの base64: a-z, A-Z, 0-9, +/ base58: base64から6文字削る。(+, /, 0 ゼロ、O 大文字o、I 大文字i、l 小文字L) 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
  24. 24. base58check ● ビットコイン特有 文字列(公開鍵)にSHA256を2回通して、頭の4byteを文字列につけてbase58encodeし たもの。 参考:マスタリングビットコイン https://www.bitcoinbook.info/translations-of-mast ering-bitcoin/
  25. 25. その他
  26. 26. WIF ● Bitcoin特有 ● wallet import formatの略 ● 秘密鍵をWIF形式でインポートしたりエクスポートしたりする。 ● BIP38を参考 参考: マスタリングビットコイン
  27. 27. ここまでが必要なもの
  28. 28. Bitcoin address ができるまで。 1. 秘密鍵作る(seedは適当な文字列) 2. 公開鍵作る 3. SHA256とおす 4. RIPEMD160 とおす 5. 先頭に0x00入れて a. checksum計算(SHA256を2回とおす) b. 先頭4バイトをチェックサムにする。 6. bでできたものを5.の後ろのつける 7. base58エンコード できあがり 参考: https://jpbitcoin.com/about/whatisbitcoin3
  29. 29. MASTERING BITCOIN 書籍もありますが、pdfでもあります。 CCライセンス https://www.bitcoinbook.info/translations- of-mastering-bitcoin/
  30. 30. おしまい

×