> For the complete documentation index, see [llms.txt](https://whisky.sidan.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://whisky.sidan.io/tx-builder/getting-started.md).

# Getting Started

To start building an customized transaction, you need to first initialize `TxBuilder`:

```rust
let tx_builder_params = TxBuilderParam {
    evaluator: None,
    fetcher: None,
    submitter: None,
    params: None,
};
let mut tx_builder = TxBuilder::new(tx_builder_params);
```

There are 4 optional fields to pass in to initialize the `TxBuilder` instance:

1. `fetcher` - Refer to [service integration](/tx-builder/service-integration.md).
2. `submitter` - Refer to [service integration](/tx-builder/service-integration.md).
3. `evaluator` - Refer to [service integration](/tx-builder/service-integration.md).
4. `params`You can pass in the protocol parameters directly.

For details about providers' eligibility for each service role, please refer to the [providers'](/services/providers.md) session.

Alternatively, if you do not need any of the provider services, you can initialize a `TxBuilder` with the `new_core` method:

```rust
let mut tx_builder = TxBuilder::new_core();
```

### Remarks

* Only `evaluator` service with off-node evaluation is integrated at the moment. Other integrations, as described above have been planned and are coming soon.
