5. Power of
Community Driven
Network Effects
Decentralization through
Governance Voting
Community Proposals
Competitive advantages through
Large talent pool
Innovation
16. Attracts new liquidity
providers for new pools
Incentivizes liquidity
providers to deepen pools
with highest volume and
reduce pools with lower
volume
Onsen
Gamification
SUSHI as
Incentive
18. Liquidity providers
run the risk of
impermanent loss
Staking your LP
tokens in Onsen to
earn SUSHI offsets
impermanent loss
Staking your SUSHI
as xSUSHI hedges
across markets
-IL + (0.25% of Swap Fees for LP + SUSHI + 0.05% of all Swaps)
19. Stake SUSHI to receive
0.05% of all swap fees in the
form of xSUSHI
Smoothes the liquidity
provision curve
Keep incentives aligned with
our community
Staking Sushi
at the SushiBar
25. Open a 1.2x Leverage Position:
Enable Dapp
Approve Token
Supply Asset
Enable as Collateral
Borrow Asset
Swap Asset for Collateral
Add Collateral
Borrow Asset
Swap Asset for Collateral
= 9 transactions, $500 in gas
BEFORE
BENTO.
AFTER
BENTO.
Open a 1.2x Leverage Position:
Approve Token (once)
Leverage 1.2x
= 2 transactions, $50 in gas
26. Mechanics of
a Short Trade
Add Collateral, Borrow, Swap for
Collateral. Repeat for leverage.
Asset
Collateral
Add $100
Borrow $50
Collateral
Swap $50
Asset
Collateral
Remove $100
Repay $30
Collateral
Swap $50
↘
→
→
t0 t1
Limit Used:
50%
Limit Used:
30%
+$20
27. // Functions that need accrue to be called
const ACTION_ADD_ASSET = 1;
const ACTION_REPAY = 2;
const ACTION_REMOVE_ASSET = 3;
const ACTION_REMOVE_COLLATERAL = 4;
const ACTION_BORROW = 5;
const ACTION_GET_REPAY_SHARE = 6;
const ACTION_GET_REPAY_PART = 7;
// Functions that don't need accrue to be called
const ACTION_ADD_COLLATERAL = 10;
// Function on BentoBox
const ACTION_BENTO_DEPOSIT = 20;
const ACTION_BENTO_WITHDRAW = 21;
const ACTION_BENTO_TRANSFER = 22;
const ACTION_BENTO_TRANSFER_MULTIPLE = 23;
const ACTION_BENTO_SETAPPROVAL = 24;
// Any external call (except to BentoBox)
const ACTION_CALL = 30;
short(swapper, amount, minReturnedShare) {
let data = swapper.interface.encodeFunctionData("swap", [
this.asset.address,
this.collateral.address,
addr(this.contract.signer),
minReturnedShare,
"0",
])
return this.contract.cook(
[ACTION_BORROW, ACTION_BENTO_TRANSFER, ACTION_CALL, ACTION_ADD_COLLATERAL],
[0, 0, 0, 0, 0],
[
defaultAbiCoder.encode(["int256", "address"], [amount, addr(this.contract.signer)]),
defaultAbiCoder.encode(["address", "address", "int256"], [this.asset.address, swapper.address,
-2]),
defaultAbiCoder.encode(["address", "bytes", "bool", "bool", "uint8"], [swapper.address,
data.slice(0, -64), false, true, 2]),
defaultAbiCoder.encode(["int256", "address", "bool"], [-2, addr(this.contract.signer), false]),
]
)
}
Cook Function allows for complex UIs and rolling
complex actions into one transaction
28. Creation of Any Market
Supply Assets to any Lending Pair
with Almost any Oracle
Controlled Risk
Asset suppliers know exactly what
collateral is due in the event of
liquidation
Isolated
Lending
29. Want to lend USDC to all Kashi
Markets weighted by utilization or
APR?
Use the cook function to
construction a multiple deposit
transaction in one click.
Rebalance in one click.
Build
Opportunities
31. Sushi as a platform for discovery
Creation ➜ Discovery ➜ Incentivization
As a new project you can launch,
incentivize, grow, and maintain all on one
platform.
Token Launchpad
New Tokens are:
Not ruggable with Recipes
Set whatever parameters you want
Enhanced Whitelists for participants
32. The best place to start your project
The best place to find new projects
The best place to provide liquidity
to projects
The best place to swap, leverage
long or short projects
The best place to engage with an active
community!
SUSHI