I do expect this to have some controversy as it goes against the ethos of openness and neutrality, however I believe it may be necessary to have some tools for deterrence of bad actors in addition to the ones already available in bitcoin core.
As we see greater emergence of publicly listed miners and institutionalisation of miners, there may be an increasing trend of trying to apply controls on what txs get included or not, as we have seen earlier this year by 1 publicly listed US miner. Understandably there will always be some miner some where that will be agnostic - however reciprocal check and balance can be useful.
How would you avoid creating the problem that you say you want to solve?
On a protocol level, because miners and nodes would not agree on who to censor, wouldn't this result in a large number of forked chains?
It may not be a technically infeasible problem, considering there are already centralized crypto coins out there with few miners that claim to do this. But a centralized crypto is useless unless it originates with a nation-state or major financial player.
And who decides who the bad actors are? Should every coin be labeled with the individual miner or name who owns it? That would result in a lot of $4 wrench attacks. What happens when you disagree with people in country X, so every currency transaction or miner from that country is banned? That results in an unusable currency between countries, which makes it no longer a currency.
Presently the protocol is simple with miners competing across international institutions, which simplicity you want if you want the method to go up in value and utility. The more complicated you make the rules, the more likely that there will be flaws that require arbitration when something goes wrong. If you are trying to build a currency to "change the world" so to speak, you need it to be simple to ensure fungibility. While the one miner that you mention is willing to censor transactions, there are plenty of miners who are competing to not censor transactions. If your solution to a miner censoring transactions is to censor miners, then you end up with the problem that you created. You have to consider this in an opposite way, how do you award miners who don't censor to keep the protocol open?
If you censor miners, then aren't you already censoring transactions?
Is a more elegant way simply to block peer IP/tor ID, to choke a miner's mempool?
maybe by setting the nLocktime to (currentblockheight+2) if you have a suspicion a mining pool you don't like (but again, why the suspicion when it would've included your transaction anyway?) will mine the next block, but this is fuzzy and not guaranteed to work.
Agreed with you NotA..
I'm confused at the problem. If a miner is processing transactions, then why would you want to block them? Even if they don't mine all transactions, this miner clears portions of the mempool so that other miners can be awarded for processing the attempted blocked transactions.
The protocol was built to be resilient against this kind of attack where a miner was disliked due to the number of nodes available. If you don't like a miner, then you don't have a choice but to use them. You could block their IP, etc, but they would be able to pop up again rapidly with a new IP.