Package: eth-rpc-api
tl;dr==========The original library from Consensus is quite useful, although it is obviously no longer supported. It's time to remove patches from Dockerfiles ^^eth_rpc_api===========Python client for Ethereum using the JSON-RPC interface* complete: implements all 62 JSON-RPC methods plus several client-specific methods* provides a high-level interface to create contracts on the blockchain and to call contract methodsImportant note--------------The API is not yet stable, so please use caution when upgrading.Installation------------You may need additional libraries and tools before installing ethjsonrpc.If you see something like that:.. code:: bashscrypt-1.2.1/libcperciva/crypto/crypto_aes.c:6:10: fatal error: openssl/aes.h: Нет такого файла или каталога#include <openssl/aes.h>^~~~~~~~~~~~~~~compilation terminated.error: command 'x86_64-linux-gnu-gcc' failed with exit status 1Install libssl-dev packqageTo install  eth_rpc_api:.. code:: bash$ pip3 install eth_rpc_apiMake sure to have a node running an Ethereum client (such as geth) for the library to connect to.Example-------.. code:: python>>> from eth_rpc_api import EthJsonRpc  # to use Parity-specific methods, import ParityEthJsonRpc>>> c = EthJsonRpc('127.0.0.1', 8545)>>> c.net_version()u'1'>>> c.web3_clientVersion()u'Geth/v1.3.3/linux/go1.5.1'>>> c.eth_gasPrice()50000000000>>> c.eth_blockNumber()828948>>> c = EthJsonRpc('127.0.0.1', 8545)>>> c.net_version()u'1'>>> c.web3_clientVersion()u'Geth/v1.3.3/linux/go1.5.1'>>> c.eth_gasPrice()50000000000>>> c.eth_blockNumber()828948High-level functionality------------------------These examples assume the following simple Solidity contract:.. code::contract Example {string s;function set_s(string new_s) {s = new_s;}function get_s() returns (string) {return s;}}Compile it like this:.. code:: bash$ solc --binary stdout example.solSetup`````.. code:: python>>> compiled = '606060405261020f806100136000396000f30060606040526000357c01000000000000000000000000000000000000000000000000000000009004806375d74f3914610044578063e7aab290146100bd57610042565b005b61004f600450610191565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156100af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61010d6004803590602001906004018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050905061010f565b005b806000600050908051906020019082805482825590600052602060002090601f01602090048101928215610160579182015b8281111561015f578251826000505591602001919060010190610141565b5b50905061018b919061016d565b80821115610187576000818150600090555060010161016d565b5090565b50505b50565b60206040519081016040528060008152602001506000600050805480601f0160208091040260200160405190810160405280929190818152602001828054801561020057820191906000526020600020905b8154815290600101906020018083116101e357829003601f168201915b5050505050905061020c565b9056'>>> from eth_rpc_api import EthJsonRpc  # to use Parity-specific methods, import ParityEthJsonRpc>>> c = EthJsonRpc('127.0.0.1', 8545)>>> from ethjsonrpc import EthJsonRpc  # to use Parity-specific methods, import ParityEthJsonRpc>>> c = EthJsonRpc('127.0.0.1', 8545)Creating a contract on the blockchain`````````````````````````````````````.. code:: python>>> # continued from above>>> contract_tx = c.create_contract(c.eth_coinbase(), compiled, gas=300000)>>> # wait here for the contract to be created when a new block is mined>>> contract_addr = c.get_contract_address(contract_tx)>>> contract_addru'0x24988147f2f2300450103d8c42c43182cf226857'Calling a contract function with a transaction (storing data)`````````````````````````````````````````````````````````````.. code:: python>>> # continued from above>>> tx = c.call_with_transaction(c.eth_coinbase(), contract_addr, 'set_s(string)', ['Hello, world'])>>> txu'0x15bde63d79466e3db5169a913bb2069130ca387033d2ff2e29f4dfbef1bc6e0d'Calling a contract function on the local blockchain (reading data)``````````````````````````````````````````````````````````````````.. code:: python>>> # continued from above>>> results = c.call(contract_addr, 'get_s()', [], ['string'])>>> results['Hello, world']Additional examples-------------------Please see ``test.py`` for additional examples.Implemented JSON-RPC methods----------------------------* web3_clientVersion* web3_sha3* net_version* net_listening* net_peerCount* eth_protocolVersion* eth_syncing* eth_coinbase* eth_mining* eth_hashrate* eth_gasPrice* eth_accounts* eth_blockNumber* eth_getBalance* eth_getStorageAt* eth_getTransactionCount* eth_getBlockTransactionCountByHash* eth_getBlockTransactionCountByNumber* eth_getUncleCountByBlockHash* eth_getUncleCountByBlockNumber* eth_getCode* eth_sign* eth_sendTransaction* eth_sendRawTransaction* eth_call* eth_estimateGas* eth_getBlockByHash* eth_getBlockByNumber* eth_getTransactionByHash* eth_getTransactionByBlockHashAndIndex* eth_getTransactionByBlockNumberAndIndex* eth_getTransactionReceipt* eth_getUncleByBlockHashAndIndex* eth_getUncleByBlockNumberAndIndex* eth_getCompilers* eth_compileSolidity* eth_compileLLL* eth_compileSerpent* eth_newFilter* eth_newBlockFilter* eth_newPendingTransactionFilter* eth_uninstallFilter* eth_getFilterChanges* eth_getFilterLogs* eth_getLogs* eth_getWork* eth_submitWork* eth_submitHashrate* db_putString* db_getString* db_putHex* db_getHex* shh_version* shh_post* shh_newIdentity* shh_hasIdentity* shh_newGroup* shh_addToGroup* shh_newFilter* shh_uninstallFilter* shh_getFilterChanges* shh_getMessagesParity-only JSON-RPC methods----------------------------To use these methods, make sure that you're* running Parity as your client* running with the ``--tracing on`` option* using this library's ``ParityEthJsonRpc`` client (not the vanilla ``EthJsonRpc`` client)Methods:* trace_filter* trace_get* trace_transaction* trace_blockReference---------* https://github.com/ethereum/wiki/wiki/JSON-RPC* https://github.com/ethcore/parity/wiki/JSONRPC-trace-module