I want to share a website that I’ve created to track a few Blockstack related growth statistics: https://theblockstats.com
I also did some analysis and predictions about some of these statistics in my article on Hackernoon:
All code is open source (MIT):
Python project that downloads and aggregates data from a Blockstack node and user profiles
The website and the visuals
Hoping this will be useful, now let’s go and watch those numbers growing!
Any comments, issues or questions please let me know.
This is great @valrepsys! Now apps have an incentive to alway request the
publish_data scope so that they can appear in the installation count!
This is so great! Honestly, I selfishly love this because I won’t have to run my indexer every week like I have been. Great job!
Yes, good point, might also create more competition among app developers. Long way to go to reach Graphite and Stealthy though
It’d be cool to see this evolve into something like State of the Dapps but for Blockstack.
@larry would it be possible to create a new scope for this purpose? Some of us developers would really like our apps to be counted, but don’t want to tell our users that they have to let the whole world know their using a specific app.
Ideally this new
stats scope would not ‘out’ specific usernames or hashes that can be looked up on explorer but could still render unique values that can be counted.
How would it work then? This current method of counting apps is done by scanning the
profile.json of all the users. The solution you are asking for seems to be something that would still take up space in the user’s profile but not be traceable… which is impossible.
The only other way that it could work is if the sites themselves publish stats, and therefore have to record the stats in the first place (which would be unfortunate).
Stats are, by and large, centralized – to make them decentralized while keeping privacy is impossible from what I can see.
Otherwise, val, well done! Very cool site =)
I do not know the details … but why not a scope that pings a public profile? It would work similar to publish_data, only all data would be to a specific profile maybe using “encryptContent”. Or maybe it just pings a service, rather than writes data, if that is more efficient…
I’m honestly not sure. I’m hoping smarter people than me could figure out something innovative out.
I think this is an important discussion, sort of expected it to start sooner or later.
Here’s my 2 satoshis.
If we ignore the technical limitations for a second: we probably want users to be able to hide the number of apps and what apps they are using. It’s their data. (Though we should have in mind then, that many users would like to also hide this information from the app developer as well)
However my understanding is that the list of apps is public so that app users can discover each other and connect/share data. I don’t think it’s possible (without a third party) for a user to sort of ‘announce’ that they’re using the app to other users and keep this information hidden at the same time.
From the top of my head here are some options that could improve privacy
Web of trust
Encrypt info about the apps you’re using only the public keys of users you want to share this info with (say your afari or stealthy contacts). But then we need a mechanism for how users outside this network can connect with you.
Bitcoin approach: everyone knows every address’es balance, but it is hard to know who these accounts belong to. This would require the profile information like name, social accounts etc. to be encrypted so that it’s hard to trace back to the owner. Also possibly installing every app on a different subdomain so that info about what combination of apps someone has is not public.
Monero approach. Users have apps that they really use on their profiles, but also all or some of the other apps. Only the user knows which ones they really use. This would be a bit messy.
Might be possible, but sort of defeats the purpose of Blockstack: store a list of app users and urls to their gaia storage on a server belonging to the app developer.
Out of those I prefer pseudoanonimity and in the future, possibly, some sort of web of trust implementation.
I’ve been thinking a lot about this. I brought it up a while ago actually. I think there’s a conflation that happens in the decentralized space, so it’s important to remember: Decentralized ≠ Private. Privacy is an added feature of some projects.
Blockstack already allows for the same level of privacy that you can get with bitcoin (which is to say enough to be anonymous until someone really wants to find you). If you create an ID that does not contain personally identifiable information and if you do not participate in the social verification process, then you have a pretty anonymous log in you can use to hide the apps you use from the public.
Thanks for the writeup!
Pseudoanonimity seems to be pretty good – though cumbersome. This could be implemented in such a way where the user derives a different ID for every app they want to use. The downside is that both cross-app integration as well as finding friends across apps would be impossible. I think the better way of doing it this way would be users doing it themselves when they want to keep their use of certain apps private.
Web of trust could be possible with the introduction of Gaia Inboxes; connect with the user via “invitations,” and then each user would record the other users’ information in their own “contact book”. I feel like this would be amazing, but would again have a significant downside: your “contact book” info could be out of date, and you might need to re-resolve everything with another invitation if they change their gaia hub, for instance.
I do love the Web of Trust method a lot as a second iteration of the
profile.json, but with using this method stats also become impossible to record.
For better or worse, I feel like centralization – and specifically, apps recording their own stats – is the best way to do it. There’s nothing stopping them from being able to create them and even sell*(!) that information in the first place besides morals.
*not that I condone nor encourage this…