githubEdit

[v1] sPMM liquidity integration

Contracts

Two main contracts of WOOFi's swap function are as follows:

  • WooPP.sol: the main swap contract that handles the logic operation, including setting the token info, calculating slippage, calculating the exchange amount and executing trades. it stores all tokens that are supported for trading. In this contract, it defines quote token and base token. Quote token is the reference token (i.e. stablecoins) in the contract and there is only one quote token. The contract can have multiple base tokens and they can be added by the strategist.

  • WooRouter.sol: the router contract that frontend users interact with. It interacts with the lower layer WooPP.sol to execute the sell logic and send back users the desired amount of tokens. This contract also implements the logic to route user orders to 3rd party aggregator (e.g. 1inch) when WooPP.sol does not have sufficient liquidity.

circle-info

More details about WOOFi smart contract architecture, implementation info, and addresses can be found in .

Supported assets

WooPP.sol currently supports the following tokens. Quote token is the stablecoin and the rest are base tokens.

Token
Address

BNB

0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE

WBNB

0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c

BTCB

0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c

ETH

0x2170ed0880ac9a755fd29b2688956bd959f933f8

WOO

0x4691937a7508860f876c9c0a2a617e7d9e945d4b

USDT

0x55d398326f99059fF775485246999027B3197955

Integrate WOOFi as a liquidity source

When integrating WOOFi as a liquidity source, you can either interact directly with WooPP.sol or throughWooRouter.sol.

For aggregators or trading bots, we recommend integrate directly with WooPP.sol to be more gas efficient.

Contract addresses:

BNB Chain: 0xbf365Ce9cFcb2d5855521985E351bA3bcf77FD3Farrow-up-right

Avalanche: 0x1df3009c57a8B143c6246149F00B090Bce3b8f88arrow-up-right

Fantom: 0x9503E7517D3C5bc4f9E4A1c6AE4f8B33AC2546f2arrow-up-right

Polygon: 0x7400B665C8f4f3a951a99f1ee9872efb8778723darrow-up-right

Interface:

Query & swap functions

Sample integration code (Yield Yak)

https://snowtrace.io/address/0xa64c5c58fc1510de3ff2ee644e030d666b660ea6#codearrow-up-right

Integrating WooRouter.sol

A simpler way is calling WooRouter.sol contract which provides the similar query and swap as above. This way costs slightly more gas than directly integrating with WooPP.sol.

Contract addresses

BNB Chain: 0xcef5be73ae943b77f9bc08859367d923c030a269arrow-up-right

Avalanche: 0x5AA6a4E96A9129562e2fc06660D07FEdDAAf7854arrow-up-right

Fantom: 0x37b5a5a730dad670874f26cc5507bb1b9705e447arrow-up-right

Polygon: 0x9D1A92e601db0901e69bd810029F2C14bCCA3128arrow-up-right

Query function

Sample code to retrieve quote on selling 1 BTC:

Swap function

Sample code to swap 1 BTC to USDT:

sPMM offchain simulation

For aggregators running offchain routing simulation, you can find the typescript implementation of WOOFi's sPMM algorithm in the githubarrow-up-right.

Last updated

Was this helpful?