<html><head><title>JSON-RPC Provider</title><linkrel="stylesheet"type="text/css"href="/static/style.css"></head><body><divclass="sidebar"><divclass="header"><divclass="logo"><ahref="/"><divclass="image"></div><divclass="name">ethers</div><divclass="version">v5.0-beta</div></a></div></div><divclass="toc"><div><divclass="link title"><ahref="/">Documentation</a></div><divclass="base show link depth-1"><ahref="/getting-started/">Getting Started</a></div><divclass="hide link depth-2"><ahref="/getting-started/#installing">Installing</a></div><divclass="hide link depth-2"><ahref="/getting-started/#importing">Importing</a></div><divclass="base show link depth-1"><ahref="/concepts/">Concepts</a></div><divclass="hide link depth-2"><ahref="/concepts/events/">Events</a></div><divclass="hide link depth-3"><ahref="/concepts/events/#solidity-topics">Solidity Topics</a></div><divclass="hide link depth-2"><ahref="/concepts/gas/">Gas</a></div><divclass="hide link depth-3"><ahref="/concepts/gas/#gas-price">Gas Price</a></div><divclass="hide link depth-3"><ahref="/concepts/gas/#gas-limit">Gas Limit</a></div><divclass="base ancestor show link depth-1"><ahref="/api/">Application Programming Interface</a></div><divclass="show link depth-2"><ahref="/api/contract/">Contracts</a></div><divclass="hide link depth-3"><ahref="/api/contract/#buckets">Buckets</a></div><divclass="show link depth-2"><ahref="/api/signer/">Signers</a></div><divclass="hide link depth-3"><ahref="/api/signer/#signer">Signer</a></div><divclass="hide link depth-3"><ahref="/api/signer/#wallet">Wallet</a></div><divclass="hide link depth-3"><ahref="/api/signer/#voidsigner">VoidSigner</a></div><divclass="hide link depth-3"><ahref="/api/signer/#externallyownedaccount">ExternallyOwnedAccount</a></div><divclass="ancestor show link depth-2"><ahref="/api/providers/">Providers</a></div><divclass="show link depth-3"><ahref="/api/providers/provider/">Provider</a></div><divclass="hide link depth-4"><ahref="/api/providers/provider/#accounts-methods">Accounts Methods</a></div><divclass="hide link depth-4"><ahref="/api/providers/provider/#blocks-methods">Blocks Methods</a></div><divclass="hide link depth-4"><ahref="/api/providers/provider/#ethereum-naming-service-(ens)-methods">Ethereum Naming Service (ENS) Methods</a></div><divclass="hide link depth-4"><ahref="/api/providers/provider/#logs-methods">Logs Methods</a></div><divclass="hide link depth-4"><ahref="/api/providers/provider/#network-status-methods">Network Status Methods</a></div><divclass="hide link depth-4"><ahref="/api/providers/provider/#transactions-methods">Transactions Methods</a></div><divclass="hide link depth-4"><ahref="/api/providers/provider/#event-emitter-methods">Event Emitter Methods</a></div><divclass="hide link depth-4"><ahref="/api/providers/provider/#inspection-methods">Inspection Methods</a></div><divclass="myself ancestor ancestor show link depth-3"><ahref="/api/providers/jsonrpc-provider/">JsonRpcProvider</a></div><divclass="child link depth-4"><ahref="/api/providers/jsonrpc-provider/#jsonrpcsigner">JsonRpcSigner</a></div><divclass="child link depth-4"><ahref="/api/providers/jsonrpc-provider/#jsonrpcuncheckedsigner">JsonRpcUncheckedSigner</a></div><divclass="show link depth-3"><ahref="/api/providers/api-providers/">API Providers</a></div><divclass="hide link depth-4"><ahref="/api/providers/api-providers/#etherscanprovider">EtherscanProvider</a></div><divclass="hide link depth-4"><ahref="/api/providers/api-providers/#infuraprovider">InfuraProvider</a></div><divclass="hide link depth-4"><ahref="/api/providers/api-providers/#alchemyprovider">AlchemyProvider</a></div><divclass="hide link depth-4"><ahref="/api/providers/api-providers/#cloudfrontprovider">CloudfrontProvider</a></div><divclass="show link depth-3"><ahref="/api/providers/other/">Other Providers</a></div><divclass="hide link depth-4"><ahref="/api/providers/other/#fallbackprovider">FallbackProvider</a></div><divclass="hide link depth-4"><ahref="/api/providers/other/#ipc
<p>The <ahref="https://github.com/ethereum/wiki/wiki/JSON-RPC">JSON-RPC API</a> is a very popular method for interacting with Ethereum and is available in all major Ethereum node implementations (e.g. <ahref="https://geth.ethereum.org">Geth</a> and <ahref="https://www.parity.io">Parity</a>) as well as many third-party web services (e.g. <ahref="https://infura.io">INFURA</a>)</p>
<divclass="property show-anchors"><divclass="signature"><spanclass="modifier">new </span><spanclass="path">ethers</span> . <spanclass="path">providers</span> . <spanclass="method">JsonRpcProvider</span> ( [ <spanclass="param">url</span> [ , <spanclass="param">aNetworkish</span> ] ] ) <divclass="anchors"></div></div><divclass="body"><p>Connect to a JSON-RPC API located at <i>url</i> using the /aNetworkish<i> network. If </i>url<i> is not specified, the default (i.e. <codeclass="inline">http:</i>localhost:8545</code>) is used and if no network is specified, it will be determined automatically by querying the node.</p></div></div>
<divclass="definition container-box note show-anchors"><divclass="term">Note: Connecting to a Local Node</div><divclass="body"><p>Each node implementation is slightly different and may require specific command-line flags or changes in their Settings UI to enable JSON-RPC, unlock accounrs or expose specific APIs. Please consult theit documentation.</p></div></div>
<aname="provider-jsonrpc-getsigner"></a><divclass="property show-anchors"><divclass="signature"><spanclass="path">jsonRpcProvider</span> . <spanclass="method">getSigner</span> ( [ <spanclass="param">addressOrIndex</span> ] ) <spanclass="arrow">⇒</span><spanclass="returns"><ahref="/api/providers/jsonrpc-provider/#signer-jsonrpc">JsonRpcSigner</a></span><divclass="anchors"><aclass="self"href="#provider-jsonrpc-getsigner"></a><aclass="source"href="https://github.com/ethers-io/ethers.js/blob/ethers-v5-beta/packages/providers/src.ts/json-rpc-provider.ts#L279">source</a></div></div><divclass="body"><p>Returns a <ahref="/api/providers/jsonrpc-provider/#signer-jsonrpc">JsonRpcSigner</a> which is managed by this Ethereum node, at <i>addressOrIndex</i>. If no <i>addressOrIndex</i> is provided, the first account (account #0) is used.</p></div></div>
<aname="provider-jsonrpc-listaccounts"></a><divclass="property show-anchors"><divclass="signature"><spanclass="path">jsonRpcProvider</span> . <spanclass="method">listAccounts</span> ( ) <spanclass="arrow">⇒</span><spanclass="returns">Array< string ></span><divclass="anchors"><aclass="self"href="#provider-jsonrpc-listaccounts"></a><aclass="source"href="https://github.com/ethers-io/ethers.js/blob/ethers-v5-beta/packages/providers/src.ts/json-rpc-provider.ts#L287">source</a></div></div><divclass="body"><p>Returns a list of all account addresses managed by this provider.</p></div></div>
<aname="provider-jsonrpc-send"></a><divclass="property show-anchors"><divclass="signature"><spanclass="path">jsonRpcProvider</span> . <spanclass="method">send</span> ( <spanclass="param">method</span> , <spanclass="param">params</span> ) <spanclass="arrow">⇒</span><spanclass="returns">Promise< any ></span><divclass="anchors"><aclass="self"href="#provider-jsonrpc-send"></a><aclass="source"href="https://github.com/ethers-io/ethers.js/blob/ethers-v5-beta/packages/providers/src.ts/json-rpc-provider.ts#L293">source</a></div></div><divclass="body"><p>Allows sending raw messages to the provider.</p><p>This can be used for backend-specific calls, such as for debugging or specific account management.</p></div></div>
<p>A <b>JsonRpcSigner</b> is a simple Signer which is backed by a connected <ahref="/api/providers/jsonrpc-provider/">JsonRpcProvider</a>.</p>
<divclass="property show-anchors"><divclass="signature"><spanclass="path">signer</span> . <spanclass="method">provider</span><spanclass="arrow">⇒</span><spanclass="returns"><ahref="/api/providers/jsonrpc-provider/">JsonRpcProvider</a></span><divclass="anchors"></div></div><divclass="body"><p>The provider this signer was established from.</p></div></div>
<divclass="property show-anchors"><divclass="signature"><spanclass="path">signer</span> . <spanclass="method">connectUnchecked</span> ( ) <spanclass="arrow">⇒</span><spanclass="returns"><ahref="/api/providers/jsonrpc-provider/#provider-jsonrpc-uncheckedsigner">JsonRpcUncheckedSigner</a></span><divclass="anchors"></div></div><divclass="body"><p>Returns a new Signer object which does not perform addtional checks when sending a transaction. See <ahref="/api/providers/jsonrpc-provider/#provider-jsonrpc-uncheckedsigner">JsonRpcUncheckedSigner</a> for more details.</p></div></div>
<divclass="property show-anchors"><divclass="signature"><spanclass="path">signer</span> . <spanclass="method">sendUncheckedTransaction</span> ( <spanclass="param">transaction</span> ) <spanclass="arrow">⇒</span><spanclass="returns">Promise< string< <ahref="/api/utils/bytes/#datahexstring">DataHexstring</a>< 32 > > ></span><divclass="anchors"></div></div><divclass="body"><p>Sends the <i>transaction</i> and returns a Promise which resolves to the opacque transaction hash.</p></div></div>
<divclass="property show-anchors"><divclass="signature"><spanclass="path">signer</span> . <spanclass="method">unlock</span> ( <spanclass="param">password</span> ) <spanclass="arrow">⇒</span><spanclass="returns">Promise< boolean ></span><divclass="anchors"></div></div><divclass="body"><p>Request the node unlock the account (if locked) using <i>password</i>.</p></div></div>
<p>The JSON-RPC API only provides a transaction hash as the response when a transaction is sent, but the ethers Provider requires populating all details of a transaction before returning it. For example, the gas price and gas limit may be adjusted by the node or the nonce automatically included, in which case the opaque transaction hash has discarded this.</p><p>To remedy this, the <ahref="/api/providers/jsonrpc-provider/#signer-jsonrpc">JsonRpcSigner</a> immeidately queries the provider for the details using the returned transaction hash to populate the <ahref="/api/providers/types/#provider-transactionresponse">TransactionResponse</a> object.</p><p>Some backends do not respond immediately and instead defer releasing the details of a transaction it was responsible for signing until it is mined.</p><p>The <b>UncheckedSigner</b> does not populate any additional information and will immediately return the result as a mock <ahref="/api/providers/types/#provider-transactionresponse">TransactionResponse</a>-like object, with most of the properties set to null, but allows access to the transaction hash quickly, if that is all that is required.</p><divclass="footer"><divclass="nav previous"><ahref="/api/providers/provider/"><spanclass="arrow">←</span>Provider</a></div><divclass="nav next"><ahref="/api/providers/api-providers/">API Providers<spanclass="arrow">→</span></a></div></div><divclass="copyright">The content of this site is licensed under the <ahref="https://choosealicense.com/licenses/cc-by-4.0/">Creative Commons Attribution 4.0 International License</a>.</div></div><scriptsrc="/script.js"type="text/javascript"></script></body></html><!-- ContentHash:cded303e2821a9f1bc457b14f32152a0b9eff85cbe1fc2a5d8bce948b36b883e -->