The Problem
We need a way (many ways, actually) of curating the list of DApps displayed in Status now that we’re on mainnet. Currently, we curate these manually based on which ones actually work well on mobile, but this is not a long-term, nor scalable, solution.
A Proposed Solution - Version 0.0.1
At first, we use a simple game involving a bonded curve: rank is based purely on which DApp has staked the most SNT, but the more SNT staked, the cheaper it is for the community to create “downvotes” which decrease the DApp’s ranking.
This is an elegant game-theoretic solution with an incredibly simple UI.
Features
- DApps/developers pay to rank. This is no different than current SEO practices, except developers know exactly the algorithm used and what is required to rank highly. Importantly, they are not paying a company: they are staking SNT in a registry. They do not need to trust Google, PageRank, FB etc. AND they stand the chance to earn ~60% of what they staked back if users vote on their ranking.
- Users pay to vote, a fee which goes directly back to the DApp they are voting on. This means there is no explicit incentive for users, and it actually costs them to participate. Far from an error, this is key to the design of the whole system.
Listen to Alice
I don’t want to have to think about which links appear first in my searches. I certainly don’t want to have to manage many different tokens with different governance rights and requirements just so that I can “trust” the content I’m looking at.
All I want is to know that the links which appear first are relevant to me, I want to be able to see easily how that “relevance” was calculated, and I want to be able to tweak things, but only when I feel really strongly about it. #DeleteFacebook.
Importantly, DApps that rank highly ought to be providing the most value to the community as a whole.
Designing for Reality
Participation in any structure that requires votes and multiple stages, be it a DAO or a TCR, is always low. This is not just because of poor interfaces and unstable technology, it is because getting people to track votes and tokens actively is almost always a bridge too far. So, let’s design with that in mind.
There is no incentive for users to participate precisely because - even with “incentives” in other schemes - they have not been doing so. However, users still benefit as a side-effect of the system: the more SNT is locked up in the DAppStore, the less there is in circulation and the more valuable the SNT any given user is holding.
In this way, even without assuming any user participation, we achieve the key design goal of the system-as-a-whole without requiring any central authority whatsoever: DApps which rank highly contribute - literally - the most value to the community.
Some Scenarios
1. I build a really bad/hurtful/illegal app and stake a lot of SNT to rank highly. What then? If I receive back the SNT it costs the community to downvote me (supposing they’re even willing to do so), then I can just keep doing this endlessly.
a. Remember, due to the setup of the curve, you only receive back ~60% of what you staked. So, it’ll cost you signficantly to keep that up over long periods of time.
b. Also, there is contractual reality and the Status UI. The two do not need to be completely bound. If there is a DApp violating App or Play Store policies - for instance - we may need to remove it from the UI. Anyone else is still more than welcome to implement another UI with different rules for the same contract.
c. There is another (free) option when downvoting for users to report DApps to Status that they think should not be in the UI.
2. I am well-resourced actor who wants to ensure an upstart young DApp never ranks as highly as my own product. I’m just gonna downvote them out the registry.
a. Remember, again, that the cost to do this goes back to that developer. Though they only receive ~60% back, it’s going to take some time to achieve your goals - time in which the community can organise.
b. It may even be more optimal from your perspective just to stake that SNT to your own DApp, though this is complicated by the fact that doing this results in it being cheaper for the community in general to downvote you. Even this simple game has a complex, emergent, multi-sided market nature i.t.o. the cryptoeconomics.
c. Either way, any corporate bidding war, trolling, or other kind of underhanded tactic only ever has the net result of more SNT entering the DAppStore, which is still benefitting the community as a whole.
d. Radical Markets can be tough environments - we just need make sure that inevitable competition ends up benefitting people, rather than putting them at an even greater disadvantage.
3. I am a poor DApp developer who is really excited by the idea of permissionless participation. Now you’re telling me I have to pay another fee? That’s BS!
a. Yes, I know. This is what programs like Incubate and “Optimised for Status” (when we create that) are intended for. Remember that the “fee” you’re paying doesn’t go to Status, and that you can earn a lot of it back by building an engaged community that cares enough to donate to or vote on your product (oh yeah, this system also has the nice side-effect of being a sort of Patreon for DApps).
b. Also, free markets are the most efficient means we have ever discovered of optimising allocative efficiency. Though it can seem callous, this really is the best way I could think of to organise the system long-term.
Show Me the UI
Obviously, this is very bare-bones. We’d probably need at least one other intermediate screen to explain a little, at least when a user first votes. However, it does illustrate how simple we can make Version 0.0.1
.
No tracking different tokens in your wallet and wondering when on-chain transactions are required. No reviews, or governance needs, or anything “extra” for you to do. Yet you can easily see why each DApp ranks where they do, and can influence that should you really want to.
Also note the tab with Status Store
, Trending
, and Discover
at the top of the first screen. This simple game with staked SNT does not answer the “relevant to me” part of Alice’s complaint very well, but there are other solutions to this: discovery and network topolgy-based solutions to find popular/relevant/trending topics, and various approaches being experimented with at StateOfTheDApps, OpenSea or Dappist etc. We could have separate tabs/filters for them as they are implemented and then allow users to curate their own searches by setting the filters to what they think - at a glance - is the most interesting to them.
The Mechanism - Simply
- A DApp stakes SNT to rank.
- Votes are minted based on how much is staked, using an exponential curve.
- The
cost to vote = total cost / number votes available
. Less votes available = higher cost. - The
cost to vote
, paid by the user, is sent directly back to DApp when voting occurs (if ever). - The trick is here:
total cost == amountAvailable
of the SNT that DApp staked when the DApp’seffectiveBalance
(what it is ranked by in the UI)== 0
as a DApp must earn back theamountAvailable
from what they staked by the time they have been voted down to 0. - A DApp’s
effectiveBalance = totalStaked - (number negative votes * (rate * (amountAvailable / number votes available)))
. amountAvailable = 62.5%
because I set theamountAvailable = 1 / exponent
and then played with the numbers until they seemed optimal (there is a bounty for this too, though).