<blockquote>
  <p>In this case, if E wants to send some bitcoins to F, does he have to make a transaction all over again?</p>
</blockquote>

<p>Not necessarily. A blockchain reorganization will cause transactions that were not confirmed in the "winning" blockchain to remain unconfirmed and placed back into the mempools of nodes which switched blockchains. So the transaction will still be in nodes' mempools and could still be picked up by a miner. If the fee was very low, the situation would be the same as having a "stuck" transaction.</p>

CC BY-SA 3.0
2018-01-12T22:30:45.847Z
So theoretically, is it possible that some transactions will never be included in a “winning” blockchain? And how many transancations each node can save in mempoola? Is there no limit?
Rubertos
CC BY-SA 3.0
2018-01-12T22:34:59.003Z
It is theoretically possible for a transaction to remain unconfirmed forever, regardless of blockchain reorgs. The mempool configurations of each node may be different. The defaults for Bitcoin Core nodes is 300 MB of transactions and transactions will be evicted if they remain in the mempool for 2 weeks.
Ava Chow
CC BY-SA 3.0
2018-01-12T22:40:04.927Z
Oh.. so this is a disadvantage of bitcoin algorithm.. thank you very much!
Rubertos
CC BY-SA 3.0
2018-01-12T22:28:25.207Z
2018-01-12T22:28:25.207Z
Ava Chow
<blockquote>
  <p>Now, say miners C,D created two different blocks T_3 and T_3’ within
  10 minutes. Then, A appends these two blocks to the current block
  chain and store them separately. Following the above notation, these
  two chains are (...,T_0,T_1,T_2,T_3) and (...,T_0,T_1,T_2,T_3’).</p>
</blockquote>

<p>This situation when there are multiple chains of the same length simultaneously co-exists is called a fork. The research paper at <a href="http://homepages.gsd.inesc-id.pt/~ler/docencia/rcs1213/papers/P2P2013_041.pdf" rel="nofollow noreferrer">http://homepages.gsd.inesc-id.pt/~ler/docencia/rcs1213/papers/P2P2013_041.pdf</a> shows that the probability of fork depends on   </p>

<ol>
<li>the propagation delay of a block in the network which implicitly depends on the size of the block(1 Mb in bitcoin(without segwit2)) which effects   </li>
<li>the expected duration of consecutive block generation time(10 min in bitcoin).</li>
</ol>

<p>It also shows the probability of fork proportional to <strong>(avg. block generation time)/(avg. propagation delay)</strong>. Considering the number in bitcoin the probability that the length of fork i.e n value, in this case, will reduce exponentially. </p>

<blockquote>
  <p>In this case, if E wants to send some bitcoins to F, does he have to
  make a transaction all over again?</p>
</blockquote>

<p>Adding to @Andrew chow's answer, if the txn from E to F is propagated to sufficient fraction of miners who extending the chain (...,T_0,T_1,T_2,T_3,T_4,...,T_n) then it is likely that they will include the txn(E -> F) in the chain as it is yet unspent. </p>

<blockquote>
  <p>Assume that the transaction that E sent F some bitcoins was not
  included in any other blocks except the block T_3.</p>
</blockquote>

<p>Additionally, the main reason for a txn not getting included in the block are<br>
1. It is not propagated to sufficiently many miners.<br>
2. Since a block is limited in size, and the inclusion of txn is purely dependent on the miner mining the block, a miner may prefer a txn with higher txn fee over any other.</p>

CC BY-SA 3.0
2018-01-13T04:49:53.007Z
2018-01-13T04:49:53.007Z
sourav
<p>I am trying to understand the algorithm of bitcoin.</p>

<p>Let A be a node, and let (...,T_0,T_1,T_2) represents a block chain that A has at some time.</p>

<p>Here, T_i designates a block which was created at the time T_i, meaning that the block T_n was created before the block T_{n+1} was created.</p>

<p>Now, say miners C and D created two different blocks T_3 and T_3’ within 10 minutes. Then, A appends these two blocks to the current block chain and store them separately. Following the above notation, these two chains are (...,T_0,T_1,T_2,T_3) and (...,T_0,T_1,T_2,T_3’). </p>

<p>Now, say E sent F some bitcoins and made a transaction which is included in the block T_3.</p>

<p>After some time, if the blockchain (...,T_0,T_1,T_2,T_3’) is chosen to be the correct one, the chain (...,T_0,T_1,T_2,T_3) is removed from server. (Actually, at this point, these two separate blockchains do not appear in this way. That is, they would appear like (...,T_0,T_1,T_2,T_3’,T_4’,...,T_n’) and (...,T_0,T_1,T_2,T_3,T_4,...,T_n) because as time passes new blocks are added.</p>

<p>Assume that the transaction that E sent F some bitcoins was not included in any other blocks except the block T_3. (This is possible if E sent F very small amount of money, so if this transaction costs really tiny small fee, miners would not choose this transaction to be included in their block).</p>

<p>In this case, if E wants to send some bitcoins to F, does he have to make a transaction all over again?</p>

<blockchain><block>
Is it true that bitcoin could be extremely slow?
Rubertos
# Is it true that bitcoin could be extremely slow?

(Asked by: username_0 on 2018-01-12)

I am trying to understand the algorithm of bitcoin.

Let A be a node, and let (...,T\_0,T\_1,T\_2) represents a block chain that A has at some time.

Here, T\_i designates a block which was created at the time T\_i, meaning that the block T\_n was created before the block T\_{n+1} was created.

Now, say miners C and D created two different blocks T\_3 and T\_3’ within 10 minutes. Then, A appends these two blocks to the current block chain and store them separately. Following the above notation, these two chains are (...,T\_0,T\_1,T\_2,T\_3) and (...,T\_0,T\_1,T\_2,T\_3’).

Now, say E sent F some bitcoins and made a transaction which is included in the block T\_3.

After some time, if the blockchain (...,T\_0,T\_1,T\_2,T\_3’) is chosen to be the correct one, the chain (...,T\_0,T\_1,T\_2,T\_3) is removed from server. (Actually, at this point, these two separate blockchains do not appear in this way. That is, they would appear like (...,T\_0,T\_1,T\_2,T\_3’,T\_4’,...,T\_n’) and (...,T\_0,T\_1,T\_2,T\_3,T\_4,...,T\_n) because as time passes new blocks are added.

Assume that the transaction that E sent F some bitcoins was not included in any other blocks except the block T\_3. (This is possible if E sent F very small amount of money, so if this transaction costs really tiny small fee, miners would not choose this transaction to be included in their block).

In this case, if E wants to send some bitcoins to F, does he have to make a transaction all over again?

**Tags:** blockchain, block


---

## 2 answers

### Answer by username_1 on 2018-01-12. Score: 2 | Accepted answer

> In this case, if E wants to send some bitcoins to F, does he have to make a transaction all over again?

Not necessarily. A blockchain reorganization will cause transactions that were not confirmed in the "winning" blockchain to remain unconfirmed and placed back into the mempools of nodes which switched blockchains. So the transaction will still be in nodes' mempools and could still be picked up by a miner. If the fee was very low, the situation would be the same as having a "stuck" transaction.

> **Comments:**
> **username_0**: So theoretically, is it possible that some transactions will never be included in a “winning” blockchain? And how many transancations each node can save in mempoola? Is there no limit?  
> **username_1**: It is theoretically possible for a transaction to remain unconfirmed forever, regardless of blockchain reorgs. The mempool configurations of each node may be different. The defaults for Bitcoin Core nodes is 300 MB of transactions and transactions will be evicted if they remain in the mempool for 2 weeks.  
> **username_0**: Oh.. so this is a disadvantage of bitcoin algorithm.. thank you very much!  

---

### Answer by username_2 on 2018-01-13. Score: 0

> Now, say miners C,D created two different blocks T\_3 and T\_3’ within
> 10 minutes. Then, A appends these two blocks to the current block
> chain and store them separately. Following the above notation, these
> two chains are (...,T\_0,T\_1,T\_2,T\_3) and (...,T\_0,T\_1,T\_2,T\_3’).

This situation when there are multiple chains of the same length simultaneously co-exists is called a fork. The research paper at <http://homepages.gsd.inesc-id.pt/~ler/docencia/rcs1213/papers/P2P2013_041.pdf> shows that the probability of fork depends on

1. the propagation delay of a block in the network which implicitly depends on the size of the block(1 Mb in bitcoin(without segwit2)) which effects
2. the expected duration of consecutive block generation time(10 min in bitcoin).

It also shows the probability of fork proportional to **(avg. block generation time)/(avg. propagation delay)**. Considering the number in bitcoin the probability that the length of fork i.e n value, in this case, will reduce exponentially.

> In this case, if E wants to send some bitcoins to F, does he have to
> make a transaction all over again?

Adding to @Andrew username_1's answer, if the txn from E to F is propagated to sufficient fraction of miners who extending the chain (...,T\_0,T\_1,T\_2,T\_3,T\_4,...,T\_n) then it is likely that they will include the txn(E -> F) in the chain as it is yet unspent.

> Assume that the transaction that E sent F some bitcoins was not
> included in any other blocks except the block T\_3.

Additionally, the main reason for a txn not getting included in the block are  
1. It is not propagated to sufficiently many miners.  
2. Since a block is limited in size, and the inclusion of txn is purely dependent on the miner mining the block, a miner may prefer a txn with higher txn fee over any other.


---

