Deployed CreamBridge, refactor to simplify code

This commit is contained in:
Alex Kroeger 2020-10-15 16:58:39 -07:00
parent bbfa9c34ab
commit 07ab10b000
9 changed files with 31 additions and 68 deletions

View File

@ -136,7 +136,7 @@ contract BridgeAdapter is
sellAmount, sellAmount,
bridgeData bridgeData
); );
} else if (bridgeAddress == BALANCER_BRIDGE_ADDRESS) { } else if (bridgeAddress == BALANCER_BRIDGE_ADDRESS || bridgeAddress == CREAM_BRIDGE_ADDRESS) {
boughtAmount = _tradeBalancer( boughtAmount = _tradeBalancer(
buyToken, buyToken,
sellAmount, sellAmount,
@ -172,12 +172,6 @@ contract BridgeAdapter is
sellAmount, sellAmount,
bridgeData bridgeData
); );
} else if (bridgeAddress == CREAM_BRIDGE_ADDRESS) {
boughtAmount = _tradeBalancer(
buyToken,
sellAmount,
bridgeData
);
} else { } else {
boughtAmount = _tradeZeroExBridge( boughtAmount = _tradeZeroExBridge(
bridgeAddress, bridgeAddress,

View File

@ -132,7 +132,6 @@ export {
CurveFillData, CurveFillData,
CurveFunctionSelectors, CurveFunctionSelectors,
CurveInfo, CurveInfo,
CreamFillData,
DexSample, DexSample,
DODOFillData, DODOFillData,
ERC20BridgeSource, ERC20BridgeSource,

View File

@ -159,13 +159,10 @@ export class MarketOperationUtils {
quoteSourceFilters.isAllowed(ERC20BridgeSource.Cream), quoteSourceFilters.isAllowed(ERC20BridgeSource.Cream),
); );
let excludedSources: ERC20BridgeSource[] = []; const excludedSources = [
if (!sampleCreamOnChain) { ...(!sampleCreamOnChain ? [ERC20BridgeSource.Cream] : []),
excludedSources = excludedSources.concat(ERC20BridgeSource.Cream); ...(!sampleBalancerOnChain ? [ERC20BridgeSource.Balancer] : []),
} ];
if (!sampleBalancerOnChain) {
excludedSources = excludedSources.concat(ERC20BridgeSource.Balancer);
}
// Call the sampler contract. // Call the sampler contract.
const samplerPromise = this._sampler.executeAsync( const samplerPromise = this._sampler.executeAsync(
@ -303,13 +300,10 @@ export class MarketOperationUtils {
quoteSourceFilters.isAllowed(ERC20BridgeSource.Cream), quoteSourceFilters.isAllowed(ERC20BridgeSource.Cream),
); );
let excludedSources: ERC20BridgeSource[] = []; const excludedSources = [
if (!sampleCreamOnChain) { ...(!sampleCreamOnChain ? [ERC20BridgeSource.Cream] : []),
excludedSources = excludedSources.concat(ERC20BridgeSource.Cream); ...(!sampleBalancerOnChain ? [ERC20BridgeSource.Balancer] : []),
} ];
if (!sampleBalancerOnChain) {
excludedSources = excludedSources.concat(ERC20BridgeSource.Balancer);
}
// Call the sampler contract. // Call the sampler contract.
const samplerPromise = this._sampler.executeAsync( const samplerPromise = this._sampler.executeAsync(

View File

@ -22,7 +22,6 @@ import {
BalancerFillData, BalancerFillData,
BancorFillData, BancorFillData,
CollapsedFill, CollapsedFill,
CreamFillData,
CurveFillData, CurveFillData,
DexSample, DexSample,
DODOFillData, DODOFillData,
@ -179,7 +178,7 @@ function getBridgeAddressFromFill(fill: CollapsedFill, opts: CreateOrderFromPath
case ERC20BridgeSource.Balancer: case ERC20BridgeSource.Balancer:
return opts.contractAddresses.balancerBridge; return opts.contractAddresses.balancerBridge;
case ERC20BridgeSource.Cream: case ERC20BridgeSource.Cream:
return opts.contractAddresses.balancerBridge; return opts.contractAddresses.creamBridge;
case ERC20BridgeSource.LiquidityProvider: case ERC20BridgeSource.LiquidityProvider:
return (fill.fillData as LiquidityProviderFillData).poolAddress; return (fill.fillData as LiquidityProviderFillData).poolAddress;
case ERC20BridgeSource.MultiBridge: case ERC20BridgeSource.MultiBridge:
@ -245,7 +244,7 @@ export function createBridgeOrder(
); );
break; break;
case ERC20BridgeSource.Cream: case ERC20BridgeSource.Cream:
const creamFillData = (fill as CollapsedFill<CreamFillData>).fillData!; // tslint:disable-line:no-non-null-assertion const creamFillData = (fill as CollapsedFill<BalancerFillData>).fillData!; // tslint:disable-line:no-non-null-assertion
makerAssetData = assetDataUtils.encodeERC20BridgeAssetData( makerAssetData = assetDataUtils.encodeERC20BridgeAssetData(
makerToken, makerToken,
bridgeAddress, bridgeAddress,

View File

@ -19,7 +19,6 @@ import {
BalancerFillData, BalancerFillData,
BancorFillData, BancorFillData,
BatchedOperation, BatchedOperation,
CreamFillData,
CurveFillData, CurveFillData,
CurveInfo, CurveInfo,
DexSample, DexSample,
@ -413,9 +412,10 @@ export class SamplerOperations {
makerToken: string, makerToken: string,
takerToken: string, takerToken: string,
takerFillAmounts: BigNumber[], takerFillAmounts: BigNumber[],
source: ERC20BridgeSource,
): SourceQuoteOperation<BalancerFillData> { ): SourceQuoteOperation<BalancerFillData> {
return new SamplerContractOperation({ return new SamplerContractOperation({
source: ERC20BridgeSource.Balancer, source,
fillData: { poolAddress }, fillData: { poolAddress },
contract: this._samplerContract, contract: this._samplerContract,
function: this._samplerContract.sampleSellsFromBalancer, function: this._samplerContract.sampleSellsFromBalancer,
@ -428,9 +428,10 @@ export class SamplerOperations {
makerToken: string, makerToken: string,
takerToken: string, takerToken: string,
makerFillAmounts: BigNumber[], makerFillAmounts: BigNumber[],
source: ERC20BridgeSource,
): SourceQuoteOperation<BalancerFillData> { ): SourceQuoteOperation<BalancerFillData> {
return new SamplerContractOperation({ return new SamplerContractOperation({
source: ERC20BridgeSource.Balancer, source,
fillData: { poolAddress }, fillData: { poolAddress },
contract: this._samplerContract, contract: this._samplerContract,
function: this._samplerContract.sampleBuysFromBalancer, function: this._samplerContract.sampleBuysFromBalancer,
@ -470,41 +471,11 @@ export class SamplerOperations {
); );
} }
public getCreamSellQuotes(
poolAddress: string,
makerToken: string,
takerToken: string,
takerFillAmounts: BigNumber[],
): SourceQuoteOperation<CreamFillData> {
return new SamplerContractOperation({
source: ERC20BridgeSource.Cream,
fillData: { poolAddress },
contract: this._samplerContract,
function: this._samplerContract.sampleSellsFromBalancer,
params: [poolAddress, takerToken, makerToken, takerFillAmounts],
});
}
public getCreamBuyQuotes(
poolAddress: string,
makerToken: string,
takerToken: string,
makerFillAmounts: BigNumber[],
): SourceQuoteOperation<CreamFillData> {
return new SamplerContractOperation({
source: ERC20BridgeSource.Cream,
fillData: { poolAddress },
contract: this._samplerContract,
function: this._samplerContract.sampleBuysFromBalancer,
params: [poolAddress, takerToken, makerToken, makerFillAmounts],
});
}
public async getCreamSellQuotesOffChainAsync( public async getCreamSellQuotesOffChainAsync(
makerToken: string, makerToken: string,
takerToken: string, takerToken: string,
takerFillAmounts: BigNumber[], takerFillAmounts: BigNumber[],
): Promise<Array<Array<DexSample<CreamFillData>>>> { ): Promise<Array<Array<DexSample<BalancerFillData>>>> {
const pools = await this.creamPoolsCache.getPoolsForPairAsync(takerToken, makerToken); const pools = await this.creamPoolsCache.getPoolsForPairAsync(takerToken, makerToken);
return pools.map(pool => return pools.map(pool =>
takerFillAmounts.map(amount => ({ takerFillAmounts.map(amount => ({
@ -520,7 +491,7 @@ export class SamplerOperations {
makerToken: string, makerToken: string,
takerToken: string, takerToken: string,
makerFillAmounts: BigNumber[], makerFillAmounts: BigNumber[],
): Promise<Array<Array<DexSample<CreamFillData>>>> { ): Promise<Array<Array<DexSample<BalancerFillData>>>> {
const pools = await this.creamPoolsCache.getPoolsForPairAsync(takerToken, makerToken); const pools = await this.creamPoolsCache.getPoolsForPairAsync(takerToken, makerToken);
return pools.map(pool => return pools.map(pool =>
makerFillAmounts.map(amount => ({ makerFillAmounts.map(amount => ({
@ -1103,13 +1074,13 @@ export class SamplerOperations {
return this.balancerPoolsCache return this.balancerPoolsCache
.getCachedPoolAddressesForPair(takerToken, makerToken)! .getCachedPoolAddressesForPair(takerToken, makerToken)!
.map(poolAddress => .map(poolAddress =>
this.getBalancerSellQuotes(poolAddress, makerToken, takerToken, takerFillAmounts), this.getBalancerSellQuotes(poolAddress, makerToken, takerToken, takerFillAmounts, ERC20BridgeSource.Balancer),
); );
case ERC20BridgeSource.Cream: case ERC20BridgeSource.Cream:
return this.creamPoolsCache return this.creamPoolsCache
.getCachedPoolAddressesForPair(takerToken, makerToken)! .getCachedPoolAddressesForPair(takerToken, makerToken)!
.map(poolAddress => .map(poolAddress =>
this.getCreamSellQuotes(poolAddress, makerToken, takerToken, takerFillAmounts), this.getBalancerSellQuotes(poolAddress, makerToken, takerToken, takerFillAmounts, ERC20BridgeSource.Cream),
); );
case ERC20BridgeSource.Shell: case ERC20BridgeSource.Shell:
return this.getShellSellQuotes(makerToken, takerToken, takerFillAmounts); return this.getShellSellQuotes(makerToken, takerToken, takerFillAmounts);
@ -1200,13 +1171,13 @@ export class SamplerOperations {
return this.balancerPoolsCache return this.balancerPoolsCache
.getCachedPoolAddressesForPair(takerToken, makerToken)! .getCachedPoolAddressesForPair(takerToken, makerToken)!
.map(poolAddress => .map(poolAddress =>
this.getBalancerBuyQuotes(poolAddress, makerToken, takerToken, makerFillAmounts), this.getBalancerBuyQuotes(poolAddress, makerToken, takerToken, makerFillAmounts, ERC20BridgeSource.Balancer),
); );
case ERC20BridgeSource.Cream: case ERC20BridgeSource.Cream:
return this.creamPoolsCache return this.creamPoolsCache
.getCachedPoolAddressesForPair(takerToken, makerToken)! .getCachedPoolAddressesForPair(takerToken, makerToken)!
.map(poolAddress => .map(poolAddress =>
this.getCreamBuyQuotes(poolAddress, makerToken, takerToken, makerFillAmounts), this.getBalancerBuyQuotes(poolAddress, makerToken, takerToken, makerFillAmounts, ERC20BridgeSource.Cream),
); );
case ERC20BridgeSource.Shell: case ERC20BridgeSource.Shell:
return this.getShellBuyQuotes(makerToken, takerToken, makerFillAmounts); return this.getShellBuyQuotes(makerToken, takerToken, makerFillAmounts);

View File

@ -105,10 +105,6 @@ export interface BalancerFillData extends FillData {
poolAddress: string; poolAddress: string;
} }
export interface CreamFillData extends FillData {
poolAddress: string;
}
export interface UniswapV2FillData extends FillData { export interface UniswapV2FillData extends FillData {
tokenAddressPath: string[]; tokenAddressPath: string[];
} }

View File

@ -57,6 +57,10 @@
{ {
"note": "Deploy `DodoBridge` on Mainnet", "note": "Deploy `DodoBridge` on Mainnet",
"pr": 2701 "pr": 2701
},
{
"note": "Deploy `CreamBridge` on Mainnet",
"pr": 2715
} }
] ]
}, },

View File

@ -45,6 +45,7 @@
"sushiswapBridge": "0x47ed0262a0b688dcb836d254c6a2e96b6c48a9f5", "sushiswapBridge": "0x47ed0262a0b688dcb836d254c6a2e96b6c48a9f5",
"shellBridge": "0x21fb3862eed7911e0f8219a077247b849846728d", "shellBridge": "0x21fb3862eed7911e0f8219a077247b849846728d",
"dodoBridge": "0xe9da66965a9344aab2167e6813c03f043cc7a6ca", "dodoBridge": "0xe9da66965a9344aab2167e6813c03f043cc7a6ca",
"creamBridge": "0xb9d4bf2c8dab828f4ffb656acdb6c2b497d44f25",
"transformers": { "transformers": {
"wethTransformer": "0x68c0bb685099dc7cb5c5ce2b26185945b357383e", "wethTransformer": "0x68c0bb685099dc7cb5c5ce2b26185945b357383e",
"payTakerTransformer": "0x49b9df2c58491764cf40cb052dd4243df63622c7", "payTakerTransformer": "0x49b9df2c58491764cf40cb052dd4243df63622c7",
@ -98,6 +99,7 @@
"sushiswapBridge": "0x0000000000000000000000000000000000000000", "sushiswapBridge": "0x0000000000000000000000000000000000000000",
"shellBridge": "0x0000000000000000000000000000000000000000", "shellBridge": "0x0000000000000000000000000000000000000000",
"dodoBridge": "0x0000000000000000000000000000000000000000", "dodoBridge": "0x0000000000000000000000000000000000000000",
"creamBridge": "0x0000000000000000000000000000000000000000",
"transformers": { "transformers": {
"wethTransformer": "0x8d822fe2b42f60531203e288f5f357fa79474437", "wethTransformer": "0x8d822fe2b42f60531203e288f5f357fa79474437",
"payTakerTransformer": "0x150652244723102faeaefa4c79597d097ffa26c6", "payTakerTransformer": "0x150652244723102faeaefa4c79597d097ffa26c6",
@ -151,6 +153,7 @@
"sushiswapBridge": "0x0000000000000000000000000000000000000000", "sushiswapBridge": "0x0000000000000000000000000000000000000000",
"shellBridge": "0x0000000000000000000000000000000000000000", "shellBridge": "0x0000000000000000000000000000000000000000",
"dodoBridge": "0x0000000000000000000000000000000000000000", "dodoBridge": "0x0000000000000000000000000000000000000000",
"creamBridge": "0x0000000000000000000000000000000000000000",
"transformers": { "transformers": {
"wethTransformer": "0x8d822fe2b42f60531203e288f5f357fa79474437", "wethTransformer": "0x8d822fe2b42f60531203e288f5f357fa79474437",
"payTakerTransformer": "0x150652244723102faeaefa4c79597d097ffa26c6", "payTakerTransformer": "0x150652244723102faeaefa4c79597d097ffa26c6",
@ -204,6 +207,7 @@
"sushiswapBridge": "0x0000000000000000000000000000000000000000", "sushiswapBridge": "0x0000000000000000000000000000000000000000",
"shellBridge": "0x0000000000000000000000000000000000000000", "shellBridge": "0x0000000000000000000000000000000000000000",
"dodoBridge": "0x0000000000000000000000000000000000000000", "dodoBridge": "0x0000000000000000000000000000000000000000",
"creamBridge": "0x0000000000000000000000000000000000000000",
"transformers": { "transformers": {
"wethTransformer": "0x9ce35b5ee9e710535e3988e3f8731d9ca9dba17d", "wethTransformer": "0x9ce35b5ee9e710535e3988e3f8731d9ca9dba17d",
"payTakerTransformer": "0x5a53e7b02a83aa9f60ccf4e424f0442c255bc977", "payTakerTransformer": "0x5a53e7b02a83aa9f60ccf4e424f0442c255bc977",
@ -257,6 +261,7 @@
"sushiswapBridge": "0x0000000000000000000000000000000000000000", "sushiswapBridge": "0x0000000000000000000000000000000000000000",
"shellBridge": "0x0000000000000000000000000000000000000000", "shellBridge": "0x0000000000000000000000000000000000000000",
"dodoBridge": "0x0000000000000000000000000000000000000000", "dodoBridge": "0x0000000000000000000000000000000000000000",
"creamBridge": "0x0000000000000000000000000000000000000000",
"transformers": { "transformers": {
"wethTransformer": "0xc6b0d3c45a6b5092808196cb00df5c357d55e1d5", "wethTransformer": "0xc6b0d3c45a6b5092808196cb00df5c357d55e1d5",
"payTakerTransformer": "0x7209185959d7227fb77274e1e88151d7c4c368d3", "payTakerTransformer": "0x7209185959d7227fb77274e1e88151d7c4c368d3",

View File

@ -46,6 +46,7 @@ export interface ContractAddresses {
sushiswapBridge: string; sushiswapBridge: string;
shellBridge: string; shellBridge: string;
dodoBridge: string; dodoBridge: string;
creamBridge: string;
transformers: { transformers: {
wethTransformer: string; wethTransformer: string;
payTakerTransformer: string; payTakerTransformer: string;