> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mellow.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# SlotLibrary

This library generates unique and collision-resistant storage slots for use in upgradeable Solidity contracts. It ensures that different modules or instances do not unintentionally overwrite each other’s storage, even when used via proxy or delegate calls.

### Storage Slot Strategy

* Based on EIP-7201
* Inputs include:
  * Contract name (`contractName`)
  * Human-readable name (`name`)
  * Version number (`version`)
* Final slot:

  ```solidity theme={null}
  keccak256(
  	abi.encode(
  		uint256(
  			keccak256(
  				abi.encodePacked(
  					"mellow.flexible-vaults.storage.",
  					contractName,
  					name, version
  				)
  			)
  		) - 1
  	)
  ) & ~bytes32(uint256(0xff));
  ```

This structure ensures:

* **Namespacing:** Prevents overlap between different modules (`ShareModule`, `FeeManager`, etc.)
* **Instance separation:** Multiple deployments with different names produce distinct slots
* **Versioning:** Upgrades can cleanly migrate to new versions without collision

### Function

### `getSlot(string contractName, string name, uint256 version) → bytes32`

**Description:**

Computes a deterministic, collision-resistant storage slot for a contract module.

**Parameters:**

* `contractName`: Logical name of the module (e.g., `"ShareModule"`)
* `name`: Instance identifier or label (e.g., `"Mellow"`)
* `version`: Numeric version for versioned slot separation

**Returns:**

* A `bytes32` value representing the computed storage slot

**Example:**

```solidity theme={null}
bytes32 slot = SlotLibrary.getSlot("FeeManager", "Mellow", 1);
```
