701 lines
48 KiB
HTML
701 lines
48 KiB
HTML
|
|
|||
|
|
|||
|
<!DOCTYPE html>
|
|||
|
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
|||
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
|||
|
<head>
|
|||
|
<meta charset="utf-8">
|
|||
|
|
|||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|||
|
|
|||
|
<title>Wallets and Signers — ethers.js 4.0.0 documentation</title>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
|||
|
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
|||
|
<link rel="stylesheet" href="_static/css/ethers.css" type="text/css" />
|
|||
|
<link rel="stylesheet" href="_static/css/ethers.css" type="text/css" />
|
|||
|
<link rel="index" title="Index" href="genindex.html" />
|
|||
|
<link rel="search" title="Search" href="search.html" />
|
|||
|
<link rel="next" title="Providers" href="api-providers.html" />
|
|||
|
<link rel="prev" title="Application Programming Interface (API)" href="api.html" />
|
|||
|
|
|||
|
|
|||
|
<script src="_static/js/modernizr.min.js"></script>
|
|||
|
|
|||
|
</head>
|
|||
|
|
|||
|
<body class="wy-body-for-nav">
|
|||
|
|
|||
|
|
|||
|
<div class="wy-grid-for-nav">
|
|||
|
|
|||
|
|
|||
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|||
|
<div class="wy-side-scroll">
|
|||
|
<div class="wy-side-nav-search">
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<a href="index.html" class="icon icon-home"> ethers.js
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</a>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<div class="version">
|
|||
|
4.0
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<div role="search">
|
|||
|
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
|||
|
<input type="text" name="q" placeholder="Search docs" />
|
|||
|
<input type="hidden" name="check_keywords" value="yes" />
|
|||
|
<input type="hidden" name="area" value="default" />
|
|||
|
</form>
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<p class="caption"><span class="caption-text">Developer Documentation</span></p>
|
|||
|
<ul class="current">
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="getting-started.html">Getting Started</a></li>
|
|||
|
<li class="toctree-l1 current"><a class="reference internal" href="api.html">Application Programming Interface (API)</a><ul class="current">
|
|||
|
<li class="toctree-l2 current"><a class="current reference internal" href="#">Wallets and Signers</a><ul>
|
|||
|
<li class="toctree-l3"><a class="reference internal" href="#wallet">Wallet</a><ul>
|
|||
|
<li class="toctree-l4"><a class="reference internal" href="#creating-instances">Creating Instances</a></li>
|
|||
|
<li class="toctree-l4"><a class="reference internal" href="#prototype">Prototype</a></li>
|
|||
|
<li class="toctree-l4"><a class="reference internal" href="#signing">Signing</a></li>
|
|||
|
<li class="toctree-l4"><a class="reference internal" href="#blockchain-operations">Blockchain Operations</a></li>
|
|||
|
<li class="toctree-l4"><a class="reference internal" href="#encrypted-json-wallets">Encrypted JSON Wallets</a></li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li class="toctree-l3"><a class="reference internal" href="#signer-api">Signer API</a></li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li class="toctree-l2"><a class="reference internal" href="api-providers.html">Providers</a></li>
|
|||
|
<li class="toctree-l2"><a class="reference internal" href="api-contract.html">Contracts</a></li>
|
|||
|
<li class="toctree-l2"><a class="reference internal" href="api-utils.html">Utilities</a></li>
|
|||
|
</ul>
|
|||
|
</li>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="api-advanced.html">Low-Level API</a></li>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="cookbook.html">Cookbook</a></li>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="migration.html">Migration Guides</a></li>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="notes.html">Notes</a></li>
|
|||
|
<li class="toctree-l1"><a class="reference internal" href="testing.html">Testing</a></li>
|
|||
|
</ul>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</nav>
|
|||
|
|
|||
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
|||
|
|
|||
|
|
|||
|
<nav class="wy-nav-top" aria-label="top navigation">
|
|||
|
|
|||
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|||
|
<a href="index.html">ethers.js</a>
|
|||
|
|
|||
|
</nav>
|
|||
|
|
|||
|
|
|||
|
<div class="wy-nav-content">
|
|||
|
|
|||
|
<div class="rst-content">
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<div role="navigation" aria-label="breadcrumbs navigation">
|
|||
|
|
|||
|
<ul class="wy-breadcrumbs">
|
|||
|
|
|||
|
<li><a href="index.html">Docs</a> »</li>
|
|||
|
|
|||
|
<li><a href="api.html">Application Programming Interface (API)</a> »</li>
|
|||
|
|
|||
|
<li>Wallets and Signers</li>
|
|||
|
|
|||
|
|
|||
|
<li class="wy-breadcrumbs-aside">
|
|||
|
|
|||
|
|
|||
|
<a href="_sources/api-wallet.rst.txt" rel="nofollow"> View page source</a>
|
|||
|
|
|||
|
|
|||
|
</li>
|
|||
|
|
|||
|
</ul>
|
|||
|
|
|||
|
|
|||
|
<hr/>
|
|||
|
</div>
|
|||
|
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|||
|
<div itemprop="articleBody">
|
|||
|
|
|||
|
<div class="section" id="wallets-and-signers">
|
|||
|
<span id="api-wallet"></span><h1>Wallets and Signers<a class="headerlink" href="#wallets-and-signers" title="Permalink to this headline">¶</a></h1>
|
|||
|
<p>A <strong>Wallet</strong> manages a private/public key pair which is used to cryptographically sign
|
|||
|
transactions and prove ownership on the Ethereum network.</p>
|
|||
|
<hr class="docutils" />
|
|||
|
<div class="section" id="wallet">
|
|||
|
<span id="id1"></span><h2>Wallet<a class="headerlink" href="#wallet" title="Permalink to this headline">¶</a></h2>
|
|||
|
<p>The <strong>Wallet</strong> implements the <a class="reference internal" href="#signer"><span class="std std-ref">Signer API</span></a> and can be used anywhere a <em>Signer</em>
|
|||
|
is expected and has all the required properties.</p>
|
|||
|
<div class="line-block">
|
|||
|
<div class="line"><br /></div>
|
|||
|
</div>
|
|||
|
<div class="section" id="creating-instances">
|
|||
|
<h3>Creating Instances<a class="headerlink" href="#creating-instances" title="Permalink to this headline">¶</a></h3>
|
|||
|
<dl class="docutils">
|
|||
|
<dt>new <sup>Wallet</sup> ( privateKey [ , provider ] )</dt>
|
|||
|
<dd>Creates a new instance from <em>privateKey</em> and optionally connect a provider</dd>
|
|||
|
<dt><sup>Wallet</sup> . createRandom ( [ options ] ) <sup>=></sup> <sup>Wallet</sup></dt>
|
|||
|
<dd><p class="first">Creates a new random wallet. Ensure this wallet is stored somewhere safe, if
|
|||
|
lost there is <strong>NO way to recover it</strong>.</p>
|
|||
|
<p>Options may have the properties:</p>
|
|||
|
<blockquote class="last">
|
|||
|
<div><ul class="simple">
|
|||
|
<li><strong>extraEntropy</strong> — additional entropy to stir into the random source</li>
|
|||
|
</ul>
|
|||
|
</div></blockquote>
|
|||
|
</dd>
|
|||
|
</dl>
|
|||
|
<dl class="docutils" id="fromencryptedjson">
|
|||
|
<dt><sup>Wallet</sup> . fromEncryptedJson ( json, password [ , progressCallback ] ) <sup>=></sup> <sup>Wallet</sup></dt>
|
|||
|
<dd>Decrypt an encrypted Secret Storage <a class="reference external" href="https://medium.com/@julien.maffre/what-is-an-ethereum-keystore-file-86c8c5917b97">JSON Wallet</a> (from Geth, parity, Crowdsale
|
|||
|
tools, or that was created using <em>prototype.encrypt</em> )</dd>
|
|||
|
<dt><sup>Wallet</sup> . fromMnemonic ( mnemonic [ , path <sup>= “m/44’/60’/0’/0/0”</sup> [ , wordlist ] ] ) <sup>=></sup> <sup>Wallet</sup></dt>
|
|||
|
<dd><p class="first">Generate a <a class="reference external" href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki">BIP-039</a> + <a class="reference external" href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki">BIP-044</a> wallet from <em>mnemonic</em> deriving <em>path</em> using
|
|||
|
the <em>wordlist</em>. The default language is English (en).</p>
|
|||
|
<p>In the browserified <code class="docutils literal notranslate"><span class="pre">dist/ethers.min.js</span></code> only the English wordlist is
|
|||
|
available. Each additional wordlist may be included by adding a <code class="docutils literal notranslate"><span class="pre"><script></span></code>
|
|||
|
for the <code class="docutils literal notranslate"><span class="pre">dist/wordlist-*.js</span></code></p>
|
|||
|
<p>The current supported wordlists are:</p>
|
|||
|
<table border="1" class="last docutils">
|
|||
|
<colgroup>
|
|||
|
<col width="30%" />
|
|||
|
<col width="38%" />
|
|||
|
<col width="32%" />
|
|||
|
</colgroup>
|
|||
|
<thead valign="bottom">
|
|||
|
<tr class="row-odd"><th class="head">Language</th>
|
|||
|
<th class="head">node.js</th>
|
|||
|
<th class="head">Browser</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tbody valign="top">
|
|||
|
<tr class="row-even"><td>English (US)</td>
|
|||
|
<td><code class="docutils literal notranslate"><span class="pre">ethers.wordlists.en</span></code></td>
|
|||
|
<td><em>included</em></td>
|
|||
|
</tr>
|
|||
|
<tr class="row-odd"><td>Italian</td>
|
|||
|
<td><code class="docutils literal notranslate"><span class="pre">ethers.wordlists.it</span></code></td>
|
|||
|
<td><code class="docutils literal notranslate"><span class="pre">dist/wordlist-it.js</span></code></td>
|
|||
|
</tr>
|
|||
|
<tr class="row-even"><td>Japanese</td>
|
|||
|
<td><code class="docutils literal notranslate"><span class="pre">ethers.wordlists.ja</span></code></td>
|
|||
|
<td><code class="docutils literal notranslate"><span class="pre">dist/wordlist-ja.js</span></code></td>
|
|||
|
</tr>
|
|||
|
<tr class="row-odd"><td>Korean</td>
|
|||
|
<td><code class="docutils literal notranslate"><span class="pre">ethers.wordlists.ko</span></code></td>
|
|||
|
<td><code class="docutils literal notranslate"><span class="pre">dist/wordlist-ko.js</span></code></td>
|
|||
|
</tr>
|
|||
|
<tr class="row-even"><td>Chinese (simplified)</td>
|
|||
|
<td><code class="docutils literal notranslate"><span class="pre">ethers.wordlists.zh_cn</span></code></td>
|
|||
|
<td><code class="docutils literal notranslate"><span class="pre">dist/wordlist-zh.js</span></code></td>
|
|||
|
</tr>
|
|||
|
<tr class="row-odd"><td>Chinese (traditional)</td>
|
|||
|
<td><code class="docutils literal notranslate"><span class="pre">ethers.wordlists.zh_tw</span></code></td>
|
|||
|
<td><code class="docutils literal notranslate"><span class="pre">dist/wordlist-zh.js</span></code></td>
|
|||
|
</tr>
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
</dd>
|
|||
|
</dl>
|
|||
|
<dl class="docutils" id="wallet-connect">
|
|||
|
<dt><sup>prototype</sup> . connect ( provider ) <sup>=></sup> <sup>Wallet</sup></dt>
|
|||
|
<dd>Creates a new Wallet instance from an existing instance, connected to a new <em>provider</em>.</dd>
|
|||
|
</dl>
|
|||
|
<div class="line-block">
|
|||
|
<div class="line"><br /></div>
|
|||
|
</div>
|
|||
|
<div class="line-block">
|
|||
|
<div class="line"><br /></div>
|
|||
|
</div>
|
|||
|
<div class="literal-block-wrapper docutils container" id="id2">
|
|||
|
<div class="code-block-caption"><span class="caption-text"><em>load a private key</em></span><a class="headerlink" href="#id2" title="Permalink to this code">¶</a></div>
|
|||
|
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="kd">let</span> <span class="nx">privateKey</span> <span class="o">=</span> <span class="s2">"0x0123456789012345678901234567890123456789012345678901234567890123"</span><span class="p">;</span>
|
|||
|
<span class="kd">let</span> <span class="nx">wallet</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">Wallet</span><span class="p">(</span><span class="nx">privateKey</span><span class="p">);</span>
|
|||
|
|
|||
|
<span class="c1">// Connect a wallet to mainnet</span>
|
|||
|
<span class="kd">let</span> <span class="nx">provider</span> <span class="o">=</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">getDefaultProvider</span><span class="p">();</span>
|
|||
|
<span class="kd">let</span> <span class="nx">walletWithProvider</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">Wallet</span><span class="p">(</span><span class="nx">privateKey</span><span class="p">,</span> <span class="nx">provider</span><span class="p">);</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="literal-block-wrapper docutils container" id="id3">
|
|||
|
<div class="code-block-caption"><span class="caption-text"><em>create a new random account</em></span><a class="headerlink" href="#id3" title="Permalink to this code">¶</a></div>
|
|||
|
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="kd">let</span> <span class="nx">randomWallet</span> <span class="o">=</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">Wallet</span><span class="p">.</span><span class="nx">createRandom</span><span class="p">();</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="literal-block-wrapper docutils container" id="id4">
|
|||
|
<div class="code-block-caption"><span class="caption-text"><em>load a JSON wallet</em></span><a class="headerlink" href="#id4" title="Permalink to this code">¶</a></div>
|
|||
|
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="kd">let</span> <span class="nx">data</span> <span class="o">=</span> <span class="p">{</span>
|
|||
|
<span class="nx">id</span><span class="o">:</span> <span class="s2">"fb1280c0-d646-4e40-9550-7026b1be504a"</span><span class="p">,</span>
|
|||
|
<span class="nx">address</span><span class="o">:</span> <span class="s2">"88a5c2d9919e46f883eb62f7b8dd9d0cc45bc290"</span><span class="p">,</span>
|
|||
|
<span class="nx">Crypto</span><span class="o">:</span> <span class="p">{</span>
|
|||
|
<span class="nx">kdfparams</span><span class="o">:</span> <span class="p">{</span>
|
|||
|
<span class="nx">dklen</span><span class="o">:</span> <span class="mi">32</span><span class="p">,</span>
|
|||
|
<span class="nx">p</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span>
|
|||
|
<span class="nx">salt</span><span class="o">:</span> <span class="s2">"bbfa53547e3e3bfcc9786a2cbef8504a5031d82734ecef02153e29daeed658fd"</span><span class="p">,</span>
|
|||
|
<span class="nx">r</span><span class="o">:</span> <span class="mi">8</span><span class="p">,</span>
|
|||
|
<span class="nx">n</span><span class="o">:</span> <span class="mi">262144</span>
|
|||
|
<span class="p">},</span>
|
|||
|
<span class="nx">kdf</span><span class="o">:</span> <span class="s2">"scrypt"</span><span class="p">,</span>
|
|||
|
<span class="nx">ciphertext</span><span class="o">:</span> <span class="s2">"10adcc8bcaf49474c6710460e0dc974331f71ee4c7baa7314b4a23d25fd6c406"</span><span class="p">,</span>
|
|||
|
<span class="nx">mac</span><span class="o">:</span> <span class="s2">"1cf53b5ae8d75f8c037b453e7c3c61b010225d916768a6b145adf5cf9cb3a703"</span><span class="p">,</span>
|
|||
|
<span class="nx">cipher</span><span class="o">:</span> <span class="s2">"aes-128-ctr"</span><span class="p">,</span>
|
|||
|
<span class="nx">cipherparams</span><span class="o">:</span> <span class="p">{</span>
|
|||
|
<span class="nx">iv</span><span class="o">:</span> <span class="s2">"1dcdf13e49cea706994ed38804f6d171"</span>
|
|||
|
<span class="p">}</span>
|
|||
|
<span class="p">},</span>
|
|||
|
<span class="s2">"version"</span> <span class="o">:</span> <span class="mi">3</span>
|
|||
|
<span class="p">};</span>
|
|||
|
|
|||
|
<span class="kd">let</span> <span class="nx">json</span> <span class="o">=</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
|
|||
|
<span class="kd">let</span> <span class="nx">password</span> <span class="o">=</span> <span class="s2">"foo"</span><span class="p">;</span>
|
|||
|
|
|||
|
<span class="nx">ethers</span><span class="p">.</span><span class="nx">Wallet</span><span class="p">.</span><span class="nx">fromEncryptedJson</span><span class="p">(</span><span class="nx">json</span><span class="p">,</span> <span class="nx">password</span><span class="p">).</span><span class="nx">then</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">wallet</span><span class="p">)</span> <span class="p">{</span>
|
|||
|
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">"Address: "</span> <span class="o">+</span> <span class="nx">wallet</span><span class="p">.</span><span class="nx">address</span><span class="p">);</span>
|
|||
|
<span class="c1">// "Address: 0x88a5C2d9919e46F883EB62F7b8Dd9d0CC45bc290"</span>
|
|||
|
<span class="p">});</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="literal-block-wrapper docutils container" id="id5">
|
|||
|
<div class="code-block-caption"><span class="caption-text"><em>load a mnemonic phrase</em></span><a class="headerlink" href="#id5" title="Permalink to this code">¶</a></div>
|
|||
|
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="kd">let</span> <span class="nx">mnemonic</span> <span class="o">=</span> <span class="s2">"radar blur cabbage chef fix engine embark joy scheme fiction master release"</span><span class="p">;</span>
|
|||
|
<span class="kd">let</span> <span class="nx">mnemonicWallet</span> <span class="o">=</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">Wallet</span><span class="p">.</span><span class="nx">fromMnemonic</span><span class="p">(</span><span class="nx">mnemonic</span><span class="p">);</span>
|
|||
|
|
|||
|
<span class="c1">// Load the second account from a mnemonic</span>
|
|||
|
<span class="kd">let</span> <span class="nx">path</span> <span class="o">=</span> <span class="s2">"m/44'/60'/1'/0/0"</span><span class="p">;</span>
|
|||
|
<span class="kd">let</span> <span class="nx">secondMnemonicWallet</span> <span class="o">=</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">Wallet</span><span class="p">.</span><span class="nx">fromMnemonic</span><span class="p">(</span><span class="nx">mnemonic</span><span class="p">,</span> <span class="nx">path</span><span class="p">);</span>
|
|||
|
|
|||
|
<span class="c1">// Load using a non-english locale wordlist (the path "null" will use the default)</span>
|
|||
|
<span class="kd">let</span> <span class="nx">secondMnemonicWallet</span> <span class="o">=</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">Wallet</span><span class="p">.</span><span class="nx">fromMnemonic</span><span class="p">(</span><span class="nx">mnemonic</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">wordlists</span><span class="p">.</span><span class="nx">ko</span><span class="p">);</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<hr class="docutils" />
|
|||
|
<div class="section" id="prototype">
|
|||
|
<h3>Prototype<a class="headerlink" href="#prototype" title="Permalink to this headline">¶</a></h3>
|
|||
|
<dl class="docutils">
|
|||
|
<dt><sup>prototype</sup> . address</dt>
|
|||
|
<dd>The public address of a wallet</dd>
|
|||
|
<dt><sup>prototype</sup> . privateKey</dt>
|
|||
|
<dd>The private key of a wallet; keep this secret</dd>
|
|||
|
<dt><sup>prototype</sup> . provider</dt>
|
|||
|
<dd><p class="first">A connected <a class="reference internal" href="api-providers.html#provider"><span class="std std-ref">Provider</span></a> which allows the wallet to
|
|||
|
connect to the Ethereum network to query its state and send transactions,
|
|||
|
or null if no provider is connected.</p>
|
|||
|
<p class="last">To change the provider, use the <a class="reference internal" href="#wallet-connect"><span class="std std-ref">connect</span></a> method, which will return
|
|||
|
a <strong>new instance</strong> of the Wallet connected to the provider.</p>
|
|||
|
</dd>
|
|||
|
<dt><sup>prototype</sup> . mnemonic</dt>
|
|||
|
<dd>The mnemonic phrase for this wallet, or null if the mnemonic is unknown.</dd>
|
|||
|
<dt><sup>prototype</sup> . path</dt>
|
|||
|
<dd>The mnemonic path for this wallet, or null if the mnemonic is unknown.</dd>
|
|||
|
</dl>
|
|||
|
</div>
|
|||
|
<hr class="docutils" />
|
|||
|
<div class="section" id="signing">
|
|||
|
<h3>Signing<a class="headerlink" href="#signing" title="Permalink to this headline">¶</a></h3>
|
|||
|
<dl class="docutils">
|
|||
|
<dt><sup>prototype</sup> . sign ( transaction ) <sup>=></sup> <sup>Promise<string></sup></dt>
|
|||
|
<dd><p class="first">Signs <em>transaction</em> and returns a <a class="reference internal" href="notes.html#promise"><span class="std std-ref">Promise</span></a> that resolves to
|
|||
|
the signed transaction as a <a class="reference internal" href="api-utils.html#hexstring"><span class="std std-ref">hex string</span></a>.</p>
|
|||
|
<p>In general, the <a class="reference internal" href="#sendtransaction">sendTransaction</a> method is preferred to <code class="docutils literal notranslate"><span class="pre">sign</span></code>, as it can automatically
|
|||
|
populate values asynchronously.</p>
|
|||
|
<p>The properties for transaction are all optional and include:</p>
|
|||
|
<blockquote class="last">
|
|||
|
<div><ul class="simple">
|
|||
|
<li><strong>to</strong></li>
|
|||
|
<li><strong>gasLimit</strong></li>
|
|||
|
<li><strong>gasPrice</strong></li>
|
|||
|
<li><strong>nonce</strong></li>
|
|||
|
<li><strong>data</strong></li>
|
|||
|
<li><strong>value</strong></li>
|
|||
|
<li><strong>chainId</strong></li>
|
|||
|
</ul>
|
|||
|
</div></blockquote>
|
|||
|
</dd>
|
|||
|
<dt><sup>prototype</sup> . signMessage ( message ) <sup>=></sup> <sup>Promise<string></sup></dt>
|
|||
|
<dd><p class="first">Signs <em>message</em> and returns a <a class="reference internal" href="notes.html#promise"><span class="std std-ref">Promise</span></a> that resolves to
|
|||
|
the <a class="reference internal" href="api-utils.html#signature"><span class="std std-ref">flat-format</span></a> signature.</p>
|
|||
|
<p class="last">If <em>message</em> is a string, it is converted to UTF-8 bytes, otherwise it is
|
|||
|
preserved as a binary representation of the <a class="reference internal" href="api-utils.html#arrayish"><span class="std std-ref">Arrayish</span></a> data.</p>
|
|||
|
</dd>
|
|||
|
</dl>
|
|||
|
<div class="literal-block-wrapper docutils container" id="id6">
|
|||
|
<div class="code-block-caption"><span class="caption-text"><em>signing transactions</em></span><a class="headerlink" href="#id6" title="Permalink to this code">¶</a></div>
|
|||
|
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="kd">let</span> <span class="nx">privateKey</span> <span class="o">=</span> <span class="s2">"0x3141592653589793238462643383279502884197169399375105820974944592"</span>
|
|||
|
<span class="kd">let</span> <span class="nx">wallet</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">Wallet</span><span class="p">(</span><span class="nx">privateKey</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">wallet</span><span class="p">.</span><span class="nx">address</span><span class="p">)</span>
|
|||
|
<span class="c1">// "0x7357589f8e367c2C31F51242fB77B350A11830F3"</span>
|
|||
|
|
|||
|
<span class="c1">// All properties are optional</span>
|
|||
|
<span class="kd">let</span> <span class="nx">transaction</span> <span class="o">=</span> <span class="p">{</span>
|
|||
|
<span class="nx">nonce</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
|
|||
|
<span class="nx">gasLimit</span><span class="o">:</span> <span class="mi">21000</span><span class="p">,</span>
|
|||
|
<span class="nx">gasPrice</span><span class="o">:</span> <span class="nx">utils</span><span class="p">.</span><span class="nx">bigNumberify</span><span class="p">(</span><span class="s2">"20000000000"</span><span class="p">),</span>
|
|||
|
|
|||
|
<span class="nx">to</span><span class="o">:</span> <span class="s2">"0x88a5C2d9919e46F883EB62F7b8Dd9d0CC45bc290"</span><span class="p">,</span>
|
|||
|
<span class="c1">// ... or supports ENS names</span>
|
|||
|
<span class="c1">// to: "ricmoo.firefly.eth",</span>
|
|||
|
|
|||
|
<span class="nx">value</span><span class="o">:</span> <span class="nx">utils</span><span class="p">.</span><span class="nx">parseEther</span><span class="p">(</span><span class="s2">"1.0"</span><span class="p">),</span>
|
|||
|
<span class="nx">data</span><span class="o">:</span> <span class="s2">"0x"</span><span class="p">,</span>
|
|||
|
|
|||
|
<span class="c1">// This ensures the transaction cannot be replayed on different networks</span>
|
|||
|
<span class="nx">chainId</span><span class="o">:</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">utils</span><span class="p">.</span><span class="nx">getNetwork</span><span class="p">(</span><span class="s1">'homestead'</span><span class="p">).</span><span class="nx">chainId</span>
|
|||
|
<span class="p">}</span>
|
|||
|
|
|||
|
<span class="kd">let</span> <span class="nx">signPromise</span> <span class="o">=</span> <span class="nx">wallet</span><span class="p">.</span><span class="nx">sign</span><span class="p">(</span><span class="nx">transaction</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="nx">signPromise</span><span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">signedTransaction</span><span class="p">)</span> <span class="p">=></span> <span class="p">{</span>
|
|||
|
|
|||
|
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">signedTransaction</span><span class="p">);</span>
|
|||
|
<span class="c1">// "0xf86c808504a817c8008252089488a5c2d9919e46f883eb62f7b8dd9d0cc45bc2</span>
|
|||
|
<span class="c1">// 90880de0b6b3a76400008025a05e766fa4bbb395108dc250ec66c2f88355d240</span>
|
|||
|
<span class="c1">// acdc47ab5dfaad46bcf63f2a34a05b2cb6290fd8ff801d07f6767df63c1c3da7</span>
|
|||
|
<span class="c1">// a7b83b53cd6cea3d3075ef9597d5"</span>
|
|||
|
|
|||
|
<span class="c1">// This can now be sent to the Ethereum network</span>
|
|||
|
<span class="kd">let</span> <span class="nx">provider</span> <span class="o">=</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">getDefaultProvider</span><span class="p">()</span>
|
|||
|
<span class="nx">provider</span><span class="p">.</span><span class="nx">sendTransaction</span><span class="p">(</span><span class="nx">signedTransaction</span><span class="p">).</span><span class="nx">then</span><span class="p">((</span><span class="nx">tx</span><span class="p">)</span> <span class="p">=></span> <span class="p">{</span>
|
|||
|
|
|||
|
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">tx</span><span class="p">);</span>
|
|||
|
<span class="c1">// {</span>
|
|||
|
<span class="c1">// // These will match the above values (excluded properties are zero)</span>
|
|||
|
<span class="c1">// "nonce", "gasLimit", "gasPrice", "to", "value", "data", "chainId"</span>
|
|||
|
<span class="c1">//</span>
|
|||
|
<span class="c1">// // These will now be present</span>
|
|||
|
<span class="c1">// "from", "hash", "r", "s", "v"</span>
|
|||
|
<span class="c1">// }</span>
|
|||
|
<span class="c1">// Hash:</span>
|
|||
|
<span class="p">});</span>
|
|||
|
<span class="p">})</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="literal-block-wrapper docutils container" id="id7">
|
|||
|
<div class="code-block-caption"><span class="caption-text"><em>signing text messages</em></span><a class="headerlink" href="#id7" title="Permalink to this code">¶</a></div>
|
|||
|
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="kd">let</span> <span class="nx">privateKey</span> <span class="o">=</span> <span class="s2">"0x3141592653589793238462643383279502884197169399375105820974944592"</span>
|
|||
|
<span class="kd">let</span> <span class="nx">wallet</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">Wallet</span><span class="p">(</span><span class="nx">privateKey</span><span class="p">);</span>
|
|||
|
|
|||
|
<span class="c1">// Sign a text message</span>
|
|||
|
<span class="kd">let</span> <span class="nx">signPromise</span> <span class="o">=</span> <span class="nx">wallet</span><span class="p">.</span><span class="nx">signMessage</span><span class="p">(</span><span class="s2">"Hello World!"</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="nx">signPromise</span><span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">signature</span><span class="p">)</span> <span class="p">=></span> <span class="p">{</span>
|
|||
|
|
|||
|
<span class="c1">// Flat-format</span>
|
|||
|
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">signature</span><span class="p">);</span>
|
|||
|
<span class="c1">// "0xea09d6e94e52b48489bd66754c9c02a772f029d4a2f136bba9917ab3042a0474</span>
|
|||
|
<span class="c1">// 301198d8c2afb71351753436b7e5a420745fed77b6c3089bbcca64113575ec3c</span>
|
|||
|
<span class="c1">// 1c"</span>
|
|||
|
|
|||
|
<span class="c1">// Expanded-format</span>
|
|||
|
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">ethers</span><span class="p">.</span><span class="nx">utils</span><span class="p">.</span><span class="nx">splitSignature</span><span class="p">(</span><span class="nx">signature</span><span class="p">));</span>
|
|||
|
<span class="c1">// {</span>
|
|||
|
<span class="c1">// r: "0xea09d6e94e52b48489bd66754c9c02a772f029d4a2f136bba9917ab3042a0474",</span>
|
|||
|
<span class="c1">// s: "0x301198d8c2afb71351753436b7e5a420745fed77b6c3089bbcca64113575ec3c",</span>
|
|||
|
<span class="c1">// v: 28,</span>
|
|||
|
<span class="c1">// recoveryParam: 1</span>
|
|||
|
<span class="c1">// }</span>
|
|||
|
<span class="p">});</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="literal-block-wrapper docutils container" id="id8">
|
|||
|
<div class="code-block-caption"><span class="caption-text"><em>signing binary messages</em></span><a class="headerlink" href="#id8" title="Permalink to this code">¶</a></div>
|
|||
|
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="kd">let</span> <span class="nx">privateKey</span> <span class="o">=</span> <span class="s2">"0x3141592653589793238462643383279502884197169399375105820974944592"</span>
|
|||
|
<span class="kd">let</span> <span class="nx">wallet</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">Wallet</span><span class="p">(</span><span class="nx">privateKey</span><span class="p">);</span>
|
|||
|
|
|||
|
<span class="c1">// The 66 character hex string MUST be converted to a 32-byte array first!</span>
|
|||
|
<span class="kd">let</span> <span class="nx">hash</span> <span class="o">=</span> <span class="s2">"0x3ea2f1d0abf3fc66cf29eebb70cbd4e7fe762ef8a09bcc06c8edf641230afec0"</span><span class="p">;</span>
|
|||
|
<span class="kd">let</span> <span class="nx">binaryData</span> <span class="o">=</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">utils</span><span class="p">.</span><span class="nx">arrayify</span><span class="p">(</span><span class="nx">hash</span><span class="p">);</span>
|
|||
|
|
|||
|
<span class="kd">let</span> <span class="nx">signPromise</span> <span class="o">=</span> <span class="nx">wallet</span><span class="p">.</span><span class="nx">signMessage</span><span class="p">(</span><span class="nx">binaryData</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="nx">signPromise</span><span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">signature</span><span class="p">)</span> <span class="p">=></span> <span class="p">{</span>
|
|||
|
|
|||
|
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">signature</span><span class="p">);</span>
|
|||
|
<span class="c1">// "0x5e9b7a7bd77ac21372939d386342ae58081a33bf53479152c87c1e787c27d06b</span>
|
|||
|
<span class="c1">// 118d3eccff0ace49891e192049e16b5210047068384772ba1fdb33bbcba58039</span>
|
|||
|
<span class="c1">// 1c"</span>
|
|||
|
<span class="p">});</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<hr class="docutils" />
|
|||
|
<div class="section" id="blockchain-operations">
|
|||
|
<h3>Blockchain Operations<a class="headerlink" href="#blockchain-operations" title="Permalink to this headline">¶</a></h3>
|
|||
|
<p>These operations require the wallet have a provider attached to it.</p>
|
|||
|
<dl class="docutils">
|
|||
|
<dt><sup>prototype</sup> . getBalance ( [ blockTag <sup>= “latest”</sup> ] ) <sup>=></sup> <sup>Promise<BigNumber></sup></dt>
|
|||
|
<dd>Returns a <a class="reference internal" href="notes.html#promise"><span class="std std-ref">Promise</span></a> that resolves to the balance of the wallet
|
|||
|
(as a <a class="reference internal" href="api-utils.html#bignumber"><span class="std std-ref">BigNumber</span></a>, in <strong>wei</strong>) at the <a class="reference internal" href="api-providers.html#blocktag"><span class="std std-ref">blockTag</span></a>.</dd>
|
|||
|
<dt><sup>prototype</sup> . getTransactionCount ( [ blockTag <sup>= “latest”</sup> ] ) <sup>=></sup> <sup>Promise<number></sup></dt>
|
|||
|
<dd>Returns a <a class="reference internal" href="notes.html#promise"><span class="std std-ref">Promise</span></a> that resovles to the number of transactions
|
|||
|
this account has ever sent (also called the <em>nonce</em>) at the <a class="reference internal" href="api-providers.html#blocktag"><span class="std std-ref">blockTag</span></a>.</dd>
|
|||
|
<dt><sup>prototype</sup> . estimateGas ( transaction ) <sup>=></sup> <sup>Promise<BigNumber></sup></dt>
|
|||
|
<dd>Returns a <a class="reference internal" href="notes.html#promise"><span class="std std-ref">Promise</span></a> with the estimated cost for <em>transaction</em> (as a
|
|||
|
<a class="reference internal" href="api-utils.html#bignumber"><span class="std std-ref">BigNumber</span></a>, in <strong>gas</strong>)</dd>
|
|||
|
</dl>
|
|||
|
<dl class="docutils" id="sendtransaction">
|
|||
|
<dt><sup>prototype</sup> . sendTransaction ( transaction ) <sup>=></sup> <sup>Promise<TransactionResponse></sup></dt>
|
|||
|
<dd>Sends the <em>transaction</em> (see <a class="reference internal" href="api-providers.html#transaction-request"><span class="std std-ref">Transaction Requests</span></a>) to
|
|||
|
the network and returns a <a class="reference internal" href="notes.html#promise"><span class="std std-ref">Promise</span></a> that resolves to a
|
|||
|
<a class="reference internal" href="api-providers.html#transaction-response"><span class="std std-ref">Transaction Response</span></a>. Any properties that are not
|
|||
|
provided will be populated from the network.</dd>
|
|||
|
</dl>
|
|||
|
<div class="literal-block-wrapper docutils container" id="id9">
|
|||
|
<div class="code-block-caption"><span class="caption-text"><em>query the network</em></span><a class="headerlink" href="#id9" title="Permalink to this code">¶</a></div>
|
|||
|
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="c1">// We require a provider to query the network</span>
|
|||
|
<span class="kd">let</span> <span class="nx">provider</span> <span class="o">=</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">getDefaultProvider</span><span class="p">();</span>
|
|||
|
|
|||
|
<span class="kd">let</span> <span class="nx">privateKey</span> <span class="o">=</span> <span class="s2">"0x3141592653589793238462643383279502884197169399375105820974944592"</span>
|
|||
|
<span class="kd">let</span> <span class="nx">wallet</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">Wallet</span><span class="p">(</span><span class="nx">privateKey</span><span class="p">,</span> <span class="nx">provider</span><span class="p">);</span>
|
|||
|
|
|||
|
<span class="kd">let</span> <span class="nx">balancePromise</span> <span class="o">=</span> <span class="nx">wallet</span><span class="p">.</span><span class="nx">getBalance</span><span class="p">();</span>
|
|||
|
|
|||
|
<span class="nx">balancePromise</span><span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">balance</span><span class="p">)</span> <span class="p">=></span> <span class="p">{</span>
|
|||
|
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">balance</span><span class="p">);</span>
|
|||
|
<span class="p">});</span>
|
|||
|
|
|||
|
<span class="kd">let</span> <span class="nx">transactionCountPromise</span> <span class="o">=</span> <span class="nx">wallet</span><span class="p">.</span><span class="nx">getTransactionCount</span><span class="p">();</span>
|
|||
|
|
|||
|
<span class="nx">transactionCountPromise</span><span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">transactionCount</span><span class="p">)</span> <span class="p">=></span> <span class="p">{</span>
|
|||
|
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">transactionCount</span><span class="p">);</span>
|
|||
|
<span class="p">});</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="literal-block-wrapper docutils container" id="id10">
|
|||
|
<div class="code-block-caption"><span class="caption-text"><em>transfer ether</em></span><a class="headerlink" href="#id10" title="Permalink to this code">¶</a></div>
|
|||
|
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="c1">// We require a provider to send transactions</span>
|
|||
|
<span class="kd">let</span> <span class="nx">provider</span> <span class="o">=</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">getDefaultProvider</span><span class="p">();</span>
|
|||
|
|
|||
|
<span class="kd">let</span> <span class="nx">privateKey</span> <span class="o">=</span> <span class="s2">"0x3141592653589793238462643383279502884197169399375105820974944592"</span>
|
|||
|
<span class="kd">let</span> <span class="nx">wallet</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">Wallet</span><span class="p">(</span><span class="nx">privateKey</span><span class="p">,</span> <span class="nx">provider</span><span class="p">);</span>
|
|||
|
|
|||
|
<span class="kd">let</span> <span class="nx">amount</span> <span class="o">=</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">utils</span><span class="p">.</span><span class="nx">parseEther</span><span class="p">(</span><span class="s1">'1.0'</span><span class="p">);</span>
|
|||
|
|
|||
|
<span class="kd">let</span> <span class="nx">tx</span> <span class="o">=</span> <span class="p">{</span>
|
|||
|
<span class="nx">to</span><span class="o">:</span> <span class="s2">"0x88a5c2d9919e46f883eb62f7b8dd9d0cc45bc290"</span><span class="p">,</span>
|
|||
|
<span class="c1">// ... or supports ENS names</span>
|
|||
|
<span class="c1">// to: "ricmoo.firefly.eth",</span>
|
|||
|
|
|||
|
<span class="c1">// We must pass in the amount as wei (1 ether = 1e18 wei), so we</span>
|
|||
|
<span class="c1">// use this convenience function to convert ether to wei.</span>
|
|||
|
<span class="nx">value</span><span class="o">:</span> <span class="nx">ethers</span><span class="p">.</span><span class="nx">utils</span><span class="p">.</span><span class="nx">parseEther</span><span class="p">(</span><span class="s1">'1.0'</span><span class="p">)</span>
|
|||
|
<span class="p">};</span>
|
|||
|
|
|||
|
<span class="kd">let</span> <span class="nx">sendPromise</span> <span class="o">=</span> <span class="nx">wallet</span><span class="p">.</span><span class="nx">sendTransaction</span><span class="p">(</span><span class="nx">tx</span><span class="p">);</span>
|
|||
|
|
|||
|
<span class="nx">sendPromise</span><span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">tx</span><span class="p">)</span> <span class="p">=></span> <span class="p">{</span>
|
|||
|
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">tx</span><span class="p">);</span>
|
|||
|
<span class="c1">// {</span>
|
|||
|
<span class="c1">// // All transaction fields will be present</span>
|
|||
|
<span class="c1">// "nonce", "gasLimit", "pasPrice", "to", "value", "data",</span>
|
|||
|
<span class="c1">// "from", "hash", "r", "s", "v"</span>
|
|||
|
<span class="c1">// }</span>
|
|||
|
<span class="p">});</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<hr class="docutils" />
|
|||
|
<div class="section" id="encrypted-json-wallets">
|
|||
|
<h3>Encrypted JSON Wallets<a class="headerlink" href="#encrypted-json-wallets" title="Permalink to this headline">¶</a></h3>
|
|||
|
<p>Many systems store private keys as encrypted JSON wallets, in various formats. There are several
|
|||
|
formats and algorithms that are used, all of which are supported to be read.
|
|||
|
Only the secure scrypt variation can be generated.</p>
|
|||
|
<p>See <a class="reference internal" href="#fromencryptedjson"><span class="std std-ref">Wallet.fromEncryptedJson</span></a> for creating a
|
|||
|
Wallet instance from a JSON wallet.</p>
|
|||
|
<dl class="docutils">
|
|||
|
<dt><sup>prototype</sup> . encrypt ( password [ , options [ , progressCallback ] ] ) <sup>=></sup> <sup>Promise<string></sup></dt>
|
|||
|
<dd><p class="first">Encrypts the wallet as an encrypted JSON wallet, with the <em>password</em>.</p>
|
|||
|
<p>All options are optional. The valid options are:</p>
|
|||
|
<blockquote>
|
|||
|
<div><ul class="simple">
|
|||
|
<li><strong>salt</strong> — the salt to use for scrypt</li>
|
|||
|
<li><strong>iv</strong> — the initialization vecotr to use for aes-ctr-128</li>
|
|||
|
<li><strong>uuid</strong> — the UUID to use for the wallet</li>
|
|||
|
<li><strong>scrypt</strong> — the scrypt parameters to use (N, r and p)</li>
|
|||
|
<li><strong>entropy</strong> — the mnemonic entropy of this wallet; generally you should <strong>not</strong> specify this</li>
|
|||
|
<li><strong>mnemonic</strong> — the mnemonic phrase of this wallet; generally you should <strong>not</strong> specify this</li>
|
|||
|
<li><strong>path</strong> — the mnemonic path of this wallet; generally you should <strong>not</strong> specify this</li>
|
|||
|
</ul>
|
|||
|
</div></blockquote>
|
|||
|
<p class="last">If the <em>progressCallback</em> is specified, it will be called periodically during
|
|||
|
encryption with a value between 0 and 1, inclusive indicating the progress.</p>
|
|||
|
</dd>
|
|||
|
</dl>
|
|||
|
<div class="literal-block-wrapper docutils container" id="id11">
|
|||
|
<div class="code-block-caption"><span class="caption-text"><em>encrypt a wallet as an encrypted JSON wallet</em></span><a class="headerlink" href="#id11" title="Permalink to this code">¶</a></div>
|
|||
|
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="kd">let</span> <span class="nx">password</span> <span class="o">=</span> <span class="s2">"password123"</span><span class="p">;</span>
|
|||
|
|
|||
|
<span class="kd">function</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">progress</span><span class="p">)</span> <span class="p">{</span>
|
|||
|
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">"Encrypting: "</span> <span class="o">+</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">progress</span> <span class="o">*</span> <span class="mi">100</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"% complete"</span><span class="p">);</span>
|
|||
|
<span class="p">}</span>
|
|||
|
|
|||
|
<span class="kd">let</span> <span class="nx">encryptPromise</span> <span class="o">=</span> <span class="nx">wallet</span><span class="p">.</span><span class="nx">encrypt</span><span class="p">(</span><span class="nx">password</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
|
|||
|
|
|||
|
<span class="nx">encryptPromise</span><span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
|
|||
|
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">json</span><span class="p">);</span>
|
|||
|
<span class="p">});</span>
|
|||
|
</pre></div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<hr class="docutils" />
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="section" id="signer-api">
|
|||
|
<span id="signer"></span><h2>Signer API<a class="headerlink" href="#signer-api" title="Permalink to this headline">¶</a></h2>
|
|||
|
<p>The Signer API is an abstract class which makes it easy to extend and add new signers,
|
|||
|
that can be used by this library and extension libraries. The <a class="reference internal" href="#wallet"><span class="std std-ref">Wallet</span></a>
|
|||
|
extends the Signer API, as do the <a class="reference internal" href="api-providers.html#signer-jsonrpc"><span class="std std-ref">JsonRpcSigner</span></a> and the
|
|||
|
<a class="reference external" href="https://github.com/ethers-io/ethers-ledger">Ledger Hardware Wallet Signer</a>.</p>
|
|||
|
<p>To implement a Signer, inherit the abstract class <em>ethers.types.Signer</em> and implement
|
|||
|
the following properties:</p>
|
|||
|
<dl class="docutils">
|
|||
|
<dt><sup>object</sup> . provider</dt>
|
|||
|
<dd>A <a class="reference internal" href="api-providers.html#api-provider"><span class="std std-ref">Provider</span></a> that is connected to the network. This is optional, however,
|
|||
|
without a <em>provider</em>, <strong>only</strong> <em>write-only</em> operations should be expected to work.</dd>
|
|||
|
<dt><sup>object</sup> . getAddress ( ) <sup>=></sup> <sup>Promise<Address></sup></dt>
|
|||
|
<dd>Returns a <a class="reference internal" href="notes.html#promise"><span class="std std-ref">Promise</span></a> that resolves to the account address.</dd>
|
|||
|
<dt><sup>object</sup> . signMessage ( message ) <sup>=></sup> <sup>Promise<hex></sup></dt>
|
|||
|
<dd><p class="first">Returns a <a class="reference internal" href="notes.html#promise"><span class="std std-ref">Promise</span></a> that resolves to the <a class="reference internal" href="api-utils.html#signature"><span class="std std-ref">Flat-Format Signature</span></a>
|
|||
|
for the <em>message</em>.</p>
|
|||
|
<p class="last">If <em>message</em> is a string, it is converted to UTF-8 bytes, otherwise it is
|
|||
|
preserved as a binary representation of the <a class="reference internal" href="api-utils.html#arrayish"><span class="std std-ref">Arrayish</span></a> data.</p>
|
|||
|
</dd>
|
|||
|
<dt><sup>object</sup> . sendTransaction ( transaction ) <sup>=></sup> <sup>Promise<TransactionResponse></sup></dt>
|
|||
|
<dd>Sends the <em>transaction</em> (see <a class="reference internal" href="api-providers.html#transaction-request"><span class="std std-ref">Transaction Requests</span></a>) to
|
|||
|
the network and returns a <a class="reference internal" href="notes.html#promise"><span class="std std-ref">Promise</span></a> that resolves to a
|
|||
|
<a class="reference internal" href="api-providers.html#transaction-response"><span class="std std-ref">Transaction Response</span></a>. Any properties that are not
|
|||
|
provided will be populated from the network.</dd>
|
|||
|
</dl>
|
|||
|
<hr class="docutils" />
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
</div>
|
|||
|
<footer>
|
|||
|
|
|||
|
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
|||
|
|
|||
|
<a href="api-providers.html" class="btn btn-neutral float-right" title="Providers" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
|
|||
|
|
|||
|
|
|||
|
<a href="api.html" class="btn btn-neutral" title="Application Programming Interface (API)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
<hr/>
|
|||
|
|
|||
|
<div role="contentinfo">
|
|||
|
<p>
|
|||
|
© Copyright 2016, Richard Moore <me@ricmoo.com>
|
|||
|
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|||
|
|
|||
|
</footer>
|
|||
|
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
</section>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
|||
|
<script type="text/javascript" src="_static/jquery.js"></script>
|
|||
|
<script type="text/javascript" src="_static/underscore.js"></script>
|
|||
|
<script type="text/javascript" src="_static/doctools.js"></script>
|
|||
|
<script type="text/javascript" src="_static/language_data.js"></script>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<script type="text/javascript" src="_static/js/theme.js"></script>
|
|||
|
|
|||
|
<script type="text/javascript">
|
|||
|
jQuery(function () {
|
|||
|
SphinxRtdTheme.Navigation.enable(true);
|
|||
|
});
|
|||
|
</script>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|