* add balancer v2 * fetch balancer v2 pools from subgraph * feat: initial stab at a Balancer V2 Sampler WIP * feat: add sampling for buys and fix build issues WIP [untested] * fix: BalancerV2Sampler implementation issues, works on Kovan * chore: BalancerV2 sampling boilerplate * fix: update Balancer V2 mainnet address * fix: consolidate differences between the 2 working branches * fix: use mainnet Balancer V2 subgraph * fix: stack too deep by minimizing and inline Balancer V2 vault interface * fix: address review comments and clean up * fix: sampler vault interface and pools cache assuming a pool has swaps * address more review comments * fix: TS type issues and add a comment about deadline argument * fix: pools_cache_tests incorrect token addresses, prettier incompat * fix: make ERC20BridgeSampler support BalancerV2 non view sampler fns * fix: use a struct for passing encoded bridge data for Balancer V2 * chore: add changelog entries * fix: improve gas accuracy of gas schedule for Balancer V2 & Maker Psm * fix: don't exclude sources with stale caches & wait for cache refresh * rebase * `@0x/asset-swapper`: Fix stack too deep errors in sampler * `@0x/asset-swapper`: Add uniswap V3 sampler. * `@0x/contracts-zero-ex`: Add UniswapV3 support to FQT * `@0x/protocol-utils`: Update BridgeProtocols. `@0x/asset-swapper`: Add sell integration for UniswapV3. * `@0x/asset-swapper`: Remove unnecessary swap quote consumer constructor arg. `@0x/asset-swapper`: Enable UniswapV3 on ropsten. * `@0x/asset-swapper`: UniswapV3 fixes * `@0x/asset-swapper`: Fix stuff based on latest deployed testnet contracts * `@0x/asset-swapper`: Remove UniV3 from mainnet sources for now * `@0x/asset-swapper`: Tweak univ3 gas schedule * fix CI? * `@0x/contracts-test-utils`: Set default ganache gas limit to 100e6 Co-authored-by: xianny <xianny@gmail.com> Co-authored-by: Kim Persson <kimpersson88@gmail.com> Co-authored-by: Lawrence Forman <me@merklejerk.com> Co-authored-by: Jacob Evans <jacob@dekz.net>
62 lines
2.4 KiB
TypeScript
62 lines
2.4 KiB
TypeScript
import { devConstants, env, EnvVars, Web3Config, web3Factory } from '@0x/dev-utils';
|
|
import { prependSubprovider, Web3ProviderEngine } from '@0x/subproviders';
|
|
import { logUtils } from '@0x/utils';
|
|
import { Web3Wrapper } from '@0x/web3-wrapper';
|
|
import * as _ from 'lodash';
|
|
|
|
import { constants } from './constants';
|
|
import { coverage } from './coverage';
|
|
import { profiler } from './profiler';
|
|
import { revertTrace } from './revert_trace';
|
|
|
|
export const txDefaults = {
|
|
from: devConstants.TESTRPC_FIRST_ADDRESS,
|
|
gas: devConstants.GAS_LIMIT,
|
|
gasPrice: constants.DEFAULT_GAS_PRICE,
|
|
};
|
|
|
|
export let providerConfigs: Web3Config = {
|
|
total_accounts: constants.NUM_TEST_ACCOUNTS,
|
|
shouldUseInProcessGanache: true,
|
|
shouldAllowUnlimitedContractSize: true,
|
|
hardfork: 'istanbul',
|
|
gasLimit: 100e6,
|
|
unlocked_accounts: [
|
|
'0x6cc5f688a315f3dc28a7781717a9a798a59fda7b',
|
|
'0x55dc8f21d20d4c6ed3c82916a438a413ca68e335',
|
|
'0x8ed95d1746bf1e4dab58d8ed4724f1ef95b20db0', // ERC20BridgeProxy
|
|
'0xf977814e90da44bfa03b6295a0616a897441acec', // Binance: USDC, TUSD
|
|
],
|
|
};
|
|
|
|
export const provider: Web3ProviderEngine = web3Factory.getRpcProvider(providerConfigs);
|
|
provider.stop();
|
|
const isCoverageEnabled = env.parseBoolean(EnvVars.SolidityCoverage);
|
|
const isProfilerEnabled = env.parseBoolean(EnvVars.SolidityProfiler);
|
|
const isRevertTraceEnabled = env.parseBoolean(EnvVars.SolidityRevertTrace);
|
|
const enabledSubproviderCount = _.filter(
|
|
[isCoverageEnabled, isProfilerEnabled, isRevertTraceEnabled],
|
|
_.identity.bind(_),
|
|
).length;
|
|
if (enabledSubproviderCount > 1) {
|
|
throw new Error(`Only one of coverage, profiler, or revert trace subproviders can be enabled at a time`);
|
|
}
|
|
if (isCoverageEnabled) {
|
|
const coverageSubprovider = coverage.getCoverageSubproviderSingleton();
|
|
prependSubprovider(provider, coverageSubprovider);
|
|
}
|
|
if (isProfilerEnabled) {
|
|
const profilerSubprovider = profiler.getProfilerSubproviderSingleton();
|
|
logUtils.log(
|
|
"By default profilerSubprovider is stopped so that you don't get noise from setup code. Don't forget to start it before the code you want to profile and stop it afterwards",
|
|
);
|
|
profilerSubprovider.stop();
|
|
prependSubprovider(provider, profilerSubprovider);
|
|
}
|
|
if (isRevertTraceEnabled) {
|
|
const revertTraceSubprovider = revertTrace.getRevertTraceSubproviderSingleton();
|
|
prependSubprovider(provider, revertTraceSubprovider);
|
|
}
|
|
|
|
export const web3Wrapper = new Web3Wrapper(provider);
|