andytudhope / Recollections

A description of how to curate information optimally in the absence of a central authority
Mozilla Public License 2.0
20 stars 6 forks source link

Maybe the most meta thing you've ever seen. Much wow. #1

Closed andytudhope closed 5 years ago

andytudhope commented 6 years ago

Main bounty in SNT is to disprove the thesis in this repo. Yes, it is the same as the first interval in the curve I have been working with. So meta...

Out of band bounties to help optimise the parameters curve_factor and snt_percent.

A (somewhat) formal proof is also produced below. The graph in the spreadsheet does hint at this, but the insight that curve_factor can be calculated dynamically in the contract based only on the relevant balances, to always be a max x-value in terms of where cost to mint vs tokens mint intersects, is a big one.

That intersection is the point at which it becomes increasingly cheaper to have a bigger and bigger influence on the ranking, and you want to make sure it is as large as possible in order to make sure that your information store lives long and prospers.

andytudhope commented 6 years ago

% staked available = % available - %negative, % available = curve we enforce, and % negative == _effectiveBalance by looking at the boundary conditions.

((_SNTBalance * rate) / 100 ) - effectiveBalance = % staked available = rate (_SNTBalance/100) - (_effectiveBalance / rate) = 1 (_SNTBalance/100) - (1 / _effectiveBalance) = 1 / curve or rate = (_SNTBalance/100) - (1 / _effectiveBalance)

Wow, you can define the rate dynamically, based only on the balances in the contract! Which is a mathematically verifiable optimum.

We know we want the interval and the curve to affect the significant term of the arithmetic sequence, as the parameterisation above requires it, but how are they related? My intuition is that it is ((interval * rate) * current_interval_index). The reason it is * is because as _effectiveBalance is gets bigger and bigger (more votes are cast), we need to mint less votes (i.e. it needs to be more expensive).

num_tokens_to_mint = num_votes_to_mint_at_1 + ((current_interval_index * rate) * num_votes_to_mint_at_1); which is the same as: num_tokens_to_mint = num_votes_to_mint_at_1 + (current_interval_index * ((SNTBalance/100) - (1 / _effectiveBalance)) * num_votes_to_mint_at_1);

This negates the bounty you can receive for the proof. The above contract is mostly intended for devastating attacks on the premises of the thesis and game etc.

Apart from the updated first 3 lines, this is all wrong. The maths is a little more involved, and I will solve it properly after I come back from a week's proper leave.

fubuloubu commented 6 years ago

A lot of enthusiasm and work out in, very interesting concept.

So, if I understand correctly, a user has to stake some tokens to vote. That cost goes down the more that is staked, meaning votes are cheaper. Anyone can vote by staking more tokens. Only discontented users and trolls would stake to downvote, and altruistic users and the developers themselves would stake to upvote. In a downvote, the developers reclaim 52% of their staked tokens because it could be trolling behavior, which they could reinvest into staking more and upvoting themselves. But since it's only 52%, they would have to stake even more than what they received in order to recover their rating. The stability of the system, the ability to buy votes at a cheaper price (this is similar to quadrstic voting, no?), is negatively affected, the more stake is in the system, so the developer would have to work extra hard to retain their rating against an increasingly hostile subset of users and trolls by relying on their success (and making money) to pay an increasingly larger amount to maintain enough stake over their score that their rating is good. They could also spend money in a goodwill/bribing campaign where each address which removes their negative vote gets a proportion of their stake as a bonus, de-escalating the score for a non-zero fraction of the amount it would cost to buy and improving stability by reducing that score, which makes votes more expensive.

Not sure what of that is right, but it's very interesting!

andytudhope commented 6 years ago

So, let's be careful with terminology first.

I like using user to refer to the people who have no incentive to actively participate in the system (because it costs them to, and in this weird token called SNT which few people know about ;) ). Users just use, and benefit as a side-effect of the optimal curation of information. No extra effort, education etc. for them - and this matters for real world use cases.

they would have to stake even more than what they received in order to recover their rating

This is not quite true afaict. If every single vote is bought and cast against you, it only subtracts the same absolute value (i.e. effectiveBalance) from your SNTBalance, so you would only have to stake exactly as much again to recover it, no matter how much value is caught up in the DApp store.

The value hld in the DApp store is ONLY a measure of the cryptoeconomic security of that store, i.e. the more there, the more sure we can be of the legitimacy of the DApps at the top, because it costs significantly more to get there, so is harder to manipulate.

Thanks for taking the time to read it all! ❤️