Skip to content

Instantly share code, notes, and snippets.

@serhack
Last active June 13, 2019 18:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save serhack/a55cec9b71e05e727816727a7fab9483 to your computer and use it in GitHub Desktop.
Save serhack/a55cec9b71e05e727816727a7fab9483 to your computer and use it in GitHub Desktop.
Table of Contents of Mastering Monero (First edition);

ToC of first edition of Mastering Monero

  • Preface
    • About the author
    • How this resource is organized
  • 1 - Introduction to cryptocurrencies & Monero
    • 1.1 Payment through banks
    • 1.2 Introduction to blockchains
      • 1.2.1 What is a blockchain?
      • 1.2.2 Blockchain benefits
      • 1.2.3 Blockchain drawbacks
    • 1.3 Introducing Monero
      • 1.3.1 Principles of Monero
      • 1.3.2 Real-life “use cases” for Monero
      • 1.3.3 Monero: open-source decentralized community and software
      • 1.3.4 History of Monero
      • 1.3.5 Ethical discussion
  • 2 - Getting started: receiving, storing and sending Monero
    • 2.1 What is a wallet?
    • 2.2 Selecting the best wallet(s) for your needs
      • 2.2.1 Software and mobile wallets
      • 2.2.2 Hardware Wallets
      • 2.2.3 Paper wallets
      • 2.2.4 Web Wallets
      • 2.2.5 Cold Wallets
      • 2.2.6 Monero Wallet Links
      • 2.2.7 Connecting to a remote node (optional)
    • 2.3 Using Monero
      • 2.3.1 Receiving Monero
      • 2.3.2 Sending Monero
      • 2.3.3 Proof of Payment
    • 2.4 Operational Security
      • 2.4.1 Never say how much Monero you own
      • 2.4.2 Keeping your seed safe
      • 2.4.3 Transaction precautions
      • 2.4.4 Exchange safety
    • 2.5 “Getting started” for businesses
      • 2.5.1 Monero is ideal for merchants
      • 2.5.2 Friendly tools for accepting Monero
  • 3 - How Monero works
    • 3.1 Transaction and the Ledger
    • 3.2 Privacy Technology Overview
      • 3.2.1 Ring Confidential Transaction
      • 3.2.2 Stealth (one-time) addresses
      • 3.2.3 Ring Signatures
      • 3.2.4 Kovri & Traffic Analysis
    • 3.3 Concluding comments
  • 4 - The Monero network
    • 4.1 The simplified anatomy of a block
    • 4.2 Nodes are the network backbone
      • 4.2.1 Nodes relay network data to peers
      • 4.2.2 Nodes store the blockchain
      • 4.2.3 “Local nodes” versus “remote nodes”
    • 4.3 Miners create new blocks
      • 4.3.1 Miners add new blocks onto the longest chain
      • 4.3.2 A difficult task ensures stability and fairness
      • 4.3.3 Monero “taxis” use a hard puzzle to ensure fairness
      • 4.3.4 Miners are paid for their service
    • 4.4 Proof of Work systems
      • 4.4.1 Benefits
        • 4.4.1.1 Censorship resistance
      • 4.4.2 The “difficulty” adjusts time between blocks
      • 4.4.3 The CryptoNight algorithm
        • 4.4.3.1 Context: The history of Bitcoin mining
        • 4.4.3.2 ASICs enable dangerous centralization
        • 4.4.3.3 Monero actively resists ASICs
      • 4.4.4 Brief note on PoW alternatives
    • 4.5 Cryptographic concepts for proof of work
      • 4.5.1 Hashes (general concept)
      • 4.5.2 Nonces (general concept)
    • 4.6 PoW concept summary
  • 5 - A deep dive into Monero & cryptography
    • 5.1 Math fundamentals
      • 5.1.1 Euclidean Division (A/B)
      • 5.1.2 Prime numbers
      • 5.1.3 Modular arithmetic
      • 5.1.4 Integer representation
      • 5.1.5 Elliptic curves
        • 5.1.5.1 General introduction
        • 5.1.5.2 Ed25519 Twisted Edwards
        • 5.1.5.3 Elliptical operations
    • 5.2 Cryptography basics
      • 5.2.1 Symmetric and asymmetric cryptography
      • 5.2.2 Hashing
    • 5.3 Generating Monero keys and addresses
      • 5.3.1 Picking a seed
      • 5.3.2 Key derivation
        • 5.3.2.1 All keys
        • 5.3.2.2 View-only wallets
      • 5.3.3 Address generation
        • 5.3.3.1 Network byte
        • 5.3.3.2 Concatenated public keys
        • 5.3.3.3 Checksum
        • 5.3.3.4 Bring it all together: address finalization
      • 5.3.4 Subaddresses
        • 5.3.4.1 Creating a subaddress
        • 5.3.4.2 Sending to a subaddress
        • 5.3.4.3 Receiving to a subaddress
      • 5.3.5 Other methods for key derivation
    • 5.4 The privacy technologies
      • 5.4.1 Stealth address
        • 5.4.1.1 Sending
        • 5.4.1.2 Receiving
      • 5.4.2 Ring Confidential Transactions
      • 5.4.3 Ring signatures
      • 5.4.4 Further resources
    • 5.5 The Monero blockchain
      • 5.5.1 Lightning Memory Mapped Database
      • 5.5.2 The structure of a block
        • 5.5.2.1 The block header
        • 5.5.2.2 Base Transaction
        • 5.5.2.3 List of transaction identifiers
        • 5.5.2.4 Calculation of Block Identifier
      • 5.5.3 The mining economy
        • 5.5.3.1 Mining coinbase reward
        • 5.5.3.2 Dynamic block size
        • 5.5.3.3 Fees
      • 5.5.4 Bulletproofs
  • 6 - Community and contributing
    • 6.1 Community culture
      • 6.1.1 Principles of openness
      • 6.1.2 Many great minds work on Monero
    • 6.2 Code culture
      • 6.2.1 Create a pull request for the improvements
      • 6.2.2 Patch etiquette
      • 6.2.3 General guidelines
      • 6.2.4 Repository for Monero
    • 6.3 Introduction to Monero development
      • 6.3.1 Downloading the Monero source code
      • 6.3.2 Dependencies
      • 6.3.3 Building instruction
      • 6.3.4 Build troubleshooting
      • 6.3.5 Building Monero Graphical User Interface
  • 7 - Monero integration for developers
    • 7.1 OpenAlias: convenient addresses in text (for humans)
    • 7.2 Monero_URI: convenient info in text (for computers)
    • 7.3 Monero RPC
      • 7.3.1 Initialization and configuration (setup & secure)
      • 7.3.2 JSON RPC Format
      • 7.3.3 Example RPC calls
        • 7.3.3.1 Get balance
        • 7.3.3.2 Get address
        • 7.3.3.3 Create address
        • 7.3.3.4 Create account
        • 7.3.3.5 Transfer
    • 7.4 Monero integration in practice (Python and C++ tutorials)
      • 7.4.1 Tutorial 1 - Get your balance
      • 7.4.2 Tutorial 2 - How to generate a pseudo-random address
      • 7.4.3 Tutorial 3 - Vanity address generator
      • 7.4.4 Tutorial 4 - How to create a stealth address
    • 7.5 Monero C++ API
      • 7.5.1 Monero libraries
      • 7.5.2 Getting started with C++
      • 7.5.3 Tutorial 5 - Recovering all keys from the private spend key
  • 8 - Wallet guide and troubleshooting tips
    • 8.1 Specific Instructions for Official Monero GUI
      • 8.1.1 Getting started
      • 8.1.2 Receiving Monero with the GUI
      • 8.1.3 Sending Monero with the GUI
      • 8.1.4 Proof of Payment with the GUI
    • 8.2 Specific instruction for Monero Wallet CLI
      • 8.2.1 Setting up a wallet with the CLI
      • 8.2.2 Receiving Monero
      • 8.2.3 Sending Monero
      • 8.2.4 Proof of payment
    • 8.3 Troubleshooting common problems
      • 8.3.1 Problem: I transferred moneroj to my wallet, but my balance is still 0 XMR.
      • 8.3.2 Problem: My GUI feels buggy / freezes all the time
  • Glossary
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment