タイトル
ビットコインとか勉強会#8 - connpass (2017.6.12)
cryptocurrency.connpass.com
会場
FinoLab
〒100-0004 東京都千代田区大手町1丁目6−1(大手町ビル4階)
全体の感想など
勉強会#4、勉強会#5 に続いて、「ビットコインとか勉強会」の参加は三度目でした。ビットコインの注目度が高いからでしょうか、月に一度以上のハイペースで勉強会が開催されているようですね。
<過去記事>
akiyoko.hatenablog.jp
会場はほぼ満員。
ビットコインを取り巻く FinTech の過熱ぶりの一端が今回も伺えました。
勉強会の内容は結構エンジニア寄りで、「ビットコインアドレス生成のロジック」と「Poloniex API解説(Lending編)」でした。
ビットコインアドレスについては、少し前に社内向けに作成した資料でビットコインアドレス、秘密鍵、公開鍵の三点セットについてまとめたことがあったので、非常に興味深かったです。
ビットコインアドレスの生成過程で当然、セキュリティや暗号技術の話も出ていたのですが、その中でも、
量子コンピュータって実現したら、ブロックチェーンの暗号解かれちゃうの?
— driller/どりらん (@patraqushe) 2017年6月28日
私も気になった、量子コンピュータ問題。
公開鍵はトランザクションに含まれているため、自分以外の誰でもアクセスできる状態です。量子コンピュータが実現したら、公開鍵から秘密鍵が推測されてしまうのでは?と私も思って質問してみたのですが、そんな状態になったら SSL や SSH などの他の暗号技術が破られてしまうので、ビットコインどころじゃなくなるとのこと。 *1 そうなる前に、開発者が暗号方式を変更するなりして何とか対応するでしょう、とのことでした。なるほど、納得です。
そして、たまたま 8ヶ月ほど前の記事を見つけたのですが、
量子コンピューターの暗号解読からビットコインを守るには、ビットコインのプロトコルに新しい量子暗号化技術を組み込む必要がある。実はこうした技術は既に存在しており、問題はそれを導入するかどうかだ。
「量子コンピューターがビットコインを滅ぼす日 | ワールド | 最新記事 | ニューズウィーク日本版 オフィシャルサイト」より
などと書かれていました。大丈夫・・・ですよね??
ビットコインアドレス生成のロジック
- Bitcoin address って?
- 1から始まるのが普通のアドレス(P2PKH: pay to publish key hash)
- 3から始まるのは(P2SH)マルチシグネチャで利用
- segwitはBIP142あたりを参照??
- 秘密鍵
- 復元フレーズは秘密鍵を復活させるために使う
- Secp256k1(楕円曲線)
- 公開鍵
- 秘密鍵から生成
- Bitcoin addressを作るのに使う。暗号化に使うわけではない。
- 通常は圧縮した公開鍵を使う
- ハッシュ関数
- SHA256(シャーニゴロと読む?)
- Bitcoinだけでなくopensslなどほかでもよく使われている
- SHA-2の中に、SHA-256 や SHA-512 がある
- ripemd160
- SHA256よりも短いハッシュが得られる
- base58
- base64から読み間違えやすい文字を(6文字)削ったもの
- 公開鍵にSHA256を二回通して、頭の4byteを文字列に付けてbase58encodeしたもの
- WIF
- wallet import format
- 秘密鍵をWIF形式でインポートしたりエクスポートしたりする
- Bitcoin address ができるまで
- 1. 秘密鍵を作る
- 2. 公開鍵を作る
- 3. SHA256を通す
- 4. RIPEMD160を通す
- 5. 先頭に0x00(バージョン番号)をつけて
- a. checksum計算
- b. 先頭4バイトをチェックサムにする
- 6. b.で出来たものを 5. の後ろにつける
- 7. base58エンコード
- 秘密鍵はネット上に置いておくと危ない!!
- ハードウェアウォレット、紙、鉄の板 etc
「ビットコインとは何か? 第3回:ビットコインの仕組み(アドレスの作成から送金まで) - ビットコインの解説 | Bitcoin日本語情報サイト」というサイトで、今回説明した秘密鍵からビットコインアドレス生成までの流れをポチポチとボタンを押しながらシミュレートすることができます。非常に分かりやすいですね。
その他、
も有用かと。
ビットコインの技術的な詳細については、この「マスタリングビットコイン」が詳しいです。
Poloniex API解説(Lending編)
- API documentation
- Public API Method と Private API Method
- Exchange:現物で売買するときのアカウント
- Margin Trading:レバレッジを効かせて売買する
- Lending:ユーザー間で貸し借りするサービス
- 例えば 0.1%/日の複利で、年利44%
- Margin Buy => BTCを借りてXRPを買う
- Margin Sell => XRPを借りてBTCを買う?
前回(ビットコインとか勉強会#3)では、自動取引プログラムの作り方を発表したとのことです。
Poloniex の API については今回始めて知ったのですが、どんなものか触ってみたいなぁと思っていた矢先、日経ソフトウェア 7月号で「Python で「ビットコイン」システムトレード」という連載が始まったということを知り、早速買って読んでみた次第です。
その後、fin-pyもくもく会 #6」という勉強会に参加し、API を使ったプログラムを自作し始めるのですが、それはまた別のブログで。