> For the complete documentation index, see [llms.txt](https://docs.hodler.financial/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hodler.financial/architecture/smart-contracts/hodlererc20.sol.md).

# HodlerERC20.sol

{% hint style="warning" %}
hodlTokens are non transferable, they can only be minted and burned.&#x20;
{% endhint %}

Below the overview of all state changing functions in the smart contract, these are internal functions that can only be called by Hodler.sol.&#x20;

```
#State changing functions
function _mint(address to, uint value) internal;
function _burn(address from, uint value) internal;
function _burnCurve(address from, uint value) internal;
```

### State changing functions overview

**\_mint** is called by Hodler.sol on deposit of assets. It adds the value of deposit to the balance of the msg.sender and the total supply.

**\_burn** is called by Hodler.sol on withdraw of assets when the game has **not started**. It removes the value  from the balance of the msg.sender and the total supply.

**\_burnCurve** is called by Hodler.sol on withdraw of assets when the game has **started**. It removes the value from the balance of the msg.sender and adds it to total withdrawn.
