<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "BitcoinKernel",
  "identifier" : "/documentation/BitcoinKernel/PrecomputedTransactionData/init(transaction:spentOutputs:)",
  "metadataVersion" : "0.1.0",
  "role" : "Initializer",
  "symbol" : {
    "kind" : "Initializer",
    "modules" : [
      "BitcoinKernel"
    ],
    "preciseIdentifier" : "s:13BitcoinKernel26PrecomputedTransactionDataC11transaction12spentOutputsAcA0D0C_SayAA0D6OutputCGSgtKcfc"
  },
  "title" : "init(transaction:spentOutputs:)"
}
-->

# init(transaction:spentOutputs:)

Creates precomputed data for script verification.

```
init(transaction: Transaction, spentOutputs: [TransactionOutput]? = nil) throws
```

## Parameters

`transaction`

The spending transaction to pre-compute hashes for.

`spentOutputs`

The outputs being spent, one per transaction
input in input order. Required when verifying under the
[`taproot`](/documentation/BitcoinKernel/ScriptVerificationFlags/taproot) flag; optional (pass `nil`)
for non-taproot verification.

## Discussion> Throws: ``doc://BitcoinKernel/documentation/BitcoinKernel/KernelError/precomputedDataCreationFailed`` when the
> spent-outputs count mismatches `transaction.inputCount`, when the
> transaction is malformed, or when the kernel rejects the combined
> input.