I think we can distill the core of our argument -- both of our walls of text -- to this single snippet:
Okay, you can keep thinking that nodes don't exist and that hashpower rules all. The miner very much cares what other nodes think, since nodes determine whether to reject his block or not. You seem to believe that the "longest chain" is all the matters... but nodes enforce the longest, valid chain. Doesn't matter how many blocks a miner extends on top of an invalid block. It seems you're incapable of imagining any situation beyond everyday orphaned blocks. But we're talking about potential attack vectors and contentious hard forks here.
For some reason,it seems that you think that a miner who has solved a block is unable to get his solved block to whichever miner will ultimately solve the next block, without intervening independent nodes.
A miner can propagate that block to whichever nodes he wants. But that miner cannot control who those nodes connect to (or therefore prevent his block from reaching any and all nodes in the network). He cannot control whether the majority of nodes in the network agrees that his block is the next valid block on the longest, valid chain. In this context, there is absolutely no difference between "mining nodes" and "non-mining nodes." Per the whitepaper:
The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received.
I say that he can -- if only by the fact that this miner also operates a node.
A miner operating a node does not negate the rest of the network, which is also operating nodes. The network can simply reject his proof-of-work if they consider it invalid. Unless he controls enough nodes to re-define what the network considers to be valid (i.e. Sybil attack), he can't ignore the entire network simply by running a node.
If the solved block gets to other miners, and one of those miners builds the next block on top of it, there is absolutely nothing that independent nodes can do about it. Period.
If some group of mining nodes accepts it as the next valid block, the rest of the network can still reject it. This is why miners can carry out block withholding attacks. By withholding the next valid block (by timestamp) and continuing to build on it, Miner A can force the rest of the network to orphan Miner B's later block(s) by eventually publishing a longer, valid chain built on top of an earlier, valid block. Even if Miner B has built multiple blocks on top of a valid blockchain, his blocks can still be forked off by the rest of the network.
The longest chain is irrelevant if it is built on top of an invalid block. It doesn't matter if that miner keeps building on the invalid chain; he has simply been forked off.
nodes determine whether to reject his block or not.
No - not in a system-wide sense. If the block makes it to other miners, and those miners consider the block valid, they will build a new block atop it.
That doesn't address whether
the network views this block as valid. If most of it doesn't, the miners are irrelevant -- forked off. Even if most miners agree
at first that it was the next valid block, the network may later disagree and fork it off. (E.g. in the case of a less-propagated valid block that was found earlier by timestamp than a better-propagated valid block that is now to to become a stale block)
The only power an independent node has is to choose not to participate in forwarding the block to other nodes or other miners. No independent node can have any effect upon any path in the connectivity graph, of which it is not a part.
Indeed, a node will not forward an invalid block to the rest of the network. If most of the network agrees it is an invalid block, it will not be retained on the longest, valid chain. Miners be damned. You are sort of implying that independent nodes are not part of the network at all. But they have the same power to reject invalid blocks that mining nodes do, by virtue of
enforcing the same rules on the same network. For those nodes to be bypassed, they would need to be on a different network entirely.
but nodes enforce the longest, valid chain.
No. Miners enforce the longest valid chain. If a chain makes it to a miner, and that miner considers it the longest valid chain, that miner will attempt to build the next block on top of it. The only power an independent node has is to choose not to participate in forwarding the chain to other nodes or other miners.
Actually, nodes -- both mining and non-mining -- are what enforces the longest, valid chain. Not hashpower. That's the very purpose and function of nodes -- validating transactions and blocks. Hashpower has nothing to do with validation.
What a miner considers to be the longest, valid chain may be completely irrelevant -- that miner is working off incomplete information. Until that chain is accepted by the majority of nodes -- and built upon with subsequent blocks to diminish the likelihood of being orphaned -- it can still be forked off by the network.
The only thing that matters is what the entire network of nodes considers to be the longest, valid chain. It doesn't matter if some miners agree on the next valid block early on -- or even mine on top of it -- because the network can still reject it as invalid.