so all they can mess with is the amount of transactions they include or if enough power over enough time go back and change the transaction list of a recent old block and then catch up to re-org the chain of recent blocks to undo some confirmed transactions
Um, that sounds like... total control of Bitcoin to me
. Seriously, if I could double-spend and validate blocks without the private key, that's... absolute control of the network, at least in terms of Bitcoin's actual function.
no.. mining pools
cant edit transactions
owned by others to change the destination of funds.. they can:
edit old BLOCKS to not contain transactions and then catch up with the blockheight to then re-org the chain
then edit only their own transactions to then spend their utxo again if it has been un-wound via a re-org
its not about spending other peoples value. its just about reversing payments and if the reversed payment was one of their own then yes they can respend it to a different destination.. however other peoples now reversed transactions(if reversed) are deemed not spent, which they can either try to rebroadcast to get it confirmed again or the key holder can make a new transaction to spend the utxo value to a new destination..
emphasis third time to save reposting.. mining pools cannot 'take control' of other peoples value to edit the transaction to a different destination
if an entity took over a mining pool server. miners can simply 'pool hop' away to another mining pool or even just a different stratum ip address of same brand if they notice silliness occur to blocks produced by a certain pool
How would you know which is which on the fly? And what is to stop the majority hashrate from doing it's own "pool hopping" or for that matter any individual miner today? If users of the network can simply pick and choose the nodes they will and won't work with, then that means a 51% attack is
even easier since the "good" nodes would be instantly iced out and deemed "evil" by the "evil" nodes.
miners know many pools of different brands and which are affiliated or not.. heck even you know which ones are affiliated and which are not. so if 2 pools were colluding. and miner owners working for their pool notice dodgy stuff happening to their pools blocks. the miners can hop to a different pool thats not colluding
as for your mentions about nodes.. well yes we did see the NYA group in 2017(group of economic nodes (main exchanges/services)) collude to say they wont accept blocks from pools that didnt vote positively for an upgrade.. and the opposite can be true too, economic nodes can ignore blocks that do certain things like empty blocks or multiple chain re-orgs or other anoyances
And if you are talking about doing things based on ip addresses, then boy oh boy, there are lots and lots of problems with that. IP addresses can change in milliseconds, there are many ways to change/cloak them, and so on. No serious secure system on the public Internet uses ip addresses as a mechanism for identity.
mining pools can change ip addresses of their stratums, but then it will cause continuity of hashrate issues as miners would need to change addresses their asics point to each change. meaning the pool loses power until everyone they had on old address moves over, thus not really a good method to "hide" and still remain powerful.. infact it would be a sign of them doing this that would make miners hop away and avoid that type of pool that keeps switching IP's
So question is, how would one stop a 51% attack? From my understand of the network, a "51% attack" would immediately turn into a "49% attack" by the losing minority, and the "good" nodes would be treated as the "evil" ones.
51% is not about nodes.. its about hashrate
anyways the many preventatives are about monitoring the blockchain and noticing if:
one pool keeps getting too many blocks in a row
one pool keeps getting too many blocks too quickly
a re-org occurred
one pool keeps doing empty blocks
one pool does [insert many annoyances]
where miners then hop to a pool that does not do the annoyances
it also helps by miners hopping to different pools when pools have a high percentage even when there are no annoyances.. to not get near the odds of them repeatedly making blocks in succession.. as the more miners on one pool the more the reward needs to be shared meaning the miners get less reward and risk having the block rejected if pool does annoying things.. so they are risk adverse to not even let things get to those potentials
also if pools have too much hashrate and making blocks too quickly, it shoots them in the foot by raising the difficulty which hurt their income.. so they naturally try to find a safe balance even when pools are not nefarious
its financially incentivised to:
not make too many blocks too quickly and have too much hashpower in one pool
act honourably to ensure blocks are not rejected(rewards cant be spent if rejected)