Skip to content

Instantly share code, notes, and snippets.

@Haseeb-Qureshi
Created October 10, 2018 19:06
Show Gist options
  • Save Haseeb-Qureshi/d3b49afeec82eb77e6716ff6eb878b95 to your computer and use it in GitHub Desktop.
Save Haseeb-Qureshi/d3b49afeec82eb77e6716ff6eb878b95 to your computer and use it in GitHub Desktop.
Algorand 2.0 at CESC

Algorand 2.0

Silvio Micali

Blockchains have an open secret

  • There's a lot of aspiration, but the technology is far behind.

The alleged "blockchain trilemma"

  • Supposedly, you can only get 2 out of 3: security, scalability, and decentralization.
  • Not acceptable, and not true.

Blockchains are great, but how do we implement them?

  • Every blockchain has two parts:
    • Build a chain (we know how to do this, many good data structures)
    • Choose the next block

Popular and questionable approaches

  • PoW
    • Very expensive, unscalable
    • Very centralized (BTC mining controlled by 3 mining, 2 of which owned by Bitmain)
  • Delegated PoS
    • "Look at these 21 people in charge of making our blockchain"
    • Not very decentralized.
  • Bonded PoS
    • The amount of money you bond determines how much control you have.
    • If you behave badly, you are punished.
    • Does this work?
      • Well, most people can't participate in this system. Most people have no disposable income to stake on blockchain behavior.
      • Plus if blockchains support the economic system of the world, there's too much value at stake relative to the amount of bonding.

Algorand's approach to PoS

  • No punishments needed—cheating is not possible.
  • Money is always at your fingertips: nobody needs to bond anything.
  • If most of the money is in honest hands, then the system works.
  • More specifically:
    • Each token has the same decision power

Algorand chain

  • Uses Byzantine Agreement to achieve consensus
    • Old Byzantine Agreement protocols could seldom handle more than ~15 parties
    • Otherwise very slow, and have a fixed numbers of players
  • Algorand works in 2 phases

Phase 1 - Proposal phase

  • A random user is selected among all global users (randomly sampled according to coin distribution)
    • The user proposes, signs, and publishes a block

Phase 2 - Agreement

  • 1000 users randomly sampled among all users, their keys are known to all users, and they validate / reach agreement on / sign the block proposed by the first user
  • If 10% of users are bad actor, probability that majority of 1000-person committee is Byzantine is negligibly small
  • This subset of users can run Byzantine Agreement to achieve consensus
  • Committee "selects itself" using verifiable random function (VRF)
    • Think of it like a lottery you run in your own machine—if you win, you propagate that winning ticket to the rest of the network (and can be universally acknowledged)
    • This is fast because this VRF can be evaluated within a microsecond
  • Committee is not manipulable, even by a powerful adversary

Algorand 2.0

  • Agreement on the fly while the block propagates, as opposed to separating into two phases
  • And single round of voting finalizes the block
  • This makes it super fast
  • However, it's also resilient to network partitions
    • If powerful adversary tries to hold back messages and secretly finalize a block, that block will also be publicly finalized

Algorand Roadmap

  • Smart contracts
  • Secure incentives
  • Dutch auctions
  • Algorithmic stabilization
  • Minimized memory
  • Random-access chain
  • Private chains
  • Treasury bonds
  • Secure self-governance
  • Named assets
  • Privacy & correctness
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment