When the author of a white-paper says 'nodes' he doesn't say one word, and mean another. You took this quote from Satoshi : "They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them"

And neglected to use the full quote : "Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them."

https://en.bitcoin.it/wiki/Full_node

> Full nodes download every block and transaction and check them against Bitcoin's core consensus rules. Here are examples of consensus rules, though there are many more:

- Blocks may only create a certain number of bitcoins. (Currently 12.5 BTC per block.)

- Transactions must have correct signatures for the bitcoins being spent.

- Transactions/blocks must be in the correct data format.

- Within a single block chain, a transaction output cannot be double-spent.

> If a transaction or block violates the consensus rules, then it is absolutely rejected, even if every other node on the network thinks that it is valid. This is one of the most important characteristics of full nodes: they do what's right no matter what. For full nodes, miners actually have fairly limited power: they can only reorder or remove transactions, and only by expending a lot of computing power. A powerful miner is able to execute some serious attacks, but because full nodes rely on miners only for a few things, miners could not completely change or destroy Bitcoin.

https://www.cryptocompare.com/coins/guides/how-does-a-bitcoi...

> Each node builds its own transaction pool, which are mostly the same.

> The conditions can change and evolve over time and a present list can be checked through the AcceptToMemoryPool, CheckTransaction & CheckInputs functions in the bitcoin client.

1. The transactions syntax and data structure are correct.
2. The input and outputs have values.
3. The transaction is less than the block size of 1 MB.
4. The values must be more than 0 and less than 21 million.
5. None of the inputs have a hash that is equal to 0.
6. The locktime is less than the maximum allowed number.
7. The transaction size is greater than or equal to 100 bytes.
8. The number of signatures is less than the signatute limit.
9. The unlocking script can only push numbers onto the stack.
10. The locking script must match isstandard format.
11. A matching transaction must exist.
12. If a transaction is missing move the transaction to the orphan transaction pool.
13. If the transaction is a coinbase transaction then it must have a maturity of 100 confirmations.
14. For each input the output must exist and not have been spent.
15. Check that each input value is in the required range.
16. Reject if the input value is less than the output value.
17. Reject if the transaction value is to low to get into an empty block.
18. The unlocking scripts for each input must be verified against the output locking scripts.

So nodes accept the transactions, validate the transactions, replicate the transactions, maintain the mempools, validate the blocks, replicate the blocks, serve the blockchain, and store the blockchain. Nodes even define the PoW algorithm that miners have to employ.

So nodes maintain the protocol, not miners. It is thus. It has always been thus.

See for yourself. Download it. https://bitcoin.org/en/download . It's currently at 0.14.0

https://bitcoin.org/en/full-node

> A full node is a program that fully validates transactions and blocks. Almost all full nodes also help the network by accepting transactions and blocks from other full nodes, validating those transactions and blocks, and then relaying them to further full nodes.

You really need to learn how bitcoin works if you want to comment on it.