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