How a SegWit transaction is accepted without witness?

How legacy node can verify them without the witness?

An example of a SegWit output is: scriptPubKey: 0 ab68025513c3dbd2f7b92a94e0581f5d50f654e7. For legacy nodes, this output looks like an anyone can spend output as there are no opcodes or verification. Such outputs do not require any signatures to spend. Thus when a legacy node sees a transaction spending a SegWit output, it does not go looking for any signatures and considers the transaction to be perfectly valid.

Block size of 1MB

With the SegWit soft-fork, block size got redefined to 4,000,000 Weight Units (WU). In the WU calculation, transaction data (excluding segregated signatures) are multiplied by 4 while segregated signature data are multiplied by just 1. For example, if transaction data (excluding signatures) is 200 bytes and the witness data is 144 bytes, then the transaction has a WU of (200*4) + (144*1) = 944 WU. Blocks cannot breach this 4M WU criteria without getting invalidated. If there is a block with 1MB of non-signature data then it’s size is 4M WU (1MB*4). Adding signature data on top of that will breach that threshold.

For legacy nodes, the block size continues to remain at 1 MB as these nodes do not query for the witness data for a SegWit transaction. If a block size exceeded 1MB with transaction data excluding signatures, then it would also exceed the 4M WU criteria as well.

Source link

Leave a Comment

Your email address will not be published.