49fdd23d58
* Move secureApi to shell * Extract isTestnet test * Use mobx + subscriptions for status * Re-add status indicator * Add lerna * Move intial packages to js/packages * Move 3rdparty/{email,sms}-verification to correct location * Move package.json & README to library src * Move tests for library packages * Move views & dapps to packages * Move i18n to root * Move shell to actual src (main app) * Remove ~ references * Change ~ to root (explicit imports) * Finalise convert of ~ * Move views into dapps as well * Move dapps to packages/ * Fix references * Update css * Update test spec locations * Update tests * Case fix * Skip flakey tests * Update enzyme * Skip previously ignored tests * Allow empty api for hw * Re-add theme for embed
1320 lines
42 KiB
JavaScript
1320 lines
42 KiB
JavaScript
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
|
|
// This file is part of Parity.
|
|
|
|
// Parity is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
|
|
// Parity is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
import { Address, BlockNumber, Data, Hash, Quantity, CallRequest, TransactionRequest } from '../types';
|
|
import { withPreamble, fromDecimal, withComment, Dummy } from '../helpers';
|
|
|
|
const SUBDOC_PUBSUB = 'pubsub';
|
|
|
|
export default withPreamble(`
|
|
|
|
## The default block parameter
|
|
|
|
The following methods have an optional extra \`defaultBlock\` parameter:
|
|
|
|
- [eth_estimateGas](#eth_estimategas)
|
|
- [eth_getBalance](#eth_getbalance)
|
|
- [eth_getCode](#eth_getcode)
|
|
- [eth_getTransactionCount](#eth_gettransactioncount)
|
|
- [eth_getStorageAt](#eth_getstorageat)
|
|
- [eth_call](#eth_call)
|
|
|
|
When requests are made that act on the state of Ethereum, the last parameter determines the height of the block.
|
|
|
|
The following options are possible for the \`defaultBlock\` parameter:
|
|
|
|
- \`Quantity\`/\`Integer\` - an integer block number;
|
|
- \`String "earliest"\` - for the earliest/genesis block;
|
|
- \`String "latest"\` - for the latest mined block;
|
|
- \`String "pending"\` - for the pending state/transactions.
|
|
|
|
`, {
|
|
accounts: {
|
|
desc: 'Returns a list of addresses owned by client.',
|
|
params: [],
|
|
returns: {
|
|
type: Array,
|
|
desc: '20 Bytes - addresses owned by the client.',
|
|
example: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1']
|
|
}
|
|
},
|
|
|
|
blockNumber: {
|
|
desc: 'Returns the number of most recent block.',
|
|
params: [],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'integer of the current block number the client is on.',
|
|
example: fromDecimal(1207)
|
|
}
|
|
},
|
|
|
|
call: {
|
|
desc: 'Executes a new message call immediately without creating a transaction on the block chain.',
|
|
params: [
|
|
{
|
|
type: CallRequest,
|
|
desc: 'The transaction call object.',
|
|
format: 'inputCallFormatter',
|
|
example: {
|
|
from: '0x407d73d8a49eeb85d32cf465507dd71d507100c1',
|
|
to: '0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b',
|
|
value: fromDecimal(100000)
|
|
}
|
|
},
|
|
{
|
|
type: BlockNumber,
|
|
desc: 'Integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`, see the [default block parameter](#the-default-block-parameter).',
|
|
format: 'inputDefaultBlockNumberFormatter',
|
|
optional: true
|
|
}
|
|
],
|
|
returns: {
|
|
type: Data,
|
|
desc: 'the return value of executed contract.',
|
|
example: '0x'
|
|
}
|
|
},
|
|
|
|
coinbase: {
|
|
desc: 'Returns the client coinbase address.',
|
|
params: [],
|
|
returns: {
|
|
type: Address,
|
|
desc: 'The current coinbase address.',
|
|
example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1'
|
|
}
|
|
},
|
|
|
|
estimateGas: {
|
|
desc: 'Makes a call or transaction, which won\'t be added to the blockchain and returns the used gas, which can be used for estimating the used gas.',
|
|
params: [
|
|
{
|
|
type: CallRequest,
|
|
desc: 'Same as [eth_call](#eth_call) parameters, except that all properties are optional.',
|
|
format: 'inputCallFormatter',
|
|
example: new Dummy('{ ... }')
|
|
},
|
|
{
|
|
type: BlockNumber,
|
|
desc: 'Integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`, see the [default block parameter](#the-default-block-parameter).',
|
|
format: 'inputDefaultBlockNumberFormatter',
|
|
optional: true
|
|
}
|
|
],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'The amount of gas used.',
|
|
format: 'utils.toDecimal',
|
|
example: fromDecimal(21000)
|
|
}
|
|
},
|
|
|
|
fetchQueuedTransactions: {
|
|
nodoc: 'Not present in Rust code',
|
|
desc: '?',
|
|
params: [
|
|
'?'
|
|
],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: 'whether the call was successful'
|
|
}
|
|
},
|
|
|
|
flush: {
|
|
nodoc: 'Not present in Rust code',
|
|
desc: '?',
|
|
params: [],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: 'whether the call was successful'
|
|
}
|
|
},
|
|
|
|
gasPrice: {
|
|
desc: 'Returns the current price per gas in wei.',
|
|
params: [],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'integer of the current gas price in wei.',
|
|
example: fromDecimal(10000000000000)
|
|
}
|
|
},
|
|
|
|
getBalance: {
|
|
desc: 'Returns the balance of the account of given address.',
|
|
params: [
|
|
{
|
|
type: Address,
|
|
desc: '20 Bytes - address to check for balance.',
|
|
format: 'inputAddressFormatter',
|
|
example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1'
|
|
},
|
|
{
|
|
type: BlockNumber,
|
|
desc: 'integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`, see the [default block parameter](#the-default-block-parameter).',
|
|
format: 'inputDefaultBlockNumberFormatter',
|
|
optional: true
|
|
}
|
|
],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'integer of the current balance in wei.',
|
|
format: 'outputBigNumberFormatter',
|
|
example: '0x0234c8a3397aab58'
|
|
}
|
|
},
|
|
|
|
getBlockByHash: {
|
|
desc: 'Returns information about a block by hash.',
|
|
params: [
|
|
{
|
|
type: Hash,
|
|
desc: 'Hash of a block.',
|
|
example: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331'
|
|
},
|
|
{
|
|
type: Boolean,
|
|
desc: 'If `true` it returns the full transaction objects, if `false` only the hashes of the transactions.',
|
|
example: true
|
|
}
|
|
],
|
|
returns: {
|
|
type: Object,
|
|
desc: 'A block object, or `null` when no block was found.',
|
|
details: {
|
|
number: {
|
|
type: Quantity,
|
|
desc: 'The block number. `null` when its pending block'
|
|
},
|
|
hash: {
|
|
type: Hash,
|
|
desc: '32 Bytes - hash of the block. `null` when its pending block'
|
|
},
|
|
parentHash: {
|
|
type: Hash,
|
|
desc: '32 Bytes - hash of the parent block'
|
|
},
|
|
nonce: {
|
|
type: Data,
|
|
desc: '8 Bytes - hash of the generated proof-of-work. `null` when its pending block'
|
|
},
|
|
sha3Uncles: {
|
|
type: Data,
|
|
desc: '32 Bytes - SHA3 of the uncles data in the block'
|
|
},
|
|
logsBloom: {
|
|
type: Data,
|
|
desc: '256 Bytes - the bloom filter for the logs of the block. `null` when its pending block'
|
|
},
|
|
transactionsRoot: {
|
|
type: Data,
|
|
desc: '32 Bytes - the root of the transaction trie of the block'
|
|
},
|
|
stateRoot: {
|
|
type: Data,
|
|
desc: '32 Bytes - the root of the final state trie of the block'
|
|
},
|
|
receiptsRoot: {
|
|
type: Data, desc: '32 Bytes - the root of the receipts trie of the block'
|
|
},
|
|
miner: {
|
|
type: Address,
|
|
desc: '20 Bytes - the address of the beneficiary to whom the mining rewards were given'
|
|
},
|
|
difficulty: {
|
|
type: Quantity,
|
|
desc: 'integer of the difficulty for this block'
|
|
},
|
|
totalDifficulty: {
|
|
type: Quantity,
|
|
desc: 'integer of the total difficulty of the chain until this block'
|
|
},
|
|
extraData: {
|
|
type: Data,
|
|
desc: 'the \'extra data\' field of this block'
|
|
},
|
|
size: {
|
|
type: Quantity,
|
|
desc: 'integer the size of this block in bytes'
|
|
},
|
|
gasLimit: {
|
|
type: Quantity,
|
|
desc: 'the maximum gas allowed in this block'
|
|
},
|
|
gasUsed: {
|
|
type: Quantity,
|
|
desc: 'the total used gas by all transactions in this block'
|
|
},
|
|
timestamp: {
|
|
type: Quantity,
|
|
desc: 'the unix timestamp for when the block was collated'
|
|
},
|
|
transactions: {
|
|
type: Array,
|
|
desc: 'Array of transaction objects, or 32 Bytes transaction hashes depending on the last given parameter'
|
|
},
|
|
uncles: {
|
|
type: Array,
|
|
desc: 'Array of uncle hashes'
|
|
}
|
|
},
|
|
example: {
|
|
number: fromDecimal(436),
|
|
hash: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331',
|
|
parentHash: '0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5',
|
|
sealFields: ['0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2', '0x0000000000000042'],
|
|
sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347',
|
|
logsBloom: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331',
|
|
transactionsRoot: '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421',
|
|
stateRoot: '0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7ed1dff',
|
|
miner: '0x4e65fda2159562a496f9f3522f89122a3088497a',
|
|
difficulty: fromDecimal(163591),
|
|
totalDifficulty: fromDecimal(163591),
|
|
extraData: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
size: fromDecimal(163591),
|
|
gasLimit: fromDecimal(653145),
|
|
minGasPrice: fromDecimal(653145),
|
|
gasUsed: fromDecimal(653145),
|
|
timestamp: fromDecimal(1424182926),
|
|
transactions: [new Dummy('{ ... }, { ... }, ...')],
|
|
uncles: ['0x1606e5...', '0xd5145a9...']
|
|
}
|
|
}
|
|
},
|
|
|
|
getBlockByNumber: {
|
|
desc: 'Returns information about a block by block number.',
|
|
params: [
|
|
{
|
|
type: BlockNumber,
|
|
desc: 'integer of a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`, as in the [default block parameter](#the-default-block-parameter).',
|
|
example: fromDecimal(436)
|
|
},
|
|
{
|
|
type: Boolean,
|
|
desc: 'If `true` it returns the full transaction objects, if `false` only the hashes of the transactions.',
|
|
example: true
|
|
}
|
|
],
|
|
returns: 'See [eth_getBlockByHash](#eth_getblockbyhash)'
|
|
},
|
|
|
|
getBlockTransactionCountByHash: {
|
|
desc: 'Returns the number of transactions in a block from a block matching the given block hash.',
|
|
params: [
|
|
{
|
|
type: Hash,
|
|
desc: '32 Bytes - hash of a block.',
|
|
example: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238'
|
|
}
|
|
],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'integer of the number of transactions in this block.',
|
|
example: fromDecimal(11)
|
|
}
|
|
},
|
|
|
|
getBlockTransactionCountByNumber: {
|
|
desc: 'Returns the number of transactions in a block from a block matching the given block number.',
|
|
params: [
|
|
{
|
|
type: BlockNumber,
|
|
desc: 'integer of a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`, as in the [default block parameter](#the-default-block-parameter).',
|
|
example: fromDecimal(232)
|
|
}
|
|
],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'integer of the number of transactions in this block.',
|
|
example: fromDecimal(10)
|
|
}
|
|
},
|
|
|
|
getCode: {
|
|
desc: 'Returns code at a given address.',
|
|
params: [
|
|
{
|
|
type: Address,
|
|
desc: '20 Bytes - address.',
|
|
format: 'inputAddressFormatter',
|
|
example: '0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b'
|
|
},
|
|
{
|
|
type: BlockNumber,
|
|
desc: 'integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`, see the [default block parameter](#the-default-block-parameter).',
|
|
format: 'inputDefaultBlockNumberFormatter',
|
|
example: fromDecimal(2)
|
|
}
|
|
],
|
|
returns: {
|
|
type: Data,
|
|
desc: 'the code from the given address.',
|
|
example: '0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056'
|
|
}
|
|
},
|
|
|
|
getFilterChanges: {
|
|
desc: 'Polling method for a filter, which returns an array of logs which occurred since last poll.',
|
|
params: [
|
|
{
|
|
type: Quantity,
|
|
desc: 'The filter id.',
|
|
example: fromDecimal(22)
|
|
}
|
|
],
|
|
returns: {
|
|
type: Array,
|
|
desc: 'Array of log objects, or an empty array if nothing has changed since last poll.',
|
|
example: [
|
|
{
|
|
logIndex: fromDecimal(1),
|
|
blockNumber: fromDecimal(436),
|
|
blockHash: '0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d',
|
|
transactionHash: '0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf',
|
|
transactionIndex: fromDecimal(0),
|
|
address: '0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d',
|
|
data: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
topics: ['0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5']
|
|
},
|
|
new Dummy('...')
|
|
]
|
|
}
|
|
},
|
|
|
|
getFilterChangesEx: {
|
|
nodoc: 'Not present in Rust code', // https://github.com/ethereum/wiki/wiki/Proposal:-Reversion-Notification
|
|
desc: '?',
|
|
params: [
|
|
'?'
|
|
],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: 'whether the call was successful'
|
|
}
|
|
},
|
|
|
|
getFilterLogs: {
|
|
desc: 'Returns an array of all logs matching filter with given id.',
|
|
params: [
|
|
{
|
|
type: Quantity,
|
|
desc: 'The filter id.',
|
|
example: fromDecimal(22)
|
|
}
|
|
],
|
|
returns: 'See [eth_getFilterChanges](#eth_getfilterchanges)'
|
|
},
|
|
|
|
getFilterLogsEx: {
|
|
nodoc: 'Not present in Rust code', // https://github.com/ethereum/wiki/wiki/Proposal:-Reversion-Notification
|
|
desc: '?',
|
|
params: [
|
|
'?'
|
|
],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: 'whether the call was successful'
|
|
}
|
|
},
|
|
|
|
getLogs: {
|
|
desc: 'Returns an array of all logs matching a given filter object.',
|
|
params: [
|
|
{
|
|
type: Object,
|
|
desc: 'The filter object, see [eth_newFilter parameters](#eth_newfilter).',
|
|
example: {
|
|
topics: ['0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b']
|
|
}
|
|
}
|
|
],
|
|
returns: 'See [eth_getFilterChanges](#eth_getfilterchanges)'
|
|
},
|
|
|
|
getLogsEx: {
|
|
nodoc: 'Not present in Rust code', // https://github.com/ethereum/wiki/wiki/Proposal:-Reversion-Notification
|
|
desc: '?',
|
|
params: [
|
|
'?'
|
|
],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: 'whether the call was successful'
|
|
}
|
|
},
|
|
|
|
getStorageAt: {
|
|
desc: 'Returns the value from a storage position at a given address.',
|
|
params: [
|
|
{
|
|
type: Address,
|
|
desc: '20 Bytes - address of the storage.',
|
|
example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1'
|
|
},
|
|
{
|
|
type: Quantity,
|
|
desc: 'integer of the position in the storage.',
|
|
format: 'utils.toHex',
|
|
example: fromDecimal(0)
|
|
},
|
|
{
|
|
type: BlockNumber,
|
|
desc: 'integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`, see the [default block parameter](#the-default-block-parameter).',
|
|
format: 'inputDefaultBlockNumberFormatter',
|
|
example: fromDecimal(2),
|
|
optional: true
|
|
}
|
|
],
|
|
returns: {
|
|
type: Data,
|
|
desc: 'the value at this storage position.',
|
|
example: '0x0000000000000000000000000000000000000000000000000000000000000003'
|
|
}
|
|
},
|
|
|
|
getTransactionByHash: {
|
|
desc: 'Returns the information about a transaction requested by transaction hash.',
|
|
params: [
|
|
{
|
|
type: Hash,
|
|
desc: '32 Bytes - hash of a transaction.',
|
|
example: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238'
|
|
}
|
|
],
|
|
returns: {
|
|
type: Object,
|
|
desc: 'A transaction object, or `null` when no transaction was found:',
|
|
format: 'outputTransactionFormatter',
|
|
details: {
|
|
hash: {
|
|
type: Hash,
|
|
desc: '32 Bytes - hash of the transaction.'
|
|
},
|
|
nonce: {
|
|
type: Quantity,
|
|
desc: 'the number of transactions made by the sender prior to this one.'
|
|
},
|
|
blockHash: {
|
|
type: Hash,
|
|
desc: '32 Bytes - hash of the block where this transaction was in. `null` when its pending.'
|
|
},
|
|
blockNumber: {
|
|
type: BlockNumber,
|
|
desc: 'block number where this transaction was in. `null` when its pending.'
|
|
},
|
|
transactionIndex: {
|
|
type: Quantity,
|
|
desc: 'integer of the transactions index position in the block. `null` when its pending.'
|
|
},
|
|
from: {
|
|
type: Address,
|
|
desc: '20 Bytes - address of the sender.'
|
|
},
|
|
to: {
|
|
type: Address,
|
|
desc: '20 Bytes - address of the receiver. `null` when its a contract creation transaction.'
|
|
},
|
|
value: {
|
|
type: Quantity,
|
|
desc: 'value transferred in Wei.'
|
|
},
|
|
gasPrice: {
|
|
type: Quantity,
|
|
desc: 'gas price provided by the sender in Wei.'
|
|
},
|
|
gas: {
|
|
type: Quantity,
|
|
desc: 'gas provided by the sender.'
|
|
},
|
|
input: {
|
|
type: Data,
|
|
desc: 'the data send along with the transaction.'
|
|
},
|
|
v: {
|
|
type: Quantity,
|
|
desc: 'the standardised V field of the signature.'
|
|
},
|
|
standard_v: {
|
|
type: Quantity,
|
|
desc: 'the standardised V field of the signature (0 or 1).'
|
|
},
|
|
r: {
|
|
type: Quantity,
|
|
desc: 'the R field of the signature.'
|
|
},
|
|
raw: {
|
|
type: Data,
|
|
desc: 'raw transaction data'
|
|
},
|
|
publicKey: {
|
|
type: Hash,
|
|
desc: 'public key of the signer.'
|
|
},
|
|
networkId: {
|
|
type: Quantity,
|
|
desc: 'the network id of the transaction, if any.'
|
|
},
|
|
creates: {
|
|
type: Hash,
|
|
desc: 'creates contract hash'
|
|
},
|
|
condition: {
|
|
type: Object,
|
|
optional: true,
|
|
desc: 'conditional submission, Block number in `block` or timestamp in `time` or `null`. (parity-feature)'
|
|
}
|
|
},
|
|
example: {
|
|
hash: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b',
|
|
nonce: fromDecimal(0),
|
|
blockHash: '0xbeab0aa2411b7ab17f30a99d3cb9c6ef2fc5426d6ad6fd9e2a26a6aed1d1055b',
|
|
blockNumber: fromDecimal(5599),
|
|
transactionIndex: fromDecimal(1),
|
|
from: '0x407d73d8a49eeb85d32cf465507dd71d507100c1',
|
|
to: '0x853f43d8a49eeb85d32cf465507dd71d507100c1',
|
|
value: fromDecimal(520464),
|
|
gas: fromDecimal(520464),
|
|
gasPrice: '0x09184e72a000',
|
|
input: '0x603880600c6000396000f300603880600c6000396000f3603880600c6000396000f360'
|
|
}
|
|
}
|
|
},
|
|
|
|
getTransactionByBlockHashAndIndex: {
|
|
desc: 'Returns information about a transaction by block hash and transaction index position.',
|
|
params: [
|
|
{
|
|
type: Hash,
|
|
desc: 'hash of a block.',
|
|
example: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331'
|
|
},
|
|
{
|
|
type: Quantity,
|
|
desc: 'integer of the transaction index position.',
|
|
example: fromDecimal(0)
|
|
}
|
|
],
|
|
returns: 'See [eth_getBlockByHash](#eth_gettransactionbyhash)'
|
|
},
|
|
|
|
getTransactionByBlockNumberAndIndex: {
|
|
desc: 'Returns information about a transaction by block number and transaction index position.',
|
|
params: [
|
|
{
|
|
type: BlockNumber,
|
|
desc: 'a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`, as in the [default block parameter](#the-default-block-parameter).',
|
|
example: fromDecimal(668)
|
|
},
|
|
{
|
|
type: Quantity,
|
|
desc: 'The transaction index position.',
|
|
example: fromDecimal(0)
|
|
}
|
|
],
|
|
returns: 'See [eth_getBlockByHash](#eth_gettransactionbyhash)'
|
|
},
|
|
|
|
getTransactionCount: {
|
|
desc: 'Returns the number of transactions *sent* from an address.',
|
|
params: [
|
|
{
|
|
type: Address,
|
|
desc: '20 Bytes - address.',
|
|
example: '0x407d73d8a49eeb85d32cf465507dd71d507100c1'
|
|
},
|
|
{
|
|
type: BlockNumber,
|
|
desc: 'integer block number, or the string `\'latest\'`, `\'earliest\'` or `\'pending\'`, see the [default block parameter](#the-default-block-parameter).',
|
|
format: 'inputDefaultBlockNumberFormatter',
|
|
optional: true
|
|
}
|
|
],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'integer of the number of transactions send from this address.',
|
|
format: 'utils.toDecimal',
|
|
example: fromDecimal(1)
|
|
}
|
|
},
|
|
|
|
getTransactionReceipt: {
|
|
desc: 'Returns the receipt of a transaction by transaction hash.\n\n**Note** That the receipt is available even for pending transactions.',
|
|
params: [
|
|
{
|
|
type: Hash,
|
|
desc: 'hash of a transaction.',
|
|
example: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238'
|
|
}
|
|
],
|
|
returns: {
|
|
type: Object,
|
|
desc: 'A transaction receipt object, or `null` when no receipt was found:',
|
|
format: 'outputTransactionReceiptFormatter',
|
|
details: {
|
|
transactionHash: {
|
|
type: Hash,
|
|
desc: '32 Bytes - hash of the transaction.'
|
|
},
|
|
transactionIndex: {
|
|
type: Quantity,
|
|
desc: 'integer of the transactions index position in the block.'
|
|
},
|
|
blockHash: {
|
|
type: Hash,
|
|
desc: '32 Bytes - hash of the block where this transaction was in.'
|
|
},
|
|
blockNumber: {
|
|
type: BlockNumber,
|
|
desc: 'block number where this transaction was in.'
|
|
},
|
|
cumulativeGasUsed: {
|
|
type: Quantity,
|
|
desc: 'The total amount of gas used when this transaction was executed in the block.'
|
|
},
|
|
gasUsed: {
|
|
type: Quantity,
|
|
desc: 'The amount of gas used by this specific transaction alone.'
|
|
},
|
|
contractAddress: {
|
|
type: Address,
|
|
desc: '20 Bytes - The contract address created, if the transaction was a contract creation, otherwise `null`.'
|
|
},
|
|
logs: {
|
|
type: Array,
|
|
desc: 'Array of log objects, which this transaction generated.'
|
|
}
|
|
},
|
|
example: {
|
|
transactionHash: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238',
|
|
transactionIndex: fromDecimal(1),
|
|
blockNumber: fromDecimal(11),
|
|
blockHash: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b',
|
|
cumulativeGasUsed: fromDecimal(13244),
|
|
gasUsed: fromDecimal(1244),
|
|
contractAddress: withComment('0xb60e8dd61c5d32be8058bb8eb970870f07233155', 'or null, if none was created'),
|
|
logs: withComment([new Dummy('{ ... }, { ... }, ...]')], 'logs as returned by eth_getFilterLogs, etc.')
|
|
}
|
|
}
|
|
},
|
|
|
|
getUncleByBlockHashAndIndex: {
|
|
desc: 'Returns information about a uncle of a block by hash and uncle index position.\n\n**Note:** An uncle doesn\'t contain individual transactions.',
|
|
params: [
|
|
{
|
|
type: Hash,
|
|
desc: 'Hash of a block.',
|
|
example: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b'
|
|
},
|
|
{
|
|
type: Quantity,
|
|
desc: 'The uncle\'s index position.',
|
|
example: fromDecimal(0)
|
|
}
|
|
],
|
|
returns: 'See [eth_getBlockByHash](#eth_getblockbyhash)'
|
|
},
|
|
|
|
getUncleByBlockNumberAndIndex: {
|
|
desc: 'Returns information about a uncle of a block by number and uncle index position.\n\n**Note:** An uncle doesn\'t contain individual transactions.',
|
|
params: [
|
|
{
|
|
type: BlockNumber,
|
|
desc: 'a block number, or the string `\'earliest\'`, `\'latest\'` or `\'pending\'`, as in the [default block parameter](#the-default-block-parameter).',
|
|
example: fromDecimal(668)
|
|
},
|
|
{
|
|
type: Quantity,
|
|
desc: 'The uncle\'s index position.',
|
|
example: fromDecimal(0)
|
|
}
|
|
],
|
|
returns: 'See [eth_getBlockByHash](#eth_getblockbyhash)'
|
|
},
|
|
|
|
getUncleCountByBlockHash: {
|
|
desc: 'Returns the number of uncles in a block from a block matching the given block hash.',
|
|
params: [
|
|
{
|
|
type: Hash,
|
|
desc: '32 Bytes - hash of a block.',
|
|
example: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238'
|
|
}
|
|
],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'integer of the number of uncles in this block.',
|
|
example: fromDecimal(0)
|
|
}
|
|
},
|
|
|
|
getUncleCountByBlockNumber: {
|
|
desc: 'Returns the number of uncles in a block from a block matching the given block number.',
|
|
params: [
|
|
{
|
|
type: BlockNumber,
|
|
desc: 'integer of a block number, or the string \'latest\', \'earliest\' or \'pending\', see the [default block parameter](#the-default-block-parameter).',
|
|
example: fromDecimal(232)
|
|
}
|
|
],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'integer of the number of uncles in this block.',
|
|
example: fromDecimal(1)
|
|
}
|
|
},
|
|
|
|
getWork: {
|
|
desc: 'Returns the hash of the current block, the seedHash, and the boundary condition to be met ("target").',
|
|
params: [],
|
|
returns: {
|
|
type: Array,
|
|
desc: 'Array with the following properties:\n - `Data`, 32 Bytes - current block header pow-hash.\n - `Data`, 32 Bytes - the seed hash used for the DAG.\n - `Data`, 32 Bytes - the boundary condition ("target"), 2^256 / difficulty.\n - `Quantity`, the current block number.',
|
|
example: [
|
|
'0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef',
|
|
'0x5EED00000000000000000000000000005EED0000000000000000000000000000',
|
|
'0xd1ff1c01710000000000000000000000d1ff1c01710000000000000000000000',
|
|
fromDecimal(1)
|
|
]
|
|
}
|
|
},
|
|
|
|
hashrate: {
|
|
desc: 'Returns the number of hashes per second that the node is mining with.',
|
|
params: [],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'number of hashes per second.',
|
|
example: fromDecimal(906)
|
|
}
|
|
},
|
|
|
|
inspectTransaction: {
|
|
nodoc: 'Not present in Rust code',
|
|
desc: '?',
|
|
params: [
|
|
'?'
|
|
],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: 'whether the call was successful'
|
|
}
|
|
},
|
|
|
|
mining: {
|
|
desc: 'Returns `true` if client is actively mining new blocks.',
|
|
params: [],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: '`true` of the client is mining, otherwise `false`.',
|
|
example: true
|
|
}
|
|
},
|
|
|
|
newBlockFilter: {
|
|
desc: 'Creates a filter in the node, to notify when a new block arrives.\nTo check if the state has changed, call [eth_getFilterChanges](#eth_getfilterchanges).',
|
|
params: [],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'A filter id.',
|
|
example: fromDecimal(1)
|
|
}
|
|
},
|
|
|
|
newFilter: {
|
|
desc: `Creates a filter object, based on filter options, to notify when the state changes (logs).
|
|
To check if the state has changed, call [eth_getFilterChanges](#eth_getfilterchanges).
|
|
|
|
##### A note on specifying topic filters:
|
|
Topics are order-dependent. A transaction with a log with topics [A, B] will be matched by the following topic filters:
|
|
* \`[]\` "anything"
|
|
* \`[A]\` "A in first position (and anything after)"
|
|
* \`[null, B]\` "anything in first position AND B in second position (and anything after)"
|
|
* \`[A, B]\` "A in first position AND B in second position (and anything after)"
|
|
* \`[[A, B], [A, B]]\` "(A OR B) in first position AND (A OR B) in second position (and anything after)"`.replace(/^[^\S\n]+/gm, ''),
|
|
params: [{
|
|
type: Object,
|
|
desc: 'The filter options:',
|
|
details: {
|
|
fromBlock: {
|
|
type: BlockNumber,
|
|
desc: 'Integer block number, or `\'latest\'` for the last mined block or `\'pending\'`, `\'earliest\'` for not yet mined transactions.',
|
|
optional: true,
|
|
default: 'latest'
|
|
},
|
|
toBlock: {
|
|
type: BlockNumber,
|
|
desc: 'Integer block number, or `\'latest\'` for the last mined block or `\'pending\'`, `\'earliest\'` for not yet mined transactions.',
|
|
optional: true,
|
|
default: 'latest'
|
|
},
|
|
address: {
|
|
type: Address,
|
|
desc: '20 Bytes - Contract address or a list of addresses from which logs should originate.',
|
|
optional: true
|
|
},
|
|
topics: {
|
|
type: Array,
|
|
desc: 'Array of 32 Bytes `Data` topics. Topics are order-dependent. It\'s possible to pass in `null` to match any topic, or a subarray of multiple topics of which one should be matching.',
|
|
optional: true
|
|
},
|
|
limit: {
|
|
type: Quantity,
|
|
desc: 'The maximum number of entries to retrieve (latest first).',
|
|
optional: true
|
|
}
|
|
},
|
|
example: {
|
|
fromBlock: fromDecimal(1),
|
|
toBlock: fromDecimal(2),
|
|
address: '0x8888f1f195afa192cfee860698584c030f4c9db1',
|
|
topics: withComment([
|
|
withComment('0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b', 'This topic in first position'),
|
|
withComment(null, 'Any topic in second position'),
|
|
withComment(['0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b', '0x000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc'], 'Either topic of the two in third position')
|
|
], '... and anything after')
|
|
}
|
|
}],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'The filter id.',
|
|
example: fromDecimal(1)
|
|
}
|
|
},
|
|
|
|
newFilterEx: {
|
|
nodoc: 'Not present in Rust code', // https://github.com/ethereum/wiki/wiki/Proposal:-Reversion-Notification
|
|
desc: '?',
|
|
params: [
|
|
'?'
|
|
],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: 'whether the call was successful'
|
|
}
|
|
},
|
|
|
|
newPendingTransactionFilter: {
|
|
desc: 'Creates a filter in the node, to notify when new pending transactions arrive.\n\nTo check if the state has changed, call [eth_getFilterChanges](#eth_getfilterchanges).',
|
|
params: [],
|
|
returns: {
|
|
type: Quantity,
|
|
desc: 'A filter id.',
|
|
example: fromDecimal(1)
|
|
}
|
|
},
|
|
|
|
notePassword: {
|
|
nodoc: 'Not present in Rust code',
|
|
desc: '?',
|
|
params: [
|
|
'?'
|
|
],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: 'whether the call was successful'
|
|
}
|
|
},
|
|
|
|
pendingTransactions: {
|
|
nodoc: 'Not present in Rust code',
|
|
desc: '?',
|
|
params: [],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: 'whether the call was successful'
|
|
}
|
|
},
|
|
|
|
protocolVersion: {
|
|
desc: 'Returns the current ethereum protocol version.',
|
|
params: [],
|
|
returns: {
|
|
type: String,
|
|
desc: 'The current ethereum protocol version.',
|
|
example: fromDecimal(99)
|
|
}
|
|
},
|
|
|
|
register: {
|
|
nodoc: 'Not present in Rust code',
|
|
desc: '?',
|
|
params: [
|
|
'?'
|
|
],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: 'whether the call was successful'
|
|
}
|
|
},
|
|
|
|
sendRawTransaction: {
|
|
desc: 'Creates new message call transaction or a contract creation for signed transactions.\n\n**Note:** `eth_submitTransaction` is an alias of this method.',
|
|
params: [
|
|
{
|
|
type: Data,
|
|
desc: 'The signed transaction data.',
|
|
example: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675'
|
|
}
|
|
],
|
|
returns: {
|
|
type: Hash,
|
|
desc: '32 Bytes - the transaction hash, or the zero hash if the transaction is not yet available\n\nUse [eth_getTransactionReceipt](#eth_gettransactionreceipt) to get the contract address, after the transaction was mined, when you created a contract.',
|
|
example: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331'
|
|
}
|
|
},
|
|
|
|
sendTransaction: {
|
|
desc: 'Creates new message call transaction or a contract creation, if the data field contains code.',
|
|
params: [
|
|
{
|
|
type: TransactionRequest,
|
|
desc: 'The transaction object.',
|
|
format: 'inputTransactionFormatter',
|
|
example: {
|
|
from: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',
|
|
to: '0xd46e8dd67c5d32be8058bb8eb970870f07244567',
|
|
gas: fromDecimal(30400),
|
|
gasPrice: fromDecimal(10000000000000),
|
|
value: fromDecimal(2441406250),
|
|
data: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675'
|
|
}
|
|
}
|
|
],
|
|
returns: {
|
|
type: Hash,
|
|
desc: '32 Bytes - the transaction hash, or the zero hash if the transaction is not yet available.\n\nUse [eth_getTransactionReceipt](#eth_gettransactionreceipt) to get the contract address, after the transaction was mined, when you created a contract.',
|
|
example: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331'
|
|
}
|
|
},
|
|
|
|
sign: {
|
|
desc: 'The sign method calculates an Ethereum specific signature with: `sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)))`.',
|
|
params: [
|
|
{
|
|
type: Address,
|
|
desc: '20 Bytes - address.',
|
|
format: 'inputAddressFormatter',
|
|
example: '0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826'
|
|
},
|
|
{
|
|
type: Data,
|
|
desc: 'Data which hash to sign.',
|
|
example: withComment('0x5363686f6f6c627573', 'Schoolbus')
|
|
}
|
|
],
|
|
returns: {
|
|
type: Data,
|
|
desc: 'Signed data.',
|
|
example: '0xb1092cb5b23c2aa55e5b5787729c6be812509376de99a52bea2b41e5a5f8601c5641e74d01e4493c17bf1ef8b179c49362b2c721222128d58422a539310c6ecd1b'
|
|
}
|
|
},
|
|
|
|
signTransaction: {
|
|
desc: 'Signs transactions without dispatching it to the network. It can be later submitted using [eth_sendRawTransaction](#eth_sendrawtransaction).',
|
|
params: [
|
|
{
|
|
type: TransactionRequest,
|
|
desc: 'Transaction object, see [eth_sendTransaction](#eth_sendTransaction).',
|
|
format: 'inputCallFormatter',
|
|
example: new Dummy('{ ... }')
|
|
}
|
|
],
|
|
returns: {
|
|
type: Object,
|
|
desc: 'Signed transaction and it\'s details:',
|
|
details: {
|
|
raw: {
|
|
type: Data,
|
|
desc: 'The signed, RLP encoded transaction.'
|
|
},
|
|
tx: {
|
|
type: Object,
|
|
desc: 'Transaction object:',
|
|
details: {
|
|
hash: {
|
|
type: Hash,
|
|
desc: '32 Bytes - hash of the transaction.'
|
|
},
|
|
nonce: {
|
|
type: Quantity,
|
|
desc: 'the number of transactions made by the sender prior to this one.'
|
|
},
|
|
blockHash: {
|
|
type: Hash,
|
|
desc: '32 Bytes - hash of the block where this transaction was in. `null` when its pending.'
|
|
},
|
|
blockNumber: {
|
|
type: BlockNumber,
|
|
desc: 'block number where this transaction was in. `null` when its pending.'
|
|
},
|
|
transactionIndex: {
|
|
type: Quantity,
|
|
desc: 'integer of the transactions index position in the block. `null` when its pending.'
|
|
},
|
|
from: {
|
|
type: Address,
|
|
desc: '20 Bytes - address of the sender.'
|
|
},
|
|
to: {
|
|
type: Address,
|
|
desc: '20 Bytes - address of the receiver. `null` when its a contract creation transaction.'
|
|
},
|
|
value: {
|
|
type: Quantity,
|
|
desc: 'value transferred in Wei.'
|
|
},
|
|
gasPrice: {
|
|
type: Quantity,
|
|
desc: 'gas price provided by the sender in Wei.'
|
|
},
|
|
gas: {
|
|
type: Quantity,
|
|
desc: 'gas provided by the sender.'
|
|
},
|
|
input: {
|
|
type: Data,
|
|
desc: 'the data send along with the transaction.'
|
|
},
|
|
v: {
|
|
type: Quantity,
|
|
desc: 'the standardised V field of the signature.'
|
|
},
|
|
standard_v: {
|
|
type: Quantity,
|
|
desc: 'the standardised V field of the signature (0 or 1).'
|
|
},
|
|
r: {
|
|
type: Quantity,
|
|
desc: 'the R field of the signature.'
|
|
},
|
|
raw: {
|
|
type: Data,
|
|
desc: 'raw transaction data'
|
|
},
|
|
publicKey: {
|
|
type: Hash,
|
|
desc: 'public key of the signer.'
|
|
},
|
|
networkId: {
|
|
type: Quantity,
|
|
desc: 'the network id of the transaction, if any.'
|
|
},
|
|
creates: {
|
|
type: Hash,
|
|
desc: 'creates contract hash'
|
|
},
|
|
condition: {
|
|
type: Object,
|
|
optional: true,
|
|
desc: 'conditional submission, Block number in `block` or timestamp in `time` or `null`. (parity-feature)'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
example: {
|
|
raw: '0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675',
|
|
tx: {
|
|
hash: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b',
|
|
nonce: fromDecimal(0),
|
|
blockHash: '0xbeab0aa2411b7ab17f30a99d3cb9c6ef2fc5426d6ad6fd9e2a26a6aed1d1055b',
|
|
blockNumber: fromDecimal(5599),
|
|
transactionIndex: fromDecimal(1),
|
|
from: '0x407d73d8a49eeb85d32cf465507dd71d507100c1',
|
|
to: '0x853f43d8a49eeb85d32cf465507dd71d507100c1',
|
|
value: fromDecimal(520464),
|
|
gas: fromDecimal(520464),
|
|
gasPrice: '0x09184e72a000',
|
|
input: '0x603880600c6000396000f300603880600c6000396000f3603880600c6000396000f360'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
submitWork: {
|
|
desc: 'Used for submitting a proof-of-work solution.',
|
|
params: [
|
|
{
|
|
type: Data,
|
|
desc: '8 Bytes - The nonce found (64 bits).',
|
|
example: '0x0000000000000001'
|
|
},
|
|
{
|
|
type: Data,
|
|
desc: '32 Bytes - The header\'s pow-hash (256 bits)',
|
|
example: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
|
|
},
|
|
{
|
|
type: Data,
|
|
desc: '32 Bytes - The mix digest (256 bits).',
|
|
example: '0xD1FE5700000000000000000000000000D1FE5700000000000000000000000000'
|
|
}
|
|
],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: '`true` if the provided solution is valid, otherwise `false`.',
|
|
example: true
|
|
}
|
|
},
|
|
|
|
submitHashrate: {
|
|
desc: 'Used for submitting mining hashrate.',
|
|
params: [
|
|
{
|
|
type: Data,
|
|
desc: 'a hexadecimal string representation (32 bytes) of the hash rate.',
|
|
example: '0x0000000000000000000000000000000000000000000000000000000000500000'
|
|
},
|
|
{
|
|
type: Data,
|
|
desc: 'A random hexadecimal(32 bytes) ID identifying the client.',
|
|
example: '0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c'
|
|
}
|
|
],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: '`true` if submitting went through succesfully and `false` otherwise.',
|
|
example: true
|
|
}
|
|
},
|
|
|
|
syncing: {
|
|
desc: 'Returns an object with data about the sync status or `false`.',
|
|
params: [],
|
|
returns: {
|
|
type: Object,
|
|
desc: 'An object with sync status data or `FALSE`, when not syncing.',
|
|
format: 'outputSyncingFormatter',
|
|
details: {
|
|
startingBlock: {
|
|
type: Quantity,
|
|
desc: 'The block at which the import started (will only be reset, after the sync reached this head)'
|
|
},
|
|
currentBlock: {
|
|
type: Quantity,
|
|
desc: 'The current block, same as eth_blockNumber'
|
|
},
|
|
highestBlock: {
|
|
type: Quantity,
|
|
desc: 'The estimated highest block'
|
|
},
|
|
blockGap: {
|
|
type: Array,
|
|
desc: 'Array of "first", "last", such that [first, last) are all missing from the chain'
|
|
},
|
|
warpChunksAmount: {
|
|
type: Quantity,
|
|
desc: 'Total amount of snapshot chunks'
|
|
},
|
|
warpChunksProcessed: {
|
|
type: Quantity,
|
|
desc: 'Total amount of snapshot chunks processed'
|
|
}
|
|
},
|
|
example: withComment({
|
|
startingBlock: fromDecimal(900),
|
|
currentBlock: fromDecimal(902),
|
|
highestBlock: fromDecimal(1108)
|
|
}, 'Or `false` when not syncing')
|
|
}
|
|
},
|
|
|
|
uninstallFilter: {
|
|
desc: 'Uninstalls a filter with given id. Should always be called when watch is no longer needed.\nAdditonally Filters timeout when they aren\'t requested with [eth_getFilterChanges](#eth_getfilterchanges) for a period of time.',
|
|
params: [
|
|
{
|
|
type: Quantity,
|
|
desc: 'The filter id.',
|
|
example: fromDecimal(11)
|
|
}
|
|
],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: '`true` if the filter was successfully uninstalled, otherwise `false`.',
|
|
example: true
|
|
}
|
|
},
|
|
|
|
unregister: {
|
|
nodoc: 'Not present in Rust code',
|
|
desc: '?',
|
|
params: [
|
|
'?'
|
|
],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: 'whether the call was successful'
|
|
}
|
|
},
|
|
|
|
// Pub-Sub
|
|
subscribe: {
|
|
subdoc: SUBDOC_PUBSUB,
|
|
desc: `
|
|
Starts a subscription (on WebSockets / IPC / TCP transports) to a particular event. For every event that
|
|
matches the subscription a JSON-RPC notification with event details and subscription ID will be sent to a client.
|
|
|
|
An example notification received by subscribing to \`newHeads\` event:
|
|
\`\`\`
|
|
{"jsonrpc":"2.0","method":"eth_subscription","params":{"subscription":"0x416d77337e24399d","result":{"difficulty":"0xd9263f42a87",<...>,
|
|
"uncles":[]}}}
|
|
\`\`\`
|
|
|
|
You can unsubscribe using \`eth_unsubscribe\` RPC method. Subscriptions are also tied to a transport
|
|
connection, disconnecting causes all subscriptions to be canceled.
|
|
`,
|
|
params: [
|
|
{
|
|
type: String,
|
|
desc: 'Subscription type: one of `newHeads`, `logs`',
|
|
example: 'newHeads'
|
|
},
|
|
{
|
|
type: Object,
|
|
desc: `
|
|
Subscription type-specific parameters. It must be left empty for
|
|
\`newHeads\` and must contain filter object for \`logs\`.
|
|
`,
|
|
example: {
|
|
fromBlock: 'latest',
|
|
toBlock: 'latest'
|
|
}
|
|
}
|
|
],
|
|
returns: {
|
|
type: String,
|
|
desc: 'Assigned subscription ID',
|
|
example: '0x416d77337e24399d'
|
|
}
|
|
},
|
|
unsubscribe: {
|
|
subdoc: SUBDOC_PUBSUB,
|
|
desc: 'Unsubscribes from a subscription.',
|
|
params: [{
|
|
type: String,
|
|
desc: 'Subscription ID',
|
|
example: '0x416d77337e24399d'
|
|
}],
|
|
returns: {
|
|
type: Boolean,
|
|
desc: 'whether the call was successful',
|
|
example: true
|
|
}
|
|
}
|
|
});
|