Posts

Showing posts from May, 2018

tldr: Bitcoin

Image
Part of the tldr series , which summarizes papers I'm currently reading. Inspired by the morning paper . Bitcoin: A Peer-to-Peer Electronic Cash System [2008] Nakamoto  Introduction Nakamoto was motivated by how much electronic payments relied on trusting third-party financial institutions. Thus, they created Bitcoin, an "electronic payment system based on cryptographic proof instead of trust", which eliminates the need for a central bank.  Transactions An electronic coin is a chain of digital signatures . Each owner has a public and private key (also called a wallet ). They can transfer a coin to the next owner by signing the hash(previous transaction + next owner's public key) with their private key, and appending this to the end of the chain of signatures.   Transactions also contain multiple inputs and outputs, so change is easy. (For example, let's say you wanted to pay someone 0.03, but you only have a previous transaction where you received ...

tldr: Dynamo, Amazon's Highly Available Key-Value Store

Image
Part of the tldr series , which summarizes papers I'm currently reading. Inspired by the morning paper . Dynamo [2007] Introduction Dynamo is a eventually consistent, distributed key-value store built by Amazon to be highly reliable and highly scalable. It's been deployed to handle storage for some of Amazon's core services. The diagram below shows Amazon's platform, and where Dynamo fits in.  System Architecture The figure below is a table of the distributed systems techniques that Dynamo uses. Its interface is made up of two operations:  get (key) Locates object replicas corresponding to the key Returns object(s) with conflicting versions, and a context (defined below) put (key, context, object) Figures out where to store the replicas of the object based on the key Writes replicas to disk The context encodes system metadata (e.g. version) about the object, and helps the system validate the object in the put request Partitoning  In...