Skip to content

Instantly share code, notes, and snippets.

@fzeoli fzeoli/buidler.config.js
Last active Feb 7, 2019

Embed
What would you like to do?
const { ContractFactory, ethers, Signer } = require("ethers");
const {JsonRpcProvider} = require("ethers/providers");
function createJsonRpcRequest(method, params) {
return {
id: nextId++,
jsonrpc: "2.0",
method,
params
};
}
class EthersProviderWrapper extends JsonRpcProvider {
constructor(provider) {
super();
}
async send(method, params) {
const result = await this.provider.send(method, params);
// We replicate ethers' behavior.
this.emit("debug", {
action: "send",
request: createJsonRpcRequest(method, params),
response: result,
provider: this
});
return result;
}
}
extendEnvironment((env) => {
const wrapper = new EthersProviderWrapper(env.provider);
env.ethers = {
provider: wrapper,
getContract: async function (name) {
const artifact = await readArtifact(env.config.paths.artifacts, name);
const bytecode = artifact.bytecode;
const signers = await env.ethers.signers();
return new ethers.ContractFactory(artifact.abi, bytecode, signers[0]);
},
signers: async function () {
const accounts = await env.provider.send("eth_accounts");
return accounts.map((account) => wrapper.getSigner(account));
}
};
});
module.exports = {};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.