Compare commits

..

22 Commits

Author SHA1 Message Date
Richard Moore
f34be4e2c2 Updated dist files. 2020-07-05 00:01:57 -04:00
Richard Moore
84e253f3f9 Prevent negative exponents in BigNumber (#925). 2020-07-04 23:41:05 -04:00
Richard Moore
0fd9aa5cb6 Fixed StaticJsonRpcProvider when auto-detecting network (#901). 2020-07-04 23:06:18 -04:00
Richard Moore
2a73b6ed34 Updated docs for ESM import. 2020-07-04 22:46:47 -04:00
Richard Moore
0838135d4a Fixed typos in docs (#921). 2020-07-04 22:44:27 -04:00
Richard Moore
a144ed8a71 Fixed migration docs (#890). 2020-07-04 21:29:18 -04:00
Richard Moore
c646a0c881 Updated docs build. 2020-07-03 01:54:56 -04:00
Richard Moore
0059b7e468 Fixed documentation typos (#895, #917, #924). 2020-07-03 01:44:17 -04:00
Richard Moore
4838874127 Added WebSocket static method to Alchemy provider and updated Alchemy URLs. 2020-07-03 01:41:32 -04:00
Richard Moore
96cb44025b Updated dist files. 2020-06-29 00:54:30 -04:00
Richard Moore
7fe702d59b Fixed typo in error string. 2020-06-29 00:45:47 -04:00
Richard Moore
9e1434503e Updated elliptic package to address possible malleability issue; which should not affect Ethereum. 2020-06-29 00:40:17 -04:00
Richard Moore
08c74e9a13 Fixed FixedNumber unguarded constructor and added isZero (#898). 2020-06-29 00:38:27 -04:00
Richard Moore
c53864de0a Added StaticJsonRpcProvider for reducing calls to chainId in certain cases (#901). 2020-06-29 00:21:59 -04:00
Richard Moore
8c1ff4c862 Allow getDefaultProvider to accept a URL as a network. 2020-06-29 00:06:31 -04:00
Richard Moore
987b5354cc Make network an optional parameter to WebSocketProvider. 2020-06-29 00:04:45 -04:00
Richard Moore
1a4f7d1b53 Updated docs. 2020-06-17 23:38:59 -04:00
Richard Moore
f9e9347e69 Removed deprecated errors package. 2020-06-17 23:34:53 -04:00
Richard Moore
d00362eb70 Updated badges in docs. 2020-06-15 02:43:17 -04:00
Richard Moore
8ed67a5c19 Fixed typo in docs (#885). 2020-06-15 02:25:46 -04:00
Richard Moore
f99029b49a Merge branch 'master' of github.com:ethers-io/ethers.js 2020-06-13 21:39:55 -04:00
Richard Moore
88e68495b6 Create security policy.
Create security policy.
2020-06-13 17:21:50 -04:00
229 changed files with 2915 additions and 9841 deletions

View File

@@ -3,6 +3,26 @@ Changelog
This change log is managed by `scripts/cmds/update-versions` but may be manually updated.
ethers/v5.0.4 (2020-07-04 23:46)
--------------------------------
- Prevent negative exponents in BigNumber. ([#925](https://github.com/ethers-io/ethers.js/issues/925); [84e253f](https://github.com/ethers-io/ethers.js/commit/84e253f3f9674b52fa2a17b097644e91e6474021))
- Fixed StaticJsonRpcProvider when auto-detecting network. ([#901](https://github.com/ethers-io/ethers.js/issues/901); [0fd9aa5](https://github.com/ethers-io/ethers.js/commit/0fd9aa5cb6f4a3f9c1bea9b4eeee389700db01fa))
- Added WebSocket static method to Alchemy provider and updated Alchemy URLs. ([4838874](https://github.com/ethers-io/ethers.js/commit/48388741272df8569315637f21df7c6519f79e2e))
ethers/v5.0.3 (2020-06-29 00:50)
--------------------------------
- Fixed typo in error string. ([7fe702d](https://github.com/ethers-io/ethers.js/commit/7fe702d59b0b81d2812e407b99a1e98e0e18ba03))
- Updated elliptic package to address possible malleability issue; which should not affect Ethereum. ([9e14345](https://github.com/ethers-io/ethers.js/commit/9e1434503e2a0280e9918c4eadb4d972b062b3b0))
- Fixed FixedNumber unguarded constructor and added isZero. ([#898](https://github.com/ethers-io/ethers.js/issues/898); [08c74e9](https://github.com/ethers-io/ethers.js/commit/08c74e9a132f37ab8cc3fb5dab3bd1fd708ee702))
- Added StaticJsonRpcProvider for reducing calls to chainId in certain cases. ([#901](https://github.com/ethers-io/ethers.js/issues/901); [c53864d](https://github.com/ethers-io/ethers.js/commit/c53864de0af55dd8ec8ca5681e78da380d85250a))
- Allow getDefaultProvider to accept a URL as a network. ([8c1ff4c](https://github.com/ethers-io/ethers.js/commit/8c1ff4c862b8cecb04c98d71910870e0b73867a0))
- Make network an optional parameter to WebSocketProvider. ([987b535](https://github.com/ethers-io/ethers.js/commit/987b5354cc18ed41620c43910ac163f358d91b5d))
- Removed deprecated errors package. ([f9e9347](https://github.com/ethers-io/ethers.js/commit/f9e9347e69133354c3d65c1f47475ddac8a793cf))
- Updated badges in docs. ([d00362e](https://github.com/ethers-io/ethers.js/commit/d00362eb706cfbf9911611e8d934260061cfbbd2))
- Create security policy. Create security policy. ([88e6849](https://github.com/ethers-io/ethers.js/commit/88e68495b67d9268ee66362b08c9b691d03ab58a))
ethers/v5.0.2 (2020-06-13 21:36)
--------------------------------

View File

@@ -1,7 +1,7 @@
The Ethers Project
==================
[![npm (tag)](https://img.shields.io/npm/v/ethers/next)](https://www.npmjs.com/package/ethers/v/next)
[![npm (tag)](https://img.shields.io/npm/v/ethers)](https://www.npmjs.com/package/ethers)
[![Node.js CI](https://github.com/ethers-io/ethers.js/workflows/Node.js%20CI/badge.svg?branch=ethers-v5-beta)](https://github.com/ethers-io/ethers.js/actions?query=workflow%3A%22Node.js+CI%22)
A complete Ethereum wallet implementation and utilities in JavaScript (and TypeScript).
@@ -27,7 +27,7 @@ Keep Updated
------------
For the latest news and advisories, please follow the [@ethersproject](https://twitter.com/ethersproject)
on Twitter (low-traffic, non-marketting, important information only) as well as watch this GitHub project.
on Twitter (low-traffic, non-marketing, important information only) as well as watch this GitHub project.
For the latest changes, see the [CHANGELOG](https://github.com/ethers-io/ethers.js/blob/master/CHANGELOG.md).
@@ -38,13 +38,13 @@ Installing
**node.js**
```
/home/ricmoo/some_project> npm install --save ethers@next
/home/ricmoo/some_project> npm install --save ethers
```
**browser (UMD)**
```
<script src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js" type="text/javasctipt">
<script src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js" type="text/javascript">
</script>
```
@@ -60,13 +60,13 @@ Installing
Documentation
-------------
Browse the documentation online:
Browse the [documentation](https://docs.ethers.io/v5/) online:
- [Getting Started](https://docs.ethers.io/)
- [Full API Documentation](https://docs.ethers.io/)
- [Getting Started](https://docs.ethers.io/v5/getting-started/)
- [Full API Documentation](https://docs.ethers.io/v5/api/)
- [Various Ethereum Articles](https://blog.ricmoo.com/)
Or browser the entire documentations as a [single page](https://docs.ethers.io/single-page/).
Or browse the entire documentation as a [single page](https://docs.ethers.io/single-page/) to make searching easier.
Ancillary Packages
@@ -78,7 +78,7 @@ use-cases, so rather than adding them to the umbrella package, they are added as
ancillary packaged, which can be included by those who need them, while not bloating
everyone else with packages they do not need.
We will keep a list of useful pacakges here.
We will keep a list of useful packages here.
- `@ethersproject/experimental` ([documentation](https://docs.ethers.io))
- `@ethersproject/cli` ([documentation](https://docs.ethers.io))

33
SECURITY.md Normal file
View File

@@ -0,0 +1,33 @@
# Security Policy
## Supported Versions
Maintaining multiple versions of the library is quite time consuming, so
the majority of the effort is focused on the latest major release.
If you do require a version outside of this chart updated with patch fix,
please [contact me](mailto:github@ricmoo.com).
| Version | Supported | Initial Release |
| ------- | ------------------------------------------ | ----------------- |
| 5.0.x | :white_check_mark: | 2020-06-12 |
| 4.0.x | :white_check_mark: (security patches only) | 2018-10-01 |
| 3.0.x | :x: | 2018-03-05 |
| 2.2.x | :x: | 2018-01-11 |
| 2.1.x | :x: | 2017-05-22 |
| 2.0.x | :x: | 2017-04-05 |
| 1.0.x | :x: | 2016-08-23 |
| 0.0.x | :x: | 2016-07-14 |
## Reporting a Vulnerability
If you identify a security vulnerability with this library (or any dependency),
please do not hesitate to contact [github@ricmoo.com](mailto:github@ricmoo.com)
immediately.
I try to respond within the same day and will address any concern as quickly
as possible (including code fixes and publishing to NPM).
Any vulnerability will also be published to this file, along with credits,
pertinent information and links to fixes.

100
admin/cmds/serve-docs.js Normal file
View File

@@ -0,0 +1,100 @@
const fs = require("fs");
const http = require("http");
const path = require("path");
function getMime(filename) {
const comps = filename.split('.');
const ext = comps[comps.length - 1];
switch (ext.toLowerCase()) {
case 'css': return 'text/css';
case 'doctree': return 'application/x-doctree';
case 'eot': return 'application/vnd.ms-fontobject';
case 'gif': return 'image/gif';
case 'html': return 'text/html';
case 'js': return 'application/javascript';
case 'jpg': return 'image/jpeg';
case 'jpeg': return 'image/jpeg';
case 'md': return 'text/markdown';
case 'pickle': return 'application/x-pickle';
case 'png': return 'image/png';
case 'svg': return 'image/svg+xml';
case 'ttf': return 'application/x-font-ttf';
case 'txt': return 'text/plain';
case 'woff': return 'application/font-woff';
}
console.log('NO MIME', filename);
return undefined;
}
function start(root, options) {
if (root == null) { throw new Error("root required"); }
if (options == null) { options = { }; }
if (options.port == null) { options.port = 8000; }
root = path.resolve(root);
const server = http.createServer((req, resp) => {
// Follow redirects in options
if (options.redirects && options.redirects[req.url]) {
resp.writeHead(301, { Location: options.redirects[req.url] });
resp.end();
return;
}
let filename = path.resolve(root, "." + req.url);
// Make sure we aren't crawling out of our sandbox
if (req.url[0] !== "/" || filename.substring(0, filename.length) !== filename) {
resp.writeHead(403);
resp.end();
return;
}
try {
const stat = fs.statSync(filename);
if (stat.isDirectory()) {
// Redirect bare directory to its path (i.e. "/foo" => "/foo/")
if (req.url[req.url.length - 1] !== "/") {
resp.writeHead(301, { Location: req.url + "/" });
resp.end();
return;
}
filename += "/index.html";
}
const content = fs.readFileSync(filename);
resp.writeHead(200, {
"Content-Length": content.length,
"Content-Type": getMime(filename)
});
resp.end(content);
return;
} catch (error) {
if (error.code === "ENOENT") {
resp.writeHead(404, { });
resp.end();
return;
}
resp.writeHead(500, { });
resp.end();
return;
}
});
server.listen(options.port, () => {
console.log(`Listening on port: ${ options.port }`);
});
return server;
}
start(path.resolve(__dirname, "../../docs"), {
redirects: {
"/": "/v5/"
}
});

View File

@@ -36,11 +36,11 @@ to the Contract's constructor.
_property: contractFactory.deploy(...args) => Promise<[[Contract]]> @<ContractFactory-deploy>
Uses the signer to deploy the Contract with //args// passed into tgee constructor and
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 transction is mined.
deployed once the transaction is mined.
The transction can be found at ``contract.deployTransaction``, and no interactions
The transaction can be found at ``contract.deployTransaction``, and no interactions
should be made until the transaction is mined.
_code: Deploying a Contract
@@ -73,6 +73,6 @@ contract.deployTransaction
contract.deployTransaction.wait()
//!
// Now the contract is safe to ineract with
// Now the contract is safe to interact with
contract.value()
//!

View File

@@ -19,7 +19,7 @@ Returns a new instance of the Contract, but connected to
By passing in a [[Provider]], this will return a downgraded
**Contract** which only has read-only access (i.e. constant calls).
By passing in a [[Signer]]. the will return a **Contract** which
By passing in a [[Signer]]. this will return a **Contract** which
will act on behalf of that signer.
@@ -107,7 +107,7 @@ For values that have a simple meaning in JavaScript, the types are fairly
straight forward; strings and booleans are returned as JavaScript strings
and booleans.
For numbers, if the **type** is in the JavaSsript safe range (i.e. less
For numbers, if the **type** is in the JavaScript safe range (i.e. less
than 53 bits, such as an ``int24`` or ``uint48``) a normal JavaScript
number is used. Otherwise a [[BigNumber]] is returned.
@@ -150,7 +150,7 @@ signer.
_heading: Write Methods Analysis @<Contract--check>
There are secveral options to analyze properties and results of a
There are several options to analyze properties and results of a
write method without actually executing it.
_property: contract.estimateGas.METHOD_NAME(...args [ , overrides ]) => Promise<[[BigNumber]]> @<contract-estimateGas>
@@ -162,12 +162,12 @@ Returns an [[UnsignedTransaction]] which represents the transaction
that would need to be signed and submitted to the network to execute
//METHOD_NAME// with //args// and //overrides//.
_property: contract.staticCall.METHOD_NAME(...args [ , overrides ]) => Promise<any> @<contract-staticCall>
_property: contract.callStatic.METHOD_NAME(...args [ , overrides ]) => Promise<any> @<contract-callStatic>
Rather than executing the state-change of a transaction, it is possible
to ask a node to //pretend// that a call is not state-changing and
return the result.
This does not actually chagne any state, but is free. This in some cases
This does not actually change any state, but is free. This in some cases
can be used to determine if a transaction will fail or succeed.
This otherwise functions the same as a [Read-Only Method](Contract--readonly).

View File

@@ -91,7 +91,7 @@ Returns a new instance of the Contract, but connected to
By passing in a [[Provider]], this will return a downgraded
**Contract** which only has read-only access (i.e. constant calls).
By passing in a [[Signer]]. the will return a **Contract** which
By passing in a [[Signer]]. this will return a **Contract** which
will act on behalf of that signer.
_property: erc20.deployed() => Promise<Contract>

View File

@@ -2,10 +2,10 @@ _section: Contract Interaction @<contracts>
A **Contract** object is an abstraction of a contract (EVM bytecode)
deployed on the Ethereum network. It allows for a simple way to
serialize calls and transaxtions to an on-chain contract and
serialize calls and transactions to an on-chain contract and
deserialize their results and emitted logs.
A **ContractFactory** is an abstraction a contract's //bytecode//
A **ContractFactory** is an abstraction of a contract's //bytecode//
and facilitates deploying a contract.
_toc:

View File

@@ -82,7 +82,7 @@ _subsection: InfuraProvider @<InfuraProvider> @INHERIT<[[UrlJsonRpcProvider]]> @
The **InfuraProvider** is backed by the popular [INFURA](link-infura)
Ethereum service.
_property: new ethers.providers.InfuraProvider([ network = "homestead", [ apiKey ] ])
_property: new ethers.providers.InfuraProvider([ network = "homestead", [ apiKey ] ]) @SRC<providers>
Create a new **InfuraProvider** connected to //network// with
the optional //apiKey//.
@@ -96,6 +96,12 @@ specify a [Project Secret](link-infura-secret) which can be used
on non-public sources (like on a server) to further secure your
API access and quotas.
_property: InfuraProvider.getWebSocketProvider([ network [ , apiKey ] ]) => [[WebSocketProvider]] @<InfuraProvider-getWebSocketProvider> @SRC<providers:InfuraProvider.getWebSocketProvider>
Create a new [[WebSocketProvider]] using the INFURA web-socket endpoint
to connect to //network// with the optional //apiKey//.
The //network// and //apiKey// are specified the same as [the constructor](InfuraProvider).
_note: Note: Default API keys
If no //apiKey// is provided, a shared API key will be used,
which may result in reduced performance and throttled requests.
@@ -136,6 +142,14 @@ provider = new InfuraProvider("homestead", {
projectSecret: projectSecret
});
// Connect to the INFURA WebSocket endpoints with a WebSocketProvider
provider = InfuraProvider.getWebSocketProvider()
// <hide>
provider._websocket.onopen = function(){
provider._websocket.close();
};
// </hide>
_subsection: AlchemyProvider @<AlchemyProvider> @inherit<[[UrlJsonRpcProvider]]> @src<providers:class.AlchemyProvider>

View File

@@ -55,16 +55,16 @@ _note: Note: API Keys
It is highly recommended for production services that to acquire
and specify an API Key for each sercice.
The deafult API Keys used by ethers are shared across all users,
The default API Keys used by ethers are shared across all users,
so services may throttle all services that are using the default
API Keys during periods of load without realizing it.
Many services also have monitoring and usage metrics, which are
only available if an API Key is specifie. This allows tracking
only available if an API Key is specified. This allows tracking
how many requests are being sent and which methods are being
used the most.
Some services also provide additional paid features, whichare only
Some services also provide additional paid features, which are only
available when specifying an API Key.

View File

@@ -14,7 +14,7 @@ querying the node.
_note: Note: Connecting to a Local Node
Each node implementation is slightly different and may require specific
command-line flags, configuration or settings in their UI to enable
JSON-RPC, unlock accounrs or expose specific APIs. Please consult
JSON-RPC, unlock accounts or expose specific APIs. Please consult
their documentation.
_property: jsonRpcProvider.getSigner([ addressOrIndex ]) => [[JsonRpcSigner]] @<JsonRpcProvider-getSigner> @SRC<providers/json-rpc-provider>
@@ -42,12 +42,12 @@ _property: signer.provider => [[JsonRpcProvider]]
The provider this signer was established from.
_property: signer.connectUnchecked() => [[UncheckedJsonRpcSigner]] @<JsonRpcSigner-connectUnchecked> @SRC<providers>
Returns a new Signer object which does not perform addtional checks when
Returns a new Signer object which does not perform additional checks when
sending a transaction. See [getUncheckedSigner](JsonRpcProvider-getUncheckedSigner) for more details.
_property: signer.sendUncheckedTransaction(transaction) => Promise<string<[[DataHexString]]\<32>\>> @<JsonRpcSigner-sendUncheckedTransaction> @SRC<providers>
Sends the //transaction// and returns a Promise which resolves to the
opacque transaction hash.
opaque transaction hash.
_property: signer.unlock(password) => Promise<boolean> @<JsonRpcSigner-unlock> @SRC<providers>
Request the node unlock the account (if locked) using //password//.
@@ -60,7 +60,7 @@ of a transaction before returning it. For example, the gas price and gas limit
may be adjusted by the node or the nonce automatically included, in which case
the opaque transaction hash has discarded this.
To remedy this, the [[JsonRpcSigner]] immeidately queries the provider for
To remedy this, the [[JsonRpcSigner]] immediately queries the provider for
the details using the returned transaction hash to populate the [[providers-TransactionResponse]]
object.
@@ -85,7 +85,7 @@ The [jsonRpcProvider.send](JsonRpcProvider-send) method can be used to access th
- [All JSON-RPC methods](link-json-rpc) (including the less common methods) which most
Ethereum Nodes support.
- [Parity's Trace Module](link-parity-trace) can be used to trace and debug EVM
execcution of a transaction (requires custom configuration)
execution of a transaction (requires custom configuration)
- [Geth's Debug Module](link-geth-debug) can be used to debug transactions and
internal cache state, etc.
- [Additional Geth Methods](link-geth-rpc)

View File

@@ -93,7 +93,7 @@ The URL to use for the JsonRpcProvider instance.
_subsection: Web3Provider @<Web3Provider> @INHERIT<[[JsonRpcProvider]]>
_subsection: Web3Provider @<Web3Provider> @INHERIT<[[JsonRpcProvider]]> @SRC<providers:class.Web3Provider>
The Web3Provider is meant to ease moving from a [web3.js based](link-web3)
application to ethers by wraping an existing Web3-compatible (such as a
@@ -144,3 +144,20 @@ This is identical to ``sendAsync``. Historically, this used a synchronous
web request, but no current browsers support this, so its use this way
was deprecated quite a long time ago
_subsection: WebSocketProvider @<WebSocketProvider> @INHERIT<[[JsonRpcProvider]]> @SRC<providers:class.WebSocketProvider>
The **WebSocketProvider** connects to a JSON-RPC WebSocket-compatible backend
which allows for a persistent connection, multiplexing requests and pub-sub
events for a more immediate event dispatching.
The WebSocket API is newer, and if running your own infrastructure, note that
WebSockets are much more intensive on your server resourses, as they must manage
and maintain the state for each client. For this reason, many services may also
charge additional fees for using their WebSocket endpoints.
_property: new ethers.provider.WebSockerProvider([ url [ , network ] ])
Returns a new [[WebSocketProvider]] connected to //url// as the //network//.
If //url// is unspecified, the default ``"ws:/\/localhost:8546"`` will be used.
If //network// is unspecified, it will be queried from the network.

View File

@@ -60,7 +60,7 @@ provider.getBlockWithTransactions(100004)
_subsection: Ethereum Naming Service (ENS) Methods @<Provider--ens-methods>
The [Ethereum Naming Service](link-ens) (ENS) allows a short and
easy-to-remember ENS Name to be atached to any set of keys
easy-to-remember ENS Name to be attached to any set of keys
and values.
One of the most common uses for this is to use a simple name to

View File

@@ -47,7 +47,7 @@ _property: signer.getBalance([ blockTag = "latest" ]) => Promise<[[BigNumber]]>
Returns the balance of this wallet at //blockTag//.
_property: signer.getChainId() => Promise<number> @<Signer-getChainId> @SRC<abstract-signer>
Returns ths chain ID this wallet is connected to.
Returns the chain ID this wallet is connected to.
_property: signer.getGasPrice() => Promise<[[BigNumber]]> @<Signer-getGasPrice> @SRC<abstract-signer>
Returns the current gas price.
@@ -121,7 +121,7 @@ properties such as the //provider// and //address// static throughout the
life-cycle of the Signer helps prevent serious issues and many other classes
and libraries make this assumption.
A sub-class **must** extend Sigenr and **must** call ``super()``.
A sub-class **must** extend Signer and **must** call ``super()``.
_property: signer.checkTransaction(transactionRequest) => [[providers-TransactionRequest]] @<Signer-checkTransaction> @SRC<abstract-signer>
This is generally not required to be overridden, but may needed to provide
@@ -197,7 +197,7 @@ The provider this wallet is connected to, which will ge used for any [[Signer--b
methods. This can be null.
_note: Note
A **Wallet** instance is immuatable, so if you wish to change the Provider, you
A **Wallet** instance is immutable, so if you wish to change the Provider, you
may use the [connect](Signer-connect) method to create a new instance connected
to the desired provider.

View File

@@ -12,12 +12,12 @@ The **JSON ABI Format** is the format that is
A JSON serialized object is always a string, which represents an Array
of Objects, where each Object has various properties describing the [[Fragment]] of the ABI.
The deserialied JSON string (which is a normal JavaScript Object) may
The deserialized JSON string (which is a normal JavaScript Object) may
also be passed into any function which accepts a JSON String ABI.
_heading: Humanb-Readable ABI
The Human-Readable ABI was
The Human-Readable ABI was @TODO
[article](link-ricmoo-humanreadableabi)

View File

@@ -45,7 +45,7 @@ _property: ethers.utils.getAddress(address) => string<[[address]]> @<utils-getA
Returns //address// as a Checksum Address.
If //address// is an invalid 40-nibble [[HexString]] or if it contains mixed case and
the checksum is invalid, an InvalidArgument Error is throw.
the checksum is invalid, an InvalidArgument Error is thrown.
The value of //address// may be any supported address format.

View File

@@ -153,7 +153,7 @@ Returns true if and only if the value of //BigNumber// **>** //otherValue//.
_property: BigNumber.gte(otherValue) => boolean @SRC<bignumber>
Returns true if and only if the value of //BigNumber// **&ge;** //otherValue//.
_property: BigNumber.isZero() => boolean @SRC<bignumber>
_property: BigNumber.isZero() => boolean @SRC<bignumber:BigNumber.isZero>
Returns true if and only if the value of //BigNumber// is zero.

View File

@@ -49,6 +49,12 @@ _property: fixednumber.round([ decimals = 0 ]) => [[FixedNumber]] @SRC<bignumbe
Returns a new FixedNumber with the value of //fixedvalue// rounded to //decimals//.
_heading: Comparison and Equivalence
_property: FixedNumber.isZero() => boolean @SRC<bignumber/fixednumber:FixedNumber.isZero>
Returns true if and only if the value of //FixedNumber// is zero.
_heading: Conversion
_property: fixednumber.toFormat(format) => [[FixedNumber]] @SRC<bignumber/fixednumber>

View File

@@ -27,7 +27,7 @@ If a topic-set is a single topic, a log topic in that position must match
**that topic**.
If a topic-set is an array of topics, a log topic in that position must
match any **one** of topics (i.e. the topic in thie position are ``OR``-ed).
match any **one** of the topics (i.e. the topic in this position are ``OR``-ed).
_table: Example Log Matching @style<full>

View File

@@ -12,7 +12,7 @@ much stronger security.
The algorithm usually used for this process is [scrypt](link-wiki-scrypt),
which is a memory and CPU intensive algorithm which computes
a key (fixed-length psudo-random series of bytes) for a given
a key (fixed-length pseudo-random series of bytes) for a given
password.
@@ -50,7 +50,7 @@ progress callback which will be periodically called with a number between
In general a progress bar makes the experience feel faster, as well as
more comfortable since there is a clear indication how much (relative) time
is remaining. Additionally, using language like //"decrpyting..."// in
is remaining. Additionally, using language like //"decrypting..."// in
a progress bar makes a user feel like there time is not being //needlessly//
wasted.

View File

@@ -54,7 +54,7 @@ function getDefinitions(source) {
const getSourceUrl = (function(path, include, exclude) {
console.log("Scanning TypeScript Sources...");
const Link = "https://github.com/ethers-io/ethers.js/blob/ethers-v5-beta/packages$FILENAME#L$LINE";
const Link = "https://github.com/ethers-io/ethers.js/blob/master/packages$FILENAME#L$LINE";
const Root = resolve(__dirname, path);
const readdir = function(path) {
@@ -151,16 +151,16 @@ function codeContextify(context) {
module.exports = {
title: "ethers",
subtitle: "v5.0-beta",
subtitle: "v5.0",
logo: "logo.svg",
prefix: "/v5",
link: "https:/\/docs-beta.ethers.io",
link: "https:/\/docs.ethers.io",
copyright: "The content of this site is licensed under the [Creative Commons License](https:/\/choosealicense.com/licenses/cc-by-4.0/). Generated on &$now;.",
markdown: {
"banner": "-----\n\nDocumentation: [html](https://docs-beta.ethers.io/)\n\n-----\n\n"
"banner": "-----\n\nDocumentation: [html](https://docs.ethers.io/)\n\n-----\n\n"
},
codeContextify: codeContextify,
@@ -217,7 +217,7 @@ module.exports = {
"link-ethers-docs": "https:/\/docs.ethers.io/",
"link-ethers-js": "https:/\/cdn.ethers.io/lib/ethers-5.0.esm.min.js",
"link-ethers-npm": "https:/\/www.npmjs.com/search?q=%40ethersproject%2F",
"link-ethers-asm-grammar": "https:/\/github.com/ethers-io/ethers.js/blob/ethers-v5-beta/packages/asm/grammar.jison",
"link-ethers-asm-grammar": "https:/\/github.com/ethers-io/ethers.js/blob/master/packages/asm/grammar.jison",
"link-eip-155": { name: "EIP-155", url: "https:/\/eips.ethereum.org/EIPS/eip-155" },
"link-eip-191": { name: "EIP-191", url: "https:/\/eips.ethereum.org/EIPS/eip-191" },

View File

@@ -1,4 +1,4 @@
_section: Contributing and Hacking
_section: Contributing and Hacking @<contributing>
The ethers.js library is something that I've written out of necessity,
and has grown somewhat organically over time.
@@ -25,14 +25,19 @@ have a public discussion and figure out the best way to address to problem/featu
**:)**
_subsection: Building
_subsection: Building @<contributing--building>
If you wish to modify the source code, there are a few steps involved in setting up
your environment.
If you wish to modify the source code, there are a few steps involved in
setting up your environment.
_code: Preparing the Package @lang<shell>
Since the library uses a monorepo, you must install an initial required
set of libraries, which can then be used to install the remaining libraries
used within each package, as well as link all the packages within the repo
with each other.
# Clone the REPO
_code: Preparing for builds @lang<shell>
# Clone the repository
/home/ricmoo> git clone git@github.com:ethers-io/ethers.js.git
/home/ricmoo> cd ethers.js
@@ -44,6 +49,10 @@ _code: Preparing the Package @lang<shell>
/home/ricmoo/ethers.js> npm run bootstrap
_subsection: Making your changes @<contributing--updating>
TODO: Add more information here.
_code: Watching and Building @lang<shell>
# Begin watching the files and re-building whenever they change
@@ -72,3 +81,65 @@ _code: Preparing the Distribution @lang<shell>
/home/ricmoo/ethers.js> npm run update-version
_subsection: Documentation @<contributing--documentation>
The documents are generated using [Flatworm](flatworm) documentation
generation tool, which was written for the purpose of writing the documentation
for ethers.
Style Guide (this section will have much more coming):
- Try to keep lines no longer than //around// 80 characters
- Avoid inline links in the source; use the ``externalLinks`` field in the config.js
- Prefix external links with ``link-``
- Changing an anchor name must be well justified, as it will break all existing links
to that section; flatworm will support symblinks in the future
- In general, I aim for xonsistency; look to similar situations throughout the documentation
_heading: Building
To build the documentation, you should first follow the
[above steps](contributing--building) to build the ethers library.
Building the docs will generate several types of output:
- A full set of HTML pages, linking across each other
- A single one-page HTML page with all pages linking to local anchors
- A full set of README.md pages organized to be browsable and linkable in GitHub
- A metadata dump for tool ingestion (still needs more work)
- (@TODO; only half done) The documentation as a LaTeX and generated PDF
_code: Building the Documentations @lang<shell>
/home/ricmoo/ethers.js> npm run build-docs
_heading: Evaluation
When building the documentation, all code samples are run through a JavaScript
VM to ensure there are no typos in the example code, as well the exact output
of results are injected into the output, so there is no need to keep the results
and code in-sync.
However, this can be a bit of a headache when making many small changes, so to
build the documentation faster, you can skip the evaluation step, which will
inject the code directly.
_code: Build docs skipping evaluation @lang<shell>
/home/ricmoo/ethers.js> npm run build-docs -- --skip-eval
_heading: Previewing Changes
To preview the changes locally, you can use any standard web server and run
from the ``/docs/`` folder, or use the built-in web server.
The same caveats as normal web development apply, such flushing browser
caches after changing (and re-building) the docs.
_code: Running a webserver @lang<shell>
/home/ricmoo/ethers.js> npm run serve-docs

View File

@@ -1,4 +1,4 @@
_section: Flatworm Docs
_section: Flatworm Docs @<flatworm>
The //Flatworm Docs// rendering engine is designed to be **very**
simple, but provide enough formatting necessary for documenting
@@ -102,7 +102,7 @@ _definition: **_table:** //FOOTER//
Creates a [Table](flatworm--table) structured according to the body.
Each cell support and variables support markdown.
Each cell contents supports markdown and variables supports markdown.
**Extensions:** [@style](flatworm--ext-style)
@@ -173,7 +173,8 @@ This is placed in an orange box.
\_null:
This breaks out of a directive. For example, to end a
This breaks out of a directive. For example, to end
a ``_note:`` or ``_code:``.
_subsection: Markdown @<flatworm-markdown>

View File

@@ -38,8 +38,10 @@ Web Applications from our CDN.
_code: ES6 in the Browser @lang<html>
<script src="https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"
type="application/javascipt"></script>
<script type="module">
import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js";
// Your code here...
</script>
_code: ES3 (UMD) in the Browser @lang<html>
@@ -78,7 +80,7 @@ Ethereum is to use [[link-metamask]], which is a browser extension
that provides:
- A connection to the Ethereum network (a [[Provider]])
- Holds your private key and can sign thing (a [[Signer]])
- Holds your private key and can sign things (a [[Signer]])
_code: Connecting to Metamask @lang<script>

View File

@@ -99,14 +99,14 @@ interface.functions.transfer.encode(to, amount)
interface.functions.transfer.decode(callData)
// v5
interface.encodeData("transfer", [ to, amount ])
interface.decodeResult("transfer", data)
interface.encodeFunctionData("transfer", [ to, amount ])
interface.decodeFunctionResult("transfer", data)
// Or you can use any compatible signature or Fragment objects.
// Notice that signature normalization is performed for you,
// e.g. "uint" and "uint256" will be automatically converted
interface.encodeData("transfer(address,uint)", [ to, amount ])
interface.decodeResult("transfer(address to, uint256 amount)", data)
interface.encodeFunctionData("transfer(address,uint)", [ to, amount ])
interface.decodeFunctionResult("transfer(address to, uint256 amount)", data)
_heading: Events
@@ -119,7 +119,7 @@ interface.events.Transfer.decode(data, topics)
// v5
interface.encodeFilterTopics("Transfer", values)
interface.encodeEventLog("Transfer", data, topics)
interface.decodeEventLog("Transfer", data, topics)
_heading: Inspection

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -80,6 +80,7 @@ Developer Documentation
* [IpcProvider](api/providers/other)
* [UrlJsonRpcProvider](api/providers/other)
* [Web3Provider](api/providers/other)
* [WebSocketProvider](api/providers/other)
* [Types](api/providers/types)
* [BlockTag](api/providers/types)
* [Network](api/providers/types)
@@ -235,6 +236,8 @@ Developer Documentation
* [Testing](testing)
* [Contributing and Hacking](contributing)
* [Building](contributing)
* [Making your changes](contributing)
* [Documentation](contributing)
* [Flatworm Docs](documentation)
* [Fragments](documentation)
* [Markdown](documentation)

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -54,6 +54,7 @@ Application Programming Interface
* [IpcProvider](providers/other)
* [UrlJsonRpcProvider](providers/other)
* [Web3Provider](providers/other)
* [WebSocketProvider](providers/other)
* [Types](providers/types)
* [BlockTag](providers/types)
* [Network](providers/types)

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -52,9 +52,9 @@ Returns the unsigned transaction which would deploy this Contract with *args* pa
#### *contractFactory* . **deploy**( ...args ) => *Promise< [Contract](/v5/api/contract/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.
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 transction can be found at `contract.deployTransaction`, and no interactions should be made until the transaction is mined.
The transaction can be found at `contract.deployTransaction`, and no interactions should be made until the transaction is mined.
```
@@ -86,7 +86,7 @@ contract.deployTransaction
contract.deployTransaction.wait()
//!
// Now the contract is safe to ineract with
// Now the contract is safe to interact with
contract.value()
//!
```

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -25,7 +25,7 @@ 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).
By passing in a [Signer](/v5/api/signer/#Signer). the will return a **Contract** which will act on behalf of that signer.
By passing in a [Signer](/v5/api/signer/#Signer). this will return a **Contract** which will act on behalf of that signer.
Properties
@@ -121,7 +121,7 @@ The type of the result depends on the ABI.
For values that have a simple meaning in JavaScript, the types are fairly straight forward; strings and booleans are returned as JavaScript strings and booleans.
For numbers, if the **type** is in the JavaSsript safe range (i.e. less than 53 bits, such as an `int24` or `uint48`) a normal JavaScript number is used. Otherwise a [BigNumber](/v5/api/utils/bignumber/) is returned.
For numbers, if the **type** is in the JavaScript safe range (i.e. less than 53 bits, such as an `int24` or `uint48`) a normal JavaScript number is used. Otherwise a [BigNumber](/v5/api/utils/bignumber/) is returned.
For bytes (both fixed length and dynamic), a [DataHexString](/v5/api/utils/bytes/#DataHexString) is returned.
@@ -156,11 +156,11 @@ Returns the estimate units of gas that would be required to execute the *METHOD_
Returns an [UnsignedTransaction](/v5/api/utils/transactions/#UnsignedTransaction) which represents the transaction that would need to be signed and submitted to the network to execute *METHOD_NAME* with *args* and *overrides*.
#### *contract* . *staticCall* . **METHOD_NAME**( ...args [ , overrides ] ) => *Promise< any >*
#### *contract* . *callStatic* . **METHOD_NAME**( ...args [ , overrides ] ) => *Promise< any >*
Rather than executing the state-change of a transaction, it is possible to ask a node to *pretend* that a call is not state-changing and return the result.
This does not actually chagne any state, but is free. This in some cases can be used to determine if a transaction will fail or succeed.
This does not actually change any state, but is free. This in some cases can be used to determine if a transaction will fail or succeed.
This otherwise functions the same as a [Read-Only Method](/v5/api/contract/contract/#Contract--readonly).

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -102,7 +102,7 @@ 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).
By passing in a [Signer](/v5/api/signer/#Signer). the will return a **Contract** which will act on behalf of that signer.
By passing in a [Signer](/v5/api/signer/#Signer). this will return a **Contract** which will act on behalf of that signer.
#### *erc20* . **deployed**( ) => *Promise< Contract >*

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -25,11 +25,11 @@ Option Properties
It is highly recommended for production services that to acquire and specify an API Key for each sercice.
The deafult API Keys used by ethers are shared across all users, so services may throttle all services that are using the default API Keys during periods of load without realizing it.
The default API Keys used by ethers are shared across all users, so services may throttle all services that are using the default API Keys during periods of load without realizing it.
Many services also have monitoring and usage metrics, which are only available if an API Key is specifie. This allows tracking how many requests are being sent and which methods are being used the most.
Many services also have monitoring and usage metrics, which are only available if an API Key is specified. This allows tracking how many requests are being sent and which methods are being used the most.
Some services also provide additional paid features, whichare only available when specifying an API Key.
Some services also provide additional paid features, which are only available when specifying an API Key.
Provider Documentation
@@ -58,6 +58,7 @@ Provider Documentation
* [IpcProvider](other)
* [UrlJsonRpcProvider](other)
* [Web3Provider](other)
* [WebSocketProvider](other)
* [Types](types)
* [BlockTag](types)
* [Network](types)

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -76,6 +76,13 @@ The *network* may be specified as **string** for a common network name, a **numb
The *apiKey* can be a **string** Project ID or an **object** with the properties `projectId` and `projectSecret` to specify a [Project Secret](https://infura.io/docs/gettingStarted/authentication) which can be used on non-public sources (like on a server) to further secure your API access and quotas.
#### *InfuraProvider* . **getWebSocketProvider**( [ network [ , apiKey ] ] ) => *[WebSocketProvider](/v5/api/providers/other/#WebSocketProvider)*
Create a new [WebSocketProvider](/v5/api/providers/other/#WebSocketProvider) using the INFURA web-socket endpoint to connect to *network* with the optional *apiKey*.
The *network* and *apiKey* are specified the same as [the constructor](/v5/api/providers/api-providers/#InfuraProvider).
#### Note: Default API keys
If no *apiKey* is provided, a shared API key will be used, which may result in reduced performance and throttled requests.
@@ -111,6 +118,9 @@ provider = new InfuraProvider("homestead", {
projectId: projectId,
projectSecret: projectSecret
});
// Connect to the INFURA WebSocket endpoints with a WebSocketProvider
provider = InfuraProvider.getWebSocketProvider()
```
AlchemyProvider

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -14,7 +14,7 @@ Connect to a JSON-RPC API located at *url* using the *aNetworkish* network. If *
#### Note: Connecting to a Local Node
Each node implementation is slightly different and may require specific command-line flags, configuration or settings in their UI to enable JSON-RPC, unlock accounrs or expose specific APIs. Please consult their documentation.
Each node implementation is slightly different and may require specific command-line flags, configuration or settings in their UI to enable JSON-RPC, unlock accounts or expose specific APIs. Please consult their documentation.
#### *jsonRpcProvider* . **getSigner**( [ addressOrIndex ] ) => *[JsonRpcSigner](/v5/api/providers/jsonrpc-provider/#JsonRpcSigner)*
@@ -48,12 +48,12 @@ The provider this signer was established from.
#### *signer* . **connectUnchecked**( ) => *[JsonRpcUncheckedSigner](/v5/api/providers/jsonrpc-provider/#UncheckedJsonRpcSigner)*
Returns a new Signer object which does not perform addtional checks when sending a transaction. See [getUncheckedSigner](/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-getUncheckedSigner) for more details.
Returns a new Signer object which does not perform additional checks when sending a transaction. See [getUncheckedSigner](/v5/api/providers/jsonrpc-provider/#JsonRpcProvider-getUncheckedSigner) for more details.
#### *signer* . **sendUncheckedTransaction**( transaction ) => *Promise< string< [DataHexString](/v5/api/utils/bytes/#DataHexString)< 32 > > >*
Sends the *transaction* and returns a Promise which resolves to the opacque transaction hash.
Sends the *transaction* and returns a Promise which resolves to the opaque transaction hash.
#### *signer* . **unlock**( password ) => *Promise< boolean >*

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -120,3 +120,13 @@ The *callback* should use the error-first calling semantics, so `(error, result)
This is identical to `sendAsync`. Historically, this used a synchronous web request, but no current browsers support this, so its use this way was deprecated quite a long time ago
WebSocketProvider
-----------------
#### **new ***ethers* . *provider* . **WebSockerProvider**( [ url [ , network ] ] )
Returns a new [WebSocketProvider](/v5/api/providers/other/#WebSocketProvider) connected to *url* as the *network*.
If *url* is unspecified, the default `"ws://localhost:8546"` will be used. If *network* is unspecified, it will be queried from the network.

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -33,7 +33,7 @@ Returns the number of transactions *address* has ever **sent**, as of *blockTag*
```javascript
// Get the balance for an account...
provider.getBalance("ricmoo.firefly.eth");
// { Promise: { BigNumber: "955864037352077165" } }
// { Promise: { BigNumber: "1585454034436018765" } }
// Get the code for a contract...
provider.getCode("registrar.firefly.eth");
@@ -45,7 +45,7 @@ provider.getStorageAt("registrar.firefly.eth", 0)
// Get transaction count of an account...
provider.getTransactionCount("ricmoo.firefly.eth");
// { Promise: 668 }
// { Promise: 670 }
```
Blocks Methods
@@ -96,7 +96,7 @@ provider.getBlockWithTransactions(100004)
// blockHash: '0xf93283571ae16dcecbe1816adc126954a739350cd1523a1559eabeae155fbb63',
// blockNumber: 100004,
// chainId: 0,
// confirmations: 10153796,
// confirmations: 10284646,
// creates: null,
// data: '0x',
// from: '0xcf00A85f3826941e7A25BFcF9Aac575d40410852',
@@ -177,16 +177,16 @@ provider.getNetwork()
// The current block number
provider.getBlockNumber()
// { Promise: 10253799 }
// { Promise: 10384649 }
// Get the current suggested gas price (in wei)...
gasPrice = await provider.getGasPrice()
// { BigNumber: "19470000000" }
// { BigNumber: "41000000000" }
// ...often this gas price is easier to understand or
// display to the user in gwei (giga-wei, or 1e9 wei)
utils.formatUnits(gasPrice, "gwei")
// '19.47'
// '41.0'
```
Transactions Methods

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -38,7 +38,7 @@ Returns the balance of this wallet at *blockTag*.
#### *signer* . **getChainId**( ) => *Promise< number >*
Returns ths chain ID this wallet is connected to.
Returns the chain ID this wallet is connected to.
#### *signer* . **getGasPrice**( ) => *Promise< [BigNumber](/v5/api/utils/bignumber/) >*
@@ -177,7 +177,7 @@ The provider this wallet is connected to, which will ge used for any [Blockchain
#### Note
A **Wallet** instance is immuatable, so if you wish to change the Provider, you may use the [connect](/v5/api/signer/#Signer-connect) method to create a new instance connected to the desired provider.
A **Wallet** instance is immutable, so if you wish to change the Provider, you may use the [connect](/v5/api/signer/#Signer-connect) method to create a new instance connected to the desired provider.
#### *wallet* . **publicKey** => *string< [DataHexString](/v5/api/utils/bytes/#DataHexString)< 65 > >*
@@ -285,7 +285,7 @@ contract = new ethers.Contract("dai.tokens.ethers.eth", abi, signer)
// Get the number of tokens for this account
tokens = await contract.balanceOf(signer.getAddress())
// { BigNumber: "7712595125722568213383" }
// { BigNumber: "8814410125722568213383" }
//
// Pre-flight (check for revert) on DAI from the signer
@@ -302,7 +302,7 @@ contract.callStatic.transfer("donations.ethers.eth", tokens)
// This will fail since it is greater than the token balance
contract.callStatic.transfer("donations.ethers.eth", tokens.add(1))
// Error: call revert exception (method="transfer(address,uint256)", errorSignature="Error(string)", errorArgs=["Dai/insufficient-balance"], reason="Dai/insufficient-balance", code=CALL_EXCEPTION, version=abi/5.0.0-beta.156)
// Error: call revert exception (method="transfer(address,uint256)", errorSignature="Error(string)", errorArgs=["Dai/insufficient-balance"], reason="Dai/insufficient-balance", code=CALL_EXCEPTION, version=abi/5.0.1)
```
ExternallyOwnedAccount

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -21,7 +21,7 @@ Converting and Verifying
Returns *address* as a Checksum Address.
If *address* is an invalid 40-nibble [HexString](/v5/api/utils/bytes/#HexString) or if it contains mixed case and the checksum is invalid, an InvalidArgument Error is throw.
If *address* is an invalid 40-nibble [HexString](/v5/api/utils/bytes/#HexString) or if it contains mixed case and the checksum is invalid, an InvalidArgument Error is thrown.
The value of *address* may be any supported address format.

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -85,7 +85,7 @@ BigNumber.from(42n)
// Numbers outside the safe range fail:
BigNumber.from(Number.MAX_SAFE_INTEGER);
// Error: overflow (fault="overflow", operation="BigNumber.from", value=9007199254740991, code=NUMERIC_FAULT, version=bignumber/5.0.0-beta.139)
// Error: overflow (fault="overflow", operation="BigNumber.from", value=9007199254740991, code=NUMERIC_FAULT, version=bignumber/5.0.2)
```
Methods

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -164,20 +164,20 @@ Return a copy of *array* shuffled using [Fisher-Yates Shuffle](https://en.wikipe
```javascript
utils.randomBytes(8)
// Uint8Array [ 131, 252, 210, 50, 128, 120, 18, 68 ]
// Uint8Array [ 95, 9, 0, 81, 176, 49, 211, 225 ]
const data = [ 1, 2, 3, 4, 5, 6, 7 ];
// Returns a new Array
utils.shuffled(data);
// [
// 7,
// 6,
// 7,
// 4,
// 2,
// 3,
// 5,
// 1,
// 5
// 2
// ]
// The Original is unscathed...

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -68,6 +68,13 @@ Returns a new FixedNumber with the value of *fixedvalue* **/** *otherValue*.
Returns a new FixedNumber with the value of *fixedvalue* rounded to *decimals*.
### Comparison and Equivalence
#### *FixedNumber* . **isZero**( ) => *boolean*
Returns true if and only if the value of *FixedNumber* is zero.
### Conversion
#### *fixednumber* . **toFormat**( format ) => *[FixedNumber](/v5/api/utils/fixednumber/)*

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----
@@ -52,7 +52,7 @@ utils.keccak256("0x1234")
// Do NOT use UTF-8 strings that are not a DataHexstring
utils.keccak256("hello world")
// Error: invalid arrayify value (argument="value", value="hello world", code=INVALID_ARGUMENT, version=bytes/5.0.0-beta.138)
// Error: invalid arrayify value (argument="value", value="hello world", code=INVALID_ARGUMENT, version=bytes/5.0.1)
// If needed, convert strings to bytes first:
utils.keccak256(utils.toUtf8Bytes("hello world"))

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
-----
Documentation: [html](https://docs-beta.ethers.io/)
Documentation: [html](https://docs.ethers.io/)
-----

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More