堅牢なスマートコントラクト開発のためのブロックチェーン[技術]入門

サポートページ

ダウンロード

(2018年2月28日更新)

本書のサンプルソースがダウンロードできます。

ダウンロード
samplesrc_20180228.zip(約14KB)

解凍してファイル名を参考にしてご利用ください。
2018年2月28日より前に公開していた「samplesrc_20171218.zip」に
「genesis.json」を追加しました。

お詫びと訂正(正誤表)

本書の以下の部分に誤りがありました。ここに訂正するとともに、ご迷惑をおかけしたことを深くお詫び申し上げます。

(2022年7月28日最終更新)

P.12 本文 2行目

誤 分散型(Decentrized)
正 分散型(Decentralized)

(以下2021年11月4日更新)

P.23:本文 下から7行目

誤 secp256k1は位相がとてつもなく大きな素数pの有限体上で
正 secp256k1は位数がとてつもなく大きな素数pの有限体上で

(以下2019年9月19日更新)

P.190 本文下から3行目

誤 gasPriceを全社のgssPriceよりも高くすれば
正 gasPriceを全社のgasPriceよりも高くすれば

P.212 本文下から5行目(コマンド「getUsed確認」の直前)

誤 gasUsedからもthrowされていないことがわかります。
正 gasUsedからもthrowされていることがわかります。

(以下2018年7月17日更新)

P.50 図4-9の説明文の4行目

誤 ビットコインワーク
正 ビットコインネットワーク

P.134 図9-17のキャプション

誤 運用イメージ
正 利用イメージ

P.162 本文上から7~8行目

誤 想定していたいのですが、
正 想定していたのですが、

P.172 本文下から3行目

誤 を読んだ場合
正 を呼んだ場合

(以下2018年7月5日更新)

P.51 図4-10の上部の網掛け内

誤 TxAもTxCも同じアウトプットを参照
正 TxAもTxBも同じアウトプットを参照

(以下2018年5月9日更新)

P.28 「公開鍵で署名データを検証する」項

Opensslで署名する際に「dgst -SHA256」を指定しており、署名時にOpensslがSHA-256化してくれるため、署名対象のmessageをsha256sumでハッシュ化する必要なく、「hashed_message.txt」と「hashed_message.sig」ファイルを生成する必要はありません。代わりに「message.txt」を署名してください。各コマンドは次のように訂正いたします。

  • メッセージのハッシュ値を生成する
    このコマンドは不要です。
  • 署名データを作成する
    
    $ openssl dgst -SHA256 -sign secp256k1-private.pem message.txt > message.sig
    
    
  • 公開鍵で署名データを検証する
    
    $ openssl dgst -SHA256 -verify secp256k1-public.pem -signature message.sig message.txt
    
    

P.29 「メッセージが改ざんされた場合を検証する」項

Opensslで署名する際に「dgst -SHA256」を指定しており、署名時にOpensslがSHA-256化してくれるため、署名対象のmessageをsha256sumでハッシュ化する必要なく、「hashed_message_kaizan.txt」と「hashed_message_kaizan.sig」ファイルを生成する必要はありません。代わりに「message_kaizan.txt」を署名してください。各コマンドは次のように訂正いたします。

  • 攻撃者のメッセージのハッシュ値を生成する
    2行目と3行目にある次のコマンドが不要です。
    
    $ sha256sum message_kaizan.txt
    $ cat hashed_message_kaizan.txt
  • 攻撃者の秘密鍵で署名する
    
    $ openssl dgst -SHA256 -sign secp256k1-private-evil.pem message_kaizan.txt >
    message_kaizan.sig
  • 公開鍵で署名データを検証する
    
    $ openssl dgst -SHA256 -verify secp256k1-public.pem -signature message_kaizan.sig message_kaizan.txt
    
  • P.53 本文の末行

    誤 まずは、Locking Script ⇒ Unlocking Scriptの順で
    正 まずは、Unlocking Script ⇒ Locking Scriptの順で

    P.59 表5-2の3行目

    誤 Markle Root
    正 Merkle Root

    P.60 本文下から10行目

    誤 markle tree
    正 merkle tree

    P.60 本文下から3行目

    誤 Markle Root
    正 Merkle Root

    P.65 表6-1の3行目

    誤 Markle Root
    正 Merkle Root

    (以下2018年4月16日更新)

    P.97 本文下から3行目

    誤 オブジェクトに含まれもので、
    正 オブジェクトに含まれるもので、

    (以下2017年12月18日更新)

    P.52 「4.4:UTXOと残高」の上から1行目

    誤ここままで
    正ここまでで

    P.60 「5.1:ブロックの構造と識別子」の最後の行

    誤「6.5:チェーンの分岐(フォーク)」(P.60)で
    正「6.5:チェーンの分岐(フォーク)」(P.69)で

    P.107 上から3行目

    誤ここままで
    正ここまでで

    P.107 下から2行目

    誤falback関数
    正fallback関数

    P.133 下から10行目

    誤Neme Registry
    正Name Registry

    P.139 SmartSwitch.solの下から15行目

    誤処理を更新する
    正statusを更新する

    P.147 Auction.solの上から3行目

    誤// 最高提示額
    正// 最高額提示アドレス

    P.147 Auction.solの上から4行目

    誤// 最高額提示アドレス
    正// 最高提示額

    P.156 AuctionWithdraw.solの上から3行目

    誤// 最高提示額
    正// 最高額提示アドレス

    P.156 AuctionWithdraw.solの上から4行目

    誤// 最高額提示アドレス
    正// 最高提示額

    P.162 本文下から2行目

    誤etherを改修できるように
    正etherを回収できるように

    P.165 上から1行目

    誤Send Funds画面(図10-6)に
    正Send funds画面(図10-6)に

    P.169 上から3行目

    誤etherを一旦改修する必要が
    正etherを一旦回収する必要が

    P.170 CircuitBreaker.solの下から4行目

    誤setMassage
    正setMessage

    P.170 setMessage呼び出しの1行目

    誤cb.setMassage.sendTransaction
    正cb.setMessage.sendTransaction

    P.171 setMessage呼び出しの1行目

    誤cb.setMassage.sendTransaction
    正cb.setMessage.sendTransaction

    P.179 箇条書きの1行目

    誤VicimBalance
    正VictimBalance

    P.179 箇条書きの2行目

    誤VimctimBalance
    正VictimBalance

    P.228 図12-12

    異なる画面図が掲載されていました。次の画面に差し替えます。

    図12-12差し替え画像

    (以下2017年11月6日更新)

    P.9 目次(P.129)

    誤コンスラクトを生成する
    正コントラクトを生成する

    P.15 下から2行目

    誤各ノートは
    正各ノードは

    P.21 上から3行目

    誤VirturlBox上に
    正VirtualBox上に

    P.111 下から3行目(見出し)

    誤ソースコードを記述してコンストラクタを指定する
    正ソースコードを記述してコントラクトを指定する