
Explore how blockchains work under the hood and how cryptocurrencies rely on blockchain technology, implementing a simple Java blockchain, understanding SHA-256, decentralized ledgers, mining, and consensus protocols.
Explore the motivation for blockchains by contrasting centralized systems with decentralized, trustless networks, and see how blockchain eliminates trusted third parties like governments and banks to guarantee trust.
Explore how blockchains store data as a linked list of blocks secured by cryptographic hashes, including genesis blocks, previous hash links, and sha-256 identifiers.
Learn how blocks use hash pointers to form a blockchain and how sha256 produces a 64-character hexadecimal hash from block inputs, ensuring determinism, one-wayness, and the avalanche effect.
Implement the sha 256 hash in java using built-in libraries, convert input to utf-8 bytes, and produce a 64-character hexadecimal string while illustrating determinism and double hashing in Bitcoin.
Compare centralized ledgers with decentralized blockchain networks where every node holds a copy. See how immutability, hash pointers, and sha256 maintain integrity, while mining and 51 percent attack shape security.
Miners verify transactions and append blocks to the blockchain, securing a decentralized ledger through computationally heavy hashing and mining difficulty with leading zeros.
Miners verify transactions by hashing block data to produce a valid hash with a nonce and leading zeros, demonstrating proof of work.
Learn how blockchain nodes synchronize data and reach consensus on an immutable ledger in a decentralized network. See how miners verify blocks and the Byzantine generals problem.
Analyze the Byzantine generals problem and how consensus is achieved in a distributed blockchain network despite traitors and message loss, through majority vote strategies.
Explore how proof-of-work makes mining expensive to deter traitors while enabling fast verification. See how PoW prevents spam, uses leading-zero hashes and nonce, and incurs energy costs.
Compare proof of stake with proof of work, showing how validators forge blocks, perform transaction validation, improve energy efficiency, earn rewards, and rely on stake and penalties to protect integrity.
Compare centralized, decentralized, and distributed networks to explain the central node, multiple important nodes, and distributed decision making, noting blockchain is distributed and decentralized.
Implement a simple blockchain from scratch in Java using Eclipse, building constants, block, miner, and blockchain classes, and test genesis block, previous hash, and sha256 hashes with difficulty.
Learn how to generate a sha-256 hash for a string in java, convert the digest to a 64-character hexadecimal string using utf-8, and apply padding to ensure fixed length.
Define a Java block with id, nonce, timestamp, hash, previous hash and a simple transaction, then generate a sha256 hash. Show how miners adjust nonce to find a valid hash.
Implement a blockchain class in Java using a doubly linked list, enforcing an immutable ledger with addBlock, getBlockchain, getSize, and an efficient toString via StringBuilder.
Explore how mining validates decentralized transactions through proof of work by hashing blocks with difficulty-based leading zeros, rewarding miners and appending blocks to the blockchain.
Instantiate a blockchain with a single miner and build the genesis block. Mine subsequent blocks by satisfying a difficulty with leading zeros, linking to the previous hash.
Discover how blockchain enables decentralized, trustless cryptocurrencies by removing centralized third parties; learn how bitcoin protocol and blockchain structure power peer-to-peer transactions.
Explore bitcoin's policy mechanics, including halving every 210,000 blocks and a 10-minute block cadence, and see how mining rewards, difficulty adjustments, and hashing challenges shape the blockchain.
Explore how miners pull pre-verify transactions from the mempool, optimize block content up to 1 megabyte by selecting the highest-fee transactions, and secure rewards via mining and fees.
Explore how mempools operate in a decentralized peer-to-peer blockchain network, how transactions propagate to neighboring nodes, how miners include them in blocks, and how fees drive block creation.
Represent a block’s transactions with a single sha256 hash called the merkle root, enabling efficient verification and showing that any change alters the root and header links.
Implement merkle tree in Java by hashing transactions with SHA-256 to produce a merkle root that verifies all transactions in a block.
Explore how private keys and public keys, via the elliptic curve digital signature algorithm, secure cryptocurrency by proving ownership and validating transactions involving a wallet on the blockchain.
Learn how unspent transaction outputs (UTXOs) power balance calculations in a blockchain, where transaction inputs come from prior outputs and outputs become new UTXOs.
Calculate a user’s balance by summing unspent transaction outputs in their wallet. Identify users with public keys and addresses, and note that bitcoins are not stored but on the blockchain.
This lecture explains competing chains problem and how a 51% attack lets a party double spend by privately mining a longer chain, then broadcasting it to override the public ledger.
See how the network resolves competing blocks by adopting the longest blockchain with the most proof of work, and how orphan blocks verify transactions and return them to mempool.
Explain how miners earn income from transaction fees and block rewards, and how all cryptocurrency holders jointly pay for mining as the money supply expands and purchasing power declines.
A fork splits a blockchain into independent chains when rules diverge, with soft forks backward compatible and hard forks not; Bitcoin and Bitcoin Cash illustrate block size, fees, and speeds.
Create a Java cryptocurrency project with packages, classes, and constants, outline a blockchain with genesis and sha-256 hashing, and present the mining reward and elliptic curve cryptography concepts.
Learn to implement cryptocurrency security in Java by generating sha-256 hashes, signing transactions with a private key, and verifying with a public key using elliptic curve cryptography and Bouncy Castle.
Describe how miners perform proof of work by iterating nonces until the block hash has required leading zeros, earning a 6.25 bitcoins reward, and contrast with proof of stake.
Explore how cryptocurrency transactions use inputs and outputs with unspent transaction outputs (UTXOs), sender and receiver public keys, and SHA-256 IDs and private key signatures to secure transfers.
Explain transaction inputs and outputs and compute the transaction ID with SHA-256; demonstrate updating unspent transaction outputs and signatures with elliptic curve cryptography and public key verification.
Learn how balances derive from unspent transaction outputs, and how private keys, public keys, and elliptic curve cryptography sign and verify transactions for a blockchain wallet.
Build blockchain blocks with id, nonce, timestamp, previous hash, and attach transactions; mine by incrementing the nonce until SHA-256 hash meets difficulty, forming a public ledger with unspent transaction outputs.
Audit the bouncy castle provider and set up wallets for User A, User B, and the lender. Mine the genesis block, process transfers, and verify balances, signatures, and miner rewards.
Trace the evolution of cryptocurrencies from Bitcoin, the decentralized digital currency, to newer systems like Ethereum. Examine Bitcoin’s scalability, lack of customer support, and energy-heavy proof-of-work, and compare with proof-of-stake.
Explore altcoins beyond Bitcoin, such as Litecoin and Dash, and compare mining algorithms and hardware. Understand initial coin offerings, their white papers, and the associated risks for investors.
Explore Ethereum as the second generation blockchain infrastructure, enabling developers to deploy decentralized applications using Solidity and smart contracts, with Ether compensating network nodes.
Compare Ethereum and Ethereum Classic through the DAO hack, highlighting how code was debated as law versus immutability and led to a hard fork.
Explore layer one scaling with sharding to boost Ethereum throughput and reduce costs. Understand the scalability trilemma and how independent shards connected to a beacon chain enable parallel validation.
Learn how layer-two rollups accelerate blockchain throughput by batching off-chain transactions into a single on-chain proof using zero-knowledge proofs, with zk rollups delivering fast, cheaper validation.
Explore Polygon, a layer two scaling platform on Ethereum that uses optimistic and zk rollups, sidechains, and bridges to run dapps and Solidity contracts with dramatically lower fees.
Cardano presents a third-generation platform solving scalability, interoperability, and sustainability with a modified proof-of-stake called aura and the ADA token for cross-chain interoperability.
Litecoin, a 2011 hard fork of Bitcoin created by Charlie Lee, offers faster, cheaper transactions using the script hash function with 2.5 minute blocks, decentralization considerations and the 51% attack.
Explore how Dash, a hard fork of Bitcoin, enables instant and untraceable transactions through masternodes and a treasury model.
Understand the difference between coins and tokens: coins run on their own blockchain to verify transactions and execute decentralized apps, while tokens rely on another blockchain like Ethereum.
Explore why elliptic curve cryptography outperforms RSA by requiring smaller keys, addressing factorization risks, quantum threats, and its role in bitcoin and blockchain applications.
Explore elliptic curves in cryptography with the non-singular equation y^2 = x^3 + 8x + B, tunable A and B, symmetry about the x-axis, and three distinct routes.
Explore how to add and double points on elliptic curves, using lines, tangents, reflections, and derived coordinates for encryption and decryption.
Learn how the naive point addition to compute nP grows exponentially with bit length, and how the double-and-add algorithm uses binary bits for linear-time elliptic curve operations.
Explore the elliptic curve discrete logarithm problem, comparing fast x times p calculations with the exponential hardness of solving for x from p and r, underpinning elliptic curve cryptography.
Alice and Bob use elliptic curves for key exchange, deriving a private key from a and b with public keys aG and bG, secured by elliptic curve discrete logarithm problem.
Explore elliptic curves and the elliptic curve digital signature algorithm to sign and verify messages, using private and public keys, SHA-256 hashing, and the double-and-add method.
Compare RSA and elliptic curve cryptography, noting RSA relies on large primes and prime factorization, while elliptic curve cryptography achieves similar security with smaller keys and faster operations.
Implement elliptic curve cryptography in Java by creating a point class and performing point addition and doubling on the curve y^2 = x^3 + a x + b (a=0, b=7).
Explore how elliptic curve cryptography employs the double-and-add method to speed up scalar multiplication. Convert integers to binary and use bit-driven point doubling and addition.
Explore elliptic curve cryptography and diffie-hellman key exchange on a chosen lap curve using random values, generator points, and the double-and-add method to derive a shared secret.
Blockchain is a revolutionary technology that allows for decentralized and distributed storage of information. Maybe the hottest topic at the moment in the field of software engineering - besides artificial intelligence and machine learning - is blockchain technology. Many experts in the industry predict that the blockchain will disrupt the ways we interact with technology.
In this course you will learn about the basics of blockchain technology as well as about cryptocurrencies. You can learn about the concrete implementation of these technologies in Java - although you can skip the implementation parts if you wish.
Chapter 1 - Blockchain Theory
the fundamental basics of blockchain technology
SHA-256 hashing technique
centralized and decentralized ledgers
the concept of mining (and miners)
consensus algorithms
proof of work (PoW) and proof of stake (PoS)
the byzantine generals problem
Chapter 2 - Blockchain Implementation
implementing a simple blockchain from scratch in Java
Chapter 3 - Cryptocurrency Theory
motivation behind cryptocurrencies
Merkle trees and transaction verification algorithms
mining in cryptocurrencies
mempools
unspent transaction outputs (UTXOs)
elliptic curve cryptography in cryptocurrencies
what is a wallet?
orpahned blocks and the block verification problem
the 51% attack
soft fork and hard fork
Chapter 4 - Cryptocurrency Implementation
implementing a simple cryptocurrency from scratch in Java
Chapter 5 - Altcoins & Cryptocurrency Evolution
Ethereum, Solidity and the Ether cryptocurrency
what are ICOs?
cardano and ADA
altcoins
LiteCoin (LTC)
Dash
layer 1 and layer-2 scaling solutions
sharding and rollups (zk-rollups and zk-snarks)
coins and tokens
You should take this course, if you are interested in blockchains and cryptocurrency technology. Thanks for joining my course, let's get started!