Pages:
Author

Topic: Bitcoin's Empty Blocks Analaysis. - page 2. (Read 853 times)

legendary
Activity: 2436
Merit: 6643
be constructive or S.T.F.U
May 05, 2020, 05:55:27 PM
#25
If I'm not mistaken, the time between blocks can even be negative if the miner's clock is a bit off.

You are right, he only rule that stops miners from mining blocks with timestamp in the past is the MPT rule, which states that timestamp of any given block must be > than the median time of the last 11 blocks, since the median of 11 blocks is block 6, this means

Timestamp of block 12 can be

less than block 11
less than block 10
less than block 9
less than block 8
less than block 7

can NOT be less than block 6 timestamp, provided block 1 to 11 didn't have any negative timestamps, if they do, the calculation method will be different, the code simply takes the past 11 timestamps and get the median of those, which is always the 6 blocks back if they all had positive timestamp differences, I might be mistaken, would love to be corrected.

so timestamps can be negative, not only if the miner's clock is off, it could be done intentionally, but to miners best interest (assuming they are not purposely mining empty blocks and trying to hide it) is to fake the time to be LONGER and not shorter, because that gives the miners a decrease in difficulty while the latter causes an increase in difficulty and thus reducing their rewards in the future.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
May 05, 2020, 06:06:35 AM
#24
Yesterday, I saw that link https://gz.blockchair.com/bitcoin/blocks/ but I gave up when see their message that all files require over 1Tb.
Great find! But it's much, much less than 1 TB. I'm downloading this now (at 10 kB/s) to make a big csv. If it has enough data it's much faster than scraping all blocks.

it is worth noting that timestamps are only as accurate as the clock of the computer that created the block to be mined. specially when the plan is to compare the timestamps with a high accuracy of a couple of seconds you have to take the room for error in mind.
If I'm not mistaken, the time between blocks can even be negative if the miner's clock is a bit off.
legendary
Activity: 3472
Merit: 10611
May 03, 2020, 10:59:18 PM
#23
I'll see what I can do. I kinda want to just scrape everything, and make a huge csv. That'll come in handy for other analyses too.
It would be cool to see that a huge amount of empty blocks by antpool were 30-60 seconds
vs 1-10 seconds as it would expose a pattern of bad acting that they are accused of.

it is worth noting that timestamps are only as accurate as the clock of the computer that created the block to be mined. specially when the plan is to compare the timestamps with a high accuracy of a couple of seconds you have to take the room for error in mind.
legendary
Activity: 2436
Merit: 6643
be constructive or S.T.F.U
May 03, 2020, 07:52:16 PM
#22
I'll see what I can do. I kinda want to just scrape everything, and make a huge csv. That'll come in handy for other analyses too.

If that's not too much to scape I would encourage you to do that, I am also interested in block-size analysis, kind of want to see if we are really fully utilizing the block-size we have now or we aren't and all these calls for block size increment are unlogical, further analysis like how often do we really get unusual block time such as 1 or 2 hours block is also interesting, different studies require different data, so scrapping everything especially from blockchair.com will be really useful, good luck and please keep me updated.



Yesterday, I saw that link https://gz.blockchair.com/bitcoin/blocks/ but I gave up when see their message that all files require over 1Tb. If it is what you will have to scrape everything, it is good to download their files to save time.  Cheesy

1TB is TOO MUCH, those files probably contain everything about the blocks and more, the current blockchain size less than 250gb, the data we need shouldn't be larger than 1mb in a text/excel format, I most certainly can't process a 1TB worth of data.


It would be cool to see that a huge amount of empty blocks by antpool were 30-60 seconds

vs 1-10 seconds as it would expose a pattern of bad acting that they are accused of.

Phill, I will probably still do that analysis for you and the other person who requested it, but I can tell you beforehand that it will prove NOTHING, bitmain can find blocks in 30 seconds and fake the time in the block header to be 3 seconds unless you could hack into their database and assuming they do keep such records, the study will prove nothing, you are counting on their stupidity, integrity, and kindness, and we both know bitmain doesn't have any of those three aspects.
legendary
Activity: 2310
Merit: 4085
Farewell o_e_l_e_o
May 03, 2020, 06:32:08 PM
#21
Yesterday, I saw that link https://gz.blockchair.com/bitcoin/blocks/ but I gave up when see their message that all files require over 1Tb. If it is what you will have to scrape everything, it is good to download their files to save time.  Cheesy

I have not yet used or extracted any file with that format. I searched and found TSV means tab separated values. I will try to extract one file to see how it looks.

I still think include blocks that have same amount of generation and reward BTC is good because we will know there are how many percent of fake empty blocks with same generation and reward BTC.

How to include that condition from what you have us?
https://blockchair.com/bitcoin/blocks?q=transaction_count(1)#f=time,guessed_miner,transaction_count

Your current conditions result in less than 90k results!
legendary
Activity: 4326
Merit: 8950
'The right to privacy matters'
May 03, 2020, 06:19:04 PM
#20
I'll see what I can do. I kinda want to just scrape everything, and make a huge csv. That'll come in handy for other analyses too.

It would be cool to see that a huge amount of empty blocks by antpool were 30-60 seconds

vs 1-10 seconds as it would expose a pattern of bad acting that they are accused of.

hero member
Activity: 1659
Merit: 687
LoyceV on the road. Or couch.
May 03, 2020, 04:09:08 PM
#19
I'll see what I can do. I kinda want to just scrape everything, and make a huge csv. That'll come in handy for other analyses too.
legendary
Activity: 2436
Merit: 6643
be constructive or S.T.F.U
May 03, 2020, 04:00:46 PM
#18
If you tell me exactly what you need, I can get it in about 2 weeks. Running on a VPS is not a problem, assuming Blockchain.com hasn't changed scraping restrictions.

The problem now is that some members want to know the time difference between empty blocks and the block that came before them, to analyze this kind of data Blockchain.com is not enough as it doesn't show the full timestamp, it's missing the last two digits the represent the seconds, the only explorer I am aware of which provides the full timestamp is https://blockstream.info.

for this study, I will need the following columns.

Height
TimeStamp
Transactions (only the number)

If possible (depends on how you scrape the data, you could exclude all blocks that are not followed by a block which has 1 transaction (empty block), this will reduce the data by a tremendous amount, if you can't filter the results, it's okay, I can do it.


Now in regards to a similar study in the OP but with longer data, all I need is

Miner
Timestamp
Transactions ( number of transactions)

You still can't use blockchain.com because it doesn't show the timestamp, so really blockchain.com is no use, and you will need to use blockchair for that, here is a permalink of what I need https://blockchair.com/bitcoin/blocks?q=transaction_count(1)#f=time,guessed_miner,transaction_count


I think these following indicators are enough (choose them from the General section):

Height
Mined on
Miner
Generation (BTC)
Reward (BTC)


Three of those are not needed for the study, please refer to my explanation above

Quote
I tried but it only narrows down time window and only 10 lines of result are displayed.

Exactly, that's the problem, Imagine how time-consuming that was when I had to do that manually for 5 years of empty blocks   Grin, but I can only think that there is a way to automate this.

legendary
Activity: 2310
Merit: 4085
Farewell o_e_l_e_o
May 03, 2020, 06:30:05 AM
#17
I set a 1.8 second delay in between page loads. If you tell me exactly what you need, I can get it in about 2 weeks. Running on a VPS is not a problem, assuming Blockchain.com hasn't changed scraping restrictions.
https://blockchair.com/bitcoin/blocks?q=time(2020-05-02%2010:19:32..2020-05-03%2010:19:32)

I think these following indicators are enough (choose them from the General section):
  • Height
  • Mined on
  • Miner
  • Generation (BTC)
  • Reward (BTC)

Raw data will be like that, and I can import data with tab delimiter to find which blocks are empty and related details (miners & date time)  Smiley
Code:
Height	Mined on 	Miner	Generation (BTC)	Reward (BTC)
628553 2020-05-02 10:15 OKEX 12.50000000 13.36347909
628552 2020-05-02 09:59 F2Pool 12.50000000 12.71661242

I don't know what does it mean with the part from the link above
Code:
(2020-05-02%2010:19:32..2020-05-03%2010:19:32)
Can we set up something to display all time data?

I tried but it only narrows down time window and only 10 lines of result are displayed.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
May 03, 2020, 06:24:07 AM
#16
I could do a 10 years analysis instead of just 5, the only issue is scraping the data from blockchair.com, it took me very long to get 5 years worth of data, however, if someone (maybe LoyceV or DdmrDdmr) can help me scrape the data I'll be willing to make a 10 years analysis.
A year ago, I scraped all block headers from blockchain.com (for this topic). Around the same time someone posted a link to a site that allowed to quickly select this data, but I can't find it back.
I set a 1.8 second delay in between page loads. If you tell me exactly what you need, I can get it in about 2 weeks. Running on a VPS is not a problem, assuming Blockchain.com hasn't changed scraping restrictions.
legendary
Activity: 2310
Merit: 4085
Farewell o_e_l_e_o
May 03, 2020, 05:40:37 AM
#15
I could do a 10 years analysis instead of just 5, the only issue is scraping the data from blockchair.com, it took me very long to get 5 years worth of data, however, if someone (maybe LoyceV or DdmrDdmr) can help me scrape the data I'll be willing to make a 10 years analysis.
I checked at https://blockchair.com/bitcoin/blocks?q=
It seems they only allow 10 blocks in a new batch of result. I don't find option to set up time window to get all time data. Or did I miss something? If there is such option, I can help you.
legendary
Activity: 2436
Merit: 6643
be constructive or S.T.F.U
May 03, 2020, 02:16:22 AM
#14
that number makes no sense at all.

Well, you can complain to "Antonopoulos" who mentioned the 2000%, or you can prove him wrong, or I can save you the trouble and explain to you why he is right.

Here is the calculation from whattomine.com for a single miner that does 10th and consumes 1000w ( pretty much similar efficiency to the most famous miner Antminer S9 taking the average rate of 6 cents per Kwh the miner earns exactly $0.02.

Now running the miner with Asicboost which can achieve up to 30% decrease in power consumption, the miner now uses only 700 wats and makes 0.46$ a day that's a 23 times more profit aka 2200% more profit, and by the way, I am not even trying to tweak any numbers to get to these results, i am using the average gear with the average power rate, results can be a lot better for many other miners.


Quote
in any case let me ask you this, since you claim the reason for empty blocks is ASIC boost how do you explain lack of it nowadays? 2000% increased profit seems to be an excellent incentive to always use ASIC boost and mine empty blocks.

Bitmain still uses Asicboost,  I personally use Asicboost, almost everyone and their grandmother uses ASICboost nowadays and get 20-30% saving on the power cost aka 2000% more profit, what you must understand is that there are TWO types of ASICboosts, the COVERT used previously by bitmain which bitmain then denied, that type of ASICboost has to do with empty blocks, the community opposed it because it's patented and it's not easy to detect and is not compatible with SegWit.

The OVERT Asicboost is a whole different story, it's the one we use now, has no effect on empty blocks, easily detectable, etc.


I hope that by now the confusion is gone.
legendary
Activity: 3472
Merit: 10611
May 03, 2020, 01:18:45 AM
#13
using Asicboost yields up to 2000% more profit,

that number makes no sense at all.
mining is calling the SHA256 compression function 3 times, this "boost" is changing these 3 calls by fixing the result of one for part of the computation and the result is far less than 2000% profit!!! it would at most increase it by 10%.

in any case let me ask you this, since you claim the reason for empty blocks is ASIC boost how do you explain lack of it nowadays? 2000% increased profit seems to be an excellent incentive to always use ASIC boost and mine empty blocks.
legendary
Activity: 2436
Merit: 6643
be constructive or S.T.F.U
May 03, 2020, 12:35:20 AM
#12
as for ASIC boost, it is an optimization that could only makes sense financially. using this optimization to the algorithm with which a miner computes the block hash will only give a very small "boost" that small boost could only make sense if mempool was empty or had very low paying fees.

What do you mean by a small boost? using Asicboost yields up to 2000% more profit, even now with overt Asicboost mining gears run with 20% less power, giving the fact the profitability margin is too small a 20% savings on the power bill is a dozen time more profit, miners rather mine empty blocks using Asicboost than including your transactions even if you think you were paying high, overt Asicboost, however, does not have the tendency of generating empty blocks, so miners still use the boost and include your transactions, but the former is more important to them than the latter 99% of the time.

As far as May 2017, I did point that

Quote
Aside from Covert Asicboost, there is a good possibility that some mining pools were purposely refusing to include transactions in the blocks they mined, causing a delay in transactions confirmation probably to give the impression of bitcoin "block is too small and we must increase it", this perfectly coincides with the spam attacks on the blockchain which happened in 2017, to be more accurate, May 2017 as shown in the chart below.


Quote
p.s. why does all your charts say number of "blocks" instead of "empty blocks"?

Sorry, I forget to add the word "empty", figured that out later but then I thought that shouldn't be so confusing given the blocks number is too small and the obvious topic title and content which focuses on empty blocks, thanks for pointing that out anyway.
legendary
Activity: 3472
Merit: 10611
May 03, 2020, 12:11:01 AM
#11
the main reason for empty blocks has always been SPV mining, that is the fact that miners didn't verify the previous block completely before starting the next so they start with an empty block until they verify the previous one and be able to update their mempool and add new transactions to their block. sometimes they get lucky and find the answer to that empty block and publish that.
since during the past couple of years there has been a lot of improvements in the speed of transaction verification process with all the optimizations done by core team and SPV mining is not that common anymore we are seeing a much reduced number of empty blocks nowadays.

as for ASIC boost, it is an optimization that could only makes sense financially. using this optimization to the algorithm with which a miner computes the block hash will only give a very small "boost" that small boost could only make sense if mempool was empty or had very low paying fees.
ignoring the 2015 in your chart, the 2017 spike doesn't make any sense to be linked with ASIC boost since during that spike on your chart we were paying miners between 3 to 5 bitcoins in fees in total per block. in other words an empty block was losing somewhere around $8000 (25% of block reward).

p.s. why does all your charts say number of "blocks" instead of "empty blocks"? i'm confused...
legendary
Activity: 2436
Merit: 6643
be constructive or S.T.F.U
May 02, 2020, 11:51:49 PM
#10
That probability explains the seconds difference in the timestamp but those "few seconds block" that are empty can't be a coincidence.
Because if it's just luckily mined, then it shouldn't be empty unless it's purposely made empty.

Nop, the probability explains exactly the chances of actually finding a block the very next second, it has nothing to do with the timestamp, in other words, if you were mining your own blockchain with 0 verifications needed, the chances of hitting a block in that very next second is always 0.166% (provided the mean time is 600 seconds), empty blocks are found in a very short time anywhere from => 1 second and < the time needed to validate with the previous block.   

We could also be talking about different things here, but the use of the word "purposely" creates confusion, miners want nothing more than extra profit, they have every interest in the world to NOT mine empty blocks WHEN they can fill them with transactions, but they have no problem with mining empty blocks when they happen to find one BEFORE being able to download the previous block, validate the transactions, clear the memepool, reconstruct the block and then propagate it, so this is not really "purposely" mining empty blocks, because "purposely" means they "CAN SAFELY" include transactions but they chose not to, which is not the case at all because nobody is mining empty blocks for the sake of it.
legendary
Activity: 2618
Merit: 6452
Self-proclaimed Genius
May 02, 2020, 11:35:16 PM
#9
-snip-
I don't think anybody uses Covert Asicboost anymore, finding blocks in the next second at any given time always has a probability of 0.166%, if everyone was mining with a pen and paper, people would probably still mine empty blocks.
-snip-
That probability explains the seconds difference in the timestamp but those "few seconds block" that are empty can't be a coincidence.
Because if it's just luckily mined, then it shouldn't be empty unless it's purposely made empty.

But since it's usually only seconds after the previous block, there's low to zero effect on the network when it comes with transaction validation.
So I agree with the second paragraph.
legendary
Activity: 2436
Merit: 6643
be constructive or S.T.F.U
May 02, 2020, 11:16:59 PM
#8
Great analysis. Could you factor in the timestamp/the timing received by blockchair into the graph? It would be a lot clearer to see the timings between the empty blocks and the block before it.

I could but there are two problems, the first one is scraping the data of blockchain,took me forever to extract the data for empty blocks which is nothing compared to the total number of blocks, but if someone has a better way of getting those data, put them in a table format like excel and send them to me, I can do it and even more perhaps.

The second problem is that time-stamping isn't exactly accurate, they are accurate enough to be used to adjust the difficulty, but not accurate enough in a sense that we can use them to reach to any conclusions, maybe if we find empty blocks coming after a long enough time (enough to actually validate the transactions of the previous block) and still come in empty, we would confirm that a certain pool did actually have enough time but did not include transactions on purpose, however, since the time-stamp is actually put in the header of the block by whoever mines it, they can manipulate it, say I find a block 60 seconds after the last block was propagated (nobody knows about it yet), I need 30 seconds to validate the previous transactions and reconstruct the pool, but I decide not to include any transactions, I can conveniently lie and say I found the block in 10 seconds, who is going to stop me from doing so?


JUST a fast check of three shows a big difference in time 6 to 32 seconds.

I don't think anyone knows exactly how long it takes a mining pool to fully download and validate the previous block, but I am pretty sure it's less than 32 seconds, of course, more complex blocks take slightly longer, but 32 seconds can't be it, why do I think so?

Applying cumulative distribution function, the probability of blocks being found between 1 and 32 seconds can be derived by:

exp(−1/600)−exp(−32/600) = 5.36% of blocks would be empty, in other would we would "in general" have an empty block every 18.6 blocks, that's nearly 8 blocks a day which would result in 2920 blocks per year, which never happened even when was well-intended.

so really 32 seconds is more than enough to validate the previous block, deal with the memepool and reconstruct the next block WITH transactions in it, but where did the 32 seconds come from?

1- That node's memepool was empty. > very unlikely.
2- The time reported is actually "wrong" > Very likely.


I would still do the analysis, but really the results will be meaningless


people scream empty blocks are  pools being bad actors

is it simply the pools are really big?

The fact that the time to mine those blocks is within seconds and the number of transaction is '1' (Coinbase TX) tell that those are probably mined with 'Covert ASICBoost'.
Because not including any transaction is the easiest way to generate a Merkle Root Hash (hashMerkleRoot) with fixed last 4 bytes.

But there's no evidence so I'll leave it with "probably"  Smiley

I don't think anybody uses Covert Asicboost anymore, finding blocks in the next second at any given time always has a probability of 0.166%, if everyone was mining with a pen and paper, people would probably still mine empty blocks.

To explain even further, for the past 4 months of 2020 we had exactly 14 empty blocks every month, that's a bit less than 0.5 blocks a day, this is below normal as far as statistics and probability are concerned, applying the above formula and assuming for the sake of it that 5 seconds is more than enough to validate the transactions it is still OKAY to mine an empty block once every day, I think the number of empty blocks for the past 2 years is pretty normal.


legendary
Activity: 2618
Merit: 6452
Self-proclaimed Genius
May 02, 2020, 10:37:21 PM
#7
people scream empty blocks are  pools being bad actors

is it simply the pools are really big?
The fact that the time to mine those blocks is within seconds and the number of transaction is '1' (Coinbase TX) tell that those are probably mined with 'Covert ASICBoost'.
Because not including any transaction is the easiest way to generate a Merkle Root Hash (hashMerkleRoot) with fixed last 4 bytes.

But there's no evidence so I'll leave it with "probably"  Smiley
legendary
Activity: 4326
Merit: 8950
'The right to privacy matters'
May 02, 2020, 10:09:56 PM
#6
Great analysis. Could you factor in the timestamp/the timing received by blockchair into the graph? It would be a lot clearer to see the timings between the empty blocks and the block before it.



I am interested in time breakdowns  I would love to see how many zero fee blocks are due to the sheer size of the pool

ie lets say under 10 seconds
vs something seems wrong lets say 30 seconds.

JUST a fast check of three shows  a big difference in time 6 to 32 seconds.

people scream empty blocks are  pools being bad actors

is it simply the pools are really big?


@ mikey thanks you thread made me consider that size is a bigger factor then I realize.

BTW  I think covert asic was done bigly back in the day.

I also think if someone uses  time analysis along with empty block like you did you can get a better idea of what was happening.
Pages:
Jump to: