# 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](https://whisky.sidan.io/tx-builder/service-integration).
2. `submitter` - Refer to [service integration](https://whisky.sidan.io/tx-builder/service-integration).
3. `evaluator` - Refer to [service integration](https://whisky.sidan.io/tx-builder/service-integration).
4. `params`You can pass in the protocol parameters directly.

For details about providers' eligibility for each service role, please refer to the [providers'](https://whisky.sidan.io/services/providers) 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.
