<p>To be more precise, blocks are <em>timestamped</em>, transactions in a block are validated. Timestamping creates a timeline so that it says <em>B pays C</em> can happen, since <em>A pays B</em> has been timestamped</p>

<p>Its perfectly fine to have one transaction per block if your network is used by you and your few friends. But, this is not scalable to be used by the whole world, since we only get 1block every 10 minutes</p>

CC BY-SA 4.0
2018-05-02T12:50:44.630Z
2018-05-02T12:50:44.630Z
dark knight
<p>Some transactions cannot be fully validated outside of blocks.</p>

<p>If you use <a href="https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki" rel="nofollow noreferrer">OP_CLTV</a>, a transaction can be valid only after a certain block height, and not before ; if you don't know which block it's in, there's no way to know if it is valid or not.</p>

CC BY-SA 4.0
2018-05-02T08:55:24.667Z
2018-05-02T08:55:24.667Z
alcio
<p>I'm assuming you're specifically talking about bitcoin. The details differ for other systems.</p>

<p>To validate a transaction, there are several things you need to check. But it's vital that you check that the transaction outputs that it attempts to consume exist and haven't already been spent. The outputs exist if they were created by a transaction in a prior block. The outputs haven't already been spent if they weren't consumed by any transaction in a prior block nor in any prior transaction in the block the transaction is in.</p>

<p>You'll notice that both of these rules require you to know what transactions are in prior blocks to this block and what outputs are consumed by prior transactions in this block. So these rules can't be enforced properly other than in the context of a particular position in a particular block.</p>

<p>To avoid abusive relaying, servers do validate transactions independently to see if they seem likely to be able to get into a block. This reduces the ability of a possible attacker to trick the network into wasting a lot of bandwidth relaying transactions that are very unlikely to get into a block. But this is just a guess to save relaying resources.</p>

CC BY-SA 4.0
2018-05-02T19:08:18.700Z
2018-05-02T19:08:18.700Z
David Schwartz
<blockquote>
  <p>Why cant' transactions validated directly?</p>
</blockquote>

<p>Transactions can and are validated directly. They are validated by nodes when they are received prior to being included in a block and miners must validate transactions before including them in a block.</p>

<p>The point of a blockchain is not to validate transactions but instead to provide ordering to transactions when transactions conflict each other. When two fully valid transactions conflict with each other, the blockchain is there to say which one is correct. If a block contains an invalid transaction, then the transaction is still invalid and the block is invalid.</p>

CC BY-SA 4.0
2018-05-02T18:26:55.980Z
2018-05-02T18:26:55.980Z
Ava Chow
<p>In most of the conventional blockchains, blocks are validated instead of transactions. Why cant' transactions validated directly?
The structure of basic blockchains are linked lists, by having DAGs, is it possible to have a graph-chain of transactions?</p>

<transactions><block><privacy><scalability>
Why blocks are validated instead of transactions?
user8250319
# Why blocks are validated instead of transactions?

(Asked by: username_0 on 2018-05-02)

In most of the conventional blockchains, blocks are validated instead of transactions. Why cant' transactions validated directly?
The structure of basic blockchains are linked lists, by having DAGs, is it possible to have a graph-chain of transactions?

**Tags:** transactions, block, privacy, scalability


---

## 4 answers

### Answer by username_1 on 2018-05-02. Score: 1

To be more precise, blocks are *timestamped*, transactions in a block are validated. Timestamping creates a timeline so that it says *B pays C* can happen, since *A pays B* has been timestamped

Its perfectly fine to have one transaction per block if your network is used by you and your few friends. But, this is not scalable to be used by the whole world, since we only get 1block every 10 minutes


---

### Answer by username_2 on 2018-05-02. Score: 1

Some transactions cannot be fully validated outside of blocks.

If you use [OP\_CLTV](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki), a transaction can be valid only after a certain block height, and not before ; if you don't know which block it's in, there's no way to know if it is valid or not.


---

### Answer by username_3 on 2018-05-02. Score: 0

I'm assuming you're specifically talking about bitcoin. The details differ for other systems.

To validate a transaction, there are several things you need to check. But it's vital that you check that the transaction outputs that it attempts to consume exist and haven't already been spent. The outputs exist if they were created by a transaction in a prior block. The outputs haven't already been spent if they weren't consumed by any transaction in a prior block nor in any prior transaction in the block the transaction is in.

You'll notice that both of these rules require you to know what transactions are in prior blocks to this block and what outputs are consumed by prior transactions in this block. So these rules can't be enforced properly other than in the context of a particular position in a particular block.

To avoid abusive relaying, servers do validate transactions independently to see if they seem likely to be able to get into a block. This reduces the ability of a possible attacker to trick the network into wasting a lot of bandwidth relaying transactions that are very unlikely to get into a block. But this is just a guess to save relaying resources.


---

### Answer by username_4 on 2018-05-02. Score: 0

> Why cant' transactions validated directly?

Transactions can and are validated directly. They are validated by nodes when they are received prior to being included in a block and miners must validate transactions before including them in a block.

The point of a blockchain is not to validate transactions but instead to provide ordering to transactions when transactions conflict each other. When two fully valid transactions conflict with each other, the blockchain is there to say which one is correct. If a block contains an invalid transaction, then the transaction is still invalid and the block is invalid.


---

