This was supposed to be just a reply to a redditor comment. I thought it would be more useful to make an actual post instead. Since this sub is constantly growing a think one more post about this could not harm.
Since English is not my mother tongue I hope I managed to express all the arguments correctly and understandably.
Bitcoin is a P2P network. The essence of such network is that every participant, every node, has no special value among the others, they are all peers. In a Bitcoin network nodes don't even have IDs, they are indistinguishable from one another.
To form a network you need nods, how many? It's nowhere defined ho many nodes you need. The answer varies depending on:
- how resilient to attacks (Sybil attacks, DDoS attacks…) you want the network to be
- how censorship resistant (a country government could ban the traffic) you want the network to be
- how trustless (a few entities could take control of the majority of the nodes forming a cartel you don't even know about and the other nodes will follow the lead)
- how redundant in case of faults (hurricanes, local blackouts…)
- how efficient (for example you can't connect all the SPV wallet to a few bunch of nodes. Or again assuming you have very few full nodes, how clogged the network would be when you want to bootstrap a new full node and the existent ones send the blockchain to it)
- how spread (how many copies of the blockchain there are) around the world you want the network to be
and so on.
A full node stops the propagation of invalid blocks and invalid transactions. If miner nodes alone where busy rejecting invalid TXs (transactions) and invalid blocks it would be easier to DDoS the network and consume their bandwidth and computational power used to validate all those invalid blocks and TXs.
If you spread the verification across multiple full nodes you decentralize the effort of keeping the network clean from invalid blocks and invalid TXs. If a full node receives an invalid block from another node it rejects so the invalid block is not propagated across the entire network. So full nodes act as filters.
Having multiple nodes means to have multiple routes and this makes it harder to monitor the traffic for a malicious actor because it makes monitoring the network more expensive.
Another interesting point about having many full nodes is allowing for a more balance in the decision power. What I mean is, among the various constituent the miners, the merchants, the exchanges, the wallets, big stakeholders you should have people too.
One could argue that the market is an enough powerful mean to have a vote on how Bitcoin should evolve, meaning the market can express the feeling about a decision on the Bitcoin protocol by making the price drop or making the price rise a lot when they announce a new feature in the Bitcoin protocol.
But, besides being a drastic measure (would you really like to express a vote by reducing Bitcoin value?), that's a faulty assumption because the market doesn't give a damn about the Bitcoin technology. Most of the big investors and traders, that actually move the market, care more about making money than allowing for the common people to have a revolutionary new kind of money.
They don't care about common people. Common people don't move the market price. You could never coordinate so many people at once in order to sell or buy enough to move the price. If you would be able to coordinate many people and sell/buy 1000 BTC that would be like a sneeze.
How could common people have a voice in deciding how Bitcoin should evolve? If you don't have literally millions you can't move the price. What people could do is to run full nodes that enforce consensus rules. If the vast majority of people decide that the rules miners (or the developers want) are not fair, people should have the ability to vote on that.
As you can see miners do what's most convinient for them, like switching what chain to mine for when it's more profitable for them, even regardless their ideology.
How cheaper would be to run a full node instead of trying to move the price buying or selling?
Ever asked why exchanges runs their own full nodes? Why don't they trust miners ones? Don't miners behave correctly in the fear of losing money if they cheat? How can you be sure miners run the right set of consensus rules? You can't even know (exactly) what software they are running. And no, the software version you read is not reliable, at all, it's like the user agent for web browsers.
If they wouldn't put their pool name in the blocks they mine we wouldn't even know who mined them.
Most of the miners run customized versions of the regular software. This doesn't mean they are cheating, they do this for technical purposes, it's perfectly legit. They can run whatever they want.
So if you can't be sure they run a "certified" node software how can you check which consensus rules they are running? How would you know if the consensus rules at some point changed because of a closed port meeting they had, let's say, in NY or in HK?
The Bitcoin network is described as trustless because you don't have to assume that the other nodes are correct nodes, on the contrary, every node assumes that the other nodes it is connected to, could be malicious nodes and therefore every node validate in autonomy every blocks and every TXs. Everyone checks one everyone else no one trusts anyone.
Miners behave correctly only because the can't form a cartel. And that's only because if they would do that, they would be cut off the network by the other nodes who enforce consensus rules. Which consensus rules? The ones that the vast majority of the nodes run. Not the ones that only miners run.
I'll leave out the privacy argument. They always says you should run your own full node (maybe over TOR) because it increases privacy and even if this is important and absolutely true, I don't consider this the most important aspect of running a full node because it doesn't undermine the network, but only your own privacy.
PS. "Funny" fact about privacy I just learned about: there are SPV wallets that don't even run their own full node… Hiralious.