AugurProject / augur-core

Augur v1 - Smart Contracts [DEPRECATED]
https://www.augur.net
GNU General Public License v3.0
595 stars 133 forks source link

Handle Dormant Rep Decay Process #40

Closed joeykrug closed 8 years ago

joeykrug commented 8 years ago

Time to claim for initial rep distribution is 6 months before inactivity kicks in

Need to prevent going dormant after already revealed report in second half of period to prevent dormancy to skip rep penalization. And what if I go dormant - do I have to do rbcr and not reporting cr for all past periods? How's that work? Shouldnt have to do during dormant period

Penalization catchup etc for dormant and not dormant rep - make rr be done before converting to and back so no one loses any dormant rep from that beyond the dormant decay rate

Make sure rr up to date before doing dormant back and forth conversions

Dormant rep loses only if round 2 or forking [or maybe just forking?] not reported on [and loss is n% of the y% rep that is dormant], otherwise just gets no fees.

when handling dormant rep stuff:

if a person reported on a round 2 event, they cannot convert their rep to dormant or send rep until they've finished the resolution process for that round 2 event

        # unless this just happened to them last period and they reported correctly then

reportingdone early shouldn't be allowed b/c prevents bonds, num reports/expected may not be needed

is reporting happening on orig. branch for forked events or no? when / if / should a forked event's setmoved be set/ when /if should its branch be moved? which branch do i re report on a forked event on?

rzurrer commented 8 years ago

Dormant REP Algorithm Notes:

My comments are somewhat influenced by my hypothesis on how being a Reporter (holder of REP) will evolve:

Being a REP holder will probably be akin being a miner. The collective of Reporters will professionalize and probably at a pace much faster than anyone is thinking right now. If one wants to be a Reporter it will likely require more than a ‘few hours a month’ of confirming some easy to review events. Note: its not that anyone at Augur misrepresented the actual commitment here in any way. Its just quite obvious to me that the community of Reporters will self-organize in an economically efficient manner and I hypothesize that there will be a natural evolution towards substantially lower validation periods, probably some form of topical specialization (which could be our first examples of pseudo-sharding…?) and other norms that will develop and evolve that were not specifically proposed in the original white paper. Adam Smith’s “invisible hand” dictates the inevitability of increasing competition in the REP space. We must prepare…

Comments on Dormant REP decay Process: The Decay Penalty (DP) should be geometric in nature. For example, first period of dormancy implies penalty Y% of outstanding REP, but the third successive period of dormancy implies Y%*REP^3.

There should be an upper limit on % of REP lost for dormancy. For example DP = Lesser of Y% or 1000REP. You can’t have someone loose USD100.000 investment because they were sick for a reporting period. That will create a lot of complaints in the community. Maybe after a period of time and professionalization it can be that draconian, but that shouldn’t be the case right way.

Important legal implication: Reporters must be informed at the start of the first reporting period of the nature of the Decay Penalty calculation AND informed each time they are considered Dormant and will suffer Delay Penalty including specific information on the events they didn’t report on and deadline that was missed. A simple email notification should suffice but there should be a grace-period where they receive notification and still can report before being considered dormant.

It would be interesting to allow Reporters to opt-in or opt-out of specific markets based on topical specialty. For example, I would like to report on sports but not on weather or financial markets. However, Remuneration for reporting should be a function of the difficulty of reporting and subsequent supply of REPs available to report. Sports will be very low remuneration but other events could be correspondingly more expensive. Market makers should be able to adjust the split of transaction fees to account for popularity among Reporters.

I would like the Reporting Period (RP) to be voted on between the Reporters based on specific market need. A governance tool will be necessary here. For example, sports REPs will need to confirm events weekly in order to be competitive with traditional sports books. However REPs on certain esoteric phenomena such as the occurrence of a scientific discovery may need to only be quarterly.

REPs must make Xmin reports per porting Period where Xmin is the number of events that each Reporter per RP. I assume RP = 30 days as a default at the start, but I am quite sure that RP will shrink to 7 days or maybe even 1 day eventually. Reporters should be able to report on more than the Xmin if they so choose in a given period. However, there should be an Xmax to prevent from a certain percentage of Reporters reporting on 100% of all events and thus events being confirmed without other Reporters being able to reach their Xmin.

Penalty for Dormancy: The simplest way is to not allow any leniency on Dormancy. If a Reporter wants to go on vacation, they can put their REPs in one of the REP pools that will certainly pop up, they can have a trusted partner handle their obligations (remember, Reporters will professionalize!) or they can sell their REPs and buy them back when they come back if they aren’t professional and don’t want to rely on others. If Augur held the penalty fairly low for first event of Dormancy than it wouldn’t be too costly for a Reporter to miss a Reporting Period. However, there should be some balance in the Decay calculation based on long term performance. For example, if a Reporter reports in 50 periods in succession, then their first Dormant period shouldn’t be as draconian as if a Reporter misses his third period in a possible 8 periods. Some function of number of missed RPs against total possible RPs would suffice.

A simplified possible example:

If RP missed, then

DP =(Y^(1+(Previous Count of Missed Reporting Periods)))/((Count of Reporting Periods adequately reported on/(Count of Missed Periods or 1))

Y= 10% of REP held up to 1000REP

If Augur wants to have some leniency for dormancy of REPs, the best way to do it would be allow for extra reporting to spill over in successive periods. So a REP could report 3-4*Xmin in one RP in order to obtain leniency for dormancy on a subsequent RP. However, what happens in the summer when everyone in certain markets could go on vacation? Maybe in May everyone hits Xmax and then in July the markets don’t have enough participation for quorum on an event outcome. This is obviously an edge case, but somewhat plausible.

I have some other ideas and would be interested in testing algorithms for the penalty but would like feedback on these general comments first.

imkharn commented 8 years ago

We want the penalty to represent harm to the system. It does not matter if it is month 1 of dormancy or month 5 of dormancy, having 5000 rep out of action is what matters. What percent of all rep is dormant is the primary metric for measuring the harm of being dormant and should be the basis of the dis-incentive. This can be done by applying the full penalty if everyone is dormant, and none of the penalty if no one is dormant. For example: If 99.9% of all rep is dormant, then 99.9% of accounts would lose ~20% of their rep every month given to the 0.1% still active. If 50% of all rep is dormant, the penalty is only half of the full penalty and is 10% per month. 5% of reputation being dormant would be 1% penalty per month.

rzurrer commented 8 years ago

Ok, I understand that rationale. However, we then have a situation where a Reporter's holdings is correlated positively with their penalty and thus you risk much more by holding more. So if I hold 100000REP and don't report during one Reporting Period (RPs) and someone else holds 1REP and doesn't report, my penalty is dramatically higher both on a absolute basis (number of REP lost) and relative basis (% of my REP lost), even if I have reported 100 RPs successively on time and that person with 1REP misses RPs all the time. This issue will be solved somewhat due to my very first point above that REP holders will professionalize quickly and thus the holder of 100kREP will almost never miss or err, but it would be interesting to have a factor that is multiplied to the penalty based on track record as I proposed above. If you miss 1 in 100 RPs that is very different than if you miss 2 in 7 RPs and should be calculated into the penalty. You can call it the "Goodwill Factor".

imkharn commented 8 years ago

Sorry for not writing clearly. By "percent of all rep is dormant is the primary metric for measuring the harm of being dormant and should be the basis of the dis-incentive." I mean the total percent dormant, not the amount held by an individual. Any individual persons actions has no effect on their penalty. It does not matter how much rep any given person has, everyone is charged the same percentage global penalty for reputation being dormant, and that penalty is entirely dependent on the percent of all rep that is dormant.

You seem to have understood what I wrote to mean: "each person is penalized for being dormant a different percent of their holdings based on how rich they are, with the rich being penalized the most" That is not the plan.

Whenever we do dis-incentives, the standard procedure is to estimate the harm someone causes by their behavior in financial terms. In this case the amount of harm can be measured by what fraction of all reputation is dormant. If virtually no rep is dormant, the "dormant rep problem" does not really exist, and the people being dormant should not be penalized much.

rzurrer commented 8 years ago

Thanks for clarifying. I think it would be helpful to understand a feature of Augur further. I had assumed that reporting was to be done by Reporters who carry an address that holds a certain amount of REP and then their verification is essentially akin to PoS mining whereby the weight of their vote (and subsequent possible penalty for error/omission) depends on the amount of REP in that address. Thus penalties, measured in REPs, would be applied to specific addresses and not on REPs individually. Otherwise you would be deflating the number of REP in the system if you were destroying a portion of REPs based on specific REPs participation, no? How can you apply penalties across REPs without tying them to the address (Reporter) that acted erroneously or omitted action?

imkharn commented 8 years ago

"Thus penalties, measured in REPs, would be applied to specific addresses and not on REPs individually. " Yes, penalties are directed and tied to the person that does an action. If they report incorrectly, fail to report, or are dormant, they lose anywhere from 0-20% of their rep every month out of their account. When I said "Any individual persons actions has no effect on their penalty." due to the context, by 'penalty' I meant the percent penalty for being dormant. Other actions of course affect penalties, just not the percent penalty of being dormant. When it comes to deciding the percent penalty for being dormant, we can base that entirely on what fraction of all rep is dormant, not on how long this person has been dormant. Our objective is not to force people to come out of being dormant after some time limit, our goal is to punish people for being dormant as little as possible without causing a high fraction of reputation to be dormant. I think there is no need to control the behavior of a reporter beyond reporting correctly, and avoiding going dormant if a lot of people are dormant.

You proposed to exponentially increase the penalty for being dormant based on time dormant. However, the amount of time dormant for a single account only linearly determines the harm to the system not exponentially. The harm someone causes is the same every month by being dormant. Exponential increases would be over penalizing people, and people would bypass it by having multiple accounts or using services to bypass so it would not be enforceable anyway. Also, the security on the system is not affected by the amount of time a particular account is dormant, this is irrelevant to security and the well being of the system and should not be a variable the system spends money trying to control. As I said earlier, the percent of all rep that is dormant is the metric that shows how much harm dormant rep is causing, which should therefore being the basis of the level of incentive to stay active.

joeykrug commented 8 years ago

After hearing Micah's comments on this last night I'm more inclined to say this was a bad idea to begin with, akin to taking people's eth away if they don't use it to stake. It still has security value add during a fork, and dormant rep not getting trading fees results in fairly strong incentives as-is [active reporters get even more fees, and if any substantial amount of rep becomes dormant an entrepreneur will take advantage of it by providing a pool for lazy users], i.e. the market can work this out without adding more complexity to the system. Additionally, many reporters' rep would be stuck if they needed to activate it to avoid penalization [withdraw limits]. Adding complexity is probably the last thing we should be doing atm.

As far as "The Decay Penalty (DP) should be geometric in nature. For example, first period of dormancy implies penalty Y% of outstanding REP, but the third successive period of dormancy implies Y%*REP^3" that's easily cheatable. Go dormant 1 period, swap out to active, repeat.

rzurrer commented 8 years ago

Ok, good feedback from both. One point that wasn’t clear until now was the Reporter’s option to place REPs into a category called dormancy similar to Injured Reserve in sports. I would like to understand Micah’s arguments better as well.

Regarding a Decay Penalty for dormancy vs. the implied incentive through the lost revenue caused by dormancy, I believe that there is a coherent argument in favor of penalising dormancy directly, at least moderately. I would think a structure that incentives active participants and penalizes the speculative holder would be much more robust and fair. A remuneration structure that considers both the ‘carrot and the stick’ will have benefits far beyond just better verification. I would argue that dormant REPs are likely to be dormant during an attack as well and not add any value in that moment. Not having any penalty for being dormant would naturally incentivise dormancy, especially among speculators, thus removing security from the system overall because fewer Reporters will be doing their job. What would happen if revenues are really small (especially at the start) and not financially interesting to report on so half the Reporters put their REPs in dormancy to remain speculative on the asset? No one gets penalised, but you have half the people working? Yes, the revenues of the Reporters not in dormancy effectively doubles, but it may not be enough to matter in certain moments, lowering security overall.

Do you guys have an updated and consolidated overview of the remuneration/penalty algorithm that I could review to understand this in the context of the entire strategy? I would like to understand how the 0-20% that @kmkharn cites is calculated and what other actions besides errors would give rise to a penalty if not reporting apparently doesn’t (as long as you’ve put your REP in the dormant category).

Regarding the point that one could just switch on and off from reporting and avoid the scale in Decay Penalty, you will notice that I mentioned 2 of 7 vs. 1 of 100 in my example for the very reason that the penalty doesn’t need to be successive failures to report but track record should be taken consideration in some reasonable manner. The ‘Goodwill Factor’ I propose is more a conceptual model to remunerate accounts that are regularly contributing positively to the network and increasingly penalize accounts that are not thereby eliminating the shirkers over time. How that is modelled exactly we could arrive at fairly easily and it shouldn’t be based solely on successive errors or missed Reporting Periods. The big question is whether it is relevant and important to consider a Reporter’s track record when evaluating their penalty for dormancy and whether to penalize dormancy at all. While I agree wholeheartedly regarding the focus on simplicity and commend Joey for the wisdom behind that decision, I think both a Decay Penalty and a Goodwill Factor in calculating said penalty are merited and would invite reopening the debate on these issues further. If they don't make it into the first iteration, that is fine. It could be something worth A-B testing during some period.

Cheers