Thread

"Miners can just put malicious stuff in blocks, so disallow nodes from having any say over whether or not they can reject that stuff from their mempools." Wakey wakey everyone. The heart of the issue with Bitcoin Core is this: They are seeking to disallow Bitcoiners any means by which they can decide what does/doesn't end up in their mempools. This is a critical and almost-never discussed aspect of what makes Bitcoiners sovereign. You are not running a free service for miners where you must seek and relay to them whatever pays them the most. Your node is yours to do with what you deem appropriate. image

Replies (30)

The Bitcoin core team doesn’t decide what Bitcoin consensus is. The users decide. Since I use software with an OP_Return limit, I will NOT be adding to the consensus that the limit should be removed. You can choose to do that sure, just like many other users that choose to set the limit lower than Bitcoin core does by default. The job of the node is to validate transactions according to their own policy. Not to blindly run any type of software any particular dev team tells them to.
I think you are confusing things here. Block validation does not have much to do with policy. Every node has to run the same block validation checks or risk inadvertently forking itself off, or getting forked off by an attacker feeding it a specially crafted block, and falling out of consensus. My choice as a user would be running Bitcoin Core, but I could also be running btcd, or libbitcoin, as long as they implement the exact same checks in their validation logic. Bitcoin Knots just re-uses the exact same block validation logic that Bitcoin Core does, so there is no difference there. We all have to apply the same logic, or risk falling out of consensus. The difference that policy makes in the case where a Bitcoin Core and Bitcoin Knots client enforces different policy rules is that if a transactions enters a Bitcoin Core client's mempool, and is then included in a newly mined in a block, Bitcoin Core does not have to re-request the transaction from a peer and can validate the block with the transaction it already has. If Bitcoin Knots on the other hand does not have the transaction yet, it requests it from a peer first, and then validates the block with it. In the end, the result is the same. Both nodes validate the block in the same manner, persist the same block of transactions to disk, and have the same view of the set of unspent transaction outputs. Applying the same block validation rules is the consensus all nodes have to maintain with each other and policy does not really play into that.
There is no such thing as "broader consensus". There is consensus and there is policy. There is no fuzzy line in between them. Both are part of node software and policy at least being somewhat common between nodes is good for the health of the network to reduce latency and p2p traffic, but there is no consensus mechanism involved and it is not crucial. You can run a full node without a mempool at all. Maybe you are referring to what might be called the "social consensus" within the broader community of node runners to adopt similar policy rules?
I agree with your last post here. The thinking of most core developers is that there is no point in maintaining an option that effectively achieves nothing. It is compared with a placebo. If transactions make it into blocks anyway, and there is no physical resource consumption downside, what is the point of keeping them out of the mempool?