Hi @fisherman . Thanks for your prompt reply.
This will be a long post, and not entirely directed at you, but at the Indexer community too. As i feel i need to defend certain people and processes more than i need to justify my actions.
The waters are quite prone to becoming ‘muddied’ when money (rewards/revenue) is involved, but a large part of my motivations here were to make an example of certain things. Mostly the lack of attentiveness or critical thought/input given to this subject by some who (nevertheless) commented on it.
From my perspective, the higher-rate upsides of this allocation were only possible due to a widespread misperception over this clause. This is something i was surprised at, given that from my perspective, everything was quite clear. And i know we have plenty of highly competent, engaged people in the Indexer community.
Disputes & Precendence
There is quite a sensitive balance of power when it comes to disputes. The role of an Indexer involves attempting to cover every consideration that a Fisherman has, in order to avoid getting disputed, and then some. But the risk presented to the Fisherman is rather low compared to that presented by the stake of most Indexers.
For this reason, i feel that Fishermen should be held to the absolute highest standard. Not only because of the
risk:reward often being slanted in their favour, but because any invalid disputes present ‘noise’, and demand a lot of time and effort for the Indexer and the Arbitration Council. I feel without having high expectations of our Fisherman, we could attract opportunists.
I’ll echo something i said in public not long ago. Again, in anticipation of a lot of the disputes we’re seeing crop up today:
Since we’re here now, i will try and make this reply thorough. Not only to defend myself, but to make this very point, and why i feel the majority were the ones at fault, in this instance.
By the end, i hope it may be clear that there was actually no need for me to defend my actions, and that this dispute is invalid.
Clause & Effect
Excuse the pun, but that's why we're here, it seems. A disagreement over the clause which allowed Indexers to take rewards. Oft cited, incorrectly, over the past 6 weeks or so.
For any viewers who are unaware. Here is the original clause:
If the Indexer is unable to produce a valid PoI for whatever reason, then they must close the allocation with a so-called “zero PoI,” which is a PoI comprising all zeros. For example, if a subgraph has a bug that prevents indexing up until the current epoch, then a zero PoI should be submitted and indexing rewards must not be collected for that subgraph. An exception to this rule is if the allocation being closed was opened before the subgraph bug occurred. In this case, the Indexer may submit the last valid PoI they produced for the subgraph and collect indexing rewards for the allocation.
So, it was quite clear in the past. If a subgraph has an error, you should not collect rewards for that. Whether this clause made sense is another matter. But this is where the need for discussion and input comes in to play - something which is often requested but rarely achieved at times, in matter of governance.
A common complaint around this subject has always been the need for more transparency. People saying they have been left with uncertainty over this particular rule. From my own perspective, i can't understand this, as the discussion which led up to this clause being changed was all public. As was the commit itself.
I feel it’s important that i cover this timeline in full, not only to paint a picture of my own understanding and rationality, but also because i often saw the Arb Council (or others) come under attack if they demonstrated their confusion when accused of “a lack of tranparency”.
Everything seemed entirely clear to myself and a few others, but a kind of ‘hive perception’ seemed to appear, and still be persisting even now, judging by the state of Opyn and some of the replies to these disputes).
From my own perspective, here’s how it went, in public nontheless:
- In the Arbitration Charter thread on this very forum, concern over the clause in question was raised by @That3Percent .
- After no response to the above, he later added:
To me, his arguments made perfect sense, and was something i had considered lightly in the past. But having never ran afoul of this clause, i never took the time to put too much thought in to it. But there is a certain irony to the idea of dismissing historical data, when everything we index is historical. A subgraph error does not invalidate the prior data.
And more importantly - The idea that we should somehow step infront of Curators and the open market, by determining value in another manner like this, is not congruent with the importance we claim to place on the role and responsibilities of our Curators. It could be argued that in this case, the Curator community was not necessarily responsible for the majority of the signal, but this does not mean we should begin making exceptions which sidestep the function of this role.
- Some clarification to these ideas was requested by @KonstantinRM , to which Zac replied:
While Zac is not part of the Arb Council, his thoughts on this matter were at least clear to me, at this point. And made perfect sense.
- The topic was raised in Discord at some point, to which @Ford responded with his own thoughts.
- Followed by Zac adding some colour, to the balance of risk, as he saw it. As he states, he doesn’t speak for the Arb Council, but since they have been quite open about their interest in malicious actions, his opinion was that you could balance your risk against the perception of various courses of action, depending on how much faith you had in the Arbitrators:
Again, no input by this point from the Arb Council, but discussion is how we move things forward. And these (imo, strong) arguments were the only thing leading the way on this topic. To very little feedback, and no resistance.
But it’s important to remember that this Charter was always intended to be created via input of the entire community. E&N being just one part of that community, and save for a few other people, they were pretty much the only ones active in this particular discussion.
- After some time, @ariel added his own thoughts on this.
- And presumably this was then further considered, because after this point, the clause was updated…
For clarity, here is what the original clause was replaced with:
If a subgraph encounters an error that prevents it from being synced up to a the first block of the epoch, then an Indexer should submit the last valid PoI for the block before the error occured. Indexers may continue to collect indexing rewards on a broken subgraph until the market indicates it is no longer useful to index that subgraph and removes all signal from the subgraph.
Hiding in Plain Sight
This is where a lot of the 'problems' seemed to begin. And as you see from the above, i'm not sure we can say in good faith that this was due to bad communication on the Arb Council's behalf.
The main issue seemed to be is that people were not checking Radicle for the current state of the Charter. But instead referring to an old HackMD link which only existed because people (for various reasons) were not referring to Radicle directly.
When the post by Brandon refers to the commit on Radicle, i’m not sure where else people felt they should be looking to as the source of truth. But somewhere along the line, people began taking HackMD as the source of truth, despite it being outdated at that point.
So should consensus be based upon this widespread misunderstanding, or the actual (current) state of the Charter, simply because most people overlooked it and kept sharing a version that had since been made invalid?
I think the answer is obvious, but even if you’d disagree (a point the Fisherman seems to be trying to now cling to), i’d like to see it argued that i was not behaving rationally, or that acting upon this updated clause was in any way malicious. Attentiveness to dynamic variables within governance is no different to an Indexer reacting to changes in signal.
Risk vs Reward
In all honesty, i did not notice this updated clause myself for the first day. It was only brought to my attention when @cryptovestor made the following post on the forum:
It was at this point my interest was piqued.
So i began to look in to the new clause. And once it became clear what it meant, i was confused - why have these gaps not yet been filled after a day? Am i missing something? Usually the Indexer community would act quite fast and such big opportunities for rational profit-maximization would not last so long.
After reading through these discussions again, I concluded that Jim’s point of “how these dynamics become irrelevant in the future” had essentially already happened - by them removing the former requirement, in which an allocation on a broken subgraph was required to be made before the current epoch in which a subgraph had an error, to be eligible for rewards.
And this seems to be the point at which many people had a mental block, even if they were aware of the updated clause. When real money is at risk, people second-guess themselves and wait for validation of the group. Plenty of psychological research backs up this phenomena, but even being aware of it, it’s a hard thing to get past at times when you have very real, substantial skin in the game.
So, i began to calculate my own risk. How long would it take to break-even versus my current reward rate, plus a potential slash, if i have indeed missed something and open myself up to that risk?
The initial answer was, about 9 days (at the current state of things). Though i also considered that i could 0x0 myself if things were not looking good at any point before then.
For the upsides, especially for my Delegators, who would not be at risk of slashing, it seemed a perfectly good idea even with some slight uncertainty remaining at the back of my mind. While this sheet was not perfect, it was a good enough way to re-calculate my risk on a daily basis.
The bigger issues was reinforcing my own confidence in my perceptions of the new clause, and i have @cryptovestor to thank for that, as we discussed it many times since the majority perception remained against my own, and on occasion left me feeling a little doubtful in the face of those misperceptions.
And this opportunity (gap) was not one that i expected to still be ongoing right up until the present moment. I expected that a number of things could happen:
- Opyn could remove the signal for the time being
- Opyn could migrate signal to a new working subgraph
- Or (most likely) other Indexers would come and dilute the allocation pool of the subgraph.
Not that the latter would be a bad thing, as it would have validated my actions and removed the 1% of doubt that was playing on my mind.
I’m quite sure at this point, we will see many more allocations on Opyn, but as i said, this already went on far longer than i expected. Hopefully this explanation pushes things forward on matters of diligence, if nothing else.
I think i have demonstrated completely rational and justified action on my part.
More importantly, i hope i have fought the corner of some of those on the Arb Council, or even others (EG @Ford @cryptovestor ) who often took the brunt of frustration in public conversations, from people who held views of a perceived lack of transparancy. Which i felt, and feel i’ve demonstated, was not justified.
To be quite honest, this dispute aside, i hope that @cryptovestor received apologies from certain people who acted quite hostile to him over this matter. In this matter and others, he’s proven time and again to be a guiding light to the Indexer community and more than lives up to his role. But his guidance on this matter was ignored, unappreciated or outright dismissed.
I will close by saying that i hope to see the losing party punished, whoever that may be. Not only because i would like to see some 'absolute' outcomes happen in arbitration, and thus the diligence raised by all parties... but also because i edited this post on my phone. :dizzy_face: