# Transaction

## Overview

The Transaction component is the fundamental building block for creating and managing BSV blockchain transactions. It provides a comprehensive API for constructing, signing, and serializing transactions.

## Purpose

Transactions are the core mechanism for transferring value and storing data on the BSV blockchain. This component handles:

* Creating new transactions
* Adding inputs and outputs
* Fee calculation
* Transaction signing
* Serialization for broadcasting

## Basic Usage

```typescript
import { Transaction } from '@bsv/sdk'

// Create a new transaction
const tx = new Transaction()

// Add inputs and outputs
tx.addInput(/* ... */)
tx.addOutput(/* ... */)

// Sign the transaction
await tx.sign()

// Serialize for broadcasting
const rawTx = tx.toHex()
```

## Key Features

### Transaction Creation

* Build transactions from scratch
* Parse existing transactions
* Clone and modify transactions

### Input/Output Management

* Add multiple inputs
* Create various output types
* Calculate change outputs

### Fee Management

* Automatic fee calculation
* Custom fee rates
* Fee estimation

### Signing

* Sign with private keys
* Multi-signature support
* Custom signing algorithms

## Related Components

* [Transaction Input](/bsv-code-academy/sdk-components-reference/sdk-components/transaction-input.md) - Managing transaction inputs
* [Transaction Output](/bsv-code-academy/sdk-components-reference/sdk-components/transaction-output.md) - Creating outputs
* [UTXO Management](/bsv-code-academy/sdk-components-reference/sdk-components/utxo-management.md) - Working with UTXOs
* [Signatures](/bsv-code-academy/sdk-components-reference/sdk-components/signatures.md) - Digital signature operations

## Code Examples

See [Code Features - Transaction Creation](/bsv-code-academy/code-features/code-features/transaction-creation.md) for complete examples.

## API Reference

### Constructor

```typescript
new Transaction(version?: number, inputs?: TransactionInput[], outputs?: TransactionOutput[], lockTime?: number)
```

### Methods

* `addInput(input: TransactionInput): void`
* `addOutput(output: TransactionOutput): void`
* `sign(): Promise<void>`
* `toHex(): string`
* `toBuffer(): Buffer`
* `getFee(): number`

## Common Patterns

### Simple Payment Transaction

Create a basic P2PKH payment transaction with automatic fee calculation.

### Data Storage Transaction

Include data in OP\_RETURN outputs for on-chain storage.

### Multi-Input Transaction

Combine multiple UTXOs efficiently.

## Best Practices

1. Always verify inputs before signing
2. Use appropriate fee rates for timely confirmation
3. Validate output amounts
4. Handle errors during signing
5. Keep transactions under size limits

## Learning Path References

* Beginner: [Your First Transaction](/bsv-code-academy/beginner-path/beginner/first-transaction.md)
* Intermediate: [Transaction Building](https://github.com/bsv-blockchain/gitbook-bsv-code-academy/blob/main/learning-paths/intermediate/transaction-building/README.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hub.bsvblockchain.org/bsv-code-academy/sdk-components-reference/sdk-components/transaction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
