The SushiSwap Project 🍣🍣🍣

An evolution of Uniswap with SUSHI tokenomics.

Sushi
5 min readSep 9, 2020

📈 Origin

In the two years since its launch, 🦄 Uniswap has solidified its position as one of the mainstays in DeFi. Along with that, their protocol design has become a standard in and of itself, one in which many projects have come to derive its mechanics from.

With that, we have designed SushiSwap as the next step forward in the Uniswap protocol design: an evolution. Taking Uniswap’s elegant core design, we’ve added community-oriented features that we believe help improve the design of the protocol, as well as provide further benefits to the actors involved.

🎨 Protocol Design

💧 Liquidity Provider Incentives

Of course, one of the natural questions that many may have is: “Why would someone want to provide liquidity to SushiSwap, as opposed to Uniswap?”.

With Uniswap, liquidity providers only earn the pool’s trading fees when they are actively providing said liquidity. Once they have withdrawn their portion of the pool, they no longer receive that passive income. Moreover, as protocol gains traction, despite being early liquidity providers, they risk getting their return diluted as (bigger and wealthier) stakeholders such as venture funds, exchanges, mining pools join the protocol with a huge amount of capital.

With SushiSwap, one can also provide some liquidity into a pool and earn rewards in the form of SUSHI tokens. However, unlike Uniswap, those SUSHI tokens will also entitle you to continue to earn a portion of the protocol’s fee, accumulated in SUSHI, even if you decide to no longer participate in the liquidity provision. As an early adopter to help provider liquidity, you become a significant stakeholder of the protocol.

The earnings that you’ll receive from staking will be proportional to the amount of LP tokens you have staked versus the total amount of LP tokens staked. Unless you continue to provide liquidity, your holdings and corresponding reward earnings will gradually be diluted.

👨‍🌾 Token Distribution

We are aware that many of us are existing liquidity providers in Uniswap pools. With that, we have designed the token distribution mechanics to make it as easy as possible for the existing Uniswap liquidity providers to start migrating to our protocol!

To start providing liquidity and earning SUSHI tokens, anyone holding Uniswap LP tokens can stake those LP tokens into the corresponding initial list of pools. Once done, they will start earning tokens once rewards starts on block 10750000. The list of eligible LP tokens can be added per on-chain governance. So it’s every one of us who decides.

At every block, 100 SUSHI tokens will be created. These tokens will be equally distributed to the stakers of each of the supported pools.

However, For the first 100000 blocks (~2 weeks), the amount of SUSHI tokens produced will be 10x, resulting in 1000 SUSHI tokens being minted per block. This is to incentivize early farmers and adopters of the protocol and to help in The Liquidity Migration™️.

The initial set of available pools:

The SUSHI/WETH pool gets twice the amount, so be sure to supply your SUSHI to uniswap to become eligible for extra yumminess 😋. Once the SUSHI is live, community can vote to add more eligible pools, or change the SUSHI weight of any pool. You guys decide!

💸 Reward Distribution

With the current Uniswap configuration, 0.3% of all trading fees in any pool are proportionately distributed to the pool’s liquidity providers. In SushiSwap, 0.25% go directly to the active liquidity providers, while the remaining 0.05% get converted back to SUSHI (obviously through SushiSwap) and distributed to the SUSHI token holders 📈.

🕑 Ensuring Project Sustainability (aka. Dev Fund)

Let’s ensure the long-term viability and sustainability of the project. Following suggestion from @LawMaster, 10% of every SUSHI distribution is set aside for developers. Hope the community won’t mind feeding us some 🍣 dinners.

⛵️ The Liquidity Migration™️

Around the first 100000 blocks from the protocol’s inception (~2 weeks), we will be migrating all the liquidity tokens staked onto SushiSwap contracts. This migration will involve taking all of the Uniswap LP tokens staked on SushiSwap, redeeming them on Uniswap for the respective token pairs, and initializing new liquidity pools from those tokens. These new pools will be almost identical to the standard Uniswap pool, with the added feature that any fees accrued will be distributed to SUSHI token holders through the logic outlined above.

Once the migration is done, the liquidity converted will be fueling the first sets of SushiSwap pools, and will bring the protocol into operation immediately. The stakers don’t need to do anything and will continue to receive SUSHI token rewards from providing liquidity going forward.

🍣 Protocol Usage

At the protocol and smart contract level, SushiSwap shares an identical interface to Uniswap. This means that if your protocol is currently compatible with Uniswap, it should be relatively simple to integrate with SushiSwap. We will work with various DeFi and other ecosystem tools to start integrating SushiSwap.

🔐 Security Audit

Security is important to us. We reasonably unit test coverage and have tested that everything works on the testnet.

EDIT : Contracts have been audited by PeckShield and reviewed by Quantstamp.

We invite Trail of Bits, PeckShield, OpenZeppelin, Consensys, Certik, and Quantstamp and more to audit the contracts. First firm to confirm audit of SushiSwap on its official Twitter account will win this job. We promise to pay 5 ETH of our live saving for this audit immediately after you confirm.

The contracts you’ll be auditing will be everything in the SushiSwap smart contract repository, which is available at https://github.com/sushiswap/sushiswap and is already considered ready for the audit.

⚠️ Meanwhile, The MasterChef contract for farming is unaudited, but it’s simple enough for most Solidity developers to understand. Please read through the contract before putting your LP tokens at stake! Everything is in BETA, please use at your own risk.

💻 Smart Contracts

The contracts are available at https://github.com/sushiswap/sushiswap with 🅦WTFPL license. Some codes are from other projects including Uniswap / Yam / Compound / OpenZeppelin and are subjected to their licenses. The followings are the list of the contracts with rough explanation:

🍣 SushiToken: The token contract, with COMP/YAM voting functionality.
👨🏻‍🍳 MasterChef: Deposit LPs tokens to farm SUSHI.
🔪
SushiMaker: Collect revenues, convert to SUSHI, and send to SushiBar.
🍸
SushiBar: Stake SUSHI to earn more SUSHI 📈.
👩‍💻
Migrator: Migrate MasterChef LP tokens from Uniswap to SushiSwap.
🏛 GovernorAlpha + Timelock: Governance stuff from Compound.
🦄 UniswapV2: UniswapV2 contracts with small modification for Migration.

SUSHI Token 0x6B3595068778DD592e39A122f4f5a5cF09C90fE2 MasterChef 0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd
Factory 0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac
Router 0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F
SushiBar 0x8798249c2E607446EfB7Ad49eC89dD1865Ff4272
SushiMaker 0x6684977bBED67e101BB80Fc07fCcfba655c0a64F

PeckShield : https://github.com/peckshield/publications/blob/master/audit_reports/PeckShield-Audit-Report-SushiSwap-v1.0.pdf

Quantstamp:
https://github.com/quantstamp/sushiswap-security-review

All contracts written by us should have somewhat reasonable test coverage. We will continue to do more testing. If any of you think there’s any issue with it, please let us know (preferably privately if it’s a severe issue) via Discord.

🏁 How You Can Participate

You can start depositing LP tokens to the MasterChef contract using the interface at https://app.sushiswap.org

💡 Credit: We borrow most of the UI code from Yam

You will begin to earn SUSHI precisely starting from block 10750000. Be sure to stake your LP tokens prior to that for maximum 🍣.

💬 Join Us!

--

--