Frankly Speaking, 5/14/19 -- A Global Naming and Storage System Secured by Blockchains
A weekly(-ish) newsletter on random thoughts in tech and research. I am an investor at Dell Technologies Capital and a recovering academic. I am interested in security, blockchain, and devops.
I spent the week and weekend preparing for my talk at Consensus, so there is only an abbreviated version of Frankly Speaking. There will only be the Weekly Tech Thought, and no Let's Be Frank (formerly known as Weekly Frank Thought, and shoutout to my friend, Justin Solomon, for suggesting the new name. He does cool work in graphics as a professor at MIT, so check it out!).
If you're in NYC, come by and say hi.
WEEKLY TECH THOUGHT
In honor of blockchain week in NYC, I thought I would talk about a cool paper by Muneeb Ali, CEO and co-founder of Blockstack. He published a paper in USENIX ATC 2016 around his startup called Blockstack, a global naming and storage system secured by blockchains.
Problem
In the current internet, we use a DNS server, PKI service, and authentication service to access websites, such as Facebook and Google. However, the problem is blind trust — we trust parties that we don’t even know exist. Another problem is that big companies, not users, own the data. Their goal is to build a trust-to-trust design principle for the Internet, where the user trusts the end-to-end communication between herself and the host.
This brings up more problems. How do we remove central points of trust/failure from application/services? We need a global naming and storage system that is not owned/operated by any single party. Blockstack bootstraps trust using blockchains. Blockchains can serve as a decentralized PKI. All “accounts” already have private/public keypairs. They deploy nodes to serve as lookup servers, and there is a strong financial incentive for keeping the network secure. The question becomes if they can build a DNS.
However, there are some limitations to blockchains. First is storage limitation. There is limited space (< 1KB) per transaction. Increasing transaction/block size adds overhead for all nodes. Finally, blocksize has implications for consistency and decentralization.
Second, it’s hard to introduce new features. It’s generally hard to make consensus breaking changes and harder to change a blockchain that is successful.
Finally, the writes are slow. In distributed systems, it’s impossible to provide all three of the following: consistency, availability, and partition tolerance. This is commonly known as the CAP Theorem. Blockchains give up on consistency. Since the ledger is append-only, there is a endless ledger problem.
Below is a view of Blockstack’s “stack.”
Solution
Blockstack manages to circumvent many of the limitations of blockchain. In case of any security issues on a blockchain (51% attack, etc.), they can easily migrate. For storage limitations, they have unlimited data. To introduce new features (hard fork), they use a virtualchain. For slow writes, they get operations off blockchain’s path, and for the endless ledger problem, they use fast bootstrapping. Finally, they use multiple blockchains, and use subdomains.
They have made a ton of progress since this paper, so if you're interested in their solution/approach for decentralized apps, visit their website!