Ethereum PHP
PHP interface to Ethereum JSON-RPC API.

is a typed PHP-7.1+ interface to Ethereum JSON-RPC API.

Check out the latest API documentation.

Add library in a composer.json file

"autoload": {
"psr-4": {
"Ethereum\\": "src/"
"repositories": [
"type": "git",
"url": ""
"require": {
"digitaldonkey/ethereum-php": "dev-master"


composer require digitaldonkey/ethereum-php

This is the important part of composer.json in Drupal Ethereum Module.

require __DIR__ . '/vendor/autoload.php';
try {
// Connect to Ganache
$eth = new Ethereum('');
// Should return Int 63
echo $eth->eth_protocolVersion()->val();
catch (\Exception $exception) {
die ("Unable to connect.");

Calling Contracts

You can call (unpayed) functions in smart contracts easily.

The json file "$fileName" used is what you get when you compile a contract with Truffle.

$ContractMeta = json_decode(file_get_contents($fileName));
$contract = new SmartContract(
new Ethereum(SERVER_URL)
$someBytes = new EthBytes('34537ce3a455db6b')
$x = $contract->myContractMethod();
echo $x->val()

You can also run tests at smart contracts, check out EthTestClient.

Event listening and handling

You can use Ethereum-PHP to watch changed on your smart contracts or index a Blockchain block by block. gs

See "UsingFilters" and ethereum-php-eventlistener.


Currently not all datatypes are supported.

This library is read-only for now. This means you can retrieve information stored in Ethereum Blockchain.

To write to the blockchain you need a to sign transactions with a private key which is not supported yet.

architecture diagram


The API documentation is available at

For reference see the Ethereum RPC documentation and for data encoding RLP dcumentation in Ethereum Wiki.

There is also a more readable Ethereum Frontier Guide version.