# 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.


---

# 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://whisky.sidan.io/tx-builder/getting-started.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.
