# Limits

{% code overflow="wrap" %}

```solidity
Limits(uint40 valid_from,uint40 expires_at,uint64 gas_price_limit,bool purgeable,bool blockable)
```

{% endcode %}

## Params

| Name              | Type   |
| ----------------- | ------ |
| `valid_from`      | uint40 |
| `expires_at`      | uint40 |
| `gas_price_limit` | uint64 |
| `purgeable`       | bool   |
| `blockable`       | bool   |

### valid\_from

Defines the date and time from which signed FCT can be executed on-chain.

{% hint style="info" %}
Number of seconds since January 1, 1970
{% endhint %}

### expires\_at

Defines the date and time from which signed FCT cannot be executed anymore.&#x20;

{% hint style="info" %}
Number of seconds since January 1, 1970
{% endhint %}

### gas\_price\_limit

The max gas price that can be used by the activator when running this FCT.

{% hint style="success" %}
The tokenomics encourage activators to decrease the gas price by as much as possible, so only in rare cases the actual gas price will reach this limit.
{% endhint %}

### purgeable

When purgeable is true, on-chain information of an expired FCT can be removed from the blockchain by the activators as part of running newer FCTs. This will clean-up the blockchain from unused stored data and will reduce the overall gas usage of the transaction.&#x20;

{% hint style="warning" %}
If the FCT is part of cross FCTs logic, "false" should be used to ensure that the data is always available on-chain.
{% endhint %}

### blockable

FCT Engine sends the FCT's message hash to the FCT\_Runner upon execution requests of calls.\
It allows the runner to block specific signed FCTs from executing on the blockchain.&#x20;

{% hint style="info" %}
The vault implements functions to block and unblock "blockable" FCTs
{% endhint %}

{% hint style="warning" %}
The FCT runner might override this functionality, e.g. implementing "blocking all FCTs" function that blocks all FCT regardless of the "blockable" field
{% endhint %}
