Ethereum Node Communication – How Can Non-JavaScript Apps Communicate?

ipcjson-rpcserver-side

Web3 implements the Ethereum JSON-RPC spec and seems to be the preferred method for communicating between a javascript applications and the Ethereum node. However there are situations where you might want a non javascript based application to interact with the blockchain for example:

  • IoT devices
  • Blockchain monitors
  • Oracles and services
  • Bridges between Ethereum and other server side code

What methods exist for communicating with Ethereum nodes from other languages?
That is are there any libraries for Python, Java/Scala, Go, C++ … ect which either:

  • Implement the Json-RPC spec
  • Allow communication using some other method such as IPC.
  • Allow a node to be embedded within existing code and expose an interface.

Best Answer

Here are some libraries for interacting with an Ethereum node. They are grouped by language, and roughly according to their last commit, with any appropriate brief notes. Javascript has been included since they are alternatives to web3.js and provide value to the overall list.

Javascript

https://github.com/AugurProject/ethrpc with IPC support, last commit 1 day ago

https://github.com/tarrencev/ethjs written in ES6, RPC calls return a promise/stream, last commit 10 days ago

Python

https://github.com/ConsenSys/ethjsonrpc all 62 JSON-RPC methods, last commit 11 days ago

https://github.com/pipermerriam/ethereum-rpc-client RPC, last commit Jan 2 2016

https://github.com/pipermerriam/ethereum-ipc-client IPC, last commit Jan 4 2016

C# .NET

https://github.com/LawrenceBotley/EthereumRpc-NET appears to have majority of RPC done, last commit Dec 13 2015

Ruby

https://github.com/tymat/ethereum-ruby appears to be minimal and from 2 years ago


For other languages, general JSON-RPC libraries are available as a starting point.

https://en.wikipedia.org/wiki/JSON-RPC#Implementations

http://json-rpc.org/wiki/implementations