You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
846 B
37 lines
846 B
const { promisify } = require('util');
|
|
const ganache = require('ganache-core');
|
|
|
|
const defaultOptions = {
|
|
blockTime: 2,
|
|
network_id: 1337,
|
|
mnemonic:
|
|
'phrase upgrade clock rough situate wedding elder clever doctor stamp excess tent',
|
|
port: 8545,
|
|
vmErrorsOnRPCResponse: false,
|
|
};
|
|
|
|
class Ganache {
|
|
async start(opts) {
|
|
const options = { ...defaultOptions, ...opts };
|
|
const { port } = options;
|
|
this._server = ganache.server(options);
|
|
|
|
const listen = promisify(this._server.listen).bind(this._server);
|
|
const blockchain = await listen(port);
|
|
|
|
return {
|
|
...blockchain,
|
|
port,
|
|
};
|
|
}
|
|
|
|
async quit() {
|
|
if (!this._server) {
|
|
throw new Error('Server not running yet');
|
|
}
|
|
const close = promisify(this._server.close).bind(this._server);
|
|
await close();
|
|
}
|
|
}
|
|
|
|
module.exports = Ganache;
|
|
|