The Corruption of EOS Nation
Tags: Eos, Cryptocurrency, Hft, Governance

The Facts

Between July 6th 2020 and October 28th 2020, 93.67% of the blocks produced by EOS Nation’s BP account, eosnationftw, had 0 transactions. Fully 99.89% had less than 5 transactions. Only 1.16% of the blocks from all other BP’s had 0 transactions.

The only successful transactions that were included in eosnationftw signed blocks were self-serving in nature and designed to hide the fact they were failing to perform their duties as a block producer.

During this time the esonationftw BP account was paid 105,416.2905 EOS ($263,540.72 USD) despite effectively missing 935,126 consecutive blocks.

Then on October 28th 2020, eosnationftw began producing blocks which contained transactions again in order to abuse their position as top 21 BP, and began front running legitimate GRAVY miners by inserting their own transactions ahead of others in order to manipulate the GRV/EOS exchange rate downward for their own profit.

legitimate GRAVY miners by inserting their own transactions ahead of others in order to manipulate the GRV/EOS exchange rate downward for their own profit. Their likely motive is to discourage people from using the GRAVY platform, no doubt for the benefit of EOS Nation’s own arbitrage bots, including trader.sx, which compete directly with GRAVY.

A Timeline of Evidence

The Discovery of Empty Blocks

We initially discovered that EOS Nation was producing empty blocks while investigating a curious anomaly: no actions from our DeFi Dapp GRAVY were taking place during blocks signed by eosnationftw. Considering our Dapp frequently processes more than 2 million transactions per day, this seemed unlikely to be a random occurrence.

Our immediate thought was that EOS Nation had surreptitiously banned GRAVY transactions, but what we found was actually much worse.

Between July 6th 2020 and October 28th 2020, EOS Nation’s BP account, eosnationftw produced a total of 935,126 blocks. 93.67% of those blocks contained 0 transactions, while fully 99.89% contained less than 5 transactions. To compare, only 1.16% of the blocks from all other BP’s had 0 transactions.

To understand exactly how anomalous EOS Nation’s block producing behavior was compared to other BP’s, here is a chart of the average number of transactions in a block for BP’s from July 6th 2020 to October 28th 2020. We can see that EOS Nation’s BP account, eosnationftw (on the far left of chart), produced blocks that contained an average of 0.11 transaction, whereas most other BP’s had around 27 transactions per block.

Figure 1: The Average Number of Transactions Per Block, by BP

To repeat for full effect: on average EOS Nation processed ~1/10th of a transaction per block. On a network as fast and performant as the EOS main-net this kind of behavior from an elected official amounts to fraud. For 935,126 consecutive blocks eosnationftw blocked other accounts from transacting anytime it was scheduled to produce blocks, effectively missing every round for nearly 4 months.

Missing rounds of blocks is a violation of Clause 10 of the Ricardian contract which governs BP behavior, and should have led to their removal as BP via the rmvproducer action. This also amounts to a violation of Clause 8, Ordering, which states that a BP cannot manipulate the order or contents of blocks for their own gain. Again, this should have led to their immediate removal by other BPs using the rmvproducer action contained within the eosio system contract.

Why did other BPs tolerate this behavior from eosnationftw? EOS Nation’s performance was not even close to other BPs, for example, the account bitfinexeos1 processed approximately 260 times the number of transactions as eosnationftw. However, the highest burden by far fell on EOS Rapid (eosrapidprod), who processed more than 466 times the number of transactions as EOS Nation did from July 6th 2020 to October 28th 2020.

While the vast majority of blocks produced by EOS Nation contained 0 transactions, the few that did contain transactions included specific transactions meant to benchmark their execution time (i.e. eosmechanics benchmarking).

In other words, they were conspicuously including CPU benchmarking transactions in their blocks so that no one would notice something was wrong. This meant that eosnationftw’s missed blocks were not likely to be discovered because their node would appear on the surface to be performant, in fact highly performant: they are basically tied with Atticlabs for execution time.

The difference of course is that Atticlabs achieved this impressive performance while processing an average of 56.64 transactions per second while eosnationftw’s BP node had no real work to process except their own self-serving transactions which covered their tracks.

During this time EOS Nation was paid 105,416.2905 EOS ($263,540.72 USD) in return for being a BP in name only. This was disingenuous and is tantamount to stealing; they were in fact blocking the network every round they were scheduled to produce. Again, other producers could have legitimately invoked the rmvproducer action to avoid this loss to the community, but failed to act for reasons that are currently unclear.

The net effect of producing largely empty blocks probably allowed EOS Nation to run significantly less costly infrastructure, saving money and boosting their bottom line at the expense of the performance of the overall EOS main-net. Evidence for this includes the 56% increase in EOS they sent to exchanges in the first two weeks of November 2020 vs the 3 prior month average, suggesting that turning back on block production has cost them a substantial amount of increased expenses.

2. EOS Nation Begins Abusing Their BP Node to Front-Run Legitimate GRAVY Miners and Manipulate the Price of GRV/EOS

At 11:44:24 EST on October 28th (block number 149,507,144) EOS Nation’s BP node suddenly jerked back to life: eosnationftw started signing blocks that had actual transactions, seemingly like a normal block producer. Perhaps they had a change of heart?

Figure 2: Number of Transactions in EOS Nation’s blocks, note the sudden increase at block 149,507,144

Indeed, that was the moment they decided to go full “How the Grinch Stole Christmas” and started abusing their own BP infrastructure to front run legitimate GRAVY miners, stealing their GRV rewards and brutally dumping them to manipulate an 11-day old market.

GRAVY is a radically innovative Dapp; it is the world’s first decentralized High Frequency Trading Strategy (dHFT). Its strategy’s execution logic is directly powered by the CPU resources of individual miners distributed across the globe.

GRAVY has done more transactions since it launched on October 19th than Bitcoin and Ethereum combined over the same period, and has generated over $16k USD in trading profits that are being shared with stakeholders. Its a project that if allowed to grow unhindered will bring desperately needed positive attention and capital to the EOS main-net

In short GRAVY is the kind of Dapp BP’s should be looking to nurture, if for no other reason than GRAVY is ultimately good for the EOS main-net and thus good for a BP’s bottom line.

However, rather than acting like a custodian of the EOS community, EOS Nation in fact set out to rob our users and manipulate the price of our protocol token, GRV. They did this through a special account they created called gravy.sx. We know it belongs to EOS Nation because their BP account has the signing authority (as of 2020–11–12):

Exhibit 1: Gravy.sx owner and active keys are set to eosnationftw, EOS Nations BP account.

How do we know this account was front running? There are several pieces of evidence:

Firstly, GRAVY, by design, emits a fixed amount of GRV (the Dapp’s protocol token) during the first mine action included in each block. Thus, miners who get actions included earlier in the block receive higher rewards by definition. Therefore, if one miner receives a larger reward than another miner within the same block, we can say with 100% certainty that their action was included before the other miner’s action

Second, EOS Nation’s mining rewards were suspiciously high, in fact they were 121% higher than other miner’s rewards (see figure 3 below). This means that by definition EOS Nation’s transactions were consistently being included ahead of other miners transactions.

Figure 3: The Distribution of Gravy.sx’s (eosnationftw) GRV mining rewards vs an honest miner, note that EOS Nation’s rewards are suspiciously never below 0.003, and their probability of a large reward is orders of magnitude higher than an honest miner

Moreover, not only were their mining rewards larger than your average miner, they were unnaturally large. In Figure 3 we plot the distribution of rewards, i.e. the probability of getting a particular size reward. We can see immediately that EOS Nation (blue) was consistently more likely to receive higher rewards per mine action than an honest miner (red).

As we mentioned briefly earlier, in every new block, the first GRAVY mine action causes a fixed amount of GRV to be issued to reward miners. At the current time, that amount is 0.00289352 GRV. That means that the first miner to push a mine action within a new block should get roughly 0.00024112 GRV as a reward. Startlingly, none of EOS Nation’s mining rewards between 2020–10–30 10:17pm EST and 2020–11–04 5:00pm EST were below 0.0003.

The only way to get a high reward >0.0003 is if there is some GRV left in the contract from the previous block, something that would only happen if the number of miners in that block was unusually low. The only way to get a consistently high reward, however, is to cheat.

Finally, we can see that the largest percentage of Gravy.sx’s transaction volume was included in blocks signed by eosnationftw, e.g. EOS Nation’s own BP node was processing fully 20% of gravy.sx’s mining actions (see figure 4 below)..

This is direct evidence that they were exploiting their own BP node in particular to gain advantage over other miners, which is a clear violation of Clause 8 of the Ricardian contract which governs all BP’s, which states that a BP may not manipulate the ordering of transactions within blocks they produce. The Ricardian contract calls for the immediate removal of any BP found guilty of violating this clause.

Figure 4: The percentage of gravy.sx’s mining actions signed by each producer on 2020–11–04. Note that fully 20% of gravy.sx’s mine actions take place during eosnationftw’s production rounds, a clear indication that they are abusing their position as BP’s to manipulate the ordering of transactions within a block. This front running is a violation of Clause 8 in the ricardian contract EOS Nation agreed to when they pushed regproducer.

Considering that on average there are 27.7 GRAVY mining actions per second being submitted continuously to the main-net by miners all over the world, it seems highly likely that EOS Nation was artificially blocking other honest miners from participating in their blocks, allowing residual GRV rewards to accumulate until they finally “milked” the token contract with gravy.sx.

As GRV rewards accumulated, GRV started automatically dumping at semi-regular intervals (see exhibit 2), showing that EOS Nation was directly profiting from their front-running and attempting to manipulate the price of GRV downward. Their likely motive is to discourage people from using the platform, no doubt for the benefit of EOS Nation’s own arbitrage bots, including trader.sx, which compete directly with GRAVY. This begs the question, if we consider they were willing to front run our miners, is it also highly likely that they are willing to front-run arbitrage as well?

Exhibit 2: Gravy.sx rhythmically selling GRV on Defibox

Seemingly aware of the guilty nature of their actions, on November 4th 2020 they abruptly stopped mining and presumably moved their operations to more covert accounts. We are actively developing methods to identify related sets of accounts, even if they have never transacted with one another.

Methodology

The number of transactions per block, indexed by BP, were extracted directly from a full history (blocks.log) synced to block height 151,468,272 (originally downloaded from archives.eoseoul.io).

We used the eosio-blocklog utility to playback the 21,591,607 blocks between 129,876,661 (July 6th 2020 8:11:30 PM EST) and 151,468,272 (2020–11–08 7:10:42 PM EST).

Counts were then extracted from each block using the jq JSON processor, for example this nifty one-liner can be used to extract the number of transactions in each block between height 146876828 and 147049628

eosio-blocklog -f 146876828 -l 147049628 — blocks-dir data/blocks/ — no-pretty-print | jq -c ‘{block_num: .block_num, bp: .producer, num: .transactions | length}’ > bp_counts_147049628 .json

Other data such as vpay, bpay, average mining rewards and so forth were calculated with data extracted using Hyperion, EOSRio’s history solution.

Appendix A: The State of Open Data on the EOS Main-net

The state of open data on the EOS main-net enables scammers like EOS Nation to operate with impunity. It has become extremely difficult for average users / devs to access main-net data since Dfuse cruelly raised its prices 10x-20x overnight and placed the “community edition” in the hands of EOS Nation who aim to control access to data in order to obfuscate their fraud and make the kind of analysis we have just performed all but impossible.

Furthermore, to everyone who calls themselves a “guardian”, “custodian”, or “monitor” of the EOS main-net, including other BPs, where were you on this one? How did you not see this? If you did see it, why did you ignore it?