---
agentTools:
  projectIndex: https://docs.dedust.io/llms.txt
---

# Adding new jettons

## Overview

DeDust Protocol creates a unique vault for every new jetton.

When a new jetton appears, we should set up its vault.

Then, we can establish a pool and [add liquidity](https://docs.dedust.io/docs/liquidity-provisioning) to it.

## Create a vault

Setting up a new vault is very straightforward.

You can do it using the SDK or by manually sending the `create_vault` message ([TL-B](https://docs.dedust.io/reference/tlb-schemes#message-create_vault)) to the [Factory](https://docs.dedust.io/reference/factory) contract.

```typescript
// Address of a new jetton
const jettonAddress = Address.parse('EQBlqsm144Dq6SjbPI4jjZvA1hqTIP3CvHovbIfW_t-SCALE');

// Create a vault
await factory.sendCreateVault(sender, {
  asset: Asset.jetton(jettonAddress),
});
```

## Create a volatile pool

To set up a pool, you can either use the `Factory` method `sendCreateVolatilePool` or send the `create_volatile_pool` message ([TL-B](https://docs.dedust.io/reference/tlb-schemes#message-create_volatile_pool)) directly to the [Factory](https://docs.dedust.io/reference/factory) contract.

```typescript
import { Asset, PoolType, ReadinessStatus } from '@dedust/sdk';

/* ... */

const TON = Asset.native();
const SCALE = Asset.jetton(SCALE_ADDRESS);

const pool = tonClient.open(
  await factory.getPool(PoolType.VOLATILE, [TON, SCALE]),
);

const poolReadiness = await pool.getReadinessStatus();

if (poolReadiness === ReadinessStatus.NOT_DEPLOYED) {
  await factory.sendCreateVolatilePool(sender, {
    assets: [TON, SCALE],
  });
}
```