A library integrating Ethereum with typed PHP.

dev-master 2021-11-04 08:36 UTC

This package is auto-updated.

Last update: 2023-01-04 11:06:38 UTC


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": "https://github.com/digitaldonkey/ethereum-php.git"
  "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';
use Ethereum\Ethereum;

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 ethereum-php.org.

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.