関連サイト
本書の関連ページが用意されています。
内容紹介
仕組みから実践までわかる、エンジニアのための「ブロックチェーン」解説書。
「ブロックチェーン」とは、ビットコインなどの暗号通貨を支える技術です。「ブロックチェーン」はインターネット以来の発明とも言われており、暗号通貨だけにとどまらず、医療や法律、ゲーム、エンターテイメント、不動産、シェアリングエコノミーなど、さまざまな分野での応用が考えられています。しかし、ブロックチェーン技術への期待や需要の高まりに対して、現時点では具体的なプロダクトもまだ少なく、アプリケーションを開発できるエンジニアの数も圧倒的に不足する傾向にあります。そこで本書は、知識と実践スキルをバランス良く学べるよう、ブロックチェーン界隈の最新情報はもちろん、理解の前提となる暗号学や分散コンピューティングに加え、フレームワーク紹介や実践的なサンプルなどを盛り込み、さらに必要となる経済やビジネスの話題にも深く踏み込んで解説しました。
本書は、ブロックチェーン技術を正しく理解し、アプリケーション開発を実践するスキルを学ぶため、理論的背景や現在の動向を解説する前半と、サンプルコードを交えて、開発の具体例や考え方を実践する後半の2部構成となっています。
Chapter1~3では、ブロックチェーン技術の特徴や歴史から、暗号通貨システムを支えるブロックチェーンの要素技術、スマートコントラクトとイーサリアムを解説します。
Chapter4~5では、暗号通貨や暗号通貨以外の具体的な事例を紹介することで、ブロックチェーン技術を活用して提供できるサービスの可能性を考察します。
Chapter6~8では、ブロックチェーン開発の環境構築からイーサリアムのブロック構造やトランザクション構造などに加え、Solidityの言語仕様を解説した上で、スマートコントラクト開発を具体例に説明します。また、Truffleフレームワークを使ったアプリケーションの開発手法も解説します。
Chapter9~10では、ブロックチェーンでの制約や注意点として、セキュリティやストレージの利用方法などを解説し、発展段階であるブロックチェーン技術が抱える主要な課題と現時点における解決策や事例を紹介します。
そして、Chapter11では、暗号通貨やブロックチェーン技術が今後どのような変化を社会にもたらすかを検討します。
ブロックチェーン技術を、理論と実践両面から理解するための1冊です。
書誌情報
- 著者: 加嵜 長門, 篠原 航(著), 丸山 弘詩(編集)
- 発行日: 2018-02-02 (紙書籍版発行日: 2018-02-02)
- 最終更新日: 2018-02-02
- バージョン: 1.0.0
- ページ数: 336ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
ブロックチェーン技術を理解したいエンジニア、ディレクター、MVCフレームワークなどでアプリケーション開発を経験したことがあるエンジニア
著者について
加嵜 長門
株式会社DMM.comラボ所属。慶應義塾大学大学院 政策・メディア研究科修士課程修了。大学院や学生ベンチャーにて、マルチメディアデータベースを対象とした検索やレコメンドアルゴリズムの研究およびサービス開発に従事。現在DMM.comラボではビッグデータ活用基盤の構築に携わり、SparkやSQL on Hadoopを用いたレコメンド機能、ビッグデータ活用の研究開発を担当。 共著に『詳解Apache Spark』(技術評論社)、『ビッグデータ分析・活用のためのSQLレシピ」(マイナビ出版)。
篠原 航
株式会社DMM.comラボ所属。インターネット企業数社にて、サーバーサイドアプリケーションの設計や実装に従事。現在DMM.comラボでは、計算リソースの効率化や継続的デリバリ、デプロイなどの開発を支える仕組みづくりを担当。
丸山 弘詩
書籍編集者。早稲田大学政治経済学部経済学科中退。国立大学大学院博士後期課程(システム生産科学専攻)編入、単位取得の上で満期退学。大手広告代理店勤務を経て、現在は書籍編集に加え、さまざまな分野のコンサルティング、プロダクトディレクション、開発マネージメントなどを手掛ける。編集した書籍に『ビッグデータ分析・活用のためのSQLレシピ』(マイナビ出版)など多数。
目次
Chapter1 ブロックチェーンとは?
- 1 インターネット以来の発明
- 1 インターネットが変えた社会
- 2 インターネットが変えた価値観
- 2 インターネットとブロックチェーン
- 1 クライアントサーバ方式とP2P方式
- 2 ブロックチェーンが社会に与える衝撃
- 3 ブロックチェーン技術の歴史
- 1 ビットコイン登場以前
- 2 ビットコインの登場から普及まで
- 3 ブロックチェーン技術の応用と盛り上がり
Chapter 2 ブロックチェーン技術の理解
- 1 タイムスタンプサーバ - まったく新しい「時計」の発明
- 1 物理的タイムスタンプ
- 2 コンピュータ上のタイムスタンプ
- 3 中央集権的タイムスタンプ
- 4 非中央集権的タイムスタンプ
- 5 ハッシュチェーンタイムスタンプ
- 6 ハッシュチェーンからブロックチェーン
- 2 Proof of Work - 暗号理論による不正の防止
- 1 Proof of Workにおける作業
- 2 ビットコインにおけるProof of Work
- 3 UTXO - 口座を持たないお金の表現
- 1 アカウントベースの残高記録方式
- 2 コイン識別方式
- 3 UTXO
- 4 暗号通貨の価値
- 1 お金の分類
- 2 貨幣の価値
- 3 暗号通貨の価値の根拠
- 4 暗号通貨の意義
- 5 新しい経済システム
- 6 暗号通貨が与える衝撃
Chapter 3 ブロックチェーンアプリケーションの理解
- 1 スマートコントラクトとは
- 1 広義のスマートコントラクト
- 2 狭義のスマートコントラクト
- 3 スマートコントラクトの実例
- 2 イーサリアム
- 1 イーサリアムとは
- 2 イーサリアムの発祥
- 3 イーサリアム=ワールドコンピュータ
- 4 イーサリアムの歴史とロードマップ
- 3 ビットコインとイーサリアムの相違
- 1 イーサリアムの内部通貨
- 2 トランザクション手数料であるGas
- 3 アカウント構造
- 4 残高参照
- 5 ブロック生成速度
- 6 重いチェーンの採用
- 7 Proof of Work
- 8 Ethereum Virtual Machine(EVM)
- 9 トランザクション
Chapter 4 ブロックチェーンプロダクトの比較
- 1 ビットコインとオルトコイン
- 1 ビットコインから派生したプロダクト
- 2 ビットコイン 2.0 プロダクト
- 3 オルトコイン
- 4 オルトチェーン
- 2 スマートコントラクトプラットフォーム
- 1 イーサリアムとスマートコントラクトプラットフォーム
- 2 ビットコイン上のスマートコントラクトプラットフォーム
- 3 その他のスマートコントラクトプラットフォーム
- 4 スマートコントラクト開発支援ツール
- 3 エンタープライズプラットフォーム
- 1 パーミッションドブロックチェーン
- 2 Hyperledgerプロジェクト
- 3 Corda
- 4 Mijin
- 5 ブロックチェーンのためのクラウドサービス
Chapter 5 ビジネスへの応用
- 1 ブロックチェーンサービスのアーキテクチャ
- 1 アーキテクチャ
- 2 新たなビジネスモデル
- 3 オープンソースとブロックチェーン技術
- 4 クラウドファンディングとICO
- 2 ブロックチェーンアプリケーションの利用
- 1 暗号通貨の利用
- 2 実店舗における決済手段としての利用
- 3 オンライン送金手段としての利用
- 4 暗号通貨プラットフォームへの貢献
- 5 暗号通貨以外での活用
- 3 ブロックチェーンアプリケーションを利用するサービス
- 1 仮想通貨取引所
- 2 分散型仮想通貨取引所
- 3 ウォレット
- 4 暗号通貨決済・送金サービス
- 5 広告の代替
- 4 新しいブロックチェーンアプリケーションの提供
- 1 パブリックなブロックチェーン基盤
- 2 パーミッションドなブロックチェーン基盤
Chapter 6 アプリケーション開発の基礎知識
- 1 アプリケーション開発の環境構築
- 1 イーサリアムクライアント
- 2 ネットワークの種類
- 3 Go Ethereum(Geth)のインストール
- 4 プライベートネットでの実行(Geth)
- 5 Gethコンソールのコマンド
- 2 ブロック構造とトランザクション
- 1 ブロック構造
- 2 トランザクションの実行
Chapter 7 Solidityによるアプリケーション開発
- 1 はじめてのスマートコントラクト開発
- 1 開発環境
- 2 Remixでのスマートコントラクト開発
- 3 RemixとGethの接続
- 2 型・演算子・型変換
- 1 値型
- 2 参照型
- 3 mapping型
- 4 左辺を含む演算子(代入演算子)
- 5 削除演算子
- 6 型の変換
- 3 予約単位、グローバル変数・関数
- 1 Etherの単位
- 2 時刻の単位
- 3 ブロックおよびトランザクションのプロパティ
- 4 エラーハンドリング
- 5 数学関数と暗号関数
- 6 アドレスの関数
- 7 コントラクトの関数
- 4 式・構文・制御構造
- 1 入力パラメータと出力パラメータ
- 2 制御構造
- 5 コントラクト
- 1 状態変数及び関数の可視性
- 2 関数の修飾子
- 3 定数
- 4 view修飾子
- 5 pure修飾子
- 6 fallback関数
- 7 event修飾子
- 8 継承
Chapter 8 アプリケーション開発のフレームワーク
- 1 Truffleフレームワークの活用
- 1 環境構築
- 2 プロジェクトの作成
- 3 イーサリアムクライアントの選択
- 4 コントラクトのコンパイル
- 5 マイグレーション
- 6 公式サンプルMetaCoin
- 7 テストコード
- 2 ERC20準拠のトークン作成
- 1 Truffleプロジェクトの作成
- 2 OpenZeppelinのインストール
- 3 トークンコントラクトの作成
- 4 テストコードの作成
- 3 ネットワークへのデプロイ
- 1 プライベートネットへのデプロイ
- 2 テストネットへのデプロイ
Chapter 9 アプリケーション設計の注意点
- 1 スマートコントラクトへの攻撃手法と対策
- 1 リエントラント(再入可能)
- 2 トランザクションオーダー依存(TOD)
- 3 タイムスタンプ依存
- 4 整数オーバーフロー
- 5 予期しないrevert
- 6 ブロックのGas Limit
- 7 強制的な送金
- 2 セキュリティを高めるための手法
- 1 OpenZeppelin
- 2 Mythril
- 3 ストレージの課題
- 1 データ保存の注意点
- 2 ユーザーのローカルストレージ
- 3 サービス提供者のデータベース
- 4 分散ファイルストレージ
- 4 オラクルの利用
- 1 BlockOne IQ
- 2 Chain Link
- 3 Oraclize
Chapter 10 技術的課題と解決案
- 1 ファイナリティ
- 1 暗号通貨決済の不可逆性
- 2 分散システムにおける合意形成
- 3 ブロックチェーンにおける合意
- 4 ビザンチン将軍問題
- 5 ビザンチン将軍問題の解
- 6 オープンなブロックチェーン基盤の制約条件
- 7 Proof of Workとナカモトコンセンサスによる現実解
- 8 ファイナリティの追求
- 2 Proof of Workプロトコルの拡張
- 1 Proof of Workの課題
- 2 Proof of Workアルゴリズムの拡張
- 3 Proof of Stake
- 4 Proof of Stakeのコイン流動性
- 5 Nothing at Stake問題
- 6 Proof of Stakeの改竄リスク
- 3 ブロックチェーンのパフォーマンス課題
- 1 求められるパフォーマンス
- 2 データ構造の最適化によるパフォーマンス向上
- 3 オフチェーン技術によるパフォーマンス向上
- 4 スケーラビリティソリューション
Chapter 11 ブロックチェーン技術の未来
- 1 歴史から考える未来
- 1 電子マネーと暗号通貨の歴史的相違
- 2 キーテクノロジー登場による変革
- 2 ブロックチェーンで実現される未来
- 1 ブロックチェーン技術で登場した概念
- 2 ブロックチェーン技術で増幅される変革
- 3 ブロックチェーン技術に対する批判
- 4 エンジニアとしての責務