ひぐぺん工房トップへ おかげさまで28周年!

ひぐぺん工房(松浦健一郎・司ゆき) - HigPen Works
Follow @higpenworks
・今までの仕事 ・書籍 ・最近の業務 ・対応可能言語 ・お見積

『入門 仮想通貨の作り方 - プログラミングで学ぶブロックチェーン技術・ハッシュ・P2Pのしくみ』
Q&A

以下の回答で問題が解決しなかった場合には、 こちらから ご連絡ください。

更新


2019/12/29
Q.デバッグウィンドウの起動(p.129)
A.
Bitcoin Coreのバージョンアップにより、デバッグウィンドウの起動方法が変わりました。
変更前:「ヘルプ」メニューの「デバッグウィンドウ」を選択。
変更後:「ウィンドウ」メニューの「コンソール」を選択(Bitcoin Core 0.19で確認しました)。

2021/10/15
Q.トランザクションの取得(p.141)
A.
Bitcoin Coreのバージョンアップにより、トランザクションの取得方法が変わりました。
変更前:コンソールで「getrawtransaction トランザクションID true」を実行。
変更後:以下の手順を実行します(Bitcoin Core 0.21で確認しました)。
(1) コンソール(デバッグウィンドウ)を開きます。
(2) 「listunspent」を実行します。"txid"の欄に、トランザクションIDが表示されます。
(3) (2)のトランザクションIDを使って、「gettransaction トランザクションID」を実行します。"blockhash"の欄に、ブロックハッシュが表示されます。
(4) (2)のトランザクションIDと(3)のブロックハッシュを使って、「getrawtransaction トランザクションID true ブロックハッシュ」を実行します。
(5) あとは本書p.143以降と同じです。

2021/10/15
Q.ブロックの作成(p.196)
A.
Bitcoin Coreのバージョンアップにより、ブロックの作成方法が変わりました。
変更前:コンソールで「generate ブロック数」を実行。
変更後:以下の手順を実行します(Bitcoin Core 0.21で確認しました)。
(1) Bitcoin Coreをregtestモードで起動します。
(2) 適当な名前(例えばWalletなど)でウォレットを作成しておきます。
(3) コンソール(デバッグウィンドウ)を開きます。
(4) 「getnewaddress」を実行します。新規にアドレスが作成され、表示されます。
(5) (4)のアドレスを使って、「generatetoaddress ブロック数 アドレス」を実行します。ブロック数は1にしてください。指定したアドレスへの支払いを行うブロックが作成され、ブロックハッシュが表示されます。
(6) あとは本書p.197以降と同じです。

補足


2018/01/18
Q.参考文献
A.
本書をお読み頂いた上で、さらに詳細な情報が欲しい場合には、以下のような参考文献があります。
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」に説明があります。

    最終更新 2024/02/03
    トップページへ
    ©ひぐぺん工房 禁無断転載
    最新刊『Java[完全]入門』 
    このサイトはリンクフリーです。
    このサイトはChromeで動作検証しています。ブラウザにかかわらず表示に乱れがありましたらどうぞお知らせ下さい。メールを送る