back

by m-i-l·7y ago·view on hn ↗
I propose a simple "smell test" for "new internet" projects. A project would need at least one of the following two (not necessarily both given the maturity lifecycle):

1. Would the core platform developers work on it for "free"? As in, develop it because they really genuinely believe in it, not because they're trying to get rich quick through some high-tech blockchain-based multi-level marketing scheme, and not because they've convinced themselves they believe in it in a cult-like way by listening to "lies told a thousand times".

2. Would any real non-technical users want to use it without any strings attached? As in, use it because it delivers some genuine benefit to them, without them having to pay for it in some insidious way, and not because they're being paid to use it.

2 comments
That's a good test.

I worked on this for free until we could raise venture capital to support the open-source development. Without venture capital, I'd probably be working on it in academia but I think that'd be less impactful given limited resources. Developers have been building apps on Blockstack since 2017, the App Mining program was introduced in late-2018. There is a genuine community of developers who'd work on this for free because they believe in the mission.

Users don't have any strings attached. There is a free username registration service for them (the default method) and the apps on https://app.co/blockstack provide real utlity while hiding blockchain-complexity. I don't think most users even realize that there is any blockchain involved.

Finally, no user is being paid to use any app. The App Mining program for developers is the only component in the ecosystem where any incentives/payments are involved. Apple had developer incentive programs for iOS for example. When launching a new platform you have the chicken & egg problem of users and apps. We're trying to get enough high-quality apps so users can get real utility. The App Mining program stops after the initial years.

Core platform developer here (for 4+ years). Would absolutely work on this project in my spare time if I wasn't already employed at Blockstack PBC. You can also check our various projects' contributor graphs on Github (all under https://github.com/blockstack) if you want to gauge developer interest.

EDIT: providing more context below:

The reason Blockstack appeals to me is because I think it is one of the few projects with a reasonable, sustainable architecture for ensuring that users own all their data. In particular, Blockstack apps with the same performance characteristics as traditional Web applications _while also_ ensuring that users (1) don't have to run their own servers if they don't want to, and (2) don't have to keep their personal devices online 24/7. The storage layer, Gaia, achieves this by leveraging any/all existing storage media for hosting and serving the data, including commodity cloud storage and CDNs.

Because users provide the primary replicas of their data, they retain control and ownership of it even if the application goes away, or if they switch applications. Indexes and aggregations of user data -- such as the notions of a Twitter feed or a comment thread -- are treated as downstream, soft-state replicas derived from user data, and can be independently reconstructed by anyone. Blockstack apps nevertheless can easily create such indexes and aggregations with Radiks -- https://github.com/blockstack-radiks.

The blockchain component is buried deep in the stack, and is used today for user discovery: user A can discover user B's public key and URLs to their data. By running a Blockstack node, you learn every user's public keys and URLs. This enables Blockstack apps to encrypt data end-to-end so only its intended recipients can see it (Gaia and its underlying storage media only see ciphertext). Users don't directly interact with the blockchain; this is all handled through the user's Blockstack authenticator (https://github.com/blockstack/blockstack-browser) and through blockstack.js.

The system can handle a large number of users today. Most user registration is handled through a batching mechanism, whereby ~160 name/pubkey/URL triples are announced and replicated to the Blockstack peer network per blockchain transaction. At 8 transactions/block, this yields over 180,000 registrations/day.

The reason to introduce a token is to implement smart contracts, which in turn are meant to allow applications to implement small programs to manage a small amount of global state without needing a dedicated, trusted server. Not all applications will need smart contracts -- in fact, all Blockstack apps today that I know of (see https://app.co/blockstack) get along just fine without them. However, there are a few cases where having a small amount of global state is useful -- for example, if you were to build Reddit on Blockstack, you might have a smart contract that lists a directory of all subreddits and the list of admins who curate them.

A lot of thought, time, and energy has gone into the design and implementation of Blockstack's software stack prior to this sale, and the system has been running successfully in production for 3+ years.