DEV Community

rahuldev-17
rahuldev-17

Posted on

How to deploy a solidity contract with etherjs

Assuming you have installed metamask, and know the seed phrase, here are steps to deploy contract using 'ethers' and 'fs':

  1. compile the contract to .bin and .abi files
  2. load 'ethers' and 'fs'
  3. create a 'signer' object using 'provider', 'Wallet', and 'connect' methods from 'ethers'
  4. create a contract instance from 'ContractFactory' method
  5. use deploy method as promise
  6. Here I have used 'getblock' as web3 provider for example (see https://getblock.io/docs/get-started/auth-with-api-key/). Other alternatives are 'quicknode', 'alchemy' and 'infura'.

We will deploy the code to the BSC testnet, but same procedure will apply for other Ethereum Virtual Machine(EVM) compatible chains, such as : Avalanche Contract Chain (C-Chain), Binance Smart Chain (BSC) mainnet, Fantom Opera and Polygon etc.

nodejs script for contract deployment goes here:

//load 'ethers' and 'fs' ethers = require('ethers'); fs = require('fs'); //Read bin and abi file to object; names of the solcjs-generated files renamed bytecode = fs.readFileSync('storage.bin').toString(); abi = JSON.parse(fs.readFileSync('storage.abi').toString()); //to create 'signer' object;here 'account' const mnemonic = "<see-phrase>" // seed phrase for your Metamask account const provider = new ethers.providers.WebSocketProvider("wss://bsc.getblock.io/testnet/?api_key=<your-api-key>"); const wallet = ethers.Wallet.fromMnemonic(mnemonic); const account = wallet.connect(provider); const myContract = new ethers.ContractFactory(abi, bytecode, account); //Using 'deploy method 'in 'async-await' async function main() { // If your contract requires constructor args, you can specify them here const contract = await myContract.deploy(); console.log(contract.address); console.log(contract.deployTransaction); } main(); 
Enter fullscreen mode Exit fullscreen mode

In the above code, 'account' is the 'signer' of the ethers docs
https://docs.ethers.io/v5/api/contract/contract-factory/#ContractFactory--creating

ethers.ContractFactory( interface , bytecode [ , signer ] ) 
Enter fullscreen mode Exit fullscreen mode

Do not hesitate to ask in discussion if you face any problem in deploying your contract.

Top comments (0)