Understanding BlockDAGs and GHOSTDAG
My WebsiteSupport My Work
  • Welcome!
  • Preface
  • Introduction
  • Part 1: BlockChains and BlockDAGs
    • Introduction
    • Chapter 1: From BFT to PoW
      • Byzantine Fault Tolerance
      • Proof-of-Work (PoW)
      • How PoW Works*
      • PoS Vs. PoW
      • Exercises
    • Chapter 2: the Block Chain Paradigm
      • A Graph Theory Primer
      • The Paradigm
      • Honesty and Rationality
      • Three Chain Selection Rules
      • Security Notions
      • A Security Model for Blockchain Consensus
      • Selfish Mining in Bitcoin
      • Safety
      • Liveness
      • Confirmation Times
      • Proving Bitcoin's Security*
      • Exercises
  • Part 2: The GHOSTDAG Protocol
    • Page 2
  • Supplementary Material
    • Math
      • Stuff You Should Know
        • Asymptotics, Growth, and Decay
        • Binomial Coefficients
        • The Binomial Formula
        • Geometric Sums and Series
      • Probability Theory
        • Probability Spaces
        • Random Variables
        • The Math of Block Creation
    • Computer Science
      • Stuff you Should Know
        • Asymptotic Notation
        • Negligible Functions
      • Cryptography
        • Random Oracles
        • Merkle Trees
        • One Time Pads
Powered by GitBook
On this page
  1. Part 1: BlockChains and BlockDAGs
  2. Chapter 1: From BFT to PoW

Exercises

PreviousPoS Vs. PoWNextChapter 2: the Block Chain Paradigm

Last updated 3 months ago

  1. Devise a BFT algorithm that is secure against one faulty node out of seven, but can be disrupted by two faulty nodes

  2. Why did I choose the number seven in the previous question?

  3. Fill in the details in the correctness proof of PSL's algoritm for the case n=4n=4n=4.

  4. *Prove the general case by induction, using the previous problem as the base of induction

  5. A sybil resistance method is called linear if the amount of voting power you get is proportional to the amount of resources you provide (in the regime where it is considered secure). For example, Bitcoin is linear, because if you have a fraction α\alphaα of the global network, then you can create a fraction of at most 3α/23\alpha/23α/2 of the blocks. A system is better than linear if buying a larger fraction of the blocks has diminishing returns. For example, one could argue that a voter registry is better than linear because voting twice is considerably more than twice harder than voting once. Can a permissionless Sybil resistance be better than linear?

  6. Let H\mathsf{H}H be a collision resistant hash function. That is, a hash function for each it is hard to find two distinct inputs s≠s′s\ne s's=s′ such that H(s)=H(s′)\mathsf{H}(s) = \mathsf{H}(s')H(s)=H(s′). A hash is double-length random preimage resistant if given H(s)\mathsf{H}(s)H(s) for some sss that was uniformly sampled from all strings who are twice as long as the output length of H\mathsf{H}H.

    1. Show that if H\mathsf{H}H is collision resistant then it is also double-length random preimage resistant (hint: first convince yourself that collisions must exist, and infact, there should be many of them)

    2. Show that collision resistance is stronger than double-length random preimage resistance in the following way: let H\mathsf{H}H be collision resistant hash function, then according to the previous clause it is also double-length random preimage resistant. Show that H\mathsf{H}H can be slightly modified to another function H′\mathsf{H'}H′ that is no longer collision resistant but is still double-length random preimage resistant

    3. *The SHA-256 hash function is not really a random oracle. It can be distinguished from a random oracle because it is susceptible to a "length extension attack". Read about this (for example in Boneh and Shoup’s open access , section 8.7), understand the attack, and explain why it is not a concern for Bitcoin's Sybil resistance.

  7. When discussing timestamp manipulations in Bitcoin's difficulty adjustment, we said that the adjustment cannot be based on just two blocks, because then it only takes compromising these two blocks to allow arbitrary manipulations difficulty adjustment. On the other hand, the final solution we suggested (which we can further simplify without hardly damage the result by using the first and last block instead if the minimal and maximal timestamps) does seem to only depend on two blocks, completely disregarding the timestamps of all other blocks. Are how these observations not contradictory?

  8. What would be the consequences of trying to impose deterministic finality on a PoW blockchain by prohibiting reorgs of some shallow depth (say, an hour)?

  9. Can you solve the rich-get-richer problem by implementing diminishing returns (that is, by making the reward decrease as the amount of coined staked by the same person increases)?

Graduate Course in Applied Cryptography