42

There are several definitions with overlapping meanings. The first is perhaps best called extinct blocks. These are blocks that were produced by building on a block that is no longer the active tip of the chain. Some nodes may have considered it to be the best block at some point, but they switched to another chain which does not contain the relevant block ...


28

Stale blocks: At any second, a block may be "solved." This means that everyone else in the world working on that block must stop, and restart their work. Continuing to work after that point is known as working on a "stale block" because it is old data, and old transactions. My understanding is the term stale is much more commonly applied to ...


15

Orphan blocks (in that meaning) are not a network-wide condition. They're an implementation detail (and arguably a bug). Orphan blocks are simply blocks for which a particular node in the network doesn't have the parent yet. It doesn't mean that parent does not exist. Since Bitcoin Core 0.10, this concept simply doesn't exist anymore. They were a side ...


15

The March 12, 2013 blockchain fork started with 225430 and so far has reached block 225461, so it is 31 blocks long. Some of those were mined long after the fork supported by v0.7 clients had regained longest chain. At the peak the fork which supported by v0.8 clients was at least a dozen blocks higher meaning transactions that had more than ten ...


5

A fork happens. If A and B are competing for the next block, they probably share transactions. So you cannot simply append A to B. They're both valid blocks, nodes hold both of them until they hear about a new block that was built on top of either A or B. Let's say a node hears a new block C was built on top of B, that node will then disregard A because it ...


5

Selfish Mining cannot be used to change transactions in any way, therefore, it is impossible to steal funds in such fashion. Also, Selfish Mining is somewhat the opposite of Double-Spending, as double-spending would require you to publish your own blocks as quickly as possible in order to overtake the network, while selfish mining is based on keeping ...


5

I don't think the blockexplorer reorglog catches all blocks. http://blockchain.info/orphaned-blocks shows 1-2 detached blocks per day.


5

A stale block (also often confusingly referred to as 'orphan block') occurs when two competing blocks were found and then another block builds on top of one of them. See the following minimal example: the blocks B1 and B2 were discovered at the same time and then the discovery of block C clarifies that B2 is part of the chain with the most difficulty ("...


4

An attacker can forge fake block. Yes, but an invalid block would be rejected by all other participants that see it, and not relayed. Thus, such a block has little to no impact. This is great but what happens if my transaction is in the fake block? Let’s suppose i am buying a car. Should i wait 6 blocks to be generated to be sure? But I have to wait one ...


4

what happens if my transaction is in the fake block? It is also in the memory pool (mempool) of pending transactions at other nodes run by more honest people and will be included in a new and valid block in the normal way. Let’s suppose I am buying a Tesla car. Should I wait 6 blocks to be generated to be sure? But I have to wait 1 hour! Yes. There are ...


4

Stale and orphan blocks are confusing terms with many meanings, depending on whom you ask. If by stale blocks you mean "blocks that are on branches off the main chain, but are otherwise valid", yes, those still exist. They are inherent to proof-of-work chains, as you can't avoid the case where occasionally two miners produce a competing block. Necessarily, ...


4

Blockchain forks occur when two blocks are found at the same height. Only one of the two chaintips can become part of the best chain. Each full node will consider the first block it saw to be the best block for that height, until proven otherwise by another chaintip accumulating a greater total difficulty (i.e. adding another block). When another chaintip ...


4

how can I make sure that this block that my node received is a valid block Bitcoin Core will only announce (through ZMQ) blocks that change the tip of the best-known valid chain. This implies they together with all their ancestors are fully valid. and it is not an orphan block At the time it is announced, you know that it is part of the best-known valid ...


4

In Bitcoin Core (as of 0.19.1) they are not pruned unless pruning is enabled in general (in which case they're pruned along with all other blocks). They are indeed superfluous, but they're also cheap to keep. Stale blocks are assumed to be rare (if they're not, the network has bigger problems), and if disk space is an issue in general, pruning should ...


3

Each block commits to the previous block in the block header by including the previous block's hash. A block's hash is defined as the output of hashing the block header, and for a block to be valid, this hash must fulfill the current difficulty requirement. While blocks can have more than one child block, the Bitcoin network finally agrees on just one best ...


3

Update for everyone who stumbles up on this question. There is a paper that shows why it is hard to figure out the actual fork rate. it's from this paper "Echoes of the Past: Recovering Blockchain Metrics From Merged Mining" https://eprint.iacr.org/2018/1134.pdf


3

Orphans are not in the chain (as seen by the processing node) because their parents are missing, stales are not in the chain because they have no children in the chain. Source: the glossary at bitcoin.org: stale blocks are: "Blocks which were successfully mined but which aren’t included on the current best block chain, likely because some other block at ...


3

Bitcoin Core maintains a separate orphan pool, with transactions whose parents are missing. Its main purposes is dealing with peers that send us groups of independent transactions in the wrong order, so this pool does not need to be large. Since Bitcoin Core v0.13.0, all transactions sent to peers are sent in batches, and within those batches in dependency ...


2

Don't we actually mean stale blocks when talking in context of selfish mining? You always mean stale blocks, never orphan ones. An orphan block is one that you can not connect to your local chain because you are missing a parent, in the current version of the software you can never get into the situation where this happens. When most people are talking ...


2

When a node learns of a transaction, some validity tests are performed and if the transaction is not yet in the blockchain it knows of with the longest height and the transaction also is valid (i.e., not a double spend) then that transaction is added to that node's memory pool. If a later transaction arrives at a node but is an attempt to double spending of ...


2

Found the answer on Bitcoin Wiki short after. The reward for the blocks on the shorter chain will not be present in the longest chain, so they will be practically lost, which is why a network-enforced 100-block maturation time for generations exists. Since practically no fork can survive longer than 10 block. This enforcement could prevent the scenario ...


2

(I don't think of this as a standard term, so the context was useful for me to figure out what this question was asking -- then I realized you're asking about a specific usage I have used regarding some p2p logic!) I've used the term "stale tip" in the context of Bitcoin Core's p2p logic to specifically refer to the case of our tip not having ...


2

how the chain containing the "empty" block was heavier than the chain containing the stale block? "Heaviest" is technically not the correct terminology. Bitcoin uses the valid chain with the most cumulative work. This is unrelated to the size of blocks nor their "weight" (whether that be weight units as defined by segwit, or ...


1

Split chains can be seen as separate coins, except that a transaction with inputs valid in both chains (maybe a coinbase before the fork) would be valid in both. In that miner's chain, the miner can spend his coinbase. The rest of the nodes will see the transaction as invalid and ignore it, as his block isn't part of the main chain. If the miner wants, the ...


1

You can’t. Nodes don’t respond to messages about stale blocks because this would be a fingerprinting vector.


1

There are several sites that maintain this information, and Bitcoin Core can be asked about it using the getchaintips RPC command. It is however important to know that such information can never be guaranteed to be complete. Nodes only relay new blocks that are part of the (new) best chain. A fork appears when two blocks are produced at approximately the ...


1

11/12 March 2013 Chain Fork at block height 225,430.It's 31 blocks long.


1

I don't believe there is a direct way to do this via ZeroMQ. Your best bet would be to validate the ancestry for each block as you receive it. When you receive a block, check its parent hash against blocks you have already seen. If the parent chain validates and you do not have another, longer child chain from the parent block already, you can accept this ...


1

My question is: does the client report stale blocks which are mined into the blockchain but not part of the main chain or are they ignored and hidden from me? Blocks that are not part of the main chain are never reported unless you specifically ask for them. However if you are online, new blocks can become stale blocks and you will need to be able to ...


1

will the shorter chain still be published? Published -- no. However, if the stale tip was previously the best tip, it will be stored in a Bitcoin Core node implementation according to the source and other nodes can retrieve it up to a certain point in time. The time limit is imposed to avoid fingerprinting. Does the network still synchronize the shorter ...


Only top voted, non community-wiki answers of a minimum length are eligible