# dag\_tokenLock

Locks a specified amount of tokens of a metagraph token or DAG.

**Parameters**

<table><thead><tr><th width="85.03125">Name</th><th width="209.84765625">Type</th><th>Description</th></tr></thead><tbody><tr><td>Data</td><td><code>Object&#x3C;TokenLock></code></td><td>The token lock object.</td></tr></tbody></table>

TokenLock

```typescript
type TokenLock = {

  source: string;             // Wallet address signing the transaction

  amount: number;             // The amount to lock
                              // Must be in DATUM

  currencyId: string | null;  // The currency metagraph identifier that the user wants to lock
                              // For DAG, this field must be null

  fee?: number;               // The fee in the currency of the currency metragraph, or DAG. 
                              // If not provided, the default fee will be 0
                              // Must be in DATUM

  unlockEpoch: number | null; // The global snapshot epoch progress to unlock the tokens
                              // If provided, must be greater than the currentEpoch

};
```

{% hint style="info" %}
The `currentEpoch` value can be pulled from the latest global snapshot. You can use `dag4.js` to easily get it:

<pre class="language-typescript"><code class="lang-typescript"><strong>const latestSnapshot = await dag4.network.l0Api.getLatestSnapshot();
</strong>const currentEpoch = latestSnapshot.value.epochProgress;
</code></pre>

{% endhint %}

**Return Type**

`String<Hash>` - The hash of the token lock transaction.

**Example**

```typescript
await provider.request({
  method: "dag_tokenLock",
  params: [ 
    { 
        source: 'DAG5sz69nNwGF8ypn1yukFpg2pVJpdx5mnf1PJVc',
        amount: 100000000,
        currencyId: 'DAG8RdiwFhZcLmjrsz79jiKfstQmPaSqABphCK1P',
        fee: 0,
        unlockEpoch: 1022060,
    }
  ]
});
// "2d9fe9bad17debed7c903f22b74aac8af270daea7995dd099a58d6b201547169"
```
