<blockquote>
  <p>But the progress of a blockchain is how fast it reaches consensus, and this does not seem to require all nodes to verify all transactions as the longest chain can spread throughout the network before every transactions on it is verified by all the nodes.</p>
</blockquote>

<p>All nodes having received a block does not mean that the network has come to consensus. Consensus occurs when all nodes on the network agree on what the blockchain is. This can only happen once every node has verified all blocks and their transactions. So verifying all blocks and transactions is actually a bottleneck.</p>

CC BY-SA 4.0
2019-01-22T07:11:22.110Z
Yes, I was saying that consensus is reached when (the block containing) a longest chain spread throughout all the nodes, not just any block. All node will agree on the longest chain based on its cumulative work.

When a node is validating a block, its acceptance does not require that all transactions in the block must have reached the node beforehand, just that the block and its content follows all the rules.
Danny
CC BY-SA 4.0
2019-01-22T09:29:48.067Z
The validity criteria includes that all the transactions in a block are valid.
Claris
CC BY-SA 4.0
2019-01-22T10:14:23.280Z
@Anonymous , Yes but I am referring to the validation of each transaction when a node receives it, not the one during block validation. (normally each tx is verified twice in the blockchain network)
Danny
CC BY-SA 4.0
2019-01-22T10:24:58.393Z
They’re really not. Validation happens once and is cached if not in a block.
Claris
CC BY-SA 4.0
2019-01-22T11:45:18.513Z
@Anonymous yes but when a block containing the transaction arrives, the node validates all tx in it.
Danny
CC BY-SA 4.0
2019-01-22T16:38:05.543Z
Not necessarily. BIP 152 Compact Blocks allows for blocks to be relayed before they are fully validated. It is possible to have received and then relayed an invalid block because some parts of it were valid. This has happened in the past. If you assume that all nodes have verified all of the transactions in a block before that block is relayed, then yes, when the block has propagated to all nodes consensus has been achieved. There is no need for every node to receive and verify all unconfirmed transactions for consensus to be reached. Bitcoin Core even allows for this by using blocks only mode
Ava Chow
CC BY-SA 4.0
2019-01-22T05:28:56.143Z
2019-01-22T05:28:56.143Z
Ava Chow
<p>It is often said that the major bottleneck of blockchain scalability is that every (honest) node has to process every (valid) transactions. But the progress of a blockchain is how fast it reaches consensus, and this does not seem to require all nodes to verify all transactions as the block containing the longest chain can spread throughout the network before every transactions in the block is verified by all the nodes.</p>

<transaction-verification><consensus><scalability>
On blockchain scalability bottleneck
Danny
# On blockchain scalability bottleneck

(Asked by: username_0 on 2019-01-22)

It is often said that the major bottleneck of blockchain scalability is that every (honest) node has to process every (valid) transactions. But the progress of a blockchain is how fast it reaches consensus, and this does not seem to require all nodes to verify all transactions as the block containing the longest chain can spread throughout the network before every transactions in the block is verified by all the nodes.

**Tags:** transaction-verification, consensus, scalability


---

## 1 answers

### Answer by username_1 on 2019-01-22. Score: 2

> But the progress of a blockchain is how fast it reaches consensus, and this does not seem to require all nodes to verify all transactions as the longest chain can spread throughout the network before every transactions on it is verified by all the nodes.

All nodes having received a block does not mean that the network has come to consensus. Consensus occurs when all nodes on the network agree on what the blockchain is. This can only happen once every node has verified all blocks and their transactions. So verifying all blocks and transactions is actually a bottleneck.

> **Comments:**
> **username_0**: Yes, I was saying that consensus is reached when (the block containing) a longest chain spread throughout all the nodes, not just any block. All node will agree on the longest chain based on its cumulative work.  When a node is validating a block, its acceptance does not require that all transactions in the block must have reached the node beforehand, just that the block and its content follows all the rules.  
> **username_2**: The validity criteria includes that all the transactions in a block are valid.  
> **username_0**: @Anonymous , Yes but I am referring to the validation of each transaction when a node receives it, not the one during block validation. (normally each tx is verified twice in the blockchain network)  
> **username_2**: They’re really not. Validation happens once and is cached if not in a block.  
> **username_0**: @Anonymous yes but when a block containing the transaction arrives, the node validates all tx in it.  
> **username_1**: Not necessarily. BIP 152 Compact Blocks allows for blocks to be relayed before they are fully validated. It is possible to have received and then relayed an invalid block because some parts of it were valid. This has happened in the past. If you assume that all nodes have verified all of the transactions in a block before that block is relayed, then yes, when the block has propagated to all nodes consensus has been achieved. There is no need for every node to receive and verify all unconfirmed transactions for consensus to be reached. Bitcoin Core even allows for this by using blocks only mode  

---

