Preface |
|
xiii | |
|
Part I Introduction to Blockchain |
|
|
|
1 Fundamental Concepts of Blockchain |
|
|
3 | (24) |
|
|
4 | (2) |
|
|
6 | (2) |
|
The Blockchain Revolution |
|
|
7 | (1) |
|
|
7 | (1) |
|
Core Components of Blockchain |
|
|
8 | (5) |
|
|
8 | (1) |
|
|
9 | (1) |
|
|
10 | (1) |
|
|
10 | (1) |
|
|
11 | (1) |
|
|
12 | (1) |
|
|
13 | (2) |
|
|
14 | (1) |
|
|
14 | (1) |
|
|
15 | (1) |
|
|
15 | (1) |
|
Supporting Technology and Concepts |
|
|
15 | (9) |
|
|
15 | (1) |
|
|
15 | (1) |
|
|
16 | (1) |
|
|
16 | (1) |
|
|
16 | (1) |
|
|
16 | (1) |
|
|
17 | (1) |
|
|
17 | (1) |
|
|
17 | (1) |
|
|
18 | (1) |
|
|
18 | (1) |
|
|
18 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
20 | (1) |
|
|
21 | (1) |
|
|
21 | (1) |
|
|
21 | (1) |
|
|
22 | (1) |
|
|
22 | (1) |
|
|
23 | (1) |
|
|
23 | (1) |
|
|
23 | (1) |
|
|
23 | (1) |
|
|
24 | (1) |
|
|
24 | (1) |
|
|
24 | (1) |
|
|
24 | (3) |
|
Part II Introduction to Hyperledger Projects |
|
|
|
2 Overview of Hyperledger Projects and Tools |
|
|
27 | (14) |
|
Evolution and Phases of Blockchain Technology |
|
|
28 | (2) |
|
|
28 | (1) |
|
|
29 | (1) |
|
|
29 | (1) |
|
|
29 | (1) |
|
Hyperledger Family, Architecture, and Ecosystem |
|
|
30 | (4) |
|
The Hyperledger Design Philosophy |
|
|
31 | (1) |
|
|
32 | (2) |
|
Overview of Hyperledger Projects |
|
|
34 | (3) |
|
Distributed Ledger Frameworks |
|
|
34 | (2) |
|
|
36 | (1) |
|
Overview of Hyperledger Tools and Libraries |
|
|
37 | (2) |
|
|
37 | (1) |
|
|
38 | (1) |
|
|
39 | (2) |
|
3 Hyperledger Fabric Architecture and Components |
|
|
41 | (14) |
|
Hyperledger Fabric Overview |
|
|
42 | (1) |
|
|
42 | (10) |
|
|
44 | (1) |
|
|
45 | (1) |
|
Membership Service Provider |
|
|
46 | (1) |
|
|
47 | (1) |
|
|
48 | (1) |
|
|
49 | (1) |
|
|
50 | (1) |
|
|
51 | (1) |
|
Private Collections of Data |
|
|
51 | (1) |
|
|
52 | (3) |
|
Part III Developing Smart Contracts with Hyperledger Fabric |
|
|
|
4 Smart Contract Development |
|
|
55 | (28) |
|
Installing Prerequisites and Setting Up Hyperledger Fabric |
|
|
56 | (11) |
|
|
56 | (1) |
|
|
56 | (1) |
|
|
56 | (1) |
|
Docker and Docker Compose |
|
|
57 | (1) |
|
Fabric Installation Script |
|
|
57 | (1) |
|
Fundamental Requirements of a Smart Contract |
|
|
58 | (2) |
|
|
60 | (6) |
|
Create and Execute Queries |
|
|
66 | (1) |
|
Defining a Smart Contract |
|
|
67 | (10) |
|
Define Assets by Using Key-Value Pairs |
|
|
72 | (1) |
|
|
73 | (1) |
|
Set Attribute-Based Access Control |
|
|
74 | (1) |
|
Initialize the Ledger State |
|
|
75 | (2) |
|
Installing and Instantiating a Smart Contract |
|
|
77 | (5) |
|
|
77 | (1) |
|
|
78 | (1) |
|
|
78 | (1) |
|
|
78 | (1) |
|
|
79 | (1) |
|
Commit the Chaincode Definition |
|
|
79 | (1) |
|
Query Whether the Chaincode Is Committed |
|
|
80 | (1) |
|
|
80 | (1) |
|
|
81 | (1) |
|
|
82 | (1) |
|
5 Smart Contract Invocation |
|
|
83 | (28) |
|
Overview of fabric-samples, Fabcar, and the Test Network |
|
|
83 | (7) |
|
|
84 | (1) |
|
|
84 | (4) |
|
|
88 | (2) |
|
Deploying a Smart Contract |
|
|
90 | (5) |
|
Understand the startFabric.sh Anatomy |
|
|
90 | (1) |
|
|
91 | (1) |
|
Generate Fabric Certificate Authorities |
|
|
92 | (1) |
|
|
92 | (1) |
|
Invoke the Peer Chaincode |
|
|
93 | (2) |
|
Invoking Smart Contract Transactions |
|
|
95 | (15) |
|
|
96 | (5) |
|
Fabric SDK for Node.js Command-Line Application |
|
|
101 | (9) |
|
|
110 | (1) |
|
6 Testing and Maintenance |
|
|
111 | (30) |
|
Creating a Fabcar UI Client |
|
|
112 | (12) |
|
|
113 | (1) |
|
|
113 | (3) |
|
|
116 | (4) |
|
|
120 | (4) |
|
Performing Rapid Smart Contract Testing |
|
|
124 | (10) |
|
|
124 | (5) |
|
Preparing the Fabcar Smart Contract for Testing and Debugging |
|
|
129 | (2) |
|
Performing Fabcar Testing and Debugging |
|
|
131 | (3) |
|
Identifying and Reviewing Logs |
|
|
134 | (2) |
|
Creating Unit Test Contracts |
|
|
136 | (2) |
|
|
138 | (3) |
|
Part IV Blockchain Supply Chain with Hyperledger |
|
|
|
7 Building Supply Chain DApps with Hyperledger Fabric |
|
|
141 | (36) |
|
Designing a Blockchain Supply Chain |
|
|
141 | (5) |
|
Understanding the Supply Chain Workflow |
|
|
142 | (1) |
|
|
143 | (1) |
|
Reviewing the PLN Life Cycle |
|
|
144 | (2) |
|
Understanding Transactions |
|
|
146 | (1) |
|
Writing Chaincode as a Smart Contract |
|
|
146 | (5) |
|
|
147 | (1) |
|
|
148 | (1) |
|
|
148 | (3) |
|
Compiling and Deploying Fabric Chaincode |
|
|
151 | (10) |
|
|
151 | (1) |
|
Review the Project Structure |
|
|
151 | (4) |
|
Install Binaries and Docker Images |
|
|
155 | (1) |
|
|
156 | (1) |
|
|
157 | (1) |
|
|
158 | (3) |
|
Running and Testing the Smart Contract |
|
|
161 | (6) |
|
Install the Smart Contract |
|
|
161 | (3) |
|
|
164 | (3) |
|
Developing an Application with Hyperledger Fabric Through the SDK |
|
|
167 | (7) |
|
|
174 | (3) |
|
Part V Hyperledger Fabric---Other Topics |
|
|
|
8 Deploying Hyperledger Fabric on the Cloud |
|
|
177 | (38) |
|
Deploying Hyperledger Fabric on Amazon Blockchain Services |
|
|
178 | (9) |
|
Set Up Amazon Managed Blockchain with Prerequisites |
|
|
179 | (2) |
|
Set Up the Hyperledger Fabric Network |
|
|
181 | (1) |
|
Set Up the Hyperledger Fabric Client |
|
|
181 | (2) |
|
Clone the Samples Repository |
|
|
183 | (1) |
|
Run the Hyperledger Fabric Application |
|
|
184 | (3) |
|
Using IBM Cloud for Blockchain Applications |
|
|
187 | (11) |
|
Understand the Platform Features |
|
|
188 | (1) |
|
Create an IBM Cloud Account |
|
|
189 | (1) |
|
Decide the Structure of the Blockchain Network |
|
|
190 | (1) |
|
Create and Join the Fabric Network |
|
|
190 | (1) |
|
Build the Blockchain Network |
|
|
191 | (5) |
|
Deploy the Smart Contract |
|
|
196 | (1) |
|
|
197 | (1) |
|
Oracle Blockchain Platform Overview |
|
|
198 | (2) |
|
Oracle Blockchain Platform Use Case |
|
|
200 | (13) |
|
|
201 | (1) |
|
|
201 | (3) |
|
Experiment with Oracle Blockchain Platform |
|
|
204 | (6) |
|
|
210 | (3) |
|
|
213 | (2) |
|
9 Hyperledger Fabric V2 Integration |
|
|
215 | (32) |
|
New Features of Hyperledger Fabric V2 |
|
|
215 | (18) |
|
Decentralized Governance for Smart Contracts |
|
|
216 | (3) |
|
New Chaincode Application Patterns |
|
|
219 | (1) |
|
Private Data Enhancements |
|
|
219 | (5) |
|
External Chaincode Launcher |
|
|
224 | (4) |
|
State Database Cache for CouchDB |
|
|
228 | (1) |
|
Alpine-Based Docker Images |
|
|
229 | (2) |
|
|
231 | (2) |
|
Updating the Capability Level of a Channel |
|
|
233 | (8) |
|
Update to the Newest Capability Levels |
|
|
234 | (4) |
|
|
238 | (1) |
|
Set Environment Variables for the Binaries |
|
|
238 | (1) |
|
Back Up and Restore the Ledger |
|
|
239 | (1) |
|
Upgrade the Orderer Nodes |
|
|
239 | (1) |
|
|
240 | (1) |
|
Upgrade the Node SDK Clients |
|
|
241 | (1) |
|
Considerations for Moving to V2 |
|
|
241 | (4) |
|
|
241 | (1) |
|
Chaincode Shim Changes (Go Chaincode Only) |
|
|
242 | (1) |
|
Chaincode Logger (Go Chaincode Only) |
|
|
242 | (1) |
|
|
243 | (1) |
|
|
243 | (2) |
|
|
245 | (2) |
|
10 Overview of Other Hyperledger Projects |
|
|
247 | (30) |
|
|
247 | (6) |
|
|
249 | (1) |
|
Run Hyperledger Aries Cloud Agent |
|
|
250 | (3) |
|
|
253 | (5) |
|
Trusted Execution Environment |
|
|
254 | (1) |
|
|
254 | (1) |
|
|
255 | (1) |
|
Hyperledger Avalon Architecture |
|
|
256 | (2) |
|
|
258 | (11) |
|
Hyperledger Besu Architecture |
|
|
258 | (3) |
|
|
261 | (5) |
|
Smart Contract and DApp in Hyperledger Besu Private Network |
|
|
266 | (3) |
|
|
269 | (4) |
|
|
270 | (1) |
|
|
271 | (1) |
|
|
271 | (1) |
|
|
272 | (1) |
|
|
273 | (1) |
|
|
273 | (1) |
|
|
274 | (3) |
|
|
274 | (1) |
|
|
275 | (2) |
Index |
|
277 | |