Bitcoin Verde is Launching a Project to Increase Mining Diversity

12 377
Avatar for joshmgreen
Written by
  23
3 weeks ago

The majority implementation crown is exceptionally heavy. I don't want it.

I do want network diversity.
I do want redundancy.
I do want a backup plan.


Preface

The lessons learned from Bitcoin Core and Blockstream will be forever remembered by the Bitcoin Cash community, and this community is proud to have multiple implementations.

Despite having 5+ node implementations, why was the entire network staggered last year due to a bug that existed in only a single implementation?

The answer isn't that node was of poor quality or that our network is only running one node implementation; in fact, neither of these things are true. The answer is that miners are only running one node implementation.

Bitcoin ABC is the only mining implementation

Bitcoin mining is a high-competition, low margin, risk-intolerant business.

During the infrastructure funding debate, we took extra care to understand the perspective of the miners.

When we asked why miners considered Bitcoin ABC the de facto mining implementation, we were told three reasons:

  1. ABC's reputation for great quality

  2. Limited alternatives willing to support mining/pool features

  3. Homogeneous network decreases block orphan risk

Distilling this, miners are running Bitcoin ABC because of its reputation, running a single implementation is less risky for them, and there aren't alternatives that they trust.

Reputation

Objectively, Bitcoin ABC's reputation is fantastic. Not only is ABC producing stable, high-quality code, they are also innovating new features and providing a path for other implementations to follow. This is not an easy task, and they've been doing a great job.

Bitcoin ABC does great quality work. I agree with this.

Limited alternatives

I cannot speak for why Bitcoin Unlimited was not considered a practical alternative to Bitcoin ABC. However, all 5+ implementations should strive to be viable mining alternatives. Being viable means producing quality work; it also means reasonably obliging miners and taking their requests and concerns seriously. I encourage the minor implementations to start focusing more on this.

In line with that, I announced that Bitcoin Verde will be taking a heavy focus on becoming a viable mining node alternative.

Additionally, BCHD, Bitcoin Unlimited, Bitcoin Verde, and Flowee the Hub have been collaborating in the Bitcoin Verde Telegram about a minority node testnet for mining.

Improvement on this is on its way.

A single implementation is less risky

For a miner that is constantly battling limited margins, an orphaned block is very expensive. It's why creating 32MB blocks isn't a trivial debate, and why people saw benefit in CTOR/XThinner: there is risk with propagating blocks, and poor block propagation is an important concern.

Orphaned blocks can happen organically. They can also happen out of malice intent, or because of a disagreement in validation rules--even if that disagreement is unintentional. It is this latter cause that miners see a benefit of a homogenized node ecosystem for mining. It's sound logic. It's near-impossible to have a disagreement in validation rules if almost all of the miners are running exactly the same software.

However, it is not the homogenized ecosystem itself that miners want. What they actually want is increased profitability by minimizing the risk of their block being orphaned.

Reducing risk for miners

In the past, some adventurous mining pools have attempted to mine with minor implementations, however they were burned by invalid blocks that were then orphaned.

This risk is completely avoidable without resorting to a homogenized mining ecosystem.

To remove this counter-incentive to node diversity, we will be creating a block template validation service. This open-sourced service will alert miners when the template they are attempting to mine is incompatible with other implementations, and can be ran themselves or by a 3rd party.

The block template validation system removes the risk associated with miners running different implementations. Furthermore, with this alert system, miners will be able to prune the transactions that create network incompatibilities or choose to completely switch to a different template.

This service doesn't just benefit minority implementations, it also benefits miners, developers, and the live network as a whole. By checking the validation of the template across the entire network's set of nodes:

  • miners can avoid accidentally splitting the network

  • miners greatly reduce risk of producing incompatible blocks, reducing orphans

  • developers can be made aware of incompatibilities between the implementations, which would be otherwise masked by the invalid block not propagating

  • giving the miners greater freedom of choice in their node implementation

In line with how we said we'll fund development, we've created a GitHub issue to fund the prioritization of this feature. This issue outlines exactly what we're building, why we're building it, for whom it is for, and how long we think it will take.

We are offering transparency and accountability in hopes to break down some of the donation barriers that Bitcoin.com has rightfully called out. We hope this transparency helps inspire other would-be donators, so that features can be supported individually--appealing to the free market to represent demand, and avoid relying on an unaccountable slush fund.

We believe this service will become standard practice across all majority mining organizations, and strongly encourage recommendation from miners and the community for how to improve this idea.

$ 45.33
$ 22.67 from Anonymous user(s)
A
$ 5.10 from @isaacmorehouse
$ 5.00 from @PeterRizun
+ 19
Avatar for joshmgreen
Written by
  23
3 weeks ago
Enjoyed this article?  Earn Bitcoin Cash by sharing it! Explain
...and you will also help the author collect more tips.

Comments

This is awesome.

Per your request, a bit of feedback on the pitch itself (not the technical content):

You cover everything that needs to be covered and do it well - especially in the GitHub issue. Very clear. Great problem statement, solution break-down, roadmap, and budget.

The only thing that I think could make this stronger is to open this article with a bullet-point executive summary style elevator pitch. As is, I had to read a fair bit to get an idea what was being proposed, and not until the very end and the GitHub link did I know funds were being sought and how much. I'd hit with that quick, then go into the rest.

Something like this:

-BCH miners are all running a single node implementation (ABC)

-This lack of node competition creates bottlenecks and problems for the network

-Miners don't want to risk running other nodes because it may cause orphaned blocks

-We are creating a process to run other nodes easily and reduce this risk

-We plan to build it over the next X months. You can see our roadmap and milestones in GitHub

-We're raising 80 BCH to fund this project

-If you want to see more node diversity, we'd love your support! Donate at this address:

-Donation reports and updates will be shared here XXX

Great work, and most of all congrats on this project. It is so crucial to BCH and gets me excited!

PS - I might consider a more direct, punchy, action based title as well. Something like, "We're Launching a Project to Increase Mining Diversity"

$ 25.10
3 weeks ago

I love the suggestions, Isaac. I'm going to incorporate these ideas in the future (and possibly edit this post later tonight).

Thanks for taking the time to read this and for writing up a reply. Much obliged. Mind if I reach out again in the future?

$ 1.00
3 weeks ago

Any time!

$ 0.00
3 weeks ago

In line with how we said we'll fund development, we've created a GitHub issue to fund the prioritization of this feature.

Awesome. Donated to bitcoincash:qpges4u8lm9w6mekdkrn9cpy79lst2lukywwgpkf8r as given in the issue https://github.com/SoftwareVerde/bitcoin-verde/issues/8

I would be happy if others chipped in since there have been only 2 donations so far.

$ 0.00
3 weeks ago

Very generous of you! Thanks, Molecular!

$ 0.00
3 weeks ago

if ok knew this gets some good portion of miners to switch implementation, I would donate way more. this is something I can't predict, though.

having multiple implementations is good. having such diversity actually in use by miners is orders of magnitude better.

$ 0.00
3 weeks ago

Another thought...

Part of what the community was pissed off about with this funding proposal was how easy it would be for a group of pools to band together and softfork. While this likely will always be the case as long as our hash rate is so tiny compared to BTC, there is a way where you can make this kind of softfork a lot harder and that's for individual miners to run their own nodes.

Part of the purpose of that stratum v2 protocol is to try to bring about an environment where individual miners are running their own nodes and where pools have no say in the protocol.

I think this is a great move in the right direction. If were implemented the only remaining concern would be hash rate concentration.

$ 6.01
User's avatar cpacia
This user is who they claim to be.
We have manually verified this user via some other channel.
Proof
3 weeks ago

how hard or how much work would it be for a pool too adopt stratum v2?

$ 0.00
3 weeks ago

Great ideas! I know that Jason Dreyzehner from bitauth.com has been planning a similar block-validation tool. I'm sure you two could share valuable ideas.

$ 1.00
3 weeks ago

Eh, you probably want to change that header photo into something less insensitive.

$ 0.10
3 weeks ago

Had no idea what you were talking about until someone messaged me on Telegram and explained. Thanks. Definitely a completely poor choice before, albeit accidental.

$ 0.00
3 weeks ago

In line with that, I announced that Bitcoin Verde will be taking a heavy focus on becoming a viable mining node alternative.

Awesome!

$ 0.10
3 weeks ago
About us Rules What is Bitcoin Cash? Roadmap Affiliate program Get sponsored Self-host
hello@read.cash (PGP key) Reddit