0

Let's assume for the sake of argument that a fraudster is able to create blocks faster than the rest of the network. Given that, they would be able to achieve double spending by making a fraudulent transaction, broadcasting only to a single node (the victim), and by being able to find proofs of work and broadcast blocks to the victim (and only to him, otherwise no double spending will be achieved) faster than everyone else, the victim accepts that transaction as authentic and updates their wallet.

That could've been prevented if a node can only broadcast its transactions and blocks to everyone else in the network.

In that case, why does the network allow any node to broadcast a transaction or a block, only to one node? Is it unable to prevent it, or is it a result of bad design?

2
  • 3
    How would you practically imagine that one can enforce that anything shared with anyone must be shared with everyone? What if you're only connected to one peer for example? May 27 at 4:55
  • I am not familiar of how bitcoin is implemented (or how a P2P network is implemented in general), but I could imagine that as a client I get to make a transaction, rather than decide who I broadcast it to. In other words, if I make a transaction it's broadcasted to everyone which is how the DEX would've been implemented, and based on your comment I figure this is what I am unaware of, that it's impossible in a P2P network or against its fundamental feature.
    – David
    May 28 at 2:36

1 Answer 1

0

why does the network allow any node to broadcast a transaction or a block, only to one node?

The Bitcoin network is a set of computers that communicate over the Internet using the Internet Protocol (IP) and the Transport Control Protocol (TCP). The Bitcoin network protocol is an application layer protocol that is a layer above the transport layer (TCP) and Internet layer (IP).

As such IP and TCP do not provide a mechanism that prevents one computer from communicating with one specific other. They don't prevent this because this is exactly what they were designed to do.

IP does include both broadcast and multicast capabilities however Bitcoin uses an approach generally described as a gossip protocol. Each node communicates on a direct one-to-one basis with each of a small number of other nodes. I'm not familiar with managing an IP multicast domain but I suspect it might be difficult in a purely peer-to-peer arrangement of nodes such as Bitcoin requires. You also have to allow for nodes that are offline at the time of the broadcast.

It is hard to imagine how one could enforce a broadcast-only policy since new Bitcoin nodes are continuously being created and older Bitcoin nodes disappearing and regular Bitcoin nodes are on computers that are only intermittently connected. We wouldn't want the whole network forced to a halt because someone with a Bitcoin wallet on their phone walked into a part of a building where phone reception was poor, or ran their battery down, suffered a power cut, broke their phone, etc. There will never be a time when all nodes are available.

I believe this would be especially difficult in a peer-to-peer network like Bitcoin, where there is no centralised control and anyone can write a Bitcoin application.

4
  • 1
    IP multicast/broadcast are not a solution. They too cannot guarantee that everyone will hear about everything (e.g. network connections can be flaky, packets can be lost). What OP is calling for is a theoretical concept called broadcast channel... and Bitcoin has one: it's called the blockchain. If the network layer itself already provided a broadcast channel, we wouldn't need the blockchain in the first place. May 27 at 14:36
  • @PieterWuille could you please explain what is the broadcast channel you are referring to and how is the blockchain one?
    – David
    May 28 at 2:40
  • 1
    A broadcast channel is some kind of system where any participant can put a message on, and if successful, they know that every other participant will get that message. That is precisely what the blockchain provides: if someone sees their transaction included on chain, they know everyone else will see it. But the P2P network (or no real network) provides it in the way you're asking for. May 28 at 3:35
  • Then the blockchain would be a broadcast channel only if the participants broadcast their transaction to everyone, otherwise, by assuming that a fraudster is able to create blocks faster than others, the victim will have a different blockchain than the rest on the network, contrasting the guarantee that "if someone sees their transaction included on the chain, they know everyone else will see it." Which is the case, that is the bitcoin blockchain provides no such guarantee (virtually does as the assumption is very extreme), because bitcoin is a / on a P2P network. Did I get that right?
    – David
    May 28 at 15:59

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.