2022/01/16
Q.Pythonの動作確認とモジュールのインストール(p.251)
A.
「python -V」のVは、小文字のvではなく、大文字のVを入力してください。
「pip install …」は、コマンドプロンプト(C:¥Users¥ユーザ名>)で実行します。Pythonインタプリタのプロンプト(>>>)が表示されている場合には、Ctrl+ZキーとEnterキーを入力して、コマンドプロンプトに戻ってから実行してください。
2024/02/02
Q.公開鍵とビットコインアドレス(p.57, p.112)
A.
公開鍵とビットコインアドレスの関係について補足します。本書の該当箇所は以下です。
(a) p.57では「ビットコインのトランザクションでは、公開鍵に相当するものとして、ビットコインアドレス(または単にアドレス)と呼ばれる数値を使う」と説明しています。
(b) p.112では、Bitcoin Coreでアドレスを作成する方法を説明しています。
(a)と(b)のアドレスは、基本的には同じものです。より厳密には、以下のような仕組みがあります。
p.112の図「アドレスと秘密鍵」のように、アドレスは公開鍵そのものではなく、公開鍵のハッシュです。
p.55の図「支払いの検証」のように、支払いの検証には公開鍵が必要なので、公開鍵のハッシュではなく、公開鍵そのものが必要です。
そこでコインを支払いに使う際には、使用者はアドレスとは別に、公開鍵そのものと電子署名も送信します。
また、本書では「公開鍵のハッシュをアドレスにする」という基本的な方式を紹介しましたが、実際のビットコインアドレスにはいくつもの種類があります。アドレスの種類は、
Bitcoin Wikiの「List of address prefixes」に一覧表が掲載されています。p.112で作成したアドレスは「2」から始まっているので、この一覧表の「Testnet script hash」(テストネット・スクリプト・ハッシュ)に該当します。これは公開鍵のハッシュではなく、スクリプト(p.146)のハッシュです。
公開鍵のハッシュを使った支払いはP2PKH(Pay-to-PubKeyHash、公開鍵のハッシュに対する支払い)、スクリプトのハッシュを使った支払いはP2SH(Pay-to-Script-Hash、スクリプトのハッシュに対する支払い)と呼ばれます。本書ではビットコインの基本的な仕組みを説明するために、基本的な方式である前者のP2PKHを解説しています。後者のP2SHは、より複雑な支払いを表現できることが利点です。詳細は
Bitcoin Wikiの「Types of Transaction」に説明があります。