1.0.1 • Published 12 months ago

@sushiswap/trident v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

Trident: SushiSwap Next Generation Exchange

TRIDENT 🔱 is a newly developed AMM and routing system from SushiSwap (Sushi). Trident is not a fork of any existing AMM, though to start, it incorporates popular AMM concepts into a single, upgradeable framework. The Sushi core team began development with Andre Cronje as Deriswap. This development continued on as Mirin developed by LevX. On May 12th, 2021, Sushi began building Trident in earnest on the Mirin/Deriswap foundation.

Deployment

Kovan

ContractAddress
BentoBox0xc381a85ed7C7448Da073b7d6C9d4cBf1Cbf576f0
TridentRouter0xC55A953FcF95a08675dD4249A3f5aA494938D395
MasterDeployer0x8acD21bab416ba34e4Ba0FF40f745731A1B9aA5C
ConstantProductPoolFactory0xa7189eed30564dC665466aAcb3A90659eb3f623F
HybridPoolFactory0x0751e5d1fA240FA797deD7Da97A1aA7Fe7c0Ee5A
IndexPoolFactory0xC992b3faC1Ae65691704d1CA728C9f2757F815c1
WETH-DAI Cpp0x770e6369BBf57c99ec2A25b0731f5f8EA18182cc

Extensibility

Trident is designed as an extensible AMM deployment framework that allows developers to implement new pool types that conform to the IPool interface. Before launch, an EIP will be submitted for the IPool interface design to standardize pool interfaces across Ethereum. As new pool types are designed or experimented with, they can be added to Trident so long as they conform to the interface. In this way Trident will at minimum be a superset of all AMM pool designs as well as a future-proof architecture for Sushi to build on.

Launch Pools

Initially, Trident has been developed with four primary pool types for launch:

ConstantProductPool

Constant product pools are the "classic" pools that users will be most familar with. Constant product pools are a 50/50 pair pool, meaning that users first provide 50% of each of Token X and Token Y to provide liquidity. In this pool type, swaps occur over an x*y=k constant product formula.

HybridPool

Hybrid pools allow users to use a stableswap curve with reduced price impacts. Hybrid pools are best utilized for swapping like-kind assets. Hybrid pools are configurable to allow 2, 3, or any other amount of swappable assets.

ConcentratedLiquidityPool

Concentrated liquidity pools allow liquidity providers to specify a range in which to provide liquidity in terms of the ratio of Token X to Token Y. The benefit of this design is it will allow liquidity providers to more narrowly scope their liquidity provisioning to maximize swap fees.

IndexPool

Index pools are similar to constant product pools with the exception that they will allow different weights to be assigned to swappable assets (up to 8, currently). The advantage of this pool type is that it shifts price impacts by token weights.

All of these pools will have configurable fees that will allow liquidity providers to choose the pool that best suits their risk profile.

As a gas-saving measure, Trident further allows pool deployers to disable TWAP oracles. Architecturally, this makes the most sense for common pairs that already have accurate Chainlink price oracles.

BentoBox Integration

Trident is a native application on the Sushi BentoBox vault platform. BentoBox is part of the broader Sushi infrastructure that allows users to build complex, capital-efficient applications on top. BentoBox works by storing tokens to be utilized in strategies and flash lending. Meanwhile, a virtual "share" balance tracked by BentoBox is used by applications like Trident. The yield from BentoBox strategies and flash lending are returned to users, such as liquidity providers, enabling an optimized AMM experience. Indeed, Trident will be the most capital efficient AMM in existence at launch from this DeFi-optimized design.

For instance, if a user were to place a limit order or provide liquidity for a Trident pool, the underlying tokens would be making additional yield even if no swaps were occurring.

Architecture

  • MasterDeployer is used to add/remove factories for various pool types. Users call MasterDeployer to deploy new pools from whitelisted factories.
  • MasterDeployer also controls the fee percentage that goes to xSUSHI, the barFeeTo address.
  • MasterDeployer has an owner (ops multisig), that'll control these parameters.
  • TridentRouter is the main contract that allows interacting with various pools. It is used to initiate swaps and manage liquidity.
  • TridentRouter is the contract that gets whitelisted in BentoBox as the master app to transfer user tokens in/out of Trident pools and BentoBox.

Tines: Routing Engine

Tines is a new routing engine designed by Sushi for the Trident front end. Tines is an efficient multihop/multiroute swap router. Tines will query Trident pool types and consider factors such as gas costs, price impacts, and graph topology to generate a best price solution.

  • Multihop - Tines can swap between multiple pools to get the best price for users.
  • Multiroute - Tines can distribute a trade horizontally to minimize price impacts (slippage).

Different asset types perform better in different pool types. For instance, like-kind assets such as wBTC and renBTC tend to perform better in hybrid pools. Tines will allow routing more effectively to make multiple pools act as a unified pool resulting in drastically reduced price impacts.

License (GPL3)

At Sushi, we believe deeply in growing the open source ecosystem of DeFi. Our Trident contract set will be GPL3. As a matter of principle, Sushi will continue to release all software that we develop or own under GPL3 or other permissive OSS licenses.

Post Launch Roadmap

  • Franchised pools

    • Following the launch of Trident, Sushi will begin formalizing franchised pools for institutional and other permissioned use cases. Franchised pools are a way to allow users to provide liquidity on decentralized exchanges while meeting their compliance needs. As such, these pools will be differentiated from the main Trident AMM system and will allow whitelisting and similar features for liquidity providers and swappers.
  • Storage Proof TWAP

    • The Trident implementation will also eventually allow for the presentation of a storage proof to give two simultaneous snapshots of a cumulative price. To do this, the user using the TWAP price will present a merkle proof where the block root is less than 256 blocks behind the canonical head. On chain, Trident contracts will validate such storage proof and related values to allow an instant TWAP snapshot. Sushi has repurposed another implementation for Kashi and is currently deployed on Polygon. Sushi is currently working on a reduced gas consumption version for deployment on Ethereum mainnet.
1.0.1

12 months ago

1.0.0

12 months ago

1.0.0-canary.54

1 year ago

1.0.0-canary.53

1 year ago

1.0.0-canary.46

2 years ago

1.0.0-canary.47

2 years ago

1.0.0-canary.48

2 years ago

1.0.0-canary.49

2 years ago

1.0.0-canary.50

2 years ago

1.0.0-canary.51

2 years ago

1.0.0-canary.52

1 year ago

1.0.0-canary.43

2 years ago

1.0.0-canary.44

2 years ago

1.0.0-canary.42

2 years ago

1.0.0-canary.41

2 years ago

1.0.0-canary.40

2 years ago

1.0.0-canary.39

2 years ago

1.0.0-canary.37

2 years ago

1.0.0-canary.38

2 years ago

1.0.0-canary.35

2 years ago

1.0.0-canary.36

2 years ago

1.0.0-canary.31

2 years ago

1.0.0-canary.32

2 years ago

1.0.0-canary.33

2 years ago

1.0.0-canary.34

2 years ago

1.0.0-canary.29

2 years ago

1.0.0-canary.30

2 years ago

1.0.0-canary.28

2 years ago

1.0.0-canary.25

2 years ago

1.0.0-canary.26

2 years ago

1.0.0-canary.27

2 years ago

1.0.0-canary.24

3 years ago

1.0.0-canary.19

3 years ago

1.0.0-canary.16

3 years ago

1.0.0-canary.20

3 years ago

1.0.0-canary.22

3 years ago

1.0.0-canary.23

3 years ago

1.0.0-canary.15

3 years ago

1.0.0-canary.21

3 years ago

1.0.0-canary.8

3 years ago

1.0.0-canary.9

3 years ago

1.0.0-canary.6

3 years ago

1.0.0-canary.7

3 years ago

1.0.0-canary.13

3 years ago

1.0.0-canary.14

3 years ago

1.0.0-canary.4

3 years ago

1.0.0-canary.5

3 years ago

1.0.0-canary.3

3 years ago

0.0.1

3 years ago

1.0.0-canary.10

3 years ago

1.0.0-canary.11

3 years ago

1.0.0-canary.12

3 years ago

1.0.0-canary.2

3 years ago

1.0.0-canary.1

3 years ago

1.0.0-canary.0

3 years ago