# Class BSV::Transaction::TransactionOutput <a id="class-BSV-Transaction-TransactionOutput"></a>

**Inherits:** `Object`

A transaction output specifying an amount and spending conditions.

Each output locks a number of satoshis behind a locking script. Outputs are
consumed by transaction inputs that provide matching unlocking scripts.

## Attributes
### `change` [RW] <a id="attribute-i-change"></a> <a id="change-instance_method"></a>
- **@return** [Boolean] whether this output receives change

### `locking_script` [RW] <a id="attribute-i-locking_script"></a> <a id="locking_script-instance_method"></a>
Returns the value of attribute locking_script.

### `satoshis` [RW] <a id="attribute-i-satoshis"></a> <a id="satoshis-instance_method"></a>
Returns the value of attribute satoshis.

## Public Class Methods
### `from_binary(data, offset = 0)` <a id="method-c-from_binary"></a> <a id="from_binary-class_method"></a>
Deserialise a transaction output from binary data.
- **@param** `data` [String] binary data
- **@param** `offset` [Integer] byte offset to start reading from
- **@return** [Array(TransactionOutput, Integer)] the output and bytes consumed

## Public Instance Methods
### `initialize(satoshis:, locking_script:, change: = false)` <a id="method-i-initialize"></a> <a id="initialize-instance_method"></a>
- **@param** `satoshis` [Integer] output value in satoshis
- **@param** `locking_script` [Script::Script] the locking script
- **@param** `change` [Boolean] whether this is a change output (default: false)
- **@return** [TransactionOutput] a new instance of TransactionOutput

### `initialize_copy(other)` <a id="method-i-initialize_copy"></a> <a id="initialize_copy-instance_method"></a>
Called by <code>#dup</code> and <code>#clone</code>. Clears the owning-Tx
backref so that the cloned output does not belong to any transaction until it
is explicitly added via +Tx#add_output+.

### `to_binary()` <a id="method-i-to_binary"></a> <a id="to_binary-instance_method"></a>
Serialise the output to its binary wire format.
- **@note** Memoised; see {file:docs/reference/sighash-cache.md} for the invalidation contract.
- **@return** [String] binary output (8-byte LE satoshis + varint + script)
