# IPX Coin Standard

## <mark style="color:blue;">Problem</mark>

Coins created via Sui Network Coin have all the rights associated with one capability, the **TreasuryCap**.&#x20;

The holder of the **TreasuryCap can mint, burn and update** the Coi&#x6E;**.** This design is quite limiting because all the rights are associated with a single capability.&#x20;

> What happens if a user wants to ensure that its coin can be burnt but not mintable? He would have to write its own contract.

Most users choose to simply send the **TreasuryCap** to the systems address, the famous 0x0,  because no one has access to it. Therefore it is considered burnt. However, since no one has access to the TreasuryCap, no one can burn the coin nor update its icon, description, symbol or name.\
\
There are cases in which coins need to update its metadata due to a rebrand or broken uris.&#x20;

## <mark style="color:blue;">Solution</mark>

The IPX Coin Standard separates the three rights of the **TreasuryCap** into t**hree separate capabilities: Burn, Mint and Update metadata**. This flexible design means that a user can make his/her coin burnable while preventing coins to be minted forever.&#x20;

* `MintCap` allows the holder to mint coins
* `BurnCap` allows the holder to burn coins
* `MetadataCap` allows the holder to update the coin name, description, icon uri and symbol

{% hint style="info" %}
**The deployer can choose to make the coin burnable by anyone who has coins in his/her wallet.**
{% endhint %}

At deployment the user can choose to make the coin mintable, burnable and/or updateable and decide who has those rights.\
\
The code is open source on [Github](https://github.com/interest-protocol/interest-mvr/tree/main/ipx-coin-standard) and [immutable](https://suiscan.xyz/mainnet/tx/CZ8jqNcpm9aJK8NHP6bvLZruz4Rpq2BT46qZrmkV5q7K). Not even the IPX team can change the standard making it safe to use.

<mark style="color:blue;">**Mainnet Package Address:**</mark> 0xa204bd0d48d49fc7b8b05c8ef3f3ae63d1b22d157526a88b91391b41e6053157\
\ <mark style="color:blue;">**Testnet Package Address:**</mark> 0x3d9d9cf7f37daa21d6439bb4f3e90b49312cc1471e159e0b34ef18a36332ccda

## <mark style="color:blue;">MVR</mark>

IPX Coin standard is available on [Move Registry](https://www.moveregistry.com/package/@interest/coin-standard).

```bash
mvr add @interest/coin-standard --network mainnet
```
