EOS inflates their blocktivity stats by massively sending batched transactions with a value of 0.0001 EOS

in LeoFinance3 years ago (edited)

Hourly blocktivity stats for EOS

I used eospy for receiving blocks from the EOS api.
The python library can be installed with

pip3 install libeospy

The following script counts all operation on the EOS blockchain for the last hour:

from eospy.cleos import Cleos
from datetime import datetime, timedelta
from dateutil import parser
from timeit import default_timer as timer

ce = Cleos(url='http://eos.greymass.com')

info = ce.get_info()
block_number = info["head_block_num"]
block = ce.get_block(block_number)

start_time = parser.parse(block["timestamp"])
stop_time = start_time - timedelta(seconds=60 * 60)

parse_block_number = 60 * 60
blocksperhour = 60 * 60
start_block = block_number - parse_block_number

total_trx = 0
total_ops = 0

start = timer()
block_count = 0
ops_per_hour = 0
massive_ops = 0
sending_0_0001_op = 0
eosio_token_op = 0
block_time = start_time
while (block_time - stop_time).total_seconds() > 0:
    if block_count % 100 == 0:
        seconds_remaining = (block_time - stop_time).total_seconds()
        print("%.1f seconds remaining... estimated ops per hour: %.1f" % (seconds_remaining, ops_per_hour))
    block = ce.get_block(block_number)
    block_time = parser.parse(block["timestamp"])
    
    for trx in block["transactions"]:
        status = trx["status"]
        if isinstance(trx["trx"], str):
            continue 
        total_trx += 1
        total_ops += len(trx["trx"]["transaction"]["actions"])
        if len(trx["trx"]["transaction"]["actions"]) > 80:
            massive_ops += len(trx["trx"]["transaction"]["actions"])
        for op in trx["trx"]["transaction"]["actions"]:
            if "quantity" in op["data"] and op["data"]["quantity"] == '0.0001 EOS':
                sending_0_0001_op += 1
            if op["account"] == "eosio.token":
                eosio_token_op += 1
    block_number -= 1
    block_count += 1
    ops_per_hour = total_ops / block_count * blocksperhour

duration = timer() - start    


print("Received %.2f blocks/s." % (block_count / duration))
print("Bocks: %d, duration %.3f s" % (block_count, duration))
print("Operations per hour: %d" % total_ops)
print("Trx per hour: %d" % total_trx)
print("Massive ops >80 ops in one trx: %d" % massive_ops)
print("Sending 0.0001 EOS ops: %d" % sending_0_0001_op)
print("Op from eosio.token: %d" % eosio_token_op)

After storing the script as blocktivity_eos.py, it can be started with:

python3 blocktivity_eos.py

Results

EOSpercentage of all ops
Blocks7201
duration3633.908 s
Blocks/s1.98 blocks/s
Trx per hour95982
ops per hour2335876100.00 %
Trx with more than 80 ops222540395.27 %
Transfer Ops with 0.0001 EOS224824596.25 %
Ops from eosio.token225972896.74 %

The account eosio.token account is sending really a lot batched transactions with around 90 transfers operation inside a transaction. Most operations are sending 0.0001 EOS around.

Such a transaction can be seen here:
https://bloks.io/transaction/fdfce13288e2ee8948521fa0a1084b9000cbfe6e2d649047862523bc4508c330

Sending 0.0001 EOS

Excluding ops by eosio.token

EOS without eosio.token
ops per hour76148
ops per day1827552

Using these stats would mean that EOS drops behind XLM on https://blocktivity.info/.

Why is sending eosio.token so many transfers?

My previous guess was the following (seems to be wrong as the transfer are caused by a smart contract)

The following is just my guess. There could be reasons that I did not see.

As transactions are free on EOS when an account has sufficient CPU and NET, it is important that there is sufficient activity on the EOS chain in order to keep the requirements on CPU and NET sufficient high. Otherwise nobody would need to stake (and lock) EOS when using the EOS blockchain. It would also be easy to spam the blockchain.

So sending massive transfers with 0.0001 EOS leads to:

  • Number one on https://blocktivity.info/
  • Other accounts cannot easily spam the EOS network
  • Users of the EOS network are forced to stake EOS in order to be able to use the blockchain

Another observation is that it is surprisingly difficult to find a EOS fullnode that has the BLOCK API enabled.

All these transfers seems to be part of the EIDO smart contract

The massive op amount seems to be caused by the EIDOS contract on EOS https://www.dapp.com/app/eidos.

image.png
In a time duration of 15 month (begin was November 1, 2019, 8am GMT), EIDOS are minted every second. I have no idea why this needs around 600 ops per second, so lets check again in April 2021 when minting should be over.


If you like what I do, consider casting a vote for me as witness on Hivesigner or on PeakD

Sort:  

It is not really fake.

Just bring some mining tokens to HIVE and we will be the most active blockchain in no time.

Posted Using LeoFinance Beta

You are right, I changed the title to EOS inflates ...

Great one holger. I was always amazed how come EOS has such a great number of transactions and very small numbers of apps used by real people. This explain it.

Also your suggestion for pumping the tx in order to create some value for staking EOS seems quite logical.

.

I think it is the official account, as eosio.token does not need to have any CPU or NET staked:

image.png

.

Could be, but the transactions are meaningless, they are just sending 0.0001 EOS without memo. Why sending 90 times 0.0001 EOS to the same account instead 0.0090 EOS once?

Great work!

It looks like someone on EOS has been cooking the books.

Blocktivity should remove these eosio.token transactions unless eosio.token can demonstrate that they are real.

The world is full of deceptions. How can you not remember the expression that everything in the world is an illusion.

So many ghost chains, this shows that #hive should be top 5 in marketcap.

Posted using Dapplr

There's quite an interesting story with EIDOS as it's still somewhat of a mystery as to the purpose of the EIDOS token. Many have speculated that EIDOS is what is known as a "waste token" with the sole purpose of using up the CPU of the mainnet.
Others believe that EIDOS may have been issued to test the limits of the EOS mainnet and it's tx per second.

Still others believed EIDOS was an attack vector designed with the intent to harm the EOS network.

Whatever the case, EIDOS became the crypto-kitties of EOS and clogged up the network, causing major problems for the REX (resource exchange) and most significantly for casual users to make free transactions.

Personally, I haven't been keeping up with EOS much this year for a whole host of different reasons.
This article here is quite good and explains the EIDOS drama and potential pitfalls for similar "waste token" attacks on other DPOS chains.
It's worth reading no matter what your opinion of EOS is.

https://medium.com/@hernanarber_48790/the-interesting-case-of-eidos-and-the-potential-threat-of-waste-tokens-for-eos-and-other-dpos-df245881c1cb

EIDOS = Everyone Is Denied Of Service

Are the various chains really comparable anyway? Each may work slightly differently. It's all just numbers. It's just good to see that Hive is so busy despite a low market cap. Shows how much potential it has and we need more people to know that.

I guess I could send HIVE back and forth between accounts all day to drive up the transaction count.

Yeah I was glad to see us in the highest ranks despite not having top 100 (hell, top 20) of a market cap compared to some of these big boys. Under valued chain for sure!

There was a time when STEEM was top 10! HIVE needs to get more people engaged. It is technically good and has more ways for people to get involved than others, even if they don't have money to invest. That should make it a top 20 coin.

Yeah but you have chains like Tron who use bots to post a trillion transactions lol I forget who shared that a few weeks ago but I saw a quick clip on it. Pretty cray! Those chains are the ones that keep us out, in my opinion.

That's right, I was just surprised about the amount. Why are 96.25 % of all EOS ops a transfers of 0.0001 EOS without memo?

This is a great analysis and it puts the EOS blockchain in line to what the other ones are doing and explaining the gap. Thanks for showcasing the reason for that and that it is not real usage. Probably we could do the same on Hive, but to what gain....

Posted Using LeoFinance Beta

It seems you are intent on getting to the bottom of all the Blocktivity rankings.

So it doubles up Hive transactions and EOS is inflated. I wonder what some of the others are doing like Tron.

Great efforts of uncovering what is taking place.

Pretty interesting here, side note, I'm really glad that I moderately understood your code there since I am studying Python :D.

I would lend more credence to the theory that they are purposely doing it in order to keep the transaction cost higher so people can't spam but it also requires people to buy tokens in order to use the chain.

From what I understood these high transactions of Ei-dos have been happening for a long time now. At one time they stopped other transactions getting through. It is impressive that they were able to scale to facilitate. It has been talked about many times in the EOS community.

I AM SHOCKED!

Shocked I tell ya! lol

I mean this was very obvious from the start, but it's nice to have evidence.
When transactions are "free" transactions per second doesn't mean anything.
It's a stupid metric for all DPOS chains that means nothing.

Nice work.

And to think we were all legit worried back in the day that EOS could crush us.
No competition here.

As transactions are free on EOS when an account has sufficient CPU and NET, it is important that there is sufficient activity on the EOS chain in order to keep the requirements on CPU and NET sufficient high. Otherwise nobody would need to stake (and lock) EOS when using the EOS blockchain. It would also be easy to spam the blockchain.

Interesting/plausible conclusion.

$tangent


Congratulations, @asimo You Successfully Trended The Post Shared By @holger80.
You Utilized 3/3 Daily Summon Bot Calls.

TAN Current Market Price : 1.940 HIVE

It's basically dead.

My first instinct is to ask if this is some kind of rewards being sent out for staking or another scheme? It seems eos automatically had me staking 5 eos on exodus and the rewards would come in those tiny amounts


Congratulations @holger80, You Earned 0.528 TAN & Curators Made 0.369 TAN.

tangent.token


Join CORE / VAULT Token Discord Channel or Trade TANGENT Token
TAN Current Market Price : 2.000 HIVE

Are you still working with EOS payment wallets or have you incorporated a free wallet?