> For the complete documentation index, see [llms.txt](https://dev.abracadabra.money/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev.abracadabra.money/token-related/sspell.md).

# sSPELL

sSPELL is the original staking contract for SPELL holders. It is a version of the SushiBar by ChefNomi.\
It works with a share system, users mint sSPELL by depositing SPELL into the contract via the mint(amount) function, and they receive an amount of sSPELL at the current SPELL per sSPELL ratio.

When protocol fees are accrued and SPELL is bought back and sent to the sSPELL contract, SPELL is deposited but no sSPELL is minted: the SPELL per sSPELL ratio increases.

The burn function is the exact inverse of mint, it burns your sSPELL and gives you back SPELL at the current SPELL:sSPELL ratio.

To avoid people gaming the system, upon staking, the sSPELL is subject to a 24h lockup, where it can be moved, burned, used as collateral etc…

Appart from this, sSPELL is a regular ERC20.

### `mint | nonpayable`[​](https://smart-docs.vercel.app/contract#mint) <a href="#mint" id="mint"></a>

```solidity
function mint(uint256 amount) public returns (bool) {
```

**Parameters**

| Name       | Type      | Description               |
| ---------- | --------- | ------------------------- |
| **amount** | `uint256` | Amount of SPELL to stake. |

**Return values**

| Name  | Type   | Description                                  |
| ----- | ------ | -------------------------------------------- |
| **/** | `bool` | Returns True if the operation is successful. |

### `burn | nonpayable`[​](https://smart-docs.vercel.app/contract#burn) <a href="#burn" id="burn"></a>

```solidity
function burn(address to, uint256 shares) public returns (bool) {
```

**Parameters**

| Name       | Type      |                               |
| ---------- | --------- | ----------------------------- |
| **to**     | `address` | Address to send the SPELL to. |
| **shares** | `uint256` | Amount of sSPELL to burn.     |

**Return values**

| Name  | Type   | Description                                  |
| ----- | ------ | -------------------------------------------- |
| **/** | `bool` | Returns True if the operation is successful. |

### `burnFrom | nonpayable`[​](https://smart-docs.vercel.app/contract#burnFrom) <a href="#burnfrom" id="burnfrom"></a>

```solidity
function burnFrom(
    address from,
    address to,
    uint256 shares
) public returns (bool) {
```

Same as Burn, but allow another address that has been approved by you using the standard ERC20 approve() to burn on your behalf.

**Parameters**

| Name       | Type      | Description                      |
| ---------- | --------- | -------------------------------- |
| **from**   | `address` | Address to burn the sSPELL from. |
| **to**     | `address` | Address to send the SPELL to.    |
| **shares** | `uint256` | Amount of sSPELL to burn.        |

**Return values**

| Name  | Type   |                                              |
| ----- | ------ | -------------------------------------------- |
| **/** | `bool` | Returns True if the operation is successful. |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://dev.abracadabra.money/token-related/sspell.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
