堅牢なスマートコントラクト開発のためのブロックチェーン
サポートページ
ダウンロード
(2018年2月28日更新)
本書のサンプルソースがダウンロードできます。
解凍してファイル名を参考にしてご利用ください。
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
異なる画面図が掲載されていました。次の画面に差し替えます。

(以下2017年11月6日更新)
P.9 目次(P.129)
| 誤 | コンスラクトを生成する | 
|---|---|
| 正 | コントラクトを生成する | 
P.15 下から2行目
| 誤 | 各ノートは | 
|---|---|
| 正 | 各ノードは | 
P.21 上から3行目
| 誤 | VirturlBox上に | 
|---|---|
| 正 | VirtualBox上に | 
P.111 下から3行目(見出し)
| 誤 | ソースコードを記述してコンストラクタを指定する | 
|---|---|
| 正 | ソースコードを記述してコントラクトを指定する |