Miner Centralization

Yeah I think we’re mostly on the same page and using different words. I was just trying to differentiate

  1. Returns to scale: from the btc fee being a smaller % of the mining cost the more you bid. And discount mining whereby mining becomes effectively cheaper the more you have stacked (because some of your mining cost comes back to you as stacking income)

  2. The situation where it’s transparent that there is no remaining arbitrage value between mining STX vs. buying STX.

Even without 1. you would still have 2. Although I agree with you too that large miners have the ability to mine at a loss for longer and thus “crowd out” smaller would-be miners.

The core of the problem as I see it is that mining (on an economic incentive level) is just arbitraging the BTC/STX price from mining vs buying it on an exchange. Arbitrage opportunities don’t naturally lead to many multiple participants. The fact that we even have 5 miners (vs. just 1) probably has more to do with cultural pressure than the economic incentives.

Any solution to solve this has to prevent the mining incentives from just being a competitive arbitrage. There has to be a way for new miners to join without driving existing miners into unprofitability.

—Crazy(?) Idea—

What if somehow the protocol could go out and buy enough STX on the market to add to the coinbase reward to ensure that miners were never mining at a loss no matter how many joined in.

xBTC/STX AMMs already exist - what if the protocol could use one to dynamically increase its coinbase reward to respond to additional miners? Instead of being sent to stackers the marginal sats could be converted to xBTC and used on the AMM to swap for STX.

It would be purely breakeven or slightly losing after transaction fees, so there would still not be a profit motive to mining under this scenario, but you wouldn’t be actively torching money for yourself and other miners by joining in either. Removing that uncertainty could dramatically increase participation.

The problem we are trying to address is not that large miners are setting an equilibrium, but that the current equilibrium that they set resulted in 6 active miners.

What matters is the actual mechanics. The trees here vs the forest. Look at the dust mining SIP; we add a new mechanic, and can increase the number of miners up to 10x. We didn’t change PoX and large miners are still crowding out smaller ones, but the equilibrium is much higher.

While the bidding approach suggested by @shea256 can still allow large miners with lots of capital to crowd out smaller ones, IMO it will result in a much larger equilibrium than the spending approach.

The spending approach has greater loss scenario for small miners and allows bigger miners to crowd them out with less capital.

In the bidding approach, the “no loss” mechanic means smaller miners will never get wiped out from variability. Not only is this an easier entrance for smaller miners, but also, it favors purely altruistic actors who just want to support the network because they can lock up 1k STX and run a miner that guarantee they won’t ever lose money. We could support 500+ altruistic miners just from all the developers/founders in the community. Gift them an NFT for their service they can use to brag.

On the flip side, in the spending model larger miners can keep more of their bank roll in other yield generating protocols. There is actually a cap on the bank roll you need for the spending approach as the equilibrium is already at 5 miners. The bidding approach has a much larger cap, therefore, miners would have to be willing to lock up an order of magnitude more capital to compete in this model.

So my point is, while both models effectively allow larger miners to crowd out smaller ones to some degree, they still result in very different equilibriums, if only from the facts that the bidding approach eliminates transaction fees and also allows altruistic miners to mine without any loss scenario.

I could be wrong, but it needs to be modeled out. I would look at the number of mining slots in the bidding model to where miners can generate 10% on their locked-up collateral . In the (albeit amateur) model I created for the current mining scenario, at a STX price of $2.20 and BTC price of $66k, 40,900 SATs/block/miner generating a 10% return resulted in theoretical limit of 73.8 miners.

In the immediate term, I think it is a high priority for quick fixes such as the dust mining SIP. I would even consider for the dust mining SIP we go as high as possible and increase the block rewards to offset the lost APY. We need to create a flywheel where more decentralization = higher STX price. Without 1,000+ top level miners we will not attract the same liquidity or developer interest. Even Solana has over 1,000 validators. We should have at least that many.

1 Like

Here’s a poll just for fun:

1 Like

Correct - the issue is that large miners are able to set the equilibrium at 0% or even below 0% profit margin, giving rise to a mining oligopoly with tacit collusion.

Hasn’t this not occurred yet? It theoretically will increase the number of miners, but not likely significantly reduce the percentage of mining concentrated in the largest miners (it’s dust transactions after all).

This is exactly the problem - if you do nothing else but increase the aggregate mining profitability, the existing large miners will grab those increased profits, just like they have grabbed existing profits. The distribution, concentration, and composition of miners will not change.

Imagine just increasing the block reward to make room for small miners - large miners will just increase their bids, and we’ll be right back to where we started.

Cutting out transaction fees is conceptually similar to increasing block rewards. Whereas block rewards increase revenue, cutting out transaction fees reducing costs - both have the same bottom line effect of increasing total profits available to all miners. When you increase total profits available to all miners, and change nothing else, those profits are going to go directly to the big players, via the exact same mechanism the original profits have! It’s just as helpful as increasing the coinbase reward and hoping for the best.

Incorrect - just because you don’t pay transaction fees, does not mean that the overall mining price of bids can be mining at a net loss to BTC<>STX prices. And if you idea is that a miner wouldn’t have to submit BTC for a block they won unless they wanted to (ie unless it was profitable), then that makes the whole chain incredible easy for an attacker to effectively paralyze. If there is a slashing cost or downside to not doing so, then even a good meaning miner, who just wants to at least breakeven can very easily find themselves with a loss.

If the mining profit margin (which remember, is set on an aggregate level, predominantly by large miners), is negative, then small miners will either have to pay BTC for STX at a loss, or be slashed and lose funds.

This does not create a no loss mechanic.

I disagree with both these conclusions, as covered above. The increase to equilibrium will accrue right to large miners, and altruistic miners do not have no chance of loss.

This is modeling a maximum possible number of miners assuming every miner is targeting a 10% profit. Mathematically it looks correct, I agree that in your scenario and constraints, the maximum number of miners is about 74.

But figuring out the maximum number of miners that could all be profitable at once is not the issue at hand! Right now, more than 6 miners could be mining all profitably - but they aren’t!

Figuring out how to design a system that will result in >6 miners is the issue at hand, not calculating if it’s theoretically possible (it clearly is).

This model says nothing about why the number of miners is not higher, or how to address the number of miners being below the possible maximum - it just calculates a possible maximum. If everyone played nice, didn’t compete, promised not to bid against each other, and all were happy with a 10% profit margin, then 74 miners could be facilitated.

But that is obviously unrealistic assumptions and falls apart if any of the following occur:

  • One or more miners are alright with <10% profit margin, even if just temporarily
  • One or more miners tacitly or explicitly collude to price out competition
  • One or more miners are large stackers, and can thus mine at what would be effectively a <0% profit margin for other miners
  • One or more miners don’t care about profits, and just mine larger than the minimum size
  • One or more miners are malicious attempt to attack the network by overbidding to win blocks (forcing other miners into a losing price)

Personally, I have yet to see any convincing argument from anyone for fixing this problem that does not deal with the fact that though PoX and PoW are virtually identical in theory, in practice, it is easier for heavily capitalized players to dominate PoX than PoW. This issue is further exacerbated by, though would be present regardless of, stacking rewards providing large capitalized players effective rebates on their mining bids.

1 Like

Just putting this out there:

I think we should look at the various proposals on the table and compare their pros and cons.

What are the metrics we care about and how would each of them impact those metrics.

OK, so this is where we disagree. I don’t think the increase in equilibrium will accrue to the large miners and I haven’t seen any evidence of this. In fact, the existence of 5 active miners for over a year, instead of 1, is evidence against this.

  1. Do you at least agree in the bidding model as proposed, it is relatively more difficult for large miners to crowd out small miners than in the spending model?

  2. Do you also at least agree that the bidding model will lead to less chance of loss for small miners than a spending model?

Also, what do you mean the increase in equilibrium will accrue to large miners? Are you agreeing the equilibrium is increased by the bidding model? If large miners can make more profits, but the equilibrium is increased and we have more miners on the network, who cares? We achieved our goal.

There are many ways to increase the equilibrium through changing the mechanics, such as making the entry price lower and the economies of scale weaker. There can be diminishing returns without actually coding into the algorithm literal diminishing returns. Proof-of-Work has proven this, so I don’t understand why this is an argument on the table.

Proof-of-Work has also proven that some subset of people will mine altruistically, as many did in the early days of Bitcoin. These people can be valuable to bootstrap the network. But people these people will not mine if:

  1. it costs too much
  2. it’s too easy to lose money
  3. it’s too difficult to setup a miner

All of these are true today. All of these would be greatly improved by the bidding approach.

We’re not even at the stage where we need to worry about large miners. The current “large miners” are actually small fries compared to the real “large miners” out there.

We could hit over 1k miners just by fixing these levers. Which is why I am in favor of the bidding approach and think it is a clear improvement over the spending approach (assuming the implementation details can be worked out).

Let’s create a hypothetical scenario, where a large miner comes in and puts up, say $100M STX in collateral to try and crowd others out. That would be a good thing, would it not?

  1. Everyone could see it and have a chance to respond
  2. It would be a huge market signal
  3. Price of STX would skyrocket
  4. It would be effectively the same thing as someone onboarding $100M in compute to a Proof-of-Work network

Where’s the problem?

I’ve hacked together a quick model for the bidding approach.

It appears that large miners do not crowd out smaller miners after all, but that the APY across all miners is the same no matter the amount of capital a large miner puts in.

If a massive miners puts up more capital, it decreases the APY for everyone equally. This is even better than I thought.

Please let me know if you find any mistakes as it’s 2AM here.

Note: I am assuming the bid in Sats will match the STX collateral 1:1.

2 Likes

Thanks for doing this analysis Trevor, looks great!

+1 to this. The current mining pool proposals (BFT running within pool participants?) sounds fairly complex to me and there is always a cost of increasing complexity.

I’m not against mining pool proposals, I view them as something that can be done in parallel and can be complementary. Mining pool proposals are not a substitute for increasing independent miner count.

Yep, they’re very similar! The dust mining SIP I’m talking about is very similar to your ideas :slightly_smiling_face:

One trend I’m noticing here is what Jude calls adversarial thinking can come across as “I’m against this proposal and here is why it sucks”. In general, I’m loving the fact that so many ideas are being discussed here and as a community we should have a culture where new ideas and proposals are welcomed. Yes, there is always a place for adversarial thinking but welcoming new ideas and encouraging them should come first.

Big +1 to this. I’d say that there is (a) technical decentralization and (b) perception of decentralization. You can have (a) and fail at (b) and still fail because if the industry perceives a system to be centralized then you’ll face all the downsides for as if you were actually centralized. You need to solve for both (a) and (b) and in our case of total no. of independent on-chain miners this is about both (a) and (b). This is not a vanity metric at all and thinking about it as a vanity metric is counter productive. I do think that as a community we can agree that this metric is important (not a vanity metric) to help move forward the various discussions.

Agreed. That is why I was engaging more in the block reward curve discussion. The total security budget of the network (not the topic of discussion here) is a very important metric to worry about.

The dust fee mining SIP basically focuses on this. It creates two lanes for miners: the highway and a bike lane, the bike lane adds to decentralization (as measured in total no. of independent miners) and the highway adds to the total security budget to attack the network (the bike lane doesn’t contribute much to the total security budget).

3 Likes

Am I to understand that you believe that doing a wholesale replacement of the entire mining system is somehow less risky and less complex? Are you aware that adding support for decentralized mining pools requires almost zero changes to the system, and does not touch the mining mechanics at all? The only consensus-breaking change needed is making it so that a Stacks block can pay its block reward directly to a smart contract, instead of the miner. The pool design and implementation is orthogonal to this, and is outside the scope of the blockchain.

Lol. If I’m paying X% of the BTC and have X% of the decision-making power in what block gets mined, then it doesn’t matter how it maps onto Bitcoin transactions, does it? My decision-making power exists whether you choose to see it or not.

Yes, and we should also have a culture of humility and self-discipline where people who are serious about making consensus-breaking changes take the time to get them vetted early and often.

I guess that would depend on how you present the facts, right? Like, which chain is more decentralized?

  • A chain with 10 miners, none of whom are dominant

  • A chain with 1 dominant mining pool, but whose block-commits are funded by a 667-of-1000 taproot script and whose block contents are decided by a 667-of-1000 vote by the key holders

I keep seeing allusions to this. Is there a draft somewhere?

1 Like

No one is debating this point. We’re debating the complexity of the final solution. Of course the implementation cost needs to be factored in, but we aren’t even at that point of the conversation. The order of operations should be to compare the models one for one, then evaluate the opportunity cost. If the opportunity cost is too significant, at that point it can be axed. I’m not saying this because I’m in charge of anything (I’m not), just that’s what I expect it will take to come to a conclusion on this.

You’re assuming mining pools actually get the adoption you think they will. This is far from a given.

Also, you’re assuming the market cares about this argument. Your argument can be sound, but if the market doesn’t accept it, we’re back where we started. This is a big risk as you’ve pointed out many times we’re fighting against 10 years of intellectual conditioning.

The way you are presenting it is quite one-sided.

How about reframing it as:

  • A chain with 600 miners, none of whom are dominant
  • A chain with 1 mining pool (as you designed it), and 800 mining pool participants

OR:

  • A chain with 5000 miners, none of whom are dominant
  • A chain with 1 mining pool (as you designed it), and 800 mining pool participants

It could be that the bidding model will just be more decentralized than the spending model, pools or not.

Not to mention, whether we go for a spending or bidding model, both can include mining pools to increase returns for small miners.

The most important factor may be which model has a higher starting equilibrium before pools are introduced.

Who said that? I’m saying the current mining pool proposal that I’ve seen looks complex. I said nothing more and nothing less. Work on mining pools is parallel to any SIPs for improving the mining incentives.

I’m much more open to making consensus breaking changes in general at the early stage of the network and I think a lot of other people community members and entities would agree with me on that point.

The metric for no. of independent on-chain miners is different (I understand you consider it a vanity metric). I’d like to work on both improving that metric and, separately, more work on mining pools. Those two are not the same things.

I’m getting the SIP vetted by multiple entities and engineers in the ecosystem. The draft should be out for more public commentary once we incorporate the early feedback.

2 Likes

Agreed, I also think they both should be improved upon and that they are separate.

Excited to see it!

3 Likes

I don’t see why would p2pool-like decentralised mining pools run in contrary to the dust fee proposal, though IMO no matter what sort of “change” is actually done (i.e. dust fee mining, etc), decentralised mining pools will exist as long as mining is required to have a high starting capital, is either economically profitable, or enough altruistic people exist, and enough people understand that centralisation is bad thing. One such example is Monero, PoW, where mining is barely profitable (sub 1 dollar every month for a decent GPU), but people do it just because a) people believe in the coin, and b) it’s easy to connect to a decentralised mining pool and contribute while seeing some returns.

Several questions that needs to be answered for stacks mining:

  1. Is it better to hold BTC or mine stacks?
  2. Stacks can currently be perceived as a “pseudo-centralised” L1, thus people from the BTC community who do accept Stacks may not reject centralisation as vehemently as other holders, so where does the real push from the community to have decentralised mining pools come from?
  3. BTC, Eth, Monero etc allows mining (albeit at a loss) through existing hardware (e.g. idle CPU/GPU), without extra cost to the user to join or leave mining. That is not the same case for Stacks. Miners who do join Stacks mining enter at a loss and if they do not earn a certain amount of money (relative to other coins) they will leave. So is it possible for us to make it such that it’s at least on par with the UX of mining other coins?

Stacks is an important innovation of how to have a smart contracts layer on top of a digital cash system, so I’m really interested in seeing it evolve. I believe 3 is partly going to solved by proposal above where miners only need to send BTC if they do win the block (IMO we can make it such that the users “pseudo-lock” their BTC into a Stacks smart contract instead of just transferring the BTC over first since we can read block data).

2 Likes

Down-weighting larger miner bids is an interesting idea!

Taking this a step further, something that would have the same effect but easier to understand, communicate, and measure: split up / redistribute the STX block reward.

Imagine a function where the higher a miner’s bid is above the median bid, the larger the % of their STX block reward is distributed (pro-rata) to smaller miners with bids below the median.

This achieves the goals of increased cost basis variability and increased friction for large miners and directly incentivizes more small miners to participate until a new equilibrium is reached.

New equilibrium would be more uniform bids across miners; smaller miners would bid more as now there are additional STX rewards to be had - even for blocks they did not successfully mine. Larger miners would lower their bids toward the median or spread out their bids across more miner nodes to minimize the % of each block they’re losing to smaller miners.

Net effect = more miners

The idea here is that if large miners with significant amount of STX stacked are effectively mining at a discount and forcing the profit margin of other smaller miners below 0%, in this model, they are instead passing along their discount to smaller miners.

One benefit of this approach is that it doesn’t require any modification to the current mining mechanics on the bitcoin side - just modifies the game theory by applying some function to how value gets distributed on the STX side.

2 Likes

1000x this. I think most participants in the ecosystem feel this way. Not to say we should be making arbitrary changes, but there are very few good reasons (in my opinion) to be as strict or reluctant as we have been.

5 Likes

It also sounds to me that a prospective new miner needs to buy STX from an existing STX holder to mine with BTC. This narrative is not as straightforward as “anyone with BTC can mine STX.” I agree with @blindcite that it isn’t simply aesthetic…and even if it is…if bitcoin has taught us anything, it’s that appearances and narratives matter!

This is a really great insight. Put another way, miners in PoW are not only betting on the randomness of the mining algorithm and the behavior of other miners, but also making a whole bunch of other bets about things in their operating environment that they have imperfect information about. Is there a way to somehow capture this in PoX?

3 Likes

I think bid-to-mine could happen entirely on the bitcoin chain if we’re able to write to bitcoin from stacks. Miners would pre-send their BTC bids to a stacks-controlled contract wallet and they would only be transferred if they won a block. In this way you could mine for as long as it took to win a block before you had to transfer more sats.

Bid-to-mine does remove the problem of new entrants reducing profitability for everyone. It converts the economic model from fixed-sum arbitrage to an auction. Very few people can participate long-term in an arbitrage system, but lots of people can participate in an auction.

If the auction was still controlled by a weighted VRF function (rather than highest bid wins) we would need to fix bid sizing though - like in the model by @OwensTrevor. There would need to be a way for the protocol to generate the “correct” fixed bid size to correspond with the STX/BTC market price.

1 Like

Wow this is great. Worth exploring further.

1 Like

A miner writes to stacks so that miners can confirm the miners’ txs? Does not sound very reliable to me.

1 Like