Tech

ビットコイン・アドレスの技術的説明

  • このエントリーをはてなブックマークに追加

さくっと、ビットコイン・アドレスについて知りたい時用のまとめ。
詳しくは、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

PubKeyToAddr.png (1180×1791)

簡単な説明
Address – Bitcoin

マルチシグ・アドレス

アドレスに何が入っているのか?

  • ほとんどのアドレスは、34キャラクター
  • I,l,O,0がない
  • チェックサムがある

誤解

技術

公式Wiki: バージョン1 ビットコインアドレスの技術バックグラウンド
Technical background of version 1 Bitcoin addresses – Bitcoin

  • 160-bitの公開鍵のハッシュ
  • 公開鍵暗号を利用

衝突

Exitアドレス

Mastering Bitcoin

4章から

ツール
spesmilo/sx

5章から

スタンダードなトランザクション

  • isStandard() 関数にてチェック

トランザクション・スクリプトの5つのスタンダードな種類

  1. pay-to-public-key-hash (P2PKH)
  2. public key
  3. multi-signature
  4. pay-to-script-hash (P2SH)
  5. data output (OP_RETURN)

FAQ

  • Q. アドレスは公開鍵?
    • A.
  • 一つのトランザクションでも、それぞれのUXTO用にサインが必要?
    • A.
  • 何個のinput, outputまでOK?
    • A.
  • vout, txid
    • A.
  • このエントリーをはてなブックマークに追加