1

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?

4 Answers 4

1

Some transactions cannot be fully validated outside of blocks.

If you use OP_CLTV, 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.

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

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.

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.