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

More Related Content

What's hot

クラウドを支えるこれからの暗号技術
クラウドを支えるこれからの暗号技術クラウドを支えるこれからの暗号技術
クラウドを支えるこれからの暗号技術MITSUNARI Shigeo
 
Entry for Bitcoin (For Japanese)
Entry for Bitcoin (For Japanese)Entry for Bitcoin (For Japanese)
Entry for Bitcoin (For Japanese)GOTO_A
 
ブロックチェーンの基本構造
ブロックチェーンの基本構造ブロックチェーンの基本構造
ブロックチェーンの基本構造Soichiro Takagi
 
AndroidでFeliCaの履歴を読もう
AndroidでFeliCaの履歴を読もうAndroidでFeliCaの履歴を読もう
AndroidでFeliCaの履歴を読もうtreby
 
Bitcoinについて
BitcoinについてBitcoinについて
BitcoinについてTakuya SUMI
 
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )Akira Kanaoka
 
古今東西 XML署名フォーマット
古今東西 XML署名フォーマット古今東西 XML署名フォーマット
古今東西 XML署名フォーマットNaoto Miyachi
 
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装Yuto Takei
 
ネット仮想通貨の論点 - 楠正憲
ネット仮想通貨の論点 - 楠正憲ネット仮想通貨の論点 - 楠正憲
ネット仮想通貨の論点 - 楠正憲Masanori Kusunoki
 
とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法Kenshi Muto
 
KOF2016東海道らぐLT
KOF2016東海道らぐLTKOF2016東海道らぐLT
KOF2016東海道らぐLTShu Kobuchi
 

What's hot (15)

クラウドを支えるこれからの暗号技術
クラウドを支えるこれからの暗号技術クラウドを支えるこれからの暗号技術
クラウドを支えるこれからの暗号技術
 
Entry for Bitcoin (For Japanese)
Entry for Bitcoin (For Japanese)Entry for Bitcoin (For Japanese)
Entry for Bitcoin (For Japanese)
 
ブロックチェーンの基本構造
ブロックチェーンの基本構造ブロックチェーンの基本構造
ブロックチェーンの基本構造
 
Bond の v4 について
Bond の v4 についてBond の v4 について
Bond の v4 について
 
Bitcoin 4
Bitcoin 4Bitcoin 4
Bitcoin 4
 
AndroidでFeliCaの履歴を読もう
AndroidでFeliCaの履歴を読もうAndroidでFeliCaの履歴を読もう
AndroidでFeliCaの履歴を読もう
 
MuSig
MuSigMuSig
MuSig
 
Bitcoinについて
BitcoinについてBitcoinについて
Bitcoinについて
 
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
 
Mobile Openid
Mobile OpenidMobile Openid
Mobile Openid
 
古今東西 XML署名フォーマット
古今東西 XML署名フォーマット古今東西 XML署名フォーマット
古今東西 XML署名フォーマット
 
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
 
ネット仮想通貨の論点 - 楠正憲
ネット仮想通貨の論点 - 楠正憲ネット仮想通貨の論点 - 楠正憲
ネット仮想通貨の論点 - 楠正憲
 
とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法
 
KOF2016東海道らぐLT
KOF2016東海道らぐLTKOF2016東海道らぐLT
KOF2016東海道らぐLT
 

Viewers also liked

自動売買プログラムの作り方
自動売買プログラムの作り方自動売買プログラムの作り方
自動売買プログラムの作り方Shinya Furusake
 
PyCon JP 2017Yuta Kitagami
PyCon JP 2017Yuta KitagamiPyCon JP 2017Yuta Kitagami
PyCon JP 2017Yuta KitagamiYuta Kitagami
 
PyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめPyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめJun Okazaki
 
2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット
2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット
2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリットRyo Nagaoka
 
暗号通貨勉強会
暗号通貨勉強会暗号通貨勉強会
暗号通貨勉強会Kohei Ogawa
 
Redash pythonで業務分析
Redash pythonで業務分析Redash pythonで業務分析
Redash pythonで業務分析創史 花村
 
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点についてdcubeio
 
AWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAmazon Web Services Japan
 

Viewers also liked (8)

自動売買プログラムの作り方
自動売買プログラムの作り方自動売買プログラムの作り方
自動売買プログラムの作り方
 
PyCon JP 2017Yuta Kitagami
PyCon JP 2017Yuta KitagamiPyCon JP 2017Yuta Kitagami
PyCon JP 2017Yuta Kitagami
 
PyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめPyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめ
 
2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット
2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット
2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット
 
暗号通貨勉強会
暗号通貨勉強会暗号通貨勉強会
暗号通貨勉強会
 
Redash pythonで業務分析
Redash pythonで業務分析Redash pythonで業務分析
Redash pythonで業務分析
 
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
 
AWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon AthenaAWS Black Belt Online Seminar 2017 Amazon Athena
AWS Black Belt Online Seminar 2017 Amazon Athena
 

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

マルチシグネチャアドレスの作成・送金方法
マルチシグネチャアドレスの作成・送金方法マルチシグネチャアドレスの作成・送金方法
マルチシグネチャアドレスの作成・送金方法Takuya Tokuda
 
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)ShogoOkazaki
 
[LT資料] 異常検知技術を転用して目指す錬金術 [錬金術MeetUp]
[LT資料] 異常検知技術を転用して目指す錬金術 [錬金術MeetUp][LT資料] 異常検知技術を転用して目指す錬金術 [錬金術MeetUp]
[LT資料] 異常検知技術を転用して目指す錬金術 [錬金術MeetUp]takosumipasta
 
スクレイピングその後
スクレイピングその後スクレイピングその後
スクレイピングその後Tomoki Hasegawa
 
Stripe触ってみた! Jekyll + AWS S3に組み込み
Stripe触ってみた! Jekyll + AWS S3に組み込みStripe触ってみた! Jekyll + AWS S3に組み込み
Stripe触ってみた! Jekyll + AWS S3に組み込みHirokazu Tokuno
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座DIVE INTO CODE Corp.
 
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版Tomoki Hasegawa
 
【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾 ~Microsoft の xDR で攻撃者を追え!!~​
【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾  ~Microsoft の xDR で攻撃者を追え!!~​【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾  ~Microsoft の xDR で攻撃者を追え!!~​
【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾 ~Microsoft の xDR で攻撃者を追え!!~​日本マイクロソフト株式会社
 
【de:code 2020】 ハンズオンで学ぶ AI ~ Bot Framework Composer + QnA Maker / Custom Visi...
【de:code 2020】 ハンズオンで学ぶ AI ~ Bot Framework Composer + QnA Maker / Custom Visi...【de:code 2020】 ハンズオンで学ぶ AI ~ Bot Framework Composer + QnA Maker / Custom Visi...
【de:code 2020】 ハンズオンで学ぶ AI ~ Bot Framework Composer + QnA Maker / Custom Visi...日本マイクロソフト株式会社
 
謎のコード名を解き明かせ!
謎のコード名を解き明かせ!謎のコード名を解き明かせ!
謎のコード名を解き明かせ!Masahiko Isshiki
 
How are AsakusaSatellite growing with mzp
How are AsakusaSatellite growing with mzpHow are AsakusaSatellite growing with mzp
How are AsakusaSatellite growing with mzpRyo Suetsugu
 

Similar to ビットコインアドレス生成のロジック (14)

マルチシグネチャアドレスの作成・送金方法
マルチシグネチャアドレスの作成・送金方法マルチシグネチャアドレスの作成・送金方法
マルチシグネチャアドレスの作成・送金方法
 
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
Rustで DDD を実践しながら API サーバーを実装・構築した(つもり)
 
[LT資料] 異常検知技術を転用して目指す錬金術 [錬金術MeetUp]
[LT資料] 異常検知技術を転用して目指す錬金術 [錬金術MeetUp][LT資料] 異常検知技術を転用して目指す錬金術 [錬金術MeetUp]
[LT資料] 異常検知技術を転用して目指す錬金術 [錬金術MeetUp]
 
スクレイピングその後
スクレイピングその後スクレイピングその後
スクレイピングその後
 
20180914 FiFiC
20180914 FiFiC20180914 FiFiC
20180914 FiFiC
 
Electron を知る
Electron を知るElectron を知る
Electron を知る
 
Stripe触ってみた! Jekyll + AWS S3に組み込み
Stripe触ってみた! Jekyll + AWS S3に組み込みStripe触ってみた! Jekyll + AWS S3に組み込み
Stripe触ってみた! Jekyll + AWS S3に組み込み
 
初めてのWebプログラミング講座
初めてのWebプログラミング講座初めてのWebプログラミング講座
初めてのWebプログラミング講座
 
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
 
【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾 ~Microsoft の xDR で攻撃者を追え!!~​
【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾  ~Microsoft の xDR で攻撃者を追え!!~​【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾  ~Microsoft の xDR で攻撃者を追え!!~​
【de:code 2020】 もうセキュリティはやりたくない!! 第 5 弾 ~Microsoft の xDR で攻撃者を追え!!~​
 
【de:code 2020】 ハンズオンで学ぶ AI ~ Bot Framework Composer + QnA Maker / Custom Visi...
【de:code 2020】 ハンズオンで学ぶ AI ~ Bot Framework Composer + QnA Maker / Custom Visi...【de:code 2020】 ハンズオンで学ぶ AI ~ Bot Framework Composer + QnA Maker / Custom Visi...
【de:code 2020】 ハンズオンで学ぶ AI ~ Bot Framework Composer + QnA Maker / Custom Visi...
 
Bot Service 概要
Bot Service 概要Bot Service 概要
Bot Service 概要
 
謎のコード名を解き明かせ!
謎のコード名を解き明かせ!謎のコード名を解き明かせ!
謎のコード名を解き明かせ!
 
How are AsakusaSatellite growing with mzp
How are AsakusaSatellite growing with mzpHow are AsakusaSatellite growing with mzp
How are AsakusaSatellite growing with mzp
 

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