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

サポートページ

この記事を読むのに必要な時間:およそ 0.5 分

ダウンロード

(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行目(見出し)

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