arcgen/myeth-php

interact with evm compatible chains with ease on php

v0.1.0 2024-04-10 08:40 UTC

This package is auto-updated.

Last update: 2024-05-10 10:44:31 UTC


README

interact with EVM (ethereum virtual machine) compatible chains with ease on php, sign messages, sign transactions, sign and send transactions.

Table of content

Requirements

  1. PHP 8 or higher.

Installation

composer require arcgen/myeth-php

Sign message

use MYETH\MyEth;

$message = "Hello, world!";
$privateKey = ''; // without 0x (remove 0x before passing private key)

$signedMessage = MyEth::signMessage($message, $privateKey);

echo json_encode($signedMessage);

Sign transaction

use MYETH\MyEth;

$transactionEncodedJson = '{"nonce":0,"gasPrice":1000000000,"gas":21000,"to":"0x4bbeEB066eD09B7AEd07bF39EEe0460DFa261520","value":1000000000000000000,"data":""}';
$privateKey = ''; // without 0x (remove 0x before passing private key)

$signedTransaction = MyEth::signTransaction($transactionEncodedJson, $privateKey);

echo $signedTransaction;

Sign and Send Transaction

use MYETH\MyEth;

$transactionEncodedJson = '{"nonce":0,"gasPrice":1000000000,"gas":21000,"to":"0x4bbeEB066eD09B7AEd07bF39EEe0460DFa261520","value":1000000000000000000,"data":""}';
$privateKey = ''; // without 0x (remove 0x before passing private key)
$web3Provider = 'https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID';

// Invoke the signAndSendTransaction method
$response = MyEth::signAndSendTransaction($transactionEncodedJson, $privateKey, $web3Provider);

echo $response;

Using different chains

when using other evm chains or testnets it is advisable to pass chain ID as the last parameter.

use MYETH\MyEth;

$message = "Hello, world!";
$privateKey = ''; // without 0x (remove 0x before passing private key)
$chainID = '80001' // Polygon matic

$signedMessage = MyEth::signMessage($message, $privateKey, $chainID);

echo json_encode($signedMessage);

Error handling

You can catch request errors by wrapping the method in a try / catch block.

use MYETH\MyEth;

$transactionEncodedJson = '{"nonce":0,"gasPrice":1000000000,"gas":21000,"to":"0x4bbeEB066eD09B7AEd07bF39EEe0460DFa261520","value":1000000000000000000,"data":""}';
$privateKey = ''; // without 0x (remove 0x before passing private key)
$web3Provider = 'https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID';

try {
    $response = MyEth::signAndSendTransaction($transactionEncodedJson, $privateKey, $web3Provider);
    echo $response;
} catch (\Exception $e) {
            $this->fail("Exception thrown: " . $e->getMessage());
}

Response :

Exception thrown: Error message

Testing

./vendor/bin/phpunit

License

MIT