ブロックチェーン 仕組みと理論 増補改訂版

【最新 – ブロックチェーンを理解するためのおすすめ本 – 入門から活用事例まで】も確認する

ブロックチェーンを実際に動かして学ぶ

本書は、ブロックチェーンの仕組みについて豊富な内容を含めながら解説している本です。ブロックチェーンの経緯から始まり、ブロックチェーンを構成する要素、動向、システムの技術的な解説、ブロックチェーンをサンプルコードで動かすための説明など、ブロックチェーンに関する内容が多くまとめられています。

赤羽 喜治 編著 (著), 愛敬 真生 編著 (著)
出版社 : リックテレコム (2019/7/27)、出典:出版社HP

はじめに

専有から共有へ
そもそもブロックチェーンという技術は、なぜここまで注目を浴びているのでしょうか。
近年、ゴールドマンサックスやBBVA等著名な金融機関のトップが相次いで「われわれのコアコンピタンスはテクノロジーである」と発言しています。これらの発言には、金融機関自身が既存のビジネスフローや“金融機関”という役割領域までを急速に変えていこうとする中で、そのためには既存のモノリシックなシステムではもはや限界があり、その限界を新しい技術によって乗り越えていこうとする強い意志をうかがうことができます。

図 金融機関の変化

上の図は、起こりつつある変化を表現したものです。左は従来型のシステムであり、高い信頼性とセキュリティの高い壁の中にすべての業務アプリケーション、すべてのデータを格納し、自前ですべてを管理し、維持改修するというパラダイムに基づいています。これに対してFinTech時代のシステムでは、図の右側のように、外部に優れたアプリケーションがあればAPIを通じてそれを使い、一方で社の業務アプリケーションで商品性のあるものについては、他社にAPIで公開して使用料を得るといった、有機的なつながりが出てきます。「金融機能のアンバンドリング」と呼ばれる動きがこれにあたります。
データについても同様です。すべてを自前で囲い込むのではなく、他社と共有した方がよいものは公開・共有して、共同でメンテナンスを行っていくことが考えられており、ここで使われるのが分散台帳技術、ブロックチェーンというわけです。従来のモノリシックなシステムから、こうしたシステム間の境界もあいまいな、エコシステム的な在りようになることで、環境変化への即応性を向上させていくという大きな潮流が背景にあることを意識する必要があります。
アプリケーションにしろ、データにしろ、すべてを専有することが前提だった時代は終わろうとしています。「共有すべきものは共有していく」という方向へ、システム作りの考え方総体が大きく変化しており、そのひとつの顕れが分散型台帳なのだと言えるでしょう。

本書の狙いと構成
本書は、2016年10月に刊行して好評を博した『ブロックチェーン 仕組みと理論――サンプルで学ぶFinTechのコア技術』(ISBN978-4-86594-040-4)の増補改訂版です。
旧版以来この書籍では、非常に動きの速いFinTechの世界の中でも特にブロックチェーン技術を取り上げて、そのビジネス動向も踏まえつつ、技術的な内容に踏み込んでいきます。
本書の構成と狙いは次のようになっています。

【基礎編】ブロックチェーン技術を取り巻く世の中の動向を取り上げます
【理論編】ブロックチェーン技術を構成する諸技術を挙げ、それぞれがどのようなものであるかを解説します
【実装編】ブロックチェーン技術として代表的なプラットフォーム(ブロックチェーン基盤製品)をいくつか取り上げ、開発を行うために必要な基本的な事柄について、サンプルを交えて説明します

増補改訂の骨子
今回、増補改訂に至った背景には、ブロックチェーン技術そのものの発展もさることながら、技術を取り巻く状況の大きな変化があります。旧版執筆時の3年前は、ビットコインや抽象的な夢を語るビジネス書は数あれど、モノづくりの立場に必要な、手触り感のある技術書は皆無でした。幻想を打ち破り最初の一歩を刻むための“礎”が必要だったのです。
あれから3年、基礎から個別のテーマまで、扱うテーマの異なる多様な技術書が巷にあふれるようになりました。一方、仮想通貨界隈で起こった様々なトラブルや相場の暴落、実証実験疲れなどの要因から、「ブロックチェーンは“幻滅期”に入った」と言われるようになりました。その間、技術やユースケースについて地に足の着いた議論が進んだかと問われると、それが十分に進まないうちに、技術適用への温度が下がりつつあるように感じられます。せっかく技術自体は非常にはやい速度で進化を続けているのに、もったいないことです。「今度はこの幻滅を打ち破るための“礎”が必要である」との強い思いに至り、増補改訂を行うことにしました。

そのためこの増補改訂版では、次のような情報の更新を行うとともに、新たに以下のような情報を盛り込みました。

●応用事例や業界動向の最新化
●従来の3つのブロックチェーン基盤製品 (Bitcoin Core、Ethereum、Hyperledger Fabric) の情報最新化に加え、Lightning Network、Quorum、Cordaを追加。ユースケースに即して、各製品の属性をより理解しやすく、選択しやすくなるように解説
●商用プラットフォームを構築する際に考慮すべき事柄について追加

これらの作業を通じ、本書が旧版にも増してブロックチェーン技術の普及と成熟にいささかの貢献ができれば幸いです。

2019年1月
執筆者を代表して (株)NTTデータ 金融事業推進部 赤羽喜治

赤羽 喜治 編著 (著), 愛敬 真生 編著 (著)
出版社 : リックテレコム (2019/7/27)、出典:出版社HP

増補改訂版の刊行に寄せて

2019年6月、G20「財務相・中央銀行総裁会議」併催のハイレベルセミナーでは、フィンテックとブロックチェーンがテーマとなった。仮想通貨(現在は暗号資産と呼ぶ)の価格高騰から1年半が過ぎ、G20関係者の関心も、ビットコインの相場から技術へと移っていた。議長国の麻生副総理・財務大臣は英語のスピーチの中で、ブロックチェーンとDLT(分散型台帳技術)という言葉を繰り返すなど、時代の変節が実感された。

金融や情報技術の専門家でも、未だに仮想通貨とブロックチェーンの区別がつかない人は少なくない。歴史的に見れば先にビットコインが登場し、他分野への応用が図られる中で、技術に対する呼称としてブロックチェーンやDLTという語が使われるようになった。かつての適用業務分野は仮想通貨しかなかったので、両者を混同してもやむをえないが、時代は変わり、もはやそのような混同は許されない。

この本は、ブロックチェーンという技術を正確かつ分かりやすく解説した書物の最新改訂版である。仮想通貨の相場が下落して人々の過度な期待が幻滅に転じても、それを支える技術には希望が満ちている。この本はそうした技術が描き出す未来を、豊富な実例と詳しい図表とで丁寧に紹介している。読者は、ブロックチェーンが億り人(および億り人になれなかった多くの投資家)を作り出すルーレットなどではなく、産業や行政の新しい基盤になりうる技術だと理解するだろう。

とはいえ、新しい分野への応用事例はまだ限られているし、規模も大きくない。大切な情報を扱う業務システムのオーナーが慎重になるのは当然だし、技術体系の移行は簡単ではないからだ。しかし幸いなことに、仮想通貨という世界規模の巨大な実証実験は継続しており、そこからリスクや課題を学ぶことができる。ビットコインのスケーラビリティ問題や、アルトコインに対する51%攻撃など、かつては想像でしか語られなかったことが、次々と現実に起こっている。その意味では、仮想通貨の実装が大規模に行われ、様々な攻撃や改変が試行されたことは、課題を明確にし、技術を研ぎ澄ますための貴重な糧となった。この本が仮想通貨の最新動向も詳述しているのは、そうした事情からである。

読者は、仮想通貨の世界での出来事を学ぶことで、ブロックチェーンの可能性と限界を実感できるだろう。そのことは、他の分野へ応用を考える際の重要な材料になる。ブロックチェーンは「何でも解決してくれる魔法の杖」ではないし、杖を働かせるには正しい振り方をしなければならない。ブロックしい。チェーンの可能性に賭けてみようと思う人は是非、この本に描かれた未来の姿をしっかりと見届けてほしい。

京都大学 公共政策大学院教授 岩下直行

赤羽 喜治 編著 (著), 愛敬 真生 編著 (著)
出版社 : リックテレコム (2019/7/27)、出典:出版社HP

開発環境・動作検証環境

本書に記載されているプログラムは、各ブロックチェーン基盤に応じ、下記の環境において開発および動作検証を実施しました。

Contents 目次

はじめに

基礎編

第1章 プロローグ 赤羽 喜治
1 世の眼差しの変化
2 幻滅期に入ったブロックチェーン技術
3 仮想通貨は死んだのか?
3.1 「仮想通貨はもう買うな」
3.2 採算ラインとハッシュレート
3.3 ビットコインの価値
3.4 サトシ・ナカモトの見ていたもの
4 正しい理解のために

第2章 ブロックチェーンに至る流れ 大綱 恵一
1 起点はビットコイン
1.1 ビットコインの誕生
1.2 ビットコインの毀誉褒貶
1.3 ブロックチェーン技術への注目
2 「ビットコインの技術」から分散型台帳技術へ
2.1 FinTechとしてのブロックチェーン技術
2.2 広がりを見せるブロックチェーン技術
3 ブロックチェーン技術の今後
3.1 システム開発技術としてのブロックチェーン
3.2 価値交換におけるブロックチェーン技術

第3章 ブロックチェーン技術とは? 山本 英司
1 ブロックチェーン技術考案の背景
1.1 サトシ・ナカモトの問題意識
1.2 解決策としての「分散」
2 分散型台帳を支える技術
2.1 分散型台帳とは何か?
2.2 分散型台帳のメリット
2.3 分散型台帳のデメリット
3 ブロックチェーンが広げる可能性
4 ブロックチェーンの社会実装

第4章 ブロックチェーン技術の応用 大綱 恵一、大守 由貴、山本享穂
1 応用が期待される領域
1.1 ブロックチェーン市場と活用への期待
1.2 応用が期待される産業分野
2 各産業分野の適用事例
2.1 Agriculture ~IBM Food Trust
2.2 Automotive ~自動運転車両への適用
2.3 Financial Service ~新たな決済ネットワークのサービス提供
2.4 Healthcare ~医薬品サプライチェーンへの適用
2.5 Insurance ~外航貨物海上保険における保険金支払いへの適用
2.6 Property ~転売防止機能を備えるチケット発行管理のサービス
2.7 Public Service ~ネット投票
2.8 Retail ~携帯電話の店頭修理プロセスへの適用
2.9 Technology/Media/Telecommunications ~デジタルコンテンツの著作権とロイヤリティ管理への活用
2.10 Transport and Logistics ~貿易情報連携基盤の実現に向けた取り組み
2.11 Utilities ~再エネCO2削減価値創出モデル事業

第5章 ブロックチェーンの業界動向 宇津木 太郎
1 ブロックチェーン基盤の動向
2 Finance Service
2.1 仮想通貨の動向
2.2 日本国内の金融業界動向
2.3 証券取引に関する動向
3 Property
3.1 不動産コンソーシアム事例
3.2 不動産登記簿の事例
4 Public
4.1 日本の中央省庁の取り組み状況
4.2 選挙への利用
5 Healthcare
5.1 エストニアの健康情報システム
5.2 日本医師会のJ-DOME

理論編

第6章 ブロックチェーンの仕組み 愛敬 真生
1 ビットコインの仕組み
1.1 ビットコインの目的
1.2 ビットコイン実現の手段
1.3 ビザンチン将軍問題
1.4 ビットコインの処理の流れ
2 ブロックチェーン技術の構成要素と分類
2.1 ビットコイン以外のブロックチェーン基盤
2.2 ブロックチェーン技術の構成要素
2.3 ブロックチェーン基盤の分類
3 ブロックチェーン基盤の比較
3.1 アーキテクチャの比較
3.2 データ構造の比較
3.3 合意形成の仕組み
3.4 システム構成
3.5 プライバシー(秘匿化・情報共有範囲)

第7章 P2Pネットワーク 鬼澤 文人、北條 真史
1 P2Pネットワークの概要
2 P2Pネットワークの設計
2.1 ピュアP2PとハイブリッドP2P
2.2 非構造化オーバレイと構造化オーバレイ
2.3 ブロックチェーン基盤の分類
3 P2Pネットワークにおけるブロックチェーンの動き(概要)
4 P2Pネットワークにおけるブロックチェーンの動き(詳細)
4.1 P2Pネットワーク上の他ノードとの連携
4.2 データ(ブロック)の送受信
5 今後の課題

第8章 コンセンサスアルゴリズム 富田 京志
1 コンセンサスアルゴリズムとは?
2 プルーフ・オブ・ワークの問題点
2.1 51%攻撃
2.2 ファイナリティの不確実性
2.3 性能限界
2.4 ブロックチェーンの容量
3 コンセンサスアルゴリズムの種類
3.1 代表的なコンセンサスアルゴリズム
3.2 分散システムにおける障害モデル
4 各コンセンサスアルゴリズムの特徴
4.1 PoW (Proof of Work)
4.2 PoS (Proof of Stake)
4.3 PoA (Proof of Authority)
4.4 PBFT (Practical Byzantine Fault Tolerance)
4.5 Endorsement-Ordering-Validation
4.6 IBFT (Istanbul BFT)
4.7 Paxos
4.8 Raft今後の課題

第9章 電子署名とハッシュ 愛敬 真生、山本英司
1 電子署名による改ざん防止
1.1 電子署名の概要
1.2 ブロックチェーンにおける電子署名の利用
2 ハッシュによる改ざん防止
2.1 ハッシュの概要
2.2 ブロックチェーンにおけるハッシュの利用
3 今後の課題
3.1 暗号技術の適切な実装
3.2 署名のデータ量とスケーラビリティ問題
3.3 データの秘匿化
3.4 行き過ぎた秘匿化の問題点

第10章 利用にあたっての課題 愛敬 真生
1 適用領域の拡大と基盤の進化
2 ブロックチェーンの課題と現状
2.1 パフォーマンスとスケーラビリティ
2.2 セキュリティとプライバシー
2.3 データの容量や共有範囲の制御
3 ブロックチェーンを活用する際の考慮事項
3.1 共通的な考慮点
3.2 パブリック型を採用する際の考慮点
3.3 コンソーシアム/プライベート型での考慮点

実践編

第11章 Bitcoin Core 高坂 大介
1 ビットコインとBitcoin Core
1.1 Bitcoin Coreとは?
1.2 Bitcoin Coreの追加機能
1.3 Bitcoin Coreを動かす
2 インストールから起動まで
2.1 Bitcoin Coreのインストール
2.2 テストネットでの起動
3 Bitcoin Coreを操作する
3.1 ブロックの生成
3.2 送金アドレスの生成
3.3 残高の確認
3.4 送金(その1)
3.5 マイニング(その1)
3.6 送金の確認(その1)
3.7 送金(その2)
3.8 マイニング(その2)
3.9 送金の確認(その2)

第12章 Lightning Network 宮下 哲
1 Lightning Networkの概要
1.1 Lightning Networkとは?
1.2 Payment ChannelとHTLCを使用した送金例
2 Lightning Networkを動かす
2.1 lnd開発環境のセットアップ
2.2 simnetでの起動
2.3 送金の実施

第13章 Ethereum 宮下 哲
1 Ethereumとは?
2 Ethereumを動かす
2.1 Ethereumのインストール
2.2 プライベートネットワークの構築
2.3 アカウントの作成
2.4 残高の確認
2.5 ブロック数の確認
2.6 送金
2.7 送金の確認
2.8 gethの停止
3 Contractを使ったサンプル開発.
3.1 Ethereumの拡張機能
3.2 Ethereumのプログラミング
3.3 ディレクトリ構成
3.4 開発ツールの準備
3.5 Remixの起動
3.6 Contractの作成
3.7 Contractのデプロイ
3.8 bc_accessor.jsファイルの作成
3.9 サンプルアプリケーションの実行
3.10 ブロック状態のモニタリングツールの実行

第14章 Quorum 宮下 哲
1 Quorumの概要
1.1 Quorumとは?
1.2 メンバーシップサービス
1.3 コンセンサスアルゴリズム
1.4 トランザクションのプライバシー管理
1.5 QuorumとEthereumの違い
2 Quorumを動かす
2.1 Quorum Makerのインストール
2.2 Quorum Makerの起動
3 Contractを使ったサンプル開発
3.1 ディレクトリ構成
3.2 Quorum Maker UIツールによるデプロイ手順
3.3 bc_accessor.jsのプログラミング
3.4 サンプルアプリケーションの実行
3.5 ブロック状態のモニタリングツールの実行

第15章 Hyperledger Fabric 寺沢 賢司
1 Hyperledger Fabricの概要
1.1. Hyperledger Fabricとは?
1.2 パーミッション型ネットワーク
1.3 Peer
1.4 Ordering Service
1.5 トランザクションワークフロー
1.6 Fabricの「台帳」
1.7 チェーンコード
1.8 Fabric SDK
2 Hyperledger Fabricを動かす
2.1 開発環境のセットアップ
2.2 Fabric資材のダウンロード
2.3 Fabricネットワークを開始する
2.4 チェーンコードを呼び出す
3 チェーンコードを使ったサンプル開発
3.1 開発環境のセットアップ
3.2 チェーンコードの作成
3.3 APサーバ機能の作成
3.4 チェーンコードのインストールとインスタンス化
3.5 サンプルアプリケーションの実行

第16章 Corda 斎藤 宗範、富田 京志
1 Cordaの概要
1.1 R3とCorda
1.2 Cordaの特徴
1.3 Cordaネットワークの構成要素
1.4 台帳の正当性
1.5 台帳の共有
1.6 Cordaのトランザクション
2 Cordaを動かす
2.1 実行環境のセットアップ
2.2 サンプルプロジェクトの取得
2.3 Cordaのビルド
2.4 Cordaの起動
2.5 ブラウザからのアクセス
2.6 CorDappの停止
3 CorDappの作成
3.1 テンプレートプロジェクトを取得
3.2 CorDappの作成
3.3 CorDappのビルド
3.4 CorDappの起動
3.5 CorDappの画面表示と操作
3.6 初期データの登録
3.7 画面操作
3.8 モニタリングツール表示
3.9 CorDappの停止

第17章 エピローグ 赤羽 喜治
1 導入にあたっての留意点
2 コンソーシアム型におけるスキームの課題
3 プライベート型におけるスキームの課題
4 パブリック型におけるスキームの課題
5 法的な課題
6 データフォーマット
7 進化し続けるブロックチェーン

Appendix 付録 平井 識章
1 仮想マシン環境の設定
1.1 必要なソフトウェア
1.2 Ubuntu Serverへのアクセス方法
2 各ソフトウェアの操作方法.
2.1 必要パッケージのインストール
2.2 Docker / Docker-Compose
2.3 Python
2.4 Node.js + npm
3 サンプルアプリケーション開発の準備
3.1 サンプルアプリケーション構成
3.2 サンプルのディレクトリ構成
3.3 共通部品の作成(カウンタ画面)
3.4 共通部品の作成(モニタリング画面)
3.5 共通部品の作成(REST API部)

あとがき
参考文献
執筆者一覽
索引

赤羽 喜治 編著 (著), 愛敬 真生 編著 (著)
出版社 : リックテレコム (2019/7/27)、出典:出版社HP