_section: Provider @ Explain what a provider is... _subsection: Accounts Methods _property: provider.getBalance(address [ , blockTag = latest ]) => Promise<[[bignumber]]> @ @SRC Returns the balance of //address// as of the //blockTag// block height. _property: provider.getCode(address [ , blockTag = latest ]) => Promise> @ @SRC Returns the contract code of //address// as of the //blockTag// block height. If there is no contract currently deployed, the result is ``0x``. _property: provider.getStorageAt(addr, pos [ , blockTag = latest ]) => Promise> @ @SRC Returns the ``Bytes32`` value of the position //pos// at address //addr//, as of the //blockTag//. _property: provider.getTransactionCount(address [ , blockTag = latest ]) => Promise @ @SRC Returns the number of transactions //address// has ever **sent**, as of //blockTag//. This value is required to be the nonce for the next transaction from //address// sent to the network. _heading: Examples _code: @lang // const provider = ethers.getDefaultProvider() // // Get the balance for an account... provider.getBalance("ricmoo.firefly.eth"); //! // Get the code for a contract... provider.getCode("registrar.firefly.eth"); //! // Get the storage value at position 0... provider.getStorageAt("registrar.firefly.eth", 0) //! // Get transaction count of an account... provider.getTransactionCount("ricmoo.firefly.eth"); //! _subsection: Blocks Methods _property: provider.getBlock(block) => Promise<[[provider-block]]> @ @SRC Get the //block// from the network, where the ``result.transactions`` is a list of transaction hashes. _property: provider.getBlockWithTransactions(block) => Promise<[[provider-blocktxs]]> @ @SRC Get the //block// from the network, where the ``result.transactions`` is an Array of [[provider-transactionresponse]] objects. _subsection: Ethereum Naming Service (ENS) Methods TODO: Explain ENS here... _property: provider.lookupAddress(address) => Promise @ @SRC Performs a reverse lookup of the //address// in ENS using the //Reverse Registrar//. If the name does not exist, or the forward lookup does not match, ``null`` is returned. _property: provider.resolveName(name) => Promise> @ @SRC Looks up the address of //name//. If the name is not owned, or does not have a //Resolver// configured, or the //Resolver// does not have an address configured, ``null`` is returned. _heading: Examples _code: @lang // const provider = ethers.getDefaultProvider() // // Reverse lookup of an ENS by address... provider.lookupAddress("0x6fC21092DA55B392b045eD78F4732bff3C580e2c"); //! // Lookup an address of an ENS name... provider.resolveName("ricmoo.firefly.eth"); //! _subsection: Logs Methods _property: provider.getLogs(filter) => Promise> @ @SRC Returns the Array of [[provider-log]] matching the //filter//. Keep in mind that many backends will discard old events, and that requests which are too broad may get dropped as they require too many resources to execute the query. _subsection: Network Status Methods _property: provider.getNetwork() => Promise<[[provider-network]]> @ @SRC Returns the [[provider-network]] this Provider is connected to. _property: provider.getBlockNumber() => Promise @ @SRC Returns the block number (or height) of the most recently mined block. _property: provider.getGasPrice() => Promise<[[bignumber]]> @ @SRC Returns a //best guess// of the [[gas-price]] to use in a transaction. _subsection: Transactions Methods _property: provider.call(transaction [ , blockTag = latest ]) => Promise> @ @SRC Returns the result of executing the //transaction//, using //call//. A call does not require any ether, but cannot change any state. This is useful for calling gettings on Contracts. _property: provider.estimateGas(transaction) => Promise<[[bignumber]]> @ @SRC Returns an estimate of the amount of gas that would be required to submit //transaction// to the network. An estimate may not be accurate since there could be another transaction on the network that was not accounted for, but after being mined affected relevant state. _property: provider.sendTransaction(transaction) => Promise<[[provider-transactionresponse]]> @ @SRC Submits //transaction// to the network to be mined. The //transaction// **must** be signed, and be valid (i.e. the nonce is correct and the account has sufficient balance to pay for the transaction). _property: provider.waitForTransaction(hash [ , confirms = 1 [ , timeout ] ]) => Promise<[TxReceipt](provider-receipt)> @ @SRC Returns a Promise which will not resolve until //transactionHash// is mined. _subsection: Event Emitter Methods Explain events here... _property: provider.on(eventName, listener) => this @ @SRC Add a //listener// to be triggered for each //eventName//. _property: provider.once(eventName, listener) => this @ @SRC Add a //listener// to be triggered for only the next //eventName//, at which time it be removed. _property: provider.emit(eventName, ...args) => boolean @ @SRC Notify all listeners of //eventName//, passing //args// to each listener. This is generally only used internally. _property: provider.off(eventName [ , listener ]) => this @ @SRC Remove a //listener// for //eventName//. If no //listener// is provided, all listeners for //eventName// are removed. _property: provider.removeAllListeners([ eventName ]) => this @ @SRC Remove all the listeners for //eventName//. If no //eventName// is provided, **all** events are removed. _property: provider.listenerCount([ eventName ]) => number @ @SRC Returns the number of listeners for //eventName//. If no //eventName// is provided, the total number of listeners is returned. _property: provider.listeners(eventName) => Array @ @SRC Returns the list of Listeners for //eventName//. _subsection: Inspection Methods _property: Provider.isProvider(object) => boolean @ @SRC Returns true if and only if //object// is a Provider.