さくっと、ビットコイン・アドレスについて知りたい時用のまとめ。
詳しくは、Mastering Bitcoin等を読むのがいいと思います。
執筆途中。追記していきます。
前提知識
- ハッシュ (SHA256, RIPEMD160)
- Base64, Base58
- 暗号 (ECDSA)
- 公開鍵暗号: 公開鍵、秘密鍵
- ビットコイン
出てくる単語
- HASH160
- Base58Check
- P2PK
- P2PKH
- P2SH
Mastering Bitcoin 4章に書いてあること
- 暗号鍵がどのように作られ、保存され、管理されるのか
- 公開鍵、秘密鍵、アドレス、スクリプト・アドレスのエンコーディング形式
- 鍵の使い方: メッセージへの署名、所有権の証明、vanityアドレスとペーパーウォレットの作り方
まとめ
以下、アドレス=ビットコイン・アドレスです。
- アドレスは、公開鍵から作られ、公開鍵に対応している
- 全てのアドレスが、公開鍵に対応しているわけではない。スクリプトに対応している場合もある
- アドレスは、26−35 alphanumeric character
- アドレスは、1 か 3ではじまる
- アドレスはオフラインでも作れる
- 登録などは不要
- ビットコイン・アドレスは、case-sensitive
- チェックサムあり
- ミスタイプされたアドレスが、正当なものとして受付けられるのは、2の32 乗分の1。約42.9億分の1。
-
公開鍵は、暗号鍵から生成できる
トランザクション
- チューリング非完全
- ステートレス検証
ECDSA公開鍵→ビットコインアドレスの変換
- ECDSAな公開鍵を ripemd160(sha256(“1” + “X + Y”)) して
- 1(0x04) を頭につける
- チェックサム: sha256(sha256()) の先頭4byte を後ろにつける
- base58
簡単な説明
Address – Bitcoin
マルチシグ・アドレス
アドレスに何が入っているのか?
- ほとんどのアドレスは、34キャラクター
- I,l,O,0がない
- チェックサムがある
誤解
- アドレスを再利用しないようにする
Address reuse – Bitcoin -
アドレスバランス
- From アドレス
ない
From address – Bitcoin
技術
公式Wiki: バージョン1 ビットコインアドレスの技術バックグラウンド
Technical background of version 1 Bitcoin addresses – Bitcoin
- 160-bitの公開鍵のハッシュ
- 公開鍵暗号を利用
衝突
Exitアドレス
Mastering Bitcoin
4章から
ツール
spesmilo/sx
5章から
スタンダードなトランザクション
- isStandard() 関数にてチェック
トランザクション・スクリプトの5つのスタンダードな種類
- pay-to-public-key-hash (P2PKH)
- public key
- multi-signature
- pay-to-script-hash (P2SH)
- data output (OP_RETURN)
FAQ
- Q. アドレスは公開鍵?
- A.
- 一つのトランザクションでも、それぞれのUXTO用にサインが必要?
- A.
- 何個のinput, outputまでOK?
- A.
- vout, txid
- A.