List of Figures |
|
xiii | |
List of Tables |
|
xix | |
Acknowledgments |
|
xxi | |
Preface |
|
xxiii | |
References |
|
xxix | |
1 Introduction |
|
1 | (20) |
|
1.1 Basic Concepts and Terminologies for Dependable Computing |
|
|
2 | (7) |
|
|
2 | (1) |
|
|
3 | (3) |
|
1.1.3 Dependability Attributes and Evaluation Metrics |
|
|
6 | (3) |
|
1.2 Means to Achieve Dependability |
|
|
9 | (4) |
|
|
9 | (1) |
|
1.2.2 Fault Detection and Diagnosis |
|
|
9 | (1) |
|
|
10 | (1) |
|
|
11 | (2) |
|
|
13 | (5) |
|
|
18 | (3) |
2 Logging and Checkpointing |
|
21 | (42) |
|
|
22 | (5) |
|
|
23 | (1) |
|
2.1.2 Process State and Global State |
|
|
23 | (3) |
|
2.1.3 Piecewise Deterministic Assumption |
|
|
26 | (1) |
|
|
26 | (1) |
|
|
27 | (1) |
|
2.2 Checkpoint-Based Protocols |
|
|
27 | (13) |
|
2.2.1 Uncoordinated Checkpointing |
|
|
27 | (2) |
|
2.2.2 Tamir and Sequin Global Checkpointing Protocol |
|
|
29 | (6) |
|
2.2.3 Chandy and Lamport Distributed Snapshot Protocol |
|
|
35 | (3) |
|
|
38 | (2) |
|
|
40 | (20) |
|
2.3.1 Pessimistic Logging |
|
|
42 | (9) |
|
2.3.2 Sender-Based Message Logging |
|
|
51 | (9) |
|
|
60 | (3) |
3 Recovery-Oriented Computing |
|
63 | (40) |
|
|
65 | (3) |
|
3.2 Fault Detection and Localization |
|
|
68 | (21) |
|
3.2.1 Component Interactions Modeling and Anomaly Detection |
|
|
72 | (4) |
|
3.2.2 Path Shapes Modeling and Root Cause Analysis |
|
|
76 | (4) |
|
3.2.3 Inference-Based Fault Diagnosis |
|
|
80 | (9) |
|
|
89 | (4) |
|
3.3.1 Microrebootable System Design Guideline |
|
|
90 | (1) |
|
3.3.2 Automatic Recovery with Microreboot |
|
|
91 | (1) |
|
3.3.3 Implications of the Microrebooting Technique |
|
|
92 | (1) |
|
3.4 Overcoming Operator Errors |
|
|
93 | (6) |
|
3.4.1 The Operator Undo Model |
|
|
94 | (1) |
|
3.4.2 The Operator Undo Framework |
|
|
95 | (4) |
|
|
99 | (4) |
4 Data and Service Replication |
|
103 | (44) |
|
|
105 | (6) |
|
|
107 | (2) |
|
4.1.2 Implementation of Service Replication |
|
|
109 | (2) |
|
|
111 | (5) |
|
4.3 Optimistic Replication |
|
|
116 | (20) |
|
|
117 | (2) |
|
4.3.2 Establish Ordering among Operations |
|
|
119 | (3) |
|
4.3.3 State Transfer Systems |
|
|
122 | (4) |
|
4.3.4 Operation Transfer System |
|
|
126 | (5) |
|
|
131 | (5) |
|
|
136 | (7) |
|
|
139 | (1) |
|
4.4.2 Implications of Enabling Partition Tolerance |
|
|
140 | (3) |
|
|
143 | (4) |
5 Group Communication Systems |
|
147 | (52) |
|
|
149 | (3) |
|
5.2 Sequencer Based Group Communication System |
|
|
152 | (14) |
|
|
153 | (4) |
|
|
157 | (8) |
|
5.2.3 Proof of Correctness |
|
|
165 | (1) |
|
5.3 Sender Based Group Communication System |
|
|
166 | (26) |
|
5.3.1 Total Ordering Protocol |
|
|
167 | (7) |
|
5.3.2 Membership Change Protocol |
|
|
174 | (9) |
|
|
183 | (7) |
|
5.3.4 The Flow Control Mechanism |
|
|
190 | (2) |
|
5.4 Vector Clock Based Group Communication System |
|
|
192 | (5) |
|
|
197 | (2) |
6 Consensus and the Paxos Algorithms |
|
199 | (46) |
|
6.1 The Consensus Problem |
|
|
200 | (2) |
|
|
202 | (10) |
|
6.2.1 Algorithm for Choosing a Value |
|
|
202 | (2) |
|
6.2.2 Algorithm for Learning a Value |
|
|
204 | (1) |
|
6.2.3 Proof of Correctness |
|
|
204 | (2) |
|
6.2.4 Reasoning of the Paxos Algorithm |
|
|
206 | (6) |
|
|
212 | (4) |
|
6.3.1 Checkpointing and Garbage Collection |
|
|
213 | (1) |
|
6.3.2 Leader Election and View Change |
|
|
214 | (2) |
|
|
216 | (11) |
|
|
217 | (3) |
|
|
220 | (7) |
|
|
227 | (8) |
|
|
228 | (1) |
|
6.5.2 Collision Recovery, Quorum Requirement, and Value Selection Rule |
|
|
229 | (6) |
|
6.6 Implementations of the Paxos Family Algorithms |
|
|
235 | (7) |
|
6.6.1 Hard Drive Failures |
|
|
236 | (1) |
|
6.6.2 Multiple Coordinators |
|
|
236 | (1) |
|
|
237 | (4) |
|
6.6.4 Limited Disk Space for Logging |
|
|
241 | (1) |
|
|
242 | (3) |
7 Byzantine Fault Tolerance |
|
245 | (50) |
|
7.1 The Byzantine Generals Problem |
|
|
246 | (15) |
|
|
247 | (3) |
|
7.1.2 The Oral Message Algorithms |
|
|
250 | (10) |
|
7.1.3 Proof of Correctness for the Oral Message Algorithms |
|
|
260 | (1) |
|
7.2 Practical Byzantine Fault Tolerance |
|
|
261 | (16) |
|
|
262 | (1) |
|
7.2.2 Overview of the PBFT Algorithm |
|
|
263 | (2) |
|
7.2.3 Normal Operation of PBFT |
|
|
265 | (2) |
|
|
267 | (1) |
|
|
268 | (3) |
|
7.2.6 Proof of Correctness |
|
|
271 | (2) |
|
|
273 | (4) |
|
7.3 Fast Byzantine Agreement |
|
|
277 | (1) |
|
7.4 Speculative Byzantine Fault Tolerance |
|
|
278 | (12) |
|
7.4.1 The Agreement Protocol |
|
|
279 | (4) |
|
7.4.2 The View Change Protocol |
|
|
283 | (5) |
|
7.4.3 The Checkpointing Protocol |
|
|
288 | (1) |
|
7.4.4 Proof of Correctness |
|
|
288 | (2) |
|
|
290 | (5) |
8 Cryptocurrency and Blockchain |
|
295 | (54) |
|
8.1 History of Cryptocurrency |
|
|
295 | (3) |
|
|
298 | (19) |
|
8.2.1 Decentralized Network and Architecture |
|
|
301 | (1) |
|
8.2.2 Self-Contained Cryptography |
|
|
302 | (2) |
|
8.2.3 Decentralized Data Structure |
|
|
304 | (9) |
|
8.2.4 Decentralized Algorithms |
|
|
313 | (4) |
|
|
317 | (25) |
|
8.3.1 Ethereum Computing Model |
|
|
318 | (8) |
|
8.3.2 Block and Consensus |
|
|
326 | (14) |
|
|
340 | (2) |
|
8.4 Attacks on Blockchain |
|
|
342 | (5) |
|
|
347 | (2) |
9 Consensus Algorithms for Blockchain |
|
349 | (28) |
|
9.1 Model on Blockchain Consensus |
|
|
353 | (3) |
|
9.1.1 Requirements on Puzzle Design |
|
|
354 | (1) |
|
9.1.2 Zero-Knowledge Proof |
|
|
355 | (1) |
|
|
356 | (1) |
|
|
357 | (3) |
|
9.3.1 Using Storage as Resource |
|
|
357 | (2) |
|
9.3.2 Using Computing as Resource |
|
|
359 | (1) |
|
|
360 | (15) |
|
|
360 | (8) |
|
9.4.2 Fixed-Epoch Time Based PoS Schemes |
|
|
368 | (3) |
|
9.4.3 Proof of Elapsed Time |
|
|
371 | (4) |
|
|
375 | (2) |
10 Blockchain Applications |
|
377 | (50) |
|
10.1 The Value of Blockchain |
|
|
378 | (5) |
|
10.1.1 Non-Functional Benefits |
|
|
379 | (3) |
|
10.1.2 Functional Benefits |
|
|
382 | (1) |
|
10.2 Blockchain-Enabled Cyber-Physical Systems |
|
|
383 | (15) |
|
10.2.1 Cyber-Physical Systems |
|
|
383 | (2) |
|
10.2.2 Application Categories |
|
|
385 | (5) |
|
10.2.3 Blockchain-Enabled Operations in CPS |
|
|
390 | (8) |
|
10.3 On Blockchain Throughput |
|
|
398 | (10) |
|
|
399 | (3) |
|
10.3.2 Off-Chain Approach |
|
|
402 | (6) |
|
10.4 A Critical Look on Blockchain from Economy Perspective |
|
|
408 | (11) |
|
10.4.1 Blockchain Technology from the Economic View |
|
|
409 | (3) |
|
10.4.2 Economic Functions of Blockchain |
|
|
412 | (4) |
|
10.4.3 Blockchain as a Financial Infrastructure |
|
|
416 | (3) |
|
|
419 | (8) |
Index |
|
427 | |