0

In a recently Medium article, Joe Kelly described an attack that he calls "Monopoly Mining" in which a state actor or some other very well resourced party that obtains majority hashpower does more than double-spend, they deny all other miners block rewards and thus disrupt the network (https://joekelly100.medium.com/how-to-kill-bitcoin-part-3-no-can-defend-cd6affe3fc44). The attack requires mining ahead but not publishing the chain being created until an opportune time when the majority miner's secret chain is sufficiently far ahead of the canonical chain. Then the majority miner publishes enough of the blocks to establish the new canonical chain taking away all of the block rewards of the now orphaned blocks. Then when any other miner tries to add a new block, the majority miner releases two more withheld blocks to keep denying any other miner block rewards.

Disregarding for the moment the expense required to carry out this attack and the question of whether any entity could attain majority hashpower and build a sufficiently long alternate chain to execute this attack in secret, it seems to me that withholding discovered blocks serves no useful purpose and that this attack could be dealt with by a soft fork that disregards any block that the applicable miner did not publish within a certain amount of time after it was found. But do Bitcoin nodes receive enough information to determine the amount of time that has passed from the time the block was found to the time it was published?

An Ivan on Tech article describes how the Horizen protocol penalizes nodes that delay publishing blocks (https://academy.moralis.io/blog/breaking-down-proof-of-work-mining-and-51-attacks). Has anything similar been seriously considered for Bitcoin?

2 Answers 2

2

In principle, a node knows the date and time at which transactions in the new block were added to this node's mempool. That provides an approximate upper limit to the time the block might have been withheld.

For example if at 10:00 the node receives a block which contains a transaction the node had received at 9:00 it is unlikely the block could have been withheld more than an hour.

-1

But do Bitcoin nodes receive enough information to determine the amount of time that has passed from the time the block was found to the time it was published?

There is no feature of a block which would reveal this information. A block can be created at any time, with any details within, and it will be accepted by the network as valid so long as it passes the consensus rules. There are no changes that could be made to Bitcoin in order to make this sort of thing possible.

10
  • This answer is not correct. The time a block was withheld can be determined (not necessarily with perfect accuracy, but that doesn't matter) by looking at how much time elapsed between when the block could have been mined (which you can determine based) and when you first saw it. You can penalize blocks that could have been mined long ago. (I don't see any point in doing so, but whether it would serve any purpose is another question.) Jan 1 at 6:28
  • This answer is correct. You can not prove when a block was received, or when other transactions were received to any other participant on the network, so details like that can't be part of the consensus system. If nodes were to "penalize" blocks they received based on local observation the consensus system would fail. A node can make a guess that a block is new only if it contains a transaction they produced, as they have knowledge of when it was signed, which is completely meaningless.
    – Claris
    Jan 1 at 11:19
  • This question isn't about the consensus system at all. It's about the eventual agreement part of it. You're absolutely wrong that it can make the consensus system fail for two reasons: 1. The consensus system is independent. 2. Nothing with purely local effects can make the consensus system fail. (continued) Jan 2 at 1:42
  • For example, consider a rule that says you don't treat any new transactions as confirmed if you haven't seen a newly-mined block for twenty minutes until you see at least two blocks mined with 15 minutes. That will cause nodes to disagree over which blocks are confirmed, but that's perfectly normal and would in no way break the consensus scheme. A node's decision to wait longer before trusting a transaction or refuse to mine on the "longest chain" because it seems suspicious cannot break consensus. Jan 2 at 1:44
  • this attack could be dealt with by a soft fork that disregards any block that the applicable miner did not publish within a certain amount of time after it was found The discussion is about consensus rules.
    – Claris
    Jan 2 at 1:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.