Migration to Version 1.0
The SOR Version 1.0.0-0 introduces breaking changes but should be fairly easy to update. Benefits of updating include - support for multihop swaps and an easier to use wrapper interface as well as more efficient/faster processing.
Overview Of Changes
SOR Library
The SOR is now instantiated as an object:
const SOR = new sor.SOR(Provider, GasPrice, MaxPools, ChainId, PoolsUrl)
const SOR = new sor.SOR(Provider, GasPrice, MaxPools, ChainId, PoolsUrl)
Find further details on parameters here.
SOR now has three main functions:
await SOR.setCostOutputToken(tokenOut)
await SOR.setCostOutputToken(tokenOut)
Calculates gas cost for swapping token on Balancer.
The result is used to make more gas efficient swap recommendations.
Result is cached for future use but can be updated by re-calling.
Notice that outputToken is tokenOut if swapType == 'swapExactIn' and tokenIn if swapType == 'swapExactOut'
const isSuccess = await SOR.fetchPools()
const isSuccess = await SOR.fetchPools()
This fetches all Balancer pool information and on-chain balances.
Retrieves pool information from static IPFS file rather than Subgraph.
Retrieves on-chain balances using custom multicall contract.
Returns true on success or false on error.
Information is cached and used for all future processing, this results in fast processing of swaps, i.e. useful when changing swap amounts or types in a UI.
Accurate/valid swaps rely on upM to date balance information so it is recommended this function is re-called to refresh as needed.
const [swaps, amount] = await SOR.getSwaps(tokenIn, tokenOut, swapType, swapAmount)
const [swaps, amount] = await SOR.getSwaps(tokenIn, tokenOut, swapType, swapAmount)
Main function to process trade.
Will return amount expected and a list of swaps that can be executed on-chain.
ExchangeProxy Contract
A new ExchangeProxy contract that supports multihop swaps has been deployed to the addresses below. For contract details please see Exchange Proxy.
Mainnet:
0x3E66B66Fd1d0b02fDa6C811Da9E0547970DB2f21
Kovant:
0x4e67bf5bD28Dd4b570FBAFe11D0633eCbA2754Ec
Further Information
For more information on SOR functions and to see code examples (including using with ExchangeProxy) please see Development & Examples.
For a full example demonstrating use of SOR wrapper please see here.
There is also an example showing how the SOR functions can be used without the wrapper.
Last updated