_title: Abstract Provider _section: Provider @ Explain what a provider is... _subsection: Accounts Methods _property: provider.getBalance(address [ , blockTag = "latest" ]) => Promise<[[bignumber]]> Returns the balance of //address// as of the //blockTag// block height. _property: provider.getCode(address [ , blockTag = "latest" ]) => Promise<[[hexstring]]> 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(address, position [ , blockTag = "latest" ]) => Promise<[[hexstring]]> Returns the ``Bytes32`` value of the //position// at //address//, as of the //blockTag//. _property: provider.getTransactionCount(address [ , blockTag = "latest" ]) => Promise 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: example-account.js _subsection: Blocks Methods _property: provider.getBlock(block) => Promise<[[provider-block]]> Get the //block// from the network, where the ``result.transactions`` is a list of transaction hashes. _property: provider.getBlockWithTransactions(block) => Promise<[[provider-blocktxs]]> 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 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.resovleName(name) => Promise 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: example-ens.js _subsection: Logs Methods _property: provider.getLogs(filter) => Promise> 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]]> Returns the [[provider-network]] this Provider is connected to. _property: provider.getBlockNumber() => Promise Returns the block number (or height) of the most recently mined block. _property: provider.getGasPrice() => Promise<[[bignumber]]> Returns a //best guess// of the [[gas-price]] to use in a transaction. _subsection: Transactions Methods _property: provider.call(transaction [ , blockTag = "latest" ]) => Promise<[[hexstring]]> 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]]> 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]]> 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(transactionHash) => Promise<[[provider-transactionreceipt]]> Returns a Promise which will not resolve until //transactionHash// is mined. _subsection: Event Emitter Methods Explain events here... _property: provider.on(eventName, listener) => this Add a //listener// to be triggered for each //eventName//. _property: provider.once(eventName, listener) => this Add a //listener// to be triggered for only the next //eventName//, at which time it be removed. _property: provider.emit(eventName, ...args) => boolean Notify all listeners of //eventName//, passing //args// to each listener. This is generally only used internally. _property: provider.off(eventName [ , listener ]) => this Remove a //listener// for //eventName//. If no //listener// is provided, all listeners for //eventName// are removed. _property: provider.removeAllListeners([ eventName ]) => this Remove all the listeners for //eventName//. If no //eventName// is provided, **all** events are removed. _property: provider.listenerCount([ eventName ]) => number Returns the number of listeners for //eventName//. If no //eventName// is provided, the total number of listeners is returned. _property: provider.listeners(eventName) => Array Returns the list of Listeners for //eventName//. _subsection: Inspection Methods _property: Provider.isProvider(object) => boolean Returns true if and only if //object// is a Provider.