<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "BitcoinKernel",
  "identifier" : "/documentation/BitcoinKernel/ScriptPubkey/verify(amount:transaction:precomputedData:inputIndex:flags:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "BitcoinKernel"
    ],
    "preciseIdentifier" : "s:13BitcoinKernel12ScriptPubkeyC6verify6amount11transaction15precomputedData10inputIndex5flagsSb5valid_AA0C12VerifyStatusO6statusts5Int64V_AA11TransactionCAA011PrecomputedrI0CSgs6UInt32VAA0C17VerificationFlagsVtF"
  },
  "title" : "verify(amount:transaction:precomputedData:inputIndex:flags:)"
}
-->

# verify(amount:transaction:precomputedData:inputIndex:flags:)

Verifies whether a transaction input spends this script pubkey.

```
func verify(amount: Int64, transaction: Transaction, precomputedData: PrecomputedTransactionData? = nil, inputIndex: UInt32, flags: ScriptVerificationFlags = .all) -> (valid: Bool, status: ScriptVerifyStatus)
```

## Parameters

`amount`

The amount associated with this output (used when witness flag is set).

`transaction`

The spending transaction.

`precomputedData`

Pre-computed transaction data (required for taproot).

`inputIndex`

Index of the spending input in the transaction.

`flags`

Script verification flags controlling validation.

## Return Value

A tuple of `(valid, status)` where `valid` indicates if the
script passed, and `status` provides details on failure.

## Discussion

```swift
let script = ScriptPubkey(outputScriptData)
let (valid, status) = script.verify(
    amount: 50_000,
    transaction: spendingTx,
    inputIndex: 0
)
```