Files
web3.js/docs/_build/html/web3-eth-contract.html
T
2019-02-06 17:06:08 +01:00

998 lines
100 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>web3.eth.Contract &#8212; web3.js 1.0.0 documentation</title>
<link rel="stylesheet" href="_static/classic.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<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>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="web3.eth.accounts" href="web3-eth-accounts.html" />
<link rel="prev" title="web3.eth.subscribe" href="web3-eth-subscribe.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="web3-eth-accounts.html" title="web3.eth.accounts"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="web3-eth-subscribe.html" title="web3.eth.subscribe"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">web3.js 1.0.0 documentation</a> &#187;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="admonition note" id="eth-contract">
<p class="first admonition-title">Note</p>
<p class="last">This documentation is work in progress and web3.js 1.0 stable is not yet released! You can find the current documentation for web3 0.x.x at <a class="reference external" href="https://github.com/ethereum/wiki/wiki/JavaScript-API">github.com/ethereum/wiki/wiki/JavaScript-API</a>.</p>
</div>
<div class="section" id="web3-eth-contract">
<h1>web3.eth.Contract<a class="headerlink" href="#web3-eth-contract" title="Permalink to this headline"></a></h1>
<p>The <code class="docutils literal notranslate"><span class="pre">web3.eth.Contract</span></code> object makes it easy to interact with smart contracts on the ethereum blockchain.
When you create a new contract object you give it the json interface of the respective smart contract
and web3 will auto convert all calls into low level ABI calls over RPC for you.</p>
<p>This allows you to interact with smart contracts as if they were JavaScript objects.</p>
<p>To use it standalone:</p>
<hr class="docutils" />
<div class="section" id="new-contract">
<h2>new contract<a class="headerlink" href="#new-contract" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate" id="index-0"><div class="highlight"><pre><span></span><span class="k">new</span> <span class="nx">web3</span><span class="p">.</span><span class="nx">eth</span><span class="p">.</span><span class="nx">Contract</span><span class="p">(</span><span class="nx">jsonInterface</span><span class="p">,</span> <span class="nx">address</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span>
</pre></div>
</div>
<p>Creates a new contract instance with all its methods and events defined in its <a class="reference internal" href="glossary.html#glossary-json-interface"><span class="std std-ref">json interface</span></a> object.</p>
<div class="section" id="parameters">
<h3>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline"></a></h3>
<ol class="arabic simple">
<li><code class="docutils literal notranslate"><span class="pre">jsonInterface</span></code> - <code class="docutils literal notranslate"><span class="pre">Array</span></code>: The json interface for the contract to instantiate</li>
<li><code class="docutils literal notranslate"><span class="pre">address</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code> (optional): This address is necessary for transactions and call requests and can also be added later using <code class="docutils literal notranslate"><span class="pre">myContract.options.address</span> <span class="pre">=</span> <span class="pre">'0x1234..'.</span></code></li>
<li><dl class="first docutils">
<dt><code class="docutils literal notranslate"><span class="pre">options</span></code> - <code class="docutils literal notranslate"><span class="pre">Object</span></code> (optional): The options of the contract. Some are used as fallbacks for calls and transactions:</dt>
<dd><ul class="first last">
<li><code class="docutils literal notranslate"><span class="pre">from</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The address transactions should be made from.</li>
<li><code class="docutils literal notranslate"><span class="pre">gasPrice</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The gas price in wei to use for transactions. It is the wei per unit of gas.</li>
<li><code class="docutils literal notranslate"><span class="pre">gas</span></code> - <code class="docutils literal notranslate"><span class="pre">Number</span></code>: The maximum gas provided for a transaction (gas limit).</li>
<li><code class="docutils literal notranslate"><span class="pre">data</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The byte code of the contract. Used when the contract gets <a class="reference internal" href="#contract-deploy"><span class="std std-ref">deployed</span></a>.</li>
</ul>
</dd>
</dl>
</li>
</ol>
</div>
<div class="section" id="returns">
<h3>Returns<a class="headerlink" href="#returns" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">Object</span></code>: The contract instance with all its methods and events.</p>
</div>
<div class="section" id="example">
<h3>Example<a class="headerlink" href="#example" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">myContract</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">web3</span><span class="p">.</span><span class="nx">eth</span><span class="p">.</span><span class="nx">Contract</span><span class="p">([...],</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0x1234567890123456789012345678901234567891&#39;</span><span class="p">,</span> <span class="c1">// default from address</span>
<span class="nx">gasPrice</span><span class="o">:</span> <span class="s1">&#39;20000000000&#39;</span> <span class="c1">// default gas price in wei, 20 gwei in this case</span>
<span class="p">});</span>
</pre></div>
</div>
</div>
</div>
<hr class="docutils" />
<div class="section" id="properties">
<h2>= Properties =<a class="headerlink" href="#properties" title="Permalink to this headline"></a></h2>
</div>
<hr class="docutils" />
<div class="section" id="options">
<h2>options<a class="headerlink" href="#options" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">options</span>
</pre></div>
</div>
<p>The options <code class="docutils literal notranslate"><span class="pre">object</span></code> for the contract instance. <code class="docutils literal notranslate"><span class="pre">from</span></code>, <code class="docutils literal notranslate"><span class="pre">gas</span></code> and <code class="docutils literal notranslate"><span class="pre">gasPrice</span></code> are used as fallback values when sending transactions.</p>
<div class="section" id="id1">
<h3>Properties<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">Object</span></code> - options:</p>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">address</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The address where the contract is deployed. See <a class="reference internal" href="#contract-address"><span class="std std-ref">options.address</span></a>.</li>
<li><code class="docutils literal notranslate"><span class="pre">jsonInterface</span></code> - <code class="docutils literal notranslate"><span class="pre">Array</span></code>: The json interface of the contract. See <a class="reference internal" href="#contract-json-interface"><span class="std std-ref">options.jsonInterface</span></a>.</li>
<li><code class="docutils literal notranslate"><span class="pre">data</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The byte code of the contract. Used when the contract gets <a class="reference internal" href="#contract-deploy"><span class="std std-ref">deployed</span></a>.</li>
<li><code class="docutils literal notranslate"><span class="pre">from</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The address transactions should be made from.</li>
<li><code class="docutils literal notranslate"><span class="pre">gasPrice</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The gas price in wei to use for transactions.It is the wei per unit of gas.</li>
<li><code class="docutils literal notranslate"><span class="pre">gas</span></code> - <code class="docutils literal notranslate"><span class="pre">Number</span></code>: The maximum gas provided for a transaction (gas limit).</li>
</ul>
</div>
<div class="section" id="id2">
<h3>Example<a class="headerlink" href="#id2" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">options</span><span class="p">;</span>
<span class="o">&gt;</span> <span class="p">{</span>
<span class="nx">address</span><span class="o">:</span> <span class="s1">&#39;0x1234567890123456789012345678901234567891&#39;</span><span class="p">,</span>
<span class="nx">jsonInterface</span><span class="o">:</span> <span class="p">[...],</span>
<span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span><span class="p">,</span>
<span class="nx">gasPrice</span><span class="o">:</span> <span class="s1">&#39;10000000000000&#39;</span><span class="p">,</span>
<span class="nx">gas</span><span class="o">:</span> <span class="mi">1000000</span>
<span class="p">}</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">from</span> <span class="o">=</span> <span class="s1">&#39;0x1234567890123456789012345678901234567891&#39;</span><span class="p">;</span> <span class="c1">// default from address</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">gasPrice</span> <span class="o">=</span> <span class="s1">&#39;20000000000000&#39;</span><span class="p">;</span> <span class="c1">// default gas price in wei</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">gas</span> <span class="o">=</span> <span class="mi">5000000</span><span class="p">;</span> <span class="c1">// provide as fallback always 5M gas</span>
</pre></div>
</div>
<hr class="docutils" />
</div>
</div>
<div class="section" id="options-address">
<span id="contract-address"></span><h2>options.address<a class="headerlink" href="#options-address" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">address</span>
</pre></div>
</div>
<p>The address used for this contract instance.
All transactions generated by web3.js from this contract will contain this address as the “to”.</p>
<p>The address will be stored in lowercase.</p>
<div class="section" id="property">
<h3>Property<a class="headerlink" href="#property" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">address</span></code> - <code class="docutils literal notranslate"><span class="pre">String|null</span></code>: The address for this contract, or <code class="docutils literal notranslate"><span class="pre">null</span></code> if its not yet set.</p>
</div>
<div class="section" id="id3">
<h3>Example<a class="headerlink" href="#id3" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">address</span><span class="p">;</span>
<span class="o">&gt;</span> <span class="s1">&#39;0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae&#39;</span>
<span class="c1">// set a new address</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">address</span> <span class="o">=</span> <span class="s1">&#39;0x1234FFDD...&#39;</span><span class="p">;</span>
</pre></div>
</div>
<hr class="docutils" />
</div>
</div>
<div class="section" id="options-jsoninterface">
<span id="contract-json-interface"></span><h2>options.jsonInterface<a class="headerlink" href="#options-jsoninterface" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">jsonInterface</span>
</pre></div>
</div>
<p>The <a class="reference internal" href="glossary.html#glossary-json-interface"><span class="std std-ref">json interface</span></a> object derived from the <a class="reference external" href="https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI">ABI</a> of this contract.</p>
<div class="section" id="id4">
<h3>Property<a class="headerlink" href="#id4" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">jsonInterface</span></code> - <code class="docutils literal notranslate"><span class="pre">Array</span></code>: The <a class="reference internal" href="glossary.html#glossary-json-interface"><span class="std std-ref">json interface</span></a> for this contract. Re-setting this will regenerate the methods and events of the contract instance.</p>
</div>
<div class="section" id="id5">
<h3>Example<a class="headerlink" href="#id5" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">jsonInterface</span><span class="p">;</span>
<span class="o">&gt;</span> <span class="p">[{</span>
<span class="s2">&quot;type&quot;</span><span class="o">:</span><span class="s2">&quot;function&quot;</span><span class="p">,</span>
<span class="s2">&quot;name&quot;</span><span class="o">:</span><span class="s2">&quot;foo&quot;</span><span class="p">,</span>
<span class="s2">&quot;inputs&quot;</span><span class="o">:</span> <span class="p">[{</span><span class="s2">&quot;name&quot;</span><span class="o">:</span><span class="s2">&quot;a&quot;</span><span class="p">,</span><span class="s2">&quot;type&quot;</span><span class="o">:</span><span class="s2">&quot;uint256&quot;</span><span class="p">}],</span>
<span class="s2">&quot;outputs&quot;</span><span class="o">:</span> <span class="p">[{</span><span class="s2">&quot;name&quot;</span><span class="o">:</span><span class="s2">&quot;b&quot;</span><span class="p">,</span><span class="s2">&quot;type&quot;</span><span class="o">:</span><span class="s2">&quot;address&quot;</span><span class="p">}]</span>
<span class="p">},{</span>
<span class="s2">&quot;type&quot;</span><span class="o">:</span><span class="s2">&quot;event&quot;</span><span class="p">,</span>
<span class="s2">&quot;name&quot;</span><span class="o">:</span><span class="s2">&quot;Event&quot;</span><span class="p">,</span>
<span class="s2">&quot;inputs&quot;</span><span class="o">:</span> <span class="p">[{</span><span class="s2">&quot;name&quot;</span><span class="o">:</span><span class="s2">&quot;a&quot;</span><span class="p">,</span><span class="s2">&quot;type&quot;</span><span class="o">:</span><span class="s2">&quot;uint256&quot;</span><span class="p">,</span><span class="s2">&quot;indexed&quot;</span><span class="o">:</span><span class="kc">true</span><span class="p">},{</span><span class="s2">&quot;name&quot;</span><span class="o">:</span><span class="s2">&quot;b&quot;</span><span class="p">,</span><span class="s2">&quot;type&quot;</span><span class="o">:</span><span class="s2">&quot;bytes32&quot;</span><span class="p">,</span><span class="s2">&quot;indexed&quot;</span><span class="o">:</span><span class="kc">false</span><span class="p">}],</span>
<span class="p">}]</span>
<span class="c1">// set a new interface</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">jsonInterface</span> <span class="o">=</span> <span class="p">[...];</span>
</pre></div>
</div>
</div>
</div>
<hr class="docutils" />
<div class="section" id="methods">
<h2>= Methods =<a class="headerlink" href="#methods" title="Permalink to this headline"></a></h2>
</div>
<hr class="docutils" />
<div class="section" id="clone">
<h2>clone<a class="headerlink" href="#clone" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">clone</span><span class="p">()</span>
</pre></div>
</div>
<p>Clones the current contract instance.</p>
<div class="section" id="id6">
<h3>Parameters<a class="headerlink" href="#id6" title="Permalink to this headline"></a></h3>
<p>none</p>
</div>
<div class="section" id="id7">
<h3>Returns<a class="headerlink" href="#id7" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">Object</span></code>: The new contract instance.</p>
</div>
<div class="section" id="id8">
<h3>Example<a class="headerlink" href="#id8" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="kr">const</span> <span class="nx">contract1</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">eth</span><span class="p">.</span><span class="nx">Contract</span><span class="p">(</span><span class="nx">abi</span><span class="p">,</span> <span class="nx">address</span><span class="p">,</span> <span class="p">{</span><span class="nx">gasPrice</span><span class="o">:</span> <span class="s1">&#39;12345678&#39;</span><span class="p">,</span> <span class="nx">from</span><span class="o">:</span> <span class="nx">fromAddress</span><span class="p">});</span>
<span class="kr">const</span> <span class="nx">contract2</span> <span class="o">=</span> <span class="nx">contract1</span><span class="p">.</span><span class="nx">clone</span><span class="p">();</span>
<span class="nx">contract2</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">address</span> <span class="o">=</span> <span class="nx">address2</span><span class="p">;</span>
<span class="p">(</span><span class="nx">contract1</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">address</span> <span class="o">!==</span> <span class="nx">contract2</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">address</span><span class="p">);</span>
<span class="o">&gt;</span> <span class="kc">true</span>
</pre></div>
</div>
<hr class="docutils" />
<span class="target" id="contract-deploy"></span></div>
</div>
<div class="section" id="deploy">
<span id="index-1"></span><h2>deploy<a class="headerlink" href="#deploy" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">deploy</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span>
</pre></div>
</div>
<p>Call this function to deploy the contract to the blockchain.
After successful deployment the promise will resolve with a new contract instance.</p>
<div class="section" id="id9">
<h3>Parameters<a class="headerlink" href="#id9" title="Permalink to this headline"></a></h3>
<ol class="arabic simple">
<li><dl class="first docutils">
<dt><code class="docutils literal notranslate"><span class="pre">options</span></code> - <code class="docutils literal notranslate"><span class="pre">Object</span></code>: The options used for deployment.</dt>
<dd><ul class="first last">
<li><code class="docutils literal notranslate"><span class="pre">data</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The byte code of the contract.</li>
<li><code class="docutils literal notranslate"><span class="pre">arguments</span></code> - <code class="docutils literal notranslate"><span class="pre">Array</span></code> (optional): The arguments which get passed to the constructor on deployment.</li>
</ul>
</dd>
</dl>
</li>
</ol>
</div>
<div class="section" id="id10">
<h3>Returns<a class="headerlink" href="#id10" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">Object</span></code>: The transaction object:</p>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">Array</span></code> - arguments: The arguments passed to the method before. They can be changed.</li>
<li><code class="docutils literal notranslate"><span class="pre">Function</span></code> - <a class="reference internal" href="#contract-send"><span class="std std-ref">send</span></a>: Will deploy the contract. The promise will resolve with the new contract instance, instead of the receipt!</li>
<li><code class="docutils literal notranslate"><span class="pre">Function</span></code> - <a class="reference internal" href="#contract-estimategas"><span class="std std-ref">estimateGas</span></a>: Will estimate the gas used for deploying.</li>
<li><code class="docutils literal notranslate"><span class="pre">Function</span></code> - <a class="reference internal" href="#contract-encodeabi"><span class="std std-ref">encodeABI</span></a>: Encodes the ABI of the deployment, which is contract data + constructor parameters</li>
</ul>
<blockquote>
<div>For details to the methods see the documentation below.</div></blockquote>
</div>
<div class="section" id="id11">
<h3>Example<a class="headerlink" href="#id11" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">deploy</span><span class="p">({</span>
<span class="nx">data</span><span class="o">:</span> <span class="s1">&#39;0x12345...&#39;</span><span class="p">,</span>
<span class="nx">arguments</span><span class="o">:</span> <span class="p">[</span><span class="mi">123</span><span class="p">,</span> <span class="s1">&#39;My String&#39;</span><span class="p">]</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">send</span><span class="p">({</span>
<span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0x1234567890123456789012345678901234567891&#39;</span><span class="p">,</span>
<span class="nx">gas</span><span class="o">:</span> <span class="mi">1500000</span><span class="p">,</span>
<span class="nx">gasPrice</span><span class="o">:</span> <span class="s1">&#39;30000000000000&#39;</span>
<span class="p">},</span> <span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">transactionHash</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> <span class="p">...</span> <span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;error&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> <span class="p">...</span> <span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;transactionHash&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">transactionHash</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> <span class="p">...</span> <span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;receipt&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">receipt</span><span class="p">)</span> <span class="p">=&gt;</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">receipt</span><span class="p">.</span><span class="nx">contractAddress</span><span class="p">)</span> <span class="c1">// contains the new contract address</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;confirmation&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">confirmationNumber</span><span class="p">,</span> <span class="nx">receipt</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> <span class="p">...</span> <span class="p">})</span>
<span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">newContractInstance</span><span class="p">)</span> <span class="p">=&gt;</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">newContractInstance</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">address</span><span class="p">)</span> <span class="c1">// instance with the new contract address</span>
<span class="p">});</span>
<span class="c1">// When the data is already set as an option to the contract itself</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">data</span> <span class="o">=</span> <span class="s1">&#39;0x12345...&#39;</span><span class="p">;</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">deploy</span><span class="p">({</span>
<span class="nx">arguments</span><span class="o">:</span> <span class="p">[</span><span class="mi">123</span><span class="p">,</span> <span class="s1">&#39;My String&#39;</span><span class="p">]</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">send</span><span class="p">({</span>
<span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0x1234567890123456789012345678901234567891&#39;</span><span class="p">,</span>
<span class="nx">gas</span><span class="o">:</span> <span class="mi">1500000</span><span class="p">,</span>
<span class="nx">gasPrice</span><span class="o">:</span> <span class="s1">&#39;30000000000000&#39;</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">newContractInstance</span><span class="p">)</span> <span class="p">=&gt;</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">newContractInstance</span><span class="p">.</span><span class="nx">options</span><span class="p">.</span><span class="nx">address</span><span class="p">)</span> <span class="c1">// instance with the new contract address</span>
<span class="p">});</span>
<span class="c1">// Simply encoding</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">deploy</span><span class="p">({</span>
<span class="nx">data</span><span class="o">:</span> <span class="s1">&#39;0x12345...&#39;</span><span class="p">,</span>
<span class="nx">arguments</span><span class="o">:</span> <span class="p">[</span><span class="mi">123</span><span class="p">,</span> <span class="s1">&#39;My String&#39;</span><span class="p">]</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">encodeABI</span><span class="p">();</span>
<span class="o">&gt;</span> <span class="s1">&#39;0x12345...0000012345678765432&#39;</span>
<span class="c1">// Gas estimation</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">deploy</span><span class="p">({</span>
<span class="nx">data</span><span class="o">:</span> <span class="s1">&#39;0x12345...&#39;</span><span class="p">,</span>
<span class="nx">arguments</span><span class="o">:</span> <span class="p">[</span><span class="mi">123</span><span class="p">,</span> <span class="s1">&#39;My String&#39;</span><span class="p">]</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">estimateGas</span><span class="p">((</span><span class="nx">err</span><span class="p">,</span> <span class="nx">gas</span><span class="p">)</span> <span class="p">=&gt;</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">gas</span><span class="p">);</span>
<span class="p">});</span>
</pre></div>
</div>
</div>
</div>
<hr class="docutils" />
<div class="section" id="id12">
<h2>methods<a class="headerlink" href="#id12" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">([</span><span class="nx">param1</span><span class="p">[,</span> <span class="nx">param2</span><span class="p">[,</span> <span class="p">...]]])</span>
</pre></div>
</div>
<p>Creates a transaction object for that method, which then can be <a class="reference internal" href="#contract-call"><span class="std std-ref">called</span></a>, <a class="reference internal" href="#contract-send"><span class="std std-ref">send</span></a>, <span class="xref std std-ref">estimated</span>.</p>
<p>The methods of this smart contract are available through:</p>
<ul class="simple">
<li>The name: <code class="docutils literal notranslate"><span class="pre">myContract.methods.myMethod(123)</span></code></li>
<li>The name with parameters: <code class="docutils literal notranslate"><span class="pre">myContract.methods['myMethod(uint256)'](123)</span></code></li>
<li>The signature: <code class="docutils literal notranslate"><span class="pre">myContract.methods['0x58cf5f10'](123)</span></code></li>
</ul>
<p>This allows calling functions with same name but different parameters from the JavaScript contract object.</p>
<div class="section" id="id13">
<h3>Parameters<a class="headerlink" href="#id13" title="Permalink to this headline"></a></h3>
<p>Parameters of any method depend on the smart contracts methods, defined in the <a class="reference internal" href="glossary.html#glossary-json-interface"><span class="std std-ref">JSON interface</span></a>.</p>
</div>
<div class="section" id="id14">
<h3>Returns<a class="headerlink" href="#id14" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">Object</span></code>: The Transaction Object:</p>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">Array</span></code> - arguments: The arguments passed to the method before. They can be changed.</li>
<li><code class="docutils literal notranslate"><span class="pre">Function</span></code> - <a class="reference internal" href="#contract-call"><span class="std std-ref">call</span></a>: Will call the “constant” method and execute its smart contract method in the EVM without sending a transaction (Cant alter the smart contract state).</li>
<li><code class="docutils literal notranslate"><span class="pre">Function</span></code> - <a class="reference internal" href="#contract-send"><span class="std std-ref">send</span></a>: Will send a transaction to the smart contract and execute its method (Can alter the smart contract state).</li>
<li><code class="docutils literal notranslate"><span class="pre">Function</span></code> - <a class="reference internal" href="#contract-estimategas"><span class="std std-ref">estimateGas</span></a>: Will estimate the gas used when the method would be executed on chain.</li>
<li><code class="docutils literal notranslate"><span class="pre">Function</span></code> - <a class="reference internal" href="#contract-encodeabi"><span class="std std-ref">encodeABI</span></a>: Encodes the ABI for this method. This can be send using a transaction, call the method or passing into another smart contracts method as argument.</li>
</ul>
<blockquote>
<div>For details to the methods see the documentation below.</div></blockquote>
</div>
<div class="section" id="id15">
<h3>Example<a class="headerlink" href="#id15" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="c1">// calling a method</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">(</span><span class="mi">123</span><span class="p">).</span><span class="nx">call</span><span class="p">({</span><span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span><span class="p">},</span> <span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">result</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="p">...</span>
<span class="p">});</span>
<span class="c1">// or sending and using a promise</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">(</span><span class="mi">123</span><span class="p">).</span><span class="nx">send</span><span class="p">({</span><span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span><span class="p">})</span>
<span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">receipt</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="c1">// receipt can also be a new contract instance, when coming from a &quot;contract.deploy({...}).send()&quot;</span>
<span class="p">});</span>
<span class="c1">// or sending and using the events</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">(</span><span class="mi">123</span><span class="p">).</span><span class="nx">send</span><span class="p">({</span><span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span><span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;transactionHash&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">hash</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="p">...</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;receipt&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">receipt</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="p">...</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;confirmation&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">confirmationNumber</span><span class="p">,</span> <span class="nx">receipt</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="p">...</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;error&#39;</span><span class="p">,</span> <span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">);</span>
</pre></div>
</div>
<hr class="docutils" />
</div>
</div>
<div class="section" id="methods-mymethod-call">
<span id="contract-call"></span><h2>methods.myMethod.call<a class="headerlink" href="#methods-mymethod-call" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">([</span><span class="nx">param1</span><span class="p">[,</span> <span class="nx">param2</span><span class="p">[,</span> <span class="p">...]]]).</span><span class="nx">call</span><span class="p">(</span><span class="nx">transactionObject</span><span class="p">,</span> <span class="nx">blockNumber</span><span class="p">,</span> <span class="nx">callback</span><span class="p">])</span>
</pre></div>
</div>
<p>Will call a “constant” method and execute its smart contract method in the EVM without sending any transaction. Note calling can not alter the smart contract state.</p>
<div class="section" id="id16">
<h3>Parameters<a class="headerlink" href="#id16" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">options</span></code> - <code class="docutils literal notranslate"><span class="pre">Object</span></code> (optional): The options used for calling.
1.* <code class="docutils literal notranslate"><span class="pre">transactionObject</span></code></p>
<blockquote>
<div><ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">from</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code> (optional): The address the call “transaction” should be made from.</li>
<li><code class="docutils literal notranslate"><span class="pre">gasPrice</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code> (optional): The gas price in wei to use for this call “transaction”.It is the wei per unit of gas.</li>
<li><code class="docutils literal notranslate"><span class="pre">gas</span></code> - <code class="docutils literal notranslate"><span class="pre">Number</span></code> (optional): The maximum gas provided for this call “transaction” (gas limit).</li>
</ul>
</div></blockquote>
<p>2.*``blockNumber`` - <code class="docutils literal notranslate"><span class="pre">Number</span></code>: The block number this log was created in. <code class="docutils literal notranslate"><span class="pre">null</span></code> when still pending.
3.*``callback`` - <code class="docutils literal notranslate"><span class="pre">Function</span></code> (optional): This callback will be fired with the result of the smart contract method execution as the second argument, or with an error object as the first argument.</p>
</div>
<div class="section" id="id17">
<h3>Returns<a class="headerlink" href="#id17" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">Promise&lt;any&gt;</span></code> - The return value(s) of the smart contract method.
If it returns a single value, its returned as is. If it has multiple return values they are returned as an object with properties and indices:</p>
</div>
<div class="section" id="id18">
<h3>Example<a class="headerlink" href="#id18" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="c1">// using the callback</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">(</span><span class="mi">123</span><span class="p">).</span><span class="nx">call</span><span class="p">({</span><span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span><span class="p">},</span> <span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">result</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="p">...</span>
<span class="p">});</span>
<span class="c1">// using the promise</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">(</span><span class="mi">123</span><span class="p">).</span><span class="nx">call</span><span class="p">({</span><span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span><span class="p">})</span>
<span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">result</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="p">...</span>
<span class="p">});</span>
<span class="c1">// MULTI-ARGUMENT RETURN:</span>
<span class="c1">// Solidity</span>
<span class="nx">contract</span> <span class="nx">MyContract</span> <span class="p">{</span>
<span class="kd">function</span> <span class="nx">myFunction</span><span class="p">()</span> <span class="nx">returns</span><span class="p">(</span><span class="nx">uint256</span> <span class="nx">myNumber</span><span class="p">,</span> <span class="nx">string</span> <span class="nx">myString</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">(</span><span class="mi">23456</span><span class="p">,</span> <span class="s2">&quot;Hello!%&quot;</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="c1">// web3.js</span>
<span class="kr">const</span> <span class="nx">MyContract</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">web3</span><span class="p">.</span><span class="nx">eth</span><span class="p">.</span><span class="nx">Contract</span><span class="p">(</span><span class="nx">abi</span><span class="p">,</span> <span class="nx">address</span><span class="p">);</span>
<span class="nx">MyContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myFunction</span><span class="p">().</span><span class="nx">call</span><span class="p">()</span>
<span class="p">.</span><span class="nx">then</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="o">&gt;</span> <span class="nx">Result</span> <span class="p">{</span>
<span class="nx">myNumber</span><span class="o">:</span> <span class="s1">&#39;23456&#39;</span><span class="p">,</span>
<span class="nx">myString</span><span class="o">:</span> <span class="s1">&#39;Hello!%&#39;</span><span class="p">,</span>
<span class="mi">0</span><span class="o">:</span> <span class="s1">&#39;23456&#39;</span><span class="p">,</span> <span class="c1">// these are here as fallbacks if the name is not know or given</span>
<span class="mi">1</span><span class="o">:</span> <span class="s1">&#39;Hello!%&#39;</span>
<span class="p">}</span>
<span class="c1">// SINGLE-ARGUMENT RETURN:</span>
<span class="c1">// Solidity</span>
<span class="nx">contract</span> <span class="nx">MyContract</span> <span class="p">{</span>
<span class="kd">function</span> <span class="nx">myFunction</span><span class="p">()</span> <span class="nx">returns</span><span class="p">(</span><span class="nx">string</span> <span class="nx">myString</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="s2">&quot;Hello!%&quot;</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="c1">// web3.js</span>
<span class="kr">const</span> <span class="nx">MyContract</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">web3</span><span class="p">.</span><span class="nx">eth</span><span class="p">.</span><span class="nx">Contract</span><span class="p">(</span><span class="nx">abi</span><span class="p">,</span> <span class="nx">address</span><span class="p">);</span>
<span class="nx">MyContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myFunction</span><span class="p">().</span><span class="nx">call</span><span class="p">()</span>
<span class="p">.</span><span class="nx">then</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="o">&gt;</span> <span class="s2">&quot;Hello!%&quot;</span>
</pre></div>
</div>
<hr class="docutils" />
</div>
</div>
<div class="section" id="methods-mymethod-send">
<span id="contract-send"></span><h2>methods.myMethod.send<a class="headerlink" href="#methods-mymethod-send" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">([</span><span class="nx">param1</span><span class="p">[,</span> <span class="nx">param2</span><span class="p">[,</span> <span class="p">...]]]).</span><span class="nx">send</span><span class="p">(</span><span class="nx">options</span><span class="p">[,</span> <span class="nx">callback</span><span class="p">])</span>
</pre></div>
</div>
<p>Will send a transaction to the smart contract and execute its method. Note this can alter the smart contract state.</p>
<div class="section" id="id19">
<h3>Parameters<a class="headerlink" href="#id19" title="Permalink to this headline"></a></h3>
<ol class="arabic simple">
<li><dl class="first docutils">
<dt><code class="docutils literal notranslate"><span class="pre">options</span></code> - <code class="docutils literal notranslate"><span class="pre">Object</span></code>: The options used for sending.</dt>
<dd><ul class="first last">
<li><code class="docutils literal notranslate"><span class="pre">from</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The address the transaction should be sent from.</li>
<li><code class="docutils literal notranslate"><span class="pre">gasPrice</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code> (optional): The gas price in wei to use for this transaction.It is the wei per unit of gas.</li>
<li><code class="docutils literal notranslate"><span class="pre">gas</span></code> - <code class="docutils literal notranslate"><span class="pre">Number</span></code> (optional): The maximum gas provided for this transaction (gas limit).</li>
<li><code class="docutils literal notranslate"><span class="pre">value</span></code> - <a href="#id20"><span class="problematic" id="id21">``</span></a>Number|String|BN|BigNumber``(optional): The value transferred for the transaction in wei.</li>
</ul>
</dd>
</dl>
</li>
<li><code class="docutils literal notranslate"><span class="pre">callback</span></code> - <code class="docutils literal notranslate"><span class="pre">Function</span></code> (optional): This callback will be fired first with the “transactionHash”, or with an error object as the first argument.</li>
</ol>
</div>
<div class="section" id="id22">
<h3>Returns<a class="headerlink" href="#id22" title="Permalink to this headline"></a></h3>
<p>The <strong>callback</strong> will return the 32 bytes transaction hash.</p>
<p><code class="docutils literal notranslate"><span class="pre">PromiEvent</span></code>: A <a class="reference internal" href="callbacks-promises-events.html#promievent"><span class="std std-ref">promise combined event emitter</span></a>. Will be resolved when the transaction <em>receipt</em> is available, OR if this <code class="docutils literal notranslate"><span class="pre">send()</span></code> is called from a <code class="docutils literal notranslate"><span class="pre">someContract.deploy()</span></code>, then the promise will resolve with the <em>new contract instance</em>. Additionally the following events are available:</p>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">&quot;transactionHash&quot;</span></code> returns <code class="docutils literal notranslate"><span class="pre">String</span></code>: is fired right after the transaction is sent and a transaction hash is available.</li>
<li><code class="docutils literal notranslate"><span class="pre">&quot;receipt&quot;</span></code> returns <code class="docutils literal notranslate"><span class="pre">Object</span></code>: is fired when the transaction <em>receipt</em> is available. Receipts from contracts will have no <code class="docutils literal notranslate"><span class="pre">logs</span></code> property, but instead an <code class="docutils literal notranslate"><span class="pre">events</span></code> property with event names as keys and events as properties. See <a class="reference internal" href="#contract-events-return"><span class="std std-ref">getPastEvents return values</span></a> for details about the returned event object.</li>
<li><code class="docutils literal notranslate"><span class="pre">&quot;confirmation&quot;</span></code> returns <code class="docutils literal notranslate"><span class="pre">Number</span></code>, <code class="docutils literal notranslate"><span class="pre">Object</span></code>: is fired for every confirmation up to the 24th confirmation. Receives the confirmation number as the first and the receipt as the second argument. Fired from confirmation 1 on, which is the block where its mined.</li>
<li><code class="docutils literal notranslate"><span class="pre">&quot;error&quot;</span></code> returns <code class="docutils literal notranslate"><span class="pre">Error</span></code>: is fired if an error occurs during sending. If an out of gas error, the second parameter is the receipt.</li>
</ul>
</div>
<div class="section" id="id23">
<h3>Example<a class="headerlink" href="#id23" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="c1">// using the callback</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">(</span><span class="mi">123</span><span class="p">).</span><span class="nx">send</span><span class="p">({</span><span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span><span class="p">},</span> <span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">transactionHash</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="p">...</span>
<span class="p">});</span>
<span class="c1">// using the promise</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">(</span><span class="mi">123</span><span class="p">).</span><span class="nx">send</span><span class="p">({</span><span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span><span class="p">})</span>
<span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">receipt</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="c1">// receipt can also be a new contract instance, when coming from a &quot;contract.deploy({...}).send()&quot;</span>
<span class="p">});</span>
<span class="c1">// using the event emitter</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">(</span><span class="mi">123</span><span class="p">).</span><span class="nx">send</span><span class="p">({</span><span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span><span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;transactionHash&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">hash</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="p">...</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;confirmation&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">confirmationNumber</span><span class="p">,</span> <span class="nx">receipt</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="p">...</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;receipt&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">receipt</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="c1">// receipt example</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">receipt</span><span class="p">);</span>
<span class="o">&gt;</span> <span class="p">{</span>
<span class="s2">&quot;transactionHash&quot;</span><span class="o">:</span> <span class="s2">&quot;0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b&quot;</span><span class="p">,</span>
<span class="s2">&quot;transactionIndex&quot;</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="s2">&quot;blockHash&quot;</span><span class="o">:</span> <span class="s2">&quot;0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46&quot;</span><span class="p">,</span>
<span class="s2">&quot;blockNumber&quot;</span><span class="o">:</span> <span class="mi">3</span><span class="p">,</span>
<span class="s2">&quot;contractAddress&quot;</span><span class="o">:</span> <span class="s2">&quot;0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe&quot;</span><span class="p">,</span>
<span class="s2">&quot;cumulativeGasUsed&quot;</span><span class="o">:</span> <span class="mi">314159</span><span class="p">,</span>
<span class="s2">&quot;gasUsed&quot;</span><span class="o">:</span> <span class="mi">30234</span><span class="p">,</span>
<span class="s2">&quot;events&quot;</span><span class="o">:</span> <span class="p">{</span>
<span class="s2">&quot;MyEvent&quot;</span><span class="o">:</span> <span class="p">{</span>
<span class="nx">returnValues</span><span class="o">:</span> <span class="p">{</span>
<span class="nx">myIndexedParam</span><span class="o">:</span> <span class="mi">20</span><span class="p">,</span>
<span class="nx">myOtherIndexedParam</span><span class="o">:</span> <span class="s1">&#39;0x123456789...&#39;</span><span class="p">,</span>
<span class="nx">myNonIndexParam</span><span class="o">:</span> <span class="s1">&#39;My String&#39;</span>
<span class="p">},</span>
<span class="nx">raw</span><span class="o">:</span> <span class="p">{</span>
<span class="nx">data</span><span class="o">:</span> <span class="s1">&#39;0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385&#39;</span><span class="p">,</span>
<span class="nx">topics</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7&#39;</span><span class="p">,</span> <span class="s1">&#39;0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385&#39;</span><span class="p">]</span>
<span class="p">},</span>
<span class="nx">event</span><span class="o">:</span> <span class="s1">&#39;MyEvent&#39;</span><span class="p">,</span>
<span class="nx">signature</span><span class="o">:</span> <span class="s1">&#39;0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7&#39;</span><span class="p">,</span>
<span class="nx">logIndex</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">transactionIndex</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">transactionHash</span><span class="o">:</span> <span class="s1">&#39;0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385&#39;</span><span class="p">,</span>
<span class="nx">blockHash</span><span class="o">:</span> <span class="s1">&#39;0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7&#39;</span><span class="p">,</span>
<span class="nx">blockNumber</span><span class="o">:</span> <span class="mi">1234</span><span class="p">,</span>
<span class="nx">address</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span>
<span class="p">},</span>
<span class="s2">&quot;MyOtherEvent&quot;</span><span class="o">:</span> <span class="p">{</span>
<span class="p">...</span>
<span class="p">},</span>
<span class="s2">&quot;MyMultipleEvent&quot;</span><span class="o">:</span><span class="p">[{...},</span> <span class="p">{...}]</span> <span class="c1">// If there are multiple of the same event, they will be in an array</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;error&#39;</span><span class="p">,</span> <span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">);</span> <span class="c1">// If there&#39;s an out of gas error the second parameter is the receipt.</span>
</pre></div>
</div>
<hr class="docutils" />
</div>
</div>
<div class="section" id="methods-mymethod-estimategas">
<span id="contract-estimategas"></span><h2>methods.myMethod.estimateGas<a class="headerlink" href="#methods-mymethod-estimategas" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">([</span><span class="nx">param1</span><span class="p">[,</span> <span class="nx">param2</span><span class="p">[,</span> <span class="p">...]]]).</span><span class="nx">estimateGas</span><span class="p">(</span><span class="nx">options</span><span class="p">[,</span> <span class="nx">callback</span><span class="p">])</span>
</pre></div>
</div>
<p>Will call estimate the gas a method execution will take when executed in the EVM without.
The estimation can differ from the actual gas used when later sending a transaction, as the state of the smart contract can be different at that time.</p>
<div class="section" id="id24">
<h3>Parameters<a class="headerlink" href="#id24" title="Permalink to this headline"></a></h3>
<ol class="arabic simple">
<li><dl class="first docutils">
<dt><code class="docutils literal notranslate"><span class="pre">options</span></code> - <code class="docutils literal notranslate"><span class="pre">Object</span></code> (optional): The options used for calling.</dt>
<dd><ul class="first last">
<li><code class="docutils literal notranslate"><span class="pre">from</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code> (optional): The address the call “transaction” should be made from.</li>
<li><code class="docutils literal notranslate"><span class="pre">gas</span></code> - <code class="docutils literal notranslate"><span class="pre">Number</span></code> (optional): The maximum gas provided for this call “transaction” (gas limit). Setting a specific value helps to detect out of gas errors. If all gas is used it will return the same number.</li>
<li><code class="docutils literal notranslate"><span class="pre">value</span></code> - <a href="#id25"><span class="problematic" id="id26">``</span></a>Number|String|BN|BigNumber``(optional): The value transferred for the call “transaction” in wei.</li>
</ul>
</dd>
</dl>
</li>
<li><code class="docutils literal notranslate"><span class="pre">callback</span></code> - <code class="docutils literal notranslate"><span class="pre">Function</span></code> (optional): This callback will be fired with the result of the gas estimation as the second argument, or with an error object as the first argument.</li>
</ol>
</div>
<div class="section" id="id27">
<h3>Returns<a class="headerlink" href="#id27" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">Promise&lt;number&gt;</span></code> - The gas amount estimated.</p>
</div>
<div class="section" id="id28">
<h3>Example<a class="headerlink" href="#id28" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="c1">// using the callback</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">(</span><span class="mi">123</span><span class="p">).</span><span class="nx">estimateGas</span><span class="p">({</span><span class="nx">gas</span><span class="o">:</span> <span class="mi">5000000</span><span class="p">},</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">gasAmount</span><span class="p">){</span>
<span class="k">if</span><span class="p">(</span><span class="nx">gasAmount</span> <span class="o">==</span> <span class="mi">5000000</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="s1">&#39;Method ran out of gas&#39;</span><span class="p">);</span>
<span class="p">});</span>
<span class="c1">// using the promise</span>
<span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">(</span><span class="mi">123</span><span class="p">).</span><span class="nx">estimateGas</span><span class="p">({</span><span class="nx">from</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span><span class="p">})</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">gasAmount</span><span class="p">){</span>
<span class="p">...</span>
<span class="p">})</span>
<span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">){</span>
<span class="p">...</span>
<span class="p">});</span>
</pre></div>
</div>
<hr class="docutils" />
</div>
</div>
<div class="section" id="methods-mymethod-encodeabi">
<span id="contract-encodeabi"></span><h2>methods.myMethod.encodeABI<a class="headerlink" href="#methods-mymethod-encodeabi" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">([</span><span class="nx">param1</span><span class="p">[,</span> <span class="nx">param2</span><span class="p">[,</span> <span class="p">...]]]).</span><span class="nx">encodeABI</span><span class="p">()</span>
</pre></div>
</div>
<p>Encodes the ABI for this method. This can be used to send a transaction, call a method, or pass it into another smart contracts method as arguments.</p>
<div class="section" id="id29">
<h3>Parameters<a class="headerlink" href="#id29" title="Permalink to this headline"></a></h3>
<p>none</p>
</div>
<div class="section" id="id30">
<h3>Returns<a class="headerlink" href="#id30" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">String</span></code>: The encoded ABI byte code to send via a transaction or call.</p>
</div>
<div class="section" id="id31">
<h3>Example<a class="headerlink" href="#id31" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">methods</span><span class="p">.</span><span class="nx">myMethod</span><span class="p">(</span><span class="mi">123</span><span class="p">).</span><span class="nx">encodeABI</span><span class="p">();</span>
<span class="o">&gt;</span> <span class="s1">&#39;0x58cf5f1000000000000000000000000000000000000000000000000000000000000007B&#39;</span>
</pre></div>
</div>
</div>
</div>
<hr class="docutils" />
<div class="section" id="events">
<h2>= Events =<a class="headerlink" href="#events" title="Permalink to this headline"></a></h2>
</div>
<hr class="docutils" />
<div class="section" id="once">
<h2>once<a class="headerlink" href="#once" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="nx">event</span><span class="p">[,</span> <span class="nx">options</span><span class="p">],</span> <span class="nx">callback</span><span class="p">)</span>
</pre></div>
</div>
<p>Subscribes to an event and unsubscribes immediately after the first event or error. Will only fire for a single event.</p>
<div class="section" id="id32">
<h3>Parameters<a class="headerlink" href="#id32" title="Permalink to this headline"></a></h3>
<ol class="arabic simple">
<li><code class="docutils literal notranslate"><span class="pre">event</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The name of the event in the contract, or <code class="docutils literal notranslate"><span class="pre">&quot;allEvents&quot;</span></code> to get all events.</li>
<li><dl class="first docutils">
<dt><code class="docutils literal notranslate"><span class="pre">options</span></code> - <code class="docutils literal notranslate"><span class="pre">Object</span></code> (optional): The options used for deployment.</dt>
<dd><ul class="first last">
<li><code class="docutils literal notranslate"><span class="pre">filter</span></code> - <code class="docutils literal notranslate"><span class="pre">Object</span></code> (optional): Lets you filter events by indexed parameters, e.g. <code class="docutils literal notranslate"><span class="pre">{filter:</span> <span class="pre">{myNumber:</span> <span class="pre">[12,13]}}</span></code> means all events where “myNumber” is 12 or 13.</li>
<li><code class="docutils literal notranslate"><span class="pre">topics</span></code> - <code class="docutils literal notranslate"><span class="pre">Array</span></code> (optional): This allows you to manually set the topics for the event filter. If given the filter property and event signature, (topic[0]) will not be set automatically.</li>
</ul>
</dd>
</dl>
</li>
<li><code class="docutils literal notranslate"><span class="pre">callback</span></code> - <code class="docutils literal notranslate"><span class="pre">Function</span></code>: This callback will be fired for the first <em>event</em> as the second argument, or an error as the first argument. See <a class="reference internal" href="#contract-events-return"><span class="std std-ref">getPastEvents return values</span></a> for details about the event structure.</li>
</ol>
</div>
<div class="section" id="id33">
<h3>Returns<a class="headerlink" href="#id33" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">undefined</span></code></p>
</div>
<div class="section" id="id34">
<h3>Example<a class="headerlink" href="#id34" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="s1">&#39;MyEvent&#39;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">filter</span><span class="o">:</span> <span class="p">{</span><span class="nx">myIndexedParam</span><span class="o">:</span> <span class="p">[</span><span class="mi">20</span><span class="p">,</span><span class="mi">23</span><span class="p">],</span> <span class="nx">myOtherIndexedParam</span><span class="o">:</span> <span class="s1">&#39;0x123456789...&#39;</span><span class="p">},</span> <span class="c1">// Using an array means OR: e.g. 20 or 23</span>
<span class="nx">fromBlock</span><span class="o">:</span> <span class="mi">0</span>
<span class="p">},</span> <span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">event</span><span class="p">)</span> <span class="p">=&gt;</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">event</span><span class="p">);</span> <span class="p">});</span>
<span class="c1">// event output example</span>
<span class="o">&gt;</span> <span class="p">{</span>
<span class="nx">returnValues</span><span class="o">:</span> <span class="p">{</span>
<span class="nx">myIndexedParam</span><span class="o">:</span> <span class="mi">20</span><span class="p">,</span>
<span class="nx">myOtherIndexedParam</span><span class="o">:</span> <span class="s1">&#39;0x123456789...&#39;</span><span class="p">,</span>
<span class="nx">myNonIndexParam</span><span class="o">:</span> <span class="s1">&#39;My String&#39;</span>
<span class="p">},</span>
<span class="nx">raw</span><span class="o">:</span> <span class="p">{</span>
<span class="nx">data</span><span class="o">:</span> <span class="s1">&#39;0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385&#39;</span><span class="p">,</span>
<span class="nx">topics</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7&#39;</span><span class="p">,</span> <span class="s1">&#39;0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385&#39;</span><span class="p">]</span>
<span class="p">},</span>
<span class="nx">event</span><span class="o">:</span> <span class="s1">&#39;MyEvent&#39;</span><span class="p">,</span>
<span class="nx">signature</span><span class="o">:</span> <span class="s1">&#39;0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7&#39;</span><span class="p">,</span>
<span class="nx">logIndex</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">transactionIndex</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">transactionHash</span><span class="o">:</span> <span class="s1">&#39;0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385&#39;</span><span class="p">,</span>
<span class="nx">blockHash</span><span class="o">:</span> <span class="s1">&#39;0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7&#39;</span><span class="p">,</span>
<span class="nx">blockNumber</span><span class="o">:</span> <span class="mi">1234</span><span class="p">,</span>
<span class="nx">address</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span>
<span class="p">}</span>
</pre></div>
</div>
<hr class="docutils" />
</div>
</div>
<div class="section" id="contract-events">
<span id="id35"></span><h2>events<a class="headerlink" href="#contract-events" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">MyEvent</span><span class="p">([</span><span class="nx">options</span><span class="p">][,</span> <span class="nx">callback</span><span class="p">])</span>
</pre></div>
</div>
<p>Subscribe to an event</p>
<div class="section" id="id36">
<h3>Parameters<a class="headerlink" href="#id36" title="Permalink to this headline"></a></h3>
<ol class="arabic simple">
<li><dl class="first docutils">
<dt><code class="docutils literal notranslate"><span class="pre">options</span></code> - <code class="docutils literal notranslate"><span class="pre">Object</span></code> (optional): The options used for deployment.</dt>
<dd><ul class="first last">
<li><code class="docutils literal notranslate"><span class="pre">filter</span></code> - <code class="docutils literal notranslate"><span class="pre">Object</span></code> (optional): Let you filter events by indexed parameters, e.g. <code class="docutils literal notranslate"><span class="pre">{filter:</span> <span class="pre">{myNumber:</span> <span class="pre">[12,13]}}</span></code> means all events where “myNumber” is 12 or 13.</li>
<li><code class="docutils literal notranslate"><span class="pre">fromBlock</span></code> - <code class="docutils literal notranslate"><span class="pre">Number</span></code> (optional): The block number from which to get events on.</li>
<li><code class="docutils literal notranslate"><span class="pre">topics</span></code> - <code class="docutils literal notranslate"><span class="pre">Array</span></code> (optional): This allows to manually set the topics for the event filter. If given the filter property and event signature, (topic[0]) will not be set automatically.</li>
</ul>
</dd>
</dl>
</li>
<li><code class="docutils literal notranslate"><span class="pre">callback</span></code> - <code class="docutils literal notranslate"><span class="pre">Function</span></code> (optional): This callback will be fired for each <em>event</em> as the second argument, or an error as the first argument.</li>
</ol>
</div>
<div class="section" id="contract-events-return">
<span id="id37"></span><h3>Returns<a class="headerlink" href="#contract-events-return" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">EventEmitter</span></code>: The event emitter has the following events:</p>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">&quot;data&quot;</span></code> returns <code class="docutils literal notranslate"><span class="pre">Object</span></code>: Fires on each incoming event with the event object as argument.</li>
<li><code class="docutils literal notranslate"><span class="pre">&quot;changed&quot;</span></code> returns <code class="docutils literal notranslate"><span class="pre">Object</span></code>: Fires on each event which was removed from the blockchain. The event will have the additional property <code class="docutils literal notranslate"><span class="pre">&quot;removed:</span> <span class="pre">true&quot;</span></code>.</li>
<li><code class="docutils literal notranslate"><span class="pre">&quot;error&quot;</span></code> returns <code class="docutils literal notranslate"><span class="pre">Object</span></code>: Fires when an error in the subscription occours.</li>
</ul>
<p>The structure of the returned event <code class="docutils literal notranslate"><span class="pre">Object</span></code> looks as follows:</p>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">event</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The event name.</li>
<li><code class="docutils literal notranslate"><span class="pre">signature</span></code> - <code class="docutils literal notranslate"><span class="pre">String|Null</span></code>: The event signature, <code class="docutils literal notranslate"><span class="pre">null</span></code> if its an anonymous event.</li>
<li><code class="docutils literal notranslate"><span class="pre">address</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: Address this event originated from.</li>
<li><code class="docutils literal notranslate"><span class="pre">returnValues</span></code> - <code class="docutils literal notranslate"><span class="pre">Object</span></code>: The return values coming from the event, e.g. <code class="docutils literal notranslate"><span class="pre">{myVar:</span> <span class="pre">1,</span> <span class="pre">myVar2:</span> <span class="pre">'0x234...'}</span></code>.</li>
<li><code class="docutils literal notranslate"><span class="pre">logIndex</span></code> - <code class="docutils literal notranslate"><span class="pre">Number</span></code>: Integer of the event index position in the block.</li>
<li><code class="docutils literal notranslate"><span class="pre">transactionIndex</span></code> - <code class="docutils literal notranslate"><span class="pre">Number</span></code>: Integer of the transactions index position the event was created in.</li>
<li><code class="docutils literal notranslate"><span class="pre">transactionHash</span></code> 32 Bytes - <code class="docutils literal notranslate"><span class="pre">String</span></code>: Hash of the transaction this event was created in.</li>
<li><code class="docutils literal notranslate"><span class="pre">blockHash</span></code> 32 Bytes - <code class="docutils literal notranslate"><span class="pre">String</span></code>: Hash of the block this event was created in. <code class="docutils literal notranslate"><span class="pre">null</span></code> when its still pending.</li>
<li><code class="docutils literal notranslate"><span class="pre">blockNumber</span></code> - <code class="docutils literal notranslate"><span class="pre">Number</span></code>: The block number this log was created in. <code class="docutils literal notranslate"><span class="pre">null</span></code> when still pending.</li>
<li><code class="docutils literal notranslate"><span class="pre">raw.data</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The data containing non-indexed log parameter.</li>
<li><code class="docutils literal notranslate"><span class="pre">raw.topics</span></code> - <code class="docutils literal notranslate"><span class="pre">Array</span></code>: An array with max 4 32 Byte topics, topic 1-3 contains indexed parameters of the event.</li>
</ul>
</div>
<div class="section" id="id38">
<h3>Example<a class="headerlink" href="#id38" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">MyEvent</span><span class="p">({</span>
<span class="nx">filter</span><span class="o">:</span> <span class="p">{</span><span class="nx">myIndexedParam</span><span class="o">:</span> <span class="p">[</span><span class="mi">20</span><span class="p">,</span><span class="mi">23</span><span class="p">],</span> <span class="nx">myOtherIndexedParam</span><span class="o">:</span> <span class="s1">&#39;0x123456789...&#39;</span><span class="p">},</span> <span class="c1">// Using an array means OR: e.g. 20 or 23</span>
<span class="nx">fromBlock</span><span class="o">:</span> <span class="mi">0</span>
<span class="p">},</span> <span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">event</span><span class="p">)</span> <span class="p">=&gt;</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">event</span><span class="p">);</span> <span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;data&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">=&gt;</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">event</span><span class="p">);</span> <span class="c1">// same results as the optional callback above</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;changed&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
<span class="c1">// remove event from local database</span>
<span class="p">})</span>
<span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;error&#39;</span><span class="p">,</span> <span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">);</span>
<span class="c1">// event output example</span>
<span class="o">&gt;</span> <span class="p">{</span>
<span class="nx">returnValues</span><span class="o">:</span> <span class="p">{</span>
<span class="nx">myIndexedParam</span><span class="o">:</span> <span class="mi">20</span><span class="p">,</span>
<span class="nx">myOtherIndexedParam</span><span class="o">:</span> <span class="s1">&#39;0x123456789...&#39;</span><span class="p">,</span>
<span class="nx">myNonIndexParam</span><span class="o">:</span> <span class="s1">&#39;My String&#39;</span>
<span class="p">},</span>
<span class="nx">raw</span><span class="o">:</span> <span class="p">{</span>
<span class="nx">data</span><span class="o">:</span> <span class="s1">&#39;0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385&#39;</span><span class="p">,</span>
<span class="nx">topics</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7&#39;</span><span class="p">,</span> <span class="s1">&#39;0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385&#39;</span><span class="p">]</span>
<span class="p">},</span>
<span class="nx">event</span><span class="o">:</span> <span class="s1">&#39;MyEvent&#39;</span><span class="p">,</span>
<span class="nx">signature</span><span class="o">:</span> <span class="s1">&#39;0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7&#39;</span><span class="p">,</span>
<span class="nx">logIndex</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">transactionIndex</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">transactionHash</span><span class="o">:</span> <span class="s1">&#39;0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385&#39;</span><span class="p">,</span>
<span class="nx">blockHash</span><span class="o">:</span> <span class="s1">&#39;0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7&#39;</span><span class="p">,</span>
<span class="nx">blockNumber</span><span class="o">:</span> <span class="mi">1234</span><span class="p">,</span>
<span class="nx">address</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
</div>
<hr class="docutils" />
<div class="section" id="events-allevents">
<h2>events.allEvents<a class="headerlink" href="#events-allevents" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">events</span><span class="p">.</span><span class="nx">allEvents</span><span class="p">([</span><span class="nx">options</span><span class="p">][,</span> <span class="nx">callback</span><span class="p">])</span>
</pre></div>
</div>
<p>Same as <a class="reference internal" href="#contract-events"><span class="std std-ref">events</span></a> but receives all events from this smart contract.
Optionally the filter property can filter those events.</p>
</div>
<hr class="docutils" />
<div class="section" id="getpastevents">
<h2>getPastEvents<a class="headerlink" href="#getpastevents" title="Permalink to this headline"></a></h2>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">getPastEvents</span><span class="p">(</span><span class="nx">event</span><span class="p">[,</span> <span class="nx">options</span><span class="p">][,</span> <span class="nx">callback</span><span class="p">])</span>
</pre></div>
</div>
<p>Gets past events for this contract.</p>
<div class="section" id="id39">
<h3>Parameters<a class="headerlink" href="#id39" title="Permalink to this headline"></a></h3>
<ol class="arabic simple">
<li><code class="docutils literal notranslate"><span class="pre">event</span></code> - <code class="docutils literal notranslate"><span class="pre">String</span></code>: The name of the event in the contract, or <code class="docutils literal notranslate"><span class="pre">&quot;allEvents&quot;</span></code> to get all events.</li>
<li><dl class="first docutils">
<dt><code class="docutils literal notranslate"><span class="pre">options</span></code> - <code class="docutils literal notranslate"><span class="pre">Object</span></code> (optional): The options used for deployment.</dt>
<dd><ul class="first last">
<li><code class="docutils literal notranslate"><span class="pre">filter</span></code> - <code class="docutils literal notranslate"><span class="pre">Object</span></code> (optional): Lets you filter events by indexed parameters, e.g. <code class="docutils literal notranslate"><span class="pre">{filter:</span> <span class="pre">{myNumber:</span> <span class="pre">[12,13]}}</span></code> means all events where “myNumber” is 12 or 13.</li>
<li><code class="docutils literal notranslate"><span class="pre">fromBlock</span></code> - <code class="docutils literal notranslate"><span class="pre">Number</span></code> (optional): The block number from which to get events on.</li>
<li><code class="docutils literal notranslate"><span class="pre">toBlock</span></code> - <code class="docutils literal notranslate"><span class="pre">Number</span></code> (optional): The block number to get events up to (Defaults to <code class="docutils literal notranslate"><span class="pre">&quot;latest&quot;</span></code>).</li>
<li><code class="docutils literal notranslate"><span class="pre">topics</span></code> - <code class="docutils literal notranslate"><span class="pre">Array</span></code> (optional): This allows manually setting the topics for the event filter. If given the filter property and event signature, (topic[0]) will not be set automatically.</li>
</ul>
</dd>
</dl>
</li>
<li><code class="docutils literal notranslate"><span class="pre">callback</span></code> - <code class="docutils literal notranslate"><span class="pre">Function</span></code> (optional): This callback will be fired with an array of event logs as the second argument, or an error as the first argument.</li>
</ol>
</div>
<div class="section" id="id40">
<h3>Returns<a class="headerlink" href="#id40" title="Permalink to this headline"></a></h3>
<p><code class="docutils literal notranslate"><span class="pre">Promise</span></code> returns <code class="docutils literal notranslate"><span class="pre">Array</span></code>: An array with the past event <code class="docutils literal notranslate"><span class="pre">Objects</span></code>, matching the given event name and filter.</p>
<p>For the structure of a returned event <code class="docutils literal notranslate"><span class="pre">Object</span></code> see <a class="reference internal" href="#contract-events-return"><span class="std std-ref">getPastEvents return values</span></a>.</p>
</div>
<div class="section" id="id41">
<h3>Example<a class="headerlink" href="#id41" title="Permalink to this headline"></a></h3>
<div class="highlight-javascript notranslate"><div class="highlight"><pre><span></span><span class="nx">myContract</span><span class="p">.</span><span class="nx">getPastEvents</span><span class="p">(</span><span class="s1">&#39;MyEvent&#39;</span><span class="p">,</span> <span class="p">{</span>
<span class="nx">filter</span><span class="o">:</span> <span class="p">{</span><span class="nx">myIndexedParam</span><span class="o">:</span> <span class="p">[</span><span class="mi">20</span><span class="p">,</span><span class="mi">23</span><span class="p">],</span> <span class="nx">myOtherIndexedParam</span><span class="o">:</span> <span class="s1">&#39;0x123456789...&#39;</span><span class="p">},</span> <span class="c1">// Using an array means OR: e.g. 20 or 23</span>
<span class="nx">fromBlock</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">toBlock</span><span class="o">:</span> <span class="s1">&#39;latest&#39;</span>
<span class="p">},</span> <span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">events</span><span class="p">)</span> <span class="p">=&gt;</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">events</span><span class="p">);</span> <span class="p">})</span>
<span class="p">.</span><span class="nx">then</span><span class="p">((</span><span class="nx">events</span><span class="p">)</span> <span class="p">=&gt;</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">events</span><span class="p">)</span> <span class="c1">// same results as the optional callback above</span>
<span class="p">});</span>
<span class="o">&gt;</span> <span class="p">[{</span>
<span class="nx">returnValues</span><span class="o">:</span> <span class="p">{</span>
<span class="nx">myIndexedParam</span><span class="o">:</span> <span class="mi">20</span><span class="p">,</span>
<span class="nx">myOtherIndexedParam</span><span class="o">:</span> <span class="s1">&#39;0x123456789...&#39;</span><span class="p">,</span>
<span class="nx">myNonIndexParam</span><span class="o">:</span> <span class="s1">&#39;My String&#39;</span>
<span class="p">},</span>
<span class="nx">raw</span><span class="o">:</span> <span class="p">{</span>
<span class="nx">data</span><span class="o">:</span> <span class="s1">&#39;0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385&#39;</span><span class="p">,</span>
<span class="nx">topics</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7&#39;</span><span class="p">,</span> <span class="s1">&#39;0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385&#39;</span><span class="p">]</span>
<span class="p">},</span>
<span class="nx">event</span><span class="o">:</span> <span class="s1">&#39;MyEvent&#39;</span><span class="p">,</span>
<span class="nx">signature</span><span class="o">:</span> <span class="s1">&#39;0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7&#39;</span><span class="p">,</span>
<span class="nx">logIndex</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">transactionIndex</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">transactionHash</span><span class="o">:</span> <span class="s1">&#39;0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385&#39;</span><span class="p">,</span>
<span class="nx">blockHash</span><span class="o">:</span> <span class="s1">&#39;0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7&#39;</span><span class="p">,</span>
<span class="nx">blockNumber</span><span class="o">:</span> <span class="mi">1234</span><span class="p">,</span>
<span class="nx">address</span><span class="o">:</span> <span class="s1">&#39;0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe&#39;</span>
<span class="p">},{</span>
<span class="p">...</span>
<span class="p">}]</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">web3.eth.Contract</a><ul>
<li><a class="reference internal" href="#new-contract">new contract</a><ul>
<li><a class="reference internal" href="#parameters">Parameters</a></li>
<li><a class="reference internal" href="#returns">Returns</a></li>
<li><a class="reference internal" href="#example">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#properties">= Properties =</a></li>
<li><a class="reference internal" href="#options">options</a><ul>
<li><a class="reference internal" href="#id1">Properties</a></li>
<li><a class="reference internal" href="#id2">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#options-address">options.address</a><ul>
<li><a class="reference internal" href="#property">Property</a></li>
<li><a class="reference internal" href="#id3">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#options-jsoninterface">options.jsonInterface</a><ul>
<li><a class="reference internal" href="#id4">Property</a></li>
<li><a class="reference internal" href="#id5">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#methods">= Methods =</a></li>
<li><a class="reference internal" href="#clone">clone</a><ul>
<li><a class="reference internal" href="#id6">Parameters</a></li>
<li><a class="reference internal" href="#id7">Returns</a></li>
<li><a class="reference internal" href="#id8">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#deploy">deploy</a><ul>
<li><a class="reference internal" href="#id9">Parameters</a></li>
<li><a class="reference internal" href="#id10">Returns</a></li>
<li><a class="reference internal" href="#id11">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id12">methods</a><ul>
<li><a class="reference internal" href="#id13">Parameters</a></li>
<li><a class="reference internal" href="#id14">Returns</a></li>
<li><a class="reference internal" href="#id15">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#methods-mymethod-call">methods.myMethod.call</a><ul>
<li><a class="reference internal" href="#id16">Parameters</a></li>
<li><a class="reference internal" href="#id17">Returns</a></li>
<li><a class="reference internal" href="#id18">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#methods-mymethod-send">methods.myMethod.send</a><ul>
<li><a class="reference internal" href="#id19">Parameters</a></li>
<li><a class="reference internal" href="#id22">Returns</a></li>
<li><a class="reference internal" href="#id23">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#methods-mymethod-estimategas">methods.myMethod.estimateGas</a><ul>
<li><a class="reference internal" href="#id24">Parameters</a></li>
<li><a class="reference internal" href="#id27">Returns</a></li>
<li><a class="reference internal" href="#id28">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#methods-mymethod-encodeabi">methods.myMethod.encodeABI</a><ul>
<li><a class="reference internal" href="#id29">Parameters</a></li>
<li><a class="reference internal" href="#id30">Returns</a></li>
<li><a class="reference internal" href="#id31">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#events">= Events =</a></li>
<li><a class="reference internal" href="#once">once</a><ul>
<li><a class="reference internal" href="#id32">Parameters</a></li>
<li><a class="reference internal" href="#id33">Returns</a></li>
<li><a class="reference internal" href="#id34">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#contract-events">events</a><ul>
<li><a class="reference internal" href="#id36">Parameters</a></li>
<li><a class="reference internal" href="#contract-events-return">Returns</a></li>
<li><a class="reference internal" href="#id38">Example</a></li>
</ul>
</li>
<li><a class="reference internal" href="#events-allevents">events.allEvents</a></li>
<li><a class="reference internal" href="#getpastevents">getPastEvents</a><ul>
<li><a class="reference internal" href="#id39">Parameters</a></li>
<li><a class="reference internal" href="#id40">Returns</a></li>
<li><a class="reference internal" href="#id41">Example</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="web3-eth-subscribe.html"
title="previous chapter">web3.eth.subscribe</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="web3-eth-accounts.html"
title="next chapter">web3.eth.accounts</a></p>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/web3-eth-contract.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="web3-eth-accounts.html" title="web3.eth.accounts"
>next</a> |</li>
<li class="right" >
<a href="web3-eth-subscribe.html" title="web3.eth.subscribe"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">web3.js 1.0.0 documentation</a> &#187;</li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2016, Ethereum.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.3.
</div>
</body>
</html>