Mark Friedenbach [ARCHIVE] on Nostr: š
Original date posted:2014-04-21 š Original message:That wasn't what I was ...
š
Original date posted:2014-04-21
š Original message:That wasn't what I was saying. Right now the primacy of a block is
determined by the time at which the `block` message is received, which
is delays due to both the time it takes to transmit the block data and
the time it takes to validate. Headers-first, on the other hand, has the
option of basing primacy on the time the block header is received, which
is O(1) time to transmit and to SPV-validate. Mining on that block
doesn't actually commence until the full block is received and validated.
To see how this works, take an example: two blocks with a common parent
are found relatively close to each other, block A and block B. A is
found first but is a large block with the maximum block size and many
slow scripts. B is found a few seconds later and is an empty block. In
the current regime it is entirely possible that block B, the later but
smaller block, would get received and processed first by more mining
peers than the larger block A, exactly as described in Jonathan Levin's
email.
With headers-first, however, the cost of propagation of the block header
is the same and we should expect block A to win out over block B nearly
every time. Miners will continue working on the old, known valid parent
block until the contents of block A are received and processed. So the
smaller block B is still found, and since it's data moves across the
network faster, miners even briefly mine on block B. But as soon as they
receive and process the contents of block A, they switch to that.
The earlier, larger block A will only become stale if *two* blocks are
found in the extra time it takes for block A to propagate the network.
That is a substantially different risk, and probably a negligible
concern to most miners.
On 04/20/2014 09:06 PM, Peter Todd wrote:
> That is mistaken: you can't mine on top of just a block header,
> leaving small miners disadvantaged as they are earning no profit
> while they wait for the information to validate the block and update
> their UTXO sets. This results in the same problem as before, as the
> large pools who mine most blocks can validate either instantly - the
> self-mine case - or more quickly than the smaller miners.
>
> Of course, in reality smaller miners can just mine on top of block
> headers and include no transactions and do no validation, but that is
> extremely harmful to the security of Bitcoin.
Published at
2023-06-07 15:19:12Event JSON
{
"id": "811e83eb8ed0441bd420dee65a9ae2eb82cd20c5df7cd869850a0e4a77941b86",
"pubkey": "1c61d995949cbfaf14f767784e166bde865c7b8783d7aa3bf0a1d014b70c0069",
"created_at": 1686151152,
"kind": 1,
"tags": [
[
"e",
"225542fbb0416409e03eda129471630d31d92ef89928ee3f68c485123513f923",
"",
"root"
],
[
"e",
"f295e1ad92fb1430008392a95c8a1e3a0d1a4f5cdecce20f7f808e7dfb6f9767",
"",
"reply"
],
[
"p",
"86f42bcb76a431c128b596c36714ae73a42cae48706a9e5513d716043447f5ec"
]
],
"content": "š
Original date posted:2014-04-21\nš Original message:That wasn't what I was saying. Right now the primacy of a block is\ndetermined by the time at which the `block` message is received, which\nis delays due to both the time it takes to transmit the block data and\nthe time it takes to validate. Headers-first, on the other hand, has the\noption of basing primacy on the time the block header is received, which\nis O(1) time to transmit and to SPV-validate. Mining on that block\ndoesn't actually commence until the full block is received and validated.\n\nTo see how this works, take an example: two blocks with a common parent\nare found relatively close to each other, block A and block B. A is\nfound first but is a large block with the maximum block size and many\nslow scripts. B is found a few seconds later and is an empty block. In\nthe current regime it is entirely possible that block B, the later but\nsmaller block, would get received and processed first by more mining\npeers than the larger block A, exactly as described in Jonathan Levin's\nemail.\n\nWith headers-first, however, the cost of propagation of the block header\nis the same and we should expect block A to win out over block B nearly\nevery time. Miners will continue working on the old, known valid parent\nblock until the contents of block A are received and processed. So the\nsmaller block B is still found, and since it's data moves across the\nnetwork faster, miners even briefly mine on block B. But as soon as they\nreceive and process the contents of block A, they switch to that.\n\nThe earlier, larger block A will only become stale if *two* blocks are\nfound in the extra time it takes for block A to propagate the network.\nThat is a substantially different risk, and probably a negligible\nconcern to most miners.\n\nOn 04/20/2014 09:06 PM, Peter Todd wrote:\n\u003e That is mistaken: you can't mine on top of just a block header,\n\u003e leaving small miners disadvantaged as they are earning no profit\n\u003e while they wait for the information to validate the block and update\n\u003e their UTXO sets. This results in the same problem as before, as the\n\u003e large pools who mine most blocks can validate either instantly - the\n\u003e self-mine case - or more quickly than the smaller miners.\n\u003e \n\u003e Of course, in reality smaller miners can just mine on top of block\n\u003e headers and include no transactions and do no validation, but that is\n\u003e extremely harmful to the security of Bitcoin.",
"sig": "f7efde42df4b3a66ffc634bbd056a7ae4c803cb512e0823561b5c3a43d7b6e87ae4f469c13eb5681dba6e5808592e26e0f3f7e48569ef3bf7af182213a6def14"
}