イーサリアム仮想マシン(EVM)をどのようにプログラミングできるかを、コンピューターサイエンス、経済学、金融サービス、銀行取引履歴間の知識を合わせて、プログラマーにもノンプログラマーにも分かるように解説している本です。
自分で実際にプログラミングはしないが、イーサリアム・スマートコントラクト・分散型アプリケーション(dApps)のプロジェクトに関わる人や、これらのプログラミングをはじめてみようと思っている人におすすめします。
本の概要、注目点、感想・口コミ・書評記事、参考文献、を紹介します。
本の概要
書誌情報
著者紹介
Chris Dannen(クリス・ダネン)
暗号通貨取引とシードステージのベンチャー投資に焦点を当てたハイブリッドな投資ファンドIterative Instinctのパートナー兼創立者
著者が伝えたいこと
著者はこの本の目的と内容、対象者について、以下のように述べています。
「本書の目的は、イーサリアム仮想マシン(EVM)をどのようにプログラミングできるか、その目的は何なのかをプログラマーとプロダクトオーナーにわかってもらうことだ。金融畑の人にも技術畑の人にもわかってもらえるような書き方をしている。」
「何をどのように構築するのか、そのアイデアを形にできるよう、状況に応じてプログラマーにもノンプログラマーにも参考になる情報を提供している。」
「コンピューターサイエンス、経済学、金融サービス、銀行取引履歴間の知識のギャップを埋めることを意識した内容になっている。」
「イーサリアムプロトコルを使用する際には、経済の概念とプログラミングの概念の両方の知識があると役立つ。本書では、必要に応じて両方の定義を示す。」
本の目次
この本の目次を引用して紹介します。
- 第1章 イーサリアムはなぜ経済を作るのか
- 第2章 ウォレットから理解するトランザクション
- 第3章 EVMが世界を1つの巨大なコンピューターにする
- 第4章 スマートコントラクトのためのSolidityプログラミング
- 第5章 スマートコントラクトとトークンの発行
- 第6章 イーサのマイニングとコンセンサスのプロセス
- 第7章 クリプトエコノミクスのインパクト
- 第8章 分散型アプリケーションのデプロイ
- 第9章 プライベートチェーンとパブリックチェーン
- 第10章 イーサリアムの応用領域
- 第11章 イーサリアムが約束する未来
もっとくわしく見たい場合は、本の目次(詳細版)が記事の最後にあります。
注目点
この本を読んで注目した点を3つのことを紹介します。
新しくプログラマーになる人への注意事項
1つ目に注目した点は「第1章 イーサリアムはなぜ経済を作るのか」に書かれている「新しくプログラマーになる人への注意事項」です。
この本では、イーサリアムの技術的な側面だけでなく、Solidityプログラミングと分散型アプリケーションが読者のキャリアにどのように活かせるのかを考える場合に役立つ情報を提供しています。
著者は、これからイーサリアムのプログラミングに取り組むに当たって習得しておくと良い知識や、イーサリアム開発で初めてプログラミングを経験する人にアドバイスを述べています。
既存の貨幣制度、銀行制度、保険制度の仕組みを知っていると、イーサリアム用のアプリケーションを想像する場合に大いに役立つ。それを技術知識と組み合わせることができれば、なおさらよい。
(中略)
ある意味で、ウェブ開発を一から学ぶよりも、イーサリアム開発を学ぶほうが簡単であり、直感的に理解できる。
Chris Dannen(著)Ethereum+Solidity入門 Web3.0を切り拓くブロックチェーンの思想と技術:P.32
著者は「第4章 スマートコントラクトのためのSolidityプログラミング」の中でも、以下のように述べています。
古い習慣を打破するよりも、新しい習慣を学ぶほうが楽なこともある。
分散型アプリケーションプログラミングの記述には、今日のウェブプログラマーとネイティブアプリケーションプログラマーにとって馴染みのないものや奇異なものが多い。
(中略)
プログラミング初心者であれば、先入観にとらわれることなくイーサリアムを理解することができる。
(中略)
イーサリアムを学ぶのは大変なことのように思えるかもしれないが、今日のウェブを同じように幅広く奥深く理解するほうがはるかに大変だ。
Chris Dannen(著)Ethereum+Solidity入門 Web3.0を切り拓くブロックチェーンの思想と技術:P.121
外部所有アカウント(EOA)、コントラクトアカウント
2つ目に注目した点は「第3章 EVMが世界を1つの巨大なコンピューターにする」に書かれている、イーサリアムの2つのタイプのアカウントである「外部所有アカウント(EOA)、コントラクトアカウント」です。
外部所有アカウント(EOA)
1つ目のアカウントは、「外部所有アカウント(EOA, Externally Owned Acconunts)」です。
著者は「外部所有アカウント(EOA)は、プライベートキーのペアによって制御されるアカウントとも呼ばれる。プライベートキーは、個人や外部サーバーが保持できるものだ。このアカウントは、EVMコードを保持できない。」と説明しています。
そして、外部所有アカウント(EOA)の特性を以下のように述べています。
・イーサの残高が含まれている。
・トランザクションを送信できる。
・アカウントのプライベートキーによって制御される。
・コードが関連付けられていない。
・各アカウントにキー/値のデータベースが含まれ、そのキーと値はどちらも32バイトの文字列である。
Chris Dannen(著)Ethereum+Solidity入門 Web3.0を切り拓くブロックチェーンの思想と技術:P.106
コントラクトアカウント
2つ目のアカウントは、「コントラクトアカウント」です。
著者は「コントラクトアカウントは、人によって制御されない。命令を格納し、外部アカウントや他のコントラクトアカウントによってアクティブにされる。」と説明しています。
そして、コントラクトアカウントの特性を以下のように述べています。
・イーサ残高がある。
・メモリーにコントラクトコードを保持する。
・トランザクションを送信する人や、メッセージを送信する他のコントラクトがトリガーできる。
・実行時に、複雑な操作を行うことができる。
・自身の永続的な状態を保持し、他のコントラクトを呼び出すことができる。
・EVMにリリースすると、所有者がいなくなる。
・各アカウントにキー/値のデータベースが含まれ、そのキーと値はどちらも32バイトの文字列である。
Chris Dannen(著)Ethereum+Solidity入門 Web3.0を切り拓くブロックチェーンの思想と技術:P.106
Whisper(分散型メッセージング)、Swarm(分散型ストレージ)
3つ目に注目した点は、「第11章 イーサリアムが約束する未来」に書かれている、イーサリアムの2つのコンポーネントである「Whisper(分散型メッセージング)、Swarm(分散型ストレージ)」です。
著者は「現代のサーバーアプリケーションは、3つのことを正しく行なっている。プログラムを計算し実行すること、データを記憶すること、人間とのやり取りを簡単にすることである。今日、イーサリアム仮想マシンは計算はできるが、あまり多くのデータを保存できず、人と人の間のメッセージングの仲介役として機能できない。」と述べています。
短期のイーサリアムロードマップに、あとの2つのコンポーネントである、Swarm(分散型ストレージ)、Whisper(分散型メッセージング)が含まれている、と著者は述べています。
Swarm(分散型ストレージ)
著者はSwarmについて以下のように説明しています。
Swarmは、コンテンツアドレッシングアカウンティングプロトコルである。
改ざん不可のデータを扱い、そうしたデータをシャーディングして分散ネットワーク全体に格納する。(中略)
Swarmの目的は、さまざまなバージョンのファイルを同じメモリーアドレスで検索できるようにすることだ。
Chris Dannen(著)Ethereum+Solidity入門 Web3.0を切り拓くブロックチェーンの思想と技術:P.291
Whisper(分散型メッセージング)
著者はWhisperについて以下のように説明しています。
Whisperは、イーサリアムプロトコルに含まれる分散型メッセージングシステムで、バックエンドにEVMを使用するウェブアプリケーションから使用できるようになる。(中略)
Whisperではメッセージを昔ながらのやり方で使用している。つまり、1人の人間がネットワークプロトコル経由で他の複数の人間と通信する。
Chris Dannen(著)Ethereum+Solidity入門 Web3.0を切り拓くブロックチェーンの思想と技術:P.291
感想・口コミ・書評記事
感想
この本を読んでみて、2つの短所があった。1つ目は翻訳本であるためか日本語の文章がわかりにくい面があること、2つ目は出版された年が古くてイーサリアムEVMにアクセスするウォレットの説明に現在はサポートされていない「Mist Wallet」を使用していることです。
このような短所はあるが全部を読み終えてみると、イーサリアムとSolidityによるプログラミングについて、細かいところまで理解できたわけではないが、Web2.0のプログラミングとの違いがわかり、頭の中にプログラミングのイメージやマップが形成できたことを実感しています。
イメージを形成できたことの要因は、「ある意味、ウォレットを使用するというのは、銀行の窓口係の背後にいて自分のお金を管理するようなものだ。」というように、既存の銀行のシステムを例にあげて説明している点や、「EVMは、コンピューティング的に1つの巨大なデータオブジェクトのように動作するという意味だ。」というように、既にプログラミング経験がある人になじみやすい表現で説明している点があげられます。
自分で実際にプログラミングはしないがイーサリアムのプロジェクトに関わる人や、他のイーサリアムやスマートコントラクト開発の本を読んでみてプログラミングのイメージがつかめないと感じた人にとって、理解の助けになる本です。
口コミ
書評記事
Ethereum+Solidity 入門 Web3.0を切り拓くブロックチェーンの思想と技術:海外書評 - ЯшRw’s Note
リンク先より引用「この本の最も良いところの1つは、『読みやすい』技術書であるということです。 単に座って読み通すことなら簡単に出来ます。 それでも、Ethereumについての非常にまとまった概観 - 今日の状況、歴史、そして明日どうなっているか ― を見せてくれます。」
参考文献
ブロックチェーン dapp&ゲーム開発入門
同じ著者(Chris Dannen)が出版した、中級者向けの本です。
Solidityによるプログラミングに加えて、暗号経済学とゲーム理論、ポンジとピラミッド、宝くじ、賞金付きパズル、予測市場、ギャンブルといったゲーム開発の実例が書かれているのが特徴です。
試して学ぶ スマートコントラクト開発
イーサリアム上でスマートコントラクトのプロジェクト開発に本格的に取り組みたい人やすでに取り組んでいる人(プロジェクト・リーダー、デザイナー、プログラマー)向けの本です。
DMM.comブロックチェーン研究室のメンバーが執筆しています。
「Chapter3 スマートコントラクトのプロダクトデザイン」でUX(ユーザーエクスペリエンス)デザインやリーンスタートアップの手法をUXデザインに適用した「リーンUX」について学ぶことができます。
SolidityとEthereumによる実践スマートコントラクト開発
Solidityとイーサリアムによるスマートコントラクト開発のプログラミングに関する日本語の書籍の中で、発売日が一番新しい本です。
いちばんやさしいブロックチェーンの教本 人気講師が教えるビットコインを支える仕組み:杉井 靖典(著)
Web3とDAO 誰もが主役になれる「新しい経済」:亀井 聡彦, 鈴木 雄大, 赤澤 直樹(著)
Web3というインターネットの転換点と、その背景にあるDAOという新しいコミュニティについて、概要・本質・哲学を、インターネットの歴史を振り返りながら解説している本です。
この本の注目点や感想、本の目次などをブログ記事で紹介しています。
イーサリアムがわかる本おすすめ
まとめ
本の概要、注目点、感想・口コミ・書評記事、参考文献、を紹介しました。
イーサリアム仮想マシン(EVM)をどのようにプログラミングできるかを、コンピューターサイエンス、経済学、金融サービス、銀行取引履歴間の知識を合わせて、プログラマーにもノンプログラマーにも分かるように解説している本です。
自分で実際にプログラミングはしないが、イーサリアム・スマートコントラクト・分散型アプリケーション(dApps)のプロジェクトに関わる人や、これらのプログラミングをはじめてみようと思っている人におすすめします。
本の目次(詳細版)
この本の目次をくわしく引用して紹介します。
- 第1章 イーサリアムはなぜ経済を作るのか
- ブロックチェーンの知識ギャップを埋める
- イーサリアムが実現するもの
- ブロックチェーンを構成する3つの要素
- 通貨や商品・サービスとしてのイーサ
- 強みはプロトコルにあり
- スマートコントラクトは(実際には)何をするのか
- データはどこへ
- EVMを知る
- イーサリアムは何に適しているのか
- どこに適合するのかを決める
- 今すぐ何を構築できるのか
- まとめ
- 第2章 ウォレットから理解するトランザクション
- ウォレットをコンピューティングの比喩で説明する
- 銀行の窓口係
- 従来の銀行業務との決別
- 暗号化はどのように信頼をもたらすのか
- システム要件
- 推奨事項:ParityとGethの使用
- いよいよMist!
- ではブロックチェーンとは何なのか
- 暗号通貨の匿名性
- まとめ
- 第3章 EVMが世界を1つの巨大なコンピューターにする
- これまでの中央銀行ネットワーク
- 仮想マシンとはいったい何か
- EVMは何を行うのか
- EVMアプリケーションはスマートコントラクトと呼ばれる
- ステートマシンについて
- EVMの心臓部の働き
- ブロック:状態変更の履歴
- 状態遷移機能におけるマイニングの位置づけ
- EVMでの時間レンタル
- gasとは何か
- gasの取り扱い
- アカウント、トランザクション、メッセージ
- トランザクションとメッセージ
- EVMの命令コード
- まとめ
- 第4章 スマートコントラクトのためのSolidityプログラミング
- はじめに
- グローバルバンキングが(ほぼ)現実のものに
- 補完通貨
- EVMのプログラミングを学ぶ
- 設計の根拠
- 形式的証明の重要性
- 自動証明登場
- テスト、テスト、またテスト
- コードを読むためのヒント
- Solidityのステートメントと式
- 値型
- グローバル特別変数、単位、関数
- まとめ
- 第5章 スマートコントラクトとトークンの発行
- バックエンドとしてのEVM
- どんなものによっても裏付けられる資産
- 暗号通貨は時間の単位
- 人類のシステムで収集品が果たす役割
- 高価値のデジタル収集品用プラットフォーム
- トークンはスマートコントラクトのカテゴリー
- テストネットでのトークン作成
- 最初のコントラクトのデプロイ
- まとめ
- 第6章 イーサのマイニングとコンセンサスのプロセス
- ポイントは何か
- イーサの原点
- マイニングの定義
- どれが本物か
- DAGとノンスはどうなっているのか
- すべてはブロック時間を短縮するため
- イーサリアムでは廃止ブロックをどのように使用するのか
- 採掘難易度爆弾
- ブロックとトランザクションの祖先の評価
- イーサリアムとビットコインでのツリーの使用方法
- フォーク
- マイニングのチュートリアル
- GethコンソールによるEVMコマンドの実行
- フラグによるGethの起動
- マイナーの始動
- テストネットでのマイニング
- GPUマイニングリグ
- 複数のGPUがあるプールでのマイニング
- まとめ
- 第7章 クリプトエコノミクスのインパクト
- これまでの道のり
- なぜクリプトエコノミクスは有用なのか
- ブロックの速度がなぜ重要なのか
- イーサの発行方式
- よくある攻撃シナリオ
- クリプトエコノミクスの詳細
- まとめ
- 第8章 分散型アプリケーションのデプロイ
- スマートコントラクトについて考えるための7つの方法
- 分散型アプリケーションコントラクトデータモデル
- EVMバックエンドはJSフロントエンドとどのように対話するか
- ウェブ3がまもなく登場
- JavaScript APIを試す
- EVMでのMeteorの使用
- コンソールでのコントラクトの実行
- プロトタイピングに関する推奨事項
- サードパーティーデプロイライブラリー
- まとめ
- 第9章 プライベートチェーンとパブリックチェーン
- プライベートチェーンとパーミッションドチェーン
- ローカルプライベートチェーンのセットアップ
- 新しいチェーンで使用するオプションのフラグ
- 実稼働環境でのプライベートブロックチェーンの使用
- まとめ
- 第10章 イーサリアムの応用領域
- 至ところにチェーン
- イーサリアムのIoT
- 小売りと電子商取引
- コミュニティーと政府の融資
- 人間と組織の行動
- 金融と保険への応用
- 在庫システムと会計システム
- ソフトウェア開発
- ゲーム、ギャンブル、投資
- まとめ
- 第11章 イーサリアムが約束する未来
- 誰がソフトウェア開発者を分散化の世界に導いているのか
- イーサリアムのリリーススケジュール
- 今後どうなるのか
- その他の面白そうなイノベーション
- イーサリアムロードマップの全体像
- イーサリアムの約束