ethers.js/docs/v5/api/contract/contract-factory
2020-07-03 01:54:56 -04:00
..
index.html Updated docs build. 2020-07-03 01:54:56 -04:00
README.md Updated docs build. 2020-07-03 01:54:56 -04:00

Documentation: html

ContractFactory

Creating Instances

**new **ethers . ContractFactory( interface , bydecode [ , signer ] )

ContractFactory . fromSolidity( compilerOutput [ , signer ] ) => ContractFactory

contractFactory . connect( signer ) => Contract

Properties

contractFactory . interface => Interface

contractFactory . bytecode => string< DataHexString >

contractFactory . signer => Signer

Methods

contractFactory . attach( address ) => Contract

Return an instance of a Contract attched to address. This is the same as using the Contract constructor with address and this the the interface and signerOrProvider passed in when creating the ContractFactory.

contractFactory . getDeployTransaction( ...args ) => UnsignedTransaction

Returns the unsigned transaction which would deploy this Contract with args passed to the Contract's constructor.

contractFactory . deploy( ...args ) => Promise< Contract >

Uses the signer to deploy the Contract with args passed into the constructor and retruns a Contract which is attached to the address where this contract will be deployed once the transaction is mined.

The transaction can be found at contract.deployTransaction, and no interactions should be made until the transaction is mined.

// <hide>
const signer = ethers.LocalSigner();
const ContractFactory = ethers.ContractFactory;
// </hide>

// If your contract constructor requires parameters, the ABI
// must include the constructor
const abi = [
  "constructor(address owner, uint256 initialValue)"
];

const factory = new ContractFactory(abi, bytecode, signer)

const contract = await factory.deploy("ricmoo.eth", 42);

// The address is available immediately, but the contract
// is NOT deployed yet
contract.address
//!

// The transaction that the signer sent to deploy
contract.deployTransaction
//!

// Wait until the transaction is mined
contract.deployTransaction.wait()
//!

// Now the contract is safe to interact with
contract.value()
//!