diff --git a/apps/remix-ide/src/app/editor/examples.js b/apps/remix-ide/src/app/editor/examples.js index 0cba97b67f..0d63d88209 100644 --- a/apps/remix-ide/src/app/editor/examples.js +++ b/apps/remix-ide/src/app/editor/examples.js @@ -248,9 +248,9 @@ contract BallotTest { } } ` -var deploy = `(async () => { +var deployWithWeb3 = `(async () => { try { - console.log('Running...') + console.log('Running deployWithWeb3 script...') const contractName = 'Storage' // Change this for other contract const constructorArgs = [] // Put constructor args (if any) here for your contract @@ -279,13 +279,44 @@ var deploy = `(async () => { console.log(e.message) } })()` + +var deployWithEthers = `(async function() { + try { + console.log('Running deployWithEthers script...') + + const contractName = 'Storage' // Change this for other contract + const constructorArgs = [] // Put constructor args (if any) here for your contract + + // Note that the script needs the ABI which is generated from the compilation artifact. + // Make sure contract is compiled and artifacts are generated + const artifactsPath = \`browser/contracts/artifacts/\${contractName}.json\` // Change this for different path + + const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath)) + // 'web3Provider' is a remix global variable object + const signer = (new ethers.providers.Web3Provider(web3Provider)).getSigner() + + let factory = new ethers.ContractFactory(metadata.abi, metadata.data.bytecode.object, signer); + + let contract = await factory.deploy(); + + console.log('Contract Address: ', contract.address); + + // The contract is NOT deployed yet; we must wait until it is mined + await contract.deployed() + console.log('Deployment successful.') + } catch (e) { + console.log(e.message) + } +})()` + var readme = `readme` module.exports = { storage: { name: 'contracts/1_Storage.sol', content: storage }, owner: { name: 'contracts/2_Owner.sol', content: owner }, ballot: { name: 'contracts/3_Ballot.sol', content: ballot }, - deploy: { name: 'scripts/deploy.js', content: deploy }, + deployWithWeb3: { name: 'scripts/deployWithWeb3.js', content: deployWithWeb3 }, + deployWithEthers: { name: 'scripts/deployWithEthers.js', content: deployWithEthers }, ballot_test: { name: 'tests/4_Ballot_test.sol', content: ballotTest }, readme: { name: 'README', content: readme } }