2

Whenever Bitcoins are discussed, one generally reads how "Bitcoins are decentralized. No company nor state controls them". My question is, how is this statement true when you read about how Bitcoin Clients find each other.

Reading from here How do Bitcoin clients find each other? we find out that Bitcoin clients use a number of ways to find other Bitcoin clients. To summarize those methods can be:

  1. List of previous connections
  2. DNS seeds which points to host names
  3. (Abandoned) IRC server

So with that in mind, how are these methods decentralized? I understand how method one is, but method one can not act always act as the default method per new connections.

When you look at method 2 and 3, I question primarily the decentralized nature of a host name, as someone has to pay for the registration of said domain name and the ICANN organization is responsible for such registration. While method 3, someone has to host a server. Someone is paying for or owns the hardware and is therefore not decentralized.

The only methods I can think of that are truly decentralized is

  1. List of previous connections (As currently implemented)
  2. IP/Port scan for other Bitcoin clients. (Attempt to initiate a handshake to identify other clients. I understand this would be incredibly slow but seems purely decentralized to me)

Can anyone shed light how the actual methods do ensure Bitcoin is decentralized? My only other thought is the "spec" of Bitcoin is decentralized and the implementation of the clients themselves happen to not be.

1

For ease of use, there has to be one or more automatic peer discovery mechanisms. You have listed some of them.

There is also the -addnode command line option to bitcoind that allows the user to connect to specific node(s).

These mechanisms are specific to the current implementation of Bitcoin. The Bitcoin protocol does not specify any particular peer discovery mechanism. This allows the discovery mechanism to evolve over time, and for the truly paranoid, also allows manual peer specification.

  • So your last paragraph is what I believe is the correct answer and what I was eluding to in my final sentences. Thank you for your input! – Greg Hilston Feb 10 '17 at 14:08
1

They're decentralized because every participant chooses whether to use those methods or other methods at their whim. You can exchange addresses with friends. You can hard code them into your software. You can use any DNS name you want, maintained by whoever you want. The system will still work and will still work fine. No authority decides how this will work. Nothing breaks if you do it some other way.

If you think these methods don't meet some requirements or preferences that you have, come up with your own methods and release them in code. Those who agree with you will run your code. And nobody will force them to do otherwise. Everything will work whether people do it your way or some other way.

  • Hey David, thanks for your input. I think I disagree with your main point. Mainly "They're decentralized because every participant chooses whether to use those methods or other methods at their whim". In my opinion, just because there are alternative choices available does not make them all decentralized. Thanks for the input though – Greg Hilston Feb 10 '17 at 14:09
  • 1
    @GregHilston It's not that there are alternative choices available, it's that anyone who wants to is entirely free to create their own choice and use it. The reason eBay, for example, is not decentralized is because eBay holds a "secret sauce" (software, regulatory approvals, and so on) that prevents others from setting up their own variants and interoperating. – David Schwartz Feb 10 '17 at 18:54
  • 1
    That's close. Every individual bitcoin node or bitcoin miner is centralized. The system is decentralized because anyone can easily add a bitcoin node or bitcoin miner. That there aren't individual decentralized nodes or individual decentralized miners doesn't make the system centralized. The lack of "secret sauce" and the freedom to do things however you want, coupled with no central authority to force rules on the majority is what makes a system decentralized. – David Schwartz Feb 10 '17 at 19:32
  • 1
    My pleasure. That people follow a central authority (or use some centralized component or service) by choice doesn't make a system centralized so long as people are free to abandon that centralized component the moment they think it's abusing its authority or a better one comes along. That's just an efficient convenience. – David Schwartz Feb 10 '17 at 19:35
  • 1
    But the choices people actually make matter. What does it matter that you can avoid node finding and manually select your own peers if nobody does? Convenience, in practice, is a centralizing force. And that's fine. We minimize the influence that DNS seeds can have over the system. That doesn't mean we should deny that, in practice, they are centralized and possibly introduce systemic risks to the system. – Pieter Wuille Feb 11 '17 at 18:42
1

I'm going to disagree with the two other answers here, and state that node finding simply is not decentralized. Much of its design aims for decentralization and reduction of trusted parties, but nothing is absolute.

Yes, people are able to disable DNS seeds, and disable hardcoded seed IPs, and configure their own connections. But that's not what happens, and it likely wouldn't work at any large scale. Some people would set up websites with configuration guidelines, or updated lists of good nodes, and people would end up relying on those. But a reputation based system that relies on human trust is not what I would call decentralized in a meaningful way - it's just moving the problem elsewhere.

However, at least for connections between full nodes, there is relatively little harm that DNS seeds can cause. The only thing needed is one connection to an honest node.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.