マスタリング・イーサリアム
マスタリングイーサリアム
スマートコントラクトと DApp の構築
- 著者:
- Andreas M.Antonopoulos / Gavin Wood / 宇野 雅晴 / 中城 元臣 / 落合 渉悟 / 落合 庸介(アンドレアス エム アントノプロス / ギャビン ウッド / ウノ マサハル / ナカジョウ ユキシゲ / オチアイ ショウゴ / オチアイ ヨウスケ)
- 出版社:
- オライリー・ジャパン
- 出版日:
- 2019年11月30日頃
- ISBN:
- 9784873118963
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
『Mastering Bitcoin』 (邦訳『ビットコインとブロックチェーン: 暗号通貨を支える技術』) の著者であるアンドレアス・M・アントノプロスによる、Ethereum (イーサリアム) の技術解説書。Ethereum、ブロックチェーン、スマートコントラクトの基本から、Solidity、Vyper、セキュリティ、DApps の構築、EVM (Ethereum Virtual Machine) まで、関連知識をわかりやすく解説します。
技書の森解説
イーサリアムの仕組みを、ウォレットや鍵の扱いからトランザクション、スマートコントラクト、仮想マシン、コンセンサスまで、プロトコルの層に沿って体系的に学ぶ技術書が『マスタリング・イーサリアム』 (Andreas M. Antonopoulos、Gavin Wood 著、宇野 雅晴、鳩貝 淳一郎 監訳、中城 元臣、落合 渉悟 技術監修、落合 庸介ほか 8 名 訳、オライリー・ジャパン、2019 年 11 月 30 日発行) です。原書は Mastering Ethereum、副題はスマートコントラクトと DApp の構築です。版元の紹介文は、ビットコインの定番書『Mastering Bitcoin』の著者と、イーサリアムの共同設立者でありスマートコントラクトの開発言語 Solidity の開発者が執筆した技術解説書だと説明しています。スマートコントラクトを書く前に、その下で何が起きているのかを理解しておきたい開発者に向いた一冊です。
全 14 章の構成、ウォレットとトランザクションから EVM とコンセンサスまで
本文は全 14 章と付録 A から F で構成されています。1 章でビットコインとの比較やチューリング完全性を通じてイーサリアムの位置づけを整理し、2 章では MetaMask を使ったウォレットの作成とテスト用イーサの入手、簡単なコントラクトの作成とやり取りを体験します。3 章はクライアントとノードの運用、4 章は鍵とアドレス、楕円曲線暗号、Keccak-256 といった暗号の基礎、5 章は決定性ウォレットやニーモニックコードを扱うウォレットの技術です。6 章ではナンスやガス、デジタル署名、トランザクションの伝播とマルチシグまでトランザクションの構造を掘り下げます。7 章と 8 章は Solidity と Vyper によるスマートコントラクトの作成で、9 章のスマートコントラクトセキュリティでは、リエントランシーや算術オーバーフローなどの項目の多くで脆弱性と予防テクニックの節を並べ、The DAO などの実例を添えています。10 章はトークン、11 章はオラクル、12 章はオークションを題材にした DApp と ENS、13 章は EVM とガス、14 章は PoW と PoS によるコンセンサスです。付録にはイーサリアムのフォークの歴史、EVM のオペコードとガス消費、開発ツールとフレームワークとライブラリ、web3.js のチュートリアルなどが収められています。
ガスと不変のコード、スマートコントラクトの安全性の技術背景
ブロックチェーン の上で任意のプログラムを動かすイーサリアムには、ビットコインには無い難しさがあります。どんな計算でも書ける言語を全ノードで実行する以上、終わらない処理や重すぎる処理でネットワークが止まらないよう、命令ごとに費用を課して実行量に上限を設ける仕組みが必要になり、これがガスです。もう一つは、一度デプロイしたコントラクトのコードは原則として書き換えられず、しかも資産を直接扱う点です。外部のコントラクトを呼び出した後に自分の残高を更新するといった順序の誤りが、そのまま資金の流出につながり、修正版を配布して済ませることもできません。鍵とアドレスの関係も同様で、アドレスが公開鍵の ハッシュ から導かれる仕組みや、署名から送信者を特定する仕組みを理解していないと、ウォレットの保管やオフライン署名の安全性を判断できません。本書の章は鍵と暗号、トランザクション、言語、セキュリティ、仮想マシンの順に並ぶので、こうした層ごとの理解を下から順に積み上げられます。
2019 年刊の前提と、2022 年の PoS への移行後に読む注意
本書は 2019 年 11 月の発行で、記述はその時点のイーサリアムを前提にしています。とくに大きいのはコンセンサスで、ethereum.org の案内によれば、イーサリアムのメインネットは 2022 年 9 月 15 日に実行された The Merge によって PoS への移行を完了し、PoW は正式に廃止されました。14 章は PoW の Ethash と、刊行時点で PoS のアルゴリズムとして紹介されていた Casper を扱っているので、メインネットの仕組みとしてではなく、移行に至る設計の経緯として読むのが適切です。ネットワーク全体が同じ台帳に合意するための 合意アルゴリズム の考え方そのものは、方式が変わっても分散システムを理解する土台になります。クライアントや開発ツール、Solidity のコンパイラーの版も刊行後に進んでいるので、コードを動かす時は各プロジェクトの公式ドキュメントで手元の版の説明を確かめる前提で読むのが安全です。
読み進めるには、何らかのプログラミング言語でコードを書いた経験と、コマンドラインの基本操作があると楽になります。一方で、暗号資産の売買や投資の判断材料を求める人には目的が合いません。扱うのはプロトコルとスマートコントラクトの技術であり、市場や価格の話ではないためです。裏返せば、スマートコントラクトの監査や開発に関わる人、DApp を設計する立場で鍵の管理やガスの見積もり、脆弱性の型を自分の言葉で説明できるようになりたい人にとって、プロトコルの下層から積み上げる本書は、刊行時点との差分を押さえたうえで手元に置く価値のある一冊です。
言及した記事 (10 件)
hashアルゴリズムとハッシュ値の長さ一覧(+ハッシュ関数の基本と応用)
♡ 509hash, ipfs, ハッシュ関数, ブロックチェーン, NFTSE 2年目で読んだ技術書45冊+α
♡ 284技術書, Se, 新人プログラマ応援, 新人プログラマ応援_記事投稿キャンペーンACMの会員になってオライリーのサブスクを堪能している話
♡ 167日記, 技術書, 学習, acm, オライリー本Web3.0学習日記 #1
♡ 24Blockchain, solidity, Web3NFTクリエイターになるために学習すべき5つのこと
♡ 21仮想通貨, ブロックチェーン, NFT趣味のブロックチェーンアプリ開発
♡ 16ポエム, ブロックチェーン, 個人開発スマートコントラクト開発のための学習教材を紹介します
♡ 12solidity老技術者がイーサリアムアドレス・公開鍵を秘密鍵から生成してみた話
♡ 2公開鍵, Ethereum, 秘密鍵, イーサリアム, Keccak-256老技術者がPythonでハッシュ関数Keccak-256やら楕円曲線暗号secp256k1を持ち出してEthereum Addressを求めてみた
♡ 2Ethereum, ハッシュ関数, 楕円曲線暗号, Keccak-256, secp256k1ブロックチェーンを書籍で学ぶ
♡ 0Bitcoin, Blockchain, Ethereum, ブロックチェーン, Hyperledger-fabric
この本に興味がある方におすすめ
関連する本
関連記事
技術書ブログの書き方 - 読書感想文で終わらせない
技術書を読んだ後のブログ記事を「読書感想文」から「読者に価値を届ける記事」に変える構成と書き方のコツを紹介します。
技術書がエンジニアのキャリアを変える - 読書習慣と年収の関係
技術書の読書習慣がエンジニアのキャリアアップに影響する 3 つの経路と、ジュニア / ミドル / シニア各段階に応じた読書戦略を具体的に解説します。
あの有名 OSS のコードは、この本の影響を受けている
広く使われているオープンソースソフトウェアの設計には、技術書と共通の語彙や原則が残っています。OSS のコードから辿れる影響と、似ているだけの例の見分け方を整理しました。
関連用語
ブロックチェーン
取引記録を分散管理し、改ざんを困難にする技術。暗号資産などの基盤
ハッシュテーブル
キーをハッシュ関数で変換し、平均 O(1) でデータを検索 / 挿入 / 削除するデータ構造
OLAP vs OLTP
オンライン分析処理 (OLAP) とオンライントランザクション処理 (OLTP) の違いと使い分け
ハッシュ
任意のデータを固定長の値に変換する関数で、データの整合性検証や高速検索に使う
Ruby
開発者の生産性と楽しさを重視した、日本発のオブジェクト指向プログラミング言語
ブルームフィルターとは - 仕組み / 偽陽性率の計算 / 実装例
ブルームフィルターは要素の存在判定を O(1) で行う確率的データ構造。偽陽性はあるが偽陰性がない特性を活かしたキャッシュ / スパム判定での活用法を解説