# Contracts

&#x20;Our contracts are publicly accessible in the following repo <https://github.com/MilkShake-Swap>

* &#x20;**MILK:** [0xc9bCF3f71E37579A4A42591B09c9dd93Dfe27965](https://bscscan.com/address/0xc9bcf3f71e37579a4a42591b09c9dd93dfe27965)
* &#x20;**MasterChef:** [0x9c19eB54c759c9369C788D6554f08Bb6cAdab10d](https://bscscan.com/address/0x9c19eB54c759c9369C788D6554f08Bb6cAdab10d)
* &#x20;**Lottery** : [0xc4E8Ce0AE31623B6D43Fd9946AE9B75354ad9ba2](https://bscscan.com/address/0x9c19eB54c759c9369C788D6554f08Bb6cAdab10d#code)

**How are our contracts safe?**

&#x20;We have based our implementation in Pancakeswap Finance's Cake token and have the following features:

* Contract audit in the pipeline.

**Removed migratator code**

&#x20;

```

function setMigrator(IMigratorChef _migrator) public onlyOwner {
    migrator = _migrator;
}


function migrate(uint256 _pid) public {
    require(address(migrator) != address(0), "migrate: no migrator");
    PoolInfo storage pool = poolInfo[_pid];
    IBEP20 lpToken = pool.lpToken;
    uint256 bal = lpToken.balanceOf(address(this));
    lpToken.safeApprove(address(migrator), bal);
    IBEP20 newLpToken = migrator.migrate(lpToken);
    require(bal == newLpToken.balanceOf(address(this)), "migrate: bad");
    pool.lpToken = newLpToken;
}
```

&#x20;
