Ethereum JSON RPC Client
Project description
# Ethereum RPC Client
[![Build Status](https://travis-ci.org/pipermerriam/ethereum-rpc-client.png)](https://travis-ci.org/pipermerriam/ethereum-rpc-client)
[![Documentation Status](https://readthedocs.org/projects/ethereum-rpc-client/badge/?version=latest)](https://readthedocs.org/projects/ethereum-rpc-client/?badge=latest)
[![PyPi version](https://pypip.in/v/ethereum-rpc-client/badge.png)](https://pypi.python.org/pypi/ethereum-rpc-client)
[![PyPi downloads](https://pypip.in/d/ethereum-rpc-client/badge.png)](https://pypi.python.org/pypi/ethereum-rpc-client)
Python client for Ethereum JSON RPC Server
> Note that this currently only implements a handful of the JSON RPC methods
> exposed by the server.
## Installation
Install with `pip`
```bash
$ pip install ethereum-rpc-client
```
## Basic Usage
Assuming you have an Ethereum node running the JSON RPC server on `localhost:8454`
```python
>>> from eth_rpc_client import Client
>>> client = Client(host="127.0.0.1", port="8545")
>>> client.get_coinbase()
... '0xd3cda913deb6f67967b99d67acdfa1712c293601'
```
## API
### `Client.get_coinbase()`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_coinbase
Returns the hex encoded coinbase.
### `Client.get_gas_price()`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gasprice
Returns the gas price in wei as an integer
### `Client.get_balance(address, block="latest")`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getbalance
* **address**: The hex encoded address to lookup the balance for.
* **block**: The block to use for the lookup.
Returns the account balance for the address in wei as an integer.
### `Client.get_code(address, block="latest")`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getcode
* **address**: The hex encoded address to lookup the code for.
* **block**: The block to use for the lookup.
Returns the code at the given address.
### `Client.call(_from=None, to=None, gas=None, gas_price=None, value=0, data=None, block="latest")`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_call
* **_from**: The hex encoded address to use as the source for the call.
* **to**: The hex encoded address of the contract for the call.
* **gas**: Integer gas alotment for the call.
* **gas_price**: Integer gas price in wei.
* **value**: Integer amount in wei to send with the call.
* **data**: The call data.
Returns the call response.
### `Client.send_transaction(_from=None, to=None, gas=None, gas_price=None, value=0, data=None)
https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendtransaction
* **_from**: The hex encoded address to use as the source for the transaction.
* **to**: The hex encoded address of the contract for the transaction.
* **gas**: Integer gas alotment for the transaction.
* **gas_price**: Integer gas price in wei.
* **value**: Integer amount in wei to send with the transaction.
* **data**: The transaction data.
### `Client.get_transaction_receipt(txn_hash)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionreceipt
* **txn_hash**: The hex encoded transaction hash to lookup.
Returns a dictionary of the transaction receipt or `None` if no receipt is
found.
* **transactionHash**: hex encoded hash of the transaction.
* **transactionIndex**: integer of the transactions index position in the block.
* **blockHash**: hex encoded hash of the block where this transaction was in.
* **blockNumber**: integer block number where this transaction was in.
* **cumulativeGasUsed**: The total amount of gas used when this transaction was executed in the block.
* **gasUsed**: The amount of gas used by this specific transaction alone.
* **contractAddress**: The contract address created, if the transaction was a contract creation, otherwise null.
* **logs**: list of log objects, which this transaction generated
### `Client.get_transaction_by_hash(txn_hash)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionbyhash
* **txn_hash**: The hex encoded transaction hash to lookup.
Returns a dictionary of the transaction values or `None` if no transaction is
found.
* **hash**: DATA, 32 Bytes - hash of the transaction.
* **nonce**: QUANTITY - the number of transactions made by the sender prior to this one.
* **blockHash**: DATA, 32 Bytes - hash of the block where this transaction was in. null when its pending.
* **blockNumber**: QUANTITY - block number where this transaction was in. null when its pending.
* **transactionIndex**: QUANTITY - integer of the transactions index position in the block. null when its pending.
* **from**: DATA, 20 Bytes - address of the sender.
* **to**: DATA, 20 Bytes - address of the receiver. null when its a contract creation transaction.
* **value**: QUANTITY - value transferred in Wei.
* **gasPrice**: QUANTITY - gas price provided by the sender in Wei.
* **gas**: QUANTITY - gas provided by the sender.
* **input**: DATA - the data send along with the transaction.
### `Client.get_block_number()`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_blocknumber
Returns the number of the most recent block.
### `Client.get_accounts()`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_accounts
Returns a list of the addresses owned by the client.
### `Client.new_filter(from_block=None, to_block=None, address=None, topics=None)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newfilter
### `Client.new_block_filter()`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newblockfilter
### `Client.new_pending_transaction_filter()`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newpendingtransactionfilter
### `Client.uninstall_filter(filter_id)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_uninstallFilter
### `Client.get_filter_changes(filter_id)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getfilterchanges
### `Client.get_filter_logs(filter_id)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getfilterlogs
### `Client.get_logs(from_block=None, to_block=None, address=None, topics=None)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getlogs
## Helpers
### `Client.get_max_gas()`
Returns the gas limit from the latest block
### `Client.wait_for_transaction(txn_hash, max_wait=60)`
Blocks for up to `max_wait` seconds, polling for the transaction receipt for
the provided `txn_hash`. Returns the transaction hash.
### `Client.wait_for_block(block_number, max_wait=60)`
Blocks for up to `max_wait` seconds, polling the rpc server until the block
specified by `block_number` is seen. Returns the block.
[![Build Status](https://travis-ci.org/pipermerriam/ethereum-rpc-client.png)](https://travis-ci.org/pipermerriam/ethereum-rpc-client)
[![Documentation Status](https://readthedocs.org/projects/ethereum-rpc-client/badge/?version=latest)](https://readthedocs.org/projects/ethereum-rpc-client/?badge=latest)
[![PyPi version](https://pypip.in/v/ethereum-rpc-client/badge.png)](https://pypi.python.org/pypi/ethereum-rpc-client)
[![PyPi downloads](https://pypip.in/d/ethereum-rpc-client/badge.png)](https://pypi.python.org/pypi/ethereum-rpc-client)
Python client for Ethereum JSON RPC Server
> Note that this currently only implements a handful of the JSON RPC methods
> exposed by the server.
## Installation
Install with `pip`
```bash
$ pip install ethereum-rpc-client
```
## Basic Usage
Assuming you have an Ethereum node running the JSON RPC server on `localhost:8454`
```python
>>> from eth_rpc_client import Client
>>> client = Client(host="127.0.0.1", port="8545")
>>> client.get_coinbase()
... '0xd3cda913deb6f67967b99d67acdfa1712c293601'
```
## API
### `Client.get_coinbase()`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_coinbase
Returns the hex encoded coinbase.
### `Client.get_gas_price()`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gasprice
Returns the gas price in wei as an integer
### `Client.get_balance(address, block="latest")`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getbalance
* **address**: The hex encoded address to lookup the balance for.
* **block**: The block to use for the lookup.
Returns the account balance for the address in wei as an integer.
### `Client.get_code(address, block="latest")`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getcode
* **address**: The hex encoded address to lookup the code for.
* **block**: The block to use for the lookup.
Returns the code at the given address.
### `Client.call(_from=None, to=None, gas=None, gas_price=None, value=0, data=None, block="latest")`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_call
* **_from**: The hex encoded address to use as the source for the call.
* **to**: The hex encoded address of the contract for the call.
* **gas**: Integer gas alotment for the call.
* **gas_price**: Integer gas price in wei.
* **value**: Integer amount in wei to send with the call.
* **data**: The call data.
Returns the call response.
### `Client.send_transaction(_from=None, to=None, gas=None, gas_price=None, value=0, data=None)
https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sendtransaction
* **_from**: The hex encoded address to use as the source for the transaction.
* **to**: The hex encoded address of the contract for the transaction.
* **gas**: Integer gas alotment for the transaction.
* **gas_price**: Integer gas price in wei.
* **value**: Integer amount in wei to send with the transaction.
* **data**: The transaction data.
### `Client.get_transaction_receipt(txn_hash)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionreceipt
* **txn_hash**: The hex encoded transaction hash to lookup.
Returns a dictionary of the transaction receipt or `None` if no receipt is
found.
* **transactionHash**: hex encoded hash of the transaction.
* **transactionIndex**: integer of the transactions index position in the block.
* **blockHash**: hex encoded hash of the block where this transaction was in.
* **blockNumber**: integer block number where this transaction was in.
* **cumulativeGasUsed**: The total amount of gas used when this transaction was executed in the block.
* **gasUsed**: The amount of gas used by this specific transaction alone.
* **contractAddress**: The contract address created, if the transaction was a contract creation, otherwise null.
* **logs**: list of log objects, which this transaction generated
### `Client.get_transaction_by_hash(txn_hash)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionbyhash
* **txn_hash**: The hex encoded transaction hash to lookup.
Returns a dictionary of the transaction values or `None` if no transaction is
found.
* **hash**: DATA, 32 Bytes - hash of the transaction.
* **nonce**: QUANTITY - the number of transactions made by the sender prior to this one.
* **blockHash**: DATA, 32 Bytes - hash of the block where this transaction was in. null when its pending.
* **blockNumber**: QUANTITY - block number where this transaction was in. null when its pending.
* **transactionIndex**: QUANTITY - integer of the transactions index position in the block. null when its pending.
* **from**: DATA, 20 Bytes - address of the sender.
* **to**: DATA, 20 Bytes - address of the receiver. null when its a contract creation transaction.
* **value**: QUANTITY - value transferred in Wei.
* **gasPrice**: QUANTITY - gas price provided by the sender in Wei.
* **gas**: QUANTITY - gas provided by the sender.
* **input**: DATA - the data send along with the transaction.
### `Client.get_block_number()`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_blocknumber
Returns the number of the most recent block.
### `Client.get_accounts()`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_accounts
Returns a list of the addresses owned by the client.
### `Client.new_filter(from_block=None, to_block=None, address=None, topics=None)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newfilter
### `Client.new_block_filter()`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newblockfilter
### `Client.new_pending_transaction_filter()`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_newpendingtransactionfilter
### `Client.uninstall_filter(filter_id)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_uninstallFilter
### `Client.get_filter_changes(filter_id)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getfilterchanges
### `Client.get_filter_logs(filter_id)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getfilterlogs
### `Client.get_logs(from_block=None, to_block=None, address=None, topics=None)`
> https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getlogs
## Helpers
### `Client.get_max_gas()`
Returns the gas limit from the latest block
### `Client.wait_for_transaction(txn_hash, max_wait=60)`
Blocks for up to `max_wait` seconds, polling for the transaction receipt for
the provided `txn_hash`. Returns the transaction hash.
### `Client.wait_for_block(block_number, max_wait=60)`
Blocks for up to `max_wait` seconds, polling the rpc server until the block
specified by `block_number` is seen. Returns the block.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ethereum-rpc-client-0.4.4.tar.gz
.
File metadata
- Download URL: ethereum-rpc-client-0.4.4.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e15e9bfb32f3097aa7961346645820adc5c9dcc347221328b2e96725dab3566a |
|
MD5 | a0d848b4ad73cabe2f96d0eddcfad265 |
|
BLAKE2b-256 | cade153302cf36331ca33322dbee5d389b5893a587d0e98d0e7b13efe14d57dc |
File details
Details for the file ethereum_rpc_client-0.4.4-py2-none-any.whl
.
File metadata
- Download URL: ethereum_rpc_client-0.4.4-py2-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f5e8015535d0b8af45b1d933bfe751a185f8a885ed077c8142bd434808fcf0e |
|
MD5 | d9b06764e3c0926c587e333186af33a9 |
|
BLAKE2b-256 | 712955b22c83e7cd509abf1ed359c79af50ba2ed9d82466af922753a2b009f2e |