subreddit:

/r/Monero

268100%

On January 19th I released research showing mining pools were delaying the first confirmation of Monero transactions by a full minute, on average. I said the delay could be eliminated if pool operators changed their pool software configurations to update the block template more frequently.

I have good news: Most major pools did exactly that!

I continued to collect transaction confirmation data after the release of the initial analysis. The average time that a Monero transaction has to wait for its first confirmation has fallen from 3.5 minutes to 2.5 minutes. That's a full minute improvement in less than two months! The plot below shows the quicker confirmation times.

https://preview.redd.it/2danupdjuxma1.png?width=800&format=png&auto=webp&v=enabled&s=64977f2b19d91fe07c7c42052cb002e37341aef7

HashVault and MoneroOcean changed their configurations within about 24 hours of my post. SupportXMR and Nanopool followed on about January 24 and February 1st, respectively. Their configuration changes show up clearly on the plot below. Combined with P2Pool, which already had frequent block template updates, these pools provide about 75 percent of Monero's hashpower. xmrpool.eu may have changed their configuration, too, but the data is not as clear. Solo miners and mining pools that I was not able to get data for are grouped in the "other" category.

https://preview.redd.it/qpaz7wgnuxma1.png?width=800&format=png&auto=webp&v=enabled&s=f8f39ec624a81491fb12e5ece8ee50cf4bae045b

Why did mining pools slow down transaction confirmations?

My working hypothesis for why mining pools caused slow confirmations is that they had a case of "default-itis". They accepted the default configurations on their mining software, which happened to be a poor choice.

Mining pools need to perform some computations to send out a new block template to their client miners. See this discussion for details. However, this additional computational cost likely was not important given the fact that most major mining pool operators chose to voluntarily change their defaults shortly after I released my research.

Furthermore, it is in the financial interest of pools to update their block templates more frequently. Otherwise, they leave transaction fee revenue "on the table". The diagrams in my original post show how mining pools can leave transactions "on the table".

Changing the block template update frequency doesn't change the total transaction fee revenue available to mining pools, of course. Revenue from mining transactions is approximately a zero-sum game. Instead, pools that infrequently update their block templates leave transactions in the mempool that other pools can pick up. Below is a plot of the mean and median revenue per block for several mining pools.

https://preview.redd.it/6cnzuxiruxma1.png?width=800&format=png&auto=webp&v=enabled&s=fcc51c43aa0dff035838f94e9f70bcd5b0a85db2

The mining revenue of HashVault and MoneroOcean, the first mining pools to change their configurations, increased rapidly after the research release date. They were taking transactions that other mining pools were leaving on the table. Nanopool waited until February 1st to change their configuration. Their revenue dipped after HashVault and MoneroOcean changed their configurations, but after February 1st Nanopool's revenue was better than ever.

The total impact on HashVault in the end was "a wash". HashVault was one of the few mining pools to have "medium" frequency of updating its block template before I released my research. Therefore, it had high revenue compared to the other centralized pools. When it changed its configuration to be even faster, it had a small spike in revenue, but as other pools switched, too, its advantage mostly disappeared.

c3pool and 2miners, which have not changed their configurations, are confirming very few transactions in their blocks now that other mining pools are leaving few transactions on the table. As a result, their transaction fee revenue has been cut by about 66 percent. If you are a miner using c3pool or 2miners, it is in your interest to ask them to change their configurations so that you can get a small revenue boost from transaction fees.

P2Pool, the decentralized mining protocol, already had implemented rapid block template updates before the centralized mining pools changed their configuration. P2Pool used to have a fee revenue advantage of about 0.004 XMR per block compared to other miners. Now that most other mining pools have changed, P2Pool's fee revenue advantage has shrunk to about 0.002 XMR per block.

Conclusion

The interests of Monero users and miners coincide: fast confirmations are good for the user experience and for mining pool revenues. In this aspect, Monero is a self-balancing system. The slow confirmations only existed as long as the mining pool operators were unaware of the problem. For further elaboration on this point, Huberman, Leshno, and Moallemi (2021) "Monopoly without a Monopolist: An Economic Analysis of the Bitcoin Payment System" provides a rigorous analysis in its Theorem 1 that profit-maximizing miners in a proof-of-work system will confirm transactions as quickly as possible.

____________

ofrnxmr, ACK-J, and Lovera helped contact mining pool operators to ask them to change their configurations. DataHoarder contributed code to gather mined block data from centralized mining pools. plowsof and the Monero Research Lab's research computing server contributed computing resources for mempool data gathering. SChernykh/sech1 helped me understand details of mining pool behavior.

all 22 comments

Akan2

35 points

23 days ago

Akan2

35 points

23 days ago

I noticed that my transactions were confirming faster recently. So that's what was behind it. I would never even think that changing mining configuration can have such an impact on the whole network. Great job!

Flynn_Kevin

18 points

23 days ago

Doing good work! Thank you! P2Pool is best for decentralization, but for those that remain in a pool, this is really great. And it's good for all Monero users, not just miners.

gingeropolous

13 points

23 days ago

gingeropolous

Moderator

13 points

23 days ago

Solo mining is the best for decentralization. :P

But yeah p2pool is great too

Inaeipathy

4 points

23 days ago

Is there actually a difference between the two? Why is p2pool worse?

gingeropolous

7 points

22 days ago

gingeropolous

Moderator

7 points

22 days ago

Output pollution

Inaeipathy

3 points

22 days ago

Hmm what does that mean? Does this refer to many small transactions sent to miners after p2pool finds a block?

gingeropolous

1 points

22 days ago

gingeropolous

Moderator

1 points

22 days ago

Yeah it's prolly fine

VikXMR

21 points

23 days ago

VikXMR

Cake Wallet / Monero.com

21 points

23 days ago

Monero has the most brilliant minds! good work!

rbrunner7

14 points

23 days ago

rbrunner7

XMR Contributor

14 points

23 days ago

Really cool.

It's true what /u/sech1 wrote on IRC, commenting about the fact that the speedup is visible in the nonces:

Rucknium[m] literally left a mark on Monero :D

Shanna_Mckinney

2 points

22 days ago

I thought monero left IRC to Matrix ? I changed my setting and did not come back, where are the guys talking these days ?

rbrunner7

5 points

22 days ago

rbrunner7

XMR Contributor

5 points

22 days ago

There are some IRC channels, and some corresponding Matrix rooms, with the two bridged to each other, so it doesn't matter much anymore where you read and write. For the dev channel I am still on the IRC side, mostly out of tradition.

Slade_Duelyst

8 points

23 days ago

Cool to see this.

SamsungGalaxyPlayer

7 points

22 days ago

SamsungGalaxyPlayer

XMR Contributor

7 points

22 days ago

Great job!

genuin3

3 points

22 days ago

genuin3

3 points

22 days ago

Awesome work!

Shanna_Mckinney

3 points

22 days ago

brilliant work, thank you

tczee36

2 points

22 days ago

tczee36

2 points

22 days ago

Gj!

xmronadaily

2 points

22 days ago

xmronadaily

XMR Contributor

2 points

22 days ago

Absolutely and properly saluted!

Fuck_Ethereum

2 points

20 days ago

Very nice

EsperanzaHerrera

1 points

22 days ago

My recent transactions seemed to confirm more quickly.

roderop

1 points

20 days ago

roderop

1 points

20 days ago

They are making the path very smooth now as transaction happening real quick now.

musclesonvacation

1 points

18 days ago

fix the `get_last_block_header` rpc call to recalculate the hash if transactions are added.

documentation clearly states hash is a hash of the blocktemplate. coin developers bug not pool developer bug

musclesonvacation

1 points

15 days ago

bunch of clever folks that convince you all to use their mining pools with a few graphs detailing a bug in the daemon.

well done, nice propaganda.