About the Author |
|
xix | |
About the Technical Reviewer |
|
xxi | |
|
Chapter 1 Bridging the Blockchain Knowledge Gap |
|
|
1 | (20) |
|
|
1 | (1) |
|
|
2 | (2) |
|
Three Parts of a Blockchain |
|
|
4 | (2) |
|
Ethereum Assumes Many Chains |
|
|
5 | (1) |
|
This Is a Scam, Just Like Bitcoin! |
|
|
5 | (1) |
|
Ether as a Currency and Commodity |
|
|
6 | (2) |
|
|
6 | (1) |
|
|
7 | (1) |
|
Cryptoeconomics and Security |
|
|
7 | (1) |
|
Back to the Good Old Days |
|
|
8 | (1) |
|
|
8 | (1) |
|
The Power Is in the Protocol |
|
|
8 | (2) |
|
You Can Build Trustless Systems |
|
|
9 | (1) |
|
What Smart Contracts (Really) Do |
|
|
10 | (2) |
|
Objects and Methods for Value |
|
|
10 | (1) |
|
|
11 | (1) |
|
|
11 | (1) |
|
|
12 | (1) |
|
|
12 | (1) |
|
Ether and Electricity Prices |
|
|
12 | (1) |
|
|
13 | (1) |
|
|
13 | (1) |
|
Browser vs. Wallet or Keychain |
|
|
13 | (1) |
|
Solidity Is Kind of Like JavaScript, But |
|
|
13 | (1) |
|
What Ethereum Is Good For |
|
|
14 | (2) |
|
|
14 | (1) |
|
State of Smart Contract Development Today |
|
|
15 | (1) |
|
Deciding Where You Fit In |
|
|
16 | (1) |
|
A Note to New Programmers |
|
|
17 | (1) |
|
Ethereum Is Free and Open Source |
|
|
17 | (1) |
|
|
17 | (1) |
|
|
18 | (2) |
|
Private and Public Chains |
|
|
18 | (1) |
|
The Promise of Decentralized Databases |
|
|
19 | (1) |
|
What's Next: New Ways of Working |
|
|
20 | (1) |
|
|
20 | (1) |
|
Chapter 2 The Mist Browser |
|
|
21 | (26) |
|
Wallets as a Computing Metaphor |
|
|
22 | (2) |
|
|
22 | (1) |
|
|
23 | (1) |
|
|
24 | (2) |
|
In Cryptocurrency, You Hold Your Own Assets |
|
|
24 | (1) |
|
Visualizing Ethereum Transactions |
|
|
24 | (2) |
|
Breaking with Banking History |
|
|
26 | (1) |
|
How Encryption Leads to Trust |
|
|
26 | (2) |
|
|
28 | (2) |
|
More about Eth.guide and This Book |
|
|
28 | (1) |
|
|
29 | (1) |
|
|
29 | (1) |
|
Recommended: Using Parity with Geth |
|
|
30 | (1) |
|
|
30 | (13) |
|
Downloading and Installing Mist |
|
|
30 | (2) |
|
|
32 | (4) |
|
|
36 | (1) |
|
Sending and Receiving Ether |
|
|
36 | (2) |
|
Understanding Ethereum Account Types |
|
|
38 | (1) |
|
Backing Up and Restoring Your Keys |
|
|
39 | (1) |
|
|
40 | (1) |
|
|
40 | (2) |
|
Working with Messages and Transactions |
|
|
42 | (1) |
|
So, What Is a Blockchain? |
|
|
43 | (2) |
|
|
43 | (1) |
|
Understanding Denominations |
|
|
44 | (1) |
|
|
44 | (1) |
|
Anonymity in Cryptocurrency |
|
|
45 | (1) |
|
|
45 | (1) |
|
|
46 | (1) |
|
|
47 | (22) |
|
The Central Bank Network of Yesterday |
|
|
47 | (1) |
|
What are Virtual Machines, Exactly? |
|
|
48 | (1) |
|
The Role of the Ethereum Protocol in Banking |
|
|
48 | (1) |
|
Anyone Can Make a Banking Platform |
|
|
48 | (1) |
|
|
49 | (2) |
|
EVM Applications Are Called Smart Contracts |
|
|
51 | (1) |
|
The Name "Smart Contracts" |
|
|
51 | (1) |
|
|
51 | (1) |
|
Understanding State Machines |
|
|
51 | (2) |
|
|
51 | (1) |
|
|
52 | (1) |
|
|
53 | (1) |
|
How the Guts of the EVM Work |
|
|
53 | (2) |
|
The EVM Constantly Checks for Transactions |
|
|
54 | (1) |
|
Creating a Common Machine Narrative of What Happened |
|
|
54 | (1) |
|
|
55 | (1) |
|
What Hash Functions (or Hash Algorithms) Do |
|
|
55 | (1) |
|
Blocks: The History of State Changes |
|
|
55 | (2) |
|
|
56 | (1) |
|
The Drawbacks of Short Blocks |
|
|
56 | (1) |
|
|
56 | (1) |
|
|
57 | (1) |
|
Mining's Place in the State Transition Function |
|
|
57 | (1) |
|
|
58 | (1) |
|
|
58 | (2) |
|
|
59 | (1) |
|
Why Isn't Gas Priced in Ether? |
|
|
59 | (1) |
|
|
59 | (1) |
|
|
60 | (1) |
|
|
60 | (1) |
|
How Gas Relates to Scaling the System |
|
|
60 | (1) |
|
Accounts, Transactions, and Messages |
|
|
61 | (1) |
|
Externally Owned Accounts |
|
|
61 | (1) |
|
|
61 | (1) |
|
Transactions and Messages |
|
|
62 | (1) |
|
Characteristics of Transactions |
|
|
62 | (1) |
|
Characteristics of Messages |
|
|
62 | (1) |
|
Estimating Gas Fees for Operations |
|
|
63 | (1) |
|
|
64 | (3) |
|
|
67 | (2) |
|
Chapter 4 Solidity Programming |
|
|
69 | (20) |
|
|
69 | (1) |
|
Global Banking Made (Almost) Real |
|
|
70 | (1) |
|
Extra-Large Infrastructure |
|
|
70 | (1) |
|
|
70 | (1) |
|
|
71 | (1) |
|
|
71 | (1) |
|
|
72 | (1) |
|
Learning to Program the EVM |
|
|
72 | (2) |
|
|
73 | (1) |
|
The Case for Writing Business Logic in Solidity |
|
|
74 | (1) |
|
|
74 | (1) |
|
|
74 | (2) |
|
Writing Loops in Solidity |
|
|
75 | (1) |
|
Expressiveness and Security |
|
|
76 | (1) |
|
The Importance of Formal Proofs |
|
|
76 | (2) |
|
Historical Impact of a Shared Global Resource |
|
|
76 | (1) |
|
How Attackers Bring Down Communities |
|
|
77 | (1) |
|
Hypothetical Attack Written in Solidity |
|
|
77 | (1) |
|
Automated Proofs to the Rescue? |
|
|
78 | (1) |
|
|
78 | (1) |
|
|
78 | (1) |
|
Testing, Testing, Testing |
|
|
79 | (2) |
|
|
79 | (2) |
|
Formatting Solidity Files |
|
|
81 | (1) |
|
|
81 | (1) |
|
Statements and Expressions in Solidity |
|
|
82 | (1) |
|
|
82 | (1) |
|
|
82 | (1) |
|
Functions, Public and Private |
|
|
82 | (1) |
|
|
83 | (2) |
|
|
83 | (1) |
|
Signed and Unsigned Integers |
|
|
83 | (1) |
|
|
83 | (1) |
|
|
83 | (1) |
|
|
84 | (1) |
|
|
84 | (1) |
|
Complex (Reference) Types |
|
|
84 | (1) |
|
Global Special Variables, Units, and Functions |
|
|
85 | (3) |
|
Block and Transaction Properties |
|
|
85 | (1) |
|
|
86 | (1) |
|
|
87 | (1) |
|
Exceptions and Inheritance |
|
|
88 | (1) |
|
|
88 | (1) |
|
Chapter 5 Smart Contracts and Tokens |
|
|
89 | (22) |
|
|
89 | (1) |
|
|
90 | (1) |
|
Assets Backed by Anything |
|
|
90 | (1) |
|
Bartering with Fiat Currency |
|
|
90 | (1) |
|
|
90 | (1) |
|
Cryptocurrency Is a Measure of Time |
|
|
91 | (3) |
|
Asset Ownership and Civilization |
|
|
92 | (1) |
|
|
93 | (1) |
|
The Function of Collectibles in Human Systems |
|
|
94 | (2) |
|
|
95 | (1) |
|
|
95 | (1) |
|
The Step Toward Banknotes |
|
|
95 | (1) |
|
Platforms for High-Value Digital Collectibles |
|
|
96 | (1) |
|
Tokens Are a Category of Smart Contract |
|
|
97 | (1) |
|
Tokens as Social Contracts |
|
|
97 | (1) |
|
Tokens Are a Great First App |
|
|
98 | (1) |
|
Creating a Token on the Testnet |
|
|
98 | (9) |
|
Getting Test Ether from the Faucet |
|
|
99 | (7) |
|
|
106 | (1) |
|
Deploying Your First Contract |
|
|
107 | (3) |
|
Same House, Different Address |
|
|
108 | (2) |
|
|
110 | (1) |
|
|
110 | (1) |
|
|
111 | (28) |
|
|
111 | (1) |
|
|
112 | (1) |
|
|
112 | (1) |
|
|
113 | (3) |
|
Difficulty, Self-Regulation, and the Race for Profit |
|
|
114 | (1) |
|
How Proof of Work Helps Regulate Block Time |
|
|
115 | (1) |
|
What's Going on with the DAG and Nonce? |
|
|
116 | (1) |
|
All This for Faster Blocks? |
|
|
117 | (1) |
|
|
117 | (1) |
|
How Ethereum Uses Stale Blocks |
|
|
118 | (1) |
|
|
119 | (1) |
|
|
119 | (2) |
|
Miner's Winning Payout Structure |
|
|
120 | (1) |
|
|
120 | (1) |
|
The Block Processing Play by Play |
|
|
120 | (1) |
|
Evaluating the Ancestry of Blocks and Transactions |
|
|
121 | (1) |
|
How Ethereum and Bitcoin Use Trees |
|
|
122 | (1) |
|
|
122 | (1) |
|
Contents of an Ethereum Block Header |
|
|
123 | (1) |
|
|
123 | (1) |
|
|
124 | (4) |
|
|
125 | (1) |
|
Installing Geth on Windows |
|
|
125 | (1) |
|
Getting Comfortable with the Command Line |
|
|
125 | (1) |
|
Installing Geth on Ubuntu 14.04 |
|
|
126 | (2) |
|
Executing Commands in the EVM via the Geth Console |
|
|
128 | (3) |
|
Launching Geth with Flags |
|
|
131 | (1) |
|
|
132 | (2) |
|
|
134 | (1) |
|
|
134 | (2) |
|
Mining on a Pool with Multiple GPUs |
|
|
136 | (1) |
|
|
136 | (3) |
|
Chapter 7 Cryptoeconomics Survey |
|
|
139 | (10) |
|
|
139 | (2) |
|
New Technologies Create New Economies |
|
|
140 | (1) |
|
|
141 | (1) |
|
Why Is Cryptoeconomics Useful? |
|
|
141 | (3) |
|
Understanding Hashing vs. Encryption |
|
|
142 | (1) |
|
|
142 | (1) |
|
|
143 | (1) |
|
Why the Speed of Blocks Matters |
|
|
144 | (1) |
|
|
144 | (1) |
|
|
145 | (2) |
|
Social Proof Between Machines |
|
|
146 | (1) |
|
Security as the Network Scales |
|
|
146 | (1) |
|
More About Cryptoeconomics |
|
|
147 | (1) |
|
|
147 | (2) |
|
Chapter 8 Dapp Deployment |
|
|
149 | (10) |
|
Seven Ways to Think About Smart Contracts |
|
|
150 | (1) |
|
Dapp Contract Data Models |
|
|
150 | (1) |
|
How an EVM Back End Talks to a JS Front End |
|
|
151 | (1) |
|
|
151 | (1) |
|
|
152 | (1) |
|
Experimenting with the JavaScript API |
|
|
153 | (1) |
|
Using Geth for Dapp Deployment |
|
|
153 | (1) |
|
Using Meteor with the EVM |
|
|
154 | (1) |
|
Install Web3.js to Build an Ethereum-Enabled Web Application |
|
|
154 | (1) |
|
Executing Contracts in the Console |
|
|
155 | (1) |
|
How Contracts Expose an Interface |
|
|
155 | (1) |
|
Recommendations for Prototyping |
|
|
156 | (1) |
|
Third-Party Deployment Libraries |
|
|
156 | (1) |
|
|
157 | (2) |
|
Chapter 9 Creating Private Chains |
|
|
159 | (6) |
|
Private and Permissioned Chains |
|
|
159 | (1) |
|
Setting Up a Local Private Chain |
|
|
160 | (2) |
|
Optional Flags to Use with New Chains |
|
|
162 | (1) |
|
Private Blockchains in Production Usage |
|
|
162 | (1) |
|
|
163 | (2) |
|
|
165 | (8) |
|
|
165 | (1) |
|
The Internet of Ethereum Things |
|
|
166 | (1) |
|
|
167 | (1) |
|
Community and Government Financing |
|
|
167 | (1) |
|
Human and Organizational Behavior |
|
|
168 | (1) |
|
Financial and Insurance Applications |
|
|
169 | (1) |
|
Inventory and Accounting Systems |
|
|
170 | (1) |
|
|
171 | (1) |
|
Gaming, Gambling, and Investing |
|
|
171 | (1) |
|
|
172 | (1) |
|
Chapter 11 Advanced Concepts |
|
|
173 | (8) |
|
Who Is Leading Software Developers Toward Decentralization? |
|
|
173 | (1) |
|
Vitalik's Best Technical Blog Posts |
|
|
174 | (1) |
|
The Ethereum Release Schedule |
|
|
174 | (2) |
|
|
175 | (1) |
|
Swarm (Content Addressing) |
|
|
175 | (1) |
|
|
176 | (1) |
|
Other Interesting Innovations |
|
|
177 | (1) |
|
|
177 | (1) |
|
|
177 | (1) |
|
|
178 | (1) |
|
|
178 | (1) |
|
|
178 | (1) |
|
|
178 | (3) |
Index |
|
181 | |