Request for information about disputes #GDR-3

The arbitration council has completed the investigation of this set of disputes. Thank you for the detailed description of your findings, processes and motivations @86b and @minato; your transparency has helped make this a smooth process.

The investigation sought to confirm the claims of both parties and determine whether the actions of the disputed indexer could be considered a contribution to the network within the spirit of the arbitration charter.

The fisherman for this dispute mentions two reasons for submitting:

  • PoIs submitted on-chain do not match what the fisherman produced as a reference.
  • The fisherman has classified observed behavior on the disputed allocations as “malicious/unethical” and generally not aligning with the spirit of the proposed arbitration charter’s specifications.

The investigation will test the two hypothesis proposed by the fisherman about the disputed indexers behavior.

PoIs

The fisherman has compared the disputed allocation PoIs against references generated from the fisherman’s own graph node and found that they do not match. As part of the investigation the disputed deployments were indexed on a local machine to have an additional reference.

Once the deployments finished syncing (reached their failure points) reference PoIs were generated for the disputed allocations using the start block of the epoch prior to the epoch where they failed. Initially the references did not match the disputed indexers submitted PoIs; however they did match the fisherman’s reference PoIs. The discrepancy could be due to a difference in the block number used to generate the PoIs, so more reference PoIs were generated by looping through the range of blocks each allocation was active and generating a reference PoI as of each block (using the graph-disputes CLI tool). I found a match on the reference PoIs generated for the failed block number - 1. I consider this a reasonable interpretation of the Arbitration charter in its current state (still in flight) which states that the last valid PoI should be used.

Analyzing the PoI tables shared by the disputed indexer, they’ve been found to be identical to the corresponding tables from the disputed indexer. This comes as no surprise after the above investigation, but is further evidence that the indexer properly synced the deployments in question.

In conclusion, the PoIs submitted with the disputed allocations have been confirmed by the investigation as being valid and correct. The initial investigation by the fisherman that indicated “invalid” PoIs used a different (equally valid) scheme for generating PoIs. The fisherman used the start block of epoch prior to failure while the disputed indexer used failed block - 1 The fact that both PoI generation schemes produced different but valid results is of course a good indicator that further clarification in the charter is necessary; the arbitration has already been updated to remove the ambiguous statements around failed subgraphs and graph node work is in progress to support PoIs on the failed block of a subgraph so the network can come to consensus on failures.

Malicious behavior

The fisherman has classified observed behavior on the disputed allocations as “malicious/unethical” and generally not aligning with the spirit of the proposed arbitration charter’s specifications. The disputed indexer repeated a coordinated sequence of actions consisting of the following steps:

  1. Create and deploy a new subgraph to the network that is expected to fail at a certain block (within an epoch or two).
  2. Purchase curation shares on the subgraph.
  3. Allocate towards the subgraph deployment with their indexer and sync it until it fails.
  4. Close allocation using a PoI from the block before the failure.

Steps 1-3 created an exclusive environment for the indexer to collect rewards on the new subgraph deployments without competition from other indexers and in step 4 they were able to use the specific failed subgraphs exception in the arbitration charter to close the allocations of the now failed subgraphs with a valid PoI. The steps were repeated and optimized over time by the disputed indexer.

The pattern of behavior outlined above created a profitable situation for the indexer; meanwhile, did it contribute in any meaningful way to the network? The disputed indexer stated that the scheme was initially crafted to entice bots into curating on “zombie” deployments and thus wasting their resources. As investigators we are unable to find any other way to confirm this intention. Given the economics of the situation, with a real intention to grieve the frontrunning bots it would be reasonable to expect the indexer to attempt coordination in a public forum to alert curators and indexers of their behavior. The data that the indexer defined in the subgraph, curated to, and indexed indexes ERC-721 contracts, but was designed for the purpose of failing at specific times and did not provide any valuable data indexing to the network. The subgraphs were not queried on the network and all 6 of them are based on the same template with altered failure modes.

In conclusion, the disputed indexer showed a pattern of behavior that was intended purely to capture rewards without providing the intended value of an indexer on the network. Indeed, the disputed indexer themselves has been transparent in their intentions stating that “we did think that the exception rule can be used to create an exclusive environment just like described below.”

Conclusion

After investigating the disputed allocations with the goal of confirming the two working hypothesis we’ve concluded that the PoIs submitted when closing the allocations were valid attestations of syncing that subgraphs data. As for the larger pattern of behavior, it is confirmed that there was a coordinated pattern of behavior from the disputed indexer to create, deploy, curate on, index, and collect indexing rewards on these subgraphs. Based on the data available, the investigators could not find strong reason to believe this action was in any way beneficial to the goals of the network. As such the behavior can be characterized as being purely driven by a goal of exploiting the failed subgraphs exception (no longer in the arbitration charter but once considered canon.) The recommendation is that the disputed indexer be slashed under the clear expectation that has been set in public forums that arbitrators will be looking closely at the intent of disputed allocations behavior for each case.

Investigation Data and Results

Number Deployment (IPFS) PoI Table Divergence Dispute Allocation Indexer Rewards (wei GRT) Indexer rewards (GRT) Indexer Rewards (% of total stake) Failed at BlockNumber Deployment (bytes32) PoI PoI_fisherman PoI_arbRef (prevEpoch) PoI_arbRef (failed-1) PoI_rainbowMatches (arbRef) CreatedAtEpoch ClosedAtEpoch CreatedAtBlock ClosedAtBlockNumber ClosedAtBlockHash
2 QmYLnK6HwxTn3qPe2tURFUQYcxa4VVxLLvdbt6hVpBXmzd none 0xa6e48245e348d1533e31cba5bac4da3125104c927c53b11fa99ab95a8ba15a27 0x5037caea050b4dda604ef5efe908715e5cb71103 1.004198911884378e+21 1004.198911884378 0.085388698525 12855677 0x949d775a90ef63b46d95fc90cf326dea9cceef9b3c4fcb04f9e16581dc7058ee 0x82d3c31866310dceefbad6dd5e4c0721f32b7c16bd93ea16f89be91c870f4ff0 0xb429cb40d26ffa8aec1f0ec31eb6bd5d97ccf0e6062559a4570a521c97a5caac 0xb429cb40d26ffa8aec1f0ec31eb6bd5d97ccf0e6062559a4570a521c97a5caac 0x82d3c31866310dceefbad6dd5e4c0721f32b7c16bd93ea16f89be91c870f4ff0 none 211 212 0xc0d8ef23fefd3590ba30c0ffcc748c952637d7348ccc9d06de5031c43381ec67 12855756 0xe504360b3f50a5b7a62e92ed93e0afb97cf778c2a40303e578dfd46349e2a5a9
5 QmbVGE6Ma2AqzVzKQip6S81dAiSuHeQLny47jzFTLa3DAq none 0x274b39de33d7cf9f4e9feaf3331f56078b0546884aecae156a1f292d42412af8 0x30740c34017407cc939e559b2bbe96b711e3d088 3.4239980482113584e+21 3423.998048211359 0.29114823132 12860424 0xc35cbc58760eae95e5accbd7f866dfb1f89060482b4feb525b795259cfc220aa 0xc2d56a308c3560a511a0ca06ab4bf8d8f3c9891687c21980507e3a97c9ace7a6 0x5bdf4c32ef9498197f087e4c570a98eefa7a83de65818445434e311259939be2 0x5bdf4c32ef9498197f087e4c570a98eefa7a83de65818445434e311259939be2 0xc2d56a308c3560a511a0ca06ab4bf8d8f3c9891687c21980507e3a97c9ace7a6 none 212 213 0x1f2d50cac27c46ea67ebe48016aacc56529cea28fd95f20db163930103e0193e 12862431 0xdd855884efe31cab39686d1cbe165f1a5f89acbf1f17e4fad8a69d32bac64b94
6 QmQEGuJtXiwWni2bsmDDPPor9U1nfQ8s2kbQ6XYCwNjojG none 0xf6dd49f420750111fe0ec51b4e5c4f175ce2a65a864d6f714e7c2ef66829031a 0x0b089eeed8cf24c41f9e74cc750fc654eb5f0fc4 4.001022239045631e+21 4001.022239045631 0.340213555022 12862507 0x1c153b5e9ba74823153c451300a053beb9dcdef20549b22901ef1d502e21d8eb 0xb751485346603a1d165b822499aeb1bd2a5122542c5f40ae3720d666be18126c 0xa2a9fae6226689dbb9755a9cbeed0b8c274d68f48e4ad16c5866f0bd29048cdf 0xa2a9fae6226689dbb9755a9cbeed0b8c274d68f48e4ad16c5866f0bd29048cdf 0xb751485346603a1d165b822499aeb1bd2a5122542c5f40ae3720d666be18126c none 213 214 0xc7f621c45794507aec687a72900de26a669d019aa1ba58839a677e4c5b90f937 12869026 0x929b7b23e791a2cc7c86ce2010fd99ede6cfe32c429c8e991849cf288168ebab
4 QmUxkM4kkYDyVEcUcBGWrvhj5Y6f2uvUTkPTmPjtm76A6k none 0xa2f6ba08ec3ad3e04c4f3ec2ed4344ebb32ba867923ec14b14e46311d954ff59 0xd9036a08e37d0810451a2da60056c1cc935069e7 2.346331016311035e+21 2346.331016311035 0.199512416734 12869144 0x6265679b3f40b30663c7e6f27828c5b1df274b0f422aeede33ac2008100a4df9 0xf9cb11c4cec2e710d80c8e1770a75b2a502c795c9b75b6836853738f3d26b6a2 0xe11d7fe5fc7b7d0701976c793336732c83bbb2ac9c4b5dfd5e8c2b071f478972 0xe11d7fe5fc7b7d0701976c793336732c83bbb2ac9c4b5dfd5e8c2b071f478972 0xf9cb11c4cec2e710d80c8e1770a75b2a502c795c9b75b6836853738f3d26b6a2 none 214 215 0xab6a0e71041e365deb0be08dc88e7a0f762adb73189d8d7c5ffd7247b07e55e9 12876424 0x7347437d0f83310d5e6e3348f0b7474ab3237b248ad13d4b65b47dc1a0b2d27e
1 QmVTUfdp5sJR4uNLq8jM1zR6TLyepejz9gd38YpNT9We5Q none 0x68982a39c7cd4ccc1f22e2bd00de0de20b06cd3e19cb3a65d931d7af410e05e1 0x347032a87c92a79f3eacbf2f4262dbb7eba5165d 974522571664905000000 974.522571664905 0.08286527011 12876877 0x69c184d914985b6681499479840877426f9c1c3e369ba618d8e32a1ea65ff63b 0x367e3cb4ab168ef8231ab1228a51cc6399bca1c17545515573a91b8ddd9cf532 0xeeac889fb37dac0b0cc1ed25a157d60f3ecbca4856bf9d844720b7eab13c97c0 0xeeac889fb37dac0b0cc1ed25a157d60f3ecbca4856bf9d844720b7eab13c97c0 0xcd7a76c99ad622a1f3bece7b495389546180e5444a1e6b5a272846304756ffd7 none 215 216 0x0654ccd498a1224b6bcacdd34689f4b8902aa70804975bd479ec7bd390b39be7 12883331 0x972dabc5337c9540d9e31212866832a07ec3c61956584d9a2986ce81b34984aa
3 QmafMrc51kqWZdBF9u3XzerN2gYAb8wUPU7dHiHuxWewjK none 0x21309e1849923a4e6997280130907daa7cf3e087438b0d23fc01e578e0461dc2 0x73f3810a241d4966f18d0427d5244afec9f2ecf1 495387889841351100000 495.387889841351 0.042123653669 12876871 0xb71738e2cfee4a013449cd09dd89fc1eeb2ead8941e2a8a006d1db605d761d26 0x02911d0e46f521bc791524d6aa9d858db2d82688a7ffdecde3caac0ff8f53a38 0xd39937dea78486c35c1127cee227487d72ff6bfdadf93dd3c7c926241bef932f 0xd39937dea78486c35c1127cee227487d72ff6bfdadf93dd3c7c926241bef932f 0x02911d0e46f521bc791524d6aa9d858db2d82688a7ffdecde3caac0ff8f53a38 none 215 216 0x0db22dbadd706ad2135bf5e4829852fd3f98402c6ab74508bf1bf23ccf5d68f9 12883325 0x1f691464f3df6c97da0b4f0a259674cb9aa7ec55b9f4d944a101f5b9a15ff2c0
13 Likes