[asset-swapper] Add latest BUSD Curve (#2506)

* [asset-swapper] Add latest BUSD Curve

* Update Compound Curve
This commit is contained in:
Jacob Evans 2020-03-03 17:53:35 +11:00 committed by GitHub
parent cded58c30d
commit ea1528aea6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 29 additions and 22 deletions

View File

@ -9,6 +9,14 @@
{ {
"note": "Add destroy for gas heartbeat", "note": "Add destroy for gas heartbeat",
"pr": 2492 "pr": 2492
},
{
"note": "Added `BUSD` Curve",
"pr": 2506
},
{
"note": "Updated `Compound` Curve address",
"pr": 2506
} }
] ]
}, },

View File

@ -68,8 +68,8 @@ const DEFAULT_SWAP_QUOTE_REQUEST_OPTS: SwapQuoteRequestOpts = {
// Mainnet Curve configuration // Mainnet Curve configuration
const DEFAULT_CURVE_OPTS: { [source: string]: { version: number; curveAddress: string; tokens: string[] } } = { const DEFAULT_CURVE_OPTS: { [source: string]: { version: number; curveAddress: string; tokens: string[] } } = {
[ERC20BridgeSource.CurveUsdcDai]: { [ERC20BridgeSource.CurveUsdcDai]: {
version: 0, version: 1,
curveAddress: '0x2e60cf74d81ac34eb21eeff58db4d385920ef419', curveAddress: '0xa2b47e3d5c44877cca798226b7b8118f9bfb7a56',
tokens: ['0x6b175474e89094c44da98b954eedeac495271d0f', '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'], tokens: ['0x6b175474e89094c44da98b954eedeac495271d0f', '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'],
}, },
[ERC20BridgeSource.CurveUsdcDaiUsdt]: { [ERC20BridgeSource.CurveUsdcDaiUsdt]: {
@ -91,6 +91,16 @@ const DEFAULT_CURVE_OPTS: { [source: string]: { version: number; curveAddress: s
'0x0000000000085d4780b73119b644ae5ecd22b376', '0x0000000000085d4780b73119b644ae5ecd22b376',
], ],
}, },
[ERC20BridgeSource.CurveUsdcDaiUsdtBusd]: {
version: 1,
curveAddress: '0x79a8c46dea5ada233abaffd40f3a0a2b1e5a4f27',
tokens: [
'0x6b175474e89094c44da98b954eedeac495271d0f',
'0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
'0xdac17f958d2ee523a2206206994597c13d831ec7',
'0x4fabb145d64652a948d72533023f6e7a623c7c53',
],
},
}; };
export const constants = { export const constants = {

View File

@ -11,9 +11,11 @@ export const SELL_SOURCES = [
ERC20BridgeSource.Uniswap, ERC20BridgeSource.Uniswap,
ERC20BridgeSource.Eth2Dai, ERC20BridgeSource.Eth2Dai,
ERC20BridgeSource.Kyber, ERC20BridgeSource.Kyber,
// All Curve Sources
ERC20BridgeSource.CurveUsdcDai, ERC20BridgeSource.CurveUsdcDai,
ERC20BridgeSource.CurveUsdcDaiUsdt, ERC20BridgeSource.CurveUsdcDaiUsdt,
ERC20BridgeSource.CurveUsdcDaiUsdtTusd, ERC20BridgeSource.CurveUsdcDaiUsdtTusd,
ERC20BridgeSource.CurveUsdcDaiUsdtBusd,
]; ];
/** /**

View File

@ -109,6 +109,7 @@ export class CreateOrderUtils {
case ERC20BridgeSource.CurveUsdcDai: case ERC20BridgeSource.CurveUsdcDai:
case ERC20BridgeSource.CurveUsdcDaiUsdt: case ERC20BridgeSource.CurveUsdcDaiUsdt:
case ERC20BridgeSource.CurveUsdcDaiUsdtTusd: case ERC20BridgeSource.CurveUsdcDaiUsdtTusd:
case ERC20BridgeSource.CurveUsdcDaiUsdtBusd:
return this._contractAddress.curveBridge; return this._contractAddress.curveBridge;
default: default:
break; break;
@ -127,11 +128,7 @@ function createBridgeOrder(
isBuy: boolean = false, isBuy: boolean = false,
): OptimizedMarketOrder { ): OptimizedMarketOrder {
let makerAssetData; let makerAssetData;
if ( if (Object.keys(constants.DEFAULT_CURVE_OPTS).includes(fill.source)) {
fill.source === ERC20BridgeSource.CurveUsdcDai ||
fill.source === ERC20BridgeSource.CurveUsdcDaiUsdt ||
fill.source === ERC20BridgeSource.CurveUsdcDaiUsdtTusd
) {
const { curveAddress, tokens, version } = constants.DEFAULT_CURVE_OPTS[fill.source]; const { curveAddress, tokens, version } = constants.DEFAULT_CURVE_OPTS[fill.source];
const fromTokenIdx = tokens.indexOf(takerToken); const fromTokenIdx = tokens.indexOf(takerToken);
const toTokenIdx = tokens.indexOf(makerToken); const toTokenIdx = tokens.indexOf(makerToken);

View File

@ -199,11 +199,7 @@ const samplerOperations = {
batchedOperation = samplerOperations.getUniswapSellQuotes(makerToken, takerToken, takerFillAmounts); batchedOperation = samplerOperations.getUniswapSellQuotes(makerToken, takerToken, takerFillAmounts);
} else if (source === ERC20BridgeSource.Kyber) { } else if (source === ERC20BridgeSource.Kyber) {
batchedOperation = samplerOperations.getKyberSellQuotes(makerToken, takerToken, takerFillAmounts); batchedOperation = samplerOperations.getKyberSellQuotes(makerToken, takerToken, takerFillAmounts);
} else if ( } else if (Object.keys(constants.DEFAULT_CURVE_OPTS).includes(source)) {
source === ERC20BridgeSource.CurveUsdcDai ||
source === ERC20BridgeSource.CurveUsdcDaiUsdt ||
source === ERC20BridgeSource.CurveUsdcDaiUsdtTusd
) {
const { curveAddress, tokens } = constants.DEFAULT_CURVE_OPTS[source]; const { curveAddress, tokens } = constants.DEFAULT_CURVE_OPTS[source];
const fromTokenIdx = tokens.indexOf(takerToken); const fromTokenIdx = tokens.indexOf(takerToken);
const toTokenIdx = tokens.indexOf(makerToken); const toTokenIdx = tokens.indexOf(makerToken);

View File

@ -31,6 +31,7 @@ export enum ERC20BridgeSource {
CurveUsdcDai = 'Curve_USDC_DAI', CurveUsdcDai = 'Curve_USDC_DAI',
CurveUsdcDaiUsdt = 'Curve_USDC_DAI_USDT', CurveUsdcDaiUsdt = 'Curve_USDC_DAI_USDT',
CurveUsdcDaiUsdtTusd = 'Curve_USDC_DAI_USDT_TUSD', CurveUsdcDaiUsdtTusd = 'Curve_USDC_DAI_USDT_TUSD',
CurveUsdcDaiUsdtBusd = 'Curve_USDC_DAI_USDT_BUSD',
} }
// Internal `fillData` field for `Fill` objects. // Internal `fillData` field for `Fill` objects.

View File

@ -204,6 +204,7 @@ describe('MarketOperationUtils tests', () => {
[ERC20BridgeSource.CurveUsdcDai]: _.times(NUM_SAMPLES, () => 0), [ERC20BridgeSource.CurveUsdcDai]: _.times(NUM_SAMPLES, () => 0),
[ERC20BridgeSource.CurveUsdcDaiUsdt]: _.times(NUM_SAMPLES, () => 0), [ERC20BridgeSource.CurveUsdcDaiUsdt]: _.times(NUM_SAMPLES, () => 0),
[ERC20BridgeSource.CurveUsdcDaiUsdtTusd]: _.times(NUM_SAMPLES, () => 0), [ERC20BridgeSource.CurveUsdcDaiUsdtTusd]: _.times(NUM_SAMPLES, () => 0),
[ERC20BridgeSource.CurveUsdcDaiUsdtBusd]: _.times(NUM_SAMPLES, () => 0),
}; };
function findSourceWithMaxOutput(rates: RatesBySource): ERC20BridgeSource { function findSourceWithMaxOutput(rates: RatesBySource): ERC20BridgeSource {
@ -274,11 +275,7 @@ describe('MarketOperationUtils tests', () => {
runLimit: 0, runLimit: 0,
sampleDistributionBase: 1, sampleDistributionBase: 1,
bridgeSlippage: 0, bridgeSlippage: 0,
excludedSources: [ excludedSources: Object.keys(assetSwapperConstants.DEFAULT_CURVE_OPTS) as ERC20BridgeSource[],
ERC20BridgeSource.CurveUsdcDai,
ERC20BridgeSource.CurveUsdcDaiUsdt,
ERC20BridgeSource.CurveUsdcDaiUsdtTusd,
],
}; };
beforeEach(() => { beforeEach(() => {
@ -545,11 +542,7 @@ describe('MarketOperationUtils tests', () => {
numSamples: NUM_SAMPLES, numSamples: NUM_SAMPLES,
runLimit: 0, runLimit: 0,
sampleDistributionBase: 1, sampleDistributionBase: 1,
excludedSources: [ excludedSources: Object.keys(assetSwapperConstants.DEFAULT_CURVE_OPTS) as ERC20BridgeSource[],
ERC20BridgeSource.CurveUsdcDai,
ERC20BridgeSource.CurveUsdcDaiUsdt,
ERC20BridgeSource.CurveUsdcDaiUsdtTusd,
],
}; };
beforeEach(() => { beforeEach(() => {