• Blockchain 101
✔ The growth of blockchain technology Distributed systems
✔ The history of blockchain and Bitcoin
✔ Electronic cash Blockchain
✔ Blockchain defined
✔ Peer-to-peer Distributed ledger Cryptographically-secure Append-only
✔ Updateable via consensus Generic elements of a blockchain
✔ How blockchain works
✔ How blockchain accumulates blocks Benefits and limitations of blockchain Tiers of blockchain technology
✔ Features of a blockchain Types of blockchain
✔ Distributed ledgers Distributed Ledger Technology
✔ Public blockchains Private blockchains
✔ Semiprivate blockchains Sidechains Permissioned ledger
✔ Shared ledger
✔ Fully private and proprietary blockchains Tokenized blockchains
✔ Tokenless blockchains Consensus
✔ Consensus mechanism
✔ Types of consensus mechanisms Consensus in blockchain
✔ CAP theorem and blockchain
✔ Summary
• Decentralization
✔ Decentralization using blockchain Methods of decentralization
✔ Disintermediation
✔ Contest-driven decentralization Routes to decentralization
✔ How to decentralize
✔ The decentralization framework example
✔ Blockchain and full ecosystem decentralization Storage
✔ Communication
✔ Computing power and decentralization Smart contracts
✔ Decentralized Organizations
✔ Decentralized Autonomous Organizations Decentralized Autonomous Corporations Decentralized Autonomous Societies Decentralized Applications (DApps)
✔ Requirements of a Decentralized Application Operations of a DApp
✔ DApp examples
✔ KYC-Chain
✔ OpenBazaar Lazooz
✔ Platforms for decentralization Ethereum
✔ MaidSafe Lisk
✔ Summary
• Symmetric Cryptography
✔ Working with the OpenSSL command line Introduction
✔ Mathematics
✔ Set Group Field
✔ A finite field Order
✔ An abelian group Prime fields Ring
✔ A cyclic group Modular arithmetic
✔ Cryptography Confidentiality
✔ Integrity Authentication
✔ Entity authentication Data origin authentication
✔ Non-repudiation
✔ Accountability Cryptographic primitives
✔ Symmetric cryptography
✔ Stream ciphers Block ciphers
✔ Block encryption mode Electronic Code Book Cipher Block Chaining Counter mode
✔ Keystream generation mode Message authentication mode Cryptographic hash mode
✔ Data Encryption Standard Advanced Encryption Standard
✔ How AES works
✔ Summary
• Public Key Cryptography
✔ Asymmetric cryptography Integer factorization Discrete logarithm
✔ Elliptic curves Public and private keys
✔ RSA
✔ Encryption and decryption using RSA Elliptic Curve Cryptography
✔ Mathematics behind ECC
✔ Point addition
✔ Point doubling Discrete logarithm problem in ECC
✔ RSA using OpenSSL
✔ RSA public and private key pair Private key
✔ Public key
✔ Exploring the public key Encryption and decryption
✔ Encryption
✔ Decryption ECC using OpenSSL
✔ ECC private and public key pair Private key
✔ Private key generation Hash functions
✔ Compression of arbitrary messages into fixed-length digest Easy to compute
✔ Preimage resistance Second preimage resistance Collision resistance
✔ Message Digest
✔ Secure Hash Algorithms
✔ Design of Secure Hash Algorithms Design of SHA-256
✔ Design of SHA-3 (Keccak)
✔ OpenSSL example of hash functions Message Authentication Codes MACs using block ciphers
✔ Hash-based MACs Merkle trees
✔ Patricia trees Distributed Hash Tables
✔ Digital signatures
✔ RSA digital signature algorithm Sign then encrypt
✔ Encrypt then sign
✔ Elliptic Curve Digital Signature Algorithm
✔ How to generate a digital signature using OpenSSL ECDSA using OpenSSL
✔ Homomorphic encryption Signcryption
✔ Zero-Knowledge Proofs Blind signatures
✔ Encoding schemes Financial markets and trading
✔ Trading Exchanges
✔ Orders and order properties
✔ Order management and routing systems Components of a trade
✔ The underlying instrument General attributes Economics
✔ Sales Counterparty
✔ Trade life cycle Order anticipators Market manipulation
✔ Summary
• Introducing Bitcoin
✔ Bitcoin
✔ Bitcoin definition Bitcoin – a bird’s-eye view
✔ Sending a payment to someone Digital keys and addresses
✔ Private keys in Bitcoin
✔ Public keys in Bitcoin Addresses in Bitcoin
✔ Base58Check encoding Vanity addresses
✔ Multisignature addresses
✔ Transactions
✔ The transaction life cycle Transaction fee
✔ Transaction pools
✔ The transaction data structure Metadata
✔ Inputs Outputs Verification
✔ The script language
✔ Commonly used opcodes Types of transactions
✔ Coinbase transactions
✔ Contracts
✔ Transaction verification
✔ Transaction malleability
✔ Blockchain
✔ The structure of a block
✔ The structure of a block header The genesis block
✔ Mining
✔ Tasks of the miners Mining rewards Proof of Work (PoW) The mining algorithm
✔ The hash rate Mining systems
✔ CPU GPU FPGA ASICs
✔ Mining pools
✔ Summary
• Bitcoin Network and Payments
✔ The Bitcoin network Wallets
✔ Non-deterministic wallets Deterministic wallets Hierarchical Deterministic wallets Brain wallets
✔ Paper wallets Hardware wallets Online wallets Mobile wallets
✔ Bitcoin payments Innovation in Bitcoin
✔ Bitcoin Improvement Proposals (BIPs) Advanced protocols
✔ Segregated Witness (SegWit) Bitcoin Cash
✔ Bitcoin Unlimited Bitcoin Gold
✔ Bitcoin investment and buying and selling bitcoins
✔ Summary
• Bitcoin Clients and APIs
✔ Bitcoin installation
✔ Types of Bitcoin Core clients Bitcoind
✔ Bitcoin-cli Bitcoin-qt
✔ Setting up a Bitcoin node
✔ Setting up the source code Setting up bitcoin.conf Starting up a node in testnet Starting up a node in regtest Experimenting with Bitcoin-cli
✔ Bitcoin programming and the command-line interface
✔ Summary
• Alternative Coins
✔ Theoretical foundations Alternatives to Proof of Work
✔ Proof of Storage
✔ Proof of Stake (PoS) Various stake types
✔ Proof of coinage Proof of Deposit (PoD) Proof of Burn
✔ Proof of Activity (PoA)
✔ Nonoutsourceable puzzles
✔ Difficulty adjustment and retargeting algorithms Kimoto Gravity Well
✔ Dark Gravity Wave DigiShield
✔ MIDAS
✔ Bitcoin limitations
✔ Privacy and anonymity Mixing protocols
✔ Third-party mixing protocols
✔ Inherent anonymity
✔ Extended protocols on top of Bitcoin Colored coins
✔ Counterparty Development of altcoins
✔ Consensus algorithms Hashing algorithms
✔ Difficulty adjustment algorithms Inter-block time
✔ Block rewards Reward halving rate
✔ Block size and transaction size Interest rate
✔ Coinage
✔ Total supply of coins
✔ Namecoin
✔ Trading Namecoins Obtaining Namecoins Generating Namecoin records
✔ Litecoin Primecoin
✔ Trading Primecoin
✔ Mining guide
✔ Zcash
✔ Trading Zcash Mining guide
✔ Address generation GPU mining
✔ Downloading and compiling nheqminer Initial Coin Offerings (ICOs)
✔ ERC20 tokens
✔ Summary
• Smart Contracts
✔ History Definition
✔ Ricardian contracts
✔ Smart contract templates Oracles
✔ Smart Oracles
✔ Deploying smart contracts on a blockchain
✔ The DAO
✔ Summary
• Ethereum 101
✔ Introduction
✔ The yellow paper
✔ Useful mathematical symbols Ethereum blockchain
✔ Ethereum – bird’s eye view The Ethereum network
✔ Mainnet
✔ Testnet Private net
✔ Components of the Ethereum ecosystem
✔ Keys and addresses Accounts
✔ Types of accounts Transactions and messages
✔ Contract creation transaction Message call transaction Messages
✔ Calls
✔ Transaction validation and execution The transaction substate
✔ State storage in the Ethereum blockchain The world state
✔ The account state Transaction receipts
✔ Ether cryptocurrency / tokens (ETC and ETH) The Ethereum Virtual Machine (EVM)
✔ Execution environment Machine state
✔ The iterator function Smart contracts
✔ Native contracts
✔ Summary
• Further Ethereum
✔ Programming languages Runtime bytecode
✔ Opcodes and their meaning Arithmetic operations Logical operations Cryptographic operations Environmental information Block information
✔ Stack, memory, storage, and flow operations Push operations
✔ Duplication operations Exchange operations Logging operations
✔ System operations Blocks and blockchain
✔ The genesis block
✔ The block validation mechanism Block finalization
✔ Block difficulty
✔ Gas Fee schedule
✔ Forks in the blockchain Nodes and miners
✔ The consensus mechanism
✔ Ethash
✔ CPU mining GPU mining Benchmarking Mining rigs
✔ Mining pools
✔ Wallets and client software Geth
✔ Eth Pyethapp Parity
✔ Light clients Installation Eth installation Mist browser Geth
✔ The geth console
✔ Funding the account with bitcoin Parity installation
✔ Creating accounts using the parity command line APIs, tools, and DApps
✔ Applications (DApps and DAOs) developed on Ethereum
✔ Tools Supporting protocols
✔ Whisper Swarm
✔ Scalability, security, and other challenges Trading and investment
✔ Summary
• Ethereum Development Environment Test networks
✔ Setting up a private net Network ID
✔ The genesis file Data directory
✔ Flags and their meaning
✔ Static nodes Starting up the private network
✔ Running Mist on private net Deploying contracts using Mist
✔ Block explorer for private net / local Ethereum block explorer
✔ Summary
• Development Tools and Frameworks
✔ Languages
✔ Compilers
✔ Solidity compiler (solc) Installation on Linux
✔ Installation on macOS
✔ Integrated Development Environments (IDEs)
✔ Remix
✔ Tools and libraries
✔ Node version 7 EthereumJS
✔ Ganache
✔ MetaMask Truffle
✔ Installation
✔ Contract development and deployment Writing
✔ Testing
✔ Solidity language Types
✔ Value types
✔ Boolean Integers
✔ Address Literals
✔ Integer literals String literals Hexadecimal literals
✔ Enums Function types
✔ Internal functions
✔ External functions Reference types
✔ Arrays Structs
✔ Summary
• Introducing Web3
✔ Web3
✔ Data location Mappings
✔ Global variables Control structures
✔ Events  Inheritance Libraries
✔ Functions
✔ Layout of a Solidity source code file Version pragma
✔ Import Comments
✔ Contract deployment
✔ POST requests
✔ The HTML and JavaScript frontend Installing web3.js
✔ Example
✔ Creating a web3 object
✔ Checking availability by calling any web3 method Contract functions
✔ Development frameworks Truffle
✔ Initializing Truffle Interaction with the contract Another example
✔ An example project – Proof of Idea
✔ Oracles
✔ Deployment on decentralized storage using IPFS Installing IPFS
✔ Distributed ledgers
✔ Summary
• Hyperledger
✔ Projects under Hyperledger Fabric
✔ Sawtooth Lake Iroha
✔ Burrow Indy Explorer Cello Composer Quilt
✔ Hyperledger as a protocol The reference architecture
✔ Requirements and design goals of Hyperledger Fabric
✔ The modular approach Privacy and confidentiality Scalability
✔ Deterministic transactions Identity
✔ Auditability Interoperability Portability
✔ Rich data queries
✔ Fabric
✔ Hyperledger Fabric
✔ Membership services Blockchain services
✔ Consensus services Distributed ledger
✔ The peer to peer protocol Ledger storage
✔ Chaincode services Components of the fabric
✔ Peers Orderer nodes Clients Channels
✔ World state database Transactions
✔ Membership Service Provider (MSP) Smart contracts
✔ Crypto service provider Applications on blockchain Chaincode implementation The application model
✔ Consensus in Hyperledger Fabric
✔ The transaction life cycle in Hyperledger Fabric Sawtooth Lake
✔ PoET
✔ Transaction families Consensus in Sawtooth
✔ The development environment – Sawtooth Lake
✔ Corda
✔ Summary
✔ Architecture
✔ State objects Transactions Consensus
✔ Flows Components
✔ Nodes
✔ The permissioning service Network map service Notary service
✔ Oracle service Transactions Vaults CorDapp
✔ The development environment – Corda
• Alternative Blockchains
✔ Blockchains
✔ Kadena Ripple
✔ Transactions
✔ Payments related Order related
✔ Account and security-related Interledger
✔ Application layer Transport layer Interledger layer Ledger layer
✔ Stellar Rootstock
✔ Sidechain
✔ Drivechain
✔ Quorum
✔ Tezos Storj
✔ Transaction manager Crypto Enclave QuorumChain Network manager
✔ MaidSafe BigchainDB
✔ MultiChain Tendermint
✔ Tendermint Core
✔ Tendermint Socket Protocol (TMSP) Platforms and frameworks
✔ Eris
✔ Summary
• Blockchain – Outside of Currencies Internet of Things
✔ Physical object layer Device layer
✔ Network layer
✔ Management layer Application layer
✔ IoT blockchain experiment
✔ First node setup Raspberry Pi node setup
✔ Installing Node.js
✔ Circuit Government
✔ Border control Voting
✔ Citizen identification (ID cards) Miscellaneous
✔ Health Finance
✔ Insurance
✔ Post-trade settlement Financial crime prevention
✔ Media
✔ Summary
• Scalability and Other Challenges
✔ Scalability
✔ Network plane Consensus plane Storage plane View plane
✔ Block size increase Block interval reduction
✔ Invertible Bloom Lookup Tables Sharding
✔ State channels Private blockchain
✔ Proof of Stake Sidechains
✔ Subchains
✔ Tree chains (trees) Block propagation Bitcoin-NG
✔ Plasma
✔ Privacy
✔ Indistinguishability Obfuscation Homomorphic encryption
✔ Zero-Knowledge Proofs State channels
✔ Secure multiparty computation
✔ Usage of hardware to provide confidentiality CoinJoin
✔ Confidential transactions
✔ MimbleWimble Security
✔ Smart contract security
✔ Formal verification and analysis Oyente tool
✔ Summary
• Current Landscape and What's Next Emerging trends
✔ Application-specific blockchains (ASBCs) Enterprise-grade blockchains
✔ Private blockchains Start-ups
✔ Strong research interest Standardization Enhancements
✔ Real-world implementations Consortia
✔ Answers to technical challenges Convergence
✔ Education of blockchain technology Employment
✔ Cryptoeconomics Research in cryptography
✔ New programming languages Hardware research and development
✔ Research in formal methods and security Alternatives to blockchains Interoperability efforts
✔ Blockchain as a Service
✔ Efforts to reduce electricity consumption Other challenges
✔ Regulation
✔ Dark side Blockchain research
✔ Smart contracts Centralization issues
✔ Limitations in cryptographic functions Consensus algorithms
✔ Scalability
✔ Code obfuscation Notable projects
✔ Zcash on Ethereum CollCo
✔ Cello Qtum Bitcoin-NG Solidus Hawk
✔ Town-Crier SETLCoin TEEChan Falcon Bletchley
✔ Casper Miscellaneous tools
✔ Solidity extension for Microsoft Visual Studio MetaMask
✔ Stratis Embark DAPPLE
✔ Meteor uPort INFURA
✔ Convergence with other industries Future
✔ Summary
✔ Another Book You May Enjoy
✔ Leave a review – let other readers know what you think