<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "BitcoinKernel",
  "identifier" : "/documentation/BitcoinKernel/Transaction",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "BitcoinKernel"
    ],
    "preciseIdentifier" : "s:13BitcoinKernel11TransactionC"
  },
  "title" : "Transaction"
}
-->

# Transaction

A Bitcoin transaction — the consensus-layer value type that moves
coins from one set of scriptPubKeys to another.

```
final class Transaction
```

## Overview

Construct from network/disk bytes via [`init(_:)`](/documentation/BitcoinKernel/Transaction/init(_:)) for stand-alone
parsing, or obtain from a [`Block`](/documentation/BitcoinKernel/Block) via [`transaction(at:)`](/documentation/BitcoinKernel/Block/transaction(at:)).
The kernel parses, structurally validates, and produces an opaque
handle; full consensus validation (witness checks, signature
verification, script execution) happens through script verification
APIs and [`processBlock(_:)`](/documentation/BitcoinKernel/ChainstateManager/processBlock(_:)).

Wraps the opaque `btck_Transaction` type; `deinit` calls
`btck_transaction_destroy` when the last Swift reference drops.