Giter Club home page Giter Club logo

ethereumd-proxy's Introduction

Latest version released on PyPi Test coverage MIT License

ethereumd-proxy

Proxy client-server for Ethereum node using JSON-RPC interface.

Why?

Mostly popular cryptocurrencies usually are forks of Bitcoin and all of them support Bitcoin protocol for communication with their full nodes. Ethereum go hard by own way and made own API for that. This library is a proxy to Ethereum node which implement many API methods like in bitcoind. Also it have signals like blocknotify and walletnotify. All these features are implemented by ethereumd-proxy using polling and other techniques behind the scene.

Installation

Python 3.5+ required.

First you need Geth/Parity or any other ethereum node (for listening). Tested on Geth 1.6.7 and used in production.

Installation

$ pip install ethereumd-proxy

Usage

It is the same as bitcoin-cli. Except it is not a node runner, just simple proxy for listening actual node.

Available command list:

$ ethereum-cli -help

To start proxy server use:

$ ethereum-cli -datadir=<path_to_your_dir_with_node_and_ethereum.conf> -daemon

To stop server:

$ ethereum-cli -datadir=<path_to_your_dir_with_node_and_ethereum.conf> stop

Also can be used as python client connector:

import asyncio
import ethereumd

loop = asyncio.get_event_loop()

async def go():
    client = await ethereumd.create_ethereumd_proxy(
        'http://localhost:8545', loop=loop)

    val = await client.validateaddress('0x6cace0528324a8afc2b157ceba3cdd2a27c4e21f')
    print(val)  # will print {'isvalid': True, 'address': '0x6cace0528324a8afc2b157ceba3cdd2a27c4e21f', 'scriptPubKey': 'hex', 'ismine': False, 'iswatchonly': False, 'isscript': False, 'pubkey': '0x6cace0528324a8afc2b157ceba3cdd2a27c4e21f', 'iscompressed': False, 'timestamp': None}

    address = await client.getnewaddress(passphrase='admin')
    print(address)  # will print address like '0x137dd92be1d986eb3af023d0fb6fa8436c3ee5f8'

loop.run_until_complete(go())

Implemented JSON-RPC methods

Util Wallet Blockchain
validateaddress getbalance getblockhash
estimatefee settxfee getdifficulty
  listaccounts getblockcount
  gettransaction getbestblockhash
  sendfrom getblock
  sendtoaddress  
  walletlock  
  walletpassphrase  
  getnewaddress  

Planned add more methods as soon as possible. Read help of some method first before use!

Sample of ethereum.conf

#
# ETHEREUMD-PROXY options (for controlling a running proxy process)
#

# Local server address for ethereumd-proxy RPC:
#ethpconnect=127.0.0.1

# Local server port for ethereumd-proxy RPC:
#ethpport=9500

#
# JSON-RPC options (for controlling a running ethereum process)
#

# You can use go-ethereum to send commands to ethereum
# running on another host using this option:
#rpcconnect=127.0.0.1

# Listen for RPC connections on this TCP port:
#rpcport=8545

# Listen for RPC connections on this unix/ipc socket:
#ipcconnect=~/.ethereum/geth/geth.ipc

#
# Signals options (for controlling a script management process)
#

# Execute command when a wallet transaction changes (%s in cmd is replaced by TxID)
#walletnotify=
# Execute command when the best block changes (%s in cmd is replaced by block hash)
#blocknotify=
# Execute command when a relevant alert is received (%s in cmd is replaced by message)
# TODO: add notification of long fork
#alertnotify=

Copy it to your datadir folder or use direct path to it.

ethereumd-proxy's People

Contributors

m-bo-one avatar vasylnakvasiuk avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.