sSPELL

An auto-compounding staking contract for SPELL

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

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

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

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.

Last updated