ビットコインの公開鍵からBTCアドレスへ

ビットコイン公開鍵をアドレスへオンライン変換

圧縮または非圧縮のビットコイン公開鍵から、レガシー(P2PKH)、スクリプトハッシュ(P2SH)、およびSegWit(Bech32 P2WPKH)など、さまざまな形式の対応するウォレットアドレスを導出します。

ビットコイン公開鍵からアドレスへの変換ツールは、圧縮および非圧縮の公開鍵を、レガシー(P2PKH)、P2SH、SegWit(P2WPKH)など複数のビットコインアドレス形式へ変換します。トランザクション、ウォレット生成、およびブロックチェーン分析に利用できます。

圧縮公開鍵の例: 035cd1854cae45391ca4ec428cc7e6c7d9984424b954209a8eea197b9e364c05f6
非圧縮公開鍵の例: 045cd1854cae45391ca4ec428cc7e6c7d9984424b954209a8eea197b9e364c05f6f5faaa72c795ca7bd49cbc9724639002935de3acc61172e44730872e3ecb49db

ビットコイン公開鍵からアドレスへの変換ガイド

生のsecp256k1公開鍵が暗号学的に変換され、標準的なビットコインネットワークのアドレスになるまでの仕組みを解説する教育用ガイドです。

1. 公開鍵からアドレスへ:暗号学的な変換プロセス

ビットコイン公開鍵(非圧縮形式では65バイト、圧縮形式では33バイト)は、そのままウォレットの受取アドレスとして使用されるわけではありません。データ長の短縮、エラー検出機能の導入、およびプライバシー層の追加を目的として、ビットコインプロトコルでは公開鍵を複数段階のハッシュ処理にかけます:

公開鍵(X,Y) → SHA-256 → RIPEMD-160 → Hash160(20バイト) → エンコード方式

中核となるハッシュ処理(Hash160)は、次の2段階で構成されます:

  1. SHA-256:生の公開鍵バイト列をハッシュ化し、256ビット(32バイト)のダイジェストを生成します。
  2. RIPEMD-160:SHA-256の出力をさらにハッシュ化し、160ビット(20バイト)のコンパクトな公開鍵ハッシュ(PubKeyHash)を生成します。

2. アドレス導出の規格(BIPプロトコル)

20バイトのHash160ダイジェストに適用するエンコード形式に応じて、異なる種類のビットコインアドレスが生成されます:

アドレス形式 形式 / 規格 プレフィックス エンコード方式
レガシー(P2PKH) Pay-to-PubKey-Hash(BIP 44) 1... Base58Check
ネスト型SegWit(P2SH-P2WPKH) Pay-to-Script-Hash(BIP 49) 3... Base58Check
ネイティブSegWit(P2WPKH) Pay-to-Witness-PubKey-Hash(BIP 84) bc1q... Bech32
Taproot(P2TR) Pay-to-Taproot(BIP 341) bc1p... Bech32m(Xのみの公開鍵)

3. レガシー(P2PKH)への変換手順

圧縮公開鍵を、1から始まる標準的なレガシーアドレスへ変換する場合:

  • ステップ1(公開鍵):02または03で始まる33バイトの圧縮公開鍵を使用します。
  • ステップ2(Hash160):RIPEMD160(SHA256(PublicKey))を計算し、20バイトのPubKeyHashを取得します。
  • ステップ3(ネットワークプレフィックス):20バイトのハッシュの先頭に、ビットコインメインネットのバージョンバイト(0x00)を付加します。
  • ステップ4(チェックサム):プレフィックス付きペイロードに対してSHA-256を2回適用し、最初の4バイトをチェックサムとして取得します。
  • ステップ5(Base58Check):4バイトのチェックサムをペイロードに追加し、全体をBase58でエンコードします。

4. 一方向性の性質

アドレスの導出が一方向の数学的関数であることを理解することが重要です:

  • 公開鍵 → アドレス:瞬時かつ決定論的に実行できます。公開鍵からアドレスを計算することは誰でも可能です。
  • アドレス → 公開鍵:SHA-256およびRIPEMD-160ハッシュ関数のプリイメージ耐性により、数学的に実行不可能です。公開鍵は、そのアドレスから初めて資金が使用された際にのみ、ブロックチェーン台帳上で公開されます。