Recently, one of the bankless dudes said ETH is the only L1 that has multiple software clients:Recently, one of the bankless dudes said ETH is the only L1 that has multiple software clients:
The ETH people have a problem because more than 70% of staking happens with only one client. Obviously, running staking software is wildly different than running a bitcoin node, but it is also true that almost everyone who runs a bitcoin node runs Bitcoin Core.
2022-2023 were tough years for alternate implementations of bitcoin2022-2023 were tough years for alternate implementations of bitcoin
In November 2022, BTCD had a bug that caused LND nodes to fall out of consensus with the lightning network and resulted in a fair bit of mayhem.
In August 2023, researchers discovered a vulnerability in a seed generation command in Libbitcoin that resulted in a number of wallets getting drained.
In the Bitcoin world, most of the resources go to Bitcoin Core and the other implementations are pretty much maintained by one or two key developers with far less review by the open source community.
And when it comes to bitcoin consensus, a minor error can lead to a fork--so the general response among bitcoiners to these bugs seemed unanimous, thank goodness 99% of Bitcoin nodes run Core!
Alternative Implementations for all the Wrong ReasonsAlternative Implementations for all the Wrong Reasons
In response to the tidal wave of transactions and data coming to Bitcoin from inscriptions, stamps, and BRC-20s, Luke Dashjr implemented a different set of filtering policies for the implementation he maintains, Bitcoin Knots. And the new OCEAN mining pool used Knots as it's bitcoin implementation for their mining software.
Whatever side of this debate you land on (to filter or not to filter), it exposes the reality that nonconsensus code (eg: mempool policy, relay policy) can be pretty important too, especially when you only have one client.
My Dilemma: Are Forks Worse than Centralization?My Dilemma: Are Forks Worse than Centralization?
As bitcoin adoption increases, Bitcoin Core will come under more and more pressure. The people who currently maintain and contribute to it are awesome and do great work; however, Bitcoin Core sure looks like the choke point for the entire apparatus. We don't want mining too concentrated in one jurisdiction, we don't want a multisig with hardware from only one provider, so why do we feel okay with only one implementation?
I think it would probably be a net good for Bitcoin if we had a serious competitor to Bitcoin Core, but whenever I set up a node, I pretty much always run Core because I'd rather use the software with the most eyeballs on it. I'm sure this is calculus is true for most actors in Bitcoin: sure I'd like to see client decentralization, but I don't want to get forked off.
Do you see a world where a second Bitcoin client software emerges and gains significant (more than 20%) market share?
The problem-behind-the-problem here is: is it possible to have the consensus defined as a written spec. This point is surprisingly controversial because, compare with e.g. internet protocols like TLS: they have a written spec to which all clients adhere. Even there, it's not cut and dried, there are lots of minor details and extensions where there at least could be a server-client mismatch and connections get dropped. But here's the difference: bitcoin's consensus requires byte-for-byte and bug-for-bug 100% compatibility between every peer, it is not a question of pairs of nodes agreeing temporarily, it is a question of every node everywhere and always agreeing. It's possible that neither written specs, no matter how thorough, nor well written code, can meet that standard (a perfect practical example is the 2013 chain split, which was not caused by any of the C++ consensus code per se, but by an unforeseen behaviour in the database software used. Not intentional but unintentional consensus dependency).
ETH from the beginning chose to base things on a written spec, and to my mind this was not wrong, but I am pessimistic that it actually changed anything. If there is an actual open-to-interpretation thing that happens, you're kind of better off having one overwhelmingly used client, as it's a de facto tiebreaker on the debatable thing. The counterargument is, if the overwhelming client has a consensus break that's clearly just an error/bug, then it's nice if there's another client everyone can switch over to as an emergency.
It does feel like this is a problem that bitcoin isn't going to resolve.
I am not an ossification person, but let bitcoin 10x (users or value) and it's hard to imagine any sane person signing up to have commit access to core's repo. I think it is a pretty pressurized situation already.
100%. Consider that one well-funded narcissist / douchebag drove out tons of talent from public involvement w/ core. Like, the guy is a demonstrable liar, repeatedly, that literally nobody takes seriously, but he's been able to co-opt the legal system and cause non-trivial amounts of damage to the ecosystem.
Now imagine an actually capable group with billions at stake with its thumb on the scale. Jesus, I shudder. Btc development has been a tea party and I think its care-free days are numbered.
Its a good point. The pressure on open source devs for far less popular or important projects is often to much for those devs. If you think about your code affecting the monetary security of so many people I can see it being something few would desire. That said, this is why a project has to have thorough code review processes (which bitcoin has) and a community providing support for core development. I think we need to admit we are in uncharted waters here. I can't think of another software project like bitcoin in existence.
This is the kind of discussion I like to see. Not the tweet you link to but bitcoiners thinking about possible problems with the status quo. There are some good comments in this post (@027c352e45, @elvismercury, @DarthCoin & @Scoresby).
Something I'm confused about re a written spec:
Presumably this spec would evolve over time. Who would be the "keeper of the spec" or the people who change it?
I'm sure industries have solved this problem, but I can't imagine it looks a whole lot different than a lighter version of bitcoin core.
How does a spec get us out of the single client dominance (unless it is ossified and set in stone)?
A spec doesn't solve the problem. It would just make it easier to write new clients.
In order to not have single client dominance you need
There are some natural reasons for new clients to arise. I think the alt clients pretty much come out of these reasons.
Basically different use cases or priorities drive the desire for different clients. I just think we are still early but now is the time to ask these questions.
Here's the deal. I am just now diving into actual bitcoin development myself so I could be off base in some way. I'm sure a stacker will correct me if I'm wrong :)
I've written many specs over the years but never anything open source, but you are right. I imagine it would like a lot like the current bitcoin-core dev process. In my mind it would make it easier for developers to write new clients if there were a clear spec. It would not only help with new clients but also core dev work.
No we donβt! There should be one spec as implementation, and all things should use Bitcoin Core.
Iβve run into many compat issues with LND and CLN, so Iβm not so keen on that either, but it is what it is. Btcsuite/btcd was always an altcoiner project and some of that evolved elsewhere.
Alt clients are a menace. More clients does not decentralize it, it makes it more brittle. This is an important distinction!
This is a really good question, and one of the places where (imo) smart well-meaning people can and do disagree.
The general feeling seems to be: consensus forks would be so catastrophic to btc that we must focus everything on not having them happen, and concentrate development on one client.
The obvious rebuttal is that an ecosystem with only a single client is vulnerable as hell, and the opposite of resilient.
If btc gets to $100k and above, and larger parts of the world come to depend on it, I wonder if we'll see the attitudes around this change? It seems an under-discussed aspect of btc. (Perhaps under-discussed important things is this morning's unofficial theme.)
The thing is: there are multiple implementations and a lot of work goes into them, but still 99% if nodes run Core.
There isn't any rule that says everyone has to run Core and yet everyone does. I don't know that I see that changing.
True. A lot of reasons for that, perhaps the biggest being how things are packaged, the same reason for LND's dominance.
I expect that the theoretical possibility of a multi-client world might be more important than the realized actuality of it.
One sentiment I have heard around is: if you're going to have a bug, it's good if it's the same bug as 99% of the network.
It's funny though that something as decentralized as bitcoin hasn't figured out how to cultivate a significant user base for two or three main implementations.
I have a simple rule that kept me away all these 10+ years from the shit: NEVER DEBATE WITH SHITCOINERS.
It is wasting time to debate, compare, discuss about BTC vs x shitcoin. If you play with shit, you smell like shit.
Forget the ETH people then: what is your opinion about multiple implantations of bitcoin? Would you run knots instead of core?
I already run btcd instead of core. I already run neutrino also. Only noobs think that only one core client exist. Yes, more clients is better. Like wallets. You cannot have one with all the features you like. LET THE MARKET TO CHOOSE.
It seems like the market has chosen Core overwhelmingly.
Maybe I should take solace in the fact that people are running a pretty wide array of Core releases. I'm still running 0.21. Do you think previous releases count as client diversity?
Market can't choose when all those RPi bundles come straight with Core. Education is key in this matter, but most of new users do not read documentation or pay attention to details.
You should run at least 0.21.1 that have taproot activation. Then also you should take in consideration v0.24 that have full RBF.
No, those are just other versions that do not include more features, that's all.
Good point about 24. I have been meaning to update to that.
Now, can we go back to memes? πππ
That's good this ended, you were about a post away from getting force choked.
But why force choked? Was nothing wrong with his question. OP asked me about using different bitcoin clients. No big deal. I replied with a joke because I like jokes and I think he understand jokes too.
Doesn't have to end. You have an opinion on this?
Are we just dealing with an education issue?
No! More clients = Bad! Satoshi warned us of this!
Lock step!
It is interesting that that none of the other clients have really caught on.
Almost everyone in eth land uses metamask as their client
Bitcoin has much more diversity, popular clients include phoenix, breez, muun, electrum, bluewallet, and many, many more
Try not to confuse node software (backend) with client software (frontend)
Would you consider Geth frontend or backend?
I don't think I confused the two.
The tweet I referenced had to do with staking clients, and most of the data I posted was about node software.
Am I using the term client incorrectly? I kinda switched back and forth between alternate implementations and multiple clients. Perhaps I should have stuck with alternate implementations.
I don't really like that terminology though because it sounds so vague.
Backend
Here is a screenshot of someone running geth
https://m.stacker.news/18864
I think so, yes. To me, client software is frontend, user-facing software for normies. I don't understand why the ethereum community uses it to refer to things like geth. To me, geth is clearly software intended for use by system administrators. It's not a client, it's a backend to which clients such as metamask can connect in order to serve as a more user-friendly interface.
Got it. Thanks for clearing that up for me. I will stick with alternate implementations for now.
(But I sure would like a better way to refer to code that is not Bitcoin Core but that is able to maintain consensus with the Bitcoin network.)
Client source/code centralization is not terrible; it's a strength in many ways. On the flip side, if there were 25 (or 1000) different Bitcoin client implementations, that is now more attack surface due to the developer mind share being spread across those un-related clients. And likely resulting in dis-jointed and incompatible "features".
The Linux Kernel for example benefits greatly from the combined attention to its implementation, and all derivative distributions benefit. Optionally applying patches for their self use-cases; and when it makes sense supplying PRs back into the kernel. Much like Bitcoin Core and Bitcoin Knots, on a much smaller scale.
If there is a hostile or controversial change to Bitcoin Core; there is always the "Fork-it" route. See Bitcoin Cash/BSV, Lightcoin/Doge, etc.
Point taken about the fact that Bitcoin should improve based on valid criticism no matter where it comes from. Ideally we would have more decentralization on clients. Better yet, more literacy so that even if there are few clients, everyone knows exactly how they work and can detect/prevent attacks and vulnerabilities.
But the Bankless guys can absolutely and forever go fuck themselves. No one runs their own node on ETH because they did not prioritize decentralization at all whatsoever. Who gives a single fuck about the client diversity if no one runs pleb nodes anyway?
That's like saying the guy that buys healthy groceries 100% of the time but lets it rot and eats McDonald's instead is healthier than the guy that eats 1 or two home cooked meals with non-fiat food. Give me a break. It's just FUD so they can keep pumping their bags. I would love a real bitcoiner to debate those losers.
The bankless guys definitely max out the arrogant scale. But who better to criticize you than your enemies? The lack of client diversity is a curious situation in bitcoin and the fact that they can say what they said, even if it's not apples to apples, is important.
You made me curious about bitcoin core contribution and I checked. There are over 30 devs with at least one commit in the past year. That's not bad. I wasn't expecting that many. You are right, the vast majority are by two devs though.
ghey waste of time. hfsp
I don't know if homosexuality counts as an alternate implementation...
I suppose it could be if you turn your head and squint your eyes a bit.
Fuck off dude, your shitcoins are disgusting, and there is zero reason to ever invoke them like this when discussing bitcoin. Just say whatever you actually want to say, no need for engagement trolling, it's a small site.
Man, who took the jelly out of your doughnut?
If you are so incensed, consider the excellent downzap button. Tap the three little dots next to the post title, tap on downzap (it's red), and enter the amount of punishment you would like to inflict. You can do your part to keep the site neat and tidy.
When ETH gets an ETF I wonder how centralizing ieth will be lol.
Saylor, Blackrock, etc done gain more control with each buy. Wonβt be the same incentives for Proof of Shit
No no no. Satoshi explicitly wrote about this! Alternative clients are a menace.
The eth heads continue to avoid Satoshis sound engineering principals for distributed systems. There should be one implementation that is in lock step with all other nodes. This alternative client business is nonsense and nothing to do with decentralization.
If there was only one Bitcoin implementation I would still be 0% ETH and 100% BTC. Sure, having multiple implementations is good but I think the total number of nodes is more important because if core did something stupid there would be a lot of nodes out there that refuse to update.
Why would a Client for you off? Either you're running the wrong client or your settings are misconfigured?
ππ
deleted by author
You are right. But the larger point is that if a mining pool wants, they can use a different implementation - and that is a good thing.