Compare commits

...

3 Commits

Author SHA1 Message Date
Github Actions
aba9db2be7 Publish
- @0x/contracts-integrations@2.7.50
 - @0x/asset-swapper@6.17.3
2021-06-16 01:38:55 +00:00
Github Actions
a6680411c8 Updated CHANGELOGS & MD docs 2021-06-16 01:38:51 +00:00
Romain Butteaud
0d0e87de94 QUICK, TITAN, IRON as intermediate tokens, integrating WaultSwap and Polydex for Polygon, Curve renBTC pool (#264) 2021-06-15 18:12:07 -07:00
9 changed files with 75 additions and 4 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/contracts-integrations",
"version": "2.7.49",
"version": "2.7.50",
"private": true,
"engines": {
"node": ">=6.12"
@@ -93,7 +93,7 @@
"typescript": "4.2.2"
},
"dependencies": {
"@0x/asset-swapper": "^6.17.2",
"@0x/asset-swapper": "^6.17.3",
"@0x/base-contract": "^6.4.0",
"@0x/contracts-asset-proxy": "^3.7.15",
"@0x/contracts-erc1155": "^2.1.33",

View File

@@ -1,4 +1,13 @@
[
{
"version": "6.17.3",
"changes": [
{
"note": "QUICK, TITAN, IRON as intermediate tokens, integrating WaultSwap and Polydex for Polygon, Curve renBTC pool"
}
],
"timestamp": 1623807529
},
{
"timestamp": 1623382456,
"version": "6.17.2",

View File

@@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only.
CHANGELOG
## v6.17.3 - _June 16, 2021_
* QUICK, TITAN, IRON as intermediate tokens, integrating WaultSwap and Polydex for Polygon, Curve renBTC pool
## v6.17.2 - _June 11, 2021_
* Dependencies updated

View File

@@ -1,6 +1,6 @@
{
"name": "@0x/asset-swapper",
"version": "6.17.2",
"version": "6.17.3",
"engines": {
"node": ">=6.12"
},

View File

@@ -26,6 +26,7 @@ import {
NULL_ADDRESS,
PANCAKESWAP_ROUTER_BY_CHAIN_ID,
PANCAKESWAPV2_ROUTER_BY_CHAIN_ID,
POLYDEX_ROUTER_BY_CHAIN_ID,
QUICKSWAP_ROUTER_BY_CHAIN_ID,
SADDLE_MAINNET_INFOS,
SHELL_POOLS_BY_CHAIN_ID,
@@ -35,6 +36,7 @@ import {
SUSHISWAP_ROUTER_BY_CHAIN_ID,
SWERVE_MAINNET_INFOS,
UNISWAPV2_ROUTER_BY_CHAIN_ID,
WAULT_ROUTER_BY_CHAIN_ID,
XSIGMA_MAINNET_INFOS,
} from './constants';
import { CurveInfo, ERC20BridgeSource } from './types';
@@ -365,7 +367,9 @@ export function uniswapV2LikeRouterAddress(
| ERC20BridgeSource.JulSwap
| ERC20BridgeSource.QuickSwap
| ERC20BridgeSource.ComethSwap
| ERC20BridgeSource.Dfyn,
| ERC20BridgeSource.Dfyn
| ERC20BridgeSource.WaultSwap
| ERC20BridgeSource.Polydex,
): string {
switch (source) {
case ERC20BridgeSource.UniswapV2:
@@ -394,6 +398,10 @@ export function uniswapV2LikeRouterAddress(
return COMETHSWAP_ROUTER_BY_CHAIN_ID[chainId];
case ERC20BridgeSource.Dfyn:
return DFYN_ROUTER_BY_CHAIN_ID[chainId];
case ERC20BridgeSource.WaultSwap:
return WAULT_ROUTER_BY_CHAIN_ID[chainId];
case ERC20BridgeSource.Polydex:
return POLYDEX_ROUTER_BY_CHAIN_ID[chainId];
default:
throw new Error(`Unknown UniswapV2 like source ${source}`);
}

View File

@@ -127,6 +127,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
ERC20BridgeSource.CheeseSwap,
ERC20BridgeSource.JulSwap,
ERC20BridgeSource.LiquidityProvider,
ERC20BridgeSource.WaultSwap,
]),
[ChainId.Polygon]: new SourceFilters([
ERC20BridgeSource.SushiSwap,
@@ -138,6 +139,8 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
ERC20BridgeSource.DodoV2,
ERC20BridgeSource.Dodo,
ERC20BridgeSource.CurveV2,
ERC20BridgeSource.WaultSwap,
ERC20BridgeSource.Polydex,
]),
},
new SourceFilters([]),
@@ -211,6 +214,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
ERC20BridgeSource.CheeseSwap,
ERC20BridgeSource.JulSwap,
ERC20BridgeSource.LiquidityProvider,
ERC20BridgeSource.WaultSwap,
]),
[ChainId.Polygon]: new SourceFilters([
ERC20BridgeSource.SushiSwap,
@@ -222,6 +226,8 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
ERC20BridgeSource.DodoV2,
ERC20BridgeSource.Dodo,
ERC20BridgeSource.CurveV2,
ERC20BridgeSource.WaultSwap,
ERC20BridgeSource.Polydex,
]),
},
new SourceFilters([]),
@@ -359,6 +365,10 @@ export const POLYGON_TOKENS = {
WBTC: '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6',
WMATIC: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270',
WETH: '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619',
renBTC: '0xdbf31df14b66535af65aac99c32e9ea844e14501',
QUICK: '0x831753dd7087cac61ab5644b308642cc1c33dc13',
TITAN: '0xaaa5b9e6c589642f98a1cda99b9d024b8407285a',
IRON: '0xd86b5923f3ad7b585ed81b448170ae026c65ae9a',
};
export const CURVE_POOLS = {
@@ -409,6 +419,7 @@ export const CURVE_V2_POOLS = {
export const CURVE_POLYGON_POOLS = {
aave: '0x445fe580ef8d70ff569ab36e80c647af338db351',
ren: '0xc2d95eef97ec6c17551d45e77b590dc1f9117c67',
};
export const CURVE_V2_POLYGON_POOLS = {
@@ -484,6 +495,9 @@ export const DEFAULT_INTERMEDIATE_TOKENS_BY_CHAIN_ID = valueByChainId<string[]>(
POLYGON_TOKENS.DAI,
POLYGON_TOKENS.USDT,
POLYGON_TOKENS.WBTC,
POLYGON_TOKENS.QUICK,
POLYGON_TOKENS.TITAN,
POLYGON_TOKENS.IRON,
],
},
[],
@@ -798,6 +812,11 @@ export const CURVE_POLYGON_INFOS: { [name: string]: CurveInfo } = {
pool: CURVE_POLYGON_POOLS.aave,
gasSchedule: 150e3,
}),
[CURVE_POLYGON_POOLS.ren]: createCurveExchangeUnderlyingPool({
tokens: [POLYGON_TOKENS.WBTC, POLYGON_TOKENS.renBTC],
pool: CURVE_POLYGON_POOLS.ren,
gasSchedule: 350e3,
}),
};
export const CURVE_V2_POLYGON_INFOS: { [name: string]: CurveInfo } = {
@@ -1316,6 +1335,21 @@ export const DFYN_ROUTER_BY_CHAIN_ID = valueByChainId<string>(
NULL_ADDRESS,
);
export const WAULT_ROUTER_BY_CHAIN_ID = valueByChainId<string>(
{
[ChainId.BSC]: '0xd48745e39bbed146eec15b79cbf964884f9877c2',
[ChainId.Polygon]: '0x3a1d87f206d12415f5b0a33e786967680aab4f6d',
},
NULL_ADDRESS,
);
export const POLYDEX_ROUTER_BY_CHAIN_ID = valueByChainId<string>(
{
[ChainId.Polygon]: '0xe5c67ba380fb2f70a47b489e94bced486bb8fb74',
},
NULL_ADDRESS,
);
const uniswapV2CloneGasSchedule = (fillData?: FillData) => {
// TODO: Different base cost if to/from ETH.
let gas = 90e3;
@@ -1428,6 +1462,7 @@ export const DEFAULT_GAS_SCHEDULE: Required<FeeSchedule> = {
[ERC20BridgeSource.CafeSwap]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.CheeseSwap]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.JulSwap]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.WaultSwap]: uniswapV2CloneGasSchedule,
//
// Polygon
@@ -1435,6 +1470,7 @@ export const DEFAULT_GAS_SCHEDULE: Required<FeeSchedule> = {
[ERC20BridgeSource.QuickSwap]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.ComethSwap]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.Dfyn]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.Polydex]: uniswapV2CloneGasSchedule,
};
export const DEFAULT_FEE_SCHEDULE: Required<FeeSchedule> = { ...DEFAULT_GAS_SCHEDULE };

View File

@@ -163,6 +163,10 @@ export function getErc20BridgeSourceToBridgeSource(source: ERC20BridgeSource): s
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'Dfyn');
case ERC20BridgeSource.CurveV2:
return encodeBridgeSourceId(BridgeProtocol.CurveV2, 'CurveV2');
case ERC20BridgeSource.WaultSwap:
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'WaultSwap');
case ERC20BridgeSource.Polydex:
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'Polydex');
default:
throw new Error(AggregationError.NoBridgeForSource);
}
@@ -230,6 +234,8 @@ export function createBridgeDataForBridgeOrder(order: OptimizedMarketBridgeOrder
case ERC20BridgeSource.QuickSwap:
case ERC20BridgeSource.ComethSwap:
case ERC20BridgeSource.Dfyn:
case ERC20BridgeSource.WaultSwap:
case ERC20BridgeSource.Polydex:
const uniswapV2FillData = (order as OptimizedMarketBridgeOrder<UniswapV2FillData>).fillData;
bridgeData = encoder.encode([uniswapV2FillData.router, uniswapV2FillData.tokenAddressPath]);
break;
@@ -418,10 +424,12 @@ export const BRIDGE_ENCODERS: {
[ERC20BridgeSource.CafeSwap]: routerAddressPathEncoder,
[ERC20BridgeSource.CheeseSwap]: routerAddressPathEncoder,
[ERC20BridgeSource.JulSwap]: routerAddressPathEncoder,
[ERC20BridgeSource.WaultSwap]: routerAddressPathEncoder,
// Polygon
[ERC20BridgeSource.QuickSwap]: routerAddressPathEncoder,
[ERC20BridgeSource.ComethSwap]: routerAddressPathEncoder,
[ERC20BridgeSource.Dfyn]: routerAddressPathEncoder,
[ERC20BridgeSource.Polydex]: routerAddressPathEncoder,
// Generic pools
[ERC20BridgeSource.Shell]: poolEncoder,
[ERC20BridgeSource.Component]: poolEncoder,

View File

@@ -1188,6 +1188,8 @@ export class SamplerOperations {
case ERC20BridgeSource.QuickSwap:
case ERC20BridgeSource.ComethSwap:
case ERC20BridgeSource.Dfyn:
case ERC20BridgeSource.WaultSwap:
case ERC20BridgeSource.Polydex:
const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source);
if (!isValidAddress(uniLikeRouter)) {
return [];
@@ -1442,6 +1444,8 @@ export class SamplerOperations {
case ERC20BridgeSource.QuickSwap:
case ERC20BridgeSource.ComethSwap:
case ERC20BridgeSource.Dfyn:
case ERC20BridgeSource.WaultSwap:
case ERC20BridgeSource.Polydex:
const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source);
if (!isValidAddress(uniLikeRouter)) {
return [];

View File

@@ -82,6 +82,8 @@ export enum ERC20BridgeSource {
QuickSwap = 'QuickSwap',
ComethSwap = 'ComethSwap',
Dfyn = 'Dfyn',
WaultSwap = 'WaultSwap',
Polydex = 'Polydex',
}
export type SourcesWithPoolsCache = ERC20BridgeSource.Balancer | ERC20BridgeSource.BalancerV2 | ERC20BridgeSource.Cream;