This is a commit-by-commit breakdown of "Build a Blockchain & Cryptocurrency | Full-Stack Edition". This will help anyone stuck on a particular lecture. Compare your code to the relevant commit here.
- Section 2: Blocks | The Blockchain Backend
- Section 3: The Chain | the Blockchain Backend
- Section 4: Proof of Work | the Blockchain Backend
- Section 5: API and Network | the Blockchain Backend
- Section 6: Wallets, Keys, and Transactions | the Blockchain Backend
- Section 7: Transaction Pool | The Blockchain and Cryptocurrency Backend
- Section 8: Mine Transactions | The Blockchain and Cryptocurrency Backend
- Section 10: The Frontend Blockchain
- Section 11: The Frontend Cryptocurrency
- Section 12: Deploying to Production and Full-Stack Improvements
- Set Up the Blockchain Application
- Create the Block Class
- Create the Block Class | TDD Style
- The Genesis Block | Tests
- The Genesis Block | Code
- Mine Blocks
- Crypto Hash and SHA-256
- Hash in MineBlock
- The Blockchain Class
- Chain Validation | Tests
- Chain Validation | Code
- Chain Replacement
- Stub Console Output in Tests
- Difficulty and the Nonce Value | Tests
- Difficulty and the Nonce Value | Code
- Dynamic Difficulty and the Mine Rate
- Adjust the Difficulty in MineBlock
- Improve the Proof of Work System | Average Work Script
- Improve the Proof of Work System | Binary hashes
- Prevent Difficulty Jumps
- Setup Express API
- Post Request to Mine a Block
- Redis Publisher/Subscriber Class
- PubNub: a Non-Redis Pub/Sub Alternative
- Broadcast Chain
- Start Peers and Broadcast Chain on API Mine
- Sync Chain on Connect
- Avoid Redundant Interactions
- Code Organization
- Create and Test Wallet Class
- Key Pair and Public Key Addresses
- Sign Data and Verifying Signatures
- Transaction Objects and the Output Map | Tests
- Transaction Objects and the OutputMap | Code
- Transaction Inputs
- Cohesive Utility
- Validate Transaction
- Wallet Create Transaction
- Update Transactions with Multiple Outputs
- Improve the CryptoHash
- Transaction Update Edge Cases
- Create the Transaction Pool and Set Transactions
- API Transactions and Main Transaction Pool
- Handle Invalid Transactions
- Transaction Updates in the API
- Broadcast Transaction
- Sync Transaction Pool Map on Connect
- Transaction Miner Class
- Grab Valid Transactions
- Reward Transaction
- Clear Blockchain Transactions
- Mine Transactions Endpoint
- Clear Recorded Transactions on Successful Replace
- Calculate the Wallet Balance
- Calculate the Balance before each Transaction
- Wallet Balance from Recent Transaction
- Wallet-Info Request
- Valid Transaction Data | Tests
- Valid Transaction Data | Code
- Validate Input Balances
- Prevent Duplicate Transactions in Block
- Validate Transaction Chain
- Serve a Frontend Page
- Add JavaScript to the Frontend
- Build React into the Frontend
- Frontend Development Workflow
- App component
- Fetch and Display Wallet-Info
- Visualize the Blocks
- Seed the Backend with Data
- Stylize the Application
- Make a Block Component with Props