Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
export function provider(): ethers.providers.JsonRpcProvider {
const providerEngine = new Web3ProviderEngine()
providerEngine.addProvider(new FakeGasEstimateSubprovider(5 * 10 ** 6)) // Ganache does a poor job of estimating gas, so just crank it up for testing.
if (process.env.DEBUG) {
debug('Debugging enabled, using sol-trace module...')
const defaultFromAddress = ''
const artifactAdapter = new SolCompilerArtifactAdapter(
path.resolve('dist/artifacts'),
path.resolve('contracts'),
)
const revertTraceSubprovider = new RevertTraceSubprovider(
artifactAdapter,
defaultFromAddress,
true,
)
providerEngine.addProvider(revertTraceSubprovider)
}
providerEngine.addProvider(new GanacheSubprovider({ gasLimit: 8_000_000 }))
providerEngine.start()
return new ethers.providers.Web3Provider(providerEngine)
}
export function provider(): ethers.providers.JsonRpcProvider {
const providerEngine = new Web3ProviderEngine()
providerEngine.addProvider(new FakeGasEstimateSubprovider(5 * 10 ** 6)) // Ganache does a poor job of estimating gas, so just crank it up for testing.
if (process.env.DEBUG) {
debug('Debugging enabled, using sol-trace module...')
const defaultFromAddress = ''
const artifactAdapter = new SolCompilerArtifactAdapter(
path.resolve('dist/artifacts'),
path.resolve('contracts'),
)
const revertTraceSubprovider = new RevertTraceSubprovider(
artifactAdapter,
defaultFromAddress,
true,
)
providerEngine.addProvider(revertTraceSubprovider)
}
providerEngine.addProvider(new GanacheSubprovider({ gasLimit: 8_000_000 }))
providerEngine.start()
return new ethers.providers.Web3Provider(providerEngine)
}
export function provider(): ethers.providers.JsonRpcProvider {
const providerEngine = new Web3ProviderEngine()
providerEngine.addProvider(new FakeGasEstimateSubprovider(5 * 10 ** 6)) // Ganache does a poor job of estimating gas, so just crank it up for testing.
if (process.env.DEBUG) {
debug('Debugging enabled, using sol-trace module...')
const defaultFromAddress = ''
const artifactAdapter = new SolCompilerArtifactAdapter(
path.resolve('dist/artifacts'),
path.resolve('contracts'),
)
const revertTraceSubprovider = new RevertTraceSubprovider(
artifactAdapter,
defaultFromAddress,
true,
)
providerEngine.addProvider(revertTraceSubprovider)
}
switch (process.env.MODE) {
case "profile":
global.profilerSubprovider = new ProfilerSubprovider(artifactAdapter, defaultFromAddress, isVerbose);
global.profilerSubprovider.stop();
provider.addProvider(global.profilerSubprovider);
break;
case "coverage":
global.coverageSubprovider = new CoverageSubprovider(
artifactAdapter,
defaultFromAddress,
coverageSubproviderConfig,
);
provider.addProvider(global.coverageSubprovider);
break;
case "trace":
provider.addProvider(new RevertTraceSubprovider(artifactAdapter, defaultFromAddress, isVerbose));
break;
default:
// Due to some strange error, contracts do not get deployed when using the ganache subprovider
// required by the 0x tools
kovanProvider = createProvider("kovan");
rinkebyProvider = createProvider("rinkeby");
ropstenProvider = createProvider("ropsten");
break;
}
if (process.env.MODE) {
provider.addProvider(new GanacheSubprovider());
provider.start((err) => {
if (err !== undefined) {
console.log(err);
process.exit(1);
console.log(chalk.green('Outputting artifacts to:', artifacts))
await compiler.compileAsync()
const defaultFromAddress = await ethers.Wallet.fromMnemonic(
mnemonic,
path,
).getAddress()
console.log(
chalk.green(
'Default from address derived from mnemonic:',
defaultFromAddress,
),
)
const artifactAdapter = new SolCompilerArtifactAdapter(artifacts, contracts)
const revertTraceSubprovider = new RevertTraceSubprovider(
artifactAdapter,
defaultFromAddress,
true,
)
const providerEngine = new Web3ProviderEngine()
providerEngine.addProvider(new FakeGasEstimateSubprovider(4 * 10 ** 6)) // Ganache does a poor job of estimating gas, so just crank it up for testing.
providerEngine.addProvider(revertTraceSubprovider)
providerEngine.addProvider(
// Start an in-process ganache instance
new GanacheSubprovider({
mnemonic,
hdPath: path,
vmErrorsOnRPCResponse: true,
}),
)
provider: function() {
if (coverageProvider == null) {
console.log('building provider!')
coverageProvider = new ProviderEngine()
const projectRoot = ''
const artifactAdapter = new TruffleArtifactAdapter(projectRoot, SOLC_VERSION)
global.coverageSubprovider = new CoverageSubprovider(artifactAdapter, DEVELOPMENT_FROM, {
isVerbose: true,
ignoreFilesGlobs: [
// Proxies
'**/*Proxy.sol',
// Test contracts
'**/test/*.sol',
// Interfaces
'**/interfaces/*.sol',
],
})
coverageProvider.addProvider(global.coverageSubprovider)
coverageProvider.addProvider(
console.log(chalk.green('Compiling contracts in:', contracts))
console.log(chalk.green('Outputting artifacts to:', artifacts))
await compiler.compileAsync()
const defaultFromAddress = await ethers.Wallet.fromMnemonic(
mnemonic,
path,
).getAddress()
console.log(
chalk.green(
'Default from address derived from mnemonic:',
defaultFromAddress,
),
)
const artifactAdapter = new SolCompilerArtifactAdapter(artifacts, contracts)
const revertTraceSubprovider = new RevertTraceSubprovider(
artifactAdapter,
defaultFromAddress,
true,
)
const providerEngine = new Web3ProviderEngine()
providerEngine.addProvider(new FakeGasEstimateSubprovider(4 * 10 ** 6)) // Ganache does a poor job of estimating gas, so just crank it up for testing.
providerEngine.addProvider(revertTraceSubprovider)
providerEngine.addProvider(
// Start an in-process ganache instance
new GanacheSubprovider({
mnemonic,
hdPath: path,
vmErrorsOnRPCResponse: true,
}),
).getAddress()
console.log(
chalk.green(
'Default from address derived from mnemonic:',
defaultFromAddress,
),
)
const artifactAdapter = new SolCompilerArtifactAdapter(artifacts, contracts)
const revertTraceSubprovider = new RevertTraceSubprovider(
artifactAdapter,
defaultFromAddress,
true,
)
const providerEngine = new Web3ProviderEngine()
providerEngine.addProvider(new FakeGasEstimateSubprovider(4 * 10 ** 6)) // Ganache does a poor job of estimating gas, so just crank it up for testing.
providerEngine.addProvider(revertTraceSubprovider)
providerEngine.addProvider(
// Start an in-process ganache instance
new GanacheSubprovider({
mnemonic,
hdPath: path,
vmErrorsOnRPCResponse: true,
}),
)
providerEngine.start()
const provider = new ethers.providers.Web3Provider(providerEngine)
const accounts = await provider.listAccounts()
console.log(chalk.green(`Accounts from provider: ${accounts}`))
_getRevertTraceSubprovider(): RevertTraceSubprovider {
const defaultFromAddress = devConstants.TESTRPC_FIRST_ADDRESS;
const solCompilerArtifactAdapter = new SolCompilerArtifactAdapter();
const isVerbose = true;
const subprovider = new RevertTraceSubprovider(solCompilerArtifactAdapter, defaultFromAddress, isVerbose);
return subprovider;
},
};
_getRevertTraceSubprovider(): RevertTraceSubprovider {
const defaultFromAddress = devConstants.TESTRPC_FIRST_ADDRESS;
const solCompilerArtifactAdapter = new SolCompilerArtifactAdapter();
const isVerbose = true;
const subprovider = new RevertTraceSubprovider(solCompilerArtifactAdapter, defaultFromAddress, isVerbose);
return subprovider;
},
};