ethers.js/docs.wrm/api/contract/contract-factory.wrm
2020-05-08 03:24:40 -04:00

78 lines
2.3 KiB
Plaintext

_section: ContractFactory @<ContractFactory> @SRC<contracts:class.ContractFactory>
_subsection: Creating Instances @<ContractFactory--creating>
_property: new ethers.ContractFactory(interface, bydecode [ , signer ]) @SRC<contracts:constructor.ContractFactory>
_property: ContractFactory.fromSolidity(compilerOutput [ , signer ]) => [[ContractFactory]]
_property: contractFactory.connect(signer) => [[Contract]]
_subsection: Properties @<ContractFactory--properties>
_property: contractFactory.interface => [[Interface]]
_property: contractFactory.bytecode => string<[[DataHexString]]>
_property: contractFactory.signer => [[Signer]]
_subsection: Methods @<ContractFactory--methods>
_property: contractFactory.attach(address) => [[Contract]]
Return an instance of a [[Contract]] attched to //address//. This is the
same as using the [Contract constructor](contract--creating) with
//address// and this the the //interface// and //signerOrProvider// passed
in when creating the ContractFactory.
_property: contractFactory.getDeployTransaction(...args) => [[UnsignedTransaction]]
Returns the unsigned transaction which would deploy this Contract with //args// passed
to the Contract's constructor.
_property: contractFactory.deploy(...args) => Promise<[[Contract]]>
Uses the signer to deploy the Contract with //args// passed into tgee constructor and
retruns a Contract which is attached to the address where this contract **will** be
deployed once the transction is mined.
The transction can be found at ``contract.deployTransaction``, and no interactions
should be made until the transaction is mined.
_code: Deploying a Contract
// <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 ineract with
contract.value()
//!