Difference between revisions of "VOUT"

Line 1: Line 1:
"vout" has two interpretations in a transaction.  
+
A '''transaction outpoint''' or '''transaction output number''' is a 4-bye index indicating the position of a particular transaction output within a transaction.  
  
When it appears in an input of a transaction, it is an index of 4 bytes. It is concatenated with a transaction ID (TxID || vout) to form an outpoint that is used to uniquely identify a particular output of a transaction. As the index is a 4 byte number, this gives users the effective ability to include a maximum of 2<sup>32</sup> outputs in a Bitcoin transaction.  
+
However, in the technical specification of Bitcoin SV "vout" has two interpretations. When it appears in an input of a transaction, it is an index of 4 bytes. It is concatenated with a transaction ID (TxID || vout) to form an outpoint that is used to uniquely identify a particular output of a transaction being spent. As the index is a 4 byte number, this gives users the effective ability to include a maximum of 2<sup>32</sup> outputs in a Bitcoin transaction.  
  
When it is not part of the input, it refers to a vector of outputs of the transactions. That is, "vout" is the set of all outputs of the transaction, where each output contains output value (the amount of BSV) and scriptPubKey (a script that locks the output value). Note that the order within the set matters.  
+
When it is not part of the input, it refers to a vector of outputs in a transaction. That is, "vout" is the JSON keyword identifying the set of all outputs of a transaction, where each output contains output value (the amount of BSV) and scriptPubKey (a script that locks the output value). Note that the order within the set matters.  
  
 
==Unspent Transaction Outputs==
 
==Unspent Transaction Outputs==

Revision as of 12:20, 17 February 2020

A transaction outpoint or transaction output number is a 4-bye index indicating the position of a particular transaction output within a transaction.

However, in the technical specification of Bitcoin SV "vout" has two interpretations. When it appears in an input of a transaction, it is an index of 4 bytes. It is concatenated with a transaction ID (TxID || vout) to form an outpoint that is used to uniquely identify a particular output of a transaction being spent. As the index is a 4 byte number, this gives users the effective ability to include a maximum of 232 outputs in a Bitcoin transaction.

When it is not part of the input, it refers to a vector of outputs in a transaction. That is, "vout" is the JSON keyword identifying the set of all outputs of a transaction, where each output contains output value (the amount of BSV) and scriptPubKey (a script that locks the output value). Note that the order within the set matters.

Unspent Transaction Outputs

If an outpoint has not been spent, it is referred to as an Unspent Transaction Output or UTXO and can be used in the creation of a new transaction by a user that is able to satisfy the spending conditions defined by the output script. Once an outpoint has been used as an input to a transaction that has been validated by the mining network it is considered spent and can no longer be used in a new transaction (see Double-spending).

Zero value outputs

Outputs that do not contain a value in Satoshis are often used to hold scripts that carry large data items or tokens. Provably unspendable zero-value False Return outputs have been predominantly used as a means to attach data to bitcoin transactions. False return transaction outputs are not stored in the UTXO set derived by miners. It should be noted that this is not the only mechanism for data storage, it is just the one that was easiest to use prior to the Genesis protocol restoration.

Non-false return zero value outputs are still valid UTXOs and can be used as inputs in a transaction, with locking conditions being applied as normal.

See Also

References

[1] - https://github.com/bitcoin-sv/bitcoin-sv/blob/7fd177c7c443ff7723d88c5465fbf39285388e30/src/primitives/transaction.h