@Dlight
sorry man gonna have to debunk you on a few things here.
I want to discuss why XT is so dangerous.
XT is actually the opposite of dangerous. What IS dangerous is the centralization of bitcoin protocol development between a “council of 5”, and ultimately one dude who can technically make any decision they want (Wladmir) - which is the same as all projects hosted on Github. One person owns the project repository, and they can assign (or remove) others with access to merge in code changes (and also moderate issue discussion, bug tracking etc.). BitcoinXT gives us a choice, so instead of one “reference client” that everyone is using, controlled by one group of people.. now there is two independently run versions which must compete and/or cooperate to decide the future of the network. That’s called decentralization. Three competing full node clients would be even more decentralized (or 5, or 50 of them) - but hey we gotta start somewhere.
Here’s a little story for you:
So there was once a person (or group) identifying themselves as Satoshi Nakamoto. For the first few years of the existence of bitcoin, Satoshi made all bitcoin protocol development decisions, everything rested on him (or her, or them). Although ideas were shared and input sometimes sought from the community, there was no “consensus process”, and many variables were chosen arbitrarily (e.g the 1MB limit which is the mess we are in now). When Satoshi decided to abandon the project, he gave the reigns over the source code to Gavin Andreson, another arbitrary decision (or maybe “gut feeling” - same thing).
When Gavin took over, one of the first things he did was create the test network (test-net), and he also attempted to decentralize development a little bit by giving commit access (able to make code changes) to 2 or 3 people which he on some degree knew, respected and trusted… but ultimately those people were chosen arbitrarily as well. There was no election, there was no “consensus process”.
Not long after, some of Gavin’s “chosen ones” brought in a couple more people which they also knew and trusted on some degree. Thus, there was now five people with direct control over the source code of the most widely used bitcoin client. A better situation than just one person deciding everything, but as lead project maintainer and owner of the github repository... Gavin was the one who had to step in and make a final decision in the case of any disputes between the group, which has happened multiple times. This means that Gavin was still essentially the “dictator of bitcoin [Core]” from when Satoshi left in 2010 to when Gavin stepped down in 2014.
So Gavin handed down his role as lead maintainer in April 2014 to Wladimir van der Laan. Another arbitrary decision - there was no election, no defined “consensus process”. That means that Wladmir is now the new “dictator”, and he has the final say (if he chooses to) in all decisions. Little is known about Wladmir (at least that I have been able to find), he is quiet and keeps a very low profile, so we don’t even know what his motivations are, what sort of future development roadmap he has planned out, or anything really.
Anyway, morale of the story - there is no defined consensus process in Bitcoin Core, and all the Core devs are in the positions that they are essentially because they were at the right place at the right time. There is nothing really all that special about them, so we shouldn’t put them on a pedestal of some elite group of untouchable developers that we dare not cross or make them upset.
The real debate here is about whether or not community consensus is important. Gavin says that if Bitcoin XT is adopted then Mike Hearn will be the new "benevolent dictator" of Bitcoin. And as Gavin reaffirmed in this interview - Mike prefers to just move ahead quickly and do whatever he thinks is best without needing to waste his precious time building consensus.
Just because people want to see Bitcoin achieve scalability doesn't mean that they want Mike Hearn as our new dictator.
I think “waste his precious time building consensus” is twisting things a bit. Nowhere has Mike said that he is just going to do whatever he wants willy nilly and not care about what anyone thinks. In fact if you look at the activity over on the BitcoinXT mailing list (https://groups.google.com/forum/#!forum/bitcoin-xt) you can see that he is actually quite open about everything, getting everyones input on changes and has been very open to including other peoples changes unless its an obvious bad idea. The narrative of “Mike the fascist dicatator” doesn’t line up with reality.
Mike Hearn as our new dictator.
He is only the “dictator” (owner of the repository, project maintainer) for BitcoinXT. He is not and would not be the dictator of Bitcoin itself, Bitcoin Core or any other fork or implementation. Saying this is also saying that “Wladmir is the dicator of bitcoin” - in which case I would like to hear exactly why Wladmir is a more favorable overlord than Mike (protip: neither of them really rule anything!).
Now for some technical issues explaining why XT is so dangerous.
1) Mike has added pages of code to XT related to the Tor network - which for those who don't know - is the "dark" network that allows shadowy activities like drug sales to occur online - by preserving the anonymity of the people using the network.
The supposed justification for this added code is that many denial-of-service attacks against Bitcoin come through the Tor networks - so Mike had the idea to start kicking off connections that are Tor exit nodes in case of a DOS attack.
Yes, if your network connections are completely filled up (often due to a DoS attack), any connections from Tor are dropped off one by one in favour of clear-net connections. Many DoS attacks are sent through Tor, and most bitcoin nodes operate on the clear-net, so this makes sense IMO. This can also extremely easily be disabled with a simple command line option when booting up your server. It’s also important to note that the hardcoded list is meant as a temporary solution, and was added in because XT nodes were actually being attacked through Tor.
"XT has some serious Tor problems. It downloads a blacklist from the Tor website and bans the ips during high load. People that know networking can tell you... there's a million ways to exploit that. If you hijack the connection of the Tor list download you can force the disconnect of users.
Ok, so essentially what this is saying is “if somebody hacks the official Tor project servers, and at the same time does a DDoS attack on the bitcoin network, they could cause certain bitcoin nodes to temporarily lose connection to some other nodes”. Sorry, but if the Tor project gets hacked there is probably much worse problems that would happen, and none related to bitcoin.
So let’s examine that attack anyway:
- First off, it does not “blacklist” or “ban” anyone, it just de-prioritizes. If connections are maxed out, Tor connections are dropped in favour of clear-net connections trying to connect. Once the DoS goes away and network connections free up, Tor users can connect again. More of a gray list if anything :p
- As mentioned, if the Tor project gets hacked, trying to mess with some bitcoin nodes is probably the least damaging thing you can do.
- If the list of publicly known Tor exit nodes was suddenly changed, everyone would notice
- A DoS attack is required to trigger the code, which would need to be highly targeted (I doubt many have the capability to attack literally the entire network), plus is difficult to maintain for an extended period of time.
- DoS attack could be easily mitigated by simply changing IP addresses, or spoofing your client name so it looks like you are running Core instead of XT or something.
- There is no way to tell whether or not a node is actually using these rules or not, and a large portion of the network (or all of it) would need to use the Tor deprioritzation rules in order for an attack like this to cause any sort of disruption
- Even if you manage to cause a node to have it’s connection dropped on 20 other nodes.. what about the other 80 it might be connected to?
- For those worried about “your node IP being leaked when you download the list” - what exactly do you think is happening when your node connects to other nodes? By running a bitcoin node you are already telling the entire world what you are doing. If you need privacy, you can run the node through Tor or through a proxy and IIRC it will disable the Tor IP deprioritization automatically (if not, it is simple to do manually).
- The profit motive / reward for this sort of attack is extremely vague… what exactly would it accomplish?
People freaking out about vague and questionably rewarding “attack vectors” like this are part of the reason that Bitcoin Core development is so easily stalled. There is no clear prioritization in Core of what actually is a threat, what can be dealt with and what should be dealt with... so the result is that many times when an idea is brought forth or some changes submitted, someone will always pick it apart and come up with some form of attack that could only realistically be pulled off in very specific network conditions and by some evil villain Chief of the NSA with unlimited resources. The idea is then written off as “fundamentally flawed” and gets stuck in limbo.
In BitcoinXT, one of the first things that is already being worked on is coming up with a proper “Thread Model” for bitcoin, so the network can actually progress and become more resilient, instead of being hung up on trying to prevent attacks that would probably never happen and probably not even do much of any damage. You can check out a discussion on that here: https://groups.google.com/forum/#!topic/bitcoin-xt/zbPwfDf7UoQ
This code has not been vetted by the community or undergone any security audits. It should not become part of Bitcoin without far more review and consensus by experts.
No such thing exists for most things in Bitcoin Core as well. But yes I agree the more review the better. XT already has quite a few people actively reviewing all code and submitting new changes.
2) Everyone seems to be making the assumption that if XT achieves the critical 75% threshold and finally mines the first block larger than 1MB - then all the other exchanges and miners still running Bitcoin Core - even though many fervently dislike being forced to adopt XT - will immediately give up and join the new chain - thus ending the fork.
Raising the block size limit has been heavily talked about all year long, and with the whole XT thing already happening for the past few months. No fork will happen until January next year, so that still gives us 4 months to make sure everyone knows what is happening and is more than prepared. After January, whenever the 75% miner threshold is reached, that 75% (or more) needs to be maintained for an additional 2 weeks before anything happens, and during that time a warning message is sent out to every bitcoin nodes (Gavin and a few others have access to an emergency broadcast key) that they need to upgrade ASAP. After the two weeks, still no fork happens until the first > 1MB block is mined. IMHO all that should give everyone involved in bitcoin plenty of warning that they need to upgrade to either XT, or another equivalent client which implements BIP101. This is not the first time that node operators and miners have had to upgrade their software in order to keep themselves connected to the network and on the right blockchain, and it won’t be the last.
If people don’t like XT for whatever reason, they can run the version which is strictly Core + big blocks (BIP101), or they can patch in BIP101 themselves, or use another client which might have it implemented. If the Bitcoin Core project wants to not be left behind, they will add in BIP101 themselves. In which case we would see a network which is 100% support for big blocks, but split say 40% XT nodes and 60% Core nodes.
The network would immediately split into two incompatible chains. The miners left on the "1MB" chain now have 4 times the slice of the mining pie - since their competition has just dropped by 3/4's. They form a pool to bring more previously-turned-off mining power online to double it to 50% of the total before the fork - all focused on the 1MB chain.
This is technically possible, but who exactly are they going to sell their coins to? If the majority of the network is already on the new > 1MB chain, surely all the exchanges will also be on board (they would be insane not to), in which case you have no way for miners to sell their coins and pay for hardware, electricity and bandwidth costs. Miners are interested in making money, so they are going to follow wherever the money goes. It’s kind of hard to believe that many miners would be so hardcore about specifically having 1MB as a limit that they would abandon the main chain and attempt to revive the old chain… but I guess we will have to wait and see.
It’s certainly possible that there will be a movement of bitcoiners loading up the old chain and trying to start “Bitcoin Classic”, which would be interesting but not really any more of a threat than most alt-coins IMO. Kind of like I could also start up a “Bitcoin Original” using the very first stable client version Satoshi created (which is not compatible with the current network).
I hope it's obvious that this would be a disaster for Bitcoin. This is showing us that community consensus is actually a prerequisite for maintaining the Bitcoin consensus algorithm. The second can't exist without the first - it's simply too fragile. Changes forced down our throats by cowboys like Hearn will destroy Bitcoin - not help it.
This is no longer about the blocksize limit - that's become a minor and unimportant issue. It's about whether Bitcoin can survive a new unelected dictator who doesn't really care about consensus. The answer is: It might not.
Character attacks don’t really help at all either.
This is not a disaster, this is true consensus, decentralization and anti-fragility in action. I’m fully confident that we will come out of this stronger, even if there’s a few bumps along the way, and If the network can’t survive without everyone using the same software developed by one small group of people, then we have already lost.