See the above code example for creating an Instance which will (in addition to the Contact methods and properties) automatically add the additional properties defined in *abi* to a **Contract** connected to *address* using the *providerOrSigner*.
This is a promise that will resolve to the address the **Contract** object is attached to. If an [Address](/v5/api/utils/address/#address) was provided to the constructor, it will be equal to this; if an ENS name was provided, this will be the resolved address.
If a provider was provided to the constructor, this is that provider. If a signer was provided that had a [Provider](/v5/api/providers/provider/), this is that provider.
Returns a new instance of the **Contract** attached to a new address. This is useful if there are multiple similar or identical copies of a Contract on the network and you wish to interact with each of them.
Returns a new instance of the Contract, but connected to *providerOrSigner*.
By passing in a [Provider](/v5/api/providers/provider/), this will return a downgraded **Contract** which only has read-only access (i.e. constant calls).
Returns the number of decimal places used by this ERC-20 token. This can be used with [parseUnits](/v5/api/utils/display-logic/#utils-parseUnits) when taking input from the user or [formatUnits](utils-formatunits] when displaying the token amounts in the UI.
Transfers *amount* tokens to *target* from the current signer. The return value (a boolean) is inaccessible during a write operation using a transaction. Other techniques (such as events) are required if this value is required. On-chain contracts calling the `transfer` function have access to this result, which is why it is possible.
Returns an [UnsignedTransaction](/v5/api/utils/transactions/#UnsignedTransaction) which could be signed and submitted to the network to transaction *amount* tokens to *target*.
#### Note on Estimating and Static Calling
When you perform a static call, the current state is taken into account as best as Ethereum can determine. There are many cases where this can provide false positives and false negatives. The eventually consistent model of the blockchain also means there are certain consistency modes that cannot be known until an actual transaction is attempted.
Returns a new Filter which can be used to [query](/v5/api/contract/example/#erc20-queryfilter) or to [subscribe/unsubscribe to events](/v5/api/contract/example/#erc20-events).
If *fromAddress* is null or not provided, then any from address matches. If *toAddress* is null or not provided, then any to address matches.